Comparar commits

..

1 Commits

Autor SHA1 Mensagem Data
msweet fe03b591e0 Import cups.org releases
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/tags/release-1.1@4306 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-10 18:56:23 +00:00
197 arquivos alterados com 57427 adições e 4081 exclusões
+1 -184
Ver Arquivo
@@ -1,189 +1,6 @@
CHANGES.txt - 09/06/2000
CHANGES.txt - 07/10/2000
------------------------
CHANGES IN CUPS v1.1.3
- Makefile fixes.
- RPM spec file changes.
- Documentation updates.
- Enabled pstoraster debug messages for everything
(only logged when LogLevel set to "debug"...)
- Changed the Input/OutputAttributes fix in
pstoraster so that it works on all platforms.
- The HP-GL/2 filter didn't set the right green
color value in encoded polylines or text.
- Updated the "fitplot" code to handle plot sizes
specified as "PSwidth,length" and "PSlength,width".
- Updated the Linux parallel and USB backends to open
the device files prior to looking in /proc for
autoprobe info. This makes sure that loadable device
driver modules are in fact loaded...
- Added new FilterLimit directive to limit the number
of processing jobs/filters on a system.
- set-job-attributes didn't change the job-state to
held/pending when the job-hold-until attribute was
specified.
- set-job-attributes didn't save the new job attributes.
- Now change the "requesting-user-name" attribute in
requests from remote systems to "remroot" when an
unauthenticated "root" user is sent. This can be
changed using the new RemoteRoot directive in
cupsd.conf.
- The cancel-job, hold-job, release-job, and restart-job
operations didn't log the authenticated username.
- The cups-lpd mini-daemon now checks for a
document-format option before forcing raw mode with
filter mode 'l'.
- The cups-lpd mini-daemon now supports "-o" options
on the command-line (passed by inetd) to set global
defaults for all print queues.
- The pstops filter assumed that a file with a Trailer
comment would also have an EOF comment.
- Added new cupsSetPasswordCB(), cupsSetServer(),
cupsSetUser(), and ippSetPort() functions to better
support client applications (especially GUIs...)
- The CUPS-add-class and CUPS-add-printer operations
didn't reset the printer-name attribute on remote
print queues that had to be renamed when a local
printer was defined with the same name.
- The lpoptions command now supports a "-r" option to
remove options for a printer or instance.
- The lpadmin and admin.cgi programs no longer allow
class and printer names to begin with a number; this
caused the command-line utilities to become confused.
- The Linux USB backend now looks for both the parallel
and usblp driver names in the device list.
- Added a new FontPath directive to cupsd.conf, and also
a "--with-fontpath" option for the configure script to
specify alternate font paths for pstoraster.
- The CUPS-move-job operation didn't update the
job-printer-uri attribute.
- The scheduler only looked up printers and classes by
name in IPP requests, instead of using the full URI.
This caused problems with KUPS and friends with
remote printers.
- The scheduler now handles better localization of
hostnames (e.g. server is host.foo.com, remote is
host.subfoo.foo.com, localized is not host.subfoo...)
- The scheduler logging functions now use a common
log file checking/rotation function (courtesy of
Crutcher Dunnavant at Red Hat)
- The scheduler could accept more client connections
than it allocated for if more than one Port or Listen
line was present in cupsd.conf.
- Other minor scheduler performance tweeks.
- The lpq and lprm commands didn't support the default
printer set using lpoptions.
- The lpoptions command now supports a "-l" option to
list the printer-specific options and their current
settings.
- The web printer and class lists now show a link to the
default printer or class at the top of the page.
- The text filter now supports pretty printing of shell
and perl scripts as well as C/C++ source files.
- The top and bottom margins were reversed for landscape
text printing.
CHANGES IN CUPS v1.1.2
- Makefile/configure fixes
- RPM spec file and EPM list file fixes
- The cupsTempFile() function now uses a different
algorithm for generating temp files and "reserves"
them to avoid possible security exploitation.
- Now use /dev/random (if available) to seed the random
number generator for certificates.
- The /var/spool/cups and /var/spool/cups/tmp directories
were incorrectly owned by root; they are now owned by
the filter user, typically "lp".
- The scheduler now resets the permissions on the spool
and temp directories as needed to match the filter
user.
- Now expose ppdCollect() as an externally callable
function.
- The image filters now support filtering from the
standard input.
- The imagetoraster filter now collects all printer
options and job patch files and applies them to the
page header as needed.
- Added format and banner options to LPD backend.
- The send-document operation didn't start a job
immediately when last-document was true.
- The set-job-attributes operation didn't correctly
replace the current job-hold-until value.
- Removed the option wrapper code from ppdEmit() and
friends since it caused problems with Ghostscript
and many PS printers.
- Was setting TZ environment variable twice for job
filters.
- Added syslog logging in cups-lpd to aide in
debugging problems.
- The HP-UX parallel port backend did not list the
available parallel ports on some systems (printf
calling problem...)
- The lp and lpr commands overrode user options if
-d/-P were specified after -o.
- The scheduler would crash with a */* filter.
- Added support for a "default" filter for unknown file
types. The example provided in the mime.types and
mime.convs file prints unknown files as if "-oraw" was
specified for the job. This functionality is disabled
by default.
- The "compatibility" mode fix for older backends did not
work for smbspool. Added a workaround for it.
- The HP-GL/2 filter didn't perform the right pen scaling
with some files and the "fitplot" option.
- New Software Performance Specification document that
describes the memory, disk, and CPU usage of all the
CUPS software.
CHANGES IN CUPS v1.1.1
- The pstoraster Makefile still referenced one of the
old PDF filter files.
- The filter Makefile used INSTALL_DATA instead of
INSTALL_LIB to install the CUPS image library.
- The administration CGI didn't work properly with
network devices.
- The BrowseACL variable was not updated after the
cupsd.conf file was loaded.
- The lpd mini-daemon didn't support printer instances.
- Now use a default umask of 077 for child processes.
- Now put temp files in /var/spool/cups/tmp for child
processes and the root user, unless TMPDIR or TempDir
is defined otherwise.
- cupsGetPPD() no longer uses easy-to-guess filenames.
- The CUPS-Delete-Class and CUPS-Delete-Printer
operations now save classes.conf file as needed.
- The lppasswd command wouldn't add a user.
- The ppdOpen() function could cause a segfault if a
0-length PPD file was read.
- The image filters were not handling images with
different X and Y resolutions properly.
- The imagetoraster filter defaulted to RGB output
instead of black output like pstoraster.
- The pstops filter didn't handle binary data properly.
- The pstops filter didn't handle copies properly for
PS files lacking DSC comments.
- The pstops filter now appends %%EOF to the end of
documents if they don't have it.
- The cupsGetPPD() function didn't work with remote
printers lacking the @server in the name.
- The configure script didn't work right when only
--prefix was specified.
- The ppdEmit() code now wraps all printer commands so
that buggy PostScript printers will still print a file
after receiving an option that isn't available.
- Fixed the DeskJet margin bug, and disabled 600dpi
color mode until it can be fixed.
- The cupsAddDest() function didn't sort instances
correctly in all cases.
- The time-at-xyz attributes now expand to the date and
time in banner files.
CHANGES IN CUPS v1.1
- Documentation updates.
+1 -3
Ver Arquivo
@@ -30,7 +30,6 @@ AR = @AR@
AWK = @AWK@
CC = @LIBTOOL@ @CC@
CHMOD = @CHMOD@
CHOWN = @CHOWN@
CP = @CP@
CXX = @LIBTOOL@ @CXX@
DSO = @DSO@
@@ -120,9 +119,8 @@ top_srcdir = @top_srcdir@
BINDIR = @bindir@
DATADIR = @CUPS_DATADIR@
DOCDIR = @CUPS_DOCROOT@
ESP_ROOT = @ESP_ROOT@
INCLUDEDIR = $(includedir)
INITDIR = @INITDIR@
INITDDIR = @INITDDIR@
LIBDIR = $(libdir)
LOCALEDIR = @CUPS_LOCALEDIR@
LOGDIR = @CUPS_LOGDIR@
+19 -15
Ver Arquivo
@@ -28,7 +28,7 @@ include Makedefs
# Directories to make...
#
DIRS = cups backend berkeley cgi-bin filter man pdftops pstoraster \
DIRS = cups backend berkeley cgi-bin doc filter man pdftops pstoraster \
scheduler systemv
#
@@ -64,28 +64,32 @@ install:
(cd conf; $(MAKE) $(MFLAGS) install)
echo Installing in data...
(cd data; $(MAKE) $(MFLAGS) install)
echo Installing in doc...
(cd doc; $(MAKE) $(MFLAGS) install)
echo Installing in fonts...
(cd fonts; $(MAKE) $(MFLAGS) install)
(cd fonts; $(MAKE) $(MFLAGS) install)
echo Installing in locale...
(cd locale; $(MAKE) $(MFLAGS) install)
echo Installing in ppd...
(cd ppd; $(MAKE) $(MFLAGS) install)
echo Installing in templates...
(cd templates; $(MAKE) $(MFLAGS) install)
echo Installing startup script...
if test "x$INITDIR" != "x"; then \
$(MKDIR) $(prefix)/$(INITDIR)/init.d; \
$(RM) $(prefix)/$(INITDIR)/init.d/cups; \
$(INSTALL_SCRIPT) cups.sh $(prefix)/$(INITDIR)/init.d/cups; \
$(CHMOD) ugo+rx $(prefix)/$(INITDIR)/init.d/cups; \
$(MKDIR) $(prefix)/$(INITDIR)/rc0.d; \
$(RM) $(prefix)/$(INITDIR)/rc0.d/K00cups; \
ln -s $(INITDDIR)/cups $(prefix)/$(INITDIR)/rc0.d/K00cups; \
$(MKDIR) $(prefix)/$(INITDIR)/rc3.d; \
$(RM) $(prefix)/$(INITDIR)/rc3.d/S99cups; \
ln -s $(INITDDIR)/cups $(prefix)/$(INITDIR)/rc3.d/S99cups; \
if test -d $(prefix)/sbin/init.d; then \
$(INSTALL_SCRIPT) cups.sh $(prefix)/sbin/init.d/cups; \
$(CHMOD) ugo+rx $(prefix)/sbin/init.d/cups; \
ln -s ../init.d/cups $(prefix)/sbin/rc0.d/K000cups; \
ln -s ../init.d/cups $(prefix)/sbin/rc2.d/S999cups; \
fi
if test -d $(prefix)/etc/rc.d/init.d; then \
$(INSTALL_SCRIPT) cups.sh $(prefix)/etc/rc.d/init.d/cups; \
$(CHMOD) ugo+rx $(prefix)/etc/rc.d/cups; \
ln -s ../init.d/cups $(prefix)/etc/rc.d/rc0.d/K00cups; \
ln -s ../init.d/cups $(prefix)/etc/rc.d/rc2.d/S99cups; \
fi
if test -d $(prefix)/etc/init.d; then \
$(INSTALL_SCRIPT) cups.sh $(prefix)/etc/init.d/cups; \
$(CHMOD) ugo+rx $(prefix)/etc/init.d/cups; \
ln -s ../init.d/cups $(prefix)/etc/rc0.d/K00cups; \
ln -s ../init.d/cups $(prefix)/etc/rc2.d/S99cups; \
fi
#
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
README - CUPS v1.1.2 - 08/04/2000
---------------------------------
README - CUPS v1.1 - 07/10/2000
-------------------------------
INTRODUCTION
+1 -1
Ver Arquivo
@@ -41,7 +41,7 @@ all: $(TARGETS)
#
clean:
$(RM) $(OBJS) $(TARGETS) http
$(RM) $(OBJS) $(TARGETS)
#
+7 -101
Ver Arquivo
@@ -60,8 +60,7 @@ extern int rresvport(int *port); /* Hello? No prototype for this... */
static int lpd_command(int lpd_fd, char *format, ...);
static int lpd_queue(char *hostname, char *printer, char *filename,
char *user, char *title, int copies, int banner,
int format);
char *user, int copies);
/*
@@ -80,15 +79,9 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
hostname[1024], /* Hostname */
username[255], /* Username info (not used) */
resource[1024], /* Resource info (printer name) */
*options, /* Pointer to options */
name[255], /* Name of option */
value[255], /* Value of option */
*ptr, /* Pointer into name or value */
filename[1024]; /* File to print */
int port; /* Port number (not used) */
int status; /* Status of LPD job */
int banner; /* Print banner page? */
int format; /* Print format */
if (argc == 1)
@@ -149,83 +142,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
httpSeparate(argv[0], method, username, hostname, &port, resource);
/*
* See if there are any options...
*/
banner = 0;
format = 'l';
if ((options = strchr(resource, '?')) != NULL)
{
/*
* Yup, terminate the device name string and move to the first
* character of the options...
*/
*options++ = '\0';
/*
* Parse options...
*/
while (*options)
{
/*
* Get the name...
*/
for (ptr = name; *options && *options != '=';)
*ptr++ = *options++;
*ptr = '\0';
if (*options == '=')
{
/*
* Get the value...
*/
options ++;
for (ptr = value; *options && *options != '+';)
*ptr++ = *options++;
*ptr = '\0';
if (*options == '+')
options ++;
}
else
value[0] = '\0';
/*
* Process the option...
*/
if (strcasecmp(name, "banner") == 0)
{
/*
* Set the banner...
*/
banner = !value[0] ||
strcasecmp(value, "on") == 0 ||
strcasecmp(value, "yes") == 0 ||
strcasecmp(value, "true") == 0;
}
else if (strcasecmp(name, "format") == 0 && value[0])
{
/*
* Set output format...
*/
if (strchr("cdfglnoprtv", value[0]) != NULL)
format = value[0];
else
fprintf(stderr, "ERROR: Unknown format character \"%c\"\n", value[0]);
}
}
}
/*
* Queue the job...
*/
@@ -233,16 +149,14 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
if (argc > 6)
{
status = lpd_queue(hostname, resource + 1, filename,
argv[2] /* user */, argv[3] /* title */,
atoi(argv[4]) /* copies */, banner, format);
argv[2] /* user */, atoi(argv[4]) /* copies */);
if (!status)
fprintf(stderr, "PAGE: 1 %d\n", atoi(argv[4]));
}
else
status = lpd_queue(hostname, resource + 1, filename,
argv[2] /* user */, argv[3] /* title */, 1,
banner, format);
argv[2] /* user */, 1);
/*
* Remove the temporary file if necessary...
@@ -317,10 +231,7 @@ lpd_queue(char *hostname, /* I - Host to connect to */
char *printer, /* I - Printer/queue name */
char *filename, /* I - File to print */
char *user, /* I - Requesting user */
char *title, /* I - Job title */
int copies, /* I - Number of copies */
int banner, /* I - Print LPD banner? */
int format) /* I - Format specifier */
int copies) /* I - Number of copies */
{
FILE *fp; /* Job file */
char localhost[255]; /* Local host name */
@@ -443,18 +354,13 @@ lpd_queue(char *hostname, /* I - Host to connect to */
gethostname(localhost, sizeof(localhost));
localhost[31] = '\0'; /* RFC 1179, Section 7.2 - host name < 32 chars */
snprintf(control, sizeof(control), "H%s\nP%s\nJ%s\n", localhost, user, title);
snprintf(control, sizeof(control), "H%s\nP%s\n", localhost, user);
cptr = control + strlen(control);
if (banner)
{
snprintf(cptr, sizeof(control) - (cptr - control), "L%s\n", user);
cptr += strlen(cptr);
}
while (copies > 0)
{
snprintf(cptr, sizeof(control) - (cptr - control), "%cdfA%03d%s\n", format,
snprintf(cptr, sizeof(control) - (cptr - control), "ldfA%03d%s\n",
getpid() % 1000, localhost);
cptr += strlen(cptr);
copies --;
+20 -44
Ver Arquivo
@@ -275,8 +275,7 @@ list_devices(void)
#ifdef __linux
int i; /* Looping var */
int fd; /* File descriptor */
char device[255], /* Device filename */
probefile[255]; /* Probe filename */
char device[255]; /* Device filename */
FILE *probe; /* /proc/parport/n/autoprobe file */
char line[1024], /* Line from file */
*delim, /* Delimiter in file */
@@ -286,41 +285,9 @@ list_devices(void)
for (i = 0; i < 4; i ++)
{
/*
* First open the device to make sure the driver module is loaded...
*/
sprintf(device, "/dev/lp%d", i);
if ((fd = open(device, O_WRONLY)) >= 0)
close(fd);
else
sprintf(device, "/proc/parport/%d/autoprobe", i);
if ((probe = fopen(device, "r")) != NULL)
{
sprintf(device, "/dev/par%d", i);
if ((fd = open(device, O_WRONLY)) >= 0)
close(fd);
}
/*
* Then try looking at the probe file...
*/
sprintf(probefile, "/proc/parport/%d/autoprobe", i);
if ((probe = fopen(probefile, "r")) == NULL)
{
/*
* Linux 2.4 kernel has different path...
*/
sprintf(probefile, "/proc/sys/dev/parport/parport%d/autoprobe", i);
probe = fopen(probefile, "r");
}
if (probe != NULL)
{
/*
* Found a probe file!
*/
memset(make, 0, sizeof(make));
memset(model, 0, sizeof(model));
strcpy(model, "Unknown");
@@ -357,13 +324,23 @@ list_devices(void)
printf("direct parallel:/dev/lp%d \"%s\" \"Parallel Port #%d\"\n",
i, model, i + 1);
}
else if (fd >= 0)
else
{
/*
* No probe file, but we know the port is there...
*/
printf("direct parallel:%s \"Unknown\" \"Parallel Port #%d\"\n", device, i + 1);
sprintf(device, "/dev/lp%d", i);
if ((fd = open(device, O_WRONLY)) >= 0)
{
close(fd);
printf("direct parallel:%s \"Unknown\" \"Parallel Port #%d\"\n", device, i + 1);
}
else
{
sprintf(device, "/dev/par%d", i);
if ((fd = open(device, O_WRONLY)) >= 0)
{
close(fd);
printf("direct parallel:%s \"Unknown\" \"Parallel Port #%d\"\n", device, i + 1);
}
}
}
}
#elif defined(__sgi)
@@ -520,8 +497,7 @@ list_devices(void)
{
sprintf(device, "/dev/c%dt%dd0_lp", i, j);
if (access(device, 0) == 0)
printf("direct parallel:%s \"Unknown\" \"Parallel Port #%d,%d\"\n",
device, i, j);
printf("direct parallel:%s \"Unknown\" \"Parallel Port #%d,%d\"\n", i, j);
}
/*
+2 -25
Ver Arquivo
@@ -262,33 +262,15 @@ list_devices(void)
int i; /* Looping var */
int fd; /* File descriptor */
char device[255]; /* Device filename */
FILE *probe; /* /proc/bus/usb/devices file */
FILE *probe; /* /proc/parport/n/autoprobe file */
char line[1024], /* Line from file */
*delim, /* Delimiter in file */
make[IPP_MAX_NAME], /* Make from file */
model[IPP_MAX_NAME]; /* Model from file */
/*
* First try opening one of the USB devices to load the driver
* module as needed...
*/
if ((fd = open("/dev/usb/lp0", O_WRONLY)) >= 0)
close(fd); /* 2.3.x and 2.4.x */
else if ((fd = open("/dev/usblp0", O_WRONLY)) >= 0)
close(fd); /* 2.2.x */
/*
* Then look at the device list for the USB bus...
*/
if ((probe = fopen("/proc/bus/usb/devices", "r")) != NULL)
{
/*
* Scan the device list...
*/
i = 0;
memset(make, 0, sizeof(make));
@@ -323,8 +305,7 @@ list_devices(void)
strncpy(model, line + 12, sizeof(model) - 1);
}
else if (strncmp(line, "I:", 2) == 0 &&
(strstr(line, "Driver=printer") != NULL ||
strstr(line, "Driver=usblp") != NULL) &&
strstr(line, "Driver=printer") != NULL &&
make[0] && model[0])
{
/*
@@ -345,10 +326,6 @@ list_devices(void)
}
else
{
/*
* Just probe manually for USB devices...
*/
for (i = 0; i < 8; i ++)
{
sprintf(device, "/dev/usb/lp%d", i);
+1 -13
Ver Arquivo
@@ -68,9 +68,6 @@ main(int argc, /* I - Number of command-line arguments */
int id, /* Desired job ID */
interval, /* Reporting interval */
longstatus; /* Show file details */
int num_dests; /* Number of destinations */
cups_dest_t *dests; /* Destinations */
/*
* Connect to the scheduler...
@@ -82,18 +79,12 @@ main(int argc, /* I - Number of command-line arguments */
* Check for command-line options...
*/
dest = NULL;
dest = cupsGetDefault();
user = NULL;
id = 0;
interval = 0;
longstatus = 0;
num_dests = cupsGetDests(&dests);
for (i = 0; i < num_dests; i ++)
if (dests[i].is_default)
dest = dests[i].name;
for (i = 1; i < argc; i ++)
if (argv[i][0] == '+')
interval = atoi(argv[i] + 1);
@@ -117,8 +108,6 @@ main(int argc, /* I - Number of command-line arguments */
default :
fputs("Usage: lpq [-P dest] [-l] [+interval]\n", stderr);
httpClose(http);
cupsFreeDests(num_dests, dests);
return (1);
}
}
@@ -151,7 +140,6 @@ main(int argc, /* I - Number of command-line arguments */
* Close the connection to the server and return...
*/
cupsFreeDests(num_dests, dests);
httpClose(http);
return (0);
+8 -13
Ver Arquivo
@@ -123,17 +123,14 @@ main(int argc, /* I - Number of command-line arguments */
break;
case 'l' : /* Literal/raw */
num_options = cupsAddOption("raw", "", num_options, &options);
num_options = cupsParseOptions("raw", num_options, &options);
break;
case 'p' : /* Prettyprint */
num_options = cupsAddOption("prettyprint", "", num_options, &options);
num_options = cupsParseOptions("prettyprint", num_options, &options);
break;
case 'h' : /* Suppress burst page */
num_options = cupsAddOption("job-sheets", "none", num_options, &options);
break;
case 's' : /* Don't use symlinks */
break;
@@ -163,10 +160,9 @@ main(int argc, /* I - Number of command-line arguments */
if ((dest = cupsGetDest(printer, instance, num_dests, dests)) != NULL)
{
for (j = 0; j < dest->num_options; j ++)
if (cupsGetOption(dest->options[j].name, num_options, options) == NULL)
num_options = cupsAddOption(dest->options[j].name,
dest->options[j].value,
num_options, &options);
num_options = cupsAddOption(dest->options[j].name,
dest->options[j].value,
num_options, &options);
}
break;
@@ -239,10 +235,9 @@ main(int argc, /* I - Number of command-line arguments */
printer = dests[j].name;
for (j = 0; j < dest->num_options; j ++)
if (cupsGetOption(dest->options[j].name, num_options, options) == NULL)
num_options = cupsAddOption(dest->options[j].name,
dest->options[j].value,
num_options, &options);
num_options = cupsAddOption(dest->options[j].name,
dest->options[j].value,
num_options, &options);
break;
}
}
+1 -19
Ver Arquivo
@@ -55,8 +55,6 @@ main(int argc, /* I - Number of command-line arguments */
ipp_t *response; /* IPP response */
ipp_op_t op; /* Operation */
cups_lang_t *language; /* Language */
int num_dests; /* Number of destinations */
cups_dest_t *dests; /* Destinations */
/*
@@ -65,16 +63,10 @@ main(int argc, /* I - Number of command-line arguments */
op = IPP_CANCEL_JOB;
job_id = 0;
dest = NULL;
dest = cupsGetDefault();
response = NULL;
http = NULL;
num_dests = cupsGetDests(&dests);
for (i = 0; i < num_dests; i ++)
if (dests[i].is_default)
dest = dests[i].name;
/*
* Open a connection to the server...
*/
@@ -82,7 +74,6 @@ main(int argc, /* I - Number of command-line arguments */
if ((http = httpConnect(cupsServer(), ippPort())) == NULL)
{
fputs("lprm: Unable to contact server!\n", stderr);
cupsFreeDests(num_dests, dests);
return (1);
}
@@ -106,8 +97,6 @@ main(int argc, /* I - Number of command-line arguments */
default :
fprintf(stderr, "lprm: Unknown option \'%c\'!\n", argv[i][1]);
cupsFreeDests(num_dests, dests);
httpClose(http);
return (1);
}
else
@@ -207,8 +196,6 @@ main(int argc, /* I - Number of command-line arguments */
else
{
fputs("lprm: Unable to cancel job(s)!\n", stderr);
cupsFreeDests(num_dests, dests);
httpClose(http);
return (1);
}
}
@@ -222,14 +209,9 @@ main(int argc, /* I - Number of command-line arguments */
if (!cupsCancelJob(dest, 0))
{
fputs("lprm: Unable to cancel job(s)!\n", stderr);
cupsFreeDests(num_dests, dests);
httpClose(http);
return (1);
}
cupsFreeDests(num_dests, dests);
httpClose(http);
return (0);
}
+6 -12
Ver Arquivo
@@ -263,12 +263,9 @@ do_am_class(http_t *http, /* I - HTTP connection */
}
name = cgiGetVariable("PRINTER_NAME");
if (isdigit(*name))
ptr = name;
else
for (ptr = name; *ptr; ptr ++)
if (!isalnum(*ptr) && *ptr != '_')
break;
for (ptr = name; *ptr; ptr ++)
if (!isalnum(*ptr) && *ptr != '_')
break;
if (*ptr || ptr == name)
{
@@ -568,12 +565,9 @@ do_am_printer(http_t *http, /* I - HTTP connection */
}
name = cgiGetVariable("PRINTER_NAME");
if (isdigit(*name))
ptr = name;
else
for (ptr = name; *ptr; ptr ++)
if (!isalnum(*ptr) && *ptr != '_')
break;
for (ptr = name; *ptr; ptr ++)
if (!isalnum(*ptr) && *ptr != '_')
break;
if (*ptr || ptr == name)
{
-57
Ver Arquivo
@@ -46,7 +46,6 @@ main(int argc, /* I - Number of command-line arguments */
http_t *http; /* Connection to the server */
ipp_t *request, /* IPP request */
*response; /* IPP response */
ipp_attribute_t *attr; /* IPP attribute */
ipp_status_t status; /* Operation status... */
char uri[HTTP_MAX_URI];
/* Printer URI */
@@ -99,62 +98,6 @@ main(int argc, /* I - Number of command-line arguments */
if (op == NULL || strcasecmp(op, "print-test-page") != 0)
{
/*
* Get the default destination...
*/
request = ippNew();
request->request.op.operation_id = CUPS_GET_DEFAULT;
request->request.op.request_id = 1;
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
if ((response = cupsDoRequest(http, request, "/")) != NULL)
{
if ((attr = ippFindAttribute(response, "printer-name", IPP_TAG_NAME)) != NULL)
cgiSetVariable("DEFAULT_NAME", attr->values[0].string.text);
if ((attr = ippFindAttribute(response, "printer-uri-supported", IPP_TAG_URI)) != NULL)
{
char method[HTTP_MAX_URI],
username[HTTP_MAX_URI],
hostname[HTTP_MAX_URI],
resource[HTTP_MAX_URI],
uri[HTTP_MAX_URI];
int port; /* URI data */
char server[1024]; /* Name of server */
/*
* Map localhost access to localhost...
*/
httpSeparate(attr->values[0].string.text, method, username,
hostname, &port, resource);
if (strcasecmp(hostname, server) == 0 &&
(strcmp(getenv("REMOTE_HOST"), "127.0.0.1") == 0 ||
strcmp(getenv("REMOTE_HOST"), "localhost") == 0 ||
strcmp(getenv("REMOTE_HOST"), server) == 0))
strcpy(hostname, "localhost");
/*
* Rewrite URI with HTTP address...
*/
snprintf(uri, sizeof(uri), "http://%s:%d%s", hostname, port,
resource);
cgiSetVariable("DEFAULT_URI", uri);
}
ippDelete(response);
}
/*
* Get the class info...
*/
+22 -27
Ver Arquivo
@@ -192,38 +192,33 @@ ippSetCGIVars(ipp_t *response, /* I - Response data to be copied... */
break;
case IPP_TAG_URI :
if (strchr(attr->values[i].string.text, ':') != NULL)
{
httpSeparate(attr->values[i].string.text, method, username,
hostname, &port, resource);
httpSeparate(attr->values[i].string.text, method, username,
hostname, &port, resource);
if (strcmp(method, "ipp") == 0 ||
strcmp(method, "http") == 0)
{
/*
* Map localhost access to localhost...
*/
if (strcmp(method, "ipp") == 0 ||
strcmp(method, "http") == 0)
{
/*
* Map localhost access to localhost...
*/
if (strcasecmp(hostname, server) == 0 &&
(strcmp(getenv("REMOTE_HOST"), "127.0.0.1") == 0 ||
strcmp(getenv("REMOTE_HOST"), "localhost") == 0 ||
strcmp(getenv("REMOTE_HOST"), server) == 0))
strcpy(hostname, "localhost");
if (strcasecmp(hostname, server) == 0 &&
strcmp(getenv("REMOTE_ADDR"), "127.0.0.1") == 0)
strcpy(hostname, "localhost");
/*
* Rewrite URI with HTTP address...
*/
/*
* Rewrite URI with HTTP address...
*/
if (username[0])
snprintf(uri, sizeof(uri), "http://%s@%s:%d%s", username,
hostname, port, resource);
else
snprintf(uri, sizeof(uri), "http://%s:%d%s", hostname, port,
resource);
if (username[0])
snprintf(uri, sizeof(uri), "http://%s@%s:%d%s", username,
hostname, port, resource);
else
snprintf(uri, sizeof(uri), "http://%s:%d%s", hostname, port,
resource);
strcat(valptr, uri);
break;
}
strcat(valptr, uri);
break;
}
case IPP_TAG_STRING :
-57
Ver Arquivo
@@ -46,7 +46,6 @@ main(int argc, /* I - Number of command-line arguments */
http_t *http; /* Connection to the server */
ipp_t *request, /* IPP request */
*response; /* IPP response */
ipp_attribute_t *attr; /* IPP attribute */
ipp_status_t status; /* Operation status... */
char uri[HTTP_MAX_URI];
/* Printer URI */
@@ -99,62 +98,6 @@ main(int argc, /* I - Number of command-line arguments */
if (op == NULL || strcasecmp(op, "print-test-page") != 0)
{
/*
* Get the default destination...
*/
request = ippNew();
request->request.op.operation_id = CUPS_GET_DEFAULT;
request->request.op.request_id = 1;
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
if ((response = cupsDoRequest(http, request, "/")) != NULL)
{
if ((attr = ippFindAttribute(response, "printer-name", IPP_TAG_NAME)) != NULL)
cgiSetVariable("DEFAULT_NAME", attr->values[0].string.text);
if ((attr = ippFindAttribute(response, "printer-uri-supported", IPP_TAG_URI)) != NULL)
{
char method[HTTP_MAX_URI],
username[HTTP_MAX_URI],
hostname[HTTP_MAX_URI],
resource[HTTP_MAX_URI],
uri[HTTP_MAX_URI];
int port; /* URI data */
char server[1024]; /* Name of server */
/*
* Map localhost access to localhost...
*/
httpSeparate(attr->values[0].string.text, method, username,
hostname, &port, resource);
if (strcasecmp(hostname, server) == 0 &&
(strcmp(getenv("REMOTE_HOST"), "127.0.0.1") == 0 ||
strcmp(getenv("REMOTE_HOST"), "localhost") == 0 ||
strcmp(getenv("REMOTE_HOST"), server) == 0))
strcpy(hostname, "localhost");
/*
* Rewrite URI with HTTP address...
*/
snprintf(uri, sizeof(uri), "http://%s:%d%s", hostname, port,
resource);
cgiSetVariable("DEFAULT_URI", uri);
}
ippDelete(response);
}
/*
* Get the printer info...
*/
+5 -29
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: cupsd.conf 1344 2000-09-06 18:32:40Z mike $"
# "$Id: cupsd.conf 1171 2000-06-27 21:15:41Z mike $"
#
# Sample configuration file for the Common UNIX Printing System (CUPS)
# scheduler.
@@ -111,13 +111,6 @@
#ErrorLog /var/log/cups/error_log
#
# FontPath: the path to locate all font files (currently only for pstoraster)
# By default /usr/share/cups/fonts.
#
#FontPath /usr/share/cups/fonts
#
# LogLevel: controls the number of messages logged to the ErrorLog
# file and can be one of the following:
@@ -177,13 +170,6 @@ LogLevel info
#RequestRoot /var/spool/cups
#
# RemoteRoot: the name of the user assigned to unauthenticated accesses
# from remote systems. By default "remroot".
#
#RemoteRoot remroot
#
# ServerBin: the root directory for the scheduler executables.
# By default /usr/lib/cups or /usr/lib32/cups (IRIX 6.5).
@@ -227,22 +213,12 @@ LogLevel info
#
# TempDir: the directory to put temporary files in. This directory must be
# writable by the user defined above! Defaults to "/var/spool/cups/tmp" or
# the value of the TMPDIR environment variable.
# writable by the user defined above! Defaults to "/var/tmp" or the value
# of the TMPDIR environment variable.
#
#TempDir /var/spool/cups/tmp
#TempDir /var/tmp
#
# FilterLimit: sets the maximum cost of all job filters that can be run
# at the same time. A limit of 0 means no limit. A typical job may need
# a filter limit of at least 200; limits less than the minimum required
# by a job force a single job to be printed at any time.
#
# The default limit is 0 (unlimited).
#
#FilterLimit 0
########
######## Network Options
@@ -562,5 +538,5 @@ Allow From 127.0.0.1
</Location>
#
# End of "$Id: cupsd.conf 1344 2000-09-06 18:32:40Z mike $".
# End of "$Id: cupsd.conf 1171 2000-06-27 21:15:41Z mike $".
#
+13 -27
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: mime.convs 1340 2000-09-06 13:53:00Z mike $"
# "$Id: mime.convs 1019 2000-04-18 19:41:12Z mike $"
#
# MIME converts file for the Common UNIX Printing System (CUPS).
#
@@ -41,38 +41,24 @@
# PostScript filters
#
#application/msword application/postscript 33 mswordtops
application/pdf application/postscript 33 pdftops
application/postscript application/vnd.cups-postscript 66 pstops
application/vnd.hp-HPGL application/postscript 66 hpgltops
image/* application/vnd.cups-postscript 66 imagetops
#text/html application/postscript 33 htmltops
application/x-cshell application/postscript 33 texttops
application/x-perl application/postscript 33 texttops
application/x-shell application/postscript 33 texttops
text/html application/postscript 33 texttops
text/plain application/postscript 33 texttops
application/vnd.cups-form application/vnd.cups-postscript 33 formtops
#application/msword application/postscript 50 mswordtops
application/pdf application/postscript 50 pdftops
application/postscript application/vnd.cups-postscript 50 pstops
application/vnd.hp-HPGL application/postscript 50 hpgltops
image/* application/vnd.cups-postscript 50 imagetops
#text/html application/postscript 50 htmltops
text/html application/postscript 50 texttops
text/plain application/postscript 50 texttops
application/vnd.cups-form application/vnd.cups-postscript 50 formtops
########################################################################
#
# Raster filters...
#
image/* application/vnd.cups-raster 100 imagetoraster
application/vnd.cups-postscript application/vnd.cups-raster 100 pstoraster
########################################################################
#
# Raw filter...
#
# Uncomment the following filter and the application/octet-stream type
# in mime.types to allow printing of arbitrary files without the -oraw
# option.
#
#*/* application/vnd.cups-raw 0 -
image/* application/vnd.cups-raster 50 imagetoraster
application/vnd.cups-postscript application/vnd.cups-raster 50 pstoraster
#
# End of "$Id: mime.convs 1340 2000-09-06 13:53:00Z mike $".
# End of "$Id: mime.convs 1019 2000-04-18 19:41:12Z mike $".
#
+2 -20
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: mime.types 1340 2000-09-06 13:53:00Z mike $"
# "$Id: mime.types 1152 2000-06-22 18:25:29Z mike $"
#
# MIME types file for the Common UNIX Printing System (CUPS).
#
@@ -110,13 +110,6 @@ image/x-bitmap bmp string(0,BM) && !printable(2,14)
text/html html htm printable(0,1024) +\
(string(0,"<HTML>") string(0,"<!DOCTYPE"))
application/x-cshell csh printable(0,1024) + string(0,#!) +\
(contains(2,80,/csh) contains(2,80,/tcsh))
application/x-perl pl printable(0,1024) + string(0,#!) +\
contains(2,80,/perl)
application/x-shell sh printable(0,1024) + string(0,#!) +\
(contains(2,80,/bash) contains(2,80,/ksh)\
contains(2,80,/sh) contains(2,80,/zsh))
text/plain txt printable(0,1024)
########################################################################
@@ -129,17 +122,6 @@ application/vnd.cups-postscript string(0,<1B>%-12345X)
application/vnd.cups-raster string(0,"RaSt") string(0,"tSaR")
application/vnd.cups-raw
########################################################################
#
# Raw print file support...
#
# Uncomment the following type and the application/octet-stream
# filter line in mime.convs to allow raw file printing without the
# -oraw option.
#
#application/octet-stream
#
# End of "$Id: mime.types 1340 2000-09-06 13:53:00Z mike $".
# End of "$Id: mime.types 1152 2000-06-22 18:25:29Z mike $".
#
+1 -2
Ver Arquivo
@@ -28,7 +28,7 @@
* Version of software...
*/
#define CUPS_SVERSION "CUPS v1.1.3"
#define CUPS_SVERSION "CUPS v1.1"
/*
* Where are files stored?
@@ -41,7 +41,6 @@
#define CUPS_REQUESTS "/var/spool/cups"
#define CUPS_LOGDIR "/var/logs/cups"
#define CUPS_DATADIR "/usr/share/cups"
#define CUPS_FONTPATH "/usr/share/cups/fonts"
/*
+6 -76
Ver Arquivo
@@ -113,8 +113,6 @@ fi
AC_ARG_ENABLE(pam, [ --enable-pam turn on PAM support [default=yes]])
AC_ARG_WITH(fontpath, [ --with-fontpath set font path for pstoraster],fontpath="$withval",fontpath="")
dnl Checks for programs...
AC_PROG_AWK
AC_PROG_CC
@@ -123,7 +121,6 @@ AC_PROG_CPP
AC_PROG_RANLIB
AC_PATH_PROG(AR,ar)
AC_PATH_PROG(CHMOD,chmod)
AC_PATH_PROG(CHOWN,chown)
AC_PATH_PROG(CP,cp)
AC_PATH_PROG(MV,mv)
AC_PATH_PROG(NROFF,nroff)
@@ -331,12 +328,8 @@ if test "$prefix" = "NONE"; then
fi
dnl Fix "exec_prefix" variable if it hasn't been specified...
if test "$exec_prefix" = "NONE"; then
if test "$prefix" = "/"; then
exec_prefix="/usr"
else
exec_prefix="$prefix"
fi
if test "$exec_prefix" = "NONE" -a "$prefix" = "/"; then
exec_prefix="/usr"
fi
dnl Fix "sharedstatedir" variable if it hasn't been specified...
@@ -360,21 +353,13 @@ if test "$includedir" = "\${prefix}/include" -a "$prefix" = "/"; then
fi
dnl Fix "localstatedir" variable if it hasn't been specified...
if test "$localstatedir" = "\${prefix}/var"; then
if test "$prefix" = "/"; then
localstatedir="/var"
else
localstatedir="$prefix/var"
fi
if test "$localstatedir" = "\${prefix}/var" -a "$prefix" = "/"; then
localstatedir="/var"
fi
dnl Fix "sysconfdir" variable if it hasn't been specified...
if test "$sysconfdir" = "\${prefix}/etc"; then
if test "$prefix" = "/"; then
sysconfdir="/etc"
else
sysconfdir="$prefix/etc"
fi
if test "$sysconfdir" = "\${prefix}/etc" -a "$prefix" = "/"; then
sysconfdir="/etc"
fi
dnl Fix "libdir" variable for IRIX 6.x...
@@ -391,11 +376,6 @@ if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/"; then
fi
fi
dnl Fix "fontpath" variable...
if test "x$fontpath" = "x"; then
fontpath="$datadir/cups/fonts"
fi
dnl Setup manpage extensions...
case "$uname" in
FreeBSD* | NetBSD* | OpenBSD*)
@@ -422,53 +402,6 @@ AC_SUBST(CAT1EXT)
AC_SUBST(CAT5EXT)
AC_SUBST(CAT8EXT)
dnl Setup init.d locations...
if test $prefix = "/"; then
case "$uname" in
FreeBSD* | NetBSD* | OpenBSD*)
# *BSD
INITDIR=""
INITDDIR=""
;;
Linux*)
# Linux seems to choose an init.d directory at random...
if test -d /sbin/init.d; then
# SuSE
INITDIR="/sbin/init.d"
INITDDIR=".."
else
if test -d /etc/rc.d; then
# RedHat
INITDIR="/etc/rc.d"
INITDDIR="../init.d"
else
# Others
INITDIR="/etc"
INITDDIR="../init.d"
fi
fi
;;
OSF1* | HP-UX*)
INITDIR="/sbin"
INITDDIR="../init.d"
;;
*)
INITDIR="/etc"
INITDDIR="../init.d"
;;
esac
else
INITDIR="/etc"
INITDDIR="../init.d"
fi
AC_SUBST(INITDIR)
AC_SUBST(INITDDIR)
dnl Setup default locations...
CUPS_SERVERROOT='${prefix}/etc/cups'
CUPS_LOGDIR='${prefix}/var/log/cups'
@@ -531,9 +464,6 @@ CUPS_DOCROOT='${exec_prefix}/share/doc/cups'
AC_DEFINE_UNQUOTED(CUPS_DOCROOT, "$exec_prefix/share/doc/cups")
AC_SUBST(CUPS_DOCROOT)
dnl Set the CUPS_FONTPATH directory...
AC_DEFINE_UNQUOTED(CUPS_FONTPATH, "$fontpath")
AC_OUTPUT(Makedefs cups.sh)
dnl
+6 -11
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: cups.list 1313 2000-08-24 17:54:28Z mike $"
# "$Id: cups.list 1202 2000-07-07 21:25:17Z mike $"
#
# ESP Package Manager (EPM) file list for the Common UNIX Printing
# System (CUPS).
@@ -28,7 +28,7 @@
%vendor Easy Software Products
%license LICENSE.txt
%readme README.txt
%version 1.1.3
%version 1.1
%incompat printpro
%system all
@@ -111,8 +111,7 @@ l 0555 root sys $LIBDIR/libcupsimage.so libcupsimage.so.2
# Directories
d 0755 root sys $LOGDIR -
d 0700 lp sys $REQUESTS -
d 1700 lp sys $REQUESTS/tmp -
d 0755 root sys $REQUESTS -
# Data files
f 0444 root sys $LOCALEDIR/C/cups_C locale/C/cups_C
@@ -311,12 +310,10 @@ f 0644 root sys $SERVERROOT/mime.types conf/mime.types
c 0644 root sys $SERVERROOT/printers.conf conf/printers.conf
%system linux
# Linux version needs PAM...
%requires /lib/libpam.so.0
d 0555 root sys $PAMDIR -
c 0644 root sys $PAMDIR/cups data/cups.pam
c 0644 root sys $PAMDIR/cups.suse data/cups.suse
%install if test -f /lib/security/pam_unix.so; then
%install mv $PAMDIR/cups.suse $PAMDIR/cups
%install fi
%system all
# Developer files
@@ -392,8 +389,6 @@ f 0444 root sys $DOCDIR/sdd.html doc/sdd.html
f 0444 root sys $DOCDIR/sdd.pdf doc/sdd.pdf
f 0444 root sys $DOCDIR/spm.html doc/spm.html
f 0444 root sys $DOCDIR/spm.pdf doc/spm.pdf
f 0444 root sys $DOCDIR/sps.html doc/sps.html
f 0444 root sys $DOCDIR/sps.pdf doc/sps.pdf
f 0444 root sys $DOCDIR/ssr.html doc/ssr.html
f 0444 root sys $DOCDIR/ssr.pdf doc/ssr.pdf
f 0444 root sys $DOCDIR/sum.html doc/sum.html
@@ -507,5 +502,5 @@ f 0444 root sys $MANDIR/man5/printers.conf.5 man/printers.conf.man
i 0555 root sys cups cups.sh
#
# End of "$Id: cups.list 1313 2000-08-24 17:54:28Z mike $".
# End of "$Id: cups.list 1202 2000-07-07 21:25:17Z mike $".
#
+24 -85
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: cups.spec 1339 2000-09-06 12:38:12Z mike $"
# "$Id: cups.spec 1214 2000-07-10 20:58:19Z mike $"
#
# RPM "spec" file for the Common UNIX Printing System (CUPS).
#
@@ -26,16 +26,16 @@
Summary: Common Unix Printing System
Name: cups
Version: 1.1.3
Version: 1.1
Release: 0
Copyright: GPL
Group: System Environment/Daemons
Source: ftp://ftp.easysw.com/pub/cups/%{version}/cups-%{version}-source.tar.gz
Source: ftp://ftp.easysw.com/pub/cups/1.1/cups-1.1-source.tar.gz
Url: http://www.cups.org
Packager: Michael Sweet <mike@easysw.com>
Vendor: Easy Software Products
# use buildroot so as not to disturb the version already installed
BuildRoot: /var/tmp/%{name}-root
BuildRoot: /tmp/rpmbuild
Conflicts: lpr
%package devel
@@ -67,108 +67,47 @@ make
# RPM_BUILD_ROOT exists
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
mkdir -p $RPM_BUILD_ROOT/etc/rc.d/rc0.d
mkdir -p $RPM_BUILD_ROOT/etc/rc.d/rc3.d
mkdir -p $RPM_BUILD_ROOT/etc/rc.d/rc5.d
make prefix=$RPM_BUILD_ROOT \
make datadir=$RPM_BUILD_ROOT/usr/share \
exec_prefix=$RPM_BUILD_ROOT/usr \
BINDIR=$RPM_BUILD_ROOT/usr/bin \
DATADIR=$RPM_BUILD_ROOT/usr/share/cups \
DOCDIR=$RPM_BUILD_ROOT/usr/share/doc/cups \
INCLUDEDIR=$RPM_BUILD_ROOT/usr/include \
LIBDIR=$RPM_BUILD_ROOT/usr/lib \
LOCALEDIR=$RPM_BUILD_ROOT/usr/share/locale \
MANDIR=$RPM_BUILD_ROOT/usr/man \
PAMDIR=$RPM_BUILD_ROOT/etc/pam.d \
REQUESTS=$RPM_BUILD_ROOT/var/spool/cups \
SBINDIR=$RPM_BUILD_ROOT/usr/sbin \
SERVERBIN=$RPM_BUILD_ROOT/usr/lib/cups \
SERVERROOT=$RPM_BUILD_ROOT/etc/cups \
includedir=$RPM_BUILD_ROOT/usr/include \
infodir=$RPM_BUILD_ROOT/usr/info \
libdir=$RPM_BUILD_ROOT/usr/lib \
localestatedir=$RPM_BUILD_ROOT/var \
prefix=$RPM_BUILD_ROOT \
sharedstatedir=$RPM_BUILD_ROOT/usr/com \
sysconfdir=$RPM_BUILD_ROOT/etc \
install
%post
if test -x /sbin/chkconfig; then
/sbin/chkconfig --add cups
/sbin/chkconfig cups on
fi
install -m 755 -o root -g root cups.sh $RPM_BUILD_ROOT/etc/rc.d/init.d/cups
if test -f /sbin/init.d/cups; then
/sbin/init.d/cups start
fi
if test -f /etc/rc.d/init.d/cups; then
/etc/rc.d/init.d/cups start
fi
if test -f /etc/init.d/cups; then
/etc/init.d/cups start
fi
%post
/sbin/chkconfig --add cups
/sbin/chkconfig cups on
/etc/rc.d/init.d/cups start
%preun
if test -f /sbin/init.d/cups; then
/sbin/init.d/cups stop
fi
if test -f /etc/rc.d/init.d/cups; then
/etc/rc.d/init.d/cups stop
fi
if test -f /etc/init.d/cups; then
/etc/init.d/cups stop
fi
if test -x /sbin/chkconfig; then
/sbin/chkconfig --del cups
fi
/etc/rc.d/init.d/cups stop
/sbin/chkconfig --del cups
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%dir /etc/cups
%config /etc/cups/*.conf
%dir /etc/cups/certs
%dir /etc/cups/interfaces
/etc/cups/mime.types
/etc/cups/mime.convs
%dir /etc/cups/ppd
%dir /etc/pam.d
/etc/pam.d/*
# RC dirs are a pain under Linux... Uncomment the appropriate ones if you
# don't use Red Hat or Mandrake...
/etc/rc.d/init.d/*
/etc/rc.d/rc0.d/*
/etc/rc.d/rc3.d/*
/etc/rc.d/rc5.d/*
#/etc/init.d/*
#/etc/rc0.d/*
#/etc/rc3.d/*
#/etc/rc5.d/*
#/sbin/rc.d/*
#/sbin/rc.d/rc0.d/*
#/sbin/rc.d/rc3.d/*
#/sbin/rc.d/rc5.d/*
/etc/*
/usr/bin/*
/usr/lib/*.so*
%dir /usr/lib/cups
/usr/lib/cups/*
/usr/man/*
/usr/sbin/*
%dir /usr/share/cups
/usr/share/cups/*
%dir /usr/share/locale
/usr/share/locale/*
%attr(0700,lp,root) %dir /var/spool/cups
%attr(1700,lp,root) %dir/var/spool/cups/tmp
/usr/share/*
/usr/lib/cups/*
/var/*
%files devel
%dir /usr/include/cups
/usr/include/cups/*
/usr/lib/*.a
#
# End of "$Id: cups.spec 1339 2000-09-06 12:38:12Z mike $".
# End of "$Id: cups.spec 1214 2000-07-10 20:58:19Z mike $".
#
+3 -3
Ver Arquivo
@@ -59,7 +59,7 @@ all: $(TARGETS)
#
clean:
$(RM) $(OBJS) $(TARGETS) `basename $(LIBCUPS) .2`
$(RM) $(OBJS) $(TARGETS)
#
@@ -76,8 +76,8 @@ install: all
$(INSTALL_LIB) $(LIBCUPS) $(LIBDIR)
if test $(LIBCUPS) != "libcups.a" -a $(LIBCUPS) != "libcups.la"; then \
$(INSTALL_LIB) libcups.a $(LIBDIR); \
$(RM) `basename $(LIBDIR)/$(LIBCUPS) .2`; \
$(LN) $(LIBCUPS) `basename $(LIBDIR)/$(LIBCUPS) .2`; \
$(RM) `basename $(LIBCUPS) .2`; \
$(LN) $(LIBCUPS) `basename $(LIBCUPS) .2`; \
fi
-3
Ver Arquivo
@@ -135,9 +135,6 @@ extern int cupsMarkOptions(ppd_file_t *ppd, int num_options,
extern const char *cupsGetPassword(const char *prompt);
extern const char *cupsServer(void);
extern void cupsSetPasswordCB(const char *(*cb)(const char *));
extern void cupsSetServer(const char *server);
extern void cupsSetUser(const char *user);
extern const char *cupsUser(void);
# ifdef __cplusplus
+3 -2
Ver Arquivo
@@ -87,8 +87,9 @@ cupsAddDest(const char *name, /* I - Name of destination */
for (i = num_dests; i > 0; i --, dest ++)
if (strcasecmp(name, dest->name) < 0)
break;
else if (strcasecmp(name, dest->name) == 0 &&
instance != NULL && dest->instance != NULL &&
else if (instance == NULL && dest->instance != NULL)
break;
else if (instance != NULL && dest->instance != NULL &&
strcasecmp(instance, dest->instance) < 0)
break;
+88 -88
Ver Arquivo
@@ -25,10 +25,8 @@
*
* Contents:
*
* ppdCollect() - Collect all marked options that reside in the specified
* ppdEmit() - Emit code for marked options to a file.
* ppdEmitFd() - Emit code for marked options to a file.
* ppd_sort() - Sort options by ordering numbers...
* ppdEmit() - Emit code for marked options to a file.
* ppdEmitFd() - Emit code for marked options to a file.
*/
/*
@@ -51,88 +49,8 @@
*/
static int ppd_sort(ppd_choice_t **c1, ppd_choice_t **c2);
/*
* 'ppdCollect()' - Collect all marked options that reside in the specified
* section.
*/
int /* O - Number of options marked */
ppdCollect(ppd_file_t *ppd, /* I - PPD file data */
ppd_section_t section, /* I - Section to collect */
ppd_choice_t ***choices) /* O - Pointers to choices */
{
int i, j, k, m; /* Looping vars */
ppd_group_t *g, /* Current group */
*sg; /* Current sub-group */
ppd_option_t *o; /* Current option */
ppd_choice_t *c; /* Current choice */
int count; /* Number of choices collected */
ppd_choice_t **collect; /* Collected choices */
if (ppd == NULL)
return (0);
/*
* Allocate memory for up to 1000 selected choices...
*/
count = 0;
collect = calloc(sizeof(ppd_choice_t *), 1000);
/*
* Loop through all options and add choices as needed...
*/
for (i = ppd->num_groups, g = ppd->groups; i > 0; i --, g ++)
{
for (j = g->num_options, o = g->options; j > 0; j --, o ++)
if (o->section == section)
for (k = o->num_choices, c = o->choices; k > 0; k --, c ++)
if (c->marked && count < 1000)
{
collect[count] = c;
count ++;
}
for (j = g->num_subgroups, sg = g->subgroups; j > 0; j --, sg ++)
for (k = sg->num_options, o = sg->options; k > 0; k --, o ++)
if (o->section == section)
for (m = o->num_choices, c = o->choices; m > 0; m --, c ++)
if (c->marked && count < 1000)
{
collect[count] = c;
count ++;
}
}
/*
* If we have more than 1 marked choice, sort them...
*/
if (count > 1)
qsort(collect, count, sizeof(ppd_choice_t *),
(int (*)(const void *, const void *))ppd_sort);
/*
* Return the array and number of choices; if 0, free the array since
* it isn't needed.
*/
if (count > 0)
{
*choices = collect;
return (count);
}
else
{
*choices = NULL;
free(collect);
return (0);
}
}
static int ppd_collect(ppd_file_t *ppd, ppd_section_t section,
ppd_choice_t ***choices);
/*
@@ -150,7 +68,7 @@ ppdEmit(ppd_file_t *ppd, /* I - PPD file record */
ppd_size_t *size; /* Custom page size */
if ((count = ppdCollect(ppd, section, &choices)) == 0)
if ((count = ppd_collect(ppd, section, &choices)) == 0)
return (0);
for (i = 0; i < count; i ++)
@@ -237,7 +155,7 @@ ppdEmitFd(ppd_file_t *ppd, /* I - PPD file record */
char buf[1024]; /* Output buffer for feature */
if ((count = ppdCollect(ppd, section, &choices)) == 0)
if ((count = ppd_collect(ppd, section, &choices)) == 0)
return (0);
for (i = 0; i < count; i ++)
@@ -296,6 +214,88 @@ ppd_sort(ppd_choice_t **c1, /* I - First choice */
}
/*
* 'ppd_collect()' - Collect all marked options that reside in the specified
* section.
*/
static int /* O - Number of options marked */
ppd_collect(ppd_file_t *ppd, /* I - PPD file data */
ppd_section_t section, /* I - Section to collect */
ppd_choice_t ***choices) /* O - Pointers to choices */
{
int i, j, k, m; /* Looping vars */
ppd_group_t *g, /* Current group */
*sg; /* Current sub-group */
ppd_option_t *o; /* Current option */
ppd_choice_t *c; /* Current choice */
int count; /* Number of choices collected */
ppd_choice_t **collect; /* Collected choices */
if (ppd == NULL)
return (0);
/*
* Allocate memory for up to 1000 selected choices...
*/
count = 0;
collect = calloc(sizeof(ppd_choice_t *), 1000);
/*
* Loop through all options and add choices as needed...
*/
for (i = ppd->num_groups, g = ppd->groups; i > 0; i --, g ++)
{
for (j = g->num_options, o = g->options; j > 0; j --, o ++)
if (o->section == section)
for (k = o->num_choices, c = o->choices; k > 0; k --, c ++)
if (c->marked && count < 1000)
{
collect[count] = c;
count ++;
}
for (j = g->num_subgroups, sg = g->subgroups; j > 0; j --, sg ++)
for (k = sg->num_options, o = sg->options; k > 0; k --, o ++)
if (o->section == section)
for (m = o->num_choices, c = o->choices; m > 0; m --, c ++)
if (c->marked && count < 1000)
{
collect[count] = c;
count ++;
}
}
/*
* If we have more than 1 marked choice, sort them...
*/
if (count > 1)
qsort(collect, count, sizeof(ppd_choice_t *),
(int (*)(const void *, const void *))ppd_sort);
/*
* Return the array and number of choices; if 0, free the array since
* it isn't needed.
*/
if (count > 0)
{
*choices = collect;
return (count);
}
else
{
*choices = NULL;
free(collect);
return (0);
}
}
/*
* End of "$Id$".
*/
+4 -25
Ver Arquivo
@@ -44,7 +44,6 @@
* ippNew() - Allocate a new IPP request.
* ippPort() - Return the default IPP port number.
* ippRead() - Read data for an IPP request.
* ippSetPort() - Set the default port number.
* ippTimeToDate() - Convert from UNIX time to RFC 1903 format.
* ippWrite() - Write data for an IPP request.
* _ipp_add_attr() - Add a new attribute to the request.
@@ -66,13 +65,6 @@
#include <ctype.h>
/*
* Local globals...
*/
static int ipp_port = 0;
/*
* Local functions...
*/
@@ -1585,25 +1577,12 @@ ippPort(void)
struct servent *port; /* Port number info */
if (ipp_port)
return (ipp_port);
else if ((server_port = getenv("IPP_PORT")) != NULL)
return (ipp_port = atoi(server_port));
if ((server_port = getenv("IPP_PORT")) != NULL)
return (atoi(server_port));
else if ((port = getservbyname("ipp", NULL)) == NULL)
return (ipp_port = IPP_PORT);
return (IPP_PORT);
else
return (ipp_port = ntohs(port->s_port));
}
/*
* 'ippSetPort()' - Set the default port number.
*/
void
ippSetPort(int p) /* I - Port number to use */
{
ipp_port = p;
return (ntohs(port->s_port));
}
-1
Ver Arquivo
@@ -342,7 +342,6 @@ extern ipp_state_t ippRead(http_t *http, ipp_t *ipp);
extern const ipp_uchar_t *ippTimeToDate(time_t t);
extern ipp_state_t ippWrite(http_t *http, ipp_t *ipp);
extern int ippPort(void);
extern void ippSetPort(int p);
extern ipp_attribute_t *_ipp_add_attr(ipp_t *, int);
extern void _ipp_free_attr(ipp_attribute_t *);
+2 -46
Ver Arquivo
@@ -1573,7 +1573,7 @@ ppd_read(FILE *fp, /* I - File to read from */
*textptr, /* Text pointer */
*strptr, /* Pointer into string */
*lineptr, /* Current position in line buffer */
line[65536]; /* Line buffer (64k) */
line[262144]; /* Line buffer (256k) */
/*
@@ -1588,8 +1588,6 @@ ppd_read(FILE *fp, /* I - File to read from */
* Now loop until we have a valid line...
*/
*string = NULL;
do
{
/*
@@ -1623,12 +1621,10 @@ ppd_read(FILE *fp, /* I - File to read from */
ungetc(ch, fp);
}
ch = '\n';
*lineptr++ = '\n';
if (!endquote) /* Continue for multi-line text */
break;
*lineptr++ = '\n';
}
else
{
@@ -1643,46 +1639,6 @@ ppd_read(FILE *fp, /* I - File to read from */
}
}
if (endquote)
{
/*
* Didn't finish this quoted string...
*/
while ((ch = getc(fp)) != EOF)
if (ch == '\"')
break;
}
if (ch != '\n')
{
/*
* Didn't finish this line...
*/
while ((ch = getc(fp)) != EOF)
if (ch == '\r' || ch == '\n')
{
/*
* Line feed or carriage return...
*/
if (ch == '\r')
{
/*
* Check for a trailing line feed...
*/
if ((ch = getc(fp)) == EOF)
break;
if (ch != 0x0a)
ungetc(ch, fp);
}
break;
}
}
if (lineptr > line && lineptr[-1] == '\n')
lineptr --;
-2
Ver Arquivo
@@ -207,8 +207,6 @@ typedef struct /**** Files ****/
*/
extern void ppdClose(ppd_file_t *ppd);
extern int ppdCollect(ppd_file_t *ppd, ppd_section_t section,
ppd_choice_t ***choices);
extern int ppdConflicts(ppd_file_t *ppd);
extern int ppdEmit(ppd_file_t *ppd, FILE *fp,
ppd_section_t section);
+104 -201
Ver Arquivo
@@ -24,13 +24,9 @@
*
* Contents:
*
* cupsGetPassword() - Get a password from the user...
* cupsServer() - Return the hostname of the default server...
* cupsSetPasswordCB() - Set the password callback for CUPS.
* cupsSetServer() - Set the default server name...
* cupsSetUser() - Set the default user name...
* cupsUser() - Return the current users name.
* cups_get_password() - Get a password from the user...
* cupsUser() - Return the current users name.
* cupsGetPassword() - Get a password from the user...
* cupsServer() - Return the hostname of the default server...
*/
/*
@@ -43,168 +39,6 @@
#include <ctype.h>
/*
* Local functions...
*/
static const char *cups_get_password(const char *prompt);
/*
* Local globals...
*/
static char cups_user[65] = "",
cups_server[256] = "";
static const char *(*cups_pwdcb)(const char *) = cups_get_password;
/*
* 'cupsGetPassword()' - Get a password from the user...
*/
const char * /* O - Password */
cupsGetPassword(const char *prompt) /* I - Prompt string */
{
return ((*cups_pwdcb)(prompt));
}
/*
* 'cupsServer()' - Return the hostname of the default server...
*/
const char * /* O - Server name */
cupsServer(void)
{
FILE *fp; /* client.conf file */
char *server; /* Pointer to server name */
const char *home; /* Home directory of user */
static char line[1024]; /* Line from file */
/*
* First see if we have already set the server name...
*/
if (!cups_server[0])
{
/*
* Then see if the CUPS_SERVER environment variable is set...
*/
if ((server = getenv("CUPS_SERVER")) == NULL)
{
/*
* Next check to see if we have a $HOME/.cupsrc or client.conf file...
*/
if ((home = getenv("HOME")) != NULL)
{
snprintf(line, sizeof(line), "%s/.cupsrc", home);
fp = fopen(line, "r");
}
else
fp = NULL;
if (fp == NULL)
{
if ((home = getenv("CUPS_SERVERROOT")) != NULL)
{
snprintf(line, sizeof(line), "%s/client.conf", home);
fp = fopen(line, "r");
}
else
fp = fopen(CUPS_SERVERROOT "/client.conf", "r");
}
server = "localhost";
if (fp != NULL)
{
/*
* Read the config file and look for a ServerName line...
*/
while (fgets(line, sizeof(line), fp) != NULL)
if (strncmp(line, "ServerName ", 11) == 0)
{
/*
* Got it! Drop any trailing newline and find the name...
*/
server = line + strlen(line) - 1;
if (*server == '\n')
*server = '\0';
for (server = line + 11; isspace(*server); server ++);
break;
}
fclose(fp);
}
}
/*
* Copy the server name over...
*/
strncpy(cups_server, server, sizeof(cups_server) - 1);
cups_server[sizeof(cups_server) - 1] = '\0';
}
return (cups_server);
}
/*
* 'cupsSetPasswordCB()' - Set the password callback for CUPS.
*/
void
cupsSetPasswordCB(const char *(*cb)(const char *)) /* I - Callback function */
{
if (cb == (const char *(*)(const char *))0)
cups_pwdcb = cups_get_password;
else
cups_pwdcb = cb;
}
/*
* 'cupsSetServer()' - Set the default server name...
*/
void
cupsSetServer(const char *server) /* I - Server name */
{
if (server)
{
strncpy(cups_server, server, sizeof(cups_server) - 1);
cups_server[sizeof(cups_server) - 1] = '\0';
}
else
cups_server[0] = '\0';
}
/*
* 'cupsSetUser()' - Set the default user name...
*/
void
cupsSetUser(const char *user) /* I - User name */
{
if (user)
{
strncpy(cups_user, user, sizeof(cups_user) - 1);
cups_user[sizeof(cups_user) - 1] = '\0';
}
else
cups_user[0] = '\0';
}
#if defined(WIN32) || defined(__EMX__)
/*
* WIN32 and OS/2 username and password stuff...
@@ -217,19 +51,16 @@ cupsSetUser(const char *user) /* I - User name */
const char * /* O - User name */
cupsUser(void)
{
if (!cups_user[0])
strcpy(cups_user, "WindowsUser");
return (cups_user);
return ("WindowsUser");
}
/*
* 'cups_get_password()' - Get a password from the user...
* 'cupsGetPassword()' - Get a password from the user...
*/
static const char * /* O - Password */
cups_get_password(const char *prompt) /* I - Prompt string */
const char * /* O - Password */
cupsGetPassword(const char *prompt) /* I - Prompt string */
{
return (NULL);
}
@@ -250,49 +81,121 @@ cupsUser(void)
struct passwd *pwd; /* User/password entry */
if (!cups_user[0])
{
/*
* Rewind the password file...
*/
/*
* Rewind the password file...
*/
setpwent();
setpwent();
/*
* Lookup the password entry for the current user.
*/
/*
* Lookup the password entry for the current user.
*/
if ((pwd = getpwuid(getuid())) == NULL)
strcpy(cups_user, "unknown"); /* Unknown user! */
else
{
/*
* Rewind the password file again and copy the username...
*/
if ((pwd = getpwuid(getuid())) == NULL)
return ("unknown"); /* Unknown user! */
setpwent();
/*
* Rewind the password file again and return the username...
*/
strncpy(cups_user, pwd->pw_name, sizeof(cups_user) - 1);
cups_user[sizeof(cups_user) - 1] = '\0';
}
}
setpwent();
return (cups_user);
return (pwd->pw_name);
}
/*
* 'cups_get_password()' - Get a password from the user...
* 'cupsGetPassword()' - Get a password from the user...
*/
static const char * /* O - Password */
cups_get_password(const char *prompt) /* I - Prompt string */
const char * /* O - Password */
cupsGetPassword(const char *prompt) /* I - Prompt string */
{
return (getpass(prompt));
}
#endif /* WIN32 || __EMX__ */
/*
* 'cupsServer()' - Return the hostname of the default server...
*/
const char * /* O - Server name */
cupsServer(void)
{
FILE *fp; /* client.conf file */
char *server; /* Pointer to server name */
const char *home; /* Home directory of user */
static char line[1024]; /* Line from file */
/*
* First see if the CUPS_SERVER environment variable is set...
*/
if ((server = getenv("CUPS_SERVER")) != NULL)
return (server);
/*
* Next check to see if we have a $HOME/.cupsrc or client.conf file...
*/
if ((home = getenv("HOME")) != NULL)
{
snprintf(line, sizeof(line), "%s/.cupsrc", home);
fp = fopen(line, "r");
}
else
fp = NULL;
if (fp == NULL)
{
if ((home = getenv("CUPS_SERVERROOT")) != NULL)
{
snprintf(line, sizeof(line), "%s/client.conf", home);
fp = fopen(line, "r");
}
else
fp = fopen(CUPS_SERVERROOT "/client.conf", "r");
}
if (fp == NULL)
return ("localhost");
/*
* Read the config file and look for a ServerName line...
*/
while (fgets(line, sizeof(line), fp) != NULL)
if (strncmp(line, "ServerName ", 11) == 0)
{
/*
* Got it! Drop any trailing newline and find the name...
*/
server = line + strlen(line) - 1;
if (*server == '\n')
*server = '\0';
for (server = line + 11; isspace(*server); server ++);
if (*server)
{
fclose(fp);
return (server);
}
}
/*
* Didn't see a ServerName line, so return "localhost"...
*/
fclose(fp);
return ("localhost");
}
/*
* End of "$Id$".
*/
+25 -171
Ver Arquivo
@@ -29,10 +29,8 @@
* cupsGetDefault() - Get the default printer or class.
* cupsGetPPD() - Get the PPD file for a printer.
* cupsGetPrinters() - Get a list of printers.
* cupsLastError() - Return the last IPP error that occurred.
* cupsPrintFile() - Print a file to a printer or class.
* cupsPrintFiles() - Print one or more files to a printer or class.
* cupsTempFile() - Generate a temporary filename.
* cups_connect() - Connect to the specified host...
* cups_local_auth() - Get the local authorization certificate if
* available/applicable...
@@ -50,7 +48,6 @@
#include <stdlib.h>
#include <ctype.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/stat.h>
#if defined(WIN32) || defined(__EMX__)
# include <io.h>
@@ -179,15 +176,6 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
encode[255]; /* Encoded username:password */
if (http == NULL || request == NULL || resource == NULL)
{
if (request != NULL)
ippDelete(request);
last_error = IPP_INTERNAL_ERROR;
return (NULL);
}
DEBUG_printf(("cupsDoFileRequest(%08x, %08s, \'%s\', \'%s\')\n",
http, request, resource, filename ? filename : "(null)"));
@@ -444,12 +432,6 @@ cupsGetClasses(char ***classes) /* O - Classes */
char **temp; /* Temporary pointer */
if (classes == NULL)
{
last_error = IPP_INTERNAL_ERROR;
return (0);
}
/*
* Try to connect to the server...
*/
@@ -668,19 +650,13 @@ cupsGetDefault(void)
const char * /* O - Filename for PPD file */
cupsGetPPD(const char *name) /* I - Printer name */
{
ipp_t *request, /* IPP request */
*response; /* IPP response */
ipp_attribute_t *attr; /* Current attribute */
cups_lang_t *language; /* Local language */
FILE *fp; /* PPD file */
int bytes; /* Number of bytes read */
char buffer[8192]; /* Buffer for file */
char printer[HTTP_MAX_URI], /* Printer name */
method[HTTP_MAX_URI], /* Method/scheme name */
username[HTTP_MAX_URI], /* Username:password */
hostname[HTTP_MAX_URI], /* Hostname */
resource[HTTP_MAX_URI]; /* Resource name */
int port; /* Port number */
char *tempdir; /* Temporary file directory */
const char *password; /* Password string */
char realm[HTTP_MAX_VALUE], /* realm="xyz" string */
nonce[HTTP_MAX_VALUE], /* nonce="xyz" string */
@@ -690,12 +666,6 @@ cupsGetPPD(const char *name) /* I - Printer name */
static char filename[HTTP_MAX_URI]; /* Local filename */
if (name == NULL)
{
last_error = IPP_INTERNAL_ERROR;
return (NULL);
}
/*
* See if we can connect to the server...
*/
@@ -706,89 +676,20 @@ cupsGetPPD(const char *name) /* I - Printer name */
return (NULL);
}
if (strchr(name, '@') == NULL)
{
/*
* Build an IPP_GET_PRINTER_ATTRIBUTES request, which requires the following
* attributes:
*
* attributes-charset
* attributes-natural-language
* printer-uri
*/
request = ippNew();
request->request.op.operation_id = IPP_GET_PRINTER_ATTRIBUTES;
request->request.op.request_id = 1;
language = cupsLangDefault();
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
snprintf(buffer, sizeof(buffer), "ipp://localhost/printers/%s", name);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, buffer);
/*
* Do the request and get back a response...
*/
if ((response = cupsDoRequest(cups_server, request, "/")) != NULL)
{
last_error = response->request.status.status_code;
if ((attr = ippFindAttribute(response, "printer-uri-supported",
IPP_TAG_URI)) != NULL)
{
/*
* Get the actual server and printer names...
*/
httpSeparate(attr->values[0].string.text, method, username, hostname,
&port, resource);
strcpy(printer, strrchr(resource, '/') + 1);
/*
* Remap local hostname to localhost...
*/
gethostname(buffer, sizeof(buffer));
if (strcasecmp(buffer, hostname) == 0)
strcpy(hostname, "localhost");
}
ippDelete(response);
}
cupsLangFree(language);
/*
* Reconnect to the correct server as needed...
*/
if (strcasecmp(cups_server->hostname, hostname) != 0)
{
httpClose(cups_server);
if ((cups_server = httpConnect(hostname, ippPort())) == NULL)
{
last_error = IPP_SERVICE_UNAVAILABLE;
return (NULL);
}
}
}
/*
* Get a temp file...
* Then check for the cache file...
*/
cupsTempFile(filename, sizeof(filename));
#if defined(WIN32) || defined(__EMX__)
tempdir = "C:/WINDOWS/TEMP";
snprintf(filename, sizeof(filename), "%s/%s.ppd", tempdir, printer);
#else
if ((tempdir = getenv("TMPDIR")) == NULL)
tempdir = "/tmp";
snprintf(filename, sizeof(filename), "%s/%d.%s.ppd", tempdir, getuid(), printer);
#endif /* WIN32 || __EMX__ */
/*
* And send a request to the HTTP server...
@@ -887,7 +788,6 @@ cupsGetPPD(const char *name) /* I - Printer name */
* Can't open file; close the server connection and return NULL...
*/
httpFlush(cups_server);
httpClose(cups_server);
cups_server = NULL;
return (NULL);
@@ -917,12 +817,6 @@ cupsGetPrinters(char ***printers) /* O - Printers */
char **temp; /* Temporary pointer */
if (printers == NULL)
{
last_error = IPP_INTERNAL_ERROR;
return (0);
}
/*
* Try to connect to the server...
*/
@@ -1359,9 +1253,7 @@ char * /* O - Filename */
cupsTempFile(char *filename, /* I - Pointer to buffer */
int len) /* I - Size of buffer */
{
int fd; /* File descriptor for temp file */
char *tmpdir; /* TMPDIR environment var */
struct timeval curtime; /* Current time */
static char buf[1024] = ""; /* Buffer if you pass in NULL and 0 */
@@ -1380,64 +1272,26 @@ cupsTempFile(char *filename, /* I - Pointer to buffer */
*/
if ((tmpdir = getenv("TMPDIR")) == NULL)
{
#ifdef WIN32
tmpdir = "C:/WINDOWS/TEMP";
#else
/*
* Put root temp files in restricted temp directory...
*/
tmpdir = "/var/tmp";
if (getuid() == 0)
tmpdir = CUPS_REQUESTS "/tmp";
else
tmpdir = "/var/tmp";
#endif /* WIN32 */
}
/*
* Make the temporary name using the specified directory...
*/
do
if ((int)(strlen(tmpdir) + 8) > len)
{
/*
* Get the current time of day...
* The specified directory exceeds the size of the buffer; default it...
*/
gettimeofday(&curtime, NULL);
/*
* Format a string using the hex time values...
*/
snprintf(filename, len, "%s/%08x%05x", tmpdir,
curtime.tv_sec, curtime.tv_usec);
/*
* Open the file in "exclusive" mode, making sure that we don't
* stomp on an existing file or someone's symlink crack...
*/
#ifdef O_NOFOLLOW
fd = open(filename, O_WRONLY | O_CREAT | O_EXCL | O_NOFOLLOW, 0600);
#else
fd = open(filename, O_WRONLY | O_CREAT | O_EXCL, 0600);
#endif /* O_NOFOLLOW */
strcpy(buf, "/var/tmp/XXXXXX");
return (mktemp(buf));
}
while (fd < 0);
else
{
/*
* Make the temporary name using the specified directory...
*/
/*
* Close the temp file - it'll be reopened later as needed...
*/
close(fd);
/*
* Return the temp filename...
*/
return (filename);
sprintf(filename, "%s/XXXXXX", tmpdir);
return (mktemp(filename));
}
}
+1 -5
Ver Arquivo
@@ -94,11 +94,7 @@ install:
-if test "$(PAMDIR)" != ""; then \
$(MKDIR) $(PAMDIR); \
$(CHMOD) ugo+rx $(PAMDIR); \
if test -f /lib/security/pam_unix.so; then \
$(INSTALL_DATA) cups.suse $(PAMDIR)/cups; \
else \
$(INSTALL_DATA) cups.pam $(PAMDIR)/cups; \
fi \
$(INSTALL_DATA) cups.pam $(PAMDIR)/cups; \
fi
-2
Ver Arquivo
@@ -1,2 +0,0 @@
auth required /lib/security/pam_unix.so nullok shadow
account required /lib/security/pam_unix.so
+2 -2
Ver Arquivo
@@ -465,7 +465,7 @@ gsave
pageWidth 36 mul % Center of page
pageWidth 14 mul % Bottom of page
2 copy moveto % Position text
(Printed Using CUPS v1.1.x) CENTER % Show text centered
(Printed Using CUPS v1.1) CENTER % Show text centered
pageWidth 3 mul sub % Move down...
2 copy moveto % Position text
@@ -500,6 +500,6 @@ gsave
grestore
showpage
%
% End of "$Id: testprint.ps 1260 2000-08-01 17:52:30Z mike $".
% End of "$Id: testprint.ps 985 2000-03-13 18:55:00Z mike $".
%
%%EOF
+225
Ver Arquivo
@@ -0,0 +1,225 @@
#
# "$Id$"
#
# Documentation makefile for the Common UNIX Printing System (CUPS).
#
# Copyright 1993-2000 by Easy Software Products.
#
# These coded instructions, statements, and computer programs are the
# property of Easy Software Products and are protected by Federal
# copyright law. Distribution and use rights are outlined in the file
# "LICENSE.txt" which should have been included with this file. If this
# file is missing or damaged please contact Easy Software Products
# at:
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44141 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
# EMail: cups-info@cups.org
# WWW: http://www.cups.org
#
include ../Makedefs
#
# HTMLDOC generation rules...
#
.SUFFIXES: .html .pdf .ps .shtml
.shtml.html:
echo Formatting $@...
htmldoc --titleimage images/cups-large.gif --numbered -f $@ $<
.shtml.pdf:
echo Formatting $@...
htmldoc --titleimage images/cups-large.gif --duplex --compression=9 \
--numbered --jpeg -f $@ $<
.shtml.ps:
echo Formatting $@...
htmldoc --titleimage images/cups-large.gif --duplex --numbered \
--jpeg -f $@ $<
#
# Document files...
#
DOCUMENTS = cmp.shtml idd.shtml ipp.shtml sam.shtml sdd.shtml \
spm.shtml ssr.shtml stp.shtml sum.shtml svd.shtml
DOCIMAGES = images/cups-block-diagram.gif images/cups-large.gif \
images/cups-medium.gif images/cups-small.gif
WEBPAGES = cups.css cupsdoc.css index.html documentation.html
WEBIMAGES = images/accept-jobs.gif \
images/add-class.gif \
images/add-printer.gif \
images/cancel-job.gif \
images/cancel-jobs.gif \
images/cancel.gif \
images/classes.gif \
images/config-printer.gif \
images/continue.gif \
images/delete-class.gif \
images/delete-printer.gif \
images/draft.gif \
images/hold-job.gif \
images/left.gif \
images/logo.gif \
images/manage-classes.gif \
images/manage-jobs.gif \
images/manage-printers.gif \
images/modify-class.gif \
images/modify-printer.gif \
images/navbar.gif \
images/print-test-page.gif \
images/printer-idle.gif \
images/printer-processing.gif \
images/printer-stopped.gif \
images/reject-jobs.gif \
images/release-job.gif \
images/right.gif \
images/show-active.gif \
images/show-completed.gif \
images/start-class.gif \
images/start-printer.gif \
images/stop-class.gif \
images/stop-printer.gif
#
# Make all documents...
#
all: $(DOCUMENTS:.shtml=.pdf) $(DOCUMENTS:.shtml=.html) overview.pdf
#
# Make PS files...
#
ps: $(DOCUMENTS:.shtml=.ps) overview.ps
#
# Make manuals for printing...
#
print: sam-7x8.pdf spm-7x8.pdf sum-7x8.pdf \
sam-7x8.ps spm-7x8.ps sum-7x8.ps
#
# Remove all generated files...
#
clean:
$(RM) $(DOCUMENTS:.shtml=.pdf)
$(RM) $(DOCUMENTS:.shtml=.html)
$(RM) overview.pdf
#
# Install all documentation files...
#
install:
-$(MKDIR) $(DOCDIR)
$(CHMOD) ugo+rx $(DOCDIR)
$(INSTALL_MAN) $(WEBPAGES) $(DOCDIR)
$(INSTALL_MAN) overview.html overview.pdf $(DOCDIR)
$(INSTALL_MAN) $(DOCUMENTS:.shtml=.html) $(DOCDIR)
$(INSTALL_MAN) $(DOCUMENTS:.shtml=.pdf) $(DOCDIR)
-$(MKDIR) $(DOCDIR)/images
$(CHMOD) ugo+rx $(DOCDIR)/images
$(INSTALL_MAN) $(WEBIMAGES) $(DOCDIR)/images
$(INSTALL_MAN) $(DOCIMAGES) $(DOCDIR)/images
#
# The overview, admin manual, programmers manual, and users manual get
# special attention...
#
overview.pdf: overview.html
echo Formatting $@...
htmldoc --duplex --compression=9 --jpeg --webpage -f overview.pdf overview.html
overview.ps: overview.html
echo Formatting $@...
htmldoc --duplex --jpeg --webpage -f overview.ps overview.html
sam.html: sam.shtml
echo Formatting $@...
htmldoc --titleimage images/cups-large.gif -f $@ $<
sam.pdf: sam.shtml
echo Formatting $@...
htmldoc --titleimage images/cups-large.gif --duplex --compression=9 \
--jpeg -f $@ $<
sam.ps: sam.shtml
echo Formatting $@...
htmldoc --titleimage images/cups-large.gif --duplex --jpeg -f $@ $<
spm.html: spm.shtml
echo Formatting $@...
htmldoc --titleimage images/cups-large.gif -f $@ $<
spm.pdf: spm.shtml
echo Formatting $@...
htmldoc --titleimage images/cups-large.gif --duplex --compression=9 \
--jpeg -f $@ $<
spm.ps: spm.shtml
echo Formatting $@...
htmldoc --titleimage images/cups-large.gif --duplex --jpeg -f $@ $<
sum.html: sum.shtml
echo Formatting $@...
htmldoc --titleimage images/cups-large.gif -f $@ $<
sum.pdf: sum.shtml
echo Formatting $@...
htmldoc --titleimage images/cups-large.gif --duplex --compression=9 \
--jpeg -f $@ $<
sum.ps: sum.shtml
echo Formatting $@...
htmldoc --titleimage images/cups-large.gif --duplex --jpeg -f $@ $<
sam-7x8.pdf: sam.shtml
echo Formatting $@...
htmldoc --titleimage images/cups-large.gif --duplex --compression=9 \
--pagelayout tworight --pagemode document \
--jpeg --size 7x8.5in --left 0.5in --right 0.25in \
--top 0.25in --bottom 0.25in --fontsize 10 --headfootsize 10 -f $@ sam.shtml
sam-7x8.ps: sam.shtml
echo Formatting $@...
htmldoc --titleimage images/cups-large.gif --duplex --jpeg \
--size 7x8.5in --left 0.5in --right 0.25in \
--top 0.25in --bottom 0.25in --fontsize 10 --headfootsize 10 -f $@ sam.shtml
spm-7x8.pdf: spm.shtml
echo Formatting $@...
htmldoc --titleimage images/cups-large.gif --duplex --compression=9 \
--pagelayout tworight --pagemode document \
--jpeg --size 7x8.5in --left 0.5in --right 0.25in \
--top 0.25in --bottom 0.25in --fontsize 10 --headfootsize 10 -f $@ spm.shtml
spm-7x8.ps: spm.shtml
echo Formatting $@...
htmldoc --titleimage images/cups-large.gif --duplex --jpeg \
--size 7x8.5in --left 0.5in --right 0.25in \
--top 0.25in --bottom 0.25in --fontsize 10 --headfootsize 10 -f $@ spm.shtml
sum-7x8.pdf: sum.shtml
echo Formatting $@...
htmldoc --titleimage images/cups-large.gif --duplex --compression=9 \
--pagelayout tworight --pagemode document \
--jpeg --size 7x8.5in --left 0.5in --right 0.25in \
--top 0.25in --bottom 0.25in --fontsize 10 --headfootsize 10 -f $@ sum.shtml
sum-7x8.ps: sum.shtml
echo Formatting $@...
htmldoc --titleimage images/cups-large.gif --duplex --jpeg \
--size 7x8.5in --left 0.5in --right 0.25in \
--top 0.25in --bottom 0.25in --fontsize 10 --headfootsize 10 -f $@ sum.shtml
$(DOCUMENTS): glossary.shtml printing-overview.shtml \
references.shtml system-overview.shtml \
../LICENSE.html
#
# End of Makefile.
#
+680
Ver Arquivo
@@ -0,0 +1,680 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE> CUPS Configuration Management Plan</TITLE>
<META NAME="AUTHOR" CONTENT="Easy Software Products">
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-CMP-1.1">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<STYLE>
BODY { font-family: serif; font-size: 11.0pt }
H1 { font-family: sans-serif; font-size: 20.0pt }
H2 { font-family: sans-serif; font-size: 17.0pt }
H3 { font-family: sans-serif; font-size: 14.0pt }
H4 { font-family: sans-serif; font-size: 11.0pt }
H5 { font-family: sans-serif; font-size: 9.0pt }
H6 { font-family: sans-serif; font-size: 8.0pt }
SUB { font-size: 8.0pt }
SUP { font-size: 8.0pt }
PRE { font-size: 9.0pt }
</STYLE>
</HEAD>
<BODY>
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0" WIDTH="100%"><BR>
<H1> CUPS Configuration Management Plan</H1></A><BR>
CUPS-CMP-1.1<BR>
Easy Software Products<BR>
Copyright 1997-2000, All Rights Reserved<BR>
</CENTER>
<HR>
<H1 ALIGN="CENTER"><A NAME="CONTENTS">Table of Contents</A></H1>
<BR>
<BR><B><A HREF="#1">1 Scope</A></B>
<UL>
<LI><A HREF="#1_1">1.1 Identification</A></LI>
<LI><A HREF="#1_2">1.2 System Overview</A></LI>
<LI><A HREF="#1_3">1.3 Document Overview</A></LI>
</UL>
<B><A HREF="#2">2 References</A></B>
<UL>
<LI><A HREF="#2_1">2.1 CUPS Documentation</A></LI>
<LI><A HREF="#2_2">2.2 Other Documents</A></LI>
</UL>
<B><A HREF="#3">3 File Management</A></B>
<UL>
<LI><A HREF="#3_1">3.1 Directory Structure</A></LI>
<LI><A HREF="#3_2">3.2 Source Files</A></LI>
<LI><A HREF="#3_3">3.3 Configuration Management</A></LI>
</UL>
<B><A HREF="#4">4 Trouble Report Processing</A></B>
<UL>
<LI><A HREF="#4_1">4.1 Classification</A></LI>
<LI><A HREF="#4_2">4.2 Identification</A></LI>
<LI><A HREF="#4_3">4.3 Correction</A></LI>
<LI><A HREF="#4_4">4.4 Notification</A></LI>
</UL>
<B><A HREF="#5">5 Software Releases</A></B>
<UL>
<LI><A HREF="#5_1">5.1 Version Numbering</A></LI>
<LI><A HREF="#5_2">5.2 Generation</A></LI>
<LI><A HREF="#5_3">5.3 Testing</A></LI>
<LI><A HREF="#5_4">5.4 Release</A></LI>
</UL>
<B><A HREF="#6">A Glossary</A></B>
<UL>
<LI><A HREF="#6_1">A.1 Terms</A></LI>
<LI><A HREF="#6_2">A.2 Acronyms</A></LI>
</UL>
<B><A HREF="#7">B Coding Requirements</A></B>
<UL>
<LI><A HREF="#7_1">B.1 Source Files</A></LI>
<UL>
<LI><A HREF="#7_1_1">B.1.1 Naming</A></LI>
<LI><A HREF="#7_1_2">B.1.2 Documentation</A></LI>
</UL>
<LI><A HREF="#7_2">B.2 Functions</A></LI>
<UL>
<LI><A HREF="#7_2_1">B.2.1 Naming</A></LI>
<LI><A HREF="#7_2_2">B.2.2 Documentation</A></LI>
</UL>
<LI><A HREF="#7_3">B.3 Methods</A></LI>
<UL>
<LI><A HREF="#7_3_1">B.3.1 Naming</A></LI>
<LI><A HREF="#7_3_2">B.3.2 Documentation</A></LI>
</UL>
<LI><A HREF="#7_4">B.4 Variables</A></LI>
<UL>
<LI><A HREF="#7_4_1">B.4.1 Naming</A></LI>
<LI><A HREF="#7_4_2">B.4.2 Documentation</A></LI>
</UL>
<LI><A HREF="#7_5">B.5 Types</A></LI>
<UL>
<LI><A HREF="#7_5_1">B.5.1 Naming</A></LI>
<LI><A HREF="#7_5_2">B.5.2 Documentation</A></LI>
</UL>
<LI><A HREF="#7_6">B.6 Structures</A></LI>
<UL>
<LI><A HREF="#7_6_1">B.6.1 Naming</A></LI>
<LI><A HREF="#7_6_2">B.6.2 Documentation</A></LI>
</UL>
<LI><A HREF="#7_7">B.7 Classes</A></LI>
<UL>
<LI><A HREF="#7_7_1">B.7.1 Naming</A></LI>
<LI><A HREF="#7_7_2">B.7.2 Documentation</A></LI>
</UL>
<LI><A HREF="#7_8">B.8 Constants</A></LI>
<UL>
<LI><A HREF="#7_8_1">B.8.1 Naming</A></LI>
<LI><A HREF="#7_8_2">B.8.2 Documentation</A></LI>
</UL>
<LI><A HREF="#7_9">B.9 Code</A></LI>
<UL>
<LI><A HREF="#7_9_1">B.9.1 Documentation</A></LI>
<LI><A HREF="#7_9_2">B.9.2 Style</A></LI>
</UL>
</UL>
<B><A HREF="#8">C Software Trouble Report Form</A></B><HR>
<H1><A NAME="1">1 Scope</A></H1>
<H2><A NAME="1_1">1.1 Identification</A></H2>
This configuration management plan document provides the guidelines
for development and maintenance of the Common UNIX Printing System
(&quot;CUPS&quot;) Version 1.1 software.
<H2><A NAME="1_2">1.2 System Overview</A></H2>
<P> CUPS provides a portable printing layer for UNIX&reg;-based operating
systems. It has been developed by <A HREF="http://www.easysw.com">Easy
Software Products</A> to promote a standard printing solution for all
UNIX vendors and users. CUPS provides the System V and Berkeley
command-line interfaces. </P>
<P> CUPS uses the Internet Printing Protocol (&quot;IPP&quot;) as the basis for
managing print jobs and queues. The Line Printer Daemon (&quot;LPD&quot;) Server
Message Block (&quot;SMB&quot;), and AppSocket (a.k.a. JetDirect) protocols are
also supported with reduced functionality. CUPS adds network printer
browsing and PostScript Printer Description (&quot;PPD&quot;) based printing
options to support real-world printing under UNIX. </P>
<P> CUPS also includes a customized version of GNU Ghostscript
(currently based off GNU Ghostscript 5.50) and an image file RIP that
are used to support non-PostScript printers. Sample drivers for HP and
EPSON printers are included that use these filters. </P>
<H2><A NAME="1_3">1.3 Document Overview</A></H2>
This configuration management document is organized into the following
sections:
<UL>
<LI> 1 - Scope</LI>
<LI> 2 - References</LI>
<LI> 3 - File Management</LI>
<LI> 4 - Trouble Report Processing</LI>
<LI> 5 - Software Releases</LI>
<LI> A - Glossary</LI>
<LI> B - Coding Requirements</LI>
</UL>
<H1><A NAME="2">2 References</A></H1>
<H2><A NAME="2_1">2.1 CUPS Documentation</A></H2>
<P> The following CUPS documentation is referenced by this document: </P>
<UL>
<LI> CUPS-CMP-1.1: CUPS Configuration Management Plan </LI>
<LI> CUPS-IDD-1.1: CUPS System Interface Design Description </LI>
<LI> CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
<LI> CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
<LI> CUPS-SDD-1.1: CUPS Software Design Description </LI>
<LI> CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
<LI> CUPS-SSR-1.1: CUPS Software Security Report </LI>
<LI> CUPS-STP-1.1: CUPS Software Test Plan </LI>
<LI> CUPS-SUM-1.1.x: CUPS Software Users Manual </LI>
<LI> CUPS-SVD-1.1.x: CUPS Software Version Description </LI>
</UL>
<H2><A NAME="2_2">2.2 Other Documents</A></H2>
<P> The following non-CUPS documents are referenced by this document: </P>
<UL>
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf">
Adobe PostScript Printer Description File Format Specification,
Version 4.3.</A></LI>
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf">
Adobe PostScript Language Reference, Third Edition.</A></LI>
<LI> IPP: Job and Printer Set Operations </LI>
<LI> IPP/1.1: Encoding and Transport </LI>
<LI> IPP/1.1: Implementers Guide </LI>
<LI> IPP/1.1: Model and Semantics </LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc1179.txt"> RFC 1179, Line
Printer Daemon Protocol</A></LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc2567.txt"> RFC 2567, Design
Goals for an Internet Printing Protocol</A></LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc2568.txt"> RFC 2568, Rationale
for the Structure of the Model and Protocol</A> for the Internet
Printing Protocol</LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc2569.txt"> RFC 2569, Mapping
between LPD and IPP Protocols</A></LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc2616.txt"> RFC 2616, Hypertext
Transfer Protocol -- HTTP/1.1</A></LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc2617.txt"> RFC 2617, HTTP
Authentication: Basic and Digest Access</A> Authentication </LI>
</UL>
<H1><A NAME="3">3 File Management</A></H1>
<H2><A NAME="3_1">3.1 Directory Structure</A></H2>
Each source file shall be placed a sub-directory corresponding to the
software sub-system it belongs to (&quot;scheduler&quot;, &quot;cups&quot;, etc.) To remain
compatible with older UNIX filesystems, directory names shall not
exceed 16 characters in length.
<H2><A NAME="3_2">3.2 Source Files</A></H2>
Source files shall be documented and formatted as described in
Appendix B, Coding Requirements.
<H2><A NAME="3_3">3.3 Configuration Management</A></H2>
Source files shall be placed under the control of the Concurrent
Versions System (&quot;CVS&quot;) software. Source files shall be &quot;checked in&quot;
with each change so that modifications can be tracked.
<P> Documentation on the CVS software is included with the whitepaper,
&quot;CVS II: Parallelizing Software Development&quot;. </P>
<H1><A NAME="4">4 Trouble Report Processing</A></H1>
A Software Trouble Report (&quot;STR&quot;) shall be submitted every time a user
or vendor experiences a problem with the CUPS software. Trouble reports
are maintained in a database with one of the following states:
<OL>
<LI> STR is closed with complete resolution</LI>
<LI> STR is closed without resolution</LI>
<LI> STR is active</LI>
<LI> STR is pending (new STR or additional information available)</LI>
</OL>
Trouble reports shall be processed using the following steps.
<H2><A NAME="4_1">4.1 Classification</A></H2>
When a trouble report is received it must be classified at one of the
following levels:
<OL>
<LI> Request for enhancement</LI>
<LI> Documentation error</LI>
<LI> Unable to print a file</LI>
<LI> Unable to print to a printer</LI>
<LI> Unable to print at all</LI>
</OL>
The scope of the problem should also be determined as:
<OL>
<LI> Specific to a machine</LI>
<LI> Specific to an operating system</LI>
<LI> Applies to all machines and operating systems</LI>
</OL>
<H2><A NAME="4_2">4.2 Identification</A></H2>
Once the level and scope of the trouble report is determined the
software sub-system(s) involved with the problem are determined. This
may involve additional communication with the user or vendor to isolate
the problem to a specific cause.
<P> When the sub-system(s) involved have been identified, an engineer
will then determine the change(s) needed and estimate the time required
for the change(s). </P>
<H2><A NAME="4_3">4.3 Correction</A></H2>
Corrections are scheduled based upon the severity and complexity of
the problem. Once all changes have been made, documented, and tested
successfully a new software release snapshot is generated. Additional
tests are added as necessary for proper testing of the changes.
<H2><A NAME="4_4">4.4 Notification</A></H2>
The user or vendor is notified when the fix is available or if the
problem was caused by user error.
<H1><A NAME="5">5 Software Releases</A></H1>
<H2><A NAME="5_1">5.1 Version Numbering</A></H2>
CUPS uses a three-part version number separated by periods to
represent the major, minor, and patch release numbers:
<UL>
<PRE>
major.minor.patch
1.1.0
</PRE>
</UL>
Beta-test releases are indentified by appending the letter B followed
by the build number:
<UL>
<PRE>
major.minor.patchbbuild
1.1.0b1
</PRE>
</UL>
A CVS snapshot is generated for every beta and final release and uses
the version number preceded by the letter &quot;v&quot; and with the decimal
points replaced by underscores:
<UL>
<PRE>
v1_0_0b1
v1_0_0
</PRE>
</UL>
Each change that corrects a fault in a software sub-system increments
the patch release number. If a change affects the software design of
CUPS then the minor release number will be incremented and the patch
release number reset to 0. If CUPS is completely redesigned the major
release number will be incremented and the minor and patch release
numbers reset to 0:
<UL>
<PRE>
1.1.0b1 First beta release
1.1.0b2 Second beta release
1.1.0 First production release
1.1.1b1 First beta of 1.1.1
1.1.1 Production release of 1.1.1
1.1.1b1 First beta of 1.1.1
1.1.1 Production release of 1.1.1
2.0.0b1 First beta of 2.0.0
2.0.0 Production release of 2.0.0
</PRE>
</UL>
<H2><A NAME="5_2">5.2 Generation</A></H2>
Software releases shall be generated for each successfully completed
software trouble report. All object and executable files shall be
deleted prior to performing a full build to ensure that source files
are recompiled.
<H2><A NAME="5_3">5.3 Testing</A></H2>
Software testing shall be conducted according to the CUPS Software
Test Plan, CUPS-STP-1.1. Failed tests cause STRs to be generated to
correct the problems found.
<H2><A NAME="5_4">5.4 Release</A></H2>
When testing has been completed successfully a new distribution image
is created from the current CVS code &quot;snapshot&quot;. No production release
shall contain software that has not passed the appropriate software
tests.
<H1 TYPE="A" VALUE="1"><A NAME="6">A Glossary</A></H1>
<H2><A NAME="6_1">A.1 Terms</A></H2>
<DL>
<DT> C </DT>
<DD> A computer language. </DD>
<DT> parallel </DT>
<DD> Sending or receiving data more than 1 bit at a time. </DD>
<DT> pipe </DT>
<DD> A one-way communications channel between two programs. </DD>
<DT> serial </DT>
<DD> Sending or receiving data 1 bit at a time. </DD>
<DT> socket </DT>
<DD> A two-way network communications channel. </DD>
</DL>
<H2><A NAME="6_2">A.2 Acronyms</A></H2>
<DL>
<DT> ASCII </DT>
<DD> American Standard Code for Information Interchange </DD>
<DT> CUPS </DT>
<DD> Common UNIX Printing System </DD>
<DT> ESC/P </DT>
<DD> EPSON Standard Code for Printers </DD>
<DT> FTP </DT>
<DD> File Transfer Protocol </DD>
<DT> HP-GL </DT>
<DD> Hewlett-Packard Graphics Language </DD>
<DT> HP-PCL </DT>
<DD> Hewlett-Packard Printer Control Language </DD>
<DT> HP-PJL </DT>
<DD> Hewlett-Packard Printer Job Language </DD>
<DT> IETF </DT>
<DD> Internet Engineering Task Force </DD>
<DT> IPP </DT>
<DD> Internet Printing Protocol </DD>
<DT> ISO </DT>
<DD> International Standards Organization </DD>
<DT> LPD </DT>
<DD> Line Printer Daemon </DD>
<DT> MIME </DT>
<DD> Multimedia Internet Mail Exchange </DD>
<DT> PCL </DT>
<DD> Page Control Language </DD>
<DT> PPD </DT>
<DD> PostScript Printer Description </DD>
<DT> SMB </DT>
<DD> Server Message Block </DD>
<DT> TFTP </DT>
<DD> Trivial File Transfer Protocol </DD>
</DL>
<H1><A NAME="7">B Coding Requirements</A></H1>
These coding requirements provide detailed information on source file
formatting and documentation content. These guidelines shall be applied
to all C and C++ source files provided with CUPS.
<H2><A NAME="7_1">B.1 Source Files</A></H2>
<H3><A NAME="7_1_1">B.1.1 Naming</A></H3>
All source files names shall be 16 characters or less in length to
ensure compatibility with older UNIX filesystems. Source files
containing functions shall have an extension of &quot;.c&quot; for ANSI C and
&quot;.cxx&quot; for C++ source files. All other &quot;include&quot; files shall have an
extension of &quot;.h&quot;.
<H3><A NAME="7_1_2">B.1.2 Documentation</A></H3>
The top of each source file shall contain a header giving the name of
the file, the purpose or nature of the source file, the copyright and
licensing notice, and the functions contained in the file. The file
name and revision information is provided by the CVS &quot;$Id$&quot; tag:
<UL>
<PRE>
/*
* &quot;36;Id$&quot;
*
* Description of file contents.
*
* Copyright 1997-2000 by Easy Software Products, all rights
* reserved.
*
* These coded instructions, statements, and computer programs are
* the property of Easy Software Products and are protected by
* Federal copyright law. Distribution and use rights are outlined
* in the file &quot;LICENSE.txt&quot; which should have been included with
* this file. If this file is missing or damaged please contact
* Easy Software Products at:
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
* EMail: cups-info@cups.org
* WWW: http://www.cups.org
*
* Contents:
*
* function1() - Description 1.
* function2() - Description 2.
* function3() - Description 3.
*/
</PRE>
</UL>
The bottom of each source file shall contain a trailer giving the name
of the file using the CVS &quot;$Id$&quot; tag. The primary purpose of this is to
mark the end of a source file; if the trailer is missing it is possible
that code has been lost near the end of the file:
<UL>
<PRE>
/*
* End of &quot;36;Id$&quot;.
*/
</PRE>
</UL>
<H2><A NAME="7_2">B.2 Functions</A></H2>
<H3><A NAME="7_2_1">B.2.1 Naming</A></H3>
Functions with a global scope shall be capitalized (&quot;DoThis&quot;,
&quot;DoThat&quot;, &quot;DoSomethingElse&quot;, etc.) The only exception to this rule
shall be the CUPS interface library functions which may begin with a
prefix word in lowercase (&quot;cupsDoThis&quot;, &quot;cupsDoThat&quot;, etc.)
<P> Functions with a local scope shall be declared &quot;static&quot; and be
lowercase with underscores between words (&quot;do_this&quot;, &quot;do_that&quot;,
&quot;do_something_else&quot;, etc.) </P>
<H3><A NAME="7_2_2">B.2.2 Documentation</A></H3>
Each function shall begin with a comment header describing what the
function does, the possible input limits (if any), and the possible
output values (if any), and any special information needed:
<UL>
<PRE>
/*
* 'do_this()' - Compute y = this(x).
*
* Notes: none.
*/
static float /* O - Inverse power value, 0.0 &lt;= y &lt;= 1.1 */
do_this(float x) /* I - Power value (0.0 &lt;= x &lt;= 1.1) */
{
...
return (y);
}
</PRE>
</UL>
<H2><A NAME="7_3">B.3 Methods</A></H2>
<H3><A NAME="7_3_1">B.3.1 Naming</A></H3>
Methods shall be in lowercase with underscores between words
(&quot;do_this&quot;, &quot;do_that&quot;, &quot;do_something_else&quot;, etc.)
<H3><A NAME="7_3_2">B.3.2 Documentation</A></H3>
Each method shall begin with a comment header describing what the
method does, the possible input limits (if any), and the possible
output values (if any), and any special information needed:
<UL>
<PRE>
/*
* 'class::do_this()' - Compute y = this(x).
*
* Notes: none.
*/
float /* O - Inverse power value, 0.0 &lt;= y &lt;= 1.0 */
class::do_this(float x) /* I - Power value (0.0 &lt;= x &lt;= 1.0) */
{
...
return (y);
}
</PRE>
</UL>
<H2><A NAME="7_4">B.4 Variables</A></H2>
<H3><A NAME="7_4_1">B.4.1 Naming</A></H3>
Variables with a global scope shall be capitalized (&quot;ThisVariable&quot;,
&quot;ThatVariable&quot;, &quot;ThisStateVariable&quot;, etc.) The only exception to this
rule shall be the CUPS interface library global variables which must
begin with the prefix &quot;cups&quot; (&quot;cupsThisVariable&quot;, &quot;cupsThatVariable&quot;,
etc.) Global variables shall be replaced by function arguments whenever
possible.
<P> Variables with a local scope shall be lowercase with underscores
between words (&quot;this_variable&quot;, &quot;that_variable&quot;, etc.) Any local
variables shared by functions within a source file shall be declared
&quot;static&quot;. </P>
<H3><A NAME="7_4_2">B.4.2 Documentation</A></H3>
Each variable shall be declared on a separate line and shall be
immediately followed by a comment block describing the variable:
<UL>
<PRE>
int this_variable; /* The current state of this */
int that_variable; /* The current state of that */
</PRE>
</UL>
<H2><A NAME="7_5">B.5 Types</A></H2>
<H3><A NAME="7_5_1">B.5.1 Naming</A></H3>
All type names shall be lowercase with underscores between words and
&quot;_t&quot; appended to the end of the name (&quot;this_type_t&quot;, &quot;that_type_t&quot;,
etc.)
<H3><A NAME="7_5_2">B.5.2 Documentation</A></H3>
Each type shall have a comment block immediately before the typedef:
<UL>
<PRE>
/*
* This type is for CUPS foobar options.
*/
typedef int cups_this_type_t;
</PRE>
</UL>
<H2><A NAME="7_6">B.6 Structures</A></H2>
<H3><A NAME="7_6_1">B.6.1 Naming</A></H3>
All structure names shall be lowercase with underscores between words
and &quot;_str&quot; appended to the end of the name (&quot;this_struct_str&quot;,
&quot;that_struct_str&quot;, etc.)
<H3><A NAME="7_6_2">B.6.2 Documentation</A></H3>
Each structure shall have a comment block immediately before the
struct and each member shall be documented in accordance with the
variable naming policy above:
<UL>
<PRE>
/*
* This structure is for CUPS foobar options.
*/
struct cups_this_struct_str
{
int this_member; /* Current state for this */
int that_member; /* Current state for that */
};
</PRE>
</UL>
<H2><A NAME="7_7">B.7 Classes</A></H2>
<H3><A NAME="7_7_1">B.7.1 Naming</A></H3>
All class names shall be lowercase with underscores between words
(&quot;this_class&quot;, &quot;that_class&quot;, etc.)
<H3><A NAME="7_7_2">B.7.2 Documentation</A></H3>
Each class shall have a comment block immediately before the class and
each member shall be documented in accordance with the variable naming
policy above:
<UL>
<PRE>
/*
* This class is for CUPS foobar options.
*/
class cups_this_class
{
int this_member; /* Current state for this */
int that_member; /* Current state for that */
};
</PRE>
</UL>
<H2><A NAME="7_8">B.8 Constants</A></H2>
<H3><A NAME="7_8_1">B.8.1 Naming</A></H3>
All constant names shall be uppercase with underscored between words
(&quot;THIS_CONSTANT&quot;, &quot;THAT_CONSTANT&quot;, etc.) Constants defined for the CUPS
interface library must begin with an uppercase prefix
(&quot;CUPS_THIS_CONSTANT&quot;, &quot;CUPS_THAT_CONSTANT&quot;, etc.)
<P> Typed enumerations shall be used whenever possible to allow for
type checking by the compiler. </P>
<H3><A NAME="7_8_2">B.8.2 Documentation</A></H3>
Comment blocks shall immediately follow each constant:
<UL>
<PRE>
enum
{
CUPS_THIS_TRAY, /* This tray */
CUPS_THAT_TRAY /* That tray */
};
</PRE>
</UL>
<H2><A NAME="7_9">B.9 Code</A></H2>
<H3><A NAME="7_9_1">B.9.1 Documentation</A></H3>
All source code shall utilize block comments within functions to
describe the operations being performed by a group of statements:
<UL>
<PRE>
/*
* Clear the state array before we begin...
*/
for (i = 0; i &lt; (sizeof(array) / sizeof(sizeof(array[0])); i ++)
array[i] = STATE_IDLE;
/*
* Wait for state changes...
*/
do
{
for (i = 0; i &lt; (sizeof(array) / sizeof(sizeof(array[0])); i ++)
if (array[i] != STATE_IDLE)
break;
if (i == (sizeof(array) / sizeof(array[0])))
sleep(1);
} while (i == (sizeof(array) / sizeof(array[0])));
</PRE>
</UL>
<H3><A NAME="7_9_2">B.9.2 Style</A></H3>
<H4 TYPE="a">B.9.2.a Indentation</H4>
All code blocks enclosed by brackets shall begin with the opening
brace on a new line. The code then follows starting on a new line after
the brace and is indented 2 spaces. The closing brace is then placed on
a new line following the code at the original indentation:
<UL>
<PRE>
{
int i; /* Looping var */
/*
* Process foobar values from 0 to 999...
*/
for (i = 0; i &lt; 1000; i ++)
{
do_this(i);
do_that(i);
}
}
</PRE>
</UL>
Single-line statements following &quot;do&quot;, &quot;else&quot;, &quot;for&quot;, &quot;if&quot;, and
&quot;while&quot; shall be indented 2 spaces as well. Blocks of code in a
&quot;switch&quot; block shall be indented 4 spaces after each &quot;case&quot; and
&quot;default&quot; case:
<UL>
<PRE>
switch (array[i])
{
case STATE_IDLE :
do_this(i);
do_that(i);
break;
default :
do_nothing(i);
break;
}
</PRE>
</UL>
<H4>B.9.2.b Spacing</H4>
A space shall follow each reserved word (&quot;if&quot;, &quot;while&quot;, etc.) Spaces
shall not be inserted between a function name and the arguments in
parenthesis.
<H4>B.9.2.c Return Values</H4>
Parenthesis shall surround values returned from a function using
&quot;return&quot;:
<UL>
<PRE>
return (STATE_IDLE);
</PRE>
</UL>
<H4>B.9.2.d Loops</H4>
Whenever convenient loops should count downward to zero to improve
program performance:
<UL>
<PRE>
for (i = sizeof(array) / sizeof(array[0]) - 1; i &gt;= 0; i --)
array[i] = STATE_IDLE;
</PRE>
</UL>
<H1 ALIGN="RIGHT"><A NAME="8">C Software Trouble Report Form</A></H1>
<CENTER>
<TABLE WIDTH="80%">
<TR><TH ALIGN="RIGHT"> Summary of Problem:</TH><TD ALIGN="LEFT">
________________________________________</TD></TR>
<TR><TH ALIGN="RIGHT"> Problem Severity:</TH><TD ALIGN="LEFT"> __1=RFE
<BR> __2=Documentation-Error
<BR> __3=Unable-to-Print-a-File
<BR> __4=Unable-to-Print-to-a-Printer
<BR> __5=Unable-to-Print-at-All</TD></TR>
<TR><TH ALIGN="RIGHT"> Problem Scope:</TH><TD ALIGN="LEFT"> __1=Machine
__2=Operating-System __3=All</TD></TR>
<TR><TH ALIGN="RIGHT" VALIGN="TOP"> Detailed Description of Problem:</TH><TD
ALIGN="LEFT"> ________________________________________
<BR> ________________________________________
<BR> ________________________________________
<BR> ________________________________________
<BR> ________________________________________
<BR> ________________________________________</TD></TR>
</TABLE>
</CENTER>
</BODY>
</HTML>
+830
Ver Arquivo
@@ -0,0 +1,830 @@
%PDF-1.2
%âãÏÓ
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000705214846Z)/Title( CUPS Configuration Management Plan)/Author(Easy Software Products)>>endobj
2 0 obj<</Type/Encoding/Differences[ 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma/minus/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/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/bracketleft/backslash/bracketright/asciicircum/underscore/grave/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/braceleft/bar/braceright/asciitilde 128/Euro 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 159/Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Roman/Encoding 2 0 R>>endobj
5 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Bold/Encoding 2 0 R>>endobj
6 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Italic/Encoding 2 0 R>>endobj
7 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica/Encoding 2 0 R>>endobj
8 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica-Bold/Encoding 2 0 R>>endobj
9 0 obj<</Type/Font/Subtype/Type1/BaseFont/Symbol>>endobj
10 0 obj<</S/URI/URI(http://www.easysw.com)>>endobj
11 0 obj<</Subtype/Link/Rect[533.8 577.0 555.2 590.0]/Border[0 0 0]/A 10 0 R>>endobj
12 0 obj<</S/URI/URI(http://www.easysw.com)>>endobj
13 0 obj<</Subtype/Link/Rect[72.0 563.8 153.0 576.8]/Border[0 0 0]/A 12 0 R>>endobj
14 0 obj[11 0 R
13 0 R
]endobj
15 0 obj<</S/URI/URI(http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf)>>endobj
16 0 obj<</Subtype/Link/Rect[108.0 418.6 190.8 431.6]/Border[0 0 0]/A 15 0 R>>endobj
17 0 obj<</S/URI/URI(http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf)>>endobj
18 0 obj<</Subtype/Link/Rect[188.1 418.6 433.1 431.6]/Border[0 0 0]/A 17 0 R>>endobj
19 0 obj<</S/URI/URI(http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf)>>endobj
20 0 obj<</Subtype/Link/Rect[430.3 418.6 446.8 431.6]/Border[0 0 0]/A 19 0 R>>endobj
21 0 obj<</S/URI/URI(http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf)>>endobj
22 0 obj<</Subtype/Link/Rect[108.0 405.4 190.8 418.4]/Border[0 0 0]/A 21 0 R>>endobj
23 0 obj<</S/URI/URI(http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf)>>endobj
24 0 obj<</Subtype/Link/Rect[188.1 405.4 346.6 418.4]/Border[0 0 0]/A 23 0 R>>endobj
25 0 obj<</S/URI/URI(http://www.ietf.org/rfc/rfc1179.txt)>>endobj
26 0 obj<</Subtype/Link/Rect[108.0 339.4 291.9 352.4]/Border[0 0 0]/A 25 0 R>>endobj
27 0 obj<</S/URI/URI(http://www.ietf.org/rfc/rfc2567.txt)>>endobj
28 0 obj<</Subtype/Link/Rect[108.0 326.2 362.5 339.2]/Border[0 0 0]/A 27 0 R>>endobj
29 0 obj<</S/URI/URI(http://www.ietf.org/rfc/rfc2568.txt)>>endobj
30 0 obj<</Subtype/Link/Rect[108.0 313.0 394.3 326.0]/Border[0 0 0]/A 29 0 R>>endobj
31 0 obj<</S/URI/URI(http://www.ietf.org/rfc/rfc2569.txt)>>endobj
32 0 obj<</Subtype/Link/Rect[108.0 299.8 343.3 312.8]/Border[0 0 0]/A 31 0 R>>endobj
33 0 obj<</S/URI/URI(http://www.ietf.org/rfc/rfc2616.txt)>>endobj
34 0 obj<</Subtype/Link/Rect[108.0 286.6 345.3 299.6]/Border[0 0 0]/A 33 0 R>>endobj
35 0 obj<</S/URI/URI(http://www.ietf.org/rfc/rfc2617.txt)>>endobj
36 0 obj<</Subtype/Link/Rect[108.0 273.4 368.9 286.4]/Border[0 0 0]/A 35 0 R>>endobj
37 0 obj[16 0 R
18 0 R
20 0 R
22 0 R
24 0 R
26 0 R
28 0 R
30 0 R
32 0 R
34 0 R
36 0 R
]endobj
38 0 obj<</Subtype/Link/Rect[72.0 670.8 107.8 683.8]/Border[0 0 0]/Dest[157 0 R/XYZ null 798 0]>>endobj
39 0 obj<</Subtype/Link/Rect[108.0 657.6 183.8 670.6]/Border[0 0 0]/Dest[157 0 R/XYZ null 745 0]>>endobj
40 0 obj<</Subtype/Link/Rect[108.0 644.4 203.0 657.4]/Border[0 0 0]/Dest[157 0 R/XYZ null 672 0]>>endobj
41 0 obj<</Subtype/Link/Rect[108.0 631.2 216.4 644.2]/Border[0 0 0]/Dest[157 0 R/XYZ null 467 0]>>endobj
42 0 obj<</Subtype/Link/Rect[72.0 604.8 131.6 617.8]/Border[0 0 0]/Dest[163 0 R/XYZ null 798 0]>>endobj
43 0 obj<</Subtype/Link/Rect[108.0 591.6 222.6 604.6]/Border[0 0 0]/Dest[163 0 R/XYZ null 745 0]>>endobj
44 0 obj<</Subtype/Link/Rect[108.0 578.4 202.4 591.4]/Border[0 0 0]/Dest[163 0 R/XYZ null 540 0]>>endobj
45 0 obj<</Subtype/Link/Rect[72.0 552.0 162.4 565.0]/Border[0 0 0]/Dest[169 0 R/XYZ null 798 0]>>endobj
46 0 obj<</Subtype/Link/Rect[108.0 538.8 209.7 551.8]/Border[0 0 0]/Dest[169 0 R/XYZ null 745 0]>>endobj
47 0 obj<</Subtype/Link/Rect[108.0 525.6 179.2 538.6]/Border[0 0 0]/Dest[169 0 R/XYZ null 659 0]>>endobj
48 0 obj<</Subtype/Link/Rect[108.0 512.4 246.4 525.4]/Border[0 0 0]/Dest[169 0 R/XYZ null 599 0]>>endobj
49 0 obj<</Subtype/Link/Rect[72.0 486.0 206.7 499.0]/Border[0 0 0]/Dest[175 0 R/XYZ null 798 0]>>endobj
50 0 obj<</Subtype/Link/Rect[108.0 472.8 185.0 485.8]/Border[0 0 0]/Dest[175 0 R/XYZ null 626 0]>>endobj
51 0 obj<</Subtype/Link/Rect[108.0 459.6 183.8 472.6]/Border[0 0 0]/Dest[175 0 R/XYZ null 434 0]>>endobj
52 0 obj<</Subtype/Link/Rect[108.0 446.4 171.5 459.4]/Border[0 0 0]/Dest[175 0 R/XYZ null 308 0]>>endobj
53 0 obj<</Subtype/Link/Rect[108.0 433.2 177.7 446.2]/Border[0 0 0]/Dest[175 0 R/XYZ null 222 0]>>endobj
54 0 obj<</Subtype/Link/Rect[72.0 406.8 164.9 419.8]/Border[0 0 0]/Dest[181 0 R/XYZ null 798 0]>>endobj
55 0 obj<</Subtype/Link/Rect[108.0 393.6 212.2 406.6]/Border[0 0 0]/Dest[181 0 R/XYZ null 745 0]>>endobj
56 0 obj<</Subtype/Link/Rect[108.0 380.4 173.4 393.4]/Border[0 0 0]/Dest[181 0 R/XYZ null 325 0]>>endobj
57 0 obj<</Subtype/Link/Rect[108.0 367.2 157.5 380.2]/Border[0 0 0]/Dest[181 0 R/XYZ null 252 0]>>endobj
58 0 obj<</Subtype/Link/Rect[108.0 354.0 158.7 367.0]/Border[0 0 0]/Dest[181 0 R/XYZ null 179 0]>>endobj
59 0 obj<</Subtype/Link/Rect[72.0 327.6 124.2 340.6]/Border[0 0 0]/Dest[187 0 R/XYZ null 798 0]>>endobj
60 0 obj<</Subtype/Link/Rect[108.0 314.4 155.0 327.4]/Border[0 0 0]/Dest[187 0 R/XYZ null 745 0]>>endobj
61 0 obj<</Subtype/Link/Rect[108.0 301.2 172.8 314.2]/Border[0 0 0]/Dest[187 0 R/XYZ null 566 0]>>endobj
62 0 obj<</Subtype/Link/Rect[72.0 274.8 185.1 287.8]/Border[0 0 0]/Dest[193 0 R/XYZ null 798 0]>>endobj
63 0 obj<</Subtype/Link/Rect[108.0 261.6 181.0 274.6]/Border[0 0 0]/Dest[193 0 R/XYZ null 706 0]>>endobj
64 0 obj<</Subtype/Link/Rect[144.0 248.4 206.0 261.4]/Border[0 0 0]/Dest[193 0 R/XYZ null 657 0]>>endobj
65 0 obj<</Subtype/Link/Rect[144.0 235.2 238.4 248.2]/Border[0 0 0]/Dest[193 0 R/XYZ null 574 0]>>endobj
66 0 obj<</Subtype/Link/Rect[108.0 222.0 169.7 235.0]/Border[0 0 0]/Dest[196 0 R/XYZ null 737 0]>>endobj
67 0 obj<</Subtype/Link/Rect[144.0 208.8 206.0 221.8]/Border[0 0 0]/Dest[196 0 R/XYZ null 688 0]>>endobj
68 0 obj<</Subtype/Link/Rect[144.0 195.6 238.4 208.6]/Border[0 0 0]/Dest[196 0 R/XYZ null 566 0]>>endobj
69 0 obj<</Subtype/Link/Rect[108.0 182.4 164.8 195.4]/Border[0 0 0]/Dest[196 0 R/XYZ null 369 0]>>endobj
70 0 obj<</Subtype/Link/Rect[144.0 169.2 206.0 182.2]/Border[0 0 0]/Dest[196 0 R/XYZ null 320 0]>>endobj
71 0 obj<</Subtype/Link/Rect[144.0 156.0 238.4 169.0]/Border[0 0 0]/Dest[196 0 R/XYZ null 250 0]>>endobj
72 0 obj<</Subtype/Link/Rect[108.0 142.8 168.5 155.8]/Border[0 0 0]/Dest[199 0 R/XYZ null 726 0]>>endobj
73 0 obj<</Subtype/Link/Rect[144.0 129.6 206.0 142.6]/Border[0 0 0]/Dest[199 0 R/XYZ null 678 0]>>endobj
74 0 obj<</Subtype/Link/Rect[144.0 116.4 238.4 129.4]/Border[0 0 0]/Dest[199 0 R/XYZ null 542 0]>>endobj
75 0 obj<</Subtype/Link/Rect[108.0 103.2 153.2 116.2]/Border[0 0 0]/Dest[199 0 R/XYZ null 452 0]>>endobj
76 0 obj<</Subtype/Link/Rect[144.0 90.0 206.0 103.0]/Border[0 0 0]/Dest[199 0 R/XYZ null 404 0]>>endobj
77 0 obj<</Subtype/Link/Rect[144.0 76.8 238.4 89.8]/Border[0 0 0]/Dest[199 0 R/XYZ null 334 0]>>endobj
78 0 obj<</Subtype/Link/Rect[108.0 63.6 170.9 76.6]/Border[0 0 0]/Dest[199 0 R/XYZ null 236 0]>>endobj
79 0 obj[38 0 R
39 0 R
40 0 R
41 0 R
42 0 R
43 0 R
44 0 R
45 0 R
46 0 R
47 0 R
48 0 R
49 0 R
50 0 R
51 0 R
52 0 R
53 0 R
54 0 R
55 0 R
56 0 R
57 0 R
58 0 R
59 0 R
60 0 R
61 0 R
62 0 R
63 0 R
64 0 R
65 0 R
66 0 R
67 0 R
68 0 R
69 0 R
70 0 R
71 0 R
72 0 R
73 0 R
74 0 R
75 0 R
76 0 R
77 0 R
78 0 R
]endobj
80 0 obj<</Subtype/Link/Rect[108.0 670.8 170.0 683.8]/Border[0 0 0]/Dest[199 0 R/XYZ null 188 0]>>endobj
81 0 obj<</Subtype/Link/Rect[108.0 657.6 202.4 670.6]/Border[0 0 0]/Dest[202 0 R/XYZ null 768 0]>>endobj
82 0 obj<</Subtype/Link/Rect[72.0 644.4 123.3 657.4]/Border[0 0 0]/Dest[202 0 R/XYZ null 613 0]>>endobj
83 0 obj<</Subtype/Link/Rect[108.0 631.2 170.0 644.2]/Border[0 0 0]/Dest[202 0 R/XYZ null 565 0]>>endobj
84 0 obj<</Subtype/Link/Rect[108.0 618.0 202.4 631.0]/Border[0 0 0]/Dest[202 0 R/XYZ null 508 0]>>endobj
85 0 obj<</Subtype/Link/Rect[72.0 604.8 133.7 617.8]/Border[0 0 0]/Dest[202 0 R/XYZ null 354 0]>>endobj
86 0 obj<</Subtype/Link/Rect[108.0 591.6 170.0 604.6]/Border[0 0 0]/Dest[202 0 R/XYZ null 306 0]>>endobj
87 0 obj<</Subtype/Link/Rect[108.0 578.4 202.4 591.4]/Border[0 0 0]/Dest[202 0 R/XYZ null 196 0]>>endobj
88 0 obj<</Subtype/Link/Rect[72.0 565.2 113.6 578.2]/Border[0 0 0]/Dest[205 0 R/XYZ null 759 0]>>endobj
89 0 obj<</Subtype/Link/Rect[108.0 552.0 202.4 565.0]/Border[0 0 0]/Dest[205 0 R/XYZ null 710 0]>>endobj
90 0 obj<</Subtype/Link/Rect[108.0 538.8 157.2 551.8]/Border[0 0 0]/Dest[205 0 R/XYZ null 411 0]>>endobj
91 0 obj<</Subtype/Link/Rect[36.0 512.4 194.2 525.4]/Border[0 0 0]/Dest[211 0 R/XYZ null 798 0]>>endobj
92 0 obj[80 0 R
81 0 R
82 0 R
83 0 R
84 0 R
85 0 R
86 0 R
87 0 R
88 0 R
89 0 R
90 0 R
91 0 R
]endobj
93 0 obj<</Dests 94 0 R>>endobj
94 0 obj<</Kids[95 0 R]>>endobj
95 0 obj<</Limits[(1)(cmp.shtml)]/Names[(1)96 0 R(1_1)97 0 R(1_2)98 0 R(1_3)99 0 R(2)100 0 R(2_1)101 0 R(2_2)102 0 R(3)103 0 R(3_1)104 0 R(3_2)105 0 R(3_3)106 0 R(4)107 0 R(4_1)108 0 R(4_2)109 0 R(4_3)110 0 R(4_4)111 0 R(5)112 0 R(5_1)113 0 R(5_2)114 0 R(5_3)115 0 R(5_4)116 0 R(6)117 0 R(6_1)118 0 R(6_2)119 0 R(7)120 0 R(7_1)121 0 R(7_1_1)122 0 R(7_1_2)123 0 R(7_2)124 0 R(7_2_1)125 0 R(7_2_2)126 0 R(7_3)127 0 R(7_3_1)128 0 R(7_3_2)129 0 R(7_4)130 0 R(7_4_1)131 0 R(7_4_2)132 0 R(7_5)133 0 R(7_5_1)134 0 R(7_5_2)135 0 R(7_6)136 0 R(7_6_1)137 0 R(7_6_2)138 0 R(7_7)139 0 R(7_7_1)140 0 R(7_7_2)141 0 R(7_8)142 0 R(7_8_1)143 0 R(7_8_2)144 0 R(7_9)145 0 R(7_9_1)146 0 R(7_9_2)147 0 R(8)148 0 R(cmp.shtml)149 0 R]>>endobj
96 0 obj<</D[157 0 R/XYZ null 798 null]>>endobj
97 0 obj<</D[157 0 R/XYZ null 745 null]>>endobj
98 0 obj<</D[157 0 R/XYZ null 672 null]>>endobj
99 0 obj<</D[157 0 R/XYZ null 467 null]>>endobj
100 0 obj<</D[163 0 R/XYZ null 798 null]>>endobj
101 0 obj<</D[163 0 R/XYZ null 745 null]>>endobj
102 0 obj<</D[163 0 R/XYZ null 540 null]>>endobj
103 0 obj<</D[169 0 R/XYZ null 798 null]>>endobj
104 0 obj<</D[169 0 R/XYZ null 745 null]>>endobj
105 0 obj<</D[169 0 R/XYZ null 659 null]>>endobj
106 0 obj<</D[169 0 R/XYZ null 599 null]>>endobj
107 0 obj<</D[175 0 R/XYZ null 798 null]>>endobj
108 0 obj<</D[175 0 R/XYZ null 626 null]>>endobj
109 0 obj<</D[175 0 R/XYZ null 434 null]>>endobj
110 0 obj<</D[175 0 R/XYZ null 308 null]>>endobj
111 0 obj<</D[175 0 R/XYZ null 222 null]>>endobj
112 0 obj<</D[181 0 R/XYZ null 798 null]>>endobj
113 0 obj<</D[181 0 R/XYZ null 745 null]>>endobj
114 0 obj<</D[181 0 R/XYZ null 325 null]>>endobj
115 0 obj<</D[181 0 R/XYZ null 252 null]>>endobj
116 0 obj<</D[181 0 R/XYZ null 179 null]>>endobj
117 0 obj<</D[187 0 R/XYZ null 798 null]>>endobj
118 0 obj<</D[187 0 R/XYZ null 745 null]>>endobj
119 0 obj<</D[187 0 R/XYZ null 566 null]>>endobj
120 0 obj<</D[193 0 R/XYZ null 798 null]>>endobj
121 0 obj<</D[193 0 R/XYZ null 706 null]>>endobj
122 0 obj<</D[193 0 R/XYZ null 657 null]>>endobj
123 0 obj<</D[193 0 R/XYZ null 574 null]>>endobj
124 0 obj<</D[196 0 R/XYZ null 737 null]>>endobj
125 0 obj<</D[196 0 R/XYZ null 688 null]>>endobj
126 0 obj<</D[196 0 R/XYZ null 566 null]>>endobj
127 0 obj<</D[196 0 R/XYZ null 369 null]>>endobj
128 0 obj<</D[196 0 R/XYZ null 320 null]>>endobj
129 0 obj<</D[196 0 R/XYZ null 250 null]>>endobj
130 0 obj<</D[199 0 R/XYZ null 726 null]>>endobj
131 0 obj<</D[199 0 R/XYZ null 678 null]>>endobj
132 0 obj<</D[199 0 R/XYZ null 542 null]>>endobj
133 0 obj<</D[199 0 R/XYZ null 452 null]>>endobj
134 0 obj<</D[199 0 R/XYZ null 404 null]>>endobj
135 0 obj<</D[199 0 R/XYZ null 334 null]>>endobj
136 0 obj<</D[199 0 R/XYZ null 236 null]>>endobj
137 0 obj<</D[199 0 R/XYZ null 188 null]>>endobj
138 0 obj<</D[202 0 R/XYZ null 768 null]>>endobj
139 0 obj<</D[202 0 R/XYZ null 613 null]>>endobj
140 0 obj<</D[202 0 R/XYZ null 565 null]>>endobj
141 0 obj<</D[202 0 R/XYZ null 508 null]>>endobj
142 0 obj<</D[202 0 R/XYZ null 354 null]>>endobj
143 0 obj<</D[202 0 R/XYZ null 306 null]>>endobj
144 0 obj<</D[202 0 R/XYZ null 196 null]>>endobj
145 0 obj<</D[205 0 R/XYZ null 759 null]>>endobj
146 0 obj<</D[205 0 R/XYZ null 710 null]>>endobj
147 0 obj<</D[205 0 R/XYZ null 411 null]>>endobj
148 0 obj<</D[211 0 R/XYZ null 798 null]>>endobj
149 0 obj<</D[160 0 R/XYZ null 698 null]>>endobj
150 0 obj<</Type/Pages/MediaBox[0 0 595 792]/Count 24/Kids[151 0 R
154 0 R
217 0 R
220 0 R
157 0 R
160 0 R
163 0 R
166 0 R
169 0 R
172 0 R
175 0 R
178 0 R
181 0 R
184 0 R
187 0 R
190 0 R
193 0 R
196 0 R
199 0 R
202 0 R
205 0 R
208 0 R
211 0 R
214 0 R
]>>endobj
151 0 obj<</Type/Page/Parent 150 0 R/Contents 152 0 R/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
152 0 obj<</Length 153 0 R/Filter/FlateDecode>>stream
xÚìÏsë8rÇIŠºÌ‰öŒî´üt§çyšÝ­ÚJñÙfvçÖ$ÁÊ!•S*Ç6•üÿ±~X"H€èn$è5¦jêÙE|ˆÆ·@ƒúÇOßòýÛßò?=å¿ýžÿçÿô,~*ÅOÿÈÛÿù×?þøÛï¿ÿºÏÿü—_Ÿò§§§·kýñõ¥ù÷¯|­ÿöœþº?•ßNå÷SùË©¼œÊ¿žÊ¿üÇ×?òÿýŸÿû¯¯ÿ–ÿíÛ׿ç‡oß¾>ÃKþ=ÿãõ§öcøä²+âõi»Ý>ÜËÛ?¶ß_—Î%^¶wY¤*w÷¯ËäOÜöû¸ē‰é½Ü?–KáÂC]о/ëå!"—x[ÎõœE¼r˜ë‰KåÒ!˜¾rÛg޹^òȾü\ÆÕ<DNJü×Sä¬$‡`¸D¹,pYë…Û.sÄ%"ç%þ2;W“E>ÊÏ3s=GžJRÎÉõ-òVâÃl\ŽuÐõV¾ÌÂ%²(
 B¹ü29×$X,0X –€Åƒ %ƒ/° ¬(ÚMÄåÝoÙ9h6×ÄXo`å\ûhò’LÀõ#𡬼sÕÑ,åÏ\M6A!|…gi,A
Ú Ñ ê£s5Ѭåà‹+›— 9Ä`™ãÅ`ž‹,öD.1?V{àÊàŠRç\uD98æY\‰c®}HÙ8媣`Jé++D91WTθš°ŒÒË ‹Š4ðZåªBÃ2t,OãQ ÔxŒsÆq‰±FãzX¢Æ#F,Ï%£FL×]w÷Ûí—×cy>|ðÛa0IwÅ÷_†ƒüxÂ[‡ÿîŠG’þÅ˃ŸßÝuoœ*=[ í,¸ö~ºªÛk[ça=xì.Bú±àæØ\ìPƒ–.Î$[q¹¸¡==·aMJ&³»XéÔœ.K™\¬@ž› É貘ÇUùÑv‡]¶cqeSÙàÕ›eN¤ܯjؤ½s’  ®|²¡ÅϼJé\Í Xd°˜ÎEùØÍÉÜZ9ƹfÂ"‚­¨\Õ FÈ1ŒȕυEÛи' –Y¹0p7ñú¥uZj+Cg‘¼c,Òé« …«rÎX•½ÅÍÁ‘jÄ¥{.B J<—°ÒlKÃ7D=Ì:¸ÎåÛÁÉ %i=•œkˆàBf½ .Ú`Ø`¹Š¹2O”,Á W­Ç’ó ìÍПR4q‡ãÚa…„–¤8®´&1Š«žÙ#3ì€á«aÚz/8 [c¸²0Dƒ¢õ ‚«æfóuXiæ*B J‡íÌ\Y OjOjäªÃê.d‡%F®"°îBú°ÒÄ•Ö]È'½1p5Á¸dZ“RW\wá¢ÄÄÀ•6ºÐRVŽr‰» 7æw£\u€Ý…[FJG¹*OŠ…²¢d”+ (2$*ÇVå'ÆB ÃRåÓ©¹Z “s! q5ÂÀÚÛ=W¢È£­ÔrAˆ"v@;-W¨jàLi­ã¡ªnè¯t\5-4”=Ùí§ž±¿ÿ.Ï´’T¹Æúù=¾aÀ
¢6(®–KH·Kh%ºÖRÕÓbQ®•–ër›®Îa‡Àà ¯Çé¹ £^ >ÜÌÑ–œáµCrí´\MçùÖ 1£$UsÑys¥Z®³í%·NH)}¢æÊ‰Îkœ+ÑsÝ´BPf=ègŒàp‡åz7.×MÛk¼b”¾Tq5ÔÊÀµÑrÝD° ¬•T؇ô¹WŠçZ鹊÷G”Q&ß V<×–ByW¤çª/ŸÕPÌ1PRWF4C#×NËu¾×úü+ü’QØV
.A5C#WªçÚŸòáªÕr[¬àª©fhäŠõ\盽§5Rì•K,×êZ[Éu6Ž;êÊ12BªWNZ,×:{—'%WG¤(³ÔgO@• ž«x j®Š5K5†ˆëWC6Ãq®ZÂp ÖbI…Ó5 ÊFÒâ¹Ä»Y¨¹®&EZ,ip-â\9%pžê¹*Öš(;
\n£á¬5;c+\ŒôÅq®æ"
®K‰kvª‰@“¤¥pµ¥×qgéB™ÐdcMãº(½Ž«àôWòD@“ë¢ô:®Œ3¾êÙwCÅuQz WÍÛÃÈ0 ¤h#!r]”^ÃUðûMÏ%s Æð2r•^Õñ6g
ÌÃlì¨\g¥Ws5Ì]Œ
㘴¶ÑR¹ÎJ¯æ½ØER2WÁ^f®“Ò«¹rfæŽÀ8f DQ)ëdÝ…~^¹e¢IàkSYŽ­\§Öç*®³Ý FÈ‘#š ”(ªT?º²k ±ÌukDŸ+?krN7Ä="àV̵ë>š>h¸Þ;а›‚]†Yw¹k6+IlºŠšô¸ Wuáiè†X!dr¸Ñ˜ÄjøCýsȵèÝJ´§•¸rŽlH[âã‹:\…’K\[°'¢@Ø¢C­€]Ÿ«VrU×Ê=öEèà£ÃDïû¯´ùÖÕÌŸêsí¯#èùVž«áxåÛ-â;^WÈ\OÌɱonn0¾d=äª\ÝT”‚lˆ{ó€¼0ÚT¹WWojò$ ð\{–l lbÕ¹.¶*qeÝKž„‰×ñÒáÊY²Ñ˜×Ó{Šyq—KΈÚ{ÈhzªX¯üPy8Å:F—« »òúh9ÔNþnï5ùÒ*¹Ä€+“,¯ñª è¨Wo'ÍéŧñýGH©\SßËy°†ÇeŽæãvQ°2Ÿ,+çEQÁse¼(*t.a#‡s5–r*WÍçª>š^¸
vt6מÍ•4™¿peM/\œ¥ùp‰'óg®úÃÉ<–kÎ-‡Í‹ó·•Ü:\[æ»uîªßFwÒ²ßmµwpœOm›.Ò,²Î-ï\·u›þà,•\×FÍÕI¿\¹r¶ûRãkT§×ćk¥äjÔûËÛ}©4fÜkbÄኔ\¹zß¿h£¶W]nj¯‰;×NÁU UPn9Ár­4áËNÅ•r¸RW6|ŒŽ¹Î«Ëë51áp%C®wшﲫÝÊ-§h®š+Vqõó¡¸g¯r~ô'/ÙÅlp\ëQ®Ó¿^òHjÁZv,¥Šk£tEr<Џ¨ëdÞ7ÛnlÌ\—᯻?"éx@·‰+×à¢Zr—Ûj{‡àꤥÈ]|Ëíé71âp .7.y<€
£®[‘"K~­lâŽÃÕ¿(—óM
-áðì8—Ðpz®”ÃÕ¿¨7RNf™*Œj1\·Ùÿj®˜ÃÕ»¨ðTà¹b\Šã|f.ÅEußÁnßÊ#`ÂÃÄžk¨Šã|f.ÝÀT5_ŽÜp ×^­óŠã|®áE…ÒÁ&ŒJ[=Ì®9·r‡Çù\Ër¥#Bq­Q\µÚÕš8JqœÁ5¼HËU;â*”ñÆË- é5qxœÁ5¼(S:"×Ã%¢"ÎSÇù0\ƒ‹´\?Œê´áò;ô¼RqœÃ5¸¨[ývGסµœm”MçÃp .Òr?ŒjÕ£YU4ñ"Ú4®þE\-š+Uý6.5MìçCqõ/Òr¹ê^,ÕMìçCqõ/Òríùáa«68Íòþ ‰ýã|(®þEY/MõÊ•;ãŠK W'T•šØ;·ãê]ÄçJ\ñ®óÛ‹_¾,{lÔMìçÃqõ.Ê;Š-qen¸:ù‡Ýxã¼ì‘ª›Ø;·ãê]4ˆ£*,WÚâæ)­Š«ó~(EO¢Må’/Ú÷#¢âÂùåªÇ¸äã|H.ÅÀn÷X®µW£‹ç¯AeNä’/ªúC%;s Ï\BsŠCqœÉ%_T÷$[DX®W;Ê.é"Ñ Í« ¸—|Q&°üÂeÎ=Üyä’Žóa¹ä‹
E2þW=/WÁá’.ªn»Ê·EÞÙ¹j—t‘è¶²¾Æ6ÓJ\‚Ã%_”ßö¿ž#Wé“«{œÍ%_T ö+Càª8\òE½H0?qÙL—Q\Ù8WÃá’/gÆé>®Îq><Wï"©ÃÊbB®ƒ¾‰‡K¾HN#‚—qy#¶äÊ£îíZðS¹zýèN«i¸®oÐ4Qp¸ú=w–"p…S^Nù‡?ßÞ?oäZJ¬èžó2Ûâr{Ï\ù'×'׸V”+]&WöÉõÉõÉõÉõÉ…ãZr}rùçŠì¹Þf>ès¥”ºór=ŸÞa?bšK©;3×Cÿøšü²¡ÎæuÕ»êªHqPJÛ:k®|¾!çéw·§†u\y1Ô×áŒF~™WsÛìø9QeäÚÉÔ—Pì(É/4¬®KüuòÈȵ™‚ TSë¼;Àz齺 ®u+ M?\™j« ºã “Òdúu\©l)^¸š÷§»nÝî«ko»õʺ ®Dºµ®êºQ(¾unÚ‘À[v…².Ÿ«öÉUtv¬÷7ïÒqY·äsM]Õ2¿ú®òöNå“+ª›v^Ȭ©K㊯ۧoƒ8ñÆ•u—áòžÒߌ§©KãJ®£0qÙÄóÒŸá¦×VËIÚªº$®Õõq¼=™t®êöÓ5ä$mU]WÚ}tk;.CúáõÏÍÝ[ÙtĪ윑Ò×%qÏ]ÓÆ+W¢ûѧ“T<¶ÔçÊ/ƒô8„wÞ¸2]:ÎeO¹éÀd#©;x®ýåóŽŸ|ðÆuŽš¸1‘†‘¶.‰«¸ÈÐÑÒKo\—½Îûƒ:À:eR¼Ë¹¶.‰ nÙ¯qëë¢Z{þ⇬ã‹õu•\ÃÄÎEu¯G÷å«“Òkmñîm®¾X_—ÂU_ `ü`;®±}½n=é½ÄÕ0V[—ÂÕ\~<ºeK®±}ØByŽCš—ƺ.]_ˆ¾ç²Ú_ÚÌÒ|Õ¢¯Kàj/Žùô[\½,Ú¸ôdЍKá:;æ“[öÉÕyÑ–L¡ú’9]]
×Ù1×'ï“ëý ì —J•l:ZÇuvÌõ©¾—1ïë9Sš\ùPÔuñ~ùäËãÿc—‹|¶—‡á¤¦ÒLrTu \ÕÉOnÙ?×­µ«^(u@Õ%póÉ-OÁõ.
‰vÐŒÕ%póÉ-[raß-Z‹ÁX]—x÷b멸n‰×f®^]×Ù1ŸEr”Ë&ûø*™ìе\cu)\o&˜4·õS/\²{ãb§®.…ëM2âúì-¹JÜú¡k¬.…ëØÓUt}Q7®D²­x”KW—Âçð±‰ËæÜM.ý9Õù±º®ê|²&±çÚO¿6ÝyÈJË5V—ÂUßœº7®ªÛŸûÞmz«Kájn³Q.›sˆçkãï·M­–k¬®!ž—Þ¶%ä]A ®qö¶ ©Ÿ,ŽÕ¥puÞ ë«™«õ¹Fê’¸r—Õ¹ìf¤jŸk¤.ƒ«´çZãÒmú¡ÿ VÑ×%qƒßxàjô
3àj¸ëQ2\ŸÊ(—Õû7䵘_ÚQ.}]—îý¬n¹:}l \Úº$®úêÓǹ¬²Þè!Ón”ØÔµ*–ïí¹Ê×ëMóU|–ïY
¶X¾ë“kz.óë–—ÉUüÓr•‹ä2/pÉe3aþäšžËjb¹h®õ"¹Ä?-WºH.ólõA¹’ere0ðµü>ŽO®¸ö0ðÅ}Ïn‘\ðA¹ª Z~¯Ù\Åô²×å÷ÐÍULMÞá¾70¸@ªrÃ\ e’ºÒò{9ç*Š+[\Àa
%°ß{ZÀ‘›ì ù=Å¡­´e&=@~¯thG„â‚¥Âèo‘ßoXÀQã¸÷}ô•±mç˜Á8lc®Á9æ½Qæ#/Á9°Üè–ã‚s`™±Åš3‡}€²×ÀXcV@éK`3ËÚ¬Þ€ò9°ÊÜX@=€ÀXa6.@l`3°½9êT˜ËÍ" mœ£ „m®gƒú¡€S˜ „A:ઢ©€ìÚ„>G˜ ‡bH}fv_ï\bAB/0Ò -Vè׋‘Ã]‡+_Ž V˜È+ A,0
-V裥ÈaÜ媗#ˆ(ÂDˆ *âƒ-ôéBäpÝåB} Â(»‚Ç¥€VÏP„#C̾:\ÕB")£œ· Å ÙHd.„Ð'TæB,ÝÄ‹u+_†pd8üƒȇxà B8j¤—Â!Gl#´A `1Û¨«>BðÌØå
h)‚¸ú,(ÖCéÑg­¡% ÇÜ ýŽhIÂ1ó3?ú•‚+~€áï€d¼s°=z @KŽy>rs˜y€Õø©bå™H*:sˆ‡–(30Ê&ÐúyÖ9eˆιÈQDs‘ƒ²ÔÄ9£Ò7”AÄžžQéI+Ò@½t>¥Ï)Mª’ζÚ&HšÔ¡9!"li¥åÚ‡kˆ´ål¨vc! »ô™ ±¢g83âžö¼nų¢ †®@žâÌcˆñqCË`3Ĉ9qx@Ë`iˆf(Í4€ó`¦Ÿ¬TÔ‡ -g€M>kΩj-k€MœdY“½´¬ +ÈcX]>±rz‹€5D'V
œéöÔ1GNÀY™8樼A:©Ôï˜gB©œÇ ÜÏ™.H,8ޏÃtºc wàÊêd†kÍÁ…Tú‰:,c=càÔ4Æ €?R§é°ŒÖÛNÓaÓ™_‚& :C¢Åqí±`»0ºk…äªé0‘qƒph­ ±÷UKó„ªY.´v†èuâ,øV­!zÕzìÓÝ ¹ð†èQ:j ÖÖãrfØ ¬OKüñÍPË%¢¹-±±’.h­ Ñ“&æV>¬­'BõÊXZ?Þ¹±´°öõ^†˜È,e \<1÷3–½í#×½{&ܸ¥rU¤ÍJÉ\"š LdöܹK0;¸)82i\o\´;¼•Ÿ'–‘P¬.t¬Â^¿¹1p1_uFÃÒÇàd}¡ãNSbé¥
\EiW°/)áøf08Ô&[õ cœFwžÿf<[l2êR6WqÀúßtŽ*OôÛø\+Š¿S;‹añcq€‰‹ÙaQt_zî¬ñ¹‘‘«ˆ¸ÿ¥ó/9k·6\"â—{”56¼OßYqYtØqœ=šÌñ…Ie˜>˜¹l:ìŒöªÿì§Œý¹K.ê4Li¯ƒ~/ÛÌæqµ¶\Mä¦ÜÝo·Û/¯oåe»}È,?mcÍå¢ÃœSþ#†KȵqÀe'‰³tŽ+¼Û9á
®ÃÌK_8.±´îBrvm¦(ˆ=$W›…ÄupÇU/«»Ð\¬•O_ºäj‚áÚ´.¹‚ÑzÜöžKdKÑxw gÑ q!Øý^
—XŒÒ¸°DôÖ!‰kvKÄgиš…X!•kæø—°MäšÕ)¹/T®9½3eû‰Ê5c`OJš#sÍ6Ähi/t®™†1±ŒÁ5Ï#îí2¸fbÔ,%=pÍ`sM®ôT9×ÄÚÁÈdr‰<\)´ášRY©Ã\®éÀx™dl.FÚÏ$ŽËšk¢ÉóÄ×þ9椰áòoŠü,M+.ß`ɧv\~UÑ&Yؒ˧ƒ¶Ê¶åòf—ŒoÍEΡö41qÏåcÚb™®î†Ë½,ÚŸ›pÂÕ
·¶øhß"7\o¶è®Ë’CW+Âé,—\ŽºìþІÆÕŠ'küâª-.¹ø©ÕªGw-qËe‘^HÝž“‹Kæ–ʇìþ‹ë6øà"æÅÇ[ï¹ðÃõV^qÙññýw/·÷Æuê5ƒAÞm_}ÝÛ'ש۞¶wê~z|õy_ß\çŽ;žpØ>ÜËývûøúêý–“pÍPàÿÿÿârõä
äÿÿMÌA‚0Ð=§˜¥&¶ò±",•莵 ‘‚lM©n/uåfóçýŒ–‡I Ù`ò ”‰)e=Cq©Î(¬iºöå”ï¬A©ŒjõCªWf.ï
œDÆ0ZM9ùÀYQVŒ8…!#Á ,I¹ç½Fœmã?ÊiTÎÖ¯«~C±âéßû]×Þ<(Ï7,‰ãxmßãÊ'=h÷Öu {£/;“òendstream
endobj
153 0 obj
6289
endobj
154 0 obj<</Type/Page/Parent 150 0 R/Contents 155 0 R/Resources<</ProcSet[/PDF/Text]>>>>endobj
155 0 obj<</Length 156 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
ár á
äHendstream
endobj
156 0 obj
31
endobj
157 0 obj<</Type/Page/Parent 150 0 R/Contents 158 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>/Annots 14 0 R>>endobj
158 0 obj<</Length 159 0 R/Filter/FlateDecode>>stream
VMoÛ8½çW zJ€µjÉŸÙ[§Y/šTk9Å|¡%ÊfC‰
IÙpýÎtì¸éb³„â ç½7Ã<_ÄÐÅŸF ô†W“ÅÅÇÏ×taQâÎp4†EqC–«†_-¾»Ýxäw;½~”¸ý(†YÁk+J3+TíCûÇ!4EC
]l„\Õ¥X·Ú…BÅj¶æ¦C#Y …Ê[¿Òj+
nÀn8¬[üSŠ—¥ÒPð-—ªqq¬.ðQ[^³:ç J*EãžÇGù7ªª°ØãÃìoH5‹z ÙÞX^ÁòòÃÍcš}X^Á7® "JF•vÇ4~&žD}O<9œñuËõVðÅÞ..ºQ¥¥_1ýšßAGcô“¨ ôDŽͯ$d^ø£^ƒ~Î'TG4J[¶’¿’í¹vгe2vVÌð°_¤/†ÐD0³°aVœ×ý0pµ'×kÀz —·ÌìI0HÆH É$Ñ ,ˆËÜŒã—ÔÀœ–ב³Z©¢Í­y­{ÀV‘0•²u1=ÀtqÔÅ(Ù:w‘4LJßø-¯ ¥sLk°Õ¼’ø ß„ö~s9®Ÿ¸ä{tp…¶-:dH çé’åÜDá€dèýáÇBÞÂ3Š«¹=úIZ•+Iœ¥)ùXl¢ðNw׃‚7ø®VÿsË[¬ Œþ‚0ΰ»h)ãä{,ð%R }Šßï¹1xí`"UþDÛÙý·sg ?#Ôå%‹ž"ÁŸÜN…æ¹Å#š`§˜4ꬸi²*ºk'ì4ÇVâ¢l뜚¤°û =+
(ÊNé'OÁ­´ÚâL`Rel–kÑá¸>«6åÆm Ï3õ<ý5x1„rû†|Ð!,&;XWž„µuÁý]z³—ÄûËÖ_ȼ5VUâVچɡJ¸{x„» Âö¸TÞj£Jî,UþÝåÕ7g¢¨¨W¥À«?Ÿ¥èfö-vB©VuçD¯ 'º$cUƒÉ…„ÓëÔÉ{f_Ϊò\@·ðU±"Ô84î왎=˜†ùé|ü/ÃË£€AJ¯Yí4G”Ê]—RI©vîâsg1ó»/”‡B8n’c/—Ép¯‘à#×9}æò#ƒ*oeá¡0ç%Çîæ~~üçÔ¦~¦ŽÞ¿Ð|W~óZµô̹k?ÎDA7ç]' ˆúaðÎqÀ¡GßÇåžp'޽oTA›óç' éŠCT't•œý?Òw£k,B_Ã[õ×Å?/¥Õendstream
endobj
159 0 obj
990
endobj
160 0 obj<</Type/Page/Parent 150 0 R/Contents 161 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
161 0 obj<</Length 162 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS041Ó3V072PIÑPp VpÎÏKËL/-J,ÉÌÏSðMÌKLOÍMÍ+QÈIÌÓ ÉâÒ…hÒ…ê2‰™…ÌÀ|C…àäü‚T¨kW _)!rendstream
endobj
162 0 obj
117
endobj
163 0 obj<</Type/Page/Parent 150 0 R/Contents 164 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>/Annots 37 0 R>>endobj
164 0 obj<</Length 165 0 R/Filter/FlateDecode>>stream
xÚµ˜KSãH Çï|
ÙªÄãGâ7 À°5Ylæ´ãt‚·b;k;ÅðíGêöCYB;¶¨
ÕÉÏjEú·¤Î¿'˜øggƒãB’\D'ß®°Mˆ–ø‰ëù-NmxKQŠ<ÕÑ?±<…Œ‰aKȰàòq¬H¶™Èë¸N‹\á°¬·=Ã%<z°,Öëâ%ÍWêÁÒ
Êv×<½BýŒoµÌ™2œ4†mÛ®1!ÛÛ®»;ŸÒãËûùØ2¬3µße‘/ÓÕ¶TûÝÇy¼dæë8ßµŽ[Žúžï¿Í˜ñðµªE·y-Êeœ˜‰*]åô/)ÓMm1çþßf›u¯b øñÇm†ç÷dÓøÕ:^,ë—¸p¾ÈÒ<­jŒOQVŸm¼>ÂþnXZë_ŽpþŽëó²X•q–‘´Žö;|Øçw(’m™Ö¯x$6EYa7šï³‰êXá…ï„ᱟIÜÏÙ~³?Ñ*)îMîÚª0VÇѱÕq´qñ£~eWªËB^äãÒP9ðéºp˜†‰µ^,zy¸Á
h˜àø:’ëc9S5„{hd¸™oøZܲ\ÎOyFdXížÈÛ¶áéyF ?õ0NZž8¶9à'w­p:SßpzÞ›ìØ¿x“¯r½~°w9þD è|Q<a(ª:”âÄZR æj…ët-àº(³¸†p#’t™&²ŠŽ:qO Ç ©ôûšÝ¾­ºÆzùö iÔ器ÄV]r¡SWC7êÒàºZÞ¥§åÙ·lн†çòN`Lõ<#÷(7=@6=KØ7Ù¼‹óÕût?‘Œ zNË\-RÊà±IcÕÛèüY<Aœ/:ù„¢†¡†…êCÕí}“ÿ*OŠÕ52•q^}¸…t¶¨ùËi…JüÍ6]ˆãìÜ ±–…"‹ó:Mør…›™ó©€\ì—2ð½îÑý4è<˜8'¨ÚÚ¤?Ïä}Yu<#èüFÀøômN•¾®/ñ]/Á]š‹¾VÅ"ÄcL]$ÅúËëXÈ6YR M–ZZ&AG3£h[8'(KÆDË3‚ªÜ£®å¼G5UË3‚²:ðŸÔC)þZžÈæNð‡Uc¶Ê0©ÆžºÞ¨¢oŠx]áÜTâAVWŽ\4ÊÍÿ§#Œ˜ÙéH.t:jh% ÍÌŽ‘zœ¤#oÀNŽ<ËZž4‹¹%Ï Ò‘?`ŸÔ]¥ju<#wiºÕòŒ@ÞŸÄ“4ëQïïùL¥þdÓŒ×BJoÖå6©·8Ë㵕ÞèÛ^¬§ ½Ì?#j—†ÏVÔr¡uC+ÍjhPq©O)×ñŒ@> »—–g‰”tÏ º`$YÏ- "wjøLFØ"ïã͆òü$ê!r¸›Ï¤bp–ér_}}›ZòN¢²-:94´Ê¶†fÕ8‡*†çõ²AÞã¼m ñœPéÕ»Ï J¯CéíøÒ;µÕ}M¦×µÜ|Åñº¿j5ãxßeÆcøErdýú;~?²ª….Á ­ò§¡@#«GÒàœ Ôp†jXñ´<'T“Ñûɬ94ܸTA8A?£ p¸¡ŒÃù=]Kd9ƒ‹¸JyìgéŠ~3;OQUïu‹ÝÇUgð[¥à¶ãnßÿþÈ=ñMü
&}ä4úëä7ö2Uhendstream
endobj
165 0 obj
1330
endobj
166 0 obj<</Type/Page/Parent 150 0 R/Contents 167 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
167 0 obj<</Length 168 0 R/Filter/FlateDecode>>stream
xÚ-‹Á‚0DïûÈ–¦z–È͵~@ƒ[‚‘% þ¿VÍÌeÞäMÄ(>a”.µhïiSïÀ ÁÖå%¶¦€¿­P]› ªQcß½æ°ô£â4t2ˆ.hA×þNÙOÊþ–MÌξÛà,QfÑVžé:x:Ñr#vendstream
endobj
168 0 obj
122
endobj
169 0 obj<</Type/Page/Parent 150 0 R/Contents 170 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
170 0 obj<</Length 171 0 R/Filter/FlateDecode>>stream
“OoÓ@Åïù#ŸZ)5±’”mZ)`qèe³Û ë]wÿ–OÏìÚ`)UŠ¥hå7ûf~oü8Ë`A¿ 69,×À»ÙM9{s ùÊšÞ¬7[(«‹%Ü ‰ð)Ö`‡Ê]–ߣ.Û º«å*Í£2Í`' r§Í3Îxî¼ÁA¿‚,õù&]ýã-Xí G¨ƒ‡m™”pDè%ãXëWÕß+¹6m¯U%TNƒk©H×îÄ F­}¶;Žn‘Z5–TÁŸ\³åÐåÃEby‹•—h’9$Ü÷–þÑñôáJ ;&™u=sâH}„kAË
|ý¸ÿœì¦öëÐŽC(íÎ|ñ‰#Í”ê–Æ ä#Q5®M_RÍÓÕ@5‡b€‚°¯â,&vBYiîCj§ª Ö¦c.ž,Th¹G:Pïû ìÜÌáVGÂ_ðÑÓt¡Üþ«Á%¨Z4Þ0­^ìÊ7;æîU@ÂåZ9£%è:Ɇ{Úåà@øÈËB1DN±ÞŠ„"ü³éˆí,‡3Ë„vÿˆ!h kI©&,ù2©ãYàL…RG)Re:äëÇn$>° 'v~(¦M!x.}E¶Ñ2(N­pس -eï÷ïàmŠ”(ůG1^p6ÑÒ²÷Á3cÚNÄW!°W>ãÕv^“ˆÞ¿ ç»röyöUDK­endstream
endobj
171 0 obj
540
endobj
172 0 obj<</Type/Page/Parent 150 0 R/Contents 173 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
173 0 obj<</Length 174 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS041Ó3V072PIÑPp VpÎÏKËL/-J,ÉÌÏSðMÌKLOÍMÍ+QÈIÌÓ ÉâÒ…hÒ…ê2[éY*€ùÆ
n™9©HAò®!\\ÍZ%endstream
endobj
174 0 obj
119
endobj
175 0 obj<</Type/Page/Parent 150 0 R/Contents 176 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
176 0 obj<</Length 177 0 R/Filter/FlateDecode>>stream
VMsÛ6½ëWìä$ÏĬõËîÍuÛ™^ÚÔV&] ri¢ JÖ¿ï[”,*t2¶G\¼Ý÷öíÂß&3ºÁÏŒVsZÜRZN~[O~ùóžæ7´ÎñävuGëlº¤µ³ÍÖ0=qm] ÏΦ콮^®ÖÿáÄ’f³öÄõü.™Ë™z¶yØ+ÇÃÛé‡çõÓ‡ÍùBC[&ßlKgÄ;v
ºdRÔxvdí¸Êð¯5;ÍRãaí,@K)ig‹6í^‡‚BÁôøåó3ù®„äXƒ‹5à<ê*•®þVW@ÌTP[å™"ˆ­˜l±rkŒÝƒ-ù û_%éüÈÞ&KÉ:KH¾š‚iO©± &µem8HfoM´­%ÏGÛ&ŒSiÐ;Ä,Ïcjè(,6ÓŠ÷$_BU•eZà•
¹u¥’O¤vJÉ6Wq-t{Ø¡˜Ç>Ö­/P~#æ¸kŸ´Ž¹§ÙªsÌbÞŠ¸Lfôhl•ëTõŒÏ͵Jn%ôkÁÒ°pV‡0tœ2d@CRTÚaâ[¾ßVÛ™ñ¶>ñ·†–‹ «BÁ%Wa¤¿Û´‘Ç­Žìœu#­ûR‰À,„ƒÁ(×f¬‡Ã`¼Qí[âÃǯ1—í„>µõQ˜n´ÐWÛ¨f¼!3ØØ•q^ÔI¬å85§ÒÁ¶ÀR¥NŒYþmlE(ÁA5±Êf)Gd{¨k£±ä|×¥À„?·[ä}2ÜœþÊЩî´<J3)véÄ7bI@¿‰dÕ]·¥m¦;PW;kvý¶@è€tß 9{ÂÄB+¤T‡àícç”MÕq:×)äÓØ-Xhï¤Mô}›RŒ¤ í§$cä8F­P¨oËÓÜœ}”†sõ6¨j¯ÑÈ @GŽ2Ű½p ‡ÀŒ³AÒ Œ¦.;íÕá0°Ú!³Lìç½´ Gë°CÞõÂ)¤½F|ZpÖd“Ë«¯¶r™épˆviïWùx>e Es‰“Û*}ÔkÀ3ªWªŒ?RÖí—VCØ ü‘Ö7©ìÞ¼1I6üÑtŽ ËÅæ+Uc¨£A_¸’Q/=­3È*Ð-I¸+Ž=p%‹Â%-Ú‚.– 3×1ëx¼§ô’þ¶?1wëKÛ¢ôʶ¢}o½\¿ÆK°¿´$^Ÿ/³=ŠþEŸ-hÜÍ]•w§ä÷‹Ÿø§gyw“Ü#‘+ùüÇzòïäd)ú´endstream
endobj
177 0 obj
930
endobj
178 0 obj<</Type/Page/Parent 150 0 R/Contents 179 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
179 0 obj<</Length 180 0 R/Filter/FlateDecode>>stream
xÚ-‹A‚0D÷ÿ³ÔJm¬%º3Aý bij Õ÷—ª™ÙÌ˼7 äKd‘Ú´gÚ+î T±‘(w9ø±B}k®¨ƒïœ£ž\ð8i¯­ŒŸÐôÚ¯ùIÙOÊþV•˜T%¾Kc˜ï½ÁżB\¬Z3ŽÎÛô;0é#Õ(Óendstream
endobj
180 0 obj
131
endobj
181 0 obj<</Type/Page/Parent 150 0 R/Contents 182 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
182 0 obj<</Length 183 0 R/Filter/FlateDecode>>stream
xÚµVMsÛ6½ëWìøÔÎDŒ()þè-ÎÄ^2n¤¦Ç .-zH€@»þ÷} P¦$gr¨}°I,Þ¾}ûÅ&9Íð›ÓÕœ—¤ÛÉízòþî†æ3ZW8¹¼º¦uùËZÙ*<+Çô•Vžý¯ëÇh™_%Ëéb™Í£m–Ó7v¾¶†¾ômÁ®6ÉzIy>Xϯ²K±þô×ýŠzà‘¢°qÌÓN¹@O€‰äoUà’Šê€hKOÁ’ãαgp—©UÖ½£¶6òG™’:ôV‘²p€ç|‘x&hÿ[¢6£a¦óe¶ƒ—E´,mfY%Ïòlö:°i¼»å ¦}غG„¯6%èÖUbQ]Ǧ„@1€†C@´·TÙ¦±ÏÉDоnÊAŒŸ \Ä{§hùYâéÓ·y£:¿±jOl8©_YGŒÜ¼Pð¢ÄUmT³1¾‰ÙÖ£$"UšË]P£t ±_<]Dç:l"Hɺnᡳµ ^2Þ(@zhé¼¶(ó¢<åßg߇xTH¯ÏŠðY¡nôF™ ^@?H™Vªo ‹Á¿~Û¾/¦þÅnq ·,d…ÿ«¤Èè
·þHUUÑÜÝÁ—ìëC¶¢Ø/83©â%×#pH×4ÈÏžÔIØœl’†
Ò\³H3:DhÛvÈ7/°H|¸Ü·ÝO¹M1äøœOòPÓ„Ÿ»Ú¡çbyŽÂ|Uÿs±]±¶ðû#c¢=pçlÙë e}þF~D™‹§Œüýð›—þWólvBNǃSÆoyØ]Ú¯‹Øi‹a]Ìé÷4`pïìžØíŸÝ4õ•Jl4ž¤s}¯5{_õ Êu[¹å¾Ÿ‚³}ÑXg]Èè#lñˆÆ“B(ÿ˺J쫺9ô\rÂí°œ”(V8´2Ï1'z±Š“Gl|ï†aâmïô-%$ñXfÇ{užjüC¶ 5öÉ[Ût§RH†{ªRèHt¡Æ,K+ÇÆþ¾»).è¾Qæ]<˜®Ö÷S©ºSÂ/"û‘BZaæÓjý5.åW)Áó0:Óüq©Âô~+ØåöKãl°Ç)8ºQŽñâ Û‡E Èð3•µ®.úX¢X+˜î2Ú§òq¶,uÆø¨E¨m9žXÛåx‘Ñ{b$ ²Có °'öe'ɦ‹µSÞ_΢ˆÀâÀX„ºÞG¿¸LÑŸù$[^ϲØÁâFž?¯'û¦Yendstream
endobj
183 0 obj
947
endobj
184 0 obj<</Type/Page/Parent 150 0 R/Contents 185 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
185 0 obj<</Length 186 0 R/Filter/FlateDecode>>stream
xÚ-‹A‚0D÷ÿ³ÔØo-²–èÎ¥àG Á@¡ÆëkÕ̬^Þ{C}ÆÐEúu¤¥Õ¡3l Þ¹Æv­`o T—ºA|ÛwÏIb<Žâ¥s£óõ ~iï”ý¢ì_±JP—&7øƒ&´ñ%“ÃÙ Nf7'coéDoC¦&Kendstream
endobj
186 0 obj
128
endobj
187 0 obj<</Type/Page/Parent 150 0 R/Contents 188 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
188 0 obj<</Length 189 0 R/Filter/FlateDecode>>stream
•ÁrÚ0†ï<ÅÛnl ÇÄ1‰3¨cg¦WEÞ8*²D%JŸ¾kCi2S+$ƒ‡ÁÖòíþ«_럃ÎèÃ4ÑD3¸(_æ_!9ƒò‘V&Ó”Õ§s¸RÆ9nwŸË]@<Ý Gã(éB¢J´ÛGL ŽÉ4š´é~e|X¡|Ãxtø3Ó¬7-(®ë ¯1z; _sË•BÕ,PWR×`,X(ŸÛ›Š{±þ‰kRý =pºÀË&œP®1T½Ñ8Üò]«¢Ùh)¸—F;”F£‚ô[D ~k`mMmyãBéZÉ?¤îšœ+ô!UTn§JSùÆ®zÔE¯-Ñå%ÑxoŠÎ…5zðÅy‘æy Ž†º!h¿
ÏuÅm©©I|®é»éÊ¡ßäž¶¤¢Ó{Vô§JI ¡îoóïÀ¬Ô¾ík±s3+Ò/¬š±âîö?Åw кy^¸s©J˵{Ä–f¼Fh×lxµèç]ãV¡÷CÆÅª-ôÊòõ“F³ôìƒvj†öÖ¨SSÜ| Åy8Ÿgå¼Þ™‹Ždº–ÉdŒ’»ÌA.c'`f;aóâî-bw"¸:šÎÁ­¹–¿»…{Á.ûÙ R~lë%Ç&ˆZæË¬ŸµÜ¨v>U’ñ K.d¿Þ<ÃA§1Úæ÷ØŠ…3ã|!¬\ûºÑuÂ},–¡émŸ‰´Dz¡R±Šq€U§@iiúÓV‡¦Áì%6™ýï/_éãé8šÑP¦…8ndåàÛàfØ9endstream
endobj
189 0 obj
602
endobj
190 0 obj<</Type/Page/Parent 150 0 R/Contents 191 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
191 0 obj<</Length 192 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS041Ó3V072PIÑPp VpÎÏKËL/-J,ÉÌÏSðMÌKLOÍMÍ+QÈIÌÓ ÉâÒ…hÒ…ê24 šë)€Üsò‹‹*A®!\\í€#endstream
endobj
192 0 obj
122
endobj
193 0 obj<</Type/Page/Parent 150 0 R/Contents 194 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
194 0 obj<</Length 195 0 R/Filter/FlateDecode>>stream
V[sÚ:~çWì0}H[0¾ ÎK)I¦Ì´™žIÎC^„-°ZÛr%¿ïJ2Ä;C FÚë·»ßúOÇÿ=ù !Ê:_—ÁÝ|–k¼Ž®a_}…ÿ蟒 šÑ\ÉË_(‚çYÙ¾íøZz™PI!²¢¦…à[Sˆ©",¥1°|ÍEFã9àGòRDÖxöBi$!æQ©XÙˆç
8:ôìuÏ›}¤,§dBÒVHQ¤ *údflÎ>®»<ÆÃŽ©f?ŽÍr Þ¨Ê2ðÐ`âx°°ÊwZù(]gX ¢è=É0•sÌFZdŠ!’“¬½‡µIˆ ‘¢B€2ÁÃï|ƒ‘bV4—¥Ð¨gB´b)S{›Oc*àá~þÿ´Œ«½T4“Î!ë^ÃKX®±_—y¤!?D“-¢™HS·5t¨« ÓûżÏ^^ì)âüÆu=Ytú\%e—åQZÆ´[ò®Ï¤ëœîÕAO7õ¦iÁ{ñ+´IJ¢ä¤­û
P¢±Ü°­†#6…ÒªúY«ôÌSQŠ‚c'bî9Qº.V¤«ñb/Ø&QÁ”E:]ô”s…Ï=sj<RÅfFéËêÉÆ‡jo< ºeÈú²Ú¬öÆÚìqÝóøCÙL,„.Œ5H}?´p>¸Ža øTéŸ ÜP V¨ª´&òjÄ¥s‘…Ù9o<õ}×uu·Dî±µ×jG°?ËHÉžá#.›Œ d±¥ñe®tgŠ •(mmz ±ñ,óÙÒéá,q„5ÌA2 U“IÓC# Íi›úEEnÐek2wG±kIZk¯”ìa´lUܵ±±°»¼TšFã&›µvƒî÷ùìö~që¨Õ…]Âô%¼Lc;º+Ju§™É¶ÜÚœ46 m_˜¯_ê¾Ì˜4ƒ€“ŒlÐLR"m /6lCMM.ª«þ›*•OÌ"€ïÇiœ¿ÎL^³ë6é0ôB¦ IC(xdt7mqà%S·qئú§é~Çy܃DìS]EßÃ~à!Ñ=,¦çúÈ1à <_®÷ü‚QÐÝ 5ŸÂ'•…ìkù¢Ÿ.6m
OOOH”*&ƒÁn·sZ5ÎMÌ*6¸¬t~ôž¯0“þ ¿xÎ{~ƒ†ÿ®FРœk N×Oß°çð°€V\)ž]´ƒ”ЯNï.!œãÃÕ)7¼/!y° ;çugU£‡|­À«ßÆÅÆÂ+Rí`Öé!¦Ú¤2eö Ç_+ŒH%DŽ|AB¤¥‡”K9%¢îíPµx®_ww8ªö|Û›i8
zWËx¦‡o—;QQJ-endstream
endobj
195 0 obj
1072
endobj
196 0 obj<</Type/Page/Parent 150 0 R/Contents 197 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
197 0 obj<</Length 198 0 R/Filter/FlateDecode>>stream
xÚÕV]oÚ0}çW\¡J-„| (l}i RÚu*{CªŒsC<%66í¿ï: Ð’~îeZ@ÈØ÷ßs|áG×^}ûæiãlÚèN\Â4²3ý…GÝãÖô{Ã…Žç:'vŽa,CP4.æS[ïÚ™îdÞÀbu¬øvíÌña’Kn„’zÕ³Q„¸N¿Šr<¸f©‹2¨žWù²ab`°HÔœ% ¹Z"è˜% Ì8[
Ãñ5/Ô4ºÙ†bÄL9ºU)š˜ö'i
wf-˜ÆJ&ë ½À)(àŠãÒn F¥iÈòäÑ–†ÒοÝÜ‚³ˆq„DÌ3–­!Ú CÊÖ”±rCb™a$Vð ²Ò÷6NÔfœi´Lx¾Ô;6›o£²ü*Ùï;½gõJ¯Ë"OXFZ5µaFð&0:iZØí]¤ç2ÄŒr3Ô´jeQ´Þ+™
Õ©ª,†¥è4ÔÕïð±ìµ¦ð‡%Û>\(ž§(muJ¾ÐcFÚn´Þ’{$3W©Å€ñ ÖšgbN¥Ð¹0Sœà6=T¨ÛÅÔRi-ætÔB.sC‡š
S',"Òl=kµ éžä©ÜØÄ{–ä¤Û~( A/‘ :!#•¥Gˆ!†£’ëοWêòœ?+ÕgG³Ö!tà\¥´3ÂN¡œ_ÍZußÖ®•A=©$¾`s«ºWÚ¶ìˆE"Ú§{ _h÷KyOÝb… &*é·Áu\ø|JчGnߢmð·J<*Øâ]Þ͇T¬€V…Õ ~í—ŽS£š<“„HGòioõ÷+7ZWÔÈ*|í> ÞºÏ*ˆ©[ßk:øˆÍöo³·L|ÄtiÁâ/-W%ÿŸ†£{SëÑèŸøng¸§ÏûíçÖ=³OèC.t·.ìNNªNñ9€þ0(U,#Ï•ŒÄ"ÏJ寘d ,úä&aE§u¼^ŸÒ:ßµY^ÏNö¼¡3÷Ù?ãiãkãm•Äendstream
endobj
198 0 obj
767
endobj
199 0 obj<</Type/Page/Parent 150 0 R/Contents 200 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
200 0 obj<</Length 201 0 R/Filter/FlateDecode>>stream
xÚ¥UÁrÚ0½ó;>%™b°“4§$Mzj'О2“‘å5¨µ-W–Ii§ÿÞ•„ÁBÓépÀ’vßîÛ}Z}ï0¤_ÓFð¼w=ë î†p³ÔìDçô•œü:}í ¡ ýs³ð}oO¡®U'«ÇÓËÎéo³Ü]@05Ð}ÂîBsríá S‚ÅV«±±"ÿÑÐÖV~Y.й3C¬Â©1Ù€À³Ð `0ÏdÌ2¨¸,ªË2ˆ8+…f™ø‰ ¥êÍ¢j<½7@k¦w×¢zÐLckO†#ßò˜-d­p,µh šÜAÕY+M†7Ÿï@UÊ8B&bÅÔªÉx¹e²|y]iòœ‹ÂQ#„NðRa*~€Çë²ò -óÑ¥æövè9&ð¾w“¬Â2£ ˆWÖ7¼:±™š×9Úd.QA)«JP£‘0¢&jQ&ù~‡2ùŒŠ³
U]$¨ÈD‘[Œú‘Ê URž¦¾OË ¡NjtÌtë¸á{U¬Ö¡w(«]ž.K*:ƒJÖŠú”Šv#ä™õñ*ˆàž¿'ßðÂ7ò áä¶R¬©âß2jx“ÕXÒ¦ƒ%S¤INÀŠdk(òAg¤ÄTf¦––.sbbþ­S¨+®DL—Ëʳ‰ÿÖ%¹ýpì‘va§ö—08s x­” dªBw"u—àlÐ ¢ÕŸãL¯!^˜"˜­Ê£dò· rE%ÔËÛ—àÕ‚4ðž´¬,‘¬7háX8ìNõ›ØäMWÕÖe³ÜΛÄ5ùqY†ŽÛ‚-±«ŒŘM›·qK0}Yƒ³î‹`zI·韠ÜàK%ÒNÉjï!ÙSÊ:´˜`†ØS«Z—G$ÁƒV5§Wé¨.¢×è¢jþS„sLe˜X›1çR°Dv¶Ú29_sÆ‘?h2Y×ÖÖÿF©˜×ÊJ>°‚ÍÑ
à>cV:}çÖŸ†ÃƒOôx:&<{LÌÆí¬÷©÷?ðendstream
endobj
201 0 obj
789
endobj
202 0 obj<</Type/Page/Parent 150 0 R/Contents 203 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
203 0 obj<</Length 204 0 R/Filter/FlateDecode>>stream
xÚÕ–MoÚ@†ïüЧ$
2Мš¦ ­×vc{ÝÝu(ªúß;»kdò©J•*"×óξ3óŒ”ôña˜?žwÎÃNÿÝ ü1„+zLéG|tîÞÞ
^åXh¦SQ‡ß)r ¾ï"{ɉ¼`<¥eÅu%T² v‡À€‹ÜÈ!Ê¿…”â”i̶áJP´N°Ö+b@“+Ç<BY'ŠÐ\K—ù#òC×ŵ%Œ!-€q.dÌ
ްIubóÝ1™²(C(Xžk(E–ò-°HÜáj@o8ölÁý“æ¢75pa’ª½ÒèLÃâëÕ5ý“ JÓåhû­“ºH^•j©)íÒ˜¯Vä¯v.ªSƒÕ¸Îœ@ÿ•”¦·Š¦ƒÖ˜‰9¼¹Ñ3ý¼žéCýï3×3BdbšÖ3] $XdL)T÷15F½ÑÀ êχK;ŠGšÓœ¹Ic&†ê~ò‰ JÎT=ܪˆQ*8ÅD¨7ˆlhü
nŽº¶A6K÷º¶Üæ 5÷nŽgÞ¸qø
ÔÓ×cîtQ;®[ÀÿÊ»¿!ÜeØnŸÿg¶§° Â5+ôStO_Dw¨ xU–¾ÿp½\|º¼ç—a÷´E ½ž‡{¯kèw%@Œ«´ Ä®è†LíC¹bV–F’É-ä•"qMØYO¬Ø¹lÝYJJùÓx3¹–-ƒÐœ>ä«Î4 –á¶$gXÐH»€û=Rôj“`w´/¥P*5ØkÒOßšUˆ¶náD^¦Jï‰ÍŸ¾póûÞ˜Û_ô•°fìj7Ó~| M¥Ï®Æ®©á—ù·SG¶]V-Ùö¡eØ5Ü( Qù{Šþ»i]3ߪ-„Ë*]Wnð‘l¶ð«ŒÙÞôüq@¢Þd80*?0‡£é˜ÎOüßpv>wþK†Œ-endstream
endobj
204 0 obj
729
endobj
205 0 obj<</Type/Page/Parent 150 0 R/Contents 206 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
206 0 obj<</Length 207 0 R/Filter/FlateDecode>>stream
xÚµUßoÚ0~ç¯ø–§Ò¤ÊØÖ_R¥MêT¦=Œi2‰^ÍâPÔMýßw¶C) LÛÄøî|÷Ýùûì­}b œô‘.ZgãV÷*ÂãÜZú§ô/;zµÇßÉ1D<°ž¹:'‰u…CœëŒ?ôl@Dî(ìW ®\•¬ZùØ⸊M”0zU¤)e„™3²¬J!ÅOŽ©Ôé96ÁZ”s¡¯TjS7i!¦åœC/yÁ¼kÊ…šÖ¹.<ÃôÁ" ºñIèš`˜zµ„Îa"w%^{˜Ûat^سáÝãÍþ(<µã\rV¸Â.XQ°ªL%9ÖŸÏ„
ð±³[Y’ØÏ‹6`r$ðÑoha¨OŽ\ÎI]l,;ž/Ñ×I{Ò¶»^¾œ´ë•<¤/â+¥¾¿_~»¾x9ª•ß×Ûg&JX\¾µtÎÔŒ›¿i&Óµ_ Tÿ¯_@äØÄRÛ/ž÷½7˜œÝÕgR%"Œoÿˆî9ª½ùä|99Š tÍûˆõ\HþïUF»ÂsÊL†á%¸-äVœ»‚s!õÊK³ï9oÅéTéthÀU*µqb¢¡±ôŽ“(½bÕ@7BTV6ŠV
Н!…â!ÆóJìIjÖR굩©“XW”6ÃÎ^°¼ä^q>3S°fIvS!´[ç
.%­²Ýĵê“ÝZn°²Ò7Vj”ɪ¤›ßáK£É|¡JˆºÇx¯õÒV¸§+¤¡!4%Iš¼)4õfhdzJ»î™\qZzA§Fwáp8Ü#Ð=Ù›Œ£(:(ª_{héotJÒ$ö“Ÿ•üu)ìrÐ3Úa½¥IÞq§¿½§±=¡ ÓÁ+\n©3û#rú¶ìœÆ‚'š6¹F/ —2¬‘àÌ“žÞG¢x:ª—©™´÷”Ô1•³tŽ e„Í£ÉxÎV² `m‡‰ãË<»Èü©t¯N« Å4¹ûTW=ÿtsKo²ÊÅlåŸ@|`ŠÍܸp#™Sy'îõi[gDõw¼7èQ*gŽÖp9n}lýJÈVªendstream
endobj
207 0 obj
817
endobj
208 0 obj<</Type/Page/Parent 150 0 R/Contents 209 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
209 0 obj<</Length 210 0 R/Filter/FlateDecode>>stream
xÚ•Rmo0þί8åS" ¥I«Nj»TšÔIÙ¶£ª8‚7°3¿µÓþûÎ-­¢T lŸŸ{îž»ûéEÒA<u_Þxש7¾ aié,ÓíŠá¯QúÝ ÁÂ`æÎ«ô*]<¼w·€ó#„{
ù`*®³!ÏF§̼‚X+d?ޝ
,™­ÍéÀBRh±ù_æßî<¾C¹øT2u7×Á<˜kXmYNÄ.éq¡C‰Ã]&‚®X]C)ëZ¶€,¯@¡FµÃ
Ȇ^ÞÀ ­x´A“ÙhϺw'°Fà‚< y®Ñ´ˆ”Vä†Kñ7ÿ8˜¸è‚5L`*ZÕÆ6(Œ&Ø2EÛ
5×ÁK‘Ï’ïDæð U¾°Ú¢>)uy ìóÕV)i)ünïI%^*Ù<ˬ¦ »œw!ƒçO’.D b†­ïç+M*àNÊí鼿V(p‡
r)v(8‰€Úy
ië‚ì–L…lE˨UFÂ*éVÞl•Ü!УX[T¥T ARÀá4BYfC¦{¤f_Z¾…÷dô!ºo/!t«ïg££îàüž8•éë2ëG!NÎz§›ÏËÜHQòUl߆L° ºeÍöÃäGÉ”Üü³Iè¼¢™3&qL$á¿ÃÊ<Öèn©÷Ñû¡¦7nendstream
endobj
210 0 obj
534
endobj
211 0 obj<</Type/Page/Parent 150 0 R/Contents 212 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F5 5 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
212 0 obj<</Length 213 0 R/Filter/FlateDecode>>stream
xÚíSËNÃ0¼ç+ö›Øqí© Í QH8W&u!¨‰ÃÖõï±›¤ñ¸c_,kfggÇ~‰Ä~3P e]ÑY6¦RÊ@ªŠåÉävåÞ4(ÐnÖîLkÑAf±>-ž=qŒ"Q‚Ž$"¡<póm]kÜ­§ÖçA,V4ôⱋ_®žbª¼œÊPä ¹y5X¹]Onæ’ŠNMî²H z^,ødjËmm§]e2C´8„%“ûF{5â,™cÕ8¢IVùñ b€ôÝÍ•GÃÊŽ\¬×ýaË`ÉŽöa½´­éùÞ#ã£ék]>Uàô¦5è]6$ßmœ§_C)6!Ø£ÖÔ8í.aj6%VmÓ7!ïÉ
y8“ÞçãO±pÓ$Ä¢º'ýó_þ‡¦]l.fEt½ 4ïendstream
endobj
213 0 obj
345
endobj
214 0 obj<</Type/Page/Parent 150 0 R/Contents 215 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
215 0 obj<</Length 216 0 R/Filter/FlateDecode>>stream
xÚ-‹AÂ ÷ÿo©‹V(Úº–ØIµxThj
(¡ñúŠš÷V“™'q°Ï8Du´S´j·àÊ‚¯ëR ©ÔmyîzÈàí8ÌQ§1x´×ƒqÆ't“öKu§âÿªbŠª)7ø‰>ØôÒÑ@Å0_&ƒ“y„˜Ð†è²¼Wt¤7%*Oendstream
endobj
216 0 obj
135
endobj
217 0 obj<</Type/Page/Parent 150 0 R/Contents 218 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F5 5 0 R/F8 7 0 R/F9 8 0 R>>>>/Annots 79 0 R>>endobj
218 0 obj<</Length 219 0 R/Filter/FlateDecode>>stream
xÚÕ›MsÛ6†ïþ<¶‡2Ä óQgzh’ÆjîŠB;êXbBIÉøßw]€Fr3ìÌØ‚W|,¾Ä¾ b™ïW¬éàkÞˆ¾Ùì®^­®^\›†wÍê¶aÊ4ý ›Õ—ßVëÏ÷c3Ý6¯§ýqÜ¿¯þ»úsuÕµì7f¿}|kM/T«›]£[N¯ï›Ë>{û|×¼¸V cö¯ÙÃzx+ü5Ö<ŠÈ]ã~$|Œåf3}-ˆ+€Ã/Úê¿Ø£ç 'qÞöp⊷Štâ/®%É×±ç"VÇ6£dÙÁ±Ìj#)N¨¿¾ÀUßÞn7ëãvÚ[¨àˆŠt-i×™V.Ú¹¨UŒu­DÅxI1âè„I8ö¤›‡ÃqÜe&r8älùˆ~*»¸§½ÿ1Î?¶ãO‹“¬5U_P\™Ô$ÅqWf€±S\÷ÖÙùœ€(N¨7Óæ´ƒiú8/FPJP7ú71‘ÃïžXv–µ]Õ›ÅvñõâÁdÕС=ò¼Éz˜20š‹zÊÇñvœÇýftAšv¨ÜkEaÒª>X,.Y¬Rú"/Z¬'jŠ%D
éõ¿n2—$ Wuö¢Ä,ŠËgÂbÖ}ÿ´—¥¤ºÁœqY…KS§uÉœ=Gwà* ‡ÂDzü:αÃáÖ›­'0ŠÌ‹í3€W"ol€ïdîõ%«`.ÅEÁ(Å5ä~¨c\oaùø(&:t×'wÌ¡°ý½Þ¯ïF+·[ƒ˜¶Êµ*L÷N ·ºIéM¦“h²¢l2D„Â%S"…‰ôf;›ã4?<΋HqÞçÓæxšÝB[XûyúËQP_š.X<‚ÙHÃÐBEÑl<GÛ„Ca"ÝL§y“™ýÑñv‘c— âD³™äœ†™ºf~IõaƒHõA£—ŠâjÐs˜sˆDqBÁêíöî4»˜YF ÖÔ*¼!@Ïì§"ûQYs—Š-掯/˜»Tn…+óæîQRÃ=G¨c¬æéô9çïÑÑð©$LäEaŽëÉoÓœYÁGG[w’àNéǸc}˜'X—¶û;W™ë0§v(ä‰BmÀÁ¥Ú …F–ÅÚà‰Œ‰…ŸdŒG½¾_ƒZñ=~ßUU_KÒq»Dè,;qpS$Q\=—M‘’bp†Á”Ý RŒq4=Y6eâsΡ0÷ž<Ûõ‰%ûºÄúÁ„ÑaOA0a nØÌsX§ÀÁÅ õn:›`.FUš ÙZ$¶ìIàë µH Hå«‘‡)qNÃ(Qn¦ÛãÏõœ)H&-‡ò“Ð(ÌýÇý¸>à¢K õMYø2…Y«t0F\ª)ÂíõØËP¬)žëT–)L¤Oã|È.¿"€Ýë¬ð1Žâ„{wÚ}çPÐ+Øl*I/UpXD†(QðRMò»A)SÅ õvÜóºf-)&xd±n)&ú¢*Ö$ÏÛ§3…‰´GšQBT¹yYŒ·ÆÓrƒH0Þ¡\ÅŠDÝÛ‚S0ŒòÂg)–-GÜP¿«ƒ³ÄÁ…zÄ u½^æZ ÁI/R…‰óö~:ÖóƒÓÍ´¬ö~$+´vø@Í4 ¥
×Ô¾z™-(ÓO,x?ý\Ø“Vã¼s•˜×Y‰ËÒõÔs§Õ§]1ÞSãée¶ „CíL¶˜DqÚÌÓþE“²¶Õ#Ë·´¸À.³Ë\ÊWIݨWÙ|e g8 {Îëé ”„̆ÆÁì}õ ãré‘}?mçqéôª­gïŽZ3œSCÌN\LuN­§W…T Ñu¸"…‡_Ü7 ÇÛ b–Z´oÚÖ´sšÑn@à”¶¡Œ]ã€Îoà0¦¨žÓ=:wͺEq‚½[ï–Q Kì¢D]ç¬Ï "‰:†>h%â%‰ˆÄz»šNPgé£Qƒõ©”*%0ÓØWsÉ…ƒPp˜Fß,”±PŒ½éJ(Æ6ßiïvwµ<0q®•ÌÏ$6PÍ^l„™d{^­b²y&[‚¢8ÁªK¶’D=6ªð,ú¨Oe%꙯¼˜lž„É– (Î}šáÉ’M’M~a,h%›ÔÞ­E)݈cìT¡°ïGǯÓÜšê+|ö¦8›„ Öƒh6 å­[”ŽH”p1Šâ{v DZمgÁ£^—•ˆ/Ó8”n1ˆâü¹%[G­2—]ÔײÉÖiïÖ²”lÄ1¶›p(L¤OëykŸƒ>Ðm¼¬-ݘÊO%#ƒu™8·QÞ¸e1Õƒ™s0J¤êò¬ Žfa­Y²ÌÖÜû¶,¦a0ËbFyúÌX YVxp£×~¿Bàëè±iãýYRŒ Ú.Ÿc ³zø†¹ÅU¥‘–æRÁªÝë0‡¥—*¦A0½b
FŸerIÖÕ’%ËjɽO«br“+æ`”HÏ(¹¸Ž6WtòÀ7Þ‘ûÒ†Šö¶n ³<¨Wí½™“*œb·ü!MÛLÒî°õ†v‚÷Àtú”Wx<«ùp¿Þc~hPáû[RòŸ«ÿ=džýendstream
endobj
219 0 obj
1953
endobj
220 0 obj<</Type/Page/Parent 150 0 R/Contents 221 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F5 5 0 R/F8 7 0 R/F9 8 0 R>>>>/Annots 92 0 R>>endobj
221 0 obj<</Length 222 0 R/Filter/FlateDecode>>stream
xÚÕ—ÏŽ›0Æï<…í!Ä6þƒ¯›6=µÚnè°»$JBKˆª¾}Çö8˜H‰ÕS’ÝÒìÀæó|cø1Bá—‘BÙ¿·6{ª²ùÒNIµ&L¢´ Õû‡ª~Ý5¤[“E·šýpøXýÌ>WÍ)ìÙÃË¢yN‰*d^’–˜2WìÈÊÒÏ.è7d¾„1{?Íá\ç Ÿr•3rñ.¸§{âm0°ou»Ýo,¬(r Ãÿòþ0™sxü Ÿ °.+/ F‰xJ"$1¥r1EaaŸº·c [Ûno™pÁ”bêbM°  5PKK¤È °$èaÅh.¼:ú²6Ñ¥-)õ9ǧi±«‡Æu|Á@ñ›·Ïÿ(æúIÛ)ØO>ûI ±W,i¹@ò–› 0°»³\J¢²€cÈ‘Deh©¤áÇn¼x0»IeÜ”u¦ðÁh7©i˜×eÂn¢§Ÿ$ØaC[Œàwg¸d'I5oD$uÞeÚlHB³Å(Ì#ìáÌ&
7y}.ˆ$"Lð2m7$¡ÝbæöH†+¨›±Þ ç¶ §ŽI9ÚvÉ„ƒi$-º÷Æ’àåÀÜáæfÓ‰~b:Þ.ˆú‰á€2iÃ!»)a¾¼·^J)C‹ñEÜ2Tä'mNCã¶m&(Ì#l5üݹ~bænúéŠLqS„Â:úK/%~œØ³J|!¼,UDKÐe‚Ã4rVÝzøS÷ÍXCû²5ÁaqUßíWÚåuvSá§ÊÃ:ú<â^š_]?\)5N–çO'Œ´e×·nÈÈ›µÆBèé´Ä5ž¹õá‚ùm•,~<¯ìïz»9öÎíäk½¯7u?yÞÕÎý3&Ìә殲í%ûžý†(´endstream
endobj
222 0 obj
700
endobj
223 0 obj<</Count 9/First 224 0 R/Last 277 0 R>>endobj
224 0 obj<</Parent 223 0 R/Title(Table of Contents)/Dest[217 0 R/XYZ null 756 null]/Next 225 0 R>>endobj
225 0 obj<</Parent 223 0 R/Count -3/First 226 0 R/Last 228 0 R/Title(1 Scope)/Dest[157 0 R/XYZ null 724 null]/Prev 224 0 R/Next 229 0 R>>endobj
226 0 obj<</Parent 225 0 R/Title(1.1 Identification)/Dest[157 0 R/XYZ null 700 null]/Next 227 0 R>>endobj
227 0 obj<</Parent 225 0 R/Title(1.2 System Overview)/Dest[157 0 R/XYZ null 627 null]/Prev 226 0 R/Next 228 0 R>>endobj
228 0 obj<</Parent 225 0 R/Title(1.3 Document Overview)/Dest[157 0 R/XYZ null 421 null]/Prev 227 0 R>>endobj
229 0 obj<</Parent 223 0 R/Count -2/First 230 0 R/Last 231 0 R/Title(2 References)/Dest[163 0 R/XYZ null 724 null]/Prev 225 0 R/Next 232 0 R>>endobj
230 0 obj<</Parent 229 0 R/Title(2.1 CUPS Documentation)/Dest[163 0 R/XYZ null 700 null]/Next 231 0 R>>endobj
231 0 obj<</Parent 229 0 R/Title(2.2 Other Documents)/Dest[163 0 R/XYZ null 495 null]/Prev 230 0 R>>endobj
232 0 obj<</Parent 223 0 R/Count -3/First 233 0 R/Last 235 0 R/Title(3 File Management)/Dest[169 0 R/XYZ null 724 null]/Prev 229 0 R/Next 236 0 R>>endobj
233 0 obj<</Parent 232 0 R/Title(3.1 Directory Structure)/Dest[169 0 R/XYZ null 700 null]/Next 234 0 R>>endobj
234 0 obj<</Parent 232 0 R/Title(3.2 Source Files)/Dest[169 0 R/XYZ null 613 null]/Prev 233 0 R/Next 235 0 R>>endobj
235 0 obj<</Parent 232 0 R/Title(3.3 Configuration Management)/Dest[169 0 R/XYZ null 553 null]/Prev 234 0 R>>endobj
236 0 obj<</Parent 223 0 R/Count -4/First 237 0 R/Last 240 0 R/Title(4 Trouble Report Processing)/Dest[175 0 R/XYZ null 724 null]/Prev 232 0 R/Next 241 0 R>>endobj
237 0 obj<</Parent 236 0 R/Title(4.1 Classification)/Dest[175 0 R/XYZ null 581 null]/Next 238 0 R>>endobj
238 0 obj<</Parent 236 0 R/Title(4.2 Identification)/Dest[175 0 R/XYZ null 389 null]/Prev 237 0 R/Next 239 0 R>>endobj
239 0 obj<</Parent 236 0 R/Title(4.3 Correction)/Dest[175 0 R/XYZ null 263 null]/Prev 238 0 R/Next 240 0 R>>endobj
240 0 obj<</Parent 236 0 R/Title(4.4 Notification)/Dest[175 0 R/XYZ null 177 null]/Prev 239 0 R>>endobj
241 0 obj<</Parent 223 0 R/Count -4/First 242 0 R/Last 245 0 R/Title(5 Software Releases)/Dest[181 0 R/XYZ null 724 null]/Prev 236 0 R/Next 246 0 R>>endobj
242 0 obj<</Parent 241 0 R/Title(5.1 Version Numbering)/Dest[181 0 R/XYZ null 700 null]/Next 243 0 R>>endobj
243 0 obj<</Parent 241 0 R/Title(5.2 Generation)/Dest[181 0 R/XYZ null 280 null]/Prev 242 0 R/Next 244 0 R>>endobj
244 0 obj<</Parent 241 0 R/Title(5.3 Testing)/Dest[181 0 R/XYZ null 207 null]/Prev 243 0 R/Next 245 0 R>>endobj
245 0 obj<</Parent 241 0 R/Title(5.4 Release)/Dest[181 0 R/XYZ null 133 null]/Prev 244 0 R>>endobj
246 0 obj<</Parent 223 0 R/Count -2/First 247 0 R/Last 248 0 R/Title(A Glossary)/Dest[187 0 R/XYZ null 724 null]/Prev 241 0 R/Next 249 0 R>>endobj
247 0 obj<</Parent 246 0 R/Title(A.1 Terms)/Dest[187 0 R/XYZ null 700 null]/Next 248 0 R>>endobj
248 0 obj<</Parent 246 0 R/Title(A.2 Acronyms)/Dest[187 0 R/XYZ null 521 null]/Prev 247 0 R>>endobj
249 0 obj<</Parent 223 0 R/Count -9/First 250 0 R/Last 274 0 R/Title(B Coding Requirements)/Dest[193 0 R/XYZ null 724 null]/Prev 246 0 R/Next 277 0 R>>endobj
250 0 obj<</Parent 249 0 R/Count -2/First 251 0 R/Last 252 0 R/Title(B.1 Source Files)/Dest[193 0 R/XYZ null 660 null]/Next 253 0 R>>endobj
251 0 obj<</Parent 250 0 R/Title(B.1.1 Naming)/Dest[193 0 R/XYZ null 627 null]/Next 252 0 R>>endobj
252 0 obj<</Parent 250 0 R/Title(B.1.2 Documentation)/Dest[193 0 R/XYZ null 544 null]/Prev 251 0 R>>endobj
253 0 obj<</Parent 249 0 R/Count -2/First 254 0 R/Last 255 0 R/Title(B.2 Functions)/Dest[196 0 R/XYZ null 692 null]/Prev 250 0 R/Next 256 0 R>>endobj
254 0 obj<</Parent 253 0 R/Title(B.2.1 Naming)/Dest[196 0 R/XYZ null 658 null]/Next 255 0 R>>endobj
255 0 obj<</Parent 253 0 R/Title(B.2.2 Documentation)/Dest[196 0 R/XYZ null 535 null]/Prev 254 0 R>>endobj
256 0 obj<</Parent 249 0 R/Count -2/First 257 0 R/Last 258 0 R/Title(B.3 Methods)/Dest[196 0 R/XYZ null 323 null]/Prev 253 0 R/Next 259 0 R>>endobj
257 0 obj<</Parent 256 0 R/Title(B.3.1 Naming)/Dest[196 0 R/XYZ null 290 null]/Next 258 0 R>>endobj
258 0 obj<</Parent 256 0 R/Title(B.3.2 Documentation)/Dest[196 0 R/XYZ null 220 null]/Prev 257 0 R>>endobj
259 0 obj<</Parent 249 0 R/Count -2/First 260 0 R/Last 261 0 R/Title(B.4 Variables)/Dest[199 0 R/XYZ null 681 null]/Prev 256 0 R/Next 262 0 R>>endobj
260 0 obj<</Parent 259 0 R/Title(B.4.1 Naming)/Dest[199 0 R/XYZ null 647 null]/Next 261 0 R>>endobj
261 0 obj<</Parent 259 0 R/Title(B.4.2 Documentation)/Dest[199 0 R/XYZ null 511 null]/Prev 260 0 R>>endobj
262 0 obj<</Parent 249 0 R/Count -2/First 263 0 R/Last 264 0 R/Title(B.5 Types)/Dest[199 0 R/XYZ null 407 null]/Prev 259 0 R/Next 265 0 R>>endobj
263 0 obj<</Parent 262 0 R/Title(B.5.1 Naming)/Dest[199 0 R/XYZ null 373 null]/Next 264 0 R>>endobj
264 0 obj<</Parent 262 0 R/Title(B.5.2 Documentation)/Dest[199 0 R/XYZ null 304 null]/Prev 263 0 R>>endobj
265 0 obj<</Parent 249 0 R/Count -2/First 266 0 R/Last 267 0 R/Title(B.6 Structures)/Dest[199 0 R/XYZ null 191 null]/Prev 262 0 R/Next 268 0 R>>endobj
266 0 obj<</Parent 265 0 R/Title(B.6.1 Naming)/Dest[199 0 R/XYZ null 157 null]/Next 267 0 R>>endobj
267 0 obj<</Parent 265 0 R/Title(B.6.2 Documentation)/Dest[202 0 R/XYZ null 724 null]/Prev 266 0 R>>endobj
268 0 obj<</Parent 249 0 R/Count -2/First 269 0 R/Last 270 0 R/Title(B.7 Classes)/Dest[202 0 R/XYZ null 568 null]/Prev 265 0 R/Next 271 0 R>>endobj
269 0 obj<</Parent 268 0 R/Title(B.7.1 Naming)/Dest[202 0 R/XYZ null 534 null]/Next 270 0 R>>endobj
270 0 obj<</Parent 268 0 R/Title(B.7.2 Documentation)/Dest[202 0 R/XYZ null 478 null]/Prev 269 0 R>>endobj
271 0 obj<</Parent 249 0 R/Count -2/First 272 0 R/Last 273 0 R/Title(B.8 Constants)/Dest[202 0 R/XYZ null 309 null]/Prev 268 0 R/Next 274 0 R>>endobj
272 0 obj<</Parent 271 0 R/Title(B.8.1 Naming)/Dest[202 0 R/XYZ null 275 null]/Next 273 0 R>>endobj
273 0 obj<</Parent 271 0 R/Title(B.8.2 Documentation)/Dest[202 0 R/XYZ null 166 null]/Prev 272 0 R>>endobj
274 0 obj<</Parent 249 0 R/Count -2/First 275 0 R/Last 276 0 R/Title(B.9 Code)/Dest[205 0 R/XYZ null 713 null]/Prev 271 0 R>>endobj
275 0 obj<</Parent 274 0 R/Title(B.9.1 Documentation)/Dest[205 0 R/XYZ null 680 null]/Next 276 0 R>>endobj
276 0 obj<</Parent 274 0 R/Title(B.9.2 Style)/Dest[205 0 R/XYZ null 381 null]/Prev 275 0 R>>endobj
277 0 obj<</Parent 223 0 R/Title(C Software Trouble Report Form)/Dest[211 0 R/XYZ null 724 null]/Prev 249 0 R>>endobj
278 0 obj<</Type/Catalog/Pages 150 0 R/Names 93 0 R/PageLayout/SinglePage/Outlines 223 0 R/OpenAction[157 0 R/XYZ null null null]/PageMode/UseOutlines/PageLabels<</Nums[0<</P(title)>>1<</P(eltit)>>2<</S/r>>4<</S/D>>]>>>>endobj
xref
0 279
0000000000 65535 f
0000000015 00000 n
0000000228 00000 n
0000001794 00000 n
0000001868 00000 n
0000001946 00000 n
0000002023 00000 n
0000002102 00000 n
0000002178 00000 n
0000002259 00000 n
0000002317 00000 n
0000002369 00000 n
0000002454 00000 n
0000002506 00000 n
0000002590 00000 n
0000002621 00000 n
0000002722 00000 n
0000002807 00000 n
0000002908 00000 n
0000002993 00000 n
0000003094 00000 n
0000003179 00000 n
0000003266 00000 n
0000003351 00000 n
0000003438 00000 n
0000003523 00000 n
0000003589 00000 n
0000003674 00000 n
0000003740 00000 n
0000003825 00000 n
0000003891 00000 n
0000003976 00000 n
0000004042 00000 n
0000004127 00000 n
0000004193 00000 n
0000004278 00000 n
0000004344 00000 n
0000004429 00000 n
0000004523 00000 n
0000004627 00000 n
0000004732 00000 n
0000004837 00000 n
0000004942 00000 n
0000005046 00000 n
0000005151 00000 n
0000005256 00000 n
0000005360 00000 n
0000005465 00000 n
0000005570 00000 n
0000005675 00000 n
0000005779 00000 n
0000005884 00000 n
0000005989 00000 n
0000006094 00000 n
0000006199 00000 n
0000006303 00000 n
0000006408 00000 n
0000006513 00000 n
0000006618 00000 n
0000006723 00000 n
0000006827 00000 n
0000006932 00000 n
0000007037 00000 n
0000007141 00000 n
0000007246 00000 n
0000007351 00000 n
0000007456 00000 n
0000007561 00000 n
0000007666 00000 n
0000007771 00000 n
0000007876 00000 n
0000007981 00000 n
0000008086 00000 n
0000008191 00000 n
0000008296 00000 n
0000008401 00000 n
0000008506 00000 n
0000008610 00000 n
0000008713 00000 n
0000008816 00000 n
0000009120 00000 n
0000009225 00000 n
0000009330 00000 n
0000009434 00000 n
0000009539 00000 n
0000009644 00000 n
0000009748 00000 n
0000009853 00000 n
0000009958 00000 n
0000010062 00000 n
0000010167 00000 n
0000010272 00000 n
0000010376 00000 n
0000010477 00000 n
0000010509 00000 n
0000010541 00000 n
0000011261 00000 n
0000011309 00000 n
0000011357 00000 n
0000011405 00000 n
0000011453 00000 n
0000011502 00000 n
0000011551 00000 n
0000011600 00000 n
0000011649 00000 n
0000011698 00000 n
0000011747 00000 n
0000011796 00000 n
0000011845 00000 n
0000011894 00000 n
0000011943 00000 n
0000011992 00000 n
0000012041 00000 n
0000012090 00000 n
0000012139 00000 n
0000012188 00000 n
0000012237 00000 n
0000012286 00000 n
0000012335 00000 n
0000012384 00000 n
0000012433 00000 n
0000012482 00000 n
0000012531 00000 n
0000012580 00000 n
0000012629 00000 n
0000012678 00000 n
0000012727 00000 n
0000012776 00000 n
0000012825 00000 n
0000012874 00000 n
0000012923 00000 n
0000012972 00000 n
0000013021 00000 n
0000013070 00000 n
0000013119 00000 n
0000013168 00000 n
0000013217 00000 n
0000013266 00000 n
0000013315 00000 n
0000013364 00000 n
0000013413 00000 n
0000013462 00000 n
0000013511 00000 n
0000013560 00000 n
0000013609 00000 n
0000013658 00000 n
0000013707 00000 n
0000013756 00000 n
0000013805 00000 n
0000013854 00000 n
0000013903 00000 n
0000014164 00000 n
0000014316 00000 n
0000020676 00000 n
0000020698 00000 n
0000020793 00000 n
0000020895 00000 n
0000020915 00000 n
0000021069 00000 n
0000022130 00000 n
0000022151 00000 n
0000022264 00000 n
0000022452 00000 n
0000022473 00000 n
0000022627 00000 n
0000024028 00000 n
0000024050 00000 n
0000024163 00000 n
0000024356 00000 n
0000024377 00000 n
0000024508 00000 n
0000025119 00000 n
0000025140 00000 n
0000025253 00000 n
0000025443 00000 n
0000025464 00000 n
0000025595 00000 n
0000026596 00000 n
0000026617 00000 n
0000026730 00000 n
0000026932 00000 n
0000026953 00000 n
0000027093 00000 n
0000028111 00000 n
0000028132 00000 n
0000028245 00000 n
0000028444 00000 n
0000028465 00000 n
0000028605 00000 n
0000029278 00000 n
0000029299 00000 n
0000029412 00000 n
0000029605 00000 n
0000029626 00000 n
0000029766 00000 n
0000030909 00000 n
0000030931 00000 n
0000031071 00000 n
0000031909 00000 n
0000031930 00000 n
0000032070 00000 n
0000032930 00000 n
0000032951 00000 n
0000033091 00000 n
0000033891 00000 n
0000033912 00000 n
0000034052 00000 n
0000034940 00000 n
0000034961 00000 n
0000035101 00000 n
0000035706 00000 n
0000035727 00000 n
0000035867 00000 n
0000036283 00000 n
0000036304 00000 n
0000036417 00000 n
0000036623 00000 n
0000036644 00000 n
0000036798 00000 n
0000038822 00000 n
0000038844 00000 n
0000038998 00000 n
0000039769 00000 n
0000039790 00000 n
0000039845 00000 n
0000039950 00000 n
0000040094 00000 n
0000040200 00000 n
0000040320 00000 n
0000040429 00000 n
0000040578 00000 n
0000040688 00000 n
0000040795 00000 n
0000040949 00000 n
0000041060 00000 n
0000041177 00000 n
0000041293 00000 n
0000041457 00000 n
0000041563 00000 n
0000041682 00000 n
0000041797 00000 n
0000041901 00000 n
0000042057 00000 n
0000042166 00000 n
0000042281 00000 n
0000042393 00000 n
0000042492 00000 n
0000042639 00000 n
0000042736 00000 n
0000042836 00000 n
0000042994 00000 n
0000043134 00000 n
0000043234 00000 n
0000043341 00000 n
0000043491 00000 n
0000043591 00000 n
0000043698 00000 n
0000043846 00000 n
0000043946 00000 n
0000044053 00000 n
0000044203 00000 n
0000044303 00000 n
0000044410 00000 n
0000044556 00000 n
0000044656 00000 n
0000044763 00000 n
0000044914 00000 n
0000045014 00000 n
0000045121 00000 n
0000045269 00000 n
0000045369 00000 n
0000045476 00000 n
0000045626 00000 n
0000045726 00000 n
0000045833 00000 n
0000045965 00000 n
0000046072 00000 n
0000046171 00000 n
0000046289 00000 n
trailer
<</Size 279/Root 278 0 R/Info 1 0 R/ID[<49d7086a07a26d8f7455139812a43056><49d7086a07a26d8f7455139812a43056>]>>
startxref
46516
%%EOF
+595
Ver Arquivo
@@ -0,0 +1,595 @@
<HTML>
<HEAD>
<META NAME="DOCNUMBER" CONTENT="CUPS-CMP-1.1">
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
<META NAME="Author" CONTENT="Easy Software Products">
<TITLE>CUPS Configuration Management Plan</TITLE>
</HEAD>
<BODY>
<H1>Scope</H1>
<H2>Identification</H2>
This configuration management plan document provides the guidelines for
development and maintenance of the Common UNIX Printing System ("CUPS")
Version 1.1 software.
<EMBED SRC="system-overview.shtml">
<H2>Document Overview</H2>
This configuration management document is organized into the following
sections:
<UL>
<LI>1 - Scope</LI>
<LI>2 - References</LI>
<LI>3 - File Management</LI>
<LI>4 - Trouble Report Processing</LI>
<LI>5 - Software Releases</LI>
<LI>A - Glossary</LI>
<LI>B - Coding Requirements</LI>
</UL>
<EMBED SRC="references.shtml">
<H1>File Management</H1>
<H2>Directory Structure</H2>
Each source file shall be placed a sub-directory corresponding to the software
sub-system it belongs to ("scheduler", "cups", etc.) To remain compatible
with older UNIX filesystems, directory names shall not exceed 16 characters
in length.
<H2>Source Files</H2>
Source files shall be documented and formatted as described in Appendix
B, Coding Requirements.
<H2>Configuration Management</H2>
Source files shall be placed under the control of the Concurrent Versions
System ("CVS") software. Source files shall be "checked in" with each change
so that modifications can be tracked.
<P>Documentation on the CVS software is included with the whitepaper, "CVS
II: Parallelizing Software Development".
<H1>Trouble Report Processing</H1>
A Software Trouble Report ("STR") shall be submitted every time a user
or vendor experiences a problem with the CUPS software. Trouble reports
are maintained in a database with one of the following states:
<OL>
<LI>STR is closed with complete resolution</LI>
<LI>STR is closed without resolution</LI>
<LI>STR is active</LI>
<LI>STR is pending (new STR or additional information available)</LI>
</OL>
Trouble reports shall be processed using the following steps.
<H2>Classification</H2>
When a trouble report is received it must be classified at one of the following
levels:
<OL>
<LI>Request for enhancement</LI>
<LI>Documentation error</LI>
<LI>Unable to print a file</LI>
<LI>Unable to print to a printer</LI>
<LI>Unable to print at all</LI>
</OL>
The scope of the problem should also be determined as:
<OL>
<LI>Specific to a machine</LI>
<LI>Specific to an operating system</LI>
<LI>Applies to all machines and operating systems</LI>
</OL>
<H2>Identification</H2>
Once the level and scope of the trouble report is determined the software
sub-system(s) involved with the problem are determined. This may involve
additional communication with the user or vendor to isolate the problem
to a specific cause.
<P>When the sub-system(s) involved have been identified, an engineer will
then determine the change(s) needed and estimate the time required for
the change(s).
<H2>Correction</H2>
Corrections are scheduled based upon the severity and complexity of the
problem. Once all changes have been made, documented, and tested successfully
a new software release snapshot is generated. Additional tests are added
as necessary for proper testing of the changes.
<H2>Notification</H2>
The user or vendor is notified when the fix is available or if the problem
was caused by user error.
<H1>Software Releases</H1>
<H2>Version Numbering</H2>
CUPS uses a three-part version number separated by periods to represent
the major, minor, and patch release numbers:
<UL>
<PRE>
major.minor.patch
1.1.0
</PRE>
</UL>
Beta-test releases are indentified by appending the letter B followed by
the build number:
<UL>
<PRE>
major.minor.patchbbuild
1.1.0b1
</PRE>
</UL>
A CVS snapshot is generated for every beta and final release and uses
the version number preceded by the letter "v" and with the decimal
points replaced by underscores:
<UL>
<PRE>
v1_0_0b1
v1_0_0
</PRE>
</UL>
Each change that corrects a fault in a software sub-system increments the
patch release number. If a change affects the software design of CUPS then
the minor release number will be incremented and the patch release number
reset to 0. If CUPS is completely redesigned the major release number will
be incremented and the minor and patch release numbers reset to 0:
<UL>
<PRE>
1.1.0b1 First beta release
1.1.0b2 Second beta release
1.1.0 First production release
1.1.1b1 First beta of 1.1.1
1.1.1 Production release of 1.1.1
1.1.1b1 First beta of 1.1.1
1.1.1 Production release of 1.1.1
2.0.0b1 First beta of 2.0.0
2.0.0 Production release of 2.0.0
</PRE>
</UL>
<H2>Generation</H2>
Software releases shall be generated for each successfully completed software
trouble report. All object and executable files shall be deleted prior
to performing a full build to ensure that source files are recompiled.
<H2>Testing</H2>
Software testing shall be conducted according to the CUPS Software Test
Plan, CUPS-STP-1.1. Failed tests cause STRs to be generated to correct
the problems found.
<H2>Release</H2>
When testing has been completed successfully a new distribution image is
created from the current CVS code "snapshot". No production release shall
contain software that has not passed the appropriate software tests.
<EMBED SRC="glossary.shtml">
<H1>Coding Requirements</H1>
These coding requirements provide detailed information on source file
formatting and documentation content. These guidelines shall be applied
to all C and C++ source files provided with CUPS.
<H2>Source Files</H2>
<H3>Naming</H3>
All source files names shall be 16 characters or less in length to
ensure compatibility with older UNIX filesystems. Source files
containing functions shall have an extension of ".c" for ANSI C and
".cxx" for C++ source files. All other "include" files shall have an
extension of ".h".
<H3>Documentation</H3>
The top of each source file shall contain a header giving the name of the
file, the purpose or nature of the source file, the copyright and licensing
notice, and the functions contained in the file. The file name and revision
information is provided by the CVS "&#36;Id$" tag:
<UL>
<PRE>
/*
* "&#36;Id$"
*
* Description of file contents.
*
* Copyright 1997-2000 by Easy Software Products, all rights
* reserved.
*
* These coded instructions, statements, and computer programs are
* the property of Easy Software Products and are protected by
* Federal copyright law. Distribution and use rights are outlined
* in the file "LICENSE.txt" which should have been included with
* this file. If this file is missing or damaged please contact
* Easy Software Products at:
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
* EMail: cups-info@cups.org
* WWW: http://www.cups.org
*
* Contents:
*
* function1() - Description 1.
* function2() - Description 2.
* function3() - Description 3.
*/
</PRE>
</UL>
The bottom of each source file shall contain a trailer giving the name
of the file using the CVS "&#36;Id$" tag. The primary purpose of this is to
mark the end of a source file; if the trailer is missing it is possible
that code has been lost near the end of the file:
<UL>
<PRE>
/*
* End of "&#36;Id$".
*/
</PRE>
</UL>
<H2>Functions</H2>
<H3>Naming</H3>
Functions with a global scope shall be capitalized ("DoThis", "DoThat",
"DoSomethingElse", etc.) The only exception to this rule shall be the
CUPS interface library functions which may begin with a prefix word in
lowercase ("cupsDoThis", "cupsDoThat", etc.)
<P>Functions with a local scope shall be declared "static" and be lowercase
with underscores between words ("do_this", "do_that", "do_something_else",
etc.)
<H3>Documentation</H3>
Each function shall begin with a comment header describing what the function
does, the possible input limits (if any), and the possible output values
(if any), and any special information needed:
<UL>
<PRE>
/*
* 'do_this()' - Compute y = this(x).
*
* Notes: none.
*/
static float /* O - Inverse power value, 0.0 &lt;= y &lt;= 1.1 */
do_this(float x) /* I - Power value (0.0 &lt;= x &lt;= 1.1) */
{
...
return (y);
}
</PRE>
</UL>
<H2>Methods</H2>
<H3>Naming</H3>
Methods shall be in lowercase with underscores between words ("do_this",
"do_that", "do_something_else", etc.)
<H3>Documentation</H3>
Each method shall begin with a comment header describing what the method
does, the possible input limits (if any), and the possible output values
(if any), and any special information needed:
<UL>
<PRE>
/*
* 'class::do_this()' - Compute y = this(x).
*
* Notes: none.
*/
float /* O - Inverse power value, 0.0 &lt;= y &lt;= 1.0 */
class::do_this(float x) /* I - Power value (0.0 &lt;= x &lt;= 1.0) */
{
...
return (y);
}
</PRE>
</UL>
<H2>Variables</H2>
<H3>Naming</H3>
Variables with a global scope shall be capitalized ("ThisVariable",
"ThatVariable", "ThisStateVariable", etc.) The only exception to this
rule shall be the CUPS interface library global variables which must
begin with the prefix "cups" ("cupsThisVariable", "cupsThatVariable",
etc.) Global variables shall be replaced by function arguments whenever
possible.
<P>Variables with a local scope shall be lowercase with underscores between
words ("this_variable", "that_variable", etc.) Any local variables shared
by functions within a source file shall be declared "static".
<H3>Documentation</H3>
Each variable shall be declared on a separate line and shall be immediately
followed by a comment block describing the variable:
<UL><PRE>
int this_variable; /* The current state of this */
int that_variable; /* The current state of that */
</PRE></UL>
<H2>Types</H2>
<H3>Naming</H3>
All type names shall be lowercase with underscores between words and
"_t" appended to the end of the name ("this_type_t", "that_type_t",
etc.)
<H3>Documentation</H3>
Each type shall have a comment block immediately before the typedef:
<UL>
<PRE>
/*
* This type is for CUPS foobar options.
*/
typedef int cups_this_type_t;
</PRE>
</UL>
<H2>Structures</H2>
<H3>Naming</H3>
All structure names shall be lowercase with underscores between words and
"_str" appended to the end of the name ("this_struct_str", "that_struct_str",
etc.)
<H3>Documentation</H3>
Each structure shall have a comment block immediately before the struct
and each member shall be documented in accordance with the variable naming
policy above:
<UL>
<PRE>
/*
* This structure is for CUPS foobar options.
*/
struct cups_this_struct_str
{
int this_member; /* Current state for this */
int that_member; /* Current state for that */
};
</PRE>
</UL>
<H2>Classes</H2>
<H3>Naming</H3>
All class names shall be lowercase with underscores between words
("this_class", "that_class", etc.)
<H3>Documentation</H3>
Each class shall have a comment block immediately before the class
and each member shall be documented in accordance with the variable naming
policy above:
<UL>
<PRE>
/*
* This class is for CUPS foobar options.
*/
class cups_this_class
{
int this_member; /* Current state for this */
int that_member; /* Current state for that */
};
</PRE>
</UL>
<H2>Constants</H2>
<H3>Naming</H3>
All constant names shall be uppercase with underscored between words
("THIS_CONSTANT", "THAT_CONSTANT", etc.) Constants defined for the CUPS
interface library must begin with an uppercase prefix
("CUPS_THIS_CONSTANT", "CUPS_THAT_CONSTANT", etc.)
<P>Typed enumerations shall be used whenever possible to allow for type
checking by the compiler.
<H3>Documentation</H3>
Comment blocks shall immediately follow each constant:
<UL>
<PRE>
enum
{
CUPS_THIS_TRAY, /* This tray */
CUPS_THAT_TRAY /* That tray */
};
</PRE>
</UL>
<H2>Code</H2>
<H3>Documentation</H3>
All source code shall utilize block comments within functions to describe
the operations being performed by a group of statements:
<UL>
<PRE>
/*
* Clear the state array before we begin...
*/
for (i = 0; i &lt; (sizeof(array) / sizeof(sizeof(array[0])); i ++)
array[i] = STATE_IDLE;
/*
* Wait for state changes...
*/
do
{
for (i = 0; i &lt; (sizeof(array) / sizeof(sizeof(array[0])); i ++)
if (array[i] != STATE_IDLE)
break;
if (i == (sizeof(array) / sizeof(array[0])))
sleep(1);
} while (i == (sizeof(array) / sizeof(array[0])));
</PRE>
</UL>
<H3>Style</H3>
<H4 TYPE="a">Indentation</H4>
All code blocks enclosed by brackets shall begin with the opening brace
on a new line. The code then follows starting on a new line after the brace
and is indented 2 spaces. The closing brace is then placed on a new line
following the code at the original indentation:
<UL>
<PRE>
{
int i; /* Looping var */
/*
* Process foobar values from 0 to 999...
*/
for (i = 0; i &lt; 1000; i ++)
{
do_this(i);
do_that(i);
}
}
</PRE>
</UL>
Single-line statements following "do", "else", "for", "if", and "while"
shall be indented 2 spaces as well. Blocks of code in a "switch" block
shall be indented 4 spaces after each "case" and "default" case:
<UL>
<PRE>
switch (array[i])
{
case STATE_IDLE :
do_this(i);
do_that(i);
break;
default :
do_nothing(i);
break;
}
</PRE>
</UL>
<H4>Spacing</H4>
A space shall follow each reserved word ("if", "while", etc.) Spaces shall
not be inserted between a function name and the arguments in parenthesis.
<H4>Return Values</H4>
Parenthesis shall surround values returned from a function using "return":
<UL>
<PRE>
return (STATE_IDLE);
</PRE>
</UL>
<H4>Loops</H4>
Whenever convenient loops should count downward to zero to improve program
performance:
<UL>
<PRE>
for (i = sizeof(array) / sizeof(array[0]) - 1; i >= 0; i --)
array[i] = STATE_IDLE;
</PRE>
</UL>
<H1 ALIGN=RIGHT>Software Trouble Report Form</H1>
<CENTER><TABLE WIDTH="80%">
<TR>
<TH ALIGN=RIGHT>Summary of Problem:</TH>
<TD ALIGN=LEFT>________________________________________</TD>
</TR>
<TR>
<TH ALIGN=RIGHT>Problem Severity:</TH>
<TD ALIGN=LEFT>__1=RFE
<BR>__2=Documentation-Error
<BR>__3=Unable-to-Print-a-File
<BR>__4=Unable-to-Print-to-a-Printer
<BR>__5=Unable-to-Print-at-All</TD>
</TR>
<TR>
<TH ALIGN=RIGHT>Problem Scope:</TH>
<TD ALIGN=LEFT>__1=Machine __2=Operating-System __3=All</TD>
</TR>
<TR>
<TH ALIGN=RIGHT VALIGN=TOP>Detailed Description of Problem:</TH>
<TD ALIGN=LEFT>________________________________________
<BR>________________________________________
<BR>________________________________________
<BR>________________________________________
<BR>________________________________________
<BR>________________________________________</TD>
</TR>
</TABLE></CENTER>
</BODY>
</HTML>
+4
Ver Arquivo
@@ -0,0 +1,4 @@
H1 { font-family: sans-serif }
H2 { font-family: sans-serif }
TH { text-align: left }
+9
Ver Arquivo
@@ -0,0 +1,9 @@
H1 { font-family: sans-serif }
H2 { font-family: sans-serif }
H3 { font-family: sans-serif }
H4 { font-family: sans-serif }
H5 { font-family: sans-serif }
H6 { font-family: sans-serif }
SUP { font-family: sans-serif; font-size: 6pt }
PRE { margin-left: 2em }
CODE { font-weight: bold }
+77
Ver Arquivo
@@ -0,0 +1,77 @@
<HTML>
<HEAD>
<TITLE>Documentation - Common UNIX Printing System</TITLE>
<LINK REL=STYLESHEET TYPE="text/css" HREF="cups.css">
<MAP NAME="navbar">
<AREA SHAPE="RECT" COORDS="12,10,50,20" HREF="http://www.easysw.com" ALT="Easy Software Products Home Page">
<AREA SHAPE="RECT" COORDS="82,10,196,20" HREF="/admin" ALT="Do Administration Tasks">
<AREA SHAPE="RECT" COORDS="216,10,280,20" HREF="/classes" ALT="Manage Printer Classes Status">
<AREA SHAPE="RECT" COORDS="300,10,336,20" HREF="/documentation.html" ALT="On-Line Help">
<AREA SHAPE="RECT" COORDS="356,10,394,20" HREF="/jobs" ALT="Manage Jobs">
<AREA SHAPE="RECT" COORDS="414,10,476,20" HREF="/printers" ALT="Manage Printers">
<AREA SHAPE="RECT" COORDS="496,10,568,20" HREF="http://www.cups.org" ALT="Download the Current CUPS Software">
</MAP>
</HEAD>
<BODY BGCOLOR="#cccc99" TEXT="#000000" LINK="#0000FF" VLINK="#FF00FF">
<CENTER>
<IMG SRC="/images/navbar.gif" WIDTH="583" HEIGHT="30" USEMAP="#navbar" BORDER="0" ALT="Common UNIX Printing System">
</CENTER>
<H1>Documentation</H1>
The following documentation for CUPS is available on this server:
<UL>
<LI>Whitepaper - An Overview of the Common UNIX Printing System (
<A HREF="overview.html">HTML</A> |
<A HREF="overview.pdf">PDF</A> )
<LI>Software Users Manual (
<A HREF="sum.html">HTML</A> |
<A HREF="sum.pdf">PDF</A> )
<LI>Software Administrators Manual (
<A HREF="sam.html">HTML</A> |
<A HREF="sam.pdf">PDF</A> )
<LI>Software Programmers Manual (
<A HREF="spm.html">HTML</A> |
<A HREF="spm.pdf">PDF</A> )
<LI>Configuration Management Plan (
<A HREF="cmp.html">HTML</A> |
<A HREF="cmp.pdf">PDF</A> )
<LI>CUPS Implementation of IPP (
<A HREF="ipp.html">HTML</A> |
<A HREF="ipp.pdf">PDF</A> )
<LI>Interface Design Description (
<A HREF="idd.html">HTML</A> |
<A HREF="idd.pdf">PDF</A> )
<LI>Software Design Description (
<A HREF="sdd.html">HTML</A> |
<A HREF="sdd.pdf">PDF</A> )
<LI>Software Version Description (
<A HREF="svd.html">HTML</A> |
<A HREF="svd.pdf">PDF</A> )
<LI>Software Security Report (
<A HREF="ssr.html">HTML</A> |
<A HREF="ssr.pdf">PDF</A> )
</UL>
<HR>
<P>The Common UNIX Printing System, CUPS, and the CUPS logo are the
trademark property of <A HREF="http://www.easysw.com">Easy Software
Products</A>. CUPS is copyright 1997-2000 by Easy Software Products,
All Rights Reserved.
</BODY>
</HTML>
BIN
Ver Arquivo
Arquivo binário não exibido.
+73
Ver Arquivo
@@ -0,0 +1,73 @@
<H1 TYPE="A" VALUE="1">Glossary</H1>
<H2>Terms</H2>
<DL>
<DT>C
<DD>A computer language.
<DT>parallel
<DD>Sending or receiving data more than 1 bit at a time.
<DT>pipe
<DD>A one-way communications channel between two programs.
<DT>serial
<DD>Sending or receiving data 1 bit at a time.
<DT>socket
<DD>A two-way network communications channel.
</DL>
<H2>Acronyms</H2>
<DL>
<DT>ASCII
<DD>American Standard Code for Information Interchange
<DT>CUPS
<DD>Common UNIX Printing System
<DT>ESC/P
<DD>EPSON Standard Code for Printers
<DT>FTP
<DD>File Transfer Protocol
<DT>HP-GL
<DD>Hewlett-Packard Graphics Language
<DT>HP-PCL
<DD>Hewlett-Packard Page Control Language
<DT>HP-PJL
<DD>Hewlett-Packard Printer Job Language
<DT>IETF
<DD>Internet Engineering Task Force
<DT>IPP
<DD>Internet Printing Protocol
<DT>ISO
<DD>International Standards Organization
<DT>LPD
<DD>Line Printer Daemon
<DT>MIME
<DD>Multimedia Internet Mail Exchange
<DT>PPD
<DD>PostScript Printer Description
<DT>SMB
<DD>Server Message Block
<DT>TFTP
<DD>Trivial File Transfer Protocol
</DL>
+1094
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+936
Ver Arquivo
@@ -0,0 +1,936 @@
%PDF-1.2
%âãÏÓ
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000709213141Z)/Title( CUPS Interface Design Description)/Author(Easy Software Products)>>endobj
2 0 obj<</Type/Encoding/Differences[ 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma/minus/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/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/bracketleft/backslash/bracketright/asciicircum/underscore/grave/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/braceleft/bar/braceright/asciitilde 128/Euro 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 159/Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Roman/Encoding 2 0 R>>endobj
5 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Bold/Encoding 2 0 R>>endobj
6 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Italic/Encoding 2 0 R>>endobj
7 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica/Encoding 2 0 R>>endobj
8 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica-Bold/Encoding 2 0 R>>endobj
9 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica-Oblique/Encoding 2 0 R>>endobj
10 0 obj<</Type/Font/Subtype/Type1/BaseFont/Symbol>>endobj
11 0 obj<</S/URI/URI(http://www.easysw.com)>>endobj
12 0 obj<</Subtype/Link/Rect[533.8 577.0 555.2 590.0]/Border[0 0 0]/A 11 0 R>>endobj
13 0 obj<</S/URI/URI(http://www.easysw.com)>>endobj
14 0 obj<</Subtype/Link/Rect[72.0 563.8 153.0 576.8]/Border[0 0 0]/A 13 0 R>>endobj
15 0 obj[12 0 R
14 0 R
]endobj
16 0 obj<</S/URI/URI(http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf)>>endobj
17 0 obj<</Subtype/Link/Rect[108.0 418.6 142.8 431.6]/Border[0 0 0]/A 16 0 R>>endobj
18 0 obj<</S/URI/URI(http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf)>>endobj
19 0 obj<</Subtype/Link/Rect[140.1 418.6 190.8 431.6]/Border[0 0 0]/A 18 0 R>>endobj
20 0 obj<</S/URI/URI(http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf)>>endobj
21 0 obj<</Subtype/Link/Rect[188.1 418.6 433.1 431.6]/Border[0 0 0]/A 20 0 R>>endobj
22 0 obj<</S/URI/URI(http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf)>>endobj
23 0 obj<</Subtype/Link/Rect[430.3 418.6 446.8 431.6]/Border[0 0 0]/A 22 0 R>>endobj
24 0 obj<</S/URI/URI(http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf)>>endobj
25 0 obj<</Subtype/Link/Rect[108.0 405.4 142.8 418.4]/Border[0 0 0]/A 24 0 R>>endobj
26 0 obj<</S/URI/URI(http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf)>>endobj
27 0 obj<</Subtype/Link/Rect[140.1 405.4 190.8 418.4]/Border[0 0 0]/A 26 0 R>>endobj
28 0 obj<</S/URI/URI(http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf)>>endobj
29 0 obj<</Subtype/Link/Rect[188.1 405.4 346.6 418.4]/Border[0 0 0]/A 28 0 R>>endobj
30 0 obj<</S/URI/URI(http://www.ietf.org/rfc/rfc1179.txt)>>endobj
31 0 obj<</Subtype/Link/Rect[108.0 339.4 134.3 352.4]/Border[0 0 0]/A 30 0 R>>endobj
32 0 obj<</S/URI/URI(http://www.ietf.org/rfc/rfc1179.txt)>>endobj
33 0 obj<</Subtype/Link/Rect[131.5 339.4 291.9 352.4]/Border[0 0 0]/A 32 0 R>>endobj
34 0 obj<</S/URI/URI(http://www.ietf.org/rfc/rfc2567.txt)>>endobj
35 0 obj<</Subtype/Link/Rect[108.0 326.2 134.3 339.2]/Border[0 0 0]/A 34 0 R>>endobj
36 0 obj<</S/URI/URI(http://www.ietf.org/rfc/rfc2567.txt)>>endobj
37 0 obj<</Subtype/Link/Rect[131.5 326.2 362.5 339.2]/Border[0 0 0]/A 36 0 R>>endobj
38 0 obj<</S/URI/URI(http://www.ietf.org/rfc/rfc2568.txt)>>endobj
39 0 obj<</Subtype/Link/Rect[108.0 313.0 134.3 326.0]/Border[0 0 0]/A 38 0 R>>endobj
40 0 obj<</S/URI/URI(http://www.ietf.org/rfc/rfc2568.txt)>>endobj
41 0 obj<</Subtype/Link/Rect[131.5 313.0 394.3 326.0]/Border[0 0 0]/A 40 0 R>>endobj
42 0 obj<</S/URI/URI(http://www.ietf.org/rfc/rfc2569.txt)>>endobj
43 0 obj<</Subtype/Link/Rect[108.0 299.8 134.3 312.8]/Border[0 0 0]/A 42 0 R>>endobj
44 0 obj<</S/URI/URI(http://www.ietf.org/rfc/rfc2569.txt)>>endobj
45 0 obj<</Subtype/Link/Rect[131.5 299.8 343.3 312.8]/Border[0 0 0]/A 44 0 R>>endobj
46 0 obj<</S/URI/URI(http://www.ietf.org/rfc/rfc2616.txt)>>endobj
47 0 obj<</Subtype/Link/Rect[108.0 286.6 134.3 299.6]/Border[0 0 0]/A 46 0 R>>endobj
48 0 obj<</S/URI/URI(http://www.ietf.org/rfc/rfc2616.txt)>>endobj
49 0 obj<</Subtype/Link/Rect[131.5 286.6 345.3 299.6]/Border[0 0 0]/A 48 0 R>>endobj
50 0 obj<</S/URI/URI(http://www.ietf.org/rfc/rfc2617.txt)>>endobj
51 0 obj<</Subtype/Link/Rect[108.0 273.4 134.3 286.4]/Border[0 0 0]/A 50 0 R>>endobj
52 0 obj<</S/URI/URI(http://www.ietf.org/rfc/rfc2617.txt)>>endobj
53 0 obj<</Subtype/Link/Rect[131.5 273.4 368.9 286.4]/Border[0 0 0]/A 52 0 R>>endobj
54 0 obj[17 0 R
19 0 R
21 0 R
23 0 R
25 0 R
27 0 R
29 0 R
31 0 R
33 0 R
35 0 R
37 0 R
39 0 R
41 0 R
43 0 R
45 0 R
47 0 R
49 0 R
51 0 R
53 0 R
]endobj
55 0 obj<</S/URI/URI(http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf)>>endobj
56 0 obj<</Subtype/Link/Rect[194.6 455.4 229.4 466.4]/Border[0 0 0]/A 55 0 R>>endobj
57 0 obj<</S/URI/URI(http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf)>>endobj
58 0 obj<</Subtype/Link/Rect[226.6 455.4 492.5 466.4]/Border[0 0 0]/A 57 0 R>>endobj
59 0 obj<</S/URI/URI(http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf)>>endobj
60 0 obj<</Subtype/Link/Rect[36.0 442.2 148.1 453.2]/Border[0 0 0]/A 59 0 R>>endobj
61 0 obj[56 0 R
58 0 R
60 0 R
]endobj
62 0 obj<</S/URI/URI(http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf)>>endobj
63 0 obj<</Subtype/Link/Rect[144.4 611.8 179.2 624.8]/Border[0 0 0]/A 62 0 R>>endobj
64 0 obj<</S/URI/URI(http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf)>>endobj
65 0 obj<</Subtype/Link/Rect[176.5 611.8 416.6 624.8]/Border[0 0 0]/A 64 0 R>>endobj
66 0 obj[63 0 R
65 0 R
]endobj
67 0 obj<</S/URI/URI(http://www.ietf.org/rfc/rfc1179.txt)>>endobj
68 0 obj<</Subtype/Link/Rect[326.5 183.4 510.7 196.4]/Border[0 0 0]/A 67 0 R>>endobj
69 0 obj<</S/URI/URI(http://anu.samba.org/cifs)>>endobj
70 0 obj<</Subtype/Link/Rect[82.7 83.8 192.1 96.8]/Border[0 0 0]/A 69 0 R>>endobj
71 0 obj[68 0 R
70 0 R
]endobj
72 0 obj<</Subtype/Link/Rect[72.0 670.8 110.5 683.8]/Border[0 0 0]/Dest[160 0 R/XYZ null 798 0]>>endobj
73 0 obj<</Subtype/Link/Rect[108.0 657.6 186.5 670.6]/Border[0 0 0]/Dest[160 0 R/XYZ null 745 0]>>endobj
74 0 obj<</Subtype/Link/Rect[108.0 644.4 205.8 657.4]/Border[0 0 0]/Dest[160 0 R/XYZ null 672 0]>>endobj
75 0 obj<</Subtype/Link/Rect[108.0 631.2 219.2 644.2]/Border[0 0 0]/Dest[160 0 R/XYZ null 467 0]>>endobj
76 0 obj<</Subtype/Link/Rect[72.0 604.8 134.3 617.8]/Border[0 0 0]/Dest[166 0 R/XYZ null 798 0]>>endobj
77 0 obj<</Subtype/Link/Rect[108.0 591.6 225.3 604.6]/Border[0 0 0]/Dest[166 0 R/XYZ null 745 0]>>endobj
78 0 obj<</Subtype/Link/Rect[108.0 578.4 205.2 591.4]/Border[0 0 0]/Dest[166 0 R/XYZ null 540 0]>>endobj
79 0 obj<</Subtype/Link/Rect[72.0 552.0 171.3 565.0]/Border[0 0 0]/Dest[172 0 R/XYZ null 798 0]>>endobj
80 0 obj<</Subtype/Link/Rect[108.0 538.8 211.0 551.8]/Border[0 0 0]/Dest[172 0 R/XYZ null 745 0]>>endobj
81 0 obj<</Subtype/Link/Rect[144.0 525.6 283.1 538.6]/Border[0 0 0]/Dest[172 0 R/XYZ null 631 0]>>endobj
82 0 obj<</Subtype/Link/Rect[144.0 512.4 295.2 525.4]/Border[0 0 0]/Dest[172 0 R/XYZ null 251 0]>>endobj
83 0 obj<</Subtype/Link/Rect[108.0 499.2 194.8 512.2]/Border[0 0 0]/Dest[175 0 R/XYZ null 598 0]>>endobj
84 0 obj<</Subtype/Link/Rect[108.0 486.0 181.3 499.0]/Border[0 0 0]/Dest[178 0 R/XYZ null 783 0]>>endobj
85 0 obj<</Subtype/Link/Rect[144.0 472.8 222.5 485.8]/Border[0 0 0]/Dest[178 0 R/XYZ null 707 0]>>endobj
86 0 obj<</Subtype/Link/Rect[144.0 459.6 225.0 472.6]/Border[0 0 0]/Dest[178 0 R/XYZ null 349 0]>>endobj
87 0 obj<</Subtype/Link/Rect[108.0 446.4 182.0 459.4]/Border[0 0 0]/Dest[178 0 R/XYZ null 217 0]>>endobj
88 0 obj<</Subtype/Link/Rect[108.0 433.2 283.4 446.2]/Border[0 0 0]/Dest[181 0 R/XYZ null 618 0]>>endobj
89 0 obj<</Subtype/Link/Rect[144.0 420.0 252.5 433.0]/Border[0 0 0]/Dest[181 0 R/XYZ null 530 0]>>endobj
90 0 obj<</Subtype/Link/Rect[144.0 406.8 308.4 419.8]/Border[0 0 0]/Dest[181 0 R/XYZ null 460 0]>>endobj
91 0 obj<</Subtype/Link/Rect[108.0 393.6 259.9 406.6]/Border[0 0 0]/Dest[184 0 R/XYZ null 587 0]>>endobj
92 0 obj<</Subtype/Link/Rect[144.0 380.4 224.3 393.4]/Border[0 0 0]/Dest[184 0 R/XYZ null 419 0]>>endobj
93 0 obj<</Subtype/Link/Rect[144.0 367.2 219.5 380.2]/Border[0 0 0]/Dest[187 0 R/XYZ null 677 0]>>endobj
94 0 obj<</Subtype/Link/Rect[144.0 354.0 227.4 367.0]/Border[0 0 0]/Dest[193 0 R/XYZ null 189 0]>>endobj
95 0 obj<</Subtype/Link/Rect[72.0 327.6 173.7 340.6]/Border[0 0 0]/Dest[202 0 R/XYZ null 798 0]>>endobj
96 0 obj<</Subtype/Link/Rect[108.0 314.4 216.2 327.4]/Border[0 0 0]/Dest[202 0 R/XYZ null 745 0]>>endobj
97 0 obj<</Subtype/Link/Rect[108.0 301.2 240.3 314.2]/Border[0 0 0]/Dest[202 0 R/XYZ null 619 0]>>endobj
98 0 obj<</Subtype/Link/Rect[108.0 288.0 201.2 301.0]/Border[0 0 0]/Dest[205 0 R/XYZ null 692 0]>>endobj
99 0 obj<</Subtype/Link/Rect[144.0 274.8 251.0 287.8]/Border[0 0 0]/Dest[205 0 R/XYZ null 578 0]>>endobj
100 0 obj<</Subtype/Link/Rect[108.0 261.6 222.6 274.6]/Border[0 0 0]/Dest[214 0 R/XYZ null 720 0]>>endobj
101 0 obj<</Subtype/Link/Rect[108.0 248.4 205.5 261.4]/Border[0 0 0]/Dest[214 0 R/XYZ null 620 0]>>endobj
102 0 obj<</Subtype/Link/Rect[108.0 235.2 201.8 248.2]/Border[0 0 0]/Dest[220 0 R/XYZ null 425 0]>>endobj
103 0 obj<</Subtype/Link/Rect[108.0 222.0 239.7 235.0]/Border[0 0 0]/Dest[220 0 R/XYZ null 352 0]>>endobj
104 0 obj<</Subtype/Link/Rect[108.0 208.8 260.2 221.8]/Border[0 0 0]/Dest[220 0 R/XYZ null 278 0]>>endobj
105 0 obj<</Subtype/Link/Rect[108.0 195.6 266.3 208.6]/Border[0 0 0]/Dest[220 0 R/XYZ null 192 0]>>endobj
106 0 obj<</Subtype/Link/Rect[72.0 169.2 134.9 182.2]/Border[0 0 0]/Dest[226 0 R/XYZ null 798 0]>>endobj
107 0 obj<</Subtype/Link/Rect[72.0 142.8 127.0 155.8]/Border[0 0 0]/Dest[232 0 R/XYZ null 798 0]>>endobj
108 0 obj<</Subtype/Link/Rect[108.0 129.6 157.8 142.6]/Border[0 0 0]/Dest[232 0 R/XYZ null 745 0]>>endobj
109 0 obj<</Subtype/Link/Rect[108.0 116.4 175.5 129.4]/Border[0 0 0]/Dest[232 0 R/XYZ null 566 0]>>endobj
110 0 obj[72 0 R
73 0 R
74 0 R
75 0 R
76 0 R
77 0 R
78 0 R
79 0 R
80 0 R
81 0 R
82 0 R
83 0 R
84 0 R
85 0 R
86 0 R
87 0 R
88 0 R
89 0 R
90 0 R
91 0 R
92 0 R
93 0 R
94 0 R
95 0 R
96 0 R
97 0 R
98 0 R
99 0 R
100 0 R
101 0 R
102 0 R
103 0 R
104 0 R
105 0 R
106 0 R
107 0 R
108 0 R
109 0 R
]endobj
111 0 obj<</Dests 112 0 R>>endobj
112 0 obj<</Kids[113 0 R]>>endobj
113 0 obj<</Limits[(1)(idd.shtml)]/Names[(1)114 0 R(1_1)115 0 R(1_2)116 0 R(1_3)117 0 R(2)118 0 R(2_1)119 0 R(2_2)120 0 R(3)121 0 R(3_1)122 0 R(3_1_1)123 0 R(3_1_2)124 0 R(3_2)125 0 R(3_3)126 0 R(3_3_1)127 0 R(3_3_2)128 0 R(3_4)129 0 R(3_5)130 0 R(3_5_1)131 0 R(3_5_2)132 0 R(3_6)133 0 R(3_6_1)134 0 R(3_6_2)135 0 R(3_6_3)136 0 R(4)137 0 R(4_1)138 0 R(4_2)139 0 R(4_3)140 0 R(4_3_1)141 0 R(4_4)142 0 R(4_5)143 0 R(4_6)144 0 R(4_7)145 0 R(4_8)146 0 R(4_9)147 0 R(5)148 0 R(6)149 0 R(6_1)150 0 R(6_2)151 0 R(idd.shtml)152 0 R]>>endobj
114 0 obj<</D[160 0 R/XYZ null 798 null]>>endobj
115 0 obj<</D[160 0 R/XYZ null 745 null]>>endobj
116 0 obj<</D[160 0 R/XYZ null 672 null]>>endobj
117 0 obj<</D[160 0 R/XYZ null 467 null]>>endobj
118 0 obj<</D[166 0 R/XYZ null 798 null]>>endobj
119 0 obj<</D[166 0 R/XYZ null 745 null]>>endobj
120 0 obj<</D[166 0 R/XYZ null 540 null]>>endobj
121 0 obj<</D[172 0 R/XYZ null 798 null]>>endobj
122 0 obj<</D[172 0 R/XYZ null 745 null]>>endobj
123 0 obj<</D[172 0 R/XYZ null 631 null]>>endobj
124 0 obj<</D[172 0 R/XYZ null 251 null]>>endobj
125 0 obj<</D[175 0 R/XYZ null 598 null]>>endobj
126 0 obj<</D[178 0 R/XYZ null 783 null]>>endobj
127 0 obj<</D[178 0 R/XYZ null 707 null]>>endobj
128 0 obj<</D[178 0 R/XYZ null 349 null]>>endobj
129 0 obj<</D[178 0 R/XYZ null 217 null]>>endobj
130 0 obj<</D[181 0 R/XYZ null 618 null]>>endobj
131 0 obj<</D[181 0 R/XYZ null 530 null]>>endobj
132 0 obj<</D[181 0 R/XYZ null 460 null]>>endobj
133 0 obj<</D[184 0 R/XYZ null 587 null]>>endobj
134 0 obj<</D[184 0 R/XYZ null 419 null]>>endobj
135 0 obj<</D[187 0 R/XYZ null 677 null]>>endobj
136 0 obj<</D[193 0 R/XYZ null 189 null]>>endobj
137 0 obj<</D[202 0 R/XYZ null 798 null]>>endobj
138 0 obj<</D[202 0 R/XYZ null 745 null]>>endobj
139 0 obj<</D[202 0 R/XYZ null 619 null]>>endobj
140 0 obj<</D[205 0 R/XYZ null 692 null]>>endobj
141 0 obj<</D[205 0 R/XYZ null 578 null]>>endobj
142 0 obj<</D[214 0 R/XYZ null 720 null]>>endobj
143 0 obj<</D[214 0 R/XYZ null 620 null]>>endobj
144 0 obj<</D[220 0 R/XYZ null 425 null]>>endobj
145 0 obj<</D[220 0 R/XYZ null 352 null]>>endobj
146 0 obj<</D[220 0 R/XYZ null 278 null]>>endobj
147 0 obj<</D[220 0 R/XYZ null 192 null]>>endobj
148 0 obj<</D[226 0 R/XYZ null 798 null]>>endobj
149 0 obj<</D[232 0 R/XYZ null 798 null]>>endobj
150 0 obj<</D[232 0 R/XYZ null 745 null]>>endobj
151 0 obj<</D[232 0 R/XYZ null 566 null]>>endobj
152 0 obj<</D[163 0 R/XYZ null 698 null]>>endobj
153 0 obj<</Type/Pages/MediaBox[0 0 595 792]/Count 30/Kids[154 0 R
157 0 R
238 0 R
241 0 R
160 0 R
163 0 R
166 0 R
169 0 R
172 0 R
175 0 R
178 0 R
181 0 R
184 0 R
187 0 R
190 0 R
193 0 R
196 0 R
199 0 R
202 0 R
205 0 R
208 0 R
211 0 R
214 0 R
217 0 R
220 0 R
223 0 R
226 0 R
229 0 R
232 0 R
235 0 R
]>>endobj
154 0 obj<</Type/Page/Parent 153 0 R/Contents 155 0 R/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
155 0 obj<</Length 156 0 R/Filter/FlateDecode>>stream
xÚìÏsë8rÇIŠºÌ‰öŒî´üt§çyšÝ­ÚJñÙfvçÖ$ÁÊ!•S*Ç6•üÿ±~X"H€èn$è5¦jêÙE|ˆÆ·@ƒúÇOßòýÛßò?=å¿ýžÿçÿô,~*ÅOÿÈÛÿù×?þøÛï¿ÿºÏÿü—_Ÿò§§§·kýñõ¥ù÷¯|­ÿöœþº?•ßNå÷SùË©¼œÊ¿žÊ¿üÇ×?òÿýŸÿû¯¯ÿ–ÿíÛ׿ç‡oß¾>ÃKþ=ÿãõ§öcøä²+âõi»Ý>ÜËÛ?¶ß_—Î%^¶wY¤*w÷¯ËäOÜöû¸ē‰é½Ü?–KáÂC]о/ëå!"—x[ÎõœE¼r˜ë‰KåÒ!˜¾rÛg޹^òȾü\ÆÕ<DNJü×Sä¬$‡`¸D¹,pYë…Û.sÄ%"ç%þ2;W“E>ÊÏ3s=GžJRÎÉõ-òVâÃl\ŽuÐõV¾ÌÂ%²(
 B¹ü29×$X,0X –€Åƒ %ƒ/° ¬(ÚMÄåÝoÙ9h6×ÄXo`å\ûhò’LÀõ#𡬼sÕÑ,åÏ\M6A!|…gi,A
Ú Ñ ê£s5Ѭåà‹+›— 9Ä`™ãÅ`ž‹,öD.1?V{àÊàŠRç\uD98æY\‰c®}HÙ8媣`Jé++D91WTθš°ŒÒË ‹Š4ðZåªBÃ2t,OãQ ÔxŒsÆq‰±FãzX¢Æ#F,Ï%£FL×]w÷Ûí—×cy>|ðÛa0IwÅ÷_†ƒüxÂ[‡ÿîŠG’þÅ˃ŸßÝuoœ*=[ í,¸ö~ºªÛk[ça=xì.Bú±àæØ\ìPƒ–.Î$[q¹¸¡==·aMJ&³»XéÔœ.K™\¬@ž› É貘ÇUùÑv‡]¶cqeSÙàÕ›eN¤ܯjؤ½s’  ®|²¡ÅϼJé\Í Xd°˜ÎEùØÍÉÜZ9ƹfÂ"‚­¨\Õ FÈ1ŒȕυEÛи' –Y¹0p7ñú¥uZj+Cg‘¼c,Òé« …«rÎX•½ÅÍÁ‘jÄ¥{.B J<—°ÒlKÃ7D=Ì:¸ÎåÛÁÉ %i=•œkˆàBf½ .Ú`Ø`¹Š¹2O”,Á W­Ç’ó ìÍПR4q‡ãÚa…„–¤8®´&1Š«žÙ#3ì€á«aÚz/8 [c¸²0Dƒ¢õ ‚«æfóuXiæ*B J‡íÌ\Y OjOjäªÃê.d‡%F®"°îBú°ÒÄ•Ö]È'½1p5Á¸dZ“RW\wá¢ÄÄÀ•6ºÐRVŽr‰» 7æw£\u€Ý…[FJG¹*OŠ…²¢d”+ (2$*ÇVå'ÆB ÃRåÓ©¹Z “s! q5ÂÀÚÛ=W¢È£­ÔrAˆ"v@;-W¨jàLi­ã¡ªnè¯t\5-4”=Ùí§ž±¿ÿ.Ï´’T¹Æúù=¾aÀ
¢6(®–KH·Kh%ºÖRÕÓbQ®•–ër›®Îa‡Àà ¯Çé¹ £^ >ÜÌÑ–œáµCrí´\MçùÖ 1£$UsÑys¥Z®³í%·NH)}¢æÊ‰Îkœ+ÑsÝ´BPf=ègŒàp‡åz7.×MÛk¼b”¾Tq5ÔÊÀµÑrÝD° ¬•T؇ô¹WŠçZ鹊÷G”Q&ß V<×–ByW¤çª/ŸÕPÌ1PRWF4C#×NËu¾×úü+ü’QØV
.A5C#WªçÚŸòáªÕr[¬àª©fhäŠõ\盽§5Rì•K,×êZ[Éu6Ž;êÊ12BªWNZ,×:{—'%WG¤(³ÔgO@• ž«x j®Š5K5†ˆëWC6Ãq®ZÂp ÖbI…Ó5 ÊFÒâ¹Ä»Y¨¹®&EZ,ip-â\9%pžê¹*Öš(;
\n£á¬5;c+\ŒôÅq®æ"
®K‰kvª‰@“¤¥pµ¥×qgéB™ÐdcMãº(½Ž«àôWòD@“ë¢ô:®Œ3¾êÙwCÅuQz WÍÛÃÈ0 ¤h#!r]”^ÃUðûMÏ%s Æð2r•^Õñ6g
ÌÃlì¨\g¥Ws5Ì]Œ
㘴¶ÑR¹ÎJ¯æ½ØER2WÁ^f®“Ò«¹rfæŽÀ8f DQ)ëdÝ…~^¹e¢IàkSYŽ­\§Öç*®³Ý FÈ‘#š ”(ªT?º²k ±ÌukDŸ+?krN7Ä="àV̵ë>š>h¸Þ;а›‚]†Yw¹k6+IlºŠšô¸ Wuáiè†X!dr¸Ñ˜ÄjøCýsȵèÝJ´§•¸rŽlH[âã‹:\…’K\[°'¢@Ø¢C­€]Ÿ«VrU×Ê=öEèà£ÃDïû¯´ùÖÕÌŸêsí¯#èùVž«áxåÛ-â;^WÈ\OÌɱonn0¾d=äª\ÝT”‚lˆ{ó€¼0ÚT¹WWojò$ ð\{–l lbÕ¹.¶*qeÝKž„‰×ñÒáÊY²Ñ˜×Ó{Šyq—KΈÚ{ÈhzªX¯üPy8Å:F—« »òúh9ÔNþnï5ùÒ*¹Ä€+“,¯ñª è¨Wo'ÍéŧñýGH©\SßËy°†ÇeŽæãvQ°2Ÿ,+çEQÁse¼(*t.a#‡s5–r*WÍçª>š^¸
vt6מÍ•4™¿peM/\œ¥ùp‰'óg®úÃÉ<–kÎ-‡Í‹ó·•Ü:\[æ»uîªßFwÒ²ßmµwpœOm›.Ò,²Î-ï\·u›þà,•\×FÍÕI¿\¹r¶ûRãkT§×ćk¥äjÔûËÛ}©4fÜkbÄኔ\¹zß¿h£¶W]nj¯‰;×NÁU UPn9Ár­4áËNÅ•r¸RW6|ŒŽ¹Î«Ëë51áp%C®wшﲫÝÊ-§h®š+Vqõó¡¸g¯r~ô'/ÙÅlp\ëQ®Ó¿^òHjÁZv,¥Šk£tEr<Џ¨ëdÞ7ÛnlÌ\—᯻?"éx@·‰+×à¢Zr—Ûj{‡àꤥÈ]|Ëíé71âp .7.y<€
£®[‘"K~­lâŽÃÕ¿(—óM
-áðì8—Ðpz®”ÃÕ¿¨7RNf™*Œj1\·Ùÿj®˜ÃÕ»¨ðTà¹b\Šã|f.ÅEußÁnßÊ#`ÂÃÄžk¨Šã|f.ÝÀT5_ŽÜp ×^­óŠã|®áE…ÒÁ&ŒJ[=Ì®9·r‡Çù\Ër¥#Bq­Q\µÚÕš8JqœÁ5¼HËU;â*”ñÆË- é5qxœÁ5¼(S:"×Ã%¢"ÎSÇù0\ƒ‹´\?Œê´áò;ô¼RqœÃ5¸¨[ývGסµœm”MçÃp .Òr?ŒjÕ£YU4ñ"Ú4®þE\-š+Uý6.5MìçCqõ/Òr¹ê^,ÕMìçCqõ/Òríùáa«68Íòþ ‰ýã|(®þEY/MõÊ•;ãŠK W'T•šØ;·ãê]ÄçJ\ñ®óÛ‹_¾,{lÔMìçÃqõ.Ê;Š-qen¸:ù‡Ýxã¼ì‘ª›Ø;·ãê]4ˆ£*,WÚâæ)­Š«ó~(EO¢Må’/Ú÷#¢âÂùåªÇ¸äã|H.ÅÀn÷X®µW£‹ç¯AeNä’/ªúC%;s Ï\BsŠCqœÉ%_T÷$[DX®W;Ê.é"Ñ Í« ¸—|Q&°üÂeÎ=Üyä’Žóa¹ä‹
E2þW=/WÁá’.ªn»Ê·EÞÙ¹j—t‘è¶²¾Æ6ÓJ\‚Ã%_”ßö¿ž#Wé“«{œÍ%_T ö+Càª8\òE½H0?qÙL—Q\Ù8WÃá’/gÆé>®Îq><Wï"©ÃÊbB®ƒ¾‰‡K¾HN#‚—qy#¶äÊ£îíZðS¹zýèN«i¸®oÐ4Qp¸ú=w–"p…S^Nù‡?ßÞ?oäZJ¬èžó2Ûâr{Ï\ù'×'׸V”+]&WöÉõÉõÉõÉõÉ…ãZr}rùçŠì¹Þf>ès¥”ºór=ŸÞa?bšK©;3×Cÿøšü²¡ÎæuÕ»êªHqPJÛ:k®|¾!çéw·§†u\y1Ô×áŒF~™WsÛìø9QeäÚÉÔ—Pì(É/4¬®KüuòÈȵ™‚ TSë¼;Àz齺 ®u+ M?\™j« ºã “Òdúu\©l)^¸š÷§»nÝî«ko»õʺ ®Dºµ®êºQ(¾unÚ‘À[v…².Ÿ«öÉUtv¬÷7ïÒqY·äsM]Õ2¿ú®òöNå“+ª›v^Ȭ©K㊯ۧoƒ8ñÆ•u—áòžÒߌ§©KãJ®£0qÙÄóÒŸá¦×VËIÚªº$®Õõq¼=™t®êöÓ5ä$mU]WÚ}tk;.CúáõÏÍÝ[ÙtĪ윑Ò×%qÏ]ÓÆ+W¢ûѧ“T<¶ÔçÊ/ƒô8„wÞ¸2]:ÎeO¹éÀd#©;x®ýåóŽŸ|ðÆuŽš¸1‘†‘¶.‰«¸ÈÐÑÒKo\—½Îûƒ:À:eR¼Ë¹¶.‰ nÙ¯qëë¢Z{þ⇬ã‹õu•\ÃÄÎEu¯G÷å«“Òkmñîm®¾X_—ÂU_ `ü`;®±}½n=é½ÄÕ0V[—ÂÕ\~<ºeK®±}ØByŽCš—ƺ.]_ˆ¾ç²Ú_ÚÌÒ|Õ¢¯Kàj/Žùô[\½,Ú¸ôdЍKá:;æ“[öÉÕyÑ–L¡ú’9]]
×Ù1×'ï“ëý ì —J•l:ZÇuvÌõ©¾—1ïë9Sš\ùPÔuñ~ùäËãÿc—‹|¶—‡á¤¦ÒLrTu \ÕÉOnÙ?×­µ«^(u@Õ%póÉ-OÁõ.
‰vÐŒÕ%póÉ-[raß-Z‹ÁX]—x÷b멸n‰×f®^]×Ù1ŸEr”Ë&ûø*™ìе\cu)\o&˜4·õS/\²{ãb§®.…ëM2âúì-¹JÜú¡k¬.…ëØÓUt}Q7®D²­x”KW—Âçð±‰ËæÜM.ý9Õù±º®ê|²&±çÚO¿6ÝyÈJË5V—ÂUßœº7®ªÛŸûÞmz«Kájn³Q.›sˆçkãï·M­–k¬®!ž—Þ¶%ä]A ®qö¶ ©Ÿ,ŽÕ¥puÞ ë«™«õ¹Fê’¸r—Õ¹ìf¤jŸk¤.ƒ«´çZãÒmú¡ÿ VÑ×%qƒßxàjô
3àj¸ëQ2\ŸÊ(—Õû7䵘_ÚQ.}]—îý¬n¹:}l \Úº$®úêÓǹ¬²Þè!Ón”ØÔµ*–ïí¹Ê×ëMóU|–ïY
¶X¾ë“kz.óë–—ÉUüÓr•‹ä2/pÉe3aþäšžËjb¹h®õ"¹Ä?-WºH.ólõA¹’ere0ðµü>ŽO®¸ö0ðÅ}Ïn‘\ðA¹ª Z~¯Ù\Åô²×å÷ÐÍULMÞá¾70¸@ªrÃ\ e’ºÒò{9ç*Š+[\Àa
%°ß{ZÀ‘›ì ù=Å¡­´e&=@~¯thG„â‚¥Âèo‘ßoXÀQã¸÷}ô•±mç˜Á8lc®Á9æ½Qæ#/Á9°Üè–ã‚s`™±Åš3‡}€²×ÀXcV@éK`3ËÚ¬Þ€ò9°ÊÜX@=€ÀXa6.@l`3°½9êT˜ËÍ" mœ£ „m®gƒú¡€S˜ „A:ઢ©€ìÚ„>G˜ ‡bH}fv_ï\bAB/0Ò -Vè׋‘Ã]‡+_Ž V˜È+ A,0
-V裥ÈaÜ媗#ˆ(ÂDˆ *âƒ-ôéBäpÝåB} Â(»‚Ç¥€VÏP„#C̾:\ÕB")£œ· Å ÙHd.„Ð'TæB,ÝÄ‹u+_†pd8üƒȇxà B8j¤—Â!Gl#´A `1Û¨«>BðÌØå
h)‚¸ú,(ÖCéÑg­¡% ÇÜ ýŽhIÂ1ó3?ú•‚+~€áï€d¼s°=z @KŽy>rs˜y€Õø©bå™H*:sˆ‡–(30Ê&ÐúyÖ9eˆιÈQDs‘ƒ²ÔÄ9£Ò7”AÄžžQéI+Ò@½t>¥Ï)Mª’ζÚ&HšÔ¡9!"li¥åÚ‡kˆ´ål¨vc! »ô™ ±¢g83âžö¼nų¢ †®@žâÌcˆñqCË`3Ĉ9qx@Ë`iˆf(Í4€ó`¦Ÿ¬TÔ‡ -g€M>kΩj-k€MœdY“½´¬ +ÈcX]>±rz‹€5D'V
œéöÔ1GNÀY™8樼A:©Ôï˜gB©œÇ ÜÏ™.H,8ޏÃtºc wàÊêd†kÍÁ…Tú‰:,c=càÔ4Æ €?R§é°ŒÖÛNÓaÓ™_‚& :C¢Åqí±`»0ºk…äªé0‘qƒph­ ±÷UKó„ªY.´v†èuâ,øV­!zÕzìÓÝ ¹ð†èQ:j ÖÖãrfØ ¬OKüñÍPË%¢¹-±±’.h­ Ñ“&æV>¬­'BõÊXZ?Þ¹±´°öõ^†˜È,e \<1÷3–½í#×½{&ܸ¥rU¤ÍJÉ\"š LdöܹK0;¸)82i\o\´;¼•Ÿ'–‘P¬.t¬Â^¿¹1p1_uFÃÒÇàd}¡ãNSbé¥
\EiW°/)áøf08Ô&[õ cœFwžÿf<[l2êR6WqÀúßtŽ*OôÛø\+Š¿S;‹añcq€‰‹ÙaQt_zî¬ñ¹‘‘«ˆ¸ÿ¥ó/9k·6\"â—{”56¼OßYqYtØqœ=šÌñ…Ie˜>˜¹l:ìŒöªÿì§Œý¹K.ê4Li¯ƒ~/ÛÌæqµ¶\Mä¦ÜÝo·Û/¯oåe»}È,?mcÍå¢ÃœSþ#†KȵqÀe'‰³tŽ+¼Û9á
®ÃÌK_8.±´îBrvm¦(ˆ=$W›…ÄupÇU/«»Ð\¬•O_ºäj‚áÚ´.¹‚ÑzÜöžKdKÑxw gÑ q!Øý^
—XŒÒ¸°DôÖ!‰kvKÄgиš…X!•kæø—°MäšÕ)¹/T®9½3eû‰Ê5c`OJš#sÍ6Ähi/t®™†1±ŒÁ5Ï#îí2¸fbÔ,%=pÍ`sM®ôT9×ÄÚÁÈdr‰<\)´ášRY©Ã\®éÀx™dl.FÚÏ$ŽËšk¢ÉóÄ×þ9椰áòoŠü,M+.ß`ɧv\~UÑ&Yؒ˧ƒ¶Ê¶åòf—ŒoÍEΡö41qÏåcÚb™®î†Ë½,ÚŸ›pÂÕ
·¶øhß"7\o¶è®Ë’CW+Âé,—\ŽºìþІÆÕŠ'küâª-.¹ø©ÕªGw-qËe‘^HÝž“‹Kæ–ʇìþ‹ë6øà"æÅÇ[ï¹ðÃõV^qÙññýw/·÷Æuê5ƒAÞm_}ÝÛ'ש۞¶wê~z|õy_ß\çŽ;žpØ>ÜËývûøúêý–“pÍPàÿÿÿârõä
äÿÿEÎË‚0Ð=_q—šØÚi냥
&î|Ô PC€´UãßkݸšäÎ=“Ùšd¾O!L•æKÐZó5L5Áîz¼àÐëꢴȬo›>ŽÒµch‡~jî_­A5)É).#š²Œ§Xd´à)˜\r×yá߸ uxÎâè†êQÿ+jõ}ãgß®mn”¦+&…3lºçzœ­·îi«Hs“œ’!@ñ endstream
endobj
156 0 obj
6290
endobj
157 0 obj<</Type/Page/Parent 153 0 R/Contents 158 0 R/Resources<</ProcSet[/PDF/Text]>>>>endobj
158 0 obj<</Length 159 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
ár á
äHendstream
endobj
159 0 obj
31
endobj
160 0 obj<</Type/Page/Parent 153 0 R/Contents 161 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 10 0 R>>>>/Annots 15 0 R>>endobj
161 0 obj<</Length 162 0 R/Filter/FlateDecode>>stream
xÚ¥UMsÛ6½ëWìädÏT¬HQî-Ž\WÄaM9Óƒ. JˆA‚@©ê¯ï.…²âvšÉx†±_oß>,¿ bá_ ³ÆS(êÁíjðó¯7Œ`U¡e:›Ãª¼Š!/T˯WŸ5žyëpœF‰³G1,KÞXQ‰‚Y¡ïšB×dMÉuµDc¹®XÁ¡äFlúWhÑR$”ªèjÌ­V{´Z&$/¡Â'TJ×ÌšŸ æÆ°íÙkJ
ÚjVS}¬=ÀB5{‚§Cî`wÞ©ºÆrOË?!ÓI4[ÈÆòÖWoÞ=eù›õ5|âÚ,ì1ú–€$J=É)ôãžë½àò½[ FÑ)¦GLÇ{H§q4‡IšD#¨!Dÿ&!÷èy›¤cÊO`z>´J[¶A2ÚpÉŽ\»Þ¨¡u2™7Ì g87Íœ‹qMK ;f`Ã91¿ç}JØÁ±ö°ÞÂÕm_`’̱%l&‰&á…zy¥÷Þ¡†yü54tN¯7‘“\®*{`šãhTÙÖ¼Ä6:a«ˆ˜ZY޼`ºìy1JvNVD “ÒÏÅP*mœb:ƒŽàÅò!¹„ñ~r1·\?sÉP ˆð`(EÃ{Y($H¦^.92NyKòk¸íe‡MZU(IÂ[féŽy_¢ðšÅ:lKή7ø¬6ÿ—ŽwXVèýa\`w5P ÆIîXà}¶ Ï?„[t+UñLæüÃ-šýmzÛ¶9#Ôõ‹ž#ÁïÜ.„æ…Åm€@pRLuQÜt-IÕuvšã(éwMACaRØc ž•¥$å ô³oÁm´:ê™ÀdÊØÜ­ M]T[œml$ó}úkðUªõkuÐ!,&‡XWž¹uMÉý]zu–Ô+λ¿Eg¬ªÅßXi†ªàþá îwÛãBPE§5."y °Tõ­×$šŒÖ×½¬G{ðq™¡B˜uÜw”쬥F5Ã3¾Ÿ¨’œÕ-—ZN'¬ß2Gï]–|¸¨zŠs5B»¥¯ŠI Æ¡q¹ÿc;ŽaqÚêçûñG¿è¨ô–5Žw QîÊTJJup—Ÿ;™™_|±"Õ“ôó\'Ó¼Dƒ¼áù'¯èQž˜y-
“Â#¯8N¸ð;䇎1Ô¯·G¾+GŠ9îþú±Ì᯷Òâ;cßbì½T¸NôÑ›æÁ4 Œ§“ èÙMç£èSÓqøÈü1øøF•@endstream
endobj
162 0 obj
957
endobj
163 0 obj<</Type/Page/Parent 153 0 R/Contents 164 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
164 0 obj<</Length 165 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS045Ó3T072PIÑPp VðÌ+I-JKLNUpI-ÎLÏQÉE™%™ùyš!Y\º=ºPMF 1c=30ßPA!89¿ ÂÈJm!endstream
endobj
165 0 obj
116
endobj
166 0 obj<</Type/Page/Parent 153 0 R/Contents 167 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 10 0 R>>>>/Annots 54 0 R>>endobj
167 0 obj<</Length 168 0 R/Filter/FlateDecode>>stream
xÚµ˜MSã8†ïü
ÙªÄcɉ?¸†-¨Éb3§½G ÞŠí¬íÿŸnÉ…È!°EU(%[J÷«W­ü{™ œy‚9.K²“‹èäÛuÀ„Í¢%|âz>‹§‚=È¥,ežÈêè…pO#cgb Yœ]>ÎC6+m&ó:®Ó"×ø„qÞà³\Ä£gÉ–Åz]¼¤ùJ?¸ ²´be;ë‚=½²úÞj™38i 1®5ÁØ ×c»3Ÿâ ãËûù˜[üLÏwYäËtµ-õ|÷q¯$ÆfóuœïƇ…sGϽÁog3<|­j™±Û¼–å2N$›É*]åø/)ÓMŸ›M1§ë¿Í6ë>_Å’ÁÇžßcLëW»ðbY¿Ä¥dç‹,ÍÓª†üe…ùÙÆë#â殮þéç{–>/‹UgJëèu‡ï­;”ɶLëWØ›¢¬ˆÍß‹ÉêXá…{ÒðXÉÏîçìý°?!**îMíZWëíè½ ~Ôϲ쬡:Ðò"ïXCÅpŸö…«èĶlð>|áøòphÙÌñXHÆ<Ûò›Áš…ïЮ~×Òœû8ç.å'ƒ<!2ðc1ÀSx!,ÏÌø©y2ò„Ș#†ÒC à]Þ}û=üÔ·œž÷&;ñ/ÞÔ«\±^?pv9þD è|Q<U*q¤èÁT­ì:]Kv]”Y\³p#“t™&ÊEG¸'–c¡TúyínÞV]cVùv#Ô²štêR“ººQ—oÔÕò.î8#O¨>˜{O àÀššyBïamzþ€jz\ïØ7Õ¼‹óÕÎé¾#±è9-ìj‘b-q?8FÏØŸÅ‹óE'ŸPÖìÇFêf¡ú›B¼oÊñ¯ò¤X ¯a਌óêÃGH Õ­ ÅßlÓ…<.Î}±kµ Pfq^§É_Πp{¢jî*Á¨Áû™*…4´ïu¾O÷ƒ=€SÝV þL<!€÷•7šxBàþ ¬€ðèÛžj}?\_»^0bwi.{¯ŠemL]$ÅúË}HئJz`¨RK«"˜h@À)U
'FžèrȺ‘'ðzª‘'Vu:°~JàŠù7ò„>°»Ü¦]aT˜ºÞ¨í¢oŠx]AßTÂFÖWŽ\6'ÚÍÿ§#ȘÝéH L:jh-M¨´‘fœ¨#¯›kŸŽ<²î:°—<!°s!K&ž¨# >%ðtUª5ñ„ÞÅîÖÈx:OJ`¯·[ÜD¥þˆ=¨C3^K%Q¸ °°.·I½…^®­øF ™ÅzÚ…0Ëü3¢v±ùlE­&Q7´Ö¬&šcÿì>s¤Ñ94„™'ðÞ½Œ<!P¤Ø xJà#@ÉšxB` Èwy€ˆÜ©åÁyo6Xç'Y¿H™³»ùL)z™®öÕ×{Ü”«;‰–ƒ˜äÐкÚšèq:†§žeƒ¼GyÁ‡xJèòš—O ,¯³“œÊ;ú¾¦Êërwľ¿B{]Ë_µn¡½ïªÊÆcö=ŠTËúõvü¾eÕSZ×Ï@[Vo 8%°õ»¹öµ >Y ¶"ž‘§„>dÌë¡DÖìF#Oln\t£Ž?@NÐ·Ä hn°âì| f×u†œ±‹¸Jµígé
3;OYUûN‹ÝÇõÉà·JiÇݼ‚ýçWî‰oÃw°ñ3§QÐ_'¿Ý7UXendstream
endobj
168 0 obj
1339
endobj
169 0 obj<</Type/Page/Parent 153 0 R/Contents 170 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
170 0 obj<</Length 171 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS045Ó3T072PIÑPp VðÌ+I-JKLNUpI-ÎLÏQÉE™%™ùyš!Y\º=ºPM& 1C =S0ßHA!(5-µ(5/9µÂÈþî#(endstream
endobj
171 0 obj
121
endobj
172 0 obj<</Type/Page/Parent 153 0 R/Contents 173 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R/Fa 9 0 R>>>>>>endobj
173 0 obj<</Length 174 0 R/Filter/FlateDecode>>stream
xÚ½VM"7½ó+J +AgøX2§]2H\¢l†h/s1ÝnÚ‘ÛîØîþ}ªì64=Ãf¥H™‘À4õñüêU&ð€ÿxœÂlY5ø¼ü¼YÁôv~³x\Â.Î`«7ŠÉp(XÆí‡Ý_Þvòldzy:õÖéÖ%3,CSxá6BFû9L&­ýô1]ý®ä]ì-Úd9/„âÀ bu-ÔöÜ9W°ï…»ºX`*‡QþT"Óy/Ú´‰®„3Ofi´'ÿÚºZ9:3«x%”cû¼Ûø”¾Œ@s
þجþyËÃEzI)è§—õv ŽŸÍ0)WtÇRd%Šj3#öwÏ¥>¦°ÖU…F2¦ð¦Ëd“Ó÷ç¾@óCKóð§[Ú‡Wnz°ÂXäV˦RÄ»¥—bÏcñVé¼-6–{9þŒù±¢“W¯‚¢[ÇŒƒ£pe› g9^î—x±EBµŽ§ó!c‰1oó½™ÙFK$1„äR(ºÅÌE©y°Hm¡MÅœÐê~Þ@•dø’ Ã3²Fä9BWä-a¯%ªÂ1)2‡sˆÈÞIû#qÞz 3Ã;$'ì Ïui!V—.ÛÉß<ÓÆp[kê ‘Ñ“o»“¨šŠT0ý¸èÉ¥Ó}­),Š‘J‡Ù8CŒnêQ¬æm¼ÃÂëЗ„ª¿kë^Pöµëå“¢BòˆâôõuW¸|c²á¡ž%?±œg™Oo #Ý-BÑ~•êó'¬gÈ:CÜ$Òi“Œ 1NËÄd R™‹  •ä…;=6âPb'û7úLϽÏÍødØ>T¿s1÷á~%9ý Tj}É1×ÍÏOPq¦Z»ÈY`ËE†“Ï’bý{˜I׺¾?Öº1kNkà>ôß|Œ¼ðGÐUþå&£÷Äý¦QÞj<&·¤Ù†æ,ÞÝ+®F1㌠Bmq³%Ð[+yîÏãoLHFdá6‘ܳôÉ”÷Á—kZ°¥n$Íeœ!Ö¡è_‡<=¤¼œ+„ŸDŸ Žï7Ï>Ö¬µ=
){0ނ¹>*©MvQ€âOðHXü–B„i!’M axÅ„òºô“í²?¯séŠ;/´OœD ëïa¿Å:\ø÷zðþà<àŒ·;%ŒÁUÜ)Ó Ðß*ï®ÿÿ¾W¸Â¨hywl?ß¼éÓèß«W1vþd `å¼Äð¥ÛØ+– E±M]kƒâé—ýîVóµ? þ·•¶ìr3[¥íÇ{¿çˇt…åC£ôùy7ø2øöïR—endstream
endobj
174 0 obj
1017
endobj
175 0 obj<</Type/Page/Parent 153 0 R/Contents 176 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fa 9 0 R/Fc 10 0 R>>>>>>endobj
176 0 obj<</Length 177 0 R/Filter/FlateDecode>>stream
WÛnã6}÷W üä,×’ãKºOÛìP[ÄE_4EÙ,(R%©uܯï )ù¢f[„HbÑÔœáÌ™ 'r˜ãOýòzôÓvôÃ#ƒ<‡m…oV›5lËÉ£´ÎØþ‰ïîºw`º„¸×ËO{CÌ
ðé ’‚½:5RÇ—F{¨YÓH½Ç æk…k Ê{·Hè#0”{•u[ƒ© X®è¼9dùbV©üÀ,ã^Xœi؉ V”p”þ€§ ư·¦m¦aë_úz3¼L&:”ùjœæV6~pž’µôÌK£g/`‹¾ÏàS­pÁûƒxe¥à²fjvKê)V³;ÒóYZÁIÍ?<ž7cåOal½Qø46.Ù©,%GKPJ‰ÊgÞdVî~
áAßi?`nvà“e;ÉŽyñê¿oîï²ô‡ÿ1Õá§ã`ciÚ®?B\@-˜v1¬¾ç,²å `£S†ç§ç‡§'¸Äu`g—A¦µRXð§FTŒ‹ï›þ‹±‰)ìŒ*§€ÁSÑ÷+O¦o%7ÉgoŠŸs¼?ÜQζŽòÚÆŒk0™…+Úhu8ƾ1©‘….2ˆl"¹'Óƒ—cÁL«JJz%Ǥ™ˆÙ~ãçSæ)E¿9¡Þû³Nö(•˜€ŠÐ RC|”樕ÁT.AV …À*<’- †œR¯£ýòuGû¢ˆ´“ÊŸ™Þ·l/àQ*ánY¤­g+¥*R½hE¢PŠJêH2.Y«ü…Ap"6†]C©XFT͔˜iΡž®Õ Ç½æUë‰Øx­Y.îN´J¾Æ–tIkÞ6îqìJhž%*é°k£]ƒõ^Q>ö(¡©tò¢*žcHÇÇ¡×èvÔ Rm,W‹°Kã\©WI¾=w\,% +ô–:ô¤4å+ ô¤Ž€·Ø‹µÇlÃeöZþ¢—÷c Ylг!/Åj ƒz‘Îd›Íò>ËoW$ü'¬Hƒ-Ò`wi°el•[§Á6i°û4X>OÄ%F.O ]þ¾Øµ.cŽKù>¯ÞÉþ/xstÙf}—„Ë‹å<˜§Tà"˜LÎ2¸J®S!q²ÛFKÚa{¦{ÿ\Ë9ÞÐa ×Eƒ^߉a¹ê÷ñ-ŽxóqºÞéd Ûz'ì4Nø1¹ãõpVÅIMÛ”ŒF 2(ÌG¤žUtñÐ×+A¼|ºÑaÓù›/W³¼ÿ~ûú O‘aÐù,œÜkz„™¼›³ˆÉÖÅœ@!.‹û9ò3ï'7F/Ûѯ£  ³—endstream
endobj
177 0 obj
1016
endobj
178 0 obj<</Type/Page/Parent 153 0 R/Contents 179 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
179 0 obj<</Length 180 0 R/Filter/FlateDecode>>stream
xÚ­WKsÛ6¾ûWlٜքV$+39¨Ž=ÕÁvZ«—Æ=@$(¡&ã(qÿ{wRÉŽ=•fH‘ø¾}aÐǃtñÛƒQއ¿Î:çcè`–áÊð¤³ôð˜ÃÅôâ Îe.ì«Ù?@qĆ;ýóý5TVXpw:2"€T ë¸J¹I!Ñ*“‹Êp'µbA*4òÆlP«e=(d!˜[•;[ ¯RIE†àš‰^(ùE¤a-ÀвÃJ‹–é ƒ  ÚÈ=_M®O§Spâ³cpª‹B(G& âÞ1ë“êE¿Œƒ;é–^_©+”}sýݼ‚dÉ Oœ0 ÈÐ9OnmÎí’77psA!L;/L (4…{«Àé–蓪•%jŒ'*2»F÷‡! g<Y‚Ò*žç\ݸëyØ4
ÈÝ•™D³ÐR[•ÂthƒºÀÈ ƒ–®ŸN.' &yîcÖ²4Óy®ï¤Zxè–Ü$#¸#—qWÀ
#Cøýr½y”(`*L¦7! º0¦$À¬ûƒàå@ìIoÞ‚7¢NÄ|…ë÷žÿþÜÖe'D H¤|…ˆÇ_"¸‡hÿ}‹ld·xý•ùk7ï {垌±˜wèÐ=Üá–܃F¸Ã D>†;˜Š¡Þ!hCßmÊnõA2"ÿËë ñ¹ Zî[ph>·‰”×Yf…ƒè(îùÌÒHåø</b[‡ôE^>E¥¢àRÙ=z¿_fKÆ'žWâIÓ—Ú¸—1^/¡å:á!Ê[~µÐë£ø…%|>@®ù0¹|ïÓAjŽˆ…eô€uõÇ㤢õïP)nVpy5 œM/}nÞ”xX<”¡ïnà‡¾{·P>êmœou•åZßB†!@y˜úÆÏ%%pV™[˜¯œÀ úvÇÙ-ã ærcÿ•\aÏkº\«­ÚºØJlQÆC¹ (“ƺÇ[?Ì,ÌÕOÿ×`Ë#·ž7ÚZÕƒž5Úž9gÖǃ֤±ßŽ#J#,êÉaueA>¶ O…E?R„Ïà|÷ÌÁa,8ÆÈººÂn»48{Ý.7ô‘!žP½0¼ uœÌ ¦ÙŽ<haqª)íÀ–"!ÏRd6fdÈ’‡ˆÒÁŠ
í@/1”’òG©Zf*q£±tWûGß&fT ›§>=z7ñ^Û¶ÎÊѺòŽû!+pUúø}Ç9¯à2tY
ЉC^¦à›>M1ÔAX8Rá Ê‹mQA—í
ÏE8%ÕÛ
òF¨…F¡Üfo«Ä=muˆŽpI'©JÛÉËZL«_ÐæS™hžú¢Â*>‚prÁçùjÇÆSûÓoWg¶_'«Ãng¼L/ Ó?ç ï´{|µ¯MË0à±Ö…ÁÀ—¦/ÈZHØúä©ñ½ÎÂû¦vögÝ; ŠTÏÞ†ZzðÀ{ð"ïõ»xÂŽ_דÃgÖ”¶>#¯QvVº%Fz!D{¯‡ÈŠGýnóç¤õïdpÒecð«#z>ü~ð‹ãØÞendstream
endobj
180 0 obj
1192
endobj
181 0 obj<</Type/Page/Parent 153 0 R/Contents 182 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R/Fa 9 0 R>>>>/Annots 61 0 R>>endobj
182 0 obj<</Length 183 0 R/Filter/FlateDecode>>stream
xÚ­VMsÛ6½ûW쨇:3MR_V:=´IÜñ¡5V{Ê"! . °hGÿ¾oR¢åXr;Ë@.v÷íÇ[ü}‘PŒ¿„FSþdåÅ/Ë‹«›˜æ´\ó“é5VùåGiiQÊ+¥­:“d*§ŒþéQÍÑ&Š¢gÞ-.b&qtt­ESuÿ–ÿêÔÕ͘’„‘u˜NYñr+©PZÒJn”ÖJoèI¹- ZR:W™pÒ’ƒlÞ:#DJ ¶@kSSU+íèÁ¬ì$öR^³ÒþdceÝ¡E)ÒZpÿQÖµÊ_˜YCEÞé°;ëdI½sQ@&Zd1ãŠÆ¬ü¡zû’TÐr±†£ÞmYÓ_Ú<Á„ñ¯ “‰‚à.\z]ÿm›…c™Ð& ½#ëj(,ÒÁŒýtS®üBè<„EçØg¦Æ²btFÙVÔ"㌼zã¶Q¼Î>g®–¥P¬€m¸.•™Ñ
•Œw¶ZYA¯C<Cm煪ɗ‰máÎ)™µpGi07Š&´0ÖÝgµª-ÚÀ¡UüÎÇ òaŸ‡ƒýE¾ÒÎþr9X,>¾¼óiµ\`x‡@2¬LTb¥
åÞŽÙvŸ;Æ j_`9­vôáÅ=yTk¶©*S»îÔÐV2Sk•ÑZ
×Ô2Ă߅ÚH3ü€ xʸÃ4ß%J~Ó}«ÎwËZ^ÄQ ºá¯„¿>ÿJÉäÁ'×8^R2á7ì
ºdtˆÜ8™2Í6|Ÿ ÙJḒ»ùîxÝä<î™LGSÊÁäKù¾äg1ž”ïI”4Âïiù¾ä'q4;-ß“(iÏøß—€|:>£¿/ùÉuþ,%GGêÍ>‹mz~Î Êt)³íq’¾›Äñèý[z…n|._M6€3Aý–4åA6߯Ñ(iÎþŸ’î  “”S²gÐØNCã<«lúœÄ¿ãhäl¯9nƒsyº[ÒОŸ¾:©­§ P÷käÁý‘ç¤ N9kùDÂ^WM˜Lh æ€CO¬daž¾³·÷¨³¦²7¾Ñ_ÚÞ-š­¥ò½MðˆyôãJ0ß>¶a©›Bv\Ìú>h=Ü0†(7¯Õš¦Îä•ÛULØ–‰ÉljQžœÔý©ëOÂ3amSp;¼Z~ûÞzˆnûc®%Á0ƒAO®j™¹b^pÆEqD ;7i0P)v<êZ*•ù¹p§>Ü¿ ݈⃩ԷÞúʘBbœ¢®cKÀçÛEKÒm¸£u°sƒ8ÚáGÀ«äQK^Pé#°˜¿ù
*¢eï6îVpl-
+Ï¡´&—ÅŸú§Á²«g{°]\í!ƒ‡±U²Þö:Á^BCØtn
zž¹#¤(‘?46DÏ4®jœ¿Ñ :²…²n½8‡|ì‘/jÃë_öUtf
µ4á†ø–¶Â 7EÃI ­•3Í8$[”¥ UÆ þÁ{ ÖpªL°N±N±NÓ ùºu7IyºMç“p äuË1XãBÅŒ®6ºOì||˜`Š$4œA+]ó³*fw7©7_¥0~¿øÃPÁòendstream
endobj
183 0 obj
1199
endobj
184 0 obj<</Type/Page/Parent 153 0 R/Contents 185 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F5 5 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
185 0 obj<</Length 186 0 R/Filter/FlateDecode>>stream
xÚ­WßsÚ8~Ï_±Ã½›âúèôn&%i'¹Ëz3É‹°å Ö–¨$‡ðßßJ² ˜8¡¹Nfˆ±v¥ïÛývWü8 ÀÇ¿Æ!D1$ÅÙ‡ÅÙÛCXd¸OưHû‹…óÅ7\Š«¥¾¤Jä¥f‚»…Ú§„§mc½]Ó¶ÙÉKª  [XRè z DQ@`Ãò4!2õào½¢rÃ|ØBQ*N:YàDf^»½ýö ˆ¼Ðÿ܉RH8ôêßД‘ÅH‰Ö’-KhSš1NS`Ü ··—±œzÆ coد”rÅôö„`Ý“¢ Ñrçƒ5±¾Õ¶@Òo˜‚r YÉÃT‰AÒ+¢ßÕL§f3Lô : Ù]ÿñîþhöùkãIšÝ!î Zø~¼^IQÞ¯Ž,Ãðyš¢Ç´$\eBbÒ +ü'Ù#à ›‚ÙÍWHDŽßœ¯Ó^´÷ÔÐD†¡ÄÖëœÑ£à“LSyŒßsˆÄsfÓêêôGÞÈ ½$åZýK¥:’ßTŒ¤?J&M#5d |Ä`lV óøàö©³/·s¸¾¼„ –K©ÐµH­I ÚDApåµâ0+¥D¥ä[`ÚÔÒV(<ßC/ðüž©|z;žã
{Ö<c˜'+š–9•0<c÷¥tiúˆÔ1ë±×èF5ž’’T•PйÜßÅQVõ& Lò@XN–Èqx1aê $9QŠâƒ©
K¨zw˜Ý½°Wæž9î¥w(Lw:Ê&ÏëTg×'Ãw.6Ü41É­Ò´ðÏìïmÄ‘þôùfo”7¢b-$3_Öˆa#dŠT'ž“Ärë°Ô~NÉ_‘çB*îzÈ´Ñ‘@wJ¬pjÙì›9$ø¤˜ÒÊÀŒl !)侺˜Ï®¯Ac9x¨ÑÂöH·¨4‘G^9ø¢DíÜõ{¿õîÎ[%“¬ˆÄáTÅpOHW‹“ >Xæ„·»}ÕncN
;©HKÝ.ƒìS*ò\l\ʺÚ^æZ™[²l!jœ1H¡cäµi%úQ¼ÑØ› ܉ƒ{Y{£÷Š0ºæ½m7ëzR^-Î|ÏÇ»AóñùØ¡–pàOÍç¡àÙó'Œƒ(ò¦•u„§÷¬.6¡?qáý̤×FìÏá÷oíš}íÎÏÛ™I¹7Xu8m²¦Iw³ &”ÛÍvµgÙ8kÇfgl,‡`W@/iFÊ\ÿb*M‡OÝöfDhÆÉ)4G1ŠàdšÖº“f4v$.’„¢`œ0Y¬iÂ2fg5×7 Ûñ1£·vN7ðM,qh߸k`]-vr ö"ÖûJ•I‰ÞKlÝç©l­u'Û p…saªð µ£ë’%Xý8K±ÐKcçÆ–©MR·½àâXR»x¼DÅ5ú|¹ÚœõÕf©LCÊ„s*ç¦GuR1ø–ÖαÀ¬¹æŽŠf¦½
W7Ÿñ6LL_ 3‰=ÿd.Ö¸‹Ê8Ú¹âékhØ‹ÞkXÄ»Rz™E¼«¤c£mïåÛW*‹ ý?Ô5ÿD+·Æ]T¢¡«ükž‰ ;zKWWZ;cêÃ)(íè:yàLšbnÍ›I5oLw3?x-¸êmn-I(àZÓpà|•“½Þƒs½j.Ù&þæîÝ\|‡YiÅðŸ³ÿ'bQóendstream
endobj
186 0 obj
1291
endobj
187 0 obj<</Type/Page/Parent 153 0 R/Contents 188 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F5 5 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
188 0 obj<</Length 189 0 R/Filter/FlateDecode>>stream
xÚ½XÛnÛ8}ÏWÞ—ˆU]}Ù>¥q[ØK¶qß
,h‰¶¹•H•¤’Íßï )YŠY
u8œ9s¥~\ćø“ï>Å$ÈvOÂ…“Å*!ÛìÍo2¥†KñvûÏE௽ìƒå+bØ¿¦¢9Ék‘{bŽŒ¤9ÕÚCøÇí…ïùpÐéñå3 c”½\y+âÄk/$Š‘»ÀA…+oÙAƒÆNÏEoA¥[Å…aª§è]ÉR¾çLJJ‡5©!W
Vì`á5ª'V驪[ô êñÞ¢’†6¨8ªÆ7ØÖˆ|¢ï{’RAvŒÌn²œÍˆTdvgdY²l6fKìÃs²-=hK¸„gcËïLkz`g|Ñ„Oád/•³©RŠ ãlsæŽY Ìd+,ú+Þ}Z“ Æð÷I²¶¦DÞiUêÌK¥Ø£m–ød.¶µj7 ²ç9ü-…æÚhtU€>)$”sÁìÒÕÝõÍåÀ#ײ(Ðb÷,V†<ps´t”²ùöföËìÛ[<N "Ð
ÎMÚ«_XGÀ‹4=!Å|—SñÝ
vru+XÐÂÆEU÷üP)—ÅW,5ü=’çòed÷H8l½§yÅ<‚ÖºW\z6ƒ‡Á\P)m¤Ì~uÔ%5uÉRv>°ênš].\/pá²a{Z寮&qD¦SÅ˦& ÇE¼|M¦:ô:|/H1ežß¢'54N"gâUšBœÿ&½Œ výïܽp§×\>Íÿ~•uaù`ãͺEÌ;ÞÐ(R̺z¦5 gMµ¨4xÖH¢Ä—“Ös&Êæò²p'O9†xòH^ÆQŒôXcãçù·hËÀ9pÍ¿;þ[tSŠâ ®YÇ(í1>?]×^ Ò˜£ò–ì•,œ­µ2r”Ú\öÌ<HõýÓ;“åbŒ?8EdÂÂyF,Úªz\3bÁŽ‘Ý0­¬ÂW•9^c]㤽l•9»g¹- J¯cZ¨b?*Hßì}›‚>ÚžôU35»„Žd£ff¹š}V²*ÇšS´XŸÊú8Y=,$+^בÖnË~ûC
6LM/Ð T2… õ¾Ÿª ](éú@5Ok¶6üÀ´¥ ¬YM§Ë¢§ÒeÁƒtKgÃyÄ®²L±g&‰×ù?L%;%i–Rmu¢NUêúëí]/Ìvx&ô!RÒô;3ˆãÉO3Ïž,z*O<ÄS¸ŠÝœZó4¥6µ¼`ýÑ5)¬®RG½¾¡¡ÇN·z룬ò¬©ü#$…ËðTºÇIrè‰$9ð IIèJ·#iÃÄãÿÏ‘f*OÑúÝ¡§ò­Ïô0ˆº<Ýàµæ³W‘?2Uˆª¹þh 0Ó`·y`L ±U• äÚ#Ww4
ñOb2®é.gý‘BVæ ;é:Bo°~ÍáÐ'𠂏“©ªìÙ­ÒfïežÎ¥Ñs~%nEf:9O¨Èz´´ÁÞ¿K%q(¶š^o× 7\Z™3¬‘¼(sžr“ƒåÒ¡¹­¡GöØo:8¢ÓvƧO´ÄKöŸþ¡­åýC­¨i§‚~üé¡Öx<s,$üöËÁ*êÚºç¸ v!Ñ¢›X­»¾º… ÐôÂD!/Ô=~x€ vÚË.½§<Ç$i>Kè"ÃÞ‚ÙXž,¯hiYìP JÝ~v+•é1²ˆ‚ósÒ×Í-ð×ݺ=Pt-;®ºôؘV5âø½+ާ·®8>Ó¹¢ åâ Ëépßzö)DËJ¥ ½‰¡ ®5ãÏÞ%á™.„ÕGÝð—ó-h
´e±è²”ÿ´\ר¦k[ëÐa?ÿYÁñ"œ
í[ÔûN:Ø«þª¾ê Y†Ö±vJ%¶!ï)xuÃ4?Òûj1w{æõ¦À6êØÇ8÷Û/O½OO-›Žendstream
endobj
189 0 obj
1507
endobj
190 0 obj<</Type/Page/Parent 153 0 R/Contents 191 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R>>>>>>endobj
191 0 obj<</Length 192 0 R/Filter/FlateDecode>>stream
xÚ¥XÛnÛ8}ÏW~jø¢«m´(v›ô4Ûvï[-Q6·é%©¤þû!eÙfbKÙ¢€›(‡C͙ÙCÿ{ ü È4$QJ²êâíâbü>&A@ ÃÙ(%é,!‹ü…b%Ýr±"K%4S„‹BªŠ.)”¬ˆŒèz)˜!F¾\üs1!à …¸š
iÖLðñ»ÅÅd4ÛoHb’¦ lHÂ¯Š‘»' Aæ=±a«£…寇SdçÙ¯\­,9vœ†½±‡q«£•øP|ø;ð§X³·¶Ðwk©ÌgZ1µ &sÜÿ¼uOæáhJ0*<ºÛ°Œœiò°fXo"ʃÈFÉ{žƒB0»€Ã‘|ñÀÍZÖ€_32ø TvÏÔ€l¨2ß_äUIà †)Ý¥§#»wîQ‹¶ùôàЂÃ(=b¼ep2Ý3¸àƒ¤<ú¢É¤¥oGÀž?$@ÔÕ),ˆf™¹F(7¤†—>{ 59Ó† {,5¡ðVøüžåîŒbÜRf´ôÎçÁ*Rrm:ˆMfSÈÃe£|ÎëÐ6Ós`G¬;b÷è±I:k‰…fäqúEôVd£ BEN²’jíúZó€® tY²üɨ KPæ1À8ƒ/E1èb*Iž!A‡î)A>%Á$J×ÔÐk®<ªÆµVc½Œ³zsæ$£br®Xf¤Ú"‹°ËÕ__ïHqIÁKfe汦Íò.nÂp4ëÏE÷寂Or[Z]³‚Ö¥¹4óO(×r8%óaв3ydƒf()ˆÔ•ø$jO0ÆÎ'nÑ®Qœ7‰[°K|Þ%Ï'(Ü[ßR±ªéŠy™gµRL×)XŸìË&PGâñ ?û&îÐ=wà“‰§ñ®âbëe;ôÅÿµ†¡é
нí¤m÷ÔMþ9YKm.=݃ùyêÇ%¶‡\V”‹.F_¸çpèžgÀO8š[>dVWPëoRšÓ-"—ÙqxJ
M$×ÄÛ÷.¢}#è!‹¨m=díÁ²˜4%§”T·Ò( ÿ]ºçgFµÅÁqYÙ†hÏ ÊfD;Å<š¸è€È@o5¬ì& È.Ç)¯Œ¥6¨?‘Œ7`­(·Ú°
±LG0]ÃÞƒÛ¡{n>5¸£tê˜þ d½ñhF±\b—M&çÇÑ
CX ‰ÇìæRC`P[ú`D 1U Wöú³ %šÑ•¢U—Œ’øÊ¡{N>u8£ OxóÐcÐ|ßJù£9‡~§(Z¦ìº.ÎJö¹ùê_Óò\1ðB¥Û׬˜³ã0Ûj`2ÿŠTt ’õ]è±7"x…®ùJÀ+¦Üúr{îÙ¼/CŒ¬õp ¼sz)ÀÞxrýy‡Ó( d ¨…íæ(PD/»:S8Ûw¦)¶Ó³
ph[Žs`§v
Ø£w
[á›jSòŒ›+´¨®`~7h͹òÓÚHì0ÔË-É£æQýv¾8sÚÓä…C&ì Ê/€+”ƪÛÒû930àpbË«“VDþ<Ó`‡ð¹ É H8_!‹¶Œ7²`W¡=º­Ð$v'îc›ßK~ÏþÿmнËRóq±ðO%n0´;jV«öô=‹©`´®³»›9tÏnæÀ§ºY0 x:u!>ßõi%áÞkû¬GÊ~@À#Îe´7o„Zê–¬@g¥Ä[á]&=HæÏ¸¹9t_º,ø$]qêRx}Ûø²¡fýÆÏðõx÷÷7{*ꆧœmÍ 2ÍÞ(žèîö}#»H7ì?º/)|Š”¹=jàÐnav•þM Ñ£Nx%…Q²ôÅsäžß¾iÅòG6ë k7"WΩa#„hƒœ-ëÕà’ 0îàòÑ8| JàŸm˜½ ,†aƒœa¶z”*·ýÀ{ ˜_K¬éTéì]Ђ{6A‹=ÕãÀqýýyUr0ÿþ„
:¿åªèO^ÕÕá·]ð{i¨€áÏ0!x”3·Úk¨Þ=-k;eìXv¸•¼âÆyé`ùUiF”‘Í~czOy‰_õ8Ÿ3û‹îœAí­¶ÛT[pOOm±OXêñûYó}¤#üþÞ²íÜÑ ÒPPðL× ­þgÉ[&Üša³(a»!x½ËGÐ5­¥Œ§hO] ƒ&ù?/þ¼)0`endstream
endobj
192 0 obj
1711
endobj
193 0 obj<</Type/Page/Parent 153 0 R/Contents 194 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
194 0 obj<</Length 195 0 R/Filter/FlateDecode>>stream
xÚ•XÛŽÛ6}߯ ¶/ °+ëbËvûÒdséIëî:o
®DÛl$R!¥Íº_ߎ,Û²-)HàÒásæÌ…ú~0þ,Šño’_½]^>ŒY°åŠ…±7fñl–é«Ïüå“^?ÊÿÄëå¿W?÷bv̽¾ôñÙ<ô¦l÷䱉\IaY¹,ç/2¯rfa9Ó+÷Œ'‰°ö† c´¹A>Œ¼—s•²‚¯Ëôš­dv¤bOÛRXݯ˜%+5,)¦4.¿=X´¡´ˆ÷اÆ7‚]òR¤í•¼*uÎK™ð,Û²h¾Ü …Ú’xI„HEêáÂ÷Ë+ßóÂæçá# ÇÈZ4{DÓdœÀŽgÀAí츇Qìùh…+À-)`â{%ly4ÿ8`1¡»ãõÇr¹€mœ5ŒD+Z—â?Æ‘¦ôÎdm~ ÑA£tÓæÐÎ.pMm{ô޶I<…_ðå/“
ÓbëM–é7ï„Ú6´¹E'¼i\Œ„¹ UŒ«X*HJù,ZÄFcHµþ%.Ø5.¸q믑J™™Ld bLëÊu£1"•U»#l¶9.)$ œ¡>L&•¸¶Žp½w®½Ÿ³ÂNv8ÉØŽ&ëýÈcÜ­'Ö“hÜÄzBT:cMhÇ}˜bM`ŠõÝÄÚŸ‘èPa (´¢u矌SM«=Žu¦(ZíêÙQ¹òØrÓ¶Åå<cŠçf»µ¾Þ…½²@ÐoÅAåkj¥MN›7+¥ÈÛCöx¶¯Gã üt’Mhç|˜È&0‘½GïÈÇu=ZhS¶˜Ž£àr⬀LUùäø›IðÕy4¸’ÔVb¢•Â<ÓÊöÑ1ù™:Cèu†À—êÌ8teca¤*^´‰2ï:zê¡þ8{+Ì7AúïV;YmŽª"…¶Ç~ÈrËS4UÒja¬+]IÆ­¥ÂÞ¶í;)cs¬
¨¨à¦_6}´%âµPÂÐÁ•JËŸ²ÞnÍgÀæÐnJèÝ”À—ºiDÃOÝH´nKxôÌÍÈZg£¤*l3¿;`u/¥q¤Ïùé¬Ñj€©Öí¼Cïtö8ïÀäüÝ8?™SÌîw<Ù´‡ˆYÞ=EN{¹ÈµÙBµ3Í(oxÙ–¨ÂCè%°/2„‚ìãhŒšÏ„˜Ï¾”ϤA@˜gaÞ¤9MG4PÍïôúOÈ—.‰à)w(e%OJÊS Iò^ÂiSãÅ¡‡
Å/
Åöì|<`GuèúùŽºƒ9YÝÔûÃrïTi±×kNfuÓISºhg;+^e'b»û²x„ž‹çv]¡îÙýbÁÈ>ãxJݾ„³¹Øe =°ËøR— ãpse
ËQ:›±(ÕzXÅlEFjr@+¹®¨r·â0¤ˆ…ãýüÑŸ „˜ ¾” aXÏnTúhtUœIÐ¥nêyª›¤5š )Îi Y"ãÔ1ÛWÙ
bY+¨¦àgæB¥)èšKB?¢!c)òâ4çÚ\™ €‰›í‚J—=Nói“5ýu‹Ðë/Õ­`J.Ë\èª2rI^¢—ÆfdEja| ˆ]¹8BÛJp š‘Šº¢LÓLÐW}\Å“ŸÈ#B/ $pE¼øbOîÇYÑ1 Óu—3©”‚«o‹%ñu[Á= ºÞÚðÞ®ÀY‡§ ¡‡2âÀg}KcüD†SiMLäÅ^ÔLÐVL<ùþs8Nw::ÂѰÿ³/Û ‡nê,GYáMÚ=zóxwYöRzìNç9Š^Ú’›zTpS„®`zÿúêú—믯Û=sà ÌÂxõ‹Ý‡Œ÷0™1¥ÕíSÆÕ7g˜ìÚ½aWóœXÚÁþóÔÂý— KŸyVÑe¸~uïf1}–ƒ£+¥Öé¯ÄÞ¬f/€{UÀâù˜–Õm9\ñD°wÂʵÂ#‹]—º¥U·ÓÐ 5ña4Ÿ€ü}ÌNƒrûûêÒµ”{endstream
endobj
195 0 obj
1584
endobj
196 0 obj<</Type/Page/Parent 153 0 R/Contents 197 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F5 5 0 R/F8 7 0 R>>>>>>endobj
197 0 obj<</Length 198 0 R/Filter/FlateDecode>>stream
xÚ­–]oÚ0†ïùG\m¤qâ| U•Úµ›Ö©+ôb—&9i]¥KL»ýûÛúAt¢øµó>9çøø×€OIa ÙÃàl68úc0+ J¼â4‚Yþá\Ö˜iùˆg÷ƒ€…^HÍ}l²Z.´¬”¹˜ |ϧE×?×_!à‡8Ii5æ½ØØ  F˜n³0ôÆ­: R/y¦¶îxë.ˆÍª‘$§Y†äBÝî)1}idºÀLxºC}‡5Ð,j©4]ËÄj*(|‚ûjÞxp)þÀ­R‰l̪>ŒˆÛ>mø!T5 ¿WC¯œ£ÎRÐånp«và5;\Òpcàø ±,õU‹aLž£g.Úá“·/eY×ÕRåÍ‹—‘c!•4±„‚à„¹ažBÿ ½ aFúh÷üýi­º“Ög6´eY=Ý4X7 ÿed”²ÑP°4:-&Ì\ÌAW6ÌÍ Þ”hÌÈX§Þ’±%J’ç3¡ÖS-jÝIc,έÎPŽ:Ç9å$¡²y\È’ÔR>emMŽ}i¬º“&\ •¿‡E&çÞƒm*j”hSQ[Px[Qç¨þ¼3ÉT¥ÿ-Ñ„líÍcÕ<´bàxe†7ד¡É­j´¬%­k9_j´µ€{–®+~÷VÝéÞ·Íf¢Šê•íSÐø[/Eiö¢UÇ1±Øß(ÒœºË(O#WÏߪL¬šßV»e+8Ðk2> Zz»×xÜnúÇoºÅÿi},|“Þý-Á©»ZÛô¦TãÎÔ¶æ(Q¾zûŸ Ê4øá$/Ñuò©® ÌûÚ9Iw§îÌ"­Y.iÏ·¸c÷YeÔƒS®Ë4£ð ÒëÀXà>
ÿ Zð;Oci{c´Ëšs¤u Ÿo®¦01n
!Ð!QÞ*xuV¹9£vRè™d]Q4^V©ÂÈxb«•°°¥ú1ø |¿¿Vendstream
endobj
198 0 obj
752
endobj
199 0 obj<</Type/Page/Parent 153 0 R/Contents 200 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
200 0 obj<</Length 201 0 R/Filter/FlateDecode>>stream
xÚ-ŒÍ
Â0„ïûsÔCcרh¯þ7Åõ$&Á´¦}tUf`àcf^Ĩ?bX§öOZ Íö+0C"¸q†±œ×Û›ËñŒCC‰W° Cºg _R?¦.OåAÕoSýG¼PhÛÆ´økœ±@_ Æw9je't¢7U%pendstream
endobj
201 0 obj
126
endobj
202 0 obj<</Type/Page/Parent 153 0 R/Contents 203 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F5 5 0 R/F8 7 0 R/F9 8 0 R/Fa 9 0 R>>>>>>endobj
203 0 obj<</Length 204 0 R/Filter/FlateDecode>>stream
xÚ•—]sê6†ïù;Ü”ÌÇ2þ¢3½8$iK§=Ã9»Ü[7²åÊr€ß•d“ÀÁ˜Nfˆ1¯VÏî¾’ì\ü#y0 !ɳÕàá×)x.¬6øKŰJG><ïå0/ðbCVÝ­þ1ZYíxâ;žQ;¾”åR$oLÁB
%Á­ÜB¹9¡–¯¶ì“¼läU@ ˆÇëLAÂóTV˜ˆ¢`‰ÊDထ² ­¹­`ò=K”B*gJ\׈4ÎL&ôåûr¦¶"…‚æLK‡6úÐi¤^èø×!능°>€BÅïlǙœiòFe
0õ”I¤„‚©oˇ٥o^&«{ ÕáŽqŽw!§ÅN!á©ÕO"­U9°dÌLÿø²XÂRlÔŽJÄMó¬È*%©B=üEû·(p¼bU]ê"±ôlÞcì›ìÙ‚è^›ùfR쪬øû¶F_bš /Oº¿ã55•‚¦ ­TÛMf‡c“ÕG´m±¢¢ÀîŸerâ…pBÎûL“í§ÉJjœ²*‘ÙcêºV
ÃërQÐØœÙ¾a3°˜ §•m¦uì—åã|Ší‘\I%¬KPˆ¸gxëƒÇ–já.S[œ£@eƒ×‘»wéëõw æTaÓ´36s¬æÏ¶ê.LuÑq-=ß&¨%ƒå¢I/j™éC.ª—ÏÐ|ËŠ°W9}ccÌgœ‹”ñ!|ýÓÆ¦MGÇ&ºéèRǼ×ï¡ w:Ô© F÷¦@§qF§ý0"R²ª8k§û0_, Í³‘5›ìÎCœjOìmG!øød œtLÕ&z«¾«½tWëèthöqNëúy×ÂÞŸ3KmËö4eI–ãŽPÔù­ÜøK²«Î
¥¿$´¤ëŒgêð`l„{që´  HM=öb;ã,Sú÷(›®¾ñdVRÙìy5pãÇ÷ßp]„xdxÓ)îhdŠÃq [^GÚØVLÂÐ >©ÍéÕ¦JüXG †Yw&vh7#~iWñÙ’$ø‹YÔ}¼¡NÒÄ4›âu^#¶¼jäm(}b¦>R¶0SŽ_€”,êüL{Q¾£‡
Èë]_i îxu=#¶ |¨?pc[W{,&îŠö ›õ¹º4·ZÀˆ/XÀ‘xj-9¹F„‡=T$ž´î§²ânªÈm’.S¥uÉÙ¾÷f #î
Œó‚Ë8¸­"OŽï;ñÍ8F܃'´ ;ê#`£ÏéD”ë[¡Ä nßQ¬¸ŒxÖàQçTož}lnx»Õ­¸“m:±N;œ^øŒ³¼·`qt»ÑãèšÏ£æ]`z)ï¬oÙ…ñí&7ÚN˜ 0s»—YÖ™=‹¯ `”› n´(“ÀÚ›Ž"½çäÿ9&»NÉøø´àÚ7¼®W<?Ò ÖB Ú·Á:¤¥Žendstream
endobj
204 0 obj
1132
endobj
205 0 obj<</Type/Page/Parent 153 0 R/Contents 206 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
206 0 obj<</Length 207 0 R/Filter/FlateDecode>>stream
VkoêFýί˜!%•ìàgভÄ<$H(q«\)_{·fík.©øñ!ð2»ž9sæÌ¬wT4¨ã[æ·¬´ÝÊm×MwšÙP5°¸þµ¦ß¸ÿTô†j áwð˜€8 D«²šÍ„@x ž’±ãVêj#¼ÿLzjè]Cm€DÓšª ‡çSÆw¦jÆšm«Öž5R-ÚÞ&JÆ×µÆF¿”£ÕTí‹9JãÏ9"¢-9™_s4ìÙ¸£YÇà—r”ÆŸsÔïð6q²Îq\³$`ÓCü÷5?]Ã8—ò“Æ'øÝvhB-Y«©';Ÿ¡%Kè!'&»Þ­ƒ‚éHÉwf34K!ìËhXŒV)÷aúÙ‚ç€9N½À¹ž¡cÅéGøkòÎxB劓È_yü7Á–S&Þ‰Ùœ‚ Ÿ<‘Žf`FH']Åq”dèÆ¥ žb¤ja§Ûy\$4ŒÈÞbN&p˜HeqË‚HÜ®…¯z«8Uý€½šQU³«™GE]±l»Hîà aK~³( £Ÿ˜“ø<õ’`ŠÌHL¶fA(…‡|ÉE&Å–eh³Êˆ¿vÔ·2¡&Å2,äò.Èo¿8îÀý5h‰9âV;-·UEAdš@@ŸÏŽØŠòG©§–·Áž{'
QÎ}wðäÔ*¥\ÒI¯ý ®&“^¯Ý–BŸo°íÃÕW¸C.æÙbXY¹8Øð0ü'D-Ÿá‰‡š`@˜{]€œîC{ÑrÉ””Ç,aÔDEðKxº|“•PgÌœù¤Gµ¯mûú¶olûæ¶omûö9/ìkê8¬3’ªŽ'Î9ã@kˆr}Ôó§8TC¬&¯Ú+”©ùü®£ñpà<)·P
ŸãÄ!øARâÀëu˜%Û$ _oò‰PhÉ=Z6²8?9û÷VðU–°2KQªGègÒ¢&ÇbÕ(½ûsùÏ"\Ù[þôú B¶Ð}ztñ2À¯ëžƒ™',^^zŒòô‚ΧC8ÃÁ£ƒ—ñÓð;^Z“ 4å:/gñ‘ò$;BŒzèüwkrÂE­" VÍ‹Ö<¡õNCZUU ùš‡ÕÝãa׳eˆ¤sõj,ûãÖÞÅ»§Q©ä„OJ?tFŠý°ç=¡àç
ʯ7¿si¹îpð|äzÔ5Yþ{8û’ú`{œêÛÏY·'Hó œÑE9‰ÝëᲓRMlãRÔ“{´AÏz]Wå ˜ý~²C›–¡6/´•°¦E¶ËÂ1…åvÞ(O˜îtyÌÈ·‚îˆÉŒá~úÀÓ`.è‚»JL‹“Qr¥pÒlš4žêåÁàÄÉóÿ³ò?ª'Юendstream
endobj
207 0 obj
1045
endobj
208 0 obj<</Type/Page/Parent 153 0 R/Contents 209 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F8 7 0 R>>>>>>endobj
209 0 obj<</Length 210 0 R/Filter/FlateDecode>>stream
xÚå—mo¢@Çßû)æÚè]à@­ÚxiÒlHlµ”&ׄ7‹ìYºl[½øáoÐZEô’ë s’ âÌogþ3» Ï T~hЮC£î¤raU¾÷T8ˇƉ¢A«ÓË«þørnY}ãÞ‚ ³fýª¨ kªÒHc4éBéG–AÂZ'″üN]SZÙhú­eX Á($îÓ†ÿ aR€G㮸Ž)ò ð`×=*aú!yƒ#)E§ž8
q„
}úú ÷ƒáùµ~ØUI¸wíÚ·ÉyÄ}™ ˆÁˆx3~ãl-èwëßkè„xåvv5D>›»<f×àØ¸ö ýJ`Bño1'ÌÓÈ ¨¯+X»ÊH<Ÿ`Ï Ñ‚="Œ‘ÉüQ†Ý]è±AΔÎëb×¾®©S'Ê…>•·KÁEX´8gs]ä5]Ä(™A©8‡/ËÐÔ ´øÐ!+‹04eåbê‡/ÊÅàg:qô›!_æ6}‰|†\Ž™–ªÁAú$$4gI—âÇR™ebÂ'?ÅÊ
È>'õQ4fÁulêw†™ ’Ù?wÄì>E(I
@…!‰FYñ*@¾a°;¶Ìn{hÓåKs|/zLÌ0)ì¤Ùž¸åÂ[ÛÞ@¦~imí Žß³}æúçÿ.v߸ÕËŠ“p–N˜²R È'–úfxA±kü®b%{V«·Q­ä/w¼AÿqW¹Æ¼ìj6Kùî’N·*ª¢òçüåɼ†Fƒ?Û×ëJz?S÷¦Í“†rZh›¾,t@ÓÄÛ‚vÒRÄ‹„šfrù0¼Clv¾ã"¸B‰Ø ù—Kq,Ò‘É™œ;5•dŽ=¾sC‡HX5ÛM.Oj¡µó„î*¾ã1(endstream
endobj
210 0 obj
694
endobj
211 0 obj<</Type/Page/Parent 153 0 R/Contents 212 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F8 7 0 R>>>>>>endobj
212 0 obj<</Length 213 0 R/Filter/FlateDecode>>stream
xÚíWmo0þž_qk)
¡ISuªÄÒ!%mJÝi•ò…€¼ÎŒû²©?~6¦)„mû0mNÂÜ=~îîñ!«iÐ? ôŽü»aíª½Ð ô¶ªA§{ Èk¼c 4´®Œ/‡·èK­ ŠÖT»ò%€KÊ õž|8Íž`߇–ÙP ÷˜1âáÌAQrH°õ!ŽæÜ3¬}Û¼º±l%|ÊÈq'€ '4Š‹ð¾ïˆ'ˆqânC;ËfZšÚIÓbÍ‘yÀ°{ À%˜£1º…WCàßE3؇¹âùìô*¿è¦GÞ*F4ð$éàH»"4“¹Ï×’»„[/VjGgYô9 ˜;ŒW¡•:l$Æ}â~p H„_x@>û°=ÖÔns¨/ÎY^à;ê».§ïjò[f©¼w·€ù/î_÷¿­Dd~FBŠ
LõY@N'o×µÈñ#‡)},U¢möPnU' ó(š4<ãO.Ž8fOLÖxr°*Øz^ÇP˜þ!¥äs@÷/øMœ.žBây^’œRÎiøŠåsºK9VÖÔŠƒ¦ô–z´®)kt^ÚÝÌpŠ=Oô7:s\ª+•[¸îpÎâS(b™ºKNl¡N´n$nø^T¬ðƒ‹]ýœ›Ûz¿–ñJ,¥Î)`LUö©Ì¡¢œ
¡R‡Jà£iôEÍ.ÅV蛃O†kÁûØñJ«&±òe“%ØR5¹L :õ!x„U㟒ޠ;©i‡g*>ž‘h©êÍ1¤x9â%j¯o cƒL¤]QǹÃ;8'v»l¸ d‰Hëàó0P]Ñdyödúalœ›{‰‰jMµ)Ž&Ïût]GZ-5™ÎqG\†ëÓ£¶®žÚ&ç›.hš<àh펀<n5º½›ñ5X²‘ÎCDzي›ËÈBf_2SR%sÒºrRï¶Õ6$)Ò€²$ÀY@WµŸ3)W¼endstream
endobj
213 0 obj
778
endobj
214 0 obj<</Type/Page/Parent 153 0 R/Contents 215 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F5 5 0 R/F8 7 0 R/F9 8 0 R>>>>/Annots 66 0 R>>endobj
215 0 obj<</Length 216 0 R/Filter/FlateDecode>>stream
xÚ­XÛnÛ8}ÏWÌX ÅVЍ«µ7ÀMn€¤ÍÚÞ}ê -Ñ6 Yr)*©÷ëwHJ¶,ÛŠšŽ%ÎÌ9s!•oWü%¹à…l®Þϯnîˆa¾/° „£æéõï?M&“Os¸ýçiv÷yúþ~¹þk2þðå-~yœ|yû €eAZ$Õ†åDQH`Ó–õçÛù×+,âØ#cu<Ÿ?ÜÏV;€Ÿ9å¿AÿºÌh¾z)xqbDû̯ÛA¾ûéGð<ÅÑ!oÛ.³3P?ðìx ¶evs´0C¸Ö8)ÉÈUœ¾íkà©(å,|+áŽgL!fåFfA¼Dp cJÙ3O˜•²-ËS¥ý8-¬ÝŠb%èÆ¬±a¾>zªÔ¬èŠ/O¤#5ÇÈÅxƒ(Ô¡æªæèàed2²í.X
<‰®.%Žo«»¿ÊŽ„Þã[ÄÇJÊ^| ±×03}ø6ñ£Àvúñ-Ä©rŠo#ïûGñ¿?ÝkiOûФnÊ–L°<aðHóŠfï0É\¤0I¹äE®›ä¸pÑøµ­î[Ú‡å†ø‰>Tq<Þ?N@î¶ –…€ó•ÇK0µêÔµzM·ÛŒ'Tù»yÎS;©¶¥µÅu¥^w\ÙÆw»5,Ï5¨¢Ð>§´”L h a€=-Q#øF‰eprM%$E.)Ö)=j2&pÈ$Š»fÐx˜CtLó´ßØiõMÖÆbÝͼÔ}X²VÔU‰M# ‚æ%æ³6×qœRIa)жÖ
[Et Óû§RY; Ÿ¢ÕƒÏLHm«Ž^;À…´ãx+8еÈtUl¨´ëçMåŒÛy€[ñ¼„.ר,v’A¹Ë“µ(rþŸ®x)Dú+8ß7$ù¸»¼™Ò™|ƒÒoÁWÎ)&I$k.Y"+ÁÊ3ép¾G8~ÑŒ«ŒÈ6F2.eÆÎÚ1ãðEpy±l ¡y¼ð,S™ÑrŒù™é˜;þñït´FSU%~+·E^òZ7L‡òÌóª"j¯’® 6aœ*3å 6”Â)Ù°@JÈKYjw<«ðuÜëÜ?ð…ÀjÝs¨r]À%l™PyÃð0ªæ6ÐJ˜KìÛ,Ûu3zWdYñ¢bPœÎeN×-…’ Ž1¢|µ[Uð(íd_ü¥¤BîË¡ÕaÝêÞ÷¬†º¬1b‹ÚU6†i”,Û¡4'…«4Ö•­|ÔC&¨çFÛ²vï•®
ª±ì¨[˜™UõÈ$#§Œ~ò/Í*V^<Zà~á|'÷#ÜHÏy!öXâ„xvè»ÁÙoЮâh< õÙ¢™‰ƒVݸ>^8Vè©`ýÈ„ÿ¨$»Íh©)·úÁ§*³P» ÇÒFqdzÛû{L¶úªŸ¬«q=Œ¬Á%kÐgÈŠQlÒúq£SEVˆF2Re9¤Æ&©ÑI†ŽiâŽ,–sÜœÉÀW'Üa$5v0I¾HÒ'šbìZn´)~®ä¶’?”£çc<9jì`Ž}‘£KÌÑÍ Bd·YŽÓgŠ'¶gcžt©:j vsÏHµ¸«ÞÑ<õÐsD#<=é· ßï¶îÓ¯Œ*—ƒG•ÁÖC£/éA𸫠+·ïŒº¾b4{‘À'µ_58|ß̲ÎîA4n=ºl6òÒ=üZ,ô™¸…ôÎ#K&;&ýó@µõ'ƒø^“ <;½É0X#MØ$àM2è}2\ߤÂÇTMR¢vØ! a½­ Å´€¼PG Á¿[n6F«“ˆSD¸ÁÕƒV¿ôJ ±&®>p-F èF‚¨iÏp„¯Gsö¶’¯–bRIØ4 }\?  õ×A¯½èõºóâFóWËNC‡VŸ)º›»Q=¯H`,i¡ëÓkŽA/)öÂø*‡ÎYÌ2k¬z‘úÿÉÅ ø‘šÉŽÙ]j þ¾ú×âó\endstream
endobj
216 0 obj
1530
endobj
217 0 obj<</Type/Page/Parent 153 0 R/Contents 218 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R>>>>>>endobj
218 0 obj<</Length 219 0 R/Filter/FlateDecode>>stream
xÚ¥X]s›8}ϯÐãîLq‘_ûÒ¦Ù¦ÓlìNŸ –±ºQIÓ_ß+ lƒùPv'™ØG {tïѹü¸ÂÈ…Œ¼@ý¦‡«7›«×7aŒ6;仫6Û?HHún¾_Ñ9Á*P£×M™³Ÿj»Á
£vØE¡;É‹U¼ÈræT|˶
æ"{+¢@øÚŠæáônså®\XÙñÏý߈Fj1O áÊEYQ$Z`cÿˆ5뚯¢M¼`埡C‚OLd$ y- ®zÿížU"oj.Šæ’ü—(ê$GI±ELÖ<…äqâ„_WNɤËt¿Z €°6MŽÇY4Ö,gܠц€úH £ˆ¨Câøœ€ÛC’Á6¿M±ÕŸ— q# ¡Ö,c²Bª÷ ålW¿B¢®Åá’<ÛÃ¿Š«Z”ê.ÎY”¢âг
ž\&ƒ¹æ±ðå§b³ðœjEL@Ë4ÒXë4Òè©4òc
CŠçºŽçöÒ趨 =Ö{ÆêÑzº¨5D¨`¨be"“ZHT©Õ+U\·ÓÐijü[W˜ÁÚRcГÔÀÓ#C jÂsj>ˆìD äfÔã}™N…jD`>t×P²«™D;ž³ŒŒÀ¾‹‡!£Þ¬2{5Ã&!°Zͦ¯â›eScMsà–M6lžÐ›4v —‘ãa|ÎåG–¨jy·ÍØ8§Q"W¯€-YÕ#¬Þ«:½D9Vß貞½›bõ#hÀ%hšT«wTƒµ%Õ 'Iõ±^2&@jO?%°¨¿ŽKi™‘7 ”xñƒR.K±¢”v9´(ùk+ù=%ù”øí+âõ.š$¿a漞ҪƒFåÏh@t`[žŒéÔ§qØ #˜t‡à¢F¬­Fô”FyqÜÊ7"=ú¤–}מPƒD¸t8Jº3 í$d„ Çú<¬+ªì¶ß`m·ß §¶ß‹ÜnûAD<|ì7¦T`ª¾‚žô%•à™LsûªóG“È%—ç…Ç_9<¸EÈá©ÀGBö»ãÙƒ÷ü^È\J!µ_My C¥ìêú"Ù‡€¨ýQl°¶inГiN̾{ÐÓ¹Ï,KjþÈià…òºgQ^X“ÁõܸËÿe4ÖšžbÄA›ÿäöäïssx+JΆŠU=5¨š¨HõP ¢°SGÝÓ]EÈÑãÈAxž»Öõ`°¶õ`ÐSõ@ü°£ôŽöôî‹ä ›¾Ú]x³I cÕÇŒÄé*JÁȃD8i.ÒŸxÅÆ,Ŧ‘…7¥ê¡yz*F<EïÆç7œaÙÃ]¢-Ú
ƒµµ=e+Ʀ~<
Bë÷„öKSÃÑq“¤ìk9Zo€v€£ M9ÏŽ£Îk,›ÁÚ›AOŽüÖýû ¼~Otî`×üÔÚ7¾­÷Ú^å¬Èà«¥ÂaÜ©êb1¬m1ôT1áÀXòÔ$è©ÉÚ4hª³y“’Šƒ6̸ÇÉ—)©ÈU«×¿ç 4´–WƒµÞqžÜq¶Y€¶=mÙÈäyýÄët?wƤû¤€ê®\!¾ƒs–Öà Õˆj%Ø¡¬ŸGxzk=q†6Lí Ó—
¦3…wž<­{Z±i9›c¬ÕböÈŠ¶}ÚÃ×­~‰Má´@ÏN™f)²÷éÑKlz4ç҃Τ‡ %aÏÄ¥phhÝÕhÌôyqêÎøO–/½J²wçÁKÌy0çÍýΚ‡`ÑÂxâû1gnÿ[ÔÞÓ—Øq:ëÆM·^ö_¸ªuŸ±y.‡§Âµ{*ªd)ßñÔtX}G¾.þߎ̾%'/éÈÉDCþú&j׈}u§èhÑÛ¯wk0Ó`›ôñ~Í*žê#•¼ì¼™cæ8í$âªA/Àgªé1w‚þµ^ë©è¦}Qüsõendstream
endobj
219 0 obj
1503
endobj
220 0 obj<</Type/Page/Parent 153 0 R/Contents 221 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>/Annots 71 0 R>>endobj
221 0 obj<</Length 222 0 R/Filter/FlateDecode>>stream
xÚÅ—KoâHÇï|ŠRNŒ?Ú¯‘ö0a%hY`r1¦oüZ»I&ß~ªÜ61`ˆçEÂq÷¿ì®_UWµÿïé áŸŽ¦ AÜ.{ƒ1]‡å,MuÀv-X®û¦ËÓu¾,ÿë1mp(ØgÅ0ÅŒç£4JsšÓ5[Õå´~ Æ-°[pa…*šý¾ìiª†¯<üÌsé-Ž«ºÀWã©ä-ZÏ:hå›®‰ MGT¦­Z 5ú)½³-œ-ýsÓÓ/ø7 ñèÔ?)˜Fç,Oµ»:Wj;;Wª/:Çlœ%ç<³Îœ{œ¼{ÞæœAƒ”.eƒaá¤Y>î0!óÄ¥SiEý€ÓTÖ•G©íÌ£T_ä¡3*yØÈÃ;åQfñ?ùš7RY7¥‰A°Û'ÏoQ2ðÔMïáðóô…¬4PjMV~²æë†ÉhÓéáþþÜÆ@›,ò??²QU•Ìè‚–tAc¼Hûˤ-ÕÛŠY˜ ×HK­ôúšX’–jIú]]“¶ ã€þ0MS˜f¶’^d~ÐÈ;LeV“~Ý…‚·àœÿÃÑo'Ã&±üà™Æ•Æà ŒÖ‰ÜÂÑÇéèdÔ–Úû“aGŠO‡]¾?´W ñõP1Ë>T@ÓÅßk±’â:C¯¨e°¤¼Úïò:ZŒ™²2a´œóhÅY΋"L““2q—‡/<WŠŒá& pð¬lx¶ê}\6>`c: ¨Ôv-R}©`0ƒÉÊ4WaúYw˜§¯£tŸˆO¢¢»Ë¨Ôv¦Rª/RѬjsëR±Z¨Œ9_,ë¸ÞnP¤¶+©¾ÅtíªÀè6BñZ ,Ï> Š«Qè¥Ôv†Rª[ h`ZÕÑj¹ã0L¿ƒxË8lÒF?g ˜û…à9lˆ Ó*çú~–Eaà ,:ƒ—d­D%/mŽ1ôUyïîÐ=Ö^³î>¸{«w½Â˜^tlŠRÑ;œr)>ºåa/RÖ<ãØÀ!G*…Øù¢”… øäPŒ÷Å>þ*âA¯y!¤\ý8ìå\ݪ' âï™2^çK¼r`_‡‹Ô^ÿÙëðr`B+M¸€-:L¶øO*Ò .²£¥^6<•DÊõó_'ÔI
JŽÈ*ÈÃèA:‰³ˆÇ_BL7'à&³¬Ó`Ok>¹@\¹0 ÂÏc|\Ó«££× n1JjF¥0á¶)ï"™âM:«N/Ä¢íuOý‡Ù†5«©`øÞÝ^½Áåu4Þƒ©Ñ®z_ǹ¾©@½Aા¡@½­S£¸¦o(blúR»¾©@½y¼žá™Ëùö€¾b:´ã}ý0'e
%³]OT û=J?爹إkHüXn1Œæ&ÊÖ7×RʃϱrÃEþ–Ã0Jƒçn;¥Õò©¿˜1=h¯ä<ò&»È¿Ã΢7¬€1}LÆ‹F>Çéb6ée§OâtC£³>ÝÔ¡d^m¬hÇ@ëØôwBd_?Ù«…¯|5Í·l_ŵh³G%û"^ݨ°ØgYš‹rFìp¼¹qðÿ—¾«^B¿¬‹oSù 0»uÝ¢f{Õ'pURˆå?;àŽá6¡ ËDu´U¤•âZÝ?Zs¨¨”
£î¼ÿö~jé<endstream
endobj
222 0 obj
1286
endobj
223 0 obj<</Type/Page/Parent 153 0 R/Contents 224 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R>>>>>>endobj
224 0 obj<</Length 225 0 R/Filter/FlateDecode>>stream
xÚ-Í‚0„ï}Š=ÂJ ® ’x0Q©7/
Ôðg!òú¶Bv“IfçÛù ¾³[t(åh—¯Ì…ÅðÒ™º×4CûtÈÓuùÛdÂ-ãÀ¨‡Z‹ÎêW•²„EÍ äÉ%M€b3} ª©ñ
Ç ›òÀvÀáqÍáÜÏRW¢p”“ª{+…V㬆޲ފxõ-D©5ƒ8ÀüÐÔ­ŸîbLµr²‰G7ô¿£@3endstream
endobj
225 0 obj
185
endobj
226 0 obj<</Type/Page/Parent 153 0 R/Contents 227 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
227 0 obj<</Length 228 0 R/Filter/FlateDecode>>stream
xÚ­–]oÚ0†ïùç’J…@ ÀnWº©Òª15ÛU¥ÉØ'‰Y§¶3©ÿ~Ç$íJ` \$ñk?öñùzLaB¿),}˜-€§ƒÁÀûôü !,–+ÄðÖR#·JK4WÁŽ4 ˜NKÍÈ_}§òÐry¥˜W
Zx4•’ F0<FQ$¨«,”Q¡™•*– x¸¸ƒP&h@£‘!FãCäèýŠoP£¶-hVØ3+yIt3dèÞúðdfQ‡ŒcôñÅXLἉéøZæ¶/ÏEÓé¤Q]Ò‹³¬e23°Ù¬+{†J2C®÷›i„F{[™5[³T£CÎ2ŽÉá”áu]•äíŠçv‰>C’iœ‹éŒe¶¦$û¥)‰Ï¿%g°Dn¯áõiæ·DAÌ4
¥f.ªài¸~üjž®º"KçØ2þ 3Ñ̬DÎ!ÈL?ä¨Õ5n?ß“Ÿ©H³´'F0LU %WI"³h­_ÈÑË9=¥Qš.zYÏt &Æ9æ¶ÍÉÝÆE{$0‘Öñ§düœxѸ£ó_âe­ƒòý)oƒVʾËq*ܽý¾yÃ’“ëqz4ØV5œŠqºs mÇêTº ¶º˜#9áe¨J€éäs” •fæ(
†àÖºl7©õÚp”YšSxý­X=Qÿ:FïÓ_tBuë‰H_¤Ô£”J7êoFùLEgðNdc~Òܶ,Z+}Rx"Wä,ÂÚ§2¹RÉ9©âD ´ïw`§¶%·b­Y7e[ïsçËùxE=. ú3÷á.|ü‹"ðendstream
endobj
228 0 obj
614
endobj
229 0 obj<</Type/Page/Parent 153 0 R/Contents 230 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
230 0 obj<</Length 231 0 R/Filter/FlateDecode>>stream
xÚ-‹Á
Â0DïûsÔCk7¶Õ³VÁ›âú·eSMóÿhTf`à ïEŒêƲÍõÚ-ök0CzpÓ–Œ•« ·¶—ã4öW¯èt²!äñÑžÉÆ0—;?§øK®Î°v®tø‚è,ªOc4ò¹E„#Ðendstream
endobj
231 0 obj
122
endobj
232 0 obj<</Type/Page/Parent 153 0 R/Contents 233 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
233 0 obj<</Length 234 0 R/Filter/FlateDecode>>stream
•ÁrÚ0†ï<ÅÛNl(Ð#qLâ $êØ™éU±GE–¨$BéÓwm(Mfj2xl-ßî¿úµþÙ á’>!Œ#Œ ¨{Wyïbö¢KÈ—´2O /?MáFjk¹Ù}δáxÐ ƒ¨ BÈÑÔv1‚0<DDã`ÔDÄû•áa…òõÃÁáÏPèz½qh@rUmx…Á[Nÿuøš.%Ên`†ªªmÀ`⥹)¹ãPkƒàž¹"ÕO§ œ¨ý Å}Õk…ý-ß5*êwB+ ¥Q(á ÝQÛjX]^[_:©;C“ÕÅ
O•ÛªRT¾6«uÁ[K´9Q0Ü›"ia´Úy|1Íâ4õÔQS7
Ú¯ÌqUrSB¬K„%‰O}×m9ô›ÜÓ”T¡GtüȲîT1 $Ôã}ú˜Ê5}ÍvÖaía&Y|Áº¡ ËîÿS|õg¹‡;!7\Ù%64ít¡¥‡vËú7ónÞ-n%:×g¼X5…Þ¾~……ùáDúÑ,>ƒ}ÐNÍPÎhyjŠ»¤¸ÓO§àÓ$ŸuÃ[sÑ1€DUB!’Œ‘s»‚™6…—ËØ Ø£ÙNØÆ4{xØž.¦³ð`*®ÄïvÁÞ³ënöœ”Ûzͱö¢é"éf-6²™O¥àpl‚ ɯwϰ×iŒ¶ù[1Ÿb¦­Ë
#ÖîŸn´í³Å•oz›"-^¨T앤AìaåÞ)šþ´Õ¾i0y&Çû›wúp< &4•i%úÒ<HòÞ·Þ›–9;endstream
endobj
234 0 obj
602
endobj
235 0 obj<</Type/Page/Parent 153 0 R/Contents 236 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
236 0 obj<</Length 237 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS045Ó3T072PIÑPp VðÌ+I-JKLNUpI-ÎLÏQÉE™%™ùyš!Y\º=ºPMFf Ac=#°€£‚‚{N~qqbQ%HÆ5„+ Ø="´endstream
endobj
237 0 obj
120
endobj
238 0 obj<</Type/Page/Parent 153 0 R/Contents 239 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F5 5 0 R/F8 7 0 R/F9 8 0 R>>>>/Annots 110 0 R>>endobj
239 0 obj<</Length 240 0 R/Filter/FlateDecode>>stream
xÚÕ›Qs7€ßý+øØ>TYrÉÝå£'Ì4S7r€*¯ÝIZ$'—µtíŒG4È/"@‚ ÿçJŠÊý/E«D݈åæêíÝÕ›V¨JÜ=iìLЦÕâîþ§»Å_ë^ âݰ=öÛãáç»]½¿»ªf•cÀ ?>ÿ
ÑÔfÖ‰èf
?¯Åè“îûGñæƒR¿Ã×ÕýkR¼ˆÈ¨»™IùAŠ1_»Hªu¿©àw³KÿO¾8s7-§"¥f›ºQ0ußÀ©¿ù Q‘Ζª49Ëè’A6n¬ž"QŽ(ññÞ~õ°Z.Ž«a Ô¦r.G¯%ÝUv¦GÝùN4&«™S%!Lj„ÄDóï‡c¿y™ÆNÿuíi‚ rÂýþµß]õß§åÌ^‚â 7¶qÚD‡FÔ¸±­k{×GV £„rD‰›aù´qËôe g8¢†‘ ‘: 2Q»r¿;¯ÚeÖñšÆŽŽ7|½Ct³¦­‚ƒTy7K°F9%4/%ŠøÜ?ôû~»ìý¡à rѾ¶.,ZÓDϹXcÚàUÑű3S"Š‘$Þýy;ÏØÄ0–45X…ÃPŽ0Ú ÑY7g5KI뺎Î94˜«Ð:ø@UtÎÄéêšèšHâ÷ã—~ŸQv;øf•Òº:²HÕ~ýk{vQзw²u?ÑQøÏÏ9
é7x]pˆ2ÞMpV'ñÑ…ûíb5_=¬ÂPìiö°@£ÛKó7¦°Öý CkÝ7žõ0•¶.{
œr‚D9¢Ä»/‹ýbyÌ-}¸J‚¤Èœ÷¹ã– ‡dÇù ; ìÃj¬ªªKØG/[²Un&Ú…hà-\9B§åîTÚÊàŠýr†Ü]E§(”#Lt¿¼]åÎ羦MqÔy§,qÈÎÎÚ ; 2¿ ØðPT“°ÂÆ!íë%³·m¸xËø3{Û…cÌ®JfGl “¢PŽ0ñçvµîûŒb¬dÆ/JŠÅH<Åð âlUÉét]‡Ìšv(j‚¢‹~@¾Š(¸lÝèx“ žèÆ„»B] Oˆ#Ýlu
B9¢Äo‹íãÓâ1gpÆÇ¡@œHÉw’½”#³)èÝH
. 6˜Þ j½t$Jׂ›âúøé}&Ö‰ƒÁ~ $(”ÿ ê梢“¶àÙêÖÔÁùøóluGI]>Ð$ $‰Ê&6«M?;~ßÑýñ¼ú*)HivâûS2tâ×e×$¸ÉU)
å
ZÛ¯AAúÌÉ̶°e¥Œ7¹Ð`[V*:uiÓ"§ëfMÊA±¢›Ü®¸™ÎVãw¤äjrðÈîr¼ä)z¯m¨Ðˆz¯­¥#ÊôNȃ©„rD‰Ûápœ/÷«]!ݦ"³6N© “: ôv¿Úæc†p@[SÜÐ7ýÁÅìᘔê ÔVɽû«y«.ï—jª¡_
è—ê½’)ºmâ@8¡SʃOº½½ÉÝAâ`HPÔ!\vý2yVðI­×ßy% ·2¡Á4Ü*:MÑóI*;E¡\Ñm=›äペ'4ꀸ÷ÿ=öÛƒSò!òWœi!»™2±2CnWÅѰ«Ì¨ÅqW…ÈÊ®)>ÜÁœËÓ)Ìuˆ(¶Eÿá•Ô¼²éb694˜W6–Ⅶ䕑#+5R¯L(1_~éïŸÖù b_M6Íô»¹‘ønØ>¬Ÿö‹‚eX§Pì`'{U½~@c {] ¶×uC1LSö§H>™ PŽ0±\/‡þÞÃEÄy%ÕÊŸ–a¾Átä3樣¢?D<Æ™…r„‰åÓîp?jèì©vYT$-;”}ƒ©HU¤ º¤ äHË'y@‰]žØjÏù'Uö BÙPyaVøüÌ„²X~ ó¯s»¦MiAJE pÞ!"!äi&<”#pò¡/ìº?“…Ä–jYQDh<÷¡:¬BÐÅ·"ʪq'@ rB‰ëÝn>,ÿÍ38Èn%Hì@ÌÛýp–À>D8«1ŠÊoX}DhÄà@5X YEâøà„ƒb*™X²–ã7äÌ#ìí~øvXmsW5É&)›Î9ºè:D^bºó<éíåS5d/ß`ö2¸AJÙH¢ur
ŠõɶB’”G'(”‡”ưßä^èâàp'Q)Š:Œé¼„
¤&«ÚÆ[[hÄ#Xi¬aÑ'$4‰.U *È vÒ­m¤v \Ázl<<÷ÙqÎD ˆvsws¾'YÈö+ÅJoBƒí/…•-º˜:$NØjZp3NÚcÈ‚ å;)Æ !5Þ¤HêÐÆ;7—q6<ãn“¶`8ɪwBƒNjŠJ¹GâÍÊiõÎH:ÉpȒ r„}^òG×ÇQ£]@¹hºªb1ˆo0ÓUbR‚‚8A·œƒbù7b
Êöyñ-;ÆÑ£Ûæ,ê 'i]5 ç?ÛT¡ºR,c4Ñr²Ãƒ­-Ø(ż~+ª3ìÈÊ»1Ë_ˆ#bÇÖM$ÁQ‡î‡Øñly“¢ÁZV÷Ì`­¦X¤+™ 9-\mŠ©Øë·Õ6S?À†‡w1›ÂPްòà #„³m£¼Yô›l>Ñ$¼î‡ÉR‡ñ žóêW´}SÅÐ&4˜í9]sPLebó~ÿ5[à¡ê̦8”#îS8ä‹Q¬ßŽsfeg6ß®ÝÍ?gü–)MZ¸U¥8þ]bzóºÛ_å+òeÊsüê­YqOrÁ“¥?L>ÉE°ÊíZRíÐÍjß/Ã~õÿQ’¯òµÊ²ÂJ’
VdÅ
I*ÆûÝÆqnÿ™‘8F^LÕ(¿®·Ô÷ßñÏl.ýïÆT!ea5¥Emøü\vÏb¥Éu6¹7"|×%¸ ¤‚•»~¿ñ+¯®.-z’Ò:¬`IuiK‡e"×Ù¤Ü80”Q˜„¤T½r½ÜÛï¬d¿ˆÀsª¨8Ájü«ÍW„pS'ê1'.núÃêq+X †_
þpó—6¼Z¬P{Ô endstream
endobj
240 0 obj
2418
endobj
241 0 obj<</Type/Page/Parent 153 0 R/Contents 242 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
242 0 obj<</Length 243 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS045Ó3T072PIÑPp VðÌ+I-JKLNUpI-ÎLÏQÉE™%™ùyš!Y\º=ºPM™™ A×®@.¯µendstream
endobj
243 0 obj
99
endobj
244 0 obj<</Count 7/First 245 0 R/Last 281 0 R>>endobj
245 0 obj<</Parent 244 0 R/Title(Table of Contents)/Dest[238 0 R/XYZ null 756 null]/Next 246 0 R>>endobj
246 0 obj<</Parent 244 0 R/Count -3/First 247 0 R/Last 249 0 R/Title(1 Scope)/Dest[160 0 R/XYZ null 724 null]/Prev 245 0 R/Next 250 0 R>>endobj
247 0 obj<</Parent 246 0 R/Title(1.1 Identification)/Dest[160 0 R/XYZ null 700 null]/Next 248 0 R>>endobj
248 0 obj<</Parent 246 0 R/Title(1.2 System Overview)/Dest[160 0 R/XYZ null 627 null]/Prev 247 0 R/Next 249 0 R>>endobj
249 0 obj<</Parent 246 0 R/Title(1.3 Document Overview)/Dest[160 0 R/XYZ null 421 null]/Prev 248 0 R>>endobj
250 0 obj<</Parent 244 0 R/Count -2/First 251 0 R/Last 252 0 R/Title(2 References)/Dest[166 0 R/XYZ null 724 null]/Prev 246 0 R/Next 253 0 R>>endobj
251 0 obj<</Parent 250 0 R/Title(2.1 CUPS Documentation)/Dest[166 0 R/XYZ null 700 null]/Next 252 0 R>>endobj
252 0 obj<</Parent 250 0 R/Title(2.2 Other Documents)/Dest[166 0 R/XYZ null 495 null]/Prev 251 0 R>>endobj
253 0 obj<</Parent 244 0 R/Count -6/First 254 0 R/Last 265 0 R/Title(3 Internal Interfaces)/Dest[172 0 R/XYZ null 724 null]/Prev 250 0 R/Next 269 0 R>>endobj
254 0 obj<</Parent 253 0 R/Count -2/First 255 0 R/Last 256 0 R/Title(3.1 Character Set Files)/Dest[172 0 R/XYZ null 700 null]/Next 257 0 R>>endobj
255 0 obj<</Parent 254 0 R/Title(3.1.1 8-Bit Character Set Files)/Dest[172 0 R/XYZ null 600 null]/Next 256 0 R>>endobj
256 0 obj<</Parent 254 0 R/Title(3.1.2 Unicode Character Set Files)/Dest[172 0 R/XYZ null 221 null]/Prev 255 0 R>>endobj
257 0 obj<</Parent 253 0 R/Title(3.2 Language Files)/Dest[175 0 R/XYZ null 552 null]/Prev 254 0 R/Next 258 0 R>>endobj
258 0 obj<</Parent 253 0 R/Count -2/First 259 0 R/Last 260 0 R/Title(3.3 MIME Files)/Dest[178 0 R/XYZ null 724 null]/Prev 257 0 R/Next 261 0 R>>endobj
259 0 obj<</Parent 258 0 R/Title(3.3.1 mime.types)/Dest[178 0 R/XYZ null 677 null]/Next 260 0 R>>endobj
260 0 obj<</Parent 258 0 R/Title(3.3.2 mime.convs)/Dest[178 0 R/XYZ null 318 null]/Prev 259 0 R>>endobj
261 0 obj<</Parent 253 0 R/Title(3.4 Option Files)/Dest[178 0 R/XYZ null 172 null]/Prev 258 0 R/Next 262 0 R>>endobj
262 0 obj<</Parent 253 0 R/Count -2/First 263 0 R/Last 264 0 R/Title(3.5 PostScript Printer Description Files)/Dest[181 0 R/XYZ null 573 null]/Prev 261 0 R/Next 265 0 R>>endobj
263 0 obj<</Parent 262 0 R/Title(3.5.1 PPD Specification)/Dest[181 0 R/XYZ null 499 null]/Next 264 0 R>>endobj
264 0 obj<</Parent 262 0 R/Title(3.5.2 CUPS Extensions to PPD Files)/Dest[181 0 R/XYZ null 430 null]/Prev 263 0 R>>endobj
265 0 obj<</Parent 253 0 R/Count -3/First 266 0 R/Last 268 0 R/Title(3.6 Scheduler Configuration Files)/Dest[184 0 R/XYZ null 541 null]/Prev 262 0 R>>endobj
266 0 obj<</Parent 265 0 R/Title(3.6.1 classes.conf)/Dest[184 0 R/XYZ null 389 null]/Next 267 0 R>>endobj
267 0 obj<</Parent 265 0 R/Title(3.6.2 cupsd.conf)/Dest[187 0 R/XYZ null 647 null]/Prev 266 0 R/Next 268 0 R>>endobj
268 0 obj<</Parent 265 0 R/Title(3.6.3 printers.conf)/Dest[193 0 R/XYZ null 159 null]/Prev 267 0 R>>endobj
269 0 obj<</Parent 244 0 R/Count -9/First 270 0 R/Last 279 0 R/Title(4 External Interfaces)/Dest[202 0 R/XYZ null 724 null]/Prev 253 0 R/Next 280 0 R>>endobj
270 0 obj<</Parent 269 0 R/Title(4.1 AppSocket Protocol)/Dest[202 0 R/XYZ null 700 null]/Next 271 0 R>>endobj
271 0 obj<</Parent 269 0 R/Title(4.2 CUPS Browsing Protocol)/Dest[202 0 R/XYZ null 574 null]/Prev 270 0 R/Next 272 0 R>>endobj
272 0 obj<</Parent 269 0 R/Count -1/First 273 0 R/Last 273 0 R/Title(4.3 CUPS Form File)/Dest[205 0 R/XYZ null 647 null]/Prev 271 0 R/Next 274 0 R>>endobj
273 0 obj<</Parent 272 0 R/Title(4.3.1 CUPS Form DTD)/Dest[205 0 R/XYZ null 547 null]>>endobj
274 0 obj<</Parent 269 0 R/Title(4.4 CUPS PostScript File)/Dest[214 0 R/XYZ null 675 null]/Prev 272 0 R/Next 275 0 R>>endobj
275 0 obj<</Parent 269 0 R/Title(4.5 CUPS Raster File)/Dest[214 0 R/XYZ null 575 null]/Prev 274 0 R/Next 276 0 R>>endobj
276 0 obj<</Parent 269 0 R/Title(4.6 CUPS Raw Files)/Dest[220 0 R/XYZ null 379 null]/Prev 275 0 R/Next 277 0 R>>endobj
277 0 obj<</Parent 269 0 R/Title(4.7 Internet Printing Protocol)/Dest[220 0 R/XYZ null 306 null]/Prev 276 0 R/Next 278 0 R>>endobj
278 0 obj<</Parent 269 0 R/Title(4.8 Line Printer Daemon Protocol)/Dest[220 0 R/XYZ null 233 null]/Prev 277 0 R/Next 279 0 R>>endobj
279 0 obj<</Parent 269 0 R/Title(4.9 Server Message Block Protocol)/Dest[220 0 R/XYZ null 147 null]/Prev 278 0 R>>endobj
280 0 obj<</Parent 244 0 R/Title(5 Directories)/Dest[226 0 R/XYZ null 724 null]/Prev 269 0 R/Next 281 0 R>>endobj
281 0 obj<</Parent 244 0 R/Count -2/First 282 0 R/Last 283 0 R/Title(A Glossary)/Dest[232 0 R/XYZ null 724 null]/Prev 280 0 R>>endobj
282 0 obj<</Parent 281 0 R/Title(A.1 Terms)/Dest[232 0 R/XYZ null 700 null]/Next 283 0 R>>endobj
283 0 obj<</Parent 281 0 R/Title(A.2 Acronyms)/Dest[232 0 R/XYZ null 521 null]/Prev 282 0 R>>endobj
284 0 obj<</Type/Catalog/Pages 153 0 R/Names 111 0 R/PageLayout/SinglePage/Outlines 244 0 R/OpenAction[160 0 R/XYZ null null null]/PageMode/UseOutlines/PageLabels<</Nums[0<</P(title)>>1<</P(eltit)>>2<</S/r>>4<</S/D>>]>>>>endobj
xref
0 285
0000000000 65535 f
0000000015 00000 n
0000000227 00000 n
0000001793 00000 n
0000001867 00000 n
0000001945 00000 n
0000002022 00000 n
0000002101 00000 n
0000002177 00000 n
0000002258 00000 n
0000002342 00000 n
0000002401 00000 n
0000002453 00000 n
0000002538 00000 n
0000002590 00000 n
0000002674 00000 n
0000002705 00000 n
0000002806 00000 n
0000002891 00000 n
0000002992 00000 n
0000003077 00000 n
0000003178 00000 n
0000003263 00000 n
0000003364 00000 n
0000003449 00000 n
0000003536 00000 n
0000003621 00000 n
0000003708 00000 n
0000003793 00000 n
0000003880 00000 n
0000003965 00000 n
0000004031 00000 n
0000004116 00000 n
0000004182 00000 n
0000004267 00000 n
0000004333 00000 n
0000004418 00000 n
0000004484 00000 n
0000004569 00000 n
0000004635 00000 n
0000004720 00000 n
0000004786 00000 n
0000004871 00000 n
0000004937 00000 n
0000005022 00000 n
0000005088 00000 n
0000005173 00000 n
0000005239 00000 n
0000005324 00000 n
0000005390 00000 n
0000005475 00000 n
0000005541 00000 n
0000005626 00000 n
0000005692 00000 n
0000005777 00000 n
0000005927 00000 n
0000006028 00000 n
0000006113 00000 n
0000006214 00000 n
0000006299 00000 n
0000006400 00000 n
0000006484 00000 n
0000006522 00000 n
0000006609 00000 n
0000006694 00000 n
0000006781 00000 n
0000006866 00000 n
0000006897 00000 n
0000006963 00000 n
0000007048 00000 n
0000007104 00000 n
0000007186 00000 n
0000007217 00000 n
0000007321 00000 n
0000007426 00000 n
0000007531 00000 n
0000007636 00000 n
0000007740 00000 n
0000007845 00000 n
0000007950 00000 n
0000008054 00000 n
0000008159 00000 n
0000008264 00000 n
0000008369 00000 n
0000008474 00000 n
0000008579 00000 n
0000008684 00000 n
0000008789 00000 n
0000008894 00000 n
0000008999 00000 n
0000009104 00000 n
0000009209 00000 n
0000009314 00000 n
0000009419 00000 n
0000009524 00000 n
0000009629 00000 n
0000009733 00000 n
0000009838 00000 n
0000009943 00000 n
0000010048 00000 n
0000010153 00000 n
0000010259 00000 n
0000010365 00000 n
0000010471 00000 n
0000010577 00000 n
0000010683 00000 n
0000010789 00000 n
0000010894 00000 n
0000010999 00000 n
0000011105 00000 n
0000011211 00000 n
0000011505 00000 n
0000011539 00000 n
0000011573 00000 n
0000012106 00000 n
0000012155 00000 n
0000012204 00000 n
0000012253 00000 n
0000012302 00000 n
0000012351 00000 n
0000012400 00000 n
0000012449 00000 n
0000012498 00000 n
0000012547 00000 n
0000012596 00000 n
0000012645 00000 n
0000012694 00000 n
0000012743 00000 n
0000012792 00000 n
0000012841 00000 n
0000012890 00000 n
0000012939 00000 n
0000012988 00000 n
0000013037 00000 n
0000013086 00000 n
0000013135 00000 n
0000013184 00000 n
0000013233 00000 n
0000013282 00000 n
0000013331 00000 n
0000013380 00000 n
0000013429 00000 n
0000013478 00000 n
0000013527 00000 n
0000013576 00000 n
0000013625 00000 n
0000013674 00000 n
0000013723 00000 n
0000013772 00000 n
0000013821 00000 n
0000013870 00000 n
0000013919 00000 n
0000013968 00000 n
0000014017 00000 n
0000014326 00000 n
0000014478 00000 n
0000020839 00000 n
0000020861 00000 n
0000020956 00000 n
0000021058 00000 n
0000021078 00000 n
0000021233 00000 n
0000022261 00000 n
0000022282 00000 n
0000022395 00000 n
0000022582 00000 n
0000022603 00000 n
0000022758 00000 n
0000024168 00000 n
0000024190 00000 n
0000024303 00000 n
0000024495 00000 n
0000024516 00000 n
0000024665 00000 n
0000025753 00000 n
0000025775 00000 n
0000025925 00000 n
0000027012 00000 n
0000027034 00000 n
0000027174 00000 n
0000028437 00000 n
0000028459 00000 n
0000028622 00000 n
0000029892 00000 n
0000029914 00000 n
0000030072 00000 n
0000031434 00000 n
0000031456 00000 n
0000031596 00000 n
0000033174 00000 n
0000033196 00000 n
0000033318 00000 n
0000035100 00000 n
0000035122 00000 n
0000035253 00000 n
0000036908 00000 n
0000036930 00000 n
0000037061 00000 n
0000037884 00000 n
0000037905 00000 n
0000038018 00000 n
0000038215 00000 n
0000038236 00000 n
0000038394 00000 n
0000039597 00000 n
0000039619 00000 n
0000039759 00000 n
0000040875 00000 n
0000040897 00000 n
0000041019 00000 n
0000041784 00000 n
0000041805 00000 n
0000041927 00000 n
0000042776 00000 n
0000042797 00000 n
0000042960 00000 n
0000044561 00000 n
0000044583 00000 n
0000044705 00000 n
0000046279 00000 n
0000046301 00000 n
0000046455 00000 n
0000047812 00000 n
0000047834 00000 n
0000047965 00000 n
0000048221 00000 n
0000048242 00000 n
0000048391 00000 n
0000049076 00000 n
0000049097 00000 n
0000049210 00000 n
0000049403 00000 n
0000049424 00000 n
0000049564 00000 n
0000050237 00000 n
0000050258 00000 n
0000050371 00000 n
0000050562 00000 n
0000050583 00000 n
0000050738 00000 n
0000053227 00000 n
0000053249 00000 n
0000053362 00000 n
0000053532 00000 n
0000053552 00000 n
0000053607 00000 n
0000053712 00000 n
0000053857 00000 n
0000053964 00000 n
0000054085 00000 n
0000054195 00000 n
0000054345 00000 n
0000054456 00000 n
0000054564 00000 n
0000054723 00000 n
0000054871 00000 n
0000054991 00000 n
0000055113 00000 n
0000055233 00000 n
0000055385 00000 n
0000055490 00000 n
0000055595 00000 n
0000055713 00000 n
0000055891 00000 n
0000056003 00000 n
0000056126 00000 n
0000056284 00000 n
0000056391 00000 n
0000056509 00000 n
0000056617 00000 n
0000056776 00000 n
0000056887 00000 n
0000057015 00000 n
0000057171 00000 n
0000057266 00000 n
0000057392 00000 n
0000057514 00000 n
0000057634 00000 n
0000057766 00000 n
0000057900 00000 n
0000058022 00000 n
0000058137 00000 n
0000058272 00000 n
0000058370 00000 n
0000058471 00000 n
trailer
<</Size 285/Root 284 0 R/Info 1 0 R/ID[<39db518cea6fdf0052f603ca5012c045><39db518cea6fdf0052f603ca5012c045>]>>
startxref
58699
%%EOF
+1429
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 259 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 242 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 252 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 248 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 255 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 210 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 591 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 296 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 224 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 1.2 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 11 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 7.3 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 3.1 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 1.2 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 259 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 267 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 926 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 228 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 110 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 1.9 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 289 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 266 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 296 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 267 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 277 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 2.8 KiB

Arquivo binário não exibido.
Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 288 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 706 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 805 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 794 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 252 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 255 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 249 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 145 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 303 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 337 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 238 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 255 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 245 B

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 252 B

+36
Ver Arquivo
@@ -0,0 +1,36 @@
<HTML>
<HEAD>
<TITLE>Common UNIX Printing System</TITLE>
<LINK REL=STYLESHEET TYPE="text/css" HREF="cups.css">
<MAP NAME="navbar">
<AREA SHAPE="RECT" COORDS="12,10,50,20" HREF="http://www.easysw.com" ALT="Easy Software Products Home Page">
<AREA SHAPE="RECT" COORDS="82,10,196,20" HREF="/admin" ALT="Do Administration Tasks">
<AREA SHAPE="RECT" COORDS="216,10,280,20" HREF="/classes" ALT="Manage Printer Classes Status">
<AREA SHAPE="RECT" COORDS="300,10,336,20" HREF="/documentation.html" ALT="On-Line Help">
<AREA SHAPE="RECT" COORDS="356,10,394,20" HREF="/jobs" ALT="Manage Jobs">
<AREA SHAPE="RECT" COORDS="414,10,476,20" HREF="/printers" ALT="Manage Printers">
<AREA SHAPE="RECT" COORDS="496,10,568,20" HREF="http://www.cups.org" ALT="Download the Current CUPS Software">
</MAP>
</HEAD>
<BODY BGCOLOR="#cccc99" TEXT="#000000" LINK="#0000FF" VLINK="#FF00FF">
<CENTER>
<IMG SRC="/images/navbar.gif" WIDTH="583" HEIGHT="30" USEMAP="#navbar" BORDER="0" ALT="Common UNIX Printing System">
</CENTER>
<H1><A HREF="admin">Do Administration Tasks</A></H1>
<H1><A HREF="classes">Manage Printer Classes</A></H1>
<H1><A HREF="documentation.html">On-Line Help</A></H1>
<H1><A HREF="jobs">Manage Jobs</A></H1>
<H1><A HREF="printers">Manage Printers</A></H1>
<H1><A HREF="http://www.cups.org">Download the Current CUPS Software</A></H1>
<HR>
<P>The Common UNIX Printing System, CUPS, and the CUPS logo are the
trademark property of <A HREF="http://www.easysw.com">Easy Software
Products</A>. CUPS is copyright 1997-2000 by Easy Software Products,
All Rights Reserved.
</BODY>
</HTML>
+1409
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+1432
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+1891
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+500
Ver Arquivo
@@ -0,0 +1,500 @@
<HTML>
<HEAD>
<META NAME="Author" CONTENT="Michael Sweet">
<TITLE>An Overview of the Common UNIX Printing System</TITLE>
<LINK REL=STYLESHEET TYPE="text/css" HREF="cupsdoc.css">
</HEAD>
<BODY BGCOLOR=#ffffff>
<TABLE WIDTH="100%">
<TR VALIGN=TOP>
<TD><IMG SRC="images/cups-large.gif" WIDTH="103" HEIGHT="120"></TD>
<TD><H1 ALIGN="RIGHT">An Overview of the<BR>
Common UNIX Printing System,<BR>
Version 1.1</H1>
<P ALIGN="RIGHT">July 10, 2000<BR>
Michael Sweet, Easy Software Products<BR>
Copyright 1998-2000, All Rights Reserved.</P>
</TD>
</TR>
</TABLE>
<P>This whitepaper describes the Common UNIX Printing
System<SUP>TM</SUP> ("CUPS<SUP>TM</SUP>"), a portable and extensible
printing system for UNIX<SUP>&reg;</SUP>. CUPS is being developed by
<A HREF="http://www.easysw.com">Easy Software Products</A>, a software
firm located in Hollywood, Maryland that has been selling commercial
software for UNIX since 1993 through more than 40 distributors serving
over 80 countries worldwide.
<P>Additional information on CUPS is available on the World Wide Web at
"<A HREF="http://www.cups.org">http://www.cups.org</A>".
<H2>Background</H2>
<P>Printing within UNIX has historically been done using one of two
printing systems - the Berkeley Line Printer Daemon ("LPD") [RFC1179]
and the AT&amp;T Line Printer system. These printing systems were
designed in the 70's for printing text to line printers; vendors have
since added varying levels of support for other types of printers.
<P>Replacements for these printing systems have emerged [LPRng,
Palladin, PLP], however none of the replacements change the fundamental
capabilities of these systems.
<P>Over the last few years several attempts at developing a standard
printing interface have been made, including the draft POSIX Printing
standard developed by the Institute of Electrical and Electronics
Engineers, Inc. ("IEEE") [IEEE-1387.4] and Internet Printing Protocol
("IPP") developed by the Internet Engineering Task Force ("IETF")
through the Printer Working Group ("PWG") [IETF-IPP]. The POSIX
printing standard defines a common set of command-line tools as well as
a C interface for printer administration and print jobs, but has been
shelved by the IEEE.
<P>The Internet Printing Protocol defines extensions to the HyperText
Transport Protocol 1.1 [RFC2616] to provide support for remote printing
services. IPP/1.0 was accepted by the IETF as an experimental Request
For Comments [RFC] document in October of 1999. Since then the Printer
Working Group has developed an updated set of specifications for
IPP/1.1 which have been accepted by the IETF and are awaiting
publication as proposed standards. Unlike POSIX Printing, IPP enjoys
widespread industry support and is poised to become the standard
network printing solution for all operating systems.
<P>CUPS uses IPP/1.1 to provide a complete, modern printing system for
UNIX that can be extended to support new printers, devices, and
protocols while providing compatibility with existing UNIX
applications. CUPS is free software provided under the terms of the
GNU General Public License and GNU Library General Public License.
<H2>History</H2>
<P>The first production release of CUPS (based on IPP/1.0) was released
in October of 1999. Since then, we have released several patch updates
to the original CUPS 1.0 release that addressed security, portability,
and bugs found, but no new functionality was added to improve the
stability of the CUPS code.
<P>CUPS 1.1 is based on IPP/1.1 and adds many of the functional
enhancements that have been requested by our users. As with 1.0, CUPS
1.1 will be followed by patch releases that address any problems found
with the software but add no new features.
<H2>Design Overview</H2>
<P>Like most printing systems, CUPS is designed around a central print
scheduling process that dispatches print jobs, processes administrative
commands, provides printer status information to local and remote
programs, and informs users as needed. Figure 1 shows the basic
organization of CUPS.
<CENTER><IMG SRC="images/cups-block-diagram.gif" WIDTH="470" HEIGHT="170"></CENTER>
<P ALIGN="CENTER">Figure 1 - CUPS Block Diagram</P>
<H3>Scheduler</H3>
<P>The scheduler is a HTTP/1.1 server application that handles HTTP
requests. Besides handling printer requests via IPP POST requests, the
scheduler also acts as a full-featured web server for documentation,
status monitoring, and administration.
<P>The scheduler also manages a list of available printers on the LAN
and dispatches print jobs as needed using the appropriate filters and
backends.
<H3>Configuration Files</H3>
The configuration files consist of:
<UL>
<LI>The HTTP server configuration file.
<LI>Printer and class definition files.
<LI>MIME type and conversion rule files.
<LI>PostScript Printer Description ("PPD") files.
</UL>
<P>The HTTP server configuration file is purposely similar to the
Apache server configuration file and defines all of the access control
properties for the server.
<P>The printer and class definition files list the available printer
queues and classes. Printer classes are collections of printers. Jobs
sent to a class are forwarded to the first available printer in the
class, round-robin fashion.
<P>The MIME type files list the supported MIME types (text/plain,
application/postscript, etc.) and "magic" rules for automatically
detecting the format of a file. These are used by the HTTP server to
determine the <I>Content-Type</I> field for <I>GET</I> and <I>HEAD</I>
requests and by the IPP request handler to determine the file type
when a <I>Print-Job</I> or <I>Send-File</I> request is received with a
<I>document-format</I> of <I>application/octet-stream</I>.
<P>The MIME conversion rule files list the available filters. The
filters are used when a job is dispatched so that an application can
send a convenient file format to the printing system which then
converts the document into a printable format as needed. Each filter
has a relative cost associated with it, and the filtering algorithm
chooses the set of filters that will convert the file to the needed
format with the lowest total "cost".
<P>The PPD files describe the capabilities of all printers, not just
PostScript printers. There is one PPD file for each printer. PPD files
for non-PostScript printers define additional filters through
<I>cupsFilter</I> attributes to support printer drivers.
<H3>CUPS API</H3>
<P>The CUPS API contains CUPS-specific convenience functions for queuing
print jobs, getting printer information, accessing resources via HTTP
and IPP, and manipulating PPD files. Unlike the rest of CUPS, the CUPS
API is provided under the terms of the GNU LGPL so it may be used by
non-GPL applications.
<H3>Berkeley and System V Commands</H3>
<P>CUPS provides the System V and Berkeley command-line interfaces for
submitting jobs and checking the printer status. The
<CODE>lpstat</CODE> and <CODE>lpc status</CODE> commands also show
network printers ("printer@server") when printer browsing is enabled.
<P>The System V administation commands are supplied for managing
printers and classes. The Berkeley printer administration tool
(<CODE>lpc</CODE>) is only supported in a "read-only" mode to check the
current status of the printer queues and scheduler.
<H3>Filters</H3>
<P>A filter program reads from the standard input or from a file if a
filename is supplied. All filters must support a common set of options
including printer name, job ID, username, job title, number of copies,
and job options. All output is sent to the standard output.
<P>Filters are provided for many file formats and include image file
and PostScript raster filters that support non-PostScript printers. Multiple
filters are run in parallel to produce the required output format.
<P>The PostScript raster filter is based on the GNU Ghostscript 5.50
core. Instead of using the Ghostscript printer drivers and front-end,
the CUPS filter uses a generic raster printer driver and CUPS-compliant
front-end to support any kind of raster printer. This allows the same
printer driver filter to be used for printing raster data from any
filter.
<H3>CUPS Imaging</H3>
<P>The CUPS Imaging library provides functions for managing large
images, doing colorspace conversion and color management, scaling
images for printing, and managing raster page streams. It is used by
the CUPS image file filters, the PostScript RIP, and all raster
printers drivers.
<H3>Backends</H3>
<P>A backend program is a special filter that sends print data to a
device or network connection. Backends for parallel, serial, USB, LPD, IPP,
and AppSocket (JetDirect) connections are provided in CUPS 1.1.
<P>SAMBA version 2.0.6 and higher includes a SMB backend
(<CODE>smbspool(1)</CODE>) that can be used with CUPS 1.0 or 1.1 for
printing to Windows.
<H2>Network Printing</H2>
<P>Traditionally, network printing has been one of the hardest things to
get working under UNIX. One reason is because each vendor added their
own extensions to the LPD protocol (the previous standard for network
printing), making cross-platform printing difficult if not impossible.
<P>Another reason is that you have to administer every network printer
on every client machine. In some cases you can "clone" the printer
configuration from a "master" client to each of the others, but even
that can be time-consuming and error-prone. Something better is needed.
<P>CUPS provides "printer browsing", which allows clients to
automatically see and use printers from any server on a LAN. This means
that you only need to configure the server and the clients will
automatically see the printers and classes on it.
<P>In addition, CUPS can automatically merge multiple identical network
printers into "implicit classes". This allows clients to send jobs to
the implicit class and have them print on the first available printer
or server. In addition, failsafe and load-balancing functions are
enabled simply by defining the same printer on multiple servers!
<H2>New Features in CUPS 1.1</H2>
<P>CUPS 1.1 includes many new features and capabilities:
<OL>
<LI><A HREF="#BACKENDS">Backends</A>
<LI><A HREF="#BANNERS">Banner Page Support</A>
<LI><A HREF="#DIGEST">Digest Authentication</A>
<LI><A HREF="#DIRSVC">Directory Services</A>
<LI><A HREF="#FHS2">Directory Structure Changes</A>
<LI><A HREF="#DOCOS">Documentation</A>
<LI><A HREF="#DRIVERS">Drivers</A>
<LI><A HREF="#FILTERS">Filters</A>
<LI><A HREF="#IPP">IPP Support</A>
<LI><A HREF="#PERSISTENCE">Job Persistence</A>
<LI><A HREF="#LPD">LPD Client Support</A>
<LI><A HREF="#USEROPTS">User-Defined Printers and Options</A>
<LI><A HREF="#WEB">Web Administration Interface</A>
</OL>
<H3><A NAME="BACKENDS">1. Backends</A></H3>
<P>CUPS 1.1 implements a new backend interface for retrieving a list of
available devices for CUPS clients. This allows administration
interfaces to query the CUPS scheduler for a list of available devices,
automatically configure printers if the device identification
information is available, and present the user with a list of available
devices rather than relying on the user to know what devices are
configured on the system.
<P>The new release also includes a backend for USB printers under
*BSD and Linux. Support for USB under Solaris 8 will be provided in
a subsequent patch release.
<H3><A NAME="BANNERS">2. Banner Page Support</A></H3>
<P>CUPS 1.1 includes support for banner pages at the beginning and end
of a job. Banner pages may be of any file format and support variable
substitution for job titles, usernames, etc. Default banner pages are
associated with each printer and can be overridden with command-line
options by the user.
<H3><A NAME="DIGEST">3. Digest Authentication</A></H3>
<P>Digest authentication provides a more secure method of authenticating
access to the printing system. Unlike Basic authentication, Digest
authentication does not send passwords "in the clear" so it is more
difficult to gain unauthorized access to your system.
<P>CUPS 1.1 implements Digest authentication using a special MD5
password file instead of the UNIX password file. This file is managed
using the new <CODE>lppasswd</CODE> command.
<H3><A NAME="DIRSVC">4. Directory Services</A></H3>
<P>CUPS 1.1 adds new directory service ("printer browsing") features to
make using CUPS on large LANs and WANs easier. You can now poll a
remote server for printer information and relay it to the LAN as well
as restrict what printer information is processed (e.g. to "hide"
servers, domains, or networks that you don't want to see.)
<H3><A NAME="FHS2">5. Directory Structure Changes</A></H3>
<P>CUPS 1.1 now uses a directory structure that complies with the
Filesystem Hierarchy Standard ("FHS"), version 2.0. This should make
integration into existing Linux and *BSD distributions a lot easier.
<H3><A NAME="DOCOS">6. Documentation</A></H3>
<P>The CUPS 1.1 documentation has gone through many revisions,
including a completely rewritten administrators manual, a new
programmers manual, and an IPP implementation reference manual.
<H3><A NAME="DRIVERS">7. Drivers</A></H3>
<P>CUPS 1.1 includes drivers for EPSON dot-matrix and inkjet printers.
As with the HP PCL drivers, the EPSON drivers don't necessarily provide
the best possible output for each printer but should provide adequate
printing quality for general day-to-day printing.
<H3><A NAME="FILTERS">8. Filters</A></H3>
<P>CUPS 1.1 includes new image, PostScript, PDF, and text filters. The image
filters have been upgraded to support Windows BMP and Alias PIX files.
<P>The PostScript filter is now based off GNU Ghostscript 5.50. The new
filter provides much better performance with higher-resolution printers
and supports most Level 3 PostScript language features.
<P>The new PDF filter is based off the excellent Xpdf software from
Derek Noonburg and supports automatic page scaling. The new filter is a
faster, smaller, more reliable replacement for the GNU Ghostscript PDF
filtering that was used in CUPS 1.0.
<P>The new text filter now supports bidirectional text and can embed
fonts as needed.
<H3><A NAME="IPP">9. IPP Support</A></H3>
<P>Probably the least visible portion of CUPS is the IPP support. CUPS
1.1 implements all of the required IPP/1.1 operations and attributes
and most of the optional ones. The optional Create-Job and Send-File
operations are now implemented, allowing for better System V printing
system compatibility (one job ID per <CODE>lp</CODE> command) and
support for banner pages.
<H3><A NAME="PERSISTENCE">10. Job Persistence</A></H3>
<P>CUPS 1.1 supports job persistence. This means that jobs are preserved
even after a reboot, a feature that was sorely missing from CUPS 1.0.
<P>In addition, CUPS 1.1 allows you to keep job information after the
job has printed. The basic post-job persistence mode provides a job
history (number of pages printed, time job was printed, etc.) but does
not preserve the actual job files. This can be changed to discard all
information after a job is printed or keep the job files after printing
so you can reprint a job at some later time.
<H3><A NAME="LPD">11. LPD Client Support</A></H3>
<P>By popular request, CUPS 1.1 supports LPD-based clients using a new
mini-daemon that handles LPD requests and passes them on to the main
server.
<H3><A NAME="USEROPTS">12. User-Defined Printers and Options</A></H3>
<P>CUPS 1.1 includes support for user-defined printers and options via
a new <CODE>lpoptions</CODE> command. User-defined printers are special
instances of the available printers (e.g. "printer/instance" or
"printer@server/instance") that can have their own default options such
as media size, resolution, and so forth. The <CODE>lpoptions</CODE>
command can also be used to set a different default printer queue.
<H3><A NAME="WEB">13. Web Administration Interface</A></H3>
<P>CUPS 1.0 provided a simple class, job, and printer monitoring
interface for web browsers. CUPS 1.1 replaces this interface with an
enhanced administration interface that allows you to add, modify,
delete, configure, and control classes, jobs, and printers.
<H2>Software Using CUPS</H2>
<P>A lot has happened since CUPS 1.0 came out, and many software packages
are supporting CUPS. We have contributed code to the SAMBA team to support
CUPS, and parts of that are already available in SAMBA 2.0.6 and 2.0.7.
With any luck the final pieces that provide a complete integration with
SAMBA will be available in the next release of SAMBA.
<P>Two graphical interfaces have appeared on the scene that use CUPS as
well. The KUPS project provides a KDE-based interface for CUPS and can be
found at:
<UL><PRE>
<A HREF="http://kups.sourceforge.net">http://kups.sourceforge.net</A>
</PRE></UL>
<P>The X Printing Panel ("XPP") project provides a graphical printing
panel for CUPS and can be found at:
<UL><PRE>
<A HREF="http://www.phy.uni-bayreuth.de/till/xpp">http://www.phy.uni-bayreuth.de/till/xpp/</A>
</PRE></UL>
<P>Numerous other filters, drivers, tutorials, etc. have been made available
on the CUPS bazaar, available at:
<UL><PRE>
<A HREF="http://www.cups.org/bazaar.cgi">http://www.cups.org/bazaar.cgi</A>
</PRE></UL>
<P>Finally, our own ESP Print Pro software uses CUPS to provide drivers
for over 2300 printers and can be found at:
<UL><PRE>
<A HREF="http://www.easysw.com/printpro">http://www.easysw.com/printpro</A>
</PRE></UL>
<H2>Operating Systems Using CUPS</H2>
<P>One of our goals has always been to get as many UNIX/Linux
distributions using CUPS as possible. Debian is currently providing
CUPS as part of its stable distribution, and many other distributions
are considering it in their next releases.
<H2>Summary</H2>
<P>The Common UNIX Printing System provides a modern printing interface
for UNIX applications that is both flexible and user-friendly. The
software provides System V and Berkeley compatible command-line
interfaces to ensure compatibility with existing applications. CUPS 1.1
adds many new features that make it an even better choice for printing
under UNIX.
<H2>Who to Contact</H2>
<P>For more information on CUPS please contact us at:
<UL><PRE>
Attn: CUPS Information
Easy Software Products
44141 Airport View Drive Suite 204
Hollywood, Maryland 20636-3111 USA
+1.301.373.9600
<A HREF="mailto:cups-info@cups.org">cups-info@cups.org</A>
</PRE></UL>
<H2>References</H2>
<DL>
<DT>IEEE-1387.4</DT>
<DD>System Administration - Part 4: Printing Interfaces (draft)</DD>
<DT><A HREF="http://www.pwg.org/ipp/index.html">IETF-IPP</A></DT>
<DD>Internet Printing Protocol/1.1</DD>
<DT><A HREF="http://www.astart.com/lprng.html">LPRng</A></DT>
<DD>An enhanced, extended, and portable implementation of the
Berkeley LPR print spooler functionality</DD>
<DT>Palladin</DT>
<DD>A printing system developed at the Massachussetts Institute
of Technology</DD>
<DT><A HREF="http://www-usa.iona.com//hyplan/jmason/plp.html">PLP</A></DT>
<DD>The Portable Line Printer spooler system</DD>
<DT><A HREF="http://www.ietf.org/rfc/rfc1179.txt">RFC1179</A></DT>
<DD>Line Printer Daemon Protocol</DD>
<DT><A HREF="http://www.ietf.org/rfc/rfc2046.txt">RFC2046</A></DT>
<DD>Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types</DD>
<DT><A HREF="http://www.ietf.org/rfc/rfc2616.txt">RFC2616</A></DT>
<DD>Hypertext Transfer Protocol -- HTTP/1.1</DD>
</DL>
<H2>Trademarks</H2>
<P>The Common UNIX Printing System, CUPS, and the CUPS logo are the
trademark property of Easy Software Products. All other trademarks are
the property of their respective owners.
</BODY>
</HTML>
Arquivo binário não exibido.
+125
Ver Arquivo
@@ -0,0 +1,125 @@
<H1 ALIGN="RIGHT"><A NAME="OVERVIEW">1 - Printing System Overview</A></H1>
<P>This chapter provides an overview of how the Common UNIX Printing System
works.
<H2>The Printing Problem</H2>
<P>For years <I>the printing problem</I> has plagued UNIX. Unlike
Microsoft&reg; Windows&reg; or Mac OS, UNIX has no standard interface or
system in place for supporting printers. Among the solutions currently
available, the Berkeley and System V printing systems are the most
prevalent.
<P>These printing systems support line printers (text only) or
PostScript printers (text and graphics), and with some coaxing they can
be made to support a full range of printers and file formats. However,
because each varient of the UNIX operating system uses a different
printing system than the next developing printer drivers for a wide
range of printers and operating systems is extremely difficult. That
combined with the limited volume of customers for each UNIX varient has
forced most printer vendors to give up supporting UNIX entirely.
<P>CUPS is designed to eliminate <I>the printing problem</I>. One
common printing system can be used by all UNIX varients to support the
printing needs of users. Printer vendors can use its modular filter
interface to develop a single driver program that supports a wide range
of file formats with little or no effort. Since CUPS provides both the
System V and Berkeley printing commands, users (and applications) can
reap the benefits of this new technology with no changes.
<H2>The Technology</H2>
<P>CUPS is based upon an emerging Internet standard called the Internet
Printing Protocol. IPP has been embraced by dozens of printer and
printer server manufacturers and is supported by Microsoft Windows
2000.
<P>IPP defines a standard protocol for printing as well as managing
print jobs and printer options like media size, resolution, and so
forth. Like all IP-based protocols, IPP can be used locally or over the
Internet to printers hundreds or thousands of miles away. Unlike other
protocols, however, IPP also supports access control, authentication,
and encryption, making it a much more capable and secure printing
solution than older ones.
<P>IPP is layered on top of the Hyper-Text Transport Protocol ("HTTP")
which is the basis of web servers on the Internet. This allows users
to view documentation, check status information on a printer or server,
and manage their printers, classes, and jobs using their web browser.
<P>CUPS provides a complete IPP/1.1 based printing system that provides
Basic, Digest, and local certificate authentication and user, domain,
or IP-based access control. TLS encryption will be available in future
versions of CUPS.
<H2>Jobs</H2>
<P>Each file or set of files that is submitted for printing is called a
<I>job</I>. Jobs are identified by a unique number starting at 1 and
are assigned to a particular destination, usually a printer. Jobs can
also have options associated with them such as media size, number of
copies, and priority.
<H2>Classes</H2>
<P>CUPS supports collections of printers known as <I>classes</I>. Jobs
sent to a class are forwarded to the first available printer in the
class.
<H2>Filters</H2>
<P>Filters allow a user or application to print many types of files
without extra effort. Print jobs sent to a CUPS server are filtered
before sending them to a printer. Some filters convert job files to
different formats that the printer can understand. Others perform page
selection and ordering tasks.
<P>CUPS provides filters for printing many types of image files,
HP-GL/2 files, PDF files, and text files. CUPS also supplies PostScript
and image file Raster Image Processor ("RIP") filters that convert
PostScript or image files into bitmaps that can be sent to a raster
printer.
<H2>Backends</H2>
<P>Backends perform the most important task of all - they send the
filtered print data to the printer.
<P>CUPS provides backends for printing over parallel, serial, and USB
ports, and over the network via the IPP, JetDirect (AppSocket), and
Line Printer Daemon ("LPD") protocols. Additional backends are
available in network service packages such as the SMB backend
included with the popular SAMBA software.
<P>Backends are also used to determine the available devices. On
startup each backend is asked for a list of devices it supports,
and any information that is available. This allows the parallel
backend to tell CUPS that an EPSON Stylus Color 600 printer is
attached to parallel port 1, for example.
<H2>Printer Drivers</H2>
<P>Printer drivers in CUPS consist of one of more filters specific to a
printer. CUPS includes sample printer drivers for Hewlett-Packard
LaserJet and DeskJet printers and EPSON 9-pin, 24-pin, Stylus Color,
and Stylus Photo printers. While these drivers do not generate optimal
output for the different printer models, they do provide basic printing
and demonstrate how you can write your own printer drivers and
incorporate them into CUPS.
<H2>Networking</H2>
<P>Printers and classes on the local system are automatically shared
with other systems on the network. This allows you to setup one system
to print to a printer and use this system as a printer server or spool
host for all of the others. Users may then select a local printer by
name or a remote printer using "name@server".
<P>CUPS also provides <I>implicit classes</I>, which are collections of
printers and/or classes with the same name. This allows you to setup
multiple servers pointing to the same physical network printer, for
example, so that you aren't relying on a single system for printing.
Because this also works with printer classes, you can setup multiple
servers and printers and never worry about a single point of failure
unless all of the printers and servers go down!
+42
Ver Arquivo
@@ -0,0 +1,42 @@
<H1>References</H1>
<H2>CUPS Documentation</H2>
<P>The following CUPS documentation is referenced by this document:
<UL>
<LI>CUPS-CMP-1.1: CUPS Configuration Management Plan
<LI>CUPS-IDD-1.1: CUPS System Interface Design Description
<LI>CUPS-IPP-1.1: CUPS Implmentation of IPP
<LI>CUPS-SAM-1.1.x: CUPS Software Administrators Manual
<LI>CUPS-SDD-1.1: CUPS Software Design Description
<LI>CUPS-SPM-1.1.x: CUPS Software Programming Manual
<LI>CUPS-SSR-1.1: CUPS Software Security Report
<LI>CUPS-STP-1.1: CUPS Software Test Plan
<LI>CUPS-SUM-1.1.x: CUPS Software Users Manual
<LI>CUPS-SVD-1.1.x: CUPS Software Version Description
</UL>
<H2>Other Documents</H2>
<P>The following non-CUPS documents are referenced by this document:
<UL>
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf">Adobe
PostScript Printer Description File Format Specification,
Version 4.3.</A>
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf">Adobe
PostScript Language Reference, Third Edition.</A>
<LI>IPP: Job and Printer Set Operations
<LI>IPP/1.1: Encoding and Transport
<LI>IPP/1.1: Implementers Guide
<LI>IPP/1.1: Model and Semantics
<LI><A HREF="http://www.ietf.org/rfc/rfc1179.txt">RFC 1179, Line Printer Daemon Protocol</A>
<LI><A HREF="http://www.ietf.org/rfc/rfc2567.txt">RFC 2567, Design Goals for an Internet Printing Protocol</A>
<LI><A HREF="http://www.ietf.org/rfc/rfc2568.txt">RFC 2568, Rationale for the Structure of the Model and Protocol</A>
for the Internet Printing Protocol</A>
<LI><A HREF="http://www.ietf.org/rfc/rfc2569.txt">RFC 2569, Mapping between LPD and IPP Protocols</A>
<LI><A HREF="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1</A>
<LI><A HREF="http://www.ietf.org/rfc/rfc2617.txt">RFC 2617, HTTP Authentication: Basic and Digest Access</A>
Authentication
</UL>
+4238
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+3296
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+3890
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+587
Ver Arquivo
@@ -0,0 +1,587 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE> CUPS Software Design Description</TITLE>
<META NAME="AUTHOR" CONTENT="Easy Software Products">
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-SDD-1.1">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<STYLE>
BODY { font-family: serif; font-size: 11.0pt }
H1 { font-family: sans-serif; font-size: 20.0pt }
H2 { font-family: sans-serif; font-size: 17.0pt }
H3 { font-family: sans-serif; font-size: 14.0pt }
H4 { font-family: sans-serif; font-size: 11.0pt }
H5 { font-family: sans-serif; font-size: 9.0pt }
H6 { font-family: sans-serif; font-size: 8.0pt }
SUB { font-size: 8.0pt }
SUP { font-size: 8.0pt }
PRE { font-size: 9.0pt }
</STYLE>
</HEAD>
<BODY>
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0" WIDTH="100%"><BR>
<H1> CUPS Software Design Description</H1></A><BR>
CUPS-SDD-1.1<BR>
Easy Software Products<BR>
Copyright 1997-2000, All Rights Reserved<BR>
</CENTER>
<HR>
<H1 ALIGN="CENTER"><A NAME="CONTENTS">Table of Contents</A></H1>
<BR>
<BR><B><A HREF="#1">1 Scope</A></B>
<UL>
<LI><A HREF="#1_1">1.1 Identification</A></LI>
<LI><A HREF="#1_2">1.2 System Overview</A></LI>
<LI><A HREF="#1_3">1.3 Document Overview</A></LI>
</UL>
<B><A HREF="#2">2 References</A></B>
<UL>
<LI><A HREF="#2_1">2.1 CUPS Documentation</A></LI>
<LI><A HREF="#2_2">2.2 Other Documents</A></LI>
</UL>
<B><A HREF="#3">3 Design Overview</A></B>
<UL>
<LI><A HREF="#3_1">3.1 Backends</A></LI>
<UL>
<LI><A HREF="#3_1_1">3.1.1 ipp</A></LI>
<LI><A HREF="#3_1_2">3.1.2 lpd</A></LI>
<LI><A HREF="#3_1_3">3.1.3 parallel</A></LI>
<LI><A HREF="#3_1_4">3.1.4 serial</A></LI>
<LI><A HREF="#3_1_5">3.1.5 socket</A></LI>
<LI><A HREF="#3_1_6">3.1.6 usb</A></LI>
</UL>
<LI><A HREF="#3_2">3.2 Berkeley Commands</A></LI>
<UL>
<LI><A HREF="#3_2_1">3.2.1 lpc</A></LI>
<LI><A HREF="#3_2_2">3.2.2 lpq</A></LI>
<LI><A HREF="#3_2_3">3.2.3 lpr</A></LI>
<LI><A HREF="#3_2_4">3.2.4 lprm</A></LI>
</UL>
<LI><A HREF="#3_3">3.3 CGI</A></LI>
<UL>
<LI><A HREF="#3_3_1">3.3.1 admin.cgi</A></LI>
<LI><A HREF="#3_3_2">3.3.2 classes.cgi</A></LI>
<LI><A HREF="#3_3_3">3.3.3 jobs.cgi</A></LI>
<LI><A HREF="#3_3_4">3.3.4 printers.cgi</A></LI>
</UL>
<LI><A HREF="#3_4">3.4 CUPS Application Programmers Interface</A></LI>
<UL>
<LI><A HREF="#3_4_1">3.4.1 Convenience Functions</A></LI>
<LI><A HREF="#3_4_2">3.4.2 HTTP Functions</A></LI>
<LI><A HREF="#3_4_3">3.4.3 IPP Functions</A></LI>
<LI><A HREF="#3_4_4">3.4.4 Language Functions</A></LI>
<LI><A HREF="#3_4_5">3.4.5 PPD Functions</A></LI>
</UL>
<LI><A HREF="#3_5">3.5 CUPS Imaging Library</A></LI>
<UL>
<LI><A HREF="#3_5_1">3.5.1 Colorspace Conversion Functions</A></LI>
<LI><A HREF="#3_5_2">3.5.2 Color Management Functions</A></LI>
<LI><A HREF="#3_5_3">3.5.3 Image Management Functions</A></LI>
<LI><A HREF="#3_5_4">3.5.4 Scaling Functions</A></LI>
<LI><A HREF="#3_5_5">3.5.5 Image File Functions</A></LI>
<LI><A HREF="#3_5_6">3.5.6 Raster Functions</A></LI>
</UL>
<LI><A HREF="#3_6">3.6 Daemons</A></LI>
<UL>
<LI><A HREF="#3_6_1">3.6.1 Line Printer Daemon</A></LI>
<LI><A HREF="#3_6_2">3.6.2 Polling Daemon</A></LI>
</UL>
<LI><A HREF="#3_7">3.7 Filters</A></LI>
<UL>
<LI><A HREF="#3_7_1">3.7.1 hpgltops</A></LI>
<LI><A HREF="#3_7_2">3.7.2 imagetops</A></LI>
<LI><A HREF="#3_7_3">3.7.3 imagetoraster</A></LI>
<LI><A HREF="#3_7_4">3.7.4 pdftops</A></LI>
<LI><A HREF="#3_7_5">3.7.5 pstops</A></LI>
<LI><A HREF="#3_7_6">3.7.6 pstoraster</A></LI>
<LI><A HREF="#3_7_7">3.7.7 rastertoepson</A></LI>
<LI><A HREF="#3_7_8">3.7.8 rastertohp</A></LI>
<LI><A HREF="#3_7_9">3.7.9 texttops</A></LI>
</UL>
<LI><A HREF="#3_8">3.8 Scheduler</A></LI>
<UL>
<LI><A HREF="#3_8_1">3.8.1 Authorization</A></LI>
<LI><A HREF="#3_8_2">3.8.2 Classes</A></LI>
<LI><A HREF="#3_8_3">3.8.3 Client</A></LI>
<LI><A HREF="#3_8_4">3.8.4 Configuration</A></LI>
<LI><A HREF="#3_8_5">3.8.5 Devices</A></LI>
<LI><A HREF="#3_8_6">3.8.6 Directory Services</A></LI>
<LI><A HREF="#3_8_7">3.8.7 IPP</A></LI>
<LI><A HREF="#3_8_8">3.8.8 Jobs</A></LI>
<LI><A HREF="#3_8_9">3.8.9 Logging</A></LI>
<LI><A HREF="#3_8_10">3.8.10 Main</A></LI>
<LI><A HREF="#3_8_11">3.8.11 MIME</A></LI>
<LI><A HREF="#3_8_12">3.8.12 PPDs</A></LI>
<LI><A HREF="#3_8_13">3.8.13 Printers</A></LI>
</UL>
<LI><A HREF="#3_9">3.9 System V Commands</A></LI>
<UL>
<LI><A HREF="#3_9_1">3.9.1 accept</A></LI>
<LI><A HREF="#3_9_2">3.9.2 cancel</A></LI>
<LI><A HREF="#3_9_3">3.9.3 disable</A></LI>
<LI><A HREF="#3_9_4">3.9.4 enable</A></LI>
<LI><A HREF="#3_9_5">3.9.5 lp</A></LI>
<LI><A HREF="#3_9_6">3.9.6 lpadmin</A></LI>
<LI><A HREF="#3_9_7">3.9.7 lpinfo</A></LI>
<LI><A HREF="#3_9_8">3.9.8 lpmove</A></LI>
<LI><A HREF="#3_9_9">3.9.9 lpoptions</A></LI>
<LI><A HREF="#3_9_10">3.9.10 lpstat</A></LI>
<LI><A HREF="#3_9_11">3.9.11 reject</A></LI>
</UL>
</UL>
<B><A HREF="#4">A Glossary</A></B>
<UL>
<LI><A HREF="#4_1">A.1 Terms</A></LI>
<LI><A HREF="#4_2">A.2 Acronyms</A></LI>
</UL>
<HR>
<H1><A NAME="1">1 Scope</A></H1>
<H2><A NAME="1_1">1.1 Identification</A></H2>
This software design description document provides general information
on the architecture and coding of the Common UNIX Printing System
(&quot;CUPS&quot;) Version 1.1.
<H2><A NAME="1_2">1.2 System Overview</A></H2>
<P>CUPS provides a portable printing layer for UNIX&reg;-based operating
systems. It has been developed by <A HREF="http://www.easysw.com">Easy
Software Products</A> to promote a standard printing solution for all
UNIX vendors and users. CUPS provides the System V and Berkeley
command-line interfaces. </P>
<P>CUPS uses the Internet Printing Protocol (&quot;IPP&quot;) as the basis for
managing print jobs and queues. The Line Printer Daemon (&quot;LPD&quot;) Server
Message Block (&quot;SMB&quot;), and AppSocket (a.k.a. JetDirect) protocols are
also supported with reduced functionality. CUPS adds network printer
browsing and PostScript Printer Description (&quot;PPD&quot;) based printing
options to support real-world printing under UNIX. </P>
<P>CUPS also includes a customized version of GNU Ghostscript
(currently based off GNU Ghostscript 5.50) and an image file RIP that
are used to support non-PostScript printers. Sample drivers for HP and
EPSON printers are included that use these filters. </P>
<H2><A NAME="1_3">1.3 Document Overview</A></H2>
This software design description document is organized into the
following sections:
<UL>
<LI>1 - Scope </LI>
<LI>2 - References </LI>
<LI>3 - Design Overview </LI>
<LI>A - Glossary </LI>
</UL>
<H1><A NAME="2">2 References</A></H1>
<H2><A NAME="2_1">2.1 CUPS Documentation</A></H2>
<P>The following CUPS documentation is referenced by this document: </P>
<UL>
<LI>CUPS-CMP-1.1: CUPS Configuration Management Plan </LI>
<LI>CUPS-IDD-1.1: CUPS System Interface Design Description </LI>
<LI>CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
<LI>CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
<LI>CUPS-SDD-1.1: CUPS Software Design Description </LI>
<LI>CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
<LI>CUPS-SSR-1.1: CUPS Software Security Report </LI>
<LI>CUPS-STP-1.1: CUPS Software Test Plan </LI>
<LI>CUPS-SUM-1.1.x: CUPS Software Users Manual </LI>
<LI>CUPS-SVD-1.1.x: CUPS Software Version Description </LI>
</UL>
<H2><A NAME="2_2">2.2 Other Documents</A></H2>
<P>The following non-CUPS documents are referenced by this document: </P>
<UL>
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf">
Adobe PostScript Printer Description File Format Specification,
Version 4.3.</A></LI>
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf">
Adobe PostScript Language Reference, Third Edition.</A></LI>
<LI>IPP: Job and Printer Set Operations </LI>
<LI>IPP/1.1: Encoding and Transport </LI>
<LI>IPP/1.1: Implementers Guide </LI>
<LI>IPP/1.1: Model and Semantics </LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc1179.txt">RFC 1179, Line
Printer Daemon Protocol</A></LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc2567.txt">RFC 2567, Design
Goals for an Internet Printing Protocol</A></LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc2568.txt">RFC 2568, Rationale
for the Structure of the Model and Protocol</A> for the Internet
Printing Protocol</LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc2569.txt">RFC 2569, Mapping
between LPD and IPP Protocols</A></LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616, Hypertext
Transfer Protocol -- HTTP/1.1</A></LI>
<LI><A HREF="http://www.ietf.org/rfc/rfc2617.txt">RFC 2617, HTTP
Authentication: Basic and Digest Access</A> Authentication </LI>
</UL>
<H1><A NAME="3">3 Design Overview</A></H1>
CUPS is composed of 9 software sub-systems that operate together to
perform common printing tasks:
<UL>
<LI>Backends </LI>
<LI>Berkeley Commands </LI>
<LI>CGI </LI>
<LI>CUPS Application Programmers Interface </LI>
<LI>CUPS Imaging Library </LI>
<LI>Daemons </LI>
<LI>Filters </LI>
<LI>Scheduler </LI>
<LI>System V Commands </LI>
</UL>
<H2><A NAME="3_1">3.1 Backends</A></H2>
The backends implement communications over a number of different
interfaces. All backends are called with a common set of arguments:
<UL>
<LI>Device URI - the Uniform Resource Identifier for the output device
(e.g. <CODE>parallel:/dev/plp</CODE>, <CODE> ipp://hostname/resource</CODE>
). </LI>
<LI>Job Identifier - the job identifier for this job (integer). </LI>
<LI>User Name - the user associated with this job (name string). </LI>
<LI>Title - the title/job-name associated with this job (name string). </LI>
<LI>Copies - the number of copies required (integer). </LI>
<LI>Options - the options associated with this job (space separated
option strings). </LI>
<LI>Filename (optional) - the file to print; if this option is not
specified, the backend must read the print file from the standard
input. </LI>
</UL>
<P>Backends are named using the scheme of the URI, so a URI of
&quot;ipp://hostname/resource&quot; would be processed by the &quot;ipp&quot; backend. </P>
<H3><A NAME="3_1_1">3.1.1 ipp</A></H3>
<P>The ipp backend sends the specified job to a network printer or host
using the Internet Printing Protocol. The URI is as specified by the <CODE>
printer-uri-supported</CODE> attribute from the printer or host. </P>
<H3><A NAME="3_1_2">3.1.2 lpd</A></H3>
<P>The lpd backend sends the specified job to a network printer or host
using the Line Printer Daemon protocol. The URI is of the form: </P>
<UL>
<PRE>lpd://hostname/queue
</PRE>
</UL>
<H3><A NAME="3_1_3">3.1.3 parallel</A></H3>
<P>The parallel backend sends the specified job to a local printer
connected via the specified parallel port device. The URI is of the
form: </P>
<UL>
<PRE>parallel:/dev/file
</PRE>
</UL>
<H3><A NAME="3_1_4">3.1.4 serial</A></H3>
<P>The serial backend sends the specified job to a local printer
connected via the specified serial port device. The URI is of the
form: </P>
<UL>
<PRE>serial:/dev/file?option[+option+...]
</PRE>
</UL>
The options can be any combination of the following:
<UL>
<LI><CODE>baud=<I>rate</I></CODE> - Sets the baud rate for the device. </LI>
<LI><CODE>bits=<I>7 or 8</I></CODE> - Sets the number of data bits. </LI>
<LI><CODE>parity=<I>even</I></CODE> - Sets even parity checking. </LI>
<LI><CODE>parity=<I>odd</I></CODE> - Sets odd parity checking. </LI>
<LI><CODE>parity=<I>none</I></CODE> - Turns parity checking off. </LI>
</UL>
<H3><A NAME="3_1_5">3.1.5 socket</A></H3>
<P>The socket backend sends the specified job to a network host using
the AppSocket protocol commonly used by Hewlett-Packard and Tektronix
printers. The URI is of the form: </P>
<UL>
<PRE>socket://hostname[:port]
</PRE>
</UL>
The default port number is 9100.
<H3><A NAME="3_1_6">3.1.6 usb</A></H3>
<P>The usb backend sends the specified job to a local printer connected
via the specified usb port device. The URI is of the form: </P>
<UL>
<PRE>usb:/dev/file
</PRE>
</UL>
<H2><A NAME="3_2">3.2 Berkeley Commands</A></H2>
<P>The Berkeley commands provide a simple command-line interface to
CUPS to submit and control print jobs. It is provided for compatibility
with existing software that is hardcoded to use the Berkeley commands. </P>
<H3><A NAME="3_2_1">3.2.1 lpc</A></H3>
The lpc command allows users and administrators to check the status
and control print queues. The version provided with CUPS supports the
following commands:
<UL>
<LI>quit - Quits the lpc command. </LI>
<LI>status - Shows the status of printers and jobs in the queue. </LI>
</UL>
<H3><A NAME="3_2_2">3.2.2 lpq</A></H3>
<P>The lpq command shows the current queue status. </P>
<H3><A NAME="3_2_3">3.2.3 lpr</A></H3>
<P>The lpr command submits a job for printing. The CUPS version of lpr
silently ignores the &quot;i&quot;, &quot;t&quot;, &quot;m&quot;, &quot;h&quot;, and &quot;s&quot; options. </P>
<H3><A NAME="3_2_4">3.2.4 lprm</A></H3>
<P>The lprm removes one or more print jobs. </P>
<H2><A NAME="3_3">3.3 CGI</A></H2>
<P>The Common Gateway Interface (CGI) programs provide a web-based
status interface to monitor the status of printers, classes, and jobs.
Each of the CGIs utilize HTML template files that can be customized to
provide alternate appearances. </P>
<H3><A NAME="3_3_1">3.3.1 admin.cgi</A></H3>
<P>The admin CGI provides administration interfaces for printers and
classes. The user can add, modify, delete, start, stop, and configure
printers and classes using &quot;wizard&quot; interfaces. </P>
<H3><A NAME="3_3_2">3.3.2 classes.cgi</A></H3>
<P>The classes CGI lists the available printer classes and any pending
jobs for the class. The user can click on individual classes to limit
the display and click on jobs to see the job status. </P>
<H3><A NAME="3_3_3">3.3.3 jobs.cgi</A></H3>
<P>The jobs CGI lists the queued print jobs in order of priority. The
list can be limited by printer or job. </P>
<H3><A NAME="3_3_4">3.3.4 printers.cgi</A></H3>
<P>The printers CGI lists the available printer queues and any pending
jobs for the printer. The user can click on individual printers to
limit the display and click on jobs to see the job status. </P>
<H2><A NAME="3_4">3.4 CUPS Application Programmers Interface</A></H2>
<P>The CUPS Application Programmers Interface (&quot;API&quot;) provides common
convenience, HTTP, IPP, language, and PPD functions used by the CUPS
software. </P>
<H3><A NAME="3_4_1">3.4.1 Convenience Functions</A></H3>
<P>Convenience functions are provided to submit an IPP request, send a
print file, cancel a job, get a list of available printers, get a list
of available classes, get the default printer or class, get the default
server name, get the local username, and get a password string. </P>
<H3><A NAME="3_4_2">3.4.2 HTTP Functions</A></H3>
<P>The HTTP functions provide functions to connect to HTTP servers,
issue requests, read data from a server, and write data to a server. </P>
<H3><A NAME="3_4_3">3.4.3 IPP Functions</A></H3>
<P>The IPP function provide functions to manage IPP request data and
attributes, read IPP responses from a server, and write IPP requests to
a server. </P>
<H3><A NAME="3_4_4">3.4.4 Language Functions</A></H3>
<P>The language functions provide a standard interface for retrieving
common textual messages for a particular locale and determining the
correct encoding (e.g. US ASCII, UTF-8, ISO-8859-1, etc.) </P>
<H3><A NAME="3_4_5">3.4.5 PPD Functions</A></H3>
<P>The PostScript Printer Description functions manage PPD files,
select options, check for option conflicts, and emit selected options
in the correct order. </P>
<H2><A NAME="3_5">3.5 CUPS Imaging Library</A></H2>
<P>The CUPS imaging library provides colorspace conversion, color
management, image management, scaling, image file, and raster functions
used by the CUPS raster filters. </P>
<H3><A NAME="3_5_1">3.5.1 Colorspace Conversion Functions</A></H3>
<P>The colorspace conversion functions handle conversion of grayscale
and RGB colors to grayscale, RGB, K, CMY, CMYK, and CMYKcm colorspaces. </P>
<H3><A NAME="3_5_2">3.5.2 Color Management Functions</A></H3>
<P>The color management functions handle gamut mapping and density
correction. These are integrated with the colorspace conversion
functions so that colorspace conversion and color management are
processed in a single step. </P>
<H3><A NAME="3_5_3">3.5.3 Image Management Functions</A></H3>
<P>The image management functions manage a tiled image database that is
swapped to/from disk as needed. </P>
<H3><A NAME="3_5_4">3.5.4 Scaling Functions</A></H3>
<P>The scaling functions provide image scaling services using
nearest-neighbor sampling and bilinear interpolation as appropriate. </P>
<H3><A NAME="3_5_5">3.5.5 Image File Functions</A></H3>
<P>The image file functions handle loading of all image file formats. </P>
<H3><A NAME="3_5_6">3.5.6 Raster Functions</A></H3>
<P>The raster functions manage streams of CUPS raster data (described
in the Interface Design Document) used by non-PostScript printer
drivers and raster filters. </P>
<H2><A NAME="3_6">3.6 Daemons</A></H2>
<P>The daemons provide additional network functions for the scheduler.
Currently only two daemons are provided with CUPS. </P>
<H3><A NAME="3_6_1">3.6.1 Line Printer Daemon</A></H3>
<P>The line printer daemon provides remote LPD client support and is
run by the <CODE>inetd(8)</CODE> daemon as needed. </P>
<H3><A NAME="3_6_2">3.6.2 Polling Daemon</A></H3>
<P>The polling daemon is used to poll a remote server for a list of
available printers and provide it to the scheduler for addition. A
separate polling daemon is run by the scheduler for every remote system
listed for polling in the scheduler configuration file. </P>
<H2><A NAME="3_7">3.7 Filters</A></H2>
<P>The filters implement file conversion services for CUPS. All filters
are called with a common set of arguments: </P>
<UL>
<LI>Printer name - the name of the destination printer (name string). </LI>
<LI>Job Identifier - the job identifier for this job (integer). </LI>
<LI>User Name - the user associated with this job (name string). </LI>
<LI>Title - the title/job-name associated with this job (name string). </LI>
<LI>Copies - the number of copies required (integer). </LI>
<LI>Options - the options associated with this job (space separated
option strings). </LI>
<LI>Filename (optional) - the file to print; if this option is not
specified, the filter must read the input file from the standard
input. </LI>
</UL>
<P>Filters are added to the MIME conversion data file and implement all
necessary conversions from one file type to another. </P>
<H3><A NAME="3_7_1">3.7.1 hpgltops</A></H3>
<P>The hpgltops filter converts HP-GL/2 files into PostScript. </P>
<H3><A NAME="3_7_2">3.7.2 imagetops</A></H3>
<P>The imagetops filter converts image files into PostScript. </P>
<H3><A NAME="3_7_3">3.7.3 imagetoraster</A></H3>
<P>The imagetoraster filter converts image files into CUPS raster data. </P>
<H3><A NAME="3_7_4">3.7.4 pdftops</A></H3>
<P>The pdftops filter converts PDF files into PostScript. </P>
<H3><A NAME="3_7_5">3.7.5 pstops</A></H3>
<P>The pstops filter inserts printer-specific commands from PPD files
and performs page filtering as requested by the user. </P>
<H3><A NAME="3_7_6">3.7.6 pstoraster</A></H3>
<P>The pstoraster filter converts PostScript program data into CUPS
raster data. </P>
<H3><A NAME="3_7_7">3.7.7 rastertoepson</A></H3>
<P>The rastertoepson filter handles converting CUPS raster data to
ESC/P and supports both color and black-and-white printers. </P>
<H3><A NAME="3_7_8">3.7.8 rastertohp</A></H3>
<P>The rastertohp filter handles converting CUPS raster data to HP-PCL
and supports both color and black-and-white printers. </P>
<H3><A NAME="3_7_9">3.7.9 texttops</A></H3>
<P>The texttops filter converts text files into PostScript. </P>
<H2><A NAME="3_8">3.8 Scheduler</A></H2>
<P>The scheduler is a fully-functional HTTP/1.1 and IPP/1.1 server that
manages the printers, classes, and jobs in the system. It also handles
a simple broadcast-based directory service so that remote print queues
and classes can be accessed transparently from the local system. </P>
<H3><A NAME="3_8_1">3.8.1 Authorization</A></H3>
<P>The authorization module is responsible for performing access
control and authentication for all HTTP and IPP requests entering the
system. </P>
<H3><A NAME="3_8_2">3.8.2 Classes</A></H3>
<P>The classes module is responsible for managing printer classes in
the system. Each class is a collection of local and/or remote printers.
The classes module also reads and writes the classes configuration
file. </P>
<H3><A NAME="3_8_3">3.8.3 Client</A></H3>
<P>The client module is responsible for all HTTP client communications.
It handles listening on selected interfaces, accepting connections
from prospective clients, processing incoming HTTP requests, and
sending HTTP responses to those requests. The client module also is
responsible for executing the external CGI programs as needed to
support web-based printer, class, and job status monitoring and
administration. </P>
<P>Once authorized, all IPP requests are sent to the IPP module. </P>
<H3><A NAME="3_8_4">3.8.4 Configuration</A></H3>
<P>The configuration module is responsible for reading the CUPS
configuration file and initializing the appropriate data structures and
values. The configuration module also stops CUPS services before
reading the configuration file and restarts them after the
configuration file has been read. </P>
<H3><A NAME="3_8_5">3.8.5 Devices</A></H3>
<P>The devices module is responsible for managing the list of available
devices for the CUPS-Get-Devices operation. </P>
<H3><A NAME="3_8_6">3.8.6 Directory Services</A></H3>
<P>The directory services module sends and recieves printer state
information over a broadcast socket. Remote printers and classes are
automatically added to or removed from the local printer and class
lists as needed. </P>
<P>The directory services module can only recieve printer state
information over a single UDP port, however it can broadcast to
multiple addresses and ports as needed. </P>
<H3><A NAME="3_8_7">3.8.7 IPP</A></H3>
<P>The IPP module handles IPP requests and acts accordingly. URI
validation is also performed here, as a client can post IPP data to any
URI on the server which might sidestep the access control or
authentication of the HTTP server. </P>
<H3><A NAME="3_8_8">3.8.8 Jobs</A></H3>
<P>The jobs module manages print jobs, starts filter and backend
processes for jobs to be printed, and monitors status messages from
those filters and backends. </P>
<H3><A NAME="3_8_9">3.8.9 Logging</A></H3>
<P>The logging module manages the access, error, and page log files
that are generated by the scheduler. </P>
<H3><A NAME="3_8_10">3.8.10 Main</A></H3>
<P>The main module is responsible for timing out and dispatching input
and output for client connections. It also watches for incoming <CODE>
SIGHUP</CODE> and <CODE>SIGCHLD</CODE> signals, reloads the server
configuration files as needed, and handles child process errors and
exits. </P>
<H3><A NAME="3_8_11">3.8.11 MIME</A></H3>
<P>The Multimedia Internet Mail Exchange module manages a MIME type and
conversion database that supports file typing by extension and content
and least-cost file filtering from a source to a destination file type. </P>
<H3><A NAME="3_8_12">3.8.12 PPDs</A></H3>
<P>The PPDs module is responsible for managing the list of available
PPD files for the CUPS-Get-PPDs operation. </P>
<H3><A NAME="3_8_13">3.8.13 Printers</A></H3>
<P>The printers module is responsible for managing printers and PPD
files in the system. The printers module also reads and writes the
printers configuration file. </P>
<H2><A NAME="3_9">3.9 System V Commands</A></H2>
<P>The System V commands provide a robust command-line interface to
CUPS to submit and control printers and jobs. </P>
<H3><A NAME="3_9_1">3.9.1 accept</A></H3>
<P>The accept command tells the scheduler to accept new jobs for
specific printers. </P>
<H3><A NAME="3_9_2">3.9.2 cancel</A></H3>
<P>The cancel command tells the scheduler to cancel one or more jobs
that are queued for printing. </P>
<H3><A NAME="3_9_3">3.9.3 disable</A></H3>
<P>The disable command tells the scheduler to stop printing jobs on the
specified printers. </P>
<H3><A NAME="3_9_4">3.9.4 enable</A></H3>
<P>The enable command tells the scheduler to start printing jobs on the
specified printers. </P>
<H3><A NAME="3_9_5">3.9.5 lp</A></H3>
<P>The lp command submits submits files for printing. Unlike the
standard System V lp command, a single CUPS lp command will generate a
separate job ID for each file that is printed. Also, the Solaris &quot;f&quot;,
&quot;H&quot;, &quot;P&quot;, &quot;S&quot;, and &quot;y&quot; options are silently ignored. </P>
<H3><A NAME="3_9_6">3.9.6 lpadmin</A></H3>
<P>The lpadmin command manages printer queues and classes. The Solaris
&quot;A&quot;, &quot;F&quot;, &quot;I&quot;, &quot;M&quot;, &quot;P&quot;, &quot;Q&quot;, &quot;S&quot;, &quot;T&quot;, &quot;U&quot;, &quot;W&quot;, &quot;f&quot;, &quot;l&quot;, &quot;m&quot;, &quot;o&quot;,
&quot;s&quot;, &quot;t&quot;, and &quot;u&quot; options are not supported, and new options &quot;P&quot; (PPD
file) and &quot;E&quot; (enable and accept) are provided to configure
CUPS-specific features. </P>
<H3><A NAME="3_9_7">3.9.7 lpinfo</A></H3>
<P>The lpinfo command lists the available PPD files or devices as
selected by the user. </P>
<H3><A NAME="3_9_8">3.9.8 lpmove</A></H3>
<P>The lpmove command moves a print job to a new destination. </P>
<H3><A NAME="3_9_9">3.9.9 lpoptions</A></H3>
<P>The lpoptions command manages user-defined printers and options. </P>
<H3><A NAME="3_9_10">3.9.10 lpstat</A></H3>
<P>The lpstat command lists printers, classes, and jobs as requested by
the user. </P>
<H3><A NAME="3_9_11">3.9.11 reject</A></H3>
<P>The reject command tells the scheduler not to accept new jobs for
specific printers. </P>
<H1 TYPE="A" VALUE="1"><A NAME="4">A Glossary</A></H1>
<H2><A NAME="4_1">A.1 Terms</A></H2>
<DL>
<DT>C </DT>
<DD>A computer language. </DD>
<DT>parallel </DT>
<DD>Sending or receiving data more than 1 bit at a time. </DD>
<DT>pipe </DT>
<DD>A one-way communications channel between two programs. </DD>
<DT>serial </DT>
<DD>Sending or receiving data 1 bit at a time. </DD>
<DT>socket </DT>
<DD>A two-way network communications channel. </DD>
</DL>
<H2><A NAME="4_2">A.2 Acronyms</A></H2>
<DL>
<DT>ASCII </DT>
<DD>American Standard Code for Information Interchange </DD>
<DT>CUPS </DT>
<DD>Common UNIX Printing System </DD>
<DT>ESC/P </DT>
<DD>EPSON Standard Code for Printers </DD>
<DT>FTP </DT>
<DD>File Transfer Protocol </DD>
<DT>HP-GL </DT>
<DD>Hewlett-Packard Graphics Language </DD>
<DT>HP-PCL </DT>
<DD>Hewlett-Packard Page Control Language </DD>
<DT>HP-PJL </DT>
<DD>Hewlett-Packard Printer Job Language </DD>
<DT>IETF </DT>
<DD>Internet Engineering Task Force </DD>
<DT>IPP </DT>
<DD>Internet Printing Protocol </DD>
<DT>ISO </DT>
<DD>International Standards Organization </DD>
<DT>LPD </DT>
<DD>Line Printer Daemon </DD>
<DT>MIME </DT>
<DD>Multimedia Internet Mail Exchange </DD>
<DT>PPD </DT>
<DD>PostScript Printer Description </DD>
<DT>SMB </DT>
<DD>Server Message Block </DD>
<DT>TFTP </DT>
<DD>Trivial File Transfer Protocol </DD>
</DL>
</BODY>
</HTML>

Alguns arquivos não foram exibidos porque demasiados arquivos foram alterados neste diff Mostrar Mais