pax_global_header00006660000000000000000000000064141611344510014512gustar00rootroot0000000000000052 comment=dccfbc49af1b70578b711ef0f6428aff418741e6 lprint-1.1.0/000077500000000000000000000000001416113445100130215ustar00rootroot00000000000000lprint-1.1.0/CHANGES.md000066400000000000000000000050171416113445100144160ustar00rootroot00000000000000LPrint Change History ===================== v1.1.0 - December 23, 2021 -------------------------- - Switched to PAPPL (Issue #20, #35) - Fixed `lprint default` and `lprint delete` not working (Issue #17, Issue #40) - Fixed server crashes on `SIGINT` (Issue #18) - Fixed the reported date and time information when no printers were added (Issue #26) - Fixed a startup bug on macOS (Issue #34) - Now support auto-detection of printer drivers and auto-add USB printers the first time LPrint is run. - Added the missing macOS binary package (Issue #33) - Added launchd and systemd service files for running lprint as a service. - Added support for Zebra/Eltron EPL2 printers (Issue #38) - Added support for 600dpi ZPL thermal transfer printers. - Added support for ZPL status/ready media updates. - Added support for test pages. - Temporarily removed support for DYMO LabelWriter Wireless printer (Issue #23) v1.0 - February 17, 2020 ------------------------ - First production release. v1.0rc1 - February 10, 2020 --------------------------- - Updated media documentation (Issue #13) - The `lprint options` command now reports both English and metric dimensions for all supported sizes (Issue #14) - Now support setting the default media source, top offset, tracking, and type values. - Now save and load next job-id value for each printer, along with the printer-config-change-[date-]time and printer-impressions-completed values. - Fixed some small memory leaks. v1.0b2 - January 26, 2020 ------------------------- - Added support for authentication of remote administrative requests (Issue #1) - Added support for managing printers via web browser (Issue #1) - The `add`, `default`, `delete`, and `modify` sub-commands now support the "-u" option (Issue #1) - Fixed an ASLR issue with some Linux compilers (Issue #5) - Added code to detach the Linux usblp kernel driver since apparently there are still Linux distributions shipping the old (and broken) usblp kernel driver (Issue #7) - Device errors are now logged to stderr (for `lprint devices`) or the server log (for `lprint server`) so that it is possible to see permission and other access errors (Issue #8) - Job attributes are now validated properly against the driver attributes (Issue #9) - Fixed an issue in server mode - a failed IPv6 listener would prevent the server from starting (Issue #12) - Added a "spool-directory" option for the `server` sub-command. - Added a spec file for building RPMs. v1.0b1 - January 15, 2020 ------------------------- - First public release. lprint-1.1.0/CONTRIBUTING.md000066400000000000000000000007541416113445100152600ustar00rootroot00000000000000Contributing to LPrint ====================== I'm happy to accept changes into LPrint. For new drivers, I ask that contributors provide me with a printer and supplies that would allow me to debug any issues *and/or* commit to providing assistance on any issues that are reported on Github. Contributions should be submitted as pull requests on the [LPrint Github project](https://github.com/michaelrsweet/lprint). New code MUST be supplied under the existing LPrint license (Apache 2.0). lprint-1.1.0/DOCUMENTATION.md000066400000000000000000000273621416113445100153660ustar00rootroot00000000000000LPrint Documentation ==================== LPrint v1.1 - December 21, 2021 Copyright 2019-2021 by Michael R Sweet LPrint is licensed under the Apache License Version 2.0. See the files "LICENSE" and "NOTICE" for more information. Table of Contents ----------------- - [Overview](#overview) - [Installation](#installation) - [Basic Usage](#basic-usage) - [Adding Printers](#adding-printers) - [Printing Options](#printing-options) - [Setting Default Options](#setting-default-options) - [Running a Server](#running-a-server) - [Server Web Interface](#server-web-interface) - [Resources](#resources) Overview -------- LPrint is a label printer application for macOS® and Linux®. I wrote it in response to criticism that coming changes in CUPS will leave users of label printers in the cold - see Apple CUPS Github issue #5271. Basically, LPrint is a print spooler optimized for label printing. It accepts "raw" print data as well as PNG images (like those used for shipping labels by most shippers' current web APIs) and has built-in "drivers" to send the print data to USB and network-connected label printers. The spooler also tries to keep the labels moving by merging jobs over a single connection to the printer rather than starting and stopping like CUPS does to support a wider variety of printers. LPrint supports the full range of options and features supported by the embedded drivers - currently all DYMO and Zebra EPL2/ZPL label printers. Whenever possible, LPrint will auto-detect the make and model of your printer and its installed capabilities. And you can configure the default values of all options as well as manually configure the media that is loaded in each printer. LPrint also offers a simple network server mode that makes any label printers appear as IPP Everywhere™/AirPrint™/Mopria™ printers on your network. Thus, any Android™, Chrome OS™, iOS®, Linux, macOS, or Windows 10/11 client can use any label printer supported by LPrint. And you can, of course, send jobs from LPrint to an LPrint server on the network. Finally, LPrint offers command-line and web-based monitoring of printer and job status. Installation ------------ LPrint is published as a snap for Linux. Run the following command to install it: sudo snap install lprint A package file is included with all source releases on Github for use on macOS 10.14 and higher for both Intel and Apple Silicon. If you need to install LPrint from source, you'll need a "make" program, a C99 compiler (Clang and GCC work), the CUPS developer files, and the PAPPL developer files. Once the prerequisites are installed on your system, use the following commands to install LPrint to "/usr/local/bin": ./configure make sudo make install The "configure" script supports the usual autoconf options - run: ./configure --help to get a list of configuration options. Basic Usage ----------- LPrint uses a single executable to perform all functions. The normal syntax is: lprint SUB-COMMAND [OPTIONS] [FILES] where "SUB-COMMAND" is one of the following: - "add": Add a printer - "cancel": Cancel one or more jobs - "default": Get or set the default printer - "delete": Delete a printer - "devices": List available printers - "drivers": List available drivers - "jobs": List queued jobs - "modify": Modify a printer - "options": Lists the supported options and values - "printers": List added printer queues - "server": Run in server mode - "shutdown": Shutdown a running server - "status": Show server or printer status - "submit": Submit one or more files for printing You can omit the sub-command if you just want to print something, for example: lprint labels.zpl The options vary based on the sub-command, but most commands support "-d" to specify a printer and "-o" to specify a named option with a value, for example: - `lprint -d myprinter labels.zpl`: Print a file to the printer named "myprinter". - `lprint -o media=na_index-4x6_4x6in label.png`: Print a shipping label image to a 4x6 label. - `lprint default -d myprinter`: Set "myprinter" as the default printer. You can find our more about each sub-command by reading its included man page, for example the following command will explain all of the supported options for the "submit" sub-command: man lprint-submit Adding Printers --------------- The "add" sub-command adds a new printer: lprint add -d PRINTER -v DEVICE-URI -m DRIVER-NAME "PRINTER" is the name you want to give the print queue. Printer names can contain spaces and special characters, but if you do any printing from scripts you probably want to limit yourself to ASCII letters, numbers, and punctuation. "DEVICE-URI" is a "usb:", "snmp:", or "socket:" URI for the printer. For USB-connected label printers, use the "devices" sub-command to discover the URI to use: lprint devices For network-connected printers, print the configuration summary on your label printer to discover its IP address. The device URI will then be "socket://" followed by the IP address. For example, a printer at address 192.168.0.42 will use the device URI "socket://192.168.0.42". Many network-connected label printers also support discovery via SNMP - use the "devices" sub-command to discover these printers' device URIs. Finally, the "DRIVER-NAME" is the name of the internal LPrint driver for the printer. Use the "drivers" sub-command to list the available drivers: lprint drivers For example, the common 4-inch Zebra printer uses the "zpl_4inch-203dpi-dt" driver: lprint add -d myprinter -v socket://192.168.0.42 -m zpl_4inch-203dpi-dt Printing Options ---------------- The following options are supported by the "submit" sub-command: - "-n NNN": Specifies the number of copies to produce. - "-o media=SIZE-NAME": Specifies the media size name using the PWG media size self-describing name (see below). - "-o media-source=ROLL-NAME": Specifies the roll to use such as 'main-roll' or 'alternate-roll'. - "-o media-top-offset=NNNin" or "-o media-top-offset=NNNmm": Specifies a printing offset from the top of the label. - "-o media-type=TYPE-NAME": Specifies a media type name such as 'labels', 'labels-continuous', or 'continuous'. - "-o orientation-requested=none": Prints in portrait or landscape orientation automatically. - "-o orientation-requested=portrait": Prints in portrait orientation. - "-o orientation-requested=landscape": Prints in landscape (90 degrees counter- clockwise) orientation. - "-o orientation-requested=reverse-portrait": Prints in reverse portrait (upside down) orientation. - "-o orientation-requested=reverse-landscape": Prints in reverse landscape (90 degrees clockwise) orientation. - "-o print-color-mode=bi-level": Prints black-and-white output with no shading. - "-o print-color-mode=monochrome": Prints grayscale output with shading as needed. - "-o print-content-optimize=auto": Automatically optimize printing based on content. - "-o print-content-optimize=graphic": Automatically optimize printing for graphics like lines and barcodes. - "-o print-content-optimize=photo": Automatically optimize printing for photos or other shaded images. - "-o print-content-optimize=text": Automatically optimize printing for text. - "-o print-content-optimize=text-and-graphic": Automatically optimize printing for text and graphics. - "-o print-darkness=NNN": Specifies a relative darkness from -100 (lightest) to 100 (darkest). - "-o print-quality=draft": Print using the lowest quality and fastest speed. - "-o print-quality=normal": Print using good quality and speed. - "-o print-quality=high": Print using the best quality and slowest speed. - "-o print-speed=NNNin" or "-o print-speed=NNNmm": Specifies the print speed in inches or millimeters per second. - "-o printer-resolution=NNNdpi": Specifies the print resolution in dots per inch. - "-t TITLE": Specifies the title of the job that appears in the list produced by the "jobs" sub-command. Media sizes use the PWG self-describing name format which looks like this: CLASS_NAME_WIDTHxLENGTHin CLASS_NAME_WIDTHxLENGTHmm "CLASS" is "na" for North American media sizes, "oe" for other cut label sizes in inches, "om" for other cut label sizes in millimeters, or "roll" for continuous roll sizes in inches or millimeters. "NAME" is a string of letters, numbers, dots ("."), and dashes ("-") describing the size. "WIDTH" and "LENGTH" are the width and length of the label or receipt you want to print. The trailing "in" or "mm" specifies the units in inches or millimeters, respectively. For example, a 4x6" shipping label uses the size name `na_4x6-index_4x6in` while a 1.25x3.5" address label uses `oe_address-label_1.25x3.5in` and a 50x200mm receipt uses `roll_receipt_50x200mm`. 2-up labels (where two labels are placed side-by-side) use the combined sizes of both labels. For example, a 2-up 0.5x1" multipurpose label uses the size name `oe_square-multipurpose-label_1x1in`. You can get a list of supported values for these options using the "options" sub-command: lprint options lprint options -d PRINTER Setting Default Options ----------------------- You can set the default values for each option with the "add" or "modify" sub-commands: lprint add -d PRINTER -v DEVICE-URI -m DRIVER-NAME -o OPTION=VALUE ... lprint modify -D PRINTER -o OPTION=VALUE ... In addition, you can configure the installed media and other printer settings using other "-o" options. For example, the following command configures the labels that are installed in a Dymo LabelWriter 450 Twin Turbo printer: lprint modify -d Dymo450TT \ -o media-ready=oe_address-label_1.25x3.5in,oe_shipping-label_2.125x4in Use the "options" sub-command to see which settings are supported for a particular printer. Running a Server ---------------- The "server" sub-command runs a standalone spooler. The following options control the server operation: - "-o listen-name=HOSTNAME": Sets the network hostname to resolve for listen addresses - "*" for the wildcard addresses. - "-o server-name=HOSTNAME": Sets the network hostname to advertise. - "-o server-port=NNN": Sets the network port number; the default is randomly assigned. - "-o auth-service=SERVICE": Specifies a PAM service for remote authentication. - "-o admin-group=GROUP": Specifies a group to use for remote authentication. - "-o spool-directory=DIRECTORY": Specifies the directory to store print files. - "-o log-file=FILENAME": Specifies a log file. - "-o log-file=-": Specifies that log entries are written to the standard error. - "-o log-file=syslog": Specifies that log entries are sent to the system log. - "-o log-level=LEVEL": Specifies the log level - "debug", "info", "warn", "error", or "fatal". > *Note:* When you install the LPrint snap on Linux or the package on macOS, the > server is automatically run as root. When you install from source, a > `launchd` (macOS) or `systemd` (all others) service file is installed but not > activated - they can be used to automatically start LPrint when the system > boots. Server Web Interface -------------------- When you run a standalone spooler on a network hostname, a web interface can be enabled that allows you to add, modify, and delete printers, as well as setting the default printer. To require authentication for the various web interface operations, you set the PAM authentication service with the `-o auth-service=SERVICE` option. For example, to use the "cups" PAM service with LPrint, run: lprint -o server-name=HOSTNAME -o server-port=NNN -o auth-service=cups By default, any user can authenticate web interface operations. To restrict access to a particular UNIX group, use the `-o admin-group=GROUP` option as well. Resources --------- The following additional resources are available: - LPrint home page: - LPrint Github project: lprint-1.1.0/LICENSE000066400000000000000000000261351416113445100140350ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. lprint-1.1.0/Makefile.in000066400000000000000000000122151416113445100150670ustar00rootroot00000000000000# # Makefile for LPrint, a Label Printer Application # # Copyright © 2019-2021 by Michael R Sweet # # Licensed under Apache License v2.0. See the file "LICENSE" for more # information. # # Be silent... .SILENT: # Version number... LPRINT_VERSION = @LPRINT_VERSION@ # Languages we have localized messages for... LANGUAGES = de en es fr it # Programs and options... AR = @AR@ ARFLAGS = @ARFLAGS@ ASAN_OPTIONS = leak_check_at_exit=false CC = @CC@ CFLAGS = -I.. @CFLAGS@ $(OPTIM) CSFLAGS = -s "$${CODESIGN_IDENTITY:=-}" --timestamp @CSFLAGS@ INSTALL = @INSTALL@ LDFLAGS = @LDFLAGS@ $(OPTIM) LIBS = @LIBS@ MKDIR = @MKDIR@ -p OPTIM = @OPTIM@ RANLIB = @RANLIB@ RM = @RM@ -f RMDIR = @RMDIR@ SHELL = /bin/sh # Directories... bindir = @bindir@ datadir = @datadir@ datarootdir = @datarootdir@ exec_prefix = @exec_prefix@ includedir = @includedir@ infodir = @infodir@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ oldincludedir = @oldincludedir@ prefix = @prefix@ privateinclude = @privateinclude@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ top_srcdir = @top_srcdir@ BUILDROOT = $(DSTROOT)$(RPM_BUILD_ROOT)$(DESTDIR) # Build commands... .c.o: echo Compiling $<... $(CC) $(CFLAGS) -c -o $@ $< # Targets... MAN1 = \ man/lprint-add.1 \ man/lprint-cancel.1 \ man/lprint-default.1 \ man/lprint-delete.1 \ man/lprint-devices.1 \ man/lprint-drivers.1 \ man/lprint-jobs.1 \ man/lprint-modify.1 \ man/lprint-printers.1 \ man/lprint-server.1 \ man/lprint-shutdown.1 \ man/lprint-status.1 \ man/lprint-submit.1 \ man/lprint.1 MAN5 = \ man/lprint.conf.5 OBJS = \ lprint-common.o \ lprint-dymo.o \ lprint-epl2.o \ lprint-testpage.o \ lprint-zpl.o \ lprint.o TARGETS = \ lprint # Make everything... all: $(TARGETS) # Clean everything... clean: $(RM) $(TARGETS) $(OBJS) # Clean everything and generated files distclean: clean $(RM) -r autom4te.cache $(RM) config.h config.log config.status $(RM) Makefile # Install everything... install: all echo "Installing lprint to $(BUILDROOT)$(bindir)..." $(INSTALL) -d -m 755 $(BUILDROOT)$(bindir) $(INSTALL) -c -m 755 lprint $(BUILDROOT)$(bindir) echo "Installing man pages to $(BUILDROOT)$(mandir)..." $(INSTALL) -d -m 755 $(BUILDROOT)$(mandir)/man1 for file in $(MAN1); do \ $(INSTALL) -c -m 644 $$file $(BUILDROOT)$(mandir)/man1; \ done $(INSTALL) -d -m 755 $(BUILDROOT)$(mandir)/man5 for file in $(MAN5); do \ $(INSTALL) -c -m 644 $$file $(BUILDROOT)$(mandir)/man5; \ done if test `uname` = Darwin; then \ echo "Installing launchd service to $(BUILDROOT)/Library/LaunchDaemons..."; \ $(INSTALL) -d -m 755 $(BUILDROOT)/Library/LaunchDaemons; \ $(INSTALL) -c -m 644 org.msweet.lprint.plist $(BUILDROOT)/Library/LaunchDaemons; \ else \ echo "Installing systemd service to $(BUILDROOT)$(sysconfdir)/systemd/system..."; \ $(INSTALL) -d -m 755 $(BUILDROOT)$(sysconfdir)/systemd/system; \ $(INSTALL) -c -m 644 lprint.service $(BUILDROOT)$(sysconfdir)/systemd/system; \ fi # Test everything... test: $(TARGETS) # LPrint program... lprint: $(OBJS) echo Linking $@... $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) if test `uname` = Darwin; then \ echo "Code-signing $@..."; \ codesign $(CSFLAGS) -i org.msweet.lprint $@; \ fi # Generate resource headers from the corresponding files in the resource # directory... resheaders: for file in lprint lprint-large lprint-small; do \ echo "Generating $$file-png.h from $$file.png..."; \ pappl-makeresheader static-resources/$$file.png >static-resources/$$file-png.h; \ done for lang in $(LANGUAGES); do \ echo "Generating lprint-$$lang-strings.h from lprint-$$lang.strings..."; \ pappl-makeresheader static-resources/lprint-$$lang.strings >static-resources/lprint-$$lang-strings.h; \ done # Dependencies... $(OBJS): config.h lprint.h Makefile lprint.o: \ lprint-dymo.h \ lprint-zpl.h \ static-resources/lprint-png.h \ static-resources/lprint-large-png.h \ static-resources/lprint-small-png.h \ static-resources/lprint-de-strings.h \ static-resources/lprint-en-strings.h \ static-resources/lprint-es-strings.h \ static-resources/lprint-fr-strings.h \ static-resources/lprint-it-strings.h # Notarize the lprint executable and make the macOS package... # # Set the APPLEID, CODESIGN_IDENTITY, PKGSIGN_IDENTITY, and TEAMID environment # variables from the Apple developer pages. macos: echo "Creating archive for notarization..." rm -f lprint.zip zip -v9 lprint.zip lprint echo Notarizing application xcrun notarytool submit lprint.zip \ --apple-id "$${APPLEID}" \ --keychain-profile "AC_$${TEAMID}" \ --team-id "$${TEAMID}" \ --wait rm -f lprint.zip echo "Creating the macOS package..." rm -rf /private/tmp/lprint-$(LPRINT_VERSION) make BUILDROOT="/private/tmp/lprint-$(LPRINT_VERSION)" install pkgbuild --root /private/tmp/lprint-$(LPRINT_VERSION) \ --identifier org.msweet.lprint \ --version $(LPRINT_VERSION) \ --min-os-version 10.14 \ --sign "$${PKGSIGN_IDENTITY}" --timestamp \ lprint-$(LPRINT_VERSION)-macos.pkg lprint-1.1.0/NOTICE000066400000000000000000000000621416113445100137230ustar00rootroot00000000000000LPrint Copyright © 2019-2021 by Michael R Sweet lprint-1.1.0/README.md000066400000000000000000000043341416113445100143040ustar00rootroot00000000000000LPrint - A Label Printer Application ==================================== LPrint implements printing for a variety of common label and receipt printers connected via network or USB. Features include: - A single executable handles spooling, status, and server functionality. - Multiple printer support. - Each printer implements an IPP Everywhere™ print service and is compatible with the driverless printing support in Android™, Chrome OS™, iOS®, Linux®, macOS®, and Windows® 10/11 clients. - Each printer can support options such as label modes, tear-off offsets, media tracking, media top offset, print darkness, resolution, roll selection, and speed. - Each printer can directly print "raw", Apple/PWG Raster, and/or PNG files. - Each printer automatically recovers from out-of-media, power loss, and disconnected/bad cable issues. For more information, see the file "DOCUMENTATION.md", the man pages in the "man" directory, and/or the LPrint project page at . > Note: Please use the Github issue tracker to report issues or request > features/improvements in LPrint: > > Requirements ------------ LPrint depends on: - A POSIX-compliant "make" program (both GNU and BSD make are known to work), - A C99 compiler (both Clang and GCC are known to work), - [PAPPL](https://www.msweet.org/pappl) 1.1 or later. - [CUPS](https://openprinting.github.io/cups) 2.2 or later (for libcups). Supported Printers ------------------ The following printers are currently supported: - DYMO LabelWriter printers - Zebra/Eltron EPL2 printers - Zebra ZPL printers Others will be added as time and access to printers permits. Standards --------- Through PAPPL, LPrint implements PWG 5100.14-2013: IPP Everywhere™ and the IPP Label Printing Extensions v1.0 for each printer, and has a partial implementation of PWG 5100.22-2019: IPP System Service v1.0 for managing the print queues and default printer. Legal Stuff ----------- LPrint is Copyright © 2019-2021 by Michael R Sweet. LPrint is licensed under the Apache License Version 2.0. See the files "LICENSE" and "NOTICE" for more information. LPrint is based loosely on the "rastertolabel.c" code from CUPS. lprint-1.1.0/config.guess000077500000000000000000001313551416113445100153510ustar00rootroot00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2013 Free Software Foundation, Inc. timestamp='2013-11-29' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD # # Please send patches with a ChangeLog entry to config-patches@gnu.org. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; or1k:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; or32:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: lprint-1.1.0/config.h.in000066400000000000000000000005361416113445100150500ustar00rootroot00000000000000// // Configuration header file for LPrint, a Label Printer Utility // // Copyright © 2019-2021 by Michael R Sweet. // // Licensed under Apache License v2.0. See the file "LICENSE" for more // information. // // Version number #define LPRINT_VERSION "" #define LPRINT_MAJOR_VERSION 1 #define LPRINT_MINOR_VERSION 1 #define LPRINT_PATCH_VERSION 0 lprint-1.1.0/config.sub000077500000000000000000001054121416113445100150070ustar00rootroot00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2013 Free Software Foundation, Inc. timestamp='2013-10-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches with a ChangeLog entry to config-patches@gnu.org. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 \ | or1k | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or1k-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: lprint-1.1.0/configure000077500000000000000000004450061416113445100147410ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for lprint 1.1.0. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="as_nop=: if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else $as_nop as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and $0: https://github.com/michaelrsweet/lprint/issues about $0: your system, including any error possibly output before $0: this message. Then install a modern shell, or manually $0: run the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='lprint' PACKAGE_TARNAME='lprint' PACKAGE_VERSION='1.1.0' PACKAGE_STRING='lprint 1.1.0' PACKAGE_BUGREPORT='https://github.com/michaelrsweet/lprint/issues' PACKAGE_URL='https://michaelrsweet.github.io/lprint' ac_subst_vars='LTLIBOBJS LIBOBJS OPTIM CSFLAGS CUPSCONFIG PKGCONFIG INSTALL ARFLAGS RM MKDIR AR RANLIB OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC host_os host_vendor host_cpu host build_os build_vendor build_cpu build LPRINT_VERSION target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_debug enable_maintainer enable_sanitizer with_ldflags ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures lprint 1.1.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/lprint] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of lprint 1.1.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-debug turn on debugging, default=no --enable-maintainer turn on maintainer mode, default=no --enable-sanitizer build with AddressSanitizer, default=no Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-ldflags=... Specify additional LDFLAGS Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . lprint home page: . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF lprint configure 1.1.0 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by lprint $as_me 1.1.0, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' /* Does the compiler advertise C89 conformance? Do not test the value of __STDC__, because some compilers set it to 0 while being otherwise adequately conformant. */ #if !defined __STDC__ # error "Compiler does not advertise C89 conformance" #endif #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ struct buf { int x; }; struct buf * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not \xHH hex character constants. These do not provoke an error unfortunately, instead are silently treated as an "x". The following induces an error, until -std is added to get proper ANSI mode. Curiously \x00 != x always comes out true, for an array size at least. It is necessary to write \x00 == 0 to get something that is true only with -std. */ int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) '\''x'\'' int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), int, int);' # Test code for whether the C compiler supports C89 (body of main). ac_c_conftest_c89_main=' ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); ' # Test code for whether the C compiler supports C99 (global declarations) ac_c_conftest_c99_globals=' // Does the compiler advertise C99 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare // FILE and stderr. #define debug(...) dprintf (2, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK #error "your preprocessor is broken" #endif #if BIG_OK #else #error "your preprocessor is broken" #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) continue; return 0; } // Check varargs and va_copy. static bool test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str = ""; int number = 0; float fnumber = 0; while (*format) { switch (*format++) { case '\''s'\'': // string str = va_arg (args_copy, const char *); break; case '\''d'\'': // int number = va_arg (args_copy, int); break; case '\''f'\'': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); return *str && number && fnumber; } ' # Test code for whether the C compiler supports C99 (body of main). ac_c_conftest_c99_main=' // Check bool. _Bool success = false; success |= (argc != 0); // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[0] = argv[0][0]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' || dynamic_array[ni.number - 1] != 543); ' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' // Does the compiler advertise C11 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif // Check _Alignas. char _Alignas (double) aligned_as_double; char _Alignas (0) no_special_alignment; extern char aligned_as_int; char _Alignas (0) _Alignas (int) aligned_as_int; // Check _Alignof. enum { int_alignment = _Alignof (int), int_array_alignment = _Alignof (int[100]), char_alignment = _Alignof (char) }; _Static_assert (0 < -_Alignof (int), "_Alignof is signed"); // Check _Noreturn. int _Noreturn does_not_return (void) { for (;;) continue; } // Check _Static_assert. struct test_static_assert { int x; _Static_assert (sizeof (int) <= sizeof (long int), "_Static_assert does not work in struct"); long int y; }; // Check UTF-8 literals. #define u8 syntax error! char const utf8_literal[] = u8"happens to be ASCII" "another string"; // Check duplicate typedefs. typedef long *long_ptr; typedef long int *long_ptr; typedef long_ptr long_ptr; // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. struct anonymous { union { struct { int i; int j; }; struct { int k; long int l; } w; }; int m; } v1; ' # Test code for whether the C compiler supports C11 (body of main). ac_c_conftest_c11_main=' _Static_assert ((offsetof (struct anonymous, i) == offsetof (struct anonymous, w.k)), "Anonymous union alignment botch"); v1.i = 2; v1.w.k = 5; ok |= v1.i != 5; ' # Test code for whether the C compiler supports C11 (complete). ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} ${ac_c_conftest_c11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} ${ac_c_conftest_c11_main} return ok; } " # Test code for whether the C compiler supports C99 (complete). ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} return ok; } " # Test code for whether the C compiler supports C89 (complete). ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} return ok; } " # Auxiliary files required by this configure script. ac_aux_files="config.guess config.sub" # Locations in which to look for auxiliary files. ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." # Search for a directory containing all of the required auxiliary files, # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. # If we don't find one directory that contains all the files we need, # we report the set of missing files from the *first* directory in # $ac_aux_dir_candidates and give up. ac_missing_aux_files="" ac_first_candidate=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in $ac_aux_dir_candidates do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ac_aux_dir_found=yes ac_install_sh= for ac_aux in $ac_aux_files do # As a special case, if "install-sh" is required, that requirement # can be satisfied by any of "install-sh", "install.sh", or "shtool", # and $ac_install_sh is set appropriately for whichever one is found. if test x"$ac_aux" = x"install-sh" then if test -f "${as_dir}install-sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ac_install_sh="${as_dir}install-sh -c" elif test -f "${as_dir}install.sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ac_install_sh="${as_dir}install.sh -c" elif test -f "${as_dir}shtool"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ac_install_sh="${as_dir}shtool install -c" else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} install-sh" else break fi fi else if test -f "${as_dir}${ac_aux}"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" else break fi fi fi done if test "$ac_aux_dir_found" = yes; then ac_aux_dir="$as_dir" break fi ac_first_candidate=false as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. if test -f "${ac_aux_dir}config.guess"; then ac_config_guess="$SHELL ${ac_aux_dir}config.guess" fi if test -f "${ac_aux_dir}config.sub"; then ac_config_sub="$SHELL ${ac_aux_dir}config.sub" fi if test -f "$ac_aux_dir/configure"; then ac_configure="$SHELL ${ac_aux_dir}configure" fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" LPRINT_VERSION="1.1.0" printf "%s\n" "#define LPRINT_VERSION \"$LPRINT_VERSION\"" >>confdefs.h LPRINT_MAJOR_VERSION="$(echo 1.1.0 | awk -F. '{print $1}')" LPRINT_MINOR_VERSION="$(echo 1.1.0 | awk -F. '{print $2}')" LPRINT_PATCH_VERSION="$(echo 1.1.0 | awk -F. '{print $3}')" printf "%s\n" "#define LPRINT_MAJOR_VERSION $LPRINT_MAJOR_VERSION" >>confdefs.h printf "%s\n" "#define LPRINT_MINOR_VERSION $LPRINT_MINOR_VERSION" >>confdefs.h printf "%s\n" "#define LPRINT_PATCH_VERSION $LPRINT_PATCH_VERSION" >>confdefs.h # Make sure we can run config.sub. $SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 printf %s "checking build system type... " >&6; } if test ${ac_cv_build+y} then : printf %s "(cached) " >&6 else $as_nop ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 printf %s "checking host system type... " >&6; } if test ${ac_cv_host+y} then : printf %s "(cached) " >&6 else $as_nop if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac host_os_name=$(echo $host_os | sed -e '1,$s/[0-9.]*$//g') host_os_version=$(echo $host_os | sed -e '1,$s/^[^0-9.]*//g' | awk -F. '{print $1 $2}') # Linux often does not yield an OS version we can use... if test "x$host_os_version" = x then : host_os_version="0" fi CFLAGS="${CFLAGS:=}" CXXFLAGS="${CXXFLAGS:=}" LDFLAGS="${LDFLAGS:=}" LIBS="${LIBS:=}" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 printf %s "checking whether the C compiler works... " >&6; } ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else $as_nop ac_file='' fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 printf "%s\n" "$RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 printf "%s\n" "$ac_ct_RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_AR+y} then : printf %s "(cached) " >&6 else $as_nop case $AR in [\\/]* | ?:[\\/]*) ac_cv_path_AR="$AR" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_AR="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi AR=$ac_cv_path_AR if test -n "$AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 printf "%s\n" "$AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # Extract the first word of "mkdir", so it can be a program name with args. set dummy mkdir; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_MKDIR+y} then : printf %s "(cached) " >&6 else $as_nop case $MKDIR in [\\/]* | ?:[\\/]*) ac_cv_path_MKDIR="$MKDIR" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_MKDIR="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MKDIR=$ac_cv_path_MKDIR if test -n "$MKDIR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR" >&5 printf "%s\n" "$MKDIR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # Extract the first word of "rm", so it can be a program name with args. set dummy rm; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_RM+y} then : printf %s "(cached) " >&6 else $as_nop case $RM in [\\/]* | ?:[\\/]*) ac_cv_path_RM="$RM" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_RM="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi RM=$ac_cv_path_RM if test -n "$RM"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RM" >&5 printf "%s\n" "$RM" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "$ac_cv_prog_ranlib" = ":" then : ARFLAGS="crs" else $as_nop ARFLAGS="cr" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for install-sh script" >&5 printf %s "checking for install-sh script... " >&6; } INSTALL="$(pwd)/install-sh" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: using $INSTALL" >&5 printf "%s\n" "using $INSTALL" >&6; } if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKGCONFIG=$ac_cv_path_PKGCONFIG if test -n "$PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 printf "%s\n" "$PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKGCONFIG"; then ac_pt_PKGCONFIG=$PKGCONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKGCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKGCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG if test -n "$ac_pt_PKGCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKGCONFIG" = x; then PKGCONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKGCONFIG=$ac_pt_PKGCONFIG fi else PKGCONFIG="$ac_cv_path_PKGCONFIG" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cups-config", so it can be a program name with args. set dummy ${ac_tool_prefix}cups-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_CUPSCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $CUPSCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_CUPSCONFIG="$CUPSCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_CUPSCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi CUPSCONFIG=$ac_cv_path_CUPSCONFIG if test -n "$CUPSCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CUPSCONFIG" >&5 printf "%s\n" "$CUPSCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_CUPSCONFIG"; then ac_pt_CUPSCONFIG=$CUPSCONFIG # Extract the first word of "cups-config", so it can be a program name with args. set dummy cups-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_CUPSCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_CUPSCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_CUPSCONFIG="$ac_pt_CUPSCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_CUPSCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_CUPSCONFIG=$ac_cv_path_ac_pt_CUPSCONFIG if test -n "$ac_pt_CUPSCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_CUPSCONFIG" >&5 printf "%s\n" "$ac_pt_CUPSCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_CUPSCONFIG" = x; then CUPSCONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CUPSCONFIG=$ac_pt_CUPSCONFIG fi else CUPSCONFIG="$ac_cv_path_CUPSCONFIG" fi if $PKGCONFIG --exists cups then : CFLAGS="$CFLAGS $($PKGCONFIG --cflags cups)" LIBS="$LIBS $($PKGCONFIG --libs cups)" elif test "x$CUPSCONFIG" != x then : CFLAGS="$CFLAGS $($CUPSCONFIG --cflags)" LIBS="$LIBS $($CUPSCONFIG --libs)" else $as_nop as_fn_error $? "CUPS is required for LPrint." "$LINENO" 5 fi if $PKGCONFIG --exists pappl --atleast-version=1.1 then : CFLAGS="$CFLAGS $($PKGCONFIG --cflags pappl)" LIBS="$LIBS $($PKGCONFIG --libs pappl)" else $as_nop as_fn_error $? "PAPPL 1.1 or later is required for LPrint." "$LINENO" 5 fi # Check whether --enable-debug was given. if test ${enable_debug+y} then : enableval=$enable_debug; fi # Check whether --enable-maintainer was given. if test ${enable_maintainer+y} then : enableval=$enable_maintainer; fi # Check whether --enable-sanitizer was given. if test ${enable_sanitizer+y} then : enableval=$enable_sanitizer; fi if test x$enable_debug = xyes then : OPTIM="-g" CSFLAGS="" else $as_nop OPTIM="-g -Os" CSFLAGS="-o runtime" fi if test -n "$GCC" then : if test x$enable_sanitizer = xyes then : # Use -fsanitize=address with debugging... OPTIM="-g -fsanitize=address" else $as_nop # Otherwise use the Fortify enhancements to catch any unbounded # string operations... CPPFLAGS="$CPPFLAGS -D_FORTIFY_SOURCE=2" fi WARNINGS="-Wall -Wunused" for warning in char-subscripts format-truncation format-y2k switch unused-result; do { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether compiler supports -Wno-$warning" >&5 printf %s "checking whether compiler supports -Wno-$warning... " >&6; } OLDCFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Wno-$warning -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } WARNINGS="$WARNINGS -Wno-$warning" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$OLDCFLAGS" done if test x$enable_maintainer = xyes then : WARNINGS="$WARNINGS -Werror" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether compiler supports -fPIE" >&5 printf %s "checking whether compiler supports -fPIE... " >&6; } OLDCFLAGS="$CFLAGS" case "$host_os_name" in #( darwin*) : CFLAGS="$CFLAGS -fPIC -fPIE -Wl,-pie" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : OLDCFLAGS="-fPIC $OLDCFLAGS" LDFLAGS="-fPIE -Wl,-pie $LDFLAGS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; #( *) : CFLAGS="$CFLAGS -fPIC -fPIE -pie" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : OLDCFLAGS="-fPIC $OLDCFLAGS" LDFLAGS="-fPIE -pie $LDFLAGS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; #( *) : ;; esac CFLAGS="$OLDCFLAGS" case "$host_os_name" in #( linux*) : CPPFLAGS="$CPPFLAGS -D__USE_MISC -D_TIME_BITS=64" ;; #( darwin*) : if test "$host_os_version" -ge 200 -a x$enable_debug != xyes then : # macOS 11.0 and higher support the Apple Silicon (arm64) CPUs OPTIM="$OPTIM -mmacosx-version-min=10.14 -arch x86_64 -arch arm64" elif test x$enable_debug != xyes then : OPTIM="$OPTIM -mmacosx-version-min=10.14 -arch x86_64" fi ;; #( *) : ;; esac fi # Check whether --with-ldflags was given. if test ${with_ldflags+y} then : withval=$with_ldflags; LDFLAGS="$withval $LDFLAGS" fi ac_config_files="$ac_config_files Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by lprint $as_me 1.1.0, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Report bugs to . lprint home page: ." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ lprint config.status 1.1.0 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi lprint-1.1.0/configure.ac000066400000000000000000000133261416113445100153140ustar00rootroot00000000000000dnl dnl Configuration script for LPrint, a Label Printer Application dnl dnl Copyright © 2019-2021 by Michael R Sweet dnl dnl Licensed under Apache License v2.0. See the file "LICENSE" for more dnl information. dnl dnl We need at least autoconf 2.60... AC_PREREQ(2.60) dnl Package name and version... AC_INIT([lprint], [1.1.0], [https://github.com/michaelrsweet/lprint/issues], [lprint], [https://michaelrsweet.github.io/lprint]) AC_CONFIG_HEADERS([config.h]) LPRINT_VERSION="AC_PACKAGE_VERSION" AC_SUBST([LPRINT_VERSION]) AC_DEFINE_UNQUOTED([LPRINT_VERSION], "$LPRINT_VERSION", [Version number]) LPRINT_MAJOR_VERSION="$(echo AC_PACKAGE_VERSION | awk -F. '{print $1}')" LPRINT_MINOR_VERSION="$(echo AC_PACKAGE_VERSION | awk -F. '{print $2}')" LPRINT_PATCH_VERSION="$(echo AC_PACKAGE_VERSION | awk -F. '{print $3}')" AC_DEFINE_UNQUOTED([LPRINT_MAJOR_VERSION], $LPRINT_MAJOR_VERSION, [Major version number]) AC_DEFINE_UNQUOTED([LPRINT_MINOR_VERSION], $LPRINT_MINOR_VERSION, [Minor version number]) AC_DEFINE_UNQUOTED([LPRINT_PATCH_VERSION], $LPRINT_PATCH_VERSION, [Patch version number]) dnl This line is provided to ensure that you don't run the autoheader program dnl against this project. Doing so is completely unsupported and WILL cause dnl problems! AH_TOP([#error "Somebody ran autoheader on this project which is unsupported and WILL cause problems."]) dnl Get the build and host platforms and split the host_os value AC_CANONICAL_BUILD AC_CANONICAL_HOST [host_os_name=$(echo $host_os | sed -e '1,$s/[0-9.]*$//g')] [host_os_version=$(echo $host_os | sed -e '1,$s/^[^0-9.]*//g' | awk -F. '{print $1 $2}')] # Linux often does not yield an OS version we can use... AS_IF([test "x$host_os_version" = x], [ host_os_version="0" ]) dnl Compiler options... CFLAGS="${CFLAGS:=}" CXXFLAGS="${CXXFLAGS:=}" LDFLAGS="${LDFLAGS:=}" LIBS="${LIBS:=}" dnl Standard programs... AC_PROG_CC AC_PROG_RANLIB AC_PATH_PROG([AR], [ar]) AC_PATH_PROG([MKDIR], [mkdir]) AC_PATH_PROG([RM], [rm]) dnl Figure out the correct "ar" command flags... AS_IF([test "$ac_cv_prog_ranlib" = ":"], [ ARFLAGS="crs" ], [ ARFLAGS="cr" ]) AC_SUBST([ARFLAGS]) dnl install-sh AC_MSG_CHECKING([for install-sh script]) INSTALL="$(pwd)/install-sh" AC_SUBST([INSTALL]) AC_MSG_RESULT([using $INSTALL]) dnl Check for pkg-config, which is used for some other tests later on... AC_PATH_TOOL([PKGCONFIG], [pkg-config]) dnl CUPS library... AC_PATH_TOOL([CUPSCONFIG], [cups-config]) AS_IF([$PKGCONFIG --exists cups], [ CFLAGS="$CFLAGS $($PKGCONFIG --cflags cups)" LIBS="$LIBS $($PKGCONFIG --libs cups)" ], [test "x$CUPSCONFIG" != x], [ CFLAGS="$CFLAGS $($CUPSCONFIG --cflags)" LIBS="$LIBS $($CUPSCONFIG --libs)" ], [ AC_MSG_ERROR([CUPS is required for LPrint.]) ]) dnl PAPPL library... AS_IF([$PKGCONFIG --exists pappl --atleast-version=1.1], [ CFLAGS="$CFLAGS $($PKGCONFIG --cflags pappl)" LIBS="$LIBS $($PKGCONFIG --libs pappl)" ], [ AC_MSG_ERROR([PAPPL 1.1 or later is required for LPrint.]) ]) dnl Extra compiler options... AC_ARG_ENABLE([debug], AS_HELP_STRING([--enable-debug], [turn on debugging, default=no])) AC_ARG_ENABLE([maintainer], AS_HELP_STRING([--enable-maintainer], [turn on maintainer mode, default=no])) AC_ARG_ENABLE([sanitizer], AS_HELP_STRING([--enable-sanitizer], [build with AddressSanitizer, default=no])) AS_IF([test x$enable_debug = xyes], [ OPTIM="-g" CSFLAGS="" ], [ OPTIM="-g -Os" CSFLAGS="-o runtime" ]) AC_SUBST([CSFLAGS]) AC_SUBST([OPTIM]) AS_IF([test -n "$GCC"], [ AS_IF([test x$enable_sanitizer = xyes], [ # Use -fsanitize=address with debugging... OPTIM="-g -fsanitize=address" ], [ # Otherwise use the Fortify enhancements to catch any unbounded # string operations... CPPFLAGS="$CPPFLAGS -D_FORTIFY_SOURCE=2" ]) dnl Show all standard warnings + unused variables when compiling... WARNINGS="-Wall -Wunused" dnl Drop some not-useful/unreliable warnings... for warning in char-subscripts format-truncation format-y2k switch unused-result; do AC_MSG_CHECKING([whether compiler supports -Wno-$warning]) OLDCFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Wno-$warning -Werror" AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [ AC_MSG_RESULT(yes) WARNINGS="$WARNINGS -Wno-$warning" ], [ AC_MSG_RESULT(no) ]) CFLAGS="$OLDCFLAGS" done dnl Maintainer mode enables -Werror... AS_IF([test x$enable_maintainer = xyes], [ WARNINGS="$WARNINGS -Werror" ]) dnl See if PIE options are supported... AC_MSG_CHECKING(whether compiler supports -fPIE) OLDCFLAGS="$CFLAGS" AS_CASE(["$host_os_name"], [darwin*], [ CFLAGS="$CFLAGS -fPIC -fPIE -Wl,-pie" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[ OLDCFLAGS="-fPIC $OLDCFLAGS" LDFLAGS="-fPIE -Wl,-pie $LDFLAGS" AC_MSG_RESULT(yes) ],[ AC_MSG_RESULT(no) ]) ], [*], [ CFLAGS="$CFLAGS -fPIC -fPIE -pie" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[ OLDCFLAGS="-fPIC $OLDCFLAGS" LDFLAGS="-fPIE -pie $LDFLAGS" AC_MSG_RESULT(yes) ],[ AC_MSG_RESULT(no) ]) ]) CFLAGS="$OLDCFLAGS" dnl OS-specific compiler options... AS_CASE(["$host_os_name"], [linux*], [ CPPFLAGS="$CPPFLAGS -D__USE_MISC -D_TIME_BITS=64" ], [darwin*], [ AS_IF([test "$host_os_version" -ge 200 -a x$enable_debug != xyes], [ # macOS 11.0 and higher support the Apple Silicon (arm64) CPUs OPTIM="$OPTIM -mmacosx-version-min=10.14 -arch x86_64 -arch arm64" ], [test x$enable_debug != xyes], [ OPTIM="$OPTIM -mmacosx-version-min=10.14 -arch x86_64" ]) ]) ]) dnl Extra linker options... AC_ARG_WITH(ldflags, AS_HELP_STRING([--with-ldflags=...], [Specify additional LDFLAGS]), [ LDFLAGS="$withval $LDFLAGS" ]) dnl Generate the Makefile... AC_CONFIG_FILES([Makefile]) AC_OUTPUT lprint-1.1.0/install-sh000077500000000000000000000127041416113445100150310ustar00rootroot00000000000000#!/bin/sh # # Install a program, script, or datafile. # # Copyright 2008-2012 by Apple Inc. # # This script is not compatible with BSD (or any other) install program, as it # allows owner and group changes to fail with a warning and makes sure that the # destination directory permissions are as specified - BSD install and the # original X11 install script did not change permissions of existing # directories. It also does not support the transform options since CUPS does # not use them... # # Original script from X11R5 (mit/util/scripts/install.sh) # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # Force umask to 022... umask 022 # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" gzipprog="${GZIPPROG-gzip}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" gzipcp() { # gzipcp from to $gzipprog -9 <"$1" >"$2" } while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue ;; -d) dir_arg=true shift continue ;; -m) chmodcmd="$chmodprog $2" shift shift continue ;; -o) chowncmd="$chownprog $2" shift shift continue ;; -g) chgrpcmd="$chgrpprog $2" shift shift continue ;; -s) stripcmd="$stripprog" shift continue ;; -z) instcmd="gzipcp" shift continue ;; *) if [ x"$src" = x ]; then src="$1" else dst="$1" fi shift continue ;; esac done if [ x"$src" = x ]; then echo "install-sh: No input file specified" exit 1 fi if [ x"$dir_arg" != x ]; then dst="$src" src="" if [ -d "$dst" ]; then instcmd=: else instcmd=$mkdirprog fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ ! -f "$src" -a ! -d "$src" ]; then echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ]; then echo "install: No destination specified" exit 1 fi # If destination is a directory, append the input filename. if [ -d "$dst" ]; then dst="$dst/`basename $src`" fi fi ## this sed command emulates the dirname command dstdir="`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`" # Make sure that the destination directory exists. # This part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ]; then $doit $mkdirprog "${pathcomp}"; fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ]; then # Make a directory... $doit $instcmd $dst || exit 1 # Allow chown/chgrp to fail, but log a warning if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst || echo "warning: Unable to change owner of $dst!"; fi if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst || echo "warning: Unable to change group of $dst!"; fi if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst || exit 1; fi else # Install a file... dstfile="`basename $dst`" # Check the destination file - for libraries just use the "-x" option # to strip... case "$dstfile" in *.a | *.dylib | *.sl | *.sl.* | *.so | *.so.*) stripopt="-x" ;; *) stripopt="" ;; esac # Make a temp file name in the proper directory. dsttmp="$dstdir/#inst.$$#" # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp || exit 1 # Update permissions and strip as needed, then move to the final name. # If the chmod, strip, rm, or mv commands fail, remove the installed # file... if [ x"$stripcmd" != x ]; then $doit $stripcmd $stripopt "$dsttmp" || echo "warning: Unable to strip $dst!"; fi if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp" || echo "warning: Unable to change owner of $dst!"; fi if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp" || echo "warning: Unable to change group of $dst!"; fi trap "rm -f ${dsttmp}" 0 && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; fi && $doit $rmcmd -f "$dstdir/$dstfile" && $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" fi exit 0 lprint-1.1.0/lprint-common.c000066400000000000000000000004171416113445100157650ustar00rootroot00000000000000// // Common driver code for LPrint, a Label Printer Application // // Copyright © 2019-2021 by Michael R Sweet. // // Licensed under Apache License v2.0. See the file "LICENSE" for more // information. // // // Include necessary headers... // #include "lprint.h" lprint-1.1.0/lprint-cpcl.c000066400000000000000000000066031416113445100154210ustar00rootroot00000000000000// // UNIMPLEMENTED CPCL driver for LPrint, a Label Printer Application // // Copyright © 2019 by Michael R Sweet. // // Licensed under Apache License v2.0. See the file "LICENSE" for more // information. // // // Include necessary headers... // #include "lprint.h" // // Local globals... // static const char * const lprint_cpcl_media[] = { // Supported media sizes "oe_1.25x0.25-label_1.25x0.25in", "oe_1.25x2.25-label_1.25x2.25in", "oe_1.5x0.25-label_1.5x0.25in", "oe_1.5x0.5-label_1.5x0.5in", "oe_1.5x1-label_1.5x1in", "oe_1.5x2-label_1.5x2in", "oe_2x0.37-label_2x0.37in", "oe_2x0.5-label_2x0.5in", "oe_2x1-label_2x1in", "oe_2x1.25-label_2x1.25in", "oe_2x2-label_2x2in", "oe_2x3-label_2x3in", "oe_2x4-label_2x4in", "oe_2x5.5-label_2x5.5in", "oe_2.25x0.5-label_2.25xin", "oe_2.25x1.25-label_2.25xin", "oe_30859-paint-can-label_2.25x3.125in", "oe_2.25x4-label_2.25x4in", "oe_2.25x5.5-label_2.25x5.5in", "oe_2.38x5.5-label_2.38x5.5in", "oe_2.5x1-label_2.5x1in", "oe_2.5x2-label_2.5x2in", "oe_2.75x1.25-label_2.75x1.25in", "oe_2.9x1-label_2.9x1in", "oe_3x1-label_3x1in", "oe_3x1.25-label_3x1.25in", "oe_3x2-label_3x2in", "oe_3x3-label_3x3in", "oe_3x5-label_3x5in", "oe_3.25x2-label_3.25x2in", "oe_3.25x5-label_3.25x5in", "oe_3.25x5.5-label_3.25x5.5in", "oe_3.25x5.83-label_3.25x5.83in", "oe_3.25x7.83-label_3.25x7.83in", "oe_3.5x1-label_3.5x1in", "oe_4x1-label_4x1in", "oe_4x2-label_4x2in", "oe_4x3-label_4x3in", "oe_4x4-label_4x4in", "oe_4x5-label_4x5in", "oe_4x6-label_4x6in", "oe_4x6.5-label_4x6.5in", "oe_4x13-label_4x13in", "oe_6x1-label_6x1in", "oe_6x2-label_6x2in", "oe_6x3-label_6x3in", "oe_6x4-label_6x4in", "oe_6x5-label_6x5in", "oe_6x6-label_6x6in", "oe_6x6.5-label_6x6.5in", "oe_6x13-label_6x13in", "oe_8x1-label_8x1in", "oe_8x2-label_8x2in", "oe_8x3-label_8x3in", "oe_8x4-label_8x4in", "oe_8x5-label_8x5in", "oe_8x6-label_8x6in", "oe_8x6.5-label_8x6.5in", "oe_8x13-label_8x13in", "roll_max_8x100in", "roll_min_1.25x0.25in" }; // // Local functions... // static int lprint_cpcl_print(lprint_printer_t *printer, lprint_job_t *job); static int lprint_cpcl_status(lprint_printer_t *printer); // // 'lprintInit()' - Initialize the driver. // void lprintInitCPCL( lprint_driver_t *driver) // I - Driver { pthread_rwlock_wrlock(&driver->rwlock); driver->printfunc = lprint_cpcl_print; driver->statusfunc = lprint_cpcl_status; driver->format = "application/vnd.-"; driver->num_resolution = 1; driver->x_resolution[0] = 203; driver->y_resolution[0] = 203; driver->num_media = (int)(sizeof(lprint_cpcl_media) / sizeof(lprint_cpcl_media[0])); memcpy(driver->media, lprint_cpcl_media, sizeof(lprint_cpcl_media)); driver->num_source = 1; driver->source[0] = "main-roll"; driver->num_type = 1; driver->type[0] = "labels"; driver->num_supply = 0; pthread_rwlock_unlock(&driver->rwlock); } // // 'lprint_cpcl_print()' - Print a file. // static int // O - 1 on success, 0 on failure lprint_cpcl_print( lprint_printer_t *printer, // I - Printer lprint_job_t *job) // I - Job { (void)printer; (void)job; return (1); } // // 'lprint_cpcl_status()' - Get current printer status. // static int // O - 1 on success, 0 on failure lprint_cpcl_status( lprint_printer_t *printer) // I - Printer { (void)printer; return (1); } lprint-1.1.0/lprint-dymo.c000066400000000000000000000314751416113445100154550ustar00rootroot00000000000000// // Dymo driver for LPrint, a Label Printer Application // // Copyright © 2019-2021 by Michael R Sweet. // Copyright © 2007-2019 by Apple Inc. // Copyright © 2001-2007 by Easy Software Products. // // Licensed under Apache License v2.0. See the file "LICENSE" for more // information. // // // Include necessary headers... // #include "lprint.h" // // Local types... // typedef struct lprint_dymo_s // DYMO driver data { unsigned ystart, // First line yend; // Last line int feed; // Accumulated feed } lprint_dymo_t; // // Local globals... // static const char * const lprint_dymo_media[] = { // Supported media sizes "oe_thin-multipurpose-label_0.375x2.8125in", "oe_library-barcode-label_0.5x1.875in", "oe_hanging-file-tab-insert_0.5625x2in", "oe_file-folder-label_0.5625x3.4375in", "oe_return-address-label_0.75x2in", "oe_barcode-label_0.75x2.5in", "oe_video-spine-label_0.75x5.875in", "oe_price-tag-label_0.9375x0.875in", "oe_square-multipurpose-label_1x1in", "oe_book-spine-label_1x1.5in", "oe_sm-multipurpose-label_1x2.125in", "oe_2-up-file-folder-label_1.125x3.4375in", "oe_internet-postage-label_1.25x1.625in", "oe_address-label_1.25x3.5in", "oe_lg-address-label_1.4x3.5in", "oe_video-top-label_1.8x3.1in", "oe_multipurpose-label_2x2.3125in", "oe_md-appointment-card_2x3.5in", "oe_lg-multipurpose-label_2.125x.75in", "oe_shipping-label_2.125x4in", "oe_continuous-label_2.125x3600in", "oe_md-multipurpose-label_2.25x1.25in", "oe_media-label_2.25x2.25in", "oe_2-up-address-label_2.25x3.5in", "oe_name-badge-label_2.25x4in", "oe_3-part-postage-label_2.25x7in", "oe_2-part-internet-postage-label_2.25x7.5in", "oe_shipping-label_2.3125x4in", "oe_internet-postage-label_2.3125x7in", "oe_internet-postage-confirmation-label_2.3125x10.5in", "roll_max_2.3125x3600in", "roll_min_0.25x0.25in" }; // // Local functions... // static bool lprint_dymo_printfile(pappl_job_t *job, pappl_pr_options_t *options, pappl_device_t *device); static bool lprint_dymo_rendjob(pappl_job_t *job, pappl_pr_options_t *options, pappl_device_t *device); static bool lprint_dymo_rendpage(pappl_job_t *job, pappl_pr_options_t *options, pappl_device_t *device, unsigned page); static bool lprint_dymo_rstartjob(pappl_job_t *job, pappl_pr_options_t *options, pappl_device_t *device); static bool lprint_dymo_rstartpage(pappl_job_t *job, pappl_pr_options_t *options, pappl_device_t *device, unsigned page); static bool lprint_dymo_rwriteline(pappl_job_t *job, pappl_pr_options_t *options, pappl_device_t *device, unsigned y, const unsigned char *line); static bool lprint_dymo_status(pappl_printer_t *printer); // // 'lprintDYMO()' - Initialize the DYMO driver. // bool // O - `true` on success, `false` on error lprintDYMO( pappl_system_t *system, // I - System const char *driver_name,// I - Driver name const char *device_uri, // I - Device URI const char *device_id, // I - 1284 device ID pappl_pr_driver_data_t *data, // I - Pointer to driver data ipp_t **attrs, // O - Pointer to driver attributes void *cbdata) // I - Callback data (not used) { int i; // Looping var data->printfile_cb = lprint_dymo_printfile; data->rendjob_cb = lprint_dymo_rendjob; data->rendpage_cb = lprint_dymo_rendpage; data->rstartjob_cb = lprint_dymo_rstartjob; data->rstartpage_cb = lprint_dymo_rstartpage; data->rwriteline_cb = lprint_dymo_rwriteline; data->status_cb = lprint_dymo_status; data->format = "application/vnd.dymo-lw"; data->num_resolution = 1; data->x_resolution[0] = 300; data->y_resolution[0] = 300; data->x_default = data->y_default = 300; data->left_right = 100; data->bottom_top = 525; data->num_media = (int)(sizeof(lprint_dymo_media) / sizeof(lprint_dymo_media[0])); memcpy(data->media, lprint_dymo_media, sizeof(lprint_dymo_media)); if (strstr(driver_name, "-duo") || strstr(driver_name, "-twin")) { data->num_source = 2; data->source[0] = "main-roll"; data->source[1] = "alternate-roll"; papplCopyString(data->media_ready[0].size_name, "oe_multipurpose-label_2x2.3125in", sizeof(data->media_ready[0].size_name)); papplCopyString(data->media_ready[1].size_name, "oe_address-label_1.25x3.5in", sizeof(data->media_ready[1].size_name)); } else { data->num_source = 1; data->source[0] = "main-roll"; papplCopyString(data->media_ready[0].size_name, "oe_address-label_1.25x3.5in", sizeof(data->media_ready[0].size_name)); } data->tracking_supported = PAPPL_MEDIA_TRACKING_WEB; data->num_type = 1; data->type[0] = "labels"; data->media_default.bottom_margin = data->bottom_top; data->media_default.left_margin = data->left_right; data->media_default.right_margin = data->left_right; data->media_default.size_width = 3175; data->media_default.size_length = 8890; data->media_default.top_margin = data->bottom_top; data->media_default.tracking = PAPPL_MEDIA_TRACKING_WEB; papplCopyString(data->media_default.size_name, "oe_address-label_1.25x3.5in", sizeof(data->media_default.size_name)); papplCopyString(data->media_default.source, data->source[0], sizeof(data->media_default.source)); papplCopyString(data->media_default.type, data->type[0], sizeof(data->media_default.type)); for (i = 0; i < data->num_source; i ++) { pwg_media_t *pwg = pwgMediaForPWG(data->media_ready[i].size_name); data->media_ready[i].bottom_margin = data->bottom_top; data->media_ready[i].left_margin = data->left_right; data->media_ready[i].right_margin = data->left_right; data->media_ready[i].size_width = pwg->width; data->media_ready[i].size_length = pwg->length; data->media_ready[i].top_margin = data->bottom_top; data->media_ready[i].tracking = PAPPL_MEDIA_TRACKING_WEB; papplCopyString(data->media_ready[i].source, data->source[i], sizeof(data->media_ready[i].source)); papplCopyString(data->media_ready[i].type, data->type[0], sizeof(data->media_ready[i].type)); } data->darkness_configured = 50; data->darkness_supported = 4; return (true); } // // 'lprint_dymo_printfile()' - Print a file. // static bool // O - `true` on success, `false` on failure lprint_dymo_printfile( pappl_job_t *job, // I - Job pappl_pr_options_t *options, // I - Job options pappl_device_t *device) // I - Output device { int fd; // Input file ssize_t bytes; // Bytes read/written char buffer[65536]; // Read/write buffer // Reset the printer... papplDevicePuts(device, "\033\033\033\033\033\033\033\033\033\033" "\033\033\033\033\033\033\033\033\033\033" "\033\033\033\033\033\033\033\033\033\033" "\033\033\033\033\033\033\033\033\033\033" "\033\033\033\033\033\033\033\033\033\033" "\033\033\033\033\033\033\033\033\033\033" "\033\033\033\033\033\033\033\033\033\033" "\033\033\033\033\033\033\033\033\033\033" "\033\033\033\033\033\033\033\033\033\033" "\033\033\033\033\033\033\033\033\033\033" "\033@"); // Copy the raw file... papplJobSetImpressions(job, 1); if ((fd = open(papplJobGetFilename(job), O_RDONLY)) < 0) { papplLogJob(job, PAPPL_LOGLEVEL_ERROR, "Unable to open print file '%s': %s", papplJobGetFilename(job), strerror(errno)); return (false); } while ((bytes = read(fd, buffer, sizeof(buffer))) > 0) { if (papplDeviceWrite(device, buffer, (size_t)bytes) < 0) { papplLogJob(job, PAPPL_LOGLEVEL_ERROR, "Unable to send %d bytes to printer.", (int)bytes); close(fd); return (false); } } close(fd); papplJobSetImpressionsCompleted(job, 1); return (true); } // // 'lprint_dymo_rend()' - End a job. // static bool // O - `true` on success, `false` on failure lprint_dymo_rendjob( pappl_job_t *job, // I - Job pappl_pr_options_t *options, // I - Job options pappl_device_t *device) // I - Output device { lprint_dymo_t *dymo = (lprint_dymo_t *)papplJobGetData(job); // DYMO driver data (void)options; free(dymo); papplJobSetData(job, NULL); return (true); } // // 'lprint_dymo_rendpage()' - End a page. // static bool // O - `true` on success, `false` on failure lprint_dymo_rendpage( pappl_job_t *job, // I - Job pappl_pr_options_t *options, // I - Job options pappl_device_t *device, // I - Output device unsigned page) // I - Page number { (void)job; (void)options; (void)page; papplDevicePuts(device, "\033E"); return (true); } // // 'lprint_dymo_rstartjob()' - Start a job. // static bool // O - `true` on success, `false` on failure lprint_dymo_rstartjob( pappl_job_t *job, // I - Job pappl_pr_options_t *options, // I - Job options pappl_device_t *device) // I - Output device { lprint_dymo_t *dymo = (lprint_dymo_t *)calloc(1, sizeof(lprint_dymo_t)); // DYMO driver data (void)options; papplJobSetData(job, dymo); papplDevicePuts(device, "\033\033\033\033\033\033\033\033\033\033" "\033\033\033\033\033\033\033\033\033\033" "\033\033\033\033\033\033\033\033\033\033" "\033\033\033\033\033\033\033\033\033\033" "\033\033\033\033\033\033\033\033\033\033" "\033\033\033\033\033\033\033\033\033\033" "\033\033\033\033\033\033\033\033\033\033" "\033\033\033\033\033\033\033\033\033\033" "\033\033\033\033\033\033\033\033\033\033" "\033\033\033\033\033\033\033\033\033\033" "\033@"); return (true); } // // 'lprint_dymo_rstartpage()' - Start a page. // static bool // O - `true` on success, `false` on failure lprint_dymo_rstartpage( pappl_job_t *job, // I - Job pappl_pr_options_t *options, // I - Job options pappl_device_t *device, // I - Output device unsigned page) // I - Page number { pappl_pr_driver_data_t data; // Generic driver data lprint_dymo_t *dymo = (lprint_dymo_t *)papplJobGetData(job); // DYMO driver data int darkness = options->darkness_configured + options->print_darkness; // Combined density const char *density = "cdeg"; // Density codes int i; // Looping var (void)page; if (options->header.cupsBytesPerLine > 256) { papplLogJob(job, PAPPL_LOGLEVEL_ERROR, "Raster data too large for printer."); return (false); } papplDevicePrintf(device, "\033Q%c%c", 0, 0); papplDevicePrintf(device, "\033B%c", 0); papplDevicePrintf(device, "\033L%c%c", options->header.cupsHeight >> 8, options->header.cupsHeight); papplDevicePrintf(device, "\033D%c", options->header.cupsBytesPerLine - 1); papplPrinterGetDriverData(papplJobGetPrinter(job), &data); // Match roll number to loaded media... for (i = 0; i < data.num_source; i ++) { if (data.media_ready[i].size_width == options->media.size_width && data.media_ready[i].size_length == options->media.size_length) break; } if (i >= data.num_source) { // No match, so use what the client sent... i = !strcmp(options->media.source, "alternate-roll"); } papplDevicePrintf(device, "\033q%d", i + 1); if (darkness < 0) darkness = 0; else if (darkness > 100) darkness = 100; papplDevicePrintf(device, "\033%c", density[3 * darkness / 100]); dymo->feed = 0; dymo->ystart = options->media.top_margin * options->printer_resolution[1] / 2540; dymo->yend = options->header.cupsHeight - dymo->ystart; return (true); } // // 'lprint_dymo_rwriteline()' - Write a raster line. // static bool // O - `true` on success, `false` on failure lprint_dymo_rwriteline( pappl_job_t *job, // I - Job pappl_pr_options_t *options, // I - Job options pappl_device_t *device, // I - Output device unsigned y, // I - Line number const unsigned char *line) // I - Line { lprint_dymo_t *dymo = (lprint_dymo_t *)papplJobGetData(job); // DYMO driver data unsigned char buffer[256]; // Write buffer if (y < dymo->ystart || y >= dymo->yend) return (true); if (line[0] || memcmp(line, line + 1, options->header.cupsBytesPerLine - 1)) { // Not a blank line, feed for any prior blank lines... if (dymo->feed) { while (dymo->feed > 255) { papplDevicePrintf(device, "\033f\001%c", 255); dymo->feed -= 255; } papplDevicePrintf(device, "\033f\001%c", dymo->feed); dymo->feed = 0; } // Then write the non-blank line... buffer[0] = 0x16; memcpy(buffer + 1, line + 1, options->header.cupsBytesPerLine - 1); papplDeviceWrite(device, buffer, options->header.cupsBytesPerLine); } else { // Blank line, accumulate the feed... dymo->feed ++; } return (true); } // // 'lprint_dymo_status()' - Get current printer status. // static bool // O - `true` on success, `false` on failure lprint_dymo_status( pappl_printer_t *printer) // I - Printer { (void)printer; return (true); } lprint-1.1.0/lprint-dymo.h000066400000000000000000000055371416113445100154620ustar00rootroot00000000000000// // DYMO driver table for LPrint, a Label Printer Application // // Copyright © 2019-2021 by Michael R Sweet. // // Licensed under Apache License v2.0. See the file "LICENSE" for more // information. // { "dymo_lm-400", "DYMO LabelMANAGER 400", "MFG:DYMO;MDL:LabelMANAGER 400 ;", NULL }, { "dymo_lm-450", "DYMO LabelMANAGER 450", "MFG:DYMO;MDL:LabelMANAGER 450 ;", NULL }, { "dymo_lm-pc", "DYMO LabelMANAGER PC", "MFG:DYMO;MDL:LabelMANAGER PC ;", NULL }, { "dymo_lm-pc-ii", "DYMO LabelMANAGER PC II", "MFG:DYMO;MDL:LabelMANAGER PC II ;", NULL }, { "dymo_lm-pnp", "DYMO LabelMANAGER PNP", "MFG:DYMO;MDL:LabelMANAGER PNP ;", NULL }, { "dymo_lp-350", "DYMO LabelPOINT 350", "MFG:DYMO;MDL:LabelPOINT 350 ;", NULL }, { "dymo_lw-300", "DYMO LabelWriter 300", "MFG:DYMO;MDL:LabelWriter 300;", NULL }, { "dymo_lw-310", "DYMO LabelWriter 310", "MFG:DYMO;MDL:LabelWriter 310;", NULL }, { "dymo_lw-315", "DYMO LabelWriter 315", "MFG:DYMO;MDL:LabelWriter 315;", NULL }, { "dymo_lw-320", "DYMO LabelWriter 320", "MFG:DYMO;MDL:LabelWriter 320;", NULL }, { "dymo_lw-330", "DYMO LabelWriter 330", "MFG:DYMO;MDL:LabelWriter 330;", NULL }, { "dymo_lw-330-turbo", "DYMO LabelWriter 330 Turbo", "MFG:DYMO;MDL:LabelWriter 330 Turbo;", NULL }, { "dymo_lw-400", "DYMO LabelWriter 400", "MFG:DYMO;MDL:LabelWriter ;", NULL }, { "dymo_lw-400-turbo", "DYMO LabelWriter 400 Turbo", "MFG:DYMO;MDL:LabelWriter ;", NULL }, { "dymo_lw-450", "DYMO LabelWriter 450", "MFG:DYMO;MDL:LabelWriter 450;", NULL }, { "dymo_lw-450-duo-label", "DYMO LabelWriter 450 DUO Label", "MFG:DYMO;MDL:LabelWriter ;", NULL }, { "dymo_lw-450-duo-tape", "DYMO LabelWriter 450 DUO Tape", "MFG:DYMO;MDL:LabelWriter ;", NULL }, { "dymo_lw-450-turbo", "DYMO LabelWriter 450 Turbo", "MFG:DYMO;MDL:LabelWriter 450 Turbo;", NULL }, { "dymo_lw-450-twin-turbo", "DYMO LabelWriter 450 Twin Turbo", "MFG:DYMO;MDL:LabelWriter 450 Twin Turbo;", NULL }, { "dymo_lw-4xl", "DYMO LabelWriter 4XL", "MFG:DYMO;MDL:LabelWriter 4XL;", NULL }, { "dymo_lw-duo-label", "DYMO LabelWriter DUO Label", "MFG:DYMO;MDL:LabelWriter DUO Label;", NULL }, { "dymo_lw-duo-tape", "DYMO LabelWriter DUO Tape", "MFG:DYMO;MDL:LabelWriter DUO Tape;", NULL }, { "dymo_lw-duo-tape-128", "DYMO LabelWriter DUO Tape 128", "MFG:DYMO;MDL:LabelWriter DUO Tape 128;", NULL }, { "dymo_lw-se450", "DYMO LabelWriter SE450", "MFG:DYMO;MDL:LabelWriter SE450;", NULL }, //{ "dymo_lw-wireless", "DYMO LabelWriter Wireless", "", NULL }, //{ "dymo_lw-550", "DYMO LabelWriter 550", "", NULL }, //{ "dymo_lw-550-turbo", "DYMO LabelWriter 550 Turbo", "", NULL }, //{ "dymo_lw-5xl", "DYMO LabelWriter 5XL", "", NULL }, lprint-1.1.0/lprint-epl1.c000066400000000000000000000066071416113445100153450ustar00rootroot00000000000000// // UNIMPLEMENTED EPL1 driver for LPrint, a Label Printer Application // // Copyright © 2019 by Michael R Sweet. // // Licensed under Apache License v2.0. See the file "LICENSE" for more // information. // // // Include necessary headers... // #include "lprint.h" // // Local globals... // static const char * const lprint_epl1_media[] = { // Supported media sizes "oe_1.25x0.25-label_1.25x0.25in", "oe_1.25x2.25-label_1.25x2.25in", "oe_1.5x0.25-label_1.5x0.25in", "oe_1.5x0.5-label_1.5x0.5in", "oe_1.5x1-label_1.5x1in", "oe_1.5x2-label_1.5x2in", "oe_2x0.37-label_2x0.37in", "oe_2x0.5-label_2x0.5in", "oe_2x1-label_2x1in", "oe_2x1.25-label_2x1.25in", "oe_2x2-label_2x2in", "oe_2x3-label_2x3in", "oe_2x4-label_2x4in", "oe_2x5.5-label_2x5.5in", "oe_2.25x0.5-label_2.25xin", "oe_2.25x1.25-label_2.25xin", "oe_30859-paint-can-label_2.25x3.125in", "oe_2.25x4-label_2.25x4in", "oe_2.25x5.5-label_2.25x5.5in", "oe_2.38x5.5-label_2.38x5.5in", "oe_2.5x1-label_2.5x1in", "oe_2.5x2-label_2.5x2in", "oe_2.75x1.25-label_2.75x1.25in", "oe_2.9x1-label_2.9x1in", "oe_3x1-label_3x1in", "oe_3x1.25-label_3x1.25in", "oe_3x2-label_3x2in", "oe_3x3-label_3x3in", "oe_3x5-label_3x5in", "oe_3.25x2-label_3.25x2in", "oe_3.25x5-label_3.25x5in", "oe_3.25x5.5-label_3.25x5.5in", "oe_3.25x5.83-label_3.25x5.83in", "oe_3.25x7.83-label_3.25x7.83in", "oe_3.5x1-label_3.5x1in", "oe_4x1-label_4x1in", "oe_4x2-label_4x2in", "oe_4x3-label_4x3in", "oe_4x4-label_4x4in", "oe_4x5-label_4x5in", "oe_4x6-label_4x6in", "oe_4x6.5-label_4x6.5in", "oe_4x13-label_4x13in", "oe_6x1-label_6x1in", "oe_6x2-label_6x2in", "oe_6x3-label_6x3in", "oe_6x4-label_6x4in", "oe_6x5-label_6x5in", "oe_6x6-label_6x6in", "oe_6x6.5-label_6x6.5in", "oe_6x13-label_6x13in", "oe_8x1-label_8x1in", "oe_8x2-label_8x2in", "oe_8x3-label_8x3in", "oe_8x4-label_8x4in", "oe_8x5-label_8x5in", "oe_8x6-label_8x6in", "oe_8x6.5-label_8x6.5in", "oe_8x13-label_8x13in", "roll_max_8x100in", "roll_min_1.25x0.25in" }; // // Local functions... // static int lprint_epl1_print(lprint_printer_t *printer, lprint_job_t *job); static int lprint_epl1_status(lprint_printer_t *printer); // // 'lprintInitEPL1()' - Initialize the driver. // void lprintInitEPL1( lprint_driver_t *driver) // I - Driver { pthread_rwlock_wrlock(&driver->rwlock); driver->printfunc = lprint_epl1_print; driver->statusfunc = lprint_epl1_status; driver->format = "application/vnd.-"; driver->num_resolution = 1; driver->x_resolution[0] = 203; driver->y_resolution[0] = 203; driver->num_media = (int)(sizeof(lprint_epl1_media) / sizeof(lprint_epl1_media[0])); memcpy(driver->media, lprint_epl1_media, sizeof(lprint_epl1_media)); driver->num_source = 1; driver->source[0] = "main-roll"; driver->num_type = 1; driver->type[0] = "labels"; driver->num_supply = 0; pthread_rwlock_unlock(&driver->rwlock); } // // 'lprint_epl1_print()' - Print a file. // static int // O - 1 on success, 0 on failure lprint_epl1_print( lprint_printer_t *printer, // I - Printer lprint_job_t *job) // I - Job { (void)printer; (void)job; return (1); } // // 'lprint_epl1_status()' - Get current printer status. // static int // O - 1 on success, 0 on failure lprint_epl1_status( lprint_printer_t *printer) // I - Printer { (void)printer; return (1); } lprint-1.1.0/lprint-epl2.c000066400000000000000000000256701416113445100153470ustar00rootroot00000000000000// // EPL2 driver for LPrint, a Label Printer Application // // Copyright © 2019-2021 by Michael R Sweet. // // Licensed under Apache License v2.0. See the file "LICENSE" for more // information. // // // Include necessary headers... // #include "lprint.h" // // Local globals... // static const char * const lprint_epl2_2inch_media[] = { // Supported 2 inch media sizes "oe_1.25x0.25-label_1.25x0.25in", "oe_1.25x2.25-label_1.25x2.25in", "oe_1.5x0.25-label_1.5x0.25in", "oe_1.5x0.5-label_1.5x0.5in", "oe_1.5x1-label_1.5x1in", "oe_1.5x2-label_1.5x2in", "oe_2x0.37-label_2x0.37in", "oe_2x0.5-label_2x0.5in", "oe_2x1-label_2x1in", "oe_2x1.25-label_2x1.25in", "oe_2x2-label_2x2in", "oe_2x3-label_2x3in", "oe_2x4-label_2x4in", "oe_2x5.5-label_2x5.5in", "roll_max_2x100in", "roll_min_0.75x0.25in" }; static const char * const lprint_epl2_4inch_media[] = { // Supported 4 inch media sizes "oe_1.25x0.25-label_1.25x0.25in", "oe_1.25x2.25-label_1.25x2.25in", "oe_1.5x0.25-label_1.5x0.25in", "oe_1.5x0.5-label_1.5x0.5in", "oe_1.5x1-label_1.5x1in", "oe_1.5x2-label_1.5x2in", "oe_2x0.37-label_2x0.37in", "oe_2x0.5-label_2x0.5in", "oe_2x1-label_2x1in", "oe_2x1.25-label_2x1.25in", "oe_2x2-label_2x2in", "oe_2x3-label_2x3in", "oe_2x4-label_2x4in", "oe_2x5.5-label_2x5.5in", "oe_2.25x0.5-label_2.25x0.5in", "oe_2.25x1.25-label_2.25x1.25in", "oe_30859-paint-can-label_2.25x3.125in", "oe_2.25x4-label_2.25x4in", "oe_2.25x5.5-label_2.25x5.5in", "oe_2.38x5.5-label_2.38x5.5in", "oe_2.5x1-label_2.5x1in", "oe_2.5x2-label_2.5x2in", "oe_2.75x1.25-label_2.75x1.25in", "oe_2.9x1-label_2.9x1in", "oe_3x1-label_3x1in", "oe_3x1.25-label_3x1.25in", "oe_3x2-label_3x2in", "oe_3x3-label_3x3in", "oe_3x5-label_3x5in", "oe_3.25x2-label_3.25x2in", "oe_3.25x5-label_3.25x5in", "oe_3.25x5.5-label_3.25x5.5in", "oe_3.25x5.83-label_3.25x5.83in", "oe_3.25x7.83-label_3.25x7.83in", "oe_3.5x1-label_3.5x1in", "oe_4x1-label_4x1in", "oe_4x2-label_4x2in", "oe_4x3-label_4x3in", "oe_4x4-label_4x4in", "oe_4x5-label_4x5in", "oe_4x6-label_4x6in", "oe_4x6.5-label_4x6.5in", "oe_4x13-label_4x13in", /* "oe_6x1-label_6x1in", "oe_6x2-label_6x2in", "oe_6x3-label_6x3in", "oe_6x4-label_6x4in", "oe_6x5-label_6x5in", "oe_6x6-label_6x6in", "oe_6x6.5-label_6x6.5in", "oe_6x13-label_6x13in", "oe_8x1-label_8x1in", "oe_8x2-label_8x2in", "oe_8x3-label_8x3in", "oe_8x4-label_8x4in", "oe_8x5-label_8x5in", "oe_8x6-label_8x6in", "oe_8x6.5-label_8x6.5in", "oe_8x13-label_8x13in",*/ "roll_max_4x100in", "roll_min_0.75x0.25in" }; // // Local functions... // static bool lprint_epl2_printfile(pappl_job_t *job, pappl_pr_options_t *options, pappl_device_t *device); static bool lprint_epl2_rendjob(pappl_job_t *job, pappl_pr_options_t *options, pappl_device_t *device); static bool lprint_epl2_rendpage(pappl_job_t *job, pappl_pr_options_t *options, pappl_device_t *device, unsigned page); static bool lprint_epl2_rstartjob(pappl_job_t *job, pappl_pr_options_t *options, pappl_device_t *device); static bool lprint_epl2_rstartpage(pappl_job_t *job, pappl_pr_options_t *options, pappl_device_t *device, unsigned page); static bool lprint_epl2_rwriteline(pappl_job_t *job, pappl_pr_options_t *options, pappl_device_t *device, unsigned y, const unsigned char *line); static bool lprint_epl2_status(pappl_printer_t *printer); // // 'lprintInitEPL2()' - Initialize the driver. // bool // O - `true` on success, `false` on error lprintEPL2( pappl_system_t *system, // I - System const char *driver_name,// I - Driver name const char *device_uri, // I - Device URI const char *device_id, // I - 1284 device ID pappl_pr_driver_data_t *data, // I - Pointer to driver data ipp_t **attrs, // O - Pointer to driver attributes void *cbdata) // I - Callback data (not used) { data->printfile_cb = lprint_epl2_printfile; data->rendjob_cb = lprint_epl2_rendjob; data->rendpage_cb = lprint_epl2_rendpage; data->rstartjob_cb = lprint_epl2_rstartjob; data->rstartpage_cb = lprint_epl2_rstartpage; data->rwriteline_cb = lprint_epl2_rwriteline; data->status_cb = lprint_epl2_status; data->format = "application/vnd.eltron-epl"; data->num_resolution = 1; if (strstr(driver_name, "-203dpi")) { data->x_resolution[0] = 203; data->y_resolution[0] = 203; } else { data->x_resolution[0] = 300; data->y_resolution[0] = 300; } data->x_default = data->y_default = data->x_resolution[0]; if (strstr(driver_name, "-cutter")) data->finishings |= PAPPL_FINISHINGS_TRIM; if (!strncmp(driver_name, "epl2_2inch-", 16)) { // 2 inch printer... data->num_media = (int)(sizeof(lprint_epl2_2inch_media) / sizeof(lprint_epl2_2inch_media[0])); memcpy(data->media, lprint_epl2_2inch_media, sizeof(lprint_epl2_2inch_media)); papplCopyString(data->media_default.size_name, "oe_2x3-label_2x3in", sizeof(data->media_default.size_name)); data->media_default.size_width = 2 * 2540; data->media_default.size_length = 3 * 2540; } else { // 4 inch printer... data->num_media = (int)(sizeof(lprint_epl2_4inch_media) / sizeof(lprint_epl2_4inch_media[0])); memcpy(data->media, lprint_epl2_4inch_media, sizeof(lprint_epl2_4inch_media)); papplCopyString(data->media_default.size_name, "na_index-4x6_4x6in", sizeof(data->media_default.size_name)); data->media_default.size_width = 4 * 2540; data->media_default.size_length = 6 * 2540; } data->bottom_top = data->left_right = 1; data->num_source = 1; data->source[0] = "main-roll"; data->num_type = 3; data->type[0] = "continuous"; data->type[1] = "labels"; data->type[2] = "labels-continuous"; data->media_default.bottom_margin = data->bottom_top; data->media_default.left_margin = data->left_right; data->media_default.right_margin = data->left_right; papplCopyString(data->media_default.source, "main-roll", sizeof(data->media_default.source)); data->media_default.top_margin = data->bottom_top; data->media_default.top_offset = 0; data->media_default.tracking = PAPPL_MEDIA_TRACKING_MARK; papplCopyString(data->media_default.type, "labels", sizeof(data->media_default.type)); data->media_ready[0] = data->media_default; data->mode_configured = PAPPL_LABEL_MODE_TEAR_OFF; data->mode_configured = PAPPL_LABEL_MODE_APPLICATOR | PAPPL_LABEL_MODE_CUTTER | PAPPL_LABEL_MODE_CUTTER_DELAYED | PAPPL_LABEL_MODE_KIOSK | PAPPL_LABEL_MODE_PEEL_OFF | PAPPL_LABEL_MODE_PEEL_OFF_PREPEEL | PAPPL_LABEL_MODE_REWIND | PAPPL_LABEL_MODE_RFID | PAPPL_LABEL_MODE_TEAR_OFF; data->speed_default = 0; data->speed_supported[0] = 2540; data->speed_supported[1] = 6 * 2540; data->darkness_configured = 50; data->darkness_supported = 30; return (true); } // // 'lprint_epl2_print()' - Print a file. // static bool // O - `true` on success, `false` on failure lprint_epl2_printfile( pappl_job_t *job, // I - Job pappl_pr_options_t *options, // I - Job options pappl_device_t *device) // I - Output device { int fd; // Input file ssize_t bytes; // Bytes read/written char buffer[65536]; // Read/write buffer // Copy the raw file... papplJobSetImpressions(job, 1); if ((fd = open(papplJobGetFilename(job), O_RDONLY)) < 0) { papplLogJob(job, PAPPL_LOGLEVEL_ERROR, "Unable to open print file '%s': %s", papplJobGetFilename(job), strerror(errno)); return (false); } while ((bytes = read(fd, buffer, sizeof(buffer))) > 0) { if (papplDeviceWrite(device, buffer, (size_t)bytes) < 0) { papplLogJob(job, PAPPL_LOGLEVEL_ERROR, "Unable to send %d bytes to printer.", (int)bytes); close(fd); return (false); } } close(fd); papplJobSetImpressionsCompleted(job, 1); return (true); } // // 'lprint_epl2_rendjob()' - End a job. // static bool // O - `true` on success, `false` on failure lprint_epl2_rendjob( pappl_job_t *job, // I - Job pappl_pr_options_t *options, // I - Job options pappl_device_t *device) // I - Output device { (void)job; (void)options; (void)device; return (true); } // // 'lprint_epl2_rendpage()' - End a page. // static bool // O - `true` on success, `false` on failure lprint_epl2_rendpage( pappl_job_t *job, // I - Job pappl_pr_options_t *options, // I - Job options pappl_device_t *device, // I - Output device unsigned page) // I - Page number { (void)job; (void)page; papplDevicePuts(device, "P1\n"); if (options->finishings & PAPPL_FINISHINGS_TRIM) papplDevicePuts(device, "C\n"); return (true); } // // 'lprint_epl2_rstartjob()' - Start a job. // static bool // O - `true` on success, `false` on failure lprint_epl2_rstartjob( pappl_job_t *job, // I - Job pappl_pr_options_t *options, // I - Job options pappl_device_t *device) // I - Output device { (void)job; (void)options; (void)device; return (true); } // // 'lprint_epl2_rstartpage()' - Start a page. // static bool // O - `true` on success, `false` on failure lprint_epl2_rstartpage( pappl_job_t *job, // I - Job pappl_pr_options_t *options, // I - Job options pappl_device_t *device, // I - Output device unsigned page) // I - Page number { int ips; // Inches per second (void)job; (void)page; papplDevicePuts(device, "\nN\n"); // print-darkness papplDevicePrintf(device, "D%d\n", 15 * options->print_darkness / 100); // print-speed if ((ips = options->print_speed / 2540) > 0) papplDevicePrintf(device, "S%d\n", ips); // Set label size... papplDevicePrintf(device, "q%u\n", (options->header.cupsWidth + 7) & ~7U); return (true); } // // 'lprint_epl2_rwriteline()' - Write a raster line. // static bool // O - `true` on success, `false` on failure lprint_epl2_rwriteline( pappl_job_t *job, // I - Job pappl_pr_options_t *options, // I - Job options pappl_device_t *device, // I - Output device unsigned y, // I - Line number const unsigned char *line) // I - Line { if (line[0] || memcmp(line, line + 1, options->header.cupsBytesPerLine - 1)) { unsigned i; // Looping var const unsigned char *lineptr; // Pointer into line unsigned char buffer[300], // Buffer (big enough for 8" at 300dpi) *bufptr; // Pointer into buffer for (i = options->header.cupsBytesPerLine, lineptr = line, bufptr = buffer; i > 0; i --) *bufptr++ = ~*lineptr++; papplDevicePrintf(device, "GW0,%u,%u,1\n", y, options->header.cupsBytesPerLine); papplDeviceWrite(device, buffer, options->header.cupsBytesPerLine); papplDevicePuts(device, "\n"); } return (true); } // // 'lprint_epl2_status()' - Get current printer status. // static bool // O - `true` on success, `false` on failure lprint_epl2_status( pappl_printer_t *printer) // I - Printer { (void)printer; return (true); } lprint-1.1.0/lprint-epl2.h000066400000000000000000000016611416113445100153460ustar00rootroot00000000000000// // EPL2 driver table for LPrint, a Label Printer Application // // Copyright © 2019-2021 by Michael R Sweet. // // Licensed under Apache License v2.0. See the file "LICENSE" for more // information. // { "epl2_2inch-203dpi-dt", "Zebra ZPL 2-inch/203dpi/Direct-Thermal", "", NULL }, { "epl2_2inch-203dpi-tt", "Zebra ZPL 2-inch/203dpi/Thermal-Transfer", "", NULL }, { "epl2_2inch-300dpi-dt", "Zebra ZPL 2-inch/300dpi/Direct-Thermal", "", NULL }, { "epl2_2inch-300dpi-tt", "Zebra ZPL 2-inch/300dpi/Thermal-Transfer", "", NULL }, { "epl2_4inch-203dpi-dt", "Zebra ZPL 4-inch/203dpi/Direct-Thermal", "COMMAND SET:EPL;", NULL }, { "epl2_4inch-203dpi-tt", "Zebra ZPL 4-inch/203dpi/Thermal-Transfer", "", NULL }, { "epl2_4inch-300dpi-dt", "Zebra ZPL 4-inch/300dpi/Direct-Thermal", "", NULL }, { "epl2_4inch-300dpi-tt", "Zebra ZPL 4-inch/300dpi/Thermal-Transfer", "", NULL }, lprint-1.1.0/lprint-fgl.c000066400000000000000000000065671416113445100152610ustar00rootroot00000000000000// // UNIMPLEMENTED FGL driver for LPrint, a Label Printer Application // // Copyright © 2019 by Michael R Sweet. // // Licensed under Apache License v2.0. See the file "LICENSE" for more // information. // // // Include necessary headers... // #include "lprint.h" // // Local globals... // static const char * const lprint_fgl_media[] = { // Supported media sizes "oe_1.25x0.25-label_1.25x0.25in", "oe_1.25x2.25-label_1.25x2.25in", "oe_1.5x0.25-label_1.5x0.25in", "oe_1.5x0.5-label_1.5x0.5in", "oe_1.5x1-label_1.5x1in", "oe_1.5x2-label_1.5x2in", "oe_2x0.37-label_2x0.37in", "oe_2x0.5-label_2x0.5in", "oe_2x1-label_2x1in", "oe_2x1.25-label_2x1.25in", "oe_2x2-label_2x2in", "oe_2x3-label_2x3in", "oe_2x4-label_2x4in", "oe_2x5.5-label_2x5.5in", "oe_2.25x0.5-label_2.25xin", "oe_2.25x1.25-label_2.25xin", "oe_30859-paint-can-label_2.25x3.125in", "oe_2.25x4-label_2.25x4in", "oe_2.25x5.5-label_2.25x5.5in", "oe_2.38x5.5-label_2.38x5.5in", "oe_2.5x1-label_2.5x1in", "oe_2.5x2-label_2.5x2in", "oe_2.75x1.25-label_2.75x1.25in", "oe_2.9x1-label_2.9x1in", "oe_3x1-label_3x1in", "oe_3x1.25-label_3x1.25in", "oe_3x2-label_3x2in", "oe_3x3-label_3x3in", "oe_3x5-label_3x5in", "oe_3.25x2-label_3.25x2in", "oe_3.25x5-label_3.25x5in", "oe_3.25x5.5-label_3.25x5.5in", "oe_3.25x5.83-label_3.25x5.83in", "oe_3.25x7.83-label_3.25x7.83in", "oe_3.5x1-label_3.5x1in", "oe_4x1-label_4x1in", "oe_4x2-label_4x2in", "oe_4x3-label_4x3in", "oe_4x4-label_4x4in", "oe_4x5-label_4x5in", "oe_4x6-label_4x6in", "oe_4x6.5-label_4x6.5in", "oe_4x13-label_4x13in", "oe_6x1-label_6x1in", "oe_6x2-label_6x2in", "oe_6x3-label_6x3in", "oe_6x4-label_6x4in", "oe_6x5-label_6x5in", "oe_6x6-label_6x6in", "oe_6x6.5-label_6x6.5in", "oe_6x13-label_6x13in", "oe_8x1-label_8x1in", "oe_8x2-label_8x2in", "oe_8x3-label_8x3in", "oe_8x4-label_8x4in", "oe_8x5-label_8x5in", "oe_8x6-label_8x6in", "oe_8x6.5-label_8x6.5in", "oe_8x13-label_8x13in", "roll_max_8x100in", "roll_min_1.25x0.25in" }; // // Local functions... // static int lprint_fgl_print(lprint_printer_t *printer, lprint_job_t *job); static int lprint_fgl_status(lprint_printer_t *printer); // // 'lprintInitFGL()' - Initialize the driver. // void lprintInitFGL( lprint_driver_t *driver) // I - Driver { pthread_rwlock_wrlock(&driver->rwlock); driver->printfunc = lprint_fgl_print; driver->statusfunc = lprint_fgl_status; driver->format = "application/vnd.-"; driver->num_resolution = 1; driver->x_resolution[0] = 203; driver->y_resolution[0] = 203; driver->num_media = (int)(sizeof(lprint_fgl_media) / sizeof(lprint_fgl_media[0])); memcpy(driver->media, lprint_fgl_media, sizeof(lprint_fgl_media)); driver->num_source = 1; driver->source[0] = "main-roll"; driver->num_type = 1; driver->type[0] = "labels"; driver->num_supply = 0; pthread_rwlock_unlock(&driver->rwlock); } // // 'lprint_fgl_print()' - Print a file. // static int // O - 1 on success, 0 on failure lprint_fgl_print( lprint_printer_t *printer, // I - Printer lprint_job_t *job) // I - Job { (void)printer; (void)job; return (1); } // // 'lprint_fgl_status()' - Get current printer status. // static int // O - 1 on success, 0 on failure lprint_fgl_status( lprint_printer_t *printer) // I - Printer { (void)printer; return (1); } lprint-1.1.0/lprint-pcl.c000066400000000000000000000065671416113445100152670ustar00rootroot00000000000000// // UNIMPLEMENTED PCL driver for LPrint, a Label Printer Application // // Copyright © 2019 by Michael R Sweet. // // Licensed under Apache License v2.0. See the file "LICENSE" for more // information. // // // Include necessary headers... // #include "lprint.h" // // Local globals... // static const char * const lprint_pcl_media[] = { // Supported media sizes "oe_1.25x0.25-label_1.25x0.25in", "oe_1.25x2.25-label_1.25x2.25in", "oe_1.5x0.25-label_1.5x0.25in", "oe_1.5x0.5-label_1.5x0.5in", "oe_1.5x1-label_1.5x1in", "oe_1.5x2-label_1.5x2in", "oe_2x0.37-label_2x0.37in", "oe_2x0.5-label_2x0.5in", "oe_2x1-label_2x1in", "oe_2x1.25-label_2x1.25in", "oe_2x2-label_2x2in", "oe_2x3-label_2x3in", "oe_2x4-label_2x4in", "oe_2x5.5-label_2x5.5in", "oe_2.25x0.5-label_2.25xin", "oe_2.25x1.25-label_2.25xin", "oe_30859-paint-can-label_2.25x3.125in", "oe_2.25x4-label_2.25x4in", "oe_2.25x5.5-label_2.25x5.5in", "oe_2.38x5.5-label_2.38x5.5in", "oe_2.5x1-label_2.5x1in", "oe_2.5x2-label_2.5x2in", "oe_2.75x1.25-label_2.75x1.25in", "oe_2.9x1-label_2.9x1in", "oe_3x1-label_3x1in", "oe_3x1.25-label_3x1.25in", "oe_3x2-label_3x2in", "oe_3x3-label_3x3in", "oe_3x5-label_3x5in", "oe_3.25x2-label_3.25x2in", "oe_3.25x5-label_3.25x5in", "oe_3.25x5.5-label_3.25x5.5in", "oe_3.25x5.83-label_3.25x5.83in", "oe_3.25x7.83-label_3.25x7.83in", "oe_3.5x1-label_3.5x1in", "oe_4x1-label_4x1in", "oe_4x2-label_4x2in", "oe_4x3-label_4x3in", "oe_4x4-label_4x4in", "oe_4x5-label_4x5in", "oe_4x6-label_4x6in", "oe_4x6.5-label_4x6.5in", "oe_4x13-label_4x13in", "oe_6x1-label_6x1in", "oe_6x2-label_6x2in", "oe_6x3-label_6x3in", "oe_6x4-label_6x4in", "oe_6x5-label_6x5in", "oe_6x6-label_6x6in", "oe_6x6.5-label_6x6.5in", "oe_6x13-label_6x13in", "oe_8x1-label_8x1in", "oe_8x2-label_8x2in", "oe_8x3-label_8x3in", "oe_8x4-label_8x4in", "oe_8x5-label_8x5in", "oe_8x6-label_8x6in", "oe_8x6.5-label_8x6.5in", "oe_8x13-label_8x13in", "roll_max_8x100in", "roll_min_1.25x0.25in" }; // // Local functions... // static int lprint_pcl_print(lprint_printer_t *printer, lprint_job_t *job); static int lprint_pcl_status(lprint_printer_t *printer); // // 'lprintInitPCL()' - Initialize the driver. // void lprintInitPCL( lprint_driver_t *driver) // I - Driver { pthread_rwlock_wrlock(&driver->rwlock); driver->printfunc = lprint_pcl_print; driver->statusfunc = lprint_pcl_status; driver->format = "application/vnd.-"; driver->num_resolution = 1; driver->x_resolution[0] = 203; driver->y_resolution[0] = 203; driver->num_media = (int)(sizeof(lprint_pcl_media) / sizeof(lprint_pcl_media[0])); memcpy(driver->media, lprint_pcl_media, sizeof(lprint_pcl_media)); driver->num_source = 1; driver->source[0] = "main-roll"; driver->num_type = 1; driver->type[0] = "labels"; driver->num_supply = 0; pthread_rwlock_unlock(&driver->rwlock); } // // 'lprint_pcl_print()' - Print a file. // static int // O - 1 on success, 0 on failure lprint_pcl_print( lprint_printer_t *printer, // I - Printer lprint_job_t *job) // I - Job { (void)printer; (void)job; return (1); } // // 'lprint_pcl_status()' - Get current printer status. // static int // O - 1 on success, 0 on failure lprint_pcl_status( lprint_printer_t *printer) // I - Printer { (void)printer; return (1); } lprint-1.1.0/lprint-testpage.c000066400000000000000000000174031416113445100163140ustar00rootroot00000000000000// // Test page generator for LPrint, a Label Printer Application // // Copyright © 2021 by Michael R Sweet. // // Licensed under Apache License v2.0. See the file "LICENSE" for more // information. // // // Include necessary headers... // #include "lprint.h" // // 'lprintTestFilterCB()' - Print a test page. // bool // O - `true` on success, `false` on failure lprintTestFilterCB( pappl_job_t *job, // I - Job pappl_device_t *device, // I - Output device void *cbdata) // I - Callback data (not used) { pappl_pr_driver_data_t data; // Printer driver data pappl_pr_options_t *options = papplJobCreatePrintOptions(job, 1, false); // Print options unsigned char *line = NULL, // Output line *lineptr, // Pointer into line white = 0x00, // White pixel black = 0xff, // Black pixel gray0 = 0xaa, // Gray pixel for even lines gray1 = 0x55; // Gray pixel for odd lines unsigned y, // Current position in page ytop, yend, ybottom, // Top/end-of-image/bottom lines in page x1mm, y1mm, // Number of bytes/rows for 2mm pw, ph; // Image width and height const char **pixels, // Output image pixels *pixel; // Current output pixel bool ret = false; // Return value static const char *portrait[] = // Portrait label image { " ", " TTT ", " TT ", " TT ", " TT T ", " TTTTTTTTTTTTTT ", " TTTTTTTTTTTTTT ", " TT T ", " TT ", " TT ", " TTT ", " ", " ", " SS SSS ", " SS SSSSS ", " SS SS SS ", " SS SS SS ", " SS SS SS ", " SS SS SS ", " SS SS SS ", " SS SS SS ", " SSSSS SS ", " SSS SS ", " ", " ", " EEE EEE ", " EE EE ", " EE EEEE EE ", " EE EE EE ", " EE EE EE ", " EE EE EE ", " EE EE EE ", " EE EE EE ", " EEEEEEEEEEEEEE ", " EEEEEEEEEEEEEE ", " ", " ", " TTT ", " TT ", " TT ", " TT T ", " TTTTTTTTTTTTTT ", " TTTTTTTTTTTTTT ", " TT T ", " TT ", " TT ", " TTT ", " " }; static const char *landscape[] = // Landscape label image { " ", " TTTTTTTTTT EEEEEEEEEE SSSS TTTTTTTTTT ", " TTTTTTTTTT EEEEEEEEEE SSSSSSSS TTTTTTTTTT ", " T TT T EE E SSS SSS T TT T ", " TT EE SS S TT ", " TT EE SS TT ", " TT EE E SSS TT ", " TT EEEEEEEE SSSS TT ", " TT EEEEEEEE SSSS TT ", " TT EE E SSS TT ", " TT EE SS TT ", " TT EE S SS TT ", " TT EE E SSS SSS TT ", " TT EEEEEEEEEE SSSSSSSS TT ", " TTTT EEEEEEEEEE SSSS TTTT ", " " }; (void)cbdata; // Validate options and allocate a line buffer... if (!options) goto done; if ((line = malloc(options->header.cupsBytesPerLine)) == NULL) { papplLogJob(job, PAPPL_LOGLEVEL_ERROR, "Unable to allocate %u bytes for test page: %s", options->header.cupsBytesPerLine, strerror(errno)); goto done; } if ((x1mm = options->header.HWResolution[0] / 200) == 0) x1mm = 1; if ((y1mm = 8 * (options->header.HWResolution[1] / 200)) == 0) y1mm = 1; if (options->header.cupsWidth > options->header.cupsHeight) { // Send landscape raster... pixels = landscape; pw = 48; ph = 16; } else { // Send portrait raster... pixels = portrait; pw = 16; ph = 48; } if (((pw + 2) * x1mm) > options->header.cupsWidth || ((ph + 2) * y1mm) > options->header.cupsHeight) { papplLogJob(job, PAPPL_LOGLEVEL_ERROR, "Label too small to print test page."); goto done; } pw *= x1mm; ph *= y1mm; ytop = (options->header.cupsHeight - ph) / 2; yend = ytop + ph; ybottom = options->header.cupsHeight - y1mm; papplLogJob(job, PAPPL_LOGLEVEL_DEBUG, "pw=%u, ph=%u, ytop=%u, yend=%u, ybottom=%u", pw, ph, ytop, yend, ybottom); // Start the page... papplPrinterGetDriverData(papplJobGetPrinter(job), &data); papplJobSetImpressions(job, 1); if (!(data.rstartjob_cb)(job, options, device)) goto done; if (!(data.rstartpage_cb)(job, options, device, 1)) goto done; // Send lines for the test label: // // +---------------+ // |...............| // |... ...| // |... T E S T ...| // |... ...| // |...............| // +---------------+ // Top border (2mm) memset(line, black, options->header.cupsBytesPerLine); for (y = 0; y < y1mm; y ++) { if (!(data.rwriteline_cb)(job, options, device, y, line)) goto done; } // Side borders and gray shading on upper half for (; y < ytop; y ++) { memset(line, (y & 1) ? gray1 : gray0, options->header.cupsBytesPerLine); memset(line, black, x1mm); memset(line + options->header.cupsBytesPerLine - x1mm, black, x1mm); if (!(data.rwriteline_cb)(job, options, device, y, line)) goto done; } // Side borders, gray shading, and image pixels in middle for (; y < yend; y ++) { memset(line, (y & 1) ? gray1 : gray0, options->header.cupsBytesPerLine); memset(line, black, x1mm); memset(line + options->header.cupsBytesPerLine - x1mm, black, x1mm); for (pixel = pixels[(y - ytop) / y1mm], lineptr = line + (options->header.cupsBytesPerLine - pw) / 2; *pixel; pixel ++, lineptr += x1mm) memset(lineptr, isspace(*pixel) ? white : black, x1mm); if (!(data.rwriteline_cb)(job, options, device, y, line)) goto done; } // Side borders and gray shading on lower half for (; y < ybottom; y ++) { memset(line, (y & 1) ? gray1 : gray0, options->header.cupsBytesPerLine); memset(line, black, x1mm); memset(line + options->header.cupsBytesPerLine - x1mm, black, x1mm); if (!(data.rwriteline_cb)(job, options, device, y, line)) goto done; } // Bottom border (2mm) memset(line, black, options->header.cupsBytesPerLine); for (; y < options->header.cupsHeight; y ++) { if (!(data.rwriteline_cb)(job, options, device, y, line)) goto done; } // Finish up... if (!(data.rendpage_cb)(job, options, device, 1)) goto done; if (!(data.rendjob_cb)(job, options, device)) goto done; ret = true; papplJobSetImpressionsCompleted(job, 1); done: free(line); papplJobDeletePrintOptions(options); return (ret); } // // 'lprintTestPageCB()' - Print a test page. // const char * // O - Test page file lprintTestPageCB( pappl_printer_t *printer, // I - Printer char *buffer, // I - Filename buffer size_t bufsize) // I - Size of filename buffer { int fd; // File descriptor char testpage[] = LPRINT_TESTPAGE_HEADER; // Test page file header if ((fd = papplCreateTempFile(buffer, bufsize, "testpage", "tst")) < 0) { papplLogPrinter(printer, PAPPL_LOGLEVEL_ERROR, "Unable to create temporary file for test page: %s", strerror(errno)); return (NULL); } if (write(fd, testpage, sizeof(testpage)) < 0) { papplLogPrinter(printer, PAPPL_LOGLEVEL_ERROR, "Unable to write temporary file for test page: %s", strerror(errno)); close(fd); return (NULL); } close(fd); return (buffer); } lprint-1.1.0/lprint-zpl.c000066400000000000000000000656141416113445100153140ustar00rootroot00000000000000// // ZPL driver for LPrint, a Label Printer Application // // Copyright © 2019-2021 by Michael R Sweet. // Copyright © 2007-2019 by Apple Inc. // Copyright © 2001-2007 by Easy Software Products. // // Licensed under Apache License v2.0. See the file "LICENSE" for more // information. // // // Include necessary headers... // #include "lprint.h" // Define to 1 to use run-length encoding, 0 for uncompressed #define ZPL_COMPRESSION 1 // Error and warning bits #define ZPL_ERROR_MEDIA_OUT 0x00000001 #define ZPL_ERROR_RIBBON_OUT 0x00000002 #define ZPL_ERROR_HEAD_OPEN 0x00000004 #define ZPL_ERROR_CUTTER_FAULT 0x00000008 #define ZPL_ERROR_CLEAR_PP_FAILED 0x00008000 #define ZPL_ERROR_PAPER_FEED 0x00004000 #define ZPL_ERROR_PRESENTER 0x00002000 #define ZPL_ERROR_PAPER_JAM 0x00001000 #define ZPL_ERROR_MARK_NOT_FOUND 0x00080000 #define ZPL_ERROR_MARK_CALIBRATE 0x00040000 #define ZPL_ERROR_RETRACT_TIMEOUT 0x00020000 #define ZPL_ERROR_PAUSED 0x00010000 #define ZPL_WARNING_PAPER_ALMOST_OUT 0x00000008 #define ZPL_WARNING_REPLACE_PRINTHEAD 0x00000004 #define ZPL_WARNING_CLEAN_PRINTHEAD 0x00000002 #define ZPL_WARNING_CALIBRATE_MEDIA 0x00000001 #define ZPL_WARNING_PAPER_BEFORE_HEAD 0x00000010 #define ZPL_WARNING_BLACK_MARK 0x00000020 #define ZPL_WARNING_PAPER_AFTER_HEAD 0x00000040 #define ZPL_WARNING_LOOP_READY 0x00000080 #define ZPL_WARNING_PRESENTER 0x00000100 #define ZPL_WARNING_RETRACT_READY 0x00000200 #define ZPL_WARNING_IN_RETRACT 0x00000400 #define ZPL_WARNING_AT_BIN 0x00000800 // // Local types... // typedef struct lprint_zpl_s // ZPL driver data { unsigned char *comp_buffer; // Compression buffer unsigned char *last_buffer; // Last line int last_buffer_set; // Is the last line set? } lprint_zpl_t; // // Local globals... // static const char * const lprint_zpl_2inch_media[] = { // Supported 2 inch media sizes "oe_1.25x0.25-label_1.25x0.25in", "oe_1.25x2.25-label_1.25x2.25in", "oe_1.5x0.25-label_1.5x0.25in", "oe_1.5x0.5-label_1.5x0.5in", "oe_1.5x1-label_1.5x1in", "oe_1.5x2-label_1.5x2in", "oe_2x0.37-label_2x0.37in", "oe_2x0.5-label_2x0.5in", "oe_2x1-label_2x1in", "oe_2x1.25-label_2x1.25in", "oe_2x2-label_2x2in", "oe_2x3-label_2x3in", "oe_2x4-label_2x4in", "oe_2x5.5-label_2x5.5in", "roll_max_2x39.6in", "roll_min_0.75x0.25in" }; static const char * const lprint_zpl_4inch_media[] = { // Supported 4 inch media sizes "oe_1.25x0.25-label_1.25x0.25in", "oe_1.25x2.25-label_1.25x2.25in", "oe_1.5x0.25-label_1.5x0.25in", "oe_1.5x0.5-label_1.5x0.5in", "oe_1.5x1-label_1.5x1in", "oe_1.5x2-label_1.5x2in", "oe_2x0.37-label_2x0.37in", "oe_2x0.5-label_2x0.5in", "oe_2x1-label_2x1in", "oe_2x1.25-label_2x1.25in", "oe_2x2-label_2x2in", "oe_2x3-label_2x3in", "oe_2x4-label_2x4in", "oe_2x5.5-label_2x5.5in", "oe_2.25x0.5-label_2.25x0.5in", "oe_2.25x1.25-label_2.25x1.25in", "oe_30859-paint-can-label_2.25x3.125in", "oe_2.25x4-label_2.25x4in", "oe_2.25x5.5-label_2.25x5.5in", "oe_2.38x5.5-label_2.38x5.5in", "oe_2.5x1-label_2.5x1in", "oe_2.5x2-label_2.5x2in", "oe_2.75x1.25-label_2.75x1.25in", "oe_2.9x1-label_2.9x1in", "oe_3x1-label_3x1in", "oe_3x1.25-label_3x1.25in", "oe_3x2-label_3x2in", "oe_3x3-label_3x3in", "na_index-3x5_3x5in", "oe_3.25x2-label_3.25x2in", "oe_3.25x5-label_3.25x5in", "oe_3.25x5.5-label_3.25x5.5in", "oe_3.25x5.83-label_3.25x5.83in", "oe_3.25x7.83-label_3.25x7.83in", "oe_3.5x1-label_3.5x1in", "oe_4x1-label_4x1in", "oe_4x2-label_4x2in", "oe_4x3-label_4x3in", "oe_4x4-label_4x4in", "oe_4x5-label_4x5in", "na_index-4x6_4x6in", "oe_4x6.5-label_4x6.5in", "oe_4x8-label_4x8in", "oe_4x13-label_4x13in", "roll_max_4x39.6in", "roll_min_0.75x0.25in" /* "oe_6x1-label_6x1in", "oe_6x2-label_6x2in", "oe_6x3-label_6x3in", "oe_6x4-label_6x4in", "oe_6x5-label_6x5in", "oe_6x6-label_6x6in", "oe_6x6.5-label_6x6.5in", "oe_6x13-label_6x13in", "oe_8x1-label_8x1in", "oe_8x2-label_8x2in", "oe_8x3-label_8x3in", "oe_8x4-label_8x4in", "oe_8x5-label_8x5in", "oe_8x6-label_8x6in", "oe_8x6.5-label_8x6.5in", "oe_8x13-label_8x13in", "roll_max_8x39.6in", "roll_min_1.25x0.25in" */ }; // // Local functions... // #if ZPL_COMPRESSION static bool lprint_zpl_compress(pappl_device_t *device, unsigned char ch, unsigned count); #endif // ZPL_COMPRESSION static bool lprint_zpl_printfile(pappl_job_t *job, pappl_pr_options_t *options, pappl_device_t *device); static bool lprint_zpl_rendjob(pappl_job_t *job, pappl_pr_options_t *options, pappl_device_t *device); static bool lprint_zpl_rendpage(pappl_job_t *job, pappl_pr_options_t *options, pappl_device_t *device, unsigned page); static bool lprint_zpl_rstartjob(pappl_job_t *job, pappl_pr_options_t *options, pappl_device_t *device); static bool lprint_zpl_rstartpage(pappl_job_t *job, pappl_pr_options_t *options, pappl_device_t *device, unsigned page); static bool lprint_zpl_rwriteline(pappl_job_t *job, pappl_pr_options_t *options, pappl_device_t *device, unsigned y, const unsigned char *line); static bool lprint_zpl_status(pappl_printer_t *printer); // // 'lprintZPL()' - Initialize the ZPL driver. // bool // O - `true` on success, `false` on error lprintZPL( pappl_system_t *system, // I - System const char *driver_name,// I - Driver name const char *device_uri, // I - Device URI const char *device_id, // I - 1284 device ID pappl_pr_driver_data_t *data, // I - Pointer to driver data ipp_t **attrs, // O - Pointer to driver attributes void *cbdata) // I - Callback data (not used) { data->printfile_cb = lprint_zpl_printfile; data->rendjob_cb = lprint_zpl_rendjob; data->rendpage_cb = lprint_zpl_rendpage; data->rstartjob_cb = lprint_zpl_rstartjob; data->rstartpage_cb = lprint_zpl_rstartpage; data->rwriteline_cb = lprint_zpl_rwriteline; data->status_cb = lprint_zpl_status; data->format = "application/vnd.zebra-zpl"; data->num_resolution = 1; if (strstr(driver_name, "-203dpi")) { data->x_resolution[0] = 203; data->y_resolution[0] = 203; } else if (strstr(driver_name, "-300dpi")) { data->x_resolution[0] = 300; data->y_resolution[0] = 300; } else { data->x_resolution[0] = 600; data->y_resolution[0] = 600; } data->x_default = data->y_default = data->x_resolution[0]; if (strstr(driver_name, "-cutter")) data->finishings |= PAPPL_FINISHINGS_TRIM; if (!strncmp(driver_name, "zpl_2inch-", 16)) { // 2 inch printer... data->num_media = (int)(sizeof(lprint_zpl_2inch_media) / sizeof(lprint_zpl_2inch_media[0])); memcpy(data->media, lprint_zpl_2inch_media, sizeof(lprint_zpl_2inch_media)); papplCopyString(data->media_default.size_name, "oe_2x3-label_2x3in", sizeof(data->media_default.size_name)); data->media_default.size_width = 2 * 2540; data->media_default.size_length = 3 * 2540; } else { // 4 inch printer... data->num_media = (int)(sizeof(lprint_zpl_4inch_media) / sizeof(lprint_zpl_4inch_media[0])); memcpy(data->media, lprint_zpl_4inch_media, sizeof(lprint_zpl_4inch_media)); papplCopyString(data->media_default.size_name, "na_index-4x6_4x6in", sizeof(data->media_default.size_name)); data->media_default.size_width = 4 * 2540; data->media_default.size_length = 6 * 2540; } data->bottom_top = data->left_right = 1; data->num_source = 1; data->source[0] = "main-roll"; data->top_offset_supported[0] = -1500; data->top_offset_supported[1] = 1500; data->tracking_supported = PAPPL_MEDIA_TRACKING_MARK | PAPPL_MEDIA_TRACKING_WEB | PAPPL_MEDIA_TRACKING_CONTINUOUS; data->num_type = 3; data->type[0] = "continuous"; data->type[1] = "labels"; data->type[2] = "labels-continuous"; data->media_default.bottom_margin = data->bottom_top; data->media_default.left_margin = data->left_right; data->media_default.right_margin = data->left_right; papplCopyString(data->media_default.source, "main-roll", sizeof(data->media_default.source)); data->media_default.top_margin = data->bottom_top; data->media_default.top_offset = 0; data->media_default.tracking = PAPPL_MEDIA_TRACKING_MARK; papplCopyString(data->media_default.type, "labels", sizeof(data->media_default.type)); data->media_ready[0] = data->media_default; data->mode_configured = PAPPL_LABEL_MODE_TEAR_OFF; data->mode_configured = PAPPL_LABEL_MODE_APPLICATOR | PAPPL_LABEL_MODE_CUTTER | PAPPL_LABEL_MODE_CUTTER_DELAYED | PAPPL_LABEL_MODE_KIOSK | PAPPL_LABEL_MODE_PEEL_OFF | PAPPL_LABEL_MODE_PEEL_OFF_PREPEEL | PAPPL_LABEL_MODE_REWIND | PAPPL_LABEL_MODE_RFID | PAPPL_LABEL_MODE_TEAR_OFF; data->tear_offset_configured = 0; data->tear_offset_supported[0] = -1500; data->tear_offset_supported[1] = 1500; data->speed_default = 0; data->speed_supported[0] = 2540; data->speed_supported[1] = 12 * 2540; data->darkness_configured = 50; data->darkness_supported = 30; return (true); } // // 'lprintZPLQueryDriver()' - Query the printer to determine the proper driver. // void lprintZPLQueryDriver( pappl_system_t *system, // I - System const char *device_uri, // I - Device URI char *name, // I - Name buffer size_t namesize) // I - Size of name buffer { pappl_device_t *device; // Device connection char line[1025]; // Line from device ssize_t bytes; // Bytes read char model[256], // Model name *modelptr; // Pointer into model name int dpmm = 0; // Dots per millimeter // Make sure name buffer is initialized... *name = '\0'; // Connect and send Host Information command... if ((device = papplDeviceOpen(device_uri, "query", papplLogDevice, system)) == NULL) return; if (papplDevicePuts(device, "~HI\n") < 0) goto done; // Read and parse response: // // MODEL,VERSION,DPMM,MEMORY,OPTIONS if ((bytes = papplDeviceRead(device, line, sizeof(line) - 1)) <= 0) goto done; line[bytes] = '\0'; papplLog(system, PAPPL_LOGLEVEL_DEBUG, "HI response for '%s' was '%s'.", device_uri, line); if (line[0] == 0x02 && sscanf(line + 1, "%255[^,],%*[^,],%d", model, &dpmm) > 1 && (dpmm == 8 || dpmm == 12 || dpmm == 24)) { // Got model and dots-per-millimeter values, create a driver name from it... // Note: We currently assume a 4" print head for auto-detection... const char *type = "tt"; // Type of printing (direct/transfer) int dpi; // Print resolution papplLog(system, PAPPL_LOGLEVEL_DEBUG, "model='%s', dpmm=%d", model, dpmm); if ((modelptr = strchr(model, '-')) != NULL && modelptr > model) { if (modelptr[-1] == 'd') type = "dt"; } if (dpmm == 8) dpi = 203; // 203.2 else if (dpmm == 12) dpi = 300; // Technically should be 304.8... else dpi = 600; // Technically should be 609.6... snprintf(name, namesize, "zpl_4inch-%ddpi-%s", dpi, type); papplLog(system, PAPPL_LOGLEVEL_DEBUG, "auto driver-name='%s'", name); } done: papplDeviceClose(device); return; } #if ZPL_COMPRESSION // // 'lprint_zpl_compress()' - Output a RLE run... // static bool // O - `true` on success, `false` on failure lprint_zpl_compress( pappl_device_t *device, // I - Output device unsigned char ch, // I - Repeat character unsigned count) // I - Repeat count { unsigned char buffer[8192], // Output buffer *bufptr = buffer; // Pointer into buffer if (count > 1) { // Print as many z's as possible - they are the largest denomination // representing 400 characters (zC stands for 400 adjacent C's) while (count >= 400) { count -= 400; *bufptr++ = 'z'; if (bufptr >= (buffer + sizeof(buffer))) { if (papplDeviceWrite(device, buffer, sizeof(buffer)) < 0) return (0); bufptr = buffer; } } // Then print 'g' through 'y' as multiples of 20 characters... if (count >= 20) { *bufptr++ = 'f' + count / 20; count %= 20; } // Finally, print 'G' through 'Y' as 1 through 19 characters... if (count > 0) *bufptr++ = 'F' + count; } // Then the character to be repeated... *bufptr++ = ch; return (papplDeviceWrite(device, buffer, bufptr - buffer) > 0); } #endif // ZPL_COMPRESSION // // 'lprint_zpl_print()' - Print a file. // static bool // O - `true` on success, `false` on failure lprint_zpl_printfile( pappl_job_t *job, // I - Job pappl_pr_options_t *options, // I - Job options pappl_device_t *device) // I - Output device { int fd; // Input file ssize_t bytes; // Bytes read/written char buffer[65536]; // Read/write buffer // Copy the raw file... papplJobSetImpressions(job, 1); if ((fd = open(papplJobGetFilename(job), O_RDONLY)) < 0) { papplLogJob(job, PAPPL_LOGLEVEL_ERROR, "Unable to open print file '%s': %s", papplJobGetFilename(job), strerror(errno)); return (false); } while ((bytes = read(fd, buffer, sizeof(buffer))) > 0) { if (papplDeviceWrite(device, buffer, (size_t)bytes) < 0) { papplLogJob(job, PAPPL_LOGLEVEL_ERROR, "Unable to send %d bytes to printer.", (int)bytes); close(fd); return (false); } } close(fd); papplJobSetImpressionsCompleted(job, 1); return (true); } // // 'lprint_zpl_rendjob()' - End a job. // static bool // O - `true` on success, `false` on failure lprint_zpl_rendjob( pappl_job_t *job, // I - Job pappl_pr_options_t *options, // I - Job options pappl_device_t *device) // I - Output device { lprint_zpl_t *zpl = (lprint_zpl_t *)papplJobGetData(job); // ZPL driver data (void)options; free(zpl); papplJobSetData(job, NULL); return (true); } // // 'lprint_zpl_rendpage()' - End a page. // static bool // O - `true` on success, `false` on failure lprint_zpl_rendpage( pappl_job_t *job, // I - Job pappl_pr_options_t *options, // I - Job options pappl_device_t *device, // I - Output device unsigned page) // I - Page number { lprint_zpl_t *zpl = (lprint_zpl_t *)papplJobGetData(job); // ZPL driver data (void)page; papplDevicePrintf(device, "^XA\n^POI\n^PW%u\n^LH0,0\n^LT%d\n", options->header.cupsWidth, options->media.top_offset * options->printer_resolution[1] / 2540); if (options->media.type[0] && strcmp(options->media.type, "labels")) { // Continuous media, so always set tracking to continuous... options->media.tracking = PAPPL_MEDIA_TRACKING_CONTINUOUS; } if (options->media.tracking) { if (options->media.tracking == PAPPL_MEDIA_TRACKING_CONTINUOUS) papplDevicePrintf(device, "^LL%u\n^MNN\n", options->header.cupsHeight); else if (options->media.tracking == PAPPL_MEDIA_TRACKING_WEB) papplDevicePuts(device, "^MNY\n"); else papplDevicePuts(device, "^MNM\n"); } if (strstr(papplPrinterGetDriverName(papplJobGetPrinter(job)), "-tt")) papplDevicePuts(device, "^MTT\n"); // Thermal transfer else papplDevicePuts(device, "^MTD\n"); // Direct thermal papplDevicePrintf(device, "^PQ%d, 0, 0, N\n", options->copies); papplDevicePuts(device, "^FO0,0^XGR:LPRINT.GRF,1,1^FS\n^XZ\n"); papplDevicePuts(device, "^XA\n^IDR:LPRINT.GRF^FS\n^XZ\n"); if (options->finishings & PAPPL_FINISHINGS_TRIM) papplDevicePuts(device, "^CN1\n"); free(zpl->comp_buffer); free(zpl->last_buffer); return (true); } // // 'lprint_zpl_rstartjob()' - Start a job. // static bool // O - `true` on success, `false` on failure lprint_zpl_rstartjob( pappl_job_t *job, // I - Job pappl_pr_options_t *options, // I - Job options pappl_device_t *device) // I - Output device { pappl_pr_driver_data_t data; // Driver data lprint_zpl_t *zpl = (lprint_zpl_t *)calloc(1, sizeof(lprint_zpl_t)); // ZPL driver data papplJobSetData(job, zpl); papplPrinterGetDriverData(papplJobGetPrinter(job), &data); // label-mode-configured switch (data.mode_configured) { case PAPPL_LABEL_MODE_APPLICATOR : papplDevicePuts(device, "^MMA,Y\n"); break; case PAPPL_LABEL_MODE_CUTTER : papplDevicePuts(device, "^MMC,Y\n"); break; case PAPPL_LABEL_MODE_CUTTER_DELAYED : papplDevicePuts(device, "^MMD,Y\n"); break; case PAPPL_LABEL_MODE_KIOSK : papplDevicePuts(device, "^MMK,Y\n"); break; case PAPPL_LABEL_MODE_PEEL_OFF : papplDevicePuts(device, "^MMP,N\n"); break; case PAPPL_LABEL_MODE_PEEL_OFF_PREPEEL : papplDevicePuts(device, "^MMP,Y\n"); break; case PAPPL_LABEL_MODE_REWIND : papplDevicePuts(device, "^MMR,Y\n"); break; case PAPPL_LABEL_MODE_RFID : papplDevicePuts(device, "^MMF,Y\n"); break; case PAPPL_LABEL_MODE_TEAR_OFF : default : papplDevicePuts(device, "^MMT,Y\n"); break; } // label-tear-offset-configured if (data.tear_offset_configured < 0) papplDevicePrintf(device, "~TA%04d\n", data.tear_offset_configured); else if (data.tear_offset_configured > 0) papplDevicePrintf(device, "~TA%03d\n", data.tear_offset_configured); // printer-darkness papplDevicePrintf(device, "~SD%02u\n", 30 * data.darkness_configured / 100); return (true); } // // 'lprint_zpl_rstartpage()' - Start a page. // static bool // O - `true` on success, `false` on failure lprint_zpl_rstartpage( pappl_job_t *job, // I - Job pappl_pr_options_t *options, // I - Job options pappl_device_t *device, // I - Output device unsigned page) // I - Page number { lprint_zpl_t *zpl = (lprint_zpl_t *)papplJobGetData(job); // ZPL driver data int ips; // Inches per second (void)page; // print-darkness papplDevicePrintf(device, "~MD%d\n", 30 * options->print_darkness / 100); // print-speed if ((ips = options->print_speed / 2540) > 0) papplDevicePrintf(device, "^PR%d,%d,%d\n", ips, ips, ips); // Download bitmap... papplDevicePrintf(device, "~DGR:LPRINT.GRF,%u,%u,\n", options->header.cupsHeight * options->header.cupsBytesPerLine, options->header.cupsBytesPerLine); // Allocate memory for writing the bitmap... zpl->comp_buffer = malloc(2 * options->header.cupsBytesPerLine + 1); zpl->last_buffer = malloc(options->header.cupsBytesPerLine); zpl->last_buffer_set = 0; return (true); } // // 'lprint_zpl_rwriteline()' - Write a raster line. // static bool // O - `true` on success, `false` on failure lprint_zpl_rwriteline( pappl_job_t *job, // I - Job pappl_pr_options_t *options, // I - Job options pappl_device_t *device, // I - Output device unsigned y, // I - Line number const unsigned char *line) // I - Line { lprint_zpl_t *zpl = (lprint_zpl_t *)papplJobGetData(job); // ZPL driver data unsigned i; // Looping var const unsigned char *ptr; // Pointer into buffer unsigned char *compptr; // Pointer into compression buffer #if ZPL_COMPRESSION unsigned char repeat_char; // Repeated character unsigned repeat_count; // Number of repeated characters #endif // ZPL_COMPRESSION static const unsigned char *hex = (const unsigned char *)"0123456789ABCDEF"; // Hex digits (void)y; // Determine whether this row is the same as the previous line. // If so, output a ':' and return... if (zpl->last_buffer_set && !memcmp(line, zpl->last_buffer, options->header.cupsBytesPerLine)) { papplDeviceWrite(device, ":", 1); return (true); } // Convert the line to hex digits... for (ptr = line, compptr = zpl->comp_buffer, i = options->header.cupsBytesPerLine; i > 0; i --, ptr ++) { *compptr++ = hex[*ptr >> 4]; *compptr++ = hex[*ptr & 15]; } #if ZPL_COMPRESSION // Send run-length compressed HEX data... *compptr = '\0'; // Run-length compress the graphics... for (compptr = zpl->comp_buffer + 1, repeat_char = zpl->comp_buffer[0], repeat_count = 1; *compptr; compptr ++) { if (*compptr == repeat_char) { repeat_count ++; } else { lprint_zpl_compress(device, repeat_char, repeat_count); repeat_char = *compptr; repeat_count = 1; } } if (repeat_char == '0') { // Handle 0's on the end of the line... if (repeat_count & 1) { repeat_count --; papplDevicePuts(device, "0"); } if (repeat_count > 0) papplDevicePuts(device, ","); } else lprint_zpl_compress(device, repeat_char, repeat_count); #else // Send uncompressed HEX data... papplDeviceWrite(device, zpl->comp_buffer, compptr - zpl->comp_buffer); #endif // ZPL_COMPRESSION // Save this line for the next round... memcpy(zpl->last_buffer, line, options->header.cupsBytesPerLine); zpl->last_buffer_set = 1; return (true); } // // 'lprint_zpl_status()' - Get current printer status. // static bool // O - `true` on success, `false` on failure lprint_zpl_status( pappl_printer_t *printer) // I - Printer { pappl_device_t *device; // Connection to printer char line[1025], // Line from printer *lineptr; // Pointer into line ssize_t bytes; // Bytes read unsigned errors = 0, // Detected errors warnings = 0; // Detected warnings pappl_preason_t reasons; // "printer-state-reasons" values int length = 0; // Label length bool ret = false; // Return value if ((device = papplPrinterOpenDevice(printer)) == NULL) { papplLogPrinter(printer, PAPPL_LOGLEVEL_DEBUG, "Unable to open device for status."); return (false); } // Get the printer status... if (papplDevicePuts(device, "~HQES\n") < 0) { papplLogPrinter(printer, PAPPL_LOGLEVEL_DEBUG, "Unable to send HQES status command."); goto done; } if ((bytes = papplDeviceRead(device, line, sizeof(line) - 1)) < 0) { papplLogPrinter(printer, PAPPL_LOGLEVEL_DEBUG, "Unable to read HQES status response."); goto done; } line[bytes] = '\0'; papplLogPrinter(printer, PAPPL_LOGLEVEL_DEBUG, "HQES returned '%s'.", line); if ((lineptr = strstr(line, "ERRORS:")) != NULL) sscanf(lineptr + 7, "%*d%*x%x", &errors); if ((lineptr = strstr(line, "WARNINGS:")) != NULL) sscanf(lineptr + 9, "%*d%*x%x", &warnings); reasons = PAPPL_PREASON_NONE; if (errors & ZPL_ERROR_MEDIA_OUT) reasons |= PAPPL_PREASON_MEDIA_EMPTY; if (errors & ZPL_ERROR_PAPER_JAM) reasons |= PAPPL_PREASON_MEDIA_JAM; if (errors & ZPL_ERROR_PAUSED) reasons |= PAPPL_PREASON_OFFLINE; if (errors & ZPL_ERROR_RIBBON_OUT) reasons |= PAPPL_PREASON_MARKER_SUPPLY_EMPTY; if (errors & ~(ZPL_ERROR_MEDIA_OUT | ZPL_ERROR_PAPER_JAM | ZPL_ERROR_PAUSED)) { reasons |= PAPPL_PREASON_OTHER; if (errors & ZPL_ERROR_HEAD_OPEN) papplLogPrinter(printer, PAPPL_LOGLEVEL_ERROR, "Print head open."); if (errors & ZPL_ERROR_CUTTER_FAULT) papplLogPrinter(printer, PAPPL_LOGLEVEL_ERROR, "Cutter fault."); if (errors & ZPL_ERROR_CLEAR_PP_FAILED) papplLogPrinter(printer, PAPPL_LOGLEVEL_ERROR, "Clear paper path failed."); if (errors & ZPL_ERROR_PAPER_FEED) papplLogPrinter(printer, PAPPL_LOGLEVEL_ERROR, "Paper feed error."); if (errors & ZPL_ERROR_PRESENTER) papplLogPrinter(printer, PAPPL_LOGLEVEL_ERROR, "Presenter error."); if (errors & ZPL_ERROR_MARK_NOT_FOUND) papplLogPrinter(printer, PAPPL_LOGLEVEL_ERROR, "Mark not found."); if (errors & ZPL_ERROR_MARK_CALIBRATE) papplLogPrinter(printer, PAPPL_LOGLEVEL_ERROR, "Mark calibration error."); if (errors & ZPL_ERROR_RETRACT_TIMEOUT) papplLogPrinter(printer, PAPPL_LOGLEVEL_ERROR, "Retraction timeout."); } if (warnings & ZPL_WARNING_PAPER_ALMOST_OUT) reasons |= PAPPL_PREASON_MEDIA_LOW; if (warnings & ~ZPL_WARNING_PAPER_ALMOST_OUT) { reasons |= PAPPL_PREASON_OTHER; if (errors & ZPL_WARNING_REPLACE_PRINTHEAD) papplLogPrinter(printer, PAPPL_LOGLEVEL_WARN, "Replace print head."); if (errors & ZPL_WARNING_CLEAN_PRINTHEAD) papplLogPrinter(printer, PAPPL_LOGLEVEL_WARN, "Clean print head."); if (errors & ZPL_WARNING_CALIBRATE_MEDIA) papplLogPrinter(printer, PAPPL_LOGLEVEL_WARN, "Calibrate media."); if (errors & ZPL_WARNING_PAPER_BEFORE_HEAD) papplLogPrinter(printer, PAPPL_LOGLEVEL_WARN, "Paper before head."); if (errors & ZPL_WARNING_BLACK_MARK) papplLogPrinter(printer, PAPPL_LOGLEVEL_WARN, "Black mark."); if (errors & ZPL_WARNING_PAPER_AFTER_HEAD) papplLogPrinter(printer, PAPPL_LOGLEVEL_WARN, "Paper after head."); if (errors & ZPL_WARNING_LOOP_READY) papplLogPrinter(printer, PAPPL_LOGLEVEL_WARN, "Loop ready."); if (errors & ZPL_WARNING_PRESENTER) papplLogPrinter(printer, PAPPL_LOGLEVEL_WARN, "Presenter."); if (errors & ZPL_WARNING_RETRACT_READY) papplLogPrinter(printer, PAPPL_LOGLEVEL_WARN, "Retract ready."); if (errors & ZPL_WARNING_IN_RETRACT) papplLogPrinter(printer, PAPPL_LOGLEVEL_WARN, "In retract."); if (errors & ZPL_WARNING_AT_BIN) papplLogPrinter(printer, PAPPL_LOGLEVEL_WARN, "At bin."); } papplPrinterSetReasons(printer, reasons, ~reasons); // Query host status... if (papplDevicePuts(device, "~HS\n") < 0) { papplLogPrinter(printer, PAPPL_LOGLEVEL_DEBUG, "Unable to send HS status command."); goto done; } if ((bytes = papplDeviceRead(device, line, sizeof(line) - 1)) < 0) { papplLogPrinter(printer, PAPPL_LOGLEVEL_DEBUG, "Unable to read HS status response."); goto done; } line[bytes] = '\0'; papplLogPrinter(printer, PAPPL_LOGLEVEL_DEBUG, "HS returned '%s'.", line); sscanf(line + 1, "%*d,%*d,%*d,%d", &length); if (length > 11) { // Auto-detect label length for ready media... pappl_pr_driver_data_t data; // Driver data papplPrinterGetDriverData(printer, &data); // 11 dots for the space between labels length = 2540 * (length - 11) / data.y_resolution[0]; if (abs(length - 15240) <= 100) { // 4x6 label papplCopyString(data.media_default.size_name, "na_index-4x6_4x6in", sizeof(data.media_default.size_name)); data.media_default.size_width = 10160; data.media_default.size_length = 15240; } else if (abs(length - 20320) <= 100) { // 4x8 label papplCopyString(data.media_default.size_name, "oe_4x8-label_4x8in", sizeof(data.media_default.size_name)); data.media_default.size_width = 10160; data.media_default.size_length = 20320; } else { // *xN label data.media_default.size_length = length; snprintf(data.media_default.size_name, sizeof(data.media_default.size_name), "oe_%gx%g-label_%gx%gin", data.media_default.size_width / 2540.0, data.media_default.size_length / 2540.0, data.media_default.size_width / 2540.0, data.media_default.size_length / 2540.0); } if (data.media_default.size_width != data.media_ready[0].size_width || data.media_default.size_length != data.media_ready[0].size_length) { papplLogPrinter(printer, PAPPL_LOGLEVEL_INFO, "Label size changed to '%s'.", data.media_default.size_name); papplPrinterSetDriverDefaults(printer, &data, 0, NULL); papplPrinterSetReadyMedia(printer, 1, &data.media_default); } } ret = true; done: papplPrinterCloseDevice(printer); return (ret); } lprint-1.1.0/lprint-zpl.h000066400000000000000000000021141416113445100153030ustar00rootroot00000000000000// // ZPL driver table for LPrint, a Label Printer Application // // Copyright © 2019-2021 by Michael R Sweet. // // Licensed under Apache License v2.0. See the file "LICENSE" for more // information. // { "zpl_2inch-203dpi-dt", "Zebra ZPL 2-inch/203dpi/Direct-Thermal", "", NULL }, { "zpl_2inch-203dpi-tt", "Zebra ZPL 2-inch/203dpi/Thermal-Transfer", "", NULL }, { "zpl_2inch-300dpi-dt", "Zebra ZPL 2-inch/300dpi/Direct-Thermal", "", NULL }, { "zpl_2inch-300dpi-tt", "Zebra ZPL 2-inch/300dpi/Thermal-Transfer", "", NULL }, { "zpl_2inch-600dpi-tt", "Zebra ZPL 2-inch/600dpi/Thermal-Transfer", "", NULL }, { "zpl_4inch-203dpi-dt", "Zebra ZPL 4-inch/203dpi/Direct-Thermal", "", NULL }, { "zpl_4inch-203dpi-tt", "Zebra ZPL 4-inch/203dpi/Thermal-Transfer", "", NULL }, { "zpl_4inch-300dpi-dt", "Zebra ZPL 4-inch/300dpi/Direct-Thermal", "", NULL }, { "zpl_4inch-300dpi-tt", "Zebra ZPL 4-inch/300dpi/Thermal-Transfer", "", NULL }, { "zpl_4inch-600dpi-tt", "Zebra ZPL 4-inch/600dpi/Thermal-Transfer", "", NULL }, lprint-1.1.0/lprint.c000066400000000000000000000367301416113445100145060ustar00rootroot00000000000000// // Main entry for LPrint, a Label Printer Application // // Copyright © 2019-2021 by Michael R Sweet. // // Licensed under Apache License v2.0. See the file "LICENSE" for more // information. // // // Include necessary headers... // #include "lprint.h" #include "static-resources/lprint-de-strings.h" #include "static-resources/lprint-en-strings.h" #include "static-resources/lprint-es-strings.h" #include "static-resources/lprint-fr-strings.h" #include "static-resources/lprint-it-strings.h" #include "static-resources/lprint-png.h" #include "static-resources/lprint-large-png.h" #include "static-resources/lprint-small-png.h" // // Local functions... // static const char *autoadd_cb(const char *device_info, const char *device_uri, const char *device_id, void *cbdata); static bool driver_cb(pappl_system_t *system, const char *driver_name, const char *device_uri, const char *device_id, pappl_pr_driver_data_t *data, ipp_t **attrs, void *cbdata); static int match_id(int num_did, cups_option_t *did, const char *match_id); static const char *mime_cb(const unsigned char *header, size_t headersize, void *data); static bool printer_cb(const char *device_info, const char *device_uri, const char *device_id, pappl_system_t *system); static pappl_system_t *system_cb(int num_options, cups_option_t *options, void *data); // // Local globals... // static pappl_pr_driver_t lprint_drivers[] = { // Driver list #include "lprint-dymo.h" #include "lprint-epl2.h" #include "lprint-zpl.h" }; static char lprint_statefile[1024]; // State file // // 'main()' - Main entry for LPrint. // int // O - Exit status main(int argc, // I - Number of command-line arguments char *argv[]) // I - Command-line arguments { return (papplMainloop(argc, argv, LPRINT_VERSION, "Copyright © 2019-2021 by Michael R Sweet. All Rights Reserved.", (int)(sizeof(lprint_drivers) / sizeof(lprint_drivers[0])), lprint_drivers, autoadd_cb, driver_cb, /*subcmd_name*/NULL, /*subcmd_cb*/NULL, system_cb, /*usage_cb*/NULL, /*data*/NULL)); } // // 'autoadd_cb()' - Determine the proper driver for a given printer. // static const char * // O - Driver name or `NULL` for none autoadd_cb(const char *device_info, // I - Device information/name (not used) const char *device_uri, // I - Device URI const char *device_id, // I - IEEE-1284 device ID void *cbdata) // I - Callback data (System) { int i, // Looping var score, // Current driver match score best_score = 0, // Best score num_did; // Number of device ID key/value pairs cups_option_t *did; // Device ID key/value pairs const char *make, // Manufacturer name *best_name = NULL; // Best driver char name[1024] = ""; // Driver name to match (void)device_info; // First parse the device ID and get any potential driver name to match... num_did = papplDeviceParseID(device_id, &did); if ((make = cupsGetOption("MANUFACTURER", num_did, did)) == NULL) if ((make = cupsGetOption("MANU", num_did, did)) == NULL) make = cupsGetOption("MFG", num_did, did); if (make && !strncasecmp(make, "Zebra", 5)) lprintZPLQueryDriver((pappl_system_t *)cbdata, device_uri, name, sizeof(name)); // Then loop through the driver list to find the best match... for (i = 0; i < (int)(sizeof(lprint_drivers) / sizeof(lprint_drivers[0])); i ++) { if (!strcmp(name, lprint_drivers[i].name)) { // Matching driver name always the best match... best_name = lprint_drivers[i].name; break; } if (lprint_drivers[i].device_id) { // See if we have a matching device ID... score = match_id(num_did, did, lprint_drivers[i].device_id); if (score > best_score) { best_score = score; best_name = lprint_drivers[i].name; } } } // Clean up and return... cupsFreeOptions(num_did, did); return (best_name); } // // 'driver_cb()' - Main driver callback. // static bool // O - `true` on success, `false` on error driver_cb( pappl_system_t *system, // I - System const char *driver_name,// I - Driver name const char *device_uri, // I - Device URI const char *device_id, // I - 1284 device ID pappl_pr_driver_data_t *data, // I - Pointer to driver data ipp_t **attrs, // O - Pointer to driver attributes void *cbdata) // I - Callback data (not used) { int i; // Looping var // Copy make/model info... for (i = 0; i < (int)(sizeof(lprint_drivers) / sizeof(lprint_drivers[0])); i ++) { if (!strcmp(driver_name, lprint_drivers[i].name)) { papplCopyString(data->make_and_model, lprint_drivers[i].description, sizeof(data->make_and_model)); break; } } // AirPrint version... data->num_features = 1; data->features[0] = "airprint-2.1"; // Pages per minute (interpret as "labels per minute") data->ppm = 60; // "printer-kind" values... data->kind = PAPPL_KIND_LABEL; // Color values... data->color_supported = PAPPL_COLOR_MODE_AUTO | PAPPL_COLOR_MODE_MONOCHROME; data->color_default = PAPPL_COLOR_MODE_MONOCHROME; data->raster_types = PAPPL_PWG_RASTER_TYPE_BLACK_1 | PAPPL_PWG_RASTER_TYPE_BLACK_8 | PAPPL_PWG_RASTER_TYPE_SGRAY_8; data->force_raster_type = PAPPL_PWG_RASTER_TYPE_BLACK_1; // "print-quality-default" value... data->quality_default = IPP_QUALITY_NORMAL; // "sides" values... data->sides_supported = PAPPL_SIDES_ONE_SIDED; data->sides_default = PAPPL_SIDES_ONE_SIDED; // "orientation-requested-default" value... data->orient_default = IPP_ORIENT_NONE; // Media capabilities... data->input_face_up = true; data->output_face_up = true; // Standard icons... data->icons[0].data = lprint_small_png; data->icons[0].datalen = sizeof(lprint_small_png); data->icons[1].data = lprint_png; data->icons[1].datalen = sizeof(lprint_png); data->icons[2].data = lprint_large_png; data->icons[2].datalen = sizeof(lprint_large_png); // Test page callback... data->testpage_cb = lprintTestPageCB; // Use the corresponding sub-driver callback to set things up... if (!strncmp(driver_name, "dymo_", 5)) return (lprintDYMO(system, driver_name, device_uri, device_id, data, attrs, cbdata)); else if (!strncmp(driver_name, "epl2_", 5)) return (lprintEPL2(system, driver_name, device_uri, device_id, data, attrs, cbdata)); else if (!strncmp(driver_name, "zpl_", 4)) return (lprintZPL(system, driver_name, device_uri, device_id, data, attrs, cbdata)); else return (false); } // // 'match_id()' - Compare two IEEE-1284 device IDs and return a score. // // The score is 2 for each exact match and 1 for a partial match in a comma- // delimited field. Any non-match results in a score of 0. // static int // O - Score match_id(int num_did, // I - Number of device ID key/value pairs cups_option_t *did, // I - Device ID key/value pairs const char *match_id) // I - Driver's device ID match string { int i, // Looping var score = 0, // Score num_mid; // Number of match ID key/value pairs cups_option_t *mid, // Match ID key/value pairs *current; // Current key/value pair const char *value, // Device ID value *valptr; // Pointer into value // Parse the matching device ID into key/value pairs... if ((num_mid = papplDeviceParseID(match_id, &mid)) == 0) return (0); // Loop through the match pairs to find matches (or not) for (i = num_mid, current = mid; i > 0; i --, current ++) { if ((value = cupsGetOption(current->name, num_did, did)) == NULL) { // No match score = 0; break; } if (!strcasecmp(current->value, value)) { // Full match! score += 2; } else if ((valptr = strstr(value, current->value)) != NULL) { // Possible substring match, check size_t mlen = strlen(current->value); // Length of match value if ((valptr == value || valptr[-1] == ',') && (!valptr[mlen] || valptr[mlen] == ',')) { // Partial match! score ++; } else { // No match score = 0; break; } } else { // No match score = 0; break; } } cupsFreeOptions(num_mid, mid); return (score); } // // 'mime_cb()' - MIME typing callback... // static const char * // O - MIME media type or `NULL` if none mime_cb(const unsigned char *header, // I - Header data size_t headersize, // I - Size of header data void *cbdata) // I - Callback data (not used) { char testpage[] = LPRINT_TESTPAGE_HEADER; // Test page file header if (headersize >= sizeof(testpage) && !memcmp(header, testpage, sizeof(testpage))) return (LPRINT_TESTPAGE_MIMETYPE); else return (NULL); } // // 'printer_cb()' - Try auto-adding printers. // static bool // O - `false` to continue printer_cb(const char *device_info, // I - Device information const char *device_uri, // I - Device URI const char *device_id, // I - IEEE-1284 device ID pappl_system_t *system) // I - System { const char *driver_name = autoadd_cb(device_info, device_uri, device_id, system); // Driver name, if any if (driver_name) { char name[1024], // Printer name *nameptr; // Pointer in name // Zebra puts "Zebra Technologies ZTC" on the front of their printer names, // which is a bit, um, wordy. Clean up the device info string to use as a // printer name and drop any trailing "(ID)" nonsense if we don't need it. if (!strncasecmp(device_info, "Zebra Technologies ZTC ", 23)) snprintf(name, sizeof(name), "Zebra %s", device_info + 23); else papplCopyString(name, device_info, sizeof(name)); if ((nameptr = strstr(name, " (")) != NULL) *nameptr = '\0'; if (!papplPrinterCreate(system, 0, name, driver_name, device_id, device_uri)) { // Printer already exists with this name, so try adding a number to the // name... int i; // Looping var char newname[1024]; // New name for (i = 2; i < 100; i ++) { snprintf(newname, sizeof(newname), "%s %d", name, i); if (papplPrinterCreate(system, 0, name, driver_name, device_id, device_uri)) break; } } } return (false); } // // 'system_cb()' - Setup the system object. // static pappl_system_t * // O - System object system_cb( int num_options, // I - Number options cups_option_t *options, // I - Options void *data) // I - Callback data (unused) { pappl_system_t *system; // System object const char *val, // Current option value *hostname, // Hostname, if any *logfile, // Log file, if any *system_name; // System name, if any pappl_loglevel_t loglevel; // Log level int port = 0; // Port number, if any pappl_soptions_t soptions = PAPPL_SOPTIONS_MULTI_QUEUE | PAPPL_SOPTIONS_WEB_INTERFACE | PAPPL_SOPTIONS_WEB_LOG | PAPPL_SOPTIONS_WEB_SECURITY; // System options static pappl_version_t versions[1] = // Software versions { { "LPrint", "", LPRINT_VERSION, { LPRINT_MAJOR_VERSION, LPRINT_MINOR_VERSION, LPRINT_PATCH_VERSION, 0 } } }; (void)data; // Enable/disable TLS... if ((val = cupsGetOption("tls", num_options, options)) != NULL && !strcmp(val, "no")) soptions |= PAPPL_SOPTIONS_NO_TLS; // Parse standard log and server options... if ((val = cupsGetOption("log-level", num_options, options)) != NULL) { if (!strcmp(val, "fatal")) loglevel = PAPPL_LOGLEVEL_FATAL; else if (!strcmp(val, "error")) loglevel = PAPPL_LOGLEVEL_ERROR; else if (!strcmp(val, "warn")) loglevel = PAPPL_LOGLEVEL_WARN; else if (!strcmp(val, "info")) loglevel = PAPPL_LOGLEVEL_INFO; else if (!strcmp(val, "debug")) loglevel = PAPPL_LOGLEVEL_DEBUG; else { fprintf(stderr, "lprint: Bad log-level value '%s'.\n", val); return (NULL); } } else loglevel = PAPPL_LOGLEVEL_UNSPEC; logfile = cupsGetOption("log-file", num_options, options); hostname = cupsGetOption("server-hostname", num_options, options); system_name = cupsGetOption("system-name", num_options, options); if ((val = cupsGetOption("server-port", num_options, options)) != NULL) { if (!isdigit(*val & 255)) { fprintf(stderr, "lprint: Bad server-port value '%s'.\n", val); return (NULL); } else port = atoi(val); } // State file... if ((val = getenv("SNAP_DATA")) != NULL) { snprintf(lprint_statefile, sizeof(lprint_statefile), "%s/lprint.conf", val); } else if ((val = getenv("XDG_DATA_HOME")) != NULL) { snprintf(lprint_statefile, sizeof(lprint_statefile), "%s/.lprint.conf", val); } #ifdef _WIN32 else if ((val = getenv("USERPROFILE")) != NULL) { snprintf(lprint_statefile, sizeof(lprint_statefile), "%s/AppData/Local/lprint.conf", val); } else { papplCopyString(lprint_statefile, "/lprint.ini", sizeof(lprint_statefile)); } #else else if ((val = getenv("HOME")) != NULL) { snprintf(lprint_statefile, sizeof(lprint_statefile), "%s/.lprint.conf", val); } else { papplCopyString(lprint_statefile, "/etc/lprint.conf", sizeof(lprint_statefile)); } #endif // _WIN32 // Create the system object... if ((system = papplSystemCreate(soptions, system_name ? system_name : "LPrint", port, "_print,_universal", cupsGetOption("spool-directory", num_options, options), logfile ? logfile : "-", loglevel, cupsGetOption("auth-service", num_options, options), /* tls_only */false)) == NULL) return (NULL); papplSystemAddListeners(system, NULL); papplSystemSetHostName(system, hostname); papplSystemSetMIMECallback(system, mime_cb, NULL); papplSystemAddMIMEFilter(system, LPRINT_TESTPAGE_MIMETYPE, "image/pwg-raster", lprintTestFilterCB, NULL); papplSystemSetPrinterDrivers(system, (int)(sizeof(lprint_drivers) / sizeof(lprint_drivers[0])), lprint_drivers, autoadd_cb, /*create_cb*/NULL, driver_cb, system); papplSystemAddResourceData(system, "/favicon.png", "image/png", lprint_small_png, sizeof(lprint_small_png)); papplSystemAddResourceData(system, "/navicon.png", "image/png", lprint_png, sizeof(lprint_png)); papplSystemAddResourceString(system, "/de.strings", "text/strings", lprint_de_strings); papplSystemAddResourceString(system, "/en.strings", "text/strings", lprint_en_strings); papplSystemAddResourceString(system, "/es.strings", "text/strings", lprint_es_strings); papplSystemAddResourceString(system, "/fr.strings", "text/strings", lprint_fr_strings); papplSystemAddResourceString(system, "/it.strings", "text/strings", lprint_it_strings); papplSystemSetFooterHTML(system, "Copyright © 2019-2021 by Michael R Sweet. All rights reserved."); papplSystemSetSaveCallback(system, (pappl_save_cb_t)papplSystemSaveState, (void *)lprint_statefile); papplSystemSetVersions(system, (int)(sizeof(versions) / sizeof(versions[0])), versions); fprintf(stderr, "lprint: statefile='%s'\n", lprint_statefile); if (!papplSystemLoadState(system, lprint_statefile)) { // No old state, use defaults and auto-add printers... papplSystemSetDNSSDName(system, system_name ? system_name : "LPrint"); papplLog(system, PAPPL_LOGLEVEL_INFO, "Auto-adding printers..."); papplDeviceList(PAPPL_DEVTYPE_USB, (pappl_device_cb_t)printer_cb, system, papplLogDevice, system); } return (system); } lprint-1.1.0/lprint.h000066400000000000000000000053541416113445100145110ustar00rootroot00000000000000// // Header file for LPrint, a Label Printer Application // // Copyright © 2019-2021 by Michael R Sweet. // Copyright © 2010-2019 by Apple Inc. // // Licensed under Apache License v2.0. See the file "LICENSE" for more // information. // #ifndef LPRINT_H # define LPRINT_H // // Include necessary headers... // # include "config.h" # include // // Debug macro... // # ifdef DEBUG # define LPRINT_DEBUG(...) fprintf(stderr, __VA_ARGS__) # else # define LPRINT_DEBUG(...) # endif // DEBUG // // Function annotations... // # if defined(__GNUC__) || defined(__has_extension) # define LPRINT_FORMAT(a,b) __attribute__ ((__format__(__printf__, a,b))) # define LPRINT_NONNULL(...) __attribute__ ((nonnull(__VA_ARGS__))) # define LPRINT_NORETURN __attribute__ ((noreturn)) # else # define LPRINT_FORMAT(a,b) # define LPRINT_NONNULL(...) # define LPRINT_NORETURN # endif // __GNUC__ || __has_extension // // Constants... // # define LPRINT_TESTPAGE_MIMETYPE "application/vnd.lprint-test" # define LPRINT_TESTPAGE_HEADER "T*E*S*T*P*A*G*E*" // // Functions... // extern bool lprintDYMO(pappl_system_t *system, const char *driver_name, const char *device_uri, const char *device_id, pappl_pr_driver_data_t *data, ipp_t **attrs, void *cbdata); extern bool lprintEPL2(pappl_system_t *system, const char *driver_name, const char *device_uri, const char *device_id, pappl_pr_driver_data_t *data, ipp_t **attrs, void *cbdata); extern bool lprintTestFilterCB(pappl_job_t *job, pappl_device_t *device, void *data); extern const char *lprintTestPageCB(pappl_printer_t *printer, char *buffer, size_t bufsize); extern bool lprintZPL(pappl_system_t *system, const char *driver_name, const char *device_uri, const char *device_id, pappl_pr_driver_data_t *data, ipp_t **attrs, void *cbdata); extern void lprintZPLQueryDriver(pappl_system_t *system, const char *device_uri, char *name, size_t namesize); // Future planned drivers that are not yet implemented //extern bool lprintCPCL(pappl_system_t *system, const char *driver_name, const char *device_uri, const char *device_id, pappl_pr_driver_data_t *driver_data, ipp_t **driver_attrs, void *data); //extern bool lprintEPL1(pappl_system_t *system, const char *driver_name, const char *device_uri, const char *device_id, pappl_pr_driver_data_t *driver_data, ipp_t **driver_attrs, void *data); //extern bool lprintFGL(pappl_system_t *system, const char *driver_name, const char *device_uri, const char *device_id, pappl_pr_driver_data_t *driver_data, ipp_t **driver_attrs, void *data); //extern bool lprintPCL(pappl_system_t *system, const char *driver_name, const char *device_uri, const char *device_id, pappl_pr_driver_data_t *driver_data, ipp_t **driver_attrs, void *data); #endif // !LPRINT_H lprint-1.1.0/lprint.service000066400000000000000000000003771416113445100157220ustar00rootroot00000000000000[Unit] Description=LPrint Service After=network.target nss-lookup.target Requires=avahi-daemon.socket [Install] WantedBy=multi-user.target [Service] ExecStart=/usr/local/bin/lprint server -o log-file=- -o log-level=debug Type=simple Restart=on-failure lprint-1.1.0/lprint.spec000066400000000000000000000032061416113445100152060ustar00rootroot00000000000000# # RPM "spec" file for LPrint. # Name: lprint Version: 1.1.0 Release: 0 Summary: LPrint, A Label Printer Application License: ASL 2.0 Source0: https://github.com/michaelrsweet/lprint/releases/download/v%{version}/lprint-%{version}.tar.gz URL: https://www.msweet.org/lprint Packager: Anonymous Vendor: Example Corp # Note: Package names are as defined for Red Hat (and clone) distributions BuildRequires: avahi-devel, cups-devel >= 2.2, gnutls-devel, libpng-devel >= 1.6, libusb-devel >= 1.0, pam-devel, pappl-devel >= 1.1 #BuildRoot: /tmp/%{name}-root %description LPrint implements printing for a variety of common label and receipt printers connected via network or USB. Features include: - A single executable handles spooling, status, and server functionality. - Multiple printer support. - Each printer implements an IPP Everywhere™ print service and is compatible with the driverless printing support in iOS, macOS, and Linux clients. - Each printer can support options such as label modes, tear-off offsets, media tracking, media top offset, print darkness, resolution, roll selection, and speed. - Each printer can print "raw", Apple/PWG Raster, and/or PNG files. For more information, see the file "DOCUMENTATION.md", the man pages in the "man" directory, and/or the LPrint project page at "https://www.msweet.org/lprint". %prep %setup %build CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" LDFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=/usr make %install make install %clean rm -rf $RPM_BUILD_ROOT %files /usr/bin/lprint %dir /usr/share/man/man1 /usr/share/man/man1/* %dir /usr/share/man/man5 /usr/share/man/man5/* lprint-1.1.0/man/000077500000000000000000000000001416113445100135745ustar00rootroot00000000000000lprint-1.1.0/man/lprint-add.1000066400000000000000000000050521416113445100157160ustar00rootroot00000000000000.\" .\" lprint-add man page for LPrint, a Label Printer Utility .\" .\" Copyright © 2019-2021 by Michael R Sweet. .\" .\" Licensed under Apache License v2.0. See the file "LICENSE" for more .\" information. .\" .TH lprint-add 1 "LPrint" "2021-12-21" "Michael R Sweet" .SH NAME lprint-add \- add a printer queue. .SH SYNOPSIS .B lprint .B add [ .B \-u .I SYSTEM-URI ] .B \-d .I PRINTER .B \-m .I DRIVER-NAME .B \-v .I DEVICE-URI [ .B \-o .I OPTION=VALUE ] .SH DESCRIPTION This command creates a label printer queue using the specified name, driver, and driver. .SH OPTIONS The following options are recognized by .B lprint add: .TP 5 \fB\-d \fIPRINTER\fR Specifies the name of the printer queue. .TP 5 \fB\-m \fIDRIVER-NAME\fR Specifies the name of the printer driver. See .BR lprint-drivers (1) for the command to list the available printer drivers. .TP 5 \fB\-o \fIOPTION=VALUE\fR Specifies the default value for the given option name. See .BR lprint-submit (1) for a list of supported options. .TP 5 \fB\-o label-mode-configured\fI=VALUE\fR Specifies the label printing mode: "applicator", "cutter", "cutter-delayed", "kiosk", "peel-off", "peel-off-prepeel", "rewind", "rfid", or "tear-off". .TP 5 \fB\-o label-tear-offset-configured\fI=NNNin\fR .TP 5 \fB\-o label-tear-offset-configured\fI=NNNmm\fR Specifies the label tear-off offset in inches ("NNNin") or millimeters ("NNNmm"). .TP 5 \fB\-o printer-darkness\fI=NNN\fR Specifies the base darkness setting for all print jobs as a percentage. 0 represents the lightest printing while 100 represents the darkest printing. .TP 5 \fB\-o printer-geo-location=geo:\fI=LATLON\fR Specifies the geographic location of the printer as a "geo:" URI. .TP 5 \fB\-o printer-location\fI=LOCATION\fR Specifies the human-readable location, for example "Rack 42". .TP 5 \fB\-o printer-organization\fI=ORGANIZATION\fR Specifies the organization name, for example "Acme, Inc.". .TP 5 \fB\-o printer-organizational-unit\fI=UNIT\fR Specifies the organizational unit, for example "Shipping Department". .TP 5 \fB\-u \fISYSTEM-URI\fR Specifies a remote LPrint server to use. The "SYSTEM-URI" is of the form "ipps://HOSTNAME:PORT/ipp/system". .TP 5 \fB\-v \fIDEVICE-URI\fR Specifies the device for the printer queue. The value can be a socket: URI such as "socket://11.22.33.44" or a usb: URI as listed by the .BR lprint-devices (1) command. .SH SEE ALSO .BR lprint (1), .BR lprint-delete (1), .BR lprint-devices (1), .BR lprint-drivers (1), .BR lprint-modify (1), .BR lprint-options (1), .BR lprint-submit (1) .SH COPYRIGHT Copyright \[co] 2019-2021 by Michael R Sweet. lprint-1.1.0/man/lprint-cancel.1000066400000000000000000000022751416113445100164170ustar00rootroot00000000000000.\" .\" lprint-cancel man page for LPrint, a Label Printer Utility .\" .\" Copyright © 2019-2021 by Michael R Sweet. .\" .\" Licensed under Apache License v2.0. See the file "LICENSE" for more .\" information. .\" .TH lprint-cancel 1 "LPrint" "2021-12-21" "Michael R Sweet" .SH NAME lprint-cancel \- cancel one or more print jobs. .SH SYNOPSIS .B lprint .B cancel [ .B \-d .I PRINTER ] [ .B \-u .I PRINTER-URI ] [ .B \-j .I JOB-ID ] .br .B lprint .B cancel [ .B \-d .I PRINTER ] [ .B \-u .I PRINTER-URI ] .B \-a .SH DESCRIPTION This command cancels one or more print jobs. In the first form, the currently printing job or the specified job is canceled. In the second form, all print jobs are canceled. .SH OPTIONS The following options are recognized by .B lprint cancel: .TP 5 .B \-a Cancel all print jobs. .TP 5 \fB\-d \fIPRINTER\fR Specifies the name of the printer queue. If not specified, the default printer is used. .TP 5 \fB\-j \fIJOB-ID\fR Specifies the print job number. .TP 5 \fB\-u \fIPRINTER-URI\fR Specifies an "ipp:" or "ipps:" URI for a remote printer. .SH SEE ALSO .BR lprint-default (1), .BR lprint-jobs (1), .BR lprint-submit (1). .SH COPYRIGHT Copyright \[co] 2019-2021 by Michael R Sweet. lprint-1.1.0/man/lprint-default.1000066400000000000000000000017631416113445100166170ustar00rootroot00000000000000.\" .\" lprint-default man page for LPrint, a Label Printer Utility .\" .\" Copyright © 2019-2021 by Michael R Sweet. .\" .\" Licensed under Apache License v2.0. See the file "LICENSE" for more .\" information. .\" .TH lprint-default 1 "LPrint" "2021-12-21" "Michael R Sweet" .SH NAME lprint-default \- set or get the default printer queue. .SH SYNOPSIS .B lprint .B default [ .B \-d .I PRINTER ] [ .B \-u .I PRINTER-URI ] .SH DESCRIPTION This command gets or sets the default printer queue. When run without options, the current default printer is written to the standard output. Otherwise, the default printer is changed. .SH OPTIONS The following options are recognized by .B lprint default: .TP 5 \fB\-d \fIPRINTER\fR Specifies the new default printer queue. .TP 5 \fB\-u \fIPRINTER-URI\fR Specifies an "ipp:" or "ipps:" URI for a remote printer. .SH SEE ALSO .BR lprint (1), .BR lprint-add (1), .BR lprint-modify (1), .BR lprint-printers (1). .SH COPYRIGHT Copyright \[co] 2019-2021 by Michael R Sweet. lprint-1.1.0/man/lprint-delete.1000066400000000000000000000015321416113445100164270ustar00rootroot00000000000000.\" .\" lprint-delete man page for LPrint, a Label Printer Utility .\" .\" Copyright © 2019-2021 by Michael R Sweet. .\" .\" Licensed under Apache License v2.0. See the file "LICENSE" for more .\" information. .\" .TH lprint-delete 1 "LPrint" "2021-12-21" "Michael R Sweet" .SH NAME lprint-delete \- delete a label printer queue. .SH SYNOPSIS .B lprint .B delete .B \-d .I PRINTER .br .B lprint .B delete .B \-u .I PRINTER-URI .SH DESCRIPTION This command deletes the specified label printer queue. .SH OPTIONS The following options are recognized by .B lprint delete: .TP 5 \fB\-d \fIPRINTER\fR Specifies the printer queue to delete. .TP 5 \fB\-u \fIPRINTER-URI\fR Specifies an "ipp:" or "ipps:" URI for a remote printer. .SH SEE ALSO .BR lprint (1), .BR lprint-add (1), .BR lprint-modify (1). .SH COPYRIGHT Copyright \[co] 2019-2021 by Michael R Sweet. lprint-1.1.0/man/lprint-devices.1000066400000000000000000000013371416113445100166120ustar00rootroot00000000000000.\" .\" lprint-devices man page for LPrint, a Label Printer Utility .\" .\" Copyright © 2019-2021 by Michael R Sweet. .\" .\" Licensed under Apache License v2.0. See the file "LICENSE" for more .\" information. .\" .TH lprint-devices 1 "LPrint" "2021-12-21" "Michael R Sweet" .SH NAME lprint-devices \- list connected label printer devices. .SH SYNOPSIS .B lprint .B devices .SH DESCRIPTION This command lists connected label printer devices. .SH OPTIONS The \fB-o verbose\fR option produces a verbose list including the detected make, model, and IEEE-1284 device ID strings. .SH SEE ALSO .BR lprint (1), .BR lprint-add (1), .BR lprint-drivers (1), .BR lprint-modify (1). .SH COPYRIGHT Copyright \[co] 2019-2021 by Michael R Sweet. lprint-1.1.0/man/lprint-drivers.1000066400000000000000000000013411416113445100166410ustar00rootroot00000000000000.\" .\" lprint-drivers man page for LPrint, a Label Printer Utility .\" .\" Copyright © 2019-2021 by Michael R Sweet. .\" .\" Licensed under Apache License v2.0. See the file "LICENSE" for more .\" information. .\" .TH lprint-drivers 1 "LPrint" "2021-12-21" "Michael R Sweet" .SH NAME lprint-drivers \- list drivers supported by the print server. .SH SYNOPSIS .B lprint .B drivers .SH DESCRIPTION This command lists the supported printer drivers. .SH OPTIONS The \fB\-o device-id=\fIDEVICE-ID\fR option will limit the list to drivers matching the specified IEEE-1284 device ID. .SH SEE ALSO .BR lprint (1), .BR lprint-add (1), .BR lprint-devices (1), .BR lprint-modify (1). .SH COPYRIGHT Copyright \[co] 2019-2021 by Michael R Sweet. lprint-1.1.0/man/lprint-jobs.1000066400000000000000000000015661416113445100161310ustar00rootroot00000000000000.\" .\" lprint-jobs man page for LPrint, a Label Printer Utility .\" .\" Copyright © 2019-2021 by Michael R Sweet. .\" .\" Licensed under Apache License v2.0. See the file "LICENSE" for more .\" information. .\" .TH lprint-jobs 1 "LPrint" "2021-12-21" "Michael R Sweet" .SH NAME lprint-jobs \- list pending print jobs. .SH SYNOPSIS .B lprint .B jobs [ .B \-d .I PRINTER ] [ .B \-u .I PRINTER-URI ] .SH DESCRIPTION This command lists pending print jobs. If not specified, print jobs submitted to the default printer are listed. .SH OPTIONS The following options are recognized by .B lprint jobs: .TP 5 \fB\-d \fIPRINTER\fR Specifies the printer queue to list. .TP 5 \fB\-u \fIPRINTER-URI\fR Specifies an "ipp:" or "ipps:" URI for a remote printer. .SH SEE ALSO .BR lprint (1), .BR lprint-cancel (1), .BR lprint-default (1). .SH COPYRIGHT Copyright \[co] 2019-2021 by Michael R Sweet. lprint-1.1.0/man/lprint-modify.1000066400000000000000000000051271416113445100164600ustar00rootroot00000000000000.\" .\" lprint-modify man page for LPrint, a Label Printer Utility .\" .\" Copyright © 2019-2021 by Michael R Sweet. .\" .\" Licensed under Apache License v2.0. See the file "LICENSE" for more .\" information. .\" .TH lprint-modify 1 "LPrint" "2021-12-21" "Michael R Sweet" .SH NAME lprint-modify \- modify a printer queue. .SH SYNOPSIS .B lprint .B modify .B \-d .I PRINTER [ .B \-m .I DRIVER-NAME ] [ .B \-v .I DEVICE-URI ] [ .B \-o .I OPTION=VALUE ] .br .B lprint .B modify .B \-u .I PRINTER-URI [ .B \-m .I DRIVER-NAME ] [ .B \-v .I DEVICE-URI ] [ .B \-o .I OPTION=VALUE ] .SH DESCRIPTION This command modifies an existing label printer queue. .SH OPTIONS The following options are recognized by .B lprint modify: .TP 5 \fB\-d \fIPRINTER-NAME\fR Specifies the name of the print queue. .TP 5 \fB\-m \fIDRIVER-NAME\fR Specifies the name of the print driver. See .BR lprint-drivers (1) for the command to list the available print drivers. .TP 5 \fB\-o \fIOPTION=VALUE\fR Specifies the default value for the given option name. See .BR lprint-submit (1) for a list of supported options. .TP 5 \fB\-o label-mode-configured\fI=VALUE\fR Specifies the label printing mode: "applicator", "cutter", "cutter-delayed", "kiosk", "peel-off", "peel-off-prepeel", "rewind", "rfid", or "tear-off". .TP 5 \fB\-o label-tear-offset-configured\fI=NNNin\fR .TP 5 \fB\-o label-tear-offset-configured\fI=NNNmm\fR Specifies the label tear-off offset in inches ("NNNin") or millimeters ("NNNmm"). .TP 5 \fB\-o printer-darkness\fI=NNN\fR Specifies the base darkness setting for all print jobs as a percentage. 0 represents the lightest printing while 100 represents the darkest printing. .TP 5 \fB\-o printer-geo-location=geo:\fI=LATLON\fR Specifies the geographic location of the printer as a "geo:" URI. .TP 5 \fB\-o printer-location\fI=LOCATION\fR Specifies the human-readable location, for example "Rack 42". .TP 5 \fB\-o printer-organization\fI=ORGANIZATION\fR Specifies the organization name, for example "Acme, Inc.". .TP 5 \fB\-o printer-organizational-unit\fI=UNIT\fR Specifies the organizational unit, for example "Shipping Department". .TP 5 \fB\-u \fIPRINTER-URI\fR Specifies an "ipp:" or "ipps:" URI for a remote printer. .TP 5 \fB\-v \fIDEVICE-URI\fR Specifies the device for the print queue. The value can be a socket: URI such as "socket://11.22.33.44" or an snmp: or usb: URI as listed by the .BR lprint-devices (1) command. .SH SEE ALSO .BR lprint (1), .BR lprint-add (1), .BR lprint-delete (1), .BR lprint-devices (1), .BR lprint-drivers (1), .BR lprint-options (1), .BR lprint-submit (1) .SH COPYRIGHT Copyright \[co] 2019-2021 by Michael R Sweet. lprint-1.1.0/man/lprint-options.1000066400000000000000000000016271416113445100166650ustar00rootroot00000000000000.\" .\" lprint-options man page for LPrint, a Label Printer Utility .\" .\" Copyright © 2020-2021 by Michael R Sweet. .\" .\" Licensed under Apache License v2.0. See the file "LICENSE" for more .\" information. .\" .TH lprint-default 1 "LPrint" "2021-12-21" "Michael R Sweet" .SH NAME lprint-options \- get the supported options for a printer queue. .SH SYNOPSIS .B lprint .B options [ .B \-d .I PRINTER ] [ .B \-u .I PRINTER-URI ] .SH DESCRIPTION This command gets the supported options for a printer queue. .SH OPTIONS The following options are recognized by .B lprint default: .TP 5 \fB\-d \fIPRINTER\fR Specifies the new default printer queue. .TP 5 \fB\-u \fIPRINTER-URI\fR Specifies an "ipp:" or "ipps:" URI for a remote printer. .SH SEE ALSO .BR lprint (1), .BR lprint-add (1), .BR lprint-modify (1), .BR lprint-printers (1), .BR lprint-submit (1). .SH COPYRIGHT Copyright \[co] 2019-2021 by Michael R Sweet. lprint-1.1.0/man/lprint-printers.1000066400000000000000000000010611416113445100170300ustar00rootroot00000000000000.\" .\" lprint-printers man page for LPrint, a Label Printer Utility .\" .\" Copyright © 2019-2021 by Michael R Sweet. .\" .\" Licensed under Apache License v2.0. See the file "LICENSE" for more .\" information. .\" .TH lprint-printers 1 "LPrint" "2021-12-21" "Michael R Sweet" .SH NAME lprint-printers \- list the configured printer queues. .SH SYNOPSIS .B lprint .B printers .SH DESCRIPTION This command lists the configured label printer queues. .SH SEE ALSO .BR lprint (1), .BR lprint-add (1). .SH COPYRIGHT Copyright \[co] 2019-2021 by Michael R Sweet. lprint-1.1.0/man/lprint-server.1000066400000000000000000000072171416113445100165010ustar00rootroot00000000000000.\" .\" lprint-server man page for LPrint, a Label Printer Utility .\" .\" Copyright © 2019-2021 by Michael R Sweet. .\" .\" Licensed under Apache License v2.0. See the file "LICENSE" for more .\" information. .\" .TH lprint-server 1 "LPrint" "2021-12-21" "Michael R Sweet" .SH NAME lprint-server \- start a label print server. .SH SYNOPSIS .B lprint .B server [ .B \-o .I OPTION=VALUE ] .SH DESCRIPTION This command starts a label print server. Normally a server is started automatically as needed, however you can run the server manually to listen on a public network address and/or enable different logging options. .SH OPTIONS The following options are recognized by .B lprint server: .TP 5 \fB\-o admin\-group=\fIGROUP\fR Specifies that remote configuration is authenticated against the named group. If not specified or the value "none" is given then any authenticated user may remotely configure lprint. .TP 5 \fB\-o auth\-service=\fISERVICE\fR Specifies the PAM service to use to authenticate for remote configuration requests. If not specified or the value "none" is given then printers can only be added, modified, or deleted locally. .TP 5 \fB\-o listen-hostname=\fIHOSTNAME\fR Listens for IPP connections on the specified hostname/address(es). If not specified, uses the wildcard addresses to allow connections from any address. .TP 5 .B \-o log\-file=\- Specifies that all messages are written to the standard error. .TP 5 .B \-o log\-file=syslog Specifies that all messages are sent to the syslog service. .TP 5 \fB\-o log\-file=\fRFILENAME\fR Specifies that all messages are written to the named file. If the file already exists, messages are appended to it. The default log file is "$TMPDIR/lprintUID.log". .TP 5 .B \-o log\-level=error Specifies that only error messages should be logged. This is the default. .TP 5 .B \-o log\-level=info Specifies that error and informational messages should be logged. .TP 5 .B \-o log\-level=debug Specifies that all messages should be logged. .TP 5 \fB\-o server\-hostname=\fIHOSTNAME\fR Specifies the hostname to advertise for the server. The default is the system hostname. .TP 5 \fB\-o server\-options=\fIOPTIONS\fI Specifies a comma-delimited list of server options. See "SERVER OPTIONS" below. .TP 5 \fB\-o server\-port=\fIPORT\fR Listens for IPP connections on the specified port. If not specified, a random port between 9000 and 9999 is chosen. .TP 5 \fB\-o spool\-directory=\fIDIRECTORY\fR Specifies a directory that holds pending print files. If not specified, a subdirectory in the system temporary directory is used. .SH SERVER OPTIONS By default, .B lprint server uses the "multi-queue" and "web-interface" options. The \fB\-o server\-options=\fIOPTIONS\fR option can be used to override the default options, where "OPTIONS" is a comma-delimited list of any of the following: .TP 5 .B dnssd\-host When resolving conflicts, add the DNS-SD hostname instead of a serial number or UUID. .TP 5 .B no\-multi\-queue Do no support multiple print queues. .TP 5 .B raw\-socket Provide a raw ("JetDirect") socket for each printer on port 91xx. .TP 5 .B usb\-printer Enable a USB printer gadget for the default printer (Linux only for Raspberry Pi and similar embedded SBCs). .TP 5 .B no\-web\-interface Disables the web interface. .TP 5 .B web\-log Enables the log file web page. .TP 5 .B web\-network Enables the network settings web page. .TP 5 .B web\-remote Enables remote queue management. .TP 5 .B web\-security Enables the user/password settings web page. .TP 5 .B web\-tls Enables the TLS settings web page. .TP 5 .B no\-tls Disables TLS support. .SH SEE ALSO .BR lprint (1), .BR lprint-shutdown (1). .SH COPYRIGHT Copyright \[co] 2019-2021 by Michael R Sweet. lprint-1.1.0/man/lprint-shutdown.1000066400000000000000000000010541416113445100170370ustar00rootroot00000000000000.\" .\" lprint-shutdown man page for LPrint, a Label Printer Utility .\" .\" Copyright © 2019-2021 by Michael R Sweet. .\" .\" Licensed under Apache License v2.0. See the file "LICENSE" for more .\" information. .\" .TH lprint-shutdown 1 "LPrint" "2021-12-21" "Michael R Sweet" .SH NAME lprint-shutdown \- stop a running label print server. .SH SYNOPSIS .B lprint .B shutdown .SH DESCRIPTION This command stops a running label print server. .SH SEE ALSO .BR lprint (1), .BR lprint-server (1). .SH COPYRIGHT Copyright \[co] 2019-2021 by Michael R Sweet. lprint-1.1.0/man/lprint-status.1000066400000000000000000000015641416113445100165150ustar00rootroot00000000000000.\" .\" lprint-status man page for LPrint, a Label Printer Utility .\" .\" Copyright © 2019-2021 by Michael R Sweet. .\" .\" Licensed under Apache License v2.0. See the file "LICENSE" for more .\" information. .\" .TH lprint-status 1 "LPrint" "2021-12-21" "Michael R Sweet" .SH NAME lprint-status \- show the current status of a printer .SH SYNOPSIS .B lprint .B status [ .B \-d .I PRINTER ] [ .B \-u .I PRINTER-URI ] .SH DESCRIPTION This command shows the current status of a printer. If no printer is specified, the combined server state is shown. .SH OPTIONS The following options are recognized by .B lprint status: .TP 5 \fB\-d \fIPRINTER\fR Specifies the name of a printer. .TP 5 \fB\-u \fIPRINTER-URI\fR Specifies an "ipp:" or "ipps:" URI for a remote printer. .SH SEE ALSO .BR lprint (1), .BR lprint-default (1). .SH COPYRIGHT Copyright \[co] 2019-2021 by Michael R Sweet. lprint-1.1.0/man/lprint-submit.1000066400000000000000000000075711416113445100165010ustar00rootroot00000000000000.\" .\" lprint-submit man page for LPrint, a Label Printer Utility .\" .\" Copyright © 2019-2021 by Michael R Sweet. .\" .\" Licensed under Apache License v2.0. See the file "LICENSE" for more .\" information. .\" .TH lprint-submit 1 "LPrint" "2021-12-21" "Michael R Sweet" .SH NAME lprint-submit \- submit a file for printing. .SH SYNOPSIS .B lprint [ .B submit ] [ .B \-d .I PRINTER ] [ .B \-u .I PRINTER-URI ] [ .B \-n .I COPIES ] [ .B \-o .I OPTION=VALUE ] [ .B \-t .I TITLE ] [ .I FILE [ ... FILE ] ] .br .B lprint [ .B submit ] [ .B \-d .I PRINTER ] [ .B \-u .I PRINTER-URI ] [ .B \-n .I COPIES ] [ .B \-o .I OPTION=VALUE ] [ .B \-t .I TITLE ] \- .SH DESCRIPTION This command submits one or more files for printing. The first form prints the named files. The second form copies the print file from the standard input. .SH OPTIONS The following options are recognized by .B lprint submit: .TP 5 \fB\-d \fIPRINTER\fR Specifies the name of the printer queue. If not specified, the default printer is used. .TP 5 \fB\-n \fICOPIES\fR Specifies the number of copies. .TP 5 \fB\-o media=\fISIZE-NAME\fR Specifies the label size. .TP 5 \fB\-o media-source=\fIROLL-NAME\fR Specifies the label roll. .TP 5 \fB\-o media-top-offset=\fINNN\fBin\fR .TP 5 \fB\-o media-top-offset=\fINNN\fBmm\fR Specifies the distance to offset printing from the top of the label in inches ("NNNin") or millimeters ("NNNmm"). .TP 5 \fB\-o media-tracking=continuous\fR .TP 5 \fB\-o media-tracking=mark\fR .TP 5 \fB\-o media-tracking=web\fR Specifies how labels are tracked on the carrier backing - "continuous" for a continuous label or receipt paper, "mark" for labels that are separated with a visible mark on the carrier backing, or "web" for labels that are separated with a hole in the carrier backing. .TP 5 \fB\-o media-type=continuous\fR .TP 5 \fB\-o media-type=labels\fR Specifies the type of roll media being used - "continuous" for continuous labels or receipt paper, or "labels" for cut labels on a carrier backing. .TP 5 .B \-o orientation-requested=portrait Print images in portrait orientation. .TP 5 .B \-o orientation-requested=landscape Print images in landscape (90 degrees counter-clockwise) orientation. .TP 5 .B \-o orientation-requested=reverse-portrait Print images in reverse-portrait (upside down) orientation. .TP 5 .B \-o orientation-requested=reverse-landscape Print images in reverse-landscape (90 degrees clockwise) orientation. .TP 5 .B \-o orientation-requested=none Print images in automatic (portrait or landscape) orientation. .TP 5 .B \-o print-color-mode=bi-level Only print black or white when printing images. .TP 5 .B \-o print-color-mode=monochrome Halftone shades of gray when printing images. .B \-o print-content-optimize=auto Optimize printing automatically based on the type and content of the file. .B \-o print-content-optimize=graphic Optimize printing for graphics only. .B \-o print-content-optimize=photo Optimize printing for photos. .B \-o print-content-optimize=text Optimize printing for text only. .B \-o print-content-optimize=text-and-graphic Optimize printing for text and graphics. .TP 5 \fB\-o print-darkness=\fINNN\fR Specifies the print darkness from -100 (lightest) to 100 (darkest). .TP 5 \fB\-o print-quality=draft\fR Print using draft quality. .TP 5 \fB\-o print-quality=normal\fR Print using normal quality. .TP 5 \fB\-o print-quality=high\fR Print using high/best quality. .TP 5 \fB\-o print-speed=\fINNNin\fR .TP 5 \fB\-o print-speed=\fINNNmm\fR Specifies the print speed in inches ("NNNin") or millimeters ("NNNmm") per second. .TP 5 \fB\-o printer-resolution=\fINNN\fBdpi\fR Specifies the print resolution in dots per inch. .TP 5 \fB\-t \fITITLE\fR Specifies the print job name. .TP 5 \fB\-u \fIPRINTER-URI\fR Specifies an "ipp:" or "ipps:" URI for a remote printer. .SH SEE ALSO .BR lprint-cancel (1), .BR lprint-default (1), .BR lprint-options (1). .SH COPYRIGHT Copyright \[co] 2019-2021 by Michael R Sweet. lprint-1.1.0/man/lprint.1000066400000000000000000000033601416113445100151700ustar00rootroot00000000000000.\" .\" Main man page for LPrint, a Label Printer Utility .\" .\" Copyright © 2019-2021 by Michael R Sweet. .\" .\" Licensed under Apache License v2.0. See the file "LICENSE" for more .\" information. .\" .TH lprint 1 "LPrint" "2021-12-21" "Michael R Sweet" .SH NAME lprint \- a label printer application .SH SYNOPSIS .B lprint [ .I SUB-COMMAND ] [ OPTIONS ] [ FILES ] .SH DESCRIPTION .B lprint is a label printer application that can be run standalone or as a dedicated IPP Everywhere network service. .B lprint supports printing PNG images, Apple/PWG raster files, and printer-specific label files to USB and network label printers. If no sub-command is specified, "submit" is assumed. .SH SUB-COMMANDS The following sub-commands are recognized by .B lprint: .TP 5 add Add a printer queue. .TP 5 cancel Cancel one or more print jobs. .TP 5 default Set the default printer queue. .TP 5 delete Delete a printer queue. .TP 5 devices List connected printers. .TP 5 drivers List the supported drivers. .TP 5 jobs List pending print jobs. .TP 5 modify Modify a printer queue. .TP 5 options List supported options. .TP 5 printers List the printer queues. .TP 5 server Start a server. .TP 5 shutdown Shutdown a running server. .TP 5 status Show the status of a printer or all printers. .TP 5 submit Submit a file for printing. .SH SEE ALSO https://www.msweet.org/lprint .br .BR lprint-add (1), .BR lprint-cancel (1), .BR lprint-default (1), .BR lprint-delete (1), .BR lprint-devices (1), .BR lprint-drivers (1), .BR lprint-jobs (1), .BR lprint-modify (1), .BR lprint-options (1), .BR lprint-printers (1), .BR lprint-server (1), .BR lprint-shutdown (1), .BR lprint-status (1), .BR lprint-submit (1), .BR lprint.conf (5) .SH COPYRIGHT Copyright \[co] 2019-2021 by Michael R Sweet. lprint-1.1.0/man/lprint.conf.5000066400000000000000000000020051416113445100161130ustar00rootroot00000000000000.\" .\" lprint.conf man page for LPrint, a Label Printer Utility .\" .\" Copyright © 2019-2021 by Michael R Sweet. .\" .\" Licensed under Apache License v2.0. See the file "LICENSE" for more .\" information. .\" .TH lprint.conf 5 "LPrint" "2021-12-21" "Michael R Sweet" .SH NAME lprint.conf \- printer configuration file. .SH DESCRIPTION The .B ~/.lprint.conf (per-user server) and .B /etc/lprint.conf (root server) files contain a list of the printer queues configured using the .BR lprint-add (1), .BR lprint-default (1), .BR lprint-delete (1), and .BR lprint-modify (1) commands along with a history of print jobs submitted using the .BR lprint-submit (1) command. The files are not intended to be hand-edited and .B cannot be changed while the server is running as those changes will be lost. .SH SEE ALSO .BR lprint (1), .BR lprint-add (1), .BR lprint-default (1), .BR lprint-delete (1), .BR lprint-modify (1), .BR lprint-server (1), and .BR lprint-submit (1). .SH COPYRIGHT Copyright \[co] 2019-2021 by Michael R Sweet. lprint-1.1.0/org.msweet.lprint.plist000066400000000000000000000010311416113445100174720ustar00rootroot00000000000000 Label LPrint, a Label Printer Application RunAtLoad ProgramArguments /usr/local/bin/lprint server -o log-file=/Library/Logs/lprint.log -o log-level=info lprint-1.1.0/snap/000077500000000000000000000000001416113445100137625ustar00rootroot00000000000000lprint-1.1.0/snap/snapcraft.yaml000066400000000000000000000040051416113445100166260ustar00rootroot00000000000000name: lprint base: core20 version: "1.1.0" summary: A Label Printer Application description: | LPrint implements printing for a variety of common label and receipt printers connected via network or USB. Features include: - A single executable handles spooling, status, and server functionality. - Multiple printer support. - Each printer implements an IPP Everywhere™ print service and is compatible with the driverless printing support in iOS, macOS, and Linux clients. - Each printer can support options such as label modes, tear-off offsets, media tracking, media top offset, print darkness, resolution, roll selection, and speed. - Each printer can print "raw", Apple/PWG Raster, and/or PNG files. For more information, see the file "DOCUMENTATION.md", the man pages in the "man" directory, and/or the LPrint project page at "https://www.msweet.org/lprint". grade: stable confinement: strict icon: static-resources/lprint.png apps: lprint: command: usr/local/bin/lprint plugs: [avahi-control, home, network, network-bind, network-manager, raw-usb] parts: pappl: plugin: autotools autotools-configure-parameters: [--enable-libjpeg,--enable-libpng,--enable-libusb,--with-dnssd=avahi] source: https://github.com/michaelrsweet/pappl/releases/download/v1.1.0/pappl-1.1.0.tar.gz build-packages: [libavahi-client-dev, libcups2-dev, libcupsimage2-dev, libgnutls28-dev, libjpeg8-dev, libpam-dev, libpng-dev, libusb-1.0-0-dev, zlib1g-dev] stage-packages: [libavahi-client3, libcups2, libcupsimage2, libjpeg8, libpng16-16, libusb-1.0-0] lprint: plugin: autotools autotools-configure-parameters: [--enable-libpng,--enable-libusb,--with-dnssd=avahi] source: . after: [pappl] build-packages: [libavahi-client-dev, libcups2-dev, libcupsimage2-dev, libgnutls28-dev, libpng-dev, libusb-1.0-0-dev, zlib1g-dev] stage-packages: [libavahi-client3, libcups2, libcupsimage2, libpng16-16, libusb-1.0-0] lprint-1.1.0/static-resources/000077500000000000000000000000001416113445100163205ustar00rootroot00000000000000lprint-1.1.0/static-resources/lprint-de-strings.h000066400000000000000000000070331416113445100220610ustar00rootroot00000000000000static const char *lprint_de_strings = "\"copies\" = \"Number of Copies\";\n" "\"job-state\" = \"Auftragsstatus\";\n" "\"job-state.3\" = \"Anstehend\";\n" "\"job-state.4\" = \"Gehalten\";\n" "\"job-state.5\" = \"Verarbeiten\";\n" "\"job-state.6\" = \"Gestoppt\";\n" "\"job-state.7\" = \"Abgebrochen\";\n" "\"job-state.8\" = \"Abgebrochen\";\n" "\"job-state.9\" = \"Abgeschlossen\";\n" "\"job-state-reasons\" = \"Detaillierter Auftragsstatus\";\n" "\"job-state-reasons.aborted-by-system\" = \"Vom System abgebrochen.\";\n" "\"job-state-reasons.job-canceled-by-user\" = \"Auftrag durch den Benutzer abgebrochen.\";\n" "\"job-state-reasons.job-completed-successfully\" = \"Auftrag erfolgreich ausgeführt.\";\n" "\"job-state-reasons.job-data-insufficient\" = \"Unzureichende Auftragsdaten.\";\n" "\"job-state-reasons.job-incoming\" = \"Eingehender Auftrag.\";\n" "\"job-state-reasons.job-printing\" = \"Auftrag wird gedruckt.\";\n" "\"job-state-reasons.job-stopped\" = \"Druckauftrag gestoppt.\";\n" "\"job-state-reasons.none\" = \"Ohne.\";\n" "\"job-state-reasons.processing-to-stop-point\" = \"Verarbeitung zum Stopppunkt.\";\n" "\"media\" = \"Medien\";\n" "\"media-col\" = \"Medien\";\n" "\"media-size\" = \"Medienmaße\";\n" "\"media-size-name\" = \"Medienname\";\n" "\"media-source\" = \"Medienquelle\";\n" "\"media-source.alternate-roll\" = \"Alternative Rolle\";\n" "\"media-source.main-roll\" = \"Hauptrolle\";\n" "\"media-top-offset\" = \"Oberer Versatz\";\n" "\"media-tracking\" = \"Etikettenverfolgung\";\n" "\"media-tracking.continuous\" = \"Kontinuierlich\";\n" "\"media-tracking.mark\" = \"Markierung\";\n" "\"media-tracking.web\" = \"Loch\";\n" "\"media-type\" = \"Medienart\";\n" "\"media-type.continuous\" = \"Kontinuierlich\";\n" "\"media-type.labels\" = \"Etiketten\";\n" "\"media-type.labels-continuous\" = \"Etiketten Kontinuierlich\";\n" "\"orientation-requested\" = \"Ausrichtung\";\n" "\"orientation-requested.3\" = \"Hochformat\";\n" "\"orientation-requested.4\" = \"Querformat\";\n" "\"orientation-requested.5\" = \"Querformat umgedreht\";\n" "\"orientation-requested.6\" = \"Hochformat umgedreht\";\n" "\"orientation-requested.7\" = \"Automatisch\";\n" "\"print-color-mode\" = \"Druck-Farbmodus\";\n" "\"print-color-mode.bi-level\" = \"Text\";\n" "\"print-color-mode.monochrome\" = \"Einfarbig\";\n" "\"print-content-optimize\" = \"Druckoptimierung\";\n" "\"print-content-optimize.auto\" = \"Automatisch\";\n" "\"print-content-optimize.graphic\" = \"Grafiken\";\n" "\"print-content-optimize.photo\" = \"Foto\";\n" "\"print-content-optimize.text\" = \"Text\";\n" "\"print-content-optimize.text-and-graphic\" = \"Text und Grafiken\";\n" "\"print-darkness\" = \"Dunkelheit drucken\";\n" "\"print-quality\" = \"Druckqualität\";\n" "\"print-quality.3\" = \"Entwurf\";\n" "\"print-quality.4\" = \"Normal\";\n" "\"print-quality.5\" = \"Hoch\";\n" "\"print-speed\" = \"Druckgeschwindigkeit\";\n" "\"printer-resolution\" = \"Druckauflösung\";\n" "\"printer-state\" = \"Druckerstatus\";\n" "\"printer-state.3\" = \"Inaktiv\";\n" "\"printer-state.4\" = \"Verarbeiten\";\n" "\"printer-state.5\" = \"Gestoppt\";\n" "\"printer-state-reaosns\" = \"Detaillierter Druckerstatus\";\n" "\"printer-state-reasons.cover-open\" = \"Abdeckung offen.\";\n" "\"printer-state-reasons.media-empty\" = \"Medien leer.\";\n" "\"printer-state-reasons.media-jam\" = \"Medienstau.\";\n" "\"printer-state-reasons.media-low\" = \"Medien niedrig.\";\n" "\"printer-state-reasons.media-needed\" = \"Medien benötigt.\";\n" "\"printer-state-reasons.none\" = \"Ohne.\";\n" "\"printer-state-reasons.other\" = \"Andere.\";\n" ; lprint-1.1.0/static-resources/lprint-de.strings000066400000000000000000000057121416113445100216360ustar00rootroot00000000000000"copies" = "Number of Copies"; "job-state" = "Auftragsstatus"; "job-state.3" = "Anstehend"; "job-state.4" = "Gehalten"; "job-state.5" = "Verarbeiten"; "job-state.6" = "Gestoppt"; "job-state.7" = "Abgebrochen"; "job-state.8" = "Abgebrochen"; "job-state.9" = "Abgeschlossen"; "job-state-reasons" = "Detaillierter Auftragsstatus"; "job-state-reasons.aborted-by-system" = "Vom System abgebrochen."; "job-state-reasons.job-canceled-by-user" = "Auftrag durch den Benutzer abgebrochen."; "job-state-reasons.job-completed-successfully" = "Auftrag erfolgreich ausgeführt."; "job-state-reasons.job-data-insufficient" = "Unzureichende Auftragsdaten."; "job-state-reasons.job-incoming" = "Eingehender Auftrag."; "job-state-reasons.job-printing" = "Auftrag wird gedruckt."; "job-state-reasons.job-stopped" = "Druckauftrag gestoppt."; "job-state-reasons.none" = "Ohne."; "job-state-reasons.processing-to-stop-point" = "Verarbeitung zum Stopppunkt."; "media" = "Medien"; "media-col" = "Medien"; "media-size" = "Medienmaße"; "media-size-name" = "Medienname"; "media-source" = "Medienquelle"; "media-source.alternate-roll" = "Alternative Rolle"; "media-source.main-roll" = "Hauptrolle"; "media-top-offset" = "Oberer Versatz"; "media-tracking" = "Etikettenverfolgung"; "media-tracking.continuous" = "Kontinuierlich"; "media-tracking.mark" = "Markierung"; "media-tracking.web" = "Loch"; "media-type" = "Medienart"; "media-type.continuous" = "Kontinuierlich"; "media-type.labels" = "Etiketten"; "media-type.labels-continuous" = "Etiketten Kontinuierlich"; "orientation-requested" = "Ausrichtung"; "orientation-requested.3" = "Hochformat"; "orientation-requested.4" = "Querformat"; "orientation-requested.5" = "Querformat umgedreht"; "orientation-requested.6" = "Hochformat umgedreht"; "orientation-requested.7" = "Automatisch"; "print-color-mode" = "Druck-Farbmodus"; "print-color-mode.bi-level" = "Text"; "print-color-mode.monochrome" = "Einfarbig"; "print-content-optimize" = "Druckoptimierung"; "print-content-optimize.auto" = "Automatisch"; "print-content-optimize.graphic" = "Grafiken"; "print-content-optimize.photo" = "Foto"; "print-content-optimize.text" = "Text"; "print-content-optimize.text-and-graphic" = "Text und Grafiken"; "print-darkness" = "Dunkelheit drucken"; "print-quality" = "Druckqualität"; "print-quality.3" = "Entwurf"; "print-quality.4" = "Normal"; "print-quality.5" = "Hoch"; "print-speed" = "Druckgeschwindigkeit"; "printer-resolution" = "Druckauflösung"; "printer-state" = "Druckerstatus"; "printer-state.3" = "Inaktiv"; "printer-state.4" = "Verarbeiten"; "printer-state.5" = "Gestoppt"; "printer-state-reaosns" = "Detaillierter Druckerstatus"; "printer-state-reasons.cover-open" = "Abdeckung offen."; "printer-state-reasons.media-empty" = "Medien leer."; "printer-state-reasons.media-jam" = "Medienstau."; "printer-state-reasons.media-low" = "Medien niedrig."; "printer-state-reasons.media-needed" = "Medien benötigt."; "printer-state-reasons.none" = "Ohne."; "printer-state-reasons.other" = "Andere."; lprint-1.1.0/static-resources/lprint-en-strings.h000066400000000000000000000065131416113445100220750ustar00rootroot00000000000000static const char *lprint_en_strings = "\"copies\" = \"Number of Copies\";\n" "\"job-state\" = \"Job State\";\n" "\"job-state.3\" = \"Pending\";\n" "\"job-state.4\" = \"Held\";\n" "\"job-state.5\" = \"Processing\";\n" "\"job-state.6\" = \"Stopped\";\n" "\"job-state.7\" = \"Canceled\";\n" "\"job-state.8\" = \"Aborted\";\n" "\"job-state.9\" = \"Completed\";\n" "\"job-state-reasons\" = \"Job Status\";\n" "\"job-state-reasons.aborted-by-system\" = \"Aborted.\";\n" "\"job-state-reasons.job-canceled-by-user\" = \"Canceled.\";\n" "\"job-state-reasons.job-completed-successfully\" = \"Printed.\";\n" "\"job-state-reasons.job-data-insufficient\" = \"Waiting for document.\";\n" "\"job-state-reasons.job-incoming\" = \"Receiving document.\";\n" "\"job-state-reasons.job-printing\" = \"Printing.\";\n" "\"job-state-reasons.job-stopped\" = \"Stopped.\";\n" "\"job-state-reasons.none\" = \"Pending.\";\n" "\"job-state-reasons.processing-to-stop-point\" = \"Stopping.\";\n" "\"media\" = \"Media Size\";\n" "\"media-col\" = \"Media\";\n" "\"media-size\" = \"Media Size\";\n" "\"media-size-name\" = \"Media Size\";\n" "\"media-source\" = \"Roll\";\n" "\"media-source.alternate-roll\" = \"Alternate Roll\";\n" "\"media-source.main-roll\" = \"Main Roll\";\n" "\"media-top-offset\" = \"Top Offset\";\n" "\"media-tracking\" = \"Label Tracking\";\n" "\"media-tracking.continuous\" = \"Continuous\";\n" "\"media-tracking.mark\" = \"Mark\";\n" "\"media-tracking.web\" = \"Web/Hole\";\n" "\"media-type\" = \"Media Type\";\n" "\"media-type.continuous\" = \"Continuous Paper\";\n" "\"media-type.labels\" = \"Cut Labels\";\n" "\"media-type.labels-continuous\" = \"Continuous Labels\";\n" "\"orientation-requested\" = \"Orientation\";\n" "\"orientation-requested.3\" = \"Portrait\";\n" "\"orientation-requested.4\" = \"Landscape\";\n" "\"orientation-requested.5\" = \"Reverse Landscape\";\n" "\"orientation-requested.6\" = \"Reverse Portrait\";\n" "\"orientation-requested.7\" = \"Automatic\";\n" "\"print-color-mode\" = \"Color Mode\";\n" "\"print-color-mode.bi-level\" = \"Black and White\";\n" "\"print-color-mode.monochrome\" = \"Grayscale\";\n" "\"print-content-optimize\" = \"Optimize\";\n" "\"print-content-optimize.auto\" = \"Automatically\";\n" "\"print-content-optimize.graphic\" = \"for Graphics\";\n" "\"print-content-optimize.photo\" = \"for Photographs\";\n" "\"print-content-optimize.text\" = \"for Text Only\";\n" "\"print-content-optimize.text-and-graphic\" = \"for Text and Graphics\";\n" "\"print-darkness\" = \"Print Darkness\";\n" "\"print-quality\" = \"Print Quality\";\n" "\"print-quality.3\" = \"Draft\";\n" "\"print-quality.4\" = \"Normal\";\n" "\"print-quality.5\" = \"Best\";\n" "\"print-speed\" = \"Print Speed\";\n" "\"printer-resolution\" = \"Print Resolution\";\n" "\"printer-state\" = \"Printer State\";\n" "\"printer-state.3\" = \"Idle\";\n" "\"printer-state.4\" = \"Processing\";\n" "\"printer-state.5\" = \"Stopped\";\n" "\"printer-state-reaosns\" = \"Printer Status\";\n" "\"printer-state-reasons.cover-open\" = \"Cover open.\";\n" "\"printer-state-reasons.media-empty\" = \"Out of paper.\";\n" "\"printer-state-reasons.media-jam\" = \"Paper jam.\";\n" "\"printer-state-reasons.media-low\" = \"Replace paper soon.\";\n" "\"printer-state-reasons.media-needed\" = \"Load paper.\";\n" "\"printer-state-reasons.none\" = \"Ready.\";\n" "\"printer-state-reasons.other\" = \"See printer.\";\n" ; lprint-1.1.0/static-resources/lprint-en.strings000066400000000000000000000053721416113445100216520ustar00rootroot00000000000000"copies" = "Number of Copies"; "job-state" = "Job State"; "job-state.3" = "Pending"; "job-state.4" = "Held"; "job-state.5" = "Processing"; "job-state.6" = "Stopped"; "job-state.7" = "Canceled"; "job-state.8" = "Aborted"; "job-state.9" = "Completed"; "job-state-reasons" = "Job Status"; "job-state-reasons.aborted-by-system" = "Aborted."; "job-state-reasons.job-canceled-by-user" = "Canceled."; "job-state-reasons.job-completed-successfully" = "Printed."; "job-state-reasons.job-data-insufficient" = "Waiting for document."; "job-state-reasons.job-incoming" = "Receiving document."; "job-state-reasons.job-printing" = "Printing."; "job-state-reasons.job-stopped" = "Stopped."; "job-state-reasons.none" = "Pending."; "job-state-reasons.processing-to-stop-point" = "Stopping."; "media" = "Media Size"; "media-col" = "Media"; "media-size" = "Media Size"; "media-size-name" = "Media Size"; "media-source" = "Roll"; "media-source.alternate-roll" = "Alternate Roll"; "media-source.main-roll" = "Main Roll"; "media-top-offset" = "Top Offset"; "media-tracking" = "Label Tracking"; "media-tracking.continuous" = "Continuous"; "media-tracking.mark" = "Mark"; "media-tracking.web" = "Web/Hole"; "media-type" = "Media Type"; "media-type.continuous" = "Continuous Paper"; "media-type.labels" = "Cut Labels"; "media-type.labels-continuous" = "Continuous Labels"; "orientation-requested" = "Orientation"; "orientation-requested.3" = "Portrait"; "orientation-requested.4" = "Landscape"; "orientation-requested.5" = "Reverse Landscape"; "orientation-requested.6" = "Reverse Portrait"; "orientation-requested.7" = "Automatic"; "print-color-mode" = "Color Mode"; "print-color-mode.bi-level" = "Black and White"; "print-color-mode.monochrome" = "Grayscale"; "print-content-optimize" = "Optimize"; "print-content-optimize.auto" = "Automatically"; "print-content-optimize.graphic" = "for Graphics"; "print-content-optimize.photo" = "for Photographs"; "print-content-optimize.text" = "for Text Only"; "print-content-optimize.text-and-graphic" = "for Text and Graphics"; "print-darkness" = "Print Darkness"; "print-quality" = "Print Quality"; "print-quality.3" = "Draft"; "print-quality.4" = "Normal"; "print-quality.5" = "Best"; "print-speed" = "Print Speed"; "printer-resolution" = "Print Resolution"; "printer-state" = "Printer State"; "printer-state.3" = "Idle"; "printer-state.4" = "Processing"; "printer-state.5" = "Stopped"; "printer-state-reaosns" = "Printer Status"; "printer-state-reasons.cover-open" = "Cover open."; "printer-state-reasons.media-empty" = "Out of paper."; "printer-state-reasons.media-jam" = "Paper jam."; "printer-state-reasons.media-low" = "Replace paper soon."; "printer-state-reasons.media-needed" = "Load paper."; "printer-state-reasons.none" = "Ready."; "printer-state-reasons.other" = "See printer."; lprint-1.1.0/static-resources/lprint-es-strings.h000066400000000000000000000071601416113445100221010ustar00rootroot00000000000000static const char *lprint_es_strings = "\"copies\" = \"Copias\";\n" "\"job-state\" = \"Estado de la impresión\";\n" "\"job-state.3\" = \"Pendiente\";\n" "\"job-state.4\" = \"Retenida\";\n" "\"job-state.5\" = \"Procesando\";\n" "\"job-state.6\" = \"Detenida\";\n" "\"job-state.7\" = \"Cancelado\";\n" "\"job-state.8\" = \"Interrumpido\";\n" "\"job-state.9\" = \"Completada\";\n" "\"job-state-reasons\" = \"Estado de la impresión detallado\";\n" "\"job-state-reasons.aborted-by-system\" = \"Interrumpido por el sistema.\";\n" "\"job-state-reasons.job-canceled-by-user\" = \"Impresión cancelada por el usuario.\";\n" "\"job-state-reasons.job-completed-successfully\" = \"Impresión completada correctamente.\";\n" "\"job-state-reasons.job-data-insufficient\" = \"Datos de impresión insuficientes.\";\n" "\"job-state-reasons.job-incoming\" = \"Impresión entrante.\";\n" "\"job-state-reasons.job-printing\" = \"Imprimiendo tarea.\";\n" "\"job-state-reasons.job-stopped\" = \"Detenida.\";\n" "\"job-state-reasons.none\" = \"Ninguna.\";\n" "\"job-state-reasons.processing-to-stop-point\" = \"Procesando hasta el punto de detención.\";\n" "\"media\" = \"Papel\";\n" "\"media-col\" = \"Papel\";\n" "\"media-size\" = \"Dimensiones del papel\";\n" "\"media-size-name\" = \"Nombre del soporte\";\n" "\"media-source\" = \"Fuente de papel\";\n" "\"media-source.alternate-roll\" = \"Rollo alternativo\";\n" "\"media-source.main-roll\" = \"Rollo principal\";\n" "\"media-top-offset\" = \"Desplazamiento superior\";\n" "\"media-tracking\" = \"Seguimiento de etiquetas\";\n" "\"media-tracking.continuous\" = \"Continuo\";\n" "\"media-tracking.mark\" = \"Mancha\";\n" "\"media-tracking.web\" = \"Agujero\";\n" "\"media-type\" = \"Tipo de papel\";\n" "\"media-type.continuous\" = \"Continuo\";\n" "\"media-type.labels\" = \"Etiquetas\";\n" "\"media-type.labels-continuous\" = \"Etiquetas continuas\";\n" "\"orientation-requested\" = \"Orientación\";\n" "\"orientation-requested.3\" = \"Vertical\";\n" "\"orientation-requested.4\" = \"Horizontal\";\n" "\"orientation-requested.5\" = \"Horizontal inversa\";\n" "\"orientation-requested.6\" = \"Vertical inversa\";\n" "\"orientation-requested.7\" = \"Automática\";\n" "\"print-color-mode\" = \"Modo de color de la impresión\";\n" "\"print-color-mode.bi-level\" = \"Texto\";\n" "\"print-color-mode.monochrome\" = \"Monocromo\";\n" "\"print-content-optimize\" = \"Optimización de la impresión\";\n" "\"print-content-optimize.auto\" = \"Automática\";\n" "\"print-content-optimize.graphic\" = \"Gráficos\";\n" "\"print-content-optimize.photo\" = \"Foto\";\n" "\"print-content-optimize.text\" = \"Texto\";\n" "\"print-content-optimize.text-and-graphic\" = \"Texto y gráficos\";\n" "\"print-darkness\" = \"Imprimir oscuridad\";\n" "\"print-quality\" = \"Calidad de impresión\";\n" "\"print-quality.3\" = \"Borrador\";\n" "\"print-quality.4\" = \"Normal\";\n" "\"print-quality.5\" = \"Alta\";\n" "\"print-speed\" = \"Print Speed\";\n" "\"printer-resolution\" = \"Resolución de la impresión\";\n" "\"printer-state\" = \"Estado de la impresora\";\n" "\"printer-state.3\" = \"Inactiva\";\n" "\"printer-state.4\" = \"Procesando\";\n" "\"printer-state.5\" = \"Detenida\";\n" "\"printer-state-reaosns\" = \"Estado de la impresora detallado\";\n" "\"printer-state-reasons.cover-open\" = \"Tapa abierta.\";\n" "\"printer-state-reasons.media-empty\" = \"Papel vacío.\";\n" "\"printer-state-reasons.media-jam\" = \"Atasco de papel.\";\n" "\"printer-state-reasons.media-low\" = \"Poco papel.\";\n" "\"printer-state-reasons.media-needed\" = \"Se necesita papel.\";\n" "\"printer-state-reasons.none\" = \"Ninguna.\";\n" "\"printer-state-reasons.other\" = \"Otra.\";\n" ; lprint-1.1.0/static-resources/lprint-es.strings000066400000000000000000000060371416113445100216560ustar00rootroot00000000000000"copies" = "Copias"; "job-state" = "Estado de la impresión"; "job-state.3" = "Pendiente"; "job-state.4" = "Retenida"; "job-state.5" = "Procesando"; "job-state.6" = "Detenida"; "job-state.7" = "Cancelado"; "job-state.8" = "Interrumpido"; "job-state.9" = "Completada"; "job-state-reasons" = "Estado de la impresión detallado"; "job-state-reasons.aborted-by-system" = "Interrumpido por el sistema."; "job-state-reasons.job-canceled-by-user" = "Impresión cancelada por el usuario."; "job-state-reasons.job-completed-successfully" = "Impresión completada correctamente."; "job-state-reasons.job-data-insufficient" = "Datos de impresión insuficientes."; "job-state-reasons.job-incoming" = "Impresión entrante."; "job-state-reasons.job-printing" = "Imprimiendo tarea."; "job-state-reasons.job-stopped" = "Detenida."; "job-state-reasons.none" = "Ninguna."; "job-state-reasons.processing-to-stop-point" = "Procesando hasta el punto de detención."; "media" = "Papel"; "media-col" = "Papel"; "media-size" = "Dimensiones del papel"; "media-size-name" = "Nombre del soporte"; "media-source" = "Fuente de papel"; "media-source.alternate-roll" = "Rollo alternativo"; "media-source.main-roll" = "Rollo principal"; "media-top-offset" = "Desplazamiento superior"; "media-tracking" = "Seguimiento de etiquetas"; "media-tracking.continuous" = "Continuo"; "media-tracking.mark" = "Mancha"; "media-tracking.web" = "Agujero"; "media-type" = "Tipo de papel"; "media-type.continuous" = "Continuo"; "media-type.labels" = "Etiquetas"; "media-type.labels-continuous" = "Etiquetas continuas"; "orientation-requested" = "Orientación"; "orientation-requested.3" = "Vertical"; "orientation-requested.4" = "Horizontal"; "orientation-requested.5" = "Horizontal inversa"; "orientation-requested.6" = "Vertical inversa"; "orientation-requested.7" = "Automática"; "print-color-mode" = "Modo de color de la impresión"; "print-color-mode.bi-level" = "Texto"; "print-color-mode.monochrome" = "Monocromo"; "print-content-optimize" = "Optimización de la impresión"; "print-content-optimize.auto" = "Automática"; "print-content-optimize.graphic" = "Gráficos"; "print-content-optimize.photo" = "Foto"; "print-content-optimize.text" = "Texto"; "print-content-optimize.text-and-graphic" = "Texto y gráficos"; "print-darkness" = "Imprimir oscuridad"; "print-quality" = "Calidad de impresión"; "print-quality.3" = "Borrador"; "print-quality.4" = "Normal"; "print-quality.5" = "Alta"; "print-speed" = "Print Speed"; "printer-resolution" = "Resolución de la impresión"; "printer-state" = "Estado de la impresora"; "printer-state.3" = "Inactiva"; "printer-state.4" = "Procesando"; "printer-state.5" = "Detenida"; "printer-state-reaosns" = "Estado de la impresora detallado"; "printer-state-reasons.cover-open" = "Tapa abierta."; "printer-state-reasons.media-empty" = "Papel vacío."; "printer-state-reasons.media-jam" = "Atasco de papel."; "printer-state-reasons.media-low" = "Poco papel."; "printer-state-reasons.media-needed" = "Se necesita papel."; "printer-state-reasons.none" = "Ninguna."; "printer-state-reasons.other" = "Otra."; lprint-1.1.0/static-resources/lprint-fr-strings.h000066400000000000000000000072261416113445100221040ustar00rootroot00000000000000static const char *lprint_fr_strings = "\"copies\" = \"Copies\";\n" "\"job-state\" = \"État de la tâche\";\n" "\"job-state.3\" = \"En attente\";\n" "\"job-state.4\" = \"Retenue\";\n" "\"job-state.5\" = \"Traitement en cours\";\n" "\"job-state.6\" = \"Arrêtée\";\n" "\"job-state.7\" = \"Annulée\";\n" "\"job-state.8\" = \"Interrompue\";\n" "\"job-state.9\" = \"Terminée\";\n" "\"job-state-reasons\" = \"État détaillé de la tâche\";\n" "\"job-state-reasons.aborted-by-system\" = \"Interrompue par le système.\";\n" "\"job-state-reasons.job-canceled-by-user\" = \"Tâche annulée par l’utilisateur.\";\n" "\"job-state-reasons.job-completed-successfully\" = \"Tâche terminée.\";\n" "\"job-state-reasons.job-data-insufficient\" = \"Données sur la tâche insuffisantes.\";\n" "\"job-state-reasons.job-incoming\" = \"Réception de la tâche.\";\n" "\"job-state-reasons.job-printing\" = \"Impression de la tâche.\";\n" "\"job-state-reasons.job-stopped\" = \"Arrêtée.\";\n" "\"job-state-reasons.none\" = \"Aucun.\";\n" "\"job-state-reasons.processing-to-stop-point\" = \"Traitement jusqu’au point d’arrêt.\";\n" "\"media\" = \"Support\";\n" "\"media-col\" = \"Support\";\n" "\"media-size\" = \"Dimensions du support\";\n" "\"media-size-name\" = \"Nom du support\";\n" "\"media-source\" = \"Source du papier\";\n" "\"media-source.alternate-roll\" = \"Bobine secondaire\";\n" "\"media-source.main-roll\" = \"Bobine principale\";\n" "\"media-top-offset\" = \"Décalage supérieur\";\n" "\"media-tracking\" = \"Suivi des étiquettes\";\n" "\"media-tracking.continuous\" = \"Continu\";\n" "\"media-tracking.mark\" = \"Tache\";\n" "\"media-tracking.web\" = \"Bouge\";\n" "\"media-type\" = \"Type de papier\";\n" "\"media-type.continuous\" = \"Continu\";\n" "\"media-type.labels\" = \"Étiquettes\";\n" "\"media-type.labels-continuous\" = \"Étiquettes continues\";\n" "\"orientation-requested\" = \"Orientation\";\n" "\"orientation-requested.3\" = \"Portrait\";\n" "\"orientation-requested.4\" = \"Paysage\";\n" "\"orientation-requested.5\" = \"Paysage inversé\";\n" "\"orientation-requested.6\" = \"Portrait inversé\";\n" "\"orientation-requested.7\" = \"Automatique\";\n" "\"print-color-mode\" = \"Mode colorimétrique de l’impression\";\n" "\"print-color-mode.bi-level\" = \"Texte\";\n" "\"print-color-mode.monochrome\" = \"Monochrome\";\n" "\"print-content-optimize\" = \"Optimisation de l’impression\";\n" "\"print-content-optimize.auto\" = \"Automatique\";\n" "\"print-content-optimize.graphic\" = \"Graphismes\";\n" "\"print-content-optimize.photo\" = \"Photo\";\n" "\"print-content-optimize.text\" = \"Texte\";\n" "\"print-content-optimize.text-and-graphic\" = \"Texte et graphismes\";\n" "\"print-darkness\" = \"Imprimer l'obscurité\";\n" "\"print-quality\" = \"Qualité d’impression\";\n" "\"print-quality.3\" = \"Brouillon\";\n" "\"print-quality.4\" = \"Normale\";\n" "\"print-quality.5\" = \"Élevée\";\n" "\"print-speed\" = \"Vitesse d'impression\";\n" "\"printer-resolution\" = \"Résolution de l’impression\";\n" "\"printer-state\" = \"État de l’imprimante\";\n" "\"printer-state.3\" = \"Idle\";\n" "\"printer-state.4\" = \"Processing\";\n" "\"printer-state.5\" = \"Stopped\";\n" "\"printer-state-reaosns\" = \"État détaillé de l’imprimante\";\n" "\"printer-state-reasons.cover-open\" = \"Couverture ouverte.\";\n" "\"printer-state-reasons.media-empty\" = \"Support épuisé.\";\n" "\"printer-state-reasons.media-jam\" = \"Bourrage du support.\";\n" "\"printer-state-reasons.media-low\" = \"Support presque épuisé.\";\n" "\"printer-state-reasons.media-needed\" = \"Support requis.\";\n" "\"printer-state-reasons.none\" = \"Aucun.\";\n" "\"printer-state-reasons.other\" = \"Autre.\";\n" ; lprint-1.1.0/static-resources/lprint-fr.strings000066400000000000000000000061051416113445100216520ustar00rootroot00000000000000"copies" = "Copies"; "job-state" = "État de la tâche"; "job-state.3" = "En attente"; "job-state.4" = "Retenue"; "job-state.5" = "Traitement en cours"; "job-state.6" = "Arrêtée"; "job-state.7" = "Annulée"; "job-state.8" = "Interrompue"; "job-state.9" = "Terminée"; "job-state-reasons" = "État détaillé de la tâche"; "job-state-reasons.aborted-by-system" = "Interrompue par le système."; "job-state-reasons.job-canceled-by-user" = "Tâche annulée par l’utilisateur."; "job-state-reasons.job-completed-successfully" = "Tâche terminée."; "job-state-reasons.job-data-insufficient" = "Données sur la tâche insuffisantes."; "job-state-reasons.job-incoming" = "Réception de la tâche."; "job-state-reasons.job-printing" = "Impression de la tâche."; "job-state-reasons.job-stopped" = "Arrêtée."; "job-state-reasons.none" = "Aucun."; "job-state-reasons.processing-to-stop-point" = "Traitement jusqu’au point d’arrêt."; "media" = "Support"; "media-col" = "Support"; "media-size" = "Dimensions du support"; "media-size-name" = "Nom du support"; "media-source" = "Source du papier"; "media-source.alternate-roll" = "Bobine secondaire"; "media-source.main-roll" = "Bobine principale"; "media-top-offset" = "Décalage supérieur"; "media-tracking" = "Suivi des étiquettes"; "media-tracking.continuous" = "Continu"; "media-tracking.mark" = "Tache"; "media-tracking.web" = "Bouge"; "media-type" = "Type de papier"; "media-type.continuous" = "Continu"; "media-type.labels" = "Étiquettes"; "media-type.labels-continuous" = "Étiquettes continues"; "orientation-requested" = "Orientation"; "orientation-requested.3" = "Portrait"; "orientation-requested.4" = "Paysage"; "orientation-requested.5" = "Paysage inversé"; "orientation-requested.6" = "Portrait inversé"; "orientation-requested.7" = "Automatique"; "print-color-mode" = "Mode colorimétrique de l’impression"; "print-color-mode.bi-level" = "Texte"; "print-color-mode.monochrome" = "Monochrome"; "print-content-optimize" = "Optimisation de l’impression"; "print-content-optimize.auto" = "Automatique"; "print-content-optimize.graphic" = "Graphismes"; "print-content-optimize.photo" = "Photo"; "print-content-optimize.text" = "Texte"; "print-content-optimize.text-and-graphic" = "Texte et graphismes"; "print-darkness" = "Imprimer l'obscurité"; "print-quality" = "Qualité d’impression"; "print-quality.3" = "Brouillon"; "print-quality.4" = "Normale"; "print-quality.5" = "Élevée"; "print-speed" = "Vitesse d'impression"; "printer-resolution" = "Résolution de l’impression"; "printer-state" = "État de l’imprimante"; "printer-state.3" = "Idle"; "printer-state.4" = "Processing"; "printer-state.5" = "Stopped"; "printer-state-reaosns" = "État détaillé de l’imprimante"; "printer-state-reasons.cover-open" = "Couverture ouverte."; "printer-state-reasons.media-empty" = "Support épuisé."; "printer-state-reasons.media-jam" = "Bourrage du support."; "printer-state-reasons.media-low" = "Support presque épuisé."; "printer-state-reasons.media-needed" = "Support requis."; "printer-state-reasons.none" = "Aucun."; "printer-state-reasons.other" = "Autre."; lprint-1.1.0/static-resources/lprint-it-strings.h000066400000000000000000000071421416113445100221060ustar00rootroot00000000000000static const char *lprint_it_strings = "\"copies\" = \"Copie\";\n" "\"job-state\" = \"Stato stampa\";\n" "\"job-state.3\" = \"In sospeso\";\n" "\"job-state.4\" = \"Bloccato\";\n" "\"job-state.5\" = \"Elaborazione in corso\";\n" "\"job-state.6\" = \"Interrotta\";\n" "\"job-state.7\" = \"Annullato\";\n" "\"job-state.8\" = \"Interrotto\";\n" "\"job-state.9\" = \"Completato\";\n" "\"job-state-reasons\" = \"Stato dettagliato stampa\";\n" "\"job-state-reasons.aborted-by-system\" = \"Interrotto dal sistema.\";\n" "\"job-state-reasons.job-canceled-by-user\" = \"Stampa annullata da utente.\";\n" "\"job-state-reasons.job-completed-successfully\" = \"Stampa completata.\";\n" "\"job-state-reasons.job-data-insufficient\" = \"Dati stampa insufficienti.\";\n" "\"job-state-reasons.job-incoming\" = \"Stampa in entrata.\";\n" "\"job-state-reasons.job-printing\" = \"Stampa.\";\n" "\"job-state-reasons.job-stopped\" = \"Interrotta.\";\n" "\"job-state-reasons.none\" = \"Nessuno.\";\n" "\"job-state-reasons.processing-to-stop-point\" = \"Punto di interruzione elaborazione.\";\n" "\"media\" = \"File multimediale\";\n" "\"media-col\" = \"File multimediale\";\n" "\"media-size\" = \"Dimensioni file multimediale\";\n" "\"media-size-name\" = \"Nome supporto\";\n" "\"media-source\" = \"Sorgente media\";\n" "\"media-source.alternate-roll\" = \"Secondo rotolo\";\n" "\"media-source.main-roll\" = \"Rotolo principale\";\n" "\"media-top-offset\" = \"Offset superiore\";\n" "\"media-tracking\" = \"Monitoraggio label\";\n" "\"media-tracking.continuous\" = \"Continuo\";\n" "\"media-tracking.mark\" = \"Segno\";\n" "\"media-tracking.web\" = \"Buco\";\n" "\"media-type\" = \"Tipo media\";\n" "\"media-type.continuous\" = \"Continuo\";\n" "\"media-type.labels\" = \"Etichette\";\n" "\"media-type.labels-continuous\" = \"Etichette continuo\";\n" "\"orientation-requested\" = \"Orientamento\";\n" "\"orientation-requested.3\" = \"Verticale\";\n" "\"orientation-requested.4\" = \"Orizzontale\";\n" "\"orientation-requested.5\" = \"Inverti orientamento orizzontale\";\n" "\"orientation-requested.6\" = \"Inverti orientamento verticale\";\n" "\"orientation-requested.7\" = \"Automatico\";\n" "\"print-color-mode\" = \"Modalità colore di stampa\";\n" "\"print-color-mode.bi-level\" = \"Testo\";\n" "\"print-color-mode.monochrome\" = \"Monocromo\";\n" "\"print-content-optimize\" = \"Ottimizzazione stampa\";\n" "\"print-content-optimize.auto\" = \"Automatica\";\n" "\"print-content-optimize.graphic\" = \"Grafici\";\n" "\"print-content-optimize.photo\" = \"Foto\";\n" "\"print-content-optimize.text\" = \"Testo\";\n" "\"print-content-optimize.text-and-graphic\" = \"Testo e grafica\";\n" "\"print-darkness\" = \"Stampa l'oscurità\";\n" "\"print-quality\" = \"Qualità stampa\";\n" "\"print-quality.3\" = \"Bozza\";\n" "\"print-quality.4\" = \"Normale\";\n" "\"print-quality.5\" = \"Alta\";\n" "\"print-speed\" = \"Velocità di stampa\";\n" "\"printer-resolution\" = \"Risoluzione stampa\";\n" "\"printer-state\" = \"Stato stampante\";\n" "\"printer-state.3\" = \"Bozza\";\n" "\"printer-state.4\" = \"Normale\";\n" "\"printer-state.5\" = \"Stopped\";\n" "\"printer-state-reaosns\" = \"Stato dettagliato stampante\";\n" "\"printer-state-reasons.cover-open\" = \"Coperchio aperto.\";\n" "\"printer-state-reasons.media-empty\" = \"File multimediale esaurito.\";\n" "\"printer-state-reasons.media-jam\" = \"Inceppamento file multimediale.\";\n" "\"printer-state-reasons.media-low\" = \"Livello file multimediale basso.\";\n" "\"printer-state-reasons.media-needed\" = \"Necessario file multimediale.\";\n" "\"printer-state-reasons.none\" = \"Nessuna.\";\n" "\"printer-state-reasons.other\" = \"Altro.\";\n" ; lprint-1.1.0/static-resources/lprint-it.strings000066400000000000000000000060211416113445100216540ustar00rootroot00000000000000"copies" = "Copie"; "job-state" = "Stato stampa"; "job-state.3" = "In sospeso"; "job-state.4" = "Bloccato"; "job-state.5" = "Elaborazione in corso"; "job-state.6" = "Interrotta"; "job-state.7" = "Annullato"; "job-state.8" = "Interrotto"; "job-state.9" = "Completato"; "job-state-reasons" = "Stato dettagliato stampa"; "job-state-reasons.aborted-by-system" = "Interrotto dal sistema."; "job-state-reasons.job-canceled-by-user" = "Stampa annullata da utente."; "job-state-reasons.job-completed-successfully" = "Stampa completata."; "job-state-reasons.job-data-insufficient" = "Dati stampa insufficienti."; "job-state-reasons.job-incoming" = "Stampa in entrata."; "job-state-reasons.job-printing" = "Stampa."; "job-state-reasons.job-stopped" = "Interrotta."; "job-state-reasons.none" = "Nessuno."; "job-state-reasons.processing-to-stop-point" = "Punto di interruzione elaborazione."; "media" = "File multimediale"; "media-col" = "File multimediale"; "media-size" = "Dimensioni file multimediale"; "media-size-name" = "Nome supporto"; "media-source" = "Sorgente media"; "media-source.alternate-roll" = "Secondo rotolo"; "media-source.main-roll" = "Rotolo principale"; "media-top-offset" = "Offset superiore"; "media-tracking" = "Monitoraggio label"; "media-tracking.continuous" = "Continuo"; "media-tracking.mark" = "Segno"; "media-tracking.web" = "Buco"; "media-type" = "Tipo media"; "media-type.continuous" = "Continuo"; "media-type.labels" = "Etichette"; "media-type.labels-continuous" = "Etichette continuo"; "orientation-requested" = "Orientamento"; "orientation-requested.3" = "Verticale"; "orientation-requested.4" = "Orizzontale"; "orientation-requested.5" = "Inverti orientamento orizzontale"; "orientation-requested.6" = "Inverti orientamento verticale"; "orientation-requested.7" = "Automatico"; "print-color-mode" = "Modalità colore di stampa"; "print-color-mode.bi-level" = "Testo"; "print-color-mode.monochrome" = "Monocromo"; "print-content-optimize" = "Ottimizzazione stampa"; "print-content-optimize.auto" = "Automatica"; "print-content-optimize.graphic" = "Grafici"; "print-content-optimize.photo" = "Foto"; "print-content-optimize.text" = "Testo"; "print-content-optimize.text-and-graphic" = "Testo e grafica"; "print-darkness" = "Stampa l'oscurità"; "print-quality" = "Qualità stampa"; "print-quality.3" = "Bozza"; "print-quality.4" = "Normale"; "print-quality.5" = "Alta"; "print-speed" = "Velocità di stampa"; "printer-resolution" = "Risoluzione stampa"; "printer-state" = "Stato stampante"; "printer-state.3" = "Bozza"; "printer-state.4" = "Normale"; "printer-state.5" = "Stopped"; "printer-state-reaosns" = "Stato dettagliato stampante"; "printer-state-reasons.cover-open" = "Coperchio aperto."; "printer-state-reasons.media-empty" = "File multimediale esaurito."; "printer-state-reasons.media-jam" = "Inceppamento file multimediale."; "printer-state-reasons.media-low" = "Livello file multimediale basso."; "printer-state-reasons.media-needed" = "Necessario file multimediale."; "printer-state-reasons.none" = "Nessuna."; "printer-state-reasons.other" = "Altro."; lprint-1.1.0/static-resources/lprint-large-png.h000066400000000000000000003743631416113445100216730ustar00rootroot00000000000000static const unsigned char lprint_large_png[] = { 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52, 0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x08,0x06,0x00,0x00,0x00,0xf4,0x78,0xd4, 0xfa,0x00,0x00,0x04,0x19,0x69,0x43,0x43,0x50,0x6b,0x43,0x47,0x43,0x6f,0x6c,0x6f, 0x72,0x53,0x70,0x61,0x63,0x65,0x47,0x65,0x6e,0x65,0x72,0x69,0x63,0x52,0x47,0x42, 0x00,0x00,0x38,0x8d,0x8d,0x55,0x5d,0x68,0x1c,0x55,0x14,0x3e,0xbb,0x73,0x67,0x23, 0x24,0xce,0x53,0x6c,0x34,0x85,0x74,0xa8,0x3f,0x0d,0x25,0x0d,0x93,0x56,0x34,0xa1, 0xb4,0xba,0x7f,0xdd,0xdd,0x36,0x6e,0x96,0x49,0x36,0xda,0x22,0xe8,0x64,0xf6,0xee, 0xce,0x98,0xc9,0xce,0x38,0x33,0xbb,0xfd,0xa1,0x4f,0x45,0x50,0x7c,0x31,0xea,0x9b, 0x14,0xc4,0xbf,0xb7,0x80,0x20,0x28,0xf5,0x0f,0xdb,0x3e,0xb4,0x2f,0x95,0x0a,0x25, 0xda,0xd4,0x20,0x28,0x3e,0xb4,0xf8,0x83,0x50,0xe8,0x8b,0xa6,0xeb,0x99,0x3b,0x33, 0x99,0x69,0xba,0xb1,0xde,0x65,0xee,0x7c,0xf3,0x9d,0xef,0x9e,0x7b,0xee,0xb9,0x67, 0xef,0x05,0xe8,0xb9,0xaa,0x58,0x96,0x91,0x14,0x01,0x16,0x9a,0xae,0x2d,0x17,0x32, 0xe2,0x73,0x87,0x8f,0x88,0x3d,0x2b,0x90,0x84,0x87,0xa0,0x17,0x06,0xa1,0x57,0x51, 0x1d,0x2b,0x5d,0xa9,0x4c,0x02,0x36,0x4f,0x0b,0x77,0xb5,0x5b,0xdf,0x43,0xc2,0x7b, 0x5f,0xd9,0xd5,0xdd,0xfe,0x9f,0xad,0xb7,0x46,0x1d,0x15,0x20,0x71,0x1f,0x62,0xb3, 0xe6,0xa8,0x0b,0x88,0x8f,0x01,0xf0,0xa7,0x55,0xcb,0x76,0x01,0x7a,0xfa,0x91,0x1f, 0x3f,0xea,0x5a,0x1e,0xf6,0x62,0xe8,0xb7,0x31,0x40,0xc4,0x2f,0x7a,0xb8,0xe1,0x63, 0xd7,0xc3,0x73,0x3e,0x7e,0x8d,0x69,0x66,0xe4,0x2c,0xe2,0xd3,0x88,0x05,0x55,0x53, 0x6a,0x88,0x97,0x10,0x8f,0xcc,0xc5,0xf8,0x46,0x0c,0xfb,0x31,0xb0,0xd6,0x5f,0xa0, 0x4d,0x6a,0xeb,0xaa,0xe8,0xe5,0xa2,0x62,0x9b,0x75,0xdd,0xa0,0xb1,0x70,0xef,0x61, 0xfe,0x9f,0x6d,0xc1,0x68,0x85,0xf3,0x6d,0xc3,0xa7,0xcf,0x99,0x9f,0x3e,0x84,0xef, 0x61,0x5c,0xfb,0x2b,0x35,0x25,0xe7,0xe1,0x51,0xc4,0x4b,0xaa,0x92,0x9f,0x46,0xfc, 0x08,0xe2,0x6b,0x6d,0x7d,0xb6,0x1c,0xe0,0xdb,0x96,0x9b,0x91,0x11,0x3f,0x06,0x90, 0xdc,0xde,0x9a,0xaf,0xa6,0x11,0xef,0x44,0x5c,0xac,0xdb,0x07,0xaa,0xbe,0x9f,0xa4, 0xad,0xb5,0x8a,0x21,0x7e,0xe7,0x84,0x36,0xf3,0x2c,0xe2,0x2d,0x88,0xcf,0x37,0xe7, 0xca,0x53,0xc1,0xd8,0xab,0xaa,0x93,0xc5,0x9c,0xc1,0x76,0xc4,0xb7,0x35,0x5a,0xf2, 0xf2,0x3b,0x04,0xc0,0x89,0xba,0x5b,0x9a,0xf1,0xc7,0x72,0xfb,0x6d,0x53,0x9e,0xf2, 0xe7,0xe5,0xea,0x35,0x9a,0xcb,0x7b,0x79,0x44,0xfc,0xfa,0xbc,0x79,0x48,0xf6,0x7d, 0x72,0x9f,0x39,0xed,0xe9,0x7c,0xe8,0xf3,0x84,0x96,0x2d,0x07,0xfc,0xa5,0x97,0x94, 0x83,0x15,0xc4,0x83,0x88,0x7f,0xa1,0x46,0x41,0xf6,0xe7,0xe2,0xfe,0xb1,0xdc,0x4a, 0x10,0x03,0x19,0x6a,0x1a,0xe5,0x49,0x7f,0x2e,0x92,0xa3,0x0e,0x5b,0x2f,0xe3,0x5d, 0x6d,0xa6,0xe8,0xcf,0x4b,0x0c,0x17,0x37,0xd4,0x1f,0x4b,0x16,0xeb,0xfa,0x81,0x52, 0xa0,0xff,0x44,0xb3,0x8b,0x72,0x80,0xaf,0x59,0x06,0xab,0x51,0x8c,0x8d,0x4f,0xda, 0x2d,0xb9,0xea,0xeb,0xf9,0x51,0xc5,0xce,0x17,0x7c,0x9f,0x7c,0x85,0x36,0xab,0x81, 0x7f,0xbe,0x0d,0xb3,0x09,0x05,0x28,0x98,0x30,0x87,0xbd,0x0a,0x4d,0x58,0x03,0x11, 0x64,0x28,0x40,0x06,0xdf,0x16,0xd8,0x68,0xa9,0x83,0x0e,0x06,0x32,0x14,0xad,0x14, 0x19,0x8a,0x5f,0xa1,0x66,0x17,0x1b,0xe7,0xc0,0x3c,0xf2,0x3a,0xb4,0x99,0xcd,0xc1, 0xbe,0xc2,0x94,0xfe,0xc8,0xc8,0x5f,0x83,0xf9,0xb8,0xce,0xb4,0x2a,0x64,0x87,0x3e, 0x82,0x16,0xb2,0x1a,0xfc,0x8e,0xac,0x16,0xd3,0x65,0xf1,0xab,0x85,0x5c,0x63,0x13, 0x3f,0x7e,0x2c,0x37,0x02,0x3f,0x26,0x19,0x20,0x12,0xd9,0x83,0xcf,0x5e,0x32,0x49, 0xf6,0x91,0x71,0x32,0x01,0x22,0x79,0x8a,0x3c,0x4d,0xf6,0x93,0x1c,0xb2,0x13,0x64, 0xef,0xfa,0xd8,0x4a,0x6c,0x45,0x5e,0x3c,0x37,0xd6,0xfd,0xbc,0x8c,0x33,0x52,0xa6, 0x9b,0x45,0xdd,0x39,0xb4,0xbb,0xa0,0x60,0xff,0x33,0x2a,0x4c,0x5c,0x53,0xd7,0xac, 0x2c,0x0e,0xb6,0x86,0x23,0xcb,0x29,0xfb,0x05,0x5d,0xbd,0xfc,0xc6,0x5f,0xb1,0x5c, 0xe9,0x2c,0x37,0x51,0xb6,0xe2,0x19,0x9d,0xba,0x57,0xce,0xf9,0x5f,0xf9,0xeb,0xfc, 0x32,0xf6,0x2b,0xfc,0x6a,0xa4,0xe0,0x7f,0xe4,0x57,0xf1,0xb7,0x72,0xc7,0x5a,0xcc, 0xbb,0xb2,0x4c,0xc3,0xec,0x6c,0x58,0x73,0x77,0x55,0x1a,0x6d,0x06,0xe3,0x16,0xf0, 0xd1,0x99,0xc5,0x89,0xc5,0x1d,0xf3,0x71,0xf1,0xe4,0x57,0x0f,0x46,0x7e,0x96,0xc9, 0x99,0xe7,0xaf,0xf4,0x5d,0x3c,0x59,0x6f,0x2e,0x0e,0x46,0xac,0x97,0x05,0xfa,0x6a, 0xf9,0x56,0x19,0x4e,0x8d,0x44,0xac,0xf4,0x83,0xf4,0x87,0xb4,0x2c,0xbd,0x27,0x7d, 0x28,0xfd,0xc6,0xbd,0xcd,0x7d,0xca,0x7d,0xcd,0x7d,0xce,0x7d,0xc1,0x5d,0x02,0x91, 0x3b,0xcb,0x9d,0xe3,0xbe,0xe1,0x2e,0x70,0x1f,0x73,0x5f,0xc6,0xf6,0x6a,0xf3,0x1a, 0x5a,0xdf,0x7b,0x16,0x79,0x18,0xb7,0x67,0xe9,0x96,0x6b,0xac,0x4a,0x21,0x23,0x6c, 0x15,0x1e,0x16,0x72,0xc2,0x36,0xe1,0x51,0x61,0x32,0xf2,0x27,0x0c,0x08,0x63,0x42, 0x51,0xd8,0x81,0x96,0xad,0xeb,0xfb,0x16,0x9f,0x2f,0x9e,0x3d,0x1d,0x0e,0x63,0x1f, 0xe6,0xa7,0xfb,0x5c,0xbe,0x2e,0x56,0x01,0x89,0xfb,0xb1,0x02,0xf4,0x4d,0xfe,0x55, 0x55,0x54,0xe9,0x70,0x94,0x29,0x1d,0x56,0x6f,0x4d,0x38,0xbe,0x41,0x13,0x8c,0x24, 0x43,0x64,0x8c,0x94,0x36,0x54,0xf7,0xb8,0x57,0xf3,0xa1,0x22,0x95,0x4f,0xe5,0x52, 0x69,0x10,0x53,0x3b,0x53,0x13,0xa9,0xb1,0xd4,0x41,0x0f,0x87,0xb3,0xa6,0x76,0xa0, 0x6d,0x02,0xfb,0xfc,0x1d,0xd5,0xa9,0x6e,0xb2,0x52,0xea,0xd2,0x63,0xde,0x7d,0x02, 0x59,0xd3,0x3a,0x6e,0xeb,0x0d,0xcd,0x15,0x77,0x4b,0xd2,0x93,0x62,0x1a,0xaf,0x36, 0x2a,0x96,0x9a,0xea,0xe8,0x88,0xa8,0x18,0x86,0xc8,0x4c,0x8e,0x68,0x53,0x87,0xda, 0x6d,0x5a,0x1b,0x05,0xef,0xde,0xf4,0x8f,0xf4,0x9b,0x32,0xbb,0x0f,0x13,0x5b,0x2e, 0x47,0x9c,0xfb,0x0c,0xc0,0xbe,0x3f,0xf1,0xec,0xfb,0x2e,0xe2,0x8e,0xb4,0x00,0x96, 0x1c,0x80,0x81,0xc7,0x23,0x6e,0x18,0xcf,0xca,0x07,0xde,0x05,0x38,0xf3,0x84,0xda, 0xb2,0xdb,0xc1,0x1d,0x91,0x48,0x7c,0x0b,0xe0,0xd4,0xf7,0xec,0xf6,0xbf,0xfa,0x32, 0x78,0x7e,0xfd,0xd4,0xe9,0xdc,0xc4,0x73,0xac,0xe7,0x2d,0x80,0xb5,0x37,0x3b,0x9d, 0xbf,0xdf,0xef,0x74,0xd6,0x3e,0x40,0xff,0xab,0x00,0x67,0x8d,0x7f,0x01,0xa0,0x9f, 0x7c,0x55,0x03,0x5c,0x0b,0xef,0x00,0x00,0x00,0x38,0x65,0x58,0x49,0x66,0x4d,0x4d, 0x00,0x2a,0x00,0x00,0x00,0x08,0x00,0x01,0x87,0x69,0x00,0x04,0x00,0x00,0x00,0x01, 0x00,0x00,0x00,0x1a,0x00,0x00,0x00,0x00,0x00,0x02,0xa0,0x02,0x00,0x04,0x00,0x00, 0x00,0x01,0x00,0x00,0x02,0x00,0xa0,0x03,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00, 0x02,0x00,0x00,0x00,0x00,0x00,0x28,0x30,0x97,0xbf,0x00,0x00,0x03,0x63,0x69,0x54, 0x58,0x74,0x58,0x4d,0x4c,0x3a,0x63,0x6f,0x6d,0x2e,0x61,0x64,0x6f,0x62,0x65,0x2e, 0x78,0x6d,0x70,0x00,0x00,0x00,0x00,0x00,0x3c,0x78,0x3a,0x78,0x6d,0x70,0x6d,0x65, 0x74,0x61,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x78,0x3d,0x22,0x61,0x64,0x6f,0x62, 0x65,0x3a,0x6e,0x73,0x3a,0x6d,0x65,0x74,0x61,0x2f,0x22,0x20,0x78,0x3a,0x78,0x6d, 0x70,0x74,0x6b,0x3d,0x22,0x58,0x4d,0x50,0x20,0x43,0x6f,0x72,0x65,0x20,0x35,0x2e, 0x34,0x2e,0x30,0x22,0x3e,0x0a,0x20,0x20,0x20,0x3c,0x72,0x64,0x66,0x3a,0x52,0x44, 0x46,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x72,0x64,0x66,0x3d,0x22,0x68,0x74,0x74, 0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x31, 0x39,0x39,0x39,0x2f,0x30,0x32,0x2f,0x32,0x32,0x2d,0x72,0x64,0x66,0x2d,0x73,0x79, 0x6e,0x74,0x61,0x78,0x2d,0x6e,0x73,0x23,0x22,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20, 0x20,0x3c,0x72,0x64,0x66,0x3a,0x44,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f, 0x6e,0x20,0x72,0x64,0x66,0x3a,0x61,0x62,0x6f,0x75,0x74,0x3d,0x22,0x22,0x0a,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x78,0x6d,0x6c,0x6e,0x73, 0x3a,0x64,0x63,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x70,0x75,0x72,0x6c, 0x2e,0x6f,0x72,0x67,0x2f,0x64,0x63,0x2f,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73, 0x2f,0x31,0x2e,0x31,0x2f,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x49,0x70,0x74,0x63,0x34,0x78,0x6d, 0x70,0x45,0x78,0x74,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x69,0x70,0x74, 0x63,0x2e,0x6f,0x72,0x67,0x2f,0x73,0x74,0x64,0x2f,0x49,0x70,0x74,0x63,0x34,0x78, 0x6d,0x70,0x45,0x78,0x74,0x2f,0x32,0x30,0x30,0x38,0x2d,0x30,0x32,0x2d,0x32,0x39, 0x2f,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x78, 0x6d,0x6c,0x6e,0x73,0x3a,0x70,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x3d,0x22, 0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x6e,0x73,0x2e,0x61,0x64,0x6f,0x62,0x65,0x2e, 0x63,0x6f,0x6d,0x2f,0x70,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x2f,0x31,0x2e, 0x30,0x2f,0x22,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x64, 0x63,0x3a,0x63,0x72,0x65,0x61,0x74,0x6f,0x72,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x72,0x64,0x66,0x3a,0x53,0x65,0x71,0x3e, 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x3c,0x72,0x64,0x66,0x3a,0x6c,0x69,0x3e,0x4d,0x69,0x63,0x68,0x61,0x65,0x6c,0x20, 0x53,0x77,0x65,0x65,0x74,0x3c,0x2f,0x72,0x64,0x66,0x3a,0x6c,0x69,0x3e,0x0a,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x72,0x64,0x66, 0x3a,0x53,0x65,0x71,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c, 0x2f,0x64,0x63,0x3a,0x63,0x72,0x65,0x61,0x74,0x6f,0x72,0x3e,0x0a,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x64,0x63,0x3a,0x72,0x69,0x67,0x68,0x74,0x73, 0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x72, 0x64,0x66,0x3a,0x41,0x6c,0x74,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x72,0x64,0x66,0x3a,0x6c,0x69,0x20,0x78, 0x6d,0x6c,0x3a,0x6c,0x61,0x6e,0x67,0x3d,0x22,0x78,0x2d,0x64,0x65,0x66,0x61,0x75, 0x6c,0x74,0x22,0x3e,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x32,0x30, 0x31,0x39,0x20,0x4d,0x69,0x63,0x68,0x61,0x65,0x6c,0x20,0x53,0x77,0x65,0x65,0x74, 0x3c,0x2f,0x72,0x64,0x66,0x3a,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x72,0x64,0x66,0x3a,0x41,0x6c,0x74,0x3e, 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x64,0x63,0x3a,0x72, 0x69,0x67,0x68,0x74,0x73,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x3c,0x49,0x70,0x74,0x63,0x34,0x78,0x6d,0x70,0x45,0x78,0x74,0x3a,0x48,0x65,0x61, 0x64,0x6c,0x69,0x6e,0x65,0x3e,0x4e,0x65,0x77,0x20,0x49,0x63,0x6f,0x6e,0x3c,0x2f, 0x49,0x70,0x74,0x63,0x34,0x78,0x6d,0x70,0x45,0x78,0x74,0x3a,0x48,0x65,0x61,0x64, 0x6c,0x69,0x6e,0x65,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c, 0x70,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x3a,0x48,0x65,0x61,0x64,0x6c,0x69, 0x6e,0x65,0x3e,0x4e,0x65,0x77,0x20,0x49,0x63,0x6f,0x6e,0x3c,0x2f,0x70,0x68,0x6f, 0x74,0x6f,0x73,0x68,0x6f,0x70,0x3a,0x48,0x65,0x61,0x64,0x6c,0x69,0x6e,0x65,0x3e, 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x72,0x64,0x66,0x3a,0x44,0x65,0x73, 0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x3e,0x0a,0x20,0x20,0x20,0x3c,0x2f,0x72, 0x64,0x66,0x3a,0x52,0x44,0x46,0x3e,0x0a,0x3c,0x2f,0x78,0x3a,0x78,0x6d,0x70,0x6d, 0x65,0x74,0x61,0x3e,0x0a,0xdd,0xf2,0x38,0x1b,0x00,0x00,0x59,0x3b,0x49,0x44,0x41, 0x54,0x78,0xda,0xed,0x9d,0x07,0xd4,0x14,0x45,0xd6,0x86,0x87,0x9c,0x25,0x47,0x45, 0x40,0x51,0x82,0xa8,0x28,0x28,0x62,0x40,0x10,0x03,0x60,0x16,0x54,0x5c,0x77,0x15, 0x71,0x0d,0xbf,0x39,0x8b,0x98,0x11,0x45,0x0c,0x80,0xae,0xa2,0x08,0xab,0x62,0xc0, 0x04,0x2a,0x06,0x44,0x51,0x30,0x07,0x14,0x01,0x49,0x06,0x14,0x73,0xc4,0x1c,0x40, 0x09,0xf5,0xdf,0x3b,0x74,0x2f,0x45,0x3b,0x79,0x7a,0x66,0xba,0x7b,0x9e,0x3a,0xe7, 0x39,0x67,0x5d,0xd2,0xd7,0xdd,0xd5,0xf5,0xbe,0x7d,0xeb,0xde,0x5b,0xb1,0x18,0x83, 0xc1,0x60,0x30,0x18,0x0c,0x06,0x83,0xc1,0x60,0x30,0x18,0x0c,0x06,0x83,0xc1,0x60, 0x30,0x18,0x0c,0x06,0x83,0xc1,0x60,0x30,0x18,0x0c,0x06,0x83,0xc1,0x60,0x30,0x18, 0x0c,0x06,0x83,0xc1,0x60,0x30,0x18,0x0c,0x06,0x83,0xc1,0x60,0x30,0x18,0x0c,0x46, 0xe4,0x46,0x05,0x00,0x00,0x08,0x34,0x0c,0x86,0x6f,0xe2,0x5e,0x31,0x0b,0x2a,0x01, 0x00,0x40,0x41,0xc9,0x66,0x4d,0xc6,0x24,0x30,0xd2,0x8a,0x7d,0x3a,0x21,0xaf,0x9c, 0x82,0x2a,0x00,0x00,0x50,0x12,0x52,0xad,0xcd,0xe9,0x8c,0x03,0xa6,0x00,0xc1,0x4f, 0x28,0xf2,0xf6,0x04,0xab,0x6a,0x51,0x2d,0x0d,0xd5,0x01,0x00,0xa0,0xa0,0xa4,0x5b, 0x87,0xed,0x35,0x3b,0x99,0x59,0x48,0x64,0x0a,0x30,0x04,0x11,0x15,0xfd,0x54,0x82, 0x5f,0x25,0x81,0xc0,0xbb,0x13,0xad,0x86,0x45,0x4d,0x0f,0xb5,0x00,0x00,0x20,0x10, 0x78,0xd7,0x67,0x7b,0xed,0xf6,0x1a,0x07,0xdb,0x1c,0x64,0x6a,0x08,0x18,0x21,0x15, 0xfd,0x74,0x82,0x6f,0x8b,0xbd,0x2d,0xec,0xb5,0x1d,0xea,0x38,0x6c,0x64,0x51,0x37, 0x09,0xf5,0x00,0x00,0xa0,0xa0,0x24,0x5b,0x7f,0xed,0x35,0xda,0x5d,0xb7,0xdd,0x75, 0xdc,0x36,0x0a,0x5e,0x53,0x90,0x89,0x21,0xc0,0x0c,0x44,0x40,0xf4,0xab,0x79,0xc4, 0xbe,0xa6,0x25,0xf6,0x75,0x2c,0x71,0x77,0x27,0x5a,0x7d,0xa1,0x81,0x43,0x43,0x8b, 0x46,0x1e,0x1a,0x03,0x00,0x40,0x51,0xf1,0xae,0xc3,0xf6,0x1a,0xed,0xae,0xdb,0xf5, 0x3d,0xc6,0x61,0x23,0xcb,0x18,0xd4,0xf2,0x44,0x0c,0x6c,0x43,0x80,0x19,0x08,0xa9, 0xf0,0xa7,0x13,0x7d,0x5b,0xf0,0xeb,0x7a,0x84,0xbe,0xa1,0x25,0xe8,0x4d,0x1c,0x9a, 0x0a,0xcd,0x1c,0x9a,0x3b,0xb4,0xb0,0xd8,0x18,0x00,0x00,0x4a,0x82,0xbd,0x16,0xbb, 0xeb,0xb3,0xbb,0x5e,0x37,0xb5,0xd6,0xf1,0xc6,0x96,0x49,0xb0,0x8d,0x41,0xdd,0x04, 0x86,0x20,0x9d,0x19,0xc0,0x08,0x04,0x54,0xf8,0x53,0x89,0xbe,0xfd,0x85,0xef,0x0a, 0xbe,0x2d,0xf6,0x4d,0x2d,0x71,0xd7,0x89,0xb5,0x89,0xd0,0x52,0xd8,0xd4,0xa1,0x95, 0xd0,0xda,0xa1,0x8d,0xc5,0x66,0x00,0x00,0x50,0x12,0xec,0xb5,0xd8,0x5d,0x9f,0x5b, 0x59,0xeb,0x76,0x4b,0x67,0x2d,0xdf,0xd8,0x32,0x09,0x4d,0x3d,0xa6,0xc0,0x35,0x04, 0x76,0x84,0x20,0x9d,0x19,0xc0,0x08,0x04,0x58,0xf8,0xed,0x2f,0xfd,0x8d,0xac,0xaf, 0x7c,0xf7,0x0b,0xbf,0x89,0xf5,0x45,0xef,0x8a,0x7d,0x17,0xe1,0x70,0xe1,0x6c,0x61, 0x8c,0x30,0x45,0x78,0x5e,0x58,0x20,0x7c,0x21,0xfc,0x28,0xfc,0x21,0xac,0x16,0x0c, 0x00,0x00,0x94,0x84,0xd5,0xce,0x5a,0xfc,0xa3,0xb3,0x36,0xeb,0x1a,0xfd,0x82,0xb3, 0x66,0xdf,0x20,0x9c,0x2b,0xfc,0x43,0xd8,0x49,0x68,0x2b,0x6c,0x6e,0x99,0x05,0xd7, 0x1c,0xb8,0xa6,0xc0,0x8d,0x18,0x34,0xb1,0x22,0x04,0x6e,0x74,0x60,0x23,0x4f,0x64, 0x00,0x23,0x10,0x60,0xe1,0x77,0xbf,0xf6,0xed,0xf0,0xbe,0x2b,0xfa,0x8d,0x2d,0xd1, 0x57,0x17,0xd8,0x51,0x38,0x52,0x18,0xed,0x4c,0x9c,0xef,0x79,0xa9,0x00,0x00,0x22, 0x87,0xae,0xed,0x2f,0x3a,0xc6,0x60,0x90,0xf3,0xa1,0xb7,0x85,0x65,0x0a,0x5a,0x5b, 0x86,0xa0,0x85,0x65,0x06,0x1a,0x5b,0x66,0xc0,0xde,0x26,0x70,0xa3,0x02,0x18,0x81, 0x22,0x8a,0x7f,0xa6,0xc2,0xef,0x7e,0xed,0x37,0xf0,0x7c,0xe9,0xeb,0xc3,0xdd,0x57, 0xb8,0x56,0x78,0x5b,0x58,0xcb,0x8b,0x01,0x00,0x50,0x76,0xe8,0xda,0x3f,0x57,0x18, 0x25,0xf4,0x17,0x3a,0x58,0x86,0xc0,0x8d,0x10,0xb4,0xf4,0x98,0x01,0x77,0x9b,0xc0, 0x8e,0x0a,0x64,0x63,0x04,0x18,0x79,0x7e,0xf5,0x67,0x23,0xfc,0x8d,0xad,0xfd,0xfc, 0x7e,0xc2,0xad,0xc2,0x97,0x4c,0x7c,0x00,0x00,0xf0,0xa0,0xda,0x70,0x9b,0x63,0x06, 0xda,0x0b,0x5b,0x5a,0x66,0xc0,0x8d,0x0c,0xb8,0x79,0x03,0x8d,0x73,0x30,0x02,0x44, 0x03,0x7c,0xfc,0xea,0xb7,0xf7,0xf8,0x6d,0xe1,0x77,0xc3,0xfc,0xea,0xd8,0xb6,0x12, 0x2e,0x16,0x3e,0x60,0x72,0x03,0x00,0x40,0x86,0xa8,0x66,0x0c,0x13,0xba,0x3b,0x66, 0xc0,0x8d,0x0c,0xb4,0xf6,0x44,0x05,0xdc,0xed,0x01,0xaf,0x11,0x70,0x73,0x04,0x88, 0x06,0x14,0xe0,0xab,0xdf,0x4e,0xee,0xf3,0x7e,0xf1,0xeb,0x43,0xe9,0x21,0xdc,0x2d, 0xfc,0xc9,0x44,0x06,0x00,0x80,0x1c,0x51,0x0d,0x99,0xe4,0x6c,0x1b,0x6b,0xbe,0x58, 0x3b,0x27,0x99,0xd0,0x8d,0x0a,0x6c,0x6c,0x19,0x01,0x3b,0x22,0x60,0x27,0x0b,0x12, 0x0d,0xf0,0xe1,0xab,0xdf,0x0e,0xf7,0xd7,0xb2,0x92,0xfb,0xec,0x50,0xff,0x5e,0xc2, 0x53,0x4c,0x5a,0x00,0x00,0xf0,0x99,0xa7,0x85,0x43,0x9c,0xc8,0x72,0x7b,0x8f,0x11, 0x68,0xe1,0xd9,0x1a,0x70,0x93,0x05,0x6b,0x79,0xb6,0x05,0x88,0x06,0x64,0x28,0xfe, 0xc9,0xbe,0xfa,0xdd,0x70,0x7f,0x7d,0x27,0x21,0xa3,0xa9,0xf3,0xc5,0xff,0x04,0x13, 0x14,0x00,0x00,0x0a,0xcc,0x34,0x61,0xff,0x04,0x46,0xa0,0xa5,0x65,0x04,0x1a,0x39, 0x1a,0xe5,0xdd,0x16,0x48,0x15,0x0d,0x20,0xe4,0x9f,0x64,0xaf,0xdf,0xfe,0xea,0x77, 0xf7,0xf9,0x9b,0x38,0x59,0x9b,0xe3,0x63,0xd4,0xe3,0x03,0x00,0x40,0x71,0xfb,0x0f, 0xdc,0x29,0xec,0xea,0x18,0x01,0x77,0x6b,0xa0,0xb5,0x95,0x2c,0xd8,0xc4,0xca,0x0f, 0xf0,0x46,0x03,0xd8,0x12,0xc8,0x20,0xe4,0x9f,0xec,0xab,0x5f,0xf7,0x5c,0xce,0x8c, 0xad,0x6b,0xfe,0xc0,0x64,0x04,0x00,0x80,0x52,0xa0,0x1a,0x34,0x54,0xd8,0xd6,0x32, 0x02,0xda,0x53,0xa0,0x95,0x93,0x1f,0x90,0x2e,0x1a,0x50,0xd6,0x5b,0x02,0x99,0x84, 0xfc,0xed,0xbd,0xfe,0x26,0x4e,0x56,0xe6,0x4b,0x4c,0x3c,0x00,0x00,0x08,0x08,0xaf, 0x38,0x89,0x82,0xdb,0xc4,0xd6,0xf7,0x13,0x70,0xb7,0x05,0xdc,0x68,0x80,0x9d,0x1b, 0x50,0xf6,0x5b,0x02,0xd9,0x86,0xfc,0xd5,0x49,0x9d,0x23,0xac,0x60,0xb2,0x01,0x00, 0x40,0xc0,0x50,0x6d,0xba,0x48,0xe8,0x2c,0x74,0x72,0xa2,0x01,0x9b,0x7b,0xa2,0x01, 0xd9,0x6e,0x09,0x94,0xad,0xf8,0xdb,0x21,0xff,0x0e,0x4e,0xe2,0x05,0x93,0x0c,0x00, 0x00,0x82,0x5e,0x2d,0xb0,0xbb,0x27,0x1a,0xe0,0xe6,0x06,0x34,0xf3,0x6c,0x09,0x94, 0x9d,0x09,0x48,0x27,0xfe,0xb5,0x63,0x1b,0x96,0xf7,0xed,0x2d,0x7c,0xc6,0xa4,0x02, 0x00,0x80,0x90,0xf0,0x79,0x6c,0xdd,0x81,0x72,0x9d,0x3d,0xb9,0x01,0xee,0x96,0x80, 0x5d,0x2e,0x58,0xbb,0x5c,0x4c,0x40,0x22,0xf1,0x77,0xeb,0xfb,0x6b,0x7a,0xc4,0x5f, 0xf7,0x4c,0x4e,0x13,0x56,0x32,0x99,0x00,0x00,0x20,0x64,0xa8,0x76,0x0d,0x11,0xb6, 0x17,0xb6,0x8e,0xad,0x2b,0x19,0x74,0xb7,0x04,0x5a,0x78,0xf2,0x02,0xdc,0xe4,0xc0, 0x44,0xfd,0x02,0x22,0x61,0x02,0x32,0x15,0x7f,0x77,0xbf,0x7f,0x34,0x13,0x08,0x00, 0x00,0x42,0xce,0xcd,0x42,0x57,0xa7,0x52,0x40,0xb7,0x04,0xda,0x26,0xc8,0x0b,0x88, 0xb4,0x09,0xc8,0x44,0xfc,0xdd,0x64,0x3f,0xdd,0x27,0x99,0xc2,0xa4,0x01,0x00,0x80, 0x88,0xf0,0xa8,0xb0,0xb3,0xb3,0x25,0xd0,0xd1,0xca,0x0b,0xf0,0x26,0x07,0x46,0xce, 0x04,0xa4,0xda,0xf3,0xf7,0x8a,0xbf,0xba,0xa2,0x67,0x99,0x2c,0x00,0x00,0x10,0x31, 0x66,0xc6,0xd6,0x35,0x0e,0xda,0xce,0xc9,0x0b,0xd0,0xd3,0x06,0xdb,0x38,0x1f,0xbd, 0xc9,0x4c,0x40,0xe8,0x73,0x02,0x32,0x15,0x7f,0x4d,0x90,0xa0,0xbe,0x1f,0x00,0x00, 0xa2,0xdc,0x2f,0x60,0x77,0x27,0x2f,0xa0,0x53,0x1e,0x26,0x20,0x74,0x5f,0xff,0xc9, 0xb2,0xfd,0xdd,0x2f,0x7f,0xc4,0x1f,0x00,0x00,0xca,0xc1,0x04,0xf4,0xb0,0x4c,0x40, 0xbb,0x04,0x26,0x20,0x59,0x75,0x40,0x68,0xa2,0x00,0xde,0xd0,0x7f,0x32,0xf1,0xdf, 0x84,0xb0,0x3f,0x00,0x00,0x94,0x11,0xb3,0x9c,0xed,0x80,0x6c,0x4d,0x40,0x28,0xb6, 0x02,0x12,0x89,0x7f,0xd5,0xd8,0xfa,0x26,0x3f,0x6e,0xa9,0x5f,0x53,0x12,0xfe,0x00, 0x00,0xa0,0x0c,0x99,0x1a,0x5b,0xd7,0xda,0x3e,0xd9,0x76,0x80,0x5b,0x22,0xe8,0x36, 0x0b,0xaa,0x1a,0x16,0x13,0x90,0x28,0xe3,0xbf,0x7a,0x6c,0x7d,0x87,0x3f,0xb7,0xce, 0x9f,0x52,0x3f,0x00,0x00,0x28,0x57,0xc6,0x26,0x30,0x01,0x6e,0x75,0x80,0xdb,0x27, 0xc0,0xed,0x18,0x58,0x3d,0x49,0x65,0x40,0xe0,0xf7,0xfd,0xed,0x83,0x7d,0xb4,0x05, 0xa2,0x76,0x41,0x3a,0x8d,0x87,0x0f,0x00,0x00,0x65,0xce,0x85,0xc2,0x4e,0x8e,0x09, 0xd0,0xea,0x80,0x2d,0x62,0xeb,0x9b,0x05,0x35,0x76,0x34,0xd3,0x3e,0x40,0x28,0xb0, 0xf9,0x00,0xc9,0xf6,0xfd,0x5d,0xf1,0xd7,0xec,0x46,0xed,0x83,0xac,0xed,0x7d,0xe9, 0xf0,0x07,0x00,0x00,0xe5,0x8e,0x6a,0xe1,0xbf,0x84,0x6e,0xb1,0x75,0x25,0x82,0xda, 0x27,0xc0,0x6d,0x16,0xd4,0xdc,0xd1,0xcc,0x7a,0x96,0x09,0x08,0x6c,0x3e,0x40,0xa2, 0xd0,0xbf,0x37,0xe9,0x4f,0x3b,0x21,0xd1,0xdb,0x1f,0x00,0x00,0x60,0x1d,0x7a,0x76, 0x40,0x1f,0xc7,0x04,0x74,0x76,0x74,0x52,0xdb,0x06,0xeb,0xd9,0x01,0xcd,0x12,0x24, 0x05,0x06,0x6e,0x2b,0xc0,0x75,0x21,0xa9,0xf6,0xfd,0x35,0xb1,0x81,0x53,0xfd,0x00, 0x00,0x00,0x36,0xe4,0x19,0xa7,0x32,0x60,0x87,0xd8,0xba,0xb6,0xc1,0x7a,0x76,0xc0, 0x66,0x9e,0xa4,0xc0,0x44,0xf9,0x00,0x25,0x8f,0x02,0xa4,0x0b,0xfd,0xd7,0x77,0x12, 0x1a,0xce,0xe5,0x21,0x03,0x00,0x00,0x24,0xe4,0x72,0x61,0x97,0xd8,0xba,0xb3,0x03, 0xf4,0x00,0xa1,0x76,0x9e,0xa4,0xc0,0xfa,0x41,0xdc,0x0a,0x48,0x15,0xfa,0x77,0xf7, 0xfd,0x35,0xd3,0x71,0x05,0x0f,0x18,0x00,0x00,0x20,0x21,0xaa,0x91,0x87,0x5a,0x95, 0x01,0x76,0x52,0xa0,0x9d,0x0f,0x10,0x98,0xad,0x00,0x6f,0xd6,0xbf,0x37,0xf4,0xdf, 0xd0,0xd9,0xc3,0xa0,0xd3,0x1f,0x00,0x00,0x40,0x6a,0x5e,0x8d,0xad,0x6b,0x17,0x9c, 0x28,0x1f,0xc0,0x6d,0x12,0x64,0x6f,0x05,0x94,0xb4,0x2a,0x20,0x93,0xd0,0xff,0x99, 0x3c,0x54,0x00,0x00,0x80,0x8c,0xb8,0x4c,0xd8,0xcd,0xc9,0x07,0xd8,0x26,0xb6,0xbe, 0x53,0x60,0xa6,0x5b,0x01,0x25,0xfd,0xfa,0x77,0xb3,0xfe,0x1b,0x39,0xee,0xe5,0x47, 0x1e,0x28,0x00,0x00,0x40,0x46,0xa8,0x66,0xee,0x1b,0x5b,0x77,0x84,0x70,0x97,0xd8, 0xba,0x26,0x41,0xde,0xad,0x00,0xb7,0x2a,0xa0,0x64,0x09,0x81,0xc9,0xbe,0xfe,0xed, 0xac,0xff,0xf1,0x3c,0x4c,0x00,0x00,0x80,0xac,0xb8,0xcb,0xd9,0x0a,0xd8,0xc9,0xda, 0x0a,0x48,0x54,0x15,0x50,0x92,0x28,0x40,0xa2,0xaf,0x7f,0x3b,0xf1,0x4f,0x3b,0x18, 0xe9,0x89,0x47,0xab,0x79,0x90,0x00,0x00,0x00,0x59,0xa1,0xda,0x79,0x64,0x6c,0x7d, 0x69,0xa0,0x6e,0x05,0xb8,0xad,0x82,0xdd,0x2e,0x81,0x89,0x12,0x02,0x8b,0x12,0x05, 0xc8,0xe4,0xeb,0xff,0x09,0x1e,0x22,0x40,0x61,0x90,0x15,0xc0,0x0c,0x89,0x55,0x34, 0x2f,0xc4,0x2a,0x9b,0x27,0x85,0xb3,0xe4,0x7f,0x77,0x8e,0x55,0x30,0x15,0xb8,0x37, 0x00,0x51,0x61,0xba,0xd0,0xcb,0x53,0x15,0xd0,0xd6,0x4a,0x08,0x2c,0x49,0x14,0x20, 0x93,0xaf,0xff,0xbd,0x78,0x78,0x00,0x85,0x61,0xb0,0x88,0xfd,0x3c,0x11,0xfd,0xc5, 0xb1,0x2a,0x7f,0xe3,0x25,0xf9,0xff,0x87,0xc5,0x2a,0x99,0x9e,0x62,0x06,0xaa,0x71, 0xaf,0x00,0xc2,0xce,0x31,0x4e,0x34,0x7d,0xc7,0xd8,0xba,0x06,0x41,0x6e,0x42,0x60, 0xc9,0xa2,0x00,0xa9,0xbe,0xfe,0xdd,0xb2,0xbf,0xa7,0x78,0x70,0x00,0xfe,0x73,0xbc, 0x88,0x7f,0x22,0xe1,0x4f,0xc4,0x1c,0x31,0x03,0x37,0x8a,0x19,0x38,0x48,0xcc,0x40, 0x3d,0xee,0x1d,0x40,0x18,0x99,0x21,0xec,0x11,0x5b,0xd7,0x20,0xa8,0x8b,0x15,0x05, 0xd8,0x34,0xb6,0xbe,0x4d,0x70,0x51,0xa3,0x00,0x99,0xec,0xfd,0xf3,0xe0,0x00,0x7c, 0xe6,0x5f,0x59,0x88,0xbf,0x97,0x85,0x62,0x06,0xee,0x12,0x33,0x30,0x48,0xfe,0x8e, 0x56,0xdc,0x4b,0x80,0x30,0xf1,0xcf,0xd8,0xfa,0xde,0x00,0x6e,0x9b,0x60,0xb7,0x2c, 0x30,0x5d,0x14,0xa0,0xa8,0x7b,0xff,0xea,0x48,0xee,0xe6,0x81,0x01,0xf8,0xcb,0x00, 0xf9,0x8a,0xcf,0x55,0xfc,0x13,0xf1,0x98,0x18,0x82,0x33,0xc4,0x0c,0x6c,0x23,0x7f, 0x2f,0xf7,0x17,0x20,0xd0,0x3c,0x28,0xf4,0x4e,0x11,0x05,0x28,0x5a,0x2e,0x80,0x6d, 0x00,0xec,0xba,0x7f,0xf7,0xeb,0x5f,0x7f,0xb0,0x3f,0x79,0x60,0x00,0xfe,0xb1,0x9f, 0x88,0xf4,0xc2,0x24,0x7b,0xfe,0x7e,0xa0,0x89,0x84,0x97,0x4b,0x74,0xa0,0x87,0xfc, 0x3b,0x55,0xb9,0xdf,0x00,0x41,0x43,0x35,0xf5,0xe0,0x24,0x51,0x00,0x6f,0x2e,0x80, 0xdb,0x17,0xa0,0xa0,0x06,0xa0,0x72,0x6c,0xc3,0xae,0x7f,0x6e,0xe6,0xff,0xc5,0x3c, 0x2c,0x00,0xff,0xd8,0x53,0x44,0xf9,0x9d,0x02,0x8a,0xbf,0x97,0xb7,0xe4,0xdf,0xba, 0x41,0xcc,0xc0,0x01,0xf2,0xef,0xd6,0xe5,0xfe,0x03,0x04,0x85,0x6b,0x93,0x44,0x01, 0xec,0x8a,0x00,0xbb,0x3b,0xa0,0xef,0xdb,0x00,0xde,0xf0,0xbf,0xdb,0xf3,0xdf,0xed, 0xfa,0xa7,0x1d,0x8a,0x3e,0xe0,0x41,0x01,0xf8,0xc3,0x6e,0x22,0xc2,0xf3,0x8a,0x28, 0xfe,0x5e,0x16,0xc8,0xbf,0x3d,0x51,0xcc,0xc0,0x51,0xb2,0x55,0xb0,0x09,0xcf,0x03, 0xa0,0x94,0x2c,0x15,0xf6,0xb6,0x2a,0x02,0xdc,0x16,0xc1,0xad,0x63,0x1b,0x76,0x07, 0xb4,0xcf,0x08,0xf0,0x35,0x0a,0x90,0x2c,0xf9,0xcf,0xed,0xf9,0xdf,0x8f,0x87,0x04, 0xe0,0x0f,0xdd,0x44,0xfc,0xe7,0x96,0x50,0xfc,0x13,0x31,0x55,0x7e,0x9e,0xd3,0xc4, 0x0c,0x74,0x22,0x6f,0x00,0xa0,0x14,0x1c,0xef,0x54,0x04,0x68,0x8b,0x60,0xed,0x0b, 0xd0,0x31,0xb6,0xbe,0x3b,0xa0,0x7b,0x46,0x40,0xc1,0x92,0x01,0x2b,0xc4,0xd6,0x1f, 0xf9,0x9b,0xa8,0xf4,0xef,0x56,0x1e,0x10,0x40,0xfe,0x6c,0x27,0x02,0xfb,0x56,0xc0, 0xc4,0xdf,0xcb,0xf3,0xf2,0xf3,0x5d,0x22,0x66,0x60,0x57,0xf9,0x59,0xab,0xf0,0xcc, 0x00,0x8a,0xc1,0x9d,0xb1,0x75,0x3d,0x76,0xdc,0x83,0x82,0xb6,0x8e,0xad,0x3b,0x23, 0x20,0x59,0x49,0xa0,0x7b,0x54,0x70,0x05,0x3f,0xc4,0x3f,0x51,0xf8,0xdf,0x4d,0xfe, 0x53,0x07,0xf2,0x15,0x0f,0x08,0x20,0x3f,0xf4,0xeb,0x7a,0x76,0xc0,0xc5,0xdf,0xcb, 0x9b,0xf2,0xf3,0x8e,0x96,0xad,0x82,0xfd,0xe5,0x67,0xdf,0x88,0x67,0x08,0x50,0x28, 0xbe,0x16,0xfa,0x08,0x3d,0x63,0xeb,0xcf,0x08,0x48,0x94,0x0c,0xe8,0xfb,0x36,0x40, 0xa2,0xf0,0xbf,0x7b,0xe4,0xaf,0x26,0x20,0xec,0xcb,0xc3,0x01,0xc8,0x0f,0xd9,0xd0, 0x33,0xaf,0x85,0x4c,0xfc,0xbd,0x68,0xc2,0xe2,0x1d,0x62,0x06,0xb4,0x67,0x41,0x0b, 0x9e,0x29,0x80,0xdf,0x9c,0x90,0x20,0x19,0x70,0x73,0x2b,0x19,0xd0,0x3d,0x2a,0xd8, 0xd7,0x6d,0x80,0x44,0xd9,0xff,0x76,0xf8,0xff,0x5a,0x1e,0x0c,0x40,0xee,0xc8,0x1b, 0x6c,0x5e,0x0e,0xb9,0xf8,0x27,0xe2,0x11,0xb9,0xa6,0x53,0xc5,0x0c,0x74,0x24,0x6f, 0x00,0xc0,0x0f,0xc6,0x7a,0x92,0x01,0x75,0x1b,0x40,0x0f,0x09,0x6a,0x95,0x62,0x1b, 0xc0,0x17,0x03,0x90,0x2c,0xfb,0x5f,0x43,0x0f,0x6f,0xf3,0x60,0x00,0x72,0x43,0xde, 0xdc,0x78,0x2d,0x7e,0xd4,0xc4,0xdf,0xcb,0x4c,0xb9,0xc6,0x8b,0xc5,0x0c,0xec,0x4c, 0xde,0x00,0x40,0xae,0xcc,0x13,0xfa,0xc6,0xd6,0x1d,0x12,0x94,0x68,0x1b,0x20,0x59, 0x35,0x40,0x85,0x7c,0xbf,0xfe,0x2b,0x25,0xc9,0xfe,0xd7,0x4c,0xc4,0xb5,0x3c,0x18, 0x80,0xec,0x91,0x5e,0x9e,0x71,0x61,0x8c,0xba,0xf8,0x7b,0xd1,0x3c,0x87,0xeb,0x64, 0xab,0xa0,0x9f,0x98,0x81,0x3a,0xcc,0x03,0x80,0x4c,0x51,0xad,0xed,0x9f,0x64,0x1b, 0x20,0x59,0x35,0x40,0x5e,0x79,0x00,0xc9,0xf6,0xff,0xdd,0xd6,0xbf,0x47,0xf2,0x50, 0x00,0xb2,0x47,0x5e,0x1e,0x33,0xa3,0x0c,0xc5,0xdf,0xcb,0x7c,0xb9,0x07,0xff,0x15, 0x33,0x70,0xa4,0x44,0x07,0x9a,0x33,0x2f,0x00,0xd2,0x71,0xb6,0xb3,0x0d,0x90,0xac, 0x1a,0xa0,0x81,0x9f,0x79,0x00,0x89,0xf6,0xff,0xeb,0x3a,0x7b,0x0d,0xda,0x80,0x60, 0x34,0x0f,0x04,0x20,0x3b,0x24,0x4e,0x67,0xa6,0x21,0xfe,0x09,0x99,0x22,0xf7,0xe5, 0x64,0x31,0x03,0x1d,0x98,0x27,0x00,0x89,0x18,0x67,0x55,0x03,0xb8,0xad,0x81,0xed, 0xa6,0x40,0x0d,0x1d,0x8d,0xf6,0x25,0x0f,0xa0,0x42,0x8a,0xf2,0x3f,0x3d,0x8d,0xe8, 0x05,0x1e,0x08,0x40,0xe6,0x88,0x3d,0x37,0x8f,0x23,0xfe,0x19,0xf1,0xac,0xdc,0xa7, 0x0b,0xc5,0x0c,0x74,0x97,0xad,0x82,0xca,0xcc,0x1d,0x00,0xe5,0x65,0xa7,0xf2,0xce, 0x6d,0x0a,0xb4,0x9d,0x20,0x7e,0x39,0xde,0x14,0x68,0xe3,0x14,0xe5,0x80,0x39,0x19, 0x80,0x44,0x87,0xff,0xb8,0xfb,0xff,0xba,0xe7,0xf0,0x3d,0x0f,0x04,0x20,0x33,0xb4, 0xbf,0xfe,0xa3,0x88,0x7f,0x4e,0xbc,0x21,0xf7,0xed,0x5a,0xd9,0x2a,0xe8,0x2b,0x66, 0xa0,0x16,0x73,0x09,0xca,0x17,0xd5,0xdc,0xfd,0x85,0x3d,0x85,0x5d,0xd3,0xe4,0x01, 0x78,0x0f,0x07,0xf2,0x6d,0xff,0xbf,0xa9,0xf3,0x0f,0xf3,0x40,0x00,0x32,0x40,0x9b, 0xe4,0x4c,0x46,0xfc,0x7d,0xcb,0x1b,0x18,0x2f,0x66,0x60,0xa0,0x44,0x07,0x9a,0x32, 0xb7,0xa0,0xfc,0xf8,0x87,0x55,0x0e,0xe8,0xcd,0x03,0x68,0xea,0x57,0x1e,0x40,0xaa, 0xfa,0x7f,0xdd,0x6b,0x38,0x9c,0x07,0x01,0x90,0x1e,0xfd,0x62,0x7d,0x40,0x04,0x0b, 0xf1,0x2e,0x0c,0x6a,0xac,0xfe,0x4f,0xcc,0x40,0x3b,0xe6,0x1a,0x94,0x07,0x67,0x3a, 0x79,0x00,0xbb,0x7b,0xf2,0x00,0x5a,0x59,0x79,0x00,0x79,0xf7,0x03,0xf0,0x1a,0x00, 0x6f,0xfd,0xff,0x39,0x3c,0x08,0x80,0xd4,0xc8,0x1b,0x68,0x26,0x21,0xfe,0x45,0x43, 0x2b,0x2b,0x2e,0x10,0x33,0xa0,0x07,0x2a,0x55,0x62,0xfe,0x41,0x34,0x19,0x1e,0x5b, 0x77,0x00,0x5f,0x26,0xfd,0x00,0xf2,0x32,0x00,0xa9,0x12,0x00,0xc7,0xf0,0x20,0x00, 0x92,0x23,0xf1,0x37,0x73,0x17,0xe2,0x5f,0x32,0xb4,0xb5,0xf2,0x48,0xb9,0xff,0xfb, 0x88,0x19,0xa8,0xc9,0x7c,0x84,0xe8,0x30,0xde,0x49,0x04,0xec,0x1d,0x5b,0x7f,0x3a, 0xa0,0xef,0x89,0x80,0x5e,0x03,0x50,0xdb,0xf9,0x4b,0xdd,0x04,0xc0,0x29,0x3c,0x08, 0x80,0xc4,0x88,0xed,0x8e,0xf7,0xc5,0x47,0x88,0x83,0xc1,0x3c,0x31,0x03,0xe3,0xe4, 0x79,0x1c,0x2e,0xd1,0x81,0xc6,0xcc,0x4f,0x08,0x37,0x8f,0x59,0x89,0x80,0xc9,0x1a, 0x02,0xd5,0xb3,0x12,0x01,0xf3,0x32,0x00,0x89,0x3a,0x00,0xea,0xe1,0x03,0xcf,0xf3, 0x20,0x00,0xfe,0x8e,0xbc,0x30,0x66,0x02,0xe2,0x1f,0x58,0x16,0x89,0x19,0xd0,0x9c, 0x8c,0x13,0xc4,0x0c,0xb4,0x65,0xbe,0x42,0x38,0x4b,0x01,0x0f,0x88,0xad,0x3f,0x1e, 0xb8,0xab,0xd0,0x49,0x68,0xeb,0x68,0x73,0xb2,0x8e,0x80,0x59,0x19,0x00,0x6f,0x0b, 0x60,0xbb,0x02,0x40,0xb3,0x0d,0x17,0xf0,0x20,0x00,0x36,0x44,0xfb,0xdc,0x8f,0x43, 0xfc,0x43,0xc5,0xd3,0x62,0x08,0xce,0x13,0x33,0xd0,0x55,0xb6,0x0a,0x2a,0x32,0x87, 0x21,0xf8,0x2c,0x12,0x0e,0x14,0xf6,0xc9,0xa2,0x12,0x20,0xeb,0x52,0xc0,0x54,0x2d, 0x80,0xf5,0x1f,0xf9,0x82,0x07,0x01,0xb0,0xa1,0xf8,0x8f,0x45,0xfc,0x43,0xcd,0xab, 0x62,0x06,0xae,0x92,0x67,0xd8,0x5b,0xcc,0x40,0x0d,0xe6,0x34,0x04,0x93,0x2f,0x85, 0x83,0xac,0x4a,0x00,0x3d,0x19,0x70,0x9b,0xd8,0xba,0x93,0x01,0xd3,0xb5,0x04,0xce, 0xc9,0x00,0x78,0x8f,0x00,0xd6,0x72,0x83,0x1f,0x79,0x10,0x00,0xeb,0xd0,0x4e,0x75, 0xff,0x41,0xfc,0x23,0xc5,0x5c,0x31,0x03,0x6a,0xe8,0xfa,0x8b,0x19,0x68,0xc8,0x1c, 0x87,0xe0,0xa0,0xda,0x7b,0x70,0x6c,0xc3,0x96,0xc0,0xae,0x01,0x68,0x15,0xfb,0xfb, 0xd1,0xc0,0x59,0x1b,0x80,0x74,0x3d,0x00,0x5a,0x0b,0x7f,0xf0,0x20,0x00,0x62,0xf1, 0x72,0xb3,0x1b,0x10,0xff,0xc8,0xe7,0x0d,0xdc,0x2b,0xcf,0xf8,0x58,0xd9,0x2a,0x68, 0xcd,0x9c,0x87,0xd2,0xa2,0xda,0x7b,0x48,0x6c,0xdd,0xd1,0xc0,0x3d,0x9d,0x52,0xc0, 0x44,0x67,0x02,0xe4,0xdc,0x0b,0x20,0x13,0x03,0xb0,0x9a,0x07,0x01,0xe5,0x8e,0xee, 0x19,0x8f,0x42,0xfc,0xcb,0x0e,0x3d,0xcc,0xe9,0x2c,0x31,0x03,0x9d,0x25,0x3a,0x50, 0x81,0xf7,0x00,0x8a,0xcb,0x6a,0xc7,0x00,0x24,0xea,0x05,0x50,0x30,0x03,0x60,0x37, 0x01,0x6a,0xc3,0x43,0x00,0xc4,0x3f,0x16,0x3f,0xd7,0x1e,0x41,0x2c,0x6f,0x5e,0x12, 0x33,0x70,0x85,0xcc,0x83,0x9e,0x62,0x06,0xaa,0xf1,0x5e,0x40,0x71,0xe8,0xef,0x18, 0x00,0x3d,0x14,0xa8,0x7b,0x8a,0x66,0x40,0xbe,0x18,0x80,0x5a,0x18,0x00,0x80,0xf5, 0xe8,0x57,0xdf,0xc8,0x0c,0xc5,0xff,0xc3,0x6d,0xb6,0x37,0xbf,0x3e,0xfd,0x8c,0x59, 0xb9,0x64,0x89,0xf9,0xee,0xca,0x11,0xe6,0xa3,0x2e,0xdd,0x10,0xce,0x88,0x32,0x47, 0xcc,0xc0,0x8d,0x32,0x2f,0x0e,0x12,0x33,0x50,0x8f,0xf7,0x04,0x0a,0x6b,0x00,0x12, 0x9d,0x0a,0xe8,0x4b,0x37,0x40,0x0c,0x00,0x40,0x0a,0xf1,0x1f,0x91,0x81,0xf8,0xbf, 0xd7,0x6c,0x13,0xf3,0xe3,0xed,0x77,0x98,0xb5,0x6b,0xd6,0x18,0xef,0xf8,0xeb,0x93, 0x4f,0xcc,0xf2,0xd1,0x37,0x98,0x65,0x3d,0x7a,0x99,0xc5,0x15,0xab,0x22,0x9e,0x11, 0x64,0xa1,0x98,0x01,0xed,0x04,0x39,0x48,0xb6,0x0a,0x36,0xe5,0xbd,0x01,0x7f,0x19, 0x10,0xdb,0xb0,0x1b,0xa0,0xef,0x06,0xc0,0xed,0x02,0x68,0x1b,0x00,0xb7,0x0d,0xf0, 0x66,0x3c,0x00,0x28,0x57,0xf1,0xbf,0x2a,0x9d,0xf8,0x57,0xaa,0x66,0xbe,0x3a,0xe5, 0x34,0xb3,0xfa,0xa7,0x9f,0x4c,0x26,0x63,0xd5,0x37,0xdf,0x98,0x1f,0x6e,0x1b,0x6f, 0x3e,0xe9,0xb3,0xaf,0x59,0x5c,0xb5,0x26,0xe2,0x19,0x51,0xa6,0x8a,0x21,0x38,0x5d, 0xcc,0xc0,0xd6,0x12,0x1d,0xe0,0x5d,0x02,0x1f,0x0c,0xc0,0x7e,0x09,0x0c,0x80,0xdd, 0x0e,0xd8,0x36,0x00,0x59,0x75,0x03,0xc4,0x00,0x00,0x24,0x60,0x78,0x1a,0xf1,0xff, 0x70,0xdb,0x2e,0xe6,0x8f,0x39,0x73,0x4c,0xae,0x43,0x4d,0xc3,0x4f,0xf7,0x4e,0x32, 0x9f,0x1d,0x72,0xa8,0x59,0x52,0x73,0x23,0x84,0x33,0xa2,0xbc,0x20,0x66,0xe0,0x52, 0x31,0x03,0x3d,0xc4,0x0c,0x54,0xe1,0xbd,0x82,0xfc,0x0c,0x80,0xb6,0x03,0xd6,0xf3, 0x00,0x3a,0x16,0xc2,0x00,0x54,0xc7,0x00,0x00,0xc4,0xcc,0xb0,0x54,0xe2,0x5f,0xa5, 0x86,0xf9,0xf6,0xd2,0xcb,0xcd,0xda,0xbf,0xfe,0x32,0x7e,0x8d,0x35,0x7f,0xfc,0x61, 0x7e,0x79,0xe4,0x51,0xf3,0xf9,0xbf,0x06,0x99,0x77,0xeb,0x37,0x46,0x38,0x23,0xca, 0x9b,0x62,0x06,0x46,0xcb,0xdc,0xda,0x5f,0xcc,0x40,0x5d,0xde,0x33,0xf0,0xdf,0x00, 0x54,0xf7,0xc3,0x00,0xd4,0xc3,0x00,0x00,0xe2,0xff,0x77,0x96,0xb6,0xdb,0xca,0xac, 0x78,0xfb,0x6d,0x53,0xc8,0xa1,0xc6,0xe2,0xd7,0x67,0x66,0x98,0x2f,0x4f,0x3c,0x29, 0x9e,0x5b,0x80,0x70,0x46,0x93,0x77,0xc4,0x0c,0xe8,0x21,0x52,0xff,0x92,0xe8,0x40, 0x0b,0xde,0x3b,0xc8,0xcf,0x00,0xd4,0xc3,0x00,0x00,0xe4,0xc9,0xe5,0x29,0xc4,0xff, 0x8b,0x63,0xfe,0x6d,0xd6,0xfc,0xf6,0x9b,0x29,0xe6,0xd0,0xa4,0xc2,0xdf,0x5f,0x7e, 0xc5,0x7c,0x7d,0xd6,0x39,0xe6,0x83,0x36,0x5b,0x20,0x9c,0x11,0xe6,0x11,0x31,0x04, 0xa7,0x8a,0x19,0xe8,0xc0,0x7b,0x08,0x1b,0x72,0xa8,0x63,0x00,0xf6,0xc4,0x00,0x00, 0x14,0x08,0xdd,0xa7,0x4d,0xb4,0x30,0x2f,0xa9,0x51,0xc7,0xfc,0x74,0xd7,0xdd,0x26, 0x08,0x63,0xc5,0xdc,0xb9,0xe6,0xdb,0x8b,0x2f,0x35,0x4b,0xb7,0xda,0x16,0xd1,0x8c, 0x30,0x33,0xc5,0x0c,0x5c,0x24,0xf3,0x71,0x67,0xd9,0x2a,0xa8,0xcc,0xbb,0x89,0x01, 0xd8,0xf0,0x48,0x60,0x0c,0x00,0x40,0x31,0xc4,0xff,0x83,0xd6,0x6d,0x0b,0x1e,0xf2, 0xcf,0x75,0xac,0x7c,0xef,0x3d,0xf3,0xdd,0x88,0x91,0xe6,0xa3,0x1d,0x76,0x32,0x8b, 0x2b,0x20,0x9a,0x51,0x65,0xb6,0x98,0x01,0x6d,0x42,0xd5,0x57,0xcc,0x40,0x6d,0xde, 0x55,0x0c,0x00,0x06,0x00,0xc0,0x3f,0x2e,0x49,0x22,0xfe,0x5a,0xb7,0xbf,0x6a,0xf9, 0x72,0x13,0x86,0xf1,0xd7,0x67,0x9f,0x99,0xef,0x6f,0xbc,0xc9,0x7c,0xdc,0xb3,0x77, 0xbc,0x34,0x11,0xe1,0x8c,0x26,0xf3,0xc5,0x0c,0x4c,0x10,0x33,0x70,0x84,0xcc,0xd9, 0x66,0xbc,0xbb,0x18,0x00,0x0c,0x00,0x80,0xff,0xe2,0xaf,0xd9,0xf8,0x6b,0xff,0xfc, 0x33,0x67,0x41,0x1e,0x3a,0x74,0xa8,0xa9,0x5d,0xbb,0xb6,0xe9,0xd5,0xab,0x97,0x19, 0x3b,0x76,0xac,0xf9,0xfa,0xeb,0xaf,0x8b,0x66,0x06,0x56,0x7d,0xf7,0x9d,0xf9,0x71, 0xc2,0x7f,0xcd,0xa7,0xfb,0x1e,0x60,0x96,0x54,0xab,0x85,0x70,0x46,0x98,0xc9,0x62, 0x08,0xfe,0x4f,0xe6,0x70,0x3b,0xde,0x65,0x0c,0x00,0x06,0x00,0x20,0x7f,0xf1,0xff, 0x66,0xe8,0x45,0x79,0x8b,0xb0,0x8a,0xbf,0xfd,0x6f,0x55,0xac,0x58,0xb1,0x24,0x66, 0x60,0xf5,0x2f,0xbf,0x98,0x9f,0xee,0xbb,0xdf,0x7c,0x76,0xe8,0x40,0xb3,0xa4,0x76, 0x3d,0x44,0x33,0xc2,0xcc,0x10,0x33,0x70,0x81,0xcc,0xe9,0x6e,0xb2,0x55,0x50,0x89, 0xf7,0x1b,0x03,0x80,0x01,0x00,0xc8,0x4e,0xfc,0xb5,0x7f,0xbf,0x1f,0x43,0x23,0x00, 0x2a,0xfa,0x89,0xfe,0xed,0x52,0x99,0x81,0x35,0x2b,0x56,0x98,0x5f,0x1e,0x7b,0xdc, 0x7c,0x31,0xe8,0x58,0xf3,0x6e,0x83,0x26,0x88,0x66,0x84,0x79,0x4d,0xcc,0xc0,0xd5, 0xb2,0x55,0xb0,0xb7,0x98,0x81,0x9a,0xbc,0xef,0x18,0x00,0x0c,0x00,0x40,0xea,0x84, 0x3f,0xed,0xd7,0xef,0xe7,0xf8,0xea,0xab,0xaf,0xcc,0x4d,0x37,0xdd,0x64,0x76,0xdf, 0x7d,0xf7,0xb4,0x66,0xe0,0x96,0x5b,0x6e,0x29,0xaa,0x19,0x58,0xbb,0x6a,0x95,0xf9, 0xed,0xd9,0xe7,0xcc,0x57,0x27,0x9d,0x62,0xde,0x6f,0xb1,0x29,0xa2,0x19,0x61,0xe6, 0x89,0x19,0xb8,0x55,0xcc,0xc0,0x61,0x32,0xef,0x1b,0xf3,0xfe,0x63,0x00,0x30,0x00, 0x80,0xf8,0x5b,0x48,0x06,0xfd,0x0f,0xb7,0xde,0x56,0x50,0xc1,0xcd,0xc6,0x0c,0x14, 0x3b,0x32,0xb0,0x76,0xed,0x5a,0xf3,0xfb,0x6b,0xaf,0x9b,0xaf,0xcf,0x3d,0xdf,0x7c, 0xb0,0x79,0x3b,0x44,0x33,0xc2,0x2c,0x12,0x33,0x70,0xbf,0x98,0x81,0xe3,0xe5,0x3d, 0x68,0xcb,0x7a,0x80,0x01,0xc0,0x00,0x40,0xb9,0x70,0x59,0xa2,0x26,0x3f,0x92,0x31, 0xff,0xe3,0xc4,0xbb,0x8a,0x9a,0xb1,0x1f,0x64,0x33,0x10,0xef,0x35,0x30,0x7f,0x7e, 0xbc,0xd5,0xb1,0x1e,0x6d,0x8c,0x68,0x46,0x9b,0xe9,0x62,0x08,0xce,0x13,0x33,0xd0, 0x55,0xb6,0x0a,0x2a,0xb2,0x46,0x60,0x00,0x30,0x00,0x50,0x4e,0x1d,0xfe,0x72,0xfd, 0xf2,0xff,0x44,0x8e,0xf8,0xdd,0x73,0xcf,0x3d,0x4d,0xb5,0x6a,0xd5,0xcc,0xf6,0xdb, 0x6f,0x6f,0x86,0x0f,0x1f,0x6e,0x16,0x2d,0x5a,0x14,0x39,0x33,0xf0,0xe7,0xd2,0xa5, 0x66,0xf9,0x35,0xd7,0x99,0x65,0x3b,0xed,0x42,0xaf,0x81,0x88,0xf3,0x8a,0x98,0x01, 0x3d,0xfd,0xb2,0xb7,0x98,0x81,0xea,0xac,0x19,0x18,0x00,0x0c,0x00,0x44,0x81,0x64, 0xbd,0xfd,0xbf,0xbd,0xe4,0xb2,0x9c,0x85,0xb1,0x77,0xef,0xde,0x09,0xff,0xad,0x2d, 0xb7,0xdc,0xd2,0x0c,0x19,0x32,0xc4,0xbc,0xf1,0xc6,0x1b,0xf1,0xd0,0x7a,0x94,0xcc, 0xc0,0x5f,0x5f,0x7c,0x61,0xbe,0xbf,0xf9,0x16,0xf3,0x71,0xef,0xbd,0xcd,0xe2,0xca, 0xd5,0x11,0xcd,0x08,0x33,0x57,0xcc,0xc0,0xcd,0xf2,0xde,0xf4,0x17,0x33,0xa0,0x79, 0x03,0xf5,0x59,0x47,0x30,0x00,0x00,0x61,0x42,0x26,0xb6,0xb9,0x22,0x89,0xf8,0x7f, 0x79,0xdc,0x89,0x79,0x89,0xa1,0x7e,0xf9,0xa7,0xfb,0xf7,0x37,0xde,0x78,0x63,0x73, 0xea,0xa9,0xa7,0x9a,0xe7,0x9e,0x7b,0xce,0xac,0x5e,0xbd,0x3a,0x52,0x66,0x60,0xf5, 0xf7,0xdf,0x9b,0x1f,0xef,0xb8,0xd3,0x7c,0xba,0xff,0x41,0x66,0x49,0xf5,0xda,0x88, 0x66,0x84,0x79,0x4e,0xcc,0xc0,0x34,0x41,0xdf,0x25,0x4e,0x30,0xc4,0x00,0x00,0x84, 0x42,0xfc,0xaf,0x4c,0x22,0xfe,0x9f,0x1e,0x70,0xb0,0x59,0x9b,0xa5,0x20,0x7b,0x87, 0x86,0xff,0xb3,0xf9,0x79,0x1a,0x36,0x6c,0x68,0x8e,0x39,0xe6,0x18,0xf3,0xd8,0x63, 0x8f,0x99,0x15,0x52,0x8e,0x97,0xcd,0x50,0x71,0x0f,0xb2,0x19,0x58,0xf3,0xeb,0xaf, 0xe6,0xe7,0x07,0x1f,0x32,0x9f,0x0f,0x3c,0xd2,0xbc,0x5b,0xa7,0x3e,0xa2,0x19,0x61, 0xae,0x91,0x77,0x8a,0xf5,0x05,0x03,0x00,0x10,0x68,0xf1,0x1f,0x91,0x44,0xfc,0x97, 0x75,0xdf,0xd5,0xac,0xf9,0xe3,0x8f,0xbc,0x45,0x4f,0x73,0x00,0xf6,0xd8,0x63,0x8f, 0x9c,0x7e,0x3e,0x6d,0x12,0x74,0xe8,0xa1,0x87,0x9a,0xfb,0xee,0xbb,0xcf,0xfc,0xfc, 0xf3,0xcf,0xd1,0x32,0x03,0x2b,0x57,0x9a,0x5f,0x9e,0x78,0xd2,0x7c,0x31,0xf8,0x38, 0xf3,0x5e,0xa3,0x66,0x88,0x66,0x04,0xab,0x08,0x5a,0xb1,0xc6,0x60,0x00,0x00,0x82, 0x2a,0xfe,0x57,0x27,0x11,0xff,0xf7,0x9a,0x6d,0x62,0x56,0x49,0x68,0xdd,0xcf,0xb1, 0x6c,0xd9,0x32,0x73,0xfd,0xf5,0xd7,0x9b,0x5d,0x77,0xdd,0x35,0xa9,0x20,0xa7,0xa2, 0x6a,0xd5,0xaa,0xa6,0x6f,0xdf,0xbe,0x66,0xfc,0xf8,0xf1,0xe6,0x9b,0x6f,0xbe,0x89, 0x94,0x19,0xd0,0x28,0xcb,0x6f,0xb3,0x9e,0x37,0x5f,0x9d,0x7a,0xba,0x79,0x7f,0x93, 0xd6,0x08,0x68,0x44,0xd0,0xd6,0xc3,0xac,0x35,0x18,0x00,0x80,0x40,0xa1,0x65,0x4c, 0xd7,0x24,0x11,0x7f,0x4d,0x5a,0xfb,0xfd,0xc5,0x97,0x0a,0x2a,0x78,0x2a,0xb0,0xe3, 0xc6,0x8d,0x33,0x7d,0xfa,0xf4,0x89,0x0b,0x7b,0xd6,0x3f,0xbf,0x88,0x75,0x8f,0x1e, 0x3d,0xcc,0xe8,0xd1,0xa3,0xcd,0xc7,0x1f,0x7f,0x9c,0xf5,0xbf,0x7d,0xf3,0xcd,0x37, 0x07,0xd7,0x0c,0x48,0x42,0xe4,0x1f,0x6f,0xcc,0x36,0xdf,0x0c,0x19,0x6a,0x96,0x6e, 0xd9,0x11,0x21,0x0d,0x31,0x77,0xb1,0x0d,0x80,0x01,0x00,0x08,0x9a,0xf8,0x5f,0x97, 0x4c,0xfc,0xb5,0xcb,0xdf,0xa8,0x31,0x79,0x95,0xfa,0x75,0xed,0xda,0xd5,0x8c,0x1c, 0x39,0xd2,0x7c,0xf8,0xe1,0x87,0x19,0xfd,0xd9,0x9f,0x7e,0xfa,0xc9,0xdc,0x7b,0xef, 0xbd,0xa6,0x7f,0xff,0xfe,0xa6,0x56,0xad,0x5a,0x39,0x5d,0x53,0xae,0xe5,0x85,0x41, 0x37,0x03,0xf1,0xa3,0x8c,0x17,0x2e,0x34,0xdf,0x0e,0x1b,0x6e,0x3e,0xec,0xdc,0x15, 0x51,0x0d,0x19,0x6f,0xc9,0x36,0x00,0x6b,0x0e,0x06,0x00,0x20,0x10,0xe8,0xc1,0x27, 0xd7,0xa7,0x10,0xff,0xcf,0x0e,0x3b,0xc2,0xd7,0x52,0x3f,0xd7,0x0c,0x2c,0x95,0x1a, 0xf9,0x8c,0x1a,0xeb,0x48,0xd2,0xdf,0xa3,0x8f,0x3e,0x6a,0x8e,0x3e,0xfa,0x68,0xd3, 0xa0,0x41,0x83,0x9c,0xae,0x31,0xd7,0xf2,0xc2,0x30,0x98,0x81,0x3f,0x3f,0xfa,0xc8, 0x2c,0xbf,0x7e,0xb4,0x59,0xb6,0x4b,0x0f,0xb3,0xb8,0x62,0x55,0x44,0x36,0x04,0x34, 0x65,0xdd,0xc1,0x00,0x00,0x04,0x41,0xfc,0xc7,0xa4,0x10,0xff,0xa5,0x1d,0xb6,0x8e, 0x67,0xa9,0x17,0xaa,0xd4,0xaf,0x4b,0x97,0x2e,0xe6,0xea,0xab,0xaf,0xce,0x38,0x32, 0xb0,0x4a,0x7a,0xf0,0x3f,0xfb,0xec,0xb3,0xe6,0xe4,0x93,0x4f,0x8e,0x97,0x09,0xe6, 0x72,0xcd,0x9b,0x6c,0xb2,0x89,0x39,0xe5,0x94,0x53,0xcc,0xcc,0x99,0x33,0xb3,0x2a, 0x2f,0xcc,0xd4,0x0c,0xf4,0xec,0xd9,0xb3,0x64,0x66,0x40,0x73,0x34,0x7e,0xb8,0x65, 0x9c,0xf9,0x64,0xaf,0x3e,0x66,0x71,0x95,0x1a,0x88,0x6d,0x40,0xd9,0x51,0xfa,0x03, 0xb0,0xfe,0x60,0x00,0x00,0x4a,0x46,0x65,0xe1,0xc6,0x14,0xe2,0xaf,0x02,0xb2,0x62, 0xde,0xbc,0xa2,0x95,0xfa,0x65,0x6b,0x06,0xf4,0x4b,0xfe,0xf5,0xd7,0x5f,0x37,0xe7, 0x9d,0x77,0x9e,0xd9,0x62,0x8b,0x2d,0x72,0xba,0x07,0x5a,0x5e,0x38,0x68,0xd0,0xa0, 0xac,0xcb,0x0b,0xc3,0x60,0x06,0x56,0xff,0xf0,0x83,0xf9,0xe9,0xae,0xbb,0xcd,0xa7, 0x07,0xf5,0x37,0x4b,0x6a,0xd4,0x41,0x78,0x03,0xc4,0xfe,0x18,0x00,0x0c,0x00,0x40, 0xa9,0x90,0xc9,0x6a,0xfe,0x93,0x4a,0xfc,0xf5,0x68,0xdf,0xe1,0x57,0xe5,0x5d,0xea, 0xa7,0xa1,0xf1,0x5c,0x7e,0xbe,0x6c,0xcd,0x80,0x8e,0x05,0x0b,0x16,0x98,0x61,0xc3, 0x86,0x99,0xed,0xb6,0xdb,0x2e,0xaf,0xf2,0xc2,0x49,0x93,0x26,0x65,0x55,0x5e,0xe8, 0x9a,0x01,0x15,0xfb,0xa0,0x9a,0x81,0x35,0xbf,0xff,0x6e,0x7e,0x9e,0x3c,0xc5,0x7c, 0x7e,0xe4,0x51,0xe6,0xdd,0xba,0x0d,0x11,0xe1,0x12,0x33,0x88,0x4a,0x00,0x0c,0x00, 0x40,0xa9,0xc4,0x7f,0x6c,0x1a,0xf1,0xff,0x68,0x87,0x9d,0xe2,0x47,0xde,0xfa,0x31, 0x74,0xaf,0xff,0xaa,0xab,0xae,0xca,0x59,0x98,0xd5,0x0c,0x64,0x93,0x40,0xe8,0x96, 0x17,0x8e,0x1a,0x35,0xaa,0xe8,0xe5,0x85,0x61,0x30,0x03,0x6b,0xff,0xfc,0xd3,0xfc, 0xfa,0xd4,0xf4,0x78,0x37,0xc7,0xf7,0x9a,0xb4,0x40,0x90,0x4b,0xc0,0x59,0x18,0x00, 0x0c,0x00,0x40,0x29,0xc4,0xff,0xd6,0x34,0xe2,0xaf,0xad,0x69,0x57,0x2e,0x5e,0x5c, 0x10,0xf1,0x29,0x85,0x19,0x50,0x01,0xcf,0xb7,0xbc,0x70,0xb7,0xdd,0x76,0xcb,0xba, 0xbc,0x30,0x14,0x66,0x60,0xcd,0x1a,0xf3,0xfb,0x0b,0x2f,0x9a,0xaf,0xcf,0x38,0xcb, 0xbc,0xdf,0x6a,0x73,0xc4,0xb9,0x48,0x5c,0x82,0x01,0xc0,0x00,0x00,0x14,0x93,0xaa, 0xc2,0x6d,0x69,0xc4,0x3f,0x5e,0xf2,0x77,0xed,0xf5,0x45,0x11,0x1f,0x3f,0xcc,0x40, 0xb6,0xdb,0x04,0x1a,0xda,0xd7,0xf2,0xc2,0x01,0x03,0x06,0xe4,0x55,0x5e,0x78,0xc5, 0x15,0x57,0x64,0x55,0x5e,0x98,0x8d,0x19,0xd0,0xdf,0x57,0x0a,0x33,0xa0,0xe3,0x8f, 0xb7,0xe6,0x98,0x6f,0x86,0x5e,0x64,0x96,0xb6,0xef,0x84,0x50,0xd3,0x12,0x18,0x03, 0x80,0x01,0x80,0x28,0x50,0x4d,0x98,0x90,0x81,0xf8,0x7f,0xd4,0x6d,0xe7,0xf8,0x57, 0x61,0xb1,0x47,0x29,0xcc,0x80,0x26,0xfd,0x4d,0x9d,0x3a,0x35,0xef,0xf2,0xc2,0xf3, 0xcf,0x3f,0x3f,0xab,0xf2,0xc2,0xa0,0x9b,0x01,0x4d,0xfc,0xfc,0x64,0xef,0xbe,0x08, 0x75,0x01,0xb9,0x19,0x03,0x80,0x01,0x00,0x28,0x06,0x7a,0x36,0xf9,0x1d,0x19,0x88, 0xbf,0xd6,0x90,0xff,0xf1,0xe6,0x5b,0xa6,0xd4,0xa3,0x14,0x66,0xc0,0x8f,0xf2,0x42, 0xfd,0x73,0x5a,0x5e,0xa8,0xa7,0x17,0xae,0xca,0x30,0x7f,0x22,0x53,0x33,0x30,0x74, 0xe8,0xd0,0xc2,0x1f,0x57,0xfc,0xf9,0xe7,0xe6,0x8b,0xa3,0x8e,0xa1,0x97,0x40,0x11, 0x98,0x80,0x01,0xc0,0x00,0x00,0x14,0x9a,0x9a,0xc2,0xc4,0x4c,0xc4,0x5f,0x8f,0xf8, 0xfd,0xf7,0x09,0x39,0x8b,0x87,0x0a,0x94,0x66,0xd1,0x6b,0x59,0xdc,0x98,0x31,0x63, 0xe2,0x15,0x00,0x7e,0x99,0x81,0x11,0x23,0x46,0x14,0xd5,0x0c,0xb8,0xe5,0x85,0xfa, 0x65,0xaf,0x5f,0xf8,0xc5,0x2a,0x2f,0x4c,0x65,0x06,0xf4,0xde,0x16,0x2c,0x0f,0x40, 0xcc,0xca,0xf2,0xeb,0x46,0x99,0x25,0xb5,0xeb,0x21,0xce,0xb4,0x03,0xc6,0x00,0x60, 0x00,0x20,0x2a,0xe2,0x7f,0x77,0x86,0xe2,0xff,0x6e,0xbd,0x46,0x66,0xd5,0xb7,0xdf, 0xe6,0x2c,0x22,0x2a,0x50,0x89,0xc4,0x57,0x5b,0xf1,0x2e,0xf6,0x29,0xa1,0xb0,0x14, 0x66,0x40,0xc7,0x42,0x69,0xbb,0x9b,0x4f,0x79,0xa1,0xe6,0x1a,0x68,0xce,0x41,0x36, 0xe5,0x85,0xb6,0x19,0xd0,0x7b,0x5b,0xa8,0x08,0xc0,0xef,0xaf,0xbe,0x66,0x96,0x6e, 0xb5,0x2d,0xa2,0x5c,0x64,0x1e,0xc0,0x00,0x60,0x00,0x00,0x0a,0x85,0x4c,0x42,0x33, 0x29,0x43,0xf1,0x57,0xbe,0x1f,0x73,0x63,0x5e,0x42,0xa2,0x02,0x95,0xaa,0xdc,0xae, 0x5d,0xbb,0x76,0xe6,0x82,0x0b,0x2e,0x30,0xb3,0x67,0xcf,0x0e,0xb5,0x19,0x70,0xcb, 0x0b,0xb5,0x2a,0x20,0x9f,0xf2,0xc2,0xdb,0x6e,0xbb,0x2d,0xeb,0xd3,0x0b,0x7d,0xed, 0x0b,0x20,0x47,0x3a,0x7f,0x7d,0xd6,0x39,0x84,0xfb,0x4b,0xc4,0xc3,0x9c,0x07,0x80, 0x01,0x00,0x28,0x04,0xb5,0x85,0xfb,0xb2,0x10,0x7f,0xfd,0x02,0xf4,0xa3,0xe6,0x5f, 0x05,0x4d,0x85,0x2d,0x5d,0xb9,0x5d,0xcb,0x96,0x2d,0xcd,0xa9,0xa7,0x9e,0x6a,0x66, 0xcd,0x9a,0x95,0x55,0x2b,0xde,0xa0,0x99,0x81,0x4c,0xaf,0x37,0x5d,0x79,0xa1,0x1a, 0x0a,0x35,0x16,0x45,0xcb,0xf4,0x9f,0xfd,0xa6,0xf9,0x60,0x8b,0x0e,0x08,0x71,0x09, 0x99,0x8a,0x01,0xc0,0x00,0x00,0xf8,0xcd,0x46,0xc2,0x83,0x59,0x88,0xbf,0xf2,0xeb, 0xb4,0xa7,0x7c,0x17,0x19,0x0d,0x75,0x6b,0xc8,0x5b,0x43,0xdf,0x89,0xb6,0x07,0x5c, 0x1a,0x35,0x6a,0x64,0x06,0x0f,0x1e,0x6c,0x1e,0x7f,0xfc,0x71,0xb3,0x72,0xe5,0xca, 0xd0,0x9a,0x01,0x3f,0xca,0x0b,0xf7,0xd8,0x63,0x0f,0xdf,0x72,0x27,0x92,0xe5,0x36, 0x2c,0x1f,0x79,0x2d,0x67,0x04,0x04,0x80,0x27,0x30,0x00,0x18,0x00,0x00,0x3f,0xa9, 0x2b,0x4c,0x96,0x85,0x25,0x9b,0x85,0x68,0xd9,0x4e,0xbb,0x14,0xbe,0xac,0xcc,0x29, 0xb7,0xd3,0xa4,0x38,0x4d,0x8e,0x4b,0xd5,0x8a,0xf7,0xb0,0xc3,0x0e,0x33,0xf7,0xdf, 0x7f,0xbf,0xf9,0xe5,0x97,0x5f,0x7c,0x33,0x03,0x5a,0xb7,0x5f,0x4c,0x33,0x60,0x5f, 0x6f,0xb6,0xe5,0x85,0x7a,0x7e,0x42,0x41,0x0e,0x09,0xfa,0xee,0xbb,0x75,0x07,0x04, 0x21,0xbe,0x81,0xe0,0x29,0x0c,0x00,0x06,0x00,0xc0,0x4f,0xf1,0x9f,0x92,0xa5,0xf8, 0xc7,0xbf,0xfe,0x9f,0x99,0x51,0xdc,0x03,0x6a,0x24,0xe4,0xaf,0x65,0x72,0x5a,0x2e, 0xa7,0xa7,0xf2,0xa5,0xda,0x2b,0xef,0xd7,0xaf,0x9f,0x99,0x30,0x61,0x82,0xf9,0x36, 0x8f,0xe4,0xc4,0x52,0x9b,0x01,0x2d,0x07,0xd4,0xeb,0xcd,0xb4,0xbc,0x50,0x4f,0x50, 0xf4,0x3d,0xe4,0x2f,0xa5,0x9d,0xef,0x6f,0xba,0x19,0xc2,0x1b,0x20,0x9e,0xc6,0x00, 0x60,0x00,0x00,0xfc,0xa0,0xbe,0xf0,0x68,0x0e,0xe2,0xbf,0x6c,0xd7,0xdd,0x73,0x3a, 0xe0,0x47,0xbf,0x52,0x55,0xa8,0xba,0x76,0xed,0x9a,0x75,0x5b,0x5e,0x6f,0x48,0x5a, 0x1b,0xe8,0xa4,0x2b,0xb7,0xd3,0xbd,0x72,0x3f,0xcb,0x0b,0x4b,0x65,0x06,0x32,0x29, 0x2f,0xec,0xdd,0xbb,0xb7,0xaf,0xe2,0xff,0xe3,0xc4,0xbb,0xcc,0x92,0x6a,0xb5,0x10, 0xdd,0x80,0x31,0x03,0x03,0x80,0x01,0x00,0xc8,0x97,0x06,0xc2,0xd4,0x1c,0xc4,0x5f, 0xf9,0x6d,0xe6,0xac,0xac,0x05,0x45,0x05,0x2a,0xd1,0xcf,0xe1,0x9a,0x01,0x15,0xd7, 0x5c,0x87,0x96,0xdb,0x69,0x8b,0xdd,0x74,0xfb,0xf7,0x7e,0x96,0x17,0xe6,0x6b,0x06, 0xf4,0xcf,0xe5,0x62,0x06,0xec,0xeb,0xd5,0xbf,0x43,0x0d,0x95,0x1a,0x2b,0xbf,0x72, 0x00,0xd4,0x6c,0x7c,0x73,0xd1,0x25,0x88,0x2d,0x06,0x00,0x30,0x00,0x10,0x45,0x1a, 0x09,0x8f,0xe7,0x28,0xfe,0x1f,0xf7,0xcc,0xed,0x4b,0x53,0x85,0xaa,0x50,0x5f,0xc8, 0xf6,0xd0,0x43,0x77,0xf4,0xf0,0x9d,0x74,0xe5,0x76,0x76,0x79,0x61,0xa6,0xad,0x78, 0x83,0x68,0x06,0xfc,0x3e,0xed,0xef,0xf3,0x81,0x47,0x22,0xb4,0x01,0xe6,0x39,0x0c, 0x00,0x06,0x00,0x20,0x1f,0xf1,0x7f,0x32,0x47,0xf1,0x8f,0x7f,0xfd,0xcf,0x78,0x36, 0x27,0x71,0xd1,0xaf,0xd4,0x62,0x84,0xcb,0x13,0x95,0xdb,0x69,0xfd,0x7c,0xaa,0x72, 0x3b,0xcd,0x29,0xf0,0xab,0xbc,0x30,0xac,0x66,0x60,0x8d,0x24,0x20,0x7e,0xd2,0x6f, 0x7f,0x44,0x36,0xe0,0xcc,0xc4,0x00,0x60,0x00,0x00,0x72,0x41,0x26,0x96,0x99,0x96, 0x87,0xf8,0x6b,0xdd,0x7f,0xae,0x43,0x43,0xd4,0xbd,0x7a,0xf5,0x2a,0xea,0xde,0x79, 0xa2,0xf2,0xc2,0x43,0x0f,0x3d,0x34,0x65,0x79,0xa1,0x56,0x1b,0x1c,0x73,0xcc,0x31, 0xf1,0xf2,0xc2,0x4c,0x5b,0xf1,0x86,0xdd,0x0c,0xac,0xf9,0xed,0x37,0xf3,0xf1,0x1e, 0x7b,0x21,0xb0,0x18,0x00,0xc0,0x00,0x40,0x14,0x69,0x2a,0x3c,0x95,0x87,0xf8,0x2b, 0x3f,0xdc,0x36,0x3e,0x10,0x07,0xf6,0xe4,0x93,0x40,0xe8,0x96,0xdb,0x69,0xaf,0xfd, 0x4c,0xcb,0x0b,0xef,0xbb,0xef,0xbe,0x8c,0x5b,0xf1,0x16,0xca,0x0c,0x14,0xaa,0xd6, 0x7f,0xb5,0x5c,0xd7,0xb2,0x5d,0x7a,0x20,0xae,0x21,0x61,0x16,0x06,0x00,0x03,0x00, 0x90,0x0d,0xcd,0x84,0xe9,0x79,0x8a,0xff,0x7b,0x0d,0x9b,0xc6,0xdb,0xc0,0x06,0xed, 0xf4,0xbe,0x7c,0xcd,0x40,0xb6,0xe5,0x85,0xe3,0xc7,0x8f,0xcf,0xbb,0xbc,0x30,0x57, 0x33,0xe0,0x77,0xad,0xff,0xea,0xef,0xbf,0x37,0x1f,0x75,0xed,0x86,0xb0,0x62,0x00, 0x00,0x03,0x00,0x51,0xa4,0xb9,0xf0,0x74,0x9e,0xe2,0xaf,0x7c,0x73,0xc1,0x85,0x05, 0x0d,0x43,0x97,0xe2,0x28,0xdf,0x64,0xe5,0x85,0x43,0x86,0x0c,0x49,0x5b,0x5e,0xd8, 0xa3,0x47,0x8f,0x78,0x79,0xa1,0x26,0x1d,0x16,0xcb,0x0c,0xf8,0x59,0xeb,0xaf,0x5f, 0xfe,0x1f,0x76,0xee,0x8a,0xa8,0x86,0x8c,0xe7,0x31,0x00,0x18,0x00,0x80,0x4c,0x68, 0x21,0xcc,0xf0,0x41,0xfc,0x17,0x57,0xae,0x1e,0x3f,0xf3,0xbd,0x58,0x23,0x08,0x66, 0x40,0xc7,0xa2,0x45,0x8b,0xfe,0x57,0x6e,0x57,0x8c,0xf2,0xc2,0x74,0x66,0xc0,0xaf, 0x5a,0x7f,0xcd,0xf6,0x67,0xcf,0x3f,0x9c,0xbc,0x80,0x01,0xc0,0x00,0x00,0x14,0x4d, 0xfc,0x85,0xcf,0xfa,0x1f,0x56,0xb2,0xd2,0xb4,0xa0,0x98,0x01,0xb7,0xbc,0x50,0xbf, 0xfc,0xd3,0x95,0x17,0x6a,0x04,0x21,0xdf,0xf2,0x42,0xbd,0x6e,0xfd,0xb9,0xf5,0xe7, 0xf7,0xb3,0xd6,0x5f,0x7f,0x26,0x4a,0xfd,0x30,0x00,0x80,0x01,0x00,0xc4,0x3f,0x23, 0x7e,0x79,0xfc,0x09,0x13,0x84,0x51,0xaa,0x03,0x7b,0x12,0x95,0x17,0x6a,0x2e,0x40, 0xa6,0xe5,0x85,0x33,0x67,0xce,0xf4,0xe5,0xf4,0x42,0x3f,0x46,0xfc,0x28,0x5f,0x84, 0x14,0x03,0x00,0x18,0x00,0x88,0x1e,0x1b,0xfb,0x2c,0xfe,0xef,0x35,0x69,0xe1,0xcb, 0x91,0xbf,0x51,0x35,0x03,0xd9,0x96,0x17,0x6a,0xf5,0x41,0xbe,0xe5,0x85,0xb9,0x8e, 0xe5,0xd7,0x8f,0x46,0x44,0x31,0x00,0x80,0x01,0x80,0xa8,0x8a,0xff,0xb3,0x3e,0x8a, 0xbf,0xf2,0xf5,0x99,0x67,0xe7,0x24,0x36,0x43,0x87,0x0e,0x8d,0x0b,0xa2,0x9f,0xbd, 0xf8,0x83,0x6e,0x06,0xdc,0xf2,0x42,0x15,0xfa,0x74,0xe5,0x85,0x6a,0x18,0xfc,0x28, 0x2f,0xcc,0x74,0xfc,0xf2,0xc8,0xa3,0x66,0x71,0x05,0x04,0x34,0xec,0xbc,0x88,0x01, 0xc0,0x00,0x00,0x14,0x43,0xfc,0x95,0x15,0x73,0xe7,0xe6,0x24,0x38,0x89,0xbe,0x86, 0xfd,0xec,0xc5,0x1f,0x74,0x33,0xa0,0x21,0x7f,0x0d,0xfd,0x17,0xb3,0xbc,0x30,0xd9, 0xf8,0xf3,0x83,0x0f,0xcc,0xbb,0x75,0x1b,0x22,0xa0,0x11,0xe0,0x25,0x0c,0x00,0x06, 0x00,0xa0,0x18,0xe2,0xff,0xe1,0x36,0xdb,0xe7,0x2c,0x3a,0x1a,0x01,0xc8,0xb4,0x17, 0x7f,0xd4,0xcd,0x80,0x26,0xde,0xe9,0x75,0x6a,0x72,0xa0,0x5e,0x77,0xaa,0xf2,0x42, 0xbd,0x6f,0xbe,0x76,0xf9,0x93,0xde,0x0d,0xfa,0x1c,0x11,0xcf,0x68,0xf0,0x0a,0x06, 0x00,0x03,0x00,0x60,0x27,0xfc,0x15,0x42,0xfc,0x95,0xe5,0xd7,0x5e,0x9f,0x77,0xb2, 0x9c,0xf6,0xe2,0xef,0xd3,0xa7,0x4f,0xca,0x64,0xb9,0x96,0x2d,0x5b,0xfa,0xd6,0x8b, 0xbf,0x50,0x9d,0xf8,0xfc,0x32,0x03,0x6e,0x79,0xa1,0x46,0x42,0x12,0xfd,0x2c,0x1a, 0x39,0xf1,0x73,0x7c,0x71,0xf4,0x60,0x84,0x33,0x42,0xbc,0x8a,0x01,0xc0,0x00,0x00, 0x14,0x22,0xdb,0xdf,0xcb,0x9f,0x79,0x1c,0xd1,0x9b,0x2c,0x59,0x6e,0xc0,0x80,0x01, 0x29,0x93,0xe5,0x1a,0x35,0x6a,0x64,0x06,0x0f,0x1e,0x1c,0xef,0xc5,0xbf,0x72,0xe5, 0xca,0xc8,0x9b,0x01,0xbb,0xbc,0x50,0xef,0x8b,0x9f,0x11,0x00,0x6d,0xdd,0x8c,0x68, 0x62,0x00,0x00,0x03,0x00,0x11,0x6c,0xef,0xfb,0x4c,0x01,0xc5,0xff,0xc3,0x4e,0x9d, 0x0b,0x16,0x9a,0xd7,0x64,0xb9,0xa9,0x53,0xa7,0x66,0xdc,0x8b,0xff,0xfe,0xfb,0xef, 0x37,0xbf,0xfc,0xf2,0x4b,0xe4,0xcd,0x80,0xaf,0xf7,0x58,0x72,0x37,0x96,0x54,0xab, 0x85,0x68,0x46,0x8c,0xd7,0x30,0x00,0x18,0x00,0xe0,0x60,0x9f,0xa7,0x0b,0x28,0xfe, 0xf1,0xd6,0xbf,0x17,0x5e,0x5c,0x14,0xa1,0xca,0xb6,0x17,0xff,0x84,0x09,0x13,0x0a, 0x96,0x2c,0x17,0xd6,0xa3,0x7c,0xff,0x96,0x73,0xf0,0xd7,0x5f,0xec,0xfb,0x47,0x94, 0x37,0x30,0x00,0x18,0x00,0x28,0x5f,0x9a,0xf8,0x70,0xaa,0x5f,0x26,0xfc,0x31,0xfb, 0xcd,0xe2,0x0b,0x97,0xd3,0x8b,0xff,0xfc,0xf3,0xcf,0x4f,0xdb,0x8b,0xbf,0xd0,0xe5, 0x85,0x61,0x36,0x03,0xdf,0x5e,0x7c,0x29,0x62,0x19,0x51,0xde,0xc4,0x00,0x60,0x00, 0xa0,0x3c,0x69,0x24,0x4c,0x2b,0x82,0xf8,0xbf,0xbf,0x71,0xab,0xbc,0xda,0xd8,0xfa, 0x35,0x16,0x2e,0x5c,0x18,0xef,0xc5,0x9f,0x2e,0x8b,0xbf,0xd0,0xe5,0x85,0x61,0x32, 0x03,0x2b,0xde,0x7e,0x3b,0x7e,0x76,0x03,0x62,0x19,0x4d,0xde,0xc6,0x00,0x60,0x00, 0xa0,0xfc,0xa8,0x2f,0x3c,0x56,0x04,0xf1,0x57,0xbe,0xfc,0xbf,0x93,0x03,0xd7,0xf9, 0xcf,0x4d,0x96,0xdb,0x6d,0xb7,0xdd,0x32,0x2e,0x2f,0x2c,0x84,0x89,0x09,0xb2,0x19, 0x20,0xf4,0x1f,0x7d,0xe6,0x61,0x00,0x30,0x00,0x50,0x5e,0xd4,0x15,0x1e,0x29,0x92, 0xf8,0xc7,0x7b,0xff,0x4b,0xd7,0xb8,0x20,0x0f,0xb7,0xbc,0x30,0xd3,0x5e,0xfc,0x85, 0x2a,0x2f,0xcc,0xd7,0x0c,0xec,0xb1,0xc7,0x1e,0xbe,0x6e,0x61,0x7c,0x7b,0xc9,0x65, 0x88,0x64,0xc4,0x79,0x07,0x03,0x80,0x01,0x80,0xf2,0xa1,0xb6,0xf0,0x50,0x11,0xc5, 0x7f,0x71,0xc5,0xaa,0x66,0xf5,0x0f,0x3f,0x98,0xb0,0x8c,0x6c,0x7b,0xf1,0x6b,0x79, 0x61,0x21,0x7a,0xf1,0xe7,0x6a,0x06,0xf4,0x94,0x3f,0x3f,0xc6,0xca,0x25,0x4b,0xcc, 0xe2,0x2a,0x35,0x10,0xc9,0x88,0xb3,0x08,0x03,0x80,0x01,0x80,0xf2,0xa0,0xa6,0x70, 0x5f,0xac,0x52,0x51,0x17,0x98,0x0f,0x3b,0x77,0x35,0x61,0x1d,0x6e,0x2f,0xfe,0x4c, 0xcb,0x0b,0x0b,0xd5,0x8b,0x3f,0x1b,0x33,0xa0,0x47,0xfd,0xfa,0x31,0x3e,0xe9,0xbb, 0x1f,0x02,0x59,0x06,0x9c,0x1d,0xab,0xc8,0xda,0x88,0x01,0x80,0xa8,0x23,0x13,0xc2, 0xdc,0x55,0x64,0xf1,0xcf,0xe7,0xf0,0x9f,0xa0,0x8d,0x6c,0xcb,0x0b,0x0b,0xd5,0x8b, 0x3f,0x9d,0x19,0xe8,0xdd,0xbb,0x77,0xde,0xff,0xc6,0xaf,0xd3,0x9e,0x42,0x1c,0xcb, 0x80,0x11,0xb2,0x1e,0xb0,0x36,0x62,0x00,0x20,0xe2,0xc8,0x84,0x30,0xb7,0x95,0x40, 0xfc,0xe3,0xfb,0xff,0x8f,0x3d,0x6e,0xa2,0x36,0xdc,0xf2,0x42,0xed,0xc5,0x9f,0xae, 0xbc,0x50,0x3b,0xf2,0x69,0x79,0xa1,0x26,0x1d,0x16,0xc2,0x0c,0x68,0x02,0xa0,0x56, 0x2d,0xe8,0x97,0xbf,0x86,0xff,0xf3,0xcd,0x01,0xd0,0xa3,0x9a,0x97,0xb6,0xef,0x84, 0x40,0x46,0x9c,0x5b,0x64,0x3d,0xa8,0xc4,0xda,0x88,0x01,0x80,0x68,0x53,0x51,0xb8, 0xa1,0x44,0xe2,0x1f,0xdf,0xff,0xff,0xf1,0x47,0x13,0xf5,0xa1,0xbd,0xf8,0xb5,0xbc, 0x30,0x5d,0x88,0xbe,0x18,0xa7,0x17,0xe6,0x3b,0xbe,0x1f,0x73,0x23,0x02,0x19,0x71, 0xee,0x95,0xf5,0xa0,0x3a,0x6b,0x23,0x06,0x00,0xa2,0xcf,0x88,0x52,0x89,0x7f,0xc8, 0xf7,0xff,0xfd,0xe8,0xc5,0x9f,0xae,0xbc,0x50,0x23,0x08,0x85,0x2a,0x2f,0xcc,0x65, 0xac,0x5a,0xbe,0xdc,0xbc,0x5b,0xbf,0x31,0x22,0x19,0x61,0xa6,0x4a,0xd2,0xdf,0x46, 0xd6,0x3c,0x3c,0x8a,0x1c,0x00,0x0c,0x00,0x44,0x93,0x8b,0xe5,0xe5,0x2e,0xe5,0x62, 0xf3,0xc5,0xb1,0xc7,0x9b,0x72,0x1e,0x5a,0x5e,0xa8,0xb9,0x00,0x99,0x96,0x17,0xce, 0x9c,0x39,0xb3,0x60,0xa7,0x17,0x66,0x32,0xbe,0x3e,0xf7,0x7c,0x44,0x32,0xc2,0xe8, 0x29,0x9f,0x4d,0xac,0x79,0x77,0x40,0xac,0x02,0xc7,0x01,0x63,0x00,0x20,0x8a,0x9c, 0x51,0x62,0xf1,0x57,0x7e,0x18,0x7b,0xab,0x61,0xe4,0x56,0x5e,0xa8,0xd5,0x07,0x85, 0x28,0x2f,0x4c,0xfa,0xf5,0xff,0xdd,0x77,0x66,0x49,0xad,0xba,0x08,0x65,0x44,0x51, 0xa1,0x6f,0x65,0xcd,0xb3,0xdd,0x44,0xfc,0xb5,0x07,0xc0,0x73,0x18,0x00,0x0c,0x00, 0x44,0x8b,0xa3,0x02,0x20,0xfe,0xf1,0xfe,0xff,0xaf,0xbf,0x81,0xf2,0xa7,0x28,0x2f, 0x54,0xa1,0x4f,0x57,0x5e,0xa8,0x86,0xa1,0x50,0xe5,0x85,0x1b,0x44,0x2b,0x2e,0xb8, 0x10,0xa1,0x8c,0x70,0xbf,0xff,0x4e,0x22,0xf8,0xee,0xbc,0xda,0x46,0xfe,0xf7,0x1c, 0xa7,0x17,0xc8,0x93,0x18,0x00,0x0c,0x00,0x44,0x07,0x0d,0xeb,0x2d,0x2a,0x66,0xa3, 0x9f,0x64,0x48,0xff,0xf8,0x35,0x45,0xfc,0x82,0x0d,0x73,0x79,0xa1,0x86,0xfe,0x4b, 0x59,0x5e,0xb8,0xfa,0xfb,0xef,0xcd,0xbb,0x75,0xea,0x23,0x96,0x11,0x6d,0xf5,0xdb, 0xdd,0x12,0xff,0x36,0xc2,0xab,0xd6,0xfa,0x30,0x19,0x03,0x80,0x01,0x80,0x68,0xd0, 0xc3,0x09,0xeb,0x05,0x61,0xe1,0xf9,0x70,0xeb,0xed,0x50,0xf7,0x1c,0xca,0x0b,0x35, 0x29,0x50,0x93,0x03,0x35,0x49,0x30,0x55,0x79,0xe1,0xd0,0xa1,0x43,0xfd,0x6b,0xf9, 0xcb,0x69,0x7f,0x91,0x64,0xa1,0xac,0x05,0x7d,0x2d,0xf1,0xd7,0xfd,0xff,0x67,0x3d, 0xeb,0xc3,0x3d,0xf4,0x02,0xc0,0x00,0x40,0xf8,0xd9,0x4e,0x5e,0xf4,0xb7,0x03,0x22, 0xfe,0xf1,0x04,0xc0,0x41,0xc7,0xa2,0xe8,0x3e,0x94,0x17,0x6a,0xd9,0x60,0xa2,0xf2, 0x42,0xdd,0x1e,0xf0,0xe5,0xeb,0x5f,0xca,0x34,0xdf,0xad,0xdb,0x10,0xc1,0x8c,0x20, 0x47,0x58,0x19,0xfe,0x9a,0xf9,0x3f,0x35,0xc1,0xfa,0x30,0x1e,0x03,0x80,0x01,0x80, 0x70,0x23,0x0f,0xd6,0xbc,0x16,0x20,0xf1,0x57,0x96,0x5f,0x73,0x1d,0x0a,0x5e,0xa0, 0xf2,0x42,0x15,0x7f,0xbf,0x22,0x00,0xdf,0x5d,0x7d,0x0d,0x62,0x19,0x41,0x4e,0xb2, 0xc4,0xbf,0x9a,0x70,0x4f,0x92,0x72,0xe0,0x1b,0x31,0x00,0x18,0x00,0x08,0x2f,0x8d, 0x84,0x19,0x01,0x13,0xff,0x30,0x9c,0x00,0xc8,0x90,0x2d,0x87,0x35,0x6b,0xcc,0x07, 0xad,0xdb,0x22,0x98,0x11,0xe3,0x12,0x4b,0xfc,0xb5,0x11,0xd8,0xcd,0x29,0x7a,0x81, 0x5c,0x83,0x01,0xc0,0x00,0x40,0x78,0x0f,0xf7,0x99,0x1c,0x40,0xf1,0x57,0x56,0x2e, 0x5c,0x88,0xc2,0x06,0x7c,0x68,0x9b,0x66,0x04,0x33,0x5a,0x8c,0x16,0x41,0xaf,0x60, 0xad,0x11,0x57,0xa4,0x69,0x04,0x36,0x0c,0x03,0x80,0x01,0x80,0xf0,0xa1,0x7d,0xbc, 0xc7,0x95,0xb0,0xcb,0x5f,0x4a,0x2a,0x54,0xa1,0x02,0x20,0x04,0xe3,0x93,0x7d,0xfa, 0x21,0x9a,0x11,0xe2,0x76,0x59,0x0f,0xaa,0x58,0x6b,0xc4,0x39,0x19,0x94,0x03,0x5f, 0x40,0x27,0x40,0x0c,0x00,0x84,0x8f,0x61,0x41,0x15,0x7f,0xe1,0xfd,0x4d,0x37,0x43, 0x5d,0x03,0x3e,0xfe,0x7c,0xff,0xfd,0xb8,0x51,0x43,0x38,0xa3,0xc1,0x83,0xb2,0x1e, 0xd4,0xb4,0xd6,0x87,0x23,0x33,0xec,0x05,0x72,0x06,0x06,0x00,0x03,0x00,0xe1,0x62, 0x70,0x40,0x1a,0xfd,0x24,0xe3,0xe3,0xde,0x7b,0xa3,0xb0,0x01,0x1f,0x7a,0x4c,0x33, 0xc2,0x19,0x0d,0xa6,0xc9,0x36,0x60,0x7d,0x6b,0x7d,0xe8,0x9b,0x45,0x2f,0x90,0x13, 0x31,0x00,0x18,0x00,0x08,0x0f,0x3d,0xe5,0xe5,0x5e,0x18,0xd0,0x7d,0x7f,0x97,0x2f, 0x8f,0xff,0x3f,0x14,0x36,0xc0,0x63,0xcd,0xca,0x95,0x1c,0xfa,0x13,0x11,0x9e,0x97, 0xb5,0xa0,0x85,0xb5,0x3e,0x68,0xd3,0x9f,0x79,0x59,0xac,0x0f,0x47,0x63,0x00,0x30, 0x00,0x10,0x0e,0xb6,0x14,0xde,0x0c,0xb8,0xf8,0x2b,0xdf,0x5e,0x72,0x19,0x2a,0x1b, 0xe0,0xf1,0xf3,0xc3,0x8f,0x20,0x9e,0x11,0xe0,0x75,0x59,0x0b,0xb6,0xb0,0xd6,0x87, 0x8e,0x22,0xfe,0xd9,0xae,0x0f,0x87,0x63,0x00,0x30,0x00,0x10,0x7c,0x1a,0x24,0xe8, 0xe2,0x15,0x54,0x38,0x04,0x28,0xd8,0xe3,0xb3,0x01,0x87,0x23,0xa0,0x21,0x47,0x9b, 0x7e,0x6d,0x6f,0x75,0xf9,0xdb,0x54,0x78,0x29,0x87,0xf5,0xe1,0x00,0xeb,0xef,0x00, 0x0c,0x00,0x04,0x90,0xca,0xc2,0xdd,0x01,0x4e,0xfa,0x53,0xde,0x68,0xd8,0xd4,0x8c, 0x3f,0x7c,0xa0,0x19,0x7e,0xc1,0x05,0x66,0xc9,0x82,0x05,0xa8,0x6c,0x40,0xc7,0xea, 0x5f,0x7e,0x31,0x4b,0xaa,0xd7,0x46,0x44,0x43,0x8c,0xb6,0xfb,0xde,0xdd,0x12,0x6e, 0xed,0x05,0xf2,0x4c,0x8e,0x1f,0x07,0x7b,0x61,0x00,0x30,0x00,0x10,0x6c,0x86,0x06, 0x3c,0xe9,0x4f,0xc5,0xff,0xca,0xf3,0x87,0x98,0xcb,0x2e,0xbb,0x2c,0xce,0xa7,0x9f, 0x7e,0x8a,0xd2,0x06,0x74,0xfc,0x38,0xf1,0x2e,0x44,0x34,0xe4,0x1c,0x64,0x89,0xb6, 0x2c,0xf2,0x66,0x4a,0x1e,0x91,0xc1,0xdd,0x30,0x00,0x18,0x00,0x08,0x2e,0xfb,0xcb, 0x0b,0x1a,0xf4,0x05,0x49,0xbf,0xfc,0x5d,0xf1,0x57,0xbe,0x97,0xd3,0xe5,0x18,0xd4, 0xfe,0x83,0xff,0x0c,0xb6,0xf6,0xec,0xb5,0xe6,0xff,0xce,0x3c,0x23,0x83,0x5d,0x31, 0x00,0x18,0x00,0x08,0x26,0xed,0x84,0xb7,0x43,0xb0,0xef,0x3f,0x7c,0xc8,0x05,0x1b, 0x18,0x80,0x3f,0xff,0xfc,0x13,0xa5,0x0d,0xe0,0x58,0xf5,0xcd,0x37,0x66,0x71,0xa5, 0x6a,0x08,0x69,0x48,0x39,0xcb,0x12,0x7f,0xed,0xf6,0x37,0xc6,0x87,0x6d,0xc1,0x4e, 0x18,0x00,0x0c,0x00,0x04,0x8f,0xda,0xc2,0xd3,0x21,0x49,0xfa,0xd3,0x7d,0x7f,0xdb, 0x00,0xdc,0x7c,0xf3,0xcd,0xe6,0xc5,0x17,0x5f,0x34,0xcb,0x97,0x2f,0x47,0x75,0x83, 0x14,0xfe,0xbf,0xe3,0x4e,0x84,0x34,0xa4,0x5c,0xe9,0x69,0xd9,0x7b,0xb1,0x4f,0xdb, 0x82,0x6d,0x59,0x6b,0x31,0x00,0x10,0x3c,0xae,0x0f,0x78,0xd2,0x5f,0xaa,0x2d,0x00, 0x9b,0x71,0xe3,0xc6,0x99,0x97,0x5f,0x7e,0xd9,0xfc,0x28,0xc7,0xce,0x32,0x4a,0x9c, 0xfd,0x7f,0xe8,0x40,0xc4,0x34,0x84,0x8c,0x95,0xb5,0xa0,0x92,0xb5,0x36,0x9c,0xea, 0x63,0x4e,0xd0,0xc6,0xac,0xb5,0x18,0x00,0x08,0x16,0x03,0x42,0xb0,0xef,0x9f,0x2a, 0x09,0x30,0x19,0xe3,0xc7,0x8f,0x37,0xaf,0xbd,0xf6,0x9a,0xf9,0xf9,0xe7,0x9f,0x51, 0xe3,0x22,0x8f,0xb5,0xab,0x56,0x99,0x77,0xeb,0x36,0x44,0x50,0x43,0x86,0x1e,0xe3, 0x5b,0xcd,0x5a,0x1b,0x0e,0xf3,0x39,0x21,0xb8,0x01,0xeb,0x2d,0x06,0x00,0x82,0x43, 0xdb,0x90,0xec,0xfb,0x27,0x32,0x01,0xb7,0x0d,0x3c,0xc2,0x5c,0x7e,0xc9,0x25,0x69, 0x8d,0x80,0x72,0xfb,0xed,0xb7,0x9b,0xd9,0xb3,0x67,0x9b,0x5f,0x7f,0xfd,0x15,0x75, 0x2e,0xc2,0xf8,0xfd,0x85,0x17,0x11,0xd4,0x90,0x31,0x55,0xd6,0x81,0x3a,0xd6,0xda, 0xb0,0x67,0x01,0xba,0x80,0xd6,0x64,0xcd,0xc5,0x00,0x40,0x30,0xa8,0x2a,0x4c,0x0d, 0xa1,0xf8,0x6f,0xd0,0xa0,0xa4,0x56,0x5d,0xf3,0x68,0xb7,0x9d,0xcd,0x8d,0xc7,0xfe, 0x3b,0x23,0x23,0xa0,0x4c,0x9c,0x38,0xd1,0xbc,0xf5,0xd6,0x5b,0xe6,0xf7,0xdf,0x7f, 0x47,0xa9,0x0b,0x34,0xbe,0x39,0xff,0x02,0x44,0x35,0x44,0xcc,0x90,0x75,0xa0,0xb1, 0xb5,0x36,0x74,0xcd,0xb2,0xc5,0x6f,0xa6,0x54,0x64,0xdd,0xc5,0x00,0x40,0x30,0x38, 0x27,0xe0,0xf5,0xfe,0xd9,0xf2,0x66,0xbd,0x46,0x66,0xf2,0x6e,0x3d,0xcd,0xa8,0x93, 0x4e,0xce,0xc8,0x08,0x5c,0x7e,0xf9,0xe5,0xe6,0xee,0xbb,0xef,0x36,0x73,0xe7,0xce, 0x35,0x2b,0x38,0x4e,0xd8,0xd7,0xf1,0xe1,0xd6,0xdb,0x21,0xac,0x21,0xe1,0x65,0x11, 0xfa,0x56,0x9e,0x16,0xe0,0x6f,0x14,0x40,0xfc,0xd5,0x50,0xb0,0xee,0x62,0x00,0x20, 0x00,0x74,0x0e,0xc1,0x21,0x3f,0xf9,0xf0,0x5a,0x93,0x16,0xe6,0xfe,0x3d,0xf7,0x36, 0xd7,0x9e,0x7e,0x46,0x46,0x66,0x60,0xd8,0xb0,0x61,0xe6,0xde,0x7b,0xef,0x35,0xf3, 0xe7,0xcf,0x37,0x2b,0xe5,0xf0,0x1a,0x46,0x1e,0xe5,0x7f,0x5f,0x7d,0x85,0xb0,0x86, 0xc5,0x34,0xcb,0x1a,0xd0,0xd1,0x2a,0xcd,0xd3,0x83,0x7e,0x5e,0x28,0xd0,0xba,0xf0, 0x1a,0x06,0x00,0x03,0x00,0xa5,0x47,0x93,0x7c,0xa6,0x45,0x58,0xfc,0xbd,0xbc,0xd8, 0xb2,0x8d,0xb9,0xbb,0xdf,0x7e,0x66,0xc4,0x39,0xe7,0x66,0x64,0x06,0xae,0xb8,0xe2, 0x0a,0x73,0xff,0xfd,0xf7,0x9b,0x85,0x0b,0x17,0xd2,0x63,0x20,0x87,0xf1,0xf3,0xe4, 0x29,0x88,0x6b,0x08,0xd0,0x2f,0xf2,0x9d,0x2c,0xf1,0xaf,0x5f,0xe0,0x75,0x61,0x26, 0x06,0x00,0x03,0x00,0xa5,0x67,0x48,0xc4,0x42,0xff,0x99,0xb2,0xb0,0x42,0x55,0xf3, 0x5c,0xdb,0x76,0xe6,0x8e,0x83,0xfb,0xff,0xad,0x99,0x50,0x32,0x86,0x0f,0x1f,0x6e, 0x1e,0x7a,0xe8,0x21,0xb3,0x64,0xc9,0x12,0xb3,0x4a,0x32,0xdb,0x19,0xe9,0xc7,0xd7, 0x67,0x9e,0x8d,0xc0,0x06,0xfd,0x5d,0x10,0x31,0xb6,0xfb,0xf2,0x6b,0x72,0xde,0x83, 0x05,0x2e,0x05,0x9e,0x86,0x01,0xc0,0x00,0x40,0x69,0xd9,0x2a,0xe2,0xa1,0xff,0x4c, 0x59,0x50,0xb9,0xba,0x79,0xba,0xe3,0x36,0xe6,0xb6,0xc3,0x8f,0x30,0xc3,0x2e,0xba, 0x28,0x23,0x33,0x70,0xd5,0x55,0x57,0x99,0x87,0x1f,0x7e,0xd8,0xbc,0xf7,0xde,0x7b, 0x66,0xf5,0xea,0xd5,0x28,0x7d,0x92,0xf1,0xd1,0x8e,0xdd,0x11,0xd9,0x80,0x33,0xd0, 0xea,0xf2,0xa7,0x87,0x7f,0x4d,0x28,0x42,0x1f,0x90,0x29,0x18,0x00,0x0c,0x00,0x94, 0x8e,0x0a,0x45,0x70,0xf9,0xa1,0x0c,0x85,0x56,0xab,0x6d,0x9e,0xd8,0xae,0xab,0x19, 0x7b,0xd4,0xd1,0x19,0x97,0x15,0x8e,0x18,0x31,0xc2,0x3c,0xfa,0xe8,0xa3,0x66,0xe9, 0xd2,0xa5,0x66,0xcd,0x9a,0x35,0xa8,0xbe,0x33,0xd6,0xfc,0xf1,0x87,0x59,0x5c,0xa5, 0x06,0xf3,0x2a,0xc0,0x9c,0x68,0x89,0xbf,0x72,0x6d,0x91,0xd6,0x84,0x7b,0x3d,0xdd, 0x05,0x01,0x03,0x00,0x45,0x64,0x60,0x99,0x86,0xfe,0xb3,0x2b,0x2b,0xac,0xb7,0xae, 0xac,0xf0,0xdf,0xc7,0x65,0x5c,0x56,0x38,0x72,0xe4,0x48,0xf3,0xf8,0xe3,0x8f,0x9b, 0x8f,0x3e,0xfa,0xa8,0xec,0xcd,0xc0,0x6f,0xcf,0xbf,0xc0,0x3c,0x0a,0x30,0x17,0x7b, 0xc4,0xbf,0x98,0xdb,0x81,0x13,0x30,0x00,0x18,0x00,0x28,0x0d,0x0d,0x85,0xd7,0x09, 0xfd,0x67,0xc5,0xec,0xfa,0x8d,0xcd,0x43,0x3d,0x7a,0x65,0x5c,0x56,0xa8,0x5c,0x7b, 0xed,0xb5,0xe6,0xc9,0x27,0x9f,0x34,0x1f,0x7f,0xfc,0xb1,0x59,0xbb,0x76,0x6d,0xd9, 0x19,0x80,0xef,0xae,0x1c,0xc1,0xdc,0x09,0x28,0xda,0xee,0xbb,0x82,0xb5,0x26,0x9c, 0x58,0xe4,0x0f,0x82,0xff,0x60,0x00,0x30,0x00,0x50,0x1a,0x2e,0x23,0xf4,0x9f,0x17, 0xaf,0x34,0xdb,0xc4,0xdc,0xb7,0xd7,0x3e,0xe6,0x9a,0x33,0xce,0xcc,0xd8,0x0c,0x5c, 0x7f,0xfd,0xf5,0x66,0xfa,0xf4,0xe9,0xe6,0xb3,0xcf,0x3e,0x2b,0x9f,0xfe,0xff,0xfd, 0x0f,0x63,0xbe,0x04,0x10,0xfd,0xfa,0xae,0x62,0xad,0x07,0x07,0x95,0xa0,0xfd,0xf7, 0xb5,0x18,0x00,0x0c,0x00,0x14,0x9f,0x36,0xc2,0x02,0xbe,0xfe,0x7d,0x61,0x91,0xf0, 0xc2,0xa6,0x9b,0x99,0xbb,0xf7,0xdd,0xdf,0x8c,0x38,0xf7,0xdc,0x8c,0xcd,0xc0,0xe8, 0xd1,0xa3,0xcd,0x8c,0x19,0x33,0xcc,0x97,0x5f,0x7e,0x19,0x69,0x03,0xb0,0x74,0xcb, 0x8e,0xcc,0x93,0x80,0xa1,0x79,0x3f,0x76,0x0b,0xde,0xdd,0x45,0xfc,0xdf,0x29,0xc1, 0x7a,0x30,0x0c,0x03,0x80,0x01,0x80,0xe2,0xf3,0x1f,0xbe,0xfe,0x0b,0x53,0x4a,0x55, 0x51,0xca,0x0a,0xb7,0x68,0x6f,0x6e,0x3f,0x64,0xc0,0xdf,0x8e,0x28,0x4e,0xc5,0x0d, 0x37,0xdc,0x60,0x9e,0x7b,0xee,0x39,0xf3,0xcd,0x37,0xdf,0x44,0x2f,0x01,0x50,0xee, 0x09,0x73,0x23,0x38,0x68,0xe9,0x5d,0x7d,0x4f,0x03,0xb0,0x52,0x9d,0xfd,0x31,0xd4, 0x93,0x7f,0x00,0x18,0x00,0x28,0x30,0xdb,0x87,0xec,0xa4,0xbf,0xb0,0xf2,0x4e,0xe5, 0x1a,0x66,0xfa,0x56,0x52,0x56,0x38,0xf0,0x1f,0x52,0x56,0x78,0x71,0xc6,0x66,0xe0, 0xa6,0x9b,0x6e,0x32,0xcf,0x3f,0xff,0xbc,0xf9,0xee,0xbb,0xef,0x42,0x6f,0x00,0xfe, 0x78,0x6b,0x0e,0x73,0x21,0x40,0xcc,0x12,0xa1,0x6f,0x61,0xad,0x05,0x9b,0x0b,0xaf, 0x96,0x30,0x12,0x78,0x16,0x06,0x00,0x03,0x00,0xc5,0x65,0x22,0x5f,0xff,0xc5,0x2f, 0x2b,0xac,0x2e,0x65,0x85,0xdb,0xef,0x60,0x6e,0x3e,0x7a,0x90,0xb9,0xec,0xd2,0x4b, 0x33,0x36,0x03,0xb7,0xdc,0x72,0x8b,0x79,0xf1,0xc5,0x17,0xcd,0xf7,0xdf,0x7f,0x1f, 0x4a,0x03,0xf0,0xe3,0x9d,0x13,0x79,0xfe,0x41,0x69,0x85,0x2d,0x42,0xdf,0xd6,0x5a, 0x07,0x9a,0x09,0x33,0x4b,0xbc,0x0d,0xf8,0x7f,0x18,0x00,0x0c,0x00,0x14,0xb7,0xdf, 0x3f,0x8b,0x61,0x69,0x99,0x53,0xbb,0xbe,0x79,0x64,0xa7,0x5d,0xcc,0x0d,0xc7,0x1d, 0x9f,0xb1,0x11,0x50,0xc6,0x8d,0x1b,0x67,0x5e,0x79,0xe5,0x15,0xf3,0xd3,0x4f,0x3f, 0x85,0xa7,0x03,0xe0,0xd9,0xe7,0xf2,0xcc,0x83,0x50,0xca,0x2a,0x42,0xdf,0xd9,0xea, 0xf2,0x57,0x57,0x78,0x3c,0x00,0x39,0x40,0x83,0x30,0x00,0x18,0x00,0x28,0x1e,0xb7, 0xf0,0xf5,0x1f,0x28,0xde,0x68,0xd0,0xc4,0x3c,0xb4,0x7b,0x2f,0x73,0xfd,0xc9,0xa7, 0x64,0x65,0x06,0x26,0x4c,0x98,0x60,0x5e,0x7b,0xed,0x35,0xf3,0xcb,0x2f,0xbf,0x04, 0xda,0x00,0x7c,0xd2,0x67,0x5f,0x9e,0x73,0xa9,0xb7,0xa2,0x44,0xe8,0x7b,0x58,0xe2, 0x2f,0x0b,0xb3,0x99,0x14,0x90,0x75,0x60,0x20,0x06,0x00,0x03,0x00,0xc5,0xa1,0xbd, 0xc0,0x82,0x18,0xe0,0xb2,0xc2,0xe6,0x2d,0xa5,0xac,0xb0,0x8f,0x19,0x79,0xe6,0x59, 0x59,0x99,0x81,0x3b,0xee,0xb8,0xc3,0xcc,0x9e,0x3d,0xdb,0xfc,0xf6,0xdb,0x6f,0xc1, 0xab,0x00,0x68,0xb7,0x15,0xcf,0xb6,0xa4,0x15,0x2a,0x95,0xcd,0x01,0x96,0xf8,0x57, 0x0a,0xd8,0x47,0xc0,0x81,0xd6,0xcf,0x06,0x18,0x00,0x28,0x20,0xd7,0xf0,0xf5,0x1f, 0x9a,0xb2,0xc2,0xe7,0x5b,0x6d,0x6e,0xee,0xda,0xef,0x00,0x73,0xd5,0x79,0xe7,0x65, 0x6c,0x04,0x2e,0xbf,0xfc,0x72,0x33,0x71,0xe2,0x44,0x33,0x67,0xce,0x1c,0xf3,0xfb, 0xef,0xbf,0x07,0xc2,0x00,0x2c,0xa9,0x51,0x87,0x67,0x5a,0x42,0x8e,0xf6,0x7c,0x61, 0x5f,0x15,0xb0,0x35,0x60,0x1f,0x0c,0x00,0x06,0x00,0x0a,0x8f,0x96,0xfd,0xcc,0xa3, 0xee,0x3f,0x84,0x65,0x85,0xd5,0xcc,0xb3,0x5b,0x76,0x88,0x97,0x15,0x5e,0x31,0x74, 0x68,0x56,0x66,0xe0,0x9e,0x7b,0xee,0x31,0x73,0xe7,0xce,0x35,0x2b,0x56,0xac,0x28, 0x89,0xf8,0xaf,0x92,0x92,0x46,0x9e,0x61,0xe9,0x38,0xd3,0x23,0xfe,0x67,0x05,0xb0, 0xed,0x77,0x0f,0x0c,0x00,0x06,0x00,0x0a,0xcf,0xbf,0xe9,0xf9,0x1f,0xfe,0xbd,0x5c, 0x39,0x50,0xe7,0xa9,0x4e,0xdb,0x9a,0x71,0x47,0x1c,0x99,0x55,0x59,0xe1,0xb0,0x61, 0xc3,0xcc,0xa4,0x49,0x93,0xcc,0x3b,0xef,0xbc,0x63,0xfe,0xfc,0xf3,0xcf,0xe2,0x95, 0x00,0xce,0x7e,0x93,0xe7,0x56,0x22,0x86,0x7b,0x1a,0xec,0x0c,0x0e,0xe8,0xfb,0xbf, 0x03,0x06,0x00,0x03,0x00,0x85,0x3f,0xf1,0xef,0x19,0xbe,0xfe,0x23,0x56,0x56,0x58, 0xc7,0x3c,0xde,0x65,0x47,0x73,0xf3,0xa0,0x63,0xb2,0x2a,0x2b,0x1c,0x3e,0x7c,0xb8, 0x79,0xe0,0x81,0x07,0xcc,0xc2,0x85,0x0b,0xcd,0x5f,0x7f,0xfd,0x55,0x50,0x03,0xf0, 0xf3,0x43,0x93,0x79,0x56,0x25,0xe0,0x26,0x11,0xff,0x8a,0xd6,0xfb,0xbf,0xaf,0x88, 0xec,0xa2,0x80,0xbe,0xff,0x5b,0x63,0x00,0x30,0x00,0x50,0x58,0x76,0xa5,0xf4,0x2f, 0xd2,0xbc,0x55,0xa7,0x81,0x79,0xa4,0xfb,0xae,0x66,0xcc,0xf1,0x27,0x64,0x95,0x3c, 0x78,0xe5,0x95,0x57,0x9a,0xc9,0x93,0x27,0x9b,0x25,0x4b,0x96,0x98,0x55,0xab,0x56, 0xf9,0x6e,0x00,0x96,0x5f,0x37,0x8a,0xe7,0x53,0x64,0xee,0x12,0xf1,0xaf,0x6a,0xbd, 0xfb,0x3b,0xcb,0xbb,0x3f,0x3f,0xc0,0xe6,0xbf,0x2d,0xeb,0x33,0x06,0x00,0x0a,0xcb, 0x08,0x92,0xff,0xca,0xa7,0xac,0xb0,0x61,0x53,0xf3,0x60,0xcf,0x3d,0xcc,0x75,0xa7, 0x9c,0x9a,0x95,0x19,0xb8,0xea,0xaa,0xab,0xcc,0xc3,0x0f,0x3f,0x6c,0xde,0x7f,0xff, 0x7d,0xb3,0x7a,0xf5,0x6a,0x7f,0x7a,0x00,0x9c,0x79,0x36,0xcf,0xa4,0x88,0x3c,0x22, 0x42,0x5f,0xc7,0x7a,0xef,0x3b,0x89,0xf8,0xbf,0x15,0xf0,0xc8,0xdf,0x26,0xac,0xcf, 0x18,0x00,0x28,0x1c,0xfa,0x35,0xf0,0x26,0xe1,0xff,0xb2,0xe4,0x65,0x29,0x2b,0x9c, 0xb4,0x77,0x5f,0x33,0xf2,0xac,0xec,0xca,0x0a,0xaf,0xbe,0xfa,0x6a,0x33,0x75,0xea, 0x54,0xb3,0x74,0xe9,0x52,0xb3,0x66,0xcd,0x9a,0x9c,0x0d,0xc0,0x17,0x47,0x0f,0xe6, 0x39,0x14,0x09,0xdd,0xe2,0x6b,0x64,0xbd,0xf7,0xad,0x84,0x57,0x42,0xf0,0xde,0x37, 0x62,0x8d,0xc6,0x00,0x40,0xe1,0xd8,0x8b,0xf0,0x3f,0x65,0x85,0x15,0xa4,0xac,0xb0, 0xb5,0x94,0x15,0xee,0x7f,0xa0,0x94,0x15,0x9e,0x9f,0x95,0x19,0xb8,0xe6,0x9a,0x6b, 0xcc,0xe3,0x8f,0x3f,0x6e,0x96,0x2d,0x5b,0x66,0xd6,0xae,0x5d,0x9b,0x95,0x01,0xf8, 0x74,0xff,0x83,0xb8,0xff,0x45,0xe0,0x25,0x11,0xfa,0x4d,0xad,0x77,0x5e,0x45,0x75, 0x46,0x48,0x4c,0x7f,0x4d,0xd6,0x68,0x0c,0x00,0x14,0x8e,0x31,0x84,0xff,0xc1,0x53, 0x56,0x38,0xa3,0x5d,0x47,0xf3,0xdf,0xfe,0x87,0x4a,0x59,0xe1,0x85,0x59,0x99,0x81, 0xeb,0xae,0xbb,0xce,0x4c,0x9b,0x36,0xcd,0x7c,0xf2,0xc9,0x27,0x19,0x99,0x81,0xf7, 0x7b,0xef,0xcd,0x3d,0x2f,0x30,0xb3,0x45,0xe8,0x3b,0x58,0xef,0x7b,0x6d,0xe1,0x91, 0x10,0x45,0xfc,0x2a,0xb1,0x46,0x63,0x00,0xa0,0x30,0x54,0x21,0xfc,0x0f,0x29,0xcb, 0x0a,0x6b,0x9a,0xa7,0xb6,0xee,0x6c,0xc6,0xfd,0xe3,0x48,0x73,0xf9,0xc5,0x17,0x67, 0x65,0x06,0x46,0x8d,0x1a,0x65,0x9e,0x7e,0xfa,0x69,0xf3,0xf9,0xe7,0x9f,0x27,0x35, 0x00,0x63,0x6f,0xfc,0x8f,0xb9,0xed,0xf0,0x23,0xe2,0x79,0x09,0xdc,0xef,0x02,0x54, 0x82,0xc8,0xbb,0xdd,0xcd,0xca,0xa2,0xaf,0x1a,0xb2,0x83,0xbe,0xf4,0xe7,0x67,0x9d, 0xc6,0x00,0x40,0x81,0xe8,0x46,0xf8,0x1f,0x32,0x64,0x6e,0x8d,0x8d,0xcc,0x63,0x5d, 0xbb,0x99,0x9b,0x06,0x0d,0xce,0xaa,0xac,0x50,0x19,0x33,0x66,0x8c,0x99,0x31,0x63, 0x86,0xf9,0xea,0xab,0xaf,0x36,0x30,0x00,0x1a,0x31,0x88,0x57,0x1b,0x9c,0x3f,0x04, 0x13,0xe0,0x77,0x24,0x47,0xc4,0x73,0x2f,0x4b,0xfc,0xb5,0xec,0xef,0xc6,0x90,0x45, 0xfb,0x5e,0xc7,0x00,0x60,0x00,0xa0,0x70,0x9c,0x4d,0xf3,0x1f,0xc8,0xa5,0xac,0x70, 0xa3,0x06,0xe6,0xe1,0x9d,0x77,0x33,0x63,0x4e,0x38,0x31,0x2b,0x23,0xa0,0xdc,0x78, 0xe3,0x8d,0x66,0xe6,0xcc,0x99,0xe6,0x1b,0xe9,0x02,0x78,0xc5,0x15,0x57,0xfc,0xef, 0xff,0x1f,0x7f,0xf8,0x40,0xee,0xad,0x8f,0x1c,0xe6,0xe9,0xf2,0x77,0x59,0x08,0xb7, 0xfa,0x9e,0xc7,0x00,0x60,0x00,0xa0,0x70,0x4c,0x25,0xfc,0x0f,0xf9,0x7e,0xa5,0x35, 0x6a,0x66,0x1e,0xec,0xd5,0xdb,0x5c,0x77,0xea,0x69,0x59,0x9b,0x81,0x0d,0x1a,0x10, 0x5d,0x70,0x01,0xf7,0xd3,0x27,0x4e,0xf0,0x88,0xff,0xe9,0x21,0x35,0xfa,0x4f,0x61, 0x00,0x30,0x00,0x50,0x18,0x1a,0x71,0xf2,0x1f,0xf8,0x5d,0x56,0xd8,0x62,0x53,0x73, 0xef,0x3e,0x7d,0xcd,0xd5,0x67,0x9f,0x9d,0xbd,0x01,0x18,0x82,0x01,0xf0,0x83,0xa1, 0x1e,0xf1,0x1f,0x18,0xe2,0x28,0xdf,0xc3,0x18,0x00,0x0c,0x00,0x14,0x86,0xde,0xec, 0xff,0x43,0x01,0xcb,0x0a,0x67,0xb5,0x69,0x6b,0x26,0x1e,0x70,0x50,0x7c,0x7f,0x3f, 0x13,0x03,0xc0,0x16,0x40,0xfe,0x5c,0xe7,0xe9,0xef,0xbf,0xb7,0xbc,0xe3,0x0b,0x43, 0x1c,0xe5,0x9b,0xe4,0xb9,0x1e,0xc0,0x00,0x00,0xfb,0xff,0x10,0x22,0x16,0x54,0xd2, 0xb2,0xc2,0xad,0xcc,0x7f,0x07,0x1c,0x66,0xae,0xb8,0x30,0x71,0x59,0x21,0x49,0x80, 0xf9,0x33,0x5e,0xc4,0xb2,0xb2,0xf5,0x7e,0xef,0x28,0xe2,0x1f,0xf6,0xd3,0x3d,0xff, 0x8b,0x01,0xc0,0x00,0x40,0x61,0xb8,0x9b,0xfa,0x7f,0x28,0x32,0xf3,0xab,0xd6,0x34, 0xd3,0xb6,0xd9,0xce,0xdc,0xfa,0x8f,0x7f,0xc6,0x43,0xfe,0xba,0xef,0xaf,0x5f,0xfe, 0x88,0x7f,0x7e,0x3c,0x20,0xef,0x72,0x0d,0xeb,0xdd,0x6e,0x2f,0xcc,0x8e,0x40,0x7e, 0xcf,0xcd,0x18,0x00,0x0c,0x00,0xf8,0x8f,0x7e,0x29,0xcc,0x25,0x01,0x10,0x20,0xf4, 0x3c,0x21,0xef,0x71,0x3d,0xeb,0xdd,0xd6,0xde,0xf9,0x2f,0x46,0xe4,0xdd,0xbe,0x0e, 0x03,0x80,0x01,0x00,0xff,0xd9,0x82,0x04,0x40,0x80,0xd0,0x33,0x53,0x84,0xbe,0xb9, 0xf5,0x5e,0x37,0x10,0xa6,0x47,0xc8,0xd8,0x5f,0x81,0x01,0xc0,0x00,0x80,0xff,0xf4, 0x25,0x01,0x10,0x20,0xd4,0xbc,0x2a,0x42,0xbf,0xb9,0xf5,0x4e,0x6b,0xcf,0xfc,0xc9, 0x11,0x8b,0xea,0x5d,0xe8,0xa9,0x68,0x00,0x0c,0x00,0xf8,0xc0,0xa9,0x24,0x00,0x02, 0x84,0x96,0x39,0x22,0xf4,0xdb,0x5a,0x5d,0xfe,0xb4,0xa5,0xf7,0x7f,0x23,0x98,0xd3, 0x73,0x16,0x06,0x00,0x03,0x00,0xfe,0x73,0x23,0x09,0x80,0x00,0xe1,0x3c,0x9f,0x41, 0xc4,0x7f,0x37,0x4b,0xfc,0x65,0x41,0x35,0xd7,0x47,0xf4,0x7d,0x3e,0x09,0x03,0x80, 0x01,0x00,0xff,0x79,0x92,0x04,0x40,0x80,0xf0,0xf5,0x57,0x90,0xf7,0x76,0x3f,0x4b, 0xfc,0x95,0x0b,0x23,0x1c,0xcd,0x1b,0x8c,0x01,0xc0,0x00,0x80,0xff,0xcc,0xc3,0x00, 0x00,0x84,0x8e,0xa3,0x3c,0x82,0xf8,0x7f,0x11,0xdf,0xca,0x1b,0x88,0x01,0xc0,0x00, 0x80,0xbf,0x34,0xa4,0x02,0x00,0x20,0x74,0x9c,0xee,0x11,0xc3,0xfe,0x65,0x90,0xc8, 0x7b,0x90,0x27,0xda,0x01,0x18,0x00,0xc8,0x93,0x4e,0x54,0x00,0x00,0x84,0x8a,0x61, 0x9e,0x72,0xb8,0x3d,0xe4,0x1d,0x5e,0x50,0x06,0x51,0xbc,0x3e,0x18,0x00,0x0c,0x00, 0xf8,0xcb,0x5e,0x18,0x00,0x80,0xd0,0xf0,0x1f,0x11,0xff,0x8a,0xd6,0xfb,0xbb,0xbd, 0xbc,0xbf,0xe5,0xd2,0xc4,0x6b,0x77,0x0c,0x00,0x06,0x00,0xfc,0xe5,0x28,0x4a,0x00, 0x01,0x42,0xc1,0x44,0x11,0xff,0xaa,0xd6,0xbb,0xdb,0x56,0x78,0xbd,0x8c,0xf2,0x77, 0xba,0x61,0x00,0x30,0x00,0xe0,0x2f,0xa7,0x63,0x00,0x00,0x02,0x8f,0x1e,0x85,0x5b, 0xdb,0x7a,0x6f,0xb5,0xe3,0xdf,0xac,0x32,0x4b,0xde,0xdd,0x16,0x03,0x80,0x01,0x00, 0x7f,0xb9,0x14,0x03,0x00,0x10,0x68,0x9e,0x16,0xa1,0x6f,0x64,0xbd,0xb3,0x75,0xcb, 0xb4,0x74,0x77,0x0b,0xd6,0x6b,0x0c,0x00,0xf8,0xcb,0x68,0x9a,0x00,0x01,0x04,0x16, 0x3d,0xc8,0xa7,0xa5,0xf5,0xbe,0xea,0x29,0x7f,0xf7,0x95,0xe9,0x3b,0xdb,0x92,0xf5, 0x1a,0x03,0x00,0xfe,0x72,0x3b,0x06,0x00,0x20,0x90,0xe8,0x11,0xbe,0x1d,0xac,0x77, 0x55,0x16,0x4a,0x33,0xae,0x8c,0xdf,0xd7,0x46,0xac,0xd7,0x18,0x00,0xf0,0x97,0x87, 0x69,0x02,0x04,0x10,0x38,0x34,0xb3,0x7f,0x07,0xcf,0x9e,0xf7,0xd5,0x65,0x6e,0xd6, 0x6b,0xb3,0x5e,0x63,0x00,0xc0,0x5f,0xa6,0x63,0x00,0x00,0x02,0x85,0xd6,0xf4,0xf7, 0xf6,0x88,0xff,0xb9,0xe4,0xea,0x98,0xca,0xac,0xd7,0x18,0x00,0xf0,0x97,0x59,0x18, 0x00,0x80,0x40,0x31,0xc0,0x23,0xfe,0xc7,0x22,0xfe,0xe6,0x01,0x4f,0xf3,0x23,0xc0, 0x00,0x80,0x0f,0xbc,0x8a,0x01,0x00,0x08,0x0c,0xc7,0x79,0x5a,0xfc,0x1e,0x20,0x66, 0x60,0x11,0xef,0xa8,0x39,0x90,0x12,0x40,0x0c,0x00,0xf8,0xcf,0x1c,0x16,0x17,0x80, 0x40,0x70,0x81,0x47,0xfc,0xf5,0x98,0xdf,0x77,0x78,0x3f,0xe3,0x1f,0x29,0x55,0x59, 0xab,0x31,0x00,0xe0,0x3f,0x0b,0x59,0x60,0x00,0x4a,0xce,0x35,0x9e,0x10,0xf7,0x36, 0x22,0xfe,0x98,0xf3,0x75,0x9c,0xc3,0x29,0x80,0x18,0x00,0xf0,0x9f,0x8a,0x9c,0x04, 0x08,0x50,0x72,0xb4,0xb4,0xcf,0x4e,0x70,0x6b,0xc3,0xd6,0xdc,0xff,0x58,0xe4,0xe9, 0x83,0x00,0x18,0x00,0xf0,0x89,0x0a,0x18,0x00,0x80,0x92,0xa2,0x4d,0x7d,0x6a,0x58, 0xef,0x64,0x13,0xe1,0x59,0xc4,0x7f,0x03,0x73,0xc4,0x5a,0x8d,0x01,0x00,0x0c,0x00, 0x40,0xa4,0x78,0x5c,0x84,0xbe,0xae,0xf5,0x3e,0x6e,0x24,0x4c,0x45,0xfc,0x37,0xa0, 0x27,0xc9,0x7f,0x18,0x00,0x28,0x1c,0x2c,0x32,0x00,0xc5,0xe7,0x39,0x11,0xfa,0x66, 0xd6,0x7b,0x58,0x4d,0xb8,0x87,0xae,0x9c,0x1b,0x30,0x43,0xee,0x51,0x05,0xd6,0x68, 0x0c,0x00,0x60,0x00,0x00,0xa2,0x94,0xd5,0xbe,0x99,0x27,0x17,0xe7,0x26,0xc4,0x3f, 0x6d,0x49,0x24,0x60,0x00,0x00,0x03,0x00,0x10,0x5a,0xde,0x12,0xf1,0xdf,0xc6,0x13, 0xd6,0x1e,0x86,0xf8,0xff,0x8d,0x79,0x72,0x9f,0x1a,0xb0,0x3e,0x63,0x00,0x78,0x00, 0x85,0xa5,0xbd,0x30,0x44,0x9c,0xf6,0x4b,0xec,0x3d,0x02,0x14,0x94,0xf9,0xf2,0x8e, 0xed,0xea,0x11,0xff,0x33,0xe9,0xf2,0x97,0x90,0x91,0x24,0xff,0x61,0x00,0x30,0x00, 0xc5,0x43,0x4f,0x1a,0xeb,0x25,0x8b,0xd3,0x18,0x79,0xf1,0xe6,0x61,0x06,0x00,0x7c, 0x2f,0x67,0xdb,0xd7,0x23,0xfe,0x47,0x22,0xfe,0x49,0xe9,0x4c,0xf2,0x1f,0x06,0x00, 0x03,0x50,0x1a,0x34,0x1b,0x79,0xa0,0x2c,0x4e,0xf7,0x11,0x9a,0x04,0xf0,0x85,0x7f, 0x79,0xf6,0xb3,0xfb,0xd2,0xe2,0x37,0x29,0x7a,0x42,0x29,0xeb,0x30,0x06,0x00,0x03, 0x50,0x24,0xee,0x10,0xa1,0xff,0xa7,0x2c,0x50,0xf5,0x12,0xfc,0x5a,0x2b,0xe1,0x74, 0xf9,0x35,0x6a,0x93,0x01,0x72,0xe3,0x34,0x8f,0xf8,0x77,0x17,0xf1,0x27,0xca,0x96, 0x9c,0x43,0x49,0xfe,0xc3,0x00,0x60,0x00,0x8a,0xc7,0x64,0x67,0x31,0xd2,0x3d,0xca, 0x1b,0xc5,0x0c,0xe8,0x56,0x40,0xa5,0x04,0xbf,0x6f,0x27,0xf9,0xff,0x47,0xc8,0xaf, 0xbf,0xc9,0xe2,0x05,0x90,0x11,0x97,0x7b,0xf6,0xb2,0x3b,0xca,0x3b,0xc4,0xfb,0x93, 0x9c,0xd9,0x72,0x6f,0x6a,0xb0,0x26,0x63,0x00,0x30,0x00,0xc5,0xe3,0x86,0x04,0xa1, 0x7e,0x4d,0x0a,0x3c,0x4f,0x9c,0xf8,0x96,0x09,0x7e,0x7f,0x0d,0xe7,0x94,0xb2,0xdb, 0xe5,0xcf,0x71,0x96,0x00,0x40,0x62,0xd4,0x4c,0x57,0xb4,0xde,0x9b,0x4d,0x05,0x92, 0x6d,0x53,0x33,0x94,0xaf,0x7f,0x0c,0x00,0x06,0xa0,0xb8,0x9c,0x9b,0x26,0x19,0x49, 0x23,0x04,0x9a,0xb0,0x54,0x37,0xc1,0x9f,0x6d,0x2a,0x1c,0x2f,0xbf,0xf6,0x04,0x0b, 0x1b,0xc0,0xff,0xb8,0x53,0xc4,0xbf,0x8a,0xf5,0x9e,0x34,0x12,0x9e,0xe6,0x1d,0x49, 0xcb,0x66,0xac,0xc7,0x18,0x00,0x0c,0x40,0x71,0x39,0x22,0xc3,0x6c,0x64,0xdd,0xb7, 0xd4,0x2a,0x81,0xdd,0x93,0x6c,0x11,0x6c,0x2b,0xff,0xff,0xc5,0xf2,0x77,0x71,0x90, 0x09,0x94,0x33,0x53,0x64,0xfe,0xd7,0xb2,0xde,0x0b,0xfd,0xdf,0x53,0x78,0x27,0xd2, 0x72,0x3b,0xa5,0x7f,0x18,0x00,0x0c,0x40,0xf1,0xe9,0x21,0xc2,0x9d,0xed,0xcb,0xfa, 0xa2,0x2c,0x68,0x1a,0x39,0x68,0x9b,0xe0,0xef,0xd3,0x2f,0x9f,0xbd,0xe4,0xef,0xbc, 0x59,0x5e,0xe8,0xf9,0x2c,0x7c,0x50,0x46,0x4c,0x97,0xf9,0xde,0xd0,0xf3,0x2e,0xdc, 0x41,0x35,0x4d,0x46,0xec,0x45,0xe9,0x1f,0x06,0x00,0x03,0x50,0x7c,0x36,0xcf,0xb3, 0x23,0xe0,0x83,0xb2,0xc0,0x1d,0x91,0x64,0x8b,0xa0,0xbe,0xa0,0x25,0x50,0x93,0x31, 0x02,0x10,0x71,0x5e,0x90,0x39,0xbe,0x89,0xe7,0xb0,0xad,0xd1,0x88,0x7f,0x46,0x3c, 0x2f,0xf7,0xae,0x12,0x6b,0x31,0x06,0x00,0x03,0x50,0x7c,0xaa,0xfb,0xd4,0x12,0x58, 0xb7,0x08,0x74,0xc1,0xeb,0x91,0x64,0x8b,0x40,0xa3,0x05,0xe7,0x88,0x19,0x78,0x1e, 0x33,0x00,0x11,0xe3,0x0d,0x99,0xd3,0xed,0x3c,0xf3,0xfd,0x62,0x1a,0xfd,0x64,0xcc, 0x49,0x24,0xff,0x61,0x00,0x30,0x00,0xa5,0xe3,0x45,0x9f,0x45,0x59,0xbf,0x86,0xce, 0x4e,0xb2,0x45,0xa0,0x99,0xd1,0xda,0x12,0xf5,0x3a,0x31,0x0b,0x6f,0x63,0x06,0x20, 0xe4,0xcc,0x95,0x39,0xdc,0xd5,0x13,0xbe,0x3e,0x19,0xf1,0xcf,0x98,0x77,0xe4,0xfe, 0x35,0x66,0x0d,0xc6,0x00,0x60,0x00,0x4a,0x47,0x21,0xbb,0xfe,0x3d,0x20,0x7f,0xf7, 0xc0,0x24,0x5b,0x04,0x9a,0x20,0xd5,0x5f,0x16,0xcf,0xbb,0xe5,0xf7,0xd0,0x19,0x0d, 0xc2,0xc6,0x02,0x99,0xb3,0xbd,0x3d,0xe2,0x7f,0x18,0xe2,0x9f,0x15,0xa3,0x49,0xfe, 0xc3,0x00,0x60,0x00,0x4a,0xcb,0xb5,0x45,0xd8,0xab,0xd4,0x2d,0x82,0xeb,0xe5,0xdf, 0xd9,0x4d,0x16,0xcc,0x8a,0x09,0x7e,0x86,0x8d,0x9d,0x2f,0x27,0xca,0xa5,0x20,0x2c, 0xf4,0xf7,0x88,0xbf,0x9a,0x01,0x7a,0x63,0x64,0xc7,0x8e,0x24,0xff,0x61,0x00,0x30, 0x00,0xa5,0xe5,0x8c,0x22,0x7f,0xb5,0xe8,0x16,0xc1,0x59,0xf2,0x6f,0x6e,0x9e,0xe4, 0xe7,0xe9,0x22,0x8b,0x82,0x1e,0x93,0xfa,0x06,0x8b,0x29,0x04,0x94,0x7f,0x7b,0xf6, 0xad,0x75,0x1b,0x60,0x2e,0xf3,0x35,0x2b,0x1e,0xa7,0xef,0x3f,0x06,0x00,0x03,0x50, 0x7a,0x06,0xe4,0x50,0x0a,0xe8,0x17,0xba,0xfd,0x70,0xb8,0x2c,0xa6,0x1b,0x25,0xf8, 0xb9,0xaa,0x0a,0xfd,0xe4,0x67,0xbb,0x4d,0x7e,0xcf,0x02,0x16,0x57,0x08,0x08,0x43, 0x3c,0xe2,0xaf,0x1d,0x33,0x31,0xab,0xd9,0xf3,0x0f,0x92,0xff,0x30,0x00,0x18,0x80, 0xd2,0xd3,0xbd,0x84,0x06,0xc0,0xde,0x22,0xd0,0xc4,0xc0,0x5d,0x93,0x6c,0x11,0x68, 0x37,0xb5,0xc1,0xb2,0x60,0x4c,0x65,0xa1,0x85,0x12,0x72,0xb5,0x67,0xcf,0xba,0x85, 0xf0,0x02,0x73,0x32,0x6b,0xde,0xf2,0x34,0x4c,0x02,0x0c,0x00,0x06,0xa0,0x44,0xb4, 0xf4,0xa9,0x14,0xd0,0xcf,0xba,0xe0,0x33,0x45,0xec,0xdb,0x24,0xf9,0x79,0x3b,0x08, 0x17,0xc8,0xaf,0xbf,0xcc,0xc2,0x0b,0x45,0xe4,0x56,0x11,0xff,0xca,0x9e,0x3e,0x17, 0xd3,0x98,0x83,0x39,0x71,0x29,0x5f,0xff,0x18,0x00,0x0c,0x40,0x30,0xd0,0x45,0x2d, 0xa8,0xc9,0x4b,0xba,0x45,0xa0,0x99,0xd5,0x75,0x12,0xfc,0xdc,0xda,0x6f,0x40,0x4f, 0x2f,0xd4,0x03,0x8d,0x38,0x62,0x15,0x0a,0x3d,0x0f,0xab,0x5b,0x73,0xaf,0xa6,0xf0, 0x20,0x8d,0x7e,0x72,0x66,0x4b,0xd6,0x5d,0x0c,0x00,0x06,0x20,0x38,0x3c,0x1b,0x70, 0x01,0xd5,0x04,0x2b,0xad,0x56,0xd8,0x59,0x04,0xbf,0x42,0x82,0x9f,0x5f,0x73,0x08, 0xb4,0xdc,0xf0,0x7e,0x16,0x65,0xf0,0x99,0xc7,0x64,0xee,0xd5,0xf5,0x18,0xe6,0xf1, 0xcc,0xb3,0x9c,0xb9,0x87,0xd2,0x3f,0x0c,0x00,0x06,0x20,0x58,0x4c,0x0c,0xd1,0x82, 0x36,0x4b,0x16,0x64,0xad,0x5c,0x68,0x9d,0xe4,0x5a,0x5a,0x3b,0x95,0x0d,0xcf,0x11, 0x15,0x80,0x3c,0x51,0x63,0xdc,0xd4,0x33,0xbf,0xae,0x41,0xfc,0xf3,0x62,0x5f,0x4a, 0xff,0x30,0x00,0x18,0x80,0x60,0x71,0x55,0x48,0x17,0xb5,0x7b,0xe5,0xe7,0xd6,0x2a, 0x86,0xda,0x49,0xae,0x6b,0x27,0xf9,0xb5,0x11,0xf2,0x7b,0xde,0xc2,0x0c,0x40,0x96, 0xe8,0xc9,0x96,0xde,0x3c,0x94,0x21,0x34,0xfa,0xc9,0x8b,0x97,0xe4,0x9e,0x56,0x61, 0xbd,0xc5,0x00,0x60,0x00,0x82,0xc5,0x49,0x21,0x5f,0xd8,0xb4,0xad,0xb0,0x7e,0x99, 0x75,0x4f,0xb2,0x45,0x50,0x43,0x38,0x50,0x7e,0xed,0x0e,0xba,0x0e,0x42,0x86,0x59, 0xea,0x5b,0x7b,0xbe,0x54,0x8f,0x43,0xfc,0xf3,0xe6,0x0c,0x92,0xff,0x30,0x00,0x18, 0x80,0xe0,0x71,0x40,0x00,0x4a,0x01,0xfd,0x62,0xa6,0x2c,0xde,0xa7,0xc9,0x42,0xd3, 0x2a,0xc9,0xb5,0x36,0x13,0x4e,0x90,0x5f,0x7f,0x12,0x23,0x00,0x09,0xd0,0x63,0xac, 0x77,0xf6,0x88,0xff,0x41,0x11,0x7a,0x3f,0x4a,0x85,0x26,0x1a,0x37,0x67,0xad,0xc5, 0x00,0x60,0x00,0x82,0x47,0x97,0x88,0x2e,0x70,0x9a,0x70,0xa4,0x2d,0x5b,0x93,0xd5, 0x1c,0x6f,0x2b,0xbf,0x76,0x89,0x98,0x81,0xd7,0x30,0x03,0x20,0x68,0x74,0xa8,0xaf, 0x47,0xfc,0x77,0x97,0xff,0x7e,0x87,0xf9,0x91,0x37,0x37,0x91,0xfc,0x87,0x01,0xc0, 0x00,0x04,0x93,0x66,0x01,0xeb,0x05,0x50,0x88,0x2d,0x02,0x6d,0xe2,0xb2,0x53,0x92, 0x2d,0x02,0xdd,0x97,0xdc,0x5b,0x7e,0x6d,0xac,0xfc,0x1e,0x16,0xfb,0xf2,0xe5,0x48, 0x4f,0x88,0x5a,0x0d,0x22,0xa7,0x56,0xfa,0xc3,0x2e,0x24,0xff,0x61,0x00,0x30,0x00, 0xc1,0x44,0x45,0xb1,0x5c,0x6a,0xe9,0x35,0xb3,0xfb,0x54,0x59,0xe8,0x37,0x4d,0x72, 0x2f,0xb4,0xc1,0xcb,0xbf,0xe4,0xd7,0xa7,0xb0,0xf0,0x97,0x15,0xa7,0x7a,0xc4,0x5f, 0xcf,0xaa,0x78,0x95,0x39,0xe0,0x0b,0x4f,0xd1,0xf7,0x1f,0x03,0x80,0x01,0x08,0x36, 0x4f,0x95,0xe1,0x62,0x77,0x97,0x7c,0xf1,0x1f,0x22,0x5f,0x26,0x35,0x93,0xdc,0x93, 0xb6,0xc2,0xb9,0x22,0x0c,0xb4,0x7b,0x2d,0xaf,0xce,0x74,0x1a,0x11,0x9b,0xc9,0x33, 0xf7,0x8d,0x41,0x24,0xff,0x61,0x00,0x30,0x00,0xc1,0x66,0x42,0x19,0xd7,0x37,0xcf, 0x91,0xc5,0x5e,0xcb,0x05,0xbb,0x25,0x09,0x53,0xea,0xf9,0x04,0x7a,0x94,0xb1,0x9e, 0x57,0xc0,0xa9,0x6f,0xd1,0x62,0x8c,0x3c,0x53,0x7b,0x5b,0x48,0x9b,0xfe,0x3c,0xc6, 0x33,0xf6,0x75,0xfb,0xad,0x2e,0xeb,0x2b,0x06,0x00,0x03,0x10,0x6c,0x2e,0xa3,0xc1, 0x49,0x9c,0x19,0xb2,0x60,0x9d,0x22,0x5f,0x2c,0x2d,0x93,0xdc,0xa7,0xda,0xce,0x09, 0x8a,0xf7,0x70,0xbf,0x42,0x8f,0x96,0x85,0xda,0x75,0xe9,0xda,0xee,0x77,0x12,0xcf, 0xd5,0x57,0xae,0x24,0xf9,0x0f,0x03,0x80,0x01,0x08,0x3e,0xd4,0x39,0xff,0x3d,0x23, 0x5c,0x3b,0x24,0x1e,0x9c,0x62,0x8b,0x60,0x13,0x41,0xcd,0xc2,0x33,0x7c,0x31,0x86, 0x8e,0xc9,0xf2,0xcc,0x6a,0x7a,0xce,0x96,0xb8,0x05,0xf1,0xf7,0x9d,0x4e,0x24,0xff, 0x61,0x00,0x30,0x00,0xc1,0xa7,0x2f,0xb5,0xce,0x29,0x1b,0xc3,0x68,0xb7,0xc4,0x1d, 0x52,0x2c,0x66,0x5d,0xe5,0xd7,0xae,0x90,0xdf,0x33,0x1b,0x33,0x10,0x8a,0xa4,0xb4, 0x06,0x9e,0xe7,0x77,0x25,0xe2,0xef,0x3b,0xff,0xc7,0xde,0x3f,0x06,0x00,0x03,0x10, 0x0e,0xb6,0xc1,0x00,0x64,0xbc,0x45,0x70,0xb2,0x2c,0x6c,0x1b,0x27,0xb9,0x8f,0xd5, 0x04,0xed,0x77,0xae,0x07,0xc6,0x2c,0xc0,0x0c,0x04,0x0e,0x4d,0xe8,0xf4,0x3e,0xbb, 0xb3,0x88,0x7e,0xf9,0xce,0x39,0x88,0x3f,0x06,0x00,0x03,0x10,0x1e,0x1a,0x44,0xbc, 0x17,0x40,0x21,0xb6,0x08,0xee,0x14,0x91,0x3f,0x30,0xc5,0x16,0x81,0x4c,0x66,0x73, 0xac,0x2c,0x84,0x53,0x31,0x02,0x81,0xe0,0x75,0x79,0x0e,0xde,0xa3,0x68,0xff,0x85, 0xf8,0xfb,0xce,0x85,0x88,0x3f,0x06,0x00,0x03,0x10,0x3e,0xe6,0x20,0x54,0x39,0xf1, 0xa6,0xdc,0x37,0x0d,0x21,0x77,0x4d,0xb1,0x45,0xd0,0x51,0x7e,0x6d,0xa8,0x2c,0x8c, 0x2f,0x73,0x8f,0x4b,0x76,0xa4,0x74,0x17,0xcf,0xf3,0xd1,0x48,0x0d,0x67,0x43,0xf8, 0xcb,0x30,0x92,0xfe,0x30,0x00,0x18,0x80,0x70,0xc2,0x97,0x6a,0xfe,0x68,0x42,0xa0, 0xee,0x7d,0xb6,0x48,0x72,0x8f,0xf5,0x3c,0xf9,0x3d,0x44,0x78,0x6e,0x94,0x85,0x72, 0x1e,0xf7,0xbb,0x28,0xe8,0x56,0x4c,0x2f,0x8f,0xf8,0x6b,0xbf,0xff,0xf9,0xdc,0x7f, 0x5f,0xb9,0xda,0x53,0x52,0x09,0x18,0x00,0x0c,0x40,0x88,0x20,0x0b,0xda,0xdf,0x2d, 0x02,0x2d,0x33,0xd3,0x83,0x96,0x6a,0x24,0xb9,0xdf,0x5a,0x1f,0x7d,0x84,0x98,0x85, 0x07,0xb8,0xef,0x05,0xe5,0x60,0x8f,0xf8,0x6b,0x66,0xfa,0x9b,0x88,0xbf,0xaf,0x8c, 0x96,0x39,0x5c,0x91,0x35,0x14,0x03,0x80,0x01,0x08,0x2f,0x17,0xb2,0x1f,0x5a,0xb0, 0x2d,0x02,0xad,0x10,0xe8,0x92,0x62,0x8b,0x40,0xcf,0x9e,0x3f,0x53,0xee,0x3f,0x1d, 0xe8,0xfc,0xe5,0x58,0xcf,0x7e,0xb4,0x9e,0x12,0xc9,0x36,0x8c,0xbf,0xdc,0x2c,0x73, 0xbb,0x32,0xeb,0x27,0x06,0x00,0x03,0x10,0x6e,0x8e,0xc6,0x00,0x14,0x9c,0xe9,0x22, 0x3e,0x27,0xa6,0xd8,0x22,0xd0,0x10,0x6a,0x77,0x31,0x0a,0x1a,0x4e,0x7d,0x0b,0xa1, 0xca,0x8b,0xf3,0x3c,0xe2,0xdf,0x48,0x98,0xc1,0x3d,0xf5,0x95,0xf1,0x9e,0x66,0x4a, 0x80,0x01,0xc0,0x00,0x84,0x94,0xde,0x94,0x02,0x16,0x75,0x8b,0xe0,0xbf,0xb2,0x78, 0xee,0x2f,0xf7,0xbc,0x7a,0x92,0xe7,0x51,0xd3,0x39,0x8b,0x5e,0xab,0x0d,0x48,0x56, 0xcb,0x8e,0x11,0x9e,0x64,0x34,0xed,0xe0,0xf8,0x08,0xf7,0xd0,0x57,0x74,0x5e,0x56, 0x63,0xdd,0xc4,0x00,0x60,0x00,0xa2,0x41,0x7b,0x4a,0x01,0x4b,0xb6,0x45,0xa0,0xd9, 0xd3,0xdb,0xa7,0xd8,0x22,0x68,0x2e,0x68,0xe4,0x60,0x1a,0x22,0x96,0x16,0xcd,0x65, 0xa9,0x64,0xdd,0xbb,0xaa,0xc2,0x44,0xf2,0x2c,0x7c,0x45,0x5b,0x26,0xd7,0x64,0xcd, 0xc4,0x00,0x60,0x00,0xa2,0x43,0x1d,0x0c,0x40,0x20,0xba,0xd4,0x9d,0x20,0x42,0xdf, 0x3c,0xc5,0x73,0xd2,0x73,0xea,0xf5,0x04,0xbb,0xd7,0x30,0x03,0x7f,0xe3,0x5e,0x11, 0xa6,0xea,0x9e,0x83,0x9c,0x6e,0x44,0xfc,0x7d,0xe5,0x41,0xb9,0x9f,0xb5,0x59,0x2f, 0x31,0x00,0x18,0x80,0xe8,0xf1,0x3a,0xa2,0x12,0x08,0x16,0xca,0x73,0xd0,0x13,0x1a, 0xf7,0x13,0xb1,0x4f,0x16,0x66,0xd5,0xbd,0xd7,0x7d,0xe4,0xd7,0xf5,0x8b,0xf7,0x1d, 0x9e,0x5b,0xbc,0x8c,0x75,0x23,0x0e,0xb9,0x2a,0x28,0x8f,0x70,0xba,0x1f,0x06,0x00, 0x03,0x10,0x5d,0x26,0x23,0x24,0x81,0x43,0xcf,0x17,0xb8,0x5c,0x84,0xac,0x73,0x8a, 0x2d,0x02,0xed,0xe4,0x78,0x94,0x44,0x05,0xa6,0x94,0xe9,0xf3,0xd3,0xe4,0xbe,0x26, 0x9e,0x7b,0x72,0x2a,0x49,0xad,0xbe,0xf2,0xb8,0xdc,0xe3,0xfa,0xac,0x91,0x18,0x00, 0x0c,0x40,0x74,0xb9,0x81,0x2f,0xa6,0x40,0xa3,0x39,0x00,0xc7,0x8b,0xb0,0x35,0x4d, 0xf1,0x0c,0xb5,0xdd,0xad,0x66,0xc0,0xbf,0x50,0x26,0x66,0xe0,0x15,0xb9,0xce,0xd6, 0x9e,0x7b,0x30,0x10,0xf1,0xf7,0x7d,0x6b,0xaa,0x11,0xeb,0x23,0x06,0x00,0x03,0x10, 0x6d,0xce,0x65,0xe1,0x0c,0xcd,0x16,0x81,0x96,0x60,0xf5,0x4b,0xb1,0x45,0xa0,0xfb, 0xdf,0x3d,0xe4,0xd7,0xaf,0x97,0xdf,0x37,0x37,0xa2,0x66,0x40,0x13,0x28,0xb7,0xf2, 0x44,0x46,0xf6,0x96,0xff,0x5e,0x48,0x24,0xcb,0xd7,0xe8,0x4a,0x73,0xd6,0x46,0x0c, 0x00,0x06,0x20,0xfa,0xfc,0x03,0x03,0x10,0x3a,0xde,0x90,0x05,0x5a,0xf7,0xba,0xb7, 0x4d,0xb1,0x45,0xa0,0x49,0x5b,0x87,0xca,0xb3,0xbd,0x27,0x42,0x11,0x1e,0x6d,0xa5, 0xdc,0xdd,0x73,0xcd,0x3b,0xca,0x7f,0xd3,0x62,0xd9,0x3f,0x66,0xc9,0xbd,0xdc,0x84, 0x75,0x11,0x03,0x80,0x01,0x28,0x0f,0x7a,0xd0,0x0b,0x20,0xd4,0x3c,0x29,0x0b,0xf6, 0xbf,0x45,0xe8,0x9b,0xa4,0x78,0xc6,0x2d,0x9d,0xfd,0xf1,0x30,0x37,0xc5,0xd1,0x2f, 0xfc,0x3e,0x1e,0xf1,0xd7,0x32,0xd6,0xd9,0x88,0xbf,0x6f,0xbc,0x98,0x60,0x6b,0x05, 0x30,0x00,0x18,0x80,0x08,0xb3,0x39,0xa5,0x80,0x91,0xd9,0x22,0xb8,0x4d,0xbe,0xf6, 0xfb,0x8a,0x48,0x56,0x4d,0xf1,0xbc,0xf5,0x04,0xc3,0xe1,0xf2,0xfb,0xc2,0xd6,0x1b, 0xff,0x08,0x4f,0x97,0x3f,0xfd,0x4a,0x7d,0x01,0xf1,0xf7,0x8d,0x57,0xe5,0x5e,0xb6, 0x65,0x3d,0xc4,0x00,0x60,0x00,0xca,0x8b,0xea,0x18,0x80,0xc8,0xa1,0xa5,0x9d,0x97, 0x88,0x60,0x6e,0x93,0x62,0x8b,0x40,0x9f,0xbb,0x96,0x1c,0x6a,0x5e,0x41,0xd0,0xf7, 0xcf,0x4f,0xf6,0x88,0xbf,0x56,0x40,0x3c,0x85,0xf8,0xfb,0x3a,0x5f,0x3a,0xb0,0x16, 0x62,0x00,0x30,0x00,0xe5,0xc9,0x8b,0x2c,0xa6,0x91,0xe5,0x09,0x79,0xb6,0x7a,0x40, 0x4e,0xe3,0x14,0xcf,0x5f,0xb7,0x0f,0xf4,0xf7,0x3c,0x16,0xc0,0x79,0x70,0xb1,0x47, 0xfc,0x6b,0x52,0xba,0xea,0x7b,0x52,0x65,0x2a,0xa3,0x08,0x18,0x00,0x0c,0x40,0xc4, 0xb9,0x8f,0x52,0xc0,0xc8,0xb3,0x40,0x16,0xfa,0x5b,0xe5,0x39,0xeb,0x3e,0x7a,0xaa, 0xc3,0x5c,0x34,0xc3,0x5e,0x4f,0x89,0x7c,0x25,0x00,0x22,0x3b,0xca,0x73,0xde,0xbc, 0xfe,0xdc,0xff,0x65,0xae,0xfa,0xc6,0x1c,0x79,0xc6,0x5d,0x10,0x7f,0xc0,0x00,0x94, 0x37,0xd7,0xb1,0xa8,0x96,0x15,0xda,0x52,0x58,0xbf,0xac,0xb7,0x4e,0xb1,0xf8,0x57, 0x76,0x0e,0x8b,0xd2,0xb6,0xba,0xa5,0xc8,0xb2,0xff,0xaf,0xe7,0xd4,0xb9,0x0a,0xcc, 0x53,0x5f,0x99,0x9b,0xa0,0xa2,0x02,0x30,0x00,0x18,0x80,0x32,0xe4,0x0c,0x4a,0x01, 0xcb,0x16,0x0d,0xfb,0x0f,0x96,0xe7,0x9f,0xaa,0xe9,0x4b,0x5d,0xa7,0x5c,0xf4,0x81, 0x22,0x09,0xf0,0x43,0xf2,0x33,0x79,0x0f,0x9e,0x19,0xca,0x1c,0xf5,0x8d,0xf9,0x72, 0x7f,0x7b,0x20,0xfe,0x80,0x01,0x00,0x65,0x00,0xa5,0x80,0x6c,0x11,0x88,0x28,0xe8, 0x19,0x03,0xfb,0xa4,0xd9,0x22,0x90,0x17,0xd5,0x9c,0x25,0x62,0x3c,0xab,0x40,0x51, 0x81,0x69,0x09,0xda,0xcf,0x9e,0x80,0xf8,0xfb,0x86,0x9e,0x21,0xb1,0x27,0xe2,0x0f, 0x18,0x00,0x70,0xe9,0x8e,0x01,0x00,0x4f,0x49,0xd8,0x45,0x22,0xba,0x5b,0xa5,0x10, 0x8a,0x0a,0xce,0xbc,0xb9,0x5a,0x4c,0xc3,0x1c,0x9f,0xcc,0xc0,0xf3,0xf2,0xf7,0xb4, 0xf0,0xfc,0x3b,0xfd,0x99,0x9b,0xbe,0x96,0x8a,0xf6,0x43,0xfc,0x01,0x03,0x00,0xde, 0x46,0x31,0x2c,0x90,0x90,0xec,0xc4,0xbd,0x63,0xd2,0x6c,0x11,0x68,0xb8,0xfe,0x60, 0x11,0x96,0x3b,0xc5,0x0c,0x2c,0xca,0xd1,0x0c,0x68,0x29,0xda,0x16,0x9e,0xbf,0xb7, 0x97,0xfc,0x9d,0x0b,0xc8,0xf8,0xf7,0x05,0x7d,0x2e,0x07,0x23,0xfe,0x80,0x01,0x80, 0x44,0x09,0x5f,0xf4,0x52,0x87,0x74,0xa1,0xe3,0xb1,0x22,0xf0,0x7b,0xa5,0xd9,0x22, 0xd0,0x2f,0xf8,0x13,0xc5,0x30,0x4c,0xcb,0x62,0x3e,0xbd,0x2d,0xbf,0x77,0x3b,0x8f, 0x38,0x6d,0x2f,0xff,0xfd,0x36,0x73,0xd2,0x37,0x06,0x7a,0xca,0x29,0x01,0x30,0x00, 0xf0,0x3f,0x9e,0x63,0xb1,0x85,0x2c,0xb6,0x08,0xb4,0x54,0xb0,0x63,0x9a,0x2f,0x4a, 0x3d,0xce,0xf8,0x52,0xf9,0x7d,0xaf,0xa7,0x98,0x5b,0x6a,0x2c,0x76,0xf7,0xfc,0x3d, 0xda,0x91,0xee,0x75,0xe6,0xa3,0x6f,0x1c,0x85,0xf8,0x03,0x06,0x00,0x52,0x31,0x91, 0x12,0x2b,0xc8,0x81,0x47,0x45,0xa8,0x8f,0x16,0x81,0x69,0x98,0x62,0x6e,0x69,0xc4, 0x40,0xfb,0x0f,0x68,0x92,0xe1,0x3b,0x96,0xb0,0x6b,0x58,0xfa,0x40,0x8f,0xf8,0xeb, 0x29,0x74,0xb3,0x10,0x7f,0xdf,0x38,0x1e,0xf1,0x07,0x0c,0x00,0xa4,0xe3,0x2a,0x0c, 0x00,0xe4,0xb9,0x45,0x70,0xb3,0xcc,0xa1,0x3d,0xd3,0x6c,0x11,0xa8,0x51,0x50,0xc3, 0xf0,0xb0,0x93,0x5b,0xe0,0x2d,0x37,0x7c,0x02,0xf1,0x2f,0x58,0x0b,0x65,0x00,0x0c, 0x00,0x24,0xe4,0x24,0x4a,0xad,0xc0,0x27,0xb4,0x8b,0xe0,0x05,0x32,0x9f,0xb2,0xe9, 0x2f,0x5f,0x83,0x8e,0x94,0xbe,0x72,0x0e,0xe2,0x0f,0x18,0x00,0xc8,0x94,0x03,0x29, 0xb7,0x82,0x02,0xf0,0x88,0x98,0x01,0xdd,0x83,0x6e,0x90,0x62,0xee,0xc9,0xc2,0x10, 0x6f,0x53,0xcc,0xfd,0xf2,0x87,0x8b,0x10,0x7f,0xc0,0x00,0x40,0x36,0x74,0xc5,0x00, 0x40,0x81,0xbb,0xcf,0xfd,0x47,0x44,0x5e,0xdb,0x0b,0x57,0xf6,0xcc,0xbd,0x11,0x88, 0xbf,0x6f,0x0c,0x93,0x7b,0xc9,0x7a,0x06,0x18,0x00,0xc8,0x8a,0x66,0xf4,0x02,0x80, 0x22,0xf1,0xb2,0x98,0x81,0x21,0xf2,0x95,0xda,0x5e,0xe6,0xdc,0x39,0x6c,0x3d,0xf9, 0xc6,0x48,0xcf,0xe1,0x49,0x00,0x18,0x00,0xc8,0x08,0x5d,0x38,0xe6,0x93,0x80,0x05, 0x10,0x4a,0x46,0x8b,0xf8,0x57,0x64,0x1d,0x03,0x0c,0x00,0xe4,0xca,0x53,0x18,0x00, 0x80,0xd0,0xa1,0xd5,0x17,0x95,0x59,0xbf,0x00,0x03,0x00,0xf9,0x30,0x81,0xbd,0x58, 0x80,0x50,0x31,0xde,0x73,0x6c,0x32,0x00,0x06,0x00,0x72,0xe2,0x72,0x0c,0x00,0x40, 0x68,0xd0,0xe6,0x5d,0xd5,0x58,0xb7,0x00,0x03,0x00,0x7e,0x70,0x1c,0x09,0x59,0x00, 0xa1,0x60,0x92,0x88,0x7f,0x4d,0xd6,0x2c,0xc0,0x00,0x80,0x5f,0xf4,0xa5,0x14,0x10, 0x20,0xf0,0x3c,0x24,0xb9,0x3a,0xb5,0x59,0xaf,0x00,0x03,0x00,0x7e,0xb2,0x0d,0x06, 0x00,0x20,0xf0,0x8d,0x95,0xea,0xb2,0x56,0x01,0x06,0x00,0xfc,0xa6,0x01,0xbd,0x00, 0x00,0x02,0x8b,0x9e,0x93,0xd0,0x80,0x75,0x0a,0x30,0x00,0x50,0x28,0xe6,0x50,0x0a, 0x08,0x10,0x38,0xb4,0x44,0xb7,0x31,0xeb,0x13,0x60,0x00,0xa0,0x90,0x3c,0x86,0x01, 0x00,0x08,0x14,0x33,0xe4,0x9d,0x6c,0xce,0xda,0x04,0x18,0x00,0x28,0x34,0xb7,0x50, 0x0a,0x08,0x10,0x18,0x66,0x89,0xf8,0x6f,0xc2,0xba,0x04,0x18,0x00,0x28,0x06,0x17, 0x52,0x0a,0x08,0x10,0x08,0x5e,0x14,0xf1,0x6f,0xcd,0x9a,0x04,0x18,0x00,0x28,0x16, 0x47,0x63,0x00,0x00,0x4a,0xce,0xab,0x22,0xfe,0x6d,0x59,0x8f,0x00,0x03,0x00,0xc5, 0x64,0x4f,0x4a,0x01,0x01,0x4a,0xca,0xeb,0x22,0xfe,0x1d,0x58,0x8b,0x00,0x03,0x00, 0xc5,0xa6,0x03,0xa5,0x80,0x00,0x25,0xe3,0x4d,0x11,0xff,0x6d,0xc5,0x84,0xb3,0x16, 0x01,0x06,0x00,0x8a,0x4e,0x1d,0x0c,0x00,0x40,0x49,0xd0,0x12,0xdc,0xae,0x88,0x3f, 0x60,0x00,0xa0,0x94,0x74,0x92,0x45,0x68,0x84,0x54,0x03,0xcc,0xa5,0x24,0x10,0xa0, 0x28,0xcc,0x93,0x77,0xad,0x3b,0xe2,0x0f,0x18,0x00,0x08,0x0a,0xda,0x72,0xf4,0x58, 0x49,0x0a,0x9c,0x8e,0x11,0x00,0x28,0x18,0xf3,0xe5,0xfd,0xea,0x81,0xf8,0x03,0x06, 0x00,0x82,0x8a,0x2e,0x50,0xda,0x23,0x60,0x21,0x66,0x00,0xc0,0x37,0xde,0x91,0xf7, 0x69,0x4f,0xc4,0x1f,0x30,0x00,0x3c,0x84,0x30,0xd0,0x42,0x38,0x4b,0xa2,0x02,0x2f, 0x63,0x04,0x00,0xf2,0x42,0xcd,0x74,0x3f,0xc4,0x1f,0x30,0x00,0x18,0x80,0xb0,0x21, 0x0f,0xd2,0x1c,0x20,0x8b,0xd7,0x7d,0x74,0x0e,0x04,0xc8,0x9a,0x45,0x22,0xfe,0x07, 0x23,0xfe,0x80,0x01,0xc0,0x00,0x84,0x9d,0xf6,0xc2,0x30,0x31,0x02,0x1c,0x24,0x04, 0x90,0x19,0x03,0x25,0x8a,0xc6,0xda,0x01,0x18,0x00,0x0c,0x40,0xa4,0x4a,0x08,0x8f, 0x92,0x85,0xed,0x49,0x8c,0x00,0x40,0x52,0x8e,0x46,0xfc,0x01,0x03,0x80,0x01,0x88, 0x32,0x5a,0xd2,0x74,0xa3,0x44,0x05,0x16,0x60,0x06,0x00,0xfe,0xc7,0xf1,0x88,0x3f, 0x60,0x00,0x30,0x00,0xe5,0x42,0x53,0xe1,0x34,0x59,0xf4,0x5e,0xc0,0x08,0x40,0x99, 0x73,0x0a,0xe2,0x0f,0x18,0x00,0x0c,0x40,0x39,0x52,0x59,0xe8,0x2b,0x51,0x81,0xbb, 0x49,0x1a,0x84,0x32,0xe4,0x5c,0xc4,0x1f,0x30,0x00,0x18,0x00,0x88,0xc5,0x4f,0x39, 0xbb,0x44,0x16,0xc4,0x37,0x89,0x0a,0x40,0x19,0x70,0x11,0xe2,0x0f,0x18,0x00,0x0c, 0x00,0x6c,0x48,0x4d,0xe1,0x1f,0xb2,0x38,0x4e,0xc5,0x08,0x40,0x44,0xd1,0xea,0x18, 0xde,0x75,0xc0,0x00,0x60,0x00,0x20,0x05,0x3b,0xc8,0xf6,0xc0,0x28,0x59,0x2c,0xe7, 0x63,0x06,0x20,0x22,0x8c,0x94,0xf9,0x5c,0x81,0x77,0x1b,0x30,0x00,0x18,0x00,0xc8, 0x8c,0x46,0xc2,0x49,0x12,0x15,0x98,0x85,0x11,0x80,0x10,0x33,0x5a,0xc4,0xbf,0x22, 0xef,0x33,0x60,0x00,0x30,0x00,0x90,0x3d,0x32,0x59,0xcc,0x5e,0x12,0x15,0xb8,0x83, 0xa4,0x41,0x08,0x19,0x63,0x65,0xce,0x56,0xe6,0x1d,0x06,0x0c,0x00,0x06,0x00,0xf2, 0xa7,0x8d,0x30,0x54,0xa2,0x02,0x6f,0x10,0x15,0x80,0x80,0x33,0x5e,0xc4,0xbf,0x0a, 0xef,0x2c,0x60,0x00,0x30,0x00,0xe0,0x2f,0x35,0x84,0xc3,0xc4,0x08,0x3c,0x8c,0x11, 0x80,0x00,0x32,0x51,0xc4,0xbf,0x1a,0xef,0x29,0x60,0x00,0x30,0x00,0x50,0x58,0xb6, 0x93,0xed,0x81,0x6b,0x64,0xc1,0x9d,0x87,0x19,0x80,0x00,0x30,0x49,0xe6,0x62,0x4d, 0xde,0x4b,0xc0,0x00,0x60,0x00,0xa0,0x78,0xd4,0x17,0xb4,0xbd,0xea,0x0c,0x8c,0x00, 0x94,0x88,0x87,0x64,0xee,0xd5,0xe6,0x5d,0x04,0x0c,0x00,0x06,0x00,0x4a,0x83,0x96, 0x5b,0xf5,0x92,0xa8,0x80,0xee,0xc1,0x2e,0xc2,0x0c,0x40,0x91,0x78,0x54,0xe6,0x5a, 0x5d,0xde,0x3f,0xc0,0x00,0x60,0x00,0x20,0x18,0xb4,0x14,0xce,0x93,0xa8,0xc0,0xab, 0x18,0x01,0x28,0x20,0x4f,0xc8,0xfc,0x6a,0xc0,0xfb,0x06,0x18,0x00,0x0c,0x00,0x04, 0x0f,0x4d,0xc8,0x3a,0x44,0xa2,0x02,0x0f,0x61,0x04,0xc0,0x67,0xa6,0xcb,0x9c,0x6a, 0xcc,0x3b,0x06,0x18,0x00,0x0c,0x00,0x04,0x9f,0x4e,0x62,0x04,0xae,0x92,0xed,0x81, 0xb9,0x98,0x01,0xc8,0x13,0xcd,0x37,0x69,0xce,0x3b,0x05,0x18,0x00,0x0c,0x00,0x84, 0x0b,0xdd,0xaf,0x1d,0x2c,0xdb,0x03,0xd3,0x31,0x02,0x90,0x03,0xcf,0xcb,0xbc,0x69, 0xc9,0x7b,0x04,0x18,0x00,0x0c,0x00,0x84,0x9b,0xdd,0x24,0x2a,0x70,0x8b,0x44,0x05, 0x16,0x62,0x06,0x20,0x03,0x5e,0x92,0x79,0xd2,0x9a,0xf7,0x06,0x30,0x00,0x18,0x00, 0x88,0x0e,0x2d,0x84,0xb3,0x24,0x2a,0xf0,0x32,0x46,0x00,0x92,0xa0,0x09,0xa5,0x5b, 0xf0,0xae,0x00,0x06,0x00,0x03,0x00,0xd1,0x44,0x5b,0xb8,0x1e,0x20,0x51,0x81,0xfb, 0x38,0x7f,0x00,0x2c,0xb4,0x05,0x75,0x07,0xde,0x0f,0xc0,0x00,0x60,0x00,0xa0,0x3c, 0x68,0x2f,0xe8,0x59,0xee,0x73,0x88,0x0a,0x94,0x35,0x6f,0xca,0xf3,0xdf,0x56,0x4c, 0x21,0xef,0x04,0x60,0x00,0x30,0x00,0x50,0x66,0x68,0x87,0xb7,0x7f,0xc9,0xf6,0xc0, 0x93,0x18,0x81,0xb2,0x43,0xcd,0x5f,0x57,0xc4,0x1f,0x30,0x00,0x18,0x00,0x80,0xee, 0x22,0x06,0x37,0x4a,0x54,0x60,0x01,0x66,0x20,0xf2,0xe8,0x19,0x13,0xdd,0x11,0x7f, 0xc0,0x00,0x60,0x00,0x00,0x6c,0x9a,0x0a,0xa7,0x4a,0x54,0xe0,0x05,0x8c,0x40,0x24, 0x99,0x2f,0xcf,0xb5,0x07,0xe2,0x0f,0x18,0x00,0x0c,0x00,0x40,0x32,0x2a,0x0b,0x7d, 0x45,0x28,0xee,0x22,0x69,0x30,0x32,0xbc,0x23,0xe2,0xbf,0x27,0xe2,0x0f,0x18,0x00, 0x0c,0x00,0x40,0xa6,0xb4,0x15,0x2e,0x96,0xa8,0xc0,0x9b,0x44,0x05,0x42,0x8b,0xf6, 0x83,0xd8,0x17,0xf1,0x07,0x0c,0x00,0x06,0x00,0x20,0x17,0xf4,0x4c,0xf8,0x23,0xc4, 0x08,0x4c,0xc5,0x08,0x84,0x0a,0x3d,0x41,0xf2,0x10,0xc4,0x1f,0x30,0x00,0x18,0x00, 0x00,0x3f,0xd0,0x0c,0xf2,0x51,0xb2,0x3d,0x30,0x1f,0x33,0x10,0x78,0x06,0x8a,0x69, 0x63,0xce,0x02,0x06,0x00,0x03,0x00,0xe0,0x2b,0x8d,0x84,0xff,0x13,0x81,0x99,0x85, 0x11,0x08,0x24,0x47,0x23,0xfe,0x00,0x18,0x00,0x80,0x42,0x22,0x2f,0x80,0xd9,0x4b, 0xa2,0x02,0xb7,0x93,0x34,0x18,0x18,0x4e,0x40,0xfc,0x01,0x30,0x00,0x00,0xc5,0xa4, 0xb5,0x70,0x81,0x88,0xcf,0x1b,0x44,0x05,0x4a,0xc6,0xa9,0x88,0x3f,0x00,0x06,0x00, 0xa0,0x54,0xd4,0x10,0x0e,0x15,0x21,0x9a,0x82,0x11,0x28,0x2a,0xe7,0x22,0xfe,0x00, 0x18,0x00,0x80,0xa0,0xd0,0x59,0xb6,0x07,0xae,0x91,0xed,0x81,0x79,0x98,0x81,0x82, 0x72,0x31,0xe2,0x0f,0x80,0x01,0x00,0x08,0x22,0xf5,0x85,0xe3,0x44,0xa4,0x66,0x60, 0x04,0x7c,0xe7,0x0a,0x31,0x58,0xcc,0x31,0x00,0x0c,0x00,0x40,0xa0,0x91,0x97,0xc6, 0xf4,0x92,0xa8,0xc0,0x6d,0x22,0x5a,0x8b,0x30,0x03,0x79,0x33,0x52,0xee,0x63,0x05, 0xe6,0x15,0x00,0x06,0x00,0x20,0x4c,0xb4,0x14,0x74,0xdf,0xfa,0x55,0x8c,0x40,0x4e, 0x8c,0x11,0xf1,0xaf,0xc8,0x3c,0x02,0xc0,0x00,0x00,0x84,0x95,0xaa,0xc2,0xc1,0x12, 0x15,0x78,0x90,0x52,0xc2,0x8c,0x19,0x2b,0xf7,0xaa,0x32,0x73,0x07,0x00,0x03,0x00, 0x10,0x15,0x3a,0x89,0x11,0xb8,0x4a,0xc4,0x6d,0x2e,0x51,0x81,0xa4,0x4c,0x90,0xfb, 0x53,0x85,0xb9,0x02,0x80,0x01,0x00,0x88,0x22,0x75,0x85,0x63,0x64,0x7b,0x60,0x3a, 0x46,0x60,0x03,0x26,0x8a,0xf8,0x57,0x63,0x7e,0x00,0x60,0x00,0x00,0xca,0x81,0xdd, 0x24,0x2a,0xa0,0x21,0xef,0x85,0x65,0x6e,0x06,0x26,0xc9,0x3d,0xa8,0xc9,0x7c,0x00, 0xc0,0x00,0x00,0x94,0x1b,0x2d,0x84,0x33,0x25,0x2a,0xf0,0x72,0x19,0x1a,0x81,0x87, 0xe4,0x9a,0x6b,0x33,0x07,0x00,0x30,0x00,0x00,0xe5,0x8c,0xee,0x7f,0xef,0x2f,0x51, 0x81,0x49,0x65,0x92,0x34,0xf8,0xa8,0x88,0x7f,0x5d,0x9e,0x3b,0x00,0x06,0x00,0x00, 0xd6,0xd3,0x5e,0x18,0x26,0x46,0x60,0x4e,0x44,0xa3,0x02,0x4f,0xc8,0x75,0x35,0xe0, 0x39,0x03,0x60,0x00,0x00,0x20,0x31,0x1a,0x1e,0xff,0x97,0x6c,0x0f,0x3c,0x19,0x21, 0x23,0xa0,0x09,0x90,0x8d,0x79,0xb6,0x00,0x18,0x00,0x00,0xc8,0x8c,0xee,0xb2,0x3d, 0x70,0xa3,0x44,0x05,0x16,0x84,0xd8,0x0c,0x68,0xcb,0xe4,0xe6,0x3c,0x4b,0x00,0x0c, 0x00,0x00,0x64,0x4f,0x53,0x41,0x8f,0xc7,0x7d,0x21,0x64,0x46,0xe0,0x79,0xf9,0x79, 0x5b,0xf2,0xfc,0x00,0x30,0x00,0x00,0x90,0x1f,0xda,0x31,0xaf,0xaf,0x44,0x05,0x26, 0x86,0x20,0x69,0xf0,0x25,0x11,0xff,0x36,0x3c,0x33,0x00,0x0c,0x00,0x00,0xf8,0x4b, 0x5b,0x41,0x8f,0xce,0x7d,0x33,0x80,0x51,0x01,0x3d,0x13,0x61,0x0b,0x9e,0x11,0x00, 0x06,0x00,0x00,0x0a,0x87,0x36,0xd4,0x19,0x28,0x46,0x60,0x6a,0x40,0x8c,0xc0,0x1b, 0xf2,0x73,0x74,0xe0,0xb9,0x00,0x60,0x00,0x00,0xa0,0x78,0x74,0x95,0xed,0x81,0xeb, 0x65,0x7b,0x60,0x7e,0x89,0xcc,0x80,0x46,0x23,0xb6,0x95,0x9f,0x81,0x67,0x01,0x80, 0x01,0x00,0x80,0x12,0xd0,0x48,0x38,0x51,0xa2,0x02,0x33,0x8b,0x68,0x04,0xb4,0x7f, 0x41,0x57,0xc4,0x1f,0x00,0x03,0x00,0x00,0xa5,0xa7,0xa2,0xb0,0xa7,0x88,0xf2,0x7f, 0x0b,0x9c,0x34,0x38,0x4f,0xc4,0xbf,0x3b,0xe2,0x0f,0x80,0x01,0x00,0x80,0xe0,0xd1, 0x5a,0xb8,0x40,0xa2,0x02,0x6f,0xf8,0x1c,0x15,0xd0,0xed,0x86,0xdd,0x11,0x7f,0x00, 0x0c,0x00,0x00,0x04,0x9b,0x1a,0xc2,0x00,0x11,0xec,0x29,0x3e,0x18,0x01,0x6d,0x50, 0xb4,0x17,0xe2,0x0f,0x80,0x01,0x00,0x80,0x70,0xd1,0x59,0xc4,0x7b,0xa4,0x6c,0x0f, 0xcc,0xcb,0xc1,0x0c,0xe8,0x91,0xc6,0xfb,0x22,0xfe,0x00,0x18,0x00,0x00,0x08,0x2f, 0xf5,0x85,0x7f,0xcb,0xf6,0xc0,0x8c,0x0c,0x8d,0xc0,0x22,0xf9,0x7d,0x87,0x20,0xfe, 0x00,0x18,0x00,0x00,0x88,0x06,0xb2,0x10,0x98,0x9e,0x22,0xec,0xe3,0x24,0x2a,0xb0, 0x28,0x85,0x19,0xd0,0xbe,0x03,0xdc,0x2f,0x00,0x0c,0x00,0x00,0x44,0x10,0xed,0xe1, 0x7f,0xae,0x08,0xfd,0xab,0x1e,0x23,0x70,0x34,0xe2,0x0f,0x80,0x01,0x00,0x80,0xe8, 0x53,0x55,0x38,0x48,0xa2,0x02,0x0f,0x48,0x54,0xe0,0x04,0xc4,0x1f,0x00,0x03,0x00, 0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x06,0x00, 0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x0c,0x00, 0x00,0x00,0x00,0x60,0x00,0x00,0x20,0x14,0x54,0xaa,0x54,0xc9,0x54,0xaf,0x5e,0x9d, 0x7b,0x01,0x80,0x01,0x00,0x80,0x72,0x60,0xd0,0xa0,0x41,0x66,0xde,0xbc,0x79,0x66, 0xe5,0xca,0x95,0x66,0xed,0xda,0xb5,0xe6,0xa3,0x8f,0x3e,0x32,0xa3,0x46,0x8d,0x32, 0xb5,0x6b,0xd7,0xe6,0xfe,0x00,0x60,0x00,0x20,0x88,0x34,0x6e,0xdc,0xd8,0xb4,0x69, 0xd3,0x26,0x29,0x75,0xeb,0xd6,0x0d,0xfd,0x35,0x64,0x4a,0xab,0x56,0xad,0x4c,0xa3, 0x46,0x8d,0x4c,0xb5,0x6a,0xd5,0x98,0x1b,0x59,0x70,0xc3,0x0d,0x37,0x98,0x64,0xe3, 0xdd,0x77,0xdf,0x35,0x35,0x6a,0xd4,0xe0,0x3e,0x01,0x60,0x00,0x20,0x68,0x7c,0xf8, 0xe1,0x87,0x26,0xd5,0x98,0x32,0x65,0x4a,0xe8,0xaf,0x21,0x97,0xf1,0xe7,0x9f,0x7f, 0x9a,0xe5,0xcb,0x97,0x9b,0x65,0xcb,0x96,0x99,0xb7,0xdf,0x7e,0xdb,0xdc,0x73,0xcf, 0x3d,0xe6,0xbc,0xf3,0xce,0x33,0x7d,0xfa,0xf4,0x31,0x2d,0x5a,0xb4,0x60,0xee,0x38, 0x74,0xe9,0xd2,0xc5,0xac,0x59,0xb3,0x26,0xe5,0xbd,0xbc,0xfa,0xea,0xab,0xb9,0x57, 0x00,0x18,0x00,0x08,0x1a,0x1f,0x7f,0xfc,0x71,0xca,0xc5,0xfb,0xd1,0x47,0x1f,0x0d, 0xfd,0x35,0x14,0x62,0x7c,0xfb,0xed,0xb7,0x66,0xc2,0x84,0x09,0xa6,0x57,0xaf,0x5e, 0xa6,0x62,0xc5,0xf2,0xed,0x8d,0x3f,0x74,0xe8,0xd0,0xb4,0xf7,0x6a,0xc9,0x92,0x25, 0xbc,0x6b,0x00,0x18,0x00,0xc0,0x00,0x44,0xc3,0x00,0xd8,0xe3,0xf3,0xcf,0x3f,0x37, 0xd7,0x5d,0x77,0x9d,0xd9,0x6c,0xb3,0xcd,0xca,0x6e,0xfe,0xdc,0x7e,0xfb,0xed,0x69, 0xef,0xcf,0x5f,0x7f,0xfd,0x15,0x4f,0x0e,0xe4,0x7d,0x03,0xc0,0x00,0x00,0x06,0x20, 0x52,0x06,0xc0,0x1d,0x2b,0x56,0xac,0x30,0x97,0x5d,0x76,0x59,0x59,0x65,0xc1,0x6b, 0x14,0x24,0x93,0xd1,0xb0,0x61,0x43,0xde,0x37,0x00,0x0c,0x00,0x60,0x00,0xa2,0x69, 0x00,0xdc,0xa1,0x39,0x09,0x7d,0xfb,0xf6,0x2d,0x8b,0xf9,0x73,0xcb,0x2d,0xb7,0xa4, 0xbd,0x1f,0xbf,0xff,0xfe,0xbb,0xa9,0x50,0xa1,0x02,0xef,0x1b,0x00,0x06,0x00,0x30, 0x00,0xd1,0x36,0x00,0x3a,0xb4,0x14,0xee,0xb8,0xe3,0x8e,0x8b,0xfc,0xfc,0x39,0xfb, 0xec,0xb3,0xd3,0xde,0x0b,0x2d,0x0f,0xe4,0x5d,0xcb,0x8d,0xfd,0xf6,0xdb,0xcf,0x7c, 0xf2,0xc9,0x27,0x1b,0x30,0x73,0xe6,0x4c,0xee,0x0d,0x06,0x00,0x03,0x00,0x18,0x80, 0xa0,0x1a,0x00,0xd7,0x04,0x1c,0x7f,0xfc,0xf1,0x91,0x9e,0x3f,0x2d,0x5b,0xb6,0x34, 0xbf,0xfd,0xf6,0x5b,0xca,0xfb,0x70,0xca,0x29,0xa7,0xf0,0xae,0xf9,0x98,0x63,0xa1, 0x39,0x27,0xdc,0x1b,0x0c,0x00,0x06,0x00,0x30,0x00,0x19,0x5c,0x83,0xd6,0xa2,0x1f, 0x79,0xe4,0x91,0x49,0xf9,0xe7,0x3f,0xff,0x69,0x06,0x0f,0x1e,0x6c,0x4e,0x3b,0xed, 0xb4,0x78,0x56,0xfb,0x55,0x57,0x5d,0x15,0x0f,0x6d,0xcf,0x9a,0x35,0x2b,0x9e,0xed, 0x9f,0xaf,0x09,0xd0,0x26,0x39,0x51,0x9e,0x43,0x27,0x9e,0x78,0xa2,0x59,0xbd,0x7a, 0x75,0xc2,0xeb,0x9f,0x3e,0x7d,0x7a,0x59,0x57,0x49,0xe4,0x83,0xde,0xb7,0x6f,0xbe, 0xf9,0x06,0x03,0x00,0x18,0x00,0xc0,0x00,0x94,0xea,0x1a,0xb4,0x39,0x90,0x86,0x62, 0xef,0xbc,0xf3,0x4e,0xf3,0xe3,0x8f,0x3f,0x66,0x6d,0x02,0x7e,0xfd,0xf5,0x57,0xd3, 0xbc,0x79,0xf3,0x48,0xcf,0xa3,0x1d,0x77,0xdc,0xd1,0xdc,0x7f,0xff,0xfd,0x66,0xf1, 0xe2,0xc5,0xf1,0x30,0xb5,0x0a,0xbf,0x46,0x3f,0xd8,0xfb,0xcf,0x9d,0x6e,0xdd,0xba, 0x25,0xad,0x3a,0xe1,0xfe,0x60,0x00,0x30,0x00,0x80,0x01,0x28,0xf2,0x35,0x54,0xa9, 0x52,0xc5,0x1c,0x7e,0xf8,0xe1,0xf1,0x56,0xb7,0xd9,0x8c,0xbb,0xee,0xba,0x8b,0xf9, 0x06,0x59,0x31,0x7c,0xf8,0x70,0x0c,0x00,0x60,0x00,0x00,0x03,0x10,0xb4,0x6b,0xd0, 0x76,0xc1,0xba,0x5d,0xb0,0x6a,0xd5,0xaa,0x8c,0xb7,0x02,0xba,0x77,0xef,0xce,0x9c, 0x83,0x8c,0xd1,0xe4,0x49,0x0c,0x00,0x60,0x00,0x00,0x03,0x10,0xd0,0x6b,0x38,0xe8, 0xa0,0x83,0xe2,0x6d,0x83,0x33,0x19,0x8f,0x3c,0xf2,0x08,0x73,0x0e,0x32,0x62,0xd3, 0x4d,0x37,0x4d,0xd9,0x78,0x8a,0x7b,0x84,0x01,0xc0,0x00,0x00,0x06,0x20,0x00,0xd7, 0xa0,0xf9,0x01,0xfa,0x85,0x9f,0x6e,0x68,0xb6,0x3c,0x07,0x0d,0x41,0x26,0x9c,0x74, 0xd2,0x49,0x18,0x00,0xc0,0x00,0x00,0x06,0x20,0x0c,0xd7,0x90,0x49,0x4b,0x5c,0x1d, 0x7a,0x98,0x10,0xf3,0x0e,0xd2,0x31,0x6d,0xda,0x34,0x0c,0x00,0x60,0x00,0x00,0x03, 0x10,0x86,0x6b,0xd0,0x23,0x89,0x33,0xa9,0x10,0xb8,0xe9,0xa6,0x9b,0x98,0x77,0x90, 0x92,0x5a,0xb5,0x6a,0xc5,0xdb,0x4a,0x63,0x00,0x00,0x03,0x00,0x18,0x80,0x90,0x5c, 0xc3,0xb8,0x71,0xe3,0xd2,0x1a,0x80,0xb7,0xde,0x7a,0x8b,0x79,0x07,0x29,0x39,0xf0, 0xc0,0x03,0xd3,0x1e,0x3e,0xc5,0x7d,0xc2,0x00,0x60,0x00,0x00,0x03,0x10,0xa0,0x6b, 0xd0,0x5c,0x80,0x74,0xe3,0xb3,0xcf,0x3e,0x2b,0xe9,0xbd,0xd2,0xce,0x7d,0x5a,0xc6, 0x78,0xf1,0xc5,0x17,0xc7,0x4b,0x13,0x5f,0x7f,0xfd,0x75,0x33,0x77,0xee,0xdc,0xf8, 0xf9,0x05,0xaf,0xbe,0xfa,0xaa,0x79,0xf8,0xe1,0x87,0xe3,0x4d,0x90,0x2e,0xbd,0xf4, 0xd2,0x78,0x83,0x1f,0xfd,0x1a,0x8d,0xd2,0x7c,0x6f,0xdf,0xbe,0xbd,0x39,0xf9,0xe4, 0x93,0xe3,0xcd,0x9e,0x26,0x4e,0x9c,0x68,0x66,0xcc,0x98,0x11,0xef,0x5d,0xf0,0xf5, 0xd7,0x5f,0xc7,0x4b,0x3b,0xdf,0x7e,0xfb,0x6d,0xf3,0xdc,0x73,0xcf,0x99,0x29,0x53, 0xa6,0x98,0xd1,0xa3,0x47,0xc7,0xef,0x95,0x26,0xe4,0x15,0xe3,0x67,0x6b,0xd0,0xa0, 0x81,0x39,0xff,0xfc,0xf3,0xcd,0x17,0x5f,0x7c,0x81,0x01,0x00,0x0c,0x00,0x60,0x00, 0xc2,0x74,0x0d,0x7a,0x0a,0x60,0xba,0x8a,0x00,0xfd,0xf5,0x6c,0xff,0xde,0x1a,0x35, 0x6a,0x98,0x9f,0x7f,0xfe,0x39,0xfe,0x67,0xbd,0xac,0x5c,0xb9,0x32,0xde,0x9b,0x20, 0xdd,0xdf,0xd1,0xae,0x5d,0xbb,0x78,0x23,0xa3,0x4c,0xcb,0x16,0xdd,0xd1,0xa4,0x49, 0x93,0x9c,0x7f,0x36,0x97,0x7d,0xf6,0xd9,0x27,0xaf,0xfb,0x9a,0xea,0xdf,0xd0,0x6d, 0x97,0x74,0x9d,0x06,0xdb,0xb4,0x69,0x63,0x86,0x0c,0x19,0x92,0xb4,0xac,0x2e,0x93, 0xa1,0xa2,0xac,0x86,0xa0,0x10,0x47,0x3e,0xeb,0xb3,0x19,0x3b,0x76,0x6c,0xfc,0xd0, 0xa4,0x4c,0x47,0xaa,0xfb,0x9d,0x8a,0x67,0x9f,0x7d,0x96,0x75,0x0f,0x03,0x80,0x01, 0x00,0x0c,0x40,0x29,0x7e,0x16,0x1d,0x75,0xeb,0xd6,0xcd,0xea,0xef,0xac,0x5d,0xbb, 0x76,0xca,0xbf,0x6f,0x93,0x4d,0x36,0x49,0xfa,0x67,0x3b,0x76,0xec,0x68,0x1e,0x78, 0xe0,0x01,0xb3,0x66,0xcd,0x9a,0xac,0x45,0xef,0xa7,0x9f,0x7e,0xca,0xfb,0x67,0xd3, 0x31,0x60,0xc0,0x80,0xbc,0xee,0x69,0xba,0x7f,0xa3,0x6d,0xdb,0xb6,0x09,0xff,0x9c, 0x8a,0xf5,0xd3,0x4f,0x3f,0xed,0xeb,0xf9,0x0e,0x7a,0x1f,0xb5,0x9c,0x73,0xeb,0xad, 0xb7,0xce,0x7b,0xae,0xec,0xb5,0xd7,0x5e,0xe6,0xc9,0x27,0x9f,0xcc,0xa8,0x82,0xc4, 0xaf,0xc1,0x16,0x14,0x06,0x00,0x03,0x00,0x18,0x80,0x02,0x31,0x7b,0xf6,0xec,0xb4, 0x8b,0xb0,0x7e,0x91,0xfa,0x29,0x80,0x5d,0xbb,0x76,0x4d,0xf8,0xe7,0xf6,0xdf,0x7f, 0xff,0xac,0xbe,0x2a,0xbd,0x43,0xaf,0x25,0x0c,0x06,0xe0,0x90,0x43,0x0e,0xd9,0xe0, 0xf7,0x6b,0x44,0xe0,0xf4,0xd3,0x4f,0x4f,0x7b,0x48,0x51,0x3e,0x43,0x93,0xf4,0x4e, 0x38,0xe1,0x84,0x9c,0xaf,0xe9,0x99,0x67,0x9e,0x29,0xc9,0x01,0x55,0x18,0x00,0x0c, 0x00,0x06,0x00,0x30,0x00,0x05,0x42,0xf7,0x94,0x53,0x0d,0x3d,0x34,0x27,0xdb,0x73, 0x01,0xd2,0x09,0xa0,0xe6,0x1e,0x78,0xff,0x4c,0xaa,0x03,0x7a,0x32,0x1d,0xf7,0xdc, 0x73,0x4f,0x28,0x0c,0xc0,0x65,0x97,0x5d,0xf6,0xbf,0xdf,0xdb,0xaa,0x55,0x2b,0xf3, 0xca,0x2b,0xaf,0x14,0x4d,0x50,0x27,0x4d,0x9a,0x64,0x2a,0x55,0xaa,0x94,0xf5,0x35, 0xe9,0x01,0x55,0x18,0x00,0xc0,0x00,0x00,0xe2,0x19,0xa1,0x6b,0xd0,0xa4,0xba,0x74, 0x43,0x0f,0x17,0xf2,0x53,0x00,0x8f,0x3d,0xf6,0xd8,0xff,0xfd,0x5e,0x3d,0x7c,0x47, 0x13,0xdc,0xfc,0x18,0x97,0x5c,0x72,0x49,0x28,0x0c,0x80,0x26,0x2e,0xea,0xef,0xab, 0x57,0xaf,0x5e,0x3c,0xa1,0xaf,0xd8,0xe3,0xda,0x6b,0xaf,0xc5,0x00,0x00,0x06,0x00, 0x30,0x00,0xe5,0x7e,0x0d,0xe9,0x0e,0x09,0xd2,0x24,0xbc,0x6c,0x4f,0xc8,0x4b,0x27, 0x80,0x17,0x5e,0x78,0xe1,0xff,0x7e,0xaf,0x8a,0xb6,0x5f,0x63,0xe0,0xc0,0x81,0xa1, 0x30,0x00,0x5a,0xc1,0x50,0xb9,0x72,0xe5,0x78,0x82,0x5b,0xa9,0x46,0x26,0xf7,0x0a, 0x03,0x00,0x18,0x00,0x40,0x3c,0x23,0x7a,0x0d,0x2a,0xec,0xe9,0xf6,0x9d,0x35,0x9b, 0xdc,0x6f,0x01,0xfc,0xcf,0x7f,0xfe,0x13,0xff,0x7d,0x3b,0xed,0xb4,0x53,0x56,0x59, 0xfe,0xba,0x8f,0xad,0xe2,0xb9,0x74,0xe9,0xd2,0x78,0x35,0x81,0x77,0x6c,0xb7,0xdd, 0x76,0xa1,0x30,0x00,0x9a,0x44,0x77,0xdf,0x7d,0xf7,0x65,0x74,0xcd,0x9a,0x13,0xa1, 0xfb,0xef,0xfa,0xd5,0xae,0x95,0x01,0xc7,0x1d,0x77,0x5c,0xbc,0xd4,0x6f,0xd0,0xa0, 0x41,0xe6,0xac,0xb3,0xce,0x8a,0xdf,0x4b,0xad,0x16,0xc8,0x36,0x69,0xf2,0x97,0x5f, 0x7e,0x89,0x47,0x20,0x32,0xbd,0x26,0x8d,0xd2,0x3c,0xf4,0xd0,0x43,0x09,0xc9,0x24, 0x91,0x34,0xd9,0x9f,0x4d,0x47,0x26,0x51,0x1d,0xc0,0x00,0x60,0x00,0x30,0x00,0x18, 0x80,0x2c,0xe9,0xd2,0xa5,0x4b,0xda,0x85,0x5b,0xeb,0xcc,0xfd,0x16,0x40,0x5d,0xd8, 0xeb,0xd4,0xa9,0x13,0x17,0xf2,0x74,0xf9,0x07,0xfa,0x95,0xac,0xa2,0xd7,0xac,0x59, 0xb3,0xbf,0x99,0x17,0xcd,0x4d,0xd0,0x13,0x0b,0x8f,0x38,0xe2,0x08,0x73,0xce,0x39, 0xe7,0x98,0x9a,0x35,0x6b,0x86,0xc2,0x00,0xa4,0x1b,0x7f,0xfd,0xf5,0x97,0xb9,0xf5, 0xd6,0x5b,0xcd,0xae,0xbb,0xee,0x6a,0xaa,0x56,0xad,0x9a,0x71,0x67,0xc7,0xcb,0x2f, 0xbf,0xdc,0xfc,0xf0,0xc3,0x0f,0x19,0xff,0x3b,0x5a,0xc3,0xef,0xc7,0x3c,0xba,0xe8, 0xa2,0x8b,0xe8,0x03,0x00,0x18,0x00,0xc0,0x00,0x84,0xe9,0x1a,0x32,0x09,0xbf,0xab, 0x58,0xfb,0x2d,0x80,0x2f,0xbd,0xf4,0x92,0xb9,0xe3,0x8e,0x3b,0x52,0xfe,0x1e,0x15, 0xfe,0x2d,0xb7,0xdc,0xd2,0xf7,0x6b,0x0e,0xba,0x01,0xd0,0x33,0x1a,0x34,0x31,0x30, 0xd7,0x7f,0xbb,0x61,0xc3,0x86,0xe6,0xf9,0xe7,0x9f,0xcf,0xb8,0x57,0x40,0x26,0x3d, 0x19,0x30,0x00,0x80,0x01,0x00,0xc4,0x33,0x62,0xd7,0x30,0x67,0xce,0x9c,0xb4,0x22, 0x71,0xf4,0xd1,0x47,0x17,0x55,0x00,0x7f,0xfd,0xf5,0x57,0xf3,0xcf,0x7f,0xfe,0xb3, 0x60,0xd7,0x1c,0x54,0x03,0xa0,0xd1,0x0e,0x8d,0x74,0xf8,0x71,0x8d,0x2a,0xea,0xd3, 0xa7,0x4f,0xcf,0xe8,0xdf,0xed,0xdf,0xbf,0x3f,0x06,0x00,0x30,0x00,0x80,0x01,0x28, 0xa7,0x6b,0x38,0xf8,0xe0,0x83,0x33,0x12,0x25,0xfd,0xa2,0x2c,0x96,0x01,0xd0,0x2e, 0x79,0x9a,0x17,0x50,0xc8,0xeb,0x0e,0xa2,0x01,0xd0,0xfb,0x9c,0xa8,0x34,0x32,0x1f, 0xb4,0x85,0x70,0x26,0xf9,0x15,0x37,0xdc,0x70,0x03,0x06,0x00,0x30,0x00,0x80,0x01, 0x28,0x97,0x6b,0xd0,0x56,0xb5,0x99,0x24,0x6e,0x69,0x28,0xb9,0x58,0x5f,0xc0,0xdf, 0x7d,0xf7,0x9d,0xe9,0xdc,0xb9,0x73,0xc1,0xef,0x7d,0x10,0x0d,0xc0,0xd5,0x57,0x5f, 0x5d,0x90,0x6b,0xd5,0x33,0x12,0xfc,0x68,0x9e,0x84,0x01,0x00,0x0c,0x00,0x20,0x9e, 0x11,0xb8,0x06,0x6d,0x02,0x73,0xf7,0xdd,0x77,0x67,0x24,0x4c,0xa7,0x9c,0x72,0x4a, 0x51,0x04,0x50,0xb3,0xe2,0xf3,0xed,0xbf,0x1f,0x56,0x03,0xf0,0xfe,0xfb,0xef,0xc7, 0xcf,0x64,0x28,0xc4,0xb5,0x36,0x6d,0xda,0x34,0x9e,0xed,0x9f,0x2e,0xe1,0x50,0x0d, 0x21,0x06,0x00,0x30,0x00,0x80,0x78,0x46,0xf8,0x1a,0x74,0x6f,0x58,0x93,0xfa,0x32, 0x19,0x1f,0x7c,0xf0,0x81,0xa9,0x56,0xad,0x5a,0x51,0x0c,0xc0,0xa8,0x51,0xa3,0x8a, 0x76,0xef,0x83,0x66,0x00,0x0e,0x3d,0xf4,0xd0,0x82,0x5e,0xaf,0x56,0x13,0xa4,0x1b, 0x5a,0x0d,0x82,0x01,0x00,0x0c,0x00,0x20,0x9e,0x11,0xbd,0x06,0x2d,0x97,0x7b,0xed, 0xb5,0xd7,0x32,0x16,0xa6,0xbe,0x7d,0xfb,0x16,0x45,0x00,0xb5,0x13,0x5e,0xa6,0xa5, 0x6e,0x51,0x33,0x00,0x9a,0xf3,0x90,0xab,0xc9,0xca,0x94,0xb3,0xcf,0x3e,0x3b,0xed, 0xcf,0xa1,0x87,0xfc,0x60,0x00,0x00,0x03,0x00,0x88,0x67,0x84,0xae,0x41,0x6b,0xe5, 0x77,0xdc,0x71,0x47,0x33,0x79,0xf2,0xe4,0xac,0xbe,0xc8,0xf5,0xf4,0xb8,0x62,0x7d, 0x01,0x1f,0x75,0xd4,0x51,0x45,0xbd,0xf7,0x41,0x32,0x00,0xe3,0xc7,0x8f,0x0f,0x44, 0xb2,0x67,0xbe,0x51,0x08,0x0c,0x00,0x60,0x00,0x00,0x03,0x50,0xe2,0x6b,0x50,0xc1, 0x6f,0xd9,0xb2,0x65,0x3c,0xa3,0x5c,0x43,0xbf,0x5a,0xe7,0x9d,0xed,0xf8,0xf4,0xd3, 0x4f,0xe3,0x7f,0x47,0x31,0x04,0x50,0xff,0x2d,0x3f,0xea,0xd0,0xc3,0x6a,0x00,0xf6, 0xde,0x7b,0xef,0x82,0x5f,0xaf,0x26,0x56,0xa6,0x1b,0xc7,0x1f,0x7f,0x3c,0x06,0x00, 0x30,0x00,0x80,0x01,0x08,0xc2,0x35,0xe8,0xfe,0xbb,0xd6,0x84,0x27,0x42,0x4f,0xcd, 0xd3,0xb0,0xae,0x36,0xf1,0x19,0x39,0x72,0xa4,0xb9,0xe9,0xa6,0x9b,0xcc,0xfd,0xf7, 0xdf,0x6f,0xe6,0xce,0x9d,0x9b,0xd7,0x51,0xba,0xae,0x20,0xeb,0x99,0xf4,0xc5,0x10, 0x59,0x1d,0xda,0xda,0xb6,0xd8,0xf7,0x3e,0x48,0x06,0x20,0xdb,0x43,0x96,0x72,0xa1, 0x6e,0xdd,0xba,0x69,0x7f,0x8e,0xf3,0xce,0x3b,0x0f,0x03,0x00,0x18,0x00,0xc0,0x00, 0x04,0xe1,0x1a,0x4a,0x31,0xfc,0x12,0xff,0x6c,0x04,0xb0,0x18,0x65,0x7f,0x41,0x35, 0x00,0x5f,0x7e,0xf9,0x65,0xd1,0xae,0x39,0x5d,0x7b,0x60,0x15,0x70,0x0c,0x00,0x60, 0x00,0x00,0x03,0x50,0x86,0x06,0x40,0x6b,0xc1,0xfd,0x12,0xff,0x4c,0x05,0x50,0x45, 0xa9,0x62,0xc5,0x8a,0x65,0x6b,0x00,0x9e,0x7e,0xfa,0xe9,0xa2,0x5d,0xb3,0x0a,0x30, 0x06,0x00,0x30,0x00,0x80,0x01,0xc0,0x00,0xfc,0x6f,0xfc,0xfc,0xf3,0xcf,0xf1,0x5a, 0x7f,0xbf,0x85,0x38,0x13,0x01,0x2c,0xd5,0x73,0x0a,0x8a,0x01,0xf0,0xa3,0x03,0x1f, 0x06,0x00,0x30,0x00,0x18,0x00,0x0c,0x00,0x06,0x20,0xeb,0xa1,0xfd,0x00,0x5a,0xb4, 0x68,0x51,0x32,0x91,0x2d,0x66,0xed,0x7f,0x10,0x0d,0xc0,0xb0,0x61,0xc3,0x30,0x00, 0x80,0x01,0xc0,0x00,0x00,0x06,0xa0,0x38,0x63,0xd9,0xb2,0x65,0xf1,0x23,0x63,0x37, 0xdf,0x7c,0xf3,0x92,0x8b,0xec,0xd0,0xa1,0x43,0xcb,0xda,0x00,0x9c,0x7b,0xee,0xb9, 0x18,0x00,0x28,0x07,0x03,0xb0,0x1f,0x06,0x00,0x30,0x00,0x25,0x30,0x00,0x7a,0xc8, 0xcc,0x82,0x05,0x0b,0xe2,0xf5,0xe6,0x3d,0x7b,0xf6,0x8c,0x97,0x09,0x06,0x45,0x64, 0x4f,0x38,0xe1,0x84,0xb2,0x36,0x00,0x5a,0xcd,0x81,0x01,0x80,0x88,0x33,0xc0,0x31, 0x00,0xbd,0x8b,0x65,0x00,0xea,0x7a,0x0c,0xc0,0x6a,0x1e,0x02,0x06,0x20,0x8a,0x06, 0x40,0xfb,0xe7,0x6b,0x9f,0x77,0x5d,0x5c,0xb5,0x9b,0x9e,0x76,0xf9,0xd3,0xc4,0x32, 0xad,0xff,0x57,0x71,0xd5,0x06,0x40,0xf9,0xf6,0x78,0x2f,0xa4,0x00,0x1e,0x76,0xd8, 0x61,0x65,0x6d,0x00,0x8e,0x3c,0xf2,0x48,0x0c,0x00,0x44,0x99,0xd5,0x19,0x1a,0x80, 0xba,0x7e,0x18,0x80,0x6a,0x49,0x0c,0xc0,0x1f,0x3c,0x08,0x0c,0x40,0xd8,0xae,0xe1, 0xa9,0xa7,0x9e,0x8a,0x8b,0x48,0x32,0x6a,0xd5,0xaa,0x55,0x92,0x0c,0xfa,0x20,0x89, 0x6c,0xd8,0x0d,0x40,0x31,0xaf,0x1f,0x03,0x00,0x25,0xe0,0x8f,0x2c,0x0d,0x40,0xb5, 0x42,0x18,0x80,0x1f,0x79,0x10,0x18,0x00,0xae,0x01,0x03,0x80,0x01,0xc0,0x00,0x40, 0x51,0xf9,0xd1,0x63,0x00,0x76,0x16,0xb6,0x13,0x3a,0xf8,0x69,0x00,0x2a,0x0a,0x95, 0x3d,0x06,0xa0,0x91,0xd0,0x42,0x68,0x23,0x7c,0xc1,0x83,0xc0,0x00,0x70,0x0d,0x18, 0x00,0x0c,0x00,0x06,0x00,0x8a,0xca,0x97,0x8e,0x01,0xd8,0x37,0x81,0x01,0x68,0xe3, 0x68,0x74,0x23,0x8f,0x01,0xa8,0xec,0x68,0xba,0x6f,0x06,0x60,0x01,0x0f,0x02,0x03, 0xc0,0x35,0x60,0x00,0x30,0x00,0x18,0x00,0x28,0x2a,0x8b,0x84,0xfe,0x8e,0x01,0xd8, 0xa3,0x18,0x06,0xa0,0x66,0x02,0x03,0xf0,0x02,0x0f,0x02,0x03,0xc0,0x35,0x60,0x00, 0x30,0x00,0x18,0x00,0x28,0x2a,0x2f,0x3b,0x06,0xa0,0x9f,0x63,0x00,0xba,0x0b,0x9d, 0x85,0xf6,0x09,0x0c,0x40,0x4d,0xbf,0x0c,0xc0,0x46,0x42,0x43,0xa1,0xb9,0xd0,0x5a, 0x98,0xc2,0x83,0xc0,0x00,0x70,0x0d,0x18,0x00,0x0c,0x00,0x06,0x00,0x8a,0xca,0xe3, 0xc2,0x21,0x8e,0x01,0xe8,0x25,0xec,0x64,0x19,0x80,0xd6,0x8e,0x46,0x37,0x74,0x34, 0xbb,0x60,0x06,0xe0,0x06,0x1e,0x04,0x06,0x80,0x6b,0xc0,0x00,0x60,0x00,0x30,0x00, 0x50,0x54,0x26,0x38,0x06,0xa0,0xaf,0xd0,0xd3,0x31,0x00,0xdb,0x0a,0xed,0xfc,0x32, 0x00,0x31,0xcb,0x00,0x54,0xf5,0x18,0x80,0x66,0x42,0x2b,0xe1,0x3c,0x1e,0x04,0x06, 0x80,0x6b,0xc0,0x00,0x60,0x00,0x30,0x00,0x50,0x54,0x46,0x08,0x07,0x0b,0x7d,0x1c, 0x03,0xd0,0x4d,0xd8,0x46,0xd8,0xd2,0xd1,0xe6,0x66,0x1e,0x03,0x50,0xd5,0x32,0x00, 0xb1,0x5c,0x0c,0x40,0x0d,0xa1,0x8e,0xd0,0xc0,0xf9,0xcb,0x37,0x15,0xfe,0xc1,0x83, 0xc0,0x00,0x70,0x0d,0x18,0x00,0x0c,0x00,0x06,0x00,0x8a,0xca,0x39,0xc2,0x41,0x8e, 0x01,0xd8,0x5d,0xd8,0xd1,0x32,0x00,0x9b,0x3a,0x1a,0xdd,0xc0,0xd1,0xec,0x1a,0xf9, 0x18,0x80,0x4a,0x09,0x0c,0x40,0x53,0xe7,0x1f,0xd9,0x89,0x07,0x81,0x01,0xe0,0x1a, 0x30,0x00,0x18,0x00,0x0c,0x00,0x14,0x95,0x63,0x84,0x03,0x85,0x7d,0x84,0x1e,0xc2, 0x0e,0xc2,0xd6,0xc2,0x16,0x8e,0x36,0x37,0x4d,0x60,0x00,0x2a,0x65,0x6b,0x00,0x2a, 0x78,0x0c,0x40,0x6d,0xa1,0xbe,0xd0,0x44,0x68,0x29,0xb4,0x15,0xbe,0xe7,0x61,0x60, 0x00,0xb8,0x06,0x0c,0x00,0x06,0x00,0x03,0x00,0x45,0x41,0x35,0xf7,0x30,0xe1,0x00, 0x61,0x2f,0x61,0x37,0xa1,0xab,0xd0,0xc9,0xd1,0xe4,0x96,0x8e,0x46,0xd7,0x77,0x34, 0xdb,0x36,0x00,0x15,0x72,0x31,0x00,0xee,0x79,0x00,0xfa,0x97,0xd5,0x73,0xfe,0xf2, 0x4d,0x84,0xcd,0x85,0x17,0x79,0x20,0x18,0x00,0xae,0x01,0x03,0x80,0x01,0x28,0x8d, 0x01,0xf8,0xfe,0xfb,0xef,0x59,0xbb,0xca,0x8b,0x57,0x62,0x7f,0x3f,0x0a,0xb8,0x8b, 0xb0,0x95,0xa3,0xc9,0x9b,0x38,0x1a,0x5d,0xcf,0xd1,0xec,0xac,0xcf,0x01,0x48,0x66, 0x00,0x12,0x9d,0x08,0x48,0x25,0x00,0x06,0x80,0x6b,0xc0,0x00,0x60,0x00,0x0a,0x64, 0x00,0x86,0x0c,0x19,0x92,0xf6,0x7a,0xeb,0xd4,0xa9,0xc3,0xfa,0x55,0x5e,0x15,0x00, 0xde,0x2e,0x80,0x7a,0x0e,0x80,0xb7,0x0d,0x70,0xce,0x27,0x01,0x26,0x2b,0x05,0x4c, 0xd4,0x0d,0x70,0x10,0x0f,0x04,0x03,0xc0,0x35,0x60,0x00,0x30,0x00,0x85,0x31,0x00, 0x7a,0xb4,0x71,0xba,0xd1,0xb9,0x73,0x67,0xd6,0xaf,0xf2,0x61,0x48,0x8a,0x1e,0x00, 0xbe,0x74,0x01,0xcc,0xb4,0x17,0x40,0x2b,0x27,0xf4,0xb0,0x96,0x87,0x82,0x01,0xe0, 0x1a,0x30,0x00,0x18,0x00,0xff,0x0d,0xc0,0xc0,0x81,0x03,0xd3,0x5e,0xef,0x21,0x87, 0x1c,0xc2,0xfa,0x55,0x1e,0xa8,0xd6,0x1e,0xe5,0xa9,0x00,0xe8,0x66,0xf5,0x00,0x68, 0xe5,0x57,0x0f,0x00,0xaf,0x01,0x48,0x56,0x09,0xa0,0x59,0x87,0x73,0x79,0x30,0x18, 0x00,0xae,0x01,0x03,0x80,0x01,0xf0,0xdf,0x00,0xec,0xb3,0xcf,0x3e,0x69,0xaf,0x77, 0xc4,0x88,0x11,0xac,0x5f,0xe5,0xc1,0x7c,0xe1,0x70,0xa7,0x02,0x60,0xef,0x2c,0x2a, 0x00,0x72,0x32,0x00,0xde,0x52,0xc0,0xea,0x9e,0x4a,0x00,0x37,0x11,0x70,0x14,0x0f, 0x06,0x03,0xc0,0x35,0x60,0x00,0x30,0x00,0xfe,0x1b,0x80,0xd6,0xad,0x5b,0xa7,0xbd, 0xde,0x5f,0x7f,0xfd,0xd5,0x34,0x6d,0xda,0x94,0x35,0x2c,0xfa,0x8c,0xf3,0x24,0x00, 0xee,0x9a,0x24,0x01,0xb0,0xbe,0x95,0x00,0x98,0x53,0x09,0x60,0x36,0x89,0x80,0xfd, 0x79,0x30,0x18,0x00,0xae,0x01,0x03,0x80,0x01,0xf0,0xdf,0x00,0x28,0x5f,0x7f,0xfd, 0x75,0xda,0x6b,0x1e,0x3b,0x76,0x2c,0x6b,0x58,0xf4,0x39,0x3d,0x96,0xfc,0x14,0x40, 0x5f,0x13,0x00,0x53,0xe5,0x01,0xd4,0x8d,0x6d,0x78,0x26,0x80,0xfe,0xe3,0x5f,0xf2, 0x70,0x30,0x00,0x5c,0x03,0x06,0x00,0x03,0xe0,0xbf,0x01,0xd0,0x39,0x9b,0x6e,0xac, 0x5a,0xb5,0xca,0xf4,0xeb,0xd7,0x8f,0x75,0x2c,0xba,0x7c,0x25,0x0c,0x8c,0xfd,0xbd, 0x05,0x70,0xa2,0x33,0x00,0x72,0x3e,0x05,0x30,0x9b,0x3c,0x80,0x66,0x56,0x1e,0xc0, 0x6d,0x3c,0xa0,0xe8,0x1b,0x80,0x35,0x6b,0xd6,0x98,0xf9,0xf3,0xe7,0x17,0x9d,0x69, 0xd3,0xa6,0x61,0x00,0x30,0x00,0x65,0x6b,0x00,0x06,0x0f,0x1e,0x6c,0x32,0x1d,0x37, 0xdc,0x70,0x83,0xa9,0x5e,0xbd,0x3a,0xeb,0x59,0xf4,0xb8,0x3b,0xb6,0xbe,0x01,0x90, 0xee,0xff,0xef,0x96,0x60,0xff,0xbf,0x99,0x9f,0xfb,0xff,0xb6,0x01,0x48,0xd6,0x11, 0xd0,0xcd,0x03,0x60,0x1b,0xa0,0x0c,0x0c,0x40,0xa9,0xc6,0xf2,0xe5,0xcb,0x31,0x00, 0x18,0x80,0xb2,0x35,0x00,0x2a,0xe8,0xdf,0x7d,0xf7,0x5d,0xc6,0xef,0xcb,0xbb,0xef, 0xbe,0x6b,0xc6,0x8c,0x19,0x63,0x8e,0x39,0xe6,0x18,0xd3,0xa3,0x47,0x0f,0xb3,0xd5, 0x56,0x5b,0x99,0x5d,0x76,0xd9,0xc5,0x1c,0x78,0xe0,0x81,0xe6,0xf8,0xe3,0x8f,0x37, 0xb7,0xdc,0x72,0x8b,0x79,0xeb,0xad,0xb7,0xcc,0x4f,0x3f,0xfd,0x64,0x36,0xdb,0x6c, 0x33,0xd6,0xbe,0x70,0x70,0x86,0x53,0xff,0xbf,0x9f,0x53,0xff,0xbf,0x4b,0x9a,0xfd, 0x7f,0x6f,0x0b,0xe0,0x9c,0x0c,0x40,0xb2,0x3c,0x00,0x6f,0x3f,0x00,0xad,0x41,0xfc, 0x80,0x87,0x84,0x01,0xc0,0x00,0x60,0x00,0x30,0x00,0xfe,0x1a,0x00,0x65,0xf8,0xf0, 0xe1,0x05,0x79,0xb7,0x3a,0x75,0xea,0xc4,0xda,0x17,0x7c,0x96,0x0a,0x47,0x38,0xe1, 0xff,0xbe,0x19,0xd6,0xff,0xe7,0xbd,0xff,0x9f,0x49,0x3f,0x00,0xf7,0x68,0x60,0x3d, 0x85,0x68,0x18,0x0f,0x0a,0x03,0x80,0x01,0xc0,0x00,0x60,0x00,0xfc,0x37,0x00,0x35, 0x6b,0xd6,0x34,0x8b,0x17,0x2f,0xc6,0x00,0x94,0x27,0x63,0x3c,0xe1,0x7f,0x2d,0xff, 0xdb,0xd1,0x09,0xff,0x27,0x3b,0x02,0x38,0xef,0xfd,0xff,0x74,0x79,0x00,0xf5,0x9d, 0x9a,0xc3,0x96,0x4e,0x08,0xa2,0xbb,0xf0,0x27,0x0f,0x0b,0x03,0x80,0x01,0xc0,0x00, 0x60,0x00,0xfc,0x35,0x00,0x8a,0x8a,0xf5,0x1f,0x7f,0xfc,0x81,0x01,0x28,0x2f,0x54, 0x53,0x8f,0x71,0xb6,0xd9,0x93,0x85,0xff,0x5b,0x3a,0x5a,0x5c,0xdf,0xcf,0xfd,0xff, 0x44,0x79,0x00,0x89,0xca,0x01,0xed,0x6d,0x80,0x49,0x3c,0x30,0x0c,0x00,0x06,0x00, 0x03,0x80,0x01,0xf0,0xdf,0x00,0x28,0xbb,0xef,0xbe,0x7b,0x56,0xf9,0x00,0x18,0x80, 0xd0,0x33,0xd9,0xc9,0xfe,0x3f,0xc8,0xca,0xfe,0x4f,0x14,0xfe,0x4f,0x56,0xfe,0x97, 0xb7,0x01,0xb0,0xf3,0x00,0x92,0x6d,0x03,0xb8,0xd5,0x00,0xfb,0xf2,0xc0,0x30,0x00, 0x18,0x00,0x0c,0x00,0x06,0xa0,0x30,0x06,0x20,0xe6,0x34,0x07,0x7a,0xe3,0x8d,0x37, 0x30,0x00,0xe5,0xc1,0xc9,0x56,0xf3,0x9f,0xbd,0x52,0x64,0xff,0x27,0x0a,0xff,0x57, 0xf2,0x43,0xfc,0x93,0x6d,0x03,0x78,0xab,0x01,0xb4,0x11,0x41,0x47,0xe1,0x69,0x1e, 0x5a,0x38,0x59,0xb4,0x68,0x51,0x20,0x0d,0xc0,0x27,0x9f,0x7c,0xe2,0xdb,0x35,0xdc, 0x7b,0xef,0xbd,0xa1,0x7e,0x46,0x35,0x6a,0xd4,0x30,0x2b,0x56,0xac,0x48,0x79,0x8d, 0x7d,0xfb,0xf6,0x8d,0xec,0xcf,0x16,0xb4,0xeb,0x7f,0xef,0xbd,0xf7,0x52,0xfe,0x2c, 0x67,0x9e,0x79,0x66,0xc1,0xfe,0x6d,0xbd,0xce,0x97,0x5e,0x7a,0x29,0xe7,0xf7,0xea, 0x95,0x57,0x5e,0x31,0xcd,0x9b,0x37,0x67,0xed,0x0b,0x2e,0xcf,0x39,0xc9,0x7f,0xee, 0xe1,0x3f,0x6e,0xf3,0x9f,0xed,0x1d,0xad,0xdd,0x2c,0x45,0xf6,0x7f,0x65,0xbf,0xbe, 0xfe,0x53,0x6d,0x03,0xb8,0xd5,0x00,0x6e,0x53,0xa0,0x76,0xce,0x0f,0xcb,0xc3,0x03, 0x00,0x28,0x02,0x2d,0x5a,0xb4,0x88,0x1f,0x1a,0xa4,0xdd,0x00,0x67,0xcc,0x98,0x61, 0xe6,0xcc,0x99,0x63,0x96,0x2d,0x5b,0x66,0x7e,0xf8,0xe1,0x87,0x78,0x84,0x42,0xff, 0x5b,0x7b,0x69,0xdc,0x71,0xc7,0x1d,0xf1,0x6a,0x82,0x83,0x0f,0x3e,0x38,0xfe,0x67, 0xb8,0x77,0xa1,0xe8,0xfc,0x97,0x28,0xf9,0x6f,0x9b,0xd8,0x86,0xcd,0x7f,0x92,0x65, 0xff,0xfb,0x66,0x00,0x92,0x55,0x03,0xd8,0x87,0x03,0x69,0x22,0x42,0x5b,0x27,0x31, 0x61,0x1a,0x0f,0x0f,0x00,0x00,0x20,0x27,0x9e,0x11,0xfe,0xe1,0x7c,0x50,0xef,0x9b, 0x20,0xf9,0xaf,0xad,0x95,0xfc,0xe7,0x36,0xff,0xf1,0x35,0xfb,0x3f,0x55,0x14,0xc0, 0x3e,0x1c,0x28,0x51,0x32,0xa0,0xee,0x57,0xac,0xe6,0x21,0x02,0x00,0x00,0x64,0x85, 0x6a,0xe7,0x29,0xce,0xd7,0xbf,0x9e,0xfc,0xb7,0x4f,0x6c,0xc3,0xa3,0x7f,0x13,0x25, 0xff,0x25,0x3a,0xfc,0xa7,0x60,0x06,0xa0,0x8a,0x27,0x19,0xd0,0x6e,0x0d,0xec,0x46, 0x01,0xee,0xe4,0x41,0x02,0x00,0x00,0x64,0xc5,0x7d,0x19,0x7c,0xfd,0xdb,0xad,0x7f, 0xed,0xe4,0xbf,0x2a,0x85,0x32,0x00,0xa9,0x92,0x01,0xed,0x13,0x02,0xdd,0x28,0x80, 0x1e,0x55,0xf8,0x23,0x0f,0x13,0x00,0x00,0x20,0x23,0x54,0x33,0x07,0x5b,0x7b,0xff, 0xc9,0xbe,0xfe,0x37,0xf6,0x7c,0xfd,0x17,0x24,0xf9,0x2f,0x9b,0x28,0x40,0xc3,0x04, 0x51,0x80,0xa1,0x3c,0x50,0x00,0x00,0x80,0x8c,0x18,0x99,0x20,0xf3,0x3f,0xd9,0xd7, 0x7f,0xc3,0x62,0x7e,0xfd,0xbb,0x06,0x20,0x5d,0x14,0xc0,0xcd,0x05,0x68,0xe7,0x38, 0x96,0x57,0x78,0xa8,0x00,0x00,0x00,0x29,0x79,0x5d,0xf8,0x67,0x6c,0x7d,0xdd,0xbf, 0x9d,0xf9,0xef,0x1e,0xfb,0x9b,0x68,0xef,0x3f,0xd1,0xd7,0x7f,0x41,0x0c,0x40,0x26, 0xb9,0x00,0xde,0x8a,0x00,0xdd,0xc3,0x58,0xc1,0xc3,0x05,0x00,0x00,0x48,0x88,0x6a, 0xe4,0x49,0xc2,0xe1,0xb1,0x75,0x5d,0xff,0xdc,0x43,0x7f,0xb4,0xc5,0xfe,0xf6,0x49, 0x32,0xff,0x8b,0xfa,0xf5,0x9f,0x6d,0x14,0xa0,0x75,0x6c,0xdd,0x41,0x05,0x5a,0xb3, 0x78,0x11,0x0f,0x18,0x00,0x00,0x20,0x21,0xd7,0x3a,0x89,0x7f,0xfd,0x9d,0x8f,0xe6, 0x3d,0x9d,0x3c,0xba,0x1d,0x1c,0x0d,0xdd,0xd2,0xd1,0xd4,0x92,0x7e,0xfd,0x67,0x13, 0x05,0x70,0xbb,0x03,0x76,0x88,0xad,0xeb,0x5b,0x4c,0x87,0x40,0x00,0x00,0x80,0x0d, 0x79,0xd6,0x0a,0xfd,0xdb,0x89,0x7f,0x6e,0xcf,0xff,0x0e,0xb1,0xf5,0x5d,0xff,0x4a, 0xfa,0xf5,0x9f,0x2a,0x0a,0xe0,0xf6,0x05,0xb0,0xbb,0x03,0xb6,0x8a,0xad,0xeb,0x57, 0xdc,0xc9,0xb9,0xa0,0xcf,0x79,0xd8,0x00,0x00,0x00,0x71,0x54,0x13,0x8f,0xf5,0x84, 0xfe,0xdd,0x96,0xbf,0x5d,0x1c,0xed,0xdc,0xc2,0xd1,0x52,0xbb,0xeb,0x9f,0x5d,0xf7, 0x5f,0xd4,0xaf,0xff,0x74,0x51,0x00,0xf7,0xa8,0xe0,0x26,0x56,0x59,0x60,0x3b,0x27, 0x8c,0xa1,0x17,0xb9,0x92,0x87,0x0e,0x00,0x00,0x65,0x8e,0x6a,0xe1,0x19,0x56,0xd6, 0xbf,0x1b,0xfa,0xdf,0xcd,0x0a,0xfd,0xb7,0xb3,0xca,0xfe,0xdc,0x9e,0xff,0x75,0x4a, 0xf9,0xf5,0x9f,0x2c,0x0a,0x60,0x9f,0x11,0xe0,0x96,0x05,0xba,0x09,0x81,0x9b,0x5b, 0x5b,0x01,0x43,0x78,0xf0,0x00,0x00,0x50,0xe6,0x8c,0x70,0xf6,0xfd,0x07,0x58,0x59, 0xff,0x6e,0xcd,0xbf,0x1b,0xfa,0xdf,0xdc,0x4a,0xfc,0x73,0xcb,0xfe,0xec,0x9e,0xff, 0x25,0xf9,0xfa,0x4f,0x14,0x05,0x48,0x94,0x10,0xe8,0xdd,0x0a,0xd8,0xca,0xc9,0x68, 0xbc,0x99,0x87,0x0f,0x00,0x00,0x65,0xca,0xed,0xc2,0x91,0xd6,0xbe,0x7f,0x1f,0xa1, 0xa7,0x27,0xeb,0xdf,0x1b,0xfa,0x4f,0x94,0xf8,0x57,0x92,0xaf,0xff,0x44,0x51,0x80, 0x74,0x5b,0x01,0xad,0x9d,0x70,0x86,0x9e,0x63,0xdc,0x55,0x78,0x94,0x49,0x00,0x00, 0x00,0x65,0xc6,0x93,0xc2,0xbf,0x62,0xeb,0xba,0xfd,0xd9,0xfb,0xfe,0xbb,0x38,0xda, 0xb8,0x75,0x6c,0xfd,0x69,0x7f,0x99,0x86,0xfe,0x4b,0x62,0x00,0x52,0x25,0x04,0xd6, 0x4a,0x52,0x15,0xa0,0xad,0x0c,0xb7,0x75,0x92,0x1c,0x66,0x32,0x19,0x00,0x00,0xa0, 0x4c,0x78,0x41,0x38,0xda,0xc9,0x87,0x3b,0x38,0xb6,0xae,0xdb,0x9f,0xf6,0xfa,0x77, 0x4b,0xfe,0xdc,0x76,0xbf,0x89,0xb2,0xfe,0x6b,0x95,0x3a,0xf1,0x2f,0x97,0xad,0x80, 0xba,0xb1,0xf5,0x6d,0x82,0xbd,0xf9,0x00,0x7a,0xd1,0x74,0x0a,0x04,0x00,0x80,0xa8, 0xa3,0x9d,0xfe,0x06,0x59,0xe2,0x6f,0x27,0xfd,0x25,0xda,0xf7,0x77,0xdb,0xfd,0xd6, 0x0d,0x5a,0xe8,0x3f,0xdb,0xad,0x00,0x6f,0x3e,0x80,0x76,0x34,0xea,0x28,0x6c,0x17, 0x5b,0xd7,0xea,0x10,0x13,0x00,0x00,0x00,0x51,0x16,0xff,0x63,0x84,0x81,0x56,0xc6, 0xff,0x5e,0x8e,0xfe,0x75,0x73,0xb4,0xb0,0xa3,0xa3,0x8d,0xde,0x7d,0xff,0x40,0x86, 0xfe,0x33,0xad,0x0a,0xb0,0xf3,0x01,0xdc,0x2e,0x81,0xde,0xa4,0x40,0xbd,0x09,0xb3, 0x98,0x24,0x00,0x00,0x10,0xc1,0xb0,0xff,0x20,0x4b,0xfc,0xf7,0x73,0xc4,0xdf,0x6d, 0xf6,0xe3,0x4d,0xfa,0x73,0xbb,0xfd,0xd9,0xfb,0xfe,0x81,0xc8,0xfa,0xcf,0x65,0x2b, 0xc0,0x9b,0x0f,0x60,0x27,0x05,0x6a,0x7b,0xc3,0x4e,0xce,0x0d,0xd0,0xed,0x80,0xa9, 0x4c,0x16,0x00,0x00,0x88,0x50,0xc2,0x9f,0xbb,0xe7,0xef,0x15,0x7f,0x37,0xe3,0xbf, 0x53,0x6c,0x7d,0xab,0x5f,0x37,0xe9,0x2f,0xd9,0xbe,0x7f,0xa0,0x42,0xff,0x99,0x6c, 0x05,0xb8,0xf9,0x00,0xb5,0x9c,0xbd,0x0c,0x3b,0x29,0xb0,0x8d,0xc7,0x04,0xe8,0x0d, 0x19,0xcb,0xa4,0x01,0x00,0x80,0x90,0x73,0xbb,0x93,0xed,0x6f,0xef,0xf9,0x27,0x13, 0xff,0x36,0x9e,0xa4,0xbf,0xba,0x8e,0x66,0xba,0xfb,0xfe,0x81,0x0d,0xfd,0x67,0x9a, 0x0f,0xe0,0x4d,0x0a,0xb4,0x4d,0x40,0x3b,0x8f,0x09,0xb8,0x30,0x46,0xc7,0x40,0x00, 0x00,0x08,0x1f,0xaa,0x5d,0xda,0xe4,0x47,0xeb,0xfc,0x0f,0x4b,0x23,0xfe,0xed,0x3c, 0xe2,0xef,0x4d,0xfa,0xab,0x16,0x26,0xf1,0x4f,0x95,0x0f,0x90,0x8d,0x09,0xd8,0xc9, 0x71,0x4e,0x9c,0x1d,0x00,0x00,0x00,0x61,0x41,0x35,0x4b,0xdb,0xfb,0x6a,0x87,0x3f, 0x6d,0xf2,0xa3,0x75,0xfe,0xfd,0x9c,0x6c,0xff,0x1e,0xd6,0x9e,0x7f,0x36,0xe2,0x5f, 0x39,0x4c,0xe2,0x9f,0x2c,0x1f,0xc0,0xae,0x0c,0x70,0x3b,0x05,0x36,0x4c,0xb1,0x1d, 0xa0,0x37,0x4a,0xbb,0x23,0x3d,0xc3,0xa4,0x02,0x00,0x80,0x80,0xa3,0xa7,0xfa,0xe9, 0xc1,0x3e,0xda,0xdb,0x5f,0xdb,0xfb,0x6a,0x87,0x3f,0x6d,0xf2,0xa3,0x75,0xfe,0xbb, 0x79,0xc4,0x7f,0xcb,0x04,0xe2,0xef,0x76,0xfa,0xab,0xe9,0x11,0xff,0x40,0xef,0xfb, 0x67,0xba,0x15,0x90,0x8d,0x09,0xd8,0xca,0x29,0x8b,0xd8,0xd1,0x49,0x0e,0x1c,0x26, 0xac,0x60,0x82,0x01,0x00,0x40,0xc0,0x50,0x6d,0xba,0x2e,0xb6,0xee,0x48,0x5f,0x37, 0xd9,0x6f,0x7f,0xe7,0x03,0x76,0x0f,0x47,0xc3,0x76,0x74,0x34,0x6d,0xab,0x3c,0xc4, 0x3f,0x54,0x06,0x20,0x99,0x09,0xa8,0x9a,0xc2,0x04,0xb8,0xd5,0x01,0x5a,0x0e,0xa1, 0x35,0x91,0xda,0x18,0x41,0xbb,0x23,0xed,0xe2,0x84,0x53,0x5e,0x65,0xb2,0x01,0x00, 0x40,0x40,0xd0,0xfa,0xfe,0x93,0x3c,0x21,0x7f,0xdd,0xef,0xd7,0x83,0x7d,0x7a,0x3a, 0xda,0xb5,0x83,0xa3,0x65,0x1d,0x1d,0x6d,0x73,0xb3,0xfd,0x93,0x89,0x7f,0xd5,0x28, 0x88,0x7f,0x36,0x26,0xa0,0xae,0xc7,0x04,0xb8,0xcd,0x82,0xb4,0x2b,0x92,0xb6,0x46, 0xec,0xea,0x24,0x4e,0x68,0x02,0xc5,0x65,0xc2,0x8f,0x4c,0x3c,0x00,0x00,0x28,0x11, 0xaa,0x41,0x23,0xad,0xaf,0xfe,0xfe,0x56,0xc8,0x7f,0x4f,0x2b,0xd9,0xaf,0xab,0xa3, 0x61,0x1d,0x62,0xeb,0x9b,0xfc,0x6c,0x9c,0x60,0xcf,0x3f,0x92,0xe2,0x9f,0xad,0x09, 0x70,0xfb,0x04,0xb8,0xcd,0x82,0xb4,0x25,0xa2,0xf6,0x45,0xde,0xda,0xd9,0x3b,0xe9, 0xe6,0xec,0xa5,0xa8,0xc3,0xba,0x4b,0x58,0xcd,0x44,0x04,0x00,0x80,0x22,0xa1,0x9a, 0x73,0x9f,0x30,0xd8,0xd9,0xeb,0x77,0xbf,0xfa,0xb5,0xbe,0x7f,0x1f,0x27,0xe4,0xef, 0xb6,0xf6,0xdd,0xde,0xd1,0xae,0xf6,0x8e,0x96,0xb9,0x4d,0x7e,0xdc,0x3a,0xff,0xb2, 0x10,0xff,0x4c,0x72,0x02,0x6a,0x78,0x4c,0x80,0x76,0x41,0xd2,0x56,0x88,0xda,0x0f, 0x79,0x33,0x27,0x5b,0x72,0x2b,0x6b,0x4b,0x60,0x67,0xc7,0x61,0x69,0x99,0xc5,0x74, 0x26,0x25,0x00,0x00,0x14,0x18,0x4d,0x48,0x3f,0xc5,0x09,0xf7,0x1f,0x66,0xed,0xf5, 0xdb,0x5f,0xfd,0x3b,0x5b,0x21,0xff,0xad,0x1c,0xed,0xda,0xcc,0xd1,0xb2,0xe6,0x8e, 0xb6,0x35,0x48,0x91,0xed,0x1f,0x49,0xf1,0xcf,0xd4,0x04,0xb8,0x1d,0x03,0xb5,0x05, 0xa2,0xf6,0x41,0x6e,0xe6,0x24,0x4a,0xb8,0x79,0x01,0x1a,0x46,0xd9,0x46,0xe8,0xe2, 0x64,0x54,0xaa,0xd3,0xea,0x15,0x5b,0xd7,0x63,0x79,0x06,0x13,0x14,0x00,0x00,0x7c, 0xe6,0x39,0xe1,0x74,0x8f,0xf0,0x6b,0xb8,0xbf,0x9f,0xb3,0xd7,0xdf,0xcb,0xca,0xf2, 0xef,0xe2,0x68,0x54,0x07,0x6b,0xbf,0x7f,0x13,0x47,0xcb,0x1a,0x39,0xda,0xe6,0x76, 0xf8,0x2b,0x2b,0xf1,0xcf,0xc6,0x04,0xd4,0x49,0x90,0x1c,0xe8,0x6e,0x09,0xb8,0xfd, 0x02,0xdc,0x68,0x80,0xee,0xb3,0xf4,0x70,0x42,0x2f,0xba,0x1f,0xf3,0xa0,0xf0,0x27, 0x93,0x16,0x00,0x00,0x72,0x44,0x35,0x64,0xb2,0x70,0xb2,0x13,0xea,0x77,0x85,0xff, 0x40,0x67,0x0b,0xda,0x0d,0xf7,0xf7,0x70,0x34,0xc8,0xfd,0xea,0x77,0xeb,0xfb,0x37, 0x4f,0xb0,0xdf,0xef,0x1e,0xec,0x53,0xb6,0xe2,0x9f,0xce,0x04,0xb8,0x67,0x07,0xb8, 0x07,0x08,0xd9,0x79,0x01,0xee,0x96,0x40,0x1b,0x4f,0x34,0x40,0xf7,0x59,0x76,0x74, 0xb2,0x2d,0x35,0x04,0xa3,0x35,0x97,0xda,0x79,0xe9,0x5a,0x61,0x29,0x13,0x19,0x00, 0x00,0x32,0x44,0x35,0x63,0x4c,0x6c,0xfd,0xc9,0x7d,0x87,0x5a,0x5f,0xfc,0xae,0xf0, 0xf7,0x76,0xb4,0x66,0x17,0x47,0x7b,0xb6,0xf7,0x7c,0xf5,0xb7,0xb1,0x42,0xfe,0xf6, 0x7e,0xbf,0x7d,0xb0,0x4f,0xd5,0x72,0x15,0xff,0x44,0x26,0x20,0xd1,0x01,0x42,0x6e, 0x72,0xa0,0xbd,0x25,0x60,0x47,0x03,0xec,0xdc,0x80,0x6d,0x9d,0xd0,0x4b,0x37,0x8f, 0x11,0xd0,0xf0,0xcc,0xf1,0xc2,0x9d,0xc2,0xd7,0x4c,0x6e,0x00,0x00,0xf0,0xa0,0xda, 0x70,0x77,0x6c,0x5d,0x07,0x3f,0xf7,0x6b,0xbf,0xbf,0x93,0xdc,0xb7,0xbf,0x15,0xea, 0xb7,0x85,0xbf,0x9b,0xa3,0x39,0xdb,0x7a,0xf6,0xfa,0xed,0xaf,0x7e,0x3b,0xe4,0x5f, 0xdb,0x23,0xfe,0xb6,0xf0,0x97,0x9d,0xf8,0x7b,0x4d,0x40,0x36,0x5b,0x02,0x6e,0x34, 0xc0,0xcd,0x0d,0x68,0x9b,0xc2,0x08,0xb8,0x5b,0x03,0xda,0x83,0x59,0x9b,0x32,0x9c, 0x10,0x5b,0x77,0xd8,0xd0,0x3c,0x61,0x2d,0x13,0x1f,0x00,0xa0,0xec,0xd0,0xb5,0x7f, 0xbe,0x30,0xce,0xd9,0xdb,0x1f,0xe8,0x88,0xfe,0x00,0x27,0x7a,0x7c,0x80,0x93,0xd5, 0xdf,0xc7,0xd1,0x0e,0x37,0xd4,0x9f,0x4c,0xf8,0xdb,0x5a,0x7b,0xfd,0xee,0x57,0x7f, 0xb6,0x21,0xff,0xb2,0x13,0xff,0x6c,0xb7,0x04,0x12,0x45,0x03,0x5a,0x58,0xdb,0x02, 0xfa,0x10,0xda,0x7b,0x8c,0xc0,0x8e,0x4e,0x56,0xa6,0x26,0x68,0xf4,0xb4,0xa2,0x02, 0x7d,0x1d,0x87,0x77,0xb6,0x33,0x09,0x5e,0x16,0xbe,0xe7,0xc5,0x00,0x00,0x88,0x1c, 0xba,0xb6,0xbf,0x22,0x4c,0x10,0x86,0x08,0x47,0xc5,0xd6,0xd5,0xee,0x1f,0xea,0xe8, 0x80,0x2d,0xfa,0x7d,0xad,0xaf,0xfd,0x9e,0x8e,0x76,0xec,0xec,0x68,0x89,0x2d,0xfc, 0xed,0x1d,0xcd,0x71,0xc3,0xfd,0x2d,0x32,0xf8,0xea,0x2f,0xeb,0x90,0x7f,0x3e,0x5b, 0x02,0xde,0x68,0x80,0x5d,0x2e,0xe8,0x1a,0x81,0x4d,0x13,0x18,0x01,0x37,0x47,0x60, 0x07,0x27,0x43,0xd3,0x8d,0x0a,0xf4,0xb2,0xcc,0x40,0x1f,0x67,0x6f,0x67,0x7f,0x27, 0xcb,0xf3,0x4c,0xe1,0x4a,0x61,0xbc,0xf0,0x98,0x63,0x0e,0x16,0x09,0x5f,0xc6,0xd6, 0x35,0x7f,0xf8,0x23,0x46,0xff,0x01,0x00,0x80,0x52,0xd7,0xe3,0xff,0xe1,0xac,0xc9, 0x5f,0x3a,0x6b,0xb4,0xae,0xd5,0x8f,0x3b,0x42,0x7f,0xb5,0x70,0x8e,0xb3,0x97,0x7f, 0x98,0x23,0xf6,0x03,0x9c,0xfd,0xfc,0x83,0x9c,0x64,0xbe,0xfd,0x9d,0xb5,0xbf,0x8f, 0x25,0xfa,0xbd,0xac,0xaf,0xfd,0x9d,0x1c,0xed,0x70,0xf7,0xf8,0xbd,0xc2,0xbf,0xa9, 0x25,0xfc,0x8d,0x3d,0x7b,0xfd,0xf6,0x57,0x3f,0x21,0x7f,0x1f,0xb6,0x04,0xec,0x68, 0x80,0x5b,0x2e,0x58,0xcf,0x32,0x02,0xcd,0x9c,0xbd,0x17,0xdb,0x08,0x68,0x78,0x46, 0xdb,0x2f,0x6e,0xed,0x64,0x68,0xba,0x51,0x01,0xdb,0x0c,0xf4,0x74,0x42,0x3c,0x7b, 0x5a,0x86,0xa0,0x9f,0x65,0x0a,0x0e,0x70,0x26,0xcb,0x41,0x8e,0x53,0x3c,0xc4,0xa1, 0xbf,0xc3,0x00,0x0f,0x87,0x02,0x00,0x40,0x41,0xf1,0xae,0xbb,0xee,0x7a,0xec,0xae, 0xcf,0x07,0x5b,0x42,0x7f,0x80,0x25,0xf6,0xfd,0x2c,0xc1,0xdf,0xd3,0x59,0xfb,0x7b, 0x7a,0x44,0xdf,0xfd,0xda,0xef,0xec,0x68,0x47,0x47,0x2b,0xd4,0xef,0x0a,0xff,0xc6, 0x8e,0xe6,0xb8,0xc2,0x5f,0x2f,0xb6,0xbe,0xbc,0x2f,0x93,0xaf,0x7e,0xc4,0x3f,0x87, 0x68,0x80,0x9b,0x1b,0xe0,0xdd,0x16,0x70,0xf3,0x03,0x5c,0x23,0xe0,0x6e,0x0d,0xe8, 0xbe,0xcc,0xe6,0x4e,0x66,0xa6,0x1d,0x15,0x70,0xcd,0xc0,0x0e,0xce,0x9e,0x8e,0x86, 0x78,0x76,0x75,0x26,0xc1,0xee,0x56,0x84,0x60,0x4f,0x67,0x0f,0x68,0x1f,0x67,0xd2, 0xf4,0x71,0x42,0x44,0xfd,0x2c,0x93,0xb0,0xaf,0x13,0x3a,0x4a,0xc6,0xfe,0x00,0x00, 0x90,0x17,0xa9,0xd6,0xd8,0x7d,0x2d,0x71,0xef,0xe7,0xac,0xd1,0xee,0x7a,0xbd,0x8f, 0xb3,0x86,0xef,0x69,0x7d,0xe1,0xef,0xee,0xac,0xf5,0xbb,0x3a,0x6b,0x7f,0x37,0x47, 0x0b,0x5c,0xd1,0xb7,0xbf,0xf6,0xb7,0x70,0x34,0xa4,0xb5,0x15,0xea,0x77,0x85,0xbf, 0xa1,0x25,0xfc,0x76,0xb8,0x3f,0xd1,0x5e,0x3f,0x5f,0xfd,0x3e,0x47,0x03,0xdc,0x6d, 0x01,0xaf,0x11,0xb0,0xb7,0x06,0xdc,0x64,0x41,0x37,0x2a,0xa0,0x0f,0x72,0x4b,0xcb, 0x0c,0x6c,0xed,0xec,0xe9,0x6c,0xe7,0x31,0x04,0xdd,0x9d,0x89,0xb1,0x8b,0xb3,0x07, 0xe4,0x1a,0x83,0x9e,0x0e,0xbd,0x1c,0xe7,0xb8,0x87,0x33,0xa9,0x6c,0xf6,0x04,0x00, 0x80,0x82,0xe2,0x5d,0x77,0xdd,0xf5,0xb8,0x97,0xb5,0x4e,0xbb,0x42,0xbf,0x9b,0xb3, 0x96,0xef,0xec,0xac,0xed,0xb6,0xe0,0x6f,0xe7,0x68,0xc0,0xd6,0x96,0xe8,0x6f,0xe9, 0x68,0x85,0xfb,0xb5,0xef,0x26,0xf7,0x35,0x4d,0xf0,0xc5,0xef,0x0a,0xbf,0x1d,0xee, 0xe7,0xab,0xbf,0x48,0xd1,0x80,0x74,0x46,0xa0,0x91,0x93,0x91,0x69,0x47,0x05,0x5a, 0x59,0x66,0x60,0x0b,0x27,0xb4,0xd3,0xc1,0x32,0x04,0x6e,0x84,0x60,0x7b,0x67,0x82, 0x74,0x75,0x26,0xcb,0x8e,0xce,0xc4,0xd9,0xc9,0xa1,0xbb,0x65,0x14,0x76,0xb6,0x0c, 0x03,0x00,0x00,0x14,0x1e,0x7b,0xed,0x75,0xd7,0x63,0x77,0x7d,0xee,0xe6,0xac,0xd9, 0x3b,0x38,0x6b,0x78,0x17,0x67,0x4d,0x77,0xbf,0xf0,0x5d,0xc1,0xef,0xe0,0x68,0xc0, 0x16,0x96,0xe8,0xb7,0xf2,0x7c,0xed,0x37,0x71,0xb4,0x24,0x5b,0xe1,0xe7,0xab,0xbf, 0x40,0xd1,0x80,0x4c,0x8c,0x80,0x9b,0x2c,0x58,0xdf,0xda,0x1e,0xb0,0xcd,0x80,0x1b, 0x19,0xd0,0xd0,0xce,0x66,0x1e,0x43,0xd0,0xde,0x32,0x05,0x9d,0x2c,0x63,0xb0,0xad, 0x43,0x67,0x87,0xed,0x1c,0xb6,0x07,0x00,0x80,0x92,0xe0,0xae,0xc3,0xee,0xba,0xec, 0xae,0xd3,0xae,0xd0,0x77,0xb2,0xc4,0xbe,0xbd,0x47,0xf0,0x37,0x73,0x34,0xc0,0xfd, 0xd2,0xb7,0x45,0xdf,0x0d,0xf3,0xd7,0xb7,0x92,0xfb,0xb2,0x15,0x7e,0xc4,0xbf,0x04, 0x46,0xc0,0x4e,0x16,0xb4,0xa3,0x02,0xae,0x19,0xb0,0x23,0x03,0xcd,0x9d,0x84,0x0e, 0xd7,0x10,0xb8,0x11,0x02,0xd7,0x14,0xb4,0x75,0x26,0xcb,0x96,0x0e,0xae,0x41,0x70, 0x4d,0x82,0x4d,0x47,0x00,0x00,0x28,0x0a,0xde,0xf5,0xb7,0xbd,0x25,0xf0,0xee,0x7a, 0xbd,0x85,0xb3,0x86,0xbb,0x62,0xef,0x7e,0xe1,0xbb,0x82,0xbf,0xb1,0xa3,0x01,0xf6, 0x97,0xbe,0x2b,0xfa,0xf6,0xd7,0x7e,0x2d,0xcf,0x1e,0x3f,0xc2,0x1f,0x12,0x23,0x50, 0xc3,0x32,0x03,0x75,0x9c,0x07,0xea,0x46,0x06,0xdc,0x6d,0x02,0x37,0x3a,0xe0,0xe6, 0x0d,0xb4,0xb0,0x4c,0x41,0x4b,0x67,0xb2,0xb8,0xe6,0xa0,0xb5,0x43,0x1b,0x8b,0xcd, 0x00,0x00,0xa0,0x24,0xd8,0x6b,0xb1,0xbb,0x3e,0xb7,0xb2,0xd6,0xed,0x96,0x96,0xd8, 0xb7,0xb0,0xf6,0xf3,0xdd,0xaf,0x7c,0x37,0xbc,0xef,0x7e,0xe9,0x6f,0x14,0x5b,0x5f, 0xca,0xe7,0x7e,0xed,0x23,0xfc,0x21,0x33,0x02,0xe9,0xcc,0x80,0xbd,0x4d,0x50,0xcf, 0x32,0x04,0x0d,0x3d,0xa6,0xc0,0x35,0x06,0xcd,0xac,0x88,0x81,0x6b,0x12,0x5a,0x58, 0x66,0x01,0x00,0x00,0x8a,0x8f,0xbd,0x16,0x37,0xb7,0xbe,0xe8,0x9b,0x59,0x42,0x6f, 0x8b,0x7d,0x43,0x4b,0xf0,0xeb,0x79,0xc2,0xfb,0xe9,0x44,0x1f,0xe1,0x0f,0x91,0x11, 0xc8,0xc4,0x0c,0x78,0x0d,0xc1,0x46,0x96,0x29,0xb0,0x8d,0x81,0x6b,0x0e,0x1a,0x5a, 0x26,0xc1,0xa6,0x31,0x00,0x00,0x14,0x15,0xef,0x3a,0x6c,0xaf,0xd1,0x0d,0x3c,0x42, 0x5f,0xcf,0xf3,0x85,0x6f,0x0b,0x7e,0x26,0xa2,0x8f,0xf0,0x47,0xcc,0x0c,0xd8,0x86, 0xc0,0x1b,0x21,0x70,0x4d,0x81,0x6b,0x0c,0x5c,0x73,0xb0,0x91,0x65,0x12,0x12,0x51, 0x0f,0x00,0x00,0x0a,0x4a,0xb2,0xf5,0xd7,0x5e,0xa3,0xeb,0x58,0x42,0x5f,0xdb,0x5a, 0xd7,0x6d,0xb1,0xb7,0x05,0x1f,0xd1,0x2f,0x03,0x33,0x90,0x89,0x21,0xf0,0x9a,0x82, 0x1a,0x9e,0x88,0x41,0x4d,0x8f,0x51,0x00,0x00,0x80,0xd2,0xe2,0x5d,0x9f,0xed,0xb5, 0xdb,0x16,0xfb,0x4c,0x05,0x1f,0xd1,0x8f,0xa8,0x19,0x48,0x67,0x08,0x5c,0x53,0x50, 0xc5,0x63,0x0e,0x6c,0x83,0x90,0x8c,0xea,0x00,0x00,0x50,0x50,0xd2,0xad,0xc3,0x55, 0x3d,0x22,0x5f,0xc5,0x23,0xf6,0x99,0x08,0x3e,0xa2,0x5f,0xa6,0x86,0xc0,0x36,0x05, 0x89,0xcc,0x41,0xe5,0x14,0x66,0x01,0x00,0x00,0x8a,0x47,0xaa,0xb5,0xd9,0xbb,0x8e, 0x57,0x44,0xf0,0x19,0x99,0x9a,0x82,0x64,0xe6,0x20,0x15,0x95,0x00,0x00,0xa0,0xa0, 0x64,0xb3,0x26,0x27,0x5b,0xd7,0x19,0x0c,0x06,0x83,0xc1,0x60,0x30,0x18,0x0c,0x06, 0x83,0xc1,0x60,0x30,0x22,0x3c,0xfe,0x1f,0xfb,0xaa,0x4c,0x17,0x47,0x9a,0xc3,0xb9, 0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, }; lprint-1.1.0/static-resources/lprint-large.png000066400000000000000000000605141416113445100214340ustar00rootroot00000000000000PNG  IHDRxiCCPkCGColorSpaceGenericRGB8U]hU>sg#$Sl4t? % V46nI6"dΘ83OEP|1Ŀ (>/ % (>P苦;3ie|{g蹪X-2s=+WQ+]L6O w[C{_F qb Uvz?Zb1@/zcs>~if,ӈUSjF 1_Mjbuݠpamhmçϙ>a\+5%QKFkm}ۖ?ޚD\!~6,-7SثŜvķ5Z;[rmS5{yDyH}r9|-ăFAJjI.[/]mK 7KRDrYQO-Q||6 (0 MXd(@h2_f<:”_δ*d>e\c?~,7?& ك^2Iq2"y@g|U\ 8eXIfMM*i(0ciTXtXML:com.adobe.xmp Michael Sweet Copyright 2019 Michael Sweet New Icon New Icon 8Y;IDATxEֆ%GE@Q((b@`T\wq 9E b*DQ0Is@ ;t/E;yzf{:9g]}[`0 `0 `0 `0 `0 `0 `0 FF4 o^1 *@AfM$0Ҋ}:!*PRO(jQ- [5;YHd 0T_%EM xg{dj!to-8ldQ7 $[5]u6 ^S! D@yľ%u,qw'Z}CCF@Q=a#D lC}[z%M ;J볻^7ƖIA TS -M-q׉RԡڡfP][YvKg-2 M=5v X/| E}pla0Ex^X |!(! Z6f +CIh+ln4"nt`#Od#`w+-WQ8RLy"/:`󡷅e Z[e[f&p"~7|WVx[XˋPv?W%:Xw dcy~g#~­—L|pc [Zf ys0D|mwض.>`r@f ;f DpsN~C!-DQ lkX;'Ѝ ll;"`'  ײP^SLZ𙧅Cr{hpkyd(ɾp}'! 4aFe9H dw8Yc@q)wk,F _\ΌkdR4T2S.P[&NVKL<8phP[نI#`@PmH,tr{n !N ^-'4l H'c-|Ƥyl݁r=].X\L@"wkz_LNV2 dv +tZxD"a2w4BBWR@& Dd?'¤𨰳% &Fg,1f5 8L@s2M/`w'/S& t_ɲ/L@& Yu@h2߄?lM@(&?n_S [>v["6 (zl}?ΟR?(W&0nu'X=Ie@}vA:e΅N -b5v4>@(]F탬}jῄnu%'mz l>@п7O;!`zv@tvtR$n+u!5S62`غzvfD% w!$raغvA Hw5q !ZvRoֿ7à@j^k(mdo* An"(^ȿ=QQU ,*cv5 ,ߏDP1U~ t"oTh` 1;{F@+V@l'V]"f`WYu=v܃;# YI{Tp??QMS ?zv˛󎖭g߈gP(=cH 6@{& 3LhbgA )ߜ ps+=*mDvZ @l^'S t$ozu@ jb,_Co`rCx-~LƋ L@h Y5@|+%Lĵ<^qa{Yd.Έ2G2/3P k K7@ @ lwkO7e=z"d9H 6۰h f<(W*Wf:4L&c7ߘno>鳯Y\&Q!8]] ~ 6Yu$`xp.9sLCMON2rYRs#3 fR1= Tὂ :T̰T_ڿ2~5a~yQw7F8#ʛbF_@]3TwʬxmSȡgf/O<)[pFw !R@ ;)cm)Ф_~|}96[ 1{rcݧM0/Qt&cܹۋ/5Kь03 \$qg*̻H` @1m u|=݈v2+ QemBW@mU ?.I"Zjrgo|ܳw4& L3pf k3gA:t]ի;v믋fV}qͧ`TpFbOp;e  fEyoUX$f`/|v@v=D33pnUPNC#*R5+V_{|1Xn&fyMղU @?ꫯM7dv}f[n)XjW'bo)aUa2c0[HVP ;2vZk=|y;D3,3p=hz@pY&?1Ļd350~ձmhFb3U *F`0PNrDs=Mjoon-Z93ҥf5יe;B= Dd䲜w - 2ļz__|aq3W3yYG0aB&"y܉y~7xcsꩧ{ά^:Rf`ߛ|AfIڈfyN4A%N0BL"pY {y6lh9cRPqX2<Ҽ[>awhDuլ㏼EOsc~>mt衇2+W_x|18^ffZ`*W'mbVIhϱl2sכ]w5 jժo߾fo(o7_zyhDì5@eL$MZŗ *x*ƍ3} {?u=ѣ}7 HBo6 jn! 1w _Lߨ1yuՌ9|ٟ~{ヲVZ9]SA7.4n>Q o6k 'ק;R? ,Hߣ>j>hӠA10??,~YKbUD64eAǤgԯK.ꫯ82Jz?O r͛l9S̙3*/ ٳdf@s4~ed>fqm@Q`JFeb޼ekK_7wb-rZ^8hР `V鮻ͧ7KjAx @jJhW]ꧡ\~l̀ aÆ.I&eU^5n~<|~Qݺ 3J @lhG1tY d@5a0kx7@KY @)4⯭iW.^\)PϷpv˺0f` /8˼jsĹH\mi?^wE?@U^xWdU^W 3㏷o^dP(PMmWaG)̀&M:5?? Mdu(z6֐[ԣfBsZ^0"S30tW拣@L_ 9 fkYܘ1c~#F e_*/Le,@F%!δ` *wnFfշ,"*PW[.)f@BiOyhA6其{[ﯾfn-\d` LB3)CWsc^Bܮ]v .0gp * n- } G:}9KÜ(_M-]]˖-ͩjf͚U+ޠL7]y 5E`q FƒY봧| uk[C߉\5jdlqrК? cr'6,y-g'0?+L%hN)Ӥ8MKՊ3_|3Z_L3`_oz~BA u!) O񟒥ǿQj$erZ.+ׯ0a6R-ʹPOP=/o `hls:GRUvu[^oHZ+ӽr? Ke2)/ݻĻ̒j݀1ȗ_m欬E*\it~kbտC +rl|s%-0E (KSP_Cwtvvyaxh>G"9  2Gx6'qѯbi|r;)0f`$ ~oD6`rA&kCCԽz*yC=4eyVs1L[ 7{!@i*<+?6>@iL フ[ \ײ]z !a ̈́y{ |@Ǐϻ0W3w7u톰bQt|s C(dC I[^أGxy& Y_v1Lh!AW?X#f@ǢEWnWtfZg?MVҴPӕj!Bn_&J0?#~y Q{j.@3gB?F(_,5iˑQ5ٖjA兹׏FD1>g$6C nBtj(/tȣfq4켈Cs$8t3! 0̻u"% 6,:ȴ̀&ujr^wBov h `'B^wӧOd-[֋P2nyFB,9s|q`3B"˟yћ,Yn)5jdſrțPm݌hblLN dSf܋7K̀Xr7ThF0` (ֿ^\ʶ  ,֣|s_G70(_p_&1 ӋOۋa6^|)bQ`Yڈ#Ud🠍l Ջ?ݻwƯӞBˀ6b Ȅ0@=n6BşP;iy& hV-藿У@F[d=ڈhSQDG0];s#q:k#ψRşP#*/eZܼ[1"aJF<< D.bűǛrZ^Μ9`f2>|D2)Myw@c QbW~{aV^(/LwfIeDQoeͳDs D (/TOW^PD+.pN"Fȓ D -*fdH5E syKY^ͻu#m6«0h apP 5)P5I0UyСCkid}-g==@N^"AǢ>j`B_4߭ GX?50p#ּ W_s ^B"]} bANĿpOr1/0Ȑ-5k"K)z\@x@WV.\|hf3ZA`Wi6 }Ǖ_J*T }!vYXk9_@'@ aAM7C]>|QC8Դև#3rbp@${zL3 6`}k}E/1=^}/?6cʕ>hӟyYGc0 +^r*Ï uY և"ٮc0|$T8(#!G~mouTx) NShԌ?|~fɂl@_~1KFDCnL{a0loϿ< 0{Ŀہ0( gC=ze\V\{'4Yvm (&X`0P.#4ܷ>3 \f>+cb 6}a¦ߌ8܌ѣ͌3̗_~itˎ̓y?v E)z0  SJUQ hon?dߎ(N 7`{97D/P s#8h]}OR1ԓ(0ۇ줿NfVRV8RVxqfছn2?Boxks!@oa 0xe"_/+.e`n>zK36ryJyAi-BZ 3K  ?aiSyd] Pƍg^yO?̃P*BWWx<9@0((h<{/sɧde&L`^{5/|g_sD{X/ u` š-yYY;̞=oh϶*W G( [mnsyel.r3qD3g,QgZB|a_5`  ̣?e̳[v^1thVf{1s5+V(Fa8#gw  Ͽ\9PNۚqGUYa̤I;c~V"{ ?#VVX|y… _UPCyV%&좀[c0PXv/ҼUyf'd}g( C gik&pP|?@\￷ C"TҲ­f0qY!I3^IJ~(=@a(24ӶC_~< r n/̎@~ ~)% y@Wv?K #<4 te{'ȓNTar=^PQ> ^kw (JBDֻVxwa0/c[zo߬2Khodu˴tw k h=ȧ);ےr; wUJ3Fi84Ϟenk^c_cʬY@1#"O# yZ f`9@ @pGwx?)UY1? Y`J56"u)🊜PrNpkX M}jXdYsZ @x\>n$LE7'(,29f{XM0CQh `վ'&?mI$`Zyr>cx0DK=3򗐑$a0CO%ya|/g#G"ILP4y,Ny7)zB)0P$,PZ+t5jr4w'ʖCI`dg1= V@o'Gȯ{;;roj&c0~M Ϙw5f `JG!= $[ _ϻ =I`J˵Eث-M̊ ~/'ʥ ,zcdǎ$a0"Yon"){u`.5+?PzP p,% gM~WC<310ӽ"]lh7`LergϺs2k4L DϺ3E$y;ȯ EVʞ>Ә9q)_ @0E-KEuo@O/8b =[s ~rfK]  8<p+VYB_s~ed̳?  XL т6Kd\hZZ; 9=#\;$b`A3|1jzΖN$a0/)hR,f]׮33w%;?dEp,l'w, M>~9?D@!?0Lfs,S1uyޣh΅?> T97 !wMEQ~m,/sKvtH gC00p—jhB}Hr<=Dxnr(VL/k_SR  @ --3Ӄj$Z}`kf9\5/Z-b@Ϟ?S?X~6,s2'n">'"jw1 N} ʋ2وo`k09"MHVMO?J}W^e=`ʋȡ`nb@j^AOV@<:_:b0ɋ, yz@N_<ypGkR{Re* @ĹRȳ@[9>z\4^O|%";s޼ey]7ױRXNWvҶȲԹ S_02 J 矪K]\" C3yr{ el("՜%b<@Qi Ϟ!'pOIE"[ μZL;CF1,Ľclh`; , h) }.#D _Rt"{"/0Lb>-w;8m/6s7z)0?c,Tc/J=R}[j,v=ڑuoR1+ȁGEibni@h;kX@)t8 * Ep̡=lQP[-7|/X e $$J'2/_rȔ)݃nboS@6t@GD^ W̽o {zȊf"񲘁!^9l=HI]8擀JFWd SСY0XP1sl2rr @h]X~p Y`M,_ <$:Y~  VЀu 0P(P 8D1`<3l(4P foº(R ^o͚(GcJΫ"mYdOJJ"XŦ%MmńN @Iܮ?`tEhT̥$(̓w; rXI (.P#`!f7ޑiO0<0B8K/cBt?0! }tȚE"#01$% @JI@RF2ZtD`?`0BS4Y^@s  @9RY+QI2\0O9D7 @p lHM8N@Du` ;(Y,c "\w0ȌFI3ZĿ"3`0=2Y^AceV 0To3^Ŀ ,`0/5<2QĿ)`0PXkd0IbMK`x d] J[. @xTZ]?` Γ( Oj M:Dag˜j; Nb큹7i; ݯ,1˼i{ $*pDb ^yҚ0-$*2F [D[ Q8,u`mPpY{l "/ "} "$*(о/ D#p4SU8HHT0 ` TTT^{r`РAf޼yfʕfڵ棏>2F2k` 4nشi&)u 5dJVLFLj՘Yp 7dw55j>` h|&՘2eJ!˗e˖~s=3}1-Z`8tŬY&彼꫹WqG 5b|f„ W^b?tдjɒ%kD?7]wln~i_O} R+V0]vYYek$ѰaC7 `iܡ9 }-s-P06:㎋9 -]ˍ|'0sL ?-[4[p)c9' 0\֢yI?ilN;xVUW]mϚ5+ퟯ &9QC'xYzu>}zYWI޷o9bN?fm~WӼyHϣwf0 F?ϝnݺ%:`0(5TR~VٌY1|p `kv]jժwΜI `k8蠃m3<s2bM7Mx{ נnh< A&tI אIK\z1m4 `k#3馛wZjJc\øqzy)9>}`k\t>+}ZxK_u3wyM.x|o߾9͞&Nhf̘]_K;~msϙ)SѣG&gkР9_| `t z `l5j9g\2ޛ Ѯ]x#LѤI6}'mt۴ic .G>;vlФLGg}u @)~u]vʿoM6Ig;vhxf͚E履~g1`im۶ O?zs뭷{^'̨į1{촋~)]vM*C% CkDOO{HQ>CN8ᄜg)U 0BS =4's xLz2sO( e]۪U++MP'Md*U5UkФtCS=^=|G\rI( &.W^;ϡ`gAkwqG3y䬾b}uQEA2ǏDgQ `PkPoٲe<\CZOG1P-?j{_&V<05ք'BOӰ69r馛oΝQ Yڶ>H Crnݺi;J1leA5_~eѮ9]{`p `P@kLPEbŊek~] 00oZ8,s 0  ZhQ2-f a08cٲe#c7|СC{(0%0ẑ ={ EdO8ᄲ6Ź31ez j @kw]\v2Wq@x/vaemiwĈ_|p`,*r2RJ7p5`0֭[_4mڔ5,$$S `6y0(_uk;v,kX9=@_Sԍmx&_p0\9nZ׏u,|% p3r>08gw(o؆efU؇i"B['1a '|P 65?U>(Q2W!dj)׿Olã%%:`'n FAd}|ۭ*2(U# #T3[{ɾ7|$/(@Qv4(l[QcV^us}@3 .ޤ@ $ KsmMse+`'j{N 퀩LPŸ7Sl}_7/پBl ;) ˤso'6f gM M@; 0F@]GK#_j?muyv@g )I&`@Pm.H_7ovGvt4m[h].M7G`'CӍ @gog'LJac _5#FR_:kՏ;Bp#d%p¿%={W?!h[.X2͜hxF/ndhQ tB<{Ze p&AS<ġ@Az[B%,Y{zDhGG+ Ǝ_//~?hp\#n NfpΞxvu&V`OghgqBD,:J}-qzi}:k7G \ѷp4w%v?^?_>GmdA7*rK ll1ݝ縇3l]wNBoh֖oh&5M 竿HрtFiGZYf` '2n`{gtu&ˎɡev {ucw};8kxgMw]h|7q$[竿@рL,X̀fC2,cCgӮwľG7s4ҷE ׷~ĿFN#͝u&˖ApMMG( %zb~Ể+~-?#P2uFm7: LAKg栵C$k>햖طݯ|7~o[_~#!3̀MP2 =5ͬkZXf7YBo}CKyD x F)kZ&1:l sg#$Sl4t? % V46nI6"dΘ83OEP|1Ŀ (>/ % (>P苦;3ie|{g蹪X-2s=+WQ+]L6O w[C{_F qb Uvz?Zb1@/zcs>~if,ӈUSjF 1_Mjbuݠpamhmçϙ>a\+5%QKFkm}ۖ?ޚD\!~6,-7SثŜvķ5Z;[rmS5{yDyH}r9|-ăFAJjI.[/]mK 7KRDrYQO-Q||6 (0 MXd(@h2_f<:”_δ*d>e\c?~,7?& ك^2Iq2"y@g|UP`oeXIfMM*V^;ftiHHMichael SweetCopyright 2019 Michael Sweet00S pHYs  iTXtXML:com.adobe.xmp 72 72 1 128 128 New Icon Copyright 2019 Michael Sweet Michael Sweet New Icon v)+ FIDATh͙ipǟ{,7IȀeqp-:TTOڙN`G>jeCVuKuu"Sb $,! y{rMngyysr\)k7aS"4jb- x.DXqxb]^Z=Ϩx 51ֺ~~?C O*,CbE?J,  _R?3c}{-V7^ &Oӧ[f8lm566ZÅ v:3Ӯ{U<ﭝ.. 6<@@Y$EACkt7]MM0ZcGgx/(*:-#"%%9iUDuf T|ȚsXyEE?OЦ"Y2!i˳M<yKK<)RYUe٤˪e`;wΦokm 24O&z%}\-ixm${hhbKBdM7ٹ筵<_]Yi._n]g&ͨ0`_I((%Υ *hL")֑@ _̲KNyAu5-#3gDٱ#G]žci$Gǥπ?4WZʪKE) ^gsB>-7=.21bY9vm?+;MdMfQ.b{&}3r^S#ԭQIbh3 #z{7 ZZzI;zuݐr[!y9p9"Úҙ > ^B{h]132V6lPr gYA}ݯԺ{ӽZ6cB>0I,?ۚX~-bV$ 1M{4J) ƺ.CM(8 f3r-;-rϜgnf[BɊV^3ߺ0]USR~zˑ'q)AQ)q1[jn`P8݆ ,fY~'6 ""9/'Nbx޾Xƥ9:(jne8BtH|)00D5 8~n,B"otDKwݗi)`CQ74@IY j֮H)_BGw dd:BFb(ÆI#+6&5EG@Ὄw-.{'e SS;tlxR@SDy$dd˥#;;(+- |VHluPVvJXۈQ ͛7ׯ`jkkg{.XrkDYNZ*o!`uiIENDB`lprint-1.1.0/static-resources/lprint.png000066400000000000000000000145331416113445100203440ustar00rootroot00000000000000PNG  IHDR>aiCCPkCGColorSpaceGenericRGB8U]hU>sg#$Sl4t? % V46nI6"dΘ83OEP|1Ŀ (>/ % (>P苦;3ie|{g蹪X-2s=+WQ+]L6O w[C{_F qb Uvz?Zb1@/zcs>~if,ӈUSjF 1_Mjbuݠpamhmçϙ>a\+5%QKFkm}ۖ?ޚD\!~6,-7SثŜvķ5Z;[rmS5{yDyH}r9|-ăFAJjI.[/]mK 7KRDrYQO-Q||6 (0 MXd(@h2_f<:”_δ*d>e\c?~,7?& ك^2Iq2"y@g|U\ 8eXIfMM*ikF&MciTXtXML:com.adobe.xmp Michael Sweet Copyright 2019 Michael Sweet New Icon New Icon 8JIDATx]tUHA =  $Ku)!$R"A Ma%,-KJH(C۰‚"CO^f g&oa{}OQԦ6G' BTx *ᾈgjD(C A灌_Ɖē57eP!(X_S/G BCTG1nv!!U2d"QQqŋEЎ` Dq3,ր^胈B2܂#"Вv2U%%ُRwy$3W;AƭOLY`g x"(tGe񀷥w5Pmo_ D,$O:#(/xW~(I x,M8Zo`<)K[LI?m;7A\)(ejD+D@leR qŰ0߳kg!0=5|S؉?>/7k/_t&(U)OY˛"^{7Aiq1dܢhb WŐߣ<M|~Vp+sr[(M[QC)~Je3sޕà]/ɂ]=S(u&0<ƎDt&M 99ϟgϞ5)ǷoÝ+d@UpŰ Ռ H=zʕ+aڵjՂ(3f |P^^^I OJJn8U-LԸa!]lr>v/ #2ܹСC 4χԩSe˖ {/_^I m+CᢉOc4E۷/l۶ ?~ W\LQ#=''zʼn!!!MPQQa(+Jk#GO/\E &yݯVѧ/^#4<<Ə8vi HRPjMNy|)ՖΝ; or5w<HLLއT{6#(tP`LXgZRz8͹ܨ~rss9KBY)t< x F5yz( sSk̹J&1.c& )hm[9]_ZTBk6lNĈ|-gtK.W?%1W#]Te|Bݻw׏#u0k,wWX#'ef?SEO;va ""a„ p]rOFl >*sf_Ko 6"'H$  Ś/;s}D'r-DWc68%k A\r!څԞOS]mQ ` >4Rh*!O+Nₐ[ `5|1ڥoJ~6G$4; 8/_Gnl"-cEmQ'؏iوLp^#S(Ob `¥)?%f7>X5Ũ+]!Ӣ 1|->Wf.#IU Nq$a~7{c o?6c={67i%}/JM{*Ydh|50Eⱥhcs,8%aڞ\r E`v AɟF{V,`R@oO Vu 3?P"W ͵_^D~/4֮}G$G/>qE&pQSAm+6 J,="~s8[tRr)MhwEhn K0oPhȻ~%w™g_Q.ׄ`6fi6 ͷP>(#h$^ָhӕ6fY5;% ńv SdM``,#"k*\r.g/]NE ~9S A;0!l0*NTOó;vW h˹"ʹA_:b(?2dcP{\*+NFƵAP]@ ʹd`+1Tf_2~9jܘ_:tq1 EcP>5r.~PmVrk࿛%B \2 vp@2i4G YiwbjyUS/mE~};9UΈdO9=%N`y 6m ,Ntlٲ;?`ݻw'boO@nn.9} "G9x<*nѢE [n .a}ӧCII ,YH'rU< zOOO۷/1+ KSS 4iN=޹sg5j$$$poڴ)w… !''ׯop]jj:uue`رPN =NZo^ر;wreff¬Y*ZkСCg7lw6}T{~ƌPsIY&iě>5SHU" ŋ\6THK [K̾ve"\EdTtt.FÇ\m*@9pY+Kn"#@*.9$ mnY ̛7Oh3kD'D$K_xClM bT(**#0dwE1B'۷Cf ,, BCCɈv:kO}}5 |})`\UPvm.Ml((R?kcE&[LвFF\eM*7o^w^4Ť6gΜJnܸav%V?AfUjyRzM6ԕVE\r(3u^7DQ S )Xƭѯ?$4Dv0~oFSR4"".貸L21׏ѵUU.K3N464f&LAjȏc1N=466Ї zx@(e_6hcwU6o, fBńb'TXMa>|gAo .SVb lprint-1.1.0/xcode/lprint.xcodeproj/project.xcworkspace/xcshareddata/000077500000000000000000000000001416113445100260605ustar00rootroot00000000000000lprint-1.1.0/xcode/lprint.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist000066400000000000000000000003561416113445100325420ustar00rootroot00000000000000 IDEDidComputeMac32BitWarning