From: Joachim Wiedorn Date: Wed, 10 Nov 2010 15:54:07 +0000 (+0100) Subject: Imported Upstream version 23.1 X-Git-Tag: upstream/23.1^0 X-Git-Url: https://git.rrq.au/?a=commitdiff_plain;h=23c77cc092dbbb1e12c47c2b0021d4476b543702;p=rrq%2Fmaintain_lilo.git Imported Upstream version 23.1 --- 23c77cc092dbbb1e12c47c2b0021d4476b543702 diff --git a/CHANGELOG b/CHANGELOG new file mode 100644 index 0000000..8f780a5 --- /dev/null +++ b/CHANGELOG @@ -0,0 +1,292 @@ +Changes for version 23.1 (04-Nov-2010) - Joachim Wiedorn + + Documentations + -------------- + - 'make clean' delete all created documentation files. + - many small typos in manpages. + - Remove obsolete ifpdf definition. + + Sources + ------- + - Optimize and update menue header line. (src/crt.S) + - Fix some typos in sources. (src/bsect.c, src/raid.c) + - LVM volume as root device. (src/bsect.c) + - Remove patch for inaccessible disks (src/geometry.c) + and add remarks in README file. + - Better computing size of uncompressed kernel. (src/boot.c) + - Working on degraded RAID device. (src/raid.c) + (thanks to Christian Schöninger) + - Use for MD RAID newer 1.0 specification. (src/geometry.c) + (thanks to Robert de Bath) (src/raid.c) + + General + ------- + - Use better 'checkit' for newer gcc. (checkit) + - Remove very old scripts. (mkbdist,mksdist,QuickInst) + - Create new makefile-based script QuickInst. + - Create new hook scripts for kernel and initramfs. + - Add new target 'uninstall' for src, man, hooks. + - Recreate and add background images as uuencoded files and + move images + config files into new 'image' directory. + - Add new file TOOLS listing needed tools / packages. + - Remove all unneeded stuff with old /boot/boot-* files. + - Add new example file for lilo.conf for newer lilo. + + +Changes for version 23.0 (28-June-2010) - Joachim Wiedorn + + Documentations + -------------- + - Move very old file INCOMPAT into readme/. + - Update file COPYING with copyrights and license. + - Update copyrights in some file headers. + - Add new files README, TODO, NEWS. + - Fix for some typos in manpages. + - Update some old files in readme/ and docs/. + - Move to creating pdf instead of ps in /docs. + - Add found old manpage man/keytab-lilo.pl. + - Update additional informations (lilo.lsm, sample/README). + - Set static manpage path to /usr/share/man (make.vars). + - Update of the program command logging header. + + Sources + ------- + - Fix error messages. (script checkit) + - Allow spaces in boot menu. (bsect.c) + - Workaround for buggy Bios. (probe.c) + - Check for user root. (script mkrescue) + - Use better temporary fifo's (script mkrescue) + - Check for needed floppy space (script mkrescue) + - devmapper should use major/minor. (geometry.c) + - Bios workarounds. (second.S) + - Suppress error message if device does not exist. (geometry.c) + - Change 'map' to 'kmap'. (keytab-lilo.pl) + - Add warnings for inaccessible disk (device.c, geometry.c) + - Modify script mkrescue for use of spaces in files. + - Speedup for geometry (geometry.c) + - Add 'define' for lvm partition (lilo.h, partition.c) + - Don't scan '.udev' directory (device.c) + - Use default size 'hdsize' (script mkrescue) + - Move macro 'S' into 'SA' (crt.S, lilo.c, lilo.h, probe.c, second.S) + - Update min. versions of bcc and gcc. (script checkit) + - Add new option 'small-memory' (cfg.c) + - Differentiate small-memory/large-memory (bsect.c, boot.c) + - Optimize standard logging (bsect.c) + - Update install paths and names for some binaries. (src/Makefile) + - Move the environment variable ROOT to DESTDIR. (src/Makefile) + - Deactivate very old scripts (mkbdist, mksdist, QuickInst) + + General + ------- + - Remove link 'COPYRIGHT' to file COPYING. + - Move alle README files into new directory 'readme'. + - Move all source code files into new directory 'src'. + - Split file CHANGES into CHANGELOG and CHANGELOG_old. + - Better check for tool 'mkfs.msdos', for with you must be root. + + - Create new main Makefile. + - Move target 'spotless' to 'distclean' in concerned files. + - Move src/Makefile header into extra file make.vars. + - Remove old comments in src/Makefile. + - Displacement from src/Makefile into new man/Makefile. + - Displacement from src/Makefile into dos/Makefile. + - Delete displaced make commands in src/Makefile. + - Update script paths in src/Makefile. + - Update path to bdata.h in files of directoy diagnose. + + - Move more variables into make.vars. + - Move target 'test' into main Makefile. + - Update paths in dos/Makefile. + - Displace floppy targets in main and src Makefiles. + - Update paths to files in directory diagnose. + - Better checks in diagnose/Makefile. + - Remove old program 'activate'. + + - Use correct path for script mkrescue. + - Target 'all' now without run of 'diagnostic' and 'dosexe'. + - Optimize warnings while running target 'diagnostic'. + - Renumber the pseudo targets. + - Move commands for target 'diagnostic' into src/Makefile. + + +Changes from version 22.7.3 to 22.8 (16-Feb-2007) John Coffman + + Boot Installer + -------------- + - Move configuration information (-X) to a separate procedure. + (lilo.c) + - Fix type decl problem in LVM _IOR/RW macros. (geometry.c) + - Add DEV_DISK_DIR and edit source to use it. (config.h, + device.c, geometry.c) + - Change handling of 'device-mapper' depending upon DEVMAPPER + option. (device.c, geometry.c) + - Modify 'scan_dir' to stay out of hidden directories. (device.c) + - Add 'nodevcache' option to configuration file. (cfg.c, lilo.c) + - Add sync() before boot sector write to compensate for 2.6 kernel + bug in partition buffering code. (bsect.c) + - Allow 'root="UUID=xyz"' syntax. (bsect.c) + + Boot Loader + ----------- + - Add compilation switch 'NOVGA' to the Makefile. + + +Changes from version 22.7.2 to 22.7.3 (11-Aug-2006) John Coffman + + Boot Installer + -------------- + - Make with changed compile-time options does not affect source + checksums. (Makefile) + - Remove device 253 from max_partitions[]. (device.c, 22.7.2.1) + - Install device-mapper patches. (geometry.c, Makefile) + - Correct setting of the VIRTUAL & NOKBD flags. (bsect.c) + + +Changes from version 22.7.1 to 22.7.2 (05-Jul-2006) John Coffman + + Boot Installer + -------------- + - Add "noraid" keyword to suppress automatic marking of members + of a full-disk RAID array as "inaccessible". + - Add '-H' switch to override abort on RAID1 install to a failed + array. (raid.c, lilo.c, common.c, common.h) + - Add check for DM_RAID (aka ATA_RAID); warn about manual marking + of disk drives as "inaccessible". (device.c) + - Add 'geo_query_dev' support for 31-partition devices. (geometry.c) + - Add "Warning:'s" counter. (common.c, common.h, & *.c) + - Disable 'nowarn' when verbose >= 3. (lilo.c) + - Davide BIOS bug (sectors [1..63] -> [1..64]) (probe.c) + - Add keywords 'nokbdefault' & 'nokbdisable' on compilation switch + based upon input from Alberto Mardegan . + (cfg.c, bsect.c, lilo.h) + - Add second stage flags: VIRTUAL & NOKBD whenever any 'virtual' or + 'nokeyboard' keyword is used. (lilo.h, bsect.c) + + Boot Loader + ----------- + - Davide BIOS bug (sectors [1..63] -> [1..64]) (first.S, read.S) + - Implement 'nokbdefault' & 'nokbdisable' (second.S) + - Add cli/sti to keyboard detection code (second.S) + - Fix timeout bug if 'ONE_SHOT' compile option is omitted. (second.S) + - Add marker (space) between initrd/kernel loading dots. (second.S) + - Observe second stage flags: VIRTUAL & NOKBD. Do not touch hardware + unless corresponding flag is set. (second.S) + - Allow DEBUG_NEW version to compile READONLY. (read.S) + - Increase kernel command line to 512 bytes. (bsect.c, probe.c, lilo.h, + second.S) + + Utilities + --------- + - Add check of FS register to Diagnostic 2 (diagnose/test4.c) + - Change 'master' determination for --iso; log config file + with --debug (mkrescue) + - Create 'checkit' script to check for versions of gcc, as86, + ld86, and bcc. (checkit) + - Davide BIOS bug (sectors [1..63] -> [1..64]) (disk.S, test4.c) + + +Changes from version 22.7 to 22.7.1 (17-Sep-2005) John Coffman + + Boot Installer + -------------- + - Add check that "vmdefault" image does exist. (bsect.c, lilo.c) + - Use 512/4095 major devices (up from 255). (geometry.c, device.c, + geometry.h) + + Boot Loader + ----------- + - Fix "vmdefault=" bug in MENU and BITMAP interfaces. (second.S) + - Allow any keyboard strike (not just Shift) to escape from + command line, or to display boot menu. (second.S) + + Utilities + --------- + - Apply security patch for temp files to mkrescue & QuickInst + - Compensate for missing in BCC + + +Changes from version 22.6.1 to 22.7 (12-Apr-2005) John Coffman + + Boot Installer + -------------- + - Fix reporting of NULL stored default boot command. (lilo.c) + - Allow "unsafe" on partitions specified by "other=". (boot.c) + - Handle RAID-1 arrays with a failed disk. (raid.c, geometry.c) + + Boot Loader + ----------- + - Rearrange code in first.S to shorten by 3 (to 0x1B2). (first.S) + - Fix "lock" bug on default image. (second.S) + - Descriptor selection (find_image) based on partial command + line. (second.S, crt.S, bitmap.S) + - Improve "unattended": no selection on partial command; CR can't + stop timeout. (second.S) + + Utilities + --------- + - New DOS utility: LILO.COM implements -q -R -V (-C -m) switches. + + +Changes from version 22.6 to 22.6.1 (17-Nov-2004) John Coffman + + Boot Installer + -------------- + - Check command line options for CL_LENGTH max (256). (bsect.c) + - Get '-I' switch to recognize 'addappend='. (identify.c) + - Add 'R' flag to '-I' switch to get root. (identify.c) + + Boot Loader + ----------- + - Enable read-ahead on EDD drives that support the function. + Now a Makefile switch (READAHEAD) (volume.S, Makefile) + - Support BUG_SI_EBDA bugfix for SI controllers that don't properly + allocate the EBDA that they use. (Makefile, second.S, chain.S) + - Correct El-Torito CD emulation termination to use HD/FD device + code. (second.S) + + Utilities + --------- + - Update diagnostic 2.2.4 to 2.3; check EDD fn 4Eh subfunctions. + (diagnose/test4.c) + - Update 'mkrescue' (2.5) to get root filesystem from /etc/fstab. + - Update 'mkrescue --iso --size HD' to create a bootable El Torito + format using hard disk emulation. (mkrescue 3.0) + - Add --image option to mkrescue. (mkrescue 3.0) + + +Changes from version 22.5.9 to 22.6 (01-Sep-2004) John Coffman + + Boot Installer + -------------- + - Correct check of "append=" substring coincidence. (bsect.c/ + check_options) + - add keyword "unattended" to alter timeout operation. (cfg.c, + bsect.c, second.S) + - allow 'timeout' & 'delay' to be specified in 's', 'm', or 'h'. + (lilo.c, common.c) + - change #include to (partition.c) + - alter 'new_serial' to seed from time & /dev/urandom (device.c) + - address compilation issues with 2.6 kernels (2.6.6) and glibc + versions 2.0 and 2.1++ (2.3.3). (config.h, partition.h, + partition.c) + - fix "long" -> "int" for compilation on 64-bit systems. (*.h, *.c) + - use "mkloader" so compilation does not depend on NASM. (temp.c) + - add new block devices: emd, sata, scsi9-15. (lilo.h, geometry.c) + - Check 'other=' for a file that is really an image. (boot.c) + - Allow 'root = "LABEL=label"' in config file. (bsect.c) + - Allow -P parameter to contain '='. (lilo.c) + - Add 'addappend=' specification of local kernel parameters + to 'image=' sections. (bsect.c, cfg.c) + - Automatically treat disks beyond the 16th as INACCESSIBLE. + (device.c) + + Boot Loader + ----------- + - Modify first-stage loader for BIOS that clobbers BX. (first.S) + + Utilities + --------- + - Update diagnostic 2.2.4 to to check int 13, fn 8, for register + clobbers. (diagnose/test4.c) + - Change regular expression in 'keytab-lilo.pl' (Debian patch) + diff --git a/CHANGELOG_old b/CHANGELOG_old new file mode 100644 index 0000000..a129b4c --- /dev/null +++ b/CHANGELOG_old @@ -0,0 +1,1668 @@ +Changes from version 22.5.8 to 22.5.9 (08-Apr-2004) John Coffman + + Boot Installer + -------------- + - Alter NT check for invalid volume ID -- no change on single disk + systems. (device.c) + - Make 'prompt' a word. (common.h, first.S) + - Add 'bmp-retain' local & global option. (bsect.c, cfg.c, second.S) + Retains bitmap after booting. + - Add Makefile option "lilo-static:" -- must specifically make it. + - Fix setting of "map==boot" for RAID installs. (bsect.c, raid.c) + + Boot Loader + ----------- + - Skip duplicate VolumeIDs in second stage, in case a disk has been + added to the system. (volume.S) + + Utilities + --------- + - Update QuickInst to reflect absence of 'activate', using lilo -A + + +Changes from version 22.5.7.2 to 22.5.8 (09-Oct-2003) John Coffman + + Boot Installer + -------------- + - Add "max-partitions=" to the "disk=" section to enable support + for user-defined devices. (geometry.c) + - Color range extended to 0-255 (from 0-15) for 256 color bitmaps. + (bsect.c, edit.c, common.c) + - Make VolumeID scan skip INACCESSIBLE drives (device.c) + - Automatically skip ATARAID drives with "ataraid" keyword and + mark all underlying drives INACCESSIBLE. (device.c, cfg.c) + + - REMOVE the above ATARAID stuff. + + - Add "static-BIOS-codes" to bypass VolumeID booting. (bsect.c, + device.c) + - Add test for setup > MAX_SETUPSECS. (boot.c) + - Open '/proc/partitions' before 'chroot' with -r flag (lilo.c) + + +Changes from version 22.5.7 to 22.5.7.2 (20-Aug-2003) John Coffman + + Boot Installer + -------------- + - Eliminate f2.S; combine all into first.S. (loader.S, Makefile) + - Fix -I to work with "change automatic". (partition.c) + - Correct warning message condition in pf_hard_disk_scan. (device.c) + - Modify warning message condition: unknown video adapter. (bsect.c) + - Fix problem with "devfs" in 'cache_scsi'. (device.c) (22.5.7.1) + + +Changes from version 22.5.6 to 22.5.7 (10-Aug-2003) John Coffman + + Boot Installer + -------------- + - Int 13h, fn 08h/48h differing geometries depends on LBA32 & + verbosity level (probe.c) + - Bug fix for geo_query_dev uninited geo->device (geometry.c) + - preload_dev_cache is now sensitive to devfs present (device.c) + - Alter lookup_dev to not check for existence of device; just + return the name if it is in the cache (device.c) + - PROBE_VERSION==6 always report fn 48h parameters; print nicer + output for "-T geom" switch (probe.c) + - Account for drive mapping in volume.S so that multiple chain's + will operate correctly on RAID1 installations. + - Experiment: sort MAJOR_HPT370 (114) as (2) (device.c) + - Raid install: suppress warning if 'mbr-only' or 'mbr' (raid.c) + + Boot Loader + ----------- + - First stage uses rewritten I/O routine & processed disk addresses + (6 bytes); now enough space for VE call; no FF (f2.S, first.S) + + Utilities + --------- + - Update 'mkrescue' to dynamically determine the loopback device; + makes it devfs-friendly (mkrescue 2.3) + - mbr & mbr2 will pass lilo parameters through to destination (mbr.S) + + +Changes from version 22.5.5 to 22.5.6 (29-Jun-2003) John Coffman + + Boot Loader + ----------- + - Strict limit on PARMLINE to 255 characters + NUL (second.S) + - Move 'volume.S' and 'shs3.S' variables to .bss after PARMLINE. + - Use DL from first stage on raid reads (volume.S) + + Boot Installer + -------------- + - Generate 'version' information to track changes (common.c) + - Eliminate raid assigning all devices to the same device code (raid.c) + + +Changes from version 22.5.4 to 22.5.5 (16-Jun-2003) John Coffman + + Boot Installer + -------------- + - Improve fetch() to avoid redundant reads on failure (probe.c) + - Add 'el-torito-bootable-cd' switch (cfg.c, bsect.c) + - Check for initial ramdisks too big to fit between 4M-15M (boot.c) + - Enhanced '-A' (activate) works for extended part. (partition.c) + - Separate PT check & S/N check in 'bios_dev' (probe.c) + - Allow chain loader > 3 sectors (boot.c) + - Attach -P switch to universal cfg_set() (lilo.c) + - Check for active partition (part_verify, partition.c) + + Boot Loader + ----------- + - Terminate floppy emulation on boot from El Torito CD (second.S) + - Complain of possible kernel overwrite if initrd loads below 4M + + Chain Loader + ------------ + - Merges second stage drive map with any existing drive map; then + merges its own drive map (chain.S) + + Utilities + --------- + - Enhanced 'mbr.S' will look at extended partitions + - Compensate in 'mbr.S' for AHA-2940 bios bug (ES:BX needed) + + +Changes from version 22.5.3.1 to 22.5.4 (25-May-2003) John Coffman + + Boot Installer + -------------- + - Remove all references to FLAG_RAID_NOWRITE (lilo.h, raid.c) + - Add flags to -I option: D (default), a (append) (identify.c) + - Add warning about initial RAM disks too big for 15M (boot.c) + - Check specifically for switches which take no args (lilo.c) + - Sorted assignment of BIOS device codes if no BIOS data (device.c) + - Fix serial number naming bug (device.c) + + Boot Loader + ----------- + - Remove all references to FLAG_RAID_NOWRITE (second.S) + - Allow '-DSUSPEND=0xNN' to specify a primary partition, which, if + active, indicates a virtual boot; for DELL suspend option (second.S) + + Utilities + --------- + - Get 'mkrescue' to use the -I 'D' and 'a' flags (mkrescue) + - Add --iso option to 'mkrescue' (mkrescue 2.0) + + +Changes from version 22.5.3 to 22.5.3.1 (12-May-2003) John Coffman + + Boot Installer + -------------- + - Update to fix Segmentation fault in "lilo -T geom" (probe.c) + + +Changes from version 22.5.2 to 22.5.3 (10-May-2003) John Coffman + + Boot Installer + -------------- + - Update smart_cache to account for DEVFS irregularities (device.c) + - Call smart_cache from lilo.c, not within preload_dev_cache (lilo.c) + - Add FLAG_BD_OKAY to suppress the writing to the map file if previous + BIOS data collection worked okay (bsect.c) + + Utilities + --------- + - Update mkrescue to 1.3 to suppress spruious messages with 22.5.2 + due to smart_cache scan of hard disks (mkrescue), and add --size + argument for making 1.2M floppy, instead of 1.44M floppy + + +Changes from version 22.5.1 to 22.5.2 (01-May-2003) John Coffman + + Boot Installer + -------------- + - Compilation fix for lilo.c (printf macro, again) + - Updates to handle reiser4. (geometry.c) + - Smart device caching if "/proc/partitions" is present. (device.c) + - '-M' switch creates a backup file subject to '-s' & '-S' (partition.c) + - Fix "raid-extra-boot=" for devices outside of the raid set (bsect.c) + + Boot Loader + ----------- + - Fix calls to get number of hard disk devices (first.S & mbr.S) + + +Changes from version 22.5 to 22.5.1 (28-Mar-2003) John Coffman + + Boot Installer + -------------- + - Put all backups and force-backups on the same footing. + - Allow only 1 backup file per major/minor device code, in case + a volume id is written, then the sector is backed up again. + - Fix bug in 'do_table' error reporting "Not a device". (probe.c) + - 'lilo -T video' will now check for Enable Screen Refresh bios bug. + - Added 'boot-as=' as global and other= option; 'master-boot' now + global option, too. (boot.c, chain.S) + - Add additional parameter to 'raid-extra-boot=mbr'; like 'mbr-only' + but writes boot record to RAID1 partition, too. + - Set 'bios-passes-dl=DL_GOOD' on '-x none' or '-x auto' with no + partitions other than primary. Issue warning message. (raid.c) + - Fix problems when 'boot=' is omitted. (raid.c, bsect.c) + + Boot Loader + ----------- + - Protect DL against video BIOS clobbering it. + - Load second stage at 0880:0000, unconditionally. It will move + itself to where it wants to run. (first.S) + - Verify DL device code passed from BIOS into first stage. Verify + failure causes bypass of FLAG_MAP_ON_BOOT check. (first.S) + - Reconfigure headers of first & second stages for string compare + for verification that second stage is loaded. (first.S) + - Update bios data check to collect boot DX & enable screen refresh + registers for check for state of BIOS (PROBE_VERSION 5). + - Allow "mem=#" and "mem=$" to pass to + 2.5 kernels. (second.S) + + Utilities + --------- + - Incorporate protection for DX in master boot record. (mbr.S) + + +Changes from version 22.4.1 to 22.5 (04-Mar-2003) John Coffman + + Boot Installer + -------------- + - Add timestamp to boot sector for this unique LILO installation; + use the map creation time (bsect.c). + - Allow 0 as a parameter to the '-A' switch, to indicate deactivation + of all partitions (partition.c). + - Meaning of '-w' flag expanded: '-w+' turns on warnings, even if + configuration file says 'nowarn'. + - Create 32-bit volume labels on all hard disks. + - Mark boot sector if map file is on same disk as boot sector. + - Backup options -s & -S may specify directory or filename template, + in addition to existing filename. + - Update bitmap editor to handle 256 color bitmap files. + - For 'other=', add the flag 'master-boot' to indicate an OS which + is required to boot from drive 0x80. + - Check boot loader selected against video adapter; issue warnings. + + Boot Loader + ----------- + - Move two disk addresses (dflcmd, message/bitmap) to keytable area + to diminish size of First Stage loader. + - Fix RAID bug on writes to arrays with 3 or more active disks. + - Boot by volume label, not BIOS device code. + - If map file marked on same vol as boot sector, use boot BIOS device + code to access secondary loader in map file (UNIFY compile option + is mandatory). + - RAID1 uses volume labels for lock, fallback, cmdline rewrites. + - Update 'bmp' loader to allow 640x480x256 color bitmaps on adapters + which support VESA mode 0x101. + - Fix the nagging Passed Boot Command line *Interrupt* bug. + - Extend timestamp to the second stage loader (mapstamp). + + Chain Loader + ------------ + - Chain loader will pass command line to relocated boot record. + - Add support to dynamically add drive swapping for 'master-boot' + flag: swap boot BIOS device code with 0x80 (or 0). + + Utilities + --------- + - Master Boot Record (mbr.S) exits to BIOS on error (int 0x18). + + +Changes from version 22.4 to 22.4.1 (27-Jan-2003) John Coffman + + Boot Loader + ----------- + - Fix compilation typos + + +Changes from version 22.3.4 to 22.4 (24-Jan-2003) John Coffman + + Boot Installer + -------------- + - Add keywords vmdefault, vmdisable, vmwarn. + - Print volume serial numbers with "-T geom". + + Boot Loader + ----------- + - Add support for keywords vmdefault, vmdisable, vmwarn. + - First stage loader exits to BIOS on error (int 0x18). + + Chain Loader + ------------ + - Change pause requiring user input to delay (in debugging mode). + + +Changes from version 22.3.3 to 22.3.4 (01-Nov-2002) John Coffman + + Boot Installer + -------------- + - Remove exit() call from unbootable() (bsect.c) so die() displays + error message. + - Fix boot errors when boot record relocation occurs in a RAID1 + installation. (bsect.c) + - Fix Failsafe partition table overwrite check. (bsect.c) + + Boot Loader + ----------- + - Recognize command line "mem=@" for the 2.4 kernels. + + +Changes from version 22.3.2 to 22.3.3 (30-Aug-2002) John Coffman + + Boot Installer + -------------- + - Suppress warning message about .shs file older than config file, + if '-p' is already specified. + - Change FLAG_SAVE to really be complement of FLAG_RAID_xxx. + - Add EVMS patches from Kevin Corry + Enterprise Volume Management Project + - get UNSAFE to work on hard disks, too (geometry.c) with + "disk=/dev/hdXX bios=0x8X inaccessible" + - allow BIOS_MAX_HEADS to be 256; 255 is the REAL max, but there + are some oddball BIOS's which allow 256 + + +Changes from version 22.3.1 to 22.3.2 (11-Jul-2002) John Coffman + + Utilities + --------- + - Fix bug in 'mbr.S' to correctly use 'lba32' on large disks + + +Changes from version 22.3 to 22.3.1 (16-Jun-2002) John Coffman + + Boot Installer + -------------- + - Correct reporting of command line segment (probe.c). + - Correct check for Bitmap table image_menu_space exceeded. + - Output actual geometry when Kernel/BIOS differ, or int 13h, functions + 08h/48h differ (probe.c). + - 'bios_dev' changes to cope with kernel 2.4.18 returning different + disk geometry than previous kernels. Use int 13h/fn 8h disk + geometry, where possible (probe.c). + - Add "k" option to -I flag to support mkrescue 1.2. + + Boot Loader + ----------- + - Bug fix for FF in text in 'say:' routine (save/restore BX). + + Utilities + --------- + - Create 'pseudo.b' -- a pseudo kernel header for loading arbitrary + binaries at 1000:0000. See 'README.pseudo' for details. + - Change "make floppy" to create both 1.5.4 and 2.1.1 diagnostics. + - 'mkrescue' now handles keytable translations with --keymap (1.2). + + +Changes from version 22.2 to 22.3 (19-May-2002) John Coffman + + Utilities + --------- + - Update 'mkrescue' to work with 22.3 + - Integate bitmap file header Editor with 'lilo -E' + - Upgrade boot diagnostic to check for memory area overlap in + int 15h, function E820h, bios call, and to check for 24-bit + moves to high memory, when a 32-bit address is used. + + Boot Installer + -------------- + - Try again to fix the CRC/SHS compilation problem for gcc 3.XX + in bsect.c + - Resolve links in verbose bootloader output from boot.c (patch + from R. Coker) + extend to RAM disk, message, & bitmap files. + Essentially superseded by BUILTIN option. + - Fix minor -I bug when change rules repeat in another 'other=' + - Implement UNIFY (copy 2nd stage loader, bitmap, and/or message + file into the map file). + - Implement BUILTIN - first and second stage loaders, chain loaders, + and mbr loader is built into the /sbin/lilo executable. No more + file incompatibilities. + - Fill in bitmap file Location, Color, and Timer parameters from + a header in the bitmap file; config file overrides; add utilities + on the -E switch to manipulate parameters in the BM file header. + - Pass size of 2nd stage loader to 1st stage; probe reflects proper + memory size. + - Fatal error if any of "lock", "nobd", "vga=", and "kbd=" are in an + append= or literal= in the config file. + - "optional" now will skip an image if the initrd is not present, + just as it will now skip if the kernel is not present. + - Eliminate 'start_page' from the image descriptor. + - Correct and beautify output from verify_partition in partition.c. + - Issue warning when BIOS geometry and kernel geometry differ. + - Add '-E' switch for handling bitmap file LILO headers. + - Interactive password input is no longer echoed. + - Add '-F' flag to override XFS, swap, NTFS partition checks. + - DOS paritions will cause boot loader relocation. + - Add '-B' flag to specify bitmap file on command line. + - Modify bsect.c(bsect_common) to use 'image' flag. + - Check for space/control-char in image name, label, alias. + - Implement 'large-memory' flag in the prompt variable. + - Report change rules (-q) without stopping on 0 offset in PT. + + Chain Loader + ------------ + - Now sensitive to command line in ES:DI; will pass it on if there + are args after the 'BOOT_IMAGE=xxxxx' prefix. + - Limit command line passing to boot sectors having the 'LILO' sig- + nature only. (Will miss relocated boot sectors, however.) + - Fix 'revmap1' to save SI, so partition change rules are okay. + + Boot Loader + ----------- + - First stage now verifies signatures in second stage loader + and its index map. + - Fix bugs in bitmap display when there is a locked command line + and it is interrupted: cmdline clobbered, descr selection, + and top line lowlite display. + - Bitmap display dynamically computes number of rows in selection + menu -- just like the menu interface. + - Memory allocation by 1st stage for the 2nd is now variable, rather + than fixed at the largest (boot-bmp.b). + - Issue "BIOS data check successful/bypassed" message. + - First stage loader begins with short jmp, and still allows relocation + - 'map_create' checks 'extra' on a RAID installation + - Load initrd AFTER the kernel: supports boot protocol 0203h and + "mem=" within an append=XXX. "mem=" on command line replaces "mem=" + from any append=XXX. + - Load sequence: kernel header, initrd (alt. map), kernel proper + - "vga=" on command line now allows any radix input; viz., 0xHHHH + - With no 'start_page', the high starting address is obtained from + the kernel header directly. + - Add INITRDLOW compilation switch, and add check for bios that mucks + with high byte of 386 address (int 15h, fn 87h). + - Only use 32-bit move address with 'large-memory' flag in prompt + variable, otherwise sitck with 24-bit address (<15M). + - Compensate for buggy BIOS in int 15h, fn E820h call to avoid + overlapping memory areas + + +Changes from version 22.1 to 22.2 (05-Feb-2002) John Coffman + + Boot Installer + -------------- + - Fix bsect.c compilation problem (l.241) on newer GCC libraries + - Add "suppress-boot-time-BIOS-data" flag to config file + - Add LVM support patches, courtesy of Andreas Dilger: + + - Make sure image descriptor is zeroed to start + - Fix 'lilo -p' segfault with password=explicit + - Fix 'lilo -q' to handle relocated boot sectors on floppies + + Boot Loader + ----------- + - Add a video mode set to mbr.S and first.S to accomodate Dell/ + Windows XP disabled video on startup + - Add mt_flag to KEYTABLE menu area for automatic suppression + of bios data collection in case of failure + - Vary placement of initrd: (memory <= 64M) ==> load below 15M, + whereas (memory > 64M) load just above 64M; use int 15h, fn's + E820 & E801 to determine memory size > 64M + - DELL_DIRTY_HACK enables video with int 10h, fn=12h, subfn=36h + - Shorten read.S by making 1 mov AX into mov AH + - Fix first.S pread to use index buffer at 0x7E00, not 0x0200 + - Limit BIOS data collection for HD to # drives returned by + fn 8, dev 80h (in DL) + + Chain Loader + ------------ + - Fix bug in CHANGE / MAP-DRIVE interaction when change is to + other than boot drive + + Utilities + --------- + - Add a video mode set to disk.S to accomodate Dell/Windows XP + disabled video on startup + - Add pauses between stages of output to make reading easier + - Add "$(OBJS): mylilo.h" dependency to Makefile + - Add 'diagnose' directory with version 2 of the disk diagnostic + - Add LGPLicence for Robert de Bath's code + - Limit diagnostic 2.0 probe for HD to # drives returned by int 13h + fn 8, dev 80h (in DL) + + +Changes from version 22.0.2 to 22.1 (31-Oct-2001) John Coffman + + Utilities + --------- + - Add version 1.0 of 'mkrescue' + + Boot Installer + -------------- + - Support 4 more SCSI controllers & IBM iSeries v.disk. + - Add M-Systems Disk-On-Chip devices 62(?) and 93 + - Fix bug in 'part_verify' to correct partition mask. + - Passwords use SHS (FIPS PUB 180-1) 160-bit hash or 64-bit CRC-32 + - RAID1 relocations now check for files within the boot Raid + partition. + - Correct operation of -I flag; add option "r" (now "i" & "r") + - Strengthen "part_verify" to disallow installing on secondary + partitions (in addition to primary partitions) other than Linux + partitions + + Boot Loader + ----------- + - Allow variable number of Descriptor Sectors (DSECS=n) + - Load second-stage loader using single sector map segment; removes + size constraint on second-stage loader (15->~100 sectors). + - First-stage loader avoids BPB area -- doesn't clobber FAT16 -- + unless DSECS>5. + - RAID1 sector address relocation performed only if flagged. + + +Changes from version 22.0.1 to 22.0.2 (13-Oct-2001) John Coffman + + Compilation + ----------- + - Fix 'partition.c' to compile with 2.4.12 kernel headers + - Fix compilation bug to allow omission of -DBDATA from Makefile + + DISK.COM utility + ---------------- + - Add BIOS data collection VERBOSE diagnostic. + + +Changes from version 22.0 to 22.0.1 (02-Oct-2001) John Coffman + + Boot Installer + -------------- + - Fixed password security hole to create 'lilo.conf.crc' with + mode 0600 (not 0644). + + +Changes from version 21.7.5 to 22.0 (29-Aug-2001) John Coffman [released 9/27] + + Boot Installer + -------------- + - Passwords are now hashed using a CRC-32 checksum. Allows + for a full pass-PHRASE + - Using password="" (null string) will trigger interactive pass- + phrase input; such passphrases persist until -p switch is used + to force re-creation of CRC save file: 'lilo.conf.crc' + - Password options expanded. Now there are 'mandatory', 're- + stricted', and 'bypass', strongest to weakest. 'mandatory' + remains the default. + - The config file parser now handles garbage input with a good + diagnostic, rather than an unexpected parse. + - RAID installations now create a single map file, install the + boot record on the RAID partition, install auxiliary boot + records only on MBRs if needed, except BIOS device 0x80. Back- + ward compatibility is possible with new config-file and command + line options (raid-extra-boot= or '-x' switch). Even with + stored boot command lines ('-R', lock, fallback), RAID set + coherency can be maintained. + - Add the '-A' switch to activate a partition. Replaces activate.c. + - Add the '-M' switch to allow restoration of a Master Boot Record. + - Allow 'loader=' in the global section of config file. + - Add 'bitmap=' to specify a 640x480x16 bitmap file to be used as + a splash screen upon booting. RGB (uncompressed) and RLE (com- + pressed) Windows/OS2 bitmaps are supported. + - Add 'bmp-table=', 'bmp-colors=', and 'bmp-timer=' to support posi- + tioning and color specification for bitmap screens. + - Modify 'bmp-X' input routines to allow pixel addressing (in addition + to the character addressing). + - Use bios data from boot-time to help identify bios device codes. + - Add 'geometric' and the '-g' switch to specify sector/head/cylinder + disk addressing. + - Add LBA32 compile switch, and make it the default: 'lba32' is now + assumed, unless 'geometric' or 'linear' is specified. + - Raid scans 'raid_disks + spare_disks' + - Add HPT370 controller (major device 114) + + Boot Loader + ----------- + - os2_d.b may now be obsolete with extensive checking added + to chain.b to see if it should fill in bytes 24 & 25 in the + boot record + - boot-bmp.b generated to display bitmapped boot screen + - read.S updated to allow #heads==256 (bios not IBM-compliant) + - disk.S updated to 1.4 to account for #heads==256 (hosed bios) + - second.S updated to allow for EBDA > 64k + + +Changes from version 21.7.4 to 21.7.5 (26-Apr-2001) John Coffman + + Boot Installer + -------------- + - Correct DAC960 partition mask -- again. + + Chain Loader + ------------ + - Reverse map device code if "map-drive" is in effect + + +Changes from version 21.7.3 to 21.7.4 (10-Apr-2001) John Coffman + + Boot Installer + -------------- + - Issue warning when CHANGE AUTOMATIC is to be inserted. + - Correct DAC960 partition mask. + + Boot Loader + ----------- + - Fix password timeout security hole which allowed booting with- + out entering a password. + + +Changes from version 21.7.1 to 21.7.2 (20-Mar-2001) John Coffman + (issued as "patch-21.7.1-to-21.7.2-diff.txt) + + Boot Installer + -------------- + - Add several devices supported by the 2.4.2 kernel only + - Bugfix for -I switch + + +Changes from version 21.7 to 21.7-1 (08-Mar-2001) John Coffman + (issued as "patch-21.7-to-21.7.1-diff.txt") + + Boot Installer + -------------- + - Makefile is simplified to remove 'filesize.c' + - New devices are added (Compaq), and ide5 is made to work + - A new diagnostic is added for when the '-r' switch is used + - Raid update for devfs support + + +Changes from version 21.6.1 to 21.7 (24-Feb-2001) John Coffman + + Boot Installer + -------------- + - Added code to 'do_cr_auto' to account for 'devfs' specifications + - Corrected code for -u/-U switches to make argument optional + - Fix for I2O major block device (SCSI raid) + - Expanded 'default=' error message + - Fix to strip from 'lilo.conf' to accomodate DOS text files + - Changed & expanded setup of serial line parameter specifier + + Boot Loader + ----------- + - Accepts new serial line parameter and supports higher baud rates + + +Changes from version 21.6 to 21.6.1 (16-Dec-2000) John Coffman + + Boot Installer + -------------- + - Bug fix to make '-r' and '-s' swithes work correctly. + - Bug fix for automatic change-rules to work correctly. + - Re-order some includes for glibc-2.2 compilation. + + Boot Loader + ----------- + - Added compile time option 'HP_TTRC' to add a 150ms delay + to boot process to accomodate HP TTRC card. + + +Changes from version 21.5.1 to 21.6 (01-Oct-2000) John Coffman + + License + ------- + - Corrects license wording problems by issuing all code and + documentation under a BSD license. + + Boot Installer + -------------- + - Supports booting from Reiser FileSystem 3.6.18 and later, + without the need to mount 'notail'. + - Added -T diagnostic capability, which includes real-mode + bios tests. "make floppy" is still supported for patho- + logical installations. + - Updated default change-rules. Added "change/automatic" + facility, as well as automatic generation of change-rules in + the abscence of "change" keyword. + + Boot Loader + ----------- + - Dynamically determines where second-stage loader is loaded, + thus allowing maximum room for kernel setup.S real-mode + code. + - First-stage loader no longer relocates itself. + + +Changes from version 21.5 to 21.5.1 (24-Aug-2000) John Coffman + + Boot Loader + ----------- + - Perl script keytab-lilo.pl updated for problem static decls + - Corrected assertion of DTR/RTS at all serial bitrates + + Boot Installer + -------------- + - Fix for RAID segmentation fault if boot= is not specified + - Fix for RAID to allow enough characters in expanded names + + +Changes from version 21.4.4 to 21.5 (17-Jul-2000) John Coffman + + Boot Installer + -------------- + - Now recognizes the option `table=' to support + booting OS/2 or DOS-like systems from a secondary partition. + - Supports `menu-title=' and `menu-scheme=' + to all customization of the Boot Loader menu-driven user + interface (see Boot Loader, below). + - Updated man-pages (lilo and lilo.conf) for all new features + (and even some older ones). + + Boot Loader + ----------- + - Completely new menu-driven user interface. Preserves backward + compatibility with command line interface on console or serial + terminal. Menu title may be specified in 'lilo.conf'. Menu + color scheme may be customized on VGA, but is fixed on MDA. + - Passes cmdline to kernel in Setup.S, not bootsect.S, if kernel + header is 0x0202 or greater. Uses old bootsect.S method for + 0x0201 kernels and earlier + - Uses significatly less memory, none above 0x099200, to account + for large Extended BIOS Data Areas of up to 27K. Allows for + considerable growth in kernel's Setup.S code. + - Default compile is without LARGE_EBDA, so zImages up to 512k + may be loaded. + + Chain Loader + ------------ + - The OS/2 chain loader, `os2_d.b', now correctly sets parameters + for booting OS/2 from an extended partition. This requires use + of a new form of the `table=' option. + + DISK.COM utility + ---------------- + - The .asciz pseudo-op has been removed so that the utility will + assemble under earlier versions of the as86 assembler. + - Now reports EBDA information. + + +Changes from version 21.4.3 to 21.4.4 (10-Jun-2000) John Coffman + + Map Installer + ------------- + - Added a minor RAID patch from Richard Bollinger: 'lilo-21_4_3.also' + http://www.elliott-turbo.com/lilo/ + - Expand COMPACT/LINEAR warning message to include COMPACT/LBA32 + + Boot Loader + ----------- + - LARGE_EBDA option now loads second stage loader at 800:0000, and + position of command line is changed; makes room for 512K kernels + to be loaded low. + - Minor optimizations when ES is reloaded (PUSH/POP) vs (mov thru AX) + - Serial line now turns on DTR/RTS at initialization + - Minor bugfix in numeric conversion (k/K-suffix) + + DISK.COM utility + ---------------- + - The disk.com utility no longer requires 'nasm' to assemble. The + source code now makes the diagnostic floppy with "make floppy". + + +Changes from version 21.4.2 to 21.4.3 (06-May-2000) John Coffman + + Map Installer + ------------- + - Added RAID patches from 'lilo.raid1.also' from Richard Bollinger + http://www.elliott-turbo.com/lilo/lilo.raid1.also + + +Changes from version 21-3 to 21.4.2 (12-Apr-2000) -- John Coffman + + Boot loader + ----------- + - bugfix in 'read.S' that disabled the combination 'linear' with + 'compact' ( '-l' and '-c' together). + - fixed numeric convesions; kernel accepts octal, decimal, and hex, so + octal is now recognized by the boot loader. + - bugfix patch where ES segment prefix was ommitted (RHL 'second.patch') + - bugfix for compilation with 'LARGE_EBDA' option which caused command + line passed to the kernel to be truncated at 78 characters + + Map installer + ------------- + - RHL6.2 loopdev updates added + + +Changes from version 21 to 21-3 (24-FEB-2000) -- John Coffman +----------------------------- + + Boot loader + ----------- + + - will boot from disks up to 2048Gb in size, as long as the BIOS allows + the Enhanced BIOS calls for 32-bit sector addressing using packet calls. + - checks if BIOS supports packet calls (int 0x13, AH=0x42), and uses + these calls if 'lba32' was specified. Otherwise, it uses + the C:H:S addressing scheme of the original IBM-PC BIOS. + - the disk read routine is separated into its own source file, "read.S", + which is included in the first-stage, and second-stage loader codes. + The first stage loader uses a very stripped down read routine, since it + only deals in single sector transfers. + - if BIOS does not support 32-bit packet calls, and the cylinder address + overflows when the 32-bit address is converted to C:H:S, then a "9f" + error code is issued. + + Map installer + ------------- + + - added the '-L' command line switch and 'lba32' configuration file + global option. + - map compaction of 'lba32' addresses is supported with the existing + '-c' switch (or 'compact' configuration file global option). + - floppy disks now will always fall back to C:H:S addressing. + - changed the -v option to now accept a single digit to set the verbosity + level; e.g., 'lilo -v 5 ...' replaces 'lilo -v -v -v -v -v ...' + for maximum diagnostic output. + - LILO version information is moved to the file 'version.h', and VERSION + is now deleted. This allows for tracking of VERSION_MAJOR (=21) and + VERSION_MINOR (=3) for this and future code paths. + + BIOS tester + ----------- + + - Inspired by 'dparam.com', a much more extensive BIOS test program is + included with this version. Called 'disk.com', it was developed + under DOS, and requires 'nasm' to be assembled. + - DISK.COM will probe the BIOS for disks supported by the BIOS, and report + on their CHS geometry. If EDD is supported, the EDD geometry is also + reported. If disks with cylinder numbers of 1024 or above are detected, + it will issue a recommendation to use LILO with the 'lba32' option. + - Creation of the bootable floppy image version of this utility is in- + complete at this time. + + +Changes from version 20 to 21 (5-DEC-1998) +----------------------------- + + Boot loader + ----------- + + - cylinder calculation could overflow when using LINEAR (fix by Jonas + Aaberg and an anonymous contributor) + - first-stage loader code begins with the byte 0xFA (a CLI instruction). + This works around the "INACCESSIBLE_BOOT_DEVICE" blue screen bug of + Windows NT 4 (reported by too many people to mention) + - new build-time option LARGE_EBDA to load boot loader in the 0x8xxxx area + instead of the 0x9xxxx area (disabled by default; problem reported by + Josef Moellers) + + Map installer + ------------- + + - new build-time option USE_TMPDIR to honor TMPDIR when creating temporary + devices (disabled by default) + - now only 0x1b6 bytes of the boot sector are overwritten, which preserves + the passwords DR DOS stores there (fixed by Roy Millar) + - -u and -U accidently implied -v + - "BIOS drive 0xNN may not be accessible" warning was printed in cases + where the drive code was never used (fixed by Andries Brouwer) + - change rule for DOS16_big incorrectly used DOS16_small_hidden when + hiding (fixed by Anthony Richardson) + - RESET in CHANGE-RULES did not remove default rules (fixed by Kurt + Garloff) + - added support for Mylex DAC960 PCI RAID controllers (by Leonard Zubkoff) + - added support for third to sixth IDE interface + - build-time option READONLY was not used properly + - fixed a few harmless compiler warnings + + Documentation and installation + ------------------------------ + + - user's guide claimed that partitions are hidden by setting the highest + bit in the type (i.e. 0x80). The correct value is 0x10, which is also + what is used in the code. + - removed useless (and potentially harmful) DEFAULT_PATH from + keytab-lilo.pl (fixed by Andries Brouwer) + - consistency of build-time options is now checked before build starts + - QuickInst has now limited knowledge of multi-disk configurations + - doc/Makefile: added targets user.ps and tech.ps + - user's guide still claimed that kernels can't be larger than 512 kB + (reported by Jean-Albert Ferrez) + - weird description of the purpose of option BEEP (reported by Tom Toffoli) + + +Changes from version 19 to 20 (20-JUN-1997) +----------------------------- + + Boot loader + ----------- + + - now supports 19200 bps and 38400 bps on the serial line (UNTESTED) + - when reaching the end of the command line buffer, input is ignored + instead of being treated like [Enter] (by Martin Mares) + - fixed numerous bugs in patching of heap end pointer in setup.S (by Martin + Mares) + - images can now optionally be launched with a single keystroke (no [Enter] + required) + - now supports non-US keyboard layouts + + Map installer + ------------- + + - DISK sections may now also define non-disk devices, e.g. /dev/ram + - increased debug level for the "Caching device ..." message + - changed the chain loader format to allow sizes > 512 Bytes + - chain loader now supports arbitrary drive mappings (option MAP-DRIVE) + - chain loader now supports arbitrary partition table modifications (option + CHANGE) + - removed the configuration option REWRITE-TABLE + - removed the build-time options FIX_TABLE and HIDE_DOS + - added the global configuration option CHANGE-RULES plus sub-options + RESET, TYPE, NORMAL, and HIDDEN + - OTHER sections have new configuration option CHANGE plus sub-options + PARTITION, SET, ACTIVATE, and DEACTIVATE + - OTHER sections have new configuration option MAP-DRIVE with sub-option TO + - now only 0x1b8 bytes of the boot sector are overwritten, which preserves + some magic numbers NT stores there + - compiles with 2.1 kernels (asm/boot.h problem - reported by many people) + - should also compile under 0.93 or such again (required NORMAL_VGA etc., + which didn't exist back then) + - lilo -q now prints unknown VGA modes also in hex (by Martin Mares) + - option SINGLE-KEY to allow single-key activation + - -Wno-parentheses is no longer needed + - didn't complain if image label was equal to alias + - removed some ancient dead code + - new option KEYTABLE to specify non-standard keyboard mappings + - PS/2 ESDI disk (/dev/eda and /dev/edb) support (by Andrew Kroll) + - geometry.c:last_dev now only probes for the first two IDE disks + - because chain.b is used for everything anyway, specifying the chain + loader when booting from a driver other than the first one is no longer + mandatory + + Documentation and installation + ------------------------------ + + - changed all references to nic.funet.fi to ftp.funet.fi + - updated the user's guide and did some restructuring (many changes) + - QuickInst no longer puts ramdisk=0 into lilo.conf + - QuickInst now consistently checks for LILO >= version 15 + - make clean and make spotless now also remove dump.s and dump.b (by + Martin Mares) + - changed package names from lilo[.part]. to + lilo[-part]- for compatibility with sunsite's archive + maintenance scripts + - new tool keytab-lilo.pl to generate LILO keyboard tables + - updated t2a.pl to a version compatible with Perl 5 + - READONLY implicitly turns off REWRITE_TABLE + + +Changes from version 18 to 19 (21-MAY-1996) +----------------------------- + + Boot loader + ----------- + + - new compile-time option to beep after displaying "LILO" + + Map installer + ------------- + + - common.h broke compilation if CONFIG_BSD_DISKLABEL is enabled + - no longer tries to interpret dollar signs and such in comments + - check for too many images didn't work (patch by Andries Brouwer) + + Documentation and installation + ------------------------------ + + - removed some "dead" targets in Makefile + - stopped using -N, because recent binutils link statically then + - INCOMPAT no longer promises that REWRITE_TABLE will be fixed in + version 19 + + +Changes from version 17 to 18 (16-MAY-1996) +----------------------------- + + Boot loader + ----------- + + - added ability to load data (e.g. kernels) at addresses >= 0x100000 + - added support for loading an initial RAM disk + - any_*.b became too big when using REWRITE_TABLE + - included trimmed sector read function for first.S by Ted Ts'o + - now prints spaces before error codes + - temporarily removed support for REWRITE_TABLE + - added support for heap size indication to kernel setup.S + - added compile-time option XL_SECS for extra large disks + + Map installer + ------------- + + - new option INITRD to load an initial RAM disk + - added support for "big" kernels (> 0.5 MB compressed), which are loaded + directly at 0x100000 + - long quoted strings can now be distributed over several lines using + a backslash + - environment variables are accessible in lilo.conf with $name or ${name} + - now properly identifies attempts to map from NFS and such + - refuses to overwrite unsuitable partitions + - caches device names and numbers, thereby significantly reducing the + number of readdir and stat system calls (typically, the total number of + system call decreases by about 80%) + - temporarily removed support for REWRITE_TABLE + - geometry.c:exists now opens devices read-write in order to avoid + reading from CD-ROM devices (patch by Alain Knaff) + - added a warning if COMPACT is used with LINEAR + + Documentation and installation + ------------------------------ + + - documentation, QuickInst, and on-line usage information no longer mention + the disktab file (a DISK section should be used instead) + - mkdist now uses the VERSION file + - distribution now includes .lsm file + - LILO is now compiled without -O2 + - updated FTP references and rewrote them to conform to RFC1738 + + +Changes from version 16 to 17 (19-DEC-1995) +----------------------------- + + Boot loader + ----------- + + - changes for FALLBACK and new map section structure (see below) + - LCF_READONLY now disables the LOCK option (and FALLBACK too) + - added command-line option kbd to preload keyboard buffer + - write errors are now reported (Wxx) + - chain loaders now support changing the active partition (enabled with + REWRITE-TABLE) + - chain loader can also "un-hide" a DOS partition if its partition type + has been changed by OS/2 BM (build-time option FIX_TYPE) + - when enabling HIDE_DOS in addition to FIX_TYPE, DOS partitions (except + for the one being booted) are hidden, just like OS/2 BM does (build-time + option HIDE_DOS) + + Map installer + ------------- + + - added FALLBACK option to change default command line before booting + the current image + - added REWRITE-TABLE option to patch partition table at boot time + - added REWRITE_TABLE build-time option to enable REWRITE-TABLE + - added DISK section flag INACCESSIBLE to mark disk as inaccessible for + the BIOS so that the map installer can refuse bad mappings + - options and fallback sectors are now at the beginning of map sections + - -q and -R were accidentially marked as optional in usage + - fixed incorrect partition check for other = + + Documentation and installation + ------------------------------ + + - changed LILO version numbers to always be of the form instead + of 0. + - README now also contains the version number + - make install now strips /sbin/lilo instead of trying to strip /sbin + - various bug fixes in QuickInst + - added file VERSION containing the current version number and new + make target version to rename ../lilo to ../lilo- + - changed a footnote which yielded an asterisk at the end of a command + line in the ASCII README + - -q and -R were accidentally marked as optional in command-line + descriptions + - mentioned -D option in command line description + - new section "System overview" in the user's manual and several minor + additions + - a few minor corrections and addition of unusual error messages + - the last traces of "old-style" configuration have been removed + + +Changes from version 15 to 16 (26-FEB-1995) +----------------------------- + + Boot loader + ----------- + + - added register dump boot sector (dump.S) for debugging + - chain loaders now clear BP. This might help in some cases where DOS + refused to boot. + + Map installer + ------------- + + - really fixed -R this time + - now suggests to "use a DISK section" (instead of disktab) if HDIO_REQ + fails + - removed incorrect error message when using a disktab + - added check to detect CD-ROMs with major numbers of hard disks + - no longer complains about corrupt partition table if 3D address is + smaller than linear address and (3D) cylinder is 1023 (OS/2 does + is this way) + - LOADER is now required when booting an operating system from any device + than the first hard or floppy disk + - changed header protection macros from _xxx_H_ to xxx_H + - added (untested) support for 2nd IDE controller (major 22) + + Documentation and installation + ------------------------------ + + - user.tex is now compatible with LaTeX 2e (\textfont0 problem) + - tech.tex now avoids \SetFigFont (LaTeX 2e again) + - /sbin/lilo is now optimized and stripped when installing + - ASCIIfied "Booting basics" section + - removed all references to the old directory structure + - added description of LOCK in config file + - updated FD TMC-1680 warning + - added reminder to re-run /sbin/lilo when modifying partition tables + - updated list of kernel options + - added detailed description of >2 disks and >1024 cylinders + - added description of putting /boot on a DOS partition + - reordered sections in "Installation and updates" + - updated tech.tex + + +Changes from version 14 to 15 (23-OCT-1994) +----------------------------- + + General + ------- + + - upon popular demand, a copyright notice has been added + + Boot loader + ----------- + + - now also drains the keyboard type-ahead buffer + - new command-line option "lock" to make the specified command line the + default for the following boots too + - default command line execution can now be interrupted in prompt mode too + + Map installer + ------------- + + - fixed -R arguments handling bug + - fixed -P argument handling bug + - fixed yet another recursion problem with /dev/fd -> /proc/self/fd + - added option -D and configuration variable DEFAULT to specify the + default image without changing the oder of entries in /etc/lilo.conf + - added configuration variable LOCK to make the specified command line the + default for the following boots too + - added disk geometry configuration in the general configuration file. + /etc/disktab is now considered obsolete. + - added option -w and configuration variable NOWARN to disable some + warnings + - added warning when putting the boot sector on a non-boot disk + - added warning for possibly inaccessible devices (e.g. third disk) + - added warning for disks/partitions with more than 1024 cylinders + - added warnings for bad permissions of the configuration file + - fixed handling of floppies in geo_open_boot + - removed erroneous call to part_verify when booting other systems + from files + - added support for variable-size setup segments as supported by kernels + >= 1.1.43 + - restructured verbosity levels + - allowed escaping of backslashes in quoted strings (/etc/lilo.conf) + - /sbin/lilo -q -v now displays all settings + + Documentation and installation + ------------------------------ + + - lots of things have been restructured + - many changes to describe the current Linux environment + - "new" directory structure is now the default + - README is now generated from user.tex by a Perl script + - lots of minor corrections and clarifications + - added a copyright notice and adapted several comments + - QuickInst: updated default kernel names + - QuickInst: now runs /sbin/lilo -t before trying to install + - doc/Makefile: removed extra "Label(s) may have changed" output + - disktab: changed header comment and added second example line + - /etc/disktab is no longer automatically created by make install + - linking /etc/lilo/install -> /sbin/lilo is no longer suggested + - removed mkbindist. I don't think anybody used it anyway. + + +Changes from version 13 to 14 +----------------------------- + + Map installer + ------------- + + - added a few missing closedirs to device.c:scan_dir + - added detection of directory loops to device.c:scan_dir and + geometry.c:last_dev + - fixed handling of dangling links in /dev + - new option -u [ device ] to restore boot sector. Unsafe mode with -U + - fixed/improved usage message + + Documentation and installation + ------------------------------ + + - QuickInst: did not write "other" sections to configuration file + - QuickInst.new: improved handling of disks without active partitions + - QuickInst.new now knows about /etc/disktab (relict from Shoelace, + still in some distributions) + - QuickInst.new now uses *_d.b chain loaders when configuring non-Linux + systems on the second disk + + +Changes from version 12 to 13 +----------------------------- + + General + ------- + + - BSS is no longer cleared by LILO, because the kernel itself does + that now. + - added support for the new directory structure. Makefile and QuickInst + come in .old and .new versions. See INCOMPAT for details. + - removed support for unstripped kernels. Therefore, mkck is no longer + part of the distribution. + + Boot loader + ----------- + + - added missing seg es override to UI_MAGIC check at "input". + + Map installer + ------------- + + - new options LITERAL and APPEND. + - the root setting is no longer being shown on -q -v + - the configuration file may now contain quoted strings in which spaces + and equal signs do not have to be escaped. + + Documentation and installation + ------------------------------ + + - fixed bug in QuickInst that prevented correct renaming of the config + file when ROOT is set. + - added comment to disktab indicating that it is typically not needed. + - distributed files are now readable for group and other. + - mkdist is now included in the distribution. + - changed the name of kernels from "(traditional) boot image" to + "kernel image". + - changed the name of the string passed to the kernel from "command + line" to "parameter line". + - removed obsolescent terms "rootimage" and "bootimage". + - fixed documentation bug claiming only kernels can be protected by + passwords. + - fixed some additional minor documentation errors. + + +Changes from version 11 to 12 +----------------------------- + + Boot loader + ---------- + + - removed accidential swapping of A:/B: when swapping C:/D: from + the chain loader. + - added new chain loader any_b.b (swaps A:/B:) + - fixed incorrect handling of drive number resetting in swapping + versions of the chain loader. + - now generates diagnostics when failing to load the second stage + loader. + - new compile-time option NO1STDIAG to disable these diagnostics. + + Map installer + ------------- + + - fixed stat/fstat when creating temporary devices. + - subdirectories of /dev are now recursively searched for disk devices + in addition to /dev + - devices are now counted by highest device number, not by name. + - some minor fixes. + + Documentation and installation + ------------------------------ + + - QuickInst now warns if there is an obsolete LILO boot sector on + the MBR. + - QuickInst is now prepared to handle symbolic links hda -> sda + - other minor fixes to QuickInst. + - removed all references to compound unstripped kernels from the + user's guide. + - activate is now compiled as a stripped, statically linked, impure + executable. + - fixed a few minor omissions in the technical overview. + + +Changes from version 10 to 11 +----------------------------- + + Boot loader + ----------- + + - added on the fly patching of the BIOS disk parameter table to + fix the "Error 0x04" observed on some systems. + + Map installer + ------------- + + - floppy devices are no longer opened at all when using the UNSAFE + option in OTHER. + - fixed partition table checking. + - new option -V to display the version number. + - INSTALL = /etc/lilo/boot.b is now the default if INSTALL is + omitted. + - new compile-time configuration option NOINSTDEF to restore the old + semantics of INSTALL. + + Documentation and installation + ------------------------------ + + - QuickInst no longer asks whether to change the active partition if + installing LILO as the MBR. + - QuickInst now suggests configuring other operating systems if + installing LILO as the MBR. + - added a version check to QuickInst. + - added de-installation instructions. + - fixed a few minor documentation bugs. + - added script mkbindist that generates a minimal binary distribution + of LILO. + + +Changes from version 9 to 10 +---------------------------- + + Boot loader + ----------- + + - added support for read-only setting of root. + - new chain loader os2.b to load OS/2 from the second disk. + - new chain loader any_d.b to load BIOS-based operating systems + (e.g. PC/MS-DOS) from the second disk. + + Map installer + ------------- + + - removed support for old-style configuration. + - removed the dump option -D + - removed support for not-compound unstripped kernels. + - limited partition checking to hard disks and primary partitions. + - -C now accepts - for standard input. + - -P now has sub-options "fix" and "ignore". New configuration + variable "ignore-table" coresponds to "-P ignore" + - added automatic backup of the partition table when fixing it. + - new configuration variables "readonly" and "read-write" to change + read-only mounting of root. + - made partition offset field in /etc/lilo/disktab optional. + - added tentative support for XT-type hard disks. + - improved some error messages. + - some minor fixes. + + Documentation and installation + ------------------------------ + + - changed many "echo"s in QuickInst to "cat"s. + - suggesting using a symbolic link to lilo for /etc/lilo/install. + - removed the configuration option NOAUTO. + - split the documentation in a user's guide and the technical + overview. + - removed all references to older versions of LILO, the kernel or + other programs. + - removed all references to old-style configuration and not-compound + unstripped kernels. + - using the fullpage style. + - removed and "ascified" anew the shared sections of README and the + LaTeX documentation. + - some minor corrections. + + +Changes from version 8 to 9 +--------------------------- + + Boot sector + ----------- + + - can now get the command line from the map file and overwrite + that sector. + - passes the word "auto" on the command line if booting after a + timeout. + - new command-line option vga={ask,normal,ext,extended,} + to alter the VGA mode on the fly. + - image name matching can now be made case-insensitive (default) + - added sanity checks for the second stage loader and the + descriptor tables. + + Map installer + ------------- + + - added new compound unstripped kernel format. + - -r is now implied if the environment variable ROOT is set. + - new option -I to translate a label name (e.g. obtained from + BOOT_IMAGE) to the path of the kernel image. + - new variable MESSAGE to define a startup message. + - new variable UNSAFE to bypass sanity checks and floppy spin-up + when defining other operating systems. + - new variable ALIAS to define a second label name. + - new variable RESTRICTED to confine password protection to + invocations with parameters. + - added a missing #include to map.c + - fixed the BIOS_MAX_* parameters in lilo.h + - removed too restrictive cylinder number check. + - new option -R to set/clear the default command line in the + map file. + - added verification of 3D and linear address equality of + partition starts (in the partition table). + - suppressed outputting the version string when using -D with -v + - "vga=extended" can now be abbreviated to "vga=ext". + + Documentation and installation + ------------------------------ + + - added a test for broken regexp in sed, grep and egrep to + QuickInst. Other minor improvements. + - now uses build-time configuration variables in Makefile or + /etc/lilo/config.defines + - copied section "LILO start messages" from doc.tex to README + - removed the description of a floppy test installation from + README. (doc.tex never contained that part.) + - fixed some minor documentation errors and omissions. + - fixed some minor Makefile bugs. + - included the LaTeX translations of the FIG files. + - moved the "Technical overview" to the end. + + +Changes from version 7 to 8 +--------------------------- + + Boot sector + ----------- + + - now supports password protection for boot images. + - fixed occasional omission of delays. + - passes the name of the boot image to the kernel, which stores + it in the environment variable BOOT_IMAGE. + - parameters are now preserved when trying to boot the same + image again after a media error. + - the command line is preserved on error. + - can be operated from a serial line. + - made timeout handling interrupt-driven to fix time-wrap problems + at midnight. + - now clears all bytes after text and data of traditional boot + images booted from a file. + + Map installer + ------------- + + - added detection of missing HDIO_REQ support. + - added sanity checking for disk parameters. + - fixed BIOS code computation for SCSI disks. + - command-line settings can now override /etc/lilo/config + - defaults for ROOT, VGA, RAMDISK, PASSWORD and OPTIONAL can be set + in the options section. + - new option PROMPT to unconditionally enter the boot prompt. + - new option TIMEOUT to specify an input timeout. + - new flag OPTIONAL to specify that an image can be omitted if it + isn't present. + - new value CURRENT for ROOT to specify the "current" root device. + - special characters are now correctly escaped in dumps. + - temporary files are now removed on error. + - updated the usage output to reflect the changes since 0.6. + - added a missing closedir to device.c + + Documentation and installation + ------------------------------ + + - wrote a quick installation script. + - fixed many small documentation errors. + - wrote a README for the doc directory. + - added descriptions of the configuration parameters passed in + the boot sector and of the kernel's command-line interface. + - Makefile now explicitly uses /bin/sh + - changed echo \c to echo -n in the Makefile + - added ability to print the name of the active partition to + activate. + + +Changes from version 6 to 7 +--------------------------- + + Boot sector + ----------- + + - supports video mode and RAM disk size settings. + - loads original boot sector to make possible additional settings + available. + - now uses defaults from the boot sector even if the boot sector + has been changed after map creation. + + Map installer + ------------- + + - new configuration based on /etc/lilo/config + - can get SCSI geometry without using /etc/lilo/disktab (doesn't + work with 0.98pl6) + - removed support for BIOS codes (name:code) + - removed support for setting the swap device. + - new command-line options: -q, -C and -D + + Documentation + ------------- + + - updated to cover new-style configuration + - extended the plain-ASCII README + + +Changes from version 5 to 6 +--------------------------- + + Boot sector + ----------- + + - added command-line argument passing. + - now clears BSS of traditional images too. + - chain.b is now more careful about register values when invoking + the boot sector of the other OS. + - added an interface for externally provided command lines. + - added experimental recognition of linear addresses. + + Map installer + ------------- + + - fixed opening the disktab file. (Using -f didn't work.) + - fixed use of BIOS codes for the map file: the tilde is now appended + before the BIOS code. + - added a chdir("/") when using -r + - added more sanity checks. + - added generation of linear addresses. + + Documentation + ------------- + + - removed all references to swap device settings in the kernel because + recent kernels don't support that any longer. + - added a troubleshooting section. + - several minor fixes and improvements. + + +Changes from version 4 to 5 +--------------------------- + + Map installer + ------------- + + - added automatic boot sector backup. + - fixed variable block size detection. (Didn't work with the 0.97-pl2 + kernel.) + - added the chroot (-r) option. + - made the partition table part of a foreign OS boot descriptor + optional. + + Documentation and installation + ------------------------------ + + - most of README has moved into doc.tex (LaTeX) + - added a utility to activate a partition. + - make install now reminds the user to update the map. + - dd is now used in a more efficient way in the Makefile. + (Fewer subshells, etc.) + + +Changes from version 3 to 4 +--------------------------- + + Boot sector + ----------- + + - added a configurable delay. + - added a diagnostic title message. + + Map installer + ------------- + + - fixed all known include file conflicts. + - added support for variable block sizes. (Not used yet.) + - added some more sanity checks. + - added a tool to determine SCSI disk parameters. + + Documentation and installation + ------------------------------ + + - extended coverage of SCSI disks. + - make install now backs up chain.b and boot.b of any older LILO + installation. (To say: your system remains bootable even if you + forget to run /etc/lilo/install after the update or if this fails + for some reason.) + - moved the changes section from README into CHANGES. + - a set of pre-compiled executables of lilo, boot.b, chain.b and + dparam.com is available too. + + +Changes from version 2 to 3 +--------------------------- + + Boot sector + ----------- + + - can initialize BSS of unstripped kernels. + - also accepts [Tab] to show the list of known images. + + Map installer + ------------- + + - fixed parsing of the root device specification. + - fixed setting of the root device when the boot image doesn't + define it. + - reduced the number of installable images from 19 to 16. (Because the + descriptors have grown.) + + Documentation + ------------- + + - added a booting basics section. + - many minor changes. + + +Changes from version 1 to 2 +--------------------------- + + Boot sector + ----------- + + - added command-line editing. + - added debugging support (-DDEBUG). + - added support for compacted maps. + - some cosmetic changes. + + Map installer + ------------- + + - major rewrite. + - files that contain "holes" are now handled properly. + - added map compaction. + - devices are now created on the fly only if they can't be found in /dev. + - improved sanity checking. + - can now boot other operating systems. + - can now boot unstripped kernel executables. + - added support for a disk parameter file. + - reduced the number of installable images from 21 to 19. + - changed the command-line syntax. + - root and boot can now be specified on the command line. + + Documentation + ------------- + + - many changes, including correction of some minor errors. + + +Changes from version 0 to 1 +--------------------------- + + Boot sector + ----------- + + - tested as master boot record. + - improved the boot prompt invocation method. + - increased the number of installable images to 21. + - added a help facility. + - improved read error handling and error reporting in the boot loader. + - added a second stage boot loader. + + Map installer + ------------- + + - fixed some minor bugs in the map installer. Removed all compiler + warnings. + - added labeling of images. + - added version checking for the boot sector. + - replaced option -r by -m. -r will be available for a while for + compatibility. + - added booting from device files (that have boot images written on them). + - BIOS device codes can now be specified for boot image files too. + - added concatenation of images. (This is a test feature that will be + changed in the future.) + + Documentation + ------------- + + - some minor documentation errors have been corrected. + - the README now warns that the map has to be rebuilt after the images are + replaced or moved. + - added a files, a hints and an examples section. diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..af53737 --- /dev/null +++ b/COPYING @@ -0,0 +1,43 @@ +LInux LOader (LILO) program code, documentation, and auxiliary programs: + +Copyright 1992-1998 Werner Almesberger +Copyright 1999-2007 John Coffman +Copyright 2009-2010 Joachim Wiedorn +All rights reserved. + + +License +------- +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the authors nor the names of other contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + +Disclaimer +---------- +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + + +(Note: The above license is based on the BSD License at: + http://www.opensource.org/licenses/bsd-license.html) diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..442e943 --- /dev/null +++ b/Makefile @@ -0,0 +1,132 @@ +# -*- makefile -*- + +# +# make help +# +help: + @echo "" + @echo "Targets:" + @echo " make all # binaries (without dosexe, diag.)" + @echo " make dosexe # DOS lilo.com utility" + @echo " make diagnostic # standalone diagnostics" + @echo " make alles # all above + static binary" + @echo " make docs # doc/[user,tech].[ps,dvi] docs" + @echo " make floppy # 2 standalone bootable diagnostic floppies" + @echo "" + @echo " make install # install binaries++ into root directory" + @echo " make install DESTDIR= # install binaries++ into directory" + @echo "" + @echo " make uninstall # remove binaries++ from root directory" + @echo " make uninstall DESTDIR= # rmove binaries++ from directory" + @echo "" + @echo "Maintenance:" + @echo " make test # test for all needed utilities (as86, ld86, etc.)" + @echo " make tidy # remove listings & other unnecessary files" + @echo " make clean # remove objects & ready for a fresh 'make all'" + @echo " make distclean # remove editor temps, & all of the above" + @echo "" + +# +# everything needed to run, just short of installation +# +all: test + make -C src all + make -C images all + +# +# everything above plus the statically linked version +# +alles: test + make -C src alles + make -C images all + +# +# documentation files +# +docs: + make -C doc all + +# +# if you have the 'bcc' compiler, then you can make the diagnostics, too +# bcc = Bruce Evans’ C 16bit compiler (also for BIOS- and DOS code) +# +it: docs alles diagnostic dosexe + +# +# make the bootable diagnostic floppies +# +floppy: test + @echo + @echo Make sure you have 2 blank, formatted, 1.44Mb floppies + @echo before you proceed from this point. + @echo "Press to continue, <^C> to abort ..." + @read + @make -C src floppy1 + @echo Done. + @echo + @echo Remove the floppy from the drive. Label it "\"1.6\"" + @echo "Press to continue, <^C> to abort ..." + @read + @make -C src floppy2 + @echo Done. + @echo + @echo Remove the floppy from the drive. Label it "\"2.4\"" + @echo + +diagnostic: test + make -C src diagnostic + +dosexe: test + make -C dos lilo + +# +# test for compilers & utilities +# +test: test.img +test.img: + ./checkit + echo Tested >test.img + +# +# shorthand install, if one knows that one has the 'bcc' compiler +# +ins: + make -C src ins + +# +# normal install, but doesn't make the diagnostic binaries +# +install: all + make -C src install + make -C images install + make -C hooks install + make -C sample install + make -C man install + make -C dos install + +tidy: + make -C src tidy + make -C diagnose tidy + make -C dos tidy + make -C doc tidy + +clean: tidy + rm -f test.img + make -C src clean + make -C images clean + make -C diagnose clean + make -C dos clean + make -C doc clean + +spotless: distclean +distclean: clean + make -C src distclean + make -C diagnose distclean + make -C dos distclean + +uninstall: + make -C src uninstall + make -C images uninstall + make -C hooks uninstall + make -C sample uninstall + make -C man uninstall diff --git a/NEWS b/NEWS new file mode 100644 index 0000000..bb51f5e --- /dev/null +++ b/NEWS @@ -0,0 +1,70 @@ +NEWS about project LILO +======================= +(For details see file 'CHANGELOG' in the source directory) + + +Version 23.1 (major and bugfix update of 23.0) + + o Many fixes of typos in sources and documentation. + o LVM volumes can now be used as root device. + o Better computing of (uncompressed) vmlinux size. + o Better working on degraded RAID devices. + o Update to newer MD RAID 1.0 specification. + o Substituted QuickInst script (mkbdist, mksdist removed). + o Added new hook scripts for newer kernel support. + o Updated and added new menu background images. + o Added new TOOLS file for overview of needed tools / packages. + o Added new example of lilo.conf with many comments. + + +Version 23.0 (major and bugfix update of 22.8) + + o Major code reorganisation and code cleaning. + o Add new option 'small-memory' and modify option 'large-memory'. + o Configuration without memory option set to auto-memory, which + mean a automatic decision: small initrd will be load <15M, + large initrd will be load >16M. + o Now need an absolute path for the installation path DESTDIR, + in the past named as ROOT. + o Many bugfixes and sensible updates (most from Debian). + o Remove obsolete program 'activate'. Instead use 'lilo -A'. + + +Version 22.8 (minor update of 22.7.3) + + o Compile with DEVMAPPER (device-mapper or LVM2) if library is present. + o Add 'nodevcache' configuration file keyword. + o Allow root device specification with UUID in addition to LABEL. + + +Version 22.7.3 (bugfix update of 22.7.2) + + o Correct table entry for experimental major device 253. + o Correct PC/AT keyboard check when NOKEYBOARD compile option is used. + + +Version 22.7.2 (minor update of 22.7.1) + + o Keywords "noraid", "nokbdefault", "nokbdisable" are added. + o Compensate for common BIOS bug (sectors==0) on USB disk drives. + o Increase kernel command line to 512 bytes. + + +Version 22.7.1 (minor update of 22.7) + + o Expand device major/minor numbers to more than 8 bits. + o Apply security updates to 'mkrescue' & 'QuickInst'. + o Allow any keystrike (not just Shift) to display 'boot:' menu, or to + escape from stored command line. + + +Version 22.7 (minor update of 22.6.1) + + o Add the DOS/Windows utility 'lilo.com' which implements the -q -R -V + (-C -m) switches. This utility may be used to set the boot command + line if the sector map file is on a DOS/Windows partition. + o Add bulletproofing for "unattended" so that a spurious character + can be ignored. + o Select boot descriptors based upon partially typed names in all + situations except "unattended". + diff --git a/QuickInst b/QuickInst new file mode 100755 index 0000000..2aabccf --- /dev/null +++ b/QuickInst @@ -0,0 +1,72 @@ +#!/bin/sh +# +# QuickInst - script for quick installation of lilo +# +# Copyright 2010 Joachim Wiedorn +# All rights reserved. +# +# Licensed under the terms contained in the file 'COPYING' +# in the source directory. +# + +set -e + +if [ ! -f "./src/lilo.c" ]; then + echo "You are not in the main source directory of LILO - Abort!" + exit 1 +fi + +if [ -z "$1" ]; then + + if [ "$UID" != "0" ]; then + echo "For installing LILO you must be ROOT - Abort!" + exit 1 + fi + +else + ADIR=`pwd` + + # absolute path to directory ? + if [ `echo "$1" | sed 's#^\/##g'` = "$1" ]; then + # path is relative + BDIR=`echo "${ADIR}/${1}" | sed 's#\/\/#\/#g'` + else + BDIR=`echo "/${1}" | sed 's#\/\/#\/#g'` + fi + + # existing directory ? + if [ -e "${BDIR}" ]; then + DDIR="${BDIR}" + else + # try to create directory + mkdir -p ${BDIR} 2>/dev/null || true + if [ -e "$BDIR" ]; then + DDIR=$BDIR + else + echo "Cannot create directory ${1} - Abort!" + exit 1 + fi + fi + + # writeable directory ? + if [ ! -w "$DDIR" ]; then + echo "Cannot write to directory $DDIR - Abort!" + exit 1 + fi + +fi + +echo "~~~~~~~~~~~~ make all ~~~~~~~~~~~~" +make all + +echo "~~~~~~~~~~ make install ~~~~~~~~~~" +if [ -n "$DDIR" ]; then + make install DESTDIR="$DDIR" + DDTEXT=" to ${DDIR}" +else + make install +fi + +echo +echo "LILO installed${DDTEXT}." +echo diff --git a/README b/README new file mode 100644 index 0000000..ca26cbb --- /dev/null +++ b/README @@ -0,0 +1,119 @@ +README for project LILO +======================= + + +Versoin 23.1 (release) -- Joachim Wiedorn +--------------------------------------------------------------- + +Option 'inaccessible': + + The patch in 23.0 for better support for inaccessible disks based + on problems with usb sticks. But this option 'inaccessible' is only + usable, if hard disks can not be accessed by the BIOS, but always + by linux. This option does not concern usb sticks, which will always + bring failures if they are named in the lilo.conf. So I have removed + this patch from the new version. + +Computing vmlinux size: + + From the compressed kernel vmlinuz the size of the uncompressed + file must be compute to decide whether the initrd can be copied + in the memory <15M. But with the newer 64bit kernels this factor + changed from nearly "3" to nearly "6". "6" is now default. + +Working on degraded RAID device: + + If the first physical device of a RAID1 array is faulty or removed, + lilo fails to install. It doesn't get valid informations about the + device and didn't resume with the next disk. Lilo now loop through + all devices to get the disk geometry. + +Working with MD RAID 1.0 standard: + + Turned off the error "Inconsistent Raid version information" for + Version 1.0 MD RAID mirror pairs. It also corrects the error message, + as the version information is just incompatible not inconsistent. + + No other charges are required as 1.0 devices have the same layout + as v0.90 devices except that they work with drives in excess of 2TB. + It does not update for version 1.2 raid superblocks, this would + require a much more complex patch. + + With the following lilo.conf the standard debian initrd and kernel + boot off of an LVM logical drive on an MD RAID-1 array consisting of + two whole disk devices (e.g. /dev/sda & /dev/sdb). Now the array can + use version 1.0 superblocks, so these devices can be e.g. the new + 3 TByte Seagate drives. + + Configuration example: + + | boot=/dev/md0 + | raid-extra-boot=mbr-only + | map=/boot/map + | delay=20 + | + | default=Linux + | append="quiet root=/dev/mapper/vg0-root" + | + | image=/vmlinuz + | label=Linux + | read-only + | initrd=/initrd.img + + +Versoin 23.0 (release) -- Joachim Wiedorn +--------------------------------------------------------------- + +Option 'small-memory': + + New option to define, that kernel+initrd should always set into the + low memory under 15M. But if this is impossible, lilo try to use the + high memory above 16M for initrd and give you a warning. + +Option 'large-memory': + + This option enables using memory above 16Mb for the initrd (up to a + kernel imposed limit of around 768Mb) which is usable on nearly all + newer systems with post-2000 BIOSes. Details can be found in manpage + lilo.conf(5). + +No option 'large-memory' or 'small-memory': + + If no option is set in the configuration, then lilo will check the + needed memory space and give you some informations about the result + and its decision in verbose mode. + If you need the old behaviour, please use the option 'small-memory'. + +Installation into a subdirectory: + + If you want to install all lilo files into a specific directory which + is not the root directory "/", then use the shell variable DESTDIR to + set an absolut path for installation: + + make install DESTDIR=/home/myself/test/lilo/ + or + make install DESTDIR=`pwd`/test/ + + WARNING: You always need an absolute path! This behaviour have changed + since version 22.x. The old variable ROOT is obsolete for installing. + +Using UUIDs for partitions: + + In the configuration file of lilo all lines with 'root=' can be used + together with UUIDs. To extract your UUIDs let run the program blkid. + Here an example: + + #OLD#root = /dev/hda6 = /dev/sda6 + root = "UUID=5472fd8e-9089-4256-bcaa-ceab4f01a439" + + But then you should also use a similar expression for the 'boot=' line. + Unfortunately you cannot use UUIDs because devices haven't any UUIDs. + The solution is using the udev device names which can be found in + /dev/disks/by-id/ i. e. for a PATA disk: + + boot = /dev/disk/by-id/ata-SAMSUNG_SV1604N_S01FJ10X999999 + + or i. e. for a SATA disk : + + boot = /dev/disk/by-id/ata-SAMSUNG_HD502HI_S1VZJ90S999999 + diff --git a/TODO b/TODO new file mode 100644 index 0000000..97e0f03 --- /dev/null +++ b/TODO @@ -0,0 +1,13 @@ +TODO for project LILO +===================== + +* update manpages with new option 'small-memory' and changed + behaviour of 'large-memory'. + +* patching sources because of some warnings while compiling + with gcc 4.3.x + +* Upgrade of all manpages. + +* Upgrade of all documentations. + diff --git a/TOOLS b/TOOLS new file mode 100644 index 0000000..391117a --- /dev/null +++ b/TOOLS @@ -0,0 +1,18 @@ +The following is a list of external tools and programs that +are used within lilo makefiles and scripts. Along with the +RPMs or DEBs they can be found in: + + at least tested programs +package version until inside +----------------------------------------------------------------- +coreutils 6.4.10 8.5 (general) + +bcc 0.16.14 0.16.17 bcc + +bin86 0.16.14 0.16.17 as86, ld86 + +gcc 3.3.5 4.4.5 gcc + +sharutils 4.6.3 4.9 uuencode, uudecode + +texlive-latex-base 2007-01 2009-11 ifpdf.sty diff --git a/checkit b/checkit new file mode 100755 index 0000000..5fb8afa --- /dev/null +++ b/checkit @@ -0,0 +1,110 @@ +#! /bin/sh +# +# checkit: Test for correct versions of utilities +# (see the end of the file for bypassing these checks) +# +# Copyright 2005-2007 John Coffman +# Copyright 2009-2010 Joachim Wiedorn +# All rights reserved. +# +# Licensed under the terms contained in the file 'COPYING' +# in the source directory. +# + + +ret=0 +rc=0 + +# min. version of BCC, AD86, LD86 +bccmin="0.16.14" + +# min. version of GCC, CPP +gccmin="3.3.5" + +vers_min() { + local M m p N n r + + rc=0 +# get our version major, minor, rev + M=`echo $1 | cut -d . -f 1` + m=`echo $1 | cut -d . -f 2` + p=`echo $1 | cut -d . -f 3` + if [ -z "$p" ]; then p=0; fi +#echo vers_min1 $M $m $p + N=`echo $2 | cut -d . -f 1` + n=`echo $2 | cut -d . -f 2` + r=`echo $2 | cut -d . -f 3` +#echo vers_min2 $N $n $r + if [ "$M" -lt "$N" ]; then rc=1 + elif [ "$M" -gt "$N" ]; then rc=0 + elif [ "$m" -lt "$n" ]; then rc=1 + elif [ "$m" -gt "$n" ]; then rc=0 + elif [ -z "$r" ]; then rc=0 + elif [ "$p" -lt "$r" ]; then rc=1 + fi +#echo vers_min returns $rc + return $rc +} + +#echo +echo GCC version $gccmin or later is required +gcc -v 1>foo1 2>foo2 +V=`cat foo1 foo2 | cut -d' ' -f1-3 | grep -i version | tr '-' ' ' | cut -d' ' -f 3` +rm -f foo1 foo2 +if [ -z "$V" ]; then + echo gcc is not present + ret=1 +else + vers_min $V $gccmin + echo gcc version $V + if [ $rc = 0 ]; then echo OKAY; else echo ERROR; ret=1; fi +fi + +echo +echo AS86 version $bccmin or later is required +as86 -v 1>foo1 2>foo2 +A=`cat foo1 foo2 | grep version | cut -d " " -f 3` +rm -f foo1 foo2 +if [ -z "$A" ]; then + echo as86 is not present + ret=1 +else + vers_min $A $bccmin + echo as86 version $A + if [ $rc = 0 ]; then echo OKAY; else echo ERROR; ret=1; fi +fi + +echo +echo LD86 version $bccmin or later is required +ld86 -v 1>foo1 2>foo2 +L=`cat foo1 foo2 | grep version | cut -d " " -f 3` +rm -f foo1 foo2 +if [ -z "$L" ]; then + echo ld86 is not present + ret=1 +else + vers_min $L $bccmin + echo ld86 version $L + if [ $rc = 0 ]; then echo OKAY; else echo ERROR; ret=1; fi +fi + +echo +echo BCC version $bccmin or later is recommended +bcc -v 1>foo1 2>foo2 +B=`cat foo1 foo2 | grep version | cut -d " " -f 3` +rm -f foo1 foo2 +if [ -z "$B" ]; then + echo bcc is not present + echo You will not be able to make floppy2, diag2.img, or lilo.com +else + vers_min $B $bccmin + echo bcc version $B + if [ $rc = 0 ]; then echo OKAY; else echo ERROR; fi +fi +echo + +# +# Uncomment the line below to bypass all the checks +# +#exit 0 +exit $ret diff --git a/diagnose/GPLicence b/diagnose/GPLicence new file mode 100644 index 0000000..a43ea21 --- /dev/null +++ b/diagnose/GPLicence @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/diagnose/LGPLicence b/diagnose/LGPLicence new file mode 100644 index 0000000..482cd2b --- /dev/null +++ b/diagnose/LGPLicence @@ -0,0 +1,371 @@ +GNU Lesser Public License + + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence +the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your freedom to share and change it. By contrast, the + GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to + make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some specially designated software + packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use + it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is + the better strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are + designed to make sure that you have the freedom to distribute copies of free software (and charge for this service + if you wish); that you receive source code or can get it if you want it; that you can change the software and use + pieces of it in new free programs; and that you are informed that you can do these things. + + To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to + surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the + library or if you modify it. + + For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the + rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other + code with the library, you must provide complete object files to the recipients, so that they can relink them with the + library after making changes to the library and recompiling it. And you must show them these terms so they know + their rights. + + We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which + gives you legal permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the + library is modified by someone else and passed on, the recipients should know that what they have is not the + original version, so that the original author's reputation will not be affected by problems that might be introduced by + others. + + Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a + company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent + holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the + full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This + license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from + the ordinary General Public License. We use this license for certain libraries in order to permit linking those + libraries into non-free programs. + + When a program is linked with a library, whether statically or using a shared library, the combination of the two is + legally speaking a combined work, a derivative of the original library. The ordinary General Public License + therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public + License permits more lax criteria for linking other code with the library. + + We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than + the ordinary General Public License. It also provides other free software developers Less of an advantage over + competing non-free programs. These disadvantages are the reason we use the ordinary General Public License + for many libraries. However, the Lesser license provides advantages in certain special circumstances. + + For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain + library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the + library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, + there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free programs enables a greater number of people to + use a large body of free software. For example, permission to use the GNU C Library in non-free programs + enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating + system. + + Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user + of a program that is linked with the Library has the freedom and the wherewithal to run that program using a + modified version of the Library. + + The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the + difference between a "work based on the library" and a "work that uses the library". The former contains code + derived from the library, whereas the latter must be combined with the library in order to run. + + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND + MODIFICATION + + 0. This License Agreement applies to any software library or other program which contains a notice placed by the + copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General + Public License (also called "this License"). Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with + application programs (which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work which has been distributed under these terms. A + "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a + work containing the Library or a portion of it, either verbatim or with modifications and/or translated + straightforwardly into another language. (Hereinafter, translation is included without limitation in the term + "modification".) + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, + complete source code means all the source code for all modules it contains, plus any associated interface + definition files, plus the scripts used to control compilation and installation of the library. + + Activities other than copying, distribution and modification are not covered by this License; they are outside its + scope. The act of running a program using the Library is not restricted, and output from such a program is covered + only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing + it). Whether that is true depends on what the Library does and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any + medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice + and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; + and distribute a copy of this License along with the Library. + + You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty + protection in exchange for a fee. + + 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, + and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also + meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices stating that you changed the files and + the date of any change. + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms + of this License. + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an + application program that uses the facility, other than as an argument passed when the facility is + invoked, then you must make a good faith effort to ensure that, in the event an application does not + supply such function or table, the facility still operates, and performs whatever part of its purpose + remains meaningful. + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined + independent of the application. Therefore, Subsection 2d requires that any application-supplied + function or table used by this function must be optional: if the application does not supply it, the square + root function must still compute square roots.) + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not + derived from the Library, and can be reasonably considered independent and separate works in + themselves, then this License, and its terms, do not apply to those sections when you distribute them as + separate works. But when you distribute the same sections as part of a whole which is a work based + on the Library, the distribution of the whole must be on the terms of this License, whose permissions for + other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by + you; rather, the intent is to exercise the right to control the distribution of derivative or collective works + based on the Library. + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work + based on the Library) on a volume of a storage or distribution medium does not bring the other work + under the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given + copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the + ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the + ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not + make any other change in these notices. + + Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public + License applies to all subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or + executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete + corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 + above on a medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent + access to copy the source code from the same place satisfies the requirement to distribute the source code, even + though third parties are not compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by + being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative + work of the Library, and therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the + Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is + therefore covered by this License. Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for + the work may be a derivative work of the Library even though the source code is not. Whether this is true is + especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for + this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and + small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether + it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under + Section 6.) + + Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms + of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly + with the Library itself. + + 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the + Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, + provided that the terms permit modification of the work for the customer's own use and reverse engineering for + debugging such modifications. + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its + use are covered by this License. You must supply a copy of this License. If the work during execution displays + copyright notices, you must include the copyright notice for the Library among them, as well as a reference + directing the user to the copy of this License. Also, you must do one of these things: + + a) Accompany the work with the complete corresponding machine-readable source code for the + Library including whatever changes were used in the work (which must be distributed under Sections 1 + and 2 above); and, if the work is an executable linked with the Library, with the complete + machine-readable "work that uses the Library", as object code and/or source code, so that the user + can modify the Library and then relink to produce a modified executable containing the modified + Library. (It is understood that the user who changes the contents of definitions files in the Library will not + necessarily be able to recompile the application to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one + that (1) uses at run time a copy of the library already present on the user's computer system, rather than + copying library functions into the executable, and (2) will operate properly with a modified version of the + library, if the user installs one, as long as the modified version is interface-compatible with the version + that the work was made with. + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the + materials specified in Subsection 6a, above, for a charge no more than the cost of performing this + distribution. + + d) If distribution of the work is made by offering access to copy from a designated place, offer + equivalent access to copy the above specified materials from the same place. + + e) Verify that the user has already received a copy of these materials or that you have already sent this + user a copy. + + For an executable, the required form of the "work that uses the Library" must include any data and utility programs + needed for reproducing the executable from it. However, as a special exception, the materials to be distributed + need not include anything that is normally distributed (in either source or binary form) with the major components + (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself + accompanies the executable. + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not + normally accompany the operating system. Such a contradiction means you cannot use both them and the Library + together in an executable that you distribute. + + 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with + other library facilities not covered by this License, and distribute such a combined library, provided that the + separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and + provided that you do these two things: + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined + with any other library facilities. This must be distributed under the terms of the Sections above. + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the + Library, and explaining where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this + License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will + automatically terminate your rights under this License. However, parties who have received copies, or rights, from + you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you + permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do + not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you + indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or + modifying the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a + license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and + conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You + are not responsible for enforcing compliance by third parties with this License. + + 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited + to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict + the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so + as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a + consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free + redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you + could satisfy both it and this License would be to refrain entirely from distribution of the Library. + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the + section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest + validity of any such claims; this section has the sole purpose of protecting the integrity of the free software + distribution system which is implemented by public license practices. Many people have made generous + contributions to the wide range of software distributed through that system in reliance on consistent application of + that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other + system and a licensee cannot impose that choice. + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted + interfaces, the original copyright holder who places the Library under this License may add an explicit geographical + distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus + excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License + from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to + address new problems or concerns. + + Each version is given a distinguishing version number. If the Library specifies a version number of this License + which applies to it and "any later version", you have the option of following the terms and conditions either of that + version or of any later version published by the Free Software Foundation. If the Library does not specify a license + version number, you may choose any version ever published by the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are + incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free + Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our + decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of + promoting the sharing and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE + LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN + WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT + WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE + ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE + LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR + CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY + COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY + AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, + INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE + LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE + OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH + ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE + POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making + it free software that everyone can redistribute and change. You can do so by permitting redistribution under these + terms (or, alternatively, under the terms of the ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source + file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a + pointer to where the full notice is found. + + one line to give the library's name and an idea of what it does. + Copyright (C) year name of author + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Also add information on how to contact you by electronic and paper mail. + + You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright + disclaimer" for the library, if necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in + the library `Frob' (a library for tweaking knobs) written + by James Random Hacker. + + signature of Ty Coon, 1 April 1990 + Ty Coon, President of Vice + + That's all there is to it! \ No newline at end of file diff --git a/diagnose/Makefile b/diagnose/Makefile new file mode 100644 index 0000000..1139e20 --- /dev/null +++ b/diagnose/Makefile @@ -0,0 +1,118 @@ +# -*- makefile -*- +# Makefile for BCC tests + +# adding variables +include ../make.vars + +MODEL=s +CC = bcc -M$(MODEL) +CPP = gcc -E +CINCL = /usr/lib/bcc/include +AS = as86 +LINK = $(CC) -v +COPT = -ansi -I$(CINCL) -c -O -DDEBUG=0 +LOPT = -m >$*.map -M -d +AOPT = -0 -a -w +FD = msdos.b +FDSIZE = 1440 +MFILE=/tmp/liloboot +LOOP=/dev/loop5 + +.SUFFIXES: .com .S + +.c.o: + $(CC) $(COPT) -o $@ $< -A-l -A$*.lis + +.o.com: + $(LINK) $(LOPT) -o $@ $^ + +.s.o: + $(AS) $(AOPT) -l $*.lis -o $@ $< + +all: check test4d.com test4.com test5.com bootdiagnostic.b.gz + +check: + # You need the bcc compiler for some steps! + @if [ -x /usr/bin/bcc -o -x /usr/local/bin/bcc ]; then echo Okay; \ + else echo "*** WARNING ***"; \ + echo "You don't seem to have the 'bcc' compiler from the 'dev86' package. "; \ + echo "***************"; exit 1; \ + fi + +floppy: bootdiagnostic.b.gz + @echo + @echo Insert a blank, formatted, floppy into drive 0 + @echo "Press to continue, <^C> to abort ..." + @read + gzip -d >floppy.b + dd if=sector.b bs=2 skip=31 count=225 >>floppy.b + mount -t msdos -o loop=$(LOOP) bootdiagnostic.b $(MFILE) + dd if=floppy.b of=$(LOOP) bs=512 + chown 0.0 *.com + cp -ufv ../COPYING $(MFILE) + cp -ufv test4.com $(MFILE)/hipboot.sys + cp -ufv test4.com $(MFILE)/diag2sa.com + cp -ufv test4d.com $(MFILE)/diag2.com + if [ -f ../disk.b ]; then cp -ufv ../disk.b $(MFILE)/diag1.com; fi + umount $(MFILE) + rm -rf $(MFILE) + gzip -9 bootdiagnostic.b.gz + rm -f bootdiagnostic.b + +check2: + # You need root permissions for some steps! (Test with mkfs.msdos) + @if [ `which mkfs.msdos | grep -c mkfs` -eq 1 ]; then echo Okay; \ + else echo "*** WARNING ***"; \ + echo -n "You don't seem to have the commands 'mkfs.msdos'. "; \ + echo "Perhaps you are not ROOT ?"; \ + echo "***************"; exit 1; \ + fi + +test4.com: test4.o bios_start.o cprintf.o + +test5.com: test5.o bios_start.o cprintf.o + +sector.o: sector.s +test4.o: test4.c ../src/bdata.h +test5.o: test5.c ../src/bdata.h +cprintf.o: cprintf.c +bios_start.o: bios.c + bcc -c -u -I$(CINCL) -DL_bios_start -D__AS386_16__ -D__STANDALONE__ -o bios_start.o bios.c -v + +test4d.o: test4.c ../src/bdata.h + bcc -Md $(COPT) -o $@ $< + +test4d.com: test4d.o + bcc -Md $(LOPT) -o $@ $^ + +sector.s: sector.S + $(CPP) -traditional -o $@ $< + +sector.img: sector.o + ld86 -0 -s -o $@ $< + +sector.b: sector.img + dd if=$< of=$@ bs=32 skip=1 + +floppy.b: sector.b + dd if=sector.b bs=2 count=1 of=floppy.b + dd if=$(FD) bs=2 skip=1 count=30 >>floppy.b + dd if=sector.b bs=2 skip=31 count=225 >>floppy.b + +tidy: + rm -f *.map *.lis core + +clean: + rm -f *.o *.s *.img *.b *.com *.gz + +distclean: clean + rm -f *~ + diff --git a/diagnose/README b/diagnose/README new file mode 100644 index 0000000..d1fe4f0 --- /dev/null +++ b/diagnose/README @@ -0,0 +1,30 @@ +This directory contains the files for making the bootable diagnostic +diskette, version 2. They are released under the terms of the BSD licence, +contained in the file COPYING in the root LILO source directory. + + sector.S -- the MSDOS boot code which boots HIPBOOT.SYS + test4.c -- the actual diagnostic + + +Robert de Bath's "dev-0.16.0" package is REQUIRED to correctly make the +programs in this directory. The following sources are derived from his +package, are his property, and are released under the 'LGPLicence' contained +in this directory. + + bios.c -- modified source for the bios_start.o program + cprintf.c -- modified source for the standalone print routine + + +The files placed on the MSDOS floppy are as follows: + + test4d.com -- DOS version 2 of the diagnostic, runs under MSDOS; + useful for capturing output to a file, BUT output is + not guaranteed to be the same as the standalone + version 2 program + test4.com -- standalone version 2 of the diagnostic, bootable if + copied to 'hipboot.sys' + disk.com -- version 1 of the disk diagnostic, bootable if copied + to 'hipboot.sys' + + +(14-Jan-2002) -- jrc diff --git a/diagnose/README.diagnostic b/diagnose/README.diagnostic new file mode 100644 index 0000000..600168e --- /dev/null +++ b/diagnose/README.diagnostic @@ -0,0 +1,38 @@ + Notes for "bootdiagnostic.b.gz" + 03-May-2002 + + +The lilo boot disk diagnostic (version 2.1) is distributed in binary +form in the file: bootdiagnostic.b.gz + +In order to create the bootable diagnostic floppy from this file, issue the +following commands: + + gunzip bootdiagnostic.b.gz + dd if=bootdiagnostic.b of=/dev/fd0 + +The entire 1.44M floppy disk will be written. This is an msdos filesystem +diskette with the files: + + disk.com version 1 of the bootable lilo diagnostic + test4.com version 2 + test4d.com version 2, MSDOS executable + hipboot.sys copy of test4.com + +Whichever file is copied to 'hipboot.sys' will be booted by the special +bootloader on the floppy. As distributed, version 2, or 'test4.com' is +the file copied to 'hipboot.sys'. + +The MSDOS executable is of some use if you can boot a bare DOS system. It +may be executed from the DOS prompt to capture the output to a file; viz., + + A> test4d.com >log.txt + +(you'll have to hit a lot of CR's to get past all the pauses) + +The output from test4d.com is not necessarily the same as from the booted +file 'test4.com', since MSDOS intercepts and modifies the responses to +certain bios calls. User beware. + +--John Coffman + diff --git a/diagnose/bios.c b/diagnose/bios.c new file mode 100644 index 0000000..05d929d --- /dev/null +++ b/diagnose/bios.c @@ -0,0 +1,289 @@ +/* Copyright (C) 1996 Robert de Bath + * This file is part of the Linux-8086 C library and is distributed + * under the GNU Library General Public License. + */ + +/* Modified 14-Jan-2002 by John Coffman for inclusion + * in the set of LILO diagnostics. This code is the property of Robert + * de Bath, and is used with his permission. + */ +#define MSDOS_TOO 1 +#define SAVE_SP 1 + + +#if !__FIRST_ARG_IN_AX__ +#ifdef __AS386_16__ +#ifdef __STANDALONE__ + +#include +#include +#include + +#ifdef L_bios_start + +char ** environ = { 0 }; +int errno; + +void (*__cleanup)() = 0; + +#asm + .data +export ___argr +___argr: + .word 0,0,0,0,0,0,0,0 ! A struct REGS +export ___argseg +___argseg: + .word 0,0,0,0 ! A struct SREGS +___argr_end: +defarg: + .word boot_str, 0 +boot_str: + .asciz "boot" +loop_save: + .word 0 + + .text +#if SAVE_SP +sssp_save: + .word 0,0 ! dirty area if startup SS & SP are to be seen +#endif +export ___cstartup ! Crt0 startup +___cstartup: + cli +#if MSDOS_TOO + seg es + cmp word ptr [0],#$20CD ! "int 20h" at psp: ES:0000 + jne not_dos + push ax ! DOS provides us a stack + mov ax,cs + add ax,#$10 ! bump CS by 0x10 + push ax + mov ax,#is_dos ! resume address + push ax + retf ! continue at next instruction +is_dos: + pop ax ! restore saved AX + seg cs + mov word ptr [iret_ins-2],es ! patch return to int 20h exit +not_dos: +#endif +#if SAVE_SP + seg cs + mov [sssp_save],sp + seg cs + mov [sssp_save+2],ss ! save startup SS:SP +#endif + mov sp,cs + add sp,#__segoff + mov ss,sp + mov sp,#___argr_end + + push ds +#if SAVE_SP + seg cs + push [sssp_save+2] ! startup SS +#else + push ss +#endif + push cs + push es + +#if SAVE_SP + seg cs + push [sssp_save] ! startup SP to flags +#else + pushf ! to flags, but why? +#endif + push bp ! to cflags + + push di ! save the startup registers + push si ! pushes are shorter than mov mem,reg + push dx + push cx + push bx + push ax + + xor sp,sp ! maximum stack + push bp ! perhaps bp should be zeroed first + sti ! now turn on interrupts + + push ss ! set up the ES and DS + pop ds ! equal to the SS + +zap_bss: ! Clear the BSS + push ds + pop es ! ES now = DS + mov di,#__edata + mov cx,#__end + sub cx,di + xor ax,ax + cld + rep + stosb + + push [_environ] + mov ax,#defarg ! Don`t define __mkargv, standalone programs don`t + push ax ! get any arguments. + mov ax,#1 + push ax + + mov bx,#auto_start ! Pointer to first autostart function +auto_run: + mov [loop_save],bx + mov bx,[bx] + test bx,bx + jz no_entry + call bx ! Call the function +no_entry: + mov bx,[loop_save] + inc bx ! next + inc bx + jmp auto_run ! And round for the next. + +call_exit: ! Last item called by above. + pop bx ! Be tidy. + push ax ! At the end the last called was main() push it`s + call _exit ! return val and call exit(); +bad_exit: + jmp bad_exit ! Exit returned !! + + loc 2 + .word _main ! Segment 2 is the trailing pointers, main and the + .word call_exit ! routine to call exit. +data_start: + + .text +export _exit +_exit: ! exit(rv) function + mov bx,sp + push [bx+2] ! Copy the `rv` for the exit fuctions. + mov bx,[___cleanup] ! Call exit, normally this is `__do_exit` + test bx,bx + je no_clean ! But it`s default is null + call bx +no_clean: + inc sp + inc sp + +export __exit +__exit: + xor ax,ax + mov es,ax + seg es + mov [$E6*4+2],cs ! + seg es + mov [$E6*4],#iret_ins + dec ax ! AX = $FFFF + int $E6 ! Try to exit DOSEMU + ! If we get here we`re not in dosemu. + seg es + mov [$472],#$1234 ! Warm reboot. + + jmpi $0000,$FFFF ! DO NOT SEPARATE +iret_ins: ! THIS LABEL FROM THE jmpi ... + iret ! interrupt return!! not retf (==reti) + +export ___mkargv ! must resolve this reference +___mkargv: + ret + +#endasm + +#endif + +/****************************************************************************/ + +#ifdef L_bios_write +write(fd,buf,len) +int fd,len; +char * buf; +{ + register int v, c; + if(fd == 1 || fd == 2) + { + for(v=len; v>0; v--) + { + c= *buf++; + if( c == '\n') bios_putc('\r'); + bios_putc(c); + } + return len; + } + return (*__files)(CMD_WRITE, fd, buf, len); +} +#endif + +/****************************************************************************/ + +#ifdef L_bios_read +read(fd,buf,len) +int fd,len; +char * buf; +{ + if(fd == 0) return bios_rdline(buf, len); + return (*__files)(CMD_READ, fd, buf, len); +} +#endif + +/****************************************************************************/ + +#ifdef L_bios_lseek +long +lseek(fd, offt, whence) +int fd, whence; +long offt; +{ + if( fd >= 0 && fd <= 2 ) errno = ESPIPE; + else + { + if( (*__files)(CMD_LSEEK, fd, &offt, whence) >= 0 ) + return offt; + } + return -1L; +} +#endif + +/****************************************************************************/ + +#ifdef L_bios_close +close(fd) +int fd; +{ + if( fd >= 0 && fd <= 2 ) errno = ENOSYS; + else + return (*__files)(CMD_CLOSE, fd); + return -1; +} +#endif + +/****************************************************************************/ + +#ifdef L_bios_nofiles +int (*__files)() = __nofiles; + +int __nofiles(cmd, fd, buf, len) +int cmd, fd, len; +char * buf; +{ + errno = EBADF; + return -1; +} + +#endif + +/****************************************************************************/ + +#ifdef L_bios_isatty +isatty(fd) +int fd; +{ + if( fd >= 0 && fd <= 2 ) return 1; + return 0; +} +#endif + +/****************************************************************************/ + +#endif +#endif +#endif diff --git a/diagnose/cprintf.c b/diagnose/cprintf.c new file mode 100644 index 0000000..f0b9f54 --- /dev/null +++ b/diagnose/cprintf.c @@ -0,0 +1,248 @@ +/* Copyright (C) 1996 Robert de Bath + * This file is part of the Linux-8086 C library and is distributed + * under the GNU Library General Public License. + */ + +/* Modified 14-Jan-2002 by John Coffman for inclusion + * in the set of LILO diagnostics. This code is the property of Robert + * de Bath, and is used with his permission. + */ + +#include +/* #include */ +#define ASM_CVT 1 + +#if __MSDOS__ +#include +#define putch(ch) fputc(ch,stdout) +#else +#define putch(ch) bios_putc(ch) +#endif + +static unsigned char * __numout(long i, int base); + +int cprintf(char * fmt, ...) +{ + register int c; + int count = 0; + int type, base; + long val; + char * cp; + char padch=' '; + int minsize, maxsize; + va_list ap; + + va_start(ap, fmt); + + while(c=*fmt++) + { + count++; + if(c!='%') + { + if (c=='\n') putch('\r'); + putch(c); + } + else + { + type=1; + padch = *fmt; + maxsize=minsize=0; + if(padch == '-') fmt++; + + for(;;) + { + c=*fmt++; + if( c<'0' || c>'9' ) break; + minsize*=10; minsize+=c-'0'; + } + + if( c == '.' ) + for(;;) + { + c=*fmt++; + if( c<'0' || c>'9' ) break; + maxsize*=10; maxsize+=c-'0'; + } + + if( padch == '-' ) minsize = -minsize; + else + if( padch != '0' ) padch=' '; + + if( c == 0 ) break; + if(c=='h') + { + c=*fmt++; + type = 0; + } + else if(c=='l') + { + c=*fmt++; + type = 2; + } + + switch(c) + { + case 'x': base=16; type |= 4; if(0) { + case 'o': base= 8; type |= 4; } if(0) { + case 'u': base=10; type |= 4; } if(0) { + case 'd': base=-10; } + switch(type) + { + case 0: val=va_arg(ap, short); break; + case 1: val=va_arg(ap, int); break; + case 2: val=va_arg(ap, long); break; + case 4: val=va_arg(ap, unsigned short); break; + case 5: val=va_arg(ap, unsigned int); break; + case 6: val=va_arg(ap, unsigned long); break; + default:val=0; break; + } + cp = __numout(val,base); + if(0) { + case 's': + cp=va_arg(ap, char *); + } + count--; + c = strlen(cp); + if( !maxsize ) maxsize = c; + if( minsize > 0 ) + { + minsize -= c; + while(minsize>0) { putch(padch); count++; minsize--; } + minsize=0; + } + if( minsize < 0 ) minsize= -minsize-c; + while(*cp && maxsize-->0 ) + { + putch(*cp++); + count++; + } + while(minsize>0) { putch(' '); count++; minsize--; } + break; + case 'c': + putch(va_arg(ap, int)); + break; + default: + putch(c); + break; + } + } + } + va_end(ap); + return count; +} + +static char nstring[]="0123456789ABCDEF"; + +#if ASM_CVT==0 +#define NUMLTH 11 + +static unsigned char * +__numout(long i, int base) +{ + static unsigned char out[NUMLTH+1]; + int n; + int flg = 0; + unsigned long val; + + if (base<0) + { + base = -base; + if (i<0) + { + flg = 1; + i = -i; + } + } + val = i; + + out[NUMLTH] = '\0'; + n = NUMLTH-1; + do + { + out[n--] = nstring[val % base]; + val /= base; + } + while(val); + if(flg) out[n--] = '-'; + return &out[n+1]; +} +#else + +#asm +! numout.s +! +#if 0 +.data +_nstring: +.ascii "0123456789ABCDEF" +.byte 0 +#endif + +.bss +___out lcomm $C + +.text +___numout: +push bp +mov bp,sp +push di +push si +add sp,*-4 +mov byte ptr -8[bp],*$0 ! flg = 0 +mov si,4[bp] ; i or val.lo +mov di,6[bp] ; i or val.hi +mov cx,8[bp] ; base +test cx,cx ! base < 0 ? +jge .3num +neg cx ! base = -base +or di,di ! i < 0 ? +jns .5num +mov byte ptr -8[bp],*1 ! flg = 1 +neg di ! i = -i +neg si +sbb di,*0 +.5num: +.3num: +mov byte ptr [___out+$B],*$0 ! out[11] = nul +mov -6[bp],*$A ! n = 10 + +.9num: +!!! out[n--] = nstring[val % base]; +xor dx,dx +xchg ax,di +div cx +xchg ax,di +xchg ax,si +div cx +xchg ax,si ! val(new) = val / base + +mov bx,dx ! dx = val % base + +mov al,_nstring[bx] +mov bx,-6[bp] +dec word ptr -6[bp] +mov ___out[bx],al + +mov ax,si +or ax,di ! while (val) +jne .9num + +cmp byte ptr -8[bp],*$0 ! flg == 0 ? +je .Dnum + +mov bx,-6[bp] +dec word ptr -6[bp] +mov byte ptr ___out[bx],*$2D ! out[n--] = minus + +.Dnum: +mov ax,-6[bp] +add ax,#___out+1 + +add sp,*4 +pop si +pop di +pop bp +ret +#endasm + +#endif diff --git a/diagnose/sector.S b/diagnose/sector.S new file mode 100644 index 0000000..f5baa98 --- /dev/null +++ b/diagnose/sector.S @@ -0,0 +1,395 @@ +; sector.S -- boot program named: HIPBOOT.SYS +; from any MSDOS floppy diskette +; +; Copyright 2001-2005 John Coffman. +; All rights reserved. +; +; Licensed under the terms contained in the file 'COPYING' in the LILO +; source directory. +; +#define DEBUG 0 /* enables loading .EXE for codeview debugging */ +#define OPTION 1 /* enables fast directory search exit */ +#define LARGE 0 /* enables loading code >32K */ +#define TESTFAT 0 /* enables testing for FAT12/FAT16 */ +#define SYSSEG 0x1000 /* load at a fixed address SYSSEG:0000 */ + +;;directory_entry + block 0 + +dir_filename: .blkb 8 +dir_filename_ext: .blkb 3 +dir_attribute: .blkb 1 +dir_Reserved: .blkb 10 +dir_time_updated: .blkw 1 +dir_date_updated: .blkw 1 +dir_cluster: .blkw 1 +dir_file_size: .blkw 2 + +dir_entry_size: + endb + +base equ 0x7C00 +buffer equ 0x0500 ;scratch disk buffer + + + + + +;contAddr equ SS:[bp-4] ;dword DO NOT MOVE +;dataBase equ SS:[bp-8] ;dword DO NOT MOVE +;FATshift equ SS:[bp-9] ; byte +;diskNumber equ SS:[bp-10] ; byte DO NOT MOVE +;dirBase equ SS:[bp-14] ;dword +;nDirSec equ SS:[bp-16] ;word +;FATsector equ SS:[bp-18] ;word +;FATnibbles equ SS:[bp-20] ;word + + +stacksize equ 20 + + + block -stacksize + +FATnibbles: .blkw 1 +FATsector: .blkw 1 +nDirSec: .blkw 1 +dirBase: .blkw 2 +diskNumber: .blkb 1 ; DO NOT MOVE +FATshift: .blkb 1 +dataBase: .blkw 2 ; DO NOT MOVE +contAddr: .blkw 2 ; DO NOT MOVE + +stack: /* this had better be zero */ + + .blkb 3 ; jump instruction + .blkb 8 ; system ID string +secSiz: .blkw 1 ; bytes_per_sector +secPerCl: .blkb 1 ; sectors_per_cluster +FATbase: .blkw 1 ; reserved_sectors +nFATs: .blkb 1 ; FAT_copies +nDirEnt: .blkw 1 ; directory_entries +totSec: .blkw 1 ; total_sectors +media: .blkb 1 ; media_descriptor +secPerFAT: .blkw 1 ; sectors_per_FAT +nSEC: .blkw 1 ; sectors_per_track +nSides: .blkw 1 ; heads_per_cylinder +hidSec: .blkw 2 ; hidden_sectors + .blkb 22 +fs_id: .blkb 8 ; filesystem_id + + endb + +.globl _main + org 0 +; jump instruction +_main: jmp beginning + nop + +system_id_string: .ascii "DISKBOOT" ; 8 chars + +msdos_boot_data: + +bytes_per_sector: dw 512 +sectors_per_cluster: db 1 +reserved_sectors: dw 1 +FAT_copies: db 2 +directory_entries: dw 224 ; 112 & 224 are typical +total_sectors: dw 2880 +media_descriptor: db 0xf0 ; 0f9H, 0f0h, 0fAh, etc. +sectors_per_FAT: dw 9 +sectors_per_track: dw 18 +heads_per_cylinder: dw 2 +hidden_sectors: dd 0 ; always zero for floppies +total_sectors_2: dd 0 ; actual value if 'total_sectors' is zero +BPB_rsvd: dw 0 ; reserved +vol_id_marker: db 0x29 ; marker? for volume ID +serial_number: dd 0 ; volume unique ID number + +volume_label: .ascii "NO NAME " ; 11 chars +filesystem_id: .ascii "FAT12 " ; 8 chars + + + +beginning: + xor ax,ax + mov bp,#base ;origin at 7C00 +#if DEBUG + xor dl,dl + mov ax,ss +#endif + cli + mov ss,ax + lea sp,(bp-stacksize) + sti + + cld + mov es,ax ;both at zero + mov ds,ax +#if DEBUG + xor ax,ax +#endif + mov diskNumber(bp),dl ;save disk number + int 0x13 ;reset the disk system + jc error +noError: + mov ax,#0x0403 ;shift=4, nibbles=3 -- FAT12 +fat12 equ *-2 +#if TESTFAT + cmp byte ptr fs_id+4(bp),#$36 ; '6' + jne isFAT12 + mov ax,#0004 ;shift=0, nibbles=4 -- FAT16 +isFAT12: +#endif + mov FATshift(bp),ah ;set shift count + cbw + mov FATnibbles(bp),ax ;set number of nibbles per FAT index entry + + mov al,nFATs(bp) ;number of FATs +; cbw + mul word ptr secPerFAT(bp) ;* sectors per FAT + add ax,FATbase(bp) ;+ FAT base + adc dx,#0 ; SI = 0 + mov dirBase(bp),ax + mov dirBase+2(bp),dx ;save directory base + + mov dataBase(bp),ax + mov dataBase+2(bp),dx ;still forming Data base + + mov ax,#dir_entry_size + mul word ptr nDirEnt(bp) + mov bx,secSiz(bp) + add ax,bx + dec ax + div bx ;get base of data +#if DEBUG + add bx,bx +#endif +#if SYSSEG + mov contAddr(bp),ss ; SS = 0 + mov word ptr contAddr+2(bp),#SYSSEG ; begin at SYSSEG:0000 +#else + add bx,#base + mov contAddr(bp),bx ;save continuation address + mov contAddr+2(bp),es +#endif + mov nDirSec(bp),ax ;save no. of Directory sectors + add dataBase(bp),ax + adc word ptr dataBase+2(bp),#0 ; SI = 0 + +; scan the directory for the required bootstrap file + + mov ax,dirBase(bp) ; starting disk block in DX:AX + mov dx,dirBase+2(bp) +dirscan: + mov bx,#buffer ; ES:BX points to buffer + call ReadSector + mov di,bx + mov bx,secSiz(bp) +dirscan1: + + call S21 +tofind: .ascii "HIPBOOT SYS" + +error: + call write + db 13,10,10 + .ascii 'Non-SYSTEM disk or disk error' + db 13,10 + .ascii 'Press any key to re-boot ...' + db 0 +done: + xor ax,ax + int 0x16 ;wait for keypress + int 0x19 ;re-boot + + +S21: pop si + push di + mov cx,#11 ;name length + rep + seg cs + cmpsb ;byte ptr CS:[si],ES:[di] + pop di + je hipboot +#if OPTION + cmp byte ptr (di),#0 + je endOfDirectory +#endif + lea di,dir_entry_size(di) + sub bx,#dir_entry_size + jg dirscan1 + + inc ax + dec word ptr nDirSec(bp) + jnz dirscan +endOfDirectory: +error2: + jmp error + +ReadSector: + push dx ;save registers + push cx + push ax + + add ax,hidSec(bp) ;+ Hidden Sectors + adc dx,hidSec+2(bp) ; + xchg ax,dx + push dx ;AX=dividend-hi, DX=dividend-low + cwd + div word ptr nSEC(bp) ;DX=remainder, AX=quo-hi + + pop cx + xchg ax,cx ;CX=quo-hi, DX:AX=dividend-low + div word ptr nSEC(bp) ;remainder is sector number, zero based + inc dx ;DX=sector#, CX:AX=quotient + push dx ;save sector number + + mov dx,cx ;DX:AX=quotient + div word ptr nSides(bp) ;DX = side, AX = Cyl No. + mov cl,#6 + shl ah,cl ;AH is hi-bits of cyl no. + pop cx ;restore sector number + or cl,ah + mov ch,al + mov dh,dl + mov dl,diskNumber(bp) +retry: + mov ax,#0x0201 ;BIOS read 1 sector + int 0x13 +#if DEBUG + jnc readcont + xor ax,ax + int 0x13 + jmp retry +readcont: +#endif +error3: + jc error2 + pop ax + pop cx + pop dx + ret + +hipboot: + mov cx,dir_cluster(di) + mov word ptr FATsector(bp),#-1 ;no FAT sector present + les bx,contAddr(bp) ;get continue address +nextCluster: + call readCluster + push es + push bx + mov ax,FATnibbles(bp) ;get number of nibbles in a FAT entry + mul cx ;DX:AX is nibble index + shr dx,1 + rcr ax,1 ;DX:AX is byte index, CF=odd/even + pushf ;save CF + mov si,secSiz(bp) ;sector size to SI + div si ;AX is rel. sector, DX is byte offset + mov di,dx ;DI is byte offset + push ds + pop es + mov bx,#buffer + call ForceFatSector ;AX is rel. FATsector to force + mov dl,(bx+di) ;get low byte + dec si + inc di + and di,si ;mask DI byte offset + jnz sameFATsec + inc ax + call ForceFatSector +sameFATsec: + mov dh,(bx+di) + popf ;restore shift flag + mov cl,FATshift(bp) + jc shiftIt + shl dx,cl +shiftIt: + shr dx,cl + mov si,#-1 + shr si,cl ;si is EOF + and si,#-8 ;0xFFF8 + mov cx,dx ;CX is next cluster + pop bx + pop es + + cmp cx,si + jb nextCluster + + mov ch,media(bp) ;pass on media descriptor + lea sp,diskNumber(bp) + pop dx + pop bx ;low order start of data + pop ax ;high order start of data +#if DEBUG + jmp done +#endif + retf + + +readCluster: + push cx + mov al,secPerCl(bp) ;sectors per cluster + cbw + xchg ax,cx ;AX=cluster #, CX=# sectors per cluster + dec ax + dec ax ;base it at 0, instead of 2 + mul cx + add ax,dataBase(bp) ;offset onto disk + adc dx,dataBase+2(bp) +readClus1: + call ReadSector ;read a sector + add bx,secSiz(bp) ;update address +#if LARGE + jnc readClus2 + mov si,es ;get segment register + add si,#0x1000 ;REAL mode increment + mov es,si ;update segment register +#else + jc error3 ;segment overflow +#endif +readClus2: + inc ax ;update sector number + jnz readClus3 + inc dx +readClus3: + loop readClus1 + + pop cx + ret + + +ForceFatSector: + push dx + cmp ax,FATsector(bp) + je gotFATsector + mov FATsector(bp),ax + add ax,FATbase(bp) + xor dx,dx + call ReadSector +gotFATsector: + pop dx + ret + + + +write: + pop si ;get character string pointer +write1: + seg cs + lodsb ;byte ptr CS:[si] + test al,al + jz return + mov ah,#0x0e + mov bx,#7 + int 0x10 + jmp write1 +return: + jmp si + + org 510 + dw 0xAA55 ; BOOT_SIGNATURE + +endup: +theend: + + diff --git a/diagnose/test4.c b/diagnose/test4.c new file mode 100644 index 0000000..60383bc --- /dev/null +++ b/diagnose/test4.c @@ -0,0 +1,1255 @@ +/* test4.c */ +/* + Copyright 2001-2005 John Coffman. + All rights reserved. + + Licensed under the terms contained in the file 'COPYING' in the LILO + source directory. + +*/ +#include +#include "../src/bdata.h" + +#define DISK_VERSION "2.4" + +#if __MSDOS__==0 +#define putch bios_putc +#define getch bios_getc +#define printf cprintf +#define CR 13 +#else +#include +#define putch(c) fputc((c),stdout) +#define getch getchar +#define CR 10 +#endif + +#define CTRL_C 03 +#define SPACER "\f\n" +#define SEQ 0x3C4 + +#define FS_REG 0x80 + +#ifndef EDD_SUBSET +#define EDD_SUBSET 4 +#define EDD_LOCK 2 +#define EDD_PACKET 1 +#endif +#ifndef SECTOR_SIZE +#define SECTOR_SIZE 512 +#endif +#define nelem(a) (sizeof(a)/sizeof((a)[0])) + +typedef unsigned char byte; +typedef unsigned short word; +typedef unsigned long dword; + +extern union REGS __argr; +extern struct SREGS __argseg; + +union REGS reg, oreg; +struct SREGS sreg; +int last_good_disk; +int video_1 = 0xF00; +int fs_mod = 0; +int num_hd = BD_MAX_HARD; +int errno; +dword hma; /* highest memory address */ +struct { + long start, start_hi, + length, length_hi, + mtype; + } mem_map; +#define E820_MAGIC 0x534D4150 + +struct gdt_entry { + unsigned short limit; + unsigned short base01; + unsigned char base2; + unsigned char dtype; /* 0x93 for data */ + unsigned char limit2; /* limit in low nibble, granularity & 32-bit in high nibble */ + unsigned char base3; +}; + +struct gdt_entry gdt[6]; + +static +int get_fs(void) +{ +#asm + mov ax,fs +#endasm +} + +static +int set_fs(int val) +{ + int i = val; +#asm + mov ax,4[bp] + mov fs,ax +#endasm + return i; +} + +static +int check_fs(void) +{ + int ret = 0; + +#if DEBUG>=2 + printf("#"); +#endif + if (get_fs() != FS_REG) { + fs_mod = ret = 1; + printf("\nThe FS register has been modified.\n"); + set_fs(FS_REG); + } + return ret; +} + +static +int hicopy (unsigned long to, unsigned long from, int wcount) +{ + int status; + unsigned char save; + + memset(gdt, 0, sizeof(gdt)); + gdt[2].limit = gdt[3].limit = 0xFFFF; + gdt[2].dtype = gdt[3].dtype = 0x93; + + gdt[2].base01 = from; + gdt[2].base2 = from>>16; + gdt[2].base3 = from>>24; + + gdt[3].base01 = to; + gdt[3].base2 = to>>16; + save = gdt[3].base3 = to>>24; + + segread(&sreg); + sreg.es = sreg.ds; + reg.h.ah = 0x87; + reg.x.cx = wcount; + reg.x.si = gdt; +/*** gdt[3].base3 &= 0; / crosstalk */ + int86x(0x15, ®, &oreg, &sreg); + + status = oreg.h.ah; + if (oreg.x.cflag) status |= 0x100; + if (save!=gdt[3].base3) status |= 0x200; + errno |= status; + return status; +} + +unsigned long linear(void *ptr) +{ + segread(&sreg); + return ((unsigned long)sreg.ds<<4) + (unsigned int)ptr; +} + +word hipeekw(long address) +{ + word temp; + hicopy(linear(&temp), address, 1); + return temp; +} + +int hipokew(long address, word value) +{ + return hicopy(address, linear(&value), 1); +} + +#if __MSDOS__==0 +static +bios_putc0(int c) +{ + union REGS reg; + if (c=='\f') { +#if 0 + reg.h.ah = 0x0F; + int86(0x10, ®, ®); + reg.h.ah = 0; + int86(0x10, ®, ®); +#else + static word upper = 0; + if (!upper) { + __set_es(0x40); /* address BIOS data area */ + upper = __peek_es(0x84); + if (upper < 24 || upper > 50) upper = 24; + upper <<= 8; + reg.h.ah = 0x0F; /* get video mode */ + int86(0x10, ®, ®); + upper |= (reg.h.ah-1); + } + reg.x.ax = 0x0600; /* blank screen area */ + reg.h.bh = 7; + reg.x.cx = 0x0000; + reg.x.dx = upper; + int86(0x10, ®, ®); + reg.h.ah = 2; /* set cursor position */ + reg.h.bh = 0; + reg.x.dx = 0x0000; + int86(0x10, ®, ®); +#endif + } else { + reg.h.al = c; + reg.h.ah = 14; + reg.x.bx = 7; + int86(0x10, ®, ®); + } +} + +void bios_putc(char c) +{ +static int col; + + switch(c) { + case '\t': + do bios_putc(' '); while(col&7); + break; + case '\n': bios_putc0('\r'); + /* fall into CR */ + case '\f': + case '\r': col=0; + default: + bios_putc0(c); + if (c>=' ' && c<0177) col++; + } +} +#endif + +static +int a20(void) /* Return 1 if a20 is enabled, 0 if disabled */ +{ +#asm + push ds + push es + xor ax,ax + mov es,ax + dec ax + mov ds,ax + cli + mov al,[0x10] + mov ah,al + seg es + cmp al,[0] + jne a20_8 + xor al,#0x5A + mov [0x10],al + seg es + cmp al,[0] + jne a20_8 + xor al,al + jmp a20_9 +a20_8: + mov al,#1 +a20_9: + mov [0x10],ah + cbw + sti + pop es + pop ds +#endasm +} + +static +void sizeit(unsigned long sectors) +{ +static char suf[] = "KMGT"; + int fract; + char *cp; + +/* print disk size in K,M,G,T */ + sectors /= 2; + cp = suf; + if (sectors <= 999) { + printf("%ld%c", sectors, *cp); + return; + } + cp++; + while (sectors > 999999) { + sectors /= 1000; + cp++; + } + if (sectors > 2999) { + sectors *= 1024; + sectors /= 1000; + } + sectors += 5; /* round decimal part */ + sectors /= 10; + fract = sectors % 100; + sectors /= 100; + printf("%ld.%02d%c", sectors, fract, *cp); +} + +static +void banner(char *version) +{ + printf( "\n\n\n" +">>>> Disk Detection and Parameter Display <<<<\n\n\n" +"Version %s, Copyright (C) 1999-2005 John Coffman \n" +"Portions Copyright (C) 1996-2001 Robert de Bath, used with permission\n" +"Re-use and redistribution rights set forth in the file \"COPYING\".\n\n", + version); +} + +static +void testDX(void) +{ +#if __MSDOS__==0 + printf("Boot reported from DX = 0x%04x (boot device is 0x%02x in DL)\n", __argr.x.dx, __argr.h.dl); + if (__argr.h.dl == 0 || __argr.h.dl == 1) { + printf("If you booted from the %s floppy drive, then this is correct.", + __argr.h.dl ? "second" : "first"); + } else if (__argr.h.dl >= 0x80 && __argr.h.dl <= 0x8f) { + printf("If you booted from %s hard drive, then this is correct.", + __argr.h.dl==0x80 ? "the first" : + __argr.h.dl==0x81 ? "the second" : "a" ); + } else { + printf("It looks like the BIOS failed to report the boot device in DL.\n"); + } +#endif +} + + + +static +int smsw(void) +{ +#asm + smsw ax +#endasm +} + +static +long e820(long b) +{ +#asm + push bp + mov bp,sp + push ds + pop es + mov di,#_mem_map + mov eax,#0xE820 + mov ebx,[bp+4] + mov ecx,#20 + mov edx,#E820_MAGIC + stc + int 0x15 + jc e820_err + cmp eax,#E820_MAGIC + mov ax,#-2 + jne e820_exit + cmp ecx,#20 + mov ax,#-3 + jne e820_exit + push ebx + pop ax + pop dx + jmp e820_exit +e820_err: + mov ax,#-1 +e820_err2: + cwd +e820_exit: + leave +#endasm +} + +static +int inb(int port) +{ +#asm + mov bx,sp + mov dx,[bx+2] + in al,dx + xor ah,ah +#endasm +} + +static +int outb(int port, int data) +{ +#asm + mov bx,sp + mov dx,[bx+2] + mov ax,[bx+4] + out dx,al +#endasm +} + +static +void v86test(void) +{ +static char s1[] = "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"; + + if (smsw()&1) { + printf(s1); + printf( "!!! *** Warning: DOS is not running in REAL mode *** !!!\n" + "!!! *** Reported results may not be accurate *** !!!\n" ); + printf(s1); + } +} + +static +void yesno(int i) +{ + printf("%s\n", i?"yes":"no"); +} + +static +void decimal(unsigned long value) +{ + unsigned int v[4]; + int i; + for (i=0; i<4; i++) { + v[i] = value % 1000; + value /= 1000; + } + if (v[3]) printf("%d,%03d,%03d,%03d", v[3], v[2], v[1], v[0]); + else if (v[2]) printf("%d,%03d,%03d", v[2], v[1], v[0]); + else if (v[1]) printf("%d,%03d", v[1], v[0]); + else printf("%d", v[0]); +} + +static +void print_regs(union REGS *reg) { + printf("AX=%04x BX=%04x CX=%04x DX=%04x SI=%04x DI=%04x\n", + reg->x.ax, reg->x.bx, reg->x.cx, reg->x.dx, reg->x.si, reg->x.di); +} + +static +void print_sregs(struct SREGS *sreg) { + printf("DS=%04x ES=%04x CS=%04x SS=%04x\n", + sreg->ds, sreg->es, sreg->cs, sreg->ss); +} + +static +int is_msdos(void) +{ +#if __MSDOS__ + return 1; +#else + return (__argseg.es+0x10 == __argseg.cs); +#endif +} + +static +void pause(void) +{ + char ch; +/* Must be standalone */ + check_fs(); + printf("\n\n\nHit to continue, <^C> to quit ..."); + do { + ch = getch(); + if (ch==CTRL_C) exit(0); +#if DEBUG>=1 + if (ch != CR) printf(" %o", ch); +#endif + } while (ch != CR); + printf("\n"); +} + +static +void video_fix(void) +{ + outb(SEQ, 1); + video_1 = inb(SEQ+1); +/* dirty hack for DELL Dimension 4300 computers */ + printf("\f\n"); +} + +static void print_carry(int flag) +{ + printf(" Carry = %d\n", flag); +} + +static +void get_equip_cfg(void) +{ +static char *vmode[4] = { "reserved", "40x25 color", + "80x25 color", "80x25 monochrome" }; + word flag; + int n; + + pause(); + printf(SPACER + "Int 11h\t\t\t\t[PC][AT][PS/2]\n" + "Get Equipment Configuration\n\n" + "Returns:\n "); + flag = int86(0x11, ®, ®); + print_regs(®); + + printf("\nHas floppy drive(s): "); yesno(flag&1); + printf("Has math coprocessor: "); yesno(flag&2); + printf("Has pointing device: "); yesno(flag&4); + printf("Initial video mode: %s\n", vmode[(flag>>4)&3]); + n = flag&1 ? ((flag>>6)&3)+1 : 0; + if (n) printf("Floppy drives installed: %d\n", ((flag>>6)&3)+1 ); + n = (flag>>9)&7; + printf("Serial interfaces: %d\n", n); + printf("Has game adapter: "); yesno(flag&4096); + n = (flag>>14)&3; + printf("Parallel interfaces: %d\n", n); +} + +static +void get_conv_mem(void) +{ + int mem; + + pause(); + printf(SPACER + "Int 12h\t\t\t\t[PC][AT][PS/2]\n" + "Get Conventional Memory Size\n\n" + "Returns:\n "); + mem = int86(0x12, ®, ®); + print_regs(®); + printf("\nThere is %dK of low memory. EBDA size = %dK EBDA starts at 0x%lx\n", + mem, 640-mem, (long)mem<<10 ); + printf("\n(The A20 line is %sabled.)\n", a20() ? "en" : "dis"); +} + +static +void mov_ext_mem(void) +{ + word status, temp, vtemp; + dword high, veryhigh; + + pause(); + segread(&sreg); + sreg.es = sreg.ds; + printf(SPACER + "Int 15h Function 87h\t\t[AT][PS/2]\n" + "Move Extended Memory Block\n\n" + "Call With:\n "); + print_sregs(&sreg); + reg.x.ax = 0x8700; + reg.x.cx = 1; + reg.x.si = &gdt; + printf(" "); + print_regs(®); + + high = 1024L*(1024L+128)-2; /* 1Mb + 128K */ + veryhigh = high+16L*1024L*1024L; + if (veryhigh >= hma) veryhigh=0; +#define WORDA 0xA5C6 +#define WORDB 0x6CA5 + + errno = 0; + temp = hipeekw(high); + status = hipokew(high, WORDA^temp); + printf("\nReturns:\n "); + print_sregs(&sreg); + printf(" "); + print_regs(&oreg); + print_carry((status>>8) & 1); + + printf("\nR/W test at address %08lx ", high); + if (hipeekw(high) != (WORDA^temp)) errno |= 0x400; + hipokew(high, temp); + if (hipeekw(high) != temp) errno |= 0x800; + printf("%ssuccessful\n", errno ? "un" : ""); + if (errno) printf("Error code = 0x%04x\n", errno); + + if (veryhigh) { + printf("R/W test at address %08lx ", veryhigh); + vtemp = hipeekw(veryhigh); + hipokew(veryhigh, WORDB^vtemp); + if (hipeekw(high) != temp) errno |= 0x200; + if (hipeekw(veryhigh) != (WORDB^vtemp)) errno |= 0x400; + hipokew(veryhigh, vtemp); + if (hipeekw(high) != temp) errno |= 0x200; + if (hipeekw(veryhigh) != vtemp) errno |= 0x800; + printf("%ssuccessful\n", errno ? "un" : ""); + if (errno) printf("Error code = 0x%04x\n", errno); + } + if (errno & 0xE00) + printf("\nThere is crosstalk between the two addresses\n" + "The function does not support full 386 32-bit addressing.\n"); +} + +#define NAREA 32 + +static +void get_ext_mem(void) +{ + long b, b1; + dword t; + int i; + + pause(); + printf(SPACER + "Int 15h Function E820h\t\t[EXT]\n" + "Get Memory Map\n\n" + "Call With:\n" + " EAX=0000E820 EBX=00000000 ECX=00000014 EDX=%lx\n\n", + E820_MAGIC ); + + b = e820(b1=i=0); + if (b > 0) { + dword start[NAREA], length[NAREA]; + int j, k, ovlap; + + /* 00 000000000000 000000000000 (1) avail */ + printf("EBX Start Length Type\n\n"); + do { + printf(" %02lx %04hx%08lx %04hx%08lx (%d) %s\n", b1, + (short)mem_map.start_hi, mem_map.start, + (short)mem_map.length_hi, mem_map.length, (int)mem_map.mtype, + mem_map.mtype == 1 ? "available" : + mem_map.mtype == 2 ? "reserved" : + mem_map.mtype == 3 ? "ACPI" : + mem_map.mtype == 4 ? "NVS" : "unknown-reserved"); + if (mem_map.mtype==1 && mem_map.start_hi==0 && mem_map.start<=1024L*1024L) { + if (mem_map.length_hi==0) hma = mem_map.start+mem_map.length; + else hma = 0xFFF00000L; + } + if (i < NAREA) { + start[i] = *(dword*)(((char*)&mem_map.start)+1); + length[i] = *(dword*)(((char*)&mem_map.length)+1); + } + i++; + b = e820(b1=b); + } while (b1 > 0); + printf("\n"); + if (i > NAREA) { + i = NAREA; + } + ovlap = 0; + for (k=0; k= e && ee > e)) { + printf("*** Memory areas %d and %d overlap ***\n", k, j); + ovlap++; + } + } + } + if (!ovlap) printf("No memory areas overlap\n"); + } else { + printf("Returns:\n"); + if (b==-1) print_carry(1); + else if (b==-2) printf(" EAX=\n"); + else if (b==-3) printf(" EAX=%lx EBX=******** ECX=\n", E820_MAGIC); + else printf(" EAX=%lx EBX=00000000\n", E820_MAGIC); + printf("\nFunction is not supported.\n"); + } + + + pause(); + printf(SPACER + "Int 15h Function E801h\t\t[EXT]\n" + "Get Extended Memory Blocks\n\n" + "Call With:\n "); + reg.x.ax = 0xE801; + print_regs(®); + int86(0x15, ®, &oreg); + printf("\nReturns:\n "); + print_regs(&oreg); + print_carry(oreg.x.cflag); + + if (!oreg.x.cflag) { + printf("\nNumber of 1K blocks between 1M and 16M: %u\n", oreg.x.ax); + printf( "Number of 64K blocks above 16M: %u\n", oreg.x.bx); + t = 1024L*(oreg.x.ax+1024); + t += 64L*1024L*oreg.x.bx; + if (!hma) hma = t; + else if (hma!=t) printf("A different amount of memory is reported by this function\n"); + } + else printf("\nFunction is not supported.\n"); + + pause(); + printf(SPACER + "Int 15h Function 88h\t\t[AT][PS/2]\n" + "Get Extended Memory Size\n\n" + "Call With:\n "); + reg.x.ax = 0x8800; + print_regs(®); + int86(0x15, ®, ®); + printf("\nReturns:\n "); + print_regs(®); + printf("\nThere is "); + decimal( (unsigned long)reg.x.ax ); + printf("K of extended memory.\n"); + + t = (reg.x.ax + 1024L) * 1024L; + if (!hma) hma = t; +} + +static +int get_video_mode(void) +{ + int m, row, col; + + pause(); + printf(SPACER + "Int 10h Function 0Fh\t\t[MDA][CGA][PCjr]\n" + "Get Video Mode\t\t\t[EGA][MCGA][VGA]\n\n" + "Call With:\n "); + reg.x.ax = 0x0F00; + reg.x.bx = -1; + print_regs(®); + int86(0x10, ®, ®); + printf("\nReturns:\n "); + print_regs(®); + m = reg.h.al; + __set_es(0x40); /* address BIOS data area */ + reg.h.bl = row = __peek_es(0x84); + printf("Fetch 0040:0084 (rows-1) to BL\n" + "--> "); + print_regs(®); + col = reg.h.ah; + printf("\nVideo mode = 0x%02x (%dx%d %s)\n", m, col, row+1, + m==7 ? "monochrome" : m==3 ? "color" : "unknown"); + printf("Active display page = %d\n", (int)reg.h.bh); + + return !(m==7 || col<80); +} + +static +int get_cfg_info(void) +{ + pause(); + printf(SPACER + "Int 10h Function 12h\t\t[EGA][VGA]\n" + "Subfunction 10h\n" + "Get Configuration Information\n\n" + "Call With:\n "); + reg.x.ax = 0x1200; + reg.x.bx = 0xFF10; + print_regs(®); + int86(0x10, ®, ®); + printf("\nReturns:\n "); + print_regs(®); + if (reg.h.bh > 1) return 0; + + printf("\n%s display\n", reg.h.bh==0 ? "Color" : reg.h.bh==1 ? "Monochrome" : "Unknown"); + printf("EGA memory = %dK\n", reg.h.bl <= 3 ? (reg.h.bl+1)*64 : 0); + printf("Feature bits = 0x%02x\n", (int)reg.h.ch); + printf("Configuration switch = 0x%02x\n", (int)reg.h.cl); + + return 1; +} + +static +int enable_refresh(void) +{ + pause(); + printf(SPACER + "Int 10h Function 12h\t\t[VGA]\n" + "Subfunction 36h\n" + "Enable Screen Refresh\n\n" + "Call With:\n "); + reg.x.ax = 0x1200; + reg.x.bx = 0x0036; + reg.x.cx = 0; + reg.x.dx = 0x80; + print_regs(®); + int86(0x10, ®, &oreg); + printf("\nReturns:\n "); + print_regs(&oreg); + + printf("\n"); + printf("Function is %ssupported.\n", oreg.h.al==0x12 ? "" : "NOT "); + if (oreg.x.dx != reg.x.dx || oreg.x.cx != reg.x.cx || oreg.x.si != reg.x.si + || oreg.x.di != reg.x.di) + printf("Error: Register(s) are not preserved.\n"); + reg.x.dx = 0; + + return 1; +} + +static +int get_comb_code(void) +{ +static char *dcode[] = { "none", "Monochrome", "CGA", "reserved", + "EGA (color)", "EGA (mono)", "PGA", "VGA (monochrome)", "VGA (color)", + "reserved", "MCGA (digital color)", "MCGA (monochrome)", "MCGA (color)", + "UNKNOWN" }; + int code; + + pause(); + printf(SPACER + "Int 10h Function 1Ah\t\t[PS/2]\n" + "Subfunction 00h\n" + "Get Display Combination Code\n\n" + "Call With:\n "); + reg.x.ax = 0x1A00; + reg.x.bx = reg.x.cx = 0; + print_regs(®); + int86(0x10, ®, ®); + printf("\nReturns:\n "); + print_regs(®); + if (reg.h.al != 0x1A) return 0; + + code = reg.h.bl <= 12 ? reg.h.bl : 13; + printf("\nActive display: %s\n", dcode[code]); + code = reg.h.bh <= 12 ? reg.h.bh : 13; + printf("Inactive display: %s\n", dcode[code]); + + return (reg.h.bl>=4); +} + +static void print_io_status(int status) +{ +static char *errmsg[] = {"no error", "invalid command", /* 0-1 */ + "address mark not found", "disk write-protected", /* 2-3 */ + "sector not found", "reset failed", "floppy disk removed", /* 4-6 */ + "bad parameter table", "DMA overrun", /* 7-8 */ + "DMA crossed 64k boundary", "bad sector flag", /* 9-A */ + "bad track flag", "media type not found", /* B-C */ + "invalid number of sectors on format", /* D */ + "control data address mark detected", /* E */ + "DMA arbitration level out of range", /* F */ + "uncorrectable CRC or ECC data error", /* 10 */ + "ECC corrected data error" /* 11 */ + }; + char *err; + + if (status <= 0x11) err = errmsg[status]; + else switch(status) { + case 0x20: err = "controller failure"; break; + case 0x40: err = "seek failed"; break; + case 0x80: err = "disk timeout (failed to respond)"; break; + case 0xAA: err = "drive not ready"; break; + case 0xBB: err = "undefined error"; break; + case 0xCC: err = "write fault"; break; + case 0xE0: err = "status register error"; break; + case 0xFF: err = "sense operation failed"; break; + default: err = "???"; + } + printf(" BIOS error code = 0x%02x (%s)\n", status, err); +} + +static +void do_edd(int dev) +{ + int m, subset; + + pause(); + printf(SPACER + "Int 13h Function 41h\t\t[EDD]\n" + "Check EDD Extensions Present (device %02xh)\n\n" + "Call With:\n ", dev); + reg.x.ax = 0x41ED; + reg.x.bx = 0x55AA; + reg.x.dx = dev; + print_regs(®); + int86(0x13, ®, &oreg); + printf("\nReturns:\n "); + print_regs(&oreg); + print_carry(oreg.x.cflag); + m = 0; + if (oreg.x.cflag) print_io_status(oreg.h.ah); + else if (oreg.x.bx == 0xAA55 && (oreg.x.cx&EDD_SUBSET+EDD_LOCK+EDD_PACKET)) { + m = 1; + printf("\nEnhanced Disk Drive support: "); yesno(subset=oreg.x.cx&EDD_SUBSET); + printf("Drive locking and ejecting: "); yesno(oreg.x.cx&EDD_LOCK); + printf("Device access using packet calls: "); yesno(oreg.x.cx&EDD_PACKET); + printf("EDD extensions version%s (hex code %02xh)\n", + oreg.h.ah==0x30 ? " 3.0" : oreg.h.ah==0x21 ? " 1.1" : "" ,oreg.h.ah); + } + + if (m) { + struct EDDparam { + short size; /* size of this structure */ + short flags; /* information flags */ + long pcyls; /* number of physical cylinders */ + long pheads; /* number of physical heads/cylinder */ + long psects; /* number of physical sectors/track */ + unsigned /* number of physical sectors on volume */ + long sectors_lo, sectors_hi; /* this is 8 bytes long */ + short sec_size; /* number of bytes per sector */ + unsigned + long params; /* EDD config params (valid only if EDD_SUBSET) */ + } eddparam; + + pause(); + m = !!(oreg.x.cx&EDD_SUBSET) && oreg.h.ah>=0x21; + printf(SPACER + "Int 13h Function 48h\t\t[EDD]\n" + "EDD Get Drive Parameters (device %02xh)\n\n" + "Call With:\n ", dev); + eddparam.size = sizeof(eddparam); + reg.x.si = &eddparam; /* DS:SI points to buffer */ + reg.x.ax =0x48C6; + segread(&sreg); + print_sregs(&sreg); + printf(" "); + print_regs(®); + int86x(0x13, ®, ®, &sreg); + printf("\nReturns:\n "); + print_sregs(&sreg); + printf(" "); + print_regs(®); + print_carry(reg.x.cflag); +#define fl eddparam.flags + printf("\nDMA boundary errors handled transparently: "); yesno(fl&1); + printf("Geometry supplied: "); yesno(fl&2); + printf("Device is removable: "); yesno(fl&4); + printf("Device supports write with verify: "); yesno(fl&8); + if (fl&4) { + printf("Device has change-line support: "); yesno(fl&16); + printf("Device is lockable: "); yesno(fl&32); + printf("No media present; geometry is set to maximum: "); yesno(fl&64); + } + printf("Disk geometry ("); + if (fl&2) { + printf("C:H:S) = %ld:%ld:%ld (", eddparam.pcyls, eddparam.pheads, + eddparam.psects); + } + if (eddparam.sectors_hi == 0) + decimal(eddparam.sectors_lo); + else printf("0x%x%08x", eddparam.sectors_hi, eddparam.sectors_lo); + printf(" sectors)\n"); +#undef fl + m=1; + if (m) { + static char *cfunc[] = { + "Enable Prefetch", + "Disable Prefetch", + "Set Maximum PIO Mode", + "Set PIO Mode 0", + "Set Default PIO Mode", + "Enable DMA Maximum Mode", + "Disable DMA" + }; + m = 0; /* start with subfn 0 */ + pause(); + printf(SPACER + "Int 13h Function 4Eh\t\t[EDD]\n" + "Subfunction 0?h\n" + "EDD Set Hardware Configuration (device %02xh)\n\n" + "Call With:\n ", dev); + reg.x.ax = 0x4E00; + reg.h.dl = dev; + print_regs(®); + int86(0x13, ®, ®); + printf("\nReturns:\n "); + print_regs(®); + print_carry(reg.x.cflag); + printf("\n"); + + for (m=0; m 63) printf("BIOS BUG!!! sectors returned as zero; 64 assumed\n"); + if (h > 255) printf("BIOS BUG!!! heads > 255; BIOS is not IBM compatible\n"); + if (dev & 0x80) { + if (dev == 0x80) num_hd = oreg.h.dl; + do_edd(dev); + } + } + } + } + + return m; +} + +static +int do_rw(int tries) +{ + int code; + + while (tries--) { + int86x(0x13, ®, &oreg, &sreg); + if (oreg.x.cflag == 0 && oreg.x.ax == 0x0001) return 0; + code = oreg.h.ah; + oreg.x.ax = 0; + int86(0x13, &oreg, &oreg); + } + return code; +} + +static +void do_get_pt(int dev) +{ + int m; + char buf[SECTOR_SIZE]; + + printf("Get partition table (device = 0x%x): ", dev); + segread(&sreg); + sreg.es = sreg.ss; + reg.x.ax = 0x0201; + reg.x.bx = buf; + reg.x.cx = 1; + reg.x.dx = dev & 0xFF; + m = do_rw(5); + if (m) print_io_status(m); + else printf(" okay"); + printf("\n"); + check_fs(); +} + +static +void do_vesa(void) +{ + int i; + char vesa[512]; + + pause(); + printf(SPACER + "Int 10h Function 4Fh\t\t[VESA]\n" + "Subfunction 00h\n" + "Check VESA Extensions Present\n\n" + "Call With:\n "); + reg.x.ax = 0x4F00; + reg.x.bx = 0; + segread(&sreg); + sreg.es = sreg.ss; + reg.x.di = &vesa[0]; + print_sregs(&sreg); + printf(" "); + print_regs(®); + int86x(0x10, ®, &oreg, &sreg); + printf("\nReturns:\n "); + print_sregs(&sreg); + printf(" "); + print_regs(&oreg); + if (oreg.x.ax != 0x004F) { + printf("\nVESA BIOS extensions not present\n"); + return; + } + if (strncmp(vesa, "VESA", 4)) { + printf("\nVESA signature not found\n"); + return; + } + vesa[4] = 0; + printf("\n\"%s\" BIOS extensions present\n", vesa); + + pause(); + printf(SPACER + "Int 10h Function 4Fh\t\t[VESA]\n" + "Subfunction 01h\n" + "Get VESA Mode Information 1\n\n" + "Call With:\n "); + reg.x.ax = 0x4F01; + reg.x.cx = 0x101; + segread(&sreg); + sreg.es = sreg.ss; + reg.x.di = &vesa[0]; + print_sregs(&sreg); + printf(" "); + print_regs(®); + int86x(0x10, ®, &oreg, &sreg); + printf("\nReturns:\n "); + print_sregs(&sreg); + printf(" "); + print_regs(&oreg); + i = *(int*)vesa; /* get mode bits */ + printf("\nMode bits: 0x%04x\n", i); + printf("640x480x256 mode supported: "); + yesno(!(0x19 & ~i)); + + pause(); + printf(SPACER + "Int 10h Function 4Fh\t\t[VESA]\n" + "Subfunction 01h\n" + "Get VESA Mode Information 3\n\n" + "Call With:\n "); + reg.x.ax = 0x4F01; + reg.x.cx = 0x103; + segread(&sreg); + sreg.es = sreg.ss; + reg.x.di = &vesa[0]; + print_sregs(&sreg); + printf(" "); + print_regs(®); + int86x(0x10, ®, &oreg, &sreg); + printf("\nReturns:\n "); + print_sregs(&sreg); + printf(" "); + print_regs(&oreg); + i = *(int*)vesa; /* get mode bits */ + printf("\nMode bits: 0x%04x\n", i); + printf("800x600x256 mode supported: "); + yesno(!(0x19 & ~i)); +} + +void main(void) +{ + int m, i, dev; + + set_fs(FS_REG); +#if DEBUG>=1 + printf("FS=%04x\n", get_fs()); + pause(); +#endif + + if (!is_msdos()) { +/** atexit(pause); **/ + video_fix(); /* for Dumb DELL computers */ + } +#if DEBUG>=1 && __MSDOS__==0 + printf("Beginning of '___cstartup'\n"); + print_regs(&__argr); + printf("DS=%04x ES=%04x CS=%04x SS=%04x SP=%04x BP=%04x\n", + __argseg.ds, __argseg.es, __argseg.cs, __argseg.ss, + __argr.x.flags, __argr.x.cflag); + + segread(&sreg); + printf("\nBeginning of '_main'\n"); + check_fs(); + print_sregs(&sreg); +#endif + check_fs(); + banner(DISK_VERSION); + check_fs(); + v86test(); + testDX(); +#if DEBUG>=2 + sizeit((long)40*2*9); putch('\n'); + sizeit((long)80*2*15); putch('\n'); + sizeit((long)80*2*18); putch('\n'); + sizeit((long)80*2*36); putch('\n'); + sizeit((long)1024*255*63); putch('\n'); + sizeit((long)24000*512); putch('\n'); +#endif + get_equip_cfg(); + get_conv_mem(); + hma = 0; + get_ext_mem(); + if (hma>1024L*1024L) mov_ext_mem(); + m = get_video_mode(); + if (m) m = get_cfg_info(); + if (m) m = enable_refresh(); + if (m) m = get_comb_code(); + if (m) do_vesa(); +#if DEBUG>=3 + printf("\n\nm=%x\n", m); +#endif + dev = 0; m = 1; + for (i=BD_MAX_FLOPPY; i && m;) { + m = do_disk(dev); + ++dev; + if (--i == 0 && (dev & 0x80)==0) { + dev = 0x80; + i = BD_MAX_HARD; + } + if ((dev & 0x7F) >= num_hd) m = 0; + } + pause(); + printf(SPACER); + for (dev = 0x80; dev <= last_good_disk; dev++) do_get_pt(dev); + + if (!is_msdos()) { + printf("\n\nInitial SEQ reg 1: 0x%02x\n", video_1); + } + printf("The FS register was %smodified during the tests.\n", + fs_mod ? "" : "NOT "); + pause(); +} diff --git a/diagnose/test5.c b/diagnose/test5.c new file mode 100644 index 0000000..d285187 --- /dev/null +++ b/diagnose/test5.c @@ -0,0 +1,366 @@ +/* test5.c */ +/* + Copyright (C) 2004 John Coffman. + All rights reserved. + + Licensed under the terms contained in the file 'COPYING' in the LILO + source directory. + +*/ +#include +#include +#include "../src/bdata.h" + +#define DISK_VERSION "3.0" + +#if __MSDOS__==0 +#define putch bios_putc +#define getch bios_getc +#define printf cprintf +#define CR 13 +#else +#include +#define putch(c) fputc((c),stdout) +#define getch getchar +#define CR 10 +#endif + +#define CTRL_C 03 +#define SPACER "\f\n" + + +#ifndef EDD_SUBSET +#define EDD_SUBSET 4 +#define EDD_LOCK 2 +#define EDD_PACKET 1 +#endif +#ifndef SECTOR_SIZE +#define SECTOR_SIZE 512 +#endif + +#define CL_MAGIC_ADDR 0x20 +#define CL_MAGIC 0xa33f +#define CL_OFFSET 0x22 +#define CL_LENGTH 256 + +typedef unsigned char byte; +typedef unsigned short word; +typedef unsigned long dword; + +extern union REGS __argr; +extern struct SREGS __argseg; + +union REGS reg, oreg; +struct SREGS sreg; + +int num_hd = BD_MAX_HARD; +int errno; +enum {RD=0, WR=1}; + +struct Buffer { + int dirty, device; + union { + byte sector[SECTOR_SIZE]; + word wsector[SECTOR_SIZE/2]; + dword dsector[SECTOR_SIZE/4]; + } x; +} buffer; + +unsigned long linear(void *ptr) +{ + segread(&sreg); + return ((unsigned long)sreg.ds<<4) + (unsigned int)ptr; +} + + +#if __MSDOS__==0 +static +bios_putc0(int c) +{ + union REGS reg; + if (c=='\f') { + reg.h.ah = 0x0F; + int86(0x10, ®, ®); + reg.h.ah = 0; + int86(0x10, ®, ®); + } else { + reg.h.al = c; + reg.h.ah = 14; + reg.x.bx = 7; + int86(0x10, ®, ®); + } +} + +void bios_putc(char c) +{ +static int col; + + switch(c) { + case '\t': + do bios_putc(' '); while(col&7); + break; + case '\n': bios_putc0('\r'); + /* fall into CR */ + case '\f': + case '\r': col=0; + default: + bios_putc0(c); + if (c>=' ' && c<0177) col++; + } +} +#endif + +static +void sizeit(unsigned long sectors) +{ +static char suf[] = "KMGT"; + int fract; + char *cp; + +/* print disk size in K,M,G,T */ + sectors /= 2; + cp = suf; + if (sectors <= 999) { + printf("%ld%c", sectors, *cp); + return; + } + cp++; + while (sectors > 999999) { + sectors /= 1000; + cp++; + } + if (sectors > 2999) { + sectors *= 1024; + sectors /= 1000; + } + sectors += 5; /* round decimal part */ + sectors /= 10; + fract = sectors % 100; + sectors /= 100; + printf("%ld.%02d%c", sectors, fract, *cp); +} + +static +void banner(char *version) +{ + printf( "\n\n\n" +">>>> Disk Maintenance Tools <<<<\n\n\n" +"Version %s, Copyright (C) 2004 John Coffman \n" +"Portions Copyright (C) 1996-2001 Robert de Bath, used with permission\n" +"Re-use and redistribution rights set forth in the file \"COPYING\".\n\n", + version); +} + + + +static +int inb(int port) +{ +#asm + mov bx,sp + mov dx,[bx+2] + in al,dx + xor ah,ah +#endasm +} + +static +int outb(int port, int data) +{ +#asm + mov bx,sp + mov dx,[bx+2] + mov ax,[bx+4] + out dx,al +#endasm +} + +static +void yesno(int i) +{ + printf("%s\n", i?"yes":"no"); +} + +static +void decimal(unsigned long value) +{ + unsigned int v[4]; + int i; + for (i=0; i<4; i++) { + v[i] = value % 1000; + value /= 1000; + } + if (v[3]) printf("%d,%03d,%03d,%03d", v[3], v[2], v[1], v[0]); + else if (v[2]) printf("%d,%03d,%03d", v[2], v[1], v[0]); + else if (v[1]) printf("%d,%03d", v[1], v[0]); + else printf("%d", v[0]); +} + +static +void print_regs(union REGS *reg) { + printf("AX=%04x BX=%04x CX=%04x DX=%04x SI=%04x DI=%04x\n", + reg->x.ax, reg->x.bx, reg->x.cx, reg->x.dx, reg->x.si, reg->x.di); +} + +static +void print_sregs(struct SREGS *sreg) { + printf("DS=%04x ES=%04x CS=%04x SS=%04x\n", + sreg->ds, sreg->es, sreg->cs, sreg->ss); +} + +static +int is_msdos(void) +{ +#if __MSDOS__ + return 1; +#else + return (__argseg.es+0x10 == __argseg.cs); +#endif +} + +static +void pause(void) +{ + char ch; +/* Must be standalone */ + printf("\n\n\nHit to continue, <^C> to quit ..."); + do { + ch = getch(); + if (ch==CTRL_C) exit(0); +#if DEBUG>=1 + if (ch != CR) printf(" %o", ch); +#endif + } while (ch != CR); + printf("\n"); +} + +static +void video_fix(void) +{ +/* dirty hack for DELL Dimension 4300 computers */ + printf("\f\n"); +} + + +static +void setup(int rval) +{ + segread(&sreg); + sreg.es = sreg.ds; /* as a general rule */ + memset(®,rval,sizeof(reg)); + memset(&oreg,rval,sizeof(oreg)); +} + + + + +static +int peekw_es(int addr) +{ + union { + char ch[2]; + int w; + } tem; + tem.ch[0] = __peek_es(addr); + tem.ch[1] = __peek_es(addr+1); + return tem.w; +} + + +static void get_cmdline(char *cp) +{ + word addr; + int ch; + + __set_es(__argseg.ds); + if (peekw_es(CL_MAGIC_ADDR) == CL_MAGIC) { + addr = peekw_es(CL_OFFSET); + do { + ch = __peek_es(addr++); + } while (ch && ch != '='); + do { + *cp++ = ch = __peek_es(addr++); + } while (ch); + } + else *cp = 0; +} + +static +int num_hard_disks(void) +{ + setup(0); + reg.h.ah = 8; + reg.h.dl = 0x80; + int86(0x13, ®, &oreg); + return oreg.x.cflag ? 0 : (int)oreg.h.dl; +} + +static +int disk_rw0(int bios, int rw, void *buffer) +{ + int err = 1; + int errcnt = 5; + int code; + while (err && errcnt) { + setup(0); + reg.h.ah = 2 + (rw & !DEBUG); + reg.h.al = 1; + reg.x.cx = 1; /* sector=0 is sect=1, hd=0, cyl=0 */ + reg.h.dh = 0; + reg.h.dl = bios; + reg.x.bx = (word)buffer; + /* ES is set == DS */ + int86x(0x13, ®, &oreg, &sreg); + code = oreg.h.ah; + if ((err = (oreg.x.cflag || oreg.h.ah))) { + setup(0); + reg.h.dl = bios; + if (bios & 0x80) reg.h.ah = 0x0D; + int86(0x13, ®, &oreg); + --errcnt; + } + } /* while (err && errcnt) */ + if (err) { + printf("Disk error on 0x%02x, AH = 0x%02x\n", bios, code); + exit(1); + } + return code; +} + +void disk_data(int bios) +{ + if (!disk_rw0(bios, RD, buffer.x.sector)) { + printf(" %02x %08lx\n", bios, buffer.x.dsector[110]); + } +} + +void main(void) +{ + int m, i, dev; + char cp[CL_LENGTH]; + + if (!is_msdos()) { + video_fix(); /* for Dumb DELL computers */ + } +#if DEBUG>=1 && __MSDOS__==0 + printf("Beginning of '___cstartup'\n"); + print_regs(&__argr); + printf("DS=%04x ES=%04x CS=%04x SS=%04x SP=%04x BP=%04x\n", + __argseg.ds, __argseg.es, __argseg.cs, __argseg.ss, + __argr.x.flags, __argr.x.cflag); + + segread(&sreg); + printf("\nBeginning of '_main'\n"); + print_sregs(&sreg); +#endif + banner(DISK_VERSION); + get_cmdline(cp); + printf("Command line: '%s' time=%ld\n", cp, time(NULL)); + num_hd = num_hard_disks(); + printf("The BIOS reports %d hard disks.\n", num_hd); + for (i=0; i../doc/README || { rm -f ../doc/README; exit 1; } + +html: user.ps tech.ps + latex2html -split 2 -link 2 -toc_depth 2 user + latex2html -split 1 -link 1 -toc_depth 1 tech + +again: + $(PDFLATEX) user + $(PDFLATEX) tech + +tidy: + rm -f *~ *.toc *.aux *.log *.out + +clean: tidy + rm -f *.ps *.dvi *.pdf + rm -Rf user tech + +distclean: clean + + +dummies: + for n in $(IMAGES); do echo '(omitted)' >$$n; done diff --git a/doc/README b/doc/README new file mode 100644 index 0000000..31b5ec7 --- /dev/null +++ b/doc/README @@ -0,0 +1,56 @@ +Generating the README +===================== + +In order to (re)generate the plain ASCII documentation that is found in +lilo/README, Perl 4 or 5 must be installed on your system. +Just type + +make ../README + +to perform the conversion. Note that fairly large amounts of virtual memory +(16 MB or more) are allocated during the process. + + +Printing the documentation +========================== + +You need the following programs to generate a printable file from the +LaTeX and FIG sources: + + - LaTeX + - fig2dev from the transfig package (optional) + +The LaTeX translations of the FIG files are already included in the +distribution, so you can print the documentation without fig2dev. +WARNING: 'make distclean' removes those pre-built LaTeX files. + +You can also omit all drawings by typing make dummies . The drawings +are only necessary when processing the technical overview document. + +To run LaTeX just type + +make + +LaTeX issues many "Overfull \hbox" warnings. They can be safely ignored. +LaTeX will be run repeatedly until it stops issuing the message +LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right. + +Finally, you have to convert the device-independent file doc.dvi to +something your printer understands. The actual command to perform this +depends on your local installation. Example: + +dvips user | lpr + +(Another way is to use GhostScript. To generate HP DeskJet output by +converting the DVI file to PostScript as an intermediate step, use this +command + +dvips -r1 -f1 user | gs -q -sDEVICE=deskjet -sOutputFile=/dev/lp1 - + +gs -h lists all configured drivers.) + +If you don't have access to LaTeX but if you can print PostScript, you +should get the file(s) lilo...ps.gz from the same place +where you've obtained lilo..tar.gz That file contains the +document user.tex ( = u) or tech.tex ( = t) already translated +to PostScript. diff --git a/doc/bootloader.fig b/doc/bootloader.fig new file mode 100644 index 0000000..b6d2e44 --- /dev/null +++ b/doc/bootloader.fig @@ -0,0 +1,53 @@ +#FIG 2.1 +80 2 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 269 209 339 139 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 269 219 339 289 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 269 224 339 329 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 269 229 339 369 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 199 239 199 199 279 199 279 239 9999 9999 +2 1 1 1 -1 0 0 0 4.000 7 0 0 + 339 314 419 314 9999 9999 +2 1 1 1 -1 0 0 0 4.000 7 0 0 + 339 354 419 354 9999 9999 +2 2 0 1 -1 0 0 0 0.000 0 0 0 + 419 234 419 394 339 394 339 234 419 234 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 349 254 269 214 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 339 169 419 169 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 339 182 339 199 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 419 199 419 179 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 339 179 339 89 419 89 419 179 9999 9999 +2 1 0 1 -1 0 0 0 0.000 7 0 0 + 199 239 279 239 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 339 129 419 129 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 269 204 339 99 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 339 274 419 274 9999 9999 +4 0 5 10 0 -1 0 0.00000 0 7 36 354 409 boot.b +4 0 1 10 0 -1 0 0.00000 0 9 34 359 249 Primary +4 0 1 10 0 -1 0 0.00000 0 7 47 354 264 boot loader +4 0 1 10 0 -1 0 0.00000 0 7 47 354 344 boot loader +4 0 1 10 0 -1 0 0.00000 0 9 41 354 329 Secondary +4 0 5 10 0 -1 0 0.00000 0 7 18 364 199 map +4 0 1 10 0 -1 0 0.00000 0 9 25 359 144 Image +4 0 1 10 0 -1 0 0.00000 0 9 46 349 159 descriptors +4 0 1 10 0 -1 0 0.00000 0 7 57 344 119 command line +4 0 1 10 0 -1 0 0.00000 0 7 32 359 104 Default +4 0 1 10 0 -1 0 0.00000 0 7 47 204 219 Boot sector diff --git a/doc/bootloader.tex b/doc/bootloader.tex new file mode 100644 index 0000000..beb693e --- /dev/null +++ b/doc/bootloader.tex @@ -0,0 +1,58 @@ +\setlength{\unitlength}{0.01250000in}% +% +\begingroup\makeatletter\ifx\SetFigFont\undefined +% extract first six characters in \fmtname +\def\x#1#2#3#4#5#6#7\relax{\def\x{#1#2#3#4#5#6}}% +\expandafter\x\fmtname xxxxxx\relax \def\y{splain}% +\ifx\x\y % LaTeX or SliTeX? +\gdef\SetFigFont#1#2#3{% + \ifnum #1<17\tiny\else \ifnum #1<20\small\else + \ifnum #1<24\normalsize\else \ifnum #1<29\large\else + \ifnum #1<34\Large\else \ifnum #1<41\LARGE\else + \huge\fi\fi\fi\fi\fi\fi + \csname #3\endcsname}% +\else +\gdef\SetFigFont#1#2#3{\begingroup + \count@#1\relax \ifnum 25<\count@\count@25\fi + \def\x{\endgroup\@setsize\SetFigFont{#2pt}}% + \expandafter\x + \csname \romannumeral\the\count@ pt\expandafter\endcsname + \csname @\romannumeral\the\count@ pt\endcsname + \csname #3\endcsname}% +\fi +\fi\endgroup +\begin{picture}(224,323)(198,429) +\thinlines +\put(270,630){\vector( 1, 1){ 70}} +\put(270,620){\vector( 1,-1){ 70}} +\put(270,615){\vector( 2,-3){ 70}} +\put(270,610){\vector( 1,-2){ 70}} +\put(200,600){\line( 0, 1){ 40}} +\put(200,640){\line( 1, 0){ 80}} +\put(280,640){\line( 0,-1){ 40}} +\multiput(340,525)(7.61905,0.00000){11}{\line( 1, 0){ 3.810}} +\multiput(340,485)(7.61905,0.00000){11}{\line( 1, 0){ 3.810}} +\put(340,445){\framebox(80,160){}} +\put(350,585){\vector(-2, 1){ 80}} +\multiput(340,670)(7.61905,0.00000){11}{\line( 1, 0){ 3.810}} +\multiput(340,657)(0.00000,-6.80000){3}{\line( 0,-1){ 3.400}} +\multiput(420,640)(0.00000,8.00000){3}{\line( 0, 1){ 4.000}} +\put(340,660){\line( 0, 1){ 90}} +\put(340,750){\line( 1, 0){ 80}} +\put(420,750){\line( 0,-1){ 90}} +\put(200,600){\line( 1, 0){ 80}} +\put(340,710){\line( 1, 0){ 80}} +\put(270,635){\vector( 2, 3){ 70}} +\put(340,565){\line( 1, 0){ 80}} +\put(355,430){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{tt}boot.b}}} +\put(360,590){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Primary}}} +\put(355,575){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}boot loader}}} +\put(355,495){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}boot loader}}} +\put(355,510){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Secondary}}} +\put(365,640){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{tt}map}}} +\put(360,695){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Image}}} +\put(350,680){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}descriptors}}} +\put(345,720){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}command line}}} +\put(360,735){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Default}}} +\put(205,620){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Boot sector}}} +\end{picture} diff --git a/doc/fullpage.sty b/doc/fullpage.sty new file mode 100644 index 0000000..67824e3 --- /dev/null +++ b/doc/fullpage.sty @@ -0,0 +1,29 @@ +% This is FULLPAGE.STY by H.Partl, Version 2 as of 15 Dec 1988. +% Document Style Option to fill the paper just like Plain TeX. + +\typeout{Style Option FULLPAGE Version 2 as of 15 Dec 1988} + +\topmargin 0pt +\advance \topmargin by -\headheight +\advance \topmargin by -\headsep + +\textheight 8.9in + +\oddsidemargin 0pt +\evensidemargin \oddsidemargin +\marginparwidth 0.5in + +\textwidth 6.5in + + +% For users of A4 paper: The above values are suited for american 8.5x11in +% paper. If your output driver performs a conversion for A4 paper, keep +% those values. If your output driver conforms to the TeX standard (1in/1in), +% then you should add the following commands to center the text on A4 paper: + +% \advance\hoffset by -3mm % A4 is narrower. +% \advance\voffset by 8mm % A4 is taller. + +\endinput + + diff --git a/doc/image.fig b/doc/image.fig new file mode 100644 index 0000000..8cc4702 --- /dev/null +++ b/doc/image.fig @@ -0,0 +1,95 @@ +#FIG 2.1 +80 2 +6 219 139 284 159 +2 2 0 1 -1 0 0 0 0.000 0 0 0 + 284 159 284 139 219 139 219 159 284 159 9999 9999 +4 0 1 10 0 -1 0 0.00000 0 9 44 224 154 Descriptor +-6 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 369 329 414 349 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 369 274 414 204 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 369 284 413 227 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 369 264 414 164 9999 9999 +2 1 0 1 -1 0 0 0 0.000 7 0 0 + 414 269 414 139 494 139 494 264 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 414 259 494 259 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 414 219 494 219 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 414 179 494 179 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 414 329 414 379 494 379 494 329 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 414 339 494 339 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 414 309 414 329 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 494 309 494 329 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 494 269 494 289 9999 9999 +2 2 0 1 -1 0 0 0 0.000 0 0 0 + 379 519 379 439 299 439 299 519 379 519 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 414 489 414 439 494 439 494 489 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 414 269 414 289 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 414 489 414 509 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 494 489 494 509 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 414 549 414 599 494 599 494 549 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 414 529 414 549 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 494 529 494 549 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 414 479 494 479 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 414 559 494 559 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 299 479 379 479 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 1 + 0 0 1.000 4.000 8.000 + 299 189 269 159 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 259 159 299 279 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 299 259 379 259 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 359 294 319 304 9999 9999 +2 2 0 1 -1 0 0 0 0.000 0 0 0 + 379 339 379 179 299 179 299 339 379 339 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 299 299 379 299 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 299 219 379 219 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 359 474 319 484 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 369 444 414 444 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 369 509 414 569 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 234 159 304 439 9999 9999 +4 0 1 10 0 -1 0 0.00000 0 9 54 424 399 Kernel image +4 0 1 10 0 -1 0 0.00000 0 9 50 309 359 Map section +4 0 1 10 0 -1 0 0.00000 0 9 33 319 239 Options +4 0 1 10 0 -1 0 0.00000 0 13 36 319 199 Fallback +4 0 1 10 0 -1 0 0.00000 0 9 50 309 539 Map section +4 0 1 10 0 -1 0 0.00000 0 9 35 239 404 optional +4 0 1 10 0 -1 0 0.00000 0 7 73 409 619 Initial RAM disk diff --git a/doc/image.tex b/doc/image.tex new file mode 100644 index 0000000..ea272d5 --- /dev/null +++ b/doc/image.tex @@ -0,0 +1,78 @@ +\setlength{\unitlength}{0.01250000in}% +% +\begingroup\makeatletter\ifx\SetFigFont\undefined +% extract first six characters in \fmtname +\def\x#1#2#3#4#5#6#7\relax{\def\x{#1#2#3#4#5#6}}% +\expandafter\x\fmtname xxxxxx\relax \def\y{splain}% +\ifx\x\y % LaTeX or SliTeX? +\gdef\SetFigFont#1#2#3{% + \ifnum #1<17\tiny\else \ifnum #1<20\small\else + \ifnum #1<24\normalsize\else \ifnum #1<29\large\else + \ifnum #1<34\Large\else \ifnum #1<41\LARGE\else + \huge\fi\fi\fi\fi\fi\fi + \csname #3\endcsname}% +\else +\gdef\SetFigFont#1#2#3{\begingroup + \count@#1\relax \ifnum 25<\count@\count@25\fi + \def\x{\endgroup\@setsize\SetFigFont{#2pt}}% + \expandafter\x + \csname \romannumeral\the\count@ pt\expandafter\endcsname + \csname @\romannumeral\the\count@ pt\endcsname + \csname #3\endcsname}% +\fi +\fi\endgroup +\begin{picture}(279,483)(218,219) +\thinlines +\put(220,680){\framebox(65,20){}} +\put(225,685){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Descriptor}}} +\put(370,510){\vector( 2,-1){ 44}} +\put(370,565){\vector( 2, 3){ 46.154}} +\put(370,555){\vector( 3, 4){ 43.200}} +\put(370,575){\vector( 1, 2){ 49}} +\put(415,570){\line( 0, 1){130}} +\put(415,700){\line( 1, 0){ 80}} +\put(495,700){\line( 0,-1){125}} +\multiput(415,580)(7.61905,0.00000){11}{\line( 1, 0){ 3.810}} +\multiput(415,620)(7.61905,0.00000){11}{\line( 1, 0){ 3.810}} +\multiput(415,660)(7.61905,0.00000){11}{\line( 1, 0){ 3.810}} +\put(415,510){\line( 0,-1){ 50}} +\put(415,460){\line( 1, 0){ 80}} +\put(495,460){\line( 0, 1){ 50}} +\multiput(415,500)(7.61905,0.00000){11}{\line( 1, 0){ 3.810}} +\multiput(415,530)(0.00000,-8.00000){3}{\line( 0,-1){ 4.000}} +\multiput(495,530)(0.00000,-8.00000){3}{\line( 0,-1){ 4.000}} +\multiput(495,570)(0.00000,-8.00000){3}{\line( 0,-1){ 4.000}} +\put(300,320){\framebox(80,80){}} +\put(415,350){\line( 0, 1){ 50}} +\put(415,400){\line( 1, 0){ 80}} +\put(495,400){\line( 0,-1){ 50}} +\multiput(415,570)(0.00000,-8.00000){3}{\line( 0,-1){ 4.000}} +\multiput(415,350)(0.00000,-8.00000){3}{\line( 0,-1){ 4.000}} +\multiput(495,350)(0.00000,-8.00000){3}{\line( 0,-1){ 4.000}} +\put(415,290){\line( 0,-1){ 50}} +\put(415,240){\line( 1, 0){ 80}} +\put(495,240){\line( 0, 1){ 50}} +\multiput(415,310)(0.00000,-8.00000){3}{\line( 0,-1){ 4.000}} +\multiput(495,310)(0.00000,-8.00000){3}{\line( 0,-1){ 4.000}} +\multiput(415,360)(7.61905,0.00000){11}{\line( 1, 0){ 3.810}} +\multiput(415,280)(7.61905,0.00000){11}{\line( 1, 0){ 3.810}} +\multiput(300,360)(7.61905,0.00000){11}{\line( 1, 0){ 3.810}} +\put(270,680){\vector( 1,-1){ 30}} +\put(260,680){\vector( 1,-3){ 40}} +\multiput(300,580)(7.61905,0.00000){11}{\line( 1, 0){ 3.810}} +\put(360,545){\vector(-4,-1){ 40}} +\put(300,500){\framebox(80,160){}} +\multiput(300,540)(7.61905,0.00000){11}{\line( 1, 0){ 3.810}} +\multiput(300,620)(7.61905,0.00000){11}{\line( 1, 0){ 3.810}} +\put(360,365){\vector(-4,-1){ 40}} +\put(370,395){\vector( 1, 0){ 45}} +\put(370,330){\vector( 3,-4){ 45}} +\put(235,680){\vector( 1,-4){ 70}} +\put(425,440){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Kernel image}}} +\put(310,480){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Map section}}} +\put(320,600){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Options}}} +\put(320,640){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Fallback}}} +\put(310,300){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Map section}}} +\put(240,435){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}optional}}} +\put(410,220){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Initial RAM disk}}} +\end{picture} diff --git a/doc/map.fig b/doc/map.fig new file mode 100644 index 0000000..f7719fc --- /dev/null +++ b/doc/map.fig @@ -0,0 +1,39 @@ +#FIG 3.1 +Landscape +Center +Inches +1200 2 +2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 + 600 1800 1800 1800 1800 7200 600 7200 600 1800 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 + 600 2400 1800 2400 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 + 600 6600 1800 6600 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 + 600 5400 1800 5400 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 + 600 4800 1800 4800 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 + 600 4200 1800 4200 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 + 600 3600 1800 3600 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 1425 5925 975 6075 +2 1 1 1 -1 7 0 0 -1 4.000 0 0 -1 0 0 2 + 600 6000 1800 6000 +2 1 1 1 -1 7 0 0 -1 4.000 0 0 -1 0 0 2 + 600 3000 1800 3000 +4 1 -1 0 0 0 10 0.0000 4 105 480 1200 2025 Default\001 +4 1 -1 0 0 0 10 0.0000 4 105 855 1200 2250 command line\001 +4 1 -1 0 0 0 10 0.0000 4 135 690 1200 3300 descriptors\001 +4 1 -1 0 0 0 10 0.0000 4 105 690 1200 3900 Zero sector\001 +4 1 -1 0 0 0 10 0.0000 4 135 585 1200 4425 Keyboard\001 +4 1 -1 0 0 0 10 0.0000 4 105 705 1200 4650 trans. table\001 +4 1 -1 0 0 0 10 0.0000 4 105 315 1200 5025 First\001 +4 1 -1 0 0 0 10 0.0000 4 105 435 1200 5250 section\001 +4 1 -1 0 0 0 10 0.0000 4 105 420 1200 5775 Second\001 +4 1 -1 0 0 0 10 0.0000 4 135 375 1200 2775 Image\001 +4 1 -1 0 0 0 10 0.0000 4 105 435 1200 6300 section\001 +4 1 -1 0 0 0 10 0.0000 4 105 435 1200 7050 section\001 +4 1 -1 0 0 0 10 0.0000 4 105 345 1200 6825 Third\001 diff --git a/doc/map.tex b/doc/map.tex new file mode 100644 index 0000000..c46f279 --- /dev/null +++ b/doc/map.tex @@ -0,0 +1,49 @@ +\setlength{\unitlength}{0.00083300in}% +% +\begingroup\makeatletter\ifx\SetFigFont\undefined +% extract first six characters in \fmtname +\def\x#1#2#3#4#5#6#7\relax{\def\x{#1#2#3#4#5#6}}% +\expandafter\x\fmtname xxxxxx\relax \def\y{splain}% +\ifx\x\y % LaTeX or SliTeX? +\gdef\SetFigFont#1#2#3{% + \ifnum #1<17\tiny\else \ifnum #1<20\small\else + \ifnum #1<24\normalsize\else \ifnum #1<29\large\else + \ifnum #1<34\Large\else \ifnum #1<41\LARGE\else + \huge\fi\fi\fi\fi\fi\fi + \csname #3\endcsname}% +\else +\gdef\SetFigFont#1#2#3{\begingroup + \count@#1\relax \ifnum 25<\count@\count@25\fi + \def\x{\endgroup\@setsize\SetFigFont{#2pt}}% + \expandafter\x + \csname \romannumeral\the\count@ pt\expandafter\endcsname + \csname @\romannumeral\the\count@ pt\endcsname + \csname #3\endcsname}% +\fi +\fi\endgroup +\begin{picture}(1224,5424)(589,-6373) +\thicklines +\put(601,-6361){\framebox(1200,5400){}} +\put(601,-1561){\line( 1, 0){1200}} +\put(601,-5761){\line( 1, 0){1200}} +\put(601,-4561){\line( 1, 0){1200}} +\put(601,-3961){\line( 1, 0){1200}} +\put(601,-3361){\line( 1, 0){1200}} +\put(601,-2761){\line( 1, 0){1200}} +\put(1426,-5086){\vector(-3,-1){450}} +\multiput(601,-5161)(7.97342,0.00000){151}{\line( 1, 0){ 3.987}} +\multiput(601,-2161)(7.97342,0.00000){151}{\line( 1, 0){ 3.987}} +\put(1201,-1186){\makebox(0,0)[b]{\smash{\SetFigFont{10}{12.0}{rm}Default}}} +\put(1201,-1411){\makebox(0,0)[b]{\smash{\SetFigFont{10}{12.0}{rm}command line}}} +\put(1201,-2461){\makebox(0,0)[b]{\smash{\SetFigFont{10}{12.0}{rm}descriptors}}} +\put(1201,-3061){\makebox(0,0)[b]{\smash{\SetFigFont{10}{12.0}{rm}Zero sector}}} +\put(1201,-3586){\makebox(0,0)[b]{\smash{\SetFigFont{10}{12.0}{rm}Keyboard}}} +\put(1201,-3811){\makebox(0,0)[b]{\smash{\SetFigFont{10}{12.0}{rm}trans. table}}} +\put(1201,-4186){\makebox(0,0)[b]{\smash{\SetFigFont{10}{12.0}{rm}First}}} +\put(1201,-4411){\makebox(0,0)[b]{\smash{\SetFigFont{10}{12.0}{rm}section}}} +\put(1201,-4936){\makebox(0,0)[b]{\smash{\SetFigFont{10}{12.0}{rm}Second}}} +\put(1201,-1936){\makebox(0,0)[b]{\smash{\SetFigFont{10}{12.0}{rm}Image}}} +\put(1201,-5461){\makebox(0,0)[b]{\smash{\SetFigFont{10}{12.0}{rm}section}}} +\put(1201,-6211){\makebox(0,0)[b]{\smash{\SetFigFont{10}{12.0}{rm}section}}} +\put(1201,-5986){\makebox(0,0)[b]{\smash{\SetFigFont{10}{12.0}{rm}Third}}} +\end{picture} diff --git a/doc/other.fig b/doc/other.fig new file mode 100644 index 0000000..c30dc65 --- /dev/null +++ b/doc/other.fig @@ -0,0 +1,49 @@ +#FIG 2.1 +80 2 +6 239 179 304 199 +2 2 0 1 -1 0 0 0 0.000 0 0 0 + 304 199 304 179 239 179 239 199 304 199 9999 9999 +4 0 1 10 0 -1 0 0.00000 0 9 44 244 194 Descriptor +-6 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 299 339 379 339 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 369 359 389 349 399 334 399 319 379 309 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 274 199 299 224 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 369 369 439 369 9999 9999 +2 2 0 1 -1 0 0 0 0.000 0 0 0 + 519 389 519 349 439 349 439 389 519 389 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 369 349 384 349 9999 9999 +2 1 2 1 -1 0 0 0 3.000 -1 0 0 + 384 349 399 349 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 299 299 379 299 9999 9999 +2 2 0 1 -1 0 0 0 0.000 0 0 0 + 379 379 379 219 299 219 299 379 379 379 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 299 259 379 259 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 1 + 0 0 1.000 4.000 8.000 + 359 304 436 168 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 539 169 364 309 9999 9999 +2 2 0 1 -1 0 0 0 0.000 0 0 0 + 399 179 399 139 479 139 479 179 399 179 9999 9999 +2 2 0 1 -1 0 0 0 0.000 0 0 0 + 614 179 614 139 534 139 534 179 614 179 9999 9999 +4 0 1 10 0 -1 0 0.00000 0 9 50 309 399 Map section +4 0 1 10 0 -1 0 0.00000 0 7 47 444 369 Boot sector +4 0 5 10 0 -1 0 0.00000 0 7 42 414 159 chain.b +4 0 1 10 0 -1 0 0.00000 0 9 35 554 149 Original +4 0 0 10 0 -1 0 0.00000 0 7 21 559 174 table +4 0 1 10 0 -1 0 0.00000 0 9 37 554 162 partition +4 0 1 10 0 -1 0 0.00000 0 13 41 319 284 (Options) +4 0 1 10 0 -1 0 0.00000 0 13 36 319 244 Fallback +4 0 1 10 0 -1 0 0.00000 0 7 52 309 324 Chain loader diff --git a/doc/other.tex b/doc/other.tex new file mode 100644 index 0000000..f30a8fc --- /dev/null +++ b/doc/other.tex @@ -0,0 +1,54 @@ +\setlength{\unitlength}{0.01250000in}% +% +\begingroup\makeatletter\ifx\SetFigFont\undefined +% extract first six characters in \fmtname +\def\x#1#2#3#4#5#6#7\relax{\def\x{#1#2#3#4#5#6}}% +\expandafter\x\fmtname xxxxxx\relax \def\y{splain}% +\ifx\x\y % LaTeX or SliTeX? +\gdef\SetFigFont#1#2#3{% + \ifnum #1<17\tiny\else \ifnum #1<20\small\else + \ifnum #1<24\normalsize\else \ifnum #1<29\large\else + \ifnum #1<34\Large\else \ifnum #1<41\LARGE\else + \huge\fi\fi\fi\fi\fi\fi + \csname #3\endcsname}% +\else +\gdef\SetFigFont#1#2#3{\begingroup + \count@#1\relax \ifnum 25<\count@\count@25\fi + \def\x{\endgroup\@setsize\SetFigFont{#2pt}}% + \expandafter\x + \csname \romannumeral\the\count@ pt\expandafter\endcsname + \csname @\romannumeral\the\count@ pt\endcsname + \csname #3\endcsname}% +\fi +\fi\endgroup +\begin{picture}(379,263)(238,439) +\thinlines +\put(240,640){\framebox(65,20){}} +\put(245,645){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Descriptor}}} +\multiput(300,500)(7.61905,0.00000){11}{\line( 1, 0){ 3.810}} +\put(370,480){\line( 2, 1){ 20}} +\put(390,490){\line( 2, 3){ 10}} +\put(400,505){\line( 0, 1){ 15}} +\put(400,520){\vector(-2, 1){ 20}} +\put(275,640){\vector( 1,-1){ 25}} +\put(370,470){\vector( 1, 0){ 70}} +\put(440,450){\framebox(80,40){}} +\put(370,490){\line( 1, 0){ 15}} +\multiput(385,490)(7.50000,0.00000){3}{\makebox(0.1111,0.7778){\SetFigFont{5}{6}{rm}.}} +\multiput(300,540)(7.61905,0.00000){11}{\line( 1, 0){ 3.810}} +\put(300,460){\framebox(80,160){}} +\multiput(300,580)(7.61905,0.00000){11}{\line( 1, 0){ 3.810}} +\put(430,675){\vector(-1,-2){ 69.800}} +\put(540,670){\vector(-4,-3){179.200}} +\put(400,660){\framebox(80,40){}} +\put(535,660){\framebox(80,40){}} +\put(310,440){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Map section}}} +\put(445,470){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Boot sector}}} +\put(415,680){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{tt}chain.b}}} +\put(555,690){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Original}}} +\put(560,665){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}table}}} +\put(555,677){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}partition}}} +\put(320,555){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}(Options)}}} +\put(320,595){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Fallback}}} +\put(310,515){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Chain loader}}} +\end{picture} diff --git a/doc/parameter.fig b/doc/parameter.fig new file mode 100644 index 0000000..8973c31 --- /dev/null +++ b/doc/parameter.fig @@ -0,0 +1,39 @@ +#FIG 2.1 +80 2 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 239 299 239 334 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 299 299 299 334 9999 9999 +2 2 0 1 -1 0 0 0 0.000 0 0 0 + 619 334 619 299 199 299 199 334 619 334 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 459 299 459 334 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 269 234 269 299 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 379 399 379 334 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 389 234 519 299 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 299 199 299 234 9999 9999 +2 2 0 1 -1 0 0 0 0.000 0 0 0 + 459 234 459 199 239 199 239 234 459 234 9999 9999 +2 2 0 1 -1 0 0 0 0.000 0 0 0 + 459 434 459 399 299 399 299 434 459 434 9999 9999 +4 0 1 10 0 -1 0 0.000 0 7 21 209 314 Pre- +4 0 1 10 0 -1 0 0.000 0 7 21 204 329 fixes +4 0 1 10 0 -1 0 0.000 0 9 25 254 314 Image +4 0 1 10 0 -1 0 0.000 0 5 21 254 329 name +4 0 1 10 0 -1 0 0.000 0 9 98 489 319 Command-line options +4 0 1 10 0 -1 0 0.000 0 9 57 344 319 Static options +4 0 1 10 0 -1 0 0.000 0 9 69 139 354 Parameter string +4 0 1 10 0 -1 0 0.000 0 9 80 139 369 passed to the kernel +4 0 1 10 0 -1 0 0.000 0 9 25 254 214 Image +4 0 1 10 0 -1 0 0.000 0 5 21 254 229 name +4 0 1 10 0 -1 0 0.000 0 9 98 329 219 Command-line options +4 0 1 10 0 -1 0 0.000 0 9 57 344 419 Static options +4 0 1 10 0 -1 0 0.000 0 9 60 139 419 Options sector +4 0 1 10 0 -1 0 0.000 0 7 60 139 219 Command line diff --git a/doc/parameter.tex b/doc/parameter.tex new file mode 100644 index 0000000..8f8ab45 --- /dev/null +++ b/doc/parameter.tex @@ -0,0 +1,50 @@ +\setlength{\unitlength}{0.01250000in}% +% +\begingroup\makeatletter\ifx\SetFigFont\undefined +% extract first six characters in \fmtname +\def\x#1#2#3#4#5#6#7\relax{\def\x{#1#2#3#4#5#6}}% +\expandafter\x\fmtname xxxxxx\relax \def\y{splain}% +\ifx\x\y % LaTeX or SliTeX? +\gdef\SetFigFont#1#2#3{% + \ifnum #1<17\tiny\else \ifnum #1<20\small\else + \ifnum #1<24\normalsize\else \ifnum #1<29\large\else + \ifnum #1<34\Large\else \ifnum #1<41\LARGE\else + \huge\fi\fi\fi\fi\fi\fi + \csname #3\endcsname}% +\else +\gdef\SetFigFont#1#2#3{\begingroup + \count@#1\relax \ifnum 25<\count@\count@25\fi + \def\x{\endgroup\@setsize\SetFigFont{#2pt}}% + \expandafter\x + \csname \romannumeral\the\count@ pt\expandafter\endcsname + \csname @\romannumeral\the\count@ pt\endcsname + \csname #3\endcsname}% +\fi +\fi\endgroup +\begin{picture}(482,239)(140,403) +\thinlines +\put(240,540){\line( 0,-1){ 35}} +\put(300,540){\line( 0,-1){ 35}} +\put(200,505){\framebox(420,35){}} +\put(460,540){\line( 0,-1){ 35}} +\put(270,605){\vector( 0,-1){ 65}} +\put(380,440){\vector( 0, 1){ 65}} +\put(390,605){\vector( 2,-1){130}} +\put(300,640){\line( 0,-1){ 35}} +\put(240,605){\framebox(220,35){}} +\put(300,405){\framebox(160,35){}} +\put(210,525){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Pre-}}} +\put(205,510){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}fixes}}} +\put(255,525){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Image}}} +\put(255,510){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}name}}} +\put(490,520){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Command-line options}}} +\put(345,520){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Static options}}} +\put(140,485){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Parameter string}}} +\put(140,470){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}passed to the kernel}}} +\put(255,625){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Image}}} +\put(255,610){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}name}}} +\put(330,620){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Command-line options}}} +\put(345,420){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Static options}}} +\put(140,420){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Options sector}}} +\put(140,620){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Command line}}} +\end{picture} diff --git a/doc/rlatex b/doc/rlatex new file mode 100755 index 0000000..842359e --- /dev/null +++ b/doc/rlatex @@ -0,0 +1,21 @@ +#!/bin/sh +while true; do + pid=$$ + export pid + rm -f /tmp/rlok$pid + ( + if latex $*; then + touch /tmp/rlok$pid + fi + ) | tee /tmp/rlso$pid + if [ ! -f /tmp/rlok$pid ]; then + rm -f /tmp/rlso$pid + exit 1 + fi + if grep '^LaTeX Warning: Label(s) may' /tmp/rlso$pid >/dev/null; then : + else + rm -f /tmp/rlso$pid + exit 0 + fi + echo "Re-running LaTeX" +done diff --git a/doc/t2a.pl b/doc/t2a.pl new file mode 100644 index 0000000..f733a55 --- /dev/null +++ b/doc/t2a.pl @@ -0,0 +1,467 @@ +#!/usr/bin/perl +# +# Copyright 1994-1996 Werner Almesberger. +# All rights reserved. +# +# See file COPYING for details. +# +#----------------------------------------------------------------------------- +# +# Known bugs: +# +# Usually doesn't check for prepended backslashes, e.g. things like +# \\begin{verbatim} would be processed incorrectly. +# +# Tokenization should be done once at the beginning, not on the fly +# with cleanup and check procedures at the end of each step. +# +#----------------------------------------------------------------------------- +# +$w = 75; +# +# default macros +# +$m{"\\\\ldots"} = "..."; +# +# read the file +# +print STDERR "[".length($t)."] Reading the file\n"; +$/ = "\000"; +$t = "\n".<>."\n"; +# +# universal markers +# +$N = "\000"; # non-character +$X = "\007"; # generic marker +$Y = "\010"; # another generic marker +$Z = "\011"; # yet another generic marker +$B = "\001"; # begin +$E = "\002"; # end +$BS = "\013"; # second begin +$ES = "\014"; # second end +$CO = "\003"; # curly open +$CC = "\004"; # curly close +# +# commands to the output formatter +# +$SI = "\020"; # increase indentation by one +$SO = "\021"; # decrease indentation by one +$B1 = "\022"; # one blank line +$B2 = "\023"; # two blank lines + +sub xlat +{ + local ($l) = @_; + + $l =~ tr/~/ /; + $l =~ s/\\([_~&%^\$\#\[\]|\-])/\1/g;# unescape special characters + $l =~ s/\\,//g; # remove small spaces + $l =~ s/\\backslash */$X/g; # \backslash ->\ + if ($l =~ /\\([A-Za-z]+|.)/) { + warn "unrecognized command $& ($l)"; + $l = $`."\n!!! UNRECOGNIZED COMMAND: $&\n$'"; + } + $l =~ s/$X/\\/g; + $l =~ tr/{}//d; # delete stray curly braces + $l =~ s/$CO/{/g; # put escaped braces back + $l =~ s/$CC/}/g; + return $l; +} + + +# +# load macros +# +print STDERR "[".length($t)."] Loading macros\n"; +while ($t =~ /\n%%(def|cmd)([^\n]*)\n/) { + $t = $`."\n".$'; + $a = $1; + $2 =~ /([^\\])=/ || die "= missing in $2"; + if ($a eq "def") { + $m{$`.$1} = $'; + $c{$`.$1} = ""; + } + else { + $m{$`.$1} = ""; + $c{$`.$1} = $'; + } +} +# +# remove %%beginskip ... %%endskip pairs +# +print STDERR "[".length($t)."] Removing %%beginskip ... %%endskip pairs\n"; +while ($t =~ /\n%%beginskip\s*\n/) { $t = $`.$B.$'; } +while ($t =~ /\n%%endskip\s*\n/) { $t = $`.$E.$'; } +while ($t =~ /$B[^$B$E]*$E/) { $t = $`."\n".$'; } +$t !~ /[$B$E]/ || die "%%beginskip/%%endskip mismatch"; +# +# process macros +# +print STDERR "[".length($t)."] Processing macros (may take a while)\n"; +while (1) { + $none = 1; + for (keys %m) { + while ($t =~ /$_/) { + $none = 0; + if ($c{$_} eq "") { + eval "\$t = \$`.\"$m{$_}\".\$';"; + } + else { + eval "\$t = \$`.$c{$_}.\$';"; + } + die "syntax error: $@" if $@; + } + } + last if $none; + print STDERR "[".length($t)."] "." next pass\n"; +# perfectionist's approach: +# $l = 0; +# for (keys %m) { +# if ($t =~ /$_/) { +# if (length($&) > $l) { +# $i = $_; +# $l = length($&); +# } +# } +# } +# last if !$l; +# $t =~ /$i/ || die "internal error"; +# eval "\$t = \$`.\"$m{$i}\".\$'"; +# die "syntax error: $@" if $@; +# print STDERR "[".length($t)."] "."$i\n"; +} +# +# handle verbatim sections (we're not trying to be perfect here) +# +print STDERR "[".length($t)."] Handling verbatim sections\n"; +while ($t =~ /\\begin{verbatim}([ \t]*\n)?/) { $t = $`."\n\n".$B.$'; } +while ($t =~ /\\end{verbatim}([ \t]*\n)?/) { $t = $`.$E."\n\n".$'; } +while ($t =~ /\\verb([^a-zA-Z \t\n])/ && $t =~ /\\verb$1([^$1]*)$1/) { + $t = $`.$B.$1.$E.$'; +} +while ($t =~ /$B([^$B$E]*)$E/) { + ($a,$b,$c) = ($`,$1,$'); + die "no support for \\t yet, sorry" if $b =~ /\t/; + $b =~ s/\\/\\backslash /g; + $b =~ s/[~^_%#&{}\$\-]/\\$&/g; + $b =~ s/[`']/\\$&~/g; + $b =~ s/ /~/g; + $b =~ s/\n\n\n/$B2/g; + $b =~ s/\n\n/$B1/g; + $b =~ s/\n/\\\\/g; + $t = $a.$b.$c; +} +if ($t =~ /[$B$E]/) { + if ($t =~ /..........[$B$E]........../) { print STDERR "$&\n"; } + die "verbatim conflict"; +} +# +# hide escaped curly braces +# +print STDERR "[".length($t)."] Hiding escaped curly braces\n"; +$t =~ s/\\{/$CO/g; +$t =~ s/\\}/$CC/g; +# +# discard comments and italic corrections +# +print STDERR "[".length($t)."] Discarding comments and italic corrections\n"; +while ($t =~ s/([^\\])%[^\n]*\n/$1/g) {}; +$t =~ s|\\/||g; +# +# no math mode +# +print STDERR "[".length($t)."] No math mode\n"; +while ($t =~ s/([^\\])\$/$1/g) {}; +# +# remove tabs and massage blanks +# +print STDERR "[".length($t)."] Removing tabs and massaging blanks\n"; +$t =~ s/\\ / /g; # \cmd\ blah +$t =~ tr/ \t/ /s; +# +# various minor issues +# +print STDERR "[".length($t)."] Dealing with various minor issues\n"; +$t =~ s/\\rightarrow\s*/->/g; +$t =~ s/\\quad\s*/~/g; +$t =~ s/\\qquad\s*/~~/g; +$t =~ s/\\vert/|/g; +$t =~ s/\\TeX/TeX/g; +$t =~ s/\\LaTeX/LaTeX/g; +$t =~ s/\\rm\s*//g; +$t =~ s/\\hbox{/{/g; +$t =~ s/\\protect//g; +$t =~ s/\\newpage\s*//g; +$t =~ tr/-/-/s; +$t =~ s/\n\n+/$B1/g; +while ($t =~ /\\cite{([^}]+)}/) { + $t = $`."["; + $after = $'; + for (split(",",$1)) { + if (defined $cite{$_}) { $t .= "$cite{$_},"; } + else { + $cite{$_} = ++$citation; + $bibref[$citation] = $_; + $t .= "$citation,"; + die "unmatched ref $_" unless $after =~ /\\bibitem{$_}/; + $after = $`."\\item[\[$citation\]] ".$'; + } + } + $t =~ s/,$//; + $t .= "]$after"; +} +$t =~ + s/\\begin{thebibliography}{[^}]*}/\\section{References}\\begin{description}/; +$t =~ s/\\end{thebibliography/\\end{description}/; +# +# handle footnotes +# +print STDERR "[".length($t)."] Handling footnotes\n"; +$t =~ s/\\footnote{/\\footnotemark\\footnotetext{/g; +$t =~ s/\\footnotemark/$X/g; +$t =~ s/\\footnotetext{/$Y/g; +while ($t =~ /$X([^$Y]*)$Y/) { + ($a,$b,$c) = ($`,$',$1); + $t =~ /^[^$Y]*$Y$B1/; + $d = $'; + for ($s = "*"; $d =~ /$Z/; $d = $`.$Y.$') { $s .= "*"; } + $a = $a.$s.$c; + while ($b =~ /^([^}]*){([^{}]*)}/) { $b = $`.$1.$B.$2.$E.$'; } + $b =~ /^([^{}]*)}/ || die "{ } confusion"; + ($b,$t) = ($1,$'); + $b =~ s/$B/{/g; + $b =~ s/$E/}/g; + $d = "$B1$Z\\begin{description}\\item[$s] $b\\end{description}$B1"; + if ($t =~ /$B1([^$Z][^$N]*)$/) { $t = $`.$d.$1; } + else { $t = $t.$d; } + $t = $a.$t; +} +$t =~ s/$Z//g; +if ($t =~ /[$X$Y$Z$B$E]/) { + if ($t =~ /..............[$X$Y$Z$B$E]/) { print STDERR "HEY $&\n"; } + die "footnote confusion"; +} +# +# process simple tables ... +# +print STDERR "[".length($t)."] Processing simple tables\n"; +while ($t =~ /\\begin{tabular}/) { $t = $`.$B.$'; } +while ($t =~ /\\end{tabular}/) { $t = $`.$E.$'; } +while ($t =~ /$B\{([rlc|]+)\}([^$B$E]*)$E/) { + ($a,$b,$c,$d) = ($`,$',$2,$1); + $c =~ s/\\\\/&/g; + $c =~ s/[\s\n]*\\hline[\s\n]*/$X&/g; + ($e = $d) =~ tr/|//cd; + @d = (); + while ($d =~ /^(\|*)[a-z](\|*)/) { + push(@d,$&); + $d = $'; + } + @f = (); + while ($c =~ /([^\\])&/) { + push(@f,$`.$1); + $c = $'; + } + @w = (); + $d =~ tr/|//d; + $i = 0; + for (@f) { + next if $_ eq $X; + $f = $i % @d; + $_ = &xlat($_); + $_ =~ s/^[\s\n]*//g; + $_ =~ s/[\s\n]*$//g; + if ($w[$f] < length($_)) { $w[$f] = length($_); } + $i++; + } + $l = @d+2*length($e)-1; + for (@w) { $l += $_; } + $a .= "$B1"; + $i = 0; + for (@f) { + if ($_ eq $X) { $a .= ("-" x $l)."\\\\"; } + else { + $f = $i % @d; + if ($d[$f] =~ /^\|/) { $a .= "| "; } + $g = $w[$f]-length($_); + if ($d[$f] =~ /l/) { $a .= $_.("~" x $g); } + if ($d[$f] =~ /c/) { + $a .= ("~" x int($g/2)).$_.("~" x ($g-int($g/2))); + } + if ($d[$f] =~ /r/) { $a .= ("~" x $g).$_; } + $a .= " "; + if ($d[$f] =~ /\|$/) { $a .= "| "; } + if ($f == $#d) { $a .= "\\\\"; } + $i++; + } + } + $t = $a.$b.$B1; +} +if ($t =~ /[$B$E$X]/) { + if ($t =~ /(.|\n)(.|\n)(.|\n)(.|\n)(.|\n)(.|\n)[$B$E$X](.|\n)(.|\n)(.|\n)(.|\n)(.|\n)(.|\n)/) { print STDERR "$&\n"; } + die "\\begin/end{tabular} mismatch"; +} +# +# process lists +# +print STDERR "[".length($t)."] Formatting lists\n"; +while ($t =~ /\\begin{itemize}\s*/) { $t = $`.$B.$'; } +while ($t =~ /\\end{itemize}\s*/) { $t = $`.$E.$'; } +while ($t =~ /$B[^$B$E]*$E/) { + ($a,$b,$c) = ($`,$&,$'); + while ($b =~ /\\item\s*/) { $b = $`.$X.$'; } + while ($b =~ /$X([^$X]*)([$X$E])/) { + $b = $`."- ".$SI.$SI.$1.$SO.$SO."\\\\"."$2".$'; + } + $b =~ /$B([^$B$E]*)$E/; + $t = $a.$SI.$SI.$B1.$1.$SO.$SO."$B1".$c; +} +$t !~ /[$B$E]/ || die "\\begin/\\end{itemize} mismatch"; +while ($t =~ /\\begin{description}\s*/) { $t = $`.$B.$'; } +while ($t =~ /\\end{description}\s*/) { $t = $`.$E.$'; } +while ($t =~ /$B[^$B$E]*$E/) { + ($a,$b,$c) = ($`,$&,$'); + while ($b =~ /\\item\[/) { $b = $`.$X."[".$'; } + while ($b =~ /$X\[/) { + ($d,$e) = ($`,$'); + while ($e =~ s/\[([^\[\]]*)\]/$BS$1$ES/g) {}; + $e =~ /^([^\[\]]*)]\s*([^$X]*)([$X$E])/ || die "\item problem (1)"; + $b = $d.$1."~~".$SI.$SI.$2.$SO.$SO."\\\\".$3.$'; + $b =~ s/$BS/[/g; + $b =~ s/$ES/]/g; + } + $b =~ /$B([^$B$E]*)$E/; + $t = $a.$SI.$SI.$B1.$1.$SO.$SO.$B1.$c; +} +$t !~ /[$X]/ || die "\item problem (2)"; +$t !~ /[$B$E]/ || die "\\begin/\\end{description} mismatch"; +# +# process figures +# +print STDERR "[".length($t)."] Removing figures\n"; +while ($t =~ /\\begin{figure}\s*/) { $t = $`.$B.$'; } +while ($t =~ /\\end{figure}\s*/) { $t = $`.$E.$'; } +while ($t =~ /$B[^$B$E]*$E/) { + ($a,$b,$c) = ($`,$&,$'); + $t = $a."[ Figure"; + if ($b =~ /\\label{([^}]*)}/) { + $l{$1} = ++$figref; + $t .= " $figref"; + } + if ($b =~ /\\caption{([^}]*)}/) { + $t .= ": $1"; + } + $t .= " ]".$c; +} + +# +# process sections and labels +# +print STDERR "[".length($t)."] Processing sections and labels\n"; +$t =~ s/\\begin{abstract}/\\section{Abstract}/g; +$t =~ s/\\end{abstract}//g; +$LB = "\005"; # they don't necessarily have to be unique +$SC = "\006"; +while ($t =~ /\\label{/) { $t = $`.$LB."{".$'; } +while ($t =~ /\\((sub)*)section\*?{/) { $t = $`.$SC.$1."{".$'; } +$l = ""; +while (1) { + if ($t =~ /^([^$LB$SC]*)$LB\{([^{}]*)\}/) { + $l{$2} = '"'.$l.'"'; + $t = $1.$'; + } + if ($t =~ /$SC((sub)*){/) { + ($a,$b,$c) = ($`,$',$1); + while ($b =~ /^([^}]*){([^{}]*)}/) { $b = $`.$1.$B.$2.$E.$'; } + $b =~ /^([^{}]*)}\s*/ || die "{ } confusion"; + ($b,$d) = ($1,$'); + $b =~ s/$B/{/g; + $b =~ s/$E/}/g; + $l = $b; + $b = &xlat($b); + if (($u = ("=","-","- ","")[length($c)/3]) ne "") { + $u = "\\\\".substr($u x length($b),0,length($b)); + } + $t = $a.$B2.$b.$u.$B1.$d; + } + else { + last; + } +} +# +# handle references +# +print STDERR "[".length($t)."] Handling references\n"; +$t =~ s/[Pp]age \\pageref({[^{}]*})/\\ref$1/g; +$t =~ s/\\pageref{[^{}]*}/???/g; +while ($t =~ /\\ref{([^{}]*)}/) { + $t = $`.(defined($l{$1}) ? $l{$1} : "???").$'; +} +# +# collapse whitespace +# +print STDERR "[".length($t)."] Collapsing whitespace\n"; +$t =~ s/\\par\s*/\n\n/g; +$t =~ s/ *(\n+) */$1/g; +$t =~ tr/\n/ /; +$t =~ tr/ \t/ /s; # again +# +# handle line breaks +# +print STDERR "[".length($t)."] Handling line breaks\n"; +$t =~ tr/\n//d; +$t =~ s/\\\\/\n/g; +$t =~ s/\\par\s*/$B1/g; +# +# handle accents, umlauts, and double quotes +# +print STDERR "[".length($t)."] Handling accents, umlauts, double quotes ". + "and hyphens\n"; +$t =~ s/\\[`']([AEOUaeou])/$1/g; +$t =~ s/\\([`'])~/$1/g; +$t =~ s/\\"([AOUaou])/$1e/g; +$t =~ s/``/"/g; +$t =~ s/''/"/g; +# +# apply ultimate set of fixes to newlines +# +print STDERR "[".length($t)."] Applying ultimate set of fixes to newlines\n"; +while ($t =~ s/([\n$B1$B2]+)([$SI$SO])/$2$1/g) {}; +$t =~ s/([\n$B1$B2]*)\s+([\n$B1$B2]+)/$1$2/g; +$t =~ s/\n+/\n/g; +$t =~ s/\n?($B1)[\n$B1]*/\n\n/g; +$t =~ s/\n*($B2)[\n$B2]*/\n\n\n/g; +# +# translate what's left +# +print STDERR "[".length($t)."] Final translation\n"; +$t = &xlat($t); +$t =~ s/^\s*//; +$t =~ s/\s*$//; +$t .= "\n"; +# +# okay, now format and print it +# +print STDERR "[".length($t)."] "."Formatting (may take a while)\n"; +$l = ""; +$m = 0; +while ($t =~ /([$SI$SO\n]| +)/) { + if ($` ne "" || substr($1,0,1) eq " ") { + if (length($l)+length($`) > $w && $l ne "") { + print $l."\n"; + $l = ""; + } + if ($l eq "") { $l = " " x $m; } + $l = $l.$`.(substr($1,0,1) eq " " ? $1 : ""); + } + $t = $'; + if ($1 eq $SI) { $m++; } + if ($1 eq $SO) { $m--; } + if ($1 eq "\n") { + print $l."\n"; + $l = ""; +# $t = s/^ *(\S.*)/\1/; + } +} +print "$l\n" if $l ne ""; +print STDERR "Done\n"; diff --git a/doc/tech.tex b/doc/tech.tex new file mode 100644 index 0000000..ca2892e --- /dev/null +++ b/doc/tech.tex @@ -0,0 +1,359 @@ +% +% Copyright 1992-1998 by Werner Almesberger. +% All rights reserved. +% +% See file COPYING for details. +% + +\documentclass[fullpage]{article} +\usepackage{ae} +\usepackage[bookmarks,% + pdftitle={Linux Loader (LILO) technical overview},% + pdfsubject={Booting on iA32 architecture},% + pdfkeywords={lilo, boot},% + pdfauthor={Werner Almesberger }]% + {hyperref} +\usepackage{ifpdf} + +\parindent=0pt +\parskip=4pt + +\hyphenation{hexa-decimal} + +\def\key#1{$[$#1$]$} +\def\LILO{LILO} + +\def\SetFigFont#1#2#3{\tt} + + +\begin{document} + +\title{\LILO \\ + \Large + Generic boot loader for Linux \\ + Version 21 \\ ~\\ + \bf Technical overview} +\author{Werner Almesberger \\ + {\tt Werner.Almesberger@epfl.ch}} +\date{December 4, 1998} + +\maketitle +{ + \parskip=-4pt + \setcounter{tocdepth}{1} + \tableofcontents +} + +~\\ +This document describes internals of \LILO\ and related parts of its +environment (kernel, etc.). It is not necessary to read or understand +this document in order to install or use \LILO. A general introduction +and installation instructions can be found in the user's guide. + +{\bf This document has only been partially updated and does not entirely +reflect the current ('98) status of Linux or of \LILO\ (version 21).} + + +\section{Load sequence} +\label{load} + +The boot sector is loaded by the ROM-BIOS at address 0x07C00. It moves +itself to address 0x96A00, sets up the stack (growing downwards from +0x96A00 to 0x96800), loads the secondary boot loader at address +0x96C00 and transfers control to it. It displays an ``L'' after moving +itself and an ``I'' before starting the secondary boot loader. If a read +error occurs when loading the secondary boot loader, a two-digit hex code +is displayed after the ``L''. This results in an endless stream of error +codes if the problem is permanent. Displaying these error codes is disabled +if the build-time option {\tt NO1STDIAG} is set. + +The secondary boot loader loads the descriptor table at 0x98800 and the +sector containing the default command line at 0x98C00. If the default command +line is enabled, its magic number is invalidated and the sector is written +back to disk. This potentially dangerous operation can be disabled by defining +{\tt LCF\_READONLY} when passing {\tt second.S} through {\sf cpp}. Next, the +secondary boot loader checks +for user input. If either the default is used or if the user has specified +an alternate image, the options sector is loaded at 0x98C00 and the parameter +line is constructed at 0x99000. If the resulting line contains the option +\verb"lock", the command line as entered by the user (it is saved before +the final line is constructed) is written to the disk as the new default +command line. Also, if a fallback command line is set, it is copied to the +default command line sector. + +If the user has supplied an initial RAM disk image, this file is loaded +below the end of physical memory or 16 MB, whichever is lower. The start +address is lowered to the next page boundary so that the memory area +occupied by the initial RAM disk can later be easily returned to the +system's free memory pool. The 16 MB limit exists because the BIOS +functions used to transfer data in memory are only specified for an 24 bit +address space. + +Next, the floppy boot sector of that image is +loaded at 0x90000\footnote{The floppy boot sector is only used as a source of +setup information.}, +the setup part is loaded at 0x90200 and +the kernel part is loaded at 0x10000, or, if the kernel has been compiled +for being loaded ``high'' (i.e. with {\tt make bzImage}), it is loaded +at 0x100000 instead. During the load operations, the sectors +of the map file are loaded at 0x98600. + +If the loaded image is a kernel image, control is transferred to +its setup code. +If a different operating system is booted, things are a bit more difficult: +the chain loader is loaded at 0x90200 and the boot sector of the other OS +is loaded at 0x90400. The chain loader moves the partition table (loaded at +0x903BE as part of the chain loader) to 0x00600 and the boot sector to +0x07C00. After that, it passes control to the boot sector. + +Chain loaders that allow booting from a second drive (either floppy or hard +disk) also install a small function to intercept BIOS calls and to swap +the drive numbers at the top of available memory. + +The secondary boot loader displays an ``L'' after being started and an ``O'' +after loading the descriptor table and the default command line. Before +loading the descriptor table, it checks, whether it has been loaded at the +correct location and displays a question mark if it hasn't. If the +descriptor table has an incorrect checksum, a minus sign is displayed. + +$$ +\begin{tabular}{l|c|l} + \cline{2-2} + \tt 0x00000 & & 1982 bytes \\ + \cline{2-2} + \tt 0x007BE & Partition table & 64 bytes \\ + \cline{2-2} + \tt 0x007FE & & 29 kB \\ + \cline{2-2} + \tt 0x07C00 & Boot load area & 512 bytes \\ + \cline{2-2} + \tt 0x07E00 & & 32.5 kB \\ + \cline{2-2} + \tt 0x10000 & & 448 kB \\ + & & \\ + & Kernel & \\ + & & \\ + & & \\ + \cline{2-2} + \tt 0x90000 & Floppy boot sector & 512 bytes \\ + \cline{2-2} + \tt 0x90200 & Setup (kernel) & 39.5 kB (2 kB used) \\ + \cline{2-2} + \tt 0x9A000 & Primary boot loader & 512 bytes \\ + \cline{2-2} + \tt 0x9A200 & Stack & 3.5 kB \\ + \cline{2-2} + \tt 0x9B000 & Secondary boot loader & 8 kB (3.5 kB used) \\ + \cline{2-2} + \tt 0x9D000 & Map load area & 512 bytes \\ + \cline{2-2} + \tt 0x9D200 & Descriptor table & 1 kB \\ + \cline{2-2} + \tt 0x9D600 & Default command line, etc. & 512 bytes \\ + \cline{2-2} + \tt 0x9D800 & Keyboard translation table & 512 bytes \\ + \cline{2-2} + \tt 0x9DA00 & Parameter line construction area & 1 kB \\ + \cline{2-2} + \tt 0x9DC00 & & 7.5 kB \\ + & & \\ + \cline{2-2} + & Drive swapper & 1 kB \\ + \cline{2-2} + \multicolumn{3}{l}{\tt 0xA0000} \\ +\end{tabular} +$$ + +The area 0x90020-0x90023 is overlaid by a command-line descriptor while +the secondary boot loader is running. + + + +\section{File references} + +This section describes the references among files involved in the boot +procedures. + +$$ + \input bootloader +$$ + +The boot sector contains the primary boot loader, the address of the default +command line sector, the address of both +descriptor table sectors and the addresses of the sectors of the secondary +boot loader. The generic boot sector is copied from {\tt boot.b}. + +The primary boot loader can store up to eight sector addresses of the +secondary boot loader. + +$$ + \input map +$$ + +The map file consists of so-called sections and of special data sectors. +Each section +spans an integral number of disk sectors and contains addresses of sectors +of other files. + +There are three exceptions: 1. If a ``hole'' is being +covered or if the floppy boot sector of an unstripped kernel has been omitted, +the address of the zero sector is used. This sector is part of the +map file. 2. When booting a different operating system, the first sector is +the merged chain loader that has been written to the map file before that +section. 3. Each map section describing an image is followed by a sector +containing the options line of that image. + +The last address slot of each map sector is either unused (if the map section +ends in this sector) or contains the address of the next map sector in the +section. + +The ifive sectors at the beginning of the map file are special: the first +sector contains the default command line, the next +two sectors contain the boot image descriptor table and the fourth sector +is filled with zero bytes. This sector is mapped whenever a file contains +a ``hole''. The fifth sector contains the keyboard translation table. + +$$ + \input image +$$ + +A kernel image consists simply of a sequence of sectors being +loaded. The map section also contains a sector with a fallback command line +and a sector with parameter line options. Optionally, a RAM disk image, +specified by a second map section, can be loaded. + +$$ + \input other +$$ + +When booting another operating system, the chain loader ({\tt chain.b}) is +merged with the patched partition table\footnote{If the partition table is +omitted, that area is filled with zero bytes.} and written into the map file. +The map section of this boot image starts after that sector and contains only +the address of a dummy floppy boot sector (the zero sector, but its +contents are irrelevant), the loader +sector and the boot sector of the other operating system. Not that the +map section also contains the fallback sector and a (useless) sector for +options. + + +\section{Configuration parameters} + +The boot sector of each kernel contains a set of configuration parameters +that have to be available at boot time before the kernel can access +file systems. These parameters can be set when the kernel is compiled and +later be changed with programs like {\sf rdev}. \LILO\ can supersede +the parameters (in memory) at boot time by placing the corresponding +items on the parameter line passed to the kernel. + +The parameters are stored at the following (decimal) offsets: + +\begin{description} + \item[497] the size of the setup code in sectors (512 bytes). Older kernels + may put a zero at this place. + \item[498-499] is a flag specifying whether the root file system should be + mounted read-only (if non-zero) or read-write (if zero). + \item[500-501] the size of the kernel, counted in paragraphs (16 bytes). + \item[502-503] this parameter is currently unused. + \item[504-505] the size of the RAM disk in kilobytes. No RAM disk is + created if this parameter is set to zero. + \item[506-507] the text mode the VGA is set to. + \begin{description} + \item[0xFFFD] the user is asked to specify the VGA mode at boot time. + \item[0xFFFE] uses 80x50 (``extended'') mode. + \item[0xFFFF] uses 80x25 (``normal'') mode. + \end{description} + Any other value selects the corresponding mode as displayed in the + interactive VGA mode selection menu. This is the only option that is set + by LILO by patching the boot sector instead of passing it on the parameter + line. + \item[508] the minor number of the device that should be mounted as root. + \item[509] the major number of the device that should be mounted as root. +\end{description} + + +\section{Parameter line interface} + +The kernel supports processing of parameters that are +provided by the boot loader. The parameter string is a NUL-terminated +ASCII string that contains space-separated words or +{\tt {\it variable\/}={\it value\/}} pairs. A description of how they are +interpreted can be found in the section of the user's guide labeled +``The boot prompt''. + +The following descriptor has to be set up to pass a parameter string to +the kernel: + +\begin{description} + \item[0x90020] the magic number 0xA33F. + \item[0x90022] the offset of the first byte of the parameter line relative + to 0x90000. +\end{description} + +The boot loader composes the parameter line from the command line, from +the options sector and from some internally generated prefixes (typically +\verb"auto" and \verb"BOOT_IMAGE="), as follows: + +$$ + \input parameter +$$ + +Example: \\ +Command line: \verb"vmlinuz root=802"\\ +Options sector: \verb"root=801 ro" + +yields \verb"BOOT_IMAGE=vmlinuz root=801 ro root=802" + +Because parameter line options can typically be overridden, the first +\verb"root" option is ignored by the kernel. + + +\section{External interface} + +\LILO\ is able to receive its command line from a program that is booted +before it. This externally provided command line is only used if the +user does not use the normal mechanism to invoke the boot prompt. + +The following register contents are expected: + +\begin{description} + \item[\bf DL] contains the value 0xFE. + \item[\bf ES:SI] points to the string ``LILO''. The string must be in + upper case and no terminating character is needed. The string must not + cross segment boundaries, i.e. {\bf SI} must be below 0xFFFD. + \item[\bf ES:BX] points to a NUL-terminated string that is used as the + command line. This string has a maximum length of 78 characters (not + including the terminating NUL) and must not cross segment boundaries. +\end{description} + +There are two values of the externally provided command line that have a +special meaning: + +\begin{itemize} + \item an empty string ({\bf ES:BX} points to a NUL byte) is interpreted + as a request to enter the boot prompt and to accept keyboard input. + \item a string that consists only of blanks is interpreted as a request + to boot the default boot image. +\end{itemize} + +\LILO\ can also obtain the default command line from the map file. It +is only used if no externally provided command line is available. + + +\section{Default command line in map file} + +The first sector of the map file is reserved for a default command line. +Unless the user invokes the boot prompt by pressing a shift key or unless an +externally provided command line is present, the command line in the map +file is interpreted as if it had been typed on the keyboard. + +The first two bytes of the first sector of the map file have to contain +the magic number {\tt DC\_MAGIC} (0xF4F2) in little-endian byte order. +They are followed by a NUL-terminated string with a maximum length of +510 bytes, including the NUL. Note that the boot loader limits command +lines to 78 characters after removing duplicate spaces. + +The command line is disabled by either clobbering the magic number or +by using an empty string (i.e. only a NUL byte) as the command line. + +\end{document} diff --git a/doc/user.tex b/doc/user.tex new file mode 100644 index 0000000..93e23f7 --- /dev/null +++ b/doc/user.tex @@ -0,0 +1,3505 @@ +% +% Copyright 1992-1998 by Werner Almesberger. +% Copyright 1999-2000 by John R. Coffman (version 21-3) +% All rights reserved. +% +% See file COPYING for details. +% + +%%def%:= +%:\begin{verbatim} +%:LILO - Generic Boot Loader for Linux ("LInux LOader") by Werner Almesberger +%:=========================================================================== +%: +%: NOTE: This document is no longer maintained. However, it is +%: still current. Changes to LILO for versions 21.2 and later are +%: documented in detail in the 'man' pages for 'lilo' and 'lilo.conf'. +%: Refer to them first, then to this document. +%: +%: +%:Version 21-4 (release) -- John Coffman +%: +%:Minor changes suggested by Werner to show that this release is derived +%:from the source code to his version 21. Added VERSION_MAJOR and +%:VERSION_MINOR to replace VERSION. The file VERSION is replaced by +%:'version.h'. +%: +%:The first and second stage loaders have been modified so that ONLY +%:'lba32' will use EDD packet calls. 'linear' will now always ask the +%:BIOS for the disk geometry, and then use C:H:S addressing. +%: +%: +%:Version 21-2 -- John Coffman +%: +%:This version was created to allow booting on disks larger than 8.4Gb using +%:the Enhanced BIOS call (int 0x13, AH=0x42) and the packet-call interface. +%:These calls are supported on post-1998 systems, and through software BIOS +%:extensions such as EZ-DRIVE(tm). +%: +%:My primary objective in making these changes to LILO, is not to break any- +%:thing. Hence, the 32-bit direct addressing of sectors is supported by a +%:new keyword in the 'lilo.conf' file: "lba32". This keyword is mutually +%:exclusive with the keyword "linear". On the command line, these options +%:are invoked with the new "-L" switch, or the old "-l" switch, respectively. +%: +%:Apologies to Werner Almesberger for not communicating these changes/addi- +%:tions to him directly; but I have not been able to contact him by e-mail +%:at the address he provided in the latest 'lilo.lsm' file. I do not want +%:versions of LILO to get out-of-step. +%: +%:Disk sector addresses are conveyed from the Map Installer (lilo executable) +%:to the boot loaders, first- and second-stages through a 5 byte structure: +%: +%: sector [1..63] plus 2 high bits of Cylinder +%: cylinder [0..1023] low eight bits in this byte +%: device [0..3] for floppies, [0x80..0x8F] for hard disks +%: head [0..254] no, the max is 254, not 255 +%: count [1...] number of sectors to transfer +%: +%:The first two bytes are normally loaded into the CX register, the second two +%:bytes into the DX register, and the last byte into the AL register. This is +%:the call used for the C:H:S addressing scheme of the original IBM-PC BIOS. +%:LILO checks that the 64Kb DMA boundary is never crossed by a call, and that +%:the count never exceeds the sector count of one track on the disk. +%: +%:When 'linear' is specified, a 24-bit, 0 based addressing scheme is employed. +%:The low 8 bits are in 'sector'; the middle 8 bits in 'cylinder'; and the high +%:8 bits are in 'head'. To flag this as a 'linear' address, the 'device' byte +%:has bit 6 set (mask 0x40 or'ed in). The count field is a maximum of 128, +%:since anything greater would cross a 64Kb DMA boundary. It is up to the +%:loader code (second stage only), to check that no track boundary is crossed. +%: +%:The situation is more complicated with 'lba32' addressing. It is flagged with +%:bit 5 of the 'device' byte being set (mask 0x20 or'ed in). The 32-bit address +%:is spread over the 'sector', 'cylinder', 'head', and 'count' fields, from low +%:byte to high byte, respectively. Whenever this full 32-bit address is +%:specified explicitly, the actual sector count to transfer is implied to be +%:one (1), and this fact is flagged in the 'device' byte by setting bit 5 +%:(mask 0x10 or'ed in). When a multi-sector transfer is called for, the high +%:8-bits of the address are NOT specified explicitly, but are assumed to be +%:the same as the previous transfer, the 'count' of sectors to transfer will +%:be in the range [2..127], and bit 5 (mask 0x10) of the 'device' byte will be +%:clear. +%: +%:The first-stage loader uses single sector transfers only, so it uses a +%:simplified disk read routine, always assumes a sector transfer count of 1, +%:and always assumes that the full 32-bit address of the sector is specified +%:when 'lba32' mode is detected in the 'device' byte. However, the second- +%:stage loader is capable of multi-sector transfers when map-compaction has +%:been used (-c switch, or 'compact' global option), so it uses the fully +%:capable read routine to load the -initrd- image, and the -kernel- image. +%: +%:Both 'linear' and 'lba32' will use the Enhanced BIOS packet calls, if they +%:are available. Otherwise, the disk address is converted to C:H:S, using the +%:disk geometry returned by (int 0x13, AH=8). If cylinder overflow occurs -- +%:i.e., cylinder > 1023, then error code '9f' is issued. +%: +%:The BIOS calls used to implement large disk booting conform to the Enhanced +%:Disk Drive Specification, version 3.0, rev 0.8, dated March 12, 1998. This +%:document is available on-line from Phoenix Technologies Ltd., at: +%: +%: http://www.phoenix.com/products/specs.html +%: +%:Known bugs: +%: The chain loader, 'os2_d.b', still will not boot OS2 4.0 from a secondary +%: partition on my "D:" drive. Boot Manager can, and I am still working on +%: the problem. +%:---------------------------------------------------------------------------- +%: +%: +%:Version 21 +%: +%:Important: The file INCOMPAT contains vital (in)compatibility information +%: for this release of LILO. Read it before proceeding. +%: +%:Installing boot loaders is inherently dangerous. Be sure to have some means +%:to boot your system from a different media if you install LILO on your hard +%:disk. +%: +%: +%:There is also a LaTeX version of this document in the "doc" directory. +%:It is much nicer to read than pure ASCII. +%: +%: +%:Installation +%:------------ +%: +%:Please read the file INCOMPAT for compatibility notes. +%: +%:The installation procedure is described in the section "Normal first-time +%:installation". Please read "Booting basics" for the whole story. +%: +%:*** QUICK INSTALLATION *** +%: +%: If you want to install LILO on your hard disk and if you don't want +%: to use all its features, you can use the quick installation script. +%: Read QuickInst for details. +%: +%: +%:\end{verbatim} + +%%beginskip + +\documentclass[fullpage]{article} +\usepackage{ae} +\usepackage[bookmarks,% + pdftitle={Linux Loader (LILO) user manual},% + pdfsubject={Booting on iA32 architecture},% + pdfkeywords={lilo, boot},% + pdfauthor={Werner Almesberger, John Coffman}]% + {hyperref} +\usepackage{ifpdf} + +\parindent=0pt +\parskip=4pt +\tolerance=9000 + +\hyphenation{hexa-decimal} + +% Okay, what follows is more TeX than LaTeX ... + +\def\hditem#1{\hbox to 1.2in{#1\hfil}} +\def\boottwo#1{$$ + \bf + \begin{tabular}{|ll|} + \hline + \hditem{\rm Master Boot Record} & \hditem{\rm Operating system} \\ + \hline + #1 \\ + \hline + \end{tabular} + $$} + +\def\bootthree#1{$$ + \bf + \begin{tabular}{|lll|} + \hline + \hditem{\rm Master Boot Record} & \hditem{\rm Boot sector} & + \hditem{\rm Operating system} \\ + \hline + #1 \\ + \hline + \end{tabular} + $$} + +\def\bootfour#1{$$ + \bf + \begin{tabular}{|llll|} + \hline + \hditem{\rm Master Boot Record} & \hbox to 1.1in{\rm Boot sector\hfil} & + \hditem{\rm Operating systems} & \hbox to 0.4in{\hfil} \\ + \hline + #1 \\ + \hline + \end{tabular} + $$} +\def\sep{\rightarrowfill &} +\def\emptys{&} +\def\branch{\hfill$\longrightarrow$ &} +\def\cont{---\,$\cdots$} +\def\key#1{$[$#1$]$} +\def\LILO{LILO} +\def\meta#1{{\it #1\/}} % ... ... +\def\path#1{{\tt #1}} % ... /foo/bar ... +\def\raw#1{{\tt #1}} % ... raw output ... +\def\craw#1{{\tt #1}} % ... raw output ... +\def\name#1{{\sf #1}} % ... FooBar ... +\def\emphasize#1{{\bf #1}} % ... _don't_ ... +\def\unit#1{\hbox{\tt #1}} % ... \unit{-x foo} ... +%%def\\key{([^{}]*)}=[$1] +%%def\\LILO=LILO +%%def\\meta{([^{}]*)}=<$1> +%%def\\path{([^{}]*)}=$1 +%%def\\raw{([^{}]*)}=~$1~ +%%cmd\\craw{([^{}]*)}=((($x = $1) =~ tr/a-z/A-Z/), $x) +%%def\\name{={ +%%def\\emphasize{([^{}]*)}=\\_$1\\_ +%%def\\underline{([^{}]*)}=$1 +%%def\\begin{command}=\\raw{$SI$SI$SI$SI +%%def\\end{command}=$SO$SO$SO$SO} +%%def\\addtocounter{([^{}]*)}{([^{}]*)}=~ +%%def\\hbox{([^{}]*)}=$1 +%%def(\\unit{[^{} ]*) ([^{}]*})=$1~$2 +%%def\\unit{([^{} ]*)}=$1 +%%def{\$([^{}])\$}=$1 +%%def%4= +% ^^^^ +% four invisible spaces here +%%def%;= +% ^^^^^^^^ +% eight invisible spaces here + +\newenvironment{command}{\def\[{$\bigl[$}\def\]{$\bigr]$}\def\|{$\big\vert$}% + \parindent=-2em\advance\leftskip by -\parindent\vskip -\parskip~\par + \begingroup\tt\textfont0=\font}{% + ~\endgroup\par\advance\hoffset by \parindent} + +\begin{document} + +\title{\LILO \\ + \Large + Generic boot loader for Linux \\ + Version 21 \\ ~\\ + \bf User's guide} +\author{Werner Almesberger \\ + {\tt Werner.Almesberger@epfl.ch}} +\date{December 4, 1998} + +\maketitle +{ + \parskip=-1pt + \setcounter{tocdepth}{2} + \tableofcontents +} +%%endskip + +~\\ +\LILO\ is a versatile boot loader for Linux. It does not depend on a specific +file system, can boot Linux kernel images from +floppy disks and from hard disks and can even act as a ``boot manager'' for +other operating +systems.\footnote{PC/MS-DOS, DR DOS, OS/2, Windows 95, Windows NT, 386BSD, +SCO UNIX, Unixware, $\ldots$} + +One of up to sixteen different images can be selected at boot time. +Various parameters, such as the root +device, can be set independently for each kernel. \LILO\ can even be +used as the master boot record. + +This document introduces the basics of disk organization and booting, +continues with an overview of common boot techniques and finally describes +installation and use of \LILO\ in greater detail. The troubleshooting +section at the end describes diagnostic messages and contains suggestions +for most problems that have been observed in the past. + +Please read at least the sections about installation and configuration if +you're already using an older version of \LILO. This distribution is +accompanied by a file named \path{INCOMPAT} that describes further +incompatibilities to older versions. + +For the impatient: there is a quick-installation script to create +a simple but quite usable installation. See section \ref{quickinst} for +details. + +But wait $\ldots$ here are a few easy rules that will help you to avoid +most problems people experience with \LILO: + +\begin{itemize} + \item \emphasize{Don't panic.} If something doesn't work, try to find + out what is wrong, try to verify your assumption and only then attempt + to fix it. + \item Read the documentation. Especially if what the system does doesn't + correspond to what you think it should do. + \item Make sure you have an emergency boot disk, that you know how to + use it, and that it is always kept up to date. + \item Run \path{/sbin/lilo} \emphasize{whenever} the kernel or any part + of \LILO, including its configuration file, has changed. When in doubt, + run it. You can't run \path{/sbin/lilo} too many times. + \item If performing a destructive upgrade and/or erasing your Linux + partitions, de-install \LILO\ \emphasize{before} that if using it as the + MBR. + \item Don't trust setup scripts. Always verify the \path{/etc/lilo.conf} + they create before booting. + \item If using a big disk, be prepared for inconveniences: you may have + to use the \craw{linear} option. +\end{itemize} + + +\newpage +\subsection*{System overview} + +\LILO\ is a collection of several programs and other files: + +\begin{description} + \item[The map installer] is the program you run under Linux to put all + files belonging to \LILO\ at the appropriate places and to record + information about the location of data needed at boot time. This program + normally resides in \path{/sbin/lilo}. It has to be run to refresh that + information whenever any part of the system that \LILO\ knows about + changes, e.g. after installing a new kernel. + \item[Various files] contain data \LILO\ needs at boot time, e.g. the + boot loader. Those files normally reside in \path{/boot}. The most + important files are the boot loader (see below) and the map file + (\path{/boot/map}), where the map installer records the location of + the kernel(s).\footnote{\LILO\ does not know how to read a file system. + Instead, the map installer asks the kernel for the physical location of + files (e.g. the kernel image(s)) and records that information. This + allows \LILO\ to work with most file systems that are supported by + Linux.} Another important file is the configuration file, which is + normally called \path{/etc/lilo.conf} + \item[The boot loader] is the part of \LILO\ that is loaded by the BIOS + and that loads kernels or the boot sectors of other operating systems. + It also provides a simple command-line interface to interactively + select the item to boot and to add boot options. +\end{description} + +\LILO\ primarily accesses the following parts of the system: + +\begin{description} + \item[The root file system partition] is important for two reasons: first, + \LILO\ sometimes has to tell the kernel where to look for it. Second, it + is frequently a convenient place for many other items \LILO\ uses, such + as the boot sector, the \path{/boot} directory, and the kernels. + \item[The boot sector] contains the first part of \LILO's boot loader. It + loads the much larger second-stage loader. Both loaders are typically + stored in the file \path{/boot/boot.b} + \item[The kernel] is loaded and started by the boot loader. Kernels + typically reside in the root directory or in \path{/boot}. +\end{description} + +Note that many of the files \LILO\ needs at boot time have to be accessible +with the BIOS. This creates certain restrictions, see section \ref{broken}. + + +\newpage +\section{Introduction} + +The following sections describe how PCs +boot in general and what has to be known when booting Linux and using +\LILO\ in particular. + + +\subsection{Disk organization} +\label{diskorg} + +When designing a boot concept, it is important to understand some of the +subtleties of how PCs typically organize disks. The most simple case are +floppy disks. They consist of a boot sector, some administrative +data (FAT or super block, etc.) and the data area. Because that +administrative data is irrelevant as far as booting is concerned, it is +regarded as part of the data area for simplicity. + +%%beginskip +$$ +\begin{tabular}{|c|c|} + \hline + Boot sector & \hbox to 1.5in{\hfil} \\ + \cline{1-1} + \multicolumn{2}{|c|}{} \\ + \multicolumn{2}{|c|}{Data area} \\ + \multicolumn{2}{|c|}{} \\ + \hline + \end{tabular} +$$ +%%endskip +%:\begin{verbatim} +%; +---------------------------+ +%; |Boot sector| | +%; |-----------+ | +%; | | +%; | Data area | +%; | | +%; | | +%; +---------------------------+ +%:\end{verbatim} + +The entire disk appears as one device (e.g. \path{/dev/fd0}) on Linux. + +The MS-DOS boot sector has the following structure: + +%%beginskip +$$ +\begin{tabular}{r|c|} + \cline{2-2} + \tt 0x000 & Jump to the program code\\ + \cline{2-2} + \tt 0x003 & \\ + & Disk parameters \\ + & \\ + \cline{2-2} + \tt 0x02C/0x03E & \\ + & Program code \\ + & \\ + & \\ + \cline{2-2} + \tt 0x1FE & Magic number (0xAA55)\\ + \cline{2-2} +\end{tabular} +$$ +%%endskip +%:\begin{verbatim} +%; +------------------------+ +%; 0x000 |Jump to the program code| +%; |------------------------| +%; 0x003 | | +%; | Disk parameters | +%; | | +%; |------------------------| +%;0x02C/0x03E | | +%; | Program code | +%; | | +%; | | +%; |------------------------| +%; 0x1FE | Magic number (0xAA55) | +%; +------------------------+ +%:\end{verbatim} + +\LILO\ uses a similar boot sector, but it does not contain the disk +parameters part. This is no problem for Minix, Ext2 or similar file systems, +because +they don't look at the boot sector, but putting a \LILO\ boot sector on an +MS-DOS file system would make it inaccessible for MS-DOS. + +Hard disks are organized in a more complex way than floppy disks. They +contain several data areas called partitions. Up to four so-called +primary partitions can exist on an MS-DOS hard disk. If more partitions +are needed, one primary partition is used as an extended partition that +contains several logical partitions. + +The first sector of each hard disk contains a partition table, and an +extended partition and \emphasize{each} logical partition contains a partition +table too. + +%%beginskip +$$ +\begin{tabular}{|l|l|l|} + \hline + \multicolumn{3}{|l|}{Partition table\hbox to 2in{\hfil\tt /dev/hda~}} \\ + \cline{2-3} + & \multicolumn{2}{l|}{Partition 1\hfill {\tt /dev/hda1}} \\ + & \multicolumn{2}{l|}{} \\ + \cline{2-3} + & \multicolumn{2}{l|}{Partition 2\hfill {\tt /dev/hda2}} \\ + & \multicolumn{2}{l|}{} \\ + \hline +\end{tabular} +$$ +%%endskip +%:\begin{verbatim} +%;+--------------------------------------------+ +%;| Partition table /dev/hda | +%;| +------------------------------------------| +%;| | Partition 1 /dev/hda1 | +%;| | | +%;| |------------------------------------------| +%;| | Partition 2 /dev/hda2 | +%;| | | +%;+--------------------------------------------+ +%:\end{verbatim} + +The entire disk can be accessed as \path{/dev/hda}, \path{/dev/hdb}, +\path{/dev/sda}, etc. The primary partitions are \path{/dev/hda1 $\ldots$ +/dev/hda4}. + +%%beginskip +$$ +\begin{tabular}{|l|l|l|} + \hline + \multicolumn{3}{|l|}{Partition table\hbox to 2in{\hfil\tt /dev/hda~}} \\ + \cline{2-3} + & \multicolumn{2}{l|}{Partition 1\hfill {\tt /dev/hda1}} \\ + & \multicolumn{2}{l|}{} \\ + \cline{2-3} + & \multicolumn{2}{l|}{Partition 2\hfill {\tt /dev/hda2}} \\ + & \multicolumn{2}{l|}{} \\ + \cline{2-3} + & \multicolumn{2}{l|}{Extended partition\hfill {\tt /dev/hda3}} \\ + \cline{3-3} + & & Extended partition table \\ + \cline{3-3} + & & Partition 3\hfill {\tt /dev/hda5}\\ + & & \\ + \cline{3-3} + & & Extended partition table \\ + \cline{3-3} +& & Partition 4\hfill {\tt /dev/hda6}\\ + & & \\ + \hline +\end{tabular} +$$ +%%endskip +%:\begin{verbatim} +%;+--------------------------------------------+ +%;| Partition table /dev/hda | +%;| +------------------------------------------| +%;| | Partition 1 /dev/hda1 | +%;| | | +%;| |------------------------------------------| +%;| | Partition 2 /dev/hda2 | +%;| | | +%;| |------------------------------------------| +%;| | Extended partition /dev/hda3 | +%;| | +----------------------------------------| +%;| | | Extended partition table | +%;| | |----------------------------------------| +%;| | | Partition 3 /dev/hda5 | +%;| | | | +%;| | |----------------------------------------| +%;| | | Extended partition table | +%;| | |----------------------------------------| +%;| | | Partition 4 /dev/hda6 | +%;| | | | +%;+--------------------------------------------+ +%:\end{verbatim} + +This hard disk has two primary partitions and an extended partition +that contains two logical partitions. They are accessed as +\path{/dev/hda5 $\ldots$} + +Note that the partition tables of logical partitions are not accessible +as the first blocks of some devices, while the main partition table, +all boot sectors and the partition tables of extended partitions are. + +Partition tables are stored in partition boot sectors. Normally, only the +partition boot sector of the entire disk is used as a boot sector. It is +also frequently called the master boot record (MBR). Its structure is as +follows: + +%%beginskip +$$ +\begin{tabular}{r|c|} + \cline{2-2} + \tt 0x000 & \\ + & Program code \\ + & \\ + & \\ + \cline{2-2} + \tt 0x1BE & Partition table \\ + & \\ + \cline{2-2} + \tt 0x1FE & Magic number (0xAA55) \\ + \cline{2-2} +\end{tabular} +$$ +%%endskip +%:\begin{verbatim} +%; +------------------------+ +%; 0x000 | | +%; | Program code | +%; | | +%; | | +%; |------------------------| +%; 0x1BE | Partition table | +%; | | +%; |------------------------| +%; 0x1FE | Magic number (0xAA55) | +%; +------------------------+ +%:\end{verbatim} + +The \LILO\ boot sector is designed to be usable as a partition boot sector. +(I.e. there is room for the partition table.) +Therefore, the \LILO\ boot sector can be stored at the following locations: + +\begin{itemize} + \item boot sector of a Linux floppy disk. (\path{/dev/fd0}, $\ldots$) + \item MBR of the first hard disk. (\path{/dev/hda}, \path{/dev/sda}, $\ldots$) + \item boot sector of a primary Linux file system partition on the first hard + disk. (\path{/dev/hda1}, $\ldots$) + \item partition boot sector of an extended partition on the first hard disk. + (\path{/dev/hda1}, $\ldots$)\footnote{Most FDISK-type programs don't + believe in booting from an extended partition and refuse to + activate it. \LILO\ is accompanied by a simple program + (\name{activate}) that doesn't have this restriction. Linux \name{fdisk} + also supports activating extended partitions.} +\end{itemize} + +It \emphasize{can't} be stored at any of the following locations: + +\begin{itemize} + \item boot sector of a non-Linux floppy disk or primary partition. + \item a Linux swap partition. + \item boot sector of a logical partition in an extended partition.% +\footnote{\LILO\ can be forced to put the boot sector on such a + partition by using the \raw{-b} option or the \craw{boot} variable. + However, only few programs that operate as master boot records + support booting from a logical partition.} + \item on the second hard disk. (Unless for backup installations, + if the current first disk will be removed or disabled, or if some + other boot loader is used, that is capable of loading boot sectors from + other drives.) +\end{itemize} + +Although \LILO\ tries to detect attempts to put its boot sector at an +invalid location, you should not rely on that. + + +\subsection{Booting basics} + +When booting from a floppy disk, the first sector of the disk, the so-called +boot sector, is loaded. That boot sector contains a small program that loads +the respective operating system. MS-DOS boot sectors also contain +a data area, where disk and file system parameters (cluster size, number of +sectors, number of heads, etc.) are stored. + +When booting from a hard disk, the very first sector of that disk, the +so-called master boot record (MBR) is loaded. This sector contains a +loader program and the partition table of the disk. The loader program +usually loads the boot sector, as if the system was booting from a floppy. + +Note that there is no functional difference between the MBR and the boot +sector other than that the MBR contains the partition information but +doesn't contain any file system-specific information (e.g. MS-DOS disk +parameters). + +The first 446 (0x1BE) bytes of the MBR are used by the loader program. +They are followed by the partition table, with a length of 64 (0x40) +bytes. The last two bytes contain a magic number that is sometimes used to +verify that a given sector really is a boot sector. + +There is a large number of possible boot configurations. The most common +ones are described in the following sections. + + +\subsubsection{MS-DOS alone} + +%%beginskip +\bootthree{DOS-MBR \sep MS-DOS \sep COMMAND.COM} +%%endskip +%:\begin{verbatim} +%;+-------------------------------------------------------+ +%;| Master Boot Record Boot sector Operating system | +%;|-------------------------------------------------------| +%;| DOS-MBR ------------> MS-DOS ------> COMMAND.COM | +%;+-------------------------------------------------------+ +%:\end{verbatim} + +This is what usually happens when MS-DOS boots from a hard disk: the DOS-MBR +determines the active partition and loads the MS-DOS boot sector. This boot +sector loads MS-DOS and finally passes control to \path{COMMAND.COM}. (This is +greatly simplified.) + + +\subsubsection{LOADLIN} + +%%beginskip +\bootfour{DOS-MBR \sep MS-DOS \sep COMMAND.COM \emptys \\ + \emptys \branch LOADLIN \sep Linux} +%%endskip +%:\begin{verbatim} +%4+------------------------------------------------------------+ +%4| Master Boot Record Boot sector Operating system | +%4|------------------------------------------------------------| +%4| DOS-MBR ------------> MS-DOS ------> COMMAND.COM | +%4| ---> LOADLIN ------> Linux | +%4+------------------------------------------------------------+ +%:\end{verbatim} + +A typical \name{LOADLIN} setup: everything happens like when booting MS-DOS, +but in \path{CONFIG.SYS} or \path{AUTOEXEC.BAT}, LOADLIN is invoked. Typically, +a program like \path{BOOT.SYS} is used to choose among configuration sections +in \path{CONFIG.SYS} and \path{AUTOEXEC.BAT}. +This approach has the pleasant property that no boot +sectors have to be altered. + +Please refer to the documentation accompanying the LOADLIN package for +installation instructions and further details. + + +\subsubsection{\LILO\ started by DOS-MBR} + +%%beginskip +\bootthree{DOS-MBR \sep LILO \sep Linux \\ + \branch {\rm other OS} \emptys} +%%endskip +%:\begin{verbatim} +%;+-------------------------------------------------------+ +%;| Master Boot Record Boot sector Operating system | +%;|-------------------------------------------------------| +%;| DOS-MBR ------------> LILO --------> Linux | +%;| ---> other OS | +%;+-------------------------------------------------------+ +%:\end{verbatim} + +This is a ``safe'' \LILO\ setup: \LILO\ is booted by the DOS-MBR. No other boot +sectors have to be touched. If the other OS (or one of them, if there are +several other operating systems being used) should be booted without +using \LILO, the other +partition has to be marked ``active'' with \name{fdisk} or \name{activate}. + +Installation: +\begin{itemize} + \item install \LILO\ with its boot sector on the Linux partition. + \item use \name{fdisk} or \name{activate} to make that partition active. + \item reboot. +\end{itemize} + +Deinstallation: +\begin{itemize} + \item make a different partition active. + \item install whatever should replace \LILO\ and/or Linux. +\end{itemize} + + +\subsubsection{Several alternate branches} + +%%beginskip +\bootfour{DOS-MBR \sep MS-DOS \sep COMMAND.COM \emptys \\ + \emptys \branch LOADLIN \sep Linux \\ + \branch LILO \sep Linux \emptys \\ + \emptys \branch MS-DOS \cont \emptys} +%%endskip +%:\begin{verbatim} +%4+------------------------------------------------------------+ +%4| Master Boot Record Boot sector Operating system | +%4|------------------------------------------------------------| +%4| DOS-MBR ------------> MS-DOS ------> COMMAND.COM | +%4| ---> LOADLIN ------> Linux | +%4| ---> LILO --------> Linux | +%4| ---> MS-DOS --- ... | +%4+------------------------------------------------------------+ +%:\end{verbatim} + +An extended form of the above setup: the MBR is not changed and both branches +can either boot Linux or MS-DOS. (\LILO\ could also boot other +operating systems.) + + +\subsubsection{\LILO\ started by \name{BOOTACTV}\protect\footnotemark} +\footnotetext{Other, possibly better known boot switchers, e.g. \name{OS/2 +BootManager} operate in a similar way. The installation procedures typically +vary.} + +%%beginskip +\bootthree{BOOTACTV \sep LILO \sep Linux \\ + \branch {\rm other OS} \emptys} +%%endskip +%:\begin{verbatim} +%;+-------------------------------------------------------+ +%;| Master Boot Record Boot sector Operating system | +%;|-------------------------------------------------------| +%;| BOOTACTV -----------> LILO --------> Linux | +%;| ---> other OS | +%;+-------------------------------------------------------+ +%:\end{verbatim} + +Here, the MBR is replaced by \name{BOOTACTV} (or any other interactive boot +partition selector) and the choice between Linux and the +other operating system(s) can be made at boot time. This approach should be +used if \LILO\ fails to boot the other operating system(s).\footnote{% +And the author would like to be notified if booting the other operating +system(s) doesn't work with \LILO, but if it works with an other boot partition +selector.} + +Installation: +\begin{itemize} + \item boot Linux. + \item make a backup copy of your MBR on a floppy disk, e.g. \\ + \verb"dd if=/dev/hda of=/fd/MBR bs=512 count=1" + \item install \LILO\ with the boot sector on the Linux partition. + \item install \name{BOOTACTV} as the MBR, e.g. \\ + \verb"dd if=bootactv.bin of=/dev/hda bs=446 count=1" + \item reboot. +\end{itemize} + +Deinstallation: +\begin{itemize} + \item boot Linux. + \item restore the old MBR, e.g. \\ + \verb"dd if=/MBR of=/dev/hda bs=446 count=1" \\ + or \verb"FDISK /MBR" under MS-DOS. +\end{itemize} + +If replacing the MBR appears undesirable and if a second Linux partition +exists (e.g. \path{/usr}, \emphasize{not} a swap partition), \name{BOOTACTV} +can be merged with +the partition table and stored as the ``boot sector'' of that partition. +Then, the partition can be marked active to be booted by the DOS-MBR. + +Example: +\begin{verbatim} +# dd if=/dev/hda of=/dev/hda3 bs=512 count=1 +# dd if=bootactv.bin of=/dev/hda3 bs=446 count=1 +\end{verbatim} + +\emphasize{WARNING:} Whenever the disk is re-partitioned, the merged boot +sector on that ``spare'' Linux partition has to be updated too. + + +\subsubsection{\LILO\ alone} + +%%beginskip +\boottwo{LILO \sep Linux \\ + \branch {\rm other OS}} +%%endskip +%:\begin{verbatim} +%; +----------------------------------------+ +%; | Master Boot Record Operating system | +%; |----------------------------------------| +%; | LILO ---------------> Linux | +%; | ---> other OS | +%; +----------------------------------------+ +%:\end{verbatim} + +\LILO\ can also take over the entire boot procedure. If installed as the MBR, +\LILO\ is responsible for either booting Linux or any other OS. This approach +has the disadvantage, that the old MBR is overwritten and has to be restored +(either from a backup copy, with \verb"FDISK /MBR" on recent versions of +MS-DOS or by overwriting it with something like \name{BOOTACTV}) if Linux +should ever be removed from the system. + +You should verify that \LILO\ is able to boot your other operating system(s) +before relying on this method. + +Installation: +\begin{itemize} + \item boot Linux. + \item make a backup copy of your MBR on a floppy disk, e.g. \\ + \verb"dd if=/dev/hda of=/fd/MBR bs=512 count=1" + \item install \LILO\ with its boot sector as the MBR. + \item reboot. +\end{itemize} + +Deinstallation: +\begin{itemize} + \item boot Linux. + \item restore the old MBR, e.g. \\ + \verb"dd if=/fd/MBR of=/dev/hda bs=446 count=1" +\end{itemize} + +If you've installed \LILO\ as the master boot record, you have to +explicitly specify the boot sector (configuration variable +\craw{boot=}$\ldots$) when updating the map. Otherwise, it +will try to use the boot sector of your current root partition, which +will usually work, but it will probably leave your system unbootable. + + +\subsubsection{Names} + +The following names have been used to describe boot sectors or parts of +operating systems: + +\begin{description} + \item[``DOS-MBR''] is the original MS-DOS MBR. It scans the partition + table for a partition that is marked ``active'' and loads the boot + sector of that partition. Programs like MS-DOS' \name{FDISK}, Linux + \name{fdisk} or \name{activate} (accompanies \LILO) + can change the active marker in the partition table. + \item[``MS-DOS''] denotes the MS-DOS boot sector that loads the other parts + of the system (\path{IO.SYS}, etc.). + \item[``COMMAND.COM''] is the standard command interpreter of MS-DOS. + \item[``LOADLIN''] is a program that loads a Linux + kernel image from an + MS-DOS partition into memory and executes it. It is usually invoked + from \path{CONFIG.SYS} and is used in combination with a \path{CONFIG.SYS} + configuration switcher, like BOOT.SYS.\footnote{ + \name{LOADLIN} is available for anonymous FTP from \\ + \path{ftp://tsx-11.mit.edu/pub/linux/dos\_utils/lodlin\meta{n}.tar.gz} \\ + \path{ftp://sunsite.unc.edu/pub/Linux/system/boot/dualboot/lodlin\meta{n}% +.tgz} \\ + \name{BOOT.SYS} is available for anonymous FTP from \\ + \path{ftp://ftp.funet.fi/pub/Linux/tools/boot142.zip}} + \item[``LILO''] can either load a Linux kernel or the boot sector of any + other operating system. It has a first stage boot sector that + loads the remaining parts of \LILO\ from various locations.\footnote{% + \LILO\ can be found in \\ + \path{ftp://tsx-11.mit.edu/pub/linux/packages/lilo/lilo-\meta{n}.tar.gz} + \\ + \path{ftp://sunsite.unc.edu/pub/Linux/system/boot/lilo/lilo-% +\meta{n}.tar.gz} \\ + \path{ftp://lrcftp.epfl.ch/pub/linux/local/lilo/lilo-\meta{n}.tar.gz}} + \item[``BOOTACTV''] permits interactive selection of the partition from + which the boot sector should be read. If no key is pressed within a + given interval, the partition marked active is booted. \name{BOOTACTV} is + included in the \name{pfdisk} package. There are also several similar + programs, like PBOOT and OS-BS.\footnote{\name{pfdisk} is available for + anonymous FTP from \\ + \path{ftp://sunsite.unc.edu/pub/Linux/utils/disk-management/pfdisk.tar.Z} + or \\ + \path{ftp://ftp.funet.fi/pub/Linux/tools/pfdisk.tar.Z} \\ + PBOOT can be found in \\ + \path{ftp://ftp.funet.fi/pub/Linux/tools/pboot.zip}} +\end{description} + + +\subsection{Choosing the ``right'' boot concept} + +Although \LILO\ can be installed in many different ways, the choice is +usually limited by the present setup and therefore, +typically only a small number of configurations which fit naturally +into an existing system remains. The following sections describe various +possible cases. See also section \ref{broken}. + +The configuration file \path{/etc/lilo.conf} for the examples +could look like this: + +\begin{verbatim} +boot = /dev/hda2 +compact +image = /vmlinuz +image = /vmlinuz.old +other = /dev/hda1 + table = /dev/hda + label = msdos +\end{verbatim} + +It installs a Linux kernel image (\path{/vmlinuz}), +an alternate Linux kernel image (\path{/vmlinuz.old}) and +a chain loader to boot MS-DOS from \path{/dev/hda1}. The option \craw{compact} +on the second line instructs the map installer to optimize loading. + +In all examples, the names of the IDE-type hard disk devices +(\path{/dev/hda$\ldots$}) are used. Everything applies to other disk types +(e.g. SCSI disks; \path{/dev/sda$\ldots$}) too. + + +\subsubsection{BIOS restrictions} +\label{broken} + +Nowadays, an increasing number of systems is equipped with comparably large +disks or even with multiple disks. At the time the disk interface of the +standard PC BIOS has been designed (about 16 years ago), such configurations +were apparently considered to be too unlikely to be worth supporting. + +The most common BIOS restrictions that affect \LILO\ are the limitation to +two hard disks and the inability to access more than 1024 cylinders per +disk. \LILO\ can detect both conditions, but in order to work around the +underlying problems, manual intervention is necessary. + +The drive limit does not exist in every BIOS. Some modern motherboards +and disk controllers are equipped with a BIOS that supports more (typically +four) disk drives. When attempting to access the third, fourth, etc. drive, +\LILO\ prints a warning message but continues. Unless the BIOS really +supports more than two drives, the system will \emphasize{not} be able to +boot in that case.\footnote{However, if only ``unimportant'' parts of the +system are located on the ``high'' drives, some functionality may be +available.} + +The cylinder limit is a very common problem with IDE disks. There, the +number of cylinders may already exceed 1024 if the drive has a capacity +of more than 504 MB. Many SCSI driver BIOSes present the disk geometry +in a way that makes the limit occur near 1 GB. Modern disk controllers +may even push the limit up to about 8 GB. All cylinders beyond the +1024th are inaccessible for the BIOS. \LILO\ detects this problem and +aborts the installation (unless the \craw{linear} option is used, see +section \ref{cfgglo}). + +Note that large partitions that only partially extend into the ``forbidden +zone'' are still in jeopardy even if they appear to work at first, because +the file system does not know about the restrictions and may allocate +disk space from the area beyond the 1024th cylinder when installing new +kernels. \LILO\ therefore prints a warning message but continues as long +as no imminent danger exists. + +There are four approaches of how such problems can be solved: +\begin{itemize} + \item use of a different partition which is on an accessible disk and + which does not exceed the 1024 cylinder limit. If there is only a DOS + partition which fulfills all the criteria, that partition can be + used to store the relevant files. (See section \ref{viados}.) + \item rearranging partitions and disks. This is typically a destructive + operation, so extra care should be taken to make good backups. + \item if the system is running DOS or Windows 95, \name{LOADLIN} can be + used instead of \LILO. + \item if all else fails, installation of a more capable BIOS, a different + controller or a different disk configuration. +\end{itemize} + +\LILO\ depends on the BIOS to load the following items: +\begin{itemize} + \item \path{/boot/boot.b} + \item \path{/boot/map} (created when running \path{/sbin/lilo}) + \item all kernels + \item the boot sectors of all other operating systems it boots + \item the startup message, if one has been defined +\end{itemize} + +Normally, this implies that the Linux root file system should be in the +``safe'' area. However, it is already sufficient to put all kernels into +\path{/boot} and to either mount a ``good'' partition on \path{/boot} or +to let \path{/boot} be a symbolic link pointing to or into such a +partition. + +See also \path{/usr/src/linux/Documentation/ide.txt} (or +\path{/usr/src/linux/drivers/block/README.ide} in older kernels) for a detailed +description of problems with large disks. + + +\subsubsection{One disk, Linux on a primary partition} + +If at least one primary partition of the first hard disk is used as a +Linux file system (\path{/}, \path{/usr}, etc. but \emphasize{not} as a swap +partition), the \LILO\ boot sector should be stored on that partition +and it should be booted by the original master boot record or by a +program like \name{BOOTACTV}. + +%%beginskip +$$ + \begin{tabular}{r|c|c|} + \cline{2-3} + & \multicolumn{2}{|l|}{MBR\hbox to 1.3in{\hfill\tt /dev/hda~}} \\ + \cline{3-3} + & & MS-DOS\hfill\tt /dev/hda1 \\ + \cline{3-3} + $\rightarrow$ & & Linux {\tt /}\hfill\tt /dev/hda2 \\ + \cline{2-3} + \end{tabular} +$$ +%%endskip +%:\begin{verbatim} +%; +--------------------------+ +%; | MBR /dev/hda | +%; | +------------------------| +%; | | MS-DOS /dev/hda1 | +%; | |------------------------| +%;--> | | Linux / /dev/hda2 | +%; +--------------------------+ +%:\end{verbatim} + +In this example, the \craw{boot} variable could be omitted, because +the boot sector is on the root partition. + + +\subsubsection{One disk, Linux on a logical partition} + +If no primary partition is available for Linux, but at least one logical +partition of an extended partition on the first hard disk contains a +Linux file system, the \LILO\ boot sector should be stored in the partition +sector of the extended partition and it should be booted by the original +master boot record or by a program like \name{BOOTACTV}. + +%%beginskip +$$ + \begin{tabular}{r|c|c|c|} + \cline{2-4} + & \multicolumn{3}{|l|}{MBR\hbox to 1.3in{\hfill\tt /dev/hda~}} \\ + \cline{3-4} + & & \multicolumn{2}{|l|}{MS-DOS\hfill\tt /dev/hda1} \\ + \cline{3-4} + $\rightarrow$ & & \multicolumn{2}{|l|}{Extended\hfill\tt /dev/hda2} \\ + \cline{4-4} + & & & Linux\hfill\tt /dev/hda5 \\ + \cline{4-4} + & & & $\ldots$\hfill\tt /dev/hda6 \\ + \cline{2-4} + \end{tabular} +$$ +%%endskip +%:\begin{verbatim} +%; +--------------------------+ +%; | MBR /dev/hda | +%; | +------------------------| +%; | | MS-DOS /dev/hda1 | +%; | |------------------------| +%;--> | | Extended /dev/hda2 | +%; | | +----------------------| +%; | | | Linux /dev/hda5 | +%; | | |----------------------| +%; | | | ... /dev/hda6 | +%; +--------------------------+ +%:\end{verbatim} + +Because many disk partitioning programs refuse to make an extended +partition (in our example \path{/dev/hda2}) active, you might have to +use \name{activate}, which comes with the \LILO\ distribution. + +OS/2 BootManager should be able to boot \LILO\ boot sectors from logical +partitions. The installation on the extended partition itself is not +necessary in this case. + + +\subsubsection{Two disks, Linux (at least partially) on the first disk} + +This case is equivalent to the configurations where only one disk +is in the system. The Linux boot sector resides on the first hard +disk and the second disk is used later in the boot process. + +Only the location of the boot sector matters -- everything +else (\path{/boot/boot.b}, +\path{/boot/map}, the root file system, a swap partition, other +Linux file systems, etc.) can be located anywhere on the second disk, +provided that the constraints described in section \ref{broken} are met. + + +\subsubsection{Two disks, Linux on second disk, first disk has an extended + partition} + +If there is no Linux partition on the first disk, but there is an +extended partition, the \LILO\ boot sector can be stored in the partition +sector of the extended partition and it should be booted by the original +master boot record or by a program like \name{BOOTACTV}. + +%%beginskip +$$ + \begin{tabular}{r|c|c|c|c|c|c|} + \multicolumn{1}{r}{} + & \multicolumn{3}{c}{\bf First disk} & + \multicolumn{1}{r}{\qquad} + & \multicolumn{2}{c}{\bf Second disk} \\ + \cline{2-4}\cline{6-7} + & \multicolumn{3}{|l|}{MBR\hbox to 1.3in{\hfill\tt /dev/hda~}} & + & \multicolumn{2}{|l|}{MBR\hbox to 1.3in{\hfill\tt /dev/hdb~}} \\ + \cline{3-4}\cline{7-7} + & & \multicolumn{2}{|l|}{MS-DOS\hfill\tt /dev/hda1} & + & & Linux\hfill\tt /dev/hdb1 \\ + \cline{3-4}\cline{7-7} + $\rightarrow$ & & \multicolumn{2}{|l|}{Extended\hfill\tt /dev/hda2} & + & & $\ldots$\hfill\tt /dev/hdb2 \\ + \cline{4-4} + & & & $\ldots$\hfill\tt /dev/hda5 & & & \\ + \cline{4-4} + & & & $\ldots$\hfill\tt /dev/hda6 & & & \\ + \cline{2-4}\cline{6-7} + \end{tabular} +$$ +%%endskip +%:\begin{verbatim} +%4 FIRST DISK SECOND DISK +%4 +--------------------------+ +--------------------------+ +%4 | MBR /dev/hda | | MBR /dev/hdb | +%4 | +------------------------| | +------------------------| +%4 | | MS-DOS /dev/hda1 | | | Linux /dev/hdb1 | +%4 | |------------------------| | |------------------------| +%4--> | | Extended /dev/hda2 | | | ... /dev/hdb2 | +%4 | | +----------------------| | | | +%4 | | | ... /dev/hda5 | | | | +%4 | | |----------------------| | | | +%4 | | | ... /dev/hda6 | | | | +%4 +--------------------------+ +--------------------------+ +%:\end{verbatim} + +The program \name{activate}, that accompanies \LILO, may have to be used to +set the active marker on an extended partition, because MS-DOS' \name{FDISK} +and some older version of Linux \name{fdisk} refuse to do that. (Which is +generally a good idea.) + + +\subsubsection{Two disks, Linux on second disk, first disk has no + extended partition} + +If there is neither a Linux partition nor an extended partition on the first +disk, then there's only one place left, where a \LILO\ boot sector could be +stored: the master boot record. + +In this configuration, \LILO\ is responsible for booting all other operating +systems too. + +%%beginskip +$$ + \begin{tabular}{r|c|c|c|c|c|} + \multicolumn{1}{r}{} + & \multicolumn{2}{c}{\bf First disk} & + \multicolumn{1}{r}{\qquad} + & \multicolumn{2}{c}{\bf Second disk} \\ + \cline{2-3}\cline{5-6} + $\rightarrow$ & \multicolumn{2}{|l|}{MBR\hbox to 1.3in{ + \hfill\tt /dev/hda~}} & + & \multicolumn{2}{|l|}{MBR\hbox to 1.3in{\hfill\tt /dev/hdb~}} \\ + \cline{3-3}\cline{6-6} + & & MS-DOS\hfill\tt /dev/hda1 & + & & Linux\hfill\tt /dev/hdb1 \\ + \cline{3-3}\cline{6-6} + & & $\ldots$\hfill\tt /dev/hda2 & + & & $\ldots$\hfill\tt /dev/hdb2 \\ + \cline{2-3}\cline{5-6} + \end{tabular} +$$ +%%endskip +%:\begin{verbatim} +%4 FIRST DISK SECOND DISK +%4 +--------------------------+ +--------------------------+ +%4--> | MBR /dev/hda | | MBR /dev/hdb | +%4 | +------------------------| | +------------------------| +%4 | | MS-DOS /dev/hda1 | | | Linux /dev/hdb1 | +%4 | |------------------------| | |------------------------| +%4 | | ... /dev/hda2 | | | ... /dev/hdb2 | +%4 +--------------------------+ +--------------------------+ +%:\end{verbatim} + +You should back up your old MBR before installing \LILO\ and verify that +\LILO\ is able to boot your other operating system(s) before relying on +this approach. + +The line \verb"boot = /dev/hda2" in \path{/etc/lilo.conf} would have to be +changed to \verb"boot = /dev/hda" in this example. + + +\subsubsection{More than two disks} + +On systems with more than two disks, typically only the first two can +be accessed. The configuration choices are therefore the same as with +two disks. + +When attempting to access one of the extra disks, \LILO\ displays a +warning message (\raw{Warning: BIOS drive 0x\meta{number} may not be +accessible}) but does not abort. This is done in order to allow +the lucky few whose BIOS (or controller-BIOS) does support more than +two drives to make use of this feature. By all others, this warning +should be considered a fatal error. + +Note that the two disks restriction is only imposed by the BIOS. +Linux normally has no problems using all disks once it is booted. + + +\subsubsection{\path{/boot} on a DOS partition} +\label{viados} + +Recent kernels support all the functions \LILO\ needs to map files also +on MS-DOS (or UMSDOS) file systems. Since DOS partitions tend to occupy +exactly the places where BIOS restrictions (see section \ref{broken}) +are invisible, they're an ideal location for \path{/boot} if the native +Linux file systems can't be used because of BIOS problems. + +In order to accomplish this, the DOS partition is mounted read-write, +a directory (e.g. \path{/dos/linux}) is created, all files from +\path{/boot} are moved to that directory, \path{/boot} is replaced by +a symbolic link to it, the kernels are also moved to the new directory, +their new location is recorded in \path{/etc/lilo.conf}, and finally +\path{/sbin/lilo} is run. + +From then on, new kernels must always be copied into that directory on +the DOS partition before running \path{/sbin/lilo}, e.g. when recompiling +a kernel, the standard procedure changes from + +\begin{verbatim} +# make zlilo +\end{verbatim} + +to + +\begin{verbatim} +# make zImage +# mv /dos/linux/vmlinuz /dos/linux/vmlinuz.old +# mv arch/i386/boot/zImage /dos/linux/vmlinuz +# /sbin/lilo +\end{verbatim} + +\emphasize{WARNING:} De-fragmenting such a DOS partition is likely to +make Linux or even the whole system unbootable. Therefore, the DOS +partition should either not be de-fragmented, or a Linux boot disk +should be prepared (and tested) to bring up Linux and to run +\path{/sbin/lilo} after the de-fragmentation.\footnote{Setting the +``system'' attribute from DOS on the critical files (e.g. everything +in \path{C:$\backslash$LINUX}) may help to protect them from being +rearranged. However, the boot floppy should still be ready, just in case.} + + +\newpage +\section{The boot prompt} +\label{cmdopt} + +Immediately after it's loaded, \LILO\ checks whether one of the following +is happening: + +\begin{itemize} + \item any of the \key{Shift}, \key{Control} or \key{Alt} keys is + pressed. + \item \key{CapsLock} or \key{ScrollLock} is set. +\end{itemize} + +If this is the case, \LILO\ displays the \verb"boot:" prompt and waits for +the name of a boot image (i.e. Linux kernel or other operating system). +Otherwise, it boots the default boot image\footnote{% +The default boot image is either the first boot image, the image specified +with the \craw{default} variable, or the image that +has been selected at the boot prompt.} +or -- if a +delay has been specified -- waits for one of the listed activities +until that amount of time has passed. + +At the boot prompt, the name of the image to boot can be entered. Typing +errors can be corrected with \key{BackSpace}, \key{Delete}, +\key{Ctrl U} and \key{Ctrl X}. A list of known images can be obtained by +pressing \key{?} or \key{Tab}. + +If \key{Enter} is pressed and no file name has been entered, the default +image is booted. + + +\subsection{Boot command-line options} + +\LILO\ is also able to pass command-line options to the kernel. +Command-line options are words that follow the name of the boot +image and that are separated by spaces. + +Example: +\begin{verbatim} +boot: linux single root=200 +\end{verbatim} + +This document only gives an overview of boot options. Please consult Paul +Gortmaker's BootPrompt-HOWTO for a more complete and more up to date list. +You can get it from +\path{ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/BootPrompt-HOWTO.gz} +or from one of the many mirror sites. + + +\subsubsection{Standard options} + +Recent kernels recognize a large number of options, among them are \raw{debug}, +\raw{no387}, \raw{no-hlt}, +\raw{ramdisk=\meta{size}}, \raw{reserve=\meta{base},\meta{size},$\ldots$}, +\raw{root=\meta{device}}, \raw{ro}, and \raw{rw}. +All current \name{init} programs also recognize the option \raw{single}. +The options \raw{lock} and \raw{vga} are processed by the boot loader itself. +Boot command-line options are always case-sensitive. + +\raw{single} boots the system in single-user mode. This bypasses most +system initialization procedures and directly starts a root shell on the +console. Multi-user mode can typically be entered by exiting the single-user +shell or by rebooting. + +\raw{root=\meta{device}} changes the root device. This overrides +settings that may have been made in the boot image and on the +\LILO\ command line. \meta{device} is either the hexadecimal device number +%%beginskip +\footnote{% +This is a list of device numbers of some frequently used devices: \\ +\begin{tabular}{lllllll} +\qquad +& {\tt /dev/fd0} & 200\qquad & \tt /dev/hda1 & 301\qquad & /dev/sda1 & 801 \\ +& {\tt /dev/fd1} & 201 & \tt /dev/hda2 & 302 & /dev/sda2 & 802 \\ +& \multicolumn{2}{c}{$\cdots$} & \multicolumn{2}{c}{$\cdots$} & +\multicolumn{2}{c}{$\cdots$} \\ +& & & \tt /dev/hdb1 & 341 & /dev/sdb1 & 811 \\ +& & & \tt /dev/hdb2 & 342 & /dev/sdb2 & 812 \\ +& \multicolumn{2}{c}{} & \multicolumn{2}{c}{$\cdots$} & +\multicolumn{2}{c}{$\cdots$} \\ +\end{tabular}} +%%endskip +or the full path name of the device, e.g. \verb"/dev/hda3".% +\footnote{The device names are hard-coded in the kernel. Therefore, only +the ``standard'' names are supported and some less common devices may not +be recognized. In those cases, only numbers can be used.} + +\raw{reserve=\meta{base},\meta{size},$\ldots$} reserves IO port regions. +This can be used to prevent device drivers from auto-probing addresses +where other devices are located, which get confused by the probing. + +\raw{ro} instructs the kernel to mount the root file system read-only. +\raw{rw} mounts it read-write. If neither \raw{ro} nor \raw{rw} is +specified, the setting from the boot image is used. + +\raw{no-hlt} avoids executing a \raw{HLT} instructions whenever the system +is idle. \raw{HLT} normally significantly reduces power consumption and +therefore also heat +dissipation of the CPU, but may not work properly with some clone CPUs. +\raw{no387} disables using the hardware FPU even if one is present. + +\raw{debug} enables more verbose console logging. + +Recent kernels also accept the options \raw{init=\meta{name}} and +\raw{noinitrd}. \raw{init} specifies the name of the \name{init} program +to execute. Therefore, if single mode cannot be entered because \name{init} +is mis-configured, one may still be able to reach a shell using +\verb"init=/bin/sh". \raw{noinitrd} disables automatic loading of the initial +RAM disk. Instead, its content is then available on \path{/dev/initrd}. + +\raw{vga=\meta{mode}} alters the VGA mode set at startup. The values +\raw{normal}, \raw{extended}, \raw{ask} or a decimal number are +recognized. (See also page \pageref{vga}.) + +\raw{kbd=\meta{code},$\ldots$} preloads a sequence of keystrokes in the +BIOS keyboard buffer. The keystrokes have to be entered as 16 bit hexadecimal +numbers, with the upper byte containing the scan code and the lower byte +containing the ASCII code. Note that most programs only use the ASCII +code, so the scan code can frequently be omitted. Scan code tables can be +found in many books on PC hardware. Note that scan codes depend on the +keyboard layout. + +Finally, \raw{lock} stores the current command-line as the default +command-line, so that \LILO\ boots the same image with the same options +(including \raw{lock}) when invoked the next time. + + +\subsubsection{Device-specific options} + +There is also a plethora of options to specify certain characteristics +(e.g. IO and memory addresses) of devices. Some common ones are +\raw{ether}, \raw{floppy}, \raw{hd}, \raw{bmouse}, and \raw{sound}. +The usage of these options is \raw{\meta{option}=\meta{number},$\ldots$}. +Please consult the corresponding FAQs and HOWTOs for details. For an overview +of all available options, consult the file \path{init/main.c} in the kernel +source tree. + + +\subsubsection{Other options} + +Options of the type \raw{\meta{variable}=\meta{value}} which are neither +standard options nor device-specific options, +cause the respective variables to be set in the environment passed to +\name{init}. The case of the variable name is preserved, i.e. it isn't +automatically converted to upper case. + +Note that environment variables passed to \name{init} are typically +available in system initialization scripts (e.g. \path{/etc/rc.local}), +but they're not visible from ordinary login sessions, because the \name{login} +program removes them from the user's environment. + + +\subsubsection{Repeating options} + +The effect of repeating boot command-line options depends on the options.% +\footnote{Options are frequently repeated when a string defined with +\craw{append} or \craw{literal} is prepended to the parameters typed in by +the user. Also, \LILO\ implicitly prepends the options \raw{ramdisk}, +\raw{ro}, \raw{root}, or \raw{rw} when \craw{ramdisk}, \craw{read-only}, +\craw{read-write}, or \craw{root}, respectively, are set in the configuration +file. +(\raw{lock} and \raw{vga} are handled by a different internal mechanism.)} +There are three possible behaviours: + +Options that only enable or disable a certain functionality can be repeated +any number of times. \raw{debug}, \raw{lock}, \raw{no-hlt}, and \raw{no387} +fall into this category. + +Other options change a global setting whenever they appear, so only the +value or presence of the last option matters. The antagonists \raw{ro} and +\raw{rw} are such options. Also, \raw{ramdisk}, \raw{root}, and \raw{vga} +work this way. Example: \raw{ro rw} would mount the root file system +read-write. + +Finally, when \raw{reserve} and many device-specific options are repeated, +each occurrence has its own meaning, e.g. \raw{hd=$\ldots$ hd=$\ldots$} would +configure two hard disks, and \raw{reserve=0x300,8 reserve=0x5f0,16} would +reserve the ranges 0x300 to 0x307 and 0x5f0 to 0x5ff (which is equivalent to +writing \raw{reserve=0x300,8,0x5f0,16}). + + +\subsubsection{Implicit options} + +\LILO\ always passes the string \raw{BOOT\_IMAGE=\meta{name}} to the +kernel, where \meta{name} is the name by which the kernel is identified +(e.g. the label). This variable can be used in \path{/etc/rc} to select +a different behaviour, depending on the kernel. + +When booting automatically, i.e. without human intervention, the word +\raw{auto} is also passed on +the command line. This can be used by \name{init} to suppress interactive +prompts in the boot phase. + + +\subsection{Boot image selection} +\label{bootsel} + +The details of selecting the boot image are somewhat complicated. The +following tables illustrate them. First, if neither \craw{prompt} is +set nor a shift key is being pressed: + +$$ +\begin{tabular}{cc|cl} + Externally & Command & Auto- & Booted image \\ + provided & line in & matic & \\ + cmd. line\footnotemark + & map file\footnotemark + & boot\footnotemark + & \\ + \hline + No & No & Yes & Default image \\ + Yes & --- & Yes & Specified by external \\ + & & & command line \\ + No & Yes & Yes & Specified by command line \\ + & & & in map file \\ +\end{tabular} +\addtocounter{footnote}{-2} +\footnotetext{Externally provided command lines could be used to + add front-ends to \LILO. They would pass the respective command + string to LILO, which would then interpret it like keyboard input. This + feature is currently not used.} +\addtocounter{footnote}{1} +\footnotetext{This command line is set by invoking the map installer + with the \raw{-R} option, by using the boot command-line option + \raw{lock}, or if a fallback command line is set (with \craw{fallback}).} +\addtocounter{footnote}{1} +\footnotetext{I.e. the keyword \raw{auto} is added.} +$$ + +If \craw{prompt} is not set and a shift key is being pressed: +$$ +\begin{tabular}{cccc|cl} + Input & Empty & Extern. & Cmd.l. & Auto- & Booted image \\ + timeout & cmd.l. & cmd.l. & in map & matic & \\ + & & & file & boot & \\ + \hline + No & No & --- & --- & No & Specified by the user \\ + No & Yes & --- & --- & No & Default image \\ + Yes & n/a & --- & --- & Yes & Default image \\ +\end{tabular} +$$ + +Finally, if the configuration variable \craw{prompt} is set: +$$ +\begin{tabular}{cccc|cl} + Input & Empty & Extern. & Cmd.l. & Auto- & Booted image \\ + timeout & cmd.l. & cmd.l. & in map & matic & \\ + & & & file & boot & \\ + \hline + No & No & No & No & No & Specified by the user \\ + No & Yes & No & No & No & Default image \\ + Yes & n/a & No & No & Yes & Default image \\ + n/a & n/a & Yes & --- & Yes & Specified by external \\ + & & & & & command line \\ + n/a & n/a & No & Yes & Yes & Specified by command \\ + & & & & & line in map file \\ +\end{tabular} +$$ + +Note that \LILO\ pauses for the amount of time specified in \craw{delay} +when at the end of a default command line. The automatic boot can then +be interrupted by pressing a modifier key (\key{Shift}, \key{Ctrl}, etc.). + +The default image is the first image in the map file or the image specified +with the \craw{default} variable. However, +after an unsuccessful boot attempt, the respective image becomes the +default image. + + +\newpage +\section{Map installer} + +The map installer program \path{/sbin/lilo} updates the boot sector +and creates the map file. If the map installer detects an error, it terminates +immediately and does not touch the boot sector and the map file. + +Whenever the map installer updates a boot sector, the original boot +sector is copied +to \path{/boot/boot.\meta{number}}, where \meta{number} is the +hexadecimal device number. If such a file already exists, no backup +copy is made. Similarly, a file \raw{/boot/part.\meta{number}} is +created if \LILO\ modifies the partition table. (See page \pageref{fix-table}.) + + +\subsection{Command-line options} + +The \LILO\ map installer can be invoked in the following ways: + + +%%beginskip +\def\seealso{See also sections \ref{corropt} and \ref{cfgglo}.} +%%def\\seealso=See also sections \\ref{corropt} and \\ref{cfgglo}. +%%endskip + +\subsubsection{Show current installation} +\label{invshow} + +The currently mapped files are listed. With \raw{-v}, also many parameters +are shown. + +\begin{command} + /sbin/lilo + \unit{\[ -C \meta{config\_file} \]} + \unit{-q} + \unit{\[ -m \meta{map\_file} \]} + \unit{\[ -v $\ldots$ \]} +\end{command} + +\begin{description} + \item[\raw{-C \meta{config\_file}}]~\\ + Specifies the configuration file that is used by the map + installer (see section \ref{config}). If \raw{-C} is omitted, + \path{/etc/lilo.conf} is used. + \item[\raw{-m \meta{map\_file}}]~\\ + Specifies an alternate map file. \seealso + \item[\raw{-q}]~ \\ + Lists the currently mapped files. + \item[\raw{-v $\ldots$}]~\\ + Increase verbosity. \seealso +\end{description} + + +\subsubsection{Create or update map} +\label{creupd} + +A new map is created for the images described in the configuration file +\path{/etc/lilo.conf} and they are registered in the boot sector. + +\begin{command} + /sbin/lilo + \unit{\[ -C \meta{config\_file} \]} + \unit{\[ -b \meta{boot\_device} \]} + \unit{\[ -c \]} + \unit{\[ -l \]} + \unit{\[ -i \meta{boot\_sector} \]} + \unit{\[ -f \meta{disk\_tab} \]} + \unit{\[ -m \meta{map\_file} \]} + \unit{\[ -d \meta{delay\/} \]} + \unit{\[ -v $\ldots$ \]} + \unit{\[ -t \]} + \unit{\[ -s \meta{save\_file} \|} + \unit{-S \meta{save\_file} \]} + \unit{\[ -P fix \|} + \unit{-P ignore \]} + \unit{\[ -r \meta{root\_dir} \]} +\end{command} + +\begin{description} + \item[\raw{-b \meta{boot\_device}}]~\\ + Specifies the boot device. \seealso + \item[\raw{-c}]~\\ + Enables map compaction. \seealso + \item[\raw{-C \meta{config\_file}}]~\\ + Specifies an alternate configuration file. See also section \ref{invshow}. + \item[\raw{-d \meta{delay}}]~\\ + Sets the delay before \LILO\ boots the default image. Note that the + delay is specified in \emphasize{tenths} of a second. \seealso + \item[\raw{-D \meta{name}}]~\\ + Specifies the default image. \seealso + \item[\raw{-f \meta{disk\_tab}}]~\\ + Specifies a disk parameter table file. \seealso + \item[\raw{-i \meta{boot\_sector}}]~\\ + Specifies an alternate boot file. \seealso + \item[\raw{-L}]~\\ + Enables lba32 sector addresses. \seealso + \item[\raw{-l}]~\\ + Enables linear sector addresses. \seealso + \item[\raw{-m \meta{map\_file}}]~\\ + Specifies an alternate map file. \seealso + \item[\raw{-P \meta{mode}}]~\\ + Specifies how invalid partition table entries should be handled. \seealso + \item[\raw{-r \meta{root\_directory}}]~ \\ + Chroots to the specified directory before doing anything else. This is + useful when running the map installer while the normal root file system + is mounted somewhere else, e.g. when recovering from an installation + failure with a recovery disk. The \raw{-r} option is implied if + the environment variable \raw{ROOT} is set.\footnote{E.g. if your root + partition is mounted on \path{/mnt}, you can update the map by simply + running \raw{ROOT=/mnt /mnt/sbin/lilo}} + The current directory is changed to the new root directory, so using + relative paths may not work. + \item[\raw{-s \meta{save\_file}}]~\\ + Specifies an alternate boot sector save file. \seealso + \item[\raw{-S \meta{save\_file}}]~\\ + Like \raw{-s}, but overwrites old save files. + \item[\raw{-t}]~ \\ + Test only. This performs the entire installation procedure except + replacing the map file, writing the modified boot sector and fixing + partition tables. This + can be used in conjunction with the \raw{-v} option to verify that + \LILO\ will use sane values. + \item[\raw{-v $\ldots$}]~\\ + Increase verbosity. \seealso +\end{description} + + +\subsubsection{Change default command line} +\label{invcmd} + +Changes \LILO's default command line. See also section \ref{bootsel}. + +\begin{command} + /sbin/lilo + \unit{\[ -C \meta{config\_file} \]} + \unit{\[ -m \meta{map\_file} \]} + \unit{-R \[ \meta{word} $\ldots$ \]} +\end{command} + +\begin{description} + \item[\raw{-C \meta{config\_file}}]~\\ + Specifies an alternate configuration file. See also section \ref{invshow}. + \item[\raw{-m \meta{map\_file}}]~\\ + Specifies an alternate map file. \seealso + \item[\raw{-R \meta{word $\ldots$}}]~ \\ + Stores the specified words in the map file. The boot loader uses those + words as the default command line when booting the next time. That command + line is removed from the map file by the boot loader by overwriting the + sector immediately after reading it. The first word has + to be the name of a boot image. If \raw{-R} is not followed by any words, + the current default command line in the map file is erased.\footnote{% + \raw{-R} is typically used in reboot scripts, e.g. \\ +%%beginskip +\tt +%%endskip +\#!/bin/sh \\ +cd / \\ +/sbin/lilo -R "\$*" \&\& reboot} + If the command line isn't valid, the map installer issues an error + message and returns a non-zero exit code. +\end{description} + + +\subsubsection{Kernel name translation} + +Determines the path of the kernel. + +\begin{command} + /sbin/lilo + \unit{\[ -C \meta{config\_file} \]} + \unit{-I \meta{name}} + \unit{\[ \meta{options} \]} +\end{command} + +\begin{description} + \item[\raw{-C \meta{config\_file}}]~\\ + Specifies an alternate configuration file. See also section \ref{invshow}. + \item[\raw{-I \meta{name} {$[$} \meta{options} {$]$}}]~ \\ + Translates the specified label name to the path of the corresponding kernel + image and prints that path on standard output. This can be used to + synchronize + files that depend on the kernel (e.g. the \name{ps} database). The image + name can be obtained from the environment variable \raw{BOOT\_IMAGE}. An + error message is issued and a non-zero exit code is returned if no + matching label name can be found. The existence of the image file is + verified if the option character \raw{v} is added. +\end{description} + + +\subsubsection{De-installation} + +Restores the boot sector that was used before the installation of \LILO. +Note that this option only works properly if \LILO's directories (e.g. +\path{/boot}) have not been touched since the first installation. See also +section \ref{deinst}. + +\begin{command} + /sbin/lilo + \unit{\[ -C \meta{config\_file} \]} + \unit{\[ -s \meta{save\_file} \]} + \unit{-u \| -U} + \unit{\[ \meta{boot\_device} \]} +\end{command} + +\begin{description} + \item[\raw{-C \meta{config\_file}}]~\\ + Specifies an alternate configuration file. See also section \ref{invshow}. + \item[\raw{-s \meta{save\_file}}]~\\ + Specifies an alternate boot sector save file. \seealso + \item[\raw{-u {$[$} \meta{device\_name} {$]$}}]~ \\ + Restores the backup copy of the specified boot sector. If no device is + specified, the value of the \verb"boot" variable is used. If this one + is also unavailable, \LILO\ uses the current root device. The name of + the backup copy is derived from the device name. The \verb"-s" option + or the \verb"backup" variable can be used to override this. + \LILO\ validates the backup copy by checking a time stamp. + \item[\raw{-U {$[$} \meta{device\_name} {$]$}}]~ \\ + Like \verb"-u", but does not check the time stamp. +\end{description} + + +\subsubsection{Print version number} + +\begin{command} + /sbin/lilo -V +\end{command} + +\begin{description} + \item[\raw{-V}]~ \\ + Print the version number and exit. +\end{description} + + +\subsubsection{Options corresponding to configuration variables} +\label{corropt} + +There are also many command-line options that correspond to configuration +variables. See section \ref{cfgglo} for a description. + +$$ +\begin{tabular}{l|l} + Command-line option & Configuration variable \\ + \hline + \raw{-b \meta{boot\_device}} & \raw{boot=\meta{boot\_device}} \\ + \raw{-c} & \raw{compact} \\ + \raw{-d \meta{tsecs}} & \raw{delay=\meta{tsecs}} \\ + \raw{-D \meta{name}} & \raw{default=\meta{name}} \\ + \raw{-i \meta{boot\_sector}} & \raw{install=\meta{boot\_sector}} \\ + \raw{-L} & \raw{lba32} \\ + \raw{-l} & \raw{linear} \\ + \raw{-m \meta{map\_file}} & \raw{map=\meta{map\_file}} \\ + \raw{-P fix} & \raw{fix-table} \\ + \raw{-P ignore} & \raw{ignore-table} \\ + \raw{-s \meta{backup\_file}} & \raw{backup=\meta{backup\_file}} \\ + \raw{-S \meta{backup\_file}} & \raw{force-backup=\meta{backup\_file}} \\ + \raw{-v $\ldots$} & \raw{verbose=\meta{level}} \\ +\end{tabular} +$$ + + +\subsection{Configuration} +\label{config} + +The configuration information is stored in the file \path{/etc/lilo.conf} +and consists of variable assignments. + + +\subsubsection{Syntax} +\label{syntax} + +The following syntax rules apply: + +\begin{itemize} + \item flag variables consist of a single word and are followed by + whitespace or the end of the file. + \item string variables consist of the variable name, optional whitespace, + an equal sign, optional whitespace, the value and required whitespace, + or the end of the file. + \item a non-empty sequence of blanks, tabs, newlines and comments counts + as whitespace. + \item variable names are case-insensitive. Values are usually case-sensitive, + but there are a few exceptions. (See below.) + \item tabs and newlines are special characters and may not be part of a + variable name or a value. The use of other control characters and + non-ASCII characters is discouraged. + \item blanks and equal signs may only be part of a variable name or a + value if they are escaped by a backslash or if the value is embedded in + double quotes. An equal sign may not be the only character in a name or + value. + \item an escaped tab is converted to an escaped blank. An escaped newline + is removed from the input stream. An escaped backslash (i.e. two + backslashes) is converted to a backslash. Inside quoted strings, only + double quotes, backslashes, dollar signs, and newlines can be escaped. + \item quoted strings can be continued over several lines by ending each + incomplete line with a backslash. A single space is inserted in the + string for the line end and all spaces or tabs that follow immediately + on the next line. + \item environment variables can be used by specifying them in the form + \verb"$"\meta{name} or \verb"${"\meta{name}\verb"}". Dollar signs can + be escaped. + \item comments begin with a number sign and end with the next newline. + All characters (including backslashes) until the newline are ignored. +\end{itemize} + +Example: +\begin{verbatim} +boot = $FD +install = menu +map = $MNT/map +compact +read-only +append = "nfsroot=/home/linux-install/root \ + nfsaddrs=128.178.156.28:128.178.156.24::255.255.255.0:lrcinst" +image = $MNT/zImage +\end{verbatim} + + +\subsubsection{Global options} +\label{cfgglo} + +\path{/etc/lilo.conf} begins with a possibly empty global options section. +Many global options can also be set from the command line, but storing +permanent options in the configuration file is more convenient. + +The following global options are recognized: + +\begin{description} + \item[\craw{backup=}\meta{backup\_file}] Copy the original boot sector to + \meta{backup\_file} (which may also be a device, e.g. \path{/dev/null}) + instead of \path{/boot/boot.\meta{number}} + \item[\craw{boot=}\meta{boot\_device}] Sets the name of the device (e.g. + a hard disk partition) that contains + the boot sector. If \craw{boot} is omitted, the boot sector is read from + (and possibly written to) the device that is currently mounted as root. + \item[\craw{change-rules}] Defines partition type numbers. See section + \ref{ptcr} for details. + \item[\craw{compact}] Tries to merge read requests for adjacent sectors into + a single read request. This drastically reduces load time and keeps the + map smaller. Using \craw{compact} is especially recommended when booting + from a floppy disk. + \craw{compact} may conflict with \craw{linear} or \craw{lba32}, see + section \ref{othpro}. + \item[\craw{default=}\meta{name}] Uses the specified image as the default + boot image. If \craw{default} is omitted, the image appearing first in the + configuration file is used. + \item[\craw{delay=}\meta{tsecs}] Specifies the number of \emphasize{tenths} + of a second + \LILO\ should wait before booting the first image. This is useful on + systems that immediately boot from the hard disk after enabling the + keyboard. \LILO\ doesn't wait if \craw{delay} is omitted or if \craw{delay} + is set to zero. + \item[\craw{disk=}\meta{device\_name}] Defines non-standard parameters + for the specified disk. See section \ref{diskgeo} for details. + \item[\craw{fix-table}]\label{fix-table}Allows \LILO\ to adjust 3D addresses + in partition + tables. Each partition entry contains a 3D (sector/head/cylinder) and a + linear 32-bit address of the first and the last sector of the partition. + If a + partition is not track-aligned and if certain other operating systems + (e.g. PC/MS-DOS or OS/2) are using the same disk, they may change the 3D + address. \LILO\ can store its boot sector only on partitions where both + address types correspond. \LILO\ re-adjusts incorrect 3D start addresses + if \craw{fix-table} is set. + + \emphasize{WARNING:} This does not guarantee that other operating systems + may not attempt to reset the address later. It is also possible that this + change has other, unexpected side-effects. The correct fix is to + re-partition the drive with a program that does align partitions to tracks. + Also, with some disks (e.g. some large EIDE disks with address + translation enabled), under some circumstances, it may even be unavoidable + to have conflicting partition table entries. + \item[\craw{force-backup=}\meta{backup\_file}] Like \craw{backup}, but + overwrite an old backup copy if it exists. + \craw{backup=}\meta{backup\_file} + is ignored if \craw{force-backup} appears in the same configuration file. + \item[\craw{ignore-table}] Tells LILO to ignore corrupt partition tables and + to put the boot sector even on partitions that appear to be unsuitable for + that. + \item[\craw{install=}\meta{boot\_sector}] Install the specified file as the + new boot sector. If \craw{install} is omitted, \path{install=text} is used + as the default. + \item[\craw{keytable=}\meta{table\_file}] Re-map the keyboard as specified + in this file. See section \ref{keytab} for details. + \item[\craw{lba32}] Generate 32-bit Logical Block Addresses instead of + sector/head/cylinder addresses. If the BIOS supports packet addressing, + then packet calls will be used to access the disk. This allows booting + from any partition on disks with more than 1024 cylinders. If the BIOS + does not support packet addressing, then \craw{lba32} addresses are + translated to C:H:S, just as for \craw{linear}. All floppy disk references + are retained in C:H:S form. Use of \craw{lba32} is recommended on all + post-1998 systems. + \craw{lba32} may conflict with \craw{compact}, see section \ref{othpro}. + \item[\craw{linear}] Generate linear sector addresses instead of + sector/head/cylinder addresses. Linear addresses are translated at run + time and do not depend on disk geometry. Note that boot disks + may not be portable if \craw{linear} is used, + because the BIOS service to + determine the disk geometry does not work reliably for floppy disks. + When using \craw{linear} with large disks, \path{/sbin/lilo} may + generate references to inaccessible disk areas (see section \ref{broken}), + because 3D sector addresses are not known before boot time. + \craw{linear} may conflict with \craw{compact}, see section \ref{othpro}. + \item[\craw{map=}\meta{map\_file}] Specifies the location of the map file. + If \craw{map} is omitted, a file \path{/boot/map} is used. + \item[\craw{message=}\meta{message\_file}] Specifies a file containing a + message that is displayed before the boot prompt. No message is displayed + while waiting for a modifier key (\key{Shift}, etc.) after printing + ``LILO ''. In the message, the \raw{FF} + character (\hbox{\key{Ctrl L}}) clears the local screen. The size of the + message file is limited to 65535 bytes. The map file has to be rebuilt + if the message file is changed or moved. + \item[\craw{nowarn}] Disables warnings about possible future dangers. + \item[\craw{prompt}] Forces entering the boot prompt without expecting any + prior key-presses. Unattended reboots are impossible if \craw{prompt} is + set and \craw{timeout} isn't. + \item[\craw{serial=}\meta{parameters}] Enables control from a serial line. + The specified serial port is initialized and \LILO\ is accepting input from + it and from the PC's keyboard. Sending a break on the serial line + corresponds to pressing a shift key on the console in order to get + \LILO's attention. All boot images should be password-protected if the + serial access is less secure than access to the console, e.g. if the + line is connected to a modem. The parameter string has the following + syntax: \\ + \raw{\meta{port},\meta{bps}\,\meta{parity}\,\meta{bits}} \\ + The components \meta{bps}, \meta{parity} and \meta{bits} can be + omitted. If a component is omitted, all following components have to + be omitted too. Additionally, the comma has to be omitted if only the + port number is specified. + \begin{description} + \item[\meta{port}] the number of the serial port, zero-based. 0 + corresponds to \path{COM1} alias \path{/dev/ttyS0}, etc. All four + ports can be used (if present). + \item[\meta{bps}] the baud rate of the serial port. The following + baud rates are supported: 110, 300, 1200, 2400, 4800, 9600, 19200, and + 38400 bps. Default is 2400 bps. + \item[\meta{parity}] the parity used on the serial line. \LILO\ ignores + input parity and strips the 8th bit. The following (upper or lower + case) characters are used to describe the parity: \raw{n} for no + parity, \raw{e} for even parity and \raw{o} for odd parity. + \item[\meta{bits}] the number of bits in a character. Only 7 and 8 + bits are supported. Default is 8 if parity is ``none'', 7 if parity + is ``even'' or ``odd''. + \end{description} + If \craw{serial} is set, the value of \craw{delay} is automatically raised + to 20. + + Example: \verb"serial=0,2400n8" initializes \path{COM1} with the + default parameters. + \item[\craw{timeout=}\meta{tsecs}] Sets a timeout (in tenths of a second) for + keyboard input. If no key is pressed for the specified time, the first + image is automatically booted. Similarly, password input is aborted if + the user is idle for too long. The default timeout is infinite. + \item[\craw{verbose=}\meta{level}] Turns on lots of progress reporting. + Higher numbers give more verbose output. If \raw{-v} is additionally + specified on the command line, \meta{level} is increased accordingly. + The following verbosity levels exist: + \begin{description} + \item[$<$0] only warnings and errors are shown + \item[0] prints one line for each added or skipped image + \item[1] mentions names of important files and devices and why they + are accessed. Also displays informational messages for exceptional + but harmless conditions and prints the version number. + \item[2] displays statistics and processing of temporary files and + devices + \item[3] displays disk geometry information and partition table change + rules + \item[4] lists sector mappings as they are written into the map file + (i.e. after compaction, in a format suitable to pass it to the BIOS) + \item[5] lists the mapping of each sector (i.e. before compaction, raw) + \end{description} + When using the \raw{-q} option, the levels have a slightly different + meaning: + \begin{description} + \item[0] displays only image names + \item[1] also displays all global and per-image settings + \item[2] displays the address of the first map sector + \end{description} +\end{description} + +Additionally, the kernel configuration parameters \craw{append}, \craw{initrd}, +\craw{ramdisk}, \craw{read-only}, \craw{read-write}, \craw{root} and +\craw{vga}, and the general per-image options \craw{fallback}, \craw{lock}, +\craw{optional}, \craw{password}, \craw{restricted}, and +\craw{single-key} can be set in +the global options section. They are used as defaults if they aren't specified +in the configuration sections of the respective images. See below for a +description. + +The plethora of options may be intimidating at first, but in ``normal'' +configurations, hardly any options but \craw{boot}, \craw{compact}, +\craw{delay}, \craw{root}, and \craw{vga} are used. + + +\subsubsection{General per-image options} +\label{cfggen} + +The following options can be specified for all images, independent of their +type: +\begin{description} + \item[\craw{alias=}\meta{name}] Specifies a second name for the current + entry. + \item[\craw{fallback=}\meta{command\_line}] Specifies a string that is stored + as the default command line if the current image is booted. This is useful + when experimenting with kernels which may crash before allowing + interaction with the system. If using the \craw{fallback} option, the + next reboot (e.g. triggered by a manual reset or by a watchdog timer) + will load a different (supposedly stable) kernel. The command line by the + fallback mechanism is + cleared by removing or changing the default command line with the \raw{-R} + option, see \ref{invcmd}. + \item[\craw{label=}\meta{name}] By default, \LILO\ uses the main file name + (without its + path) of each image specification to identify that image. A different name + can be used by setting the variable \craw{label}. + \item[\craw{lock}] Enables automatic recording of boot command lines as the + defaults for the following boots. This way, \LILO\ ``locks'' on a + choice until it is manually overridden. + \item[\craw{optional}] Omit this image if its main file is not available at + map creation time. This is useful to specify test kernels that are not + always present. + \item[\craw{password=}\meta{password}] Ask the user for a password when + trying to load this image. Because the configuration file contains + unencrypted passwords when using this option, it should only be readable + for the super-user. Passwords are always case-sensitive. + \item[\craw{restricted}] Relaxes the password protection by requiring a + password only if parameters are specified on the command line + (e.g. \verb"single"). \craw{restricted} can only be used together with + \craw{password}. + \item[\craw{single-key}] Enables booting the image by hitting a + single key, without the need to press \key{Enter} afterwards. + \craw{single-key} requires that either the image's label or its + alias (or both) is a single character. Furthermore, no other image label + or alias may start with that character, e.g. an entry specifying a + label \raw{linux} and an alias \raw{l} is not allowed with + \craw{single-key}. Note that you can't specify command-line parameters for + an entry for which only \craw{single-key}ed names exist. +\end{description} + +All general per-image options, with the exception of \craw{label} and +\craw{alias}, can also be set in the global options section as defaults +for all images. + +Example: +\begin{verbatim} +password = Geheim +single-key +image = /vmlinuz + label = linux + alias = 1 + restricted +other = /dev/hda1 + label = dos + alias = 2 +\end{verbatim} + + +\subsubsection{Per-image options for kernels} +\label{cfgkern} + +Each (kernel or non-kernel) +image description begins with a special variable (see section \ref{bootimg}) +which is followed by optional +variables. +The following variables can be used for all image descriptions +that describe a Linux kernel: + +\begin{description} + \item[\craw{append=}\meta{string}] Appends the options specified in + {\meta{string}} to the parameter line passed to the kernel. This is + typically used to specify parameters of hardware that can't be entirely + auto-detected, e.g.\\ + \verb'append = "aha152x=0x140,11"' + \item[\craw{initrd=}\meta{name}] Specifies the file that will be loaded at + boot time as the initial RAM disk. + \item[\craw{literal=}\meta{string}] like \craw{append}, but removes all other + options (e.g. setting of the root device). Because vital options can be + removed unintentionally with \craw{literal}, this option cannot be set in + the global options section. + \item[\craw{ramdisk=}\meta{size}] Specifies the size of the optional RAM disk. + A value of zero indicates that no RAM disk should be created. If this + variable is omitted, the RAM disk size configured into the boot + image is used. + \item[\craw{read-only}] Specifies that the root file system should be + mounted read-only. Typically, the system startup procedure re-mounts + the root file system read-write later (e.g. after fsck'ing it). + \item[\craw{read-write}] specifies that the root file system should be + mounted read-write. + \item[\craw{root=}\meta{root\_device}] Specifies the device that should be + mounted as root. If the special name \craw{current} is used, the root + device is set to the device on which the root file system is currently + mounted. If the root has been changed with \raw{-r}, the respective + device is used. If the variable \craw{root} is omitted, the root device + setting contained in the kernel image is used. It can be changed + with the \name{rdev} program. + \item[\craw{vga=}\meta{mode}]\label{vga} Specifies the VGA text mode that + should be selected when booting. The following values are recognized + (case is ignored): + \begin{description} + \item[\craw{normal}] select normal 80x25 text mode. + \item[\craw{extended}] select 80x50 text mode. The word \craw{extended} + can be abbreviated to \craw{ext}. + \item[\craw{ask}] stop and ask for user input (at boot time). + \item[\meta{number}] use the corresponding text mode. A list of available + modes can be obtained by booting with \raw{vga=ask} and pressing + \key{Enter}. + \end{description} + If this variable is omitted, the VGA mode setting contained in the kernel + image is used. \name{rdev} supports manipulation of the VGA text mode + setting in the kernel image. +\end{description} + +All kernel per-image options but \craw{literal} can also be set in the global +options section as defaults for all kernels. + +If one of \craw{ramdisk}, \craw{read-only}, \craw{read-write}, \craw{root}, +or \craw{vga} is omitted in the configuration file and the +corresponding value in the kernel image is changed, \LILO\ or the kernel +will use the new value. + +It is perfectly valid to use different settings for the same +image, because \LILO\ stores them in the image descriptors and not in the +images themselves. + +Example: +\begin{verbatim} +image = /vmlinuz + label = lin-hd + root = /dev/hda2 +image = /vmlinuz + label = lin-fd + root = /dev/fd0 +\end{verbatim} + + +\subsection{Boot image types} +\label{bootimg} + +\LILO\ can boot the following types of images: +\begin{itemize} + \item kernel images from a file. + \item kernel images from a block device. (E.g. a floppy disk.) + \item the boot sector of some other operating system. +\end{itemize} + +The image type is determined by the name of the initial +variable of the configuration section. + +The image files can reside on any media that is accessible at boot time. +There's no need to put them on the root device, although this certainly +doesn't hurt. + + +\subsubsection{Booting kernel images from a file} + +The image is specified as follows: \craw{image=}\meta{name} + +Example: +\begin{verbatim} +image = /linux +\end{verbatim} + +See sections \ref{cfggen} and \ref{cfgkern} for the options that can be +added in a kernel image section. + + +\subsubsection{Booting kernel images from a device} + +The range of sectors +that should be mapped has to be specified. Either a range +(\raw{\meta{start}-\meta{end}}) or a start and a distance +(\raw{\meta{start}+\meta{number}}) have to be specified. \meta{start} +and \meta{end} are zero-based. If only +the start is specified, only that sector is mapped. + +The image is specified as follows: \craw{image=}\meta{device\_name}\quad +Additionally, the \craw{range} variable must be set. + +Example: +\begin{verbatim} +image = /dev/fd0 + range = 1+512 +\end{verbatim} + +All kernel options can also be used when booting the kernel from a device. + + +\subsubsection{Booting a foreign operating system} +\label{bootfor} + +\LILO\ can even boot other operating systems, i.e. MS-DOS. +To boot an other operating +system, the name of a loader program, the device or file that contains the boot +sector and the device that contains the partition table have to be +specified. + +The boot sector is merged with the partition table and stored in the map file. + +Currently, the loaders \path{chain.b} and \path{os2\_d.b} exist. +\path{chain.b} simply starts the specified boot sector.\footnote{The boot +sector is loaded by \LILO's secondary boot loader before control is passed +to the code of \path{chain.b}.} \path{os2\_d.b} it a variant of \path{chain.b} +that can boot OS/2 from the second hard disk. +The \craw{map-drive} option has to be used with \path{os2\_d.b} to +actually swap the drives. + +The image is specified as follows: \craw{other=}\meta{device\_name} or +\craw{other=}\meta{file\_name} + +In addition to the options listen in section \ref{cfggen}, the following +variables are recognized: +\begin{description} + \item[\craw{change}] Change the partition table according to the rules + specified in this \craw{change} section. This option is intended for + booting systems which find their partitions by examining the + partition table. See section \ref{ptch} for details. + \item[\craw{loader=}\meta{chain\_loader}] Specifies the chain loader that + should be used. If it is omitted, \path{/boot/chain.b} is used. + \item[\craw{map-drive=}\meta{bios\_device\_code}] Instructs \path{chain.b} + to installs a resident driver that re-maps the floppy + or hard disk drives. This way, one can boot any operating system from a + hard disk different from the first one, as long as that operating system + uses \emphasize{only} the BIOS to access that hard disk.\footnote{So you +should be very suspicious if the +operating system requires any specific configuration or even drivers to use +the disk it is booted from. Since there is a general trend to use optimized +drivers to fully exploit the hardware capabilities (e.g. non-blocking disk +access), booting systems from the second disk may become increasingly +difficult.} This is known to work for PC/MS-DOS. + + \craw{map-drive} is followed by the variable + \craw{to=}\meta{bios\_device\_code} which specifies the drive that should + effectively be accessed instead of the original one. + The list of mappings is only searched until the first match is found. + It is therefore possible to ``swap'' drives, see the second example below. + \item[\craw{table=}\meta{device}] Specifies the device that contains the + partition + table. \LILO\ does not pass partition information to the booted operating + system if this variable is omitted. (Some operating systems have other + means to determine from which partition they have been booted. E.g. MS-DOS + usually stores the geometry of the boot disk or partition in its boot + sector.) Note that \path{/sbin/lilo} must be re-run if a partition table + mapped referenced with \craw{table} is modified. + \item[\craw{unsafe}] Do not access the boot sector at map creation time. This + disables some sanity checks, including a partition table check. If the boot + sector is on a fixed-format floppy disk device, using \craw{unsafe} avoids + the need to put a readable disk into the drive when running the map + installer. \craw{unsafe} and \craw{table} are mutually incompatible. +\end{description} + +None of these options can be set in the global options section. + +Examples: +\begin{verbatim} +other = /dev/hda2 + label = dos + table = /dev/hda +\end{verbatim} + +\begin{verbatim} +other = /dev/hdb2 + label = os2 + loader = /boot/os2_d.b + map-drive = 0x80 + to = 0x81 + map-drive = 0x81 + to = 0x80 +\end{verbatim} + + +\subsection{Disk geometry} +\label{diskgeo} + +For floppies and most hard disks, \LILO\ can obtain the +disk geometry information from the kernel. Unfortunately, there are some +exotic disks or adapters which may either not supply this information or +which may even return incorrect information. + +If no geometry information is available, \LILO\ reports either the error \\ +\raw{geo\_query\_dev HDIO\_GETGEO (dev 0x\meta{number})} \\ +or \\ +\raw{Device 0x\meta{number}: Got bad geometry \meta{sec}/\meta{hd}/% +\meta{cyl}} + +If incorrect information is returned, booting may fail in several ways, +typically with a partial ``LILO'' banner message. In this document, that +is called a ``geometry mismatch''. + +The next step should be to attempt setting the \craw{lba32} or \craw{linear} +configuration variable or the \raw{-L} or \raw{-l} command-line option. If +this doesn't help, the entire disk geometry has to be specified explicitly. +Note that \craw{linear} doesn't always work with floppy disks. + +Another common use of disk sections is if an (E)IDE and a SCSI drive are +used in the same system and the BIOS is configured to use the SCSI drive +as the first drive. (Normally, the (E)IDE drive would be the first drive +and the SCSI drive would be the second one.) Since \LILO\ doesn't know +how the BIOS is configured, it needs to be told explicitly about this +arrangement. (See the second example below.) + + +\subsubsection{Obtaining the geometry} + +The disk geometry parameters can be obtained by booting MS-DOS and +running the program \path{DPARAM.COM} with the hexadecimal BIOS code of +the drive as its argument, e.g. \verb"dparam 0x80" for the first hard +disk. It displays the number of sectors per +track, the number of heads per cylinder and the number of cylinders. +All three numbers are one-based. + +Alternatively, the geometry may also be determined by reading the information +presented by the ``setup'' section of the ROM-BIOS or by using certain disk +utilities under operating systems accessing the disk through the BIOS. + + +\subsubsection{Specifying the geometry} +\label{diskspec} + +Disk geometry parameters are specified in the options section of the +configuration file. Each disk parameter section begins with +\craw{disk=}\meta{disk\_device}, similar to the way how boot images are +specified. +It is suggested to group disk parameter sections together, preferably +at the beginning or the end of the options section. + +For each disk, the following variables can be specified: +\begin{description} + \item[\craw{bios=}\meta{bios\_device\_code}] Is the number the BIOS uses + to refer to that device. Normally, it's \raw{0x80} for the first hard + disk and \raw{0x81} for the second hard disk. Note that hexadecimal + numbers have to begin with ``0x''. If \craw{bios} is omitted, + \LILO\ tries to ``guess'' that number. + \item[\craw{sectors=}\meta{sectors}] and + \item[\craw{heads=}\meta{heads}] specify the number of sectors per + track and the number of heads, i.e. the number of tracks per + cylinder. Both parameters have to be either specified together or + they have to be entirely omitted. If omitted, \LILO\ tries to obtain + that geometry information from the kernel. + \item[\craw{cylinders=}\meta{cylinders}] Specifies the number of cylinders. + This value is only used for sanity checks. If \craw{cylinders} is omitted, + \LILO\ uses the information obtained from the kernel if geometry + information had to be requested in order to determine some other + parameter. Otherwise,\footnote{I.e. if the BIOS device code, the number + of sectors, the number of heads and the partition start are specified. + Note that the number of cylinders may appear to vary if \craw{cylinders} + is absent and only some of the partition starts are specified.} it just + assumes the number of cylinders to be 1024, which is the cylinder limit + imposed by the BIOS. + \item[\craw{inaccessible}] Marks the device as inaccessible (for the BIOS). + This is useful if some disks on the system can't be read by the BIOS, + although \LILO\ ``thinks'' they can. If one accidentally tries to use + files located on such disks for booting, the map installer won't notice + and the system becomes unbootable. The most likely use of + \craw{inaccessible} is to prevent repetition after experiencing such a + situation once. No other variables may be specified if a device is + configured as \craw{inaccessible}. +\end{description} + +Additionally, partition subsections can be added with +\craw{partition=}\meta{partition\_device}. Each partition section can +contain only one variable: +\begin{description} + \item[\craw{start=}\meta{partition\_offset}] Specifies the zero-based + number of the start sector of that partition. The whole disk always + has a partition offset of zero. The partition offset is only necessary + when using devices for which the kernel does not provide that + information, e.g. CD-ROMs. +\end{description} + +Examples: +\begin{verbatim} +disk = /dev/sda + bios = 0x80 + sectors = 32 + heads = 64 + cylinders = 632 + partition = /dev/sda1 + start = 2048 + partition = /dev/sda2 + start = 204800 + partition = /dev/sda3 + start = 500000 + partition = /dev/sda4 + start = 900000 +\end{verbatim} + +\begin{verbatim} +disk = /dev/sda + bios = 0x80 +disk = /dev/hda + bios = 0x81 +\end{verbatim} + + +\subsection{Partition table manipulation} +\label{ptman} + +Some non-Linux operating systems obtain information about their partitions +(e.g. their equivalent of the root file system) from the partition table. +If more than one such operating system is installed on a PC, they may have +conflicting interpretations of the content of the partition table. Those +problems can be avoided by changing the partition table, depending on which +operating system is being booted. + +Partition table changes are specified in a \craw{change} section in the +configuration file section describing the foreign operating system. Note +that \craw{change} sections are only accepted if the build-time option +\raw{REWRITE\_TABLE} is set. + +The \craw{change} section contains subsections for each partition whose +table entry needs to be modified. Partitions are specified with +\craw{partition=}\meta{device\_name} + +Changes are applied in the sequence in which they appear in the +configuration file. Configurations containing changes that are redundant +either by repeating a previous change or by changing its result further +are invalid and refused by the map installer. + +Internally, all changes are expressed as rules which specify the location +(disk and offset in the partition table), the value this location must +contain before the change, and the value that has to be stored. As a +safety measure, the rule is ignored if the previous value is found to be +different. + + +\subsubsection{Partition activation} + +This option is intended for booting systems which determine their boot +partition by examining the active flag in the partition table. The flag +is enabled with \craw{activate} and disabled with \craw{deactivate}. +Note that only the current partition is affected. \LILO\ does not +automatically change the active flags of other partitions and it also +allows more than one partition to be active at the same time. + +Example: + +\begin{verbatim} +other = /dev/sda4 + label = sco + change + partition = /dev/sda4 + activate + partition = /dev/sda3 + deactivate +\end{verbatim} + + +\subsubsection{Partition type change rules} +\label{ptcr} + +Partition type changes are normally a transition between two possible values, +e.g. a typical convention is to set the lowest bit in the upper nibble of the +partition type (i.e. 0x10) in order to +``hide'', and to clear it to ``unhide'' a partition. \LILO\ performs these +changes based on a set of rules. Each rule defines the name of a partition +type, its normal value, and the value when hidden. Those rules are defined +in the options section of the configuration file. The section defining +them begins with \craw{change-rules}. + +The following options and variables can appear in the section: +\begin{description} + \item[\craw{reset}] Removes all previously defined rules. This is needed + if a user doesn't wish to use the pre-defined rules (see below). + \item[\craw{type=}\meta{name}] Adds a rule for the type with the specified + name. Type names are case-insensitive. + The values are defined with \craw{normal=}\meta{byte} and + \craw{hidden=}\meta{byte}. Values can be specified as decimal or as + hexadecimal numbers with a leading \raw{0x}. If only one of the values + is present, the other value is assumed to be the same number, + but with the most significant bit inverted. +\end{description} + +\LILO\ pre-defines rules for the three partition types of DOS partitions. +The following example removes the pre-defined rules and creates them again: + +\begin{verbatim} +change-rules + reset + type = DOS12 + normal = 0x01 + hidden = 0x11 + type = DOS16_small + normal = 4 # hidden is 0x14 + type = DOS16_big + hidden = 0x16 +\end{verbatim} + + +\subsubsection{Partition type changes} +\label{ptch} + +Partition type changes are specified in the partition section as +\craw{set=}\meta{name}\craw{\_}\meta{state}, where \meta{name} is the +name of the partition type, and \meta{state} is its state, i.e. +\craw{normal} or \craw{hidden}. + +Example: + +\begin{verbatim} +other = /dev/sda3 + label = dos + change + partition = /dev/sda2 + set = dos16_big_normal + partition = /dev/sda3 + activate + set = DOS16_big_normal +\end{verbatim} + +Only one \craw{set} variable is allowed per partition section. In the +rare event that more than one \craw{set} variable is needed, further +partition sections can be used. + + +\subsection{Keyboard translation} +\label{keytab} + +The PC keyboard emits so-called scan codes, which are basically key +numbers. The BIOS then translates those scan codes to the character codes +of the characters printed on the key-caps. By default, the BIOS normally +assumes that the keyboard has a US layout. Once an operating system is +loaded, this operating system can use a different mapping. + +At boot time, \LILO\ only has access to the basic services provided +by the BIOS and therefore receives the character codes for an US keyboard. +It provides a simple mechanism to re-map the character codes to what is +appropriate for the actual layout.\footnote{The current mechanism isn't +perfect, because it sits on top of the scan code to character code +translation performed by the BIOS. This means that key combinations that +don't produce any useful character on the US keyboard will be ignored by +\LILO. The advantage of this approach is its simplicity.} + + +\subsubsection{Compiling keyboard translation tables} + +\LILO\ obtains layout information from the keyboard translation tables +Linux uses for the text console. They are usually stored in +\path{/usr/lib/kbd/keytables}. \LILO\ comes with a program +\name{keytab-lilo.pl} that reads those tables and generates a table +suitable for use by the map installer. \name{keytab-lilo.pl} invokes +the program \name{loadkeys} to print the tables in a format that is +easy to parse.\footnote{On some systems, only root can execute +\name{loadkeys}. It is then necessary to run \name{keytab-lilo.pl} as +root too.} + +\name{keytab-lilo.pl} is used as follows: + +\begin{command} + keytab-lilo.pl + \unit{\[ -p \meta{old\_code}=\meta{new\_code} \] $\ldots$} + \unit{\[\meta{path}\]\meta{default\_layout}\[.\meta{extension}\] \]} \\ + \unit{\[\meta{path}\]\meta{kbd\_layout}\[.\meta{extension}\] \]} +\end{command} + +\begin{description} + \item[\raw{-p \meta{old\_code}=\meta{new\_code}}]~\\ + Specifies corrections (``patches'') to the mapping obtained from the + translation table files. E.g. if pressing the upper case ``A'' should + yield an at sign, \verb"-p 65=64" would be used. The \raw{-p} option can + be repeated any number of times. The codes can also be given as + hexadecimal or as octal numbers if they are prefixed with \verb"0x" or + \verb"0", respectively. + \item[\meta{path}] The directory in which the file resides. The default + path is \path{/usr/lib/kbd/keytables}. + \item[\meta{extension}] Usually the trailing \path{.map}, which is + automatically added if the file name doesn't contain dots. + \item[\meta{default\_layout}] Is the layout which specifies the + translation by the BIOS. If none is specified, \path{us} is assumed. + \item[\meta{kbd\_layout}] Is the actual layout of the keyboard. +\end{description} + +\name{keytab-lilo.pl} writes the resulting translation table as a binary +string to standard output. Such tables can be stored anywhere with any name, +but the suggested naming convention is \path{/boot/\meta{kbd}.ktl} +(``\underline{K}eyboard \underline{T}able for \underline{L}ilo''), where +\meta{kbd} is the name of the keyboard layout. + +Example: +\begin{verbatim} +keytab-lilo.pl de >/boot/de.ktl +\end{verbatim} + + +\subsubsection{Using keyboard translation tables} + +The keyboard translation table file is specified with the global configuration +option \raw{keytable=\meta{table\_file}}. The complete name of the file has +to be given. + +Example: +\begin{verbatim} +keytable = /boot/de.klt +\end{verbatim} + + +\newpage +\section{Installation and updates} + + +\subsection{Installation} + +This section describes the installation of \LILO. See section \ref{deinst} +for how to uninstall \LILO. + + +\subsubsection{Compatibility} + +The kernel header files have to be in +\path{/usr/include/linux} and the kernel usually has to be configured by +running \raw{make config} before \LILO\ can be compiled. + +\path{/bin/sh} has to be a real Bourne shell. \name{bash} is sufficiently +compatible, but some \name{ksh} clones may cause problems. + +A file named \path{INCOMPAT} is included in the distribution. It describes +incompatibilities to older versions of \LILO\ and may also contain further +compatibility notes. + + +\subsubsection{Quick installation} +\label{quickinst} + +If you want to install \LILO\ on your hard disk and if you don't want +to use all its features, you can use the quick installation script. +Read \path{QuickInst} for details. + +\name{QuickInst} can only be used for first-time installations or to +entirely replace an existing installation, \emphasize{not} +to update or modify an existing installation of \LILO. Be sure you've +extracted \LILO\ into a directory that doesn't contain any files of +other \LILO\ installations. + + +\subsubsection{Files} + +Some of the files contained in \path{lilo-21.tar.gz}: + +\begin{description} + \item[\path{lilo/README}]~\\ + This documentation in plain ASCII format. Some sections containing + complex tables are only included in the \LaTeX\ version in + \path{doc/user.tex} + \item[\path{lilo/INCOMPAT}]~\\ + List of incompatibilities to previous versions of \LILO. + \item[\path{lilo/CHANGES}]~\\ + Change history. + \item[\path{lilo/VERSION}]~\\ + The version number of the respective release. + \item[\path{lilo/QuickInst}]~\\ + Quick installation script. + \item[\path{lilo/lilo-\meta{version}.lsm}]~\\ + The LSM (``\underline{L}inux \underline{S}oftware \underline{M}ap'') entry + of the respective \LILO\ release. + \item[\path{lilo/Makefile}]~\\ + Makefile to generate everything else. + \item[\path{lilo/*.c}, \path{lilo/*.h}]~\\ + LILO map installer C source and common header files. + \item[\path{lilo/*.S}]~\\ + LILO boot loader assembler source. + \item[\path{lilo/activate.c}]~\\ + C source of a simple boot partition setter. + \item[\path{lilo/dparam.s}]~\\ + Assembler source of a disk parameter dumper. + \item[\path{lilo/mkdist}]~\\ + Shell script used to create the current \LILO\ distribution. + \item[\path{lilo/keytab-lilo.pl}]~\\ + Perl script to generate keyboard translation tables. + \item[\path{lilo/doc/README}]~\\ + Description of how to generate the documentation. + \item[\path{lilo/doc/Makefile}]~\\ + Makefile used to convert the \LaTeX\ source into either DVI output or + the plain ASCII README file. + \item[\path{lilo/doc/user.tex}]~\\ + \LaTeX\ source of \LILO's user's guide (this document). + \item[\path{lilo/doc/tech.tex}]~\\ + \LaTeX\ source of \LILO's technical overview. + \item[\path{lilo/doc/*.fig}]~\\ + Various \name{xfig} pictures used in the technical overview. + \item[\path{lilo/doc/fullpage.sty}]~\\ + Style file to save a few square miles of forest. + \item[\path{lilo/doc/rlatex}]~\\ + Shell script that invokes \LaTeX\ repeatedly until all references have + settled. + \item[\path{lilo/doc/t2a.pl}]~\\ + \name{Perl} script to convert the \LaTeX\ source of the user's guide to + plain ASCII. +\end{description} + +Files created after \raw{make} in \path{lilo/} (among others): + +\begin{description} + \item[\path{lilo/boot.b}]~\\ + Combined boot sector. \raw{make install} puts this file into \path{/boot} + \item[\path{lilo/chain.b}]~\\ + Generic chain loader. \raw{make install} puts this file into \path{/boot} + \item[\path{lilo/os2\_d.b}]~\\ + Chain loader to load \name{OS/2} from the second hard disk. + \raw{make install} puts this file into \path{/boot} + \item[\path{lilo/lilo}]~\\ + \LILO\ (map) installer. \raw{make install} puts this file into \path{/sbin} + \item[\path{lilo/activate}]~\\ + Simple boot partition setter. + \item[\path{lilo/dparam.com}]~\\ + MS-DOS executable of the disk parameter dumper. +\end{description} + + +\subsubsection{Normal first-time installation} +\label{install} + +First, you have to install the \LILO\ files: + +\begin{itemize} + \item extract all files from \path{lilo-\meta{version}.tar.gz} in a new + directory.\footnote{E.g. \path{/usr/src/lilo}} + \item configure the \path{Makefile} (see section \ref{cfgmf}) + \item run\quad\raw{make}\quad to compile and assemble all parts. + \item run\quad\raw{make install}\quad to copy all \LILO\ files to + the directories where they're installed. \path{/sbin} should now + contain the file \path{lilo}, \path{/usr/sbin} should contain + \path{keytab-lilo.pl}, and + \path{/boot} should contain \path{boot.b}, \path{chain.b}, and + \path{os2\_d.b}. +\end{itemize} + +If you want to use \LILO\ on a non-standard disk, you might have to determine +the parameters of your disk(s) and specify them in the configuration file. +See section \ref{diskgeo} for details. +If you're using such a non-standard system, the next step is to test +\LILO\ with the boot sector on a floppy disk: + +\begin{itemize} + \item insert a blank (but low-level formatted) floppy disk into + \path{/dev/fd0}. + \item run \raw{echo image=\meta{kernel\_image}}\verb" |"\\ + \raw{/sbin/lilo -C - -b /dev/fd0 -v -v -v} \\ + If you've already installed \LILO\ on your system, you might not want + to overwrite your old map file. + Use the \raw{-m} option to specify an alternate map file name. + \item reboot. \LILO\ should now load its boot loaders from the floppy disk + and then continue loading the kernel from the hard disk. +\end{itemize} + +Now, you have to decide, which boot concept you want to use. Let's assume +you have a Linux partition on \path{/dev/hda2} and you want to install your +\LILO\ boot sector there. The DOS-MBR loads the \LILO\ boot sector. + +\begin{itemize} + \item get a working boot disk, e.g. an install or recovery disk. Verify that + you can boot + with this setup and that you can mount your Linux partition(s) with it. + \item if the boot sector you want to overwrite with \LILO\ is of any value + (e.g. it's the MBR or if it contains a boot loader you might want to use + if you encounter problems with \LILO), you should mount your boot disk + and make a backup copy of your boot sector to a file on that floppy, + e.g. \verb"dd if=/dev/hda of=/fd/boot_sector bs=512 count=1" + \item create the configuration file \path{/etc/lilo.conf}, e.g. \\ +\meta{global settings} \\ +\meta{image specification} \\ +\verb" "\meta{per-image options} \\ +$\ldots$ \\ + Be sure to use absolute paths for all files. Relative paths may cause + unexpected behaviour when using the \raw{-r} option. + \item now, you can check what \LILO\ would do if you were about to install + it on your hard disk: \\ +\verb"/sbin/lilo -v -v -v -t" + \item if you need some additional boot utility (i.e. \name{BOOTACTV}), you + should install that now + \item run \path{/sbin/lilo} to install \LILO\ on your hard disk + \item if you have to change the active partition, use \name{fdisk} or + \name{activate} to do that + \item reboot +\end{itemize} + + +\subsubsection{Build-time configuration} +\label{cfgmf} + +Certain build-time parameters can be configured. +They can either be edited in the top-level \path{Makefile} or they can be +stored in a file \path{/etc/lilo.defines}. Settings in the \path{Makefile} +are ignored if that file exists. + +The following items can be configured: +\begin{description} + \item[\raw{BEEP}] Enables beeping after displaying ``LILO''. This is + useful on machines which don't beep at the right time when booting + and when working over a serial + console. This option is disabled by default. + \item[\raw{IGNORECASE}] Makes image name matching case-insensitive, i.e. + ``linux'' and ``Linux'' are identical. This option is enabled by + default. Note that password matching is always case-sensitive. + \item[\raw{LARGE\_EDBA}] Loads \LILO\ at a lower address in order to + leave more space for the EBDA (Extended BIOS Data Area). This is + necessary on some recent MP systems. Note that enabling \raw{LARGE\_EDBA} + reduces the maximum size of ``small'' images (e.g. ``Image'' or + ``zImage''). + \item[\raw{NO1STDIAG}] Do not generate diagnostics on read errors in the + first stage boot loader. This avoids possibly irritating error codes + if the disk controller has transient read problems. This option is + disabled by default. + \item[\raw{NODRAIN}] The boot loader empties the keyboard buffer + when starting, because it may contain garbage on some systems. Draining + the keyboard buffer can be disabled by setting the \raw{NODRAIN} option. + \raw{NODRAIN} is disabled by default. + \item[\raw{NOINSTDEF}] If the option \craw{install} is omitted, don't install + a new boot sector, but try to modify the old boot sector instead. This + option is disabled by default. + \item[\raw{ONE\_SHOT}] Disables the command-line timeout (configuration + variable \craw{timeout}) if any key is pressed. This way, very short + timeouts can be used if \craw{prompt} is set. \raw{ONE\_SHOT} is disabled + by default. + \item[\raw{READONLY}] Disallows overwriting the default command line sector + of the map file. This way, command lines set with \raw{-R} stay in effect + until they are explicitly removed. \raw{READONLY} also disables + \craw{lock}, \craw{fallback}, and everything enabled by + \raw{REWRITE\_TABLE}. This option is disabled by default. + \item[\raw{REWRITE\_TABLE}] Enables rewriting the partition table at boot + time. This may be necessary to boot certain operating systems who + expect the active flag to be set on their partition or who need changes + in partition types. See also section + \ref{ptman}. This option is \emphasize{dangerous} and it is disabled by + default. + \item[\raw{USE\_TMPDIR}] Use the directory indicated in the \raw{TMPDIR} + environment variable when creating temporary device files. If \raw{TMPDIR} + is not set or if \LILO\ is compiled without \raw{USE\_TMPDIR}, temporary + device files are created in \path{/tmp}.\footnote{Note that, while honoring + \raw{TMPDIR} is the ``right'' thing to do, the fact that \LILO\ has to + create temporary device files at all may indicate that the operating + environment is not completely set up, so \raw{TMPDIR} may point to an + invalid location.} This option is disabled by default. + \item[\raw{VARSETUP}] Enables the use of variable-size setup segments. + This option is enabled by default and is only provided to fall back to + fixed-size setup segments in the unlikely case of problems when using + prehistoric kernels. + \item[\raw{XL\_SECS=\meta{sectors}}] Enable support for extra large + (non-standard) floppy disks. The number of sectors is set in the BIOS + disk parameter table to the specified value. Note that this hack may + yield incorrect behaviour on some systems. This option is disabled by + default. +\end{description} + +\path{/etc/lilo.defines} should be used if one wishes to make +permanent configuration changes. The usual installation procedures don't +touch that file. Example: + +\begin{verbatim} +-DIGNORECASE -DONE_SHOT +\end{verbatim} + +After changing the build-time configuration, \LILO\ has to be recompiled +with the following commands: + +\begin{verbatim} +make distclean +make +\end{verbatim} + + +\subsubsection{Floppy disk installation} + +In some cases\footnote{E.g. if no hard disk is accessible through the BIOS.}, +it may be desirable to install \LILO\ on a floppy disk in a way that it can +boot a kernel without accessing the hard disk. + +The basic procedure is quite straightforward (see also section \ref{broken}): +\begin{itemize} + \item a file system has to be created on the file system + \item the kernel and \path{boot.b} have to be copied to the floppy disk + \item \path{/sbin/lilo} has to be run to create the map file +\end{itemize} + +This can be as easy as +\begin{verbatim} +/sbin/mke2fs /dev/fd0 +[ -d /fd ] || mkdir /fd +mount /dev/fd0 /fd +cp /boot/boot.b /fd +cp /zImage /fd +echo image=/fd/zImage label=linux | + /sbin/lilo -C - -b /dev/fd0 -i /fd/boot.b -c -m /fd/map +umount /fd +\end{verbatim} + +The command line of \path{/sbin/lilo} is a little tricky. \raw{-C -} takes +the configuration from standard input (naturally, one could also write the +configuration into a file), \raw{-b /dev/fd0} specifies that the boot sector +is written to the floppy disk, \raw{-i /fd/boot.b} takes the first and second +stage loaders from the floppy, \raw{-c} speeds up the load process, and +\raw{-m /fd/map} puts the map file on the floppy too. + + +\subsection{Updates} + +\LILO\ is affected by updates of kernels, the whole system and (trivially) +of \LILO\ itself. Typically, only \path{/sbin/lilo} has to be run after +any of those updates and everything will be well again (at least as far +as \LILO\ is concerned). + + +\subsubsection{\LILO\ update} +\label{liloupd} + +Before updating to a new version of \LILO, you should read at least the +file \path{INCOMPAT} which describes incompatibilities with previous +releases. + +After that, the initial steps are the same as +for a first time installation: extract all files, configure the \path{Makefile}, +run \raw{make} to build +the executables and run \raw{make install} to install the files. + +The old versions of \path{boot.b}, \path{chain.b}, etc. are automatically +renamed to \path{boot.old}, \path{chain.old}, etc. This is done to ensure +that you can boot even if the installation procedure does not finish. +\path{boot.old}, \path{chain.old}, etc. can be deleted after the map file +is rebuilt. + +Because the locations of \path{boot.b}, \path{chain.b}, etc. have changed +and because the map file format may be different too, you have to update +the boot sector and the map file. Run \path{/sbin/lilo} to do this. + + +\subsubsection{Kernel update} +\label{kernupd} + +Whenever any of the kernel files that are accessed by \LILO\ is moved or +overwritten, the map has to be re-built.\footnote{It is advisable to +keep a second, stable, kernel image that can be booted if you forget +to update the map after a change to your usual kernel image.} Run +\path{/sbin/lilo} to do this. + +The kernel has a make target ``zlilo'' that copies the kernel +to \path{/vmlinuz} and runs \path{/sbin/lilo}. + + +\subsubsection{System upgrade} + +Normally, system upgrades (i.e. installation or removal of packages, possibly +replacement of a large part of the installed binaries) do not affect \LILO. +Of course, if a new kernel is installed in the process, the normal kernel +update procedure has to be followed (see section \ref{kernupd}). Also, if +kernels are removed or added, it may be necessary to update the configuration +file. + +If \LILO\ is updated by this system upgrade, \path{/sbin/lilo} should be +run before booting the upgraded system. It is generally a good idea not to +rely on the upgrade procedure to perform this essential step automatically. + +However, system upgrades which involve removal and re-creation of entire +partitions (e.g. \path{/}, \path{/usr}, etc.) are different. First, they +should be avoided, because they bear a high risk of losing other critical +files, e.g. the \path{/etc/XF86Config} you've spent the last week fiddling +with. If an upgrade really has to be performed in such a brute-force way, +this is equal with total removal of \LILO, followed by a new installation. +Therefore, the procedures described in the sections \ref{deinst} and +\ref{liloupd} have to be performed. If you've forgotten to make a backup +copy of \path{/etc/lilo.conf} before the destructive upgrade, you might +also have to go through section \ref{install} again. + + +\subsection{\LILO\ de-installation} +\label{deinst} + +In order to stop \LILO\ from being invoked when the system boots, its +boot sector has to be either removed or disabled. All other files belonging +to \LILO\ can be deleted \emphasize{after} removing the boot sector, +if desired.% +\footnote{Backup copies of old boot sectors may be needed when removing +the boot sector. They are stored in \path{/boot}.} + +Again, \emphasize{when removing Linux, \LILO\ must be de-installed before (!) +its files (\path{/boot}, etc.) are deleted.} This is +especially important if \LILO\ is operating as the MBR. + +LILO 14 (and newer) can be de-installed with \verb"lilo -u". If LILO 14 +or newer is currently installed, but the first version of LILO installed was +older than 14, \verb"lilo -U" may work. When using \verb"-U", the warning +at the end of this section applies. + +If \LILO's boot sector has been installed on a primary partition and is +booted by the ``standard'' MBR or some partition switcher program, it can be +disabled by making a different partition active. MS-DOS' FDISK, Linux +\name{fdisk} or \LILO's \name{activate} can do that. + +If \LILO's boot sector is the master boot record (MBR) of a disk, it has +to be replaced with a different MBR, typically MS-DOS' ``standard'' MBR. +When using MS-DOS 5.0 or above, the MS-DOS MBR can be restored with +\verb"FDISK /MBR". This only alters the boot loader code, not the +partition table. + +\LILO\ automatically makes backup copies when it overwrites boot sectors. +They are named \path{/boot/boot.\meta{nnnn}}, with \meta{nnnn} +corresponding to the device number, e.g. \raw{0300} is \path{/dev/hda}, +\raw{0800} is \path{/dev/sda}, etc. Those backups can be used to restore +the old MBR if no easier method is available. The commands are \\ +\raw{dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1} or \\ +\raw{dd if=/boot/boot.0800 of=/dev/sda bs=446 count=1} \\ +respectively. + +\emphasize{WARNING:} Some Linux distributions install \path{boot.\meta{nnnn}} +files +from the system where the distribution was created. Using +those files may yield unpredictable results. Therefore, the file creation +date should be carefully checked. + + +\subsection{Installation of other operating systems} +\label{instoth} + +Some other operating systems (e.g. MS-DOS 6.0) appear to modify the MBR in +their install procedures. It is therefore possible that \LILO\ will stop +to work after such an installation and Linux has to be booted from floppy +disk. The original state can be restored by either re-running +\path{/sbin/lilo } (if \LILO\ is installed as the MBR) or by making +\LILO's partition active (if it's installed on a primary partition). + +It is generally a good idea to install \LILO\ after the other operating +systems have been installed. E.g. OS/2 is said to cause trouble when +attempting to add it to an existing Linux system. (However, booting +from floppy and running \path{/sbin/lilo} should get around most +interferences.) + +Typically, the new operating system then has to be added to \LILO's +configuration (and \path{/sbin/lilo} has to be re-run) in order to boot +it. + +See also section \ref{othpro} for a list of known problems with some +other operating systems. + + +\newpage +\section{Troubleshooting} + +All parts of \LILO\ display some messages that can be used to diagnose +problems. + + +\subsection{Map installer warnings and errors} + +Most messages of the map installer (\path{/sbin/lilo}) should be +self-explanatory. Some messages that indicate common errors are +listed below. They are grouped +into fatal errors and warnings (non-fatal errors). + + +\subsubsection{Fatal errors} + +\begin{description} + \item[\raw{Boot sector of \meta{device\_name} doesn't have a boot % + signature}] + \item[\raw{Boot sector of \meta{device\_name} doesn't have a LILO % + signature}]~\\ + The sector from which \LILO\ should be uninstalled doesn't appear to be a + \LILO\ boot sector. + \item[\raw{Can't put the boot sector on logical partition \meta{number}}]~\\ + An attempt has been made to put \LILO's boot sector on the current + root file system partition which is on a logical partition. This usually + doesn't have the desired effect, because common MBRs can only boot + primary partitions. This check can be bypassed by explicitly + specifying the boot partition with the \raw{-b} option or by setting + the configuration variable \craw{boot}. + \item[\raw{Checksum error}]~\\ + The descriptor table of the map file has an invalid checksum. Refresh + the map file \emphasize{immediately} ! + \item[\raw{Device 0x\meta{number}: Configured as inaccessible.}]~\\ + There is a \craw{disk} section entry indicating that the device is + inaccessible + from the BIOS. You should check carefully that all files \LILO\ tries to + access when booting are on the right device. + \item[\raw{Device 0x\meta{number}: Got bad geometry \meta{sec}/\meta{hd}/% +\meta{cyl}}]~\\ + The device driver for your SCSI controller does not support geometry + detection. You have to specify the geometry explicitly (see section + \ref{diskgeo}). + \item[\raw{Device 0x\meta{number}: Invalid partition table, entry % + \meta{number}}]~\\ + The 3D and linear addresses of the first sector of the specified partition + don't correspond. This is typically caused by partitioning a disk with + a program that doesn't align partitions to tracks and later using + PC/MS-DOS or OS/2 on that disk. \LILO\ can attempt to correct the problem, + see page \pageref{fix-table}. + \item[\raw{Device 0x\meta{number}: Partition type 0x\meta{number} does not + seem suitable for a LILO boot sector}]~\\ + The location where the \LILO\ boot sector should be placed does not seem + to be suitable for that. (See also also section \ref{diskorg}). You should + either adjust the partition type to reflect the actual use or put the + boot sector on a different partition. This consistency check only yields + a warning (i.e. \LILO\ continues) if the option \craw{ignore-table} is + set. + \item[\raw{\meta{device\_name} is not a valid partition device}]~\\ + The specified device is either not a device at all, a whole disk, or + a partition on a different disk than the one in whose section its + entry appears. + \item[\raw{\meta{device\_name} is not a whole disk device}]~\\ + Only the geometry of whole disks (e.g. \path{/dev/hda}, \path{/dev/sdb}, + etc.) can be redefined when using \craw{disk} sections. + \item[\raw{DISKTAB and DISK are mutually exclusive}]~\\ + You cannot use a \path{disktab} file and disk geometry definitions in the + configuration file at the same time. Maybe \path{/etc/disktab} was + accidentally used, because that's the default for backward-compatibility. + You should delete \path{/etc/disktab} after completing the transition to + \craw{disk} sections. + \item[\raw{Duplicate entry in partition table}]~\\ + A partition table entry appears twice. The partition table has to be + fixed with \name{fdisk}. + \item[\raw{Duplicate geometry definition for \meta{device\_name}}]~\\ + A disk or partition geometry definition entry for the same device appears + twice in the configuration file. Note that you mustn't write a partition + section for the whole disk --- its start sector is always the first + sector of the disk. + \item[\raw{First sector of \meta{device} doesn't have a valid boot % + signature}]~\\ + The first sector of the specified device does not appear to be a valid + boot sector. You might have confused the device name.\footnote{Because + different partition programs may display the partitions in a different + order, it is possible that what you think is your first partition isn't + \path{/dev/hda1}, etc. A good method to verify the content of a partition + is to try to mount it.} + \item[\raw{geo\_comp\_addr: Cylinder \meta{number} beyond end of media % + (\meta{number})}]~\\ + A file block appears to be located beyond the last cylinder of the disk. + This probably indicates an error in the disk geometry specification (see + section \ref{diskgeo}) or a file system corruption. + \item[\raw{geo\_comp\_addr: Cylinder number is too big (\meta{number} $>$ + 1023)}]~\\ + Blocks of a file are located beyond the 1024th cylinder of a hard disk. + \LILO\ can't access such files, because the BIOS limits cylinder numbers to + the range 0$\ldots$1023. Try moving the file to a different place, + preferably a + partition that is entirely within the first 1024 cylinders of the disk. + \item[\raw{Hole found in map file (\meta{location})}]~\\ + The map installer is + confused about the disk organization. Please report this error. + \item[\raw{\meta{item} doesn't have a valid LILO signature}]~\\ + The specified item has been located, but is not part of \LILO. + \item[\raw{\meta{item} has an invalid stage code (\meta{number})}]~\\ + The specified item has probably been corrupted. Try re-building + \LILO. + \item[\raw{\meta{item} is version \meta{number}. Expecting version% + \meta{number}.}]~\\ + The specified entity is either too old or too new. Make sure all parts + of \LILO\ (map installer, boot loaders and chain loaders) are from the + same distribution. \footnote{The expected version number may be different + from the version number of the \LILO\ package, because file version + numbers are only increased when the file formats change.} + \item[\raw{Kernel \meta{name} is too big}]~\\ + The kernel image (without the setup + code) is bigger than 512 kbytes (or 448 kbytes, if built with + \raw{LARGE\_EDBA}). \LILO\ would overwrite itself when trying + to load such a kernel. This limitation only applies to old kernels which + are loaded below 0x10000 (e.g. ``Image'' or ``zImage''). Try building the + kernel with ``bzImage''. If this is undesirable for some reason, try + removing some unused drivers and compiling the kernel again. + This error may also occur if the kernel image is damaged or if it + contains trailing ``junk'', e.g. as the result of copying an entire boot + floppy to the hard disk. + \item[\raw{LOCK and FALLBACK are mutually exclusive}]~\\ + Since \craw{lock} and \craw{fallback} both change the default command line, + they can't be reasonably used together. + \item[\raw{Map \meta{path} is not a regular file.}]~\\ + This is probably the result of an attempt to omit writing a map file, e.g. + with \raw{-m /dev/null}. The \raw{-t} option should be used to accomplish + this. + \item[\raw{Must specify SECTORS and HEADS together}]~\\ + It is assumed that disks with a ``strange'' number of sectors will also + have a ``strange'' number of heads. Therefore, it's all or nothing. + \item[\raw{No geometry variables allowed if INACCESSIBLE}]~\\ + If a device is configured as \craw{inaccessible} (see section + \ref{diskspec}), + its \craw{disk} section must not contain any geometry variables. + \item[\raw{No image \meta{image} is defined}]~\\ + The command line specified either with the \raw{-R} option or with + \craw{fallback} does not contain the name of a valid image. Note that + optional images which have not been included in the map file are not + considered as valid. + \item[\raw{Partition entry not found}]~\\ + The partition from which an other + operating system should be booted isn't listed in the specified + partition table. This either means that an incorrect partition + table has been specified or that you're trying to boot from a + logical partition. The latter usually doesn't work. You can bypass + this check by omitting the partition table specification (e.g. + omitting the variable \craw{table}). + \item[\raw{Single-key clash: "\meta{name}" vs. "\meta{name}"}]~\\ + The specified image labels or aliases conflict because one + of them is a single character and has the \craw{single-key} option set, + and the other name begins with that character. + \item[\raw{Sorry, don't know how to handle device \meta{number}}]~\\ + \LILO\ uses files that are located on a device for which + there is no easy way to determine the disk geometry. Such devices have + to be explicitly described, see section \ref{diskgeo}. + \item[\raw{This LILO is compiled READONLY and doesn't support $\ldots$}]~\\ + If \LILO\ is not allowed to write to the disk at boot time (see section + \ref{cfgmf}), options like \craw{lock} and \craw{fallback} are unavailable. + \item[\raw{This LILO is compiled without REWRITE\_TABLE and doesn't support + $\ldots$}]~\\ + If \LILO\ is not allowed to rewrite partition tables at boot time (see + section \ref{ptman}), options like \craw{activate} and \craw{set} (in a + \craw{change} section) are unavailable. You may also get this error if + \LILO\ is compiled with \raw{READONLY} enabled. + \item[\raw{Timestamp in boot sector of \meta{device} differs from date of % + \meta{file}}]~\\ + The backup copy of the boot sector does not appear to be an ancestor of + the current boot sector. If you are absolutely sure that the boot sector + is indeed correct, you can bypass this check by using \raw{-U} instead + of \raw{-u}. + \item[\raw{Trying to map files from unnamed device 0x\meta{number} + (NFS ?)}]~\\ + This is probably the same problem as described below, only with the + root file system residing on NFS. + \item[\raw{Trying to map files from your RAM disk. + Please check -r option or ROOT environment variable.}]~\\ + Most likely, you or some installation script is trying to invoke + \LILO\ in a way that some of the files is has to access reside on the + RAM disk. Normally, the \raw{ROOT} environment variable should be set + to the mount point of the effective root device if installing + \LILO\ with a different root directory. See also sections \ref{creupd} + and \ref{install}. + \item[\raw{VGA mode presetting is not supported by your kernel.}]~\\ + Your kernel sources appear to be very old ('93 ?). \LILO\ may work on + your system if you remove the \craw{vga} option. + \item[\raw{write \meta{item}: \meta{error\_reason}}]~\\ + The disk is probably full or mounted read-only. +\end{description} + + +\subsubsection{Warnings} +\label{warnings} + +Messages labeled with ``Warning'' can be turned off with the \craw{nowarn} +option. + +\begin{description} + \item[\raw{FIGETBSZ \meta{file\_name}: \meta{ error\_reason}}]~\\ + The map installer is unable to determine the block size of a file system. + It assumes a block size of two sectors (1kB). + \item[\raw{Ignoring entry '\meta{variable\_name}'}]~\\ + The command-line option corresponding to the specified variable is set. + Therefore, the configuration file entry is ignored. + \item[\raw{Setting DELAY to 20 (2 seconds)}]~\\ + Because accidentally booting the wrong kernel or operating system may + be very inconvenient on systems that are not run from a local display, + the minimum delay is two seconds if the \craw{serial} variable is set. + \item[\raw{(temp) \meta{item}: \meta{error\_reason}}]~\\ + Deleting a temporary file has failed for the specified reason. + \item[\raw{Warning: BIOS drive 0x\meta{number} may not be accessible}]~\\ + Because most BIOS versions only support two floppies and two hard disks, + files located on additional disks may be inaccessible. This warning + indicates that some kernels or even the whole system may be unbootable. + \item[\raw{Warning: COMPACT may conflict with LINEAR on some systems}]~\\ + Please see section \ref{othpro} for a description of this problem. + \item[\raw{Warning: \meta{config\_file} should be owned by root}]~\\ + In order to prevent users from compromising system integrity, the + configuration file should be owned by root and write access for all other + users should be disabled. + \item[\raw{Warning: \meta{config\_file} should be readable only for root if + using PASSWORD}]~\\ + Users should not be allowed to read the configuration file when using the + \craw{password} option, because then, it contains unencrypted passwords. + \item[\raw{Warning: \meta{config\_file} should be writable only for root}]~\\ + See ``\raw{Warning: \meta{config\_file} should be owned by root}''. + \item[\raw{Warning: device 0x\meta{number} exceeds 1024 cylinder limit}]~\\ + A disk or partition exceeds the 1024 cylinder limit imposed by the BIOS. + This may result in a fatal error in the current installation run or in + later installation runs. See ``\raw{geo\_comp\_addr: + Cylinder number is too big (\meta{number} $>$ 1023)}'' for details. + \item[\raw{Warning: \meta{device} is not on the first disk}]~\\ + The specified partition is probably not on the first disk. \LILO's boot + sector can only be booted from the first disk unless some special boot + manager is used. + \item[\raw{WARNING: The system is unbootable !}]~\\ + One of the last installation steps has failed. This warning is typically + followed by a fatal error describing the problem. +\end{description} + + +\subsection{Boot loader messages} + +The boot loader generates three types of messages: progress and error messages +while it is loading, messages indicating disk access errors, and error +messages in response to invalid command-line input. Since messages of the +latter type are usually self-explanatory, only the two other categories +are explained. + + +\subsubsection{\LILO\ start message} + +When \LILO\ loads itself, it displays the word ``LILO''. Each letter is +printed before or after performing some specific action. If \LILO\ fails +at some point, the letters printed so far can be used to identify the +problem. This is described in more detail in the technical overview. + +Note that some hex digits may be inserted after the first ``L'' if a +transient disk problem occurs. Unless LILO stops at that point, generating +an endless stream of error codes, such hex digits do not indicate a +severe problem. + +\begin{description} + \item[\rm (\meta{nothing})] No part of \LILO\ has been loaded. + \LILO\ either isn't installed or the partition on which its boot + sector is located isn't active. + \item[\raw{L \meta{error} $\ldots$}] The first stage boot loader has been + loaded and started, but it can't load the second stage boot loader. + The two-digit error codes indicate the type of problem. (See also section + \ref{bioserr}.) This condition usually indicates a media failure or a + geometry mismatch (e.g. bad disk parameters, see section \ref{diskgeo}). + \item[\raw{LI}] The first stage boot loader was able to load the second + stage boot loader, but has failed to execute it. This can either be + caused by a geometry mismatch or by moving \path{/boot/boot.b} without + running the map installer. + \item[\raw{LIL}] The second stage boot loader has been started, but it + can't load the descriptor table from the map file. This is typically + caused by a media failure or by a geometry mismatch. + \item[\raw{LIL?}] The second stage boot loader has been loaded at an + incorrect address. This is typically caused by a subtle geometry + mismatch or by moving \path{/boot/boot.b} without running the map + installer. + \item[\raw{LIL-}] The descriptor table is corrupt. This can either be caused + by a geometry mismatch or by moving \path{/boot/map} without running + the map installer. + \item[\raw{LILO}] All parts of \LILO\ have been successfully loaded. +\end{description} + + +\subsubsection{Disk error codes} +\label{bioserr} + +If the BIOS signals an error when \LILO\ is trying to load a boot +image, the respective error code is displayed. The following BIOS +error codes are known: + +\begin{description} + \item[\raw{0x00}] ``Internal error''. This code is generated by + the sector read routine of the \LILO\ boot loader whenever an + internal inconsistency is detected. This might be caused by corrupt + files. Try re-building the map file. Another possible cause for this + error are attempts to access cylinders beyond 1024 while using the + \craw{linear} option. See section \ref{broken} for more details and + for how to solve the problem. + \item[\raw{0x01}] ``Illegal command''. This shouldn't happen, but if it + does, it may indicate an attempt to access a disk which is not supported + by the BIOS. See also ``Warning: BIOS drive 0x\meta{number} may not be + accessible'' in section \ref{warnings}. + \item[\raw{0x02}] ``Address mark not found''. This usually indicates + a media problem. Try again several times. + \item[\raw{0x03}] ``Write-protected disk''. This should only occur on + write operations. + \item[\raw{0x04}] ``Sector not found''. This typically indicates a + geometry mismatch. If you're booting a raw-written disk image, verify + whether it was created for disks with the same geometry as the one + you're using. If you're booting from a SCSI disk or a large IDE disk, + you should check, + whether \LILO\ has obtained correct geometry data from the kernel or + whether the geometry definition corresponds + to the real disk geometry. (See section \ref{diskgeo}.) Removing + \craw{compact} may help too. So may adding \craw{lba32} or \craw{linear}. + \item[\raw{0x06}] ``Change line active''. This should be a transient + error. Try booting a second time. + \item[\raw{0x07}] ``Invalid initialization''. The BIOS failed to properly + initialize the disk controller. You should control the BIOS setup + parameters. A warm boot might help too. + \item[\raw{0x08}] ``DMA overrun''. This shouldn't happen. Try booting + again. + \item[\raw{0x09}] ``DMA attempt across 64k boundary''. This shouldn't + happen, but may inicate a disk geometry mis-match. Try omitting + the \craw{compact} option. You may need to specify the disk geometry + yourself. + \item[\raw{0x0C}] ``Invalid media''. This shouldn't happen and might + be caused by a media error. Try booting again. + \item[\raw{0x10}] ``CRC error''. A media error has been detected. Try + booting several times, + running the map installer a second time (to put the map file at some + other physical location or to write ``good data'' over + the bad spot), mapping out the bad sectors/tracks and, if all else + fails, replacing the media. + \item[\raw{0x11}] ``ECC correction successful''. A read error occurred, + but was corrected. \LILO\ does not recognize this condition and + aborts the load process anyway. A second load attempt should + succeed. + \item[\raw{0x20}] ``Controller error''. This shouldn't happen. + \item[\raw{0x40}] ``Seek failure''. This might be a media problem. Try + booting again. + \item[\raw{0x80}] ``Disk timeout''. The disk or the drive isn't ready. + Either the media is bad or the disk isn't spinning. If you're booting + from a floppy, you might not have closed the drive door. Otherwise, + trying to boot again might help. + \item[\raw{0xBB}] ``BIOS error''. This shouldn't happen. Try booting + again. If the problem persists, removing the \craw{compact} option or + adding/removing \craw{linear} or \craw{lba32} might help. +\end{description} + +If the error occurred during a write operation, the error code (two hex +digits) is prefixed with a ``W''. Although write errors don't affect the +boot process, they might indicate a severe problem, because they usually +imply that \LILO\ has tried to write to an invalid location. +If spurious write errors occur on a system, it might be a good idea +to configure \LILO\ to run read-only (see section \ref{cfgmf}). + +Generally, invalid geometry and attempts to use more than two disks without a +very modern BIOS may yield misleading error codes. Please check carefully +if \path{/sbin/lilo} doesn't emit any warnings. Then try using the +\craw{linear} or \craw{lba32} option (see section \ref{cfgglo}). + + +\subsection{Other problems} +\label{othpro} + +This section contains a collection of less common problems that have been +observed. See also section \ref{instoth} for general remarks on using +\LILO\ with other operating systems. Some of the problems are obscure and +so are the work-arounds. + +\begin{itemize} + \item If \LILO\ doesn't go away even if you erase its files, format your + Linux partition, etc., you've probably installed \LILO\ as your MBR and + you've forgotten to deinstall it before deleting its files. See section + \ref{deinst} for what you can do now. + \item For yet unknown reasons, \LILO\ may fail on some systems with + AMI BIOS if the ``Hard Disk Type 47 RAM area'' is set to ``0:300'' + instead of ``DOS 1K''. + \item Some disk controller BIOSes perform disk geometry/address translations + that + are incompatible with the way the device's geometry is seen from Linux, + i.e. without going through the BIOS. Particularly, large IDE disks and + some PCI SCSI + controllers appear to have this problem. In such cases, either the + translated geometry has to be specified in a \craw{disk} section or the + sector address translation can be deferred by using the \craw{linear} + option. In a setup where floppies are not normally used for booting, + the \craw{linear} approach should be preferred, because this avoids + the risk of specifying incorrect numbers. + \item OS/2 is said to be bootable from a logical partition with + \LILO\ acting as the primary boot selector if \LILO\ is installed on + the MBR, the OS/2 BootManager is on an active primary partition and + \LILO\ boots BootManager. Putting \LILO\ on an extended partition + instead is said to crash the OS/2 FDISK in this scenario. + + Note that booting \LILO\ from BootManager (so BootManager is the + primary selector) or booting OS/2 directly from a primary partition + (without BootManager) should generally work. See also section + \ref{instoth}. + \item Windows NT is reported to be bootable with \LILO\ when \LILO\ acts as + the MBR and the Windows NT boot loader is on the DOS partition. However, + NT's disk manager complains about LILO's MBR when trying to edit the + partition table. + \item Some PC UNIX systems (SCO and Unixware have been reported to exhibit + this problem) depend on their partition being active. See section + \ref{ptman} for how this can be accomplished. + \item Future Domain TMC-1680 adapters with the BIOS versions 3.4 and 3.5 + assign BIOS device numbers in the wrong order, e.g. on a two-disk system, + \path{/dev/sda} becomes \raw{0x81} and \path{/dev/sdb} becomes + \raw{0x80}. This can be fixed with the following \craw{disk} section:\\ + \verb"disk=/dev/sda bios=0x81 disk=/dev/sdb bios=0x80"\\ + Note that this is only valid for a two-disk system. In three-disk + systems, \path{/dev/sdc} would become \raw{0x80}, etc. Also, single-disk + systems don't have this problem (and the ``fix'' would break them). + \item Some BIOSes don't properly recognize disks with an unusual partition + table (e.g. without any partition marked active) and refuse to boot from + them. This can also affect the second hard disk and the problem may + only occur if the system is booted in a particular way (e.g. only after a + cold boot). + \item On some systems, using \craw{linear} and \craw{compact} or + \craw{lba32} and \craw{compact} together + leads to a boot failure. The exact circumstances under which this + happens are still unknown. +\end{itemize} + +%%beginskip +\end{document} +%%endskip diff --git a/dos/Makefile b/dos/Makefile new file mode 100644 index 0000000..1481da1 --- /dev/null +++ b/dos/Makefile @@ -0,0 +1,81 @@ +# -*- makefile -*- +# Makefile for BCC compilation of 'lilo.com' +# +# Known to work with BCC version 0.16.15 +# Known not to work with BCC version 0.16.10 + +# adding variables +include ../make.vars + +MODEL=d +CC = bcc -M$(MODEL) +CPP = gcc -E +CINCL = /usr/lib/bcc/include +AS = as86 +LINK = $(CC) -v +COPT = -ansi -I.. -I$(CINCL) -c -O $(CFLAGS) +LOPT = -m >$*.map -M -d +AOPT = -0 -a -w +CFLAGS = -DLCF_IGNORECASE -DLCF_DSECS=3 -DLCF_PASS160 + +.SUFFIXES: .com .S + +HFILES = ../src/lilo.h ../src/bitmap.h ../src/cfg.h ../src/config.h ../src/common.h ../src/map.h ../src/temp.h ../src/version.h + +.c.o: + $(CC) $(COPT) -o $@ ../$*.c + +.o.com: + $(LINK) $(LOPT) -o $@ $^ + +.s.o: + $(AS) $(AOPT) -l $*.lis -o $@ $< + + + + +all: check lilo.com + +alles: all + cp -ufv lilo.com lilo.map /dosC/boot + +check: + @echo $(CFLAGS) + @if [ -x /usr/bin/bcc -o -x /usr/local/bin/bcc ]; then echo Okay; \ + else echo; echo "You don't seem to have the 'bcc' compiler from the 'dev86' package."; \ + echo; exit 1; fi + +lilo: + make -e CFLAGS="$(PCONFIG)" lilo.com + +lilo.com: lilo.o common.o cfg.o map.o # cprintf.o + +lilo.o: ../src/lilo.c $(HFILES) + $(CC) $(COPT) -o $@ ../src/$*.c + +cfg.o: ../src/cfg.c $(HFILES) + $(CC) $(COPT) -o $@ ../src/$*.c + +common.o: ../src/common.c $(HFILES) + $(CC) $(COPT) -o $@ ../src/$*.c + +cprintf.o: ../src/cprintf.c $(HFILES) + $(CC) $(COPT) -o $@ ../src/$*.c + +map.o: ../src/map.c $(HFILES) + $(CC) $(COPT) -o $@ ../src/$*.c + + +install: + if [ -d $$DESTDIR$(DOS_DIR) -a -f lilo.com ]; then \ + cp lilo.com $$DESTDIR$(DOS_DIR); fi + +tidy: + rm -f *.map *.lis core + +clean: tidy + rm -f *.o *.s *.img *.b *.com *.gz + +distclean: clean + rm -f *~ *.c *.h + diff --git a/dos/README b/dos/README new file mode 100644 index 0000000..fe18123 --- /dev/null +++ b/dos/README @@ -0,0 +1,30 @@ + DOS executable 'lilo.com' + +Configuration file: C:\ETC\LILO.CNF +Sector Map file: C:\BOOT\MAP + + +1. The default configuration file may be overridden with the speci- +fication '-C ' on the command line. '' may be +specified literally as "none", for no configuration file. The only +keyword allowed in the configuration file is "map=", to specify the +name of the sector map file. + +2. The sector map file is 'C:\BOOT\MAP' if no other name is explicitly +specified by "map=" in the configuration file, or '-m ' on the +command line. This file must be the same file as specified in the +'/etc/lilo.conf' file, except that under Linux, Linux file system naming +applies; whereas under DOS/Windows, DOS file system naming applies. + +3. The sector map file MUST be placed on a filesystem that can be read/ +written under both DOS and Linux. FAT filesystems satisfy this require- +ment. + +4. The 'LILO.COM' executable must be placed somewhere on the executable +path within the DOS/Windows system. Or it may be referenced by a *.BAT +file on the executable PATH, which provides the opportunity to override +the default configuration and sector map files with command line switches +that will always be seen by the 'LILO.COM' executable. + +--John Coffman +23-Jan-2005 diff --git a/hooks/Makefile b/hooks/Makefile new file mode 100644 index 0000000..d8a01ff --- /dev/null +++ b/hooks/Makefile @@ -0,0 +1,27 @@ +# -*- makefile -*- + +# adding variables +include ../make.vars + +POSTUP = initramfs/post-update.d +POSTINST = kernel/postinst.d +POSTRM = kernel/postrm.d + +all: + +install: + mkdir -p $$DESTDIR$(CFG_DIR)/$(POSTUP) + mkdir -p $$DESTDIR$(CFG_DIR)/$(POSTINST) + mkdir -p $$DESTDIR$(CFG_DIR)/$(POSTRM) + install -m 0755 $(POSTUP)/runlilo $$DESTDIR$(CFG_DIR)/$(POSTUP) + install -m 0755 $(POSTINST)/zz-runlilo $$DESTDIR$(CFG_DIR)/$(POSTINST) + install -m 0755 $(POSTRM)/zz-runlilo $$DESTDIR$(CFG_DIR)/$(POSTRM) + +clean: + +distclean: + +uninstall: + rm -f $$DESTDIR$(CFG_DIR)/$(POSTUP)/runlilo + rm -f $$DESTDIR$(CFG_DIR)/$(POSTINST)/zz-runlilo + rm -f $$DESTDIR$(CFG_DIR)/$(POSTRM)/zz-runlilo diff --git a/hooks/initramfs/post-update.d/runlilo b/hooks/initramfs/post-update.d/runlilo new file mode 100644 index 0000000..100cfed --- /dev/null +++ b/hooks/initramfs/post-update.d/runlilo @@ -0,0 +1,40 @@ +#!/bin/sh +# +# runlilo - postupdate script for modern initrd management +# +# Copyright 2010 Joachim Wiedorn +# All rights reserved. +# +# Licensed under the terms contained in the file 'COPYING' +# in the source directory. +# + +set -e +PAR=ever + +# check for maintainer param +if [ ! -z "${DPKG_MAINTSCRIPT_PACKAGE}" ] +then PAR="${DPKG_MAINTSCRIPT_PACKAGE}"; fi + +case "$PAR" in + + linux-image-*) + # lilo will be updated later by the kernel postinst hook. + # no need to update it now. + true + ;; + + *) + # Run the boot loader installer + if [ -f /sbin/lilo ];then + if [ -f /etc/lilo.conf ];then + lilo &2 + else + echo "Warning: Not updating LILO; /etc/lilo.conf not found!" >&2 + fi + fi + ;; + +esac + +# end of file diff --git a/hooks/kernel/postinst.d/zz-runlilo b/hooks/kernel/postinst.d/zz-runlilo new file mode 100644 index 0000000..f7c39b1 --- /dev/null +++ b/hooks/kernel/postinst.d/zz-runlilo @@ -0,0 +1,38 @@ +#!/bin/sh +# +# zz-runlilo - postinst script for modern kernel management +# +# Copyright 2010 Joachim Wiedorn +# All rights reserved. +# +# Licensed under the terms contained in the file 'COPYING' +# in the source directory. +# + +set -e +PAR=ever + +# check for maintainer param +if [ -n "${DEB_MAINT_PARAMS}" ]; then + PAR=none + if [ `echo "${DEB_MAINT_PARAMS}" | grep -v abort | grep -c configure` -eq 1 ] + then PAR=configure; fi +fi + +# check for configure|upgrade|remove|purge +case "$PAR" in + + ever|configure) + # Run the boot loader installer + if [ -f /sbin/lilo ]; then + if [ -f /etc/lilo.conf ]; then + lilo &2 + else + echo "Warning: Not updating LILO; /etc/lilo.conf not found!" >&2 + fi + fi + ;; + +esac + +# end of file diff --git a/hooks/kernel/postrm.d/zz-runlilo b/hooks/kernel/postrm.d/zz-runlilo new file mode 100644 index 0000000..671c164 --- /dev/null +++ b/hooks/kernel/postrm.d/zz-runlilo @@ -0,0 +1,37 @@ +#!/bin/sh +# +# zz-runlilo - postrm script for modern kernel management +# +# Copyright 2010 Joachim Wiedorn +# All rights reserved. +# +# Licensed under the terms contained in the file 'COPYING' +# in the source directory. +# + +set -e +PAR=ever + +# check for maintainer param +if [ -n "${DEB_MAINT_PARAMS}" ]; then + PAR=none + if [ `echo "${DEB_MAINT_PARAMS}" | grep -v abort | grep -c remove` -eq 1 ] + then PAR=remove; fi +fi + +# check for configure|upgrade|remove|purge +case "$PAR" in + + ever|remove) + # Run the boot loader installer + if [ -f /sbin/lilo ]; then + if [ -f /etc/lilo.conf ]; then + # Do not abort kernel removal in case of error + lilo &2 || true + fi + fi + ;; + +esac + +# end of file diff --git a/images/Makefile b/images/Makefile new file mode 100644 index 0000000..93ce46d --- /dev/null +++ b/images/Makefile @@ -0,0 +1,32 @@ +# -*- makefile -*- + +# adding variables +include ../make.vars + +BINLILO := ../src/lilo +BMPS8 := coffee.bmp +BMPS4 := debian.bmp debian-de.bmp debianlilo.bmp inside.bmp onlyblue.bmp tuxlogo.bmp + + +all: $(BMPS4) $(BMPS8) + +$(BMPS4): %.bmp: %_16c.uu + uudecode $< + @echo Y | $(BINLILO) -E $(addsuffix .dat,$(basename $<)) 1>/dev/null + +$(BMPS8): %.bmp: %_256c.uu + uudecode $< + @echo Y | $(BINLILO) -E $(addsuffix .dat,$(basename $<)) 1>/dev/null + +install: all + mkdir -p $$DESTDIR$(BOOT_DIR) + install -m 0644 $(BMPS4) $(BMPS8) $$DESTDIR$(BOOT_DIR) + +clean: + rm -f $(BMPS4) $(BMPS8) + +distclean: clean + +uninstall: + (cd $$DESTDIR$(BOOT_DIR); rm -f $(BMPS4) $(BMPS8)) + diff --git a/images/README b/images/README new file mode 100644 index 0000000..087d20d --- /dev/null +++ b/images/README @@ -0,0 +1,66 @@ +README for project LILO / images +================================ + +Picture files for boot menu must be rl-coded bmp files. + +Files as distributed have been edited through 'lilo -E XXXX.bmp' to specify +useful boot table layouts, colors, and timer positions. The companion *.dat +files contain photo credits, where applicable, as well as the 'lilo -E ...' +parametric information contained in the LILO-bmp headers in the actual +picture files. + +Naming convention: + "16c" in the name indicates 640 x 480 x 4bit with 16 colors (mode 0x12) + "256c" in the name indicates 640 x 480 x 8bit with 256 colors (mode 0x101) + +*16c* files will display on any IBM-compatible VGA display adapter. +*256c* files require a video adapter which supports VESA bios extensions; + specifically, mode 0x101 -- 640 x 480 x 256 colors. + +If you have booted with LILO, then you may easily inquire of your video +adapter's capabilities with: + + lilo -T video + +The video adapter type, and the video modes supported by its BIOS, will be +displayed; i.e., those graphic modes of interest to the LILO bitmap +interface. + +Creating image for background +----------------------------- + +With ImageMagick you can use the convert command as follows: + +for images with 16 colors: + + convert -verbose "$INFILE" \ + -resize 640x480 -density 72x72 -depth 4 -colors 16 \ + -colorspace RGB -compress RunlengthEncoded "$OUTFILE" + +for images with 256 colors: + + convert -verbose "$INFILE" \ + -resize 640x480 -density 72x72 -depth 8 -colors 256 \ + -colorspace RGB -compress RunlengthEncoded "$OUTFILE" + +Note: the Runlength-Encoding (RLE) will be made better by Gimp. + + +Example for syntax and colors +----------------------------- + + color palette: 0 black, 3 magenta, 7 pink, + 8 middle grey, 10 bright grey, 13 white + + bmp-table = ,;,,, + if = 1 then there are only one menu column + and will not be defined + + bmp-colors = ,,;,, + if or not defined, than it is transparent + if or not defined, than it is no color + + bmp-timer = ,;,, + +Details see lilo.conf(5). + diff --git a/images/coffee_256c.dat b/images/coffee_256c.dat new file mode 100644 index 0000000..d166bc1 --- /dev/null +++ b/images/coffee_256c.dat @@ -0,0 +1,14 @@ +# Lilo boot menu background configuration (Lilo 23) +# +# color palette: 0 black, 3 magenta, 7 pink, +# 8 middle grey, 10 bright grey, 13 white +# +# bmp-table = ,;,,, +# bmp-colors = ,,;,, +# bmp-timer = ,;,, + +bitmap = coffee.bmp + +bmp-table = 385p,100p;1,10,, +bmp-colors = 12,,11;15,,8 +bmp-timer = 38,2;13,1 diff --git a/images/coffee_256c.uu b/images/coffee_256c.uu new file mode 100644 index 0000000..9389f06 --- /dev/null +++ b/images/coffee_256c.uu @@ -0,0 +1,2516 @@ +begin-base64 644 coffee.bmp +Qk3auQEAAAAAADYEAAAoAAAAgAIAAOABAAABAAgAAQAAAKS1AQDrCgAA6woA +AAABAAAAAQAAAAAAAP///wD+/v4A+/v7AP39/QD8/PwAiFzgABQPHgC+pe0A +zb/pAFQK1gANBB0A5Nj5AAwEFAD07PwAcR+UAAwEDAC8bLwAjISMALSstAD8 +9PwAgGR8AJyMmADErLwAzMDAAPz09ADEoJwAlIR0ADQ0LAA8PDQAREQ8AFRU +TAD8/PQAHCQcACQsJAAsNCwANDw0ADxEPABETEQATFRMAFRcVABkbGQAbHRs +AHR8dAC0vLQA9Pz0AOv07ADj7OQAkpyUANrk3ACptKwAydTMAMHMxADR3NQA +iJSMALjEvAAHFAwAf4yEAJ2spAAEDAwARExMAExUVABUXFwAkZycAGRsbACE +jIwAwczMAPP8/ADs9fUAKywsAMPExAAI09kAGM3TACTN1AAr1NwAKcTMACzM +1AAz3OQANtTcAD/c5AA5xMwASNTcAEnEzABX1NsAs+rtAKra3QCBmJkAcISF +AOL29wAI1ucAEODwABTN3AAb1uMAGb3LABzM3AAg4fAAMd3tADrp9wBV5/MA +bOjzAI3q8QCU190AxObpAFtnaABqdXYAcXx9AMfW1wCfq6wA0dzdAAjI3QAI +uMwAEc/lABO/1AAcxNQAJMzcACTE1AAr1OYALMzcACzE1AA01OQANMjaADzU +5AA/3e0AV9jnAGnY4wB5o6gA4uztABzD3AAi0uwAI8zkACTE3AAszOQAKbfK +ADzH2QA5t8kAR9TmAETH2QBMx9kAR7jJAEeruQBwxtMAebK6ALDFyAATwt0A +E7PQABy60wAmu9UALMPcADTT7AA52vQANsvkADzT7AAwlacAOKO1AFnI2gBm +wM8Ad7vHAIrCzACNrbIAqre5AAmlxQASjqkAFpy4ABmqxgAkxOQALMzsACzE +5AAoq8QAKKC3ADi81QA4q8EAMYaYAEe81QBXt8kASpqqAFeqvABossEAfMnY +AJm8wwCJoaYA0ufrAL3Q1ACUo6YAMLLSACZugABNyeUAX29zAHiKjgCgsbUA +GHqTACzE7AAGFBgAR6rFAFe71QAxt+EAGFpvAEey1QAeqdgAEjdGABpHWABB +mLoATYKaALO8wAAKQFoANV9zABZ2sQAFL0wACCc9ABFXkAAIGSkABAwUALzE +zAAXJTUADTd7AN7j7AAEDBwAkJScAAkURgAEBB0ABAQUAAQEDAAMDBwADAwU +AHR0fQBkZGwAsrK+AIyMlAD09PwA9PT0AOzs7ADk5OQA3NzcANTU1ADMzMwA +vLy8ALS0tACsrKwApKSkAJycnACUlJQAjIyMAISEhAB8fHwAdHR0AGxsbABk +ZGQAXFxcAFRUVABMTEwAREREADw8PAA0NDQAJCQkABkZGQAMDAwABAQEAP8C +/wKCAgAA/wL/AoICAAD/Av8CggIAAP8C/wKCAgAA/wL/AoICAAD/Av8CggIA +AP8C/wKCAgAA/wL/AoICAAD/Av8CggIAAP8C/wKCAgAA/wL/AoICAAD/Av8C +ggIAAP8C/wKCAgAA/wL/AoICAAD/Av8CggIAAP8EpQTcAgAA/wSlBNwCAAD/ +BKUE3AIAAP8EpQTcAgAA/wSlBNwCAAD/BKUE3AIAAP8EpQTcAgAA/wSlBNwC +AAD/BKUE3AIAAP8EpQTcAgAA/wSlBNwCAAD/BKUE3AIAAP8EpQTcAgAA/wSl +BNwCAAD/BKUE3AIAAP8EpQTcAgAA/wSlBNwCAAD/BKUE3AIAAP8EpQTcAgAA +/wSlBNwCAAD/BKUE3AIAAP8EpQTcAgAA/wSlBNwCAAD/BKUE3AIAAP8EpQTc +AgAA/wSlBNwCAAD/BKUE3AIAAP8EpQTcAgAA/wSlBNwCAAD/BKUE3AIAAP8E +pQTcAgAA/wSlBNwCAAD/BKUE3AIAAP8EpQTcAgAA/wSlBNwCAAD/BKUE3AIA +AP8EpQTcAgAA/wSlBNwCAAD/BKUE3AIAAP8EpQTcAgAA/wSlBNwCAAD/BKUE +3AIAAP8EpQTcAgAA/wSlBNwCAAD/BKUE3AIAAP8A/wCCAAAA/wD/AIIAAAD/ +AP8AggAAAP8A/wCCAAAA/wD/AIIAAAD/AP8AggAAAP8A/wCCAAAA/wD/AIIA +AAD/AP8AggAAAP8A/wCCAAAAHQAB/xAAA/8IAAH/Af8GAAH/Af8FAAH/RgAA +BP8AAP9qAAH/QgAB/wMAAf8DAAH/Af8JAAH/HwAB//8ADQAAAAALRUX7RUX7 ++0X7+0UACfsF+gH7CfoP+Qv4AfcBHwX3AfYB9wf2BPUB9AEpB/QF8wAEK/Lz +8wbyAAXx8vLx8gAM8QAP8PAS8BLw8fAS8BLwEvASAATwARID8AAM7/Di8O/w +7/Dv8O/wDe8B7g7vAe4D7wHuCO8AB+7v7u/v7u8AD+4B7QHuBe0F7gHtBO4A +A+/u7gAD7wAG8PDx8vL0BPUBKQH1A/QE8wHyASsF8gXxAANBEvEAA/AG7wfu +Ae0B7gTtAe4E7QAD7O3tAAjsAAMT7OwABOsAD+zs8/r27vX4+Pf5+vn17gAd +6gAHRurq7O7sLAAq6gEs4OoAAAP6AAT5+vn6B/kABzz5+Pn5+PkAB/gN9wAE +9vf29wj2AAP19eAABPUB9AHgBPQB8wH0A/MB8gHzA/IB8QHyBPEBEgESA/AG +7wTuBu0AA+zs7QAG7AAEE+zr7AjrAAgs6+rr6uvq6wXqAesJ6gADRkbqAARG +ARgLRgAD6UbpAANGA+kABkbpRunpRgTpAAVG6UbpRgAI6QEYC+kABujp6Ono +6APpCOgB5wfoAekB6AbpAApG6uvr7e7vEvHxBPAB7wHvBO4E7QTsARME6wAE +6uvq6gRGBekF6AAE5+jn6APnAAXm5+bn5wAF5gAF5ebl5uYABOUAFObl5Czf +9+pG8/T09ff39O3lBAMFGQIACgUFA+Tn5+QD5OQGAwEFBAMBBQkDAQUBAwMF +AQMDBQAHAwMgAyADIAAhAwFDCgMBFA8DARQxAwFDDAMBFAQDASAJAwEUAwMB +QwYDAUMGAwEUFQMB4zEDAAAACvr5+vr5+vn6+foF+QALPPn4+fn4+Pn4+PcA +BPgABff3+Pf4AAn3AAb29/f29vcH9gf1AAP04OAABfQE8wTyAfEB8gPxBPAB +7wHwA+8F7gbtAewB7QvsCOsACSzrLOvq6uvq6wAD6gHrCuoAB0bqRupGRuoA +C0YAB+lGRulGRhgABkYB6QRGAAvpRukY6UbpRulGRgAE6QADRulGAArpAAXo +6Ono6AAD6QvoAekH6ATpAAcY6uvr7O7vAAXwBO8D7gPtAAPs7OsAA+wD6wHq +AesD6gRGBOkB6AHpBegE5wAI5ufn5ufm5ucF5gHlAeYG5QAS5OTn8fjt5/D2 +9fTg9fbx5wQFGwIADgQDA+fo5APkAwPkAxnjGgMASeQD4wPjA+MDQxQDAxkD +IAMDLQPkA+QD5APkA+QD5APkA+QD5APkAxkDGQPkAy0ULQPkAy0DLQPjAy0U +LQMD4wMg4wMtAxkDAxQADgMAKOQDGQMZA+QDGQPkA+QD5APkA+QD5APkA+QD +5APkAwMZA+QD5AMtFC0DAwAGLQMD4wPjAwMB4wMDACfjAy0DAxkDGQMZAxkD +GQMZAxQtAy0DLQMtAy0D5APkA+QD5APkA+QABAMAMSADA+QDGQPkA+QD5APk +A+QD5APkA+QD5APkA+QD5APkA+QD5APkA+QD5APkA+QD5AMAAAAD+gH5A/oL ++QADPPn5AAP4AfkF+AH3A/gD9wH4A/cB+Av3B/YABfX29fX2AAP1AeAB9QT0 +A/MF8gPxARIB8QPwBe8ABu7v7u7t7gPtAATs7eztB+wAB+vs6+zs6+wACusA +Berr6+rrAA/qAAhG6upGRuoY6gNGAeoFRgEYBkYABRhG6hjqAANGAeoDRgAL +6UbpRulG6elG6UYABOkBRgjpAAbo6ejp6egF6QXoAAPn6OcABegB6QToBekA +Bkbq6+zt7wTwAe8B7wXuAe0B7QTsARMG6wPqBEYB6QFGA+kB6AHpBugF5wAE +5ufm5wXmAAbl5ebm5eYG5QAS7fb25ur29/T09vbz6wMFAgIFGQIACwED5enm +A+QD5ANDABoDAQWBAwEUBAMBFAgDAS1dAwAAAfoB+QT6AfkB+gT5AAP6+foA +BfkD+AE8CPgB9wT4A/cB+AT3AAP49/gACPcABPb29/cF9gAI9fb29fbg9OAD +9ATzBPID8QESBPAE7wXuBu0M7AAF6+zr6+wAB+sACizr6+rrLOrr6usI6gAG +GOpG6upGA+oABUbqRuoYABNGAATqRkYYBUYAD+lGRulGRulG6UbpRunpRgAK +6QAE6Ono6ATpEugE6QAHGEbq6uzt7gAG7wAD7u3uAATtBOwD6wXqA0YAAxjp +RgAD6QHoAekE6AfnAATm5+bnBOYABOXm5eYI5QAQ5Or09+vo9fjg9fX39ezl +BBgCACQEAQQBBOTl6ecD5OQD5AMZAy0DAxkDLQMDGQMtAwMZAy0DA+QHAwEF +NwMBGUgDAAwtA+MDAy0DAy0DA0MDAwEUXAMAAAEeA/oB+QT6AAf5+fr5+vn6 +AAb5AAP4+fkAA/gB+QT4AAT39/j3BPgB9wH4BfcBHwP4AfcB+Az3AfYB9wT2 +AAb19eDg9PQE8wPyBPEBEgTwBO8F7gftCuwBEwHsBOsB7AbrAAks6+rr6+rr +6usAC+oAHkbq6kbq6kbqRkbqRuoYRupG6kbqRkbqRupGRupGGA1GAAvpRukY +6UbpGOnpRgAH6QAI6Onp6Ojp6OgD6QXoAAPn6OcAC+gB6QHoA+kABUbqE+zu +AATvBO4D7QPsBOsBLAHrBOoFRgAF6eno6ekABegB5wHoA+cABebn5+bnAAXm +AeUB5gnlABDk5vD58ObxH/f19vb08egDGgIABwEFBAPk6OkAA+QBAwHkGQMB +5AQDAeMqAwAGLRQDAwUFCQMBLQcDAS0HAwAEBQUDBQQDBQU5AwADLQMZAFoD +AAAAA/r6+QAF+gAH+fr6+fr5+gAD+QAF+Pn5+PkAE/gAA/f49wAM+AAI9/j3 ++Pf49/gG9wP2A/UD9ATzA/IE8QTwBO8H7gbtAAXs7O3s7QAD7AADMuvsAA7r +AArq6+rr6uvr6urrBeoAEEbqRurqRkbqRupGRupGRuoFRgEYAeoERgAF6kbq +RuoABUYBGAVGAAkYRulGRulG6UYAA+kBRgjpAAXo6eno6QAE6AHpAekE6AAE +5+jn5wXoAecE6AHpAegD6QAFRurr7O0AA+8D7gTtAATsMuzsBOsE6gRGBekB +6AHpBOgB5wHoBecAA+bn5wAF5gHlAeYG5QAU5OTl5OTt9vboRvb39fb19PIs +AwQZAgAOAQIFAwPn6eUD5APkA+QZAwEFMgMABwQDAwUDAxQAFgMBBQUDAQUO +AwEtHAMBFG4DAAAE+gAL+fr5+vr5+fr5+voAA/kADDz5+Pn5+Pn4+Pn4+Qf4 +AfkL+AAD+fj5ABH4BfcABfb29fXgAAP0A/MABPLz8vID8QESBPAD7wEwAe8D +7gAD7e3uAAbtAewB7QTsAAUT7OsT7AAD6wHsB+sBLAPrAAbq6+vq6usJ6gEY +A+oBRgPqAAZG6kbqRkYD6gANRupGRurqRkbqRupG6gAGRgAD6kYYAAVGAAbp +RulG6UYG6QHoA+kABOjp6OkI6AHpA+gB5wPoAecP6AAF6err7O0ABO4E7QPs +ARME6wTqBEYAB+lG6eno6ekAA+gABOfo5+gD5wAD5ufnAAbmAeUB5grlABHk +6fT47enz9uD1KeAq7eUDBAAaAgAMBAQD5UboA+QD5APkGgMB4zADAAMFA+QA +BAUiAwEUBAMB5AEFBgMBFBoDAS0SAwEFBAMBBQECDwMBGQUDASAkAwEtARQZ +AwAACPoAA/n6+gAI+QADPPk8AAP5AfgB+Qf4AfcE+AAE+fj4+QP4BfkB+AT5 +AfgH+Qj4A/cD9gAD9fXgAAP0AAbz8/Lz8vIF8QPwBO8F7gjtAewB7QXsAAXr +7Ovr7AAL6wAGLOss6+rrDuoADxjqRupG6hjq6kbq6kbqRgAD6gAORkbq6kbq +RkbqRkbqRuoDRgHqBEYACelG6UbpRunpRgAG6QHoA+kABejp6OjpAAfoAAjp +6Ojn6Ofo5wXoAecD6AAD5+jpAAToAARG6hPtA+4E7QPsA+sB6gHrBOoERgXp +BugF5wHmAecF5gAE5ebl5gnlABPk5S/i+fTnEvf19PX19PHoBQUEABkCAAYE +BQXl5+kD5AEDAeQYAwAHFAUFA+Tm5gAD5AAEAwUDIAQDARkIAwAFBQUDAy0A +DQMBQwQDAAcEAwPk5OXqAAPrAAnq6yzpMeQZ4wQAAwUIAwARBQPkFOTk5ehG +6+ss6+ss6OUABAMBBQUDAS0SAwEFCQMB4xADAAbkGePk5BkTAwEgDgMAAwUF +AwAFFAMDASAUAwAGFAMUAwMUDgMAAAAF+vn6+vkABfoAB/n6+fn6+foABPkA +CPr5+fj5+Pj5BfgB+QH4IPkH+AH3AfcE9gP1A/QACvPy8/Ly8fLx8RID8ATv +Be4B7QHuBe0J7AAF6+zs6+wADesACOrr6+rr6urrDOoADEbq6kbq6kbqRurq +RgTqARgE6gAVRurqGEZG6hjqRupGRhhGRukYRulGAAfpAAjo6ejp6Ono6QTo +AATn6OjnA+gACOnp5+jn6OfnBOgB5wPoAecG6AAGRurr7O3uA+0D7AXrA+oD +RgEYBOkB6AHpBegE5wAE5ufm5wXmAeUB5gjlAA3k5eTl5eQT9/bp6vb2AAP0 +AAXz9OrkBAAaAgAQAQQF5ebq5OQDA+QD5AMD5A8DABQULQMFBeVG7/Ye/v4c ++fXvRuQDFAMDAA9E7PHu7u3u7Ovt7u7xRuQACAMB5AMDAAsULQMD5Ubt8vf6 +/gAE/wAtAAD//xD79yvv6+flFAMDGQMFBeXn6u4r9vr9AP8A/wD/AP///Pfy +7OjlAwMUAA8DABIE5ANG7+3r6kbn6Ofn6ers7kYJAwAQBQMD5u3z9/ohRfn4 +9O7o5AYDAA/k5BPx7+3t7uzs7e3w7+UABgMABeTp7+0TAAbqAATs7uLpDQMA +Befu7OvpAAPnAAfoRurs7u/mAAwDAAAH+gAG+fr6+fn6BPkB+gT5AA36+fn4 ++fj4+fj5+Pn4AAr5AfoE+QAF+vn5+voABvkABPr5+foF+QP4AAP5+PgAA/cA +A/b39gAD9QHgA/QD8wPyA/EBEgPwA+8F7gHtAe4I7QbsAAXr6+zr7AAE6wHs +COsAA+rq6wAR6gAWRurqRupG6upG6upG6hjq6kbqRurqGAXqAARG6kbqBkYA +BelG6elGAAjpAAPo6ekAEugE5wXoAecD6AHnBOgAC+fo6Ubq7O3u7eztAAPs +A+sF6gAEGOlGRgXpBugF5wjmAeUB5gXlABXk5eXk5eXk6PT57+nz9in29fT0 +7uYAAwUBBBUCAwQABgEEA+ZG5gPkAAUD5AMD5AATAwAIFC5GH/z+AP8DAAAY +/wAQ/PXo5AMFA+Yf///+///e/f4Q//0TCgMAEAIDAyDk6O/3Iv7/AP8AAP8H +AAP/AAX+/fvzLQADAwAG5UbiJ/v9BP8LAAAJ///++/Xr5i0ZABADAAcU6/z+ +/SH8AAT7AAX8/f38RgAFAwHjAwMACQTm7vr9/wAA/wADAAAG//5F9OnkAwMA +BOQD5PQE/wAJ/t7+EP/+8+TkAAYDAARG/P79BiEABP7+/esMAwAGBOj7/f38 +BPsACCH9/f8d5QTkCgMAAAX6AfkG+gAD+fn6ABL5AfgH+QAF+vn5+vkABfoA +A/n6+QAH+gH5AfoL+QT4AfcB+AP3AfYD9QHgA/QAA/Pz3wAD8gAG8fESEvDw +BO8F7gHtAe4E7QAE7O3s7QbsAAXr7Ovr7AAM6wAHLOvq6+vq6wAO6gAIRuoY +6kYY6kYK6gAKRupG6kbqRupG6ghGAekBRgbpAAXo6ejp6QAK6AHnBOgB5wPo +AATp6OfoA+cB6AHnA+gADufn6Ojn6Ojn5+jp6ursA+0E7APrBOoDRgXpBegI +5wTmAAXl5ubl5gAI5QAL5OXl5OXw+PXp8PYAA/UACPTz8ekFBAUEFQIAEAEE +BQUEA+Xo6QPl5APkA+QDAwHkEQMABOfz/f8DAAH/BgAACf//Re/kAwPm9wAF +AAH/BAAAAyXm5AAJAwAH5AXk6PNF/wAKAAH/BwAB/wMAAAr6FAMD5vb9/gD/ +BAAB/wwAAf8DAAAI/fjt5CADAwUKAwAN5AUt5fcAAP8AAP8A/wADAAADKOTk +AAcDAAcZ6fb+AAD/AAQAAf8FAAAK/PLlAwMEA+X3/wcAAAT//OjkBAMAB0MD +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 ++vn6+fr5+fr5+gT5AfoD+QAJ+vn6+vn6+fr5AAX6AfsI+gH7BfoB+wn6AAr7 ++vv6+/r7+vv7BPoABvv6+vv6HQb6A/kAD/j49/f29vXg9PTz89/y8gAD8QAD +EvDwAAPvBO4G7QAE7O3s7QbsAAUT7Ovr7AAP6wAULOrr6uvq6+rq6+rq6+rq +6+rr6usD6gAD6+rrAAjqAAtG6kbqGEZG6UbpRgAG6QAE6Ono6QXoAAbn6Ofo +5+gK5wHmA+cABebn5ufnAAPoC+cADubn5ufm5ebn6Ubq7OzrA+oAA0ZGGAAF +6QToAecB6ATnAeYB5wbmBuUB5APlAAPk5eUAA+QAEOfy+fTu+Pr5+Pb29/Ho +AgQZAgAHBAMC5Ofq5gAI5AAIAwPkA+QDAy0LAwAD7/7/AAMAAf8MAAH/AwAA +BP8d6vkJAAFFAeMFAwAG5AUD5vr/CAAAHP8A/wAA/vz69fPx8PDx8/b6IRAA +AP1GBQMD6v0HAAAQ//8o5uUDLQUD5OTl6fFF/wYAAAX/AP3rFAALAwAD5Och +AAkAAfoB5gQDAAQFA+T1BAAB/wUAAf8IAAAI/wD/APro6SEIAAADIUYUAAcD +AATkA+v9CAAAA//w5AAMAwAEQwPp/wkAAfYB5A0DAAAE+gH5BfoAEfn6+fn6 ++fr5+vn6+vn5+vr5AA76AAj7+vv6+/r7+gP7AAP6+/oAB/sBHQ37AfoB+wT6 +AfsD+gH7A/oAD/n5+Pn4+Pf39vb14PT08wAD8gPxA/AB7wHvBe4F7QvsARMB +7BfrABcs6+rr6izrLOss6+ss6yzr6uvq6+vq6wAF6gFGAeoDRgAD6UZGAAfp +AegB6QboAAXn6Ojn6AAK5wHmA+cADObn5ufm5+fm5+fo6AXnABbm5+fm5ufm +5+bn5uXl6OlG6uzr6+rqBEYABOnp6OkD6AHnAegE5wHmAecE5gAE5ebl5gfl +AeQD5QTkABHtH/Xz4Pr5+h/39/VG5AUCBQAYAgARBALk5kZG5OQD5APkA+QD +A+QABQMAEBQDAxQtFAMDFAPj5xwAAP8IAAAP/wD//SH8/N7//wAA//ghAAkA +AR8IAwAF5in/AP8ACQAABv9F9O3o5wfkAAjm50bw9v3e7QMDAAPp/P8ABwAA +BxD15S0DFC0AAwMABuQD5Oj4/gQAAAb/AP//RUYMAwAD5kX/AAgAAAv45gMD +BQMFBUb8/wAJAAAT///+/Bz4+/07AAD/AP7y6fz//wAGAAH9AUYKAwHrAf0I +AAAF/0EDA0MABAMABEMDAxQEAwHqATsJAAAEKOUD5AsDAAAF+gAQ+fr6+fr5 ++vn6+fr5+fr6+Qv6AAX7+vv6+gAD+wAL+vr7+vv7+vv6+/oAH/sAA/r7+wAD ++gH7BPoD+QP4A/YAB/X09PPz8vIAA/EB8AHwBO8ABO7u7e4I7QrsAAbr7Ovs +6+wF6wHsCOsBLAXrASwO6wHqAesF6gAERupG6gRGB+kB6AHpBegABufo5+jn +6A7nAArm5+bm5+bn5ufmB+cABObn5+YF5wAO5ufm5+bl5efoRuoT6+oERgAE +6eno6QPoAecB6ATnAeYB5wTmAeUB5gjlAAPk5eUAA+QACOXk5Oj29+DzA/oA +Cvn39/bv5AUCBAQXAgAGBALk5+nqC+QABQPkAwPkAAsDAAbk8f7/AP8IAAAM +/yH27urqRu32/QAAA/8IAAAG//MZAwPkBAMB7QH9CgAABv/+9kbl5AQDAQQH +AwAK5Obt+PHkAwPoIQgAAAP/9uQACgMADi3n9P7/AAD/AAD///blCwMB5QH8 +CQAACvfmBAMFAwUE7/8DAAH/BgAAEv/74kbp5uhG8/sAAP8A/OlF/wcAAf0B +RgoDAewB/QgAAAP/8OQACQMABy0DAxkDLBAACQAB9gHkDQMAAAT6AAn5+vr5 ++vn6+foAA/kABfr5+vr5AAr6AAz7+vv6+vv6+/r7+/oM+wFFBvsBRQ77ARwG ++wH6A/sABPr7+vsE+gAF+fn4+PcAA/YACvXg9PPz8vLx8RID8AHvATAD7gHt +Ae4F7QAE7O3s7QPsAe0E7AHrAewE6wAD7OvsAArrAewS6wAFLOrr6usAA+oA +BEbqRuoDRgAE6UbpRgPpAAPo6ekACugG5wAP5ufn5ufm5+bn5ufm5+bnAAXm +AecB5gfnAATm5+bnA+YB5wXmAAjk5ufo6ers6gNGBOkF6AbnA+YAA+Xm5gAI +5QAG5OXl5OXlA+QADubxPfX0+fv6+fn49/HoFAIAEAQEAgEBBAQDFOTm6evm +5AMD5AAGA+QD5APkAwMB5AwDAAPnRf8ACgAAA//2RgAGAwAE5On5/gsAAf8B +8AcDAecB+wgAAAf//wBF7uQtABEDAAfl6eQDA+ZFAAgAAAP/9eUADAMAA+X2 +/wAHAAAH/u/kAxQtFAADAwAF5AMD5fsAAwAB/wUAAfYB5gUDAAPk9/8ABgAA +Bv8AAP7y5gUDAA0tFOfz/v8AAPr9/wD/AAUAAfwBRggDAATkA+r9BwAADP8A +8OQDAxkDLQMDGQYDAAXp/QAA/wAGAAH1AeQNAwAABvoACfn6+vn6+vn5+gAD ++QH6AfkG+gAG+/r7+/r7A/oQ+wFFCvsABfr7+h36AAj7AR0M+wAD+vr7AAf6 +AA75+fj49/b29fX09PPy8gPxA/AB7wHvBe4H7QAD7OztAAjsAArr7BPs6+vs +6+vsFOsABOzr6+wF6wAJ6uvq6kbqRuoYAARGBekABejp6OjpAAToAecB6Afn +AeYD5wAF5ufn5ucAEOYABOfm5+cQ5gAJ5OXn6Onq6+pGAATpAegB6QPoAATn +6OfnB+YJ5QAD5OXlAAXkABDl5Oz49/b3+/v6+vj39OvkFAIADQECBAIBBAUD +5eXp6ugAA+QBAwXkAAQD5APkDgMABOTv3P8HAAAQ/wD+4OYD5AUFAwPkAwPp ++QsAATsB7gYDAAPk8P4ABgAAB/8A//9FRuQAEwMBBQQDAeYB+wgAAAP/9eUA +AwMADxQtFAMDFC0UA+Tp+/8A/wAFAAH7AecKAwHlAfoJAAAK9eUD5AMDBeZF +/wYAAAX/ANz25QADAwEUAwMACUMD5fEQ/wD//wAIAAEdAegKAwHoAfwIAAEQ +Ae4PAwHnAfwJAAHgAeQNAwAAAfkD+gAJ+fr6+fn6+fn6AAP5CPoB+wX6CfsB ++gr7BvoABh76+vn5+gb5A/gB+QH4BfkBHgT6AAT7HfscB/sB+gH7BPoB+QP4 +AAr39vb14PTz8/LyA/EB8AHwA+8D7gHtAe4G7QnsAAkT7Osy6+zs6+wAA+sB +MgXrAAPs6+wABusABhMy7OzrEwXrAeoB6wbqBEYB6QFGBOkABOjp6OkG6AHn +AegK5wAG5ubn5+bnHuYB5QbmAA3l5Obn6Onq6xhG6UbpAAToB+cD5gHlAeYI +5QAF5OXl5OUABOQAEOPn9Pj24Pr7Hfr5+PXv5gUVAgALBAQCAQMD5efp6esA +BeQADQPkA+QD5APkA+QDA+QACgMB5QEfCgAAA//25gADAwECAeQFAwAD5Ov9 +AAoAAAX+7QMDQwADAwHnAfoJAAAI//zrA+QDAxkVAwHmAfsIAAAD//XlAA0D +AAMt7t4ABQAABf8A/vHkAAUDAAYtFAMD5fkJAAH0AeUEAwADGej9AAkAABAc +6QMDBAMtAwMFIAMF5SvcCwAB+gHnCQMAA+To/AAIAAE7Ae0MAwAHBQQD6PwA +/wAHAAEpAeQNAwAAAAP6+vkACPoD+QAF+vr5+vkAA/oB+wP6AAT7+vv6CvsB ++gH7B/oE+QAKHvj5+Pn4+fn4+Qb4AAYf9x/4H/gH9wH4AR8D+AALHvn6+/v6 ++/v6+vsABfoACPn4+Pf29vX0A/MABPLx8RID8AHvAe8D7gHtAe4E7QAE7O3s +7QnsAAYT7Ovs7OsD7AAF6+zr7OwABesE7AAI6+sT6+vsMuwH6wXqBkYG6QXo +AecD6AbnAAPm5+YABOcJ5gAG5ebl5ublG+YD5QAK5ujp6utG6eno6QXoA+cF +5gHlAeYD5QHkBeUB5AHlA+QACeXkLS4S9/j29wAD+wAH+vr18ekDBAAUAgAO +BAIEAgUD5Ofp6Szl5AMG5AAIA+TkA+QDA+QMAwADRvz/AAgAAAT/I+kZAwMB +5AcDAAMu9f8ACQAB/gHrBgMB7AH+CAAABP/+7+QTAwAJFC0DFC0DFOb7AAgA +AAP/8uQADgMB5gH3BQAABf8AACPoAAgDAAQF5fr/CAAACfTlAwPjAwMs3gAJ +AAAF80QDA+QABAMACeQDFAMD5vkA/wAJAAH6AecKAwHoAfwIAAH/Ae0LAwAG +BeQD5OdFCQAAA/XkGQAMAwAAAAP6+vkABvoABvn6+fr6+Qj6AAb7+vv6+/oH ++wAE+vv6+wX6AfkB+gb5BfgABR/3H/cfAAT3AAv29vf39vb39/b39gAF9wAO +9vf29/b29x/4Hvr6+/sH+gAN+fj49/f29fX09PPy8gAD8QHwBO8D7gftAAPs +7O0ACuwAAxPr7AAD6wAKE+vs6+vs6+zr7ATrAA7s7DLs7Ovs6+vs6+vq6wXq +BUYG6QjoB+cB5gTnEeYB5QHmBeUE5gHlCOYB5QPmABHl5uXm5ebk5OXn5+nq +6kbp6QAF6APnAeYB5wPmAeUB5gblAeQE5QbkAAYU6vYf+PYF+gAF9/PtAwMA +FQIACwEBAgUD5Ofp6eroAATkAQMD5AAHA+TkA+QD5AADAwHkCgMABe/eAAD/ +AAYAABPc8eTjAwPkAxQtFAMD5AMU7P7/AAgAAf0B6wUDAeUB9QP/BwAB+AHm +AwMBGRcDAeYB+wgAAAP/8eQADwMB7QgAAf4B7wkDAAXlHgAA/wAGAAAD9OUF +AAMDAAPk7/4ACAAAEv/qFAPkAwMU5AMDFC0DA+Tt/QoAAfoB5woDAegB/AgA +ARAB7QsDAeQDAwAF5/wAAP8ABgAB4AHkDQMAAAEeAfkD+gH5BfoAA/n6+QAG ++gAG+/r7+vv6BfsI+gb5B/gI9wn2AfUB9gT1AfYB9gb1A/YE9QAK9vX19vYf ++Pke+gP7A/oD+QH4A/YAA+D08wAD8gAG8RLw8O/vBO4B7QHuBu0ABOzt7O0O +7AAH6+zr7BPsEwAI7AAH6xPr7Ovr7AAE6wXqBEYE6QAE6Ono6QPoAAbn6Ofo +5+gD5wAF5ufm5+cAC+YACuXm5ebm5ebl5uUH5gAM5ebl5uXm5ebl5uXlA+YA +EeXm5ebl5uXm5Rnl5+jpRurpAAXoA+cG5gHlAeYD5QAE5OXk5QnkABID5/T3 ++Pf2Hfv7+vgq7uYDBQQWAgAMBAPk5uhGRuoDA+QDA+QBAwPkAAQD5APkAwMB +5AcDAAgZAy3kHwAA/wcAARwB5w0DAAPk5/wACQAACUXoAwMZAwPpRQAJAAAE +/esDIBoDAeUBHAgAAAP/8eQADwMAA35F/wAEAAAF/wD/++QAAwMBBQEFAwMB +5QH5CQAACfTlAwUDA+Tw/gAIAAFFAegOAwHlAR8KAAAF+ucDAwUABwMB6AH8 +CAAB/wHsDwMB6AH8CQABKQHkDQMAAAAK+vr5+fr6+fn6+Qj6AAX7+vr7+gAG ++wf6BfkB+AH5BfgAA/f4HwAG9wj2BfUAA/T19AAE9QAE9PX09QP0AfUD9Ar1 +ABr29/j5Hvr6+/r5+fj49/b29fX08/Ly8fHw8APvBO4G7QAH7O3s7O3s7QAN +7AAD6+zrAAvsAAUy6+vs7AAF6wPqBUYB6QFGBOkB6AHpB+gE5wAG5ufn5ubn +D+YAB+Xm5uXm5eYACeUABubm5ebm5QXmABXl5ebl5uXm5ebl5uXk5efo6UZG +6ekABOgD5wAE5ubl5gjlAATk5eTlCOQAA+73+AAD9wP6AAj59PDoAwQEBRUC +AAgEAwPm6Ono6gPkAQMF5AAJA+QD5OQD5APkAAsDAAMU5kUACgAB8w8DAeUB ++AcAAAT/AEXoBQMB7AH9CQAB+AHlHAMB5gH7CAAAA//x5AAMAwAHBQMDGff/ +/wAGAAH+AUYEAwAH5AMgA+T2/wAIAAAJ9OUDBQMDGeL+AAgAAfoB5w0DAATk +5O7/CQAB+gHnCgMB6AH8CAAB/wHtDwMB6AH8CQAB9QHkDQMAAAH5A/oB+QP6 +AAP5+vkABvoABPv6+/oE+wj6BvkK+AX3AfYB9wT2AAT19vX2BPUB9AT1CvQB +8wr0ABX19PX19PT19fb3H/ke+/r6+fn49/YAA/UAA/Py8gAD8QHwAfAD7wTu +B+0ABezt7OztAAPsAe0G7AAEE+zs6w/sAAbr7BPr6usE6gFGARgERgAF6eno +6ekABugF5wAH5ufn5ufm5wAL5gAK5eXm5ebl5ebl5hDlAeYG5QAF5uXm5eYA +B+UABxnl5udG6ukABOgD5wfmBOUABeTl5eTlAAjkABBG9vj49/f2+B759fIT +5AIFFgIADwEF5Ofo6EZG5+QD5OQDAwAH5AAIA+QD5APkA+QJAwAD6f3/AAgA +AAP96wUADgMB5AHzCQAAA0XoBAAEAwH0Af8IAAAE/vAD4xsDAeUB+wgAAAP/ +8eQACwMBBQQDAe0B3ggAAfEB5AUDAAbjAwP1//8HAAH0AeUEAwADLfD+AAgA +AfcB5QsDAeQDAwAD6P3/AAgAAAT66AMFBwMAAwXo/AAIAAEQAe0PAwHnAfwJ +AAHgAeQNAwAAAAf6+fn6+fr5AAj6AAP7+voABPsI+gb5BvgABff4+PcfAAT3 +AfYB9wb2AAT19vX2B/UG9AAE8/Tz9BLzBvQAB/X19vf4+voAA/kABx/39vX0 +9PMAA/IACxLw8O/v7u/u7u3uAAbtAAbs7e3s7e0E7AHtCuwAA+3s7QAK7AXr +A+oABEbqRkYH6QToAATn6OfoA+cB5gHnDuYD5QAG5ubl5uXmFuUB5gblAAfm +5eXm5eXmAAPlAArk5eXn5+lG6ejoA+cB5gHnA+YE5QHkA+UABOTl5OUF5AAS +LRnl8vj4H/f29ff59vLv5wMFFgIACQQD5OTm6OnqRgAE5AEDBOQACAPkA+QD +5APkDgMB7AH/CQAABfrn5APkAAoDAAUtBQPy/wAIAAADRefkAAMDAeQB+gkA +AAX86QMDBQAaAwHmAfsIAAAD//HkAAwDAeQDAwFGAfwDAAH/BAAB+AHmCAMB +9gH/CAAACfTlAwUDA+Tw/gAIAAEoAeQPAwHlAfoJAAH6AecJAwAD5Oj8AAgA +Af8B7Q8DAegB/AkAASkB5A0DAAAB+QP6AAP5+vkAB/oF+wb6AAT5+vn6BfkF ++AH3A/gF9wj2AAT19vX2B/UB9AH1BfQAA/P09AAI8wHyCfMBKwXzAB308yrz +9PTz9PUf+fn6+fj39/b19PTz8vIS8PDv7wAE7gAD7e7uAAntAAXs7e3s7QAW +7AXrBOoABRhGRulGAAXpBegAA+fn6AAF5wPmAecK5gAD5eblAAPmD+UABOTl +5eQR5QAD5uXmAAblAAjk5Obm6EZG6QbnAAXm5uXm5gAE5QAD5OXlAArkABPs +9/j39/b29Pf18/Dq5QIDAgMEABQCAAkD5ObpRkbq5eQAAwMB5AEDCeQABwPk +A+QDA+QACAMABeTxAAD/AAcAAAT05AMtDQMAA+Tx/wAIAAH6AeUEAwHnAfwJ +AAH4AeYdAwHlAUUIAAAD//HkAAsDAeQBBQMDAecBJQQAAf8DAAH8AekHAwAD +5PX/AAgAAAn05QMFAwPk7/4ACAAAA/bk5AALAwHjAwMB9QkAAAX65wMDBQAH +AwHoAfwIAAH/AewPAwHoAfwJAAH1AeQNAwAAAAP5+foAA/kACfr6+/r6+/r7 ++wAH+gAF+fr6+foABfkG+AH3AfgH9wAD9vf3AAX2AAT19vX2BvUB9AH1BfQB +8wH0B/MACvLz8vPz8vPz8vMJ8gErA/IF8wAX9PP09fb4+fn49/f29fTz8/Lx +EvDw7+8ABO4B7QHuCu0ACOzt7Ozt7eztBOwABO3s7e0I7AETAewE6wAE6upG +6gRGBekE6AAL5+jo5+fm5+bn5ucACeYE5QAD5uXmAAvlAeQI5QHkA+UAB+Tl +5eTl5eQAEuUAC+RE5eboRuno6OfnAAXmB+UAA+Tk5QAH5AAIFEbg9/j49vYD +9QAK8/Ls5gUDBAECBBECABQEBAPk5eno6Orm5OQD5OQD5APkAwPkAAgD5APk +A+QD5AcDAAXkAwPl8wAIAAAE/wDv5BADAfIB/wgAAfoB5QMDAAMF6f4ACQAA +BPPkBCAbAwHmAfsIAAAD//HkABADAATl9QD/BgAAA97tGQADAwEUAwMB9gH/ +CAAABPTlAwUDAwAD6v3/AAcAAfgB5QkDAAoULQMgAwMg8f7/BwAB+gHnCgMB +5wH7CAAB/wHtDwMB5wH8CQAB4AHkDQMAAAAE+vn6+QX6AAb7+vr7+vsI+gH5 +AfoG+Qj4AfcB+Af3AAz29/b39vb19vb19fYG9QH0AfUF9AHzAfQD8wHyBfMA +BfLz8/LzAAXyAfEL8gATK/LzK/Ly8/P09vf4+fgf9/b19AAD8gAD8fDwAAPv +Be4N7QAI7O3t7O3s7ewF7QHsAe0E7AAD6+zsAAPrBOoERgXpBugF5wAE5ufm +5wjmAeUF5gblAATk5eXkBuUACeTk5eXk5eTl5AAD5QAJ5OXl5OXl5OXkAAvl +AAPk5eUABOQABeXm6OnpAATnBeYD5QHkA+UH5AAIGQNE8vf4H/cD9gAJ9fPz +4ujlAwUEABMCAAoBAgUD5ebp6UbpBOQABAPk5AME5AAIA+TkA+TkA+QDAwHk +CAMB5QH2BQAABv8AAP8Q6wMDAeMNAwHxAf4IAAH7AeYDAwADAuz/AAgAAAb/ +7y3jAxQaAwHlAfsIAAAD//HkABADAeQB8ggAAAf/8gMDQwMtAAMDAfYB/wgA +AfQB5QMDAAQFA+j9CAAB+wHmEAMB7gH+CAAB+gHoCQMAAwXn+wAIAAE7Ae0P +AwHoAfwJAAEpAeQNAwAAAfkG+gH7AfoD+wH6AfsE+gAG+fr6+fr6BfkI+AAD +9/j4AAn3B/YB9QH2BfUABPT19PUE9AHzAfQI8wAE8vPy8wbyAATx8vHyA/EB +8gHxDvID8wEpAfYD+AAL9/b19PPy8fES8PAAA+8F7gAG7e7t7u3uE+0B7AHt +BewE6wPqA0YF6QboCecI5gAD5ebmABHlAATk5eXkA+UAA+Tl5AAD5QAN5OTl +5eTl5eTl5eTl5AAM5QAN5OXlGeTk5ufoRujn5wAF5gblAATk5eTlB+QABuv4 +9/j29gP1AAf09PHr5gMEABQCABQBAQIF5ObpRkbq5OQD5APkA+TkAwXkAAcD +5OQD5APkAAsDAeYB+AkAAf0B6BEDAe0B/QgAAAf65QMFAwPvAAkAAAP/7BkA +HQMB5gH7CAAAA//x5AAQAwAEGfD//wcAAAT35AMZBQMAA/UA/wAHAAAJ9OUD +BQMFA+b7AAcAAAT//ekFDwMB7AHeCAAB+gHnCAMABOQD6EUIAAAD/+0FAA4D +AecB/AkAAfUBGQ0DAAAE+gH7D/oAA/n6+gAF+QAD+Pj5AAX4AAb3+Pj3H/gG +9wAD9vb3AAX2A/UB9gb1BfQABPP08/QE8wAF8vPz8vMACfIAA/Hy8QAG8grx +AAPy8SsAA/IAE/Pz9fcf9/f19fTz8/LxEvDv8O8AB+4Y7QAL7O3sE+vs6+vq +6hgAA0YABulG6eno6QXoAecB6AXnCOYAB+Xm5ebl5eYACeUB5AXlAAbk5eTk +5eUD5AHlAeUD5AAS5eXk5OXk5OXl5OXk5eTl5OXkB+UADuTl5OUZ5OTm5ujp +6OfnBOYF5QAD5OXlAAfkABQF6PX3+Pf28/T19PTy7OjkBAUBARQCACAEGeXo +Rujq5eQDA+TkA+TkA+TkA+TkA+QD5OQD5AMD5AkDAegB+gkAAAj85wMDBQMD +FAQDARQGAwHsAf0IAAAH+uYDA+Pk8QAGAAAF/wAA3uoAHgMB5QFFCAAAA//x +5AAQAwAD5O3+AAgAAfoB5gcDAfYB/wgAAAn05QMFAwMZRPUACAAABP/v5AUO +AwHqAf0IAAAF+ucDAwUABwMB6AFFCAAAA//tBAAOAwHoAfwJAAAD4OQgAAwD +AAAQ+gAF+fr6+foABvkB+AH5CfgABff49/f4AAf3BPYB9QP2A/UB9gP1AfQB +9Qb0B/MABPLz8vMG8gPxAAPy8fIAFPEF8gATK/X3+Pf29fTz8vLx8fDv7zDv +7wAI7gAG7e3u7e3uCO0B7gPtAewB7QPsAAQy7OvrA+oDRgHpAUYE6QboBOcB +5gHnCOYB5QHmDeUAC+Tl5eTl5OTl5OTlAATkAeUD5AAD5eTlAAPkAATl5OTl +BOQABOXk5eQF5QHkA+UABOTl5OUF5AAF5ufp6ecABOYF5QHkAeUI5AAHA+Xx ++B/49QAF9AAM8/BG5gUCAgEBAgIBEAIACAQD5ObpRurpBeQAEgPk5APk5APk +5APkA+QD5AMD5AgDAAUFAwNGRQAIAAAD//vmAAUDAAktAwPjAy0DA+MAAwMB +7AH9CAABJAHlAwMB5AHzCQAB/QHoHgMB5gEcCAAAA//x5AARAwHrAd4IAAH8 +AekHAwH2CQAABPTlAwUEAwHuARAIAAH4AeYPAwFGASEIAAAE+ucDBQgDAegB +RQgAAf8B7Q8DAegB/AkAAAMp5OMADAMAAAAK+vr7+vr5+vn6+QT6AAn5+vr5 ++vn6+foABfkD+AH5BfgABPf49/gF9wAF9vf39vcABPYABPX29fYH9QH0AfUD +9AAD8/P0AAjzAAXy8vPy8wAF8gAF8fLx8fIACfEB8AnxABPwEvHyK/LyK/T2 +H/f19fQq8vHxAAPwA+8ABO7v7u8F7gAM7e7u7e7t7e7t7u3uBu0D7AETA+sB +6gHqA0YB6QFGA+kG6AfnB+YB5QHmB+UB5ATlAAvk5eTl5OXk5eXk5QAD5AHl +BOQB5QPkAA3l5OTl5OTl5OTl5OTlAAPkAAXl5OTl5AAG5QAE5OXk5QTkAAbl +5ebp6OcE5gjlBeQACQMD6/f2+PX08wAD9AAI3/FG5QMCAQUQAgAoBAIBAgQC +5ejpRunq5OQD5OQD5OQD5OQD5OQD5OQD5OQD5OQD5AMD5AYDAAME6/wACQAA +BfnkAwTkAA0DAAMg7P0ACAAAB/vlBQMF5fQABgAABf8AAP3nABgDAAMFBSAA +AwMB5QH7CAAAA//x5AARAwHqAf4IAAAD/UbkAAYDAfUB/wgAAfQB5QYDAegB +RQgAAAf+8uQtGQMFAAYDAAfkA+MD6fz/AAcAAfoB6AoDAegBRQgAAf8B7Q8D +AecB/AkAAfUB5A0DAAAE+gH5AfoD+Qf6AAT5+vn6B/kB+AH5BvgAB/f49/f4 +9/gAA/cAB/b39/b39vcABPYJ9QH0AfUH9AfzAfIB8wjyAAXx8vHx8gAM8QXw +AAPx8fAABvEADvLx8Sv09vf29fTz8/LxBPAD7wTuAe8K7gAG7e3u7e3uA+0E +7APrBOoAB0ZGGOnp6OkABegF5wjmAeUB5gjlAeQB5QTkAAfl5OXk5eTlAAPk +AAfl5OXk5eTlAATkACPl5OTl5Bnk5Bnk5Bnk5eTk5eTk5eTl5eTk5eTl5OXk +5eTk5QAD5AAF5ebo6ecABOYD5QHkAeUI5AAUGef19vj28/P09PP0K+3n5AEE +AQQPAgAkBAICBAQD5OXm6Ojq5eQD5OQD5OQD5OQD5OQD5OQD5APk5APkAwMB +5AYDAAQFA+tFBgAABP8A//USAwHsAd4IAAAH+uXkBQPmHwAGAAAH/wAA/egD +LgAY5AAGAwUDA+b7CAAAA//x5AARAwAD6t7/AAcAAd4B7AcDAfYB/wgAAfQB +5QQDAAQCA+XzBAAAD///AP///e7kAwMtAwMtFAAGAwAF6fwAAP8ABQAAA/rn +GQAIAwADGehFAAgAAf8B7A8DAegB/AkAASkB5A0DAAAABPr6+foE+QAI+vn6 ++vn6+vkE+gH5AfoG+QAD+Pn5AAb4AAT3+Pf4BvcB9gH3BvYB9QH2B/UB9AH1 +BPQB8wH0B/MABfLz8/LzAAXyAAbx8vHy8fIG8QAF8PDx8PEAA/AB8QnwABMS +8fDx8fLx8vIq9ij29fTz8vISAATwA+8BMAHvDu4B7QHuBO0ACezsE+zr6uvq +6gAERgXpA+gF5wHmAecE5gAF5ebm5eYABuUABuTl5OTl5AXlAATk5eTlA+QA +EOXk5OXk5OXk5OXk5eTk5eQJ5QAI5OTl5OUZ5OUD5AAF5eTl5OUAA+QB5QTk +AAgZ5OXm6Onn5gXlAATk5eTlB+QABPH3H/cD9APzAAny7+nlBAEEAQQADwIA +HQQBBAUEA+Tm6Onq6OQD5OQD5OQD5OQD5OQD5OQDAAPkAAYD5OQDA+QIAwAE +5APq/AgAAAP/9QQAEQMB7AH9CAAB+gHmAwMB5gH4CQAB/gH2GvIABu3kBAPl +RQgAAAMQ8i0AEQMB6QH9CAAB/gHvBwMB9gH/CAAAC/TlAwUDA+QFA+j9AAUA +Af8DAAAF/RLmAxkAAwMBIAMDAAUgAwNG/AAIAAH6AecKAwHoAUUIAAAD/+0E +AA4DAegB/AkAAeABGQ0DAAAK+Qf6AAb5+vn6+foE+QAF+Pn4+PkABPgABPf4 +9/gE9wAG9vf29/b3A/YB9QH2BPUABvT19PX09Qj0A/MABvLz8vPy8wXyAfEE +8gPxAfID8QHwA/EABPDx8PEN8AESA/AF8QAL8vT29vX09PLy8RIAA/AB7wHw +Bu8B7gHvB+4AB+3u7e7t7O0AA+wD6wPqA0YF6QAE6Ojn6ATnAeYB5wfmAeUB +5gPlAArk5eXk5eTl5eTlBuQAFOXk5OXk5eTl5OXk5eTk5eTl5OTlDOQB5QPk +ABDl5OTlGeXk5OXl5Bnl5OTlBuQABuXm6Ojm5gflBOQABxnkA+v39vgAA/QE +8wAJ8OrmAwQCBAIEABECACIEBQPk5unn6UbkA+QD5OQD5OQD5OQD5OQD5OQD +5APkA+TkBAMB5AYDAAMF6yEABgAAB/8AO/IDAwUADwMB7QH9CAAB+wHlAwMB +5gH4CgAABP/+//4X/wAG9uUDA+b7CAAAA//15QARAwHpASEIAAAD/yvlAAUD +AAMt9f8ACAAB9AHlCAMABfD9AAD/AAUAAAv//ibu6OXkAwMEIAADAwADIOn8 +AAgAAfoB5woDAegBRQgAARAB7Q8DAecB/AkAAfUB5A0DAAAD+QAI+Pn5+vn5 ++vkJ+gr5AAP4+PkABfgB9wH4BfcB9gH3BPYB9QP2CPUF9AHzAfQH8wHyA/MI +8gHxA/IH8QAI8PHw8fDx8PEL8AHvAe8G8ATxAAjz9Pb19fTz8gPxBPAJ7wju +A+0E7AHrAesD6gAERhhGRgTpBOgF5wbmCuUAB+Tk5eTk5eQABeUD5AHlC+QB +5QPkAA7l5OTl5OXk5eTl5OXk5QPkAAnl5OXk5OXk5OUAA+QACOXl5OXk5Bnl +BeQABOXn6ecD5gAG5eXk5eTlBOQABgPn9vX49QXzAAry8ezoAwIEAgIEEAIA +HwEEBQMD5ejq6OvkA+QD5APk5APk5APk5APk5APk5AMAA+QABQPkAwPkAAkD +AesB/QgAAAUQ9AMDLQAPAwHsAf0IAAH6AeYDAwHmAfgJAAH/AwAB/xYAAAf/ +9uUDA+X7AAgAAAT/9uTkDwMAAyDp/AAIAAADEPTkAAYDAfYB/wgAAfQB5QUD +AAbkAwPm9f8HAAAK/wAA3vv18evq6gNGAAcYRuwj/wD/AAUAAfoB6AoDAegB +RQgAAf8B7Q8DAegB/AkAAAMp5OQADAMAAAH6CfkF+gAF+fr5+vkAA/oF+QH4 +A/kD+AAE9/j3+AT3AfYD9wH2AfcE9gf1B/QABfP08/T0AAPzAAPy8/MACfIA +A/Hx8gAH8QHwBPEABPDx8PED8AHxB/AB7wTwAe8F8AESBPEB8wP1AAb08/Py +8fEG8AjvAAPu7u8AA+4D7QHsAewE6wHqAeoERgPpBOgF5wXmAATl5uXmBOUA +DOTl5OXk5eXk5eXk5QXkAA3l5OXk5eTl5OXk5eTlABXkAeUF5AAF5eTl5eQA +A+UAEuTk5eTl5OXk5OUZ5OPl5ufp5wflBOQAAwPl8AAD9wAK8/Tz8vPz8u7q +5RECAwEADwICBAMFA+Xp6+fq6APkAwAD5AEDA+QAEQPkA+TkA+TkA+TkA+QD +5APkAAMDAeQHAwHqAfwIAAAW/+AgAxQD4wMZAwMULRQDAxQtFAPs/QgAAfsB +5QMDAeYB+AoAAf8PAAH/CQAAB//75QPj5vsACAAAA//25QARAwAE6f3//wYA +AAP/9OQABgMB9QkAAfQB5QkDAAnm9f4AAP8AAP8ACAAACf/e/f793t79/wAI +AAH6AecKAwHoAUUIAAH/Ae0PAwHnAfwJAAHgAeQNAwAABPkAB/j5+fr5+vkA +CvoD+QAJ+vn5+Pn5+Pj5AAX4AfcB+AP3AfYB9wX2AAX19vX19gAE9Qb0AAXz +8/Tz9AAG8wTyAfMD8gAF8fLx8fIACfEABvDx8fDw8QPwAfEI8AAG7/Dw7/Dv +CPAAERLw8fHy9Pb29fTz8vLxEvESAATwAATv8O/wBO8D7gPtBOwB6wHrA+oD +RgPpAegB6QPoBOcABebn5ublAAPmBeUABeTl5OXlAATkAAjl5OXk5OXk5RXk +AeUE5AAR5eTl5OXk5eTl5OTl5eTl5OUAA+QB5QPkAAfl5OTl5OTlAATkAAcZ +5OXn6enmAAPlABnk5eTk5eTkA+r39Pj09PPz8ivx7+tGAwQEAA8CAQEBAQQC +ACcEA+TnRkbpRuQDA+QD5APkA+QD5APk5APk5APk5APk5APkAwPkA+QABQMA +BQUDA+tFAAgAAf4B9BIDAewB/QgAAfoB5QMDAeYB+A8AAf8DAAH/EQAABkXm +BAPl+wgAAAP/+OYAEQMAA+r+/wAIAAH2AeQGAwH2Af8IAAAE9OUDBQYDAAXk +A+f0/QAGAAH/Af8WAAH6AecKAwAD6EX/AAcAAAP+7QUADgMB6AH8CQAB9QEZ +DQMAAAr5BPoB+QX6AAP5+voACfkE+AH3AfgH9wP2AAX19vb19gAF9QH0AfUH +9AAM8/Tz8/Tz8/Lz8vPzBfIABPHy8fIH8QAF8PHw8fAAA/EAA/Dx8QAM8AAE +7/Dv8APvAfAD7wAO8PDx8PDx8Sr29fX08/MD8gAH8fHw8PHw8AAF7wTuBO0B +7AETA+sB6gHqA0YE6QAE6Ofo6APnAeYB5wbmBuUABOTl5OUD5AAH5eTl5OXk +5QAs5AHlA+QB5QTkAAjl5OXk5OXk5QTkAAct5ETl5+noAATlABXk5OVE5OTm +9PT49fLz3yvz8vHs6uYAAwQPAgEBAwIAJQQCA+Tn6UYz7OXkA+QD5APkAwPk +A+QD5APk5APk5APk5APkA+QACwMAAwXr/AAIAAH/ASkSAwHsAf0IAAH7AeUD +AwHmAfYbAAH/CQAABkXmBQPm+wkAAfoB5hADAAMF6t4ACAAAA//35QAGAwH2 +Af8IAAH0AeULAwAE5RP7/gP/BAAB/w0AAf8GAAH6AegKAwHoAUUIAAH/Ae4E +AwFDBAMBQwUDAegB/AkAASkB5A0DAAAK+QH6AfkF+gH5A/oAA/n5+gAD+QAE ++Pn4+QP4AAX3+Pf4+AAF9wb2AfUB9gT1AAT09fT1BfQABfP08/P0AAfzAfIB +8wbyAfEB8gvxAAXw8fDw8QAE8AHxB/AABe/w7/DwAAPvAAbw7+/w7/AD7wAH +8PDx8BLy9AAD9QAE8/Py8gTxAfABEgPwBO8B7gHuBO0D7AHrAesD6gFGAUYD +6QXoA+cB5gHnBuYB5QHmBOUACOTl5OXk5eTlB+QB5SfkAA3l5OXk5OXk5eTl +5OXlAAPkAAfl5OTl5OTlAATkAAcZ5ebpRubmAATlBOQABPD19/YF8wAI8vHt +E+cDAgQTAgArBAQFA+foLEYT5gMD5APkA+QD5OQD5APkA+QD5OQD5OQD5OQD +5APkA+QD5AAHAwHqAfwIAAEQAfIRAwADBez9AAgAAAck5RkDA+UqAAgAABb/ +AP3e/d793v3e/d793v3e/d79/v//BwAABkXmAwPl+wkAAfsB5xADAAMF7P4A +CQAB9gHlBgMB9QH/CAAB9AHlCQMACeQDA+To7/n9/wAZAAH6AecKAwHoAUUJ +AAHwAeQOAwHnAfwJAAHgAeQNAwAAAR4D+QH4A/kACPr5+fr5+vr5A/oB+QP6 +B/kF+AH3AfgF9wAD9vb3AAf2AfUB9gX1AfQB9Qj0B/MABPLz8vMG8gAD8fHy +AAXxAA0S8fDw8fDw8fDw8fDxAArwAAPv8O8AA/AB7wHwBe8ABvDv8O/w8APx +AA3z9PX19PPy8/Ly8fLxAATwA+8D7gHtAe0D7APrAAXq6kZGGAAD6QPoBecG +5gflAeQB5TnkAeUK5AAE5eTk5QPkAeUH5AAE5udG6QTlAAnk5eQZ6fXz+PIA +A/MD8gAH7+zqAwMFBAASAgASBAQFA+Xo6UbrRgPkAwPkA+TkAwMABOQD5AMD +5AAKA+TkA+TkA+QD5A0DAekB+ggAAAP/KRQAEQMB7AH9CAAAB/vlQwMD5PMA +CQAAA97v7AAO7QAE7PL+/wcAAAZF5gMD5vsJAAFFAegQAwAD5O4QAAgAAAP/ +KOQABgMB9gH/CAAB9AHlDAMACOQD5Oft4PohBP8TAAH6AecKAwHoAUUIAAAT +/xLkAxkDAxkDLQMDGQMtAwPo/AAJAAH1AeQNAwAAA/kB+AX5BfoABvn6+fr5 ++gb5AfgB+Qb4AfcB+AT3AfYE9wX2B/UK9AvzAATy8/LzBvIB8QHyBvEABPDx +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 +7gAH7wTwABnyKvX19PPz8vHxEvDv7+7u7e3s7Ovr6upGAATpA+gF5wPmAeUB +5gXlAeQB5QvkARQD5AADLeQUAAfkARQE5AADA+QtAAXkAAXj5BnkLQAU5AAN +5eTk5eTl5OXk5eTl5AAK5QHkBuUACunr7uvlGe3u9fYG8gAH7+3t6QMDBAAP +AgAPBAECBAECAQPo6elGE+UtAAkDAAbkAwPkAwMD5AARA+QD5OQD5OQD5APk +A+QDA+QACQMB6wH+CAAB/gHrEQMB6QEiCAAB+gHlBAMAA+T7/wADAAH/AwAA +A95GLQAPAwHtAd4HAAAH//XlBQPm+wAIAAAE/wBF6A8DAewB/QkAAATeEwMZ +BQMB9gH/CAAABPTlAwUQAwAF5AUDA+QAAwMAAy0DGQADAwADIOr9AAgAAAT9 +RgMFCAMB6AH8CQAB+AHlDAMABOMD6CIJAAHgARkNAwAACPkACfr5+vn5+vn6 ++gAF+QH4BPkI+AAF9/j39/gABPcAA/b29wAE9gAG9fb19vX2BPUD9AH1CfQD +8wH0CPMABfLz8vLzAAfyAAPx8fIABPEABBLxEkEJ8AAF7+/w7/AADu8B7gXv +A/AAFPHz9PX08/Py8fHw7+/u7u3t7OzrA+oABBhG6ekE6APnBOYB5QHmBOUA +A+Tk5QAH5AAX4+QZ4y3k5C0U5OQt5APkLeQD5OQD5AMAA+QBFAPkAAQDLRlD +A+QBAxHkAAzl5eTl5eTl5OXk5eQS5QAe5ubp7O7vRkbv8B/z8vLx8vHw7e3q +5AQCAgMCAQEEDQIACgQFAuTn6ehG7OcDAwAN5APkA+QD5AMD5AMD5AAEAwAU +5APkA+TkA+TkA+QD5AMD5APkA+QGAwHnAf0JAAAH8OQFAwMULQAGAwAH5AMD +BRnp/AAIAAH7AeUFAwAD9v//AAUAAAX//+0DBQANAwAD4+z+AAYAAAj///Lk +AwPl+woAAf0B7A4DAAMZKf4ACQAB/QHpBQMABBQD9v8IAAH0AeUIAwHkAwMB +GRQDAAPq/f8ABwAABP1GA+QIAwHoAfwJAAAF++gDFC0ACgMAAy1G3gAJAAH1 +AeQNAwAABvkB+gP5A/oABfn6+fr6AAX5AfgB+Qn4AAT3+Pf4CPcB9gH3BfYA +A/X29gAH9QAG9PT19PT1B/QD8wH0B/MABPLz8vMI8gHxAfIH8QESAfEG8AAF +7/Dw7/AAA+8B8AjvAe4L7wAZ8PDxK/T19PPy8vHw7+/u7u3s7BPr6upGRgAD +6QHoAegD5wAG5ufm5uXmBOUAA+Tl5QAE5AAE4+TkGQPkAAlD5APkA+Qt5BQA +A+QADhTkA+QD5OQD5APkA+QDA+QACOPkGS3k4+QZBuQB5QfkAATl5OTlA+QA +COXk5eTl5OXkD+UAHObm5+dG7O/x7/Dv9/Ty8vHy8fDu7e7mBQUCBAUEBAoC +AQQDAgALBAXmRkbo7erkA+QACQMAF+QD5AMD5APkAwPkA+QD5OQD5OQD5APk +AAcDAeQEAwHlAfoJAAAD9uYFAAYDAeMFAwAFBQMD6UUACAAB+gHmBQMB7gHe +BwAABP8S5AUNAwADGe7+AAcAAf8B8AMDAeYB+wkAAAP///UADAMABAQD5fsK +AAFFAegDAwEUAwMB9QH/CAAB9AHlHQMABgQFAwTt3ggAAf0BRgoDAegB/AkA +Af0B6wMDARkKAwHqARAJAAEpAeQNAwAACPkB+gP5AAP6+foABvkABfj5+fj5 +AAP4AfkH+AAM9/f49/j39/b39/b3BfYAA/X19gAE9QH0A/UB9AH1CPQABPP0 +8/QK8wAE8vPy8wfyAfEB8gjxARIB8QbwAAbv8O/w7/AL7wAi7u/u7+7v7u/v +7vDv8PDx9PX08/Lx8fDv7+7t7ezr6+pGRgPpA+gD5wXmB+UB5AHlBOQAEy3j +5ORDGeQZ5APk5BTkLeQD5AMABOQAFQPkA+QD5APk5APkA+QD5OMZ5C3k4wAI +5AAJ5eTk5eTk5eTkAAPlA+QABOXk5eQF5QHmB+UE5gAN5+fp6u3v8fLt8/by +8gAE8QAK7+zvRgEBBAQCBAMFCwIADQEBBQEE5OfqRurt5AUAAwMAB+QD5APk +A+QABQMB5AEFAwMAE+QD5APkA+TkA+QD5AMD5APkA+QACAMAA/L//wAHAAEh +AUYDAwFDBgMACOMtA+QDA0ZFCAAB+wHlAwMABRQD6fz/AAcAAAP25eQACAMA +CeMDAy0D5PP//wAGAAHeAesDAwHlARwIAAAF/wAA/OYACgMAB+QD5Oz+AP8A +CAAB+QHlAwMABi0DA+T4/wgAAfQB5QkDAAcFAwMUAwMZABADAAQE4v7/BwAB +IQFGCgMB6AH8CQAABP7wA+QJAwAFBQMD6f8ACQAB4AHkDQMAAAv5AAP6+foA +CPkAB/j4+fj5+PkAB/gABff3+Pf4AAX3AfYB9wX2AAP19vYABvUAB/T19PX0 +9PUAB/QAB/P08/P08/QAB/MABvLz8vPy8wnyB/EH8AAE7/Dv8AvvAAXu7+7v +7gAE7wAe7u/v7vDv8PHzKfTz8vHw7+/t7ezs6+rqRkbp6ejoBOcD5gHlAeYD +5QAs5OXk5eRE5OQZLRnk5C0UGS3jLRTkA+QtFOQD5APkA+QDA+QD5APkLRQt +FC0E5AADA+QtAAPkAS0N5AHlAeQD5QPkAAPl5eQACuUB5gHlB+YAIOfn6Ubr +7vHy7u/28fLx8fIS7+3v7OQFBAIFAgEEBQUECwIDBAALGefqE+ru5gXkA+QA +CgMAEuQD5APkAwPkA+QDA+QD5AMD5AMDAAPkA+QABAMB5AYDAesB/QgAAAP/ +8+QADgMAA+Tp/AAIAAAJ+uXkAwMtA+b2AAgAAAUd5wMDQwADAwFDBwMB5gH4 +CAAB/QHpAwMB5gH7DAAABPLlA0MJAwAE5vgA/wgAAAT/9OQFBAMABi3l+v8A +/wYAAfQB5QkDAeQBBRYDAfMB/wgAAUUB6QgDAAQZA0b8CQAAA//55AADAwEF +BQMABRQDA+TsAAQAAf8FAAH1ARkNAwAAA/kB+AX5AAb6+fr5+foK+Qr4AAP3 ++PgABvcABfb39/b3AAb2AfUB9gb1AAT09fT1C/QB8wH0DfMABPLz8vMH8gAE +8fLx8gbxCfAB7wHwB+8B7gTvAAzu7+/u7+7v7u/v7u8D8AAQ8/Tz8vLx8O/u +7e3s6+rqRgPpAegB6APnBeYD5QAD5OXlAAfkAC7j5AMD4y1DGUMZLeTkFOQt +5OQD5APkA+TkA+QDLRQD5APkFC3kFC3kGeTj5OQZC+QABC7k5OUD5APlAeQB +5AflAeYB5QrmAAzn6Ojp6uzv8PDt9vME8QAR8O/s7fDmAwQFAgIEAQECBAQA +CgIAGAQCBAPmLOws60YD5ATkA+QD5APkA+QD5AwDAArkA+QD5OQD5APkBAMB +5AkDAecB+ggAAAT//OgFCwMABeQD5On8AAgAAfsB5QYDAATw/wD/BQAABt7s +AwMZQwoDAegBRQgAAAf75QUDA+X7AAwAAfwBRgkDAAQE5O/eCgAABf7uAwMt +AAQDAAPl+v8ACAAB9AHlCQMABOTu6SAPAwAHBQMFA+Qe/wAIAAH6AecKAwEs +Ad4IAAAI/wD96QMDBeMFAwAFLQMD5PEACgABKQHkDQMAAAAD+fkmAAn5AfoH ++QAI+Pj5+Pj5+PkJ+AH3A/gF9wH2AfcI9gH1AfYG9QAG9PX09fT1BvQAA/P0 +8wAD9AAJ8/Tz9PP08/P0AAXzCvIAA/Hx8gAH8QHwAfEH8AAD7+/wAAfvAAju +7u/u7u/u7wTuABzv7u7v8BIr9PPz8fDw7u3s7OvqRkbp6Ono6OfnBeYF5QHk +AeUE5AAvGS0DIOPkLRkDGUMZ4xktA+QD5APkFC0D5AMD5AMtFOQD5APkA+Tk +FC3kA+Mt5BkADeQABhnl5OTl5QTkCuUB5gHlB+YD5wAW6Onq6+zv8Ovy9fLx +8PHw7+7t8eoDAgMEDAIAEgECAgECBAUD5+oT7Ovr5AME5AsDABnkA+QD5APk +A+QDA+QDA+QDA+QDA+QD5APkAAMDAAPkA+QABQMABOTw//8GAAAG///25gMZ +DAMB6QFFCAAB+gHmBgMB5wH7CAAB9gHkCAMACiADAxkD7v//AP8EAAAI//UD +QwMD5vsIAAAI//0QAAAe6BkHAwAE5Or8/woAAf0BRgcDAeUB+QkAAfQB5QkD +AAbm+vzw5BQEAwHkBQMACeQDA+QDAyDq3gAFAAH/AwAB9wHmCQMAA+Tr/QAL +AAAD9uUtAAgDAAQZBOceCQAAA/8SLQANAwAAB/kB+gT5AAP6+foAC/kABPj5 ++PkG+AAD9/j4AAb3AfYE9wb2AAT19vX2BPUB9AT1CPQB8wH0A/MB9APzAAP0 +8/QACfMABPLz8vMG8gAF8fLx8fIABPEAA/Dw8QAE8AAG7/Dw7+/wB+8B7gHv +Cu4E7wAO8PIq8/Hx8O7u7Ows6kYD6QHoBOcE5gTlAATk5eTlA+QAMBQt4wPk +IOMZQ+MD5APkLRTjA+QULRQtFOQD5OQD5BQtA+QD5APkLRQt5BTk5BnkLQvk +AA3l5OXk5OXk5OXk5eTkAAflAeYB5QXmBecAGOjo6Ubq7O7v7O728fHw8O/u +7ezx7uYEAw8CAwEADQIFAgMx6uzs6uvmA+QAAwMAB+QD5APkA+QADwMADOQD +A+QDA+QDA+QD5AMDAeQJAwAD6Pz/AAcAAAf//u/kAwMgAAMDAAkZ5AXkA+QD +RkUACAAB+wHlBQMABCDk8xAHAAAH/eoDIAMD5AADAwAI4wPkA+X3AP8GAAH+ +AewEAwF+AfsIAAAT/fD6/wD/+UbkA+QCBAPl7EX//wAJAAAD//jmAAQDAAcF +AwPm+wD/AAcAAfQB5QkDAAnoIf/eKkbkFC0ABQMBFAcDAAXm9QAA/wAEAAAG +/wAAKuQZCQMAA+3+/wAIAAAK/wD97xTkBQMD5AQDAAPk7t4ACQAABv/uFAMD +BQoDAAAE+QH4B/kB+gn5AAb4+fn4+PkK+AAD9/j4AAb3C/YB9QH2B/UAA/T0 +9QAJ9AAF8/T08/MAA/QB8wH0A/MB9APzAATy8vPzB/IABfHy8vHyAAfxB/AH +7wAIMO7v7u/u7u8L7gPvABLy8/PxEu/u7ezr6kbp6ejo5+cE5gHlAeYD5QHk +AeUG5AAvLRQDGUMULQMZAy0ZQxnjLRktLQPkA+TkLQPkAwPkA+TkA+QD5BTk +LRTkLeQD5OMAD+QABeXl5OTlAAPkBuUD5gHlBeYE5wPoAA7pGEbs7O3t6vT0 +8PDv7wPtAAXu8+kCBQAQAgEBAwIACgQF5xPt7Ubr6QUNAwAN5APkA+QD5APk +A+QD5AADAwAL5AMD5APkA+QDA+QABQMB5AYDAATk8///BgAAB/8A/fDkAxQA +CAMABOQDRvwIAAAD+uXjAAQDAATjA+n8BwAABP/45uMIAwAFFAPv3v8ABwAB ++wHnBAMB5gH7CAAAEv1G8P//AAD8Kuro5kYTKf0A/wkAAAb/AO/kA+QFAwHm +AfwJAAAD9OUUAAgDAAnuEAAA/yH16+QABAMBFAUDAAbkA+Xy3v8JAAHiCgMA +A+Ti/gAGAAAJ/wD//v8AIe7lAAgDAUYB+wkAAAP//iwADgMAAAv5AAP6+foA +CfkB+AX5AfgB+Qj4AAP39/gABPcABPb39vcH9gH1AfYH9QAG9PX19PT1CfQB +8wH0A/MD9AHzAfQH8wAD8vLzAAjyAA3x8vHx8vHx8vHx8PHxAAfwC+8B7gHv +A+4B7QjuAA7v7/Hy8vHv7u3s6+pG6QPoAAbn5ufm5eYE5QAE5OXk5QPkADID +5BQtA0MZLQPkA+QD4+QD5CDjGRTkA+QULRTkA+TkA+QDA+QD5APkA+TkA+QD +5OQtGQjkAeUD5AAF5eXk5OUAA+QAA+Xl5AAE5QAM5ubl5ubn5ubn5ufnA+gD +6QAd6urr7e3r8PXw7+7u7ezt7/Ls5QMEAgECBAUFBAQACQIADQQFBATmLOvs +E+zr5OQABQMAB+QD5APkA+QADgMABeQD5APkAAYDAeQDAwAD5APkAAkDAAPo ++/8ACQAAB9706eQDAwUAAwMABgUD5Ub4/wgAAfsB5QcDAAPk8RAABQAABf8A +3PTmAAQDARkDAwAHLUb8AP8A/wAEAAAD//HkAAQDAeUB+wgAAATe60b8BAAA +BhD9Rfv8/QP/CwABIQHoCAMB5wEhCQAB9AHkCAMB5QH3BAAAEv///fjy6+fl +5OQDBOTk5ur23gQAAAP/AP8AAwAB/QFGCgMAA+Tw/gAHAAAK//0S+///3vXr +5wPkAAXl6O9F/wAKAAHeAecOAwAADPkAB/r6+fr5+foABfkD+AAF+fn4+PkA +BfgAAx/4+AAJ9wAL9vf29vf29fb29fYACPUABfT19fT1AAz0AArz9PPz9PP0 +8/P0BvMAA/Lz8wAG8gAI8fLy8fLx8fIE8QHwAfEE8AAD7+/wAATvAAXu7+7v +7wAH7gAE7e7u7QbuABPw8fE27u3s6+pG6eno5+fm5uXmAAPlAAPk5eUABuQA +By0ULRQtAxQABAMAH+QDGQPkLRQt4y0ULRQtFC0ULRQtFC3kFOQD5APk5AMA +BOQBAwzkAAQZ5eTkA+UABeTl5eTkAAjlBeYE5wToAAzp6erqLOzs6+z18u4D +7QAP7O3t8fLoAwUFBAQFBQMDAA0CAA0EA+kT6+zr7eYDAwLkAAsDAAvkA+QD +5APkA+QD5AAIAwAD5APkAAkDAeQJAwHuAd4GAAAS/wD/AP9FK+vm5QPk5ejv +9fz/CQAB+gHmBAMABhQDAyDo+QcAAAX//vbnIAAEAwAEIOTt+wMAAf8B/wQA +AAne6AMD5AMD5vsACAAABP3s5fUEAAH/BQAB/wkAAAX/AAD/8wAIAwAEBOn+ +/wgAASgB5ggDAAfpIgAA/wD/AAMAAA3//fv39Cvx8PHz+f3/AAoAAAb/++UD +A+QHAwAD5PP/AAcAAAT/IUbyAwAACf/9+fXz8/Uc3gAIAAAJ/wD///vlAwPk +AAsDAAAM+QAF+vn6+foACvkB+AP5AAP4+PkABfgAA/f4+AAI9wH2AfcF9gAE +9fb19gn1AAb09fT19PUH9AAD8/TzAAP0AATz9PP0B/MADPLz8/Lz8vLx8vHy +8QPyAfEB8gbxAAPw8fEABfAB7wHwA+8ABe7v7u/vAAfuABXt7e7t7u3u7e7u +7/ES8O7sE+rp6egAA+cD5gXlB+QACQPkA+QDAxktFAADAwAnFC3j5AMZ4xkD +5APkA+QD5C0ULQPkAwMtFC0D5APk5AMD5APkA+QDAAnkAATl5OTlBuQG5Qbm +BecABOjn6OgD6QAKRkbq6xPs6vPz7wPtAArs7e7v9exEBQMFAwME5AADAwUF +AAgCAAkB5OXq6uvrQegAAwMB5BgDAAXkA+QD5AAGAwAH5APkA+QD5AADAwHk +BQMABOQD5fINAAAH/vxF+0VF/QANAAEdAeUEAwAJLQMD4wNGIQD/AAcAAAn9 +9e3r6uru+BAACAAAA//+8gAGAwAD5UX/AAcAAAj96wPnIQD//wsAAf8GAAAD +//roAAgDAAPk7RAACQAB+AHmCAMB9AEQHwAB3gHvCwMB5gH3CQAABN4s5/0D +AAH/EAAD/wHyDwMAAAv5AAf6+fr5+vn6AAT5AfgD+QH4AfkE+AH5BfgB9wH4 +CfcABPb39vcD9gAJ9fb19vX29fX2AAT1AAv09fT19PX09PX09QAI9AAD8/P0 +AAXzAfQF8wHyAfMG8gPxAAXy8fLx8gAH8QXwCO8B7gHvB+4J7QAP7u3t7vDw +7u3rRkbp6OjnAAPmA+UB5AHlBuQAAwPk5AAHAwAmLQPjIC3jIAMt4y0D5OQD +5APkA+QULeMZLeMg4y0U5Bkt5APk5AMP5AHlA+QB5QHkCOUI5gAG5+fo6Ofo +A+kBRgFGA+oAE+zr6u/08O3t7Ozt7+z08OgZBAUABQMF5AEDAQUFAgAFBQXk +5+kAA+sABO4TLeQQAwAL5APkA+QD5APkA+QABgMABeQD5APkAAkDAeQJAwAG +5vf+/wD/CQAB/wQAAf8NAAAD+uXkAAcDAAbkA+78AP8GAAAI//7e/SH93v8H +AAP/AfgB5wUDAAMU5hwACAAACd7r5APw3v8A/wALAAAI/wAA//8A/u0HAwAE +5APk8woAAfcB5QcDAAPoIf8AHAAD/wEfAecLAwHnAUUJAAAF/esD8v4AEgAA +Bf//APzqAA8DAAAM+QAE+vn5+g75AfgB+QX4AAT3+Pf4B/cABfb39/b3AAT2 +ABP19vX29fb19fb19PT19PX09fT1AAr0AfMD9AAI8/Tz8/Tz8/QF8wHyAfMD +8gHxA/IE8QAD8vHyAAXxAAPw8fEAB/AF7wTuAAPt7u4ABu0ACOzt7ezt7O3s +A+4ACe3r6unp6Ofm5gAG5QfkBAMABOQDAwUHAwAgGQPjIAMZ5AMD5APkA+QD +LRTkA+QD5BkD5C3j5APk5AMD5AEDC+QACuXk5eXk5OXk5eQE5QPmAAbn5ufn +5ucE6AHpAegD6QAkRkbq6uvrLOvz8e7s6yzt8Ozv8+zlBQMD5AMFBAUDLRQD +5QMDBQIACgMF5ehG7e3w7+UeAwAD5APkAAgDAAfkA+QD5APkAAkDAAYF5AXn +9v8OAAH/DwAB+wHlBQMB5AQDAAXk7f3//wAHAAH/DgAAA0VG5AAGAwHlAfsI +AAAJ/u0DBeb1AP//ABAAAAT+8OTkBwMABxTo+gD/AP8ABgAB+QHmBgMABOTv +AP8cAAAE/wBFRgwDAAPt/v8ACAAAB/3sA+b3AP8AEwAB9AHlDwMAAAv5AAj6 ++fr6+fr5+gn5AAX4+fn4+QAG+AAD9/f4AAX3AAT29/b3B/YB9QH2A/UB9gX1 +AAz09fT19PX09fT19PUI9AAE8/Tz9AXzAfQG8wAF8vPy8vEABfIAA/Hx8gAK +8QHwAfEE8AfvBO4B7QHuBu0B7ATtAAzs7ezt7u3s6uno6OcD5gAF5eXk5OUA +BuQBLQYDAwUDAwEgAeMEAwHjAwMAG+QDA+QD5APkFC0D5APkA+MtFBktFOTk +A+TkAwAN5AHlA+QABeXk5eTkAAblA+YAA+fn5gAD5wHoAegE6QAcRhhGRurq +6xPq8PPv7Ebr7e/t7CruRgMFA+TkAwMCAAcEBAXk5AMEAAUCAAUE5Ubs7gAD +8QHnEgMAC+QD5APkA+QD5APkAAYDAAXkA+QD5AAJAwAD5APkAAYDAQUDAwAD +5/L8AAcAAf8VAAAR+uXkA+QDFAMgA+QDA+TtHP8ABQAB/wYAAf8HAAAN//vr +5AMDFC0UAwPm+wAIAAAI/u3kAwPnKP8OAAAG/wD98eTkBwMABATm9P8KAAH6 +AecFAwAHAuTl7fj9/wAaAAAF//vq5OQACgMABej6/wD/AAcAAAje6wPk6B7/ +/xAAAAP/+egAEAMAAAz5AAT6+fn6DvkABPj5+PkH+An3AAP29/cABPYABfX2 +9fb2AAz1AAP09PUAC/QAB/P09PP08/QABfMACfTz89/z8/Lf8gAG8QAF8vLx +8fIACvEF8AHvAfAE7wHuAe8D7gXtAAPs7O0ABOwABO3s7e0D7AAGLEbp6Ofm +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 +5+fo6OnpA+cAFujo6unpLgMDBAXk5e4S8/bz8e7kBAQDAgEEAQQDBQEDAQMD +BRcDAAPkA+QABgMAB+QD5APkA+QAJAMB6AH7CAAABP1GAwMJBSMDAUYB/QgA +AAP/8eQAJQMABi0FBCAFIHEDAAAM+QP6AfkB+gT5AfoG+QAF+Pj5+PkABvgK +9wAE9vf29wj2AAb19vX29fYE9QAH9PX09fX09AAD9Qf0AfMD9AAF8/Tz9PMA +A/QABfP08/P0AAvzA/IAA/Hw7wAD8AAH7+/w8fHy8gAE8QESAfEE8ATvA+4D +7QAL7Ozr6+rq7O/w8fIABvMF8gAH8/Ly8/Ir8wAD8gADK/PzAAPyAfMD8gAI +8/Py8/LzK/Md8gAD8fHyAAPxAAwS8RLv7u3s60bo5uYD5QTmBecD6APpABFG +6RhGRurqRkYYRkbp8e/u7gAD7QAnRhjr9evm5+hG5+np6Ofm5efoRuflFC0D +5OXo7PDx9PTw7ucDBQUBAAMCAwQABwUFAwQEBQUAGgMABeQD5APkACsDAegB +HAgAAf4B6wMDCAUjAwHrAf4HAAAG/zvx5BQtIgMACQUDAxQODhRDBQBvAwAA +AAP6+TwACvkABfr5+vn6AAX5AfoF+Qj4AAX3+Pf3PQAG9wAH9vf29/b29wAG +9g31AAT09PX1A/QB9Qj0AAvz9PTz9PTz9PP09AAD8wAD9PP0AAjzABLf8/Py +8/Hw7+/w7/AS8vLx8fIE8QESAfEE8ATvAATu7u3tBOwADOvr6uzu7/Hy8/Tz +9ATzAAXy8/Ir8wAL8gErDvIB8QfyAfME8gHzASsD8g3zDPIACfES8O7s6+ro +5wAD5gAD5+jnAAPoBekAD0ZG6kZG6upGRupG7vDv7gAD7QAS6uks8Pbs5+Tm +6Ebq6Ofl5uXlA+YAEeQD5OTl5Ubw9PL09e/q5AMEAAMCBQQDBQEEAQQDBQ8D +AwUNAwAH5APkA+QD5AAjAwHoAfsFAAAF/wD//usACAMBBQEFIAMBQwMDAesB +3ggAAAP/8eQAJQMACSDkDglVQyAF4wBuAwAAAAX5+SX5JQAD+QE8A/kACPr5 ++vn6+fr6BfkAB/r5+fj5+PkACPgH9wAG9vf29/b3CvYAA/X19gAG9QH0A/UB +9AP1DvQAC/P09PP08/P09PP0AAPzAAP08/QACPMACPLy8fDv7/DxBfIAA/Hy +8gAD8QHwAfEE8AAE7+/u7gTtAA3s7Ovr6urt7+/w8fIqAAP0AAXz8/Ly8wAK +8gAK8fHy8fLx8fLx8hDxAAPy8fIABPEE8gADK/IrAAfzAfQF8wAD9PPyAATz +AAby8vPy898E8gAHEu7r6ujn5wAD6ATpBUYADepG6kbq6Szx7+7t7ewAA0YA +Bu7x6evp5wPpAAPo5+gAA+YAFuXl5OXl5APk5ent8/X29O/tAwQBAQIFBAYF +TQMB6AH7BwAAA//e7AAJAwEFHQMBQwUDAAMF7f4ACAAABP/x5C0eAwAF4wMg +BQUAA0MADLEKCggOAyADBSAD5GkDAAAABCX5+TwJ+QP6AfkB+gX5AfoF+QH4 +AfkH+AAD9/f4AAn3AAT29/b3BPYB9QH2A/UB9gP1AfYD9QAG9PX09fT1A/QA +BPX09PUI9AAQ8/T08/Tz8/T08/T08/Tz9ArzAAjy8/Py8RLw8QfyBvEBEgHx +A/AD7wPuAe0B7QPsAAnr6+rs7+/w8fIABfQD8wHyAfMD8gAD8fHyAAvxDfAB +7wvwAAgSEvES8fHy8QTyASsD8wAKK/Pz9PTz9PP08wT0BvME8gAEEu/s6wPp +AAPo6UYAA+kERgTqABbp7xLu7ezs6ulG6vPv6ejq6unp5+fmA+gB5wHmA+UA +EuTk5eXo7/D09h/z7+cFBQQCAQUEBwUkAwAH5APkA+QD5AAbAwHkBQMB5wH7 +CAAB/gHsAwMBFAEtBAMB5CQDAfAB/wgAAAMQ8eQAIQMABuMgIENDCAQKAAhl +4+MgLQMDIGkDAAAK+QAMPPn6+fr5+vr5+vn6B/kM+AAE9/j3+AT3AAT29/b3 +BvYAA/X29gAE9QH2B/UAA/T19AAE9Q30AAPz9PMAA/QADvP08/P08/Tz9PP0 +8/P0A/MACPLz8vPy8vHxCPIB8QHyBfEE8APvAe4B7gPtAAfs7ezrLOrsAAPv +AAPw8fMABfQB8wTyBPEB8AHxB/AN7wjuC+8B8AHvBPABEgXxA/IB8wHzB/QA +BPX09fQH8wTyAAXx8O4TRgAE6QA2RulG6RhG6urp7PHv7ezrRufqRvAS6+nn +6uzt7Ebp6Ofo5+Xm5uXk5OXm6Ozy9Pj5KfDpAwUEAwIFBAgFRwMB5AMDAekB +RQgAAAX/7gMDLQAEAwHkHgMAChkDLQMDGQPk8v8IAAAD//PkACQDAUQBCAYK +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 +BfIB8QHyA/ED8APvAe4D7QPsAAXrLOru7gAG7wAM8PHx8vDu7e3s7BPrBOoA +BEZG6UYG6QAE6Ono6RHoAAbp6Ono6egE6QFGAekDRgHqAUYD6gAGLBPrE+zs +A+0B7gHuA+8D8APxAAXy8ivyKwAF8wA38vPy8/P08/Py8u7x7uvr6uvr6Cz0 +8hPp7/P2+Pf49vHzKvHt6Ubp5ubn6e3z8/Q8H9/mAwUEAgAGBAECAQIUBAEF +AQU9AwAEBOn7/woAAAX25AMD5AAnAwAERh/9/gkAAAP/+eYAHwMAAy0MBgAO +CgADBtYgAGkDAAAAA/n5PAAK+QX6B/kABfj5+Pj5AAj4CfcAA/b29wAF9gAJ +9fb29fb19vX2AAb1ABb09fT19fT19PX09fT19PT19PX09fTgBfQB8wb0AfME +9AAEaPTz9AvzAAfy8/Lz8vLzAAbyAfEB8gbxAAPw7+8AA+4B7QHtA+wABOvr +GO4J7wAH8fDv7u0T6wAD6gNGAATp6OjpA+gACeno6Ofo5+jn6AAR5wAE6Ofo +5wfoBOkAA0bpRgAD6gTrAAMT7OwAA+0ABO7u7+8D8AAE8fHy8QTyAAQr8vLz +A/IB8wHzA/QAL/Py8PPt6+wTRuby8fLr7PH2+vj7+vXy7O7s6ebp5+jo7O7x +9PX3+PZGLQUCBQQFAAUEAQIBAhQECAUUAwQFHwMACOTp8fP1+vwQBgAB+AYD +BAUgAwAJ5Ofq7PDy9/z+AAYAAfoB5h8DAAQg4wwGDAoAAwYM4wBqAwAAAAX5 ++Tz5PAAF+QAE+Pn5+gf5AAX4+fj4+QAI+AAD9/f4AAf3AAX29/b39wAI9gAE +9fb19gj1AAz09fT19PX09fT19PUD9AH1FfQADPPz9PPzaPPz9PPz9AXzAAff +8/Lz8vLzAAryA/ED8APvAAbu7u3t7OwD6wFGAe0G7wAO7u7v7u/u7evq6kZG +6ekF6AAD5+foAAXnAeYB5w/mAecB5gPnAeYJ5wToAekB6ATpA0YE6gHrARMD +7APtAAbu7u/v8PAF8QPyASsF8gPzACr09BIq9evq6ufv8vDv7PL4+vr4+PX0 +8/Lr6urt6UbqRtj09/j5+vgTGQMFBAcCEgQLBTgDAA0EA+Tm5uju8/v9///8 +AC8DAAzk5eXp7/ZFEAAARegiAwEMAQYKCgAEBgwFBWoDAAAN+QAD+vn6AAr5 +AfgB+QX4AAP3+PgABvcABfb39/b3AAb2AAX19vX29gAE9QH2BPUAEvT19fT1 +9PX09fT19PX09PX04Av0AfMI9AAO8/T08/T08/Tz8/Tz8/QG8wHyA/MB8gHz +CPIB8QHyA/ED8AAE7+/u7gPtAAns7Ovq6e7v7u8ABO4ACu3u7u3t7OpG6ekE +6APnAAnm5+fm5ufm5ucAHOYB5wHmBOcAA+jo5wAD6AbpAUYBRgTqAesB6wPs +AAXt7e7u7wAD8AfxBfIBKwT0ACjzEvnr5udG9vLw6/L5+vn6+vn59/Pu8RPq +7Ebn6+zy9Pj6+/jx5QMFBQQHAhIEDAU3AwAOBQMFBQMF5OXo7ClF/eQyAwAI +5OVG7/n9ReghAwAEIAMMBggKAAQGDC0gawMAAAH5ASUM+QH6B/kABPj5+PkE ++AH3A/gL9wH2AfcI9gAF9fb19fYABfUB9AP1AAz09fT19PX09fT19PUQ9AHz +BvQAA/P08wAF9AAF8/Tz8/QACfMABPLz8vMD8gHzBvIE8QHwAfAD7wAE7u7t +7QPsAATr6kbtA+8E7gHtA+wABhPr6uno6APnAeYB5wrmAeUE5gAE5ebl5Qbm +AATl5ublBOYB5QzmBucD6AHpAegD6QADRulGAAPqAAjr6+zs7e3u7gPvA/AF +8QTyAfMD9AAo9fL29eXk7/Tw7e74+fn6+EX69/Xy8e/w7Ovo6u3z+vn6Hvr2 +6AMDBQUEBwISBA0FNAMBBQQDAQUBBQUDAAbl6e/mAwUwAwAIBQMD5Obq9ekg +AwAGBeMgLQwGBgoABwYMLQME4yAAaQMAAAT5ATwI+QH6BvkAB/j5+fj5+PkA +BfgABPf49/gE9wAF9vf39vcAB/YAA/X29gAD9QH2CfUAC/T19PX19PX09fT1 +ABj0AfMK9AAF8/Tf8/QABvMAB/Lz8/Lz8vMAA/IB8wbyAAfx8RLw8O/vAAPu +AAjt7ewT6ulG7QPvA+4ACe3t7OwT6upG6QAD5wPmAAPl5eYAF+UABObl5eYE +5QAJ5uXm5eXm5eblAAbmBucB6AHnA+gAC+no6elG6UZG6usTAAPsAAbt7e7u +7+8D8AESBfEAA/Ly8wAE9AAl8/nv5Onw7+7z9/j3+vr5Pfr49fHw7u7rRhPy +H/n7+vr36y0DBQAGBAcCHgQBBQEFNAMBBQQDAQUBBQYDAAXk5AQDBQApAwHk +AQUEAwHkBAMD5B8DAAgtFBQDFOMMBgQKAAcG1hQDFOMUAGoDAAAABPk8+TwP ++QAF+Pn4+PkABfgABPf49/gM9wAD9vYoAAb2AAP19vYACvUABPT19PUD9AH1 +BvQAA/X09QAM9AADKvTzAAb0AAjz9PP09PPz9APzAfQD8wH0A/MAA/Lz8gAD +8wPyAfMG8gXxAfAB8APvAe4D7QAH7Ozq6ent7wAE7gAN7e3s7Ovr6kbp6Ofm +5gAM5QHkBuUB5ATlAeQY5QHmAeUF5gAD5+bmAAfnAATo6OnpA0YABerq6xPs +AATtAAPu7+8ABPAF8QAQKvT09fb09/jq4+rsEjny9QP5ABf6+/v6+eDy8Ubp +7O72+fv6+fri5AMFBQAGBAcCHgQNBSsDAwUAAwMFBQAFAwMFAAMDAwUAKgMB +5AoDAQQfAwAUFC0gAwMt4wwGCgoGDOMtAyAgLRRpAwAACvkBPAf5AAT4+fj5 +CPgABPf49/gH9wH2AfcI9gAH9fb19vX19gAH9QAO9PX19PX0KfT19PT19PUY +9AHzBfQAB/P09PP08/QADPMABPLz8vMH8gAD8fLyAAPxAfAB8APvAe4B7gPt +AAXs6unp7QAD7wHuA+0ACuzs6+pG6ejn5uYI5QAK5OTl5OTl5OXl5AXlAAfk +LuXl5OXkAAPlAAjk5eTl5eTl5A/lAeYB5QXmAAbn5ufn6OcD6AAM6elGRuos +6xPs7O3tA+4B7wHvA/AD8QAn8vT09fX09vj46Bns8hL1+vn6+/v5+ff5KfLt +5izt8fb4+Pn68+YDAAMEAQUFBAUCCgQBAgECEgQKBQAGAwMFBQQFlgMABgUD +DAYGDHEDAAAF+QEmD/kB+AH5BPgABff4+Pf4AAb3AfYF9wH2AfcI9gAD9fb2 +AAn1AAn09fT19OD19PUABPQB9RL0AfMI9AAE8/Tz8wP0AAXz8/Tz9AAH8wAH +8vPz8vPy8wAH8gAE8fLx8QTwAA7v7+7u7e3s60bp6e7v7wPuAAvt7Ozr60ZG +6ejm5gAE5QFEEeQB5QXkAA7l5ETk5eTl5OXk5eTk5QPkAAbl5OXk5eQJ5QAD +5uXlAAfmA+cACejo6elGRurr6wAE7AHtA+4B7wHvA/AALPHx8+D19vb3+fnx +5Onv9fj5+vn7+0X6+/nz7+wT7/Ly+Pf6+vhG5AMFBAQFFgISBAoFAQMDBQAD +BAUFAJQDAAogAyADCQzkIAMgbgMAAAAD+fklAA/5AfgB+Qn4B/cB9gP3AAX2 +9/f29wAF9gAF9fb19vYACPUBKQX1AAn09fT09fT19PUAEvQB8wP0AAPz9PMA +BfQB8wT0AAjz9PPz9PPz9ATzAfIE8wAF8vPy8/MABfIB8QHyA/ED8AAQ7+/u +7u3t7OpG6enu7+/u7gPtAArs6+pG6eno5+blI+QBRAXkAAfl5C7kLuQuAAXk +BOUB5AjlBeYD5wPoAA/p6Ubq6+sT7Ozt7O3u7u8AA/AAB/Hy9PX29vcAA/kA +Hunk7B/3Hvb5+fv6+ffy7+zs7u/2+Pf2+/nu5BkDAwMEFgISBAwFAwQDBZMD +AAYgAwUgAyADAwEgbgMAAAAD+SU8AAb5ATwF+QAH+Pn4+fn4+QAF+AAF9/f4 +9/gABvcAA/b39wAM9gAF9fb19ikABfUADOD19PX09fT19PX09RT0AfMD9AAF +8/Tz9PMAA/QACfP08/Tz9PPz9AAD8wAD9PP0AAXzAAfy8/Lz8/LzAATyAATx +8fLyA/EB8AHwBO8ACu7t7ezrRulG7u8D7gAN7e3s7OvqRuno5+fl5QAD5AAE +GeQtFAXkAQMF5AAFA+QD5AMAB+QBGRrkAATl5OXkCOUE5gHnAeYD5wAI6OlG +Rurq6+sE7AAD7e7vAAPwABDy8/X29vf5+vn05ubz9vf3A/sACvr3KfHy6+zx +9/gD+QAK+/TlBAPkAwMEBBYCHAQBBQMEAAUCBAQFBQCSAwAILRTj4wMUAxRw +AwAAEvkM+Af3AAM+9/YAA/cB9gH3BvYAB/X29vX29fYABvUB9AP1AAb09fT1 +9PUc9AAE8/T08wX0A/MABPTz9PQH8wHyBfMABfLz8/LzAATyAATx8vHxBfAA +HO/v7u7t7Ovq6eru7+/u7u3t7Ovr6kbp6Ofm5eUE5AAJQxnkA+QDA+QDAAPk +AQMG5AARA+TkGeTj5C0D5OQZ5C3k5C0AFOQABuXk5eTl5AflA+YD5wAJ6Ojp +Runq6+sTAAPrABTt7u/w8PL09fb3+Pn6Hvju5RP4PAX6AA/38PHx7u/y9fr6 ++fj4RgQABAMAAwUEBAAFAQUCCgEBAgECHAQABwUEBAICBAQAAwWSAwMgAAYD +Ay0gA+NuAwAABPkABTz5+fr6AAb5A/gAA/n4+QAE+AAG9/j49/f4CvcAA/b2 +9wAJ9gH1AfYG9QARKfX1KfX09fT19PT19PX19PUADPQBKgf0AAPz9PMAA/QA +D/P09PP08/P082jz9PPz9AAJ8wHyBPMB8gHzBvIABPHx8PED8AHvAe8D7gAG +7ezqRkbqA+8AA+7u7QAD7AAJ6urp6ejn5uXlAAPkAAUD5AMtAwAF5AAIA+QD +5APk5AMD5AARA+TjLeQZ5AMD5C3jGeTj5BkAFuQAA+Xk5QAE5AXlA+YACufn +6Ojp6OlG6usD6gAr6+3u8PDx9PX2+Pj6+vnx7hPm8h35+h36+/Xw7+zu8xP5 ++Dz7HOoDAwQD5AADBRUCBQQBAgECHAQFBTwDAQUBBQgDAwURAwEFAwMB5AkD +AQWgAwAAAAf5PPk8+fn6AAb5AfgB+AP5AfgB+Qf4AfcD+AH3AfgF9wAJ9vf2 +9/f29/YoAAT2AAX19vb19gAJ9QAO4PX09fX09fX09fT19PUQ9AAD8/TzAAP0 +AAfz9PP09PPzAAP0AAPz8/QADfMABvLz8/Lz8gPzAAvy8/Ly8fLx8fDx8AAE +7wAE7u7t7ANGAeoD7wAN7u7t7Ozr6upG6Ojn5gAG5AADIOMZAAkDAB7kA+QD +5APkA+QDLRQt4wPkAwPkAy0DGS3j5OMZLRkR5AEuA+QD5QAD5OXkAAPlA+YA +Nefn6Ojn5+hG6upGRuoT7u/w8vP19vf4+fr38+/s6en19/n6+fnw7+3v7/Dz ++/r7++AuBAMEAAMDAQUBBRwCHAQKBRwDGwUBBAEEAwUFAwMFEQMBBQ0DAQWg +AwAABvkBPAT5AfgE+QH4AfkH+AAE9/j3+Az3C/YABfX19vX2AAj1AAgp9Sng +KfT19AX1AAP09fUAA/QB9Q/0AfMD9AHzAfME9AAD8/P0AAPzAfQO8wAE8vPy +8wbyBPED8AAj7+/u7+7t7OpG6evv8O/u7u3t7Ovq6unp6Ofn5uXl5OTjA+QA +AwMFBRYDAAzkAy0U5APkLRTjLRQI5AEZDOQABETk5eQF5QPmBecB6ATpACpG +6uzv8PH09ff4+fr69+Dx7evm7/r6+fXu7u/t8vT1+Pr7+/boAwMFAwQDAwEF +FQIFAQECAQIcBAUFBQQDBRcDAQUBBRsEAAQCAgQECQURAwEFCQMB5AMDAQWg +AwAAB/kBPAT5ABb4+fn4+fj5+Pn4+D34+Pf4Pff49/c9BPcABPb39vcD9gE+ +BPYB9QP2DfUADOD14PUp9fX09fX09Qb0ASkH9AHzA/QAEvP0KvTz9PP09PPz +9PP09PP09ArzAfID8wHyB/MB8gHzA/ID8QPwA+8AGu7t7RNGRunr8O/v7u3t +7BPr6urp6ejn5uXlBeQAAwMDBQAFAgEEAQQQBQAQAwNDGQMD4xktFC0UA+Qt +GQbkARkJ5AAFFC3jAy0AB+QG5QAu5ubn5ubn6Ojn6OhG7O7w8vT19/j5+vof +9PLv6+nn9/sd9hLt7vHw9fb0+foe7AQDAQQBBQMDAQUVAgUBAQIBAiYEAAMC +BAUAFwMBBQEFGwQABAICBAQJBREDAAkFAwMF5APkA+QABQMBBaADAAAJ+QE8 +BPkABvj5+Pn4+QX4AAT3+Pf4C/cAA/b2PgAI9gAG9fX29fX2DPUBKQP1AAfg +9fT19fT1ABj0AAzz9PQq8/T08/Tz8/QL8wAF8vPz8vMACfIB8QHyA/ED8AAk +7+/u7u3r6urp7PDw7+7u7ezs6+oYRujo5+fm5uTkLeMZAwMFCAIOBAMDAAwZ +4y0ZA+TjLRQt5BQI5AHlCuQBGQPkAAMZAxkAA+QACS7k5eTk5eTl5QAF5gAx +5+fm5+nr7vDy9Pb3+Pn6+ff18/DsRuXw+fn3K+7y8fXz8fb7+vLlA+QDAwUC +A+QDBAAcAiYEAAMCAgUAGAMDBRwECgURAwEFDQMBBaADAAAG+QAD+Pn4AAP5 +AAk8+Tz5+fj5+DwABfgACff49/j39/j3PQAE9wAD9j73AAb2AT4B9QP2AAMp +9mcABPUBZwb1ASkE9QHgASkD9QAF9PX09PUAB/QB9Qr0AAfz9PP09PPzAAP0 +AATz9PP0BPMB9AbzAd8F8wHyBfMB8gHzA/ID8QTwACjv7+7u7OvqGEbt8PDv +7+7t7Ovr6urp6ejn5ubo5eQZ5C3jLQMEAgEBCAIGBAQFBwMACOQD5APkA+Qt +B+QACeXk5eTl5OXk5AAF5QAE5OXk5QTkARkD5AAH5eTk5S7k5QAD5gAo5+bn +5+jr7vDz4Pb4+Pr6+ff18/HtLOfp9fHx4vLv9vng9vb69ucD5AQDAQIBBQMD +AQQZAg8EAQIBAhkEAwUVAwADBQQCABwEDQUKAwMFsQMAAAX5AzwD+QAHPPn5 ++Pn4PAAD+AE8A/gABz34Pfj3PT0ABfcAFj4+9/f29/Y+9vY+9vX29Wf29vX2 +9WcE9QFnA/UADuD19Wf1KfX09fT19PT1A/QB4A30AfMF9AHzBPQABPP08/QD +8wH0DfMABfLz8/LzAAfyBPED8AAO7+/u7uzq6kZG7/Dw7+8D7QAQ7CzqRunp +6Ofn5ebl5eQDGQMDAAQEAgEBCAIFBAYFAAsDA+QDA+QD5APkAwAN5AAF5eTl +5eQABeUABObm5eYN5QAF5OXk5uUABOcACujn6u4S8/X3+PkD+gAX9/bz8e7s +Rubt9e/u7/T2+ff7+vrr5OQAAwMABOQDBQQDAwEFKgIZBAMFFAMABOQFBAIc +BA0FCgMDBbEDAAAD+QAGPPn5+Pk8A/kACDw8+Tz5PDz5A/gADD34+D34Pfgf +9z33PQT3AAP29z4ACPYADGf29mf19mf19fb1ZwT1ASkF9QAH4PX19PX09QAK +9AEpAeAF9AHzA/QAD/Pz9PP08/Tz9PTz9PP09AAF8wH0CPMAA/Lz8gAE8wHy +AfMD8gAE8fLx8QTwABrv7+7u7OpGRurw8fDv7+7t7BPr6kZG6ejn5wPlAAvk +A+QD5AMDBAIBAQAIAgUEBQUEAwAK5AMD5OQD5APkAwnkAAbl5OXk5eQF5QAD +5uXlAAjmAeUB5gTlA+YABi/k5ubn6APnAAfq7vHz9ff4AAP6ABr59/Xz8e/t +6+jm8vArEvj4/Pz9+vHkAwPk5AMDAQUBBQMDKwIZBAMFFgMBBAECHAQaBbED +AAAB+QE8A/kABTz5+Pk8AAP5AAc8+Tz5+Pg8AAj4AAYf9z099z0F9wAHPij3 +KD72PgAD9gADPvb1AAP2AfUB9gf1ABPg9eD19Wf19SngKfX19PT19PT1AAb0 +AeAQ9AAG8/Tz9PP0A/MABPTz8/QJ8wAK8vPz8vLz8vPy8wTyACDx8UHx8fDw +7+/u7uvqRkbq8PHw8O7u7ezr6+rq6eno5wPmAAPl5OQABAMABQUEAgEBAAgC +BQQFBQYDAAnkA+QDGUMZ5BkAB+QB5QPkAeUB5AflAAPm5eUAA+YABOXm5eYD +5QAu5uXm6Ofq6+nn5ubn6Ofn7O/y9Pb3+Pr6+fn3KfPx7+3s6eXq8+D2+0X8 +/Pv25QPkAAYDA+QDAwQEAysCGQQDBRUDAAMFBAIAHAQaBbEDAAAACSb5+Dz4 ++fg8+AAD+QAKPPn4+fn4+Tz4PAP4AAU9Pfc9PQAH9wAIPvb39j729j4D9gAR +PvX29vX29Wf1Z/Vn9Wf19SkABvUAC+D19eD09fT19PTgAAz0AATz9CrzBPQA +C/P08/T08/Tz9PP0ABDzAAny8ivz8vPy8vMAA/IB8QHyA/ED8AAb7+/u7hPq +Rkbr8fDw7+/u7ezs6+pGRuno5+fmAAPlBOQABgMEBAIBAQgCBQQGBQQDAAot +FC0ULeMZLeMtBeQB5QPkAAXl5OTl5AAH5QAF5ubl5uUAA+YB5QHmBOUACubn +6Ozt7Ovp6OgD5wAh7eLy9Pb4+fr5+fj29PLx7+3rRufn8/b5+vwhRfnq5OQD +AAPkAAUD5AMDBAADAxoCDwEBAgECGQQDBRUDAAMFBAIAHAQaBQcDBQWlAwAA +AAg8+Dz4PPg8+AT5ABD4+Tz5+Dw8+Pg9+Pg9+Pc9BPcBPQT3AAc+9/c+9vY+ +AAP2AAg+9fb2Z/Yp9gn1AAvg9Sn19Sn1KfVAKQADQAAH9EAp9ED0KQAF9AAE +QPT0QAX0AWgD9AAJ8/T08/Tz9PP0AAPzAAb08/P08/QL8wAF8vPy8/MABfIE +8QTwABDu7+7s6kZG7fHx8O/v7u3tA+sAEurp6ejn5+bm5eXk5C0UA+QFBAoC +CAQAEQIEBQMD5AMULRQt4xkt4xnjAAjkABPl5OTl5OXk5eXm5ebm5ebl5uXm +AAflACvm6Ofq7evr6kbq6Ofo6e7w8/X3+fr5+fj39fTy8O/t60bo5fD4+/oh +/PruAAXkBwMABAUD5AQoAg8EAQIBAgoEBAUDAwHkDwMABOQFBAIfBA8FAQQB +BAgFFAMDBZgDAAAB+QE8BvgADDz5+Tz4+Dz4PPj4PAP4AAc9+D099z09AAP3 +AAko9z739z739j4ABfYACfX29vX29fb19gAE9QHgA/UAAyn14AAD9QAW4PVA +9UD1QPVAKUAp9PTg9Cn04PT0KQX0AWgD9AAK8/Tz9PP09PP08wP0AAPz8/QA +CvMACPLz8vPy8/LzBvIF8QPwAB3v7+7u7CzqRu7x8fDw7u7t7Ozr6upG6eno +5+bm5QAD5AEUAS0DAwAEBAIBAQcCCAQBAgEEBwMAB+TkA+QD5C0ABOQACeXk +5eTl5OTl5AAG5QAL5uXl5uXm5ebl5eYABeUALOfn6e0T6+rqRunmA+fp7/H0 +9vj5+vn4H/b08/Hw7u3r6unl6vv39ftF9OUDBeQBAwHkAwMABQQFAwMFADIC +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 +BfMAByvz3/Pf8vMABPIB8QHyA/EE8APvAATt7eztA/IABRLw7+7uAAPsAesB +6gNGAAfp6Onn5ublAAbkAAUU5AMFBAAEAQcEAwUJAwADGeMtAAjkAAXl5OXk +5AAH5QHmC+UAIeTm50bsRkYY6ejm5eXm9O7u8Sr2+Pj39vTy8fDv7ezsEwAD +6wAK6kZG6eno5ubkAw3kAwMBBQQEAAMCAQEAOgIKBAEFAQUZAwUEMwMKBAUF +AQQBBAUFEgMB5IEDAAAHPQQ+AT0FPgFnAz4FZwE+BGcBuhFnA7oAA2dnugAG +ZwG6A2cBugVnAAS6Z2e6A2cABilnQEC6KQZAABO6QED0aPTz9N/zaPRo9Ggq +aPTzAAT0AArz9PTz9PRo9PNoCfMADCvzK/Mr8/Lf8vLx8gPxAfAB8ATvABPu +7ezt3/Lx8fDv7u3t7BPr6kZGAAPpAAPo6OYAA+UE5AAJA+QDAwUEAgEBAAYC +AQQBBAMFBwMABuMZLeTkFAXkAeUD5AAE5eTl5AXlAAPm5eYAB+UADeTl5Obn +6Ovq6kbp6OcAA+UAEu7wE/Hz9vf3KPb08/Hv7u3s7APrA+oAB0ZG6enn5+UA +DuQEAwEFBAQAAwIBAQA6AgoEAQUBBRoDBAQzAwoEBQUBBAEEBgWTAwAAAAQ9 +PT49Bz4BZwE+BGcBPgZnAAa6Z7pnuroDZwG6AWcGugFnDLoBZwe6AWcDugFn +C7oAC2cpQEAqukBAZ0C6AARAAAP0aPQABmgAFypo9Gj0KvP082jz9PRo9PPz +9PP08/NoAAXzAAkr3/Pz3/Lf8isABPID8QAE8BLw8APvACnu7u3uK/Lx8fDw +7+7t7Ows6upGRunp6Ofm5+bk5eTkAwMtFC0DBQIBAQAGAgAEBAQFBQUDAAnk +AyAD5BTk5C0ABuQABuXk5eTl5A3lACXk5OXl5OXn6OrrRunp6Ofl5eTq8uzw +8vX29/f29PLw7+7t7OvrAAPqBEYAC+np6Ofm5eXkA+QDAAjkAQMB5AMDAQUE +BAADAgEBADoCCgQDBRoDBAQxAwsEBQUBBAEEBgURAwHkgQMAAAc+AcwNZwW6 +AANnumcACLoAA2i6aAADugAJaLpoumi6aLpoAA26AWcUugFoA7oBaAO6D2gA +FfMq9Cpo8/RoKmgqKmgq8ypo82jzaAAD8wAHK/MrK9/fKwAD8gTxA/AAKu/v +7u7t7e/z8vHx8O/u7u3s7Ovq6kbp6Ubp5+bl5ubl5OXk5BQtFAMFBAgCAAQE +BAUFBwMABuMD5C0Z4wPkAAoZ5OXkGeXk5OXkDuUD5AAg5ebn6evqRuno6OXl +5Ofw7e/z4Pb39/b08vHv7ezs6+oGRgPpAAXo6Ofm5gAG5AADA+QDAAXkBAMB +BQQEAAMCAQEAOgIKBAEFAQUbAwUELwMTBAYFkwMAAAM+AWcBPgZnAboBQAW6 +AUAEugFoAWgDaQRXAbsBVwS7AVYBuw9WA7sFVwAKaFdXaFdoumm6aAm6AANo +umgABLoACGi6umi6umi6EGgAEfRoKmj0aPNo82gqaPNo82grAAPzABPf89/z +K/Jp8vLx8vHxQfHw8O/vAAPuABft7/Py8kHw7+/u7ezs6+tGGOlG6kbp5gAF +5QAM5OQD5OQD5AUFBAIEBQEAAwQEBQAEAwAL4wMDLQPkA+TkLRkABeQABOXk +5OUD5ArlACTk5eTl5OXk5efo6+rp6ejn5uXl5u7t7vL09vf29fTz8O7t7OsD +6gNGBukACejn5ubl5APkAwAL5AMDAQUEBAADAgEBADoCCgQBBRwDBgQrAxYE +BgUEAwAD5APkAAoDAeSBAwAACGcABLq6Z2cEugFoA1cDuwRWAB6zs7aeOp5r +vLyfvJ+yn5+yyp+yyrKfsp+fsp+8vJ8DvAAFa562nrMABVYBuwG7BFcABmho +ule6aAa6AANoumgAA7oABGi6aLoKaAFpBWgADPRo9Gj0aCpoKvMq3wTzAAlo +K/PzK/Mr3/MABPIE8QPwAe8B7wTuAA/v8/LxEvDv7+7t7ezr6+oAA0YABOoT +6ugD5APlA+QABwPkA+QDBQQABgIAAwQCBAAFAwAIGeMg4yDjGUMJ5AHlAeQN +5QAl5OXk5OXk5ufo6upG6Ojn5i/l5Ubt7fHz9fb29fTy8O7tEyzq6gAG6QHo +AekD6AAF5+fm5uUABeQAAwPkAwAG5AAFA+QDAwUABAQAAwIBAQA4AgAEBAIB +AgkEHQMFBCgDGQQGBZMDAAAABGdnumcDugAIZ7q6aVdXu7sDVgAIs562nry8 +n7IFjgAKtY61QkK1tWpqtQ9qBbUBQgHTBI4ADZ+yn7y8nrazs1ZWu7sABFcA +BWhXumhoAAO6AWgBaAO6AAtoumi6aGi6aGloaQAHaAAO82j082jzaPNoaPMr +aCsH8wHfASsE8gAK8fLx8UHwQfDv7wPuACDt8PLy8fHw7+7u7ezs6+tGRunq +6+3t7Ebp6Ofm5BnkRAPkAwMHAgAQBAIEBQMZLQMDLRTkFC3jGQbkAAfl5OXk +5OXkAArlACXk5eTk5eTk5udG60bp6Ofm5uTl6O3t8PP19vb08/Hw7uzr6upG +AAPpCegABefn5ublAAPkAQMJ5AAGA+QD5AMFBAQAAwIBAQA4AgAEBAIBAgkE +AQUcAwQCJgMcBAYFkwMAAAO6AA5oaGlXu7tWVrO2nryfsgOOAbUBQgRqAAds +amy0bLQxAAO0AAMx1rQACn4B1gHWA34G1gAFMbS0bLQAA2wADmq1tUK1Qo6O +n7K8Op6zA1YBuwG7BFcGaAG6BGgBugFXBWgBaQNoABFpaGjfaGjzaPNoaPPz +aPPzaQAD8wAGaPMr3ytpBPIAB/HxOfFB8OIAA+8AEu7t7vDy8vHw8O/v7u3t +7Ovr6gNGAewB7gPwAAjv7+xG5+XkGQPkAAUZAwMEBAAFAgADBAIEAAUDAAfk +FAPkLRQtAArkAATl5OXkCOUAKOTk5eXk5eTk5ufp6urp6Ojm5uXl5+rt8PP0 +9fX0K/Hw7uzr6kZG6ekF6AAE5+jn6APnAAbm5uXl5AME5AEDB+QBAwHkAwME +BAADAgEBADgCAAQEAgECCQQdAwECAQIoAxwEBgWTAwAAAApXu7tWs7aea5+f +A44DtQAKamxqbDG0Mda0tAZ+AAZYfn5YRFgHRAAD40TkAA1EAAXlRC4uWAAE +fgAEL9bWtANsAAxqarW1jo6yn7y8a7MDVgG7BFcEaAG6AboGaAADumm6AARo +ACTfaN9oaWjz82gr8yto8/NpK/Np8yvyK/JX8fJX8fESQfDw7+8D7gAV7fDy +8vFB8O/u7u3s7Ovq6kbpRuzwAAXxAAXv7Ebo5QAF5AAEQwMFBQUCABAEAgQF +5AMD4wMtAxTkIOMZA+QACxnl5OXk5eTl5OXkAAnlACbk5eTl5OXn6OrrRuno +5+bl5eZG7fDy9OAp8/Lw7+3s60ZG6eno5wPoCOcD5gHlA+QAAwPkAwAK5AAE +A+QDBQQEAAMCAQEAOAIABAQCAQIJBB0DAQIpAxwEBgWTAwAAAAeztryfyo6O +AAO1AAhqamxstDHWtAN+AAhYWER+WFhEWANEABNYQy1DQy1ERC1D4y1D5C3j +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 +A+QAC+UZ5eTl5OXk5eXkAAPlABbk5OXl5OXk5OXm6EZG5+bk5eXm6+/xA/IA +CvHv7uzrRkbp6OcE5gHlAeYI5QHkCOUD5AEDDeQBAwHkAwMEBAMCAQE3AgAE +BAIBAgkEAQVEAwQECwMPBAYFkwMAAANYABC0VFWMnIuLmJihmKGop6inA6oA +CKinqKeohqinA6gACaeqp4anqqqGqgAEqAADp6qGAAOqACqooaiqqKeoqqeo +qpmqmYSomaqqqJmqqouLmKGYmZiurrBlVVQvWC4tLkMDLQAJQ0RDQy3j5ERE +AAN+ABUxbGpCjsprnlZWu7tXV2lX31ff31cAA2kACt/f8mny8mk5V/IE8QAJ +QeLv2O4/7u0/AAPyAAvx8O/vP+7t7OwyEwAE6gAG8vHy8/P0A/MACPLxEu7r +6OblA+QAEgMFBAICAQQEBQMD5AMDFOTkAwfkAAjl5OXk5eTl5APlAeQD5QAg +5OTl5OXk5ufpRujm5eTk5+7w8vIr8vDv7ezqRuno5+cD5g7lAeQE5QHkAeUE +5AADA+QDAAjkAAsD5OQD5AMDBAIEBAADAgEBIwIHAw0CAAQEAgECCQRDAwYE +CwMPBAYFkwMAAAAEVbGciwSZAAyqqKqoqJmoqJmoqqgDpwBPhKeop4Snp4Sn +qKeGUIaqhoanp6iohKiqhqqohIaqhIaGqIaGp6eqp6iGp6qnqqqYqKqoiouG +mZmYmZiZmL2YmK6Lr41lVDFYLS1ELS1ELQADQwATRENYRER+L9ZsarWOjp6z +fVa7uwAGVwNpAVcDaQALV2ny8lfxV/FX8UEAAzYBMATuAA/y8vFB8OLv7u3t +7OwT6ywAA+oD8QHzAfMD9AAU8/Ly8fDtRufl5OXk5AMEAQICBAQFAwAI5AMD +5C0ULRkE5AAJ5eTl5OXk5eTkAAPlAAXk5eTl5QAD5AAM5ebo6unn5eTlRu5B +A/IACvHv7uzrRuno6OcD5gjlAA7k5eXk5eTl5OXk5eXk5QPkAAQD5OQDC+QA +CQPkAwMFBAIEBAADAgEBIgIJAwwCAAQEAgECCQQ+AwsEDAMOBAYFkwMAAAGr +AZgDqAAPmKiomaqoqKeoqKKnp6iqAAOGACiop6Knp7ejhLejp4Snp6OEhKeE +p6OnoqOEhqejhpKphKeEp4anp4SEA6cABoSnqKqrpwOqABiZi4qZmJmoqpio +i5mZi4uZmK6vsJ1VtFgGLQAUQ0NEQ0NEQ0R+frRsarVVn7yzs1YDuwRXA2kA +G1fyaWlXV2lX8fI58UFB4u/YMO7tPyvy8fHi7wAD7gAF7ezs6+sABOoAF/Dy +8fP09PP09Cvy8fDv6+nm5eTl5AMDAAMEAQUFAwAF5APk5AMACOQABuXk5eTl +5ATlACHk5eXk5eTk5eTl5+hGRufl5Ofs8PHx8vHw7u3s6kbp6OcAA+YE5QAU +5OXk5eTk5eXk5eTl5OXk5OXk5eUE5AAFA+QD5AMACeQACQPkAwMFBAIEBAAD +AgEBIgIKAwsCAAQEAgECCAQ/AwoEDgMNBAYFkwMAAAATqKqop5mEp6inhKei +qKK3o6enqAADpwAEhKeEpwOEADCnt4S3p4SRXYSSp4SEkoSEkaOEkqOio6en +eISEdpKEhHanhIZQhoanqqiGp4a9vaoEhgGLA6oDmQGoA5kADZiYma6YrrCc +VbQuWC4AAy0AFENDLQND5ENERH7WbGy1jrK8s1ZWA7sEVwAM8ldp8lfyOfI5 +V/E5A0EAHFY2Pz/u7vJX8UHwMD/u7e3s7Ovr6upG6u/z8vMF9AAR8/Ly8fDt +LOfl5OTl5BQFBAUABQMABUMDA+QDAAPkAQMD5AAf5eXk5OXk5eXk5eTk5eTk +5eTk5eTl5ufp6ujm5kbtEgAD8gAMEvDu7OpG6ejn5+bmBeUACuTl5OXk5eXk +5OUD5AAE5eTk5QfkAQMM5AALA+TkA+QDAwQCBAQAAwIBASECCwMLAgAEBAIB +AggEPwMKBA8DDAQGBZMDAAAABL2hqKIDqAAkp6ejqKGop7eno6ehp6eGt4S3 +p7eTqXaSqXiSo5KSo5JzkqOEBJIALZCSo6ephHa3hJKEhHOpqainhIaErKGY +qqKEqKqKrIaGUKqnhqiGp6iomYuZhgAEmQAKq5mYma6vjY5mLgMtABVYLS0D +QwNDRORE5H60tGq1jrKzs1YABbsABVc5aWnyAANXABNp8bs5u0E2QdgwP+62 +OfI5Qe/vAAPuAAXt7BPr6wAD6gAFRu7z8vIABfQACvPz8vHx7+xG5uUD5AAD +LQUFAAQDARQDAwAF5APk5AMAB+QAG+Xl5OXk5eXk5eXk5eXk5eTl5OXn6Orp +6Ojs8AAE8QAL8O7t6+rp6ejn5+YAA+UABeTl5OTlAAbkAeUP5AAFA+QD5AMA +C+QACQPkAwMFBAIEBAADAgEBIQIMAwoCAAQEAgECBAQjAwECHwMFBBQDDAQG +BZMDAAAAGqGop6eop6Ono4Sgp6Kho13FhKmIhLephJGRBJIAUXOTkpOTkYKT +gqN2k5KTknORXZCSkaOpt5KFdnaEqXaEk3Z2t6mphqqooamphIWEqYS3p6eG +qKqoqoaKhpmZqqiZqJiZi5iZmJmumK+cVbQuIAAELQRDAA9EQ0REfn5sakKy +vLazP1YAA7sACjlXV/JX8VdX8vEDQQAaNjbi7z/uQfLxQeLv7rbta+wy68rq +Rurq7/ID8wAV9PT19fTz8/LyEu8T6ebk5OXk5AMFAAMDAAotA+QDA+QD5OQZ +BOQAKuXk5OXk5eTk5eXk5OXk5eTk5eTl5ujp6Onr8PHy8fHw7u3r6kbp6Ofn +5gblAeQB5QPkAAPl5OUAEeQAAwPkAwAO5AAGA+QD5AMEDQIFBRUCDQMKAgAF +BAIBAgQAJgMBAiADAwQWAwEEAwUKBAUFBQMBBQEFigMAAABXqoaqhKKnp5KE +kqeEp6eSkoSSk7eSeHZ2kYSSkoKRkaOjk5KRkpKTo7eFo6eSkpGSkJGSp6mF +hXh2hJJzdpN2k3N2doSEhoiphHajhJKEhoaEhoWnhoaqAAWGA6oACZmoiqqq +qJiLmAADiwAKrrCcVbRYLkRDQwMtAUMBQwNEAAp+tGxqtY6ynrOzBLsAJzm7 +8ldp8bu7Obs5QTZWMD/uNvI5Qe8wP+7t7ewT6+vqN0ZG8PLz8wAD9AAM9fX0 +8/Py8vHx7uvnA+QB5QHkCAMABeQD5OQDAAXkAAfl5OTl5OXkAAPlAAPk5eUA +BOQACuXl5OXn6Onq7vAD8QAL8O/t7CxG6ejn5+YABOUE5AHlGOQABAPk5AMO +5AAFA+QDAwQADAIGBQEDAQMTAg0DCgIABAQCAQInAwECAQIfAwEEAQQXAwEE +AwUKBAUFBQMBBYsDAAAAGKiEhLeEp6OhhJKjp7ejkpKRdoKCp5KWkwOSADWC +f5CSo6OEkpKno5KjkZKTkoKmkZCRkbejloV4kniEk5KTk5Fzk5N1eIaop6mp +drenqaOpdgADqQANqFCGhYSGqIaGp6iZhgADqgARmaqYqIuYmZmYmZiLi41l +Zi4AAy0AFSAtQ0MtRENEWH7WbLW1n7yzfVa7VgAFuwA3V/G7OTlBVjbYPz/i +afJBNtjuOjrs7DLryurqRjfi8fPz9PT14PX19PPz8vLx8O7q5+Tl5OQD4wAF +AwAF5APk5AMABeQACuXk5OXk5OXk5eQD5QAb5OXk5eXk5eTm6evu8PHy8fHv +7uzrRuno5+fmAAPlH+QABwPk5APk5AMAC+QBAwHkAwMDBAkCAQQGBQAHAwMC +AuQD5AAEAwoCDQMKAgADBAIBACgDAQIBAh8DAQQBBBgDAwUDBAEFBgQLBYsD +AAAAH4SikreSt3ajp6eSkpOQkZKSpnORoqeTkpOSpJGCcJEAA6MAMJKQkYSS +o4KCpIJ/ppGRkn+EqYiTc3aWk6aTcZGCgpKDg5aqvaqnoqmpkoWTqXh2lgSE +ADWGhYi3hqeqrJqGp6qGmYaZqoaqmYtSi5iZmJiurp1VZlgtWEREQy3jQ+NE +RFh+bGq1n7w6tgADVgADu7tXAAO7AB45u0FBNjbYMD/xVzniMD/u7Wvs6+vq +RurqRu/y8ioD9AAGKfX1QPPzA/IACfHx7urn5Bnl5AADAwAG5APkA+QDCOQA +Bhnl5OXl5APlA+QAC+Xk5OXkA+XoLO7wAAPxAAzw8O7s6kZG6Ofn5uYE5Q7k +AQMF5AADA+QDAAbkAAUD5APkAwAQ5AMDAQUDBAgCAQQBBAYFDAMJAg4DCQIA +AwQCAQAoAwMCOQMHBQUECgWMAwAAABujo6eSkpHFkrenqZKRgpKmgpOSkKOS +kX+DkJEAA4IAB4OSkJKkcpQAA5IAN5OTkpGTgpCCppOTkpZ1dZOTg3Wmf4GC +k4KWcnGWrJaFk8K3woWTkpF2hISFhXlQeIhRhqdRhqgAA4YACb2KmayGqqiY +mQADqgALmYaLmJiZi6+cVS4ABC0ABUMFLePjAANEAAl+MWwzjryes7MAA1YG +uwAdQUFWMDA/QfK7QTDutu3sMuvqyurryuru8fLz9PQAA/UAB/b19PTz8/IA +A/EAA+7r5wAE5AUDAATkA+QDB+QB5QTkAAPl5eQABOUBRAPkABjl6Ovv8PDx +8fDv7uzrRkbo5+fm5ebl5OUR5AAEA+TkAwTkAAMD5AMABOQABQPkA+QDABDk +AQMBAwMEAQUIAgEEAQQGBQ0DCAIOAwkCAAMEAgEAKAMDAjkDBwUFBAkFjQMA +AAAHo6Oio5JwfwADkgBggoOSc5Fdo3GEvamTc3+SkYSEf5GCpIKkkZKCkIOC +kZCRf391g5GQeKZzg4OmoqeWeINKdXJyg5SCg3KDgpOTeJaWkpF4kniSeHZ4 +qXanS3aFeKmqvYaFiLmIolCGhqmKA6oBigOZAA6YmYuLq4uZr51mWFhDLQRD +AEsD4+REftZstY6fvJ5Ws1a7u0G7QUFWNuI/P1Y58UHvP+7taxPrLOpGLBPq +a/Ly80D19eD19vX19PTz8/Ly8RLv7Onm5RkDA+QD5AMAC+QB5QHkA+UAA+Tl +5QAD5AAYGeXoRu4SOfHxEvDu7ezrRkbo5+fm5uXlCOQAAwPkAwAD5AEDA+QB +AwPkAQMD5AEDBuQABgPkA+QDAwPkAQMM5AEDAeQDAwADBAIEAAgCAQQBBAYF +DQMIAg8DCAIBBAECKQMEAjgDAQQBBAUFAQQBBAYFEQMB5IEDAAAAJYKRkpGR +kH+CkZGmgoKmgnWCf5GqkpJ/g5CTo6ORk4Kkg5Gkpn8AA4IAA5ORkAAEggAQ +k5KDpoJygoKWpnWmdYOCgQODACZxg3JzgnKDk5KXdZaFeJZ4hYWpUIWEeISF +hamprE54dkt4hoSErAOGAAiop4aoqqqZqgSZABqLmZmujWW0WFgtAwUDIAMt +5ER+tGxq05+8swNWAB82Vru7NlY2VjA/QTlB4u/uOuwy68rq6uvsLO3x8Wn0 +AAP1AfYD9QAX9PQq8/Py8vHx4u1G5+Xk5APkA+TkAwMACuQADOXk5eXk5eTl +5+rt7gPwAA0S8O/u7ezqRunp5+fmAATlBeQBAwjkABgD5APkA+QD5APkA+QD +5APkA+QDA+QD5AMD5AEDDeQACQPkA+QDAwQCBAAIAgEEAQQGBQ4DBwIQAwcC +AQQBAiwDAQI4AwEEAQQFBQEEAQQGBZMDAAAAWoKSknCQpHKCf4N1kXOCkX+D +XpGTkIJ/f4KToqmRkpCQcJGCgn9/g6STkpB0kZCCg4KDdaaBgqSBgYKUeHWC +f3+DpIKDgnJ0lIN3k4OCqad4qaN4iKGohalLTAN4ACmWhXh4dpKEqaiGhqqG +p5momaqoqoaKhoaZhqqGmZiYrrCdZi4tIAMCBQADQwALRER+tGy1jp+2s7MA +A1YACEG7QTbYPz/iA0EAFDA/7uzrnyxG6p/s6+1B8fLzQPX1A/YABPX19PQD +8wPyAAjx8O/r6S/kAwPkAQMD5AHlBOQABC7l5OUD5AAG5efn6u3vBfAACu/u +7ezs6kbp6OcD5gPlBuQAHAPkA+QDA+QD5APkA+QD5APkA+QD5APk5APkAwMD +5AQDAAbkA+QD5AML5AEDAeQDAwADBAIEAAgCAQQBBAYFEgMDAhADBwIBBAEC +ZQMBBAEEBAUDBAYFEQMB5IEDAAAAgpCRo5Bwk4KCcYJ/f4F/cX+DgY+CkpGS +g3+So5OCk6SCgn9/gaR/gaSCg3eCcIOCg4GRf3OSf39egYJ3k5RycKaCg4Jy +dXR1dYJzk5aSo6dzdZZ4hYV5lniSk3WWlnaThZZ4S6KFqbeEqYSqqKinqoao +hIaZqpiLqJmZmJmrmK6vjWUDWAASREMgBENDREQu1my1yp+es1Y/BVYAGNi2 +P7vxQdg/Omvs68rKRusyE+3w8PHzQAP1AAP29vUABPQE8wAU8vLx8fDvE+nm +5eQU5OQZ5BkDLRkE5AAb5efp6u3u8O/w7+Lv7u7t7OvqRuno6Ofn5ublAAXk +AQMK5AAOA+QD5APkA+QD5APkA+QGAwHkBwMB5AEDEeQABwPkAwUEAgQACAIB +BAEEBgUUAwECEAMHAgEEAQJlAwkEBgWTAwAAAXADkQANkpGgkF2CcHKkg39/ +pAADfwBxt6KWeIOSeJJwkX9/c3+Rg4GApKSCk5SBg5FwdH9wgpGRgnSkdJSW +g5SBkYGRgnKCdHKWknZ4eYOmhXhxgXV2dXF3dXd3dXWThLd5eHh1loSploh4 +hISGioaop6inhlCqoaqohpmZmIuhmJmuma6NVS8AAy0BIAEDBEMACkR+MWq1 +jryes7MFVgAYtj/YObs2Pz86Mp/qN+rrEzLs4vDx8fP1A/YAB/X19PTz8/QA +BPME8gPxABLw7Ubo6Obk5eXm5+fo6ers7e8D8AHiA+8ADu7u7e0TLEZG6ejo +5+bmA+UD5AEZBOQAHAPkA+QD5APkA+QD5APkA+QD5APkA+QD5APkA+QDAwAF +5AMD5AMAA+QABgPk5APkAwrkAQMB5AMDAAMEAgQACAIBBAEEBgUmAwYCAQQB +AmUDCQQGBREDAeSBAwAAAIB/j3+CgpOSkoKlgn9wf4KSkHCkpKGno6CSdIOm +kpGSeKRxf4N/gl5epH+Dg3KDpYNwXoGRpIKUdIOCg5Z0goKWdYODc4JzlnmE +p5ZzdXaWkneDk3mWdHiSdpaDeKl4p5d5dZNziIV4k3iWhYmpp6eGhlCphqyG +qr2YmJmZmKqLqAOLAAevjbJmWC4EAANDAA4FA0NEWLRstY68nra2swM/AB2z +trtBNtg/tjrsn+o3658TMu/wQfHyKvX19vbg9AAD8wAI8vPzK/LzK/ME8gXx +BPAAB/Hw8EHwEvAABu8ADu7t7Ovq6kZG6ejn5+bmA+UJ5AMDAAfkA+QD5APk +ABYDAAvkAwPkA+TkAwPkAwAL5AAEA+QD5AMDAAQFBAIBCAIBBAEEBgUmAwYC +AQQBAmUDAQUBBQoEBQUFAwMFiQMAAAA0kX+kf4KmkXKRXZCRkIKRf6SkkKOp +p6eSkX+mt5KTkH9/gpF/f15/pICkvoF/gaSBf3GkcgSDAEt0g5SDkpOUlpCU +g3KCdZOWqYWSg3WWdYJzlnd3eHJ3dnWWdXaiqYh4k3V4k3hLc3iTc5aWhqNQ +iaeGhIWGhlKGipmKmZmKwJmLipkAA4sABI1VZi4DLQAOAwMFQ0REfrRsNI68 +nrYFswALP0FWNj+2OjLrysoAAzIADezY7/BB8d8p4Pb19fQABfIB8QXyAATz +8vIrBPIAB/HxQfFBEhIAA/AE7wAP7u7t7BPq6kZG6ejn5+bmAATlBOQMAwAD +5APkAB0DAAvkA+TkA+TkA+TkAwAJ5AMDAAUFBQQCAQAIAgEEAQQGBSYDBgIB +BAECZQMBBQEFCgQFBQUDAQUBBYoDAAAAfpKkg3Bwc5GDgn+Rf3+RkZKmkZLC +hKOTkpOClqineJBxppOng4GDgZGPj3+kj3+Ccn+DdIGDgoNxgqaDlIKDkoOT +g4OUcnV4eKJ4hHJ1g4Jyk3eXd5aWd3WCd4NzlnhzdZZ3loVzd5OTdpZ4hYWn +iIiGiKlQhFCEqqqoUpmGqAOKAYsBqgOLAEGZi7BVLy1DAwNDQwMtQ+V+tGq1 +n7y2nra2nj9WNj8wtrZrMizKMp/r7O8w4jbw8vP09fX0KvLxQfAS8RJBEhLx +8QAG8gTxAAMS8PAAA+8B7gPtAAns6+vqRkbp6egAA+cD5gPlA+QDAwEFAQUF +BAADAgQFABEDAQUBAwQFAQMEBQQDAAzkA+TkA+QD5APk5AMH5AALA+QD5OQD +BQUEAgEACAIBBAEEBgUnAwUCAQQBAmUDAQUBBQMEAQUGBAwFigMAAAAHf3+C +gnGRoAADkQAnf4Kkf4ORf5O3p5LFkcVzbnGTgnFwgYF1lKaWgoNwpI+Pf6R/ +cKRxAAODA4IAA6aTcgADgwADkn+TAAODADt3dZR1lpd4lpSWeHd2d3V2eJZO +g3J3d16TdZF2knV1lpd1dU6Sc4eXiKq9hIiHeHVzeISGp4ashqqqpwAEhgGL +AYoFiwAFr41lLy4AA0MALi0DLQNDLn4xakKyvJ6etms/P1YwPzo6vJ83nzLr +azDY7+I28PIqQEAq8vHx7+8D7gAD7+7uAAPvAAXwEvHw8QAD8AAD7+7uAAPt +AAbs6+rqRkYD6QHoAegE5wHmA+UD5AUDAAQFBQQECAIABAQFAwMNBQoEAwUD +AwAJ5APkA+QD5OQDAAPkAQMI5AMDAAUFBQQCAQAIAgEEAQQGBScDBQIBBAEC +ZQMHBQUEDAWKAwAAAEN/goKgkIJ/goKQf4Fwf4KkpIKRo5GSxYKWgqSCpI+C +gqRypYKCoJOCj6SPgW+Bg4J/dYGDgoKDlHWkg4F3pn90gYNyAAOUABqCd5Z3 +g3l4eJeWd3V1TnmXd3SBcpZ5lqlzdgN1AAt3eKmWk5F4dZOHhgADeAAOTHJz +dnaphomGqqiGUoYDigADqoaGAAOLAZkDiwAIjVUvLSAgQwMDQwAIRH60bLWO +n7wDngAVs1aztj86MjI3yjJra+4w7zDv8PDyAAPzAAXy8e/v7QAF7AftBO4A +Ce3t7OvrLOpG6QAD6APnA+YB5wHmBOUE5AAFA+QDAwUAAwIBAQEBCAIBAQEB +AwUBBAEECgUFAgUEABIFBAUDA+QD5OQDA+QD5OQD5AMH5AAKA+QD5AMDBQQC +AQgCAQQBBAYFJwMFAmcDBwUFBA0FiQMAAACEj3+RkYNecpKpcYF/goOBcYOX +kpGQvqeTj3+RkYKApnJ/kqKWk3+Cj3+PgYFyg3SDdZZ1d4N1c5aWdXWCk5OD +g4GCgoOCc5F4lpZ1lJSWo5JMeXd3enmDd3KClHV5qsPDq3Z1uUx5d5aWdXNL +g3N1hHZ2TKl4hVCIrKmGiIasqoaqiqGZA6oBiwGZBYsABZxVtAUtAAVDAAkD +5FjWbGrTnzoAA7MAIFY/s7a8vJ83nzLtMO8/7j/YMPDx8vLx7z/t7Ovr6urr +BOoF6wHqAesD6gAFRkbp6ecABeYD5QHmBOUG5AAHA+QDAwQBAQAEBAoCBQQF +AgMEAAMCAgEAAwIAAwQCAgADBAAOAgQD5OQD5AMD5OQD5AMM5AAHA+QDAwUE +BAALAgEEBgUoAwMCaAMYBYoDAAAAJ39wgZKTcH+ihIKWkZODg6Cmg5F/kJGW +g4GkkpGmgn+BgnKSgpOkfwADpAAIj4GCd3R3lpYDdQAgg3V1d4OTdYKWk4KD +lneXlIODlJOSg5aFloWWeHd6d3cDSgAOcnKXl4WKvcfGzKeWeJYDdwBKeJZ4 +l4NOo3h4lnh4hYeFhYaGqaqGhqpSrKioqoaqiouKmYuKi6+wnFVYLS0gAwUD +Qy1EfrRstY68nrazP7a2OjKfN5/sa+7uMD8D7gAMP+9B8fDv7uzq6kZGCukB +RgFGA+kE6AHnAeYD5QHkA+UB5AHlB+QBAwPkAAkDAwUEAQECBAQAFQIBBAEE +AwIBAQMCAAMEAgIABAQEAwAN5APkAwPkA+TkA+TkAwAG5AAGA+TkA+QDAwQL +AgEEBgUoAwMCaAMYBYoDAAAAeaSkkIKggoOUg4JdonWDgqZ/goGApH+SgVuS +kZaTg3KBgaSSgY9ygoJ/f4F/f3WWlnWWc5KDg5Z1lHeDd4JydZd1g6aSknWU +d5Z6lIejp5d3d3V3Tnl3dYOUdJN5loeFmavDiIiYqHh1ek1OdnlNlIeWdnh4 +kqmHhYUAA4YAEoeEqYiphayGhoqGhqqZi4qLrQOLAAiunWZEQwMgFARDABNE +ftZqtbK8njqeOmu8n8qfMmu2AAM/AA7uOrbu7j/v4j/t6+pG6Q/oBOcB5gHm +A+UAA+Tl5QAI5AAQA+Qt5OQD5OQDAwQBAQIEBBUCAQQDAgEBAQEDAgADBAIC +AAMEAwMADuQD5OQD5OQD5OQD5OQDCeQABwPkAwMFBAQACwIBBAYFKAMBAgEC +aQMWBYwDAAAAjJOBf5Gikn+Bg3+SpIGBgqSSxaSkcoKmgn+DcXSDl5SBkYKS +g5SDg4J/f16CpoKTc5OWdYKCcoNxdYOWd3WUlnd4lniik5Zxg5aUlHmphXqX +c3OUd4d3dZZ4eHWWeHmUTIeshqzLuIuphVBOUHeXdZaThKZ2k6mWloWGUIh4 +hYWEhoWsiKxQrKiqqKqYBIsAMYqLr6+yZlgtLQQDAyBDLUTWbLWOyp5rOp46 +n583nzLt7j/utu3t7Gvt7u3t7MpG6egABOcACubn5+bn5ubn5ucF5gXlAeQB +5QvkAAQU5APkBAMBBAMBGgIDAQMCAAMEAgIAAwQBBQMDAAzk5AMD5AMD5APk +5AMJ5AEDAeQEAwEEAQQLAgQEBQUFAwEFAQUgAwECaQMWBYwDAAAAD5GDgZKW +qXCPcKCRpIGkkgADfwCKgpGmk6Bxf3SBgXKTlIOUlpNzk6Z1lnKDgYKDcXKR +dXWDdZSDlF6UcnWWdHZ3lJSXlql4ln+Dg5SUeHmWeHdyc3WXdnh5eXh4dXWU +k5all3qRToRQi5uruItLSUx1c5K3krd4eXl4hbmpiXipUIiGhlCphayJhqmK +hqpQioqLiq+KrouNalgtIAMEAwMACC1EWLRqtcqyA7wDnwAMyp86tu62Omvs +n+vrA+wABuvq6ejnMQ/mBeUABOTl5OUF5AAQLeTkA+QD5C0D5AMD5AMFBAMB +AAMCAgEACgIFAQcCBAEDAgAUBAICBAQC5APkAwPkA+QD5OQD5AMD5AEDBuQB +AwHkBAMDBAsCBAQFBQUDAQUhAwECaQMVBY0DAAAAeKSkj4/Fo6B/wpd0paSk +j3+Pj3+gf4KDgoJwgXSjo4NxgYKEppJzgnKCcnSBg6SWdYGTk5SDg4J/kpaT +kqmQc5N1lpZdg3ODg3V1eZZ1lnd1lpdNdoR4eZeEhE6HTnl5lpOWgnN5cl1Q +mMfGz8ermKqEp4V2iJZOdQN2AEh1hIapeUt4had4hVCFhqeGUoqKwIuqra2K +i5munFVYREMDLQQCQ+REfjFqjp+fvLyfn8rKa7Y/Omvs7DLrLMosyjdG6ejn +5uYS5QnkAAwD5BQt5APkAxQtA+QDAwADBQQEAAUBFAIIAQQCAQUGAwAL5APk +A+QD5APk5AMADOQAAwMDBQAPAgMECwWLAwEEAQQFBQEEAQQGBREDAeSBAwAA +ABV/pIF/kpKipJGgpKSCgpKkf3+BkX8ABIIAe3+CgoOWgn+SppKCg4OWg4N0 +g4Nyg5OCf5ODg5Z0daR4k3eEhXWDeZZzlnd6g3V6coOWl3WWcndciHhLTU10 +dHeHd4hLUEp1cl6CpnWWqYWnp5i4x8/Gx657qaeWTnl3hIV2ck6HiId4iIWH +hoWFiISGhlCqUoqZmYuKigADiwAHrrBVZkNDAwAFQwAfRES0bLWOn5+8n8rK +vO0/Ou3sMuEs6kbTRunpaufn5gAE5QAD5OXkAAPlAeQH5QAD5OQtAAbkAAsD +5AMtFOQDAxQtFAAFAwADBQQEAB4CAQEBAQQCAQQBBQMDABPkA+QDA+QD5APk +A+QD5APkA+QDAAXkAQMB5AMDDwIDBAoFeQMBBBIDAQQBBAUFAQQBBAYFkwMA +AAAQf3+QkH+QoIKCpJGkgqOjkQN/ABRwg3KCg4Jyg4OWlIODgpKjpoODcgOD +AGiUg3Vwk4J/g5OWg4OUd5OTdbeEdZKFeZN3l3V1eINyd4OWloWEhYrMx8OY +Sk9Rk3LAuMvDuIRLSUp1g3V1loeHl3eGmczHuKqTlnaWTnl5UYd3d4dQUHin +UYiFUIV4qVCphqyKiomtUgSLAAqKmK6wsGpYLS1DAwUACENERH4xakKOBMoA +IZ9rtu1rn+vrN0ZC6TPp6Ohs5n7l5OXk5eTl5OXk5eXk5QAI5AAQ4+TkLeQU +LRTkAwPkAy0D5AUDAAMFBQQAHgIBAQMCAwQHAwAJ5OQD5APkA+QDAAnkAQMD +5AQDDwIDBAkFeAMDBBIDAQQBBAQFAwQGBREDAeSBAwAAAISRf5CQpJGSoKSC +cJCkpYOCg5F/gnKBkYKmloKDcoGDgYKWl4KDgpGCd4OUg5STlpOmlpKWloOU +dINNdYV6g3OSk4OCkpKWdZOTpoV1dE2WUbjR3tLUuKp2d4Sr0Qfdv8/Dq6qE +hXhMTk96endJToSnhoiplpZOeHmFhHh3S4iihHa5qIQDhQAkdnapqYiGqYqK +qqqKiq2ZmYuLmJmwnbQtLQQDQwMDQ0QutGy1BI4AFjefa2sy6ywsykbpauhs +5+fm5uXl5OUR5AAMFC3kLQMZ4y0ULQMtAwMBFAUDBQUFBBwCAAMEBAUAAwMB +5AMDABDkAwPkA+QD5APk5APkA+QDBeQAAwPk5AADAxACBQURAwHkbAMDBBID +CQQGBZMDAAAAho9epJFwo6KEpIOkkXB/go+BcoN/kX+QcoKUpoOBdHJ/gXKm +coOCcnKTdYOTdZOTlpOTepN1dXeUdF5ehIJyg3hzd3d6ek5zdoWIhoqZmcPH +1P44ONLRxqtSU8PXvzu/0tfRz8bHx8O4q5mKhoaEeYSphUt6TZNLdnqHTk6W +UYiHeFCIiIeFA3gAGYVQt4WsrFCKwZpSwYqtiouLmZmLjVVYLS0AA0MAGAVD +Q0R+bLVCRo6OyjJr7DKfyjfTM+jn5wTmAeUB5RDkAQME5AALFOTkA+QgAxnj +GeMABwMEBQEDAQMZAgUEAAUCAgQEBQAGAwAN5AMD5APkA+QD5APkAwAF5AAL +A+QD5APkA+QDAwUAEAIFBX4DAwQSAwkEBgURAwHkgQMAAABLgaSgkJCRxaOC +kZGQkaOBj3+Ro3ORkXGBgaZ0lH9/ppKTlnXFgnSDgpN1loOUeISTkqendqaD +lHaTgnd4d5OWdXeBllFShri4x8fRAAPXAAm/0t3dv9e/0tcAA9IAOb/e0r/S +0r/S3t7S0r/S0tfX0df7vYajipmoqEuFhXl5h3ZPp3l1eYeIh6mFhXV5halL +hoWpiqyGUgAEigADi4uKAAOZAAaLsJ1mLS0EQwAbBS0t5dZstULT08q8n5/K +6jRG6TVsMX7m5eVEAA3kAS0F5AARA+QDLRQD5APj5AMtAwMUAwUABQMFBBkC +AQEDAgAFBAICBAQABQMB5AMDAA/kAwPkA+QD5APk5APk5AMACOQABAPkAwMR +AgQFEQMB5G0DAQQBBBIDAQUBBQoEBQUFAwEFAQWKAwAAAFGRpYJ/kKSkk6Zy +kZN4k4GCgpKRkoGDgYJ3goKDgYGWgpKDkpKWg5GSc4N3goOTkXV4kql5d3d1 +k3mphZaXlpd1XqeGmcPPB93Sv9c70ji/OL8ABNIAOL/S0r/S3d6/0tK/0r/S +v9LSv9LSv7/S0r/Rw4q41M/Dq05NXUuWeYhzeEt4eYVReHmFloWEhampBIYA +BYqsUqyaAAOKACmLi6+vi6+LjWYuRC0FAwQFQ+MufjFqQkKOn5/Kyo5GQmro +5+bm5eXk5QAL5AEDBOQADwPkA+QDLRQt5AMZLQMDFAAFAwUFBQQcAgADBAQC +AAMEAAQFAwPkBAMADuQD5AMD5APkA+QD5OQDBOQABwPkA+QD5OQAAwMRAgQF +fwMBBAEEEgMBBQEFCgQFBQUDAwWJAwAAAB+joqSkkJGSpqR/cJKno4J/gpaD +cJFykqaRkXKDgpGSAAOWAC6DeJaWeHWDg4GBXpaTlJaTl3V0g4J/g5R3lnVK +eKq4x8/X0r/S0r/Svzi/0tI7A78ADdLS17/S19Lev9K/0r8ABdIBvwPSAEm/ +0r/S0r+/x8a/0r/Gq4RRT05JdUt2dod4eXmEeE6Fh4WIUISFrIaKhopSiYpS +moqZmYuLq62Li41VWCAtICBDQy1DRH60bGpCAATKAAdGQukzbDHWAAPlBuQB +AwfkAA8D5BQt5BTkA+QUAwMUA0MABwMBBQEDBAUGBBsCBQQBBQEFBAMAA+QD +5AAEAwAJ5AMD5APkA+QDAATkAQMH5AMDAQURAgQFEQMB5G4DAQQSAwEFAQUK +BAwFigMAAABNhJGSj6SRppKCgYGTk5KBlKORo5F1kJGWg4OkgoODopGSgn9/ +gpZ3k3WDgqSkk4KDlJJ1dZN3hKeSdkxOhqvH0Qfd0tK/0r/Sv9LS178AA9cE +0gBr3tLXv9K/0r/S0r/Sv7/Sv9LSv9LSv9K/v9K/0r/X3r/e0tHGuKuLhlKo +UIZRiHmHUXZ1p7eIhYSphamIiFKsiqyKrIqKwIqKUpmti5mvi5xmLUMDBQND +LUMtLtZsakLK0zeOQkLpbOfmfuUABOQAFAPkA+QD5APkA+QD5APkA+QD5AMt +AwMABS0DGQPkAAQDAAQFBQQFBAQfAgAFBAQFBQQAAwUJAwAb5AMD5APkA+QD +5OQD5APk5APk5APk5APkAwMEABECAQQFBQUDAwV2AwEEEgMHBQUECQWNAwAA +AEGCf3B/j6SCkYJ/j3CDoJGDk4WEwpKTk4ODdIN0d5Z4t5GCgl6Bd3Vyg5Sm +goOTkYOBf5eRdXmihEuGq8fU0dI4OAAE0gARv9LXv9K/OL/S0r/Svzi//r8A +A9IB1wPSAb8F0gALv9K/0r/S0r/S0r8AA9IB1wPSAB7e19K/0cbHuJhSe3mE +S4i5UXiEqbmIeIWFh1GsiIkDUgAUilKKxIuZrYuKi62Ki4uwZkRDQwMDQwAG +A0NEfmxqBUIABTNqbOcxAAPlA+QAJRnk5APjIOMg5APkA+QD5APkAxTkA+QD +FANDFAMDFAMFAwQFAgQAIQIDBAAFBQUEBQUABgMABuQD5AMD5AMDAAbkA+QD +5AMD5AEDA+QACQPkA+TkAwMFBAASAgUFBQMBBQEFdwMBBBIDBwUFBAcFjwMA +AAAEf3/FfwORADZ/kX+Qf5KTc5KBf4JdcpGRcqaCgoOgc6KElpOShHeDSnKC +dZSUk7eBlpOWlqSDloWux9G/0r8D0gS/AdIBvwPSABW/3tK/ON7eB7/P0dEH +3d3ev9K/v9IABL8AYtfS3dfS0r/S19fS19LX0tK/0r+/0tLdv9K/3r/DeXmH +eYWiqXl5uXapUIeWiIaIiKxSiYmaUMBSUoaKhpmLUouLiouwZX5DLUMFQ0MD +Q0RE1mxqQkIzajPoMeZ+5eXk5EPjEQMBLQYDARQFAwAFBQUDBQQAJAIFBAMF +CAMAG+QD5APkA+QD5APk5AMD5APkA+TkA+QD5AMDBAASAgwFigMBBAEEBQUB +BAEEBgUDAwEFDQMB5IEDAAAAO6SRf3+Rk5GSkZB/pIKmpaRwbXCPgpCDgoKD +dH+CgpOCdZaRhHaDlnV1loOUhISCeKSDc3V5UqvP197eAAPSAAi/v9LS3d6/ +0gO/AdIDvwAQ0c/HuL2YmL3G0dfS0t7+vwM4ADu/OL+/3tK/0tK/0tK/0r+/ +0r/X0te/0r/S17/S0v3DUUx4Tod7hUyFhXh5eod4hYaIqYaKiVGKrFJSwQAD +UgARi4uti4uYmIuvnS8tLQQFQwQAA0MADkR+MWpqM2robNbmL+VEA+QFAwEF +AwMBBQgDARQEAwADBQMDAAMFAwQAAwUEBQAlAgUEAwUDAwAR5APkA+QDA+QD +5APkAwPk5AMAA+QADAPk5APk5APkAwMFBBICDAWKAwEEAQQFBQEEAQQGBZMD +AAAAHY9/f6R/o6OSkZKkg3+Rf3CkgYGCg3KCg4GBgF5/AAOCABeBg5N5k3d3 +k3KDdaa3dpOWk5ZJhYvGvwAD0gAhv9LX0tK/0r/e3g3SODjRxse4uKh2dXp1 +gXJ0ir3G1NfGAAPHAA3Dx8vG0dLe3b+/0tK/AAPSAAnX0tK/0tK/0tcABNIA +ML/Sv8OESnSWS3lRqalLhXl7S4eFqYWpioZTiYmKqqqJhqqqisCKiq3ArYqL +r51URAMDABMFBEMD4+R+MWxqM2wxbOZ+5eREAAPkAQMFBQEDAwUBAwQFBgMA +BAUDBQMIBAECAQQkAgUEBAUIAwAZ5APkA+QD5OQD5OQD5APkA+TkA+QD5AMD +BQATAg0FiQMBBAEEBQUBBAEEBQUSAwHkgQMAAAAFkaSkgaQAA5MAOJKRkZKQ +cJDFpH+kgn9/gnGCg4GBkIJzg3R3g5aDdZaTcXaTeKi3lsKRp6i40b/dvzu/ +0r/Sv9LSA78AJcbDuL2hqIR2d3WDdXJ3lHV3pXV4hqiZhod2dnh1dlCYvca/ +0t4ABNIAML/Sv9K/0te/0te/0r/Sv787v8+rhXJLeFGEh3h4UYmIhYiFhVGp +UFJTiIpQrKxSigOGACeqi5mLrYqtiq2LsFUuLUMFQ0MEQ0NE5ebnbDVsMTEv +5UTkROQDIAMAAwQDBQYEAwUDAwAGBQUEBQQFCAQBAgEEIwIFBAQFBQMADuQD +5APkA+QD5AMD5OQDBuQACAPkA+QD5AQEEwIMBYoDCQQFBZQDAAAAOH+Rf6B/ +gqaCgqCjcHCkcJJ/f3CCgn+Cf3Klg6SDppOUdIFegnWDk5FOlnWReZOkkYS9 +1NfS3dLSA78AP97Sv7/SO97Hhk6TpKSDdHSUlJV3dEpydnl1dGB3d4N6l5R0 +g6amgZaHmbjU0r+/OL87v9K/0tfSv9LSv9K/1wAD0gAjB93Gi1BOTEuEUU97 +ubmaiImJeamIrKFSiImsioqsmomsUokABIoAKa3BrYqLrY1VLi4tAwMFQwMD +ROV+MWxsMdbWfkRE5EPjAwUEAgIEBQQCAAcEBwUBBAEFBwQAAwUEBAAkAgUE +BAUJAwAJ5APkA+QD5OQDAAPkAAgD5OQD5OQD5AMDAQQTAgwFUwMBBDYDCQQG +BQAHAwPkA+QD5AAKAwHkgQMAAAAfkoKCo4Kkf5GSpoOSwpJxg3GRk5GCgZGC +g4KSkYOSdQADlgA4k16TkpKpiXWkXoKBk5nH197Sv9IH3b/Sv7/S0tsHC9S4 +dniSdXWDg5R0dHWDTXR1d3dzd02Wd3kDhwBHlkp3ekx3d01Omcbdv96/v9fS +0r/Sv9LXv9LX0r/Xv9fS17/GzLiup0xOTnqHeYqriXiEUIhSiVCIiqqsrIZS +mlKGiqqKiqwAA4oADYuKi62vZX4tAwUDBQQAA0MAGkTl1ucxMS/lLuRELeQD +AwUFBAIEBQICBQQCBAQABgUFAgIEAgkEAAMCBAQAAwIBAQEBAwIBBAQCAAYE +AgQBBAQEAgEEDAIIBAQDAB/kA+QD5APkA+QD5APkA+TkA+TkA+TkA+TkA+QD +BQIBABICCgVVAwEENgMJBAUFlAMAAAAykpGCgn+kkpGRkn+EoYSggoKRg5SC +g6SDcYKRlJJzeJSDdHKmg4JOhMOZcZaTeJjG190E0gA5v9K/v90H0cbHuKuL +UXiEeId3dXd3Snd1dHR5eXqHhXl1d010l4eWTnp6d3N3d19yTqq4z7+/0tK/ +AAPSAAXX0r/XvwAF0gBIv7/e3de/0dG4iFFOeYd4U8fDUlG5hYWIU1OshnuG +qomIiaqKiYqKUopSqouKilKLr2VmQ0MtQ0MDQwNDROV+5tbmfuVEROTkBAMA +CAUCBAUFAgQEAwIABAQEBQUDBAEFCgQBAgEFAwIBAQEBAwIDBAMCAAUFBAUC +BQARAggECQMAGuQD5APkA+QD5APk5APk5APk5AMD5AMDBQIBEgIKBVUDAQQB +BDUDCQQFBZQDAAAAFqR/gn+BkIKlg6Zxf5J4l3+jk5ORopEDggAblnWTo5aD +dIGRg4GDlpjGx4aReHaYxtu/17+/AAPSABY4v9HHq6qJlnl3d3mpqId3enN1 +d3qUBHcAS5R5l3p3eYNKdIN3eJZNl3d1dE1NdE1glkurz7+/0te/0tK/v9K/ +17/Sv7/S19e/0tfe0sdRTk9NSUt2wDzGmFGHh1CGUImsiFOGiAADigAmmq2K +ilLBiotSrYuZioqvnLRYLS0DQwNDAy3kLn7m5i9+ROREA+QEAwAFBAQCAgEA +AwUDAgcEAQUBAgsEAAQCAgEBAwIEBAQCAQMBAwQEDgIIBAQDAAPkA+QAAwMA +DeQD5APkAwPk5APk5AMAA+QAAwPk5AADAwEFFAIJBVYDAQQBBDUDCQQFBZQD +AAABfwGmA38AV5CRkJKCcIKRkXe3t3jChcWTkoGkg4Kmg5N/gpOCdZFdvdHG +rHJ4UL3Rv97e0tfSv7/Xz8Oqt4WDg3R0cYKUToeTc5OEk3eUdHRNlGBglGCU +lpd1d5R1lQAEdwAXSnR3YHd3YHd0SnKEuNTX17/Sv7/Xv9cAA9IAKNfS17/S +v9e/0r/PrlKrmFBPUHau1MeYhVCFrFNRiVKJiVCsUsGKqoYDigAQhqqsrIqt +i4uvr51mRCADBQRDAAxERC5+L37lLkRE5OQDAwAGBQMFBAPkAwMEAgAGBAQF +BAUFBwQBAgMEAQUDAgATAQECAgQEAQQDAwUFBAMD5AUFBAAOAggEAQUHAwAZ +5APkA+QD5APk5APkA+TkA+QD5AMD5AUFBAAUAgMFEQMB5EoDAwQ0AwkEBgWT +AwAAAICCcYKRf5KRkXKklpJ2oJF/coJzg7eSgpKBlKWkkaSCkqmDj3C41M+u +f3Gjq9Te0ji/0tK/3dIhmJOBg3aXlIOBcZFbgYOmg5eWk4JydFyBdXJddXVz +lHmWl3lyd5RNSk10TWB0dHp3d3p6l3WimDy/0jjS0r+/0r/Sv9K/v9K/0gO/ +AFjd3ca40dGYU6enTq7UxrlRhVCJiVKqiIaaUomJUoaKrKyJrIpSwKqKiq2t +Uq2NtEMCLUMDBUMDQ+RE5X5+5UTk5AMZAwMFAwXk5eZE5AMCAQECAgQCBAQC +BgQBAgMEAQIBBQMCAQEBAQMCAAMEAgIAAwMACAUDA+fnAwMEDgIIBAQDAA7k +A+QDA+QD5APk5APkAwPkAQMD5AAIA+QD5AMFBAQVAgEFAQVcAwMENAMJBAUF +lAMAAAAPgqCRkMKCgo+RkrejhMWSAAN/ACWCf3+RcIKSlpKTg5STt5OTTKvR +B712b0vD3d3ev9LSv97dv8OZAAOCABKRl3dgf4KSf4Jwf3R0lpN3f4IDgwAi +dINwg5eWeXeUeXqHeZZ5lpZ3TXd0TWB1TU16dU9ieEuZxgO/AdIBvwfSAAO/ +0r8AA9IAEr/S0b8Hv9SrUVBRiMPRx4uGiQRRAA5TiVKIUIiJiIhQhlBQqQOK +ACSJrYqKi4qKsFVELQMFBUNDA0PjLeUu5S5E5ORDA+MDAwXl5jED5QALROTk +AwQCLRQCBAIAAwQACQICBAUCAgQEAQAEAgAOBAQDFAQUBRTm6xL48+YRAggE +CAMAEuQD5APkAwPkA+QD5APkA+QD5AQDAwQVAgEFAQURAwHkSgMDBDQDCQQF +BZQDAAAAC4KCkpCQk5BwkJGTAAORAFGQk5KSkIKBpJGmxamilIGBg5OBp73U +0aunh1C40b+/19K/ON4H0bh2cXBelIOUk4J/gX+UlHR0f2CTlpR0cpN1lHWD +d3R1lnqUYHlzdnpPdXMAA3oAXHRKYGB0YJR6eamHek1Mp7jUON6/0r/Sv9K/ +v9K/0r+/19K/17/S17/GmFB5ha/PB7hSiYVQUolTiYaGUFKKUImsrIiGrFCs +mlJSiq2KrYuLnFREBQMFA0MDQ0PjBEQAH+Tk4yDjAy3jGX7n5+bm5eXm5ufp +6OXkLQUDBAQFBBQAAwQAFhQEBBQCAgUCFBnl5eYY7vP3RUX56QMRAggEAQUI +AwAS5APkA+TkA+QD5APkA+QD5APkAwMDBBUCAQUBBVwDBAQzAwkEBQWUAwAA +AHiCgn+RkKaCkH9zppGRcIF1kpOmkpCRf7eihZaDgnRzf6SY1N24SkqGw7/e +3tLXv97e18urhJOkgnV3kXWHlpZ/goF1k5Z1lnd1dXSXd5d3T3eDdXqThIN6 +g3eXenl3TXl6d3R0TXdNd0qHhYR5d3l5hFGKw884/b8D0gG/A9IBvwTSACi/ +0tLX0r/XzpiIqYm4DcavUVFShoaIUbmJiImJhohQUImsiIqGUIqsBYoACIuL +rTVEAyAtA0MAHi0t5ERE5ETkLeMt5eXkROXo6Od+5eXn6Ebs6+ssRgPpAAXr +6kbp6AAE5wAL6Ojp6xPt7/P2+PoABUUABPvqAwURAggEAQUDAwEFBgMAFuQD +5APkA+QD5APkA+QD5AMD5AMFBAQVAgEFAQURAwHkSgMEBDMDCQQGBZMDAAAA +CHGRoJGRf6SkA4IAA5GRkAADfwF0AV4DggBQksKIhJeDg3GSgobG3riGc6rL +vzu/0tLe0tfGuF2EqJKmk5aSoaehqZeWlICUdnl5dXeDg3eXd3d5d3l3d5R3 +eXdygnVNlE2UdEp1gnd3dE0EegA+T4d6d3SHoXuHUa7D0Qe/0r/S0r/S0r+/ +0r/S17/Xv9Ldv8aYUYiKx7/GrpqtUlCIrFCsUImsiVKorFJShogDrAARhlKK +UsBSi4uKsGZDICBDAwMAA0MBLQHkA0QAHeRD5C/W5eXmbEbo5uXn6Onr7ezr +ExPs7Pb6+/f3AAP6AfsD+gH5AfoE+wP6AAhF+/xFRfLkAxICCAQDAwEFAQQD +AwATBeQDA+QD5APkA+QD5APkA+QD5AADAwMEFQIEBQUDAQUBBVMDBQQyAwkE +BQWUAwAAAAaQf4N/oJEDggBxpH+kgV6Cc5CjgoKWgpGTl6B1c3Ojk3jDv9Gm +kpK4vwe/0r/XOL/GmZZ4pnWDdHF1g3aRc5eWlHR0k6GneZd3cneUTU13TU2E +c01PeXZ2cXJ0d010TU10TU11d3pgend3SmBNSkx5eYh7enpKUJjHv78ABNIA +BL/S0r8D0gBRv9LXv9K/1wfHUEtSrtEHx6u4mJp7UqpThlCZU1KGU4msiqxS +iaxSrIqsUlKKqouZjdZDLS1DQwVDA+Mt40TkREMu1jHmfubnRkLn5mzp6u3t +AAXsAAry+/r79fZF+vj6A/sABPpF+/sD+gALHRxFRfz8H+gDBAQAEQIIBAMD +AQUBBAUDABDkA+QD5OQD5APkA+QD5APkBAMDBBUCBAUFAwMFUgMFBDIDCQQF +BZQDAAABkQGmA6QAMIKQpHGCcZGRf4+RoKN/kXOSkZGWlndyc4LCuL/Rq3SD +hsbX3tfX0r+/z5hOdXV3gwN1AEJKdHJ0gYOSpYNyg5d6eXd1eIZ5ek5MXXd3 +eXZ5qKd5YEqWendKg3dNd051ek1Kc3Z5eU9NemBPlk51ck+HYoVMuM8EvwAv +O7/S0r/Sv9K/v9K/0r/e0ZhTeYnMO9K/3r+4rYlQhohTiFJQUqqGhYiGhYhQ +rIgAA4oAJYuKrYuKi69m40MDBQVDQy0tQy3kRORD5ecxfufnRuro5+jq7GsA +A+wAA+3s8QAD+gAR+/f5Rfj3+fr7+0X7+kX7HfsAA0UACPz8+0YFBAQBDwIK +BAAGAwUFBAIFAwMAEeQD5APkA+QD5APkA+QD5APkAAMDAQUZAgoFUwMFBDID +CQQFBZQDAAAABZKRf3CPAASQA5EABHGBgZADkQAkf3+WlJaWqMV1XnGEx9LD +hLeow93XONLX1zjRq0uWlnh3dZOEA3QAOXVeXnSCk5R/cnN3YHV5h6dRdUlN +TId3eaGpwFCHdHV5enV5T3eXT3hOek13dUxzlHd3dXdgYJZdhAADhwAfeU65 +q8a/0tK/0r/Sv9K/0r/Sv9e/0tLRq4lOua7U/QAD0gAcz66JiayJUoaIqqiq +iaiGrFC5rIlSqYaKUsGtUgOLADCNZgNDAwMFQ0MDQ+RERC3kRDHn5i9sQurq +bOnsa+3s7e3s2Pf6+fv59/r6+fr7+vkD+wEdA/oAC/tFRfz8RfEDAwIEABAC +CgQDBQADBAQFAAMDABXk5APkA+QD5APkA+QD5APkA+QDBQQAGQIHBVYDBgQx +AwkEBgWTAwAAAH7CkKSPj3+RgpGCg4J/cH9/koKSgm6Sg5KTqKdygU240cao +pHir0d7ev9LSONG4THB4dnJygXd6dZRgcnJxkHKCg3F0g4N3dXiXeHWTeXd3 +p6x7hHl1l3V0dHV5THd6Tk+EooV5TEp1eXdOg5eTd3V3l5aWeU+Hh093qq7G +B94D0gAIv9K/0r/S19IEvwAOw4ZOh3tSw92/v97ew4oDiQAlmlOohomJmlCJ +U4WIUKmsUoaJrFKKra2LwK6wLy0DBQMFQwRDQwAD5AAMROR+bOfW5+lGLOnq +BewADO7t9vs99/r59/r6HQT7AAb6+/r7+voDRQP8AAf15gMCAgEFAA8CCgQD +BQAVBAQDA+QDA+QD5APkA+QD5APk5APkAAQDAQQaAgUFWAMGBDEDCQQFBZQD +AAABowGgA48AmaOQgpGDg3OCgn9/g8KRkpGSk4KSlpZ/SZnR17hxgqjP0tK/ +0t440cOFgpGSlIN0cnJ3g3J1SnSDg150SpaTc3eDdXddeKerhlCHdnZxdXqH +d3R0YHR3eXd5d3J5eU95dU51d3WWTnp6eaeHeU51TnhLh3pOeYeLx9fdv9I4 +0r/Sv9LSv9LX3b/MUXmHiIbMv9K/0gfRq4qIuQAEUgAjqqqsUoSFqVCsUKys +hlKKilKKisCKi4udtEMFQ0MFQwRDLeMAA+QACuUxbGwx6UbryjIE7QAD7u1o +AAT7AAr5+vn7+/r7RUX7BPoAD/v7Rfv8RUX6NAMEBQICBAAPAgwEAQUBBQQD +ABXkAwPkA+QD5APkA+QDA+QD5OQDBQQAGgIBBQMDAQUNAwHkSgMHBDADCQQB +BQEFlwMAAABhgqR/pKR/koKjkZKggn9/pKWlkJGjo5aBg3+lkam9/caGbYjH +3d7Sv9fe3sOGcJaSk3d4eJN5eHV3g150dXSAdJB1k7dOcnp5S4q4xtTHuFKF +THmEcl2SlnWRTkp3TXd3SgADdwBFTnlOd3VKeHqHelCFenlMeXiHT3pPd2B3 +hczd3t7Sv9K/0tK/19K/v93UmFBOrsPUv9Le0t7dxoaJUoaGqoqJUomJqlKs +AAOGAA+FhoaIiVKKra2KwJmZrp0AA0MAHQNDBUMEAy0ULeMtfujoMWxC6+xr +7Wvt7j/x+fv7AANFABz8+vr7+0X7+/r7+/r7RUX8RfxF/PAZAwIEAgQFDwIK +BAAEAgQFBQYDAA7kA+QD5APkA+QD5OQD5AQDAQUBBBkCAQVcAwcEMAMBBQgE +AQUBBZcDAAAANJKRkI9/pH+QpqOCgXJ/f4+RkJCCkoKCkZFzpJNdx9KrgXWh +3r/S0r/X3cahTJSllIF/gXIElwBSgXKTlHR0YHRydZFzlHV0d3aZ0d7eB93R +iYWHh6mpl3qmdU9NYU13l3dgd3V3YHdNd6d5h4dReU5OenpNeaeHeXp6T3pP +eavUvzu/0r/Sv9LSvwTSAEzRzK7H0g3e0r/Xv9K/rqpLiqhSholSoVLBoYpS +rImKrIiqioqJiVKKiqqLqq+yWEMtAyAEAgRDQ+Qt5ER+amroM8pr7Trt7j8S +JUX7A0UACPtF+/tF+0UcBfsERQP8AATg5QMEEQIIBAUCBQQGAwAJ5APkA+QD +5APkAAMDAAbkA+QDBQQaAhIDAeQUAwECNQMHBNIDAAAAC5CRpIGkgX+BgoOB +AAN/AD1epKaScIGCkYOjkpOCdajR1KqDqcPSv97Sv93RvUtzg3KDg3KDgpKE +k4WDg3deW0pgdHR3c3mDSnd3ea7RAAS/ADM4iU6FTnd5h4R4lHh0YHRcdXWX +h0+XTWB1c06Hek6iiHZ4eHd6TYR5c09Penl6TVG40Q0AA9IABr/S0r/S0gO/ +AArd0dHX193ev9K/A9IACseLUYlQiFJSiIoDUwALiqxQiVCJiYasUqwAA4oA +NlLAqouur1VEBQUEAkMEAwNDA0TkRDEz6ek3Mu627u/wPUX7+kX7/PxFRfxF +Rfv6+/j39/tFRQT8AAUdRgMFBQARAggEDAIAFgUF5AMD5APk5APkA+TkA+QD +5AMDBQQbAiYDAQI1AwgEKQMBBKcDAAAACpF/f5CRkX9ygXQDfwALj4GTopKB +pJGRg4MAA5YAa3HDv9SEgYvRv9K/0r/Xw6ODcnWSknWDlJd5T4SXdpZ0cZR3 +d4Fwc3Jyl5R6g3SFw9HRv9HGUXddlHKShLeHd2FKTk5Nh0x5S0xzSpRNTXp5 +eHiFh4h5eklyl0x6endNek16dHdTq9HXv9K/AAPSAb8E0gAd3tLS17/S197S +0r+/0te4UFCJhoaJiaxQUImniIQAA4gAKqqGrIqGiq1SilLAqoausFVDLQME +BQUEQwMD5EPk5WwzQkbr7u4w4j1F+wRFAfwERQAL+0X5+fby9vQd/EUAA/wA +BCHi5AUTAggEBQIHAQAWAgMD5AMD5AMD5APkAwPkA+QDAwUEBBsCAAcDA+QD +5APkAAoDAeQTAwECAQI1AwgEKQMBBQEEpgMAAAAUf15/kIOTkYJ/dHKCf15/ +dbeTf38FkQBvhH+pxr/HhnfDv7/S3r/S0ZiRlnGEeamSdZZ2dqNMd3Z1dHZM +eKmFhJR6dV11dYNgdXaqmKuYp4d0d0qBSXd6endxqZi4q09KTqd5TndKYHpK +YE5Mh3qHTnh1Snd1ek93endPd02FTlHJ2784v9K/AAPSAAa/0tK/0r8D0gAD +v9K/AAPSAAa/3tSuhlADiAA0iYlSiFKGhqmIqayGqoapiVJSwVKtxIrAi6+N +ZkMDIAMFQwQFQwMtQ+Mv6elCyj8/4kAcIgNFAfsGRQAK/PxFRfT0+/pFRQT8 +AAT45gUDEwIIBAoCAAQBAQIFAwMADuQD5OQD5APk5APkAwMFAwQbAiUDAwI0 +AwgEKQMDBaUDAAAAJJCRkF6BkqKCg3STcXWDcJN2gqSUf5GmgoJdcJjRv8td +qM/e0gO/ACPSxoS5k6OjhXl2dpJdqXh5dGB0TqjDuL2ZUHp3dU2UcXGUdAAD +cgBJgYFcTlx3lHd0ekpzdXRSxwfRuIROe4d2dXRKSmBKg3d3eHp6XUx3T3VP +e3d5eXp6eU55T6nH3jjev9LSv9LS3dfd0t7S0r/SvwAD0gAPv9Lev6tSrIiG +uYaIiIaGAAOJACuGiImprIiKrFKJmouKiq3AmYuLsi8tLUMDBAVDBQUD4y3k +bEJGN+42afvUAANFAfwDRQAM/PxFRfz8Rfv4+0VFBfwABvvsBQMCBBICCAQF +AgUEAwIADgQFA+QDA+QDA+QD5APkAwMFBBoCJQMDAjQDCAQpAwYFogMAAABD +lIORkpOWkoOBj1yPf5GQgYODgYFbf39ypqVMw9c7w0jHv9LX19L+17iGTqO3 +lpZ3kpaXk4KCpnV3UavR3r/PmXl1dQADdwA4g3Rgenp0g01gd3eXd5R1d3V1 +lEqAhMvR/dG4hEp4d0xNek1cTUp6YE93T3p6dU16hHZ1eXlMdHUDeQBTeovU +19LSv9LSv9LS19LS19K/0tfS0r/S0r/ev8ZShayGiYiqrKm5iayGhqqJhYao +hayswYmqUobAisCZi7BlWC1DBQMFAgJDA0MDQ+UzRkbs3yMAA0UAB/xF/CL8 +RUUABPwABUX8+0X7AANFAAj8Ifz98eQDBQMEEQIIBAcCAAYEBAUCAgUEAwAJ +5OQD5OQD5APkAAMDAQUfAiUDAwI0AwgEKQMFBaMDAAAAIYKCg4OmgF6PXm+B +gX+Cf6WBg39ef15/pZBuosa/v8eqzwAE0gBiv97RqHd1kZORkpaWd5Z3lIN3 +ckyY1L/dxph4k3p3lHeUd3KDTXp0cnR6lHV3XUpyendNd3pgdqu4x8aLT2BN +eXVOYHpgTXd5dXVKl3l6TXlPek9OTod5Tk95enpPTqu/vzgE0gAU19K/19K/ +0tfSv9fS0r+/0r841K4DiAAmhoiIhoashqiGiapQqYiKhoqGrKyaionEioaL +i7CNtVhDBAMDBQQDAwARLQPj5kI3ymlFIkX8+yTU/EUABPwERQAD+0VFAAb8 +AAf25wMFBQQEABICAwQLAgAFBAQFAwUABAMB5AMDAAvkA+QD5APk5AMDBQAf +AiUDAwI0AwgEKQMFBaMDAAAAFoJ/goOBXHCRf15/gXJ0gn9/gnJ/cX8DgwAt +garU3dLGuL/S17/X17/LdXdecHeRf5N3epeUgnWTgqPHv7+4UE54f3qXdXF1 +AAN0AB6Ud3R3dHeBTXR3dXd6TZR3TUp1TIVRTnlNSndKd3cDegAfTXd3eXdg +TU9Nek16T3t4hUtOd3p5e05PTYnHv93SvwAI0gHXBNIBvwPSACq/0tLRq1CG +iqmIhoaIiYiGuVOshlCaiayshpqJiaysiqqGqoqvr51mRAUDAwAXBUMFA+MD +LUTo0yw6+0VF/Pn5RUX8/CEAA/wIRQP8AANF6wMABAQTAgMECgIAAwQEBQAG +AwAK5APkA+QD5OQD5AQDAQUBBB8CJQMEAjMDCAQpAwEFpwMAAABCkoKDcXB/ +XoKBdH+BgYKgf4GDg3+UlH+DgYGh0d7ev9HXO7/S17+/q0p0cYGRkXOTeaOW +g3WDoHir0dLLXU53d3N2A3cADHRxg3d1TXR1dpeDegN1AAVPd2BNTQADdwBL +cXVdeExOdGBNTXd6ek9Nd056T016eXpNTXl4eVGHhYVPek+HeYd3eavR3tLS +v9K/0te/19K/0tLXv9LSv9LSv9LSw5mEUIiIrImsAAaIAAmFhbmGqoWGiYYA +A4kAIoaniqrAi62vslhDQwVDBANDAy0DLeMx6crr+SLUI/tF/EUG/AVFARwD +RQAF+/zy5AMAAwQUAgMECgIBBAMFBAMB5AMDAAzkAwPkA+QD5AMDBQQgAiUD +BAIzAwkEKAMBBacDAAAADJKmdZCQf3KDf4FyggSBAGiRkJGDdIJ/gYJcvb/S +OL/X0r/Sv9K/0ah1eJaBpKaik4Snl5eDlJaEx93GmUp1eHV1g06Dd3qBYHlK +lHR4p4d3TnVOhIdgepRNd3d5eE5MlXlOTZdgekp5Tnp6dXWHek5Ph093ek95 +TgOHAA16eXlPhYVieU2Jx9e/AAjSAAPX0r8ABNIBvwTSACK/0seLhoiIqVCJ +iYiphVCFiVGFhYSGrImJhqyJqaqGhoqGA68AB7COLi1DA0MABAMACkMUQ+Rq +N58++/oDRQAE/PxFRQP8AAch/PxF/EVFAAP8AANF+OgABAQDAgEBEQIDBAUB +BQIAAwQFBQAEAwAM5APkA+QD5OQD5APkAwMBBSECJQMFAjIDCQTQAwAAAAiF +opFxk4JwgAOBABZxf39ecnF0gn+DcpaCcG+9v7/RuKveA9IAT9fSxl2Ug3V3 +c5d4hXanhJeXeIWoxsaZlHGWendydHSWTZd2eHd4THmXek93dHd5l3pgYE13 +enl3Tnp6eXl6TXd0cnd5eXp3TpZPelGoiIcAA3kBTwF4A3kAFIdiek53eniU +dkyZz97S3dK/19K/A9IATdfSv9K/0tK/0t6/0saZhalQrKlSrKmGUKmKhoiF +iIiJiKmIiamFqayGp4aqhsCLr5y0ROQDA0MDQwMDBQNDfkLqViT7RSLU/CFF +/EVFAAP8AAVFRfz8RQAE/AAF6wUDBQQAFAIFBAcCBAQBBQEFCwMD5AAIA+QD +BQQCAgQfAiUDBQIyAwkE0AMAAAAOqZKQf5CCgn9egYKkcn8FgQCGf3+Cf4OD +grjXv9GEmb+/0r/S0sZdcnR3gpCXkaN4hHZ5eoSFlqiLTmCTdnmUl0qCcneS +dXV4d3N5eU95ek13eXl3eUp0dXdOd3dNYId1TndNTUpyeU56eXlOh4d7qolR +T3lOc4dOeU95T3l3Tk91eod5UsO/v9fS19LS19LXv9LS19LS178F0gAQ0ZiI +hYiIiamGiamphrmsiAOFAD6piayIiKmsiKyphoanqpmYsI2ytBQZQy1DAwMF +AwMtRDU37fojRUUjIkX81PtFRdT8/EX8RUX8/fz25AMEBCECAwQABAUDAwUI +AwAN5APkA+TkAwMFBAICBAAfAiUDBQIyAwoEzwMAAABfknCCg4OCgl6Cf39y +g39/XIFbXm+Bg3+DgZGr0tfUXaq/0r/S19LHSYGBXHSBg3VNd3d2eE5MeIJ2 +hHeSeJeXeXdgdXWXd3l3d3l3c3d5l3dNd3p1lkt2d0pyTnp3ekwAA3kACHp1 +TXdOeneFA3kAI4d2h4dOTod2d3h5TpZ6TEp1Tnd3T0yWTIVS0d47v9K/19K/ +AAPSAAS/0tK/A9IAGb/Xv9LRrlCJiFBQiaxRiKlSiKmFhYapiIkAA4gBUAOp +ACysqbeoqorAra+Njg4Z5EMDQwUFAwNDQ+XKMj37IyNF1CP8+iVF+0X8Rfz8 +RQP8AAZF6wQDAgUQAgUEDAIDBAMDAeQDAwHkBwMB5AQDAAUFBAICBAAfAiUD +BgIxAwoEJwMBBacDAAAAR3GCgYGlcoJ/cIGCgn+BdF6BgaRef49/caCTmdI7 +1F2Z0tLX0tK/y3GlgXKBYHCDlHSUdXWDeIWHqXaFhnlPd5R3cneDdU5zAAR1 +AE9Olk9NdHV1d6OEh3l3d3V3d094eFFOdU53eXV1T056eU96hXN6TXV3eV1P +dXhOTnl4eE93T3d1knl3THnMB7/S19LS19LXv9LX0r/Sv9K/AATSACm/zFFQ +qYh2uYiJiKmJh1GFqYWphreJhqypqYWpqbeGhKqqwMCvsJ1mRAADAwEFAwQA +EEMF5ENs7PIi1Psj+/tF+/sDRQAN+/v8Rfz8/fz05QMCBQARAgUEDAIDBAQD +AeQEAwHkBQMACuQD5AMFBQQCAgQgAiQDBgIxAwsEzgMAAAAof39xXlx/f5OB +W4KCkXCQcX+BcoF0j150koGK19LUXagHv9LS19LHcQN0ABxxkX+lf4CBdHSD +dqJ3l4d5h4eWTXR3dHRyd5dMA3UARHd1dXqXd3dMd055eU93eU5OenpPdnp4 +lk93d096l3V4d3d1TlB4d3V5eXN1TpZ5T3lOT3l3enpPd3V6Tnqu0dI419K/ +A9IABNfS0tcF0gAav9fSv97HhqlQhoZRqYRQqYaGhXiIhYWshokDqQAYiLmF +qYSphIqqxIqtrY2dfhkDAwUEBAUFAwMAC+WfOfz8ISJF+vr7AARFAA77RfxF +Rfz8ReoDBAIEBBACBQQFAQcCAwQBBQUDAeQMAwAGBQUEAgIEIAIkAwYCMQML +BM4DAAAAF5OipoJ0gX9yg5GRcJBegoGBcqSBdIGlAAN/AHKLv7/Uc6jR0t2/ +3dLHW4N3g3RecX+BXn+AcneUeXlOl3lOcnJ1SkqWdXp3lJV6knh6TXpzS3NP +d3Vzk3d3dU55p0t5eHh3d3l6ek93l0xPT3VKeoinTnd6TXeTeXhOToVPeHl4 +eXl1d3lOeXpOiMe/v94D0gG/A9IAB7/S0te/0tcAA9IAFb/S0VKJqYSGqYZQ +rImFiIWGhYiIqQAEiAAWhYWTqYWpt6epp6qqmYuLsLVY4wMtBQMCABYFQy0D +6O37If0H/SH8Rfr7+/r8/NRFA/wAAx/lBQADBA4CBgQAAwICAQADAgEEBQIH +BAAEBQMD5A0DJgIkAwcCMAMLBCkDAAPkA+QAogMAAABpk6N1g4+Bj4F/kIKD +dIKSj15/gXJ0gF5ecIGov9LRoKjUO7/S0r/Hd3SUk5aWpHKAYF6BlJR3d3iW +Tndyd3l3dZN5dXd0dE2Xdnd6YHd3dXl6enV2d3dKd06WeXlKTXl3doVPd4dP +h3dOAAN1AB5KTod5eoN3kV2WeXmHT4WFh0uWeXd3T3p5eXp6uP4E0gAGv9Ld +0tLXBNIAFL/S0r/Sv9LUhomFhYmGhoisiIiJA4gAPoWpqayshYiFhamFqYSj +o6enqpnAi5mwsrTk4yADAwRDBAUDQ0TqPCH8IUX7/P0k+Tz5/CH8/fz8RfHk +AwQEDwIGBAADAgIBAAMCAQQFAgcEAQUQAwEEJQIkAwcCMAMMBM0DAAAAjIOD +goGBXoFecHCCdZKRdY9/gXR0j16AgIF0vb+/0aKExr/Sv9fSxoWUdJKTll6A +gIF/gYFxgnajdoNydHWDgnVOYHpNT3R3d3p5ek93Tkp1eU16d3F4THV3eXlO +c3lPhXZOeHh5d3dLmXVNT0pNlnN0d5aRpnWRlE54enlOTnd5Tkx6dZZ5dUqr +vzjdBNIAA7/XvwAD0gA3v9fS19LX0tLe0VCIhYaFiomoiIiFiLmIrLmsiIip +qZaIhal2woSRkrenqqqKiouvfWXl5CBDQwADBAAVQwNDLedAIfzR/PoiB/36 +Pfr8/fz9AAP8AATsAwIEAwIBAQwCBgQAAwICAQADAg0EAAkFA+QDAwUFAwUA +AwMABuQDAwUEBCYCIwMIAi8DDAQoAwHkpAMAAAAHgXCQXo+BXgADgQAjg5CR +kIJ/cXCBgXSBgV5/Sr2/0tenkcfSv9K/0saGgaWSgpQAA3QADHKVlKWCck15 +l3NycgN3AFeUdHdPo6N5TnpPd3mXTXd1dEp3TXpKdnVNT3h2d3hMeXlKeXdP +g01NmMZRTnp5dXl3d5aSeHmWeU54Tk93eXl3d3p4eU5OT3V0mdG/3tK/0r/S +v93Sv9cAA9IBvwPSABk4v9GqiKl4iKqGiIiFhYiFrIa3t6y3qYWIAASpAB+T +kqejxaOnp6qLra+wnLREGQNDBAQFBAUDQ0Tu1Pz8AAP9A/wABCT6/PwD/QAF +/EVGBAQAAwIBAQEBDAIGBAADAgIBAAMCDQQFAwAFBQUDBAUABAMBBQMEJgIj +AwgCLwMMBCoDAeSiAwAAABuBgoF/XoF/gYGRXn+Dgn9ej3B/gXSDf4NypKEA +A78AdoZwuN2/0tLev5hwg6WUgIOUlKaXcnJ1g3SUYHdgd5R0dHKBd4eFqXl5 +emB1eU93dXJNTk1NeneHeU5Pd3V6TqJ4Tnd0dUx5SlyZ0bhRS02UTnd3hUuF +eXhMek5Md051TU55enh6eHl3eU2LzzjXv9K/v9K/0tcD0gBWv9LS197Sv97R +qFGFUIm5U1FOUYWFUIiGhqyIqYWshYV4kre3p6OjxaCnt6qZr62vjY5YLRQD +BQIEBQVDA0Po+iEh/CEHIQch1PtF/P0h/fz76QIEAgIDAQwCBgQAAwICAQAD +Ag0EAAUFAwPkBAADBQADBAQFAAMDAAQFAgIEJgIjAwkCLgMMBCUDAAXkA+QD +5ACjAwAAADB/XoGBXoGDg3CBXoFef4F/cn+Bf393c4KklKfU0tKrd73dv9K/ +0r+rg16WXpKUf38DgwBQk5aXTXR/XnR0XHF0dEqBSk15eU10dXd1k3dgdXRK +d3pKSk14p3hPdE12hXl3d011g5aXSpnU0ah3dHR1T093endyeXmHSpdNek96 +d3OWT04DeQAHenpRw9fevwAD0gA1v9fSv9K/0tfS0r/Sv9Ld1IpRh6yHmom5 +iKm5hqmprKm3iLmIuYinqbeTkpLFkpCgo7eqra0AA68ACY20Li1DBUMCQwAD +BQAMAy7zIfwh/fwh/P38A0UADfz9/PxF6QQEAgEBAgEABQIBAQMCCwQQAgEE +AQUEAwEEBwUABAMFBAQnAiMDAAYCAgQCAQIDBC4DDATNAwAAAYIBcQOBAIpw +cJJzgoGBf5Fxf3+RgX9/g39/gXJLy93SuJSo0Ti/0t7Xx0pcdIGAgn9edIF/ +lpd6d3RxXoCAdHRydGBydHlMdpF6eXd3lHd3YGByd5RKdHd6hk53cnZ4h3hK +d3dzlneWSqHRx3hNSoN5eXdPl3dKTXeFTk93TXd6ek5OdXl5d016Tk6rv97S +v78D0gAUv9e/19LSv9fSv9LSv9RQh4iJiVEDiAAzhYqhhISFeKmpeYiIqaep +hXbCkpDFosWit6qKwK2Lr7COfkQUQwNDA0MEAwND7CHUIgchAAT9AAT8RftF +A/wACEXpAwQBAgIBCQIMBBACAAcEBQPkAwMEAAcFAAMDBQQAKAIWAwECDAMA +BgICBAIBAgMELgMNBA8DAQW8AwAAAIyCf3+BXn+DlpKTf4GBf6SBcoGCf4GB +goFwW13Dv8e5g4TG3r/X3t7XiFyAYHR0j1yAdH+Bc3WUYHRgdGCVYIF0gYN0 +YHdOqaN1lHR1c2B6dHddSndKenl5o3h3dYWEdnd1c3VykpNOqNHDdXRylnp6 +dnlOTnV3TnpNeXVPenV5dXp5TXJKenl6eK/RvwTSAb8B1wPSAAO/0tcABNIA +ML+/3saFeYhRiIWFhqyIiYiHwqmphYWphbmIhYS3qZKRksWgoKe3hpmur62u +sLJqRAMDBAUABgID5GpFIgP8ABP9/CH8/fxFRfz9/PtGBAMBBAQBAAgCEgQM +AgQDAQUBBAkFAAMEAgEAJgIWAwECDAMABgICBAIBAgMELgMNBCcDAwWiAwAA +AJCTg39ef3+DkKKDgYFej3KCf4JygpBxj3J/qpKY0cdQW4HD3d7X0r/Xq0lc +pVuBgGCAYIF/f3JydIGBlHSUlHSAdIFgdJRKl3l3d0p1kWB3dGBylHR3lGB1 +dXdzdXl3eXVKTpd1eEpPq7/DTZdKdXmHdnp5ek16dHdOeU5PdUx3eE55h3d1 +T1GFS4rU0tK/0r8D0gASv9LS19LSv9e/0tK/x1CFiKxQBKkBrAOpADGFiKmF +iIWpiKmpkniTkpF/kMWgxaKqyMiurq+vjVUv5EMDBQQFBAIDAy48Rfwh/Qch +AAP9AAr8/UVF/PxFEwUDAwQIAgAEBAQFBQ8ECgIABAECBAUDAwEECAUABAQC +AgEnAhUDAQIMAwAGAgIEAgECAwQuAw0EEgMB5BQDAAMFAwUAogMAAAARloKC +j1uBg5STg15egYJ/f6QAA4IAhnWlf3KTuL2Ey92iSnS9v97dv7/SxoR/pVx0 +YFyBdIOCYIBcf4GDYIKRlGBggHR0YHR/dYNgYHRzXXd0dHJyTXR3YHSBdIN3 +dXd1dU13d3WDTmBRxt7DTXl3lE96eHl3eXVySnZOdUxddnlPd3l4eXlOeYdO +TonGONK/0r/Sv9LX0te/0tLXBdIAMcdQiFOGhbeFhaeIeIWpqbm5qYiphoiW +uZaTt5ORkJDFoqCnhsjJyK6vsI2yZi4gBQMABAQDQwAL8yLU/fwh/Af8/P0A +A/wAC0X8++7kAwMEAgQEAAUCAwQBBQEFDwQKAgAEAQICBQMDCAUABQQEAgEB +ACcCFAMBAgECCwMDAgAEBAIBAgMELgMNBCQDAwWlAwAAAERuf15/gYJ/gnBw +XoFegHCCdZCCgqZ1gYOWx9G9vf3LXYOnxr/S19Ld0sOWlHSAgYFglHRegV5/ +gXKlkZRyf4CAgVx0YANzAEp1dGCVenp0YEp0dGB0YHRgSnd1g3pgd4NylnaS +epRNq9E7mE9glYN5T3lPeXp3Tnd6lk54dkx5eYeHhXZ5doeFp4VQx9LSv9fS +1wPSAb8D0gAJv9K/0tK/3sNSAAOGABiIiKyIp4aGhYhQiKqGrIi5hYWphXh2 +ppMDkQARxae3o6eYvZitsI2eVdbj4wMABAQACgUDA5/8ISH9/SEE/QH8Af0D +/AADRfLkAAMDAQIBAQYCEgQMAgAGAQIEBQMDBAUFBCwCFAMDAgoDAwIBAQMC +AwQuAw4EIwMAAwUDBQClAwAAAC9/Xo+BcpFygX+Pf4Fef4GDkZGCc5GkkpOE +wyHHqMbPp290w7/dv9K/0tSYll90gQADdABPYGB0YHSDcnd3lYN0YGCAdHRg +dIN1dXSUTXV3SmB0dHdgd3RKdHR1kmB3TZV6d0x4d3eUTsMHv4hNdXd3eXd5 +TXdMd5dOlk5Od053h3mEeQADhQAIeXmHhVFSzL8D0gAIv9LX0tfS178F0gAE +v9LexwOGAA+FiIWFqYaqiFGGqYapiKwAA4gALrmFqbeSwpKRkJGQo8WSt6qZ +ma2vsI2ytERDAwIEBAIEQwMxPCH9If39/P38/P0D/AAHRUX15gUDAwAIAhIE +DAIABQQFBQMDAAUFBQQtAhMDBAIIAwQCAQEDAgMELgMOBCMDAAPkA+QApQMA +AABYcn+AgYFwcH9ygVuBf4GBcZBygoGCg5OEopnPv5iozqeDhazU3r/Sv9LX +w0t0YHR0XF5ydIF0dIN0g2CDk4OAdGCAdHRglHWUdEqUenJxdHR3lnd6d2BN +dAd3AA9NdXZ3d02Z3d3Rh012d4cABHcAEnJ5T3l5S3h5d3l3eXl2hYSFeQWF +AApRzNK/3r/S19K/BdIAA7/SvwAE0gHDAZkDhgAsqqmGrIanqYmop1KqhqeG +t4WIiLeSlpORhJGQxcWjp4jEisCtsI2NsrUO40MDBAAJQwIDA0NAIf0hAAP9 +AAUh/f38/QAD/AADRfjoAAMDAAMEBAIAFwQBAgECCQQBBQEFBQMDBQYELQIT +AwUCBgMFAgEBAwIDBC4DDgTLAwAAAAWBgV5egQADfwBBgYOBf15/gYFegX+C +f5GTwpaEvdfHUMSWeLi9zDi/3tK/19GrTkp0dGBgdHSDd4FgdIF0kE50YHR0 +YHR0d4NMd2AAA3QAQZRyd3R0YHV1lE13YHdOenp1dXp5eXd0TXbHv9LHUXR5 +eU51eHVKdZd5eXZ4eYh4hXl4kqmphYiHTnl5UalQzN47AAPSAC6/0tLX0r/S +v9K/0tfSv9G4i4aKUqqqrKmJhoashqqsqYiphoa5iKm3qZOpo5HFA5AAD6On +qqqKiq+wsJyNjtZEQwAFBAAGQwMD4v3UBf0ABPz8/SEE/AAI+uzkA+MEBAIX +BAECAQIKBAYDCQQvAhADEQIBAQMCAwQuAw4EIAMAC+QD5APkA+QD5APkAKAD +AAAAloFegYGkgX9/kYKBXqRxcX9/goGCkqKEk5KCqsbUqKWldsfRxge/0r/X +0t3Pp3RedGB1g3dgYHF0YIN3dJd3YGB0dGB0dHV3lHR0d3R3dJV0d3pgdHp6 +TXdNTXl3ek56eHVKdH+rBzgHq7l3eUx3eHl3eHZOTIdPeFCEqXZ5koR4hXas +hYeFh4VQqMbXv7/Sv9fSv9LS1wfSAAO/IpgAA4YABqqnhqyGtwOsAC+KrMGp +rIiIhYWpube3eMKSwpKQkZCSt4bAisCvsLCNjbLWDkNDBAIEAgMFQ0L8IQAE +/QAF/P39/P0ABPwACPsS5RktBQICFwQBAgECCQQBBQUDAQUJBDUCCgMRAgEB +AwIDBC4DDgQBBcoDAAAAQoF/Xo9eW3+Bgl5/gYKkf4F0XIFygYKSgqZ/cb3Z +0Yh/pJnRIcbX0tK/0jjSzHWWYIBNXpR6lHd3dE2UlHN1g3R6cgN0AECUd3d0 +YFx3dHR3d0p0YHVgTXRMeZd4endNTU53lGJR0dLdv5l5eXpzTJZ5eHmHh3iH +hal2qaiGhoSEeIWFdoV5A4cAJU+L0TjS0tfS0tfS17/Sv9K/v9K/0jjHi5mq +qKqLipmLioZSiKwAA6kALIisqam5hamIlreFkpGSkqORhLeGwK3ArbCwnI2y +tX7kA0NDBEMFQwPmPCHUB/0B/AH9A/wAB0X16QMUBAIADAQABgMFBQQFBQME +AAUFBAQCAgAFBAECAQIFBAMDAAUFBAIBAQA7AggDFAIFBC4DDgQBBSADAAXk +A+QD5AClAwAAADZef4F/cFtedH+BXoJ/goFegICBgo+BgoKBgoKsxwe4f5OT +uMOZ1NHS17/Sv9fDS1xycnRgd4MDdABDlEqUepRKd2B0TZV3dHdgd3R0lU13 +dGB0d3dKYHp1d3dPendzlod3lE1MuNK/3cNLTk6WdYN1k3N1eXd1dXipt1CG +rAADqQAUhLephISWTodLTpnRONK/0r/S0r8H0gA5v7/Sv7iqipmoi8CGqopS +iomsrFCpiYiIqaysubl4qbd4k8K3kpGRt7enhqyLr62wnJ6d09ZEAwMFAAQE +AAdDRCskISHRAAb9BPwAB0X57BQtBAIADAQACQMDBQQFBAQCAgADBAECAQIF +BAUCAAMEBAUAAwMABAUCAgQ8AgYDFQIGBCwDDwQBBcoDAAAACH9/gV6BXn+C +A38ABIFxf38DgQAVdIF/XqVegoJzeJnHx5KCk5PElr0HAAO/AA3S17/dx71L +TXR0gnRxAAN0AC6Dd3RNdINNdHdNTWB6endgTXp0dHJNd3RKcXdKd3d5epd5 +d4eHpU5LuL/9ONFQA3cAK010TXdgenqUl3eDTnhOh3h2doWphISnt4R4eHmF +dZi/v9K/0tLd19LX0tcABNIABb/S0tTJAAOZAAyKwKqoqqqKiqynqqkDiAAh +rKy5qamGqbmnt8KTo5GQhLept4aKwMCwm5yNsrJsWOTjAAMEAAhDAgND7T09 +/AP9AAYh/fz8/f0D/AAH+/PlGQUFAgAKBAEFBAMDBAECAQIEBAECBwMADQUE +AgQEBQMD5AMDBAQAVwIGBCwDAQUBBQMEAQUBBQMEAAMFBQQAAwXKAwAAAYIB +ggOBAHh/pHJ/Xl5/knKBf4FygV5egYCRo6ajbpKGqpOmlpOWc4W40Tje19fS +3t3Rq0yAdHeBYHSBYHJ0dIFNdHJ3YGB3YGByck93YE1NcnV3dXp6d3V1lk54 +eXd3dYVMqMu/B/4Hq3d5epRNdGBKd013Snd3TXqWd3V0dZYDeQAPlnaHeHhO +eXZKmL+/0tK/AAfSACi/0r/S0jjRw5mLmZnAmZm3hoasrMSsrIishoq5hoaI +rKmshbmFk5KRA5IAIbeGxMDAra2vsJ2cnbK1fkQtQwUEBAJDAkIjPD5FIf39 +/AAD/QAK/P38/EX56AMEBQsEBQMACAUDBQUEBAUFCgMBBQMEAQUEAwMEVwIH +BCEDAQQBBAcDEAXLAwAAADtygXGkgX+BgXCBgZGCgoFbgX+Bj4FegYKTk5KS +k5OQqZKjf3KRXkvD3t7Xv97SONLRq0p0gUpgYHRgYAAEdABNYJR6TWBNek1M +d0p5d3V3dUpPd5d3dXd5eoR2T3lgS0pQx/2/v97Dh3VOdXl3dU10SmBPenN1 +dXeHdXd0TnN3lHd3dXd3dXd5h0qrvzgABNIB1wrSAEve0cmYmaqZmZioqsSJ +qqeGqayJiIqsqqyJhre3iKmIeJORkJKSp6zEwMTAwK2wsJyNnrKOMUTjAwVD +BAICQ34kISTgJP38/fz9/P0AA/wABxxF7eTjBAMABwQACAUEBQMDFAMFCQMB +5AMDAeQFAwAEBQUEBQMDAQUDBFcCCAQgAwUEAQUFAwQFAAUDAwUFAwAEBcwD +AAAASIKBgW+BXoGBf4KSkIJegXByg3SBXn90f5OCk4KTk5KSlnimeJR1g3PH +v96/178H3te/w1CXlHRcYE10YINNlHR0TWBNd0p3lAN3ABZ6d3l5enR3TXJ6 +ckp5lpZ1dXROqNG/A9IAJ8+ZeIh2XXd3lXRNlEp0TXN1d054eUqXl3eWdUp5 +eXh4dpaTeUu40QAG0gE7A9IBOwXSAAXe0auZiwADmAAHmYaqqqysqAAEhgAm +UoqsrIqsqcSnt6yTwpKRknC3hITEycmurq+tm5yNnbLKZuVDA0MDBAAZQwRD +9fz9ReAn/fz9/P0h/Pz7RUXg5xkDBQAEBAADBQQFAAUDAAMtA+QABgMB5AMD +AArkA+QD5APkAwPkBQMFBQEEAwIBAQEBAwIBBE0CBgQBBSEDAwUABAIEBAUP +AwEEzQMAAAAHgn+BW39vfwADgQAtcX+CgX9wf5GkgoBecnCBj39egpJ2c6Z/ +f6Z1gnWDqsO/3t7Sv9LS3b/HiIN6AAR0AA56TWBKTXRKTXdNd016TQN1AApN +dXJ3end1TndyA3cAHXR3eUyZz7+/3r/Ri4V3hXh1TYNycnRNd3dKenl3AAN5 +ABN0dXhzdYJ1dU52eXl4lpd5uNI4AAPSAAY70ts70twG0gAG3s+rmZmYA5kA +P4qGilCKqoaGiqyGiqysqreprMKFwpaSkqmTt7ept8ies8nIra+wsI2NnrJq +fuMDAwUEBEMFQ+Ih/P1F89/8RQAF/AP7AAUe6gMDBQAFBAUDAS0BFAsDAeQE +AwAG5APkAwPkBQMBBQUEAwIDAQMCAQRNAgYEAQUhAwMFAAMEBQUAEAMB5M0D +AAAAG4KBXn9/XoFegYJ0goGkf3+Dg4JwgYGAgV51gQADkQArp6KTknNyf4KT +k3KGx9G/3tfSv7/+3st2XHSDUXiETXd3TXR3TXpKo3V1eQADdwBvlEp1d5N3 +d5Z3lHeUTXRNUMzRv97ev9SZlHR0eU53d4ODd4J1dXd2eXeTeXh4dpKpknVO +d3h2eVCWeJaDhsPS2zvSO9vSO9vc0tzcO9s70t7Rq5iZmK6ui6qKhqyGqqmq +rIaqp6rAp6ysqYW5uZapAAOSAA7CqcKSp8mvyYvAsLCcfQOyAAW11kQDQwAE +BAALAwPrRfz8/fzx8RwABPwADkX7Rfj47+QEBQQDBQUEBAMADBQDA+QD5APk +A+QD5AYDAeQEAwAI5AMD5OQDAwQHAgQBAwIBBE0CBgQBBSEDBQXfAwAAAKx/ +cH9egl5bf3+BgXBwXqRyg4OCcXKBpXJwg4OCkaOphKmSwqZzk5aTdHWGw8/S +3dK/O7/dv8aYdUxNTUp3d3SDd2BKdXd3T3l4lnlKeHd1dYKUd5RgYHRKeU6Y +x96/0r+/1ItKg3d3TXlydXd3lnN1dXlzdnlOUYR4ToSEeJaWdniFhal4eJas +qtTS0jvbO9Lc0jvSO9LS3Dvb0jjUq5iYmZjIi5mqxKqsqobEB6oAMMS3qcKI +lqmWhZKSt5OSkZGomM3IwJuwnI2cnrKOtERDBQQEAgQCBOj6Rfz8/fzwEgf8 +AAn39/Xm5OMDAwUABgMBLQwDAAPkA+QABAMAC+QD5APkAwPkAwMEAAYCBQED +AgEETQIGBAEFIQMEBRADAeTPAwAAAHqCf3+Bg4GBcIJ/gV5/gl6RgpaCkYGC +goOTf4GBgpGTkqOEk4XFp5GReHKRqJjH1we/0r/S3t0HuIpcXHRKc0x1Snd1 +TXdPd3hOT3l4THZLeHRydGBKSXRKmccH0ji/3gfUmU1gXXZOcpd3d3h4k3V6 +lnV2hHaWlrepSwOpACGFqXZQhVCEt6ent6vX0tLbO9s70tLbO9vcO9vS0jvS +1K4AA5gAK5mYmYrEhqiqxIaGqJmqwIqKqoapuYWXwoWWwnaTkpKRt8LCt6i3 +xLCwnY0AA7IAN45sROMDBQUEBAIC5vf7/CH8/fzx8fz8Rfz8Rfn2+eoDGQMD +BQMD4yDjAxQD5APkA+QD5APkA+QABAMACOQD5APkA+QDA+QDAwUEBgEDAgEE +TQIGBAEFIQMGBQQDAeQDAwAD5APkAAUDAAXkA+QD5ADJAwAAACR/gXKBf3+B +g39egYKBcqRzo6ORgoFwgXSCpIKDcoN/gn9/gpMDkgCvt3V2qXmCdqvG3Qe/ +v9Ldv9LPq5iEcXSUpZN1d02Eh054T4SFTISEeHVJk05LS6i41NLe3b/Sv7/G +mU13l096eXmFhUp2dnN1lnOWlnlLt4WphIS3p1CEqU63hKeqp6OGqMa/ONI7 +2zvS3NI72zs72zvbO9w7xq6YmK6ZmZiqqIaGiqiqxMjAwKrEqqqGwoW5qamI +loWFqbfCqcTAwcTAsK2vm5yNnrKyymp+LQNDAQADBAAFBeX1RUUAA/wADiFF +7u9F/PxF+vX1+RLlCgMBLQ4DAeQDAwAH5APkA+QD5AAEAwEFBQIFAVACBwQD +BSADAwQGBQMDAeTXAwAAABaCf3Skbl6BgoKBdH9ef4GmkZKTg3+BA4IAG3Jw +f39ygXKCg4KTkpOTkpKEt5KTdXiKuM8H1wAGvwBm0cbLq4ZLcnp1SkhISk6F +hEtOXYRQqIRLqsPH1NHSv97dvw3RzIZ5Xnd1h3l1S6mpk3Z4eHWWeJN2kqeE +qYWnhIS3t6mSqYaoqqeoo6q40dLSO9s70tzS29I7O9vS3DvSOzjRrpmuA5kA +KqqqmcSqqsS3wJnAipnAqMSsiKmWloiWiJaWwqesxIzBwcTBwZuwm5yNnQOy +ADdq1kRDAwIFBAIB5PJFRfz8/fz9+uvx/EVFHvj3+PToAwMFLQMg4wPkAwPk +A+QDLQPkA+QD5APkAAMDAArkAwPkA+QD5APkAwMBBFoCBwQDBR8DBAQFBdwD +AAAABIGCgV4DfwAJcoF/f4F/gXBeAAN/AHWBgoKRgn+kXn+BdH+Bg3+RhKOi +kpGSkre3hKmidZLEx9Hd3TjS0r/S3b/Xv8e4uJiqmZmoqJioqpmZuMzR1NG/ +19fSONI4v97Sx6uJgnVKT3N4lniTkpOEeKmpgpGjp6mShJKTkreEt6eneKmS +p6eqqKeomMYABNIABNzS3NIDOwAh29LcO9s7O9K/1MmYmIuZmYaZhqqop8Sq +wMCsqpmqhqysAAS5AAeFuZZ4k5bCAAPEAAqMwcGwrZzBnJyNA7IAB45C1uQt +AwIAAwQABQIF7kVFAAX8AAT99ufxBEUAD/j2H+vkAwMZ4wMDIAMDFAAFAwEU +CQMACuQD5APkAwPkA+QDAwEFWwIHBAMFHgMFBAUFBAMB5NcDAAABcgN/ABqB +gX+Df3Fyf4KCgX9egYGCk4KDgYJypoOCpASCABx/oHaSk5GCg4KSkZKjlpOS +havL0drd3dLSO7/SA94ACNLR0c/R1NHUA9EAM8+/v93e3Qe/v96/B93Rx6uF +hXJyepOCcnaDg4KDeIKEt5NxgoKSk3Fzf3WBkpGRk5OSkgADkwAHkqOnmcPS +vwAE0gBKO9vS29LbOzvbO9Lb0tK/v8yumJmYqJmqmZmqyKrIp6qqxKiZxIis +rIWpiJaFwpbCwsTEwYzBnJybrcGwnJ2NnbLhsrVm5eMDBAQDAgAHA+n7+vv7 +RQAE/AADEufzAANFAAb54Prv5OQFAwAS4wPjIC0ULRQtAwPkA+QD5APkAwMA +BeQD5APkAAQDAAPkAwUAWwIHBAMFHgMBBQMEAQXhAwAAAIuBgoJ/XqRygoKP +gqZygnWBgXRyo5OCk4OBg3WUkl2QdH9ypJGSkoJegYF/kZCCloNwdaZ1dqvD +B9rS3NLb19e/ONe/0tK/0t2/0r/Sv97S197S0r/Sv97dxr1LcX+CgV53dXFx +k3R0cKSWgpOikn9/Xn9/cqSBgIGPcH9egX9/cIKmf4+EmM87v9K/AAPSAzsA +INI70ts72zvcO9K/0ceumJirmJiKmKiZmMCoqLeowMCqA6wAE4msqXiFwpKW +iLmvnK/JfZyur68AA5wAErF9nY6ystNqLkMDAwQFBAIF5AP6ABj49vv7RfxF +6ufzRfr58h3z5gMDFC0D4yADAwAFFC0ULRQACgMB5AMDAAbkAwPkA+QDAwEF +BgIFBFACBwQDBSwDAeTXAwAAAAaSg15cgYEFfwAbXoKPcHCBgaSCgnN/g5G3 +o5KRpXelco9/gYGCAAOBACBegX+DgX+PcH9wgYKDdJKouMPPv7840r/S19e/ +17/XvwTSAAS/0r/eA78AMtTGw4RyXoJ/f4Nzk5SCf3+BkYOmc4F0goGDf15/ +gXKCg4J/f3KUf4NekoKCg4JxgXbHBdIB1wXSABfbO9s72zvb0r+/0f3GyauY +mK6ZmK6ZmAADqgAsqKrExIbErKm3t6m5hYWSeKmsxMSc4hK6sZirwcGcnI2N +sryyn59qfuMDAgUDAQAWAgL3+kX79fb6+vtF+Ojo9Pv47vng6AgDAAjkAy0U +LQMD5AoDAAXkA+QD5AAGAwEEWQIIBAECAQQDBf8DBQMAAABugpF/f16CgV5/ +XnKBgV5/XoGBXoGCg5OWk5K3kaKWlIOCXl6BpYKDc5F/f4F/coF/f4ODf5GC +XnReW3Knw8fGz9e/Ib/Rv92/z9HP1M/UxtTGy6uYqKG3g6SBgqRegZGSo5CR +goF/dIKCgYOBgl4DgQAXdIKClpGRgXKBkH+CgYGDgX9wXqvR0r8ABNIBvwTS +AAk70tzS3Ds70t0AA78ACtHDq5iYq5iYma4DmQAaqoqqhsCqhqysiLmIhYW3 +qZOWwojEwH3YV6sDrwGwA5wADI2dsryyn2p+5AMCBAMBAAoCAvX5+vsl9x4d +A/sAIPHnRu7y7Pg9RgMD5AMDLRQtA+QD5OQD5AMDBQUDBAUFCAMB5AQDAQUB +BFkCCAQBAgMDAQX/AwUDAAAAB5OCf4GBf38AA4EABJF/f4EDfwAPgX9xgYKR +kqeSlpOTkaaTAAOBAB1vdJGTkpOCgYBwkX+Bg4OWg4KCg4GWknKCk6i9qwAF +vQAQuL29mKeEgoOCgpFzkXKBggOTADempYFegX+DkJGWdYORgYKBgXF/gl6U +gV5egJGRhJKWg3+Bcn+BkpKmdZKPhM+/ONK/0tLX0tK/AAPSAAM70twABdIA +Cr+/B9fPq6uhmJkDmAASmZnAqorEqsC3xKypiKmFt7eFBMIACoXCwK4TntCY +wK8DnAANjY2yvLKfn7XW4xkEBAADAQAQBAX1+/r6+/scRUUcHPvs6QPqABH3 ++esDA+QDAxQtA+QDFC0ULQADAwMEAAMCAgUABQMAA+QD5AAEAwEFAQVaAgkE +AAQFAwMF/wMFAwAAAGeSgn9/kXF/W4F/g4FegYJ/gX9egY+BkaOSg6Zzk5KT +lJSCgV5/XZKjlpR/Xn+Bf3KRhJORkYJ/XoF/k4FcXnJecn9/gZGTg3+RXoGB +f4F/f4ODgn+CgnN/g4OlXl6BgnWCkYKDf3GRAAR/AB+BgoOAXn+BcqajkZaD +gXKkcoKCkqOnkYTD29fSv9K/AAPSAAO/0r8AA9IASzvbO9LS3r+/B9H90cfJ +q6uYq6uYmYuZwKrAqIaqxKmpwoi5wreFvsKpucTAws3Myauura+MnLGNnuGy +yo6ftdbkFAMFAgECBAXzRQAD+gdFABb56elG6ff67gMZAy0ULRQD5AMtFC0U +AwMDBAMCAQQDBQADAwPkAAUDAQVbAgkE/wMJAwAAAHODgn9ygoJ/W15zpoF/ +XoKCcl6PXn+BgoJzf4KRf5GCc6WBpF6Dk3OjgoOCcnGlgYKSoISTknKCk1yB +g3+kf3V1gV5elF2TcXFyg4F/cH+BgYODpnVxgqSSk5OBgV6Bf4+kgYF/k4Ol +coKDg4GBcn+BXoGRAAOTABaCg4OBf4GBgpOReHC40b+/19LS19LXBtIABDvS +Ow0F0gAHv92/B97DrgADqwAEmJmZwAOZAB+qqqiGqcKFhcKWuYipwsK5msS5 +xMjL2dDIwa+wnJyNAASyAAifjkJsRBQFBQMCAAgEBfBF+/r6HARFABf8RUXx +5uno9/rvA0PkA+QD5OQD5BQt5AADAwEFAwQGAgEEBwMABAUEAgFZAggEAQX/ +AwkDAAAABINygpADggB8kYF/kZFygoGBgn+BpIKCcIGBgoOCc4OXknJ/XoGC +gpOWc5OUlKRegnKBf5KCgYF/gpGRcnBef4GUg15ecpFzopKWcnKCgXGBkZGS +kpF/poKlg6Ref4OCgYFedJGSk5aTg6SBpHKQkaSCf4KBgpKCkaSXg16Bf15/ +cV29vwPSAb8B1wbSAb8E0gAQ29I70jvS0t6/0t2/v8bJqwOYACGZmJmYmZmq +qKysuazCubmXqcK5lsKawZycm8jIuKvAsMEAA5wADI2djo68so5C1kQtAwQE +AAQCAez7A0UABPv7RfsFRQAX8eXp+B3uBBkD5OQDA+TkA+QDFOQDBQUAAwQG +AgADBAUFAAMDAAMFBAQAXAIIBAMF/wMHAwAAAXIDfwAsgYJ/cYGBgn+Cf4KC +gXKBXoKBf4GDkpGCkYOTo5GCf15ygX9/koKDloFepIEEfwGDA4IBgwN/ABeB +g4FygYFegX94hJOCcoJ/gYF/gpCjkwADggAzkoOCgl5/g39/Xn90f5KCkYKT +k7eTkoKDg3R/f3GCgn+CgpKDgYKBgnFIq887v9K/0tK/AATSAATX0te/A9IA +FTvb3tLS3tK/3r/e3dHMq5irmZiYiwADmQADqqqKAAOpAC65uYXClpOWhcHB +CLO6V8ivwK2bsJuxnJyNsrLKn7KftWzl4wMFAgQCBeRG9R/6BPsAGUVF/PxF +RfvtE/n77QID4+QD5OQDA+QD5C0AAwMBBQMEBQEABAICBAUDAwADBQQEAFwC +CAQDBf8DBwMAAAN/AIRegXKCgn9ygnKCpF6CgX9yf4KCXoF0f5BycX+So5KC +kX9wf39epJORcoGBcoJ/XoGBcIKTg3WBf4GCgn9/gqR/pIKCpoJzg5SBXlyB +goGCgqaBcZJxkX+Bf3KCf4JegYJ1f3Kmg5OiqaKTlHSDf16Bf3KRg3KTg16B +g4Fep8Y40tK/0tcF0gAE19LXvwPSABc70t7S0t7S0t7S3tfdv8euq669mJmZ +mAADmQAExKyprAOFADLCuaapksSasZ4VEvbMyY2vwJubnJ2cjbKOsrLhytNs +5eMDAgIEAQID6fPg9fX2HkUcIwVFABL7+Pr67AIDGS0ULRQD5C0ULRQDAwAE +BQUEBAYBAAgCBAUFAwUFBF0CCAQDBf8DBwMAAAAUf4JygYF/f4OBf4J/gV6k +coKkXl4DgQB0XpGBgYJ/g5KRkXF/gYOkgl2Dg5OkXl6BgoFegYFdgpKSppOl +f5aCknGDf39epH+CkoKCg4F/f4GCf39ygYKTcoODgoGDg3ekcoFef4NykH+S +koWTkpOmf6SBf4GCgnKBg3J/cH9xTKjG17/Sv9K/0r/X0tcF0gAGv9I729I7 +BdIAC97d0t7e3caroaurAAOYAEHAyKqqisSGhoiIkoW5lqnEucGawLq7u8fH +yZ2wsIycnY2esrLKn7LKRmx+5AMCAgQCAQXp+Pr6Hvc8+/scRfxFRQAE+wAQ ++uoF5OTjLRQt5C0ULRQtAwQFAQQBBAUCAAQBAgIEAwUBBF4CCAQDBf8DBwMA +AAAKgoJ/pH+kkX9/cAOCAASPXn9wA38AIIJej4GBcX+BgX+jkoJ/pHSBcpOT +kZKCf4F/cn9/gXKBBIIAI6aThKKSo5allHWBcF5wgoGkgoKDgYFypF5/gHCC +cnKDcl6BAAOCAC9/goJ/gaSCgqOjk4KRg5KCdGCBXoF/f4KQcX9/cFteocbd +v9LSv9LS19LSv9K/1wAE0gAKO9I729s72zvS0gPeAATSDb/RA6sByAOYACOq +mcSKhoaoxKeIuampubmawJu5yMgW4sO9ybKcm7CxnI2csgADjgAIn7zTbOVE +AwIDBAAFBQPn8iYAA/oABfsd+vv8AANFA/sAEfr6RhQD5APkLRQtFC0ULRQD +AAMFCAQACAEBAgQEBQUEXgIIBAMF/wMHAwAAABV/f3FxXoFyf3+Cgn+CgnSC +f4F/gXQAA4IBcgGCA38ANnV/goJwcXBef3+CgYKRgoJ/gYKCcqSCf4GBc4Km +kniSo4KDdZNygYGCgpKWgoJbgoN/gV6BdAOSACuCgoOWk3WTkZGDg39xXoF/ +k5J1dYJxf5KTg4GBgoKkgpaUj3KjhKvU0r87AAPSAAe/0r/S19LXAAbSAAYN +0t473DsD0gANENLS3t0N3dHMmJi4qwADmAAaqpmZqoqqrIjCt6y3yMDIq8HE +yJivfdC9yJ0FnAAbsJ6O4Y6OvLzTbNbkFAQEBQICAwXk7Pb2H/tFAAP7AARF +RftFA/sAA/jn5AADAwAKLRQtFC0ULRQtAwgFAA0DBQUCAgQEBQQEAgEBAFwC +BgQBBf8DCwMAAAAig4N/gXKTpHKCgYGCgn9/gYKCXn+Af5B/f4Jxf4F/kYF/ +kQeBAEBxkYJwgYJypIKBgnGDf5GRp5KTk6Zxg6WDpH9eXpKCgn+CgYGCcn9e +gYOCk4KCg5OSoZKjgneDg4KPcY9yk4OmA38AFYN1goKBgX+Rk3Vyk3+pw8PR +v9LS3QAR0gAT3NLc0tzSO9vS0jvd/QfS0syrqwADmAAIqMiZmarErKwDiAAG +uZbExMDIA8EBxAPIAATNmK6dBZwAD42yssrKvJ+8jmx+5AMFAgADBAANA+Tn +4vr49R4c+vr7+wADRQAQ+vv69eXk5BTk5APkA+QD5AQDBgQABgUDBQQCAgQE +AwIBAVwCBgQBBf8DCwMAAAADXl6PAAOCAA6SkX9eXn9ygVuCf16BXgN/AA2D +f3Skgn+DXoF/XqRyAAOCA38AV3F/cX9/gnKCgn+Bf16ko5KWgpFykYKWlHKB +f3+CgXNxgoJ/XoF/f4KDf4OkcZOWk5aTo5Kmg4KkXoF/f5GUk4F/j4F/pF5e +dH+Sk5CCd3Gnxwe/3tLSOwAN0gAVO9LS3Nvc0jvb3Ns7EA3b292/3t7MAAOr +AEGhmJiZqJiZrIqJiLmIhbnB2D3VzMjBxLfIzb3NwJ2cnbGdjY2yysqy4bLh +juh+RAMFBAQFAwQD5uz3+UX7Rfn4RQAH+wAEK+MDLQMDAAbkA+TkA+QEAwUC +AQQDBQYEYQIGBAEF/wMLAwAAAARJXoGPA4IAE3Kkf4GCf4GkXoGPgX9bgYKB +f4EAA5EAEF5/gX+Cf5GCf39egYKDf3EDgQAcpHF/kYGCf3+CkoJygoKkgpKT +pF6Bg16Bf5CCcAN/AFSCdYGCf4FekZCjo5OTpoKTg4OBXoF/pHCCkn9eXoGC +gn+BgX+Df4FydajH0jsN3NLc0tw70jvbO9vSO9vSO9LcOzvSO9zc29w73Nzb +3NI70jsNB7gDmAAVq5jImJmZqqyJuaysqYjEnBUP+tnMAAOwAA6Nr8ivsJyx +sZyxsI2OsgSOABafjmx+REMDBQIFBAHk5+vs8PpF+/sdA/sAB0X7+/r77gMA +A+QADAPkA+QDA+QD5AMDBQYCAAQEBQQCAwQAAwICAQADAgEEXAIGBAEF/wML +AwAAACeihYF/gnB/cXGRg4KScV6CXn+Bf15/kV5/XpGCdYF/f4KCkpGmkXIA +A4EAmnR/f4GBf3J/pF6Cf3Jbf4GCk4J/g4OTgnF/Xn+PXqSRgnGPXqSCkYKC +gV5/pJKSlqaSkpF/g5SBpF5/f16Ckn+Cf3+DgnJ/g5KBW3CShMvdv/7S2zvb +O9LbO9s72zs72zs729zSDdLe0t470tLc2zvS0tvS0g0H0auYmKurmMiZqpmq +iqxTiLm5iLmxZ8zZy8mznZyxsJucsJsEnAAEfZ2y4QOOACHKyo5s1kQDQwQF +AgEC5+zu6O77HPocRfv7RftF+x766RkAAwMACOQD5APk5APkBAMFBAECAwQA +CwIFBAQCAgEBAgQEAFwCBgQBBf8DCwMAAABEB8uip15wgXKCg4KCf6SBcIF/ +XnKkcn+BgoGCgpF/cZF/kXCSgoJwf3CBgn+CgnF/f4FegYFypH+Cf4KBgnCC +kqOQf4EDfwAzgV5/goJygV6Df4KRf3Vef4GRf4J/goOCkoKCXoGBcoGCkX9/ +cIKBf6R1cnCBXpKoyzu/AAPSAFk72zvbOzvbO9I729I70ts72zvSv9Le0js7 +EDs72/7c0tzb3tfGq6uYq6vImcjAisSJrKyIiIWpt5rAob29ybGuu8nIfZyd +nJydsbKwstOO0+HKn5/TbH4u4wAEBAAKQwLl7u/q9fv7RQP7AUUD+wAXRfrg +LgPkA+TkA+QD5AMD5AMD5AMDBQQAawIHBAMF/wMKAwAAADPS18eopIGkXoKA +cIKCcoB/XoKRf4KCf4KBXnKRf4GBgoJyf3KCgX+BXoKkcn+CkH+Cf14AA38A +DYN/gX+RgXF/cpOEc4IAA38ADYGkXoGDf4GBf39yf4EAA38ADoFyf4KBgnGC +lKmTf4KCA38ANoGRgnN/pF6kcZOmpl6Rmce/0tLe0tzSO9I729LSO9s70jvb +0jvSO9K/3tLS3t4NO9IQO9vS3APeADghzKuhq6uYyJiqwKqZicSGuYWIubmI +xMTIzcjEyH3Jq8idnZyxsZyNnrKyjsqOn5/KjjXW5ENDAgQEAAXl6uxG8wAD ++wFFB/sABfnv5APkAAMDAAjkA+TkA+QD5AQDAQUBBGsCBwQDBf8DCgMAAAAW +O97XuJNbW49ekJGRg39/coGBf3OBcgOBABN/f4GBf4GCcZBwgX9ygoGRf3J/ +AAORABtygpFeXn+BgX9ecn+Cf4KBkZGQf15/kXF/gV4AA4IALZF/f4F/XoGB +Xn9/goJygXB/gqOjgnJ/cX+BgYKmgoJegXKTf3Bzkr3R3r/XvwAD0gAk3NI7 +2zs72zvS2zvbO9zS3NLe0t6/3r/e0hA72zsQDd4N3t7HA6sAB5irmJmZqsAA +A6wATIiphbnCt6y5ucTBwa/Eq7rJrq6xnZycnZ2wnrLKjsrhvMrK0+d+Q0ME +QwRDBAMD6ejk6Pr6+Pf7+/r7+vv6+UYD5AMD5OQD5AMD5OQDAwAG5AMDBQUE +agIHBAMF/wMKAwAAADDSO9LRw5KBgG9xgoKTgoGPf16kf4F/cV5/XoGRf16C +gpCCf3J/gZGCkZJ/kYJygqQEfwFyAX8DgQN/AB+BgX+RcaaCXn+CgV5egqRz +gpGCcY9egn9/gV6Cf3B/AASCABeEkX+BXoJeXoFeg3+BgYJygnFJqMfRvwAG +0gA23NI72zvS2zvbOzvbO9s72zvb0t7e0tLd3tLb29zbOw0N0tI4x6u9q6u9 +mIuomcTEqqmsuamFBLkAI8HBnLDIwc3Mya7InZ2xnJ2cjbKyyo6fsp/KytNs +fuRDBAQFAAMEABwD5eXkGfT6+vT1Rfr6+/v69eUD5APkA+QD5OQFAwMB5AUD +AAMFBAQAaQIHBAMF/wMKAwAAADzdOzjXB9Cqj4+Df4KTgXRegYJxkYJ/f4+B +XoF/Xn9epJGDf4F/kZFxkIKDf3F/gV5egXJef49egXBegXEEfwAag4NwcX+B +goGBkXNwkaN1pHGCf16kXoF/gYIDfwAGdJGRkHGkA38AII+Bf16CXpFxppNz +qM/ev97ev9I729LSO9s70tzSO9LcA9IAGDvS0jsN3tve19Le3Q3bO9vc29ze +0r/RyQOrADOYq8iLmcCGqIaIqYW3woXEmpqxCN/5zGXIw6vIq52xnLGdjX2d +so6Osp+fjspC537kAwUABQQBAwTkAAfs8/ofEvf7AAP6AAr47eTkA+QD5APk +AwMADAUD5APkA+QDAwUEBGkCBwQDBf8DCgMAAAXSACUHxquWkZJ/gpN/pH+B +f3GBpIF0gY9/coJ/gYJdkXCBf3J/gpOCAAORAA9/cX9/gX9/XoF/XIGBf5EA +A14BggOSAGCBf4FxgYGkgpKRgYJxcH9/gnJ/gYF/XnFygYJ/gpZ/XIGCk4Ny +pKZwgpGSlomrz9K/0tI729LSO9I729I729LSO9vSO9s70tzS3NLSO97e0t3e +3tzc0tvS3N7Sv8aYq6sDmAGZAcgDmQAiirmsrJaWuay5wcGxyMniusOvyMiw +wa2wsZ2cr42fsjfT0wPKAAfTM2zl4wUEAAMCAB8EBAPl5OXk5uv3+vfzHvr7 ++PTn5APkA+TkAwPkAwMFAAcDAAMFBAQAZQIBAQMCCAQDBf8DCgMAAAXSADDX +3dS4mX+SosVvgZF/Xn+Bgn9/gX+Bf3+Bcn+Qc39ef4N/gpGCf3+Rgn9/gV5/ +gYIDfwAtpHKRf4OBf6SCopKDgoGPf15yf39xg4KRgYKRf15/gV5/gX9/cX+B +goORj6VxAANyAApwkpKQt7etuNS/BdIAHDvS29LS2zvS0jvSO9s70tw70tzS +Ow07ENvS3tID3gHbAdsD3AAF0ty/IboABKsABJiZyKoDigAFrKyIiKkAA8IA +D7nBxMLIfUFXw7ivwcCwwQADnAASsI2cjtPTQkLTN8rTQublLQUEBQIAGOXo +5+Xl5uz19fj49/r69uzk5AMD5APk5AQDAQUHAwEFAQRmAgEBAwIIBAMF/wMK +AwAABNIAPDvS0tfXz7iZqJJ/XoGBpKRyg3J/Xl6BgoJef4ORgX+BcHCRkV2R +f3+Rg3+Rf3+Bf3B/cn9ygpGRk5F/ggOTAAN/f3EAA38AV4GBj16DkZCCcIKB +g3+BgYOCcH+Bf4FdhJKmpoKCf3KDW4KpwKvG193SO9LSO9Lc0jvSO9LS2zvS +0ts7O9vS2zvbO9sQDTve3tLS3tLbO9vc0tve0tfGrgADqwA0mJjAiorBiqq5 +iIWplrnCubnBmsHIyQnivc2cr6/BnIyxnbCwso7TQjTTjo7KNGox5eQEBAQC +ABQE5OTp6ebm5+rp7Sb4+fjz5wPkAwPkAAMD5OQAAwMBBQEFBQMABQUFBAIB +AGQCAQEDAggEAwX/AwoDAAAG0gBpv9K/0tfRw5indoJeXo+Cf4Fef16Bf39e +pH9xg49ef4KCkaSCgXKCgn91gn9wgnKBf6SBcYKCkn+CcoKSgpOBgYKCcYGC +XoF/f4KCcX+BgoGCgl5/cIOBf4KFo11IcreShKK9q7jO0QvXAAPSAAU70tIN +OwAD0gAl3NLb0jvb0jvS0ts73DvcO9I70t7S3b/S0ts729zc0tvc3t2/zAAE +qwAxmZmqiaqGxLmIiIfCeMK5mrHBmrnI1eBXmJidnLGxnLGcsLCeCI7T047T +yp+OQjPWRAADAwEEAwIAGATp5uTn6ezo5OXl4Pj48+0D5APkA+QD5AYDBwUA +BAQCAgFkAgEBAwIIBAMF/wMKAwAAB9IADTvSO7/S3dHHvaiRj4EAA3IAJ39e +f16CgYJwgYKBcYGBgn+Rg5Fxf3KCkYGRcZF/pIKCXn9/goJ/cAAEfwAqgpN/ +XpOmkYJ/f4KCf39xf4F/cqRygoGRkYKRcYKmk3iouMPDy8bU3d4QAzsACtw7 +297bO9IQ2zsD0gARO9LSO9LSO9s7O9s729LSv9IABL8E0gAD2zvbAAPcAAje +0iLJq5iLiwOqADGGrKyGuYiIwpKswsGxsYwInMS41dCizZycsLGcnAiNjbLT +047TyrKOn8rT6OblQwMDAAQCABEE8PDp5eUwRufl5fT59vDoAwAG5AMDAAQE +BQMDBgUABQQEAgEBAGQCAQEDAggEAwX/AwoDAAAABdvc0tI7AAPSABu/0tK/ +0r/XB9HDq6iGc1tepV5/gl5bj15/goIAA38AP4J/cn9/gn9epHF/f5Fzf39y +gV5/coGCcX9/goJypYGCf4KBgpJzgoKSkX9wcV6Bf4KBpF5/cXGPgX94q9HX +vwAE0gBQO9I73Dvb0ts72zvb0tI70jvbO9s73NI7DTs7DTs70jvS3t7d3b/d +0t3b0g072zvbDQe/IbirmMivmYrAhqnEiKyGp7eExLfBwZwIycl9scEDyAAL +sLGMnLGxnJywnbIABI4ADNPTjuHKQmrmROQDBAMCABgEBfP39u7m7OXo7vT4 +9u/q5OQDA+QD5OQDAwUFBQRaAgUECwEDAgYEAAMCAgUA/wMMAwAAAAQ73NI7 +BtIBvwTSACE4v9LRxsO9hExegYFepIKCgYJ/kXORcIKBgn9egYN/cYEAA4IE +fwAzpJGRg3+Cf3WCc4KRg4KCgYFepJF/f5FdkYKCf4JwXl5/XoGDpIKCpHWY +0de/0r/Sv7/SAAQ7ABrbOzvbO9LSO9vS0ts72zvS2zsNO9ve0jve/gPeAd0B +0gS/ACwH0ts729sN3r/ev8yuq6vIi8DAmYqJrLmGwoW3wrm5sbGduxU8zI2N +yMScsQOcA7EABbCwnbLTAAWOAAvKyo5Caubk5AMCBAADAgAQ5OD19/jzE+UD +EyX4MOzmAwbkAAQD5AUDBQUFBGwCBwQAAwIEBQD/AwwDAAAABdLbO9LbAATS +Ab8E0gG/A9IADr/S3r/LvYReSIGAW4GDA4IAGpGRk5FxgnF/f4J/f4Jzf16B +f15egpGSf5F/A4IAJZN/gnGRgl6PXoGCf3J/goN/j39/j4J/gYF/pI9tpHa4 +0d3e0r8ABdIAMjvS2zvbO9vS3NI70tI72zvS0tzbO9s73NLe3jvdv96/3d2/ +190H3b8N0g3b0tIN3b/HA6sAKa6umIuLrImamojEqMTCiLmMZbEIq8nMzsyv +yZywsQiMsZ2xnK+Nso6yAAOOA8oAEI7TQmzlRC0EAQECBAPn9vgD9wAV8Ubm +6/kS6kbk5APk5APkA+QD5AMDAAMFBgRaAgUBDAIJBAEFAQX/AwwDAAAE3AE7 +B9IABL/S0r8E0gAlvwfS0ca4qEhIXoGCgn9/kaRxXZJ/f4KBcoJ/f5GCgYFe +gV6CfwAEggAbgYJxf3+BgoKSXo+Bf4KBf4J/gl6BXqSSwoN/AANeAAVyqKvL +1wAH0gG/A9IAHDs70jvbOzvb0ts729I70jvc0jvbO9vS3tLe3d4E3QAlv92/ +3dLXDdLb0t4N19e/JMmrrq6Yq66KwYqsuYiJwre5xMSswQADsQAVya+41auc +sLCxnLGdsbGcsK+dso5VAASOAAvTjsrKQmwv5AMEAQADAgAXBev4+vr59vP0 +7/T06UbmA+QD5APkA+QABAMBBQQEbwIABAQEBQUFBP8DDwMAAATcAATSO9s7 +CNIALb/S0r/S0t7e/tHPuKdMcEhef15wcpGgkn+BgoGBcpF/kZGCkYJ/gX9w +kZOScAADfwAPgX9ypHGSkoJeXoF/f4GDAANxABKCt6ineHGBcqfDxt3X19I7 +3NsH0gAf29zbOzvbO9I70jvS0ts729Lc0tzb3L/e3d3e3b/SvwAE3QAM19LS +O9sN0tIL0v0iBKsAEYvJmYtSiYmIUYipucDEq8jEAAOxAAzBqKvJ0MmxwMGM +jMEDsQAFnLCNnbIABI4AJtOOytM300JsfkRDAgECAQID8Pr6+/n39fj59+rm +6Bnk5AMD5APkBQMFBF8CEgQBBQEFBQQEAwEF/wMKAwAAA9wAB9vc2zvb0twA +A9IBOwE7C9IAFN7d0cOYp11Ic16BkpKTf3+BgqR1A4IAFqRxf3+CpIKRf5GR +XoGCgpJepIKkpJEDfwASpIOBcnBwqL24xtfRxszG1L+/A9IAD7/bO9LS2zvS +29LbOzvS3AAD0gAt2zvb0ts70jvS0tw72zs70tIQDdLe3tLe3b8H19La0toN +0tLb0tK/z7iurquLAAPAAYoDmgAfU3u5uZbNwJjBwbHBsYzEyM3NsJycjLCM +jJyxnMGvsgAHjgAT046O09O15uXjAwIEAgID5O34+wAE+gAF+fr06OgAA+QA +BQPk5APkAAUDAQUKAgMBBwIBBAMCAQEFBC0CFAEFBAECAQIUBAEFAQX/AxAD +AAAADtvb3A3b0tvbO9LcO9LbD9IAINfRz8O9qF1LcV5/gX9/goJef3J/gpNx +c3OEp5ODgoKTA4IAHZGTgnKBcnOCcZGSkV2nmLjG0b/SO96/O7/e0tK/AAPS +ADo70jvbO9LSO9I70ts70ts70jvS3NI72zvS2zs729Lc0t7e29Le19Ld3t3d +B9LX29vS0g3S29LX0czJA6sADYutisHBmapTiZq5icEAA8gEwQAMCLGcwcGx +sbCxjLGMA7EABbCvnLJlAAeOAAo30zfT6dYuLQUEAwIABQTk6Oz4AAT6AAz7 ++e3o5gPk5APkA+QFAwEFAQUKAgEBAQEIAgEEAQRJAgUEAQIBAhQEAQUBBf8D +EAMAAAAHO9Le19Lb0gAG2wE7ATsL0gA2v9LSOL/Sv7/Ry7iohJJzk3NeW3Nw +SHBwkpCRkqOot5F/kXGCf15/goJ/cn9vf5GShJi9w8/XA9IBvwXSAb8H0gAt +3NI70jvb0tLc0jvbO9I72zvbOzvbO9LSO9vSOzvSEN4N0te/0tfe3t3dDdrS +AATbAB7SC97XIcyumK6uq4uKiYrArKyae7m5wcDM1dW4yMAFsQAGnJywsYyM +A7EABZyxsLCcAASOAbUD0wALyo7KjkJsfkRDBQQAAwIABQTk6OfvAAX7AAr0 +6ufkA+QD5APkBQMDBQoCAQEDAgkEAQIBAgUBQQIFBAECAQIPBAADBQQEAAMF +/wMRAwAAAdEDvwHSA9cAD9Lb0ts729LbO9I70tI72wAD0gHbA9IANdfS0jvS +3dfRz8/Hw7jDuL29mKeGXUlccJCnhHGRkX9/Xl5/j3+RkYSGobjDy8/R3ju/ +v9LXAAPSAAPX0tcABNIAHTvSO9LSO9vS0jvS29I729I72zvSO9Lc0jvbO9s7 +AAfSABfe19LX19LS2zvb0jsNO9vb0tvS0jjMrgADqwAhmK6tUsGaxHu5rHt7 +ubHI4NnO1a/AsYzBnLGxnMGMwbGMAAOxAASwyJydBI4ABNOO044DygAe02ox +fuTkAwQBAQQE5ujoRvEd+vv58Ebl5APk5APkAwMABgUDBQUEBA0CBwQABAUF +BARHAgUEAQIBAg0EBwX/AxIDAAAAA8bPOAAEvwHXAdcE2wAV0ts70tLbO9zb +OzvbOzvb29I70tLXAAPSAFfev9LS19LXv9e/0c/Gw72iXUtdkZORk4OmpsWj +qqi4w8vG1L/S3t7Sv9LSO9LeO9s7O9I7O9I70ts72zvb3NLS3NI70jvbOzvb +O9w72zvbOzvS0jvS0jsABdIACDvb29Lb0ts7BtsAJ9zS29L9Icyuq66YrouL +ioqaiYm5uXu5UZqxsdDH1dDIrbCxjJycCAADjAGcBLEADMGvr7GOjrKOjtPT +jgTKABfT6THlREMDBQECAgPm5+noRvn7+/Xt5gAD5AAHAwPkA+QDAwAEBQEE +AQQMAggEAQUBBQgELQIZBAECAQINBAYF/wMTAwAAACO4uMfGISE4OL/X0tLb +29LS3Ds70ts73Ns70tvSO9LbO9LbOwAE0gG/BtIACb/Sv7/d0tHGxwAFwwAN +x8fG1NHa0t3X2zvS2wAD0gE7BNIAD9w73NLcO9s72zvbOzvbOwAD0gE7BdIA +G9s70ts70tvbO9zS29Lb3NLbO9s72zvbO9vSDQAD2wAP0tvS29LbO9vS0t6/ +0biuAASrABmvUsGamqyswcCaubnEmpqMyL3QuMiwr6/EAAaxADGbsZyxwZyv +nbKOnY7K09M3ytPK09NCbNZE5AMDAgEEBAPrRulG7PD29vDn5OQD5APkAAYD +AQUBBQMECgIUBA8CCgEPAhQEAAUCAgQEBQAKBA0F/wMWAwAAAAe4q6vDw8bG +AAO/AAbS0tvS19IE2wATO9vS2zvbOzvS3NI70jvbO9LSOwAM0gAEv93e3QS/ +BdIB3gHbBNIAA9vSOwAF0gAqO9s7O9vSO9vSO9s70tI72zvS3NI72zvSO9s7 +O9s70jvbOzvb0tzb3DvbA9wABtvc3Nvb3AjbAC3S29Lb29cN0r8huMmrq66Y +i62aU8HEyMDEwbnEfMSawZrIw9WrxLCtyM3IsbEABIwACLGMsbCvnLKdA44B +0wE3A9MAIjfTQtNCbH5ELUMFAgIEBANG7urp7Uby8UbkBOTkA+QDA+QDAwMF +AQQBBAsCFAQoAhQEAQIDBAAFBQUEBAUABgQNBf8DFgMAAAO4AAaruLjDxiID +vwAG0r+/19HXA9sAFTvbO9s72zvb0tzS3NI729w72zvbOwAI0gAHv9LX0tI7 +0gAKOwAz0jvSO9vSO9LS29LSO9vSO9s70tzS0ts70tzS2zvS3NI729LbO9s7 +0jvbO9Lb0jvc2zvbAAPcAATb3NzbA9wB2wHcCNsALQ3S29Le0r8jyZiryauu +i62tiqyawXzJzMzJr6e5wZrEwMDBsZubBo3IqMGxsQAEjAAGsZuvsJ1lBI4A +JdOOjtM009NC6Wox5S1DBQQEBQIE5ebr8edG6e/r5uTkA+QDA+QABAMBBQEF +AwQHAigECgIlBAEFBgMGBA0F/wMWAwAAAA3DvauruKuruMPHIyEhAAO/ABXR +v9rb3Nvb0ts7O9vcO9I70jvbO9sAEtIAGds729vS29vS2zvSO9w7O9s7O9s7 +2zs72zsABdIAENzS3Ds70tvSOzvb0tLc0tIDOwAQ0ts72zvS2zvc2zvc29zb +3ATbAdwD2wHcCdsAB9fb2t3dvyQABKsDrgAOmK2awZpTwbHM1dXL0MADwQAL +wMi3yLCNnLCwwMAABrEABpyMsK+dsgOOAbUD0wE3AcoD0wAKQkJs5i5DA0MC +BQMDABLm5+n07Ebp7OfkA+QD5APkA+QDAwEFAwQIAigECgIkBAEFCAMEBAEF +AwMKBf8DFgMAAAm4AASrw8PGAyEDOAAavzs729zS29zSO9s729zbO9LS3Dvc +3NI72zsG0gBBO9I70jvbOzvbO9s729s729Lb2zvb0tLbO9Lb0tI72zvbO9I7 +0tvS0js729s73DvS3Dvc29LbOzvSO9LcO9s73NsABNwB2wHcCdsB0gPbAAzX +C9oL293dv8euq8kDqwAhmIuLrVNSrFKasczG2dWryMGwr82rq62vnbHIwKqw +wcGMAAOxAAmMra6vsrKOjrUAA9MAGzeO0+rTRtNC6NZEGUMEBAIFA+Tn6PJG +7+jq6QAD5AAEA+QD5AUDAAQFBQQEAwIBAQUCUQQBBQQEAQUBBQgDAQUBBAgD +BwX/AxYDAAABwwi4AAOrq7gAA8MBxwHGAzgBvwE4BNIAJzvb3DvbO9I72zvc +O9vS0jvbO9s73NI72zvb0tvS0jvS29I70tvSOwAD0gE7A9IAFTvS0jvSO9w7 +29I70jvS29I70tw72wADOwAS29LcO9vSO9w73Ns729zb3NzbA9wABtvb3Nzb +3AXbAdoG2wAJ2trX0r+/IcfJAASrAZgDiwASrVKae4mGrLnI0NXLyZucfT3Z +A9UAFc2vsJvAwcGxwYyxjIybr6+cjmWOtQAEjgAcytPK047TQuls5URDAwQB +AQQD5+ru8uvr6kbkAwPkBgMDBQMEAAgCAQIEAgIEBAYFFAQIBREEAAUCAgQE +BQAFBAUFCgQFBQMDAAQFBAUF/wMwAwAABbgAD6u4yau4uKu4uGe4w8fGIgAD +OAG/Ab8E0gAQ2zvb3NLc0tzSO9Lc2zvb3APSAAPbO9sAAzsAF9s72zvSO9s7 +0tzSO9s72zvS3NI72zvbAATSAB8729LbO9I70ts70jvbO9s73NLbO9s729s7 +29vc3DvbAATcAdsD3AHbAdwD2wHaA9sAMNrS2tvaDdrX0r+/xriurqurma6Z +maqKiYlTuVGpe4iGxJjNxLCdyd/My87Lva+cnQOxAAucjLGxjLGvyJydsgAF +jgAiN9PKjsrK0zfTamzl4wMCAgEEAwLr8PFG7uxG5OQD5AMD5AUDAQUBBQQE +AAcCAQIEAgQEAAcFFAQHBRIEAQIDBAEFBQQFBQkEAAQFAwUFBQMABAUEBQX/ +AzADAAAAC8PDvbjDuLiruLirAAS4AAiruLjDx8fGIQM4AFa/vzi/0jjSO9I7 +0ts729LSO9I72zs70jvS29LSO9s72zvbO9s70jvbO9s70tzSO9s70tI72zvb +O9I7O9s72zs72zvbO9Lc0tvcO9vc2zvc0tzc29zb3AjbAdwG2wAO2trb2trb +C9rSOP3Uuq4DqwAJmIuZi4qLUopTAAOIABeHh4iFqanBjLCxjX3iVsPLvauv +nLGbnAADsQAIjIybxMiwnZ0DjgAF047Tjo4AA8oAFtM300Iz5kQtAwICBAQF +5Or17+nqRuYD5AAEA+QD5AQDAwUEBAAGAgECBAUFAwMFBQADBAQFAAQEAQUE +BAEFBwQHBRQEAwUFBAUFAQQBBAUFAAMDBQUACgMDBf8DLwMAAAAIuL3Dvbi4 +w70GuAANw8y4uKu4uMPDx8YhIQADOAS/A9IACzs70tI70jvSOzvbAAPSADo7 +2zvS0tzSO9s70tI72zvSO9Lc0jvb0tI729I70tI72zvb0tI70ts70tzS3Nvc +2zvb0ts729vc29vcBNsB0gzbAATa2tfbA9oABtfdv8+4rgOrACWurpmKrYqK +mlN7UVGFp6mIh4Warcm9rtOcsxfYuL29qpucsYyMAAOxAAubnLDIr5yyCLKO +0wADjgAD08o3AATKAAk0Qud+5CAFAgQAAwUACejr9PBG6eYD5AADAwHkBQMF +BQMEAAUCAQIEBAAFAxMFBQQIBRIEAwUBAwUECQUQAwMF/wMvAwAABMMABri9 +uMO4wwe4AcwFuAAJw8PHx8bGISG/AAU4AATS0js7A9IABjvS0jvcOwTSADU7 +0tI70jvbO9zbO9s729zSO9s7O9s73DvbO9zbO9s7O9w72zvb3Nvc29Lb0tvS +29LbO9vb0gAD2wAI0tvS29LS29cF2wAO2tva29La2gvd3jvRx8kDqwOYAAOL +qlIAA4kABZpSiYi5AAOHABWIuYibsLjL0JywfRdrzaGiwJubsYwAA7EACYyx +wa/InJ2yZQAEjgAi08rK08o3yso30+kx5eQDBQQCAgMD6vIq7enm5OQD5OQD +5AQDBgUDBAAEAgECBBkDBQUIAwEFAQUQBAAEBQUDAwUEBgUBAwEFEgMBBQgD +AAXkA+QD5AD/AyMDAAAAA73DvQADwwO4AAm9w7jDw7jMuKsAA7gBwwHDA7gE +wwPHAAzGxr+/OL+/ODi/v9EEvwHSAzsABNvS3DsE0gAi2zvSO9I70jvc2zvb +Ozvb0jvS2zvS3Dvb3NLbO9zS0tvb0gXbAAXS2tfa1wAE2wAG19rX29faA9sA +B9Lb2tva29sAA9oAYde/ODjGw8mYq5iumIuti4qsrJqaibmJe3uHh1OJuYW5 +sQjiuJiwsbDIyKLNqMCtjMGbwYyxscGvyLCdnbKOjtPTjo7TjsqOytPK6tNq +5eRDBQICAwID5vIS7unn5AUFA+QACgMACAUFBAICBQMFLAMBBQcEAAUDBQUE +BAAPBQsDAAXkA+QDBQD/AzYDAAAABL3Dw9ADuAAMw7jDuMPDuLjDzLirA7gD +wwG4BMMBuATDAAPLxr8ABDgGvwAHOL84ODs73AAE0gAQ17/Xvzs40tI7O9LS +3NLbOwbSAA3b0tLc0js729Lc29zSAATbAAPS29oAA9cABNvS29ID1wHaAdoD +2wAS19vb2trX29ra19vSO7/Rx6uuA6sABYuui4tSAAOKAAeJuZq5iIi5AAOH +AbkBUQOIAAqbjczDyK+wm4zIA8AALsHBnIzBsbGMwa/Ir52dso6O046Oyo6O +ytPTNMo300JsfkQDBQIFAgID6fXt6eYD5AADAwPkAAQDBgUABwQEBQUDAwUA +LgMHBAEDBAUEAwoF/wNHAwAAAAW40Li4wwAHuAAKw7jDuLiruLi9uAPDAATL +w8PHCMMABcfLy8bLAAPGAAQh0TghBDgDOwHSAdIKvwAD0tI7AATSAAfb0tfX +0tLbAATSAA7b29LbO9I7DdLb19La2wTXAAXa0tLX2gAD1wAM29rS2trX193R +29raA78ADdHHzMmuq5mYmIuZi4sAA5oABInBUIkEewAWuYe5h4iHuazAqq+w +r5ubrcCwsLGcwQObAAWMsYyMmwADrwAEnJ2dVQSOABHTjsrKjjTTRtM3Rmrm +LuQDBAADAgALBQLo7kbn5OQD5OQABAMDBQUEAAMCAgUAAwMB5AEFLwMFBAMF +CgMABwUDBQMFAwUAEwMACeQD5APkA+QD5AD/AyoDAAAAB7i4q9C9uNAAA7gA +CdC4uMO4uKu4uAAEwwfLAcMHywAEw8vDxwPLAcYDywADxsbPAAs4AAS/vzi/ +AzgABtK/0jjSvwfSAb8E0gAJv9K/0tfS19LXAAO/AATX2tfXA9oAUtvX2tva +19ra0dra3dfXC9K/v9THq66rmJjIyJnAi8FTmpqKmpp7U3uae7mHe4eHl4ep +xMCtuK+tr62YyKrBnZ2xjMGMjLGxnJvBr6+cnY6djrIEjgAYyjfT00JCNEbT +6Wx+5EMFAgECBAHk5unnA+QABwPkA+QDAwUACAQBAgEEBQMAA+QD5AAtAwEF +BAQBBTEDAAPkA+QA/wMlAwAAAATZ2cvMA7gBqwHQBbgBwwW4AcMBwwPLAAnG +y87Lzs7Ly84ACMsADsbGy8bLx8vHy8fGxs8hBMYEzwAGIcYhz9HRA78B0QG/ +A9EAC7/R0b/R0c/R0c/PAATRAAPP0c8ABNEBvwHRBNcALdLa29rS2tva3dfR +0dcH3jshx7iYq5iroaiorYqKUol8mq2tr8GaU7l8mpqZiAAEhwARlsLByMfV +0L3Ar67AyMCcnbEABIwADJyxm63AyLCdnbKOsgSOAAfKjo7TNNM0AANGAA8z +5+VEAwQCAQEFBOTm5+QABAMB5AMDAAUFBAQCAgADBAQFMAMB5AwDAeQiAwAL +5APkA+QD5APkA+QA/wMpAwAAAAm9w8vOz9nGx8wAA7gABL24uMwHwwPLAAPO +y84ACMsADM7LxsbLxsvOxs7OxgPLAAXHy8fLxwADywAIxsvGy8vHy8sExgAR +zsbPzs/Pzs/Pxs7Gxs7PzsYAA84BzwHOB88B0QTXAAXa19ra2wAD2gAJ19HX +196/xsyrAASYAC6rmaqKiqqqmlNTe3yt1cPImMSMyNCryHu5iKmpwsGctszL +1cuYm67At8GMsbGbBLEABZvBwK+wAAOdAAWOso6OsgADjgPKAAtCRkbTN0Lo +L0QDAwADAQALBAQD5uYD5APkA+QAAwMACQUEBAICBAECBAADAwHkQAMB5BgD +AAXkA+QD5AAOAwAE5AMD5P8DJAMAAAOhAAm9vbjDz9HZ1cwAA7gACdC4w8O9 +w8PLywAEzgHLDM4AA8bOzgAFxgAGzsbGy8vGA8sADcfLy8bOxs7LxsvGy8YA +Bc8AA87OzwAEzgADxs7PAATOBc8AB87Pz87Pz9EAA9oAUNfa2tva29oL3d3R +0cbDq6uYmKuYqJmqioashlNTe3tTfHyay8vJq5vI1cfVvYaJhoiIp8GeGrPQ +w73IsK/AqsGxsYyMsYyMm8GvyLCcnbKyBI4ABMqOyo4DygAYRtNGRurpbOXk +AwIBAgEEBeXm5OQD5APkAwMACQUFBAIBAgQEBQADAwHkKgMAA+QD5AAXAwHk +GwMAD+QD5APkA+QD5APkA+QD5AD/AyYDAAABvQihAAXL0dnOwwADuAHQBMMA +BMvLzssQzgAdy8bOzsbGzsbGy8bLy8bLy8fLxs7Gz8bPxs/Oz84AGc8BzgPP +AdkH2gAM3QvX0b/RIcbDyZirA5gALplSiqyKUqxQiImIe1F7fHt8i9C4wJur +2dWrisCot8S3ksC8Gu7Nvb2sm63ArcEDjAAKmoyMm62tyK+cnQOyBY4AG8qO +yp+fytM00zdCNeZELQQBAgQCAgPl5AMD5AAFAwAMBQQEAgEBAgUD5APkAwMA +BuQDA+QD5AMDAA3kA+QD5APkA+QD5APkAAMDAeQlAwAD5APkAAMDABnkA+QD +5APkA+QD5APkA+QD5APkA+QD5APkAP8DNgMAAAqhABS9w8/P2cPMuNDDw9DL +y87Oy87Oyw3OAATLxsvLC84DywTOD88BzgPPAdkJzwAGzs/P1NnRBdoADN3a +3Q3dvyLHq6uYrgSYACuZilLBiopQiVFTe1FTe1N7iXt7U3yaiYqww8vDwLeq +qqHIt8CeFrOYqKisAAPBAAWMsbGMsQADjAAJrcDAr5ydnbKyAASOAAPTyo4A +A8oAEp+fytM3RkIx5UNDBAEBAgEDAwPkBgMAAwUEBAAEAgEFBgMB5AcDAeQP +AwHkAwMAB+QD5APkA+QABwMAA+QD5AADAwHkEwMB5BwDAA3kA+QD5APkA+QD +5APkAP8DKAMAAAAIoaGgoqKgoqIEoQAHvcvP2svDuAAFwwAFy8vOzssAB84A +BdnOzs/PAATOAAPLzssAFs4ABc/Pzs/OAAPPAc4DzwHRC88ABc7P2c/RAAXa +AB3X17+/0dTMq66YmKuZmIuZmYpSqqqJilJRU3tTUQADewAgiKmIrLmvqorA +isCZmanEyNXDzc2Yr1bJyKKnxLCwsWUEsQAKjJubrZnIsJydsgWOAAXTN9PK +ygADnwAIyso3ykLo5kQDBQAHAQECAQQD5AAFAwQFAAYEAgQFBQQDAwHkBQMA +A+QD5AAFAwAN5APkA+QD5APkA+QD5AADAwHkEwMB5BEDAeQFAwAZ5APkA+QD +5APkA+QD5APkA+QD5APkA+QD5AATAwEF/wMjAwAAAAaRkaFwbW4EoAShAAe9 +y9nZx9DQAATDA8sDzgHLBs4B2QPOAc8EzgHLCc4AD8/Oz8/Oz87Pzs7PzsbO +zgAFzwHOA88ABNHPz9EHzwAFzs7U2dEABNoE1wAE0cfDqwWYABCZra2KUouK +qlOJmVN7TlFTA3sAIId7e1OIe3zJ0L3QvcSshYiJsMzL1cvLw72ZqqrAhq2M +BLEEjAAQsIrIr42dnY6yjo7TjtPK0wPKAA2f68rKN8pGM+dE4wRDAAUCAQUB +5AMDBQUEBAAGAgMD5APkAwMB5AcDAAPkA+QAEAMB5AMDACjkA+QD5APkA+QD +5APkA+QD5APkA+QD5APkA+QD5APkA+QD5AMD5APkGwMAA+QD5AD/AzMDAAAA +DKCQj49wbqNdbqCgogShAAS9ztnOA8MAA9XD1QAFyxvOAdkDzgAFz87Oz88A +A84IzwAD0c/ZAAXPAAbZz9nPzs4D2QAM0drX19rX17/PPKurBJgBiwOZAANS +maoAA4oABZqJU4m5AAZ7AAlTU3tQhYi5yMcAA9UAEcu4qIeJwbJrzMPV0L2h +qKetAAPBABGxwYyxmoyajMGKyK+wnJ2dsgAEjgPTABHK08rKLJ8syjc3QjUv +RC1DBAAFAgAFBOQDBQUABQQBBQEFBgMAA+QD5AAEAwAF5APkA+QABgMACeQD +5APkA+QD5AADAwHkAwMB5CsDABnkA+QD5APkA+QD5APkA+QD5APkA+QD5APk +AP8DNgMAAAHNAX8DbQAHcKBIW22PXQAFogARocPP2dW4w9XDy8vVy87LzssA +A84B1QfOAdkFzgAGy87Oy87LA84B2QbOA88ABs7Pz9nP2QXPAAPZz9kAA88A +Fs7Uz9nZ0dHa3b/X0r/UxsyrmKurmJkDigALi6qsUYmJUsGJwbkAA1MADrl7 +e3x7fHyLmK2Je4x9A9UAE9CLrZnEiYnhF8m9vaGYilKEm7EAA4wBsQOMAAub +m8TAyMCwnJ2ysgADjgAFyo7Tyo4AA8oDnwAKyjfKRmrW5QMDBAUCAQUFAwQE +AQUMAwHkBwMABeQD5APkAAsDAATkAwPkBgMAJ+QDA+QD5APkA+QD5APkA+QD +5APkA+QD5APkA+QD5APkAwPkA+QD5AD/A1ADAAAAG21vbW1uWV5vbVlucJFd +kKCgoaG9y9nO0MPD1QAKywADzs7LAAjOAdkOzgAK2c7ZztnOz9nP2QPPAAPZ +z9kABs8F2QAL2gva3dK/0cfMuKsABJgAE5mZqqqKhlOJiVOImnuarciqmqwA +BMEAIXx7fIzN0L2Yr8GbrrjV1cPBmqrCubmdE32hoaiqmpuGmwAHsQATjK2t +wMiLsJydsrKO047KjsqOjgAEygAMn+ssNzfqQufl5AQCBAEAAwIEBQAGAwME +AQUEAwAP5AMD5APkA+QDA+QD5APkAAcDAAfkA+QD5APkAAgDAAPkA+QAIwMB +5AYDABnkA+QD5APkA+QD5APkA+QD5APkA+QD5APkAP8DNgMAAAASgJCQpMVZ +WW9tbYCQcJBdkJCiA6EACdDO2cvVw9DL1QAGywAFzsvOzssABs4B2Q3OAA7Z +ztnOztnPz9nPz87P2QTPAdkBzgXPAAvR0doH2tfR0cfMqwADmAAgqJiomKGZ +iVOIiVFRe1FRe3uKU5nDmarBwKvIyIqiwc0E1QAs0JjErZirw9CrmcShoaiu +ja6ZqKeqm5rBm7GxjJqMm5utisDIr5ydnp2yjtMDjgADyp+OAATKA58AEcrq +ykYz5kQDAgQCAgEBAgQFAAkDAAoFAwPkA+TkAwPkBAMB5AMDAeQDAwHkAwMB +5AgDAATkAwPkBwMACeQDA+QDA+QD5AADAwHkAwMAEeQD5APkA+QD5APkA+QD +5APkAAQDAAPkA+QAHQMGBf8DLQMAAAAJkMWgzVltWW6AAARtAAZubnGkoKAE +oQHQAc4D2QAR1cvVy9XVw9DQzs7LzsvVy8sABc4B2QTOAAXZztnO2QAFzgAQ +2c7O2c/Oz9nPz9nP2c/PzgTZAAna0dfdv9HHuK4ABJgBmQGqBJkAFIaKUol7 +h7lRe6x7rJuJmsSZrMTIA9AAI9WrwMC4y9XQ0IyawMGGodChwMSooaKhqMDB +qqqEhqyKrKyaAASMAAmbrcTAyMCNjZwAA7IAB46O09PKyo4AA8oAEOGfvJ8s +yjfq6THlQwUFBAIDAQADAgQFAAkDAeQDAwAE5AMD5AMDA+QABwPkA+QDA+QA +AwMB5AMDABfkA+QDA+QDA+QDA+QD5AMD5AMD5AMD5AAFAwHkAwMB5BQDAeT/ +A1QDAAAAFMXN1dWib1pZbW1ZvoBcR0dbbqCgBaEABMPVy8YO2QAEztXO1QbO +AdUGzgAS2c7ZztnO2dnO2dnPztnPzs/PA9kASNHR2toH0cbDq6uumZihqJmZ +qKqKiqqGilGIUXtRh4l7uay3mcitwaypwcPL1dWrmorBrtXD1b18wcSohanA +rMHEo6GioafEigOpAAOsUsEAA5oDjAAKm8HAwMivsJycjQOyAAWO09PKjgAF +ygANnxMynyzKN0JsfuQEAgADBAMBAAMCAgUABwMABuQDA+TkAwPkAEwD5APk +A+QD5APkA+QDA+QD5APk5AMD5AMD5APkAwPkAwPkAwPkA+QDA+QDA+QD5APk +A+QD5APkA+QD5APkA+QD5APkA+QD5APkAwPk/wNTAwAAABXN1dnV0IBabY/C +zdDNlVpIbm6goKIABaEAC6ChzdDVx8vO2cfOAAnZA84ABNXOztkDzgAF2c7L +ztkABM4ABdnOztnOAAjZAA3R2QvR2cbGw7jJmKGrAAOYAAioqqqGiqyJUwNR +AAZ7UXtRe2IDewArxL3DzcPVmMGb0NXV0LBksHzBuNXVvZnExMHExKmajMjI +oqJdhorBiKxSrAADmgOMAAqbm8TAyMiwnLCcBLIABo6O047KjgTKABef7Lzr +LMrq0zXm5BkCAQIFBAEBAgIFBQAGAwAD5APkAAMDABnkA+QD5APkA+QD5APk +A+QD5OQD5APkAwPkAAMDAeQDAwAE5AMD5AMDAeQDAwAE5AMD5B8DAeT/A1QD +AAAD1QAUxb5ib3CB0NnVCsWlWUdvcG5uoqAGoQANoKGooZihmKGYvbjOzgAH +2QPOAAXVztXO1QAHzgHZAc4H2QXRAAXPx8O4qwAEmAAToZioqKGqhomqhohR +U4eHe4d7hwAFewAEfGK5rwXVABPIi5uvw9XDva2tiayZw8OhrZrBAAOoABG9 +mYyvr4a3ilKMjFKJiVKamgAEjAAIwcCqyMCwjY0EsgAMjp+O08rKjsqfyp/K +A58AEevK6kLoMeVDAwQBAgQCAQIEAAMDAArkA+QD5OQD5AMDBOQAKwPkA+QD +5APk5APkA+QD5AMD5APkA+QD5APkA+QD5AMD5APkA+QD5APkA+QABAMAHeQD +5APkA+QD5APkA+QD5APkA+QD5APkA+QD5APkAP8DVQMAAAAb1QrVzcmhb1lt +1dnVzc2hWllHSG5tbXCgoKOiAAihAAyno6KiqJi9uMPHzs8E2QPOBdkBzgjZ +ACLa2dnRz8bHw8yrq5ihmKGYmKiomKpSiqxRUlBTe1OJUXtRA4cACntiuXua +uXuIe8kE1QAVyWOGiFOqqKiYmJq3p8DAioqawZnNAAO9ABuom62Khoatm7Fj +UlKJUomajIybrcSqyMiwjZ0ABbIFjgAWyp/hn5/hn58y6yzrNzPn5eQFAQIE +AgMBBwMB5AEDBuQAAwPkAwAI5AEDA+QAIwPk5APk5APkA+QD5APkA+QD5APk +5APkA+QD5APk5AMD5APkACIDFQX/AzwDAAAAE6DN0MvLo1pZWqHZ2dXQo1tH +b1sABG4AFG1ubqCgo6OnoKeEoqenqFCEqKOiA6gABKu9w8sJ2QHaAdEE2QAK +zsvLw8O4q6uYmAOhA5gAIqiYqKiZqKqGiVFRU4iJmlN7e1FRYoWHiFHCubnE +waypfK8E1QAmq7FShayJuYisucihqoqsiZrBr8iYoqiqi1KMwVCsioyMfFJQ +iZoDmwAtsMTAyK+vsI2cjbKyjrKOysrTysqfyp/hvJ+8Mp+fyjfp537kAwQC +AQECBAQFAAMDAeQBAwjkAAsD5OQD5OQD5APkAwAE5AAhA+TkA+TkA+TkA+Tk +A+QD5APkA+QDA+QD5APkAwPkAwPkAAQDABbkA+QD5APkA+QD5APkA+QD5APk +AwPk/wNdAwAAADdZbVtIf49akFpfoaJIX29uWVlHR0hubVuPcG5ukJDFo6ej +kJGnp5NOdnino4SioaGooau40MPDAAPLBcMADbirvauYmKGYmKGiqKEAA6gD +mQBYqoaGUlBQiFGFh4diUYd7YrlRiIdOUVF7rJqrmKjIucGavdDQzsu9iomq +wLmsiMC9ocS9mJuasX2wyKfAisGailKsrImaiVKsiJqbm8HBwKrIwK2wnJyy +nQOyAAThso6OA8oEnwAZvBOfn+uf6kZq5kQZBQICAQICBQMFAwPkAwAI5AAD +A+QDAAPkAQMG5AAiA+QD5APk5APk5APk5APkA+QD5AMD5APkAwPkAwPkA+QD +5AQDAeQVAwHk/wNeAwAAABdfbY9tkJBtj19elVpaR1nFpk9NXFpvWQAEbQAV +bo+PxZCgxY+mzc2ngKLCt1BQhKOjAAOoAaIDqAAEoaihmQSoAB2YmKGZqKii +mKeqqqiooainhKinUFGIhIV4T1CHiAADewANYoesqKyJuYioiYW5yAAD0AA4 +1dDEiU9SyKvImnu5vci5xJrN0NC90L2hr4ydsMCGiq2afIaKwYmIqVKIwZqt +msTAwKjIwLCcnJ0FsgAEyo7KjgPKABGfn7zsvJ+8n+yfyjRq5uXkAwADAgAH +AQICBQPkAwAM5AAEA+TkAwTkAAQD5OQDBeQADQPk5APk5APk5APk5AMAA+QA +BAPkA+QDAwHkBQMAA+QD5AAEAwAV5APkA+QD5APkA+QD5APkA+QD5APkAP8D +XQMAAAAVWm2Aj25uoc3NwmJ6T2GRuGVkY2NhAANZB20ALI/Fvo+TvZjFvr65 +uXuHh6l2hKihqKeooZioqKephqqGmaGGp6ioqqiqqqmsA4YACIWpUIiIUVFM +A1EAToXBqXt7h7maqKvNmZqIqrl7e6vV0NXQvYuKU3uMmprEwYmqmKzBwJiY +vb2hqJmZrZubrKyJmlOaiImamqy5icGamsHExKrIi62wnJyNngWyACDKssrK +n8qf4Z+fvBO8EzKfLNPo5+XkAwQBAgIBAgUDAw3kAC4D5APk5APkA+TkA+Tk +A+QD5APkA+TkA+TkA+TkA+TkA+QD5APkA+QD5APkAwPkBAMAA+QD5AD/A3MD +AAAATFpZbW6goqHQ1dXAYmRiR8fMzHxkYmFaWllZb1lZbcXFzc3CW5GkbcXN +zcRje3pOdUujo6enqKeihlCFiFGIhaeEUISnhlCnhIW5qYcDiAASUIiIUWJR +YoeIiKynzbfEiJesA9UAKsHEuXt7ipqr1dXQ0MRjmrnBucTEp4asrIqsm7DI +oaGoqoutmnyMjMFSUgOaAcEBiQaaAAnBxMDEqJmLrZwAA40BnQOyAAiesp+y +yrLKygSfABq8n7zsn+vK6ukx5uQDBAIBAgQBAgUD5APkAwvkAAQD5OQDA+QA +BAPk5AME5AEDA+QABAPk5AMD5AAEA+TkAwXkAAwD5OQD5OQD5OQD5OQGAwAJ +5APkA+QD5APkAA4DBgX/A1UDAAAAC1ltWW1tbqCgzc23AARjAAhTi3xkZGNi +XwRZACFtb23F0ArV1ZJtbcXNzdU8nGRikndxXZKEhJOpUISIU6kAA3gALoWE +UYe5rIqEeYiFuYiGuYiHoXuIe3lRh3uszb3IzbmsdarV0NDBqnuswKl7xKED +0AAZvam5ucSiqLmh0L2hiomMrq+Lp6rArZuxfAAFmgAJuYnBfJq5iZqbAAPB +AAqqqsjAr7CwjZyNBLIAJJ6evLLhn8qfyp/hn+vrn+yf65/qQmzm5AMFAgQC +AQEEAwPkAwzkABkD5APkA+TkA+TkA+TkA+QD5OQD5APk5APkAAMDABnk5APk +AwPkAwPkAwPk5APkA+TkA+QD5APkAA8DAQX/A2QDAAAAH1pZWllZbW1uoG5d +fGNjfFNjZGRjYl9ZWVqPj25vWdAAA9UAN81jgY/N1dUKEQhVYpRNTnJ1d3iW +kqOEkreoubl7h3mHh7m9p4ephamnrImpiHuph3uHe1F2e80AA9AAHdXQxLlS +0MvVvay5zb3ImnusqNDVvYmaxKHQoaG9AAOhABWZiXybyMCKiqzBjHxkmlN7 +mnyaibkABJoADsHBxMCnqsDAr7CwjZ2NBbIACbyynryyn7zh4QADnwAV4Z/r +n5/KN0Lo5kQtBAICBQIBAgQDAAfkAQMG5AEDA+QADwPk5APk5APkA+TkA+Tk +AwAE5AASA+QD5APkAwPkA+QD5APkAwPkAwMB5AMDAeQGAwAL5APkA+QD5APk +A+QAAwMBBf8DZAMAAAAGWlpfgFxZA0cADF2hfGNTZGNiqcBTYQNZADltbpBu +bVnN1dUKzamPj9DV1Q8PzM1hqVBidUhyf3OEgre3zc3IuXt7U4d7h6iKh3m3 +p83Nt4eHe6kAA7kAF3qHe2LN1dDV0Mh8iIWFq72Je6q9vauGAAO3ACOomKy5 +fMjQvb2hoaiomYuKwXytxIqswZqaZbGauZp8fJq5jAADmgAOwcHEqqfIyMCt +sJyNnY0FsgADnryeAAO8ACLhn7yfn+Hryusy68o3QugxfuQDAQICBAICBQXk +5APkA+QDA+QADwPk5APk5APkA+TkA+TkAwAD5AEDA+QAEgPk5APkA+QD5OQD +5OQD5AMD5AQDAA/kA+QD5APkA+QD5APkA+QADwMBBf8DZAMAAAAXWlpfgGBf +WllHblJkSl18Yl2h0M1gWlkAA20AP6DFbVlyzdDQ1aJcbsXV2dXNzcWlX6WV +YGBJTWB/gMXNzdCouU56eYWpuYeHhJPC0NDNxId6haHNzcR5h7mHpwAD0AAs +zcRjY4d5qYm5eanQoYbEp6e5qYeIuZvImL2hoaiZqoqtjIyafMGJrImamnwD +mgAQfJp8mnx8scHEwLeoyMjAwAOwAAONnJ4ABLIAC7yyvJ5rvLyfvOG8AASf +AAzqLOGfN0JqMeVEAwUEAgAFBAUD5AMAA+QAHgPk5APkA+TkA+QD5OQD5OQD +5APk5APkA+QDA+TkAwTkAA8D5OQD5APk5APkAwPkA+QAHwMBBf8DZAMAAANa +BF8AblpZd2RhWmNkX6CgqFNhX21tbluizaBvWVpbxYBcbpBto9DQxW2Pb76+ +pZV/blxcbY/N0NDVsmR4T4eWvr6XuZOWp9DQzayWh8LQ0M2al6iohHmi1dDQ +zad7eYWslre5uaeoqYepiHu5mrmJisiZA6gAC8CKrZuxjGNSU5qaAAO5AASJ +mnt7A3wAE7F8mozBwcTFosjIwK+wsI2wnZwABbIABLyynmsDvAAU4bwTvGuf +4co3yiw30zPnfkQtBAUDAgAMBQMD5APkA+QD5OQDBOQBAwPkAQMD5AEDBOQA +DwPkA+QD5OQD5OQD5APk5AADAwHkAwMB5CUDAQX/A2QDAAABXwVaAI1fX2Fi +X1pae2RfR26TVWNaWW2goqHN0M1aR25bWm6jo5Btf1lHW23F0NXNuWFcX4+A +WaHV0NAGm09ywpKgxc3Fl6STzb29wrmHT6HQoXmHp6hTe4eq0L2ouYd7qrfE +vaGqe4e5hbeqqJiixHuaqKqnqoaKipuxVGRkUlOauZq5mrlTfHyMfJp8jJvB +xMAAA6gADcjAr7CwjY2ynrKenrIABbwBawGeA7wAEuxra7yfn8rqRkLpaud+ +5EMDAwMEADgFAwPkA+TkA+QD5APkA+QDA+QD5APkA+QD5APkAwPkA+QD5OQD +5OQD5APkAwPkA+QD5APkA+QD5P8DhwMAAAFhAV8DWgNfAA9hYmJfWo9iYkdH +SFFiWm0AA24AH6CgoaFgW72XXG6gzc3FuWJIWaDQ0MXCYl9ZbW5vWoQAA9AA +Bs2qeneloATNAE+5l5SWhLm5vahPUaeGUXuIoYlQhGJ5eHmHe6ehoqKhoVCH +hJepoqGiqKKqU3uGhqmpiorBmoxlZXyae3x7e5pTmnt7mnyxfIzBxMSoqMiq +AAPAAAavsJyNnY0EsgAIvLKyvJ5rnmsFvAAP7J+fytM0Quhs537l5AMEAAQC +AQUDAwAZ5AMD5APkA+QD5APk5APkA+QD5APkA+QD5AADAwHkAwMB5AMDAeQD +AwHk/wOSAwAAAAViYWFfXwADWgAOYWRjYVpZY2RhR0h6X1oDbQRuAA94Y2Ft +W3Cgoc3Q0LhTYoAAA80AEm9fYl9tj6CgbW9HoKKTek9gjwTNADQGfHtOl3uH +hb2KY2Jih4eIl7m5ibljYnqHUYmhzaGhmKKFUVGXt6PFt4aKiolTuaypqayJ +A5oAE4x8fJp7fHt8e3t8fIx8jIzBxMAAA6gAEcjAwK+vsLCNjZ2esp6ynrKe +AAS8A2sAE7zsvOxrvDLhN9NC6GzmL0RDAwQABAEBBQMDAC/kA+QDA+QDA+QD +5AMD5AMD5AMD5AMD5APkA+QD5APkA+QD5APkA+QD5APkA+QD5AD/A40DAAAA +BWRjYmJhAANfAA1hZGNhWlqHVGNhYWJaAANZAF1tbW5tboJ8Y1ptbm6goKGi +yHxjYW7N0M2gvlptkJCgoI9gYGFgdEp0gKGgzaDIfHtPh4i5h7maY3tOiHti +t6LCwqepiXtiUYejoaGop4l7iIeIham3qaxSwXx8U1EAA4gAKYmJmpp7U1N7 +fHx7fFN8U3yamsHBxMjFyKrAxK+vsLCNjZ2NsrKesp6eAAO8ABeevGuea2u8 +vGu87J/rNzdC6DHm5UTkAwAEAgAOBAUDA+TkA+QDA+QDA+QDAwHkAwMAB+QD +A+QDA+QA/wOmAwAAABtjY2JiYWFfWmFiY2FhWmJUZGRhX19aWkdZbW0AA24A +A5FfWQAGbgAbS2RUZGJabZCPbVltoKDN0M2hjGRjYWBgX2CQAAOgABKiqU96 +h6Onlodie2KjUGN6oqAEogAVp6iIe0+FhISGUIeHUYe5e4iFhYmaAAR8AAp7 +h3tRiZqaUVFTA3wAEpp8U3yampvBwcS3yMXIwMCtrwOwABKNjZ2esrKesp6e +vLyevGtrnmsDvAAP7GvsvOss0+noMdZEREMDAAMEABkBBQUD5APkAwPkA+QD +5AMD5APkA+QD5APkAAMDAATkAwPk/wOkAwAAAAZkY2JiYV8DWgFhAWIDYwAK +ZGRjYVpaYV9aWQVtABZuR1pZbUdtbVtxcUtTY2JabW9ZWW2gBaEADr2YZGRh +SFxgYVpwf6SkA3oAMF2goKKiqFJ7e1F7UaKip6qGilJQhYeHT4dOiHmFU4dP +UYd7iIW5iXx8Y3t8e3x7ewNTAAu5U5p7e3xTfJrBwQADxAASp6jAyMDAr6+N +nI2NnY2enZ68Bp4ABGuevJ4EawAVn7y865/KNOls5+Xl5C0DAgUFBAIEAAMD +AAbkA+QDA+QOAwAF5APkA+QA/wOmAwAABGMADGFhWlphYmNkVGRjYwVhAV8D +WgAabVltR1laWlltbUdtbUhteFNidG6hoaBtbaEFoAAhhmNkZGJPYWB0XI+U +lr57UU+QoISnhoSLU2JiT0yEqVBQAANSAApTe1FiYlF5T3lRA3sBUQN7ABZR +iVFTe3x7fHt8e1N7uZp8e3x8mnzBBcQAEaqop6jIwMCvsLCNjZ2Nnp2yAAie +ABU6nmu2a7ZrvOy8E5+fykbpbDHlROQAAwMABQIEBQQEAAQDAAnk5APkA+QD +A+QA/wO2AwAAAZUEYgRhAANiY2QABGMBYgdhBF8DYQFaAVoEWQAPR1lcYmBf +R6BuoqJbj6CgAANuAAVdiGVUZAADYQAeTUpfSF2QhHl6YktdS4iIUppkZGNR +TniFiFGJmlNjBHsAFlFOTk9Re3tiU3t7YntPhXt7fGJ8Y3wDewAJU3uamnua +wcTAAAO3AAioo6inyMDArwOwAAicjZ2ejZ2ejQSeAAl9s7M6tp5rnrYAA2sA +D7wTnyzKRkJs5n7kGQMDBQADBAAHBQMFA+QD5AAFAwAD5APkAP8DtwMAAAAF +X19aX5UACWIDYwAHYmNiYmFfYQADYgAEY2RkYQRaAVkEWgAsXEdHWY9uXU1f +R25uoG5uR0tSZGNfXEpNTV9ITE5Mdnh6T0xRUVNTfGVkY2IEUQANuVNTfGN7 +YnxiYntiUQADewAWfHxjfHtie1FTe3t8e3x7e3xTe5q5wQPEABWqxaeozcXI +p8jAr6+wsI2Nno2yjZ0ABZ4AHbaes56ztp46tmu2a2u8vOvK6kYzbObl5OQD +AwUFAAQEAAgFA+QD5AMD5P8DvQMAAAFfBFoBdANgA2EAFGJhYmNjZGNjYmFa +cmFiYWNjYWFfCVoACVltWlpvlmJfWQADbQAvbm1wSVFkY0dHSU1hSU5PUU9R +e3tiT1FTe1N8fGR8Yk95UVFTmnx7fHt8Ynx7e3wAA3sAA3xjfAADYwAHfFFi +e2NiewADfAASe5qaucTEwsinxcWizcWoqsjIA68AB7CwjZ6NnbIACp4Eswa2 +AA9r7J/KRkYzNebl5AMDAgQAAwIABQQEAwPkAAQDAeQKAwoF/wOqAwAAAAVi +YmFgYAADWgFZAVoDXwRhBGIBYQGVB2EAA2JhYQAFXwAZYGFgX1xiYWJjYVpa +WW1ZbW90Y2RjYUdNTwADYgAKT2J8e2RkYk9iewNTABZifGJjYmNie4eHUXti +Yk9Pe2J8fGNjA3sABnxkZGNjYgR7AAN8U3sAA5oAD7nBt6fFosWiqM3FqsjA +wAADrwAOsLCNso2dno2ejZ6Nnn0DngAJtp62s7M/P7a2AARrAA2f4eo0aufm +5OQDBQMFAAMEAQUBBAQDAAPkA+QA/wPAAwAAAANjY2IAA2EABHpgX1wDXwNa +AAVfYGFhYgAGYQZiA2EADF9hlXpiYmNjYmFhXwVaAAZgYWJjY2IDYQAZYmNi +YWJifGNkZGNTYmNiY2J8YmN8Y3xiYgADewFiBHsEfAAZY2N8e3t8Y3x8e4d7 +e1O5U7mJrKzEt7enowADogALqKiqqsjAr6+wr7AABY0ABZ6Nno19AAWeAAqz +nrazs7aztrO2A2sAE+yfykZC6Ofm5QMDBAQFBAQCBAUABAMB5P8DwwMAAAFk +AWQDYwZiAANPYV8ABFoAB19flWFhX18AA2EIYgAFYV9hlWIAA2QABGJhYV8E +WgNhAWIBYgRhBmIBYwFiA2MACGJiY2NiYntiA2MAFmJje2JjYmJ7e2J7Ynt7 +Y3t8Ynp6h3kFhwO5AYkBrAO3A6MDogAHqKeoqqrArwAEsAGNAZwFjQAFno19 +jX0ABJ4AKbOes562s7azsz8/try8n+HKNOls5+blAwMEBQQCBAICBAQD5APk +AwPkAP8DwQMAAAADVGRUAARkBmMABmJhX1paWQRaAAhfWl9fYWBhegNiABFj +YmFhX2FiY2RjYmJhYV9hXwAFYQAGYmFiYmFhBGIABWNiY2JiAApjAA9iY2Ni +Y2NiY3tiYntie3sAA08ADnp3eZd3d5Z5lrm5iKm3BMUAEqe3p7enqqeqi8DA +r7CwjZyNnASNAAmejZ6NfZ59nrMAA54DswE/A7MAGz9WtrZrnyzT0+no537l +5AMEAwUFBAIFBAQD5AAEAwHk/wPDAwAAAVQBWANUAARkZGNkBWMAE3xhYV9f +WllaWVpaX2BfYF9hemEAB2IABmNkY2JjYgNhAANfYGEABWIBYwZiAWMBYhRj +AXwBYwViABJ7Ynt7h093l3mIeYe5iKmpt8UEowAFp6e3qsQAA6oABIuKwK0D +sAGcAZwFjQF9BI0ABp59fbN9ngezABM/sz+zP7a2MsrTQuhs5i/l5AMEAAQC +AQUGAwHkCAMBBf8DvgMAAAAEZlRUZgRUAWQDYwAOYmNiYntiYnphX1pHWlwE +XwAGYF9gemJ6A2IAA2NjYgADYwAIYmJhX19hYmIHYwADYmNiABNjAWIBYwRi +AXsBYgV7ABa5h4dRUXiWwsK3xcWjoKCio6Kjo6inA6oACIutr62wsI2wB40A +BJ6Nno0DngAFfbN9s30ABLMAFra2sz+zP7O2tmufytNq6OZ+5eTkAwUDBAAD +AgIFAAQDAeQDAwHk/wPFAwAAAAO0VFgABVQDZAAEY2NiYgNjABd7Y2J6YFpZ +WlxaXF9aX1xgemJie2JiewADYgAIe2J6YF9gYGEKYgxjAWIEYwADfGJ8AAV7 +AA2He4eIeZaFhbmFqcK3AAOQAAijo6CjoKKjowOEAAiZUIuKi62vrQWwB40A +CJ6NfY2eno2zA30BswF9BLMBtgSzABa2tmtrvMrT6Gx+5S7k4wUEAgECAwMF +BAMB5AMDAeT/A8YDAAADZgAEVFhUWANUAB1kZGNjYmJ8Y2RjYmJPYU1aXF9a +WVpZWoB6ek9iYgAEegAIlWB0WlxfYE8DegAUh2J7Yntih3tie2N8Y2N8Y3xj +e2MHewARubmHuZZ4lpbCpMKSf5KQxZAABKAAF6OgoKOio4SGi4qLi1KvrYut +rZuwsI2cAAiNABF9jZ6Nnn2es32zfVZ9VrNWswAEtgAUa7Y6a5+f6kJsMebl +RC1DAwICAQIHAwAE5AMD5P8DyAMAAAAIWGZYVGZUZlgFVAFkBmMABXtiT09i +AARgAAxfXFxHb4B0TXRKXoADbwSAAAd0lJdPd09PAASXAAR5eZeXA4cEewAG +fHx7h1G5A4cBuQGmA6QACI/Fj8WQkKCQA6AAA26joAADowATp12EqktQi1KL +Uq1SsLBSsJuwsAADjQADsI2wAASNAAR9jZ6NA30AD559s319VrN9s7NWsz+2 +tgADawASMp/KRkJq5+Z+5URDBUMDBQQEBQMB5AMDAAXkA+QD5AD/A8YDAAAA +BrS0ZlhmWANUAANYVGYAA1QEZAAUY2N7YmJ7ek97ek9fX1lcXFpcXEcGbQAZ +b1xagHeUpYCBSoFegW9vgYGDlpSWeXmHuQADhwF4AXgDlgAIgoKPkJBuoJAF +oASjAB6oXaeEhFBQi1JQi1JSsFKbUo1SnJuwnLCNsI2wjbAHjQV9AbMBfQOz +AX0EVgAbsz+ztmtrvJ/K6kIzbOZ+5eTkQwMFAwUDBQQFAAMDAeT/A88DAAAA +BLS0WGYDtAAHZlhUZlRUZgAEVARkAAdjfGJ7fGJ7AANPBk0ABFxcR28DbQAE +j49/jwptBHABjwNwAB9bcHGTeJOCcXBdkJCRkJCRkXBdo12nXYRdS4RQS1BQ +AANSABGwUlKwm5tSnJucm7CcsI2csAAGjQAFfY2NfY0ABn0ADbN9s32zVn1W +VrNWs1YAA7YAEOy84TdCamznL+Xl5OQFBAQDAgAKBAQFBQMD5APkBf8DzQMA +AAAMWLS0WLRYZlhUZlRmCVQDZAAFZWRjfGMAA3sABFNiT08ETQAMdFxeXlyB +dFyBXlteA1sJSAAGXUhdXUhLA0kBSAZdBEsBUAVLA1AAF1JSsFKbUpxSUrBS +m1KNm5ywnJywnLCcAASNABSwjbCNsH2NfY2efbN9Vn19s32zfQVWABE/sz+2 +a7yfytNCNTHmfuXk5AADAwAFBQUEBQUA/wPXAwAAAAO0tFgAA7QADli0tGZY +VFhUWGZUWFRmBFQEZAADZWRjAAR8ABN7U3t7UU95d05OT4dRT05OSkxMAANK +A0wBSgRJBEgBSQRMA0kDSwFQAUsEUAFSAVAEUgGwA1IAIZtSsFKMm5ucjI1T +jVKcm7CcsI2NsI2NsI19sH2wfY19swAFfQAGVn1Ws1azBVYAF7M/tra8n9NC +6GzW5uVE5AMDBQUEBQQFAAcDAAXkA+QDBQD/A80DAAAEtAF+CbQABVRmZlRm +AAdUAVUDZAADZWRjAAZ8AWMDfAASU4dRUXtRT1FRTlFOUE5RUU9QA04DTAAK +SUxQUE5QTFBQUgVQCVIAH41SU7BTm5uMm5ybnJucUpywnI2NnLCNjbB9jX2N +jbAAB30ACLN9s31WfVZ9BVYAGj+zP7Y6a5/K0zNsMeblLkQZBQMDBAUEAgIE +BAMB5P8D1AMAAAAEtNa01ga0AAZmZrRmZlgGZgZUAAVVZFRkZQADZAAPfGR8 +fLF8fGN8e3xTfFN8AA1TAAtSU1BTUlNSU1JTUAAGUgARU4xSUoxSU41TUoxT +jYyNm5wAA5sABJybnLADjQAMsI2wsI2NsI2NsI2wB30BswN9AAhWfVZ9Vlaz +VgOzAA4/trZra5830zXn1i/lRAMDAAQFBQQEAwMBBQMDAeQIAwEF/wPNAwAA +B7QBZgq0AWYBtAVmA1QAFGZVVFVUVWRlZGVkZWRlfGV8ZXxlCXwABVOMfFOM +AARTAAmMU4xTU4xTjVMAA1IAC1NSnFJSU5xTjJxSAAOMAAyNUoyMnJuNnJyw +sI0EsAAIjbCNfY2wfY0MfQAEVrNWfQRWAbMDVgAWPz+2a7yfN0Iz5+Z+5UTk +AwQCBQMFBQQDAATkAwPkBAMBBf8D0gMAAAa0AWYDtAADZrRmAAW0AWYBtAdm +AANUVGYAA1QAE1VUVVVkZWRlZGVkZWVkfGV8fLEAA3wAGrF8fFOMU4xTZYxT +U4xTjFOMU1OcU4xTjVOcBIwAII1TnIyMjVKMjZuNm5ybsI2wjbCNsI2wjX2w +jX2NsH2vCX0ABVZ9fVazAAZWABizP7a2a7yfykLobDF+5eTkA0MFAgQFBAQH +AwHkBQMBBf8D0gMAAAi0AWwKtAFmAbQIZgAIVGZVZlVUVVQDVQAGZFVkZWRV +BWUAEXxlfLF8fIxlU2VTZVOMjGVTAAiMAVIBnAWMAB6NjIyNjIyNUpycm5yb +jbCNjbCNsI2wfbB9sI19jbAGfQAKrn19Vn19Vn1WVgOzACBWsz8/trY6vJ/K +RkIzbDHm5UTk5EMDAwIEBQUEBQMD5AYDAeQDAwEF/wPSAwAAAAe0bLS0bLRs +AAO0AARstLRsBLQABGa0ZrQGZgFVBWYADlVmVWZVVFVUZVVVZWVVB2UAA51l +ZQADsQAEZbGMZQOMAWUEjAAEnYyMZQOMAAWNjI2MjAAEnAAWm5ycsI2wjbCN +sLCNsH2wfa99sH19jQh9ACJWfVZ9fVZ9s1azs1azs7aztmu8yjfpamzn5n7l +RETkAwMFAwIEBQ4DAQX/A9IDAAAAA7S0bAAEtAAEbLS01gS0AWwEtAADZma0 +AAlmAAZVZlRmVVQFVQAHZVVlVWVlVQAHZQGdA2UAC52MZZ1ljGWMnYydAASM +AAONjI0AA4wJnAAQsJywjbB9sH2NsH2wfbB9jQp9AANWfVYAA30BVgF9A1YB +swGzA7YAEWu8n8rqNGpsMS9+5URE5AMDAAMFAAgEBAIDAwQD5A0DAQX/A9ID +AAADtAAKbLRstLRstLRsbAO0AWYFtAFmAWwDZgAMamZmamZmVWZVZlVmBlUA +CGVVZVVlZY5VBWUAF51lnWVlsYxlnbGdjJ2MnZydjJ2MnJyNAAicAAWNnI2N +sAADjQAGsI19sH2wCn0AB1Z9fVZ9Vn0AA1YAE7OznrO2tmtrvJ/KRkIzbOfm +fuUAA+QBAwEDBAQEBQMDAAbkAwPkA+T/A90DAAAAA2xmbAADtAAFbLS0ZmwA +A7QABmy0bGxmbAVmAWwDZgALVWZVZmpUtWZValQACFUBZQFVA2UAC51VZZ1l +ZZ1lnZ1lAAadAAWxnZycnQADnAGdAY0DnAGNAZwHjQAIfY19sH2NfbAMfQAK +Vn19Vn1WfbOzfQOzABG2a2u8Mp/K00JqbOfmL+UuRAADQwAPAwUCBAMFBQQF +BQMD5APkAAYD/wXbBQAAAApmbGZsZmy0bLRsA7QBbAq0ABRsZmZsZmpmZrVU +tWZVZlVVtVVVjgNVABFljmWOZWVVZZ1lsmWdZbJlsgAGnQALnJ2NnY2cjZ2N +nJ0ACI0ACn2NjbCNjX2NfY0MfQAFs319s30ABLMBtgG2A2sAFryfysrTQmrn +5+Z+5URE5AMDBAQFBAIDAQAFAgIDA+QABwMEBQEDBAUBAwQFAQMEBQEDBAUB +AwQFAQMEBQEDBAUBAwQFAQMEBQEDBAUBAwQFAQMEBQEDBAUBAwQFAQMEBQED +BAUBAwQFAQMEBQEDBAUBAwQFAQMEBQEDBAUBAwQFAQMEBQEDBAUBAwQFAQME +BQEDBAUBAwQFAQMEBQEDBAUBAwQFAQMEBQEDBAUBAwQFAQMEBQEDBAUBAwQF +AQMEBQEDBAUBAwQFAQMEBQEDBAUBAwQFAQMEBQEDBAUBAwQFAQMDBesDAAAA +FGpmbLRsZmxmtGy0bGy0bDFstGwxA2wAEGZmbGpmamZqtWa1ZlVqVWoHVQGO +AVUDZQALjmWyZbJlsmWyZbIABp0ADo2dso2djZ2NnY2cjY2eA40ADH2NfY2N +sH2NfY19jQd9AAlWfVZ9s32zfZ4ABLMAFbaetry8n8rK09NC6DXnMeZ+5eVE +5AADAwkFAAkD5APkA+TkA+QA9gPrBQAAAApsZmxmbLS0bLRmDbQAIWy0Zmxm +bGZqZmpmampVtVW1VbVVtVWOVY5VjlVlsmWyZQANnQAInJydjZyNjZwLjQAG +fY19jX2NDX0BswF9BLMAA7azngADvAAen8o300Iz6GznMeZ+5UTk5C0DBAIE +AgIFAgIDBAIDBuQFAwD/BAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQD +BAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQD +BAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQD +BAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQD +BAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQD +BAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQDBAQFAgIFAgIFAgIF +AADhAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIF +AgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIF +AgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIF +AgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIF +AgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIFAgIF +AgIFAAAABfAB7wE2Eu8ABzbi7zbi8DYAA/AAD0E5QTlBObs5Obs5VzlXOQAD +VwALaVdpaVdpV2lpaFcABWgBaQFpBGgABLpoumgGugAKZ7pnume6Z7pnugZn +AARAZ7pnBkAADSoqaPPzK/Ly8fFB8PAAA+8J7gAL7e7u7e7u7e7u7e0ACe4A +/+3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u +7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u +7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u +7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u +7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u +7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7gAA5e3u7u3u7u3u7u3u +7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u +7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u +7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u +7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u +7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u3u7u0AAAAjAAb/ +AAsA/wD/AP8A/wD/AAAI/wEACf8DAAAI/wD/AP8A/wAK/wADAP8AAAb/AQAB +/wQAAAP/AP8A/wD/ABUAAAAGAAH/EgAABf8A/wD/AAYAAAT/AP8ACv8KAAH/ +JwAF/wUAAAX/AP8A/wADAAH/Af//AP8ACgAAADMAAf8JAAAJ/wD/AP8A/wAA +AAP/AQAB/woAAAr/AP8AAP8A/wD/FAAB/wcAAf8LAAAJ/wD/AP8A/wD/ABUA +AO//AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/ +AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A +/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/ +AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A +/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/ +AP8A/wD/AP8A/wD/AP8A/wDsAAAAagAAA/8A/wD/AP8AFQAAAP8A/wCCAAAA +/wD/AIIAAAD/AP8AggAAAP8A/wCCAAAA/wD/AIIAAAD/AP8AggAAAAD//CH8 +Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh +/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8 +Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh +/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8 +Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh +/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8AAD/Ifwh/CH8Ifwh/CH8Ifwh +/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8 +Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh +/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8 +Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh +/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8 +Ifwh/CH8Ifwh/CH8IfwhAACC/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8 +Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh +/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8Ifwh/CH8 +Ifwh/CH8Ifwh/CH8IQAA/wL/AoICAAD/Av8CggIAAP8C/wKCAgAA/wL/AoIC +AAD/Av8CggIAAP8C/wKCAgAA/wL/AoICAAD/Av8CggIAAP8C/wKCAgAA/wL/ +AoICAAD/Av8CggIAAP8C/wKCAgAA/wL/AoICAAD/Av8CggIAAP8C/wKCAgAA +/wL/AoICAAD/Av8CggIAAP8C/wKCAgAA/wL/AoICAAD/Av8CggIAAP8C/wKC +AgAA/wL/AoICAAD/Av8CggIAAP8C/wKCAgAA/wL/AoICAAD/Av8CggIAAP8C +/wKCAgAA/wL/AoICAAD/Av8CggIAAP8C/wKCAgAA/wL/AoICAAD/Av8CggIA +AP8C/wKCAgAA/wL/AoICAAD/Av8CggIAAP8C/wKCAgAA/wL/AoICAAD/Av8C +ggIAAP8C/wKCAgAA/wL/AoICAAD/Av8CggIAAP8C/wKCAgAA/wL/AoICAAD/ +Av8CggIAAP8C/wKCAgAA/wL/AoICAAD/Av8CggIAAP8C/wKCAgAA/wL/AoIC +AAD/Av8CggIAAP8C/wKCAgAA/wL/AoICAAD/Av8CggIAAP8C/wKCAgAA/wL/ +AoICAAD/Av8CggIAAP8C/wKCAgAA/wL/AoICAAE= +==== diff --git a/images/debian-de_16c.dat b/images/debian-de_16c.dat new file mode 100644 index 0000000..b8c91d1 --- /dev/null +++ b/images/debian-de_16c.dat @@ -0,0 +1,14 @@ +# Lilo boot menu background configuration (Lilo 23) +# +# color palette: 0 black, 3 magenta, 7 pink, +# 8 middle grey, 10 bright grey, 13 white +# +# bmp-table = ,;,,, +# bmp-colors = ,,;,, +# bmp-timer = ,;,, + +bitmap = debian-de.bmp + +bmp-table = 16,12;1,12,16 +bmp-colors = 10,0,;7,0, +bmp-timer = 34,28;13,0, diff --git a/images/debian-de_16c.uu b/images/debian-de_16c.uu new file mode 100644 index 0000000..68a01df --- /dev/null +++ b/images/debian-de_16c.uu @@ -0,0 +1,503 @@ +begin-base64 644 debian-de.bmp +Qk3wVwAAAAAAADYEAAAoAAAAgAIAAOABAAABAAgAAQAAALpTAAAgHAAAIBwA +AAABAAAAAQAAAAAAACIiIgAzMzMAVQDdAFVVVQBVVXcAd3d3AHdV3QCIiIgA +qqqqAMzMzADMzN0A3d3dAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8A +/wCCAAAA/wD/AIIAAAD/AP8AggAAAP8A/wCCAAAA/wD/AIIAAAD/AP8AggAA +AP8A/wCCAAAA/wD/AIIAAAD/AP8AggAAAP8A/wCCAAAA/wD/AIIAAAD/AP8A +ggAAAP8A/wCCAAAA/wD/AIIAAAD/AP8AggAAAP8A/wCCAAAA/wD/AIIAAAD/ +AP8AggAAAP8A/wCCAAAA/wD/AIIAAAD/AP8AggAAAP8A/wCCAAAA/wD/AIIA +AAD/AP8AggAAAP8A/wCCAAAA/wD/AIIAAAD/AP8AggAAAP8A/wCCAAAA/wD/ +AIIAAAD/AP8AggAAAP8A/wCCAAAA/wD/AIIAAAD/AP8AggAAAP8A/wCCAAAA +/wCgAAECAQQSBs0AAAByAAEEBgAABwEEBgIAAAEABAIBAQMAAAYCAAAEBgQD +AAEBBAIACQAAAQQGAgAAAQAEAgAHAAIAAAQGBAAFAAAHAQQGAgAAAQAEAgEB +BAIACQAAAQYEAQQCAQADAAAEAQQGAgcACgIBAQMAAAYCBgQBAAAEAgAFAQAA +BAQABAABBAEBnQABAgMGBAcOAwADBwYGANEAAAByAAEMAQYEAAANAgwNDQwJ +AAEJDQ0JAQADAABICAwKBgIMDAEAAgwNDQQAAgwNDQwJAAIMDQ0CAAgKCgYC +DAoBAAACDA0NDAkAAQoNDQQBCg0NBAACDQ0JCgwNDQYAAgwNDQwJBgAAIwgN +DQwEBgkMDQ0JAAAIDQ0MDAIACA0NCQAACQ0NCgAACQ0MAJcAAAMCBwcAFQMB +BwEF1gAAAHEAAAMEDQoABAAADAoNDAEAAgYABA0NAgQAAEkIDQ0AAAYNCgAA +CQ0MAAAKDQwBAAIGAAkNDAAACA0NAAAGDQoAAAoNDAEAAgYACA0NAAAIDQ0A +AAwNCQABDA0KAAAKDQwBAAIGAAYAAAQMDQ0EBAAAGgoKAAQNDQgAAAgBAQ0N +BgAADQ0IAgQACQ0MkgABBQEHFgMBB9wAAABxAAAKCQ0NAgAAAg0NCAUAAAQE +DQ0BBAAAEggNDQAABA0NAgAJDQwAAg0NCAUAABIJDQwAAAgNDAAABA0NAgIN +DQgFAAAXCA0NAAAIDQwAAg0NBgAACg0JAAINDQgACgAABQQNDQwBAAMAAAcB +DAAJDQ0BAAQAAAkBDQ0GAAENDQYAAwAAAwEGAgCOAAECFAMAAwcHAgDhAAAA +cAAACwENDQgIAAAEDQ0EAAUAAAQEDQ0BBAAAEggNDQAAAg0NBgAJDQwABA0N +BAUAABIJDQwAAAgNDAAAAg0NBgQNDQQFAAAXCA0NAAAIDQwABA0NBAAACg0J +AAQNDQQACwAABAoNDQgEAAAFCQAMDQwABQAACQENDQYAAQ0NBgCRAAEFEgMA +BAcHBgLlAAAAcAAAFAgNDQEJAAAEDQ0JCQoMCAAEDQ0BBAAASQgNDQAAAg0N +BgAJDQwABA0NCQkKDAgACQ0MAAAIDQwAAAINDQYEDQ0JCQoMCAAIDQ0AAAgN +DAAEDQ0EAAAKDQkABA0NCQkKDAgABwABAQMNAQIFAAARCg0MCQkMDAEBDQ0G +AAENDQYAjgABBxIDAAMHBgYA6QAAAHAAAGEMDQkABAYAAQ0NAgAGDQgABA0N +BAABAQAIDQ0AAAYNDQQACQ0MAAENDQIACA0IAAkNDAAACA0MAAAGDQ0CAQ0N +AgAIDQgACA0NAAAIDQwAAQ0NCAAACg0JAAENDQIACA0IAAgAAAQIDQ0KBQAA +EQkNCQAADQ0AAQ0NBgABDQ0GAAMAAAMCCQQAhQABBxEDAQcDBuwAAABvAABi +Bg0NBAAACgAACQ0EAAgNAgAEDQ0JCA0MAAgNDQEACg0MAAAJDQwAAAkNBAAJ +DQIACQ0MAAAIDQ0BAQoNDAAACQ0EAAkNAQAIDQ0GAQoNCQAACQ0KAQENDQkA +AAkNBAAJDQIJAAAEDA0NBgQAABEBDQwAAQ0JAAENDQYAAQ0NBgADAAAECg0N +AYEAAQcRAwEHBAbuAAAAbgAAJwIMDQ0JAAQNCAAACQwGDQYAAQoNDQIMDQkA +CA0NCAwNDAIAAAkNDAADAAAwCQwIDQQABAwNDAAACA0NCAwNDAIAAAEJDAgN +BAACDA0MBA0NDAIAAAEKDQwJDA0JAwAABQkMBg0GAAoAAAUEDQ0MAQAEAAAW +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 +BABQAwEHCAaKAAAAbgADAosEFgUFBiMEAwZOAAAEBQMHBwQDAQAEBgQAUwMB +BwgGiAAAAG4AAwKKBBYFBgYjBAMGTQAABAcDAAADAwEHAQADBgQAAQVWAwEH +CAaGAAAAbgADAooEFgUGBiMEAwZMAAAEAwMAAAMDAQABAAMGBAABBx4DAAMH +BwUADwABBQEHJwMBBwcGAQKEAAAAbgADAooEFgUHBiIEAwZLAAAEAwcAAAMD +AQABAAMGBAAcAwADBwYGABgAAQclAwEHBwaDAAAAbgADAooEFwUGBiIEAwZJ +AAANBQMFAAADAwcAAAYGAgAEABkDAQcDBh4AAQIkAwgGgQAAAG4AAwKJBBgF +BgYiBAMGSAAADAcDAgAAAwMCAAAGBgQAAQcXAwEHAwYkAAEHIgMBBwcGgAAA +AG4AAwKJBBgFBQYjBAMGRwAADAcDAgAAAwMCAAAGBgQAAQcWAwQGLAABBR4D +CAZ+AAAAbgADAokEFwUGBiMEAwZGAAAMAwMCAAAHAwIAAAUGBAAVAwEHBAYx +AAEFHAMBBwcGfQAAAG4AAwKJBBcFBQYkBAMGQgAACwYAAAMDAgAABwMFAAMA +AQYEABQDAQcEBjYAHAMIBnsAAABuAAMCiQQWBQYGJAQDBjwAAQcEAAALBgAA +AwMFAAAGAwYAAwABBgMAAQUTAwEHBAY6ABsDAQcHBnoAAABuAAMCiAQXBQUG +JQQDBjsAAQMEAAALBgYAAwMHAAAGBwYAAwABBgMAAQcSAwEHBAY9AAEHGwMH +BnkAAABuAAMCiAQWBQYGJQQDBjoAAQcBAwMAAAsGBgAHAwcAAAYHBgADAAEC +AwABBxIDBAYBAkAAGwMIBncAAABuAAMCiAQWBQUGJgQDBjkAAQcBAwMAAAsC +BgYHAwMAAAUGBgAHABIDBQZDABsDAQcHBnYAAABuAAMCiAQVBQYGJgQDBjgA +AAMCAwcAAwAABQYGBwMDAAMAAQYBBgcAEgMEBgECRQAbAwEHBwZ1AAAAbgAD +AogEFQUHBiUEAwY4AAEDAQMDAAAFBgYCAwMAAwABBgEGBwARAwUGSAADAwEA +AQcXAwcGdAAAAG4AAwKIBBYFBgYlBAMGNwAABQMDAgAAAAMGAQMBAwMAAQYB +BgcAEQMFBkoAAQMBBwMAAQcWAwcGcwAAAG4AAwKHBBcFBgYlBAMGNgAAAwcD +AwADAAAEBgYDAwMAAAMGBgIABgAQAwEHBAYBAkwAAQcFABYDBwZyAAAAbgAD +AocEFwUGBiUEAwY2AAEDAQMDAAAKBgYHAwIAAAIGBQYAEAMFBk8AAQcFAAEH +FQMHBnEAAABuAAMChwQXBQYGJQQDBjUAAAUDAwcAAAADBgEDAQcDAAEGAQYG +ABADBQZXAAECFQMHBgECbwAAAG4AAwKHBBcFBgYlBAMGNAAACgcDAwAAAgYG +AwcDAAEGAQYGABADBQZaABUDBwYBAm4AAABuAAMChwQXBQYGJQQDBjMAAAMC +AwMAAwAABAYGBwcEAAEGBgAQAwUGXAAVAwcGAQJtAAAAbgADAocEFwUGBiUE +AwYzAAAFAwMHAAAAAwYBBwsAEAMFBl4AAQcUAwcGAQJsAAAAbgADAocEFwUG +BiUEAwYyAAMDAAYAAAUGBgULAA8DAQcFBmAAAQUUAwcGAQJrAAAAbgADAoYE +GAUGBiUEAwYxAAAGBQMDBwAAAwYLABADBQZjABQDBwYBBAQAAQZlAAAAbgAD +AoYEGAUFBiYEAwYxAAMDAQABAAMGAQIKABADBQZlABQDAQcEBgADBwYFAAMA +AQZlAAAAbgADAoYEFwUGBiYEAwYwAAAJBwMDAgAAAgYGAAoAAQcPAwUGZwAU +AwEHAwYBAwMGAAMAAAYAZQAAAG4AAwKGBBcFBQYnBAMGMAAAAwIDAwAEAAEG +CgABBw8DBQZpAAEHEwMABAcGBgMEBgADAAUGAGQAAABuAAMChgQWBQYGJwQD +BjEAAQMFAAEGBAABBwQAAQYPAwUGawABBxMDAAQHBgcHBgZkAAAAbgADAoYE +FgUFBigEAwYxAAEDCQABBwUADwMFBgEFbAABBxQDAQcBBwUGAQVkAAAAbgAD +AoYEFQUGBigEAwY7AAEDBAABBw4DAQcFBm4AAQIUAwEHBQZlAAAAbgADAoYE +FQUGBigEAwY6AAEHAQUDAAECDwMFBnEAEwMGBmUAAABuAAMChgQVBQUGKQQD +BjoAAQcEAA8DBQZzABIDBgZlAAAAbgADAoYEFAUGBikEAwY5AAEHBAABBw4D +BgZ0ABEDBwZkAAAAbgADAoUEFQUGBikEAwY5AAECAwABAg4DAQcFBnYAEAMB +BwYGZAAAAG4AAwKFBBUFBgYpBAMGOAABBwQADwMFBjYAAQUFBjwAEAMGBgEC +YwAAAG4AAwKFBBUFBgYpBAMGPAABBw4DBgYwAAEHBQMHBgECOwABBw4DBwZj +AAAAbgADAoUEFQUFBioEAwY8AA4DAQcFBi0AAQIKAwgGOwABBw4DBgYBAgYA +AQJbAAAAbgADAoUEFAUGBioEAwY7AAEHDgMFBgECKwABBw0DAQcHBjsADgMH +BgECBQABBlsAAABuAAMChQQUBQYGKgQDBjsADgMGBioAAQIQAwEHBAAAAwQG +BgA6AAEHDgMGBgEHBAABBgEGWwAAAG4AAwKFBBQFBgYqBAMGOgABBw4DBQY7 +AAADBQcHAEEADgMBBwQGAQMBAwMAAwZbAAAAbgADAoUEFAUGBioEAwY6AA4D +BgZ/AA8DAwYABgcDAwYAAgMGWwAAAG4AAwKFBBQFBgYqBAMGOQABBw4DBQaA +ABADAQYBBgMDBgZbAAAAbgADAoUEFAUGBioEAwY5AA4DBgaAABUDBwZaAAAA +bgADAoUEFAUGBioEAwY4AAECDgMFBoAAAQIVAwEHBgZaAAAAbgADAoUEFAUG +BioEAwY4AA4DBgaAAAECFgMGBloAAABuAAMChQQUBQYGKgQDBjgADgMFBgEE +gQAWAwcGWQAAAG4AAwKFBBQFBgYqBAMGNwABBw0DAQcFBoIAFwMGBlkAAABu +AAMChQQUBQYGKgQDBjcADgMGBoIAAQcWAwcGWAAAAG4AAwKFBBQFBgYqBAMG +NwANAwEHBQZcAAEFJwAWAwEHBgZYAAAAbgADAoUEFAUGBioEAwY2AAEHDQMG +BlYAAQUEAAADBQYGACYAAQcWAwcGVwAAAG4AAwKFBBQFBgYqBAMGNgAOAwYG +VQAABQcDAwAAAAQGAQImAAEHFQMBBwYGVwAAAG4AAwKFBBQFBgYqBAMGNgAN +AwEHBQZVAAEHAwMBBgMAAAMFBgYAKAABBxQDBwZWAAAAbgADAoUEFAUGBioE +AwY2AA0DBgZTAAEHAwAAAwUDAwAFAAEGAQYpAAEHEgMBBwYGVgAAAG4AAwKF +BBQFBgYqBAMGNQABBw0DBgZTAAEFBQABBwEHBQABBisAEgMHBlUAAABuAAMC +hQQUBQYGKgQDBjUADgMFBgECVAABAwUAAQcGAAEGKgASAwEHBgZVAAAAbgAD +AoUEFAUGBioEAwY1AA0DBgZVAAEHBgABBwUAAQYqAAEHEgMHBlQAAABuAAMC +hQQUBQYGKgQDBjUADQMGBlYAAQMFAAEHAQUFAAEGKgASAwEHBgZUAAAAbgAD +AoUEFAUGBioEAwY1AA0DBgZWAAEHAQcFAAEHBQABBCoAEwMGBgEFUwAAAG4A +AwKFBBQFBgYqBAMGNAABBQ0DBgZXAAEDBQABBQEGBQABAikAAQISAwEHBgYL +AAECRwAAAG4AAwKFBBQFBgYqBAMGNAABBwwDAQcFBgECWAABBwUAAQUFAAEC +KgATAwYGBQABAgUAAQJHAAAAbgADAoUEFAUGBioEAwY0AA0DBgZZAAECBQAB +AgEGLwABBxIDBwYEAAECTQAAAG4AAwKFBBQFBgYqBAMGNAANAwYGWgABBzYA +EwMGBlIAAABuAAMChQQUBQYGKgQDBjQADQMGBpEAEwMGBgECUQAAAG4AAwKF +BBQFBgYqBAMGNAANAwYGkQABBRIDBwYKAAECRgAAAG4AAwKFBBQFBwYpBAMG +NAANAwYGkgATAwYGBAABAgUAAQJGAAAAbgADAoUEFQUGBikEAwY0AAwDAQcG +BpIAEwMGBgQAAQUFAAECRgAAAG4AAwKFBBUFBgYpBAMGNAAMAwEHBQYBBZIA +AQUSAwYGAQUDAAECTAAAAG4AAwKFBBUFBgYpBAMGNAAMAwEHBQYBApMAEgMB +BwYGUAAAAG4AAwKFBBUFBgYpBAMGNAAMAwYGAQKTABMDBgZQAAAAbgADAoUE +FQUGBikEAwY0AAoDAQcBAwQGAAMAAAIAkwABBxIDBgZQAAAAbgADAoUEFQUG +BikEAwYzAAECCgMGBpYAAQUSAwYGUAAAAG4AAwKFBBUFBgYpBAMGMwABAgoD +BgaXABIDBgZQAAAAbgADAoUEFQUGBikEAwYzAAECCgMGBpcAEgMGBlAAAABu +AAMChQQVBQYGKQQDBjQACgMGBpcAEgMGBlAAAABuAAMChQQVBQcGKAQDBjQA +CgMGBpcAEgMGBlAAAABuAAMChQQWBQYGKAQDBjQACgMGBpcAEgMHBk8AAABu +AAMChQQWBQYGKAQDBjQACgMGBpUAAQcBABIDAQcHBgEFTQAAAG4AAwKFBBYF +BgYoBAMGNAAKAwYGlQABAwEAFAMBBwUGAAQFAAAGSgAAAG4AAwKFBBYFBgYo +BAMGNAAKAwYGAQKUAAEHAQcUAwAKBwYGBwYGBQAABkoAAABuAAMChQQWBQYG +KAQDBjQACgMGBgEFlAABBRUDAAoHBgYDBgYFAAUGSgAAAG4AAwKFBBYFBgYo +BAMGNAAKAwEHBgaVABUDAAQHBgcDAwYAAwAGBgBKAAAAbgADAoUEFgUGBigE +AwY0AAoDAQcGBm4AAQImABUDAAQHBgMDAwYAAwAGBgBKAAAAbgADAoUEFgUG +BigEAwY0AAsDBgZoAAECBAABBQEGJgAVAwAEBwYDAwYGSgAAAG4AAwKFBBYF +BgYBBScEAwY0AAsDBgZnAAEHAQMEAAEGAQYmABYDAAMHAwMABgZKAAAAbgAD +AoUEFgUHBicEAwY0AAEHCgMGBmcAAQMBAwQAAQYBBiYAGQMGBgEFSQAAAG4A +AwKFBBcFBgYnBAMGNAABBQoDBgYBAmYAAQMBAwMAAwYmAAEHGAMBBwYGSQAA +AG4AAwKFBBcFBgYnBAMGNQAKAwcGZQAAAwcDAwADAAMGJgABBxkDBgZJAAAA +bgADAoYEFgUGBicEAwY1AAoDAQcGBmUAAwMDAAMGJgABBxkDBgZJAAAAbgAD +AoYEFgUGBicEAwY1AAEHCgMGBmUAAwMDAAMGJgABBRkDBwZIAAAAbgADAoYE +FgUGBicEAwY2AAoDBgZlAAMDBAABBgEGJgABAhkDAQcGBkgAAABuAAMChgQW +BQYGJwQDBjcACQMHBmUAAQMBAwQAAQYBAicAGgMGBkgAAABuAAMChgQWBQYG +JwQDBjcACQMBBwYGZQABBwEFLQAaAwcGRwAAAG4AAwKGBBYFBgYnBAMGNwAB +AgkDBgaUABoDAQcGBkcAAABuAAMChgQWBQcGJgQDBjgACQMHBpMAGwMGBgEC +RgAAAG4AAwKFBBgFBgYmBAMGOAABBwgDAQcGBpMAGwMHBkYAAABuAAMChQQY +BQYGJgQDBjkACQMGBpMAHAMGBkYAAABuAAMChQQYBQYGJgQDBjkACQMHBpIA +HAMGBgEFRQAAAG4AAwKFBBgFBgYmBAMGOQABBwkDBgaSABwDAQcGBkUAAABu +AAMChQQYBQYGJgQDBjoACQMHBpEAHQMGBkUAAABuAAMChQQYBQYGJgQDBjoA +CQMBBwYGkQAdAwMGAAQAAAYCRAAAAG4AAwKFBBgFBgYmBAMGOgABBwkDBgYB +ApAAGgMABQYGBwYGAEkAAABuAAMChQQYBQcGJQQDBjsACQMHBpAAGQMGBkkA +AABuAAMChAQaBQYGJQQDBjsACgMGBgEEjwAZAwYGSQAAAG4AAwKEBBoFBgYl +BAMGOwABAgkDAQcGBo4AAQIYAwEHBQYBBUkAAABuAAMChAQaBQcGJAQDBjwA +CgMHBo0AAQUYAwEHBQZKAAAAbgADAoUEGgUGBiQEAwY8AAEHCQMBBwYGjQAB +BRgDBgZKAAAAbgADAoUEGgUGBiQEAwY9AAoDBwaMAAEFGAMGBkoAAABuAAMC +hQQaBQcGIwQDBj0AAQcKAwYGAQKLAAEHGAMGBkoAAABuAAMChgQaBQYGIwQD +Bj4ACgMHBosAAQcYAwYGSgAAAG4AAwKGBBoFBwYiBAMGPgABBwoDBwaKAAEH +GAMGBkoAAABuAAMChgQbBQYGIgQDBj8ACwMGBgEFiQABBxgDBgZKAAAAbgAD +AocEGgUHBiEEAwZAAAoDAQcGBokAAQcYAwYGSgAAAG4AAwKHBBsFBgYhBAMG +QAABAgoDBwaIAAEHGAMGBgECSQAAAG4AAwKHBBsFBwYgBAMGQQABBwoDBwaH +AAEHGAMIBkgAAABuAAMCiAQbBQYGIAQDBkIAAQcKAwcGhgABBxkDAQcGBkgA +AABuAAMCiAQbBQcGHwQDBkMAAQUJAwEHBwaFAAEHGQMBBwUGSQAAAG4AAwKI +BBwFBgYfBAMGRQAJAwEHBwaEAAEHGQMFBkoAAABuAAMCiQQbBQcGHgQDBkUA +AQcJAwEHBwaDAAEHGAMGBkoAAABuAAMCiQQcBQcGHQQDBkYACgMBBwcGggAB +BxcDAQcFBksAAABuAAMCiQQdBQYGHQQDBkYAAQcKAwEHBwaAABkDBgZLAAAA +bgADAooEHAUHBhwEAwZHAAsDAQcHBn8AGAMBBwUGTAAAAG4AAwKKBB0FBgYc +BAMGSAAMAwcGfgAYAwYGTAAAAG4AAwKKBB0FBwYbBAMGSAABBwwDBwYBAkcA +AQI0ABgDBgZMAAAAbgADAosEHQUGBhsEAwZJAA0DCAZAAAECBAABBjUAFwMB +BwUGBAABBEgAAABuAAMCiwQdBQcGGgQDBkoADQMBBwcGPgABBwQAAQY2ABcD +BAYBBwEGAwABBgUAAQIFAAECPQAAAG4AAwKCBAEFBQQAAwYEBAAeBQYGGgQD +BksADgMIBjsAAQMDAAEFAQY2AAEFFwMDBgAHAwYGAAAFBgAFAAEFQwAAAG4A +AwKCBAEFBQQBBgMEHQUHBhkEAwZMAA4DAQcHBgEFNwABBQEDAwABBgEGNwAB +BxYDAAsHBgYHAwYCAAAGBgBJAAAAbgDMAgMGTQAPAwEHBwYBAjQAAAQDAwAA +AwY4ABcDAwYABQMDBgAAAAMGCgABBj4AAABuAM0CAQYBBk4AEAMIBgECMAAA +BAcDAwAEBjkAFwMACwYGBwMHBgAFBgYCAAQAAQcFAAEEPgAAAG4AzgIBBk8A +EQMBBwgGLAABBwMDBQY6ABcDAAQGBwMDBgYFAAEFRAAAAPMAAQMBAwQAAQYB +BgMAHgMGBmsAEgMBBwgGKAABBwQDBQY7ABsDBgYKAAEGPwAAAPMAAQMBAwQA +AQYBBgMAAQcdAwcGawABBxIDAQcJBiMABQMBBwQGPAABBRsDBgYEAAEHBQAB +Bj8AAADzAAEDAQMFAAEGBAAdAwEHBAYBBW0AAQUUAwEHCQYdAAEHBgMFBj0A +HAMFBgEFBAABBwUAAQI/AAAA9AABAwUAAQYBBQMAGwMBBwEHBAZxABYDAQcK +BhYAAQcIAwQGAQI+ABsDAQcFBgUAAQUEAAEGQAAAAPQAAQMBBwUAAQYDAAEC +GQMBBwYGcgABBxgDAQcMBgECCQAAAwIFBwAKAwUGQAAbAwYGBAABBwUAAQZA +AAAA9QABAwUAAQIEABoDBwZzAB0DAQcBBwoGAQcBBw4DAQcEBkEAAQUbAwYG +BAABAwUAAQZAAAAA9QABBQoAAQcaAwcGcwABAjYDBAZDABwDBgYEAAEHBAAB +BkEAAAD/AAEAAQAaAwEHBgZ1AAEFMgMEBkUAGwMBBwUGAQUDAAEHBQABBkEA +AAD/AAEAAQAbAwcGdgABAi4DBAZHABsDAQcFBgQAAQMFAAEGQQAAAP8AAAMA +AAIAGwMHBngAAQcoAwEHAwYBAkgAAQcbAwYGBAABBwQAAQZCAAAA/wADABwD +BgYBBXkAAQIkAwMGAQJLABwDBgYDAAEHBQABBkIAAAD/AAMAAQcbAwEHBgZ8 +AAECAQcdAwADBgYCAE8AHAMGBgMAAQMEAAECAQZCAAAA/wAEABwDBwZ/AAEC +AQcUAwEHAQVUAAEHHAMGBgAEAAACBwQAAQZDAAAA/wAEAB0DBwaFAAECAQIH +BwECAQJaABwDAQcFBgMAAQMFAAEGQwAAAP8ABQAdAwcG6QAcAwAGBgYABgYE +AwABAwQAAQYBBkMAAAD/AAUAHQMBBwYGAQXnABkDAAUGAwMHBgADAAEGAwAB +BwEHBAABBkQAAAD/AAUAAQUdAwEHBgYBAuYAGAMDBgADAwYFAAcAAQMEAAEF +AQZEAAAA/wAGAB4DBwblAAEHFwMBBwUGBwABBQEDBAABBgEGRAAAAP8ABgAB +Bx4DBwbkABgDBgYHAAEDAQMDAAADAgYGAEQAAAD/AAcAHwMHBuIAAQIYAwYG +BgAAAwIDAwADAAMGRAAAAP8ABwABBx8DBwbhABgDAQcFBgcAAwMDAAMGRAAA +ABoAAAkCBgkMDAoJCAQABAABAQUIAQEHAAEJAQQHAAAHBAkKDAoJBAAEAAAD +Ag0MAAUAAQQNCAADAQAGAAQIAQYBAAUIAQQBAQUIAA8CAAABCQoJBAAJCAQB +AAIAAwgAAwQABgAECAEGeQAgAwcG4AAYAwYGBwADAwEAAQAEBkQAAAAZAAAM +CA0NBgEAAAYNDQwIAwAABQQKDQoEAAcAAAMGDQQABQAACwEMDQ0KBgIECQoB +AAMAAAMMDQIABAABAQEGBA0ABQoEBAYIAAMNAAQEAAIMAw0AAwIABAADDQAE +DAIACAMNAAoIAAABDA0NDAwJAw0ACQwGAQYNCgEABAAEDQEEeQAhAwcG3gAZ +AwYGBgAEAwEAAQIEBkQAAAAXAAAFAQwNDQYABQADDQEMBAAAAwINAgAHAAAE +BA0NBAQAAAUBDA0NCgAFAAEGAQkDAAADCQ0IAAYAAQoDDQECBAAACgEKDQYA +AAgNDQwDAAAHCg0NCQAAAQADDQAKAgAABg0NDAAABgMNAQYDAAAFBgwAAAQA +Aw0BBnoAIQMBBwcG3QAZAwYGBQABAgQDAQAFBkQAAAAXAAAECQ0NDAYAAAQM +DQ0MBAABAQENBwABAQMNAQQEAAEGAw0BBAYAAAcMAgAABA0MAAYAAQkDDQEC +BQAACQENCQAACA0NCgADAAAHCg0NCAAAAQADDQAHAgAACA0NCgADAAMNAQQE +AAAHCQgBDA0NCgB8AAEHIAMBBwcG2wAaAwYGBQAFAwECBQZEAAAAFgABBAMN +AQYGAAAEDA0NDAQAAQEBDQYAAQEBDAMNAQQEAAEJAw0BAQYAAQgBBgMAAAMM +DQIABQABCQMNAQIGAAAIBgoAAAgNDQoDAAAHCg0NCAAAAQADDQAHAgAACA0N +CgADAAMNAQQFAAEKAQoDDQECfQABAwEHHwMBBwYGAQXaABoDBgYEAAEFBAMB +BwUGAAQFAAACQQAAABYAAQoDDQECBQABAQQNBAABAQENBgABCgQNAQQEAAEK +Aw0HAAEGAQgDAAADCQ0IAAUAAQkDDQECBwAABwoAAAgNDQoAAwAABwoNDQgA +AAEAAw0ABwIAAAgNDQoAAwADDQEEBQABBgMNAQiBAB8DAQcGBgEF2AAbAwcG +AAMAAAIABQMBBwUGAAQCAAACQQAAABYABA0BAQMAAAMBBAkABA0ABgkEAAAB +DQUAAQgEDQEMAQQEAAAEDA0NDAcAAQQBCQMAAAMEDQwABQABCQMNAQIKAAAE +CA0NCgMAAAcKDQ0IAAABAAMNAAcCAAAIDQ0KAAMAAw0BBAQAAAUBDA0NDACD +AAEHHgMBBwYGAQLXABsDAAMHBgYAAwcDBgEHBQMGBgADAAAGAEIAAAAVAAEC +BA0EAAEBCAQABAAAAQ0EAAEEBA0AAwYJBAAEAAAEDA0NDAcAAQQBCQQAAAMM +DQIABAABCQMNAQIKAAAECA0NCgMAAAcKDQ0IAAABAAMNAAcCAAAIDQ0KAAMA +Aw0BBAQAAQkDDQEKAQGDAAEHAQcdAwcGAQLVACMDAQYBBgYDAAMGBgMABgZC +AAAAFQABBAMNAQwPAAEBAQ0DAAECBA0ABAkACQQEAAAEDA0NDAcAAQQBCQQA +AAMJDQgABAABCQMNAQIKAAAECA0NCgMAAAcKDQ0IAAABAAMNAAcCAAAIDQ0K +AAMAAw0BBAMAAQIDDQADCAQJAIQAHwMHBgEC0wABAiMDAQYHAwADBwcDAAUG +AQJCAAAAFQABAQQNDwAABgENAAABDAMNAAUKAAAJBAAEAAAEDA0NDAcAAQQB +CQQAAAMEDQwABAABCQMNAQIKAAAECA0NCgMAAAcKDQ0MBAAGAAMNAAcBAAAJ +DQ0KAAMAAw0BBAMAAAgMDQ0MAAAJCIQAHwMHBgEC0gAuAwYGQwAAABYABA0B +AQ4AAAUBDQAACgADDQAGDAEAAAkEBAAABAwNDQwHAAEEAQkFAAADDA0CAAMA +AQkDDQECCQAACAEKDQ0KAAACAw0AAwgJDAADDQALCQAAAQwNDQoAAAYAAw0A +BAQAAQoDDQAHCQAABg0JAQCCACADBwYBBdAAAQcuAwYGQwAAABYAAQoDDQEB +CAABAQEEBAAABAENAAkEDQECAwABCQEEBAAABAwNDQwHAAEEAQkFAAADCQ0I +AAMAAQkDDQECCQABBgMIAAMGAAAABAgABgQABgkKBgMAAQYDCAADBgACAAQI +AAMCAAQABQgBAgECAwgBBIMAIAMBBwYGAQXPAC4DAQcFBkQAAAAWAAEEAw0B +BAgAAQkBCAQAAAMBDQYABA0BBgQAAQkBBAQAAAQMDQ0MBwABBAEJBQAAAwQN +DAADAAEJAw0BArkAAQMBBx8DAQcHBs0ALwMGBkQAAAAXAAAECQ0NCgcAAAMC +DQgABAABAQUNAQgFAAEJAQQEAAAEDA0NDAcAAQQBCQYAAAYNDQIAAAkDDQEC +CwAAAwQGAQCrAAECAQcgAwEHBwbLAAECLwMFBgEFRAAAABcAAAUBDA0NAgAF +AAAEAQwNCAQAAQIEDQEKBgABDAEGBAAEDQEBBgABCAEKBgAABgkNCAAACgMN +AQQKAAAEBg0NCawAIgMBBwcGygAvAwEHBQZFAAAAGQAABAkNDAIDAAAFBgwN +DQgAAwABBAQNAQwBAQUAAAcGDQoBAAAGAAQNAQYFAAAEAgwNBAUAAAUEDQwA +AgAEDQEJAQEJAAAECQ0NDKwAAQcBByEDAQcHBsgAAQcvAwYGRQAAABoAAAsE +CAoMCgkIBAAGCAADAAUJAQIFAAUJAQEBCAcJAAQCAAAGBAkBBgUAAAMNDQgA +BwkBBggAAAQCCgwErQAkAwcGxwAvAwEHBQZGAAAATwABAQEBwgAlAwcGxQAw +AwYGRgAAAP8AFQAlAwcGAQLCAAEHMAMFBkcAAAD/ABUAJgMIBsAAAQIwAwYG +RwAAAP8AFQABByYDAQcHBr8AMQMFBkgAAAD/ABYAKAMHBr0AMQMGBkgAAAD/ +ABYAAQcoAwgGugABBzEDBQZJAAAA/wAXACkDAQcHBrkAMQMGBkkAAAD/ABcA +KwMHBgEFtgAxAwEHBQZKAAAA/wAYACsDAQcHBrQAMgMGBkoAAAD/ABgALQMI +BrEAAQcxAwEHBQZLAAAA/wAZAC4DCAauAAEHMgMFBgECSwAAAP8AGQAvAwEH +CAYBAqoAAQIyAwYGTAAAAP8AGgAxAwoGAQKmADMDBQZNAAAAYgABCQEJBgoA +AwkJBgAbAAADBgkJAAcKAQmGADQDAQcKBqIAMwMGBk0AAAAgAAEKAQwHDQAD +DAwJAAkAAAYJDAwLCgoGCQADCgsMABgAAAMJCwwAEQ0AAwwMCgAOAAAECQoM +DBENAQwBCh0AAAUKCwoJAgAJAAADCQoLABEAAQoBDAgNAAMMCwIADAAABQwM +CwoKAAUJAAQKCgwLCwAABQsKCQkCAAMAAAoCBAkJCgsMAAAHDwMAAwsKCQAJ +AwAECQoLDBgDAwYBAgMGoAAzAwEHBQZOAAAAHgABDA4NAQoHAAEKDg0VAAEJ +AQwaDQEJBwABBAEKGw0BChsADw0BDA8AAQsPDQEJCgANDQEJCwAPDQQADgMB +Cg8NFAMABwcGAwMHBgYAAwABBp8ANAMFBk8AAAAcAAEMEg0BAgUAAQoNDQEL +EwABDB0NAQsFAAEMIA0BDBkAAQwODQEJDQABCRMNAQQIAA0NDAABCg0NAQwE +AAEHDQMBCQ4NAQkUAwEHAwYBAwMGAwABAp0ANAMGBk8AAAAbABUNAQkEAAEK +DQ0BCREAAQsfDQELBQABDCINAQsXAAELDg0NAAEKFQ0BCQYAAQQMDQELDAAB +CQ0NAQsFAA4DDg0WAwEHBwafAAEHMwMBBwUGUAAAABkAAQkXDQQAAQsNDRAA +AQkhDQEMBQABCiQNAQYVAAEJDg0MAAEKFw0BCgUAAQkMDQEGDQANDQEKBQAO +Aw4NFwMBBwcGnQABBzQDBQZRAAAAGAABCRkNAwABCw0NDwABCyINAQwFAAEC +JQ0BChUADQ0BCwsAAQkZDQEKBAABCQwNDgANDQEJBQABAg0DDQ0BDBgDAQcH +BpsAAQc0AwYGUQAAABgAGg0ABAwAAAsMDQEMDgABDCQNBgAmDQEMFAANDQEK +CwAbDQQAAQkMDQ4ADQ0HAA0DDQ0BDBkDAQcHBpkAAQc0AwEHBQZSAAAAFwAc +DQADAAALAAwNAQoNAAEMJQ0GAA8NAAMMCgkAAwYAAwkJDAAPDQELEwANDQEJ +CgABChwNAwABCgsNAQwOAA0NCAAMAw0NAQwbAwcGlwA2AwUGUwAAABYAAQwc +DQADDAAMAAwNAQkMAAEMFg0BDAEMAwsBDAEMCQ0GAA0NAQkKAAADAgYKAA0N +AQsSAA0NAQYKAB0NAAQLAAAKCw0BDA4ADQ0IAAEHCwMNDQELHAMHBgEClAA2 +AwUGVAAAABUAAQkeDQEGAQwMDQwAAQoSDQEMAQoNAAEKAQwEDQYADQ0BBg0A +AQYBDAwNAQoRAA0NCgABCh4NAAMAAAoACw0BDA4ADQ0JAAsDAQwMDQEKHQMI +BpIANgMGBlQAAAAVABUNAQwBDAgNAQwBDAwNDAARDQEMEwAABAoNDQkFAA0N +AQYOAAECAQoMDREADQ0KAAEMEQ0ABQsKCQoMAAgNAAMMAAoACw0BCw4ADQ0K +AAoDAQwMDQEKHgMBBwcGkAA2AwEHBQZVAAAAFAABCRENAAMKBgIABAAAAwIJ +DAASDQsAAQwPDQEMFwABCgEKBQABDAwNAQYQAAEKDA0QAAEMDA0KAA8NAQsB +BgYAAAMCBgwABg0BAAEKCw0BCw4ADQ0KAAECCQMBDAwNAQogAwgGjQA3AwUG +VgAAABQAAQwPDQEMAQQJAAECAQoRDQoAAQkPDQEKHwABDAwNAQYQAAECAQoL +DQEKDwABDAwNCQABCg4NAQkBAgkAAQIBCQUNAQwBCwsNAQoOAA0NCwABBwgD +AQsMDQEJIgMIBokAAQI3AwUGVwAAABMAAQIPDQELAQIMAAEKEA0KAA8NAQkg +AAEMDA0BBhEAAQIBDAsNDwABDAwNCQABDA0NAQoNAAEGEQ0BCg4ADQ0MAAEH +BwMBCgwNAQkkAwgGAQWFAAEHNwMFBgECVwAAABMAAQwODQELAQINAAECAQsO +DQEMCQABCQ4NAQkhAAEMDA0BBhIAAQYLDQEMDgABDAwNCQANDQEMAQIOAAEG +EA0BCg4AAQwMDQ0ABwMBCgwNAQkmAwEHCgYBAn8AOAMGBlgAAAATAA4NAQwB +Ag8AAQYODQELCQAODQEKIgABDAwNAQYTAAEMCw0OAAELDA0JAA0NAQYQAAEJ +Dw0BCg4AAQwMDQ4ABgMBCgwNAQkqAwEHDgYBAnYAOAMBBwUGWQAAABIAAQkO +DQEGEQABDA0NAQoJAA0NAQwjAAEMDA0BBhMAAQYLDQELDQABCwwNCQANDQEC +EAABAgEMDg0BCg4AAQwMDQ8ABQMBCgwNAQkyAwEHCQYBBXEAAQU4AwEHBQZa +AAAAEgABDA0NAQwSAAEJDQ0BCggAAQsNDSQAAQwMDQEEEwABAgEMCw0NAAEL +DA0IAAEEDA0BChIAAQYODQEKDgABDAwNEAAEAwEJDA0BCTYDAQcDAAECAwZv +ADoDBQZbAAAAEgAODQEGEgABBA0NAQkIAA0NAQwkAAELDA0BBBQAAQkLDQEJ +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 +AQsOAAEMDA0BDBMAAQoMDQEJFgABB6UDBgaFAAAAEQABCQwNAQkVAAECDA0I +AAEMCw0BCRQAAQYLDQELBQABCw4NAQYSAAECAQwNDQEJCQABCgwNKwABDAsN +AQsOAAEMDA0BDBMAAQsMDQEJGACkAwUGhgAAABIADA0BDBUAAQIMDQgAAQkL +DQEKFAABCQsNAQoFAAELDg0BChIAAQYODQoAAQoMDSsADA0BCw4AAQwNDRMA +AQwMDQEJGgChAwYGhgAAABIADQ0BBBQAAQIMDQkACw0BDBQAAQoLDQEJBQAB +Cw4NAQwBAhEAAQsODQoAAQoMDSsADA0BCw4AAQwNDRMADQ0BCRsAAQKfAwUG +hwAAABIAAQsMDQEJFAABAgwNCQABDAoNAQwBAhMAAQwLDQYAAQsPDQEJEAAB +BA4NAQwKAAEKDA0rAAwNAQoOAAEMDQ0BChIADQ0BCR0AAQeJAwEHBAYBBwwD +AQcDBooAAAATAAwNAQwBAhMAAQIMDQkAAQoLDQEGEgABAgwNBgABCw8NAQwB +Ag8AAQsODQEKCgABCwwNKgABCQwNAQoOAA8NEgANDQEJHwABB4YDBAYFAAEH +BgMBB5AAAAATAAEMDA0BCRMAAQIMDQoACw0BChIAAQYMDQYAAQsQDQEKDgAB +Bg8NAQkKAAELDA0OAAEJAQIaAAELDA0BCg4ADw0BBBEADQ0BCSEAAQeCAwQG +nwAAABMAAQoNDQEEEgABAgwNCgABDAsNAQIRAAEKCw0BCgYAAQsLDQEMAQwE +DQEJDAABBAEMDw0LAAEMDA0OAAADDA0KABkADQ0BCQ4ADw0BDBAAAQoNDSQA +AQd+AwQGoQAAABQADQ0BDAECEQABAgwNCgABBgsNAQkQAAECDA0HAAELCw0B +DAEJBQ0BCQoAAQYBDBANCwABDAwNDgAEDRcAAQoNDQ8AEA0BCg8ADg0mAAEH +eQMBBwQGowAAABQAAQoNDQEKAQIQAAECDA0LAAEMCw0BAg8AAQkLDQEMBwAB +CwsNAAMMAAwABQ0BCwEEBgABAgEJEQ0BCQsAAQwMDQ4ABQ0BCxUADg0PABEN +AQkNAAEKDg0oAAEHdQMBBwMGAQSlAAAAFQAODQELAQIPAAEEDA0LAAEJCw0B +Cg4AAQYMDQEKBwABCwsNAAMMAAkABw0ABwwJBgYJCgwAEg0MAA0NDQABCgcN +AQwBBhEADw0PAAwNAQwBCwQNAQkLAAEKDw0qAAEFcQMBBwMGqAAAABUAAQkP +DQEGAQILAAECAQkNDQwAAQsLDQEKDAABBA0NCAABCwsNAAMMAAAAHw0BCwwA +DQ0NAAsNAQwBCQwAAQwPDQEKDwAMDQEMAQAGDQEJBwABAgEMDw0BCywAAQJs +AwEHAwYBAqoAAAAWAAEMDw0ABwwJBAICAAAAAwIAAwYKDAAODQ0ADA0BCwEE +CQABBgEMDA0BCggAAQwLDQAEDAAACh4NDQANDQwAAQYODQMMAQsDCgADCwwM +ABENDwABBgwNAAMMAAoABw0ABQwMCwsMABINAQkvAGgDAAQHBgYFrQAAABcA +Ew0FDBINDQABCQ0NAAMKBgIAAwAAAwIGCwAODQkAAQwLDQEMAwABDBwNAQoM +AAEEDQ0MAAEMKA0BDA8AAQoMDQADDAAAAB4NMgABB2IDAAQHBgYCsAAAABgA +KQ0OAAEKIg0BCQkAAQwLDQEMBAAcDQ0AAQoNDQwAKQ0QAAEMDA0ABAwAAAkc +DQEMNAABB10DAAQHBgYCswAAABgAAQkoDQ8AAQogDQELCgABDAsNAQwEAAEK +Gg0OAAEMDQ0LAAEMKA0BCRAADQ0BDAMAAQwbDQEENgABAlcDAQcDBrcAAAAZ +AAEEJw0QAAELHg0BDAsAAQwLDQEMBQABDBgNAQIOAA4NCwABDCcNAQwQAAEJ +DQ0BDAQAGg0BDDoAAQcpAwEHBgYABQIAAAUHABEDAQcKAwAEBwYGBboAAAAb +AAEMJQ0RAAEJHA0BDAwAAQwLDQEMBgABDBYNDwAPDQEJDAABCyQNAQoRAA4N +AQwFABgNAQw9AAEFKAMJBgUAAQIBBwgDAQcBAgMABwMABAcGBgW9AAAAHAAB +CSQNEwABDBkNAQoNAAEMCw0BDAcAAQsTDQEMDwABCwEMDg0BCg4AAQoBDCAN +AQkRAAEMDg0BDAYAAQwVDQEMQQAoAwADBwYCABgABAMABAcABgXAAAAAHgAB +CyINFAABCRcNDwABDAsNAQwIAAEKEQ0BChUAAAMJCgwACA0BChAAAQIBDBwN +AQoWAAADCQoLAAkNAQwHAAEKEw0BDEQAAQcUAwEGAQcJAwADBwcCABIAAQYL +AAEDAQfGAAAAIAABCQEMEQ0AAwwKDAALDRcAAQsRDQELEQABDAsNAQwKAAEK +DQ0BCh0AAQoBDAMNAQwUAAEKAQwVDQELAQkeAAADBAoMAAMNAQwJAAEKDw0B +DEgAAQISAwEHBwYBBREAAAQHAAACAwYBBdIAAAAkAAEJAQsEDAENAQ0DDAEL +AQoEAAELCw0aAAEKAwwGDQADDAwKABQAAQwLDQEMDQABCgMMAQ0DDAEKIwAA +AwoMDQAYAAADAgkLAAUMAw0EDAEKAQkmAAADCw0MAAsAAAQGCgwMBQ0ABAwM +CwlNAAMDAAUHAAACBwAKAwEHBwYBAgwAAQUDBwEF2AAAADUAAQsLDTsAAQwL +DQEMOwABCVEAAQpnAAEHAQIIAAEHBwMABAIAAAUEBugAAAA1AAELCw0BBjoA +AQwLDQEM/wAFAAEHAQcDAwEC7QAAADUAAQsLDQEGOgABDAwN/wD4AAAANQAB +CwsNAQk6AA0N/wD4AAAANQABCwsNAQk6AA0N/wD4AAAANQABCwsNAQk6AA0N +/wD4AAAANQABCwsNAQk6AA0N/wD4AAAANQABCwsNAQo6AA0N/wD4AAAANQAB +DAsNAQo6AA0N/wD4AAAANQABDAsNAQo6AA0NMwABAwED/wDDAAAANQABDAsN +AQs6AA0NMgAEA/8AwgAAADUAAQwLDQEMOgANDTEABgP/AMEAAAA1AAEMCw0B +DDkAAQkNDTAACAP/AMAAAAA1AAwNAQw5AAEKDQ0vAAoD/wC/AAAANQANDTkA +AQwNDS4ADAP/AL4AAAA1AA0NOQAODS0ADgP/AL0AAAA0AAEKDQ05AA4NAQYr +ABAD/wC8AAAANAABDA0NOAABCw4NAQkqABID/wC7AAAANAAODTgADw0BCSkA +FAP/ALoAAAAzAA8NNwAQDQEKKQAUA/8AugAAADIAAQkBDA4NNgAABAkLDAwN +DQEKKgASA/8AuwAAADYAAAMGCgwACQ08AAEJAQwJDQELKwAQA/8AvAAAADsA +AQIBCgUNAQY/AAEJAQwFDQEMLAAOA/8AvQAAAD8AAAQLDQ0JQgAABQkMDQ0M +AC0ADAP/AL4AAABBAAEJAQpFAAEMAQwuAAoD/wC/AAAAuQAIA/8AwAAAALoA +BgP/AMEAAAC7AAQD/wDCAAAAvAABAwED/wDDAAAA/wD/AIIAAAD/AP8AggAA +AP8A/wCCAAAA/wD/AIIAAAD/AP8AggAAAP8A/wCCAAAA/wD/AIIAAAD/AP8A +ggAAAP8A/wCCAAAB +==== diff --git a/images/debian_16c.dat b/images/debian_16c.dat new file mode 100644 index 0000000..2b38f81 --- /dev/null +++ b/images/debian_16c.dat @@ -0,0 +1,14 @@ +# Lilo boot menu background configuration (Lilo 23) +# +# color palette: 0 black, 3 magenta, 7 pink, +# 8 middle grey, 10 bright grey, 13 white +# +# bmp-table = ,;,,, +# bmp-colors = ,,;,, +# bmp-timer = ,;,, + +bitmap = debian.bmp + +bmp-table = 16,12;1,12,16 +bmp-colors = 10,0,;7,0, +bmp-timer = 34,28;13,0, diff --git a/images/debian_16c.uu b/images/debian_16c.uu new file mode 100644 index 0000000..2725ea6 --- /dev/null +++ b/images/debian_16c.uu @@ -0,0 +1,501 @@ +begin-base64 644 debian.bmp +Qk2SVwAAAAAAADYEAAAoAAAAgAIAAOABAAABAAgAAQAAAFxTAAAgHAAAIBwA +AAABAAAAAQAAAAAAACIiIgAzMzMAVQDdAFVVVQBVVXcAd3d3AHdV3QCIiIgA +qqqqAMzMzADMzN0A3d3dAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8A +/wCCAAAA/wD/AIIAAAD/AP8AggAAAP8A/wCCAAAA/wD/AIIAAAD/AP8AggAA +AP8A/wCCAAAA/wD/AIIAAAD/AP8AggAAAP8A/wCCAAAA/wD/AIIAAAD/AP8A +ggAAAP8A/wCCAAAA/wD/AIIAAAD/AP8AggAAAP8A/wCCAAAA/wD/AIIAAAD/ +AP8AggAAAP8A/wCCAAAA/wD/AIIAAAD/AP8AggAAAP8A/wCCAAAA/wD/AIIA +AAD/AP8AggAAAP8A/wCCAAAA/wD/AIIAAAD/AP8AggAAAP8A/wCCAAAA/wD/ +AIIAAAD/AP8AggAAAP8A/wCCAAAA/wD/AIIAAADoAAAHCg0MCQwMBAD/AJIA +AADnAAADCQ0MAAMAAAMJDQYA/wCRAAAA5wAAAwkNCQADAAADBA0NAK8AAQIB +BBIGzQAAAHMAAAUCBAQAAAAEBAECAQIDBAECAQAEBAEABAQBAgMAAwkBBggA +BAQBAgUAAQYDCQADAgAAAAQEAQABAgMEAQIBAAQEAAcAAAkJAgACAAMJAQAE +BAEABAQBAAEABAQBAAQEAQIBAgMEAQIBAAQEAAoAAg0MAAIGDA0MAwABCQEE +oQABAgMGBAcOAwADBwYGANEAAAByAAEGBA0AHwQJDQ0KBgYMDQwGAgoNDQkA +CQ0NCgYABA0NDAkMDQIABgAABQkNDQoGAAQAABkMDQ0JCg0JAAkNDQoCBgwN +DAYCCg0NCQIJAAMNACgKCg0MCQIKDQ0JAgkNDQoCAgoNDQkACQ0NCgYGDA0M +BgAJDQ0KAgAABQ0ABwwEAAAJDQ0AmwAAAwIHBwAVAwEHAQXWAAAAcgAAAwkN +DAAEAAANDQ0EAAAJDQkAAAQNDQADAAAIDQ0EAAANDQkDAAEGAQQHAAADDQ0E +AAQAAAMKDQwAAwAAIAIJAAANDQQAAAkNCQAABA0NAAANDQkAAAoNCQAABA0N +AwAACA0NBAAABA0NAwAACA0NBAAACQ0JAwAAAw0NBAADAAAFDQwJBAIABAAA +AwkNCgCWAAEFAQcWAwEH3AAAAHIAAAMJDQkABAAADQ0NBAAACQ0JAAAEDQ0A +AwAABw0NBAAGDQ0ADQAAAw0NBAAEAAADDQ0EAAcAABwNDQQAAAkNCQAABA0N +AAANDQQAAAkNCQAABA0NAwAACA0NBAAABA0NAwAACA0NBAAACQ0JAwAAAw0N +BAADAAAEBgoEAgYAAQSTAAECFAMAAwcHAgDhAAAAcgAAAwkNCQAEAAANDQ0E +AAAJDQkAAAQNDQADAAAHDQ0EAAkNCQANAAADDQ0EAAMAAAMEDQ0ACAAAHA0N +BAAACQ0JAAAEDQ0AAAQNDAIACQ0JAAAEDQ0DAAAIDQ0EAAAEDQ0DAAAIDQ0E +AAAJDQkDAAALDQ0EAAAEDQwJDQwAlgABBRIDAAQHBwYC5QAAAHIAAAMJDQkA +BAAADQ0NBAAACQ0JAAAEDQ0AAwAABw0NBAAJDQwABQkBAgcAAAMNDQQAAwAA +AwQNDQAFCQAQBgAADQ0EAAAJDQkAAAQNDQQAAQkDDAAHDQkAAAQNDQADAAAI +DQ0EAAAEDQ0DAAAIDQ0EAAAJDQkDAAAMDQ0EAAANDQIABg0KkgABBxIDAAMH +BgYA6QAAAHIAAAMJDQkABAAADQ0NBAAACQ0JAAAEDQ0AAwAABw0NBAAGDQoA +AwQAAw0NBAAHAAAJDQ0EAAACAA0NAAMEABIKDQkAAA0NBAAACQ0JAAAEDQ0H +AAAICg0JAAAEDQ0DAAAIDQ0EAAAEDQ0DAAAIDQ0EAAAJDQkDAAAMDQ0EAAQN +DQAABA0NBAABCQECiQABBxEDAQcDBuwAAAByAAADCQ0JAAQAABcNDQQAAAkN +CgAACQ0NAAAEDQ0EAAANDAADAAENAQ0IAAAtDQ0MBAwJAAoNAgAACg0EAAAN +DQYAAAwNCgAACQ0NAAAJDQ0AAAkNCQAABA0NAAMAAAgNDQYAAAoNDQMAABcN +DQQAAAkNCgAABg0NBAACDQ0AAAQNDAADAAADCQ0MAIYAAQcRAwEHBAbuAAAA +cQABCQUNAQQDDQAGBAAJDQ0MBA0BCgEMAw0BDAMAAAcEDQkECQ0JAAYAAQQD +DQAOCQwNCQAADAwEBg0MAAADDQEMBA0BCQQNAQkDAAAJDA0EBg0NAgAEAAMN +AQABAAMNAQwEDQADCQAAAAMNAAYEAAkNDQwEDQEMAwAABQkNCQQMAAMNAAUJ +AAkNDACDAAEHEgMBBwQG8AAAAHIAAAMJDQkABAAAEQYJAgAABAkGAAYJBgAA +BAkJAAYAAwkBAggAAAcCBAkCAAkJAAMAAAQGCQkGBAAADAQJAgIJCQIAAAYJ +BgUAAQQDCQECAwAAAwIJCQADAAAHBAkCAgkJBgAEAAAMBgkCAAAECQYABgkJ +BQAABAIJCQYGAAEEggATAwEHBAbyAAAAcwABDAEJ/gABBxQDBQbzAAAAcwAB +AgECBAAAAwkNBABMAAEMAQwOAAADCQ0EAJYAAQcUAwEHBAb1AAAAeQAAAw0N +CQBLAAAEBA0NBA0AAAMNDQkAlAAWAwUG9gAAAHkAAQQBCU0AAQkBCQ4AAQQB +CZIAAQIXAwUG9wAAAP8AawABAhcDAQcFBvgAAAD/AGkAAQUYAwEHBQb5AAAA +/wBnAAECGQMBBwUG+gAAAP8AZgAaAwEHBQb7AAAA/wBkABsDAQcFBvwAAAD/ +AGIAAQcbAwEHBQb9AAAA/wBgAAEHHAMBBwUG/gAAAP8AXwAaAwEHAwMDAAEG +AQb/AAAA/wBdABoDAwYBAwEDAwABBgEG/wABAAAAbgABAs4GHQABBxgDAQcD +BgADBQcDAAQAAQb/AAEAAQAAAG4AAQIBAs0GHAAYAwEHBAYAAwAAAwAEAAEG +/wADAAAAbgADAswGGgABBxcDAQcEBgMAAQf/AAkAAABuAAMCyQQDBhkAGAMF +Bv8ADgAAAG4AAwLJBAMGFwABBxgDBQb/AA8AAABuAAMCyQQDBhYAGAMBBwQG +/wARAAAAbgADAskEAwYUAAEHGAMEBgEC/wASAAAAbgADAskEAwYTABgDBAb/ +ABUAAABuAAMCyQQDBhIAFwMDBgEC/wAXAAAAbgADAskEAwYQAAEHFQMFBgEC +/wAYAAAAbgADAskEAwYPABYDBwb/ABgAAABuAAMCyQQDBg4AGAMHBv8AFwAA +AG4AAwLJBAMGDAABBxoDBwb/ABYAAABuAAMCyQQDBgsAAQcbAwEHBgb/ABYA +AABuAAMCyQQDBgoAHgMEBv8AGAAAAG4AAwLJBAMGCQAcAwEHBAb/ABoAAABu +AAMCyQQDBgcAAQUbAwEHBAb/ABwAAABuAAMCyQQDBgYAAQcbAwUG/wAdAAAA +bgADAskEAwYFAAEHGwMFBv8AHgAAAG4AAwLJBAMGBAAbAwEHBQb/AB8AAABu +AAMCyQQDBgMAGwMBBwQGAQX/ACAAAABuAAMCyQQDBgEAAQAbAwEHBAYBBf8A +IQAAAG4AAwLJBAMGAQAbAwEHBQb/ACIAAABuAAMCyQQDBhsDAQcFBv8AIwAA +AG4AAwLJBAMGGgMBBwUG/wAkAAAAbgADAskEAwYaAwUG/wAlAAAAbgADAsgE +AQUDBhkDBQYBBf8AJQAAAG4AAwLHBAEFAQUDBhgDAQcDAAECAQL/ACYAAABu +AAMCxgQDBQMGEgMFBgEC/wAsAAAAbgADAsUEBAUDBhEDBQb/AC4AAABuAAMC +xAQFBQMGEAMGBv8ALgAAAG4AAwLDBAYFAwYPAwEHBQb/AC8AAABuAAMCwgQH +BQMGDwMFBv8AMAAAAG4AAwLBBAgFAwYOAwUG/wAxAAAAbgADAsAECQUDBg0D +Bgb/ADEAAABuAAMCwAQJBQMGDAMBBwUG/wAyAAAAbgADAr8ECgUDBgwDBQb/ +ADMAAABuAAMCvgQLBQMGCwMGBv8AMwAAAG4AAwK9BAwFAwYLAwUG/wA0AAAA +bgADArwEDQUDBgoDBgb/ADQAAABuAAMCuwQOBQMGCQMBBwUG/wA1AAAAbgAD +AroEDwUDBgkDBgb/ADUAAABuAAMCuQQQBQMGCAMBBwUG/wA2AAAAbgADArgE +EQUDBggDBgb/ADYAAABuAAMCuAQRBQMGCAMDBgADAAYGAP8ANgAAAG4AAwK3 +BBIFAwYFAwAJBgMDBgYCAAAFAP8ANgAAAG4AAwK2BBMFAwYEAwMGAAMHBgYA +/wA6AAAAbgADArUEFAUDBgMDAQcFBv8AOwAAAG4AAwK0BBUFAwYDAwUG/wA8 +AAAAbgADArQEFQUDBgEDAQMFBgEE/wA8AAAAbgADArMEFgUDBgEDAQcFBv8A +PQAAAG4AAwKyBBcFAwYBBwUG/wA+AAAAbgADArEEGAUIBv8APwAAAG4AAwKx +BBgFBwYBBP8APwAAAG4AAwKwBBkFBwb/AEAAAABuAAMCrwQaBQYG/wBBAAAA +bgADAq4EGwUFBv8AQgAAAG4AAwKuBBoFBgb/AEIAAABuAAMCrQQbBQUG/wBD +AAAAbgADAqwEGwUFBv8ARAAAAG4AAwKrBBsFBgb/AEQAAABuAAMCqwQaBQcG +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 +AABuAAMCigQWBQYGIwQDBkwAAAQDAwAAAwMBAAEAAwYEAAEHHgMAAwcHBQAP +AAEFAQcnAwEHBwYBAoQAAABuAAMCigQWBQcGIgQDBksAAAQDBwAAAwMBAAEA +AwYEABwDAAMHBgYAGAABByUDAQcHBoMAAABuAAMCigQXBQYGIgQDBkkAAA0F +AwUAAAMDBwAABgYCAAQAGQMBBwMGHgABAiQDCAaBAAAAbgADAokEGAUGBiIE +AwZIAAAMBwMCAAADAwIAAAYGBAABBxcDAQcDBiQAAQciAwEHBwaAAAAAbgAD +AokEGAUFBiMEAwZHAAAMBwMCAAADAwIAAAYGBAABBxYDBAYsAAEFHgMIBn4A +AABuAAMCiQQXBQYGIwQDBkYAAAwDAwIAAAcDAgAABQYEABUDAQcEBjEAAQUc +AwEHBwZ9AAAAbgADAokEFwUFBiQEAwZCAAALBgAAAwMCAAAHAwUAAwABBgQA +FAMBBwQGNgAcAwgGewAAAG4AAwKJBBYFBgYkBAMGPAABBwQAAAsGAAADAwUA +AAYDBgADAAEGAwABBRMDAQcEBjoAGwMBBwcGegAAAG4AAwKIBBcFBQYlBAMG +OwABAwQAAAsGBgADAwcAAAYHBgADAAEGAwABBxIDAQcEBj0AAQcbAwcGeQAA +AG4AAwKIBBYFBgYlBAMGOgABBwEDAwAACwYGAAcDBwAABgcGAAMAAQIDAAEH +EgMEBgECQAAbAwgGdwAAAG4AAwKIBBYFBQYmBAMGOQABBwEDAwAACwIGBgcD +AwAABQYGAAcAEgMFBkMAGwMBBwcGdgAAAG4AAwKIBBUFBgYmBAMGOAAAAwID +BwADAAAFBgYHAwMAAwABBgEGBwASAwQGAQJFABsDAQcHBnUAAABuAAMCiAQV +BQcGJQQDBjgAAQMBAwMAAAUGBgIDAwADAAEGAQYHABEDBQZIAAMDAQABBxcD +BwZ0AAAAbgADAogEFgUGBiUEAwY3AAAFAwMCAAAAAwYBAwEDAwABBgEGBwAR +AwUGSgABAwEHAwABBxYDBwZzAAAAbgADAocEFwUGBiUEAwY2AAADBwMDAAMA +AAQGBgMDAwAAAwYGAgAGABADAQcEBgECTAABBwUAFgMHBnIAAABuAAMChwQX +BQYGJQQDBjYAAQMBAwMAAAoGBgcDAgAAAgYFBgAQAwUGTwABBwUAAQcVAwcG +cQAAAG4AAwKHBBcFBgYlBAMGNQAABQMDBwAAAAMGAQMBBwMAAQYBBgYAEAMF +BlcAAQIVAwcGAQJvAAAAbgADAocEFwUGBiUEAwY0AAAKBwMDAAACBgYDBwMA +AQYBBgYAEAMFBloAFQMHBgECbgAAAG4AAwKHBBcFBgYlBAMGMwAAAwIDAwAD +AAAEBgYHBwQAAQYGABADBQZcABUDBwYBAm0AAABuAAMChwQXBQYGJQQDBjMA +AAUDAwcAAAADBgEHCwAQAwUGXgABBxQDBwYBAmwAAABuAAMChwQXBQYGJQQD +BjIAAwMABgAABQYGBQsADwMBBwUGYAABBRQDBwYBAmsAAABuAAMChgQYBQYG +JQQDBjEAAAYFAwMHAAADBgsAEAMFBmMAFAMHBgEEBAABBmUAAABuAAMChgQY +BQUGJgQDBjEAAwMBAAEAAwYBAgoAEAMFBmUAFAMBBwQGAAMHBgUAAwABBmUA +AABuAAMChgQXBQYGJgQDBjAAAAkHAwMCAAACBgYACgABBw8DBQZnABQDAQcD +BgEDAwYAAwAABgBlAAAAbgADAoYEFwUFBicEAwYwAAADAgMDAAQAAQYKAAEH +DwMFBmkAAQcTAwAEBwYGAwQGAAMABQYAZAAAAG4AAwKGBBYFBgYnBAMGMQAB +AwUAAQYEAAEHBAABBg8DBQZrAAEHEwMABAcGBwcGBmQAAABuAAMChgQWBQUG +KAQDBjEAAQMJAAEHBQAPAwUGAQVsAAEHFAMBBwEHBQYBBWQAAABuAAMChgQV +BQYGKAQDBjsAAQMEAAEHDgMBBwUGbgABAhQDAQcFBmUAAABuAAMChgQVBQYG +KAQDBjoAAQcBBQMAAQIPAwUGcQATAwYGZQAAAG4AAwKGBBUFBQYpBAMGOgAB +BwQADwMFBnMAEgMGBmUAAABuAAMChgQUBQYGKQQDBjkAAQcEAAEHDgMGBnQA +EQMHBmQAAABuAAMChQQVBQYGKQQDBjkAAQIDAAECDgMBBwUGdgAQAwEHBgZk +AAAAbgADAoUEFQUGBikEAwY4AAEHBAAPAwUGNgABBQUGPAAQAwYGAQJjAAAA +bgADAoUEFQUGBikEAwY8AAEHDgMGBjAAAQcFAwcGAQI7AAEHDgMHBmMAAABu +AAMChQQVBQUGKgQDBjwADgMBBwUGLQABAgoDCAY7AAEHDgMGBgECBgABAlsA +AABuAAMChQQUBQYGKgQDBjsAAQcOAwUGAQIrAAEHDQMBBwcGOwAOAwcGAQIF +AAEGWwAAAG4AAwKFBBQFBgYqBAMGOwAOAwYGKgABAhADAQcEAAADBAYGADoA +AQcOAwYGAQcEAAEGAQZbAAAAbgADAoUEFAUGBioEAwY6AAEHDgMFBjsAAAMF +BwcAQQAOAwEHBAYBAwEDAwADBlsAAABuAAMChQQUBQYGKgQDBjoADgMGBn8A +DwMDBgAGBwMDBgACAwZbAAAAbgADAoUEFAUGBioEAwY5AAEHDgMFBoAAEAMB +BgEGAwMGBlsAAABuAAMChQQUBQYGKgQDBjkADgMGBoAAFQMHBloAAABuAAMC +hQQUBQYGKgQDBjgAAQIOAwUGgAABAhUDAQcGBloAAABuAAMChQQUBQYGKgQD +BjgADgMGBoAAAQIWAwYGWgAAAG4AAwKFBBQFBgYqBAMGOAAOAwUGAQSBABYD +BwZZAAAAbgADAoUEFAUGBioEAwY3AAEHDQMBBwUGggAXAwYGWQAAAG4AAwKF +BBQFBgYqBAMGNwAOAwYGggABBxYDBwZYAAAAbgADAoUEFAUGBioEAwY3AA0D +AQcFBlwAAQUnABYDAQcGBlgAAABuAAMChQQUBQYGKgQDBjYAAQcNAwYGVgAB +BQQAAAMFBgYAJgABBxYDBwZXAAAAbgADAoUEFAUGBioEAwY2AA4DBgZVAAAF +BwMDAAAABAYBAiYAAQcVAwEHBgZXAAAAbgADAoUEFAUGBioEAwY2AA0DAQcF +BlUAAQcDAwEGAwAAAwUGBgAoAAEHFAMHBlYAAABuAAMChQQUBQYGKgQDBjYA +DQMGBlMAAQcDAAADBQMDAAUAAQYBBikAAQcSAwEHBgZWAAAAbgADAoUEFAUG +BioEAwY1AAEHDQMGBlMAAQUFAAEHAQcFAAEGKwASAwcGVQAAAG4AAwKFBBQF +BgYqBAMGNQAOAwUGAQJUAAEDBQABBwYAAQYqABIDAQcGBlUAAABuAAMChQQU +BQYGKgQDBjUADQMGBlUAAQcGAAEHBQABBioAAQcSAwcGVAAAAG4AAwKFBBQF +BgYqBAMGNQANAwYGVgABAwUAAQcBBQUAAQYqABIDAQcGBlQAAABuAAMChQQU +BQYGKgQDBjUADQMGBlYAAQcBBwUAAQcFAAEEKgATAwYGAQVTAAAAbgADAoUE +FAUGBioEAwY0AAEFDQMGBlcAAQMFAAEFAQYFAAECKQABAhIDAQcGBgsAAQJH +AAAAbgADAoUEFAUGBioEAwY0AAEHDAMBBwUGAQJYAAEHBQABBQUAAQIqABMD +BgYFAAECBQABAkcAAABuAAMChQQUBQYGKgQDBjQADQMGBlkAAQIFAAECAQYv +AAEHEgMHBgQAAQJNAAAAbgADAoUEFAUGBioEAwY0AA0DBgZaAAEHNgATAwYG +UgAAAG4AAwKFBBQFBgYqBAMGNAANAwYGkQATAwYGAQJRAAAAbgADAoUEFAUG +BioEAwY0AA0DBgaRAAEFEgMHBgoAAQJGAAAAbgADAoUEFAUHBikEAwY0AA0D +BgaSABMDBgYEAAECBQABAkYAAABuAAMChQQVBQYGKQQDBjQADAMBBwYGkgAT +AwYGBAABBQUAAQJGAAAAbgADAoUEFQUGBikEAwY0AAwDAQcFBgEFkgABBRID +BgYBBQMAAQJMAAAAbgADAoUEFQUGBikEAwY0AAwDAQcFBgECkwASAwEHBgZQ +AAAAbgADAoUEFQUGBikEAwY0AAwDBgYBApMAEwMGBlAAAABuAAMChQQVBQYG +KQQDBjQACgMBBwEDBAYAAwAAAgCTAAEHEgMGBlAAAABuAAMChQQVBQYGKQQD +BjMAAQIKAwYGlgABBRIDBgZQAAAAbgADAoUEFQUGBikEAwYzAAECCgMGBpcA +EgMGBlAAAABuAAMChQQVBQYGKQQDBjMAAQIKAwYGlwASAwYGUAAAAG4AAwKF +BBUFBgYpBAMGNAAKAwYGlwASAwYGUAAAAG4AAwKFBBUFBwYoBAMGNAAKAwYG +lwASAwYGUAAAAG4AAwKFBBYFBgYoBAMGNAAKAwYGlwASAwcGTwAAAG4AAwKF +BBYFBgYoBAMGNAAKAwYGlQABBwEAEgMBBwcGAQVNAAAAbgADAoUEFgUGBigE +AwY0AAoDBgaVAAEDAQAUAwEHBQYABAUAAAZKAAAAbgADAoUEFgUGBigEAwY0 +AAoDBgYBApQAAQcBBxQDAAoHBgYHBgYFAAAGSgAAAG4AAwKFBBYFBgYoBAMG +NAAKAwYGAQWUAAEFFQMACgcGBgMGBgUABQZKAAAAbgADAoUEFgUGBigEAwY0 +AAoDAQcGBpUAFQMABAcGBwMDBgADAAYGAEoAAABuAAMChQQWBQYGKAQDBjQA +CgMBBwYGbgABAiYAFQMABAcGAwMDBgADAAYGAEoAAABuAAMChQQWBQYGKAQD +BjQACwMGBmgAAQIEAAEFAQYmABUDAAQHBgMDBgZKAAAAbgADAoUEFgUGBgEF +JwQDBjQACwMGBmcAAQcBAwQAAQYBBiYAFgMAAwcDAwAGBkoAAABuAAMChQQW +BQcGJwQDBjQAAQcKAwYGZwABAwEDBAABBgEGJgAZAwYGAQVJAAAAbgADAoUE +FwUGBicEAwY0AAEFCgMGBgECZgABAwEDAwADBiYAAQcYAwEHBgZJAAAAbgAD +AoUEFwUGBicEAwY1AAoDBwZlAAADBwMDAAMAAwYmAAEHGQMGBkkAAABuAAMC +hgQWBQYGJwQDBjUACgMBBwYGZQADAwMAAwYmAAEHGQMGBkkAAABuAAMChgQW +BQYGJwQDBjUAAQcKAwYGZQADAwMAAwYmAAEFGQMHBkgAAABuAAMChgQWBQYG +JwQDBjYACgMGBmUAAwMEAAEGAQYmAAECGQMBBwYGSAAAAG4AAwKGBBYFBgYn +BAMGNwAJAwcGZQABAwEDBAABBgECJwAaAwYGSAAAAG4AAwKGBBYFBgYnBAMG +NwAJAwEHBgZlAAEHAQUtABoDBwZHAAAAbgADAoYEFgUGBicEAwY3AAECCQMG +BpQAGgMBBwYGRwAAAG4AAwKGBBYFBwYmBAMGOAAJAwcGkwAbAwYGAQJGAAAA +bgADAoUEGAUGBiYEAwY4AAEHCAMBBwYGkwAbAwcGRgAAAG4AAwKFBBgFBgYm +BAMGOQAJAwYGkwAcAwYGRgAAAG4AAwKFBBgFBgYmBAMGOQAJAwcGkgAcAwYG +AQVFAAAAbgADAoUEGAUGBiYEAwY5AAEHCQMGBpIAHAMBBwYGRQAAAG4AAwKF +BBgFBgYmBAMGOgAJAwcGkQAdAwYGRQAAAG4AAwKFBBgFBgYmBAMGOgAJAwEH +BgaRAB0DAwYABAAABgJEAAAAbgADAoUEGAUGBiYEAwY6AAEHCQMGBgECkAAa +AwAFBgYHBgYASQAAAG4AAwKFBBgFBwYlBAMGOwAJAwcGkAAZAwYGSQAAAG4A +AwKEBBoFBgYlBAMGOwAKAwYGAQSPABkDBgZJAAAAbgADAoQEGgUGBiUEAwY7 +AAECCQMBBwYGjgABAhgDAQcFBgEFSQAAAG4AAwKEBBoFBwYkBAMGPAAKAwcG +jQABBRgDAQcFBkoAAABuAAMChQQaBQYGJAQDBjwAAQcJAwEHBgaNAAEFGAMG +BkoAAABuAAMChQQaBQYGJAQDBj0ACgMHBowAAQUYAwYGSgAAAG4AAwKFBBoF +BwYjBAMGPQABBwoDBgYBAosAAQcYAwYGSgAAAG4AAwKGBBoFBgYjBAMGPgAK +AwcGiwABBxgDBgZKAAAAbgADAoYEGgUHBiIEAwY+AAEHCgMHBooAAQcYAwYG +SgAAAG4AAwKGBBsFBgYiBAMGPwALAwYGAQWJAAEHGAMGBkoAAABuAAMChwQa +BQcGIQQDBkAACgMBBwYGiQABBxgDBgZKAAAAbgADAocEGwUGBiEEAwZAAAEC +CgMHBogAAQcYAwYGAQJJAAAAbgADAocEGwUHBiAEAwZBAAEHCgMHBocAAQcY +AwgGSAAAAG4AAwKIBBsFBgYgBAMGQgABBwoDBwaGAAEHGQMBBwYGSAAAAG4A +AwKIBBsFBwYfBAMGQwABBQkDAQcHBoUAAQcZAwEHBQZJAAAAbgADAogEHAUG +Bh8EAwZFAAkDAQcHBoQAAQcZAwUGSgAAAG4AAwKJBBsFBwYeBAMGRQABBwkD +AQcHBoMAAQcYAwYGSgAAAG4AAwKJBBwFBwYdBAMGRgAKAwEHBwaCAAEHFwMB +BwUGSwAAAG4AAwKJBB0FBgYdBAMGRgABBwoDAQcHBoAAGQMGBksAAABuAAMC +igQcBQcGHAQDBkcACwMBBwcGfwAYAwEHBQZMAAAAbgADAooEHQUGBhwEAwZI +AAwDBwZ+ABgDBgZMAAAAbgADAooEHQUHBhsEAwZIAAEHDAMHBgECRwABAjQA +GAMGBkwAAABuAAMCiwQdBQYGGwQDBkkADQMIBkAAAQIEAAEGNQAXAwEHBQYE +AAEESAAAAG4AAwKLBB0FBwYaBAMGSgANAwEHBwY+AAEHBAABBjYAFwMEBgEH +AQYDAAEGBQABAgUAAQI9AAAAbgADAoIEAQUFBAADBgQEAB4FBgYaBAMGSwAO +AwgGOwABAwMAAQUBBjYAAQUXAwMGAAcDBgYAAAUGAAUAAQVDAAAAbgADAoIE +AQUFBAEGAwQdBQcGGQQDBkwADgMBBwcGAQU3AAEFAQMDAAEGAQY3AAEHFgMA +CwcGBgcDBgIAAAYGAEkAAABuAMwCAwZNAA8DAQcHBgECNAAABAMDAAADBjgA +FwMDBgAFAwMGAAAAAwYKAAEGPgAAAG4AzQIBBgEGTgAQAwgGAQIwAAAEBwMD +AAQGOQAXAwALBgYHAwcGAAUGBgIABAABBwUAAQQ+AAAAbgDOAgEGTwARAwEH +CAYsAAEHAwMFBjoAFwMABAYHAwMGBgUAAQVEAAAA8wABAwEDBAABBgEGAwAe +AwYGawASAwEHCAYoAAEHBAMFBjsAGwMGBgoAAQY/AAAA8wABAwEDBAABBgEG +AwABBx0DBwZrAAEHEgMBBwkGIwAFAwEHBAY8AAEFGwMGBgQAAQcFAAEGPwAA +APMAAQMBAwUAAQYEAB0DAQcEBgEFbQABBRQDAQcJBh0AAQcGAwUGPQAcAwUG +AQUEAAEHBQABAj8AAAD0AAEDBQABBgEFAwAbAwEHAQcEBnEAFgMBBwoGFgAB +BwgDBAYBAj4AGwMBBwUGBQABBQQAAQZAAAAA9AABAwEHBQABBgMAAQIZAwEH +BgZyAAEHGAMBBwwGAQIJAAADAgUHAAoDBQZAABsDBgYEAAEHBQABBkAAAAD1 +AAEDBQABAgQAGgMHBnMAHQMBBwEHCgYBBwEHDgMBBwQGQQABBRsDBgYEAAED +BQABBkAAAAD1AAEFCgABBxoDBwZzAAECNgMEBkMAHAMGBgQAAQcEAAEGQQAA +AP8AAQABABoDAQcGBnUAAQUyAwQGRQAbAwEHBQYBBQMAAQcFAAEGQQAAAP8A +AQABABsDBwZ2AAECLgMEBkcAGwMBBwUGBAABAwUAAQZBAAAA/wAAAwAAAgAb +AwcGeAABBygDAQcDBgECSAABBxsDBgYEAAEHBAABBkIAAAD/AAMAHAMGBgEF +eQABAiQDAwYBAksAHAMGBgMAAQcFAAEGQgAAAP8AAwABBxsDAQcGBnwAAQIB +Bx0DAAMGBgIATwAcAwYGAwABAwQAAQIBBkIAAAD/AAQAHAMHBn8AAQIBBxQD +AQcBBVQAAQccAwYGAAQAAAIHBAABBkMAAAD/AAQAHQMHBoUAAQIBAgcHAQIB +AloAHAMBBwUGAwABAwUAAQZDAAAA/wAFAB0DBwbpABwDAAYGBgAGBgQDAAED +BAABBgEGQwAAAP8ABQAdAwEHBgYBBecAGQMABQYDAwcGAAMAAQYDAAEHAQcE +AAEGRAAAAP8ABQABBR0DAQcGBgEC5gAYAwMGAAMDBgUABwABAwQAAQUBBkQA +AAD/AAYAHgMHBuUAAQcXAwEHBQYHAAEFAQMEAAEGAQZEAAAA/wAGAAEHHgMH +BuQAGAMGBgcAAQMBAwMAAAMCBgYARAAAAP8ABwAfAwcG4gABAhgDBgYGAAAD +AgMDAAMAAwZEAAAA/wAHAAEHHwMHBuEAGAMBBwUGBwADAwMAAwZEAAAAGgAA +CQIGCQwMCgkIBAAEAAEBBQgBAQcAAQkBBAcAAAcECQoMCgkEAAQAAAMCDQwA +BQABBA0IAAMBAAYABAgBBgEABQgBBAEBBQgADwIAAAEJCgkEAAkIBAEAAgAD +CAADBAAGAAQIAQZ5ACADBwbgABgDBgYHAAMDAQABAAQGRAAAABkAAAwIDQ0G +AQAABg0NDAgDAAAFBAoNCgQABwAAAwYNBAAFAAALAQwNDQoGAgQJCgEAAwAA +AwwNAgAEAAEBAQYEDQAFCgQEBggAAw0ABAQAAgwDDQADAgAEAAMNAAQMAgAI +Aw0ACggAAAEMDQ0MDAkDDQAJDAYBBg0KAQAEAAQNAQR5ACEDBwbeABkDBgYG +AAQDAQABAgQGRAAAABcAAAUBDA0NBgAFAAMNAQwEAAADAg0CAAcAAAQEDQ0E +BAAABQEMDQ0KAAUAAQYBCQMAAAMJDQgABgABCgMNAQIEAAAKAQoNBgAACA0N +DAMAAAcKDQ0JAAABAAMNAAoCAAAGDQ0MAAAGAw0BBgMAAAUGDAAABAADDQEG +egAhAwEHBwbdABkDBgYFAAECBAMBAAUGRAAAABcAAAQJDQ0MBgAABAwNDQwE +AAEBAQ0HAAEBAw0BBAQAAQYDDQEEBgAABwwCAAAEDQwABgABCQMNAQIFAAAJ +AQ0JAAAIDQ0KAAMAAAcKDQ0IAAABAAMNAAcCAAAIDQ0KAAMAAw0BBAQAAAcJ +CAEMDQ0KAHwAAQcgAwEHBwbbABoDBgYFAAUDAQIFBkQAAAAWAAEEAw0BBgYA +AAQMDQ0MBAABAQENBgABAQEMAw0BBAQAAQkDDQEBBgABCAEGAwAAAwwNAgAF +AAEJAw0BAgYAAAgGCgAACA0NCgMAAAcKDQ0IAAABAAMNAAcCAAAIDQ0KAAMA +Aw0BBAUAAQoBCgMNAQJ9AAEDAQcfAwEHBgYBBdoAGgMGBgQAAQUEAwEHBQYA +BAUAAAJBAAAAFgABCgMNAQIFAAEBBA0EAAEBAQ0GAAEKBA0BBAQAAQoDDQcA +AQYBCAMAAAMJDQgABQABCQMNAQIHAAAHCgAACA0NCgADAAAHCg0NCAAAAQAD +DQAHAgAACA0NCgADAAMNAQQFAAEGAw0BCIEAHwMBBwYGAQXYABsDBwYAAwAA +AgAFAwEHBQYABAIAAAJBAAAAFgAEDQEBAwAAAwEECQAEDQAGCQQAAAENBQAB +CAQNAQwBBAQAAAQMDQ0MBwABBAEJAwAAAwQNDAAFAAEJAw0BAgoAAAQIDQ0K +AwAABwoNDQgAAAEAAw0ABwIAAAgNDQoAAwADDQEEBAAABQEMDQ0MAIMAAQce +AwEHBgYBAtcAGwMAAwcGBgADBwMGAQcFAwYGAAMAAAYAQgAAABUAAQIEDQQA +AQEIBAAEAAABDQQAAQQEDQADBgkEAAQAAAQMDQ0MBwABBAEJBAAAAwwNAgAE +AAEJAw0BAgoAAAQIDQ0KAwAABwoNDQgAAAEAAw0ABwIAAAgNDQoAAwADDQEE +BAABCQMNAQoBAYMAAQcBBx0DBwYBAtUAIwMBBgEGBgMAAwYGAwAGBkIAAAAV +AAEEAw0BDA8AAQEBDQMAAQIEDQAECQAJBAQAAAQMDQ0MBwABBAEJBAAAAwkN +CAAEAAEJAw0BAgoAAAQIDQ0KAwAABwoNDQgAAAEAAw0ABwIAAAgNDQoAAwAD +DQEEAwABAgMNAAMIBAkAhAAfAwcGAQLTAAECIwMBBgcDAAMHBwMABQYBAkIA +AAAVAAEBBA0PAAAGAQ0AAAEMAw0ABQoAAAkEAAQAAAQMDQ0MBwABBAEJBAAA +AwQNDAAEAAEJAw0BAgoAAAQIDQ0KAwAABwoNDQwEAAYAAw0ABwEAAAkNDQoA +AwADDQEEAwAACAwNDQwAAAkIhAAfAwcGAQLSAC4DBgZDAAAAFgAEDQEBDgAA +BQENAAAKAAMNAAYMAQAACQQEAAAEDA0NDAcAAQQBCQUAAAMMDQIAAwABCQMN +AQIJAAAIAQoNDQoAAAIDDQADCAkMAAMNAAsJAAABDA0NCgAABgADDQAEBAAB +CgMNAAcJAAAGDQkBAIIAIAMHBgEF0AABBy4DBgZDAAAAFgABCgMNAQEIAAEB +AQQEAAAEAQ0ACQQNAQIDAAEJAQQEAAAEDA0NDAcAAQQBCQUAAAMJDQgAAwAB +CQMNAQIJAAEGAwgAAwYAAAAECAAGBAAGCQoGAwABBgMIAAMGAAIABAgAAwIA +BAAFCAECAQIDCAEEgwAgAwEHBgYBBc8ALgMBBwUGRAAAABYAAQQDDQEECAAB +CQEIBAAAAwENBgAEDQEGBAABCQEEBAAABAwNDQwHAAEEAQkFAAADBA0MAAMA +AQkDDQECuQABAwEHHwMBBwcGzQAvAwYGRAAAABcAAAQJDQ0KBwAAAwINCAAE +AAEBBQ0BCAUAAQkBBAQAAAQMDQ0MBwABBAEJBgAABg0NAgAACQMNAQILAAAD +BAYBAKsAAQIBByADAQcHBssAAQIvAwUGAQVEAAAAFwAABQEMDQ0CAAUAAAQB +DA0IBAABAgQNAQoGAAEMAQYEAAQNAQEGAAEIAQoGAAAGCQ0IAAAKAw0BBAoA +AAQGDQ0JrAAiAwEHBwbKAC8DAQcFBkUAAAAZAAAECQ0MAgMAAAUGDA0NCAAD +AAEEBA0BDAEBBQAABwYNCgEAAAYABA0BBgUAAAQCDA0EBQAABQQNDAACAAQN +AQkBAQkAAAQJDQ0MrAABBwEHIQMBBwcGyAABBy8DBgZFAAAAGgAACwQICgwK +CQgEAAYIAAMABQkBAgUABQkBAQEIBwkABAIAAAYECQEGBQAAAw0NCAAHCQEG +CAAABAIKDAStACQDBwbHAC8DAQcFBkYAAABPAAEBAQHCACUDBwbFADADBgZG +AAAA/wAVACUDBwYBAsIAAQcwAwUGRwAAAP8AFQAmAwgGwAABAjADBgZHAAAA +/wAVAAEHJgMBBwcGvwAxAwUGSAAAAP8AFgAoAwcGvQAxAwYGSAAAAP8AFgAB +BygDCAa6AAEHMQMFBkkAAAD/ABcAKQMBBwcGuQAxAwYGSQAAAP8AFwArAwcG +AQW2ADEDAQcFBkoAAAD/ABgAKwMBBwcGtAAyAwYGSgAAAP8AGAAtAwgGsQAB +BzEDAQcFBksAAAD/ABkALgMIBq4AAQcyAwUGAQJLAAAA/wAZAC8DAQcIBgEC +qgABAjIDBgZMAAAA/wAaADEDCgYBAqYAMwMFBk0AAABiAAEJAQkGCgADCQkG +ABsAAAMGCQkABwoBCYYANAMBBwoGogAzAwYGTQAAACAAAQoBDAcNAAMMDAkA +CQAABgkMDAsKCgYJAAMKCwwAGAAAAwkLDAARDQADDAwKAA4AAAQJCgwMEQ0B +DAEKHQAABQoLCgkCAAkAAAMJCgsAEQABCgEMCA0AAwwLAgAMAAAFDAwLCgoA +BQkABAoKDAsLAAAFCwoJCQIAAwAACgIECQkKCwwAAAcPAwADCwoJAAkDAAQJ +CgsMGAMDBgECAwagADMDAQcFBk4AAAAeAAEMDg0BCgcAAQoODRUAAQkBDBoN +AQkHAAEEAQobDQEKGwAPDQEMDwABCw8NAQkKAA0NAQkLAA8NBAAOAwEKDw0U +AwAHBwYDAwcGBgADAAEGnwA0AwUGTwAAABwAAQwSDQECBQABCg0NAQsTAAEM +HQ0BCwUAAQwgDQEMGQABDA4NAQkNAAEJEw0BBAgADQ0MAAEKDQ0BDAQAAQcN +AwEJDg0BCRQDAQcDBgEDAwYDAAECnQA0AwYGTwAAABsAFQ0BCQQAAQoNDQEJ +EQABCx8NAQsFAAEMIg0BCxcAAQsODQ0AAQoVDQEJBgABBAwNAQsMAAEJDQ0B +CwUADgMODRYDAQcHBp8AAQczAwEHBQZQAAAAGQABCRcNBAABCw0NEAABCSEN +AQwFAAEKJA0BBhUAAQkODQwAAQoXDQEKBQABCQwNAQYNAA0NAQoFAA4DDg0X +AwEHBwadAAEHNAMFBlEAAAAYAAEJGQ0DAAELDQ0PAAELIg0BDAUAAQIlDQEK +FQANDQELCwABCRkNAQoEAAEJDA0OAA0NAQkFAAECDQMNDQEMGAMBBwcGmwAB +BzQDBgZRAAAAGAAaDQAEDAAACwwNAQwOAAEMJA0GACYNAQwUAA0NAQoLABsN +BAABCQwNDgANDQcADQMNDQEMGQMBBwcGmQABBzQDAQcFBlIAAAAXABwNAAMA +AAsADA0BCg0AAQwlDQYADw0AAwwKCQADBgADCQkMAA8NAQsTAA0NAQkKAAEK +HA0DAAEKCw0BDA4ADQ0IAAwDDQ0BDBsDBwaXADYDBQZTAAAAFgABDBwNAAMM +AAwADA0BCQwAAQwWDQEMAQwDCwEMAQwJDQYADQ0BCQoAAAMCBgoADQ0BCxIA +DQ0BBgoAHQ0ABAsAAAoLDQEMDgANDQgAAQcLAw0NAQscAwcGAQKUADYDBQZU +AAAAFQABCR4NAQYBDAwNDAABChINAQwBCg0AAQoBDAQNBgANDQEGDQABBgEM +DA0BChEADQ0KAAEKHg0AAwAACgALDQEMDgANDQkACwMBDAwNAQodAwgGkgA2 +AwYGVAAAABUAFQ0BDAEMCA0BDAEMDA0MABENAQwTAAAECg0NCQUADQ0BBg4A +AQIBCgwNEQANDQoAAQwRDQAFCwoJCgwACA0AAwwACgALDQELDgANDQoACgMB +DAwNAQoeAwEHBwaQADYDAQcFBlUAAAAUAAEJEQ0AAwoGAgAEAAADAgkMABIN +CwABDA8NAQwXAAEKAQoFAAEMDA0BBhAAAQoMDRAAAQwMDQoADw0BCwEGBgAA +AwIGDAAGDQEAAQoLDQELDgANDQoAAQIJAwEMDA0BCiADCAaNADcDBQZWAAAA +FAABDA8NAQwBBAkAAQIBChENCgABCQ8NAQofAAEMDA0BBhAAAQIBCgsNAQoP +AAEMDA0JAAEKDg0BCQECCQABAgEJBQ0BDAELCw0BCg4ADQ0LAAEHCAMBCwwN +AQkiAwgGiQABAjcDBQZXAAAAEwABAg8NAQsBAgwAAQoQDQoADw0BCSAAAQwM +DQEGEQABAgEMCw0PAAEMDA0JAAEMDQ0BCg0AAQYRDQEKDgANDQwAAQcHAwEK +DA0BCSQDCAYBBYUAAQc3AwUGAQJXAAAAEwABDA4NAQsBAg0AAQIBCw4NAQwJ +AAEJDg0BCSEAAQwMDQEGEgABBgsNAQwOAAEMDA0JAA0NAQwBAg4AAQYQDQEK +DgABDAwNDQAHAwEKDA0BCSYDAQcKBgECfwA4AwYGWAAAABMADg0BDAECDwAB +Bg4NAQsJAA4NAQoiAAEMDA0BBhMAAQwLDQ4AAQsMDQkADQ0BBhAAAQkPDQEK +DgABDAwNDgAGAwEKDA0BCSoDAQcOBgECdgA4AwEHBQZZAAAAEgABCQ4NAQYR +AAEMDQ0BCgkADQ0BDCMAAQwMDQEGEwABBgsNAQsNAAELDA0JAA0NAQIQAAEC +AQwODQEKDgABDAwNDwAFAwEKDA0BCTIDAQcJBgEFcQABBTgDAQcFBloAAAAS +AAEMDQ0BDBIAAQkNDQEKCAABCw0NJAABDAwNAQQTAAECAQwLDQ0AAQsMDQgA +AQQMDQEKEgABBg4NAQoOAAEMDA0QAAQDAQkMDQEJNgMBBwMAAQIDBm8AOgMF +BlsAAAASAA4NAQYSAAEEDQ0BCQgADQ0BDCQAAQsMDQEEFAABCQsNAQkMAAEK +DA0IAAEJDA0BCRIAAQIBDA0NAQoOAAEMDA0RAAMDAQkMDQEJMAMFBgADBwMD +AAYAAQJtADoDBQZcAAAAEgANDQEMAQISAAECAQwMDQEJCAANDQEEJAABCwwN +AQQUAAEECw0BDAwAAQoMDQgAAQkMDQEGEwABCQ0NAQoOAAEMDA0SAAADAwMJ +AAwNAQkxAwkGcAABBzoDBQZdAAAAEQABCQ0NAQkUAAEMDA0IAAEKDQ0lAAEL +DA0BBBUAAQwLDQwAAQoMDQgAAQkMDQEEEwABAg0NAQoOAAEMDA0TAAEDAQkM +DQEJMwMBBwkGawABAjsDBQZeAAAAEQABCg0NAQYUAAEKDA0IAAEMDA0BCiUA +AQsMDQEEFQABCgsNAQoLAAEKDA0IAAEJDA0BAhQAAQwMDQEKDgABDAwNFAAB +CQwNAQk2AwEHCAYBBWcAPAMFBl8AAAARAAEMDQ0BAhQAAQkMDQgADQ0mAAEL +DA0BBBUAAQYLDQEMCwABCgwNCAABCQwNAQIUAAEKDA0BCg4AAQwMDRQAAQkM +DQEJOQMBBwgGYwABBzwDBQZgAAAAEQANDQEKFQABCQwNCAANDSYAAQsMDQEE +FQABBAwNCwABCgwNCQAMDQECFAABBgwNAQoOAAELDA0UAAEJDA0BCTsDAQcI +Bl8AAQU9AwUGYQAAABEADQ0BCRUAAQYMDQcAAQkMDQEMJgABCwwNAQQVAAEC +DA0LAAEKDA0JAAwNAQIUAAEGDA0BCg4AAQsMDRQAAQkMDQEJPQMBBwcGAQRb +AAECPgMFBmIAAAARAA0NAQYVAAEGDA0HAAEKDA0BCiYAAQsMDQEEFgAMDQEJ +CgABCgwNCQAMDQEEFAABBAwNAQoOAAELDA0UAAEJDA0BCT8DAQcHBlgAAQU/ +AwUGYwAAABAAAQkNDQEEFQABBgwNBwABDAwNAQkmAAELDA0BBBYAAQsLDQEM +CgABCQwNCQAMDQEGFAABAgwNAQoOAAELDA0UAAEJDA0BCUEDCAZUAAEHQAMF +BmQAAAAQAAEJDQ0BAhUAAQYMDQcAAQwMDQEEJgABCwwNAQQWAAEKDA0KAAEJ +DA0JAAEMCw0BCRUAAQwLDQEKDgABCgwNFAABCQwNAQlCAwEHBwYBAk8AAQJC +AwUGZQAAABAAAQoNDRYAAQYMDQcADQ0nAAELDA0BBBYAAQkMDQoAAQkMDQkA +AQkLDQEMFQABDAsNAQoOAAEKDA0UAAEJDA0BCUQDCAZLAAECAQdDAwUGZgAA +ABAAAQsMDQEMFgABBgwNBwANDScAAQsMDQEEFgABBgwNCgABCQwNCgAMDQEG +FAABDAsNAQoOAAEKDA0UAAEJDA0BCUYDCAYBAkUAAQIBB0UDBQZnAAAAEAAB +DAwNAQoWAAEGDA0HAA0NJwABCwwNAQQWAAEGDA0BCQkAAQkMDQoAAQwLDQEM +AQITAAEMCw0BCg4AAQoMDRQAAQkMDQEJSAMJBkAAAQdIAwUGaAAAABAAAQwM +DQEJFgABBAwNBwANDScAAQsMDQEEFgABBgwNAQoJAAEJDA0KAAEJDA0BChMA +AQsLDQEKDgABCgwNFAABCQwNAQlKAwEHCQYBBTgAAQVKAwEHBQZpAAAAEAAB +DAwNAQkWAAEEDA0HAA0NJwABCwwNAQQWAAEGDA0BCwkAAQkMDQsAAQwMDQEK +EgABCwsNAQoOAAEKDA0UAAEJDA0BCU4DAQcKBgEFBwAAAwYGBAAkAAEFAQdN +AwEHBAYBAmoAAAAQAAEMDA0BBhYAAQQMDQcADQ0BDCALAQoFAAELDA0BBhYA +AQQMDQEMCQABCQwNCwABCQ0NAQoBBBAAAQoLDQEKDgABCgwNFAABCQwNAQlS +AwEHAQcHBgMHDAYBBAECFAAABAIGBgdSAwUGbAAAABAAAQwMDQEGFgABBAwN +BwAvDQUAAQsMDQEGFgABBAwNAQwJAAEJDA0MAAEMDg0BCQECDgABCgsNAQoO +AAEKDA0UAAEJDA0BCQEHWQMBBwgDAQcBBxYGAQcBB1gDBQZtAAAAEAABDAwN +AQYWAAEEDA0HAC8NBQABCwwNAQYWAAEEDA0BDAkAAQkMDQ0AEA0ABQwJBgIC +AAkAAQoLDQEKDgABCgwNFAABCQwNAAMJAAUA0gMFBm4AAAAQAAEMDA0BBhYA +AQQMDQcALw0FAAELDA0BBhYAAQQMDQEMCQABCQwNDgATDQoMDA0BCg4AAQoM +DRQAAQkMDQAECQAABc8DAQcEBgECbwAAABAAAQwMDQEGFgABBAwNBwAvDQUA +AQsMDQEJFgABBgwNAQwJAAEJDA0PACgNAQoOAAEKDA0UAAEJDA0BCQMAAQID +AwEHyQMFBnEAAAAQAAEMDA0BBhYAAQQMDQcALw0FAAELDA0BCRYAAQYNDQkA +AQkMDRAAAQwmDQEKDgABCgwNFAABCQwNAQkEAAAFAgMDAAIAxwMFBnIAAAAQ +AAEMDA0BBhYAAQQMDQcALw0FAAELDA0BChYAAQYNDQkAAQkMDREAAQolDQEK +DgABCgwNFAABCQwNAQkFAAEFAQMDAMQDAQcEBnQAAAAQAAEMDA0BBhYAAQIM +DQcALw0FAAELDA0BChYAAQYNDQkAAQkMDRMAAQwjDQEKDgABCgwNFAABCQwN +AQkLAMIDAQUEBnUAAAAQAAELDA0BBhYAAQIMDQcADQ0WDAwNBQABCwwNAQwW +AAEJDQ0JAAEJDA0VAAEJAQwgDQEKDgABCgwNFAABCQwNAQkMAAEHuAMAAwcG +BwADAwEHAQADBgECdgAAABAAAQoMDQEJFgABAgwNBwANDRUCAQYMDQUAAQsM +DQEMFgABCgwNAQwJAAEJDA0YAAADCQsMABwNAQoOAAEKDA0UAAEJDA0BCQ0A +AQe2AwMGAwMBAgEAAwZ4AAAAEAABCQwNAQkWAAECDA0HAAEMDA0VAAEEDA0F +AAELDA0BDAECFQABDAwNAQwJAAEJDA0eAAAECQkKCgMLAAYKCgkJAgAMDQEK +DgABCwwNFAABCQwNAQkPALMDAQcDBgAHAwMHAAAGBgB6AAAAEQAMDQEKFgAB +AgwNBwABCwwNAQIUAAEEDA0FAAELDQ0BBBUADQ0BDAkAAQkMDSsAAQwLDQEK +DgABCwwNFAABCQwNAQkQAAEHsAMEBgEHAQMDAAEGAQV7AAAAEQAMDQEMFgAB +AgwNBwABCgwNAQIUAAEEDA0FAAELDQ0BBhQAAQINDQEMCQABCQwNKwABDAsN +AQoOAAELDA0BBBMAAQoMDQEJEQABAq0DAQcEBgEHAQcDAAEGfQAAABEADQ0W +AAECDA0HAAEGDA0BAhQAAQQMDQUAAQsNDQEJFAABBA0NAQwJAAEKDA0rAAEM +Cw0BCg4AAQsMDQEJEwABCgwNAQkTAAEHqgMFBgEHgwAAABEAAQwMDQECFQAB +AgwNCAAMDQEEFAABBAsNAQwFAAELDQ0BDBQAAQkNDQELCQABCgwNKwABDAsN +AQoOAAEMDA0BChMAAQoMDQEJFQCoAwUGAQKEAAAAEQABCgwNAQYVAAECDA0I +AAwNAQYUAAEGCw0BDAUAAQsODQECEwABCg0NAQoJAAEKDA0rAAEMCw0BCw4A +AQwMDQEMEwABCgwNAQkWAAEHpQMGBoUAAAARAAEJDA0BCRUAAQIMDQgAAQwL +DQEJFAABBgsNAQsFAAELDg0BBhIAAQIBDA0NAQkJAAEKDA0rAAEMCw0BCw4A +AQwMDQEMEwABCwwNAQkYAKQDBQaGAAAAEgAMDQEMFQABAgwNCAABCQsNAQoU +AAEJCw0BCgUAAQsODQEKEgABBg4NCgABCgwNKwAMDQELDgABDA0NEwABDAwN +AQkaAKEDBgaGAAAAEgANDQEEFAABAgwNCQALDQEMFAABCgsNAQkFAAELDg0B +DAECEQABCw4NCgABCgwNKwAMDQELDgABDA0NEwANDQEJGwABAp8DBQaHAAAA +EgABCwwNAQkUAAECDA0JAAEMCg0BDAECEwABDAsNBgABCw8NAQkQAAEEDg0B +DAoAAQoMDSsADA0BCg4AAQwNDQEKEgANDQEJHQABB4kDAQcEBgEHDAMBBwMG +igAAABMADA0BDAECEwABAgwNCQABCgsNAQYSAAECDA0GAAELDw0BDAECDwAB +Cw4NAQoKAAELDA0qAAEJDA0BCg4ADw0SAA0NAQkfAAEHhgMEBgUAAQcGAwEH +kAAAABMAAQwMDQEJEwABAgwNCgALDQEKEgABBgwNBgABCxANAQoOAAEGDw0B +CQoAAQsMDQ4AAQkBAhoAAQsMDQEKDgAPDQEEEQANDQEJIQABB4IDBAafAAAA +EwABCg0NAQQSAAECDA0KAAEMCw0BAhEAAQoLDQEKBgABCwsNAQwBDAQNAQkM +AAEEAQwPDQsAAQwMDQ4AAAMMDQoAGQANDQEJDgAPDQEMEAABCg0NJAABB34D +BAahAAAAFAANDQEMAQIRAAECDA0KAAEGCw0BCRAAAQIMDQcAAQsLDQEMAQkF +DQEJCgABBgEMEA0LAAEMDA0OAAQNFwABCg0NDwAQDQEKDwAODSYAAQd5AwEH +BAajAAAAFAABCg0NAQoBAhAAAQIMDQsAAQwLDQECDwABCQsNAQwHAAELCw0A +AwwADAAFDQELAQQGAAECAQkRDQEJCwABDAwNDgAFDQELFQAODQ8AEQ0BCQ0A +AQoODSgAAQd1AwEHAwYBBKUAAAAVAA4NAQsBAg8AAQQMDQsAAQkLDQEKDgAB +BgwNAQoHAAELCw0AAwwACQAHDQAHDAkGBgkKDAASDQwADQ0NAAEKBw0BDAEG +EQAPDQ8ADA0BDAELBA0BCQsAAQoPDSoAAQVxAwEHAwaoAAAAFQABCQ8NAQYB +AgsAAQIBCQ0NDAABCwsNAQoMAAEEDQ0IAAELCw0AAwwAAAAfDQELDAANDQ0A +Cw0BDAEJDAABDA8NAQoPAAwNAQwBAAYNAQkHAAECAQwPDQELLAABAmwDAQcD +BgECqgAAABYAAQwPDQAHDAkEAgIAAAADAgADBgoMAA4NDQAMDQELAQQJAAEG +AQwMDQEKCAABDAsNAAQMAAAKHg0NAA0NDAABBg4NAwwBCwMKAAMLDAwAEQ0P +AAEGDA0AAwwACgAHDQAFDAwLCwwAEg0BCS8AaAMABAcGBgWtAAAAFwATDQUM +Eg0NAAEJDQ0AAwoGAgADAAADAgYLAA4NCQABDAsNAQwDAAEMHA0BCgwAAQQN +DQwAAQwoDQEMDwABCgwNAAMMAAAAHg0yAAEHYgMABAcGBgKwAAAAGAApDQ4A +AQoiDQEJCQABDAsNAQwEABwNDQABCg0NDAApDRAAAQwMDQAEDAAACRwNAQw0 +AAEHXQMABAcGBgKzAAAAGAABCSgNDwABCiANAQsKAAEMCw0BDAQAAQoaDQ4A +AQwNDQsAAQwoDQEJEAANDQEMAwABDBsNAQQ2AAECVwMBBwMGtwAAABkAAQQn +DRAAAQseDQEMCwABDAsNAQwFAAEMGA0BAg4ADg0LAAEMJw0BDBAAAQkNDQEM +BAAaDQEMOgABBykDAQcGBgAFAgAABQcAEQMBBwoDAAQHBgYFugAAABsAAQwl +DREAAQkcDQEMDAABDAsNAQwGAAEMFg0PAA8NAQkMAAELJA0BChEADg0BDAUA +GA0BDD0AAQUoAwkGBQABAgEHCAMBBwECAwAHAwAEBwYGBb0AAAAcAAEJJA0T +AAEMGQ0BCg0AAQwLDQEMBwABCxMNAQwPAAELAQwODQEKDgABCgEMIA0BCREA +AQwODQEMBgABDBUNAQxBACgDAAMHBgIAGAAEAwAEBwAGBcAAAAAeAAELIg0U +AAEJFw0PAAEMCw0BDAgAAQoRDQEKFQAAAwkKDAAIDQEKEAABAgEMHA0BChYA +AAMJCgsACQ0BDAcAAQoTDQEMRAABBxQDAQYBBwkDAAMHBwIAEgABBgsAAQMB +B8YAAAAgAAEJAQwRDQADDAoMAAsNFwABCxENAQsRAAEMCw0BDAoAAQoNDQEK +HQABCgEMAw0BDBQAAQoBDBUNAQsBCR4AAAMECgwAAw0BDAkAAQoPDQEMSAAB +AhIDAQcHBgEFEQAABAcAAAIDBgEF0gAAACQAAQkBCwQMAQ0BDQMMAQsBCgQA +AQsLDRoAAQoDDAYNAAMMDAoAFAABDAsNAQwNAAEKAwwBDQMMAQojAAADCgwN +ABgAAAMCCQsABQwDDQQMAQoBCSYAAAMLDQwACwAABAYKDAwFDQAEDAwLCU0A +AwMABQcAAAIHAAoDAQcHBgECDAABBQMHAQXYAAAANQABCwsNOwABDAsNAQw7 +AAEJUQABCmcAAQcBAggAAQcHAwAEAgAABQQG6AAAADUAAQsLDQEGOgABDAsN +AQz/AAUAAQcBBwMDAQLtAAAANQABCwsNAQY6AAEMDA3/APgAAAA1AAELCw0B +CToADQ3/APgAAAA1AAELCw0BCToADQ3/APgAAAA1AAELCw0BCToADQ3/APgA +AAA1AAELCw0BCToADQ3/APgAAAA1AAELCw0BCjoADQ3/APgAAAA1AAEMCw0B +CjoADQ3/APgAAAA1AAEMCw0BCjoADQ0zAAEDAQP/AMMAAAA1AAEMCw0BCzoA +DQ0yAAQD/wDCAAAANQABDAsNAQw6AA0NMQAGA/8AwQAAADUAAQwLDQEMOQAB +CQ0NMAAIA/8AwAAAADUADA0BDDkAAQoNDS8ACgP/AL8AAAA1AA0NOQABDA0N +LgAMA/8AvgAAADUADQ05AA4NLQAOA/8AvQAAADQAAQoNDTkADg0BBisAEAP/ +ALwAAAA0AAEMDQ04AAELDg0BCSoAEgP/ALsAAAA0AA4NOAAPDQEJKQAUA/8A +ugAAADMADw03ABANAQopABQD/wC6AAAAMgABCQEMDg02AAAECQsMDA0NAQoq +ABID/wC7AAAANgAAAwYKDAAJDTwAAQkBDAkNAQsrABAD/wC8AAAAOwABAgEK +BQ0BBj8AAQkBDAUNAQwsAA4D/wC9AAAAPwAABAsNDQlCAAAFCQwNDQwALQAM +A/8AvgAAAEEAAQkBCkUAAQwBDC4ACgP/AL8AAAC5AAgD/wDAAAAAugAGA/8A +wQAAALsABAP/AMIAAAC8AAEDAQP/AMMAAAD/AP8AggAAAP8A/wCCAAAA/wD/ +AIIAAAD/AP8AggAAAP8A/wCCAAAA/wD/AIIAAAD/AP8AggAAAP8A/wCCAAAA +/wD/AIIAAAE= +==== diff --git a/images/debianlilo_16c.dat b/images/debianlilo_16c.dat new file mode 100644 index 0000000..d9e0fa3 --- /dev/null +++ b/images/debianlilo_16c.dat @@ -0,0 +1,14 @@ +# Lilo boot menu background configuration (Lilo 23) +# +# color palette: 0 black, 3 magenta, 7 pink, +# 8 middle grey, 10 bright grey, 13 white +# +# bmp-table = ,;,,, +# bmp-colors = ,,;,, +# bmp-timer = ,;,, + +bitmap = debianlilo.bmp + +bmp-table = 106p,144p;2,9,144p +bmp-colors = 1,,0;9,,0 +bmp-timer = 514p,144p;6,8,0 diff --git a/images/debianlilo_16c.uu b/images/debianlilo_16c.uu new file mode 100644 index 0000000..39d22b3 --- /dev/null +++ b/images/debianlilo_16c.uu @@ -0,0 +1,704 @@ +begin-base64 644 debianlilo.bmp +Qk1cewAAAAAAADYEAAAoAAAAgAIAAOABAAABAAgAAQAAACZ3AAAgHAAAIBwA +AAABAAAAAQAAAAAAAAAAiAAAiAAAAIiIAIgAAACIAIgAiIgAALu7uwCIiIgA +AAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8P +/w+CDwAA/w//D4IPAAD/D/8Pgg8AAP8P/w+CDwAA/w//D4IPAAD/D/8Pgg8A +AP8P/w+CDwAA/w//D4IPAAD/D/8Pgg8AAP8P/w+CDwAA/w//D4IPAAD/D/8P +gg8AAP8P/w+CDwAA/w//D4IPAAD/D/8Pgg8AAP8P/w+CDwAA/w//DysPCgdN +DwAA/w//DyUPAAQHBwgFBgkABAgIBwdPDwAA/w//DyIPAQcBCAYJAAMIBwcA +VQ8AAP8P/w8fDwEHAQgGCQEIAQdZDwAA/w//DxwPAQcBCAcJAQhcDwAA/w// +DxoPAQcBBQcJAQUBB10PAAD/D/8PGA8BBwEFCAkBBV8PAAD/D/8PFg8BBwEF +CQkBBWAPAAAxDwcHTw8BBwEHDwgBBwEHIw8BBwEHDwgBBwEHYw8IB9cPAQcB +BQoJAQVhDwAALA8AAwcICAALAAEIAQcODwQIBAcIDwQHAQgBCCIPAAMHCAgA +GAAABAgIBwcVDwAEBwcICBgAAAMICAcAKQ8ABAgIBwcSDwADBwgIABgPAQcB +CAwAAQgBBxIPBAgEBwYPBAcDCA4PAAQICAcHDg8BBwEHAwgYDwADCAgHABAP +AAUHBwgIBwBWDwEICQkAAwUIBQBiDwAAKg8BCBIAAQgBBwsPFQABCB4PAQcB +CCIAAAMICAcADQ8AAwcICAAhAAEIAQgmDwEICQAHCAcAAQgVDwEHAQgSAAEI +AQcPDxQAAQcODxYAAQgYDwcABwgJAAEHVA8BBwkJAAQFBw8HYw8AACgPAQgW +AAEICQ8BBxUAHA8BBwEIKAAKDwEIAQgoAAEIAQckDxcAAQcTDwEHAQgXAAEH +DQ8TAAEIDw8BCBUAAQcYDwEIFgBUDwEICQkBB2cPAAAmDwEHGgABBwcPAQcU +AAEIGg8BBwEIKgAHDwEIAQguAAEHIg8BCBYAEw8BCBoAAQgBBwoPAQcTAAEH +Dw8BBxUAGQ8BBxUAAQhSDwEHCQkBBQEHaA8AACUPAQgcAAEIBg8BBxQAAQgY +DwEHLQAHDzIAAQcgDwEIFQABCBIPAQgdAAEHCQ8BBxMAEQ8VABoPFQABB1EP +AQgICQEIAQdqDwAAIw8BBx8AAQgFDwEHFAABBxcPAQguAAcPAQgyAAEIHw8B +BxUAAQcRDwEIHwABCAgPAQcSAAEIEQ8BCBMAAQgaDxUAUA8BBwEFCAkBBWwP +AAAiDwEHIQABCAQPAQcUABYPAQcwAAEHBg8BBzQAAQceDxUAEQ8BCCEAAQgH +DwEIEgABBxEPAQgTAAEIGg8BCBQATw8BBwsJAQhrDwAAIQ8BByMAAQgDDwEH +EwABCBUPAQgxAAEHBw81AAEIHQ8VABAPAQgjAAEIBg8BCBIAEg8BCBMAAQga +DwEIEwABCE4PAQcLCQEHbA8AACAPAQclAAAEBw8PBxMAAQgUDwEIMgABBwcP +NgABCBwPAQgTAAEIDw8BByUAAQcFDwEIEgASDwEHEwABBxoPAQgTAAEITQ8B +CAoJAQVuDwAAIA8mAAAECA8PBxMAAQcSDwEHNAABCAcPAQg2AAEIGw8BCBMA +AQgPDycAAQcEDwEIEQABCBIPAQcTAAEHGg8BCBMAAQhMDwEFCgkBCG8PAAAf +DwEIJwAAAwcPBwATABMPNQABCAcPAQg3AAEIGg8BCBMAAQcODwEIKAAEDwEI +EQABCBIPAQcTAAEHGg8BBxMAAQhLDwEFCgkBCHAPAAAeDwEIKQABDwEHEwAS +DzYAAQgHDwEIFAADCAEHBw8AAwcICAAWAAEIGQ8BCBMAAQcNDwEHKQABCAMP +AQgRAAEIEw8TABsPAQcTAAEHSg8BBQoJAQVxDwAAHQ8BByoAAQcBBxMAEQ8B +CDcABw8BCBMAEA8BBwEIFAABCBgPAQcTAAEHDQ8BCCoAAAQHDw8IEQABCBMP +EwAbDwEHEwABB0kPAQUICQAEBQgIB3EPAAAdDysAAQgBBxIAAQgQDwEIHQAD +CAEHCQ8ABAcHCAgKAAcPAQcTABMPAQgTAAEIFw8BBxMADg8rAAAECA8PCBEA +AQcTDxMAGw8BBxMAAQdIDwEFCAkBBXUPAAAcDwEILAABCBIAAQgPDwEHGwAB +CAEHFA8BBwEIBgABBwYPAQcTABQPAQcTAAEHFg8BBxMADQ8BCCwAAAMHDwgA +EQABBxMPEwAbDwEHEwABB0cPAQUJCQEHdQ8AABwPQAABCA8PGgABBxoPAQgE +AAEIBg8BBxMAFg8BCBIAFw8TAA0PGgAGCA0AAAMIDwgAEQABBxMPEwAcDxMA +Rw8BBQkJAQd2DwAAGw8BCBoAAQgBBwYPAQcBCBwAAQcODwEIGAABBx4PAAQI +AAAIBg8BBxMAFw8BCBEAAQgWDxMADA8BBxcAAQgBBwkPAQgLAAEHAQgRAAEH +Ew8TABwPEwBGDwEFCQkBBXcPAAAbDxkAAQgMDwEHGgABBw0PAQcXAAEIIg8B +CAEIBw8TABgPAQgRAAEHFQ8TAAwPAQgWAAEHDQ8BCAkAAQgBCBEAAQcTDxMA +HA8TAEUPAQgKCQEHdw8AABoPAQcXAAEIEA8BCBgADg8BCBYAAQcsDxMAGQ8S +ABUPEwAMDwEIFAABCBEPAQgIAAEIEQABBxMPEwAcDxMARA8BCAoJAQV4DwAA +Gg8BCBYAAQgSDwEIFwANDwEHFgABBy0PEgABCBkPAQcRAAEIFA8TAAwPFAAB +CBMPAQgZAAEHEw8TABwPEwBDDwEHCgkBCAEHeA8AABkPAQcWAAEIFA8XAA0P +AQgVAAEHLg8SAAEIGg8BCBEAFA8SAAEIDA8UAAEHFA8BCBgAFA8TABwPEwBC +DwEHCgkBCHoPAAAZDwEIFQABCBUPAQcWAAwPAQcVAAEHLw8SAAEIGw8RAAEI +Ew8SAAEICw8BBxMAAQgWDwEIFwAUDxMAHA8TAEIPCgkBBXsPAAAZDxYAFw8B +CBQAAQgMDwEIFAABCDAPEgABCBsPAQgRABMPEgABCAsPAQgTABgPFwAUDxMA +HA8TAEEPAQUKCQEHew8AABgPAQcVAAEHFw8BBxQAAQgMDxQAAQgxDxIAAQgc +DxEAAQgSDxIAAQgLDwEIEgABCBgPAQcWABQPAQgSABwPEwBADwEICgkBB3wP +AAAYDwEIFAABCBkPFAABCAsPAQgUADIPEgABCBwPAQgRABIPEgABCAsPAQgS +AAEHGQ8BCBUAFA8BCBIAHA8TAD8PAQcKCQEIfQ8AABgPAQgUAAEHGQ8BCBMA +AQgLDwEIEwABCDIPEgABCB0PEQABBxEPAQgRAAEICw8BCBIAGg8BBxUAFA8B +CBIAHA8TAD8PCwl+DwAAGA8UAAEIGg8BBxMAAQgLDxQAMw8SAAEIHQ8BCBAA +AQgRDwEIEQABCAsPAQgSABsPAQgUABQPAQgSABwPEwA+DwEICgkBB34PAAAX +DwEHFAABBxsPEwABCAoPAQcTAAEIMw8SAAEIHQ8BCBEAEQ8BCBEAAQgLDxIA +AQgbDwEHFAAUDwEIEgAcDxMAPQ8BBwoJAQh/DwAAFw8BCBQAHA8TAAEHCg8B +CBMANA8SAAEIHg8RAAEIEA8BCBEAAQgLDxIAAQgcDxQAFA8BCBIAHA8TAD0P +CwmADwAAFw8BCBMAAQgcDwEIEgABBwoPEwABCDQPEgABCB4PAQgQAAEIEA8B +CBEAAQgLDxIAAQgcDwEIEwAUDwEIEgAcDwEIEgA8DwEICgkBCIAPAAAXDxQA +AQccDwEIEgABBwoPEwABBzQPEgABCB4PAQgRABAPAQgRAAEICw8SAAEHHA8B +CBMAFA8BCBIAHA8BCBIAOw8BBwsJAQUBB38PAAAXDxQAHQ8BCBIAAQcJDwEH +EwA1DxIAAQgeDwEHEQABBw8PAQgRAAEICw8SAAEHHA8BBxMAFA8BCBIAHA8B +CBIAOw8BBQsJAQeADwAAFg8BBxMAAQgdDwEHEgABBwkPAQgSAAEINQ8SAAEI +Hw8RAAEIDw8BCBEAAQgLDwEIEQABBx0PEwAUDwEIEgAcDwEIEgA6DwEHCwkB +B4EPAAAWDwEIEwABCB0PAQcSAAoPAQgSAAEINQ8SAAEIHw8SAA8PAQgRAAEI +Cw8BCBEAAQcdDwEIEgAUDwEIEgAcDwEIEgA6DwsJAQiCDwAAFg8BCBMAAQcd +DwEHEgAKDxMAAQc1DxIAAQgfDwEIEQAPDwEIEQABCAsPAQgRAAEHHQ8BCBIA +FA8BCBIAHA8BCBIAOQ8BCAsJAQWCDwAAFg8BCBMAHw8SAAoPEwA2DxIAAQgf +DwEIEQABBw4PAQgRAAEICw8BCBEAAQcdDwEIEgAUDwEIEgAcDwEIEgA5Dw0J +gg8AABYPFAAfDxIACQ8BBxMANg8SAAEIHw8BBxEAAQgODwEIEQABCAsPAQcR +AAEIHQ8BBxIAFA8BCBIAHA8BCBIAOA8BCAwJAQeCDwAAFg8TAAEIHw8SAAkP +AQgSAAEINg8SAAEIHw8BBxIADg8BCBEAAQgLDwEHEQABCB0PAQcSABQPAQgS +ABwPAQgSADgPDAkBCIMPAAAWDxMAAQgfDxIACQ8BCBIAAQg2DxIAAQggDxIA +Dg8BCBEAAQgMDxIAHg8SABQPAQgSABwPAQgSADcPAQgMCYQPAAAVDwEHEwAB +Bx8PEgAJDwEIEgABCDYPEgABCCAPEgABBw0PAQgRAAEIDA8BCBEAHg8SABQP +AQgSABwPAQgSADcPDAkBB4QPAAAVDwEHEwABBx8PEgAJDwEIEgABCDYPEgAB +CCAPEgABBw0PAQgRAAEIDA8BCBEAAQgdDxIAFA8BCBIAHA8BCBIANg8BBwwJ +hQ8AABUPAQcTACAPEgAJDxMAAQc2DxIAAQggDxIAAQgNDwEIEQABCAwPAQcS +AB0PEgAUDwEIEgAcDwEIEgA2DwwJAAMIDwcAgw8AABUPAQgTACAPEgAJDxMA +AQc2DxIAAQggDwEIEQABCA0PAQgRAAEIDQ8SAAEHHA8SABQPAQgSABwPAQgS +ADUPAQcMCQADBwUIAIMPAAAVDwEIEwAgDxIACQ8TAAEHNg8SAAEIIA8BCBIA +DQ8BCBEAAQgNDwEIEgAcDwEIEQAUDwEIEgAcDwEIEgA1DwEFDAkAAwUJBwCD +DwAAFQ8BCBIAAQggDxIACQ8TAAEHNg8SAAEIIA8BCBIADQ8BCBEAAQgNDwEH +EgABCBsPAQgRABQPAQgSABwPAQgSADQPAQcOCQEIhA8AABUPAQgSAAEIIA8S +AAkPEwABBzYPEgABCCAPAQgSAA0PAQgRAAEIDg8BCBIAAQgaDwEIEQAUDwEI +EgAcDwEIEgA0DwEIDgkBB4QPAAAVDwEIEgABCCAPEgAJDxMAAQc2DxIAAQgg +DwEIEgABBwwPAQgRAAEIDg8BBxMAAQgZDwEIEQAUDwEIEgAcDwEIEgA0Dw4J +AQiFDwAAFQ8BCBIAAQggDxIACA8BB0IAAQgHDxIAAQggDwEIEgABBwwPAQgR +AAEIDw8BCBMAAQgBBxcPAQgRABQPAQgSABwPAQgSADMPAQcNCQEFOg8ABQcH +CAgFAAMJAAQFBQgHQA8AABUPAQgSAAEIIA8SAAgPAQdDAAcPEgABCCAPAQgS +AAEHDA8BCBEAAQgPDwEHFQABCBYPAQgRABQPAQgSABwPAQgSADMPAQgMCQEI +OA8ABgcICQkFCAUHRA8AABUPAQgSAAEIIA8SAAgPAQdDAAcPEgABCCAPAQgS +AAEIDA8BCBEAAQgQDwEIFgABCAEHEw8BCBEAFA8BCBIAHA8BCBIAMw8KCQEI +AQc3DwAGBwgJBQcHTA8AABUPAQgSAAEIIA8SAAgPAQdDAAcPEwAgDwEIEgAB +CAwPAQgRAAEIEQ8BCBgAAAMICAcADw8BCBEAFA8BCBIAHA8TADIPAQcJCQEI +Nw8ABQcJCQgHAE8PAAAVDwEIEgABByAPEgAIDwEHQwAHDxMAIA8BCBIAAQgM +DwEIEQABCBIPHgAMCBIAFA8BCBIAHA8TADIPAQgJCTYPAQcDCQEHBQ8DBwAG +CAgFBQkJAwUABAgIBwc8DwAAFQ8BCBIAAQcgDxIACA8BB0MABw8TACAPAQgS +AAEIDA8BCBEAAQgTDzsAFA8BCBIAHA8TADIPCQkBBzQPAQcDCQEFAw8AAwcI +BQASCQADBQcHADgPAAAVDwEIEgABByAPEgAIDwEHQwABBwYPEwAgDwEIEgAB +CAwPAQgRAAEIFA86ABQPAQgSABwPEwAxDwEHCQkzDwAFBwUJCQgAAwcBBRoJ +AQgBBzUPAAAVDwEIEgABByAPEgAJD0MAAQcGDxMAIA8BCBIAAQgMDwEIEQAB +CBUPAQg4ABQPAQgSABwPEwAxDwEHCAkBCDIPAAcHCQkIDw8HAB8JAQUBBzMP +AAAVDwEIEgABByAPEgAJD0MAAQcGDxMAIA8BCBIAAQgMDwEIEQABCBYPAQg3 +AAEHEw8BCBIAHA8TADEPAQgICQEHMQ8ABwgICQcPDwcADgkEBRAJAQUBBzEP +AAAVDwEIEgABByAPEgAJD0MAAQcGDxMAAQcfDwEIEgABCAwPAQgRAAEIFw8B +BwEINQABBxMPAQgSABwPEwAxDwkJAQcvDwAEBwgHBQMPAQcKCQADCAcHAAgP +AAMHBwUADQkBBQEHLw8AABUPAQgSAAEIIA8BCBEACQ9DAAEHBg8TAAEHHw8B +CBIAAQgMDwEIEQABCBkPAQc0AAEHEw8BCBIAHA8TADAPAQcJCQEHLg8ABAcI +BwgDDwEICAkBCAEHDw8ABAcIBwULCQEILg8AABUPAQcSAAEIIA8BCBEACQ9D +AAEHBg8TAAEHHw8TAAEIDA8BCBEAAQgbDwEHAQgxAAEHEw8BCBIAHA8TADAP +AQcJCSsPAAcHDw8HCAcHAAMPAQUHCQEIFw8BBwsJAQcsDwAAFQ8BBxIAAQgg +DwEIEQAJDxMAHggSAAEHBg8TAAEIHw8TAAEIDA8BCBEAAQgdDwEHAQgvAAEH +Ew8BCBIAHA8TADAPAQgICQEIKg8ACggPDwcIDwcPDwcHCQEIGw8BCAoJAQgr +DwAAFQ8BBxIAAQggDwEIEQAJDwEIEgAeDwEIEQABBwYPEwABCB8PEwABCAwP +AQgRAAEIIA8AAwcICAArAAEHEw8BCBIAHA8TADAPAQUICQEHKQ8ACgcHDwcF +DwcPDwcGCQEFAQcdDwEICgkBBSoPAAAWDxIAAQggDwEIEQAJDwEIEgAeDwEI +EQABBwYPEwABCB4PAQcTAAEIDA8BCBEAAQglDwEHAwgSAAEIEgABBxMPAQgS +ABwPEwAwDwkJAQcoDwAFBwUPDwUABA8BBwYJAQggDwADCAcHAAgJAQUpDwAA +Fg8SAAEIIA8BCBEACQ8BCBIAHg8BCBEAAQcGDxQAHg8BBxMAAQgMDwEIEQAB +CC4PBwcHDxIAAQcTDwEIEgAcDxMAMA8JCQEHKA8ABAUHDwgEDwEHBgkBByIP +AAQHDwcFCAkBBycPAAAWDxMAIA8BCBEACQ8BBxIAHg8BCBEAAQcGDxQAHg8B +CBMAAQgMDwEIEQABCDwPEgABBxMPAQgSAAEHGw8TAC8PAQcJCQEHJw8ABQgH +DwcHAAMPAQcGCQEHJw8BCAgJAQcmDwAAFg8BCBIAIA8BCBEACQ8BBxIAHg8B +CBEABw8UAAEHHQ8BCBMAAQgMDwEIEQABCDwPEgABBxMPAQgSAAEHGw8TAC8P +AQcJCQEHJg8BBwEFBg8BBwYJAQcpDwEHCAkBByUPAAAWDwEIEgAgDwEIEQAK +DxIAHg8BCBEABw8UAAEIHQ8UAAEHDA8BCBEAAQg8DxIAAQcTDwEIEgABBxsP +EwAvDwEHCQknDwEFAQcDDwADBw8HAAYJAQcrDwEHCAkBBwEIIw8AABYPAQgS +AAEHHw8BCBEACg8SAAEHHQ8BCBEABw8UAAEIHQ8UAAEHDA8BCBEAAQg8DxIA +AQcTDwEIEgABCBsPEwAvDwEICAkBBycPAQgDDwAEBw8PBQUJAQctDwEHCAkB +CAEHIg8AABYPAQcSAAEIHw8BCBEACg8BCBEAAQcdDwEIEQAHDxUAHA8BBxQA +DQ8BCBEAAQg8DxIAAQcTDwEIEgABCBsPEwAvDwEICAksDwADCA8IAAUJAQgv +DwEHAQUHCSMPAAAXDxIAAQgfDwEIEQAKDwEIEQABBx0PAQgRAAcPFQAcDwEI +FAANDwEIEQABCDwPEgABBxMPAQgSAAEIGw8TAC8PAQUHCQEFKw8AAwcPBwAF +CQEFMg8BBQYJAQciDwAAFw8TAB8PAQgRAAoPAQcRAAEIHQ8RAAEIBw8VAAEH +Gw8BCBQADQ8BCBEAAQg8DxIAAQcTDwEIEwAbDxMALw8BBQcJAQgrDwEHAQ8G +CQEHFA8ABAcHCAgbDwEFBQkBByIPAAAXDwEIEgABBx4PAQgRAAsPEQABCB0P +EQABCAcPFQABCBsPFAABCA0PAQgRAAEIPA8SAAEHEw8BCBMAGw8TAC8PAQUH +CQEHLA8BBwUJAQgTDwEHBQkBBRsPBgkAAw8PBwAfDwAAFw8BBxIAAQgeDwEI +EQALDxIAHQ8RAAEIBw8WABoPAQgUAAEIDQ8BCBEAAQg8DxIAAQcTDwEIEwAB +BxoPEwAvDwgJAQcsDwYJGg8BBwEHGg8BCAUJAAMIDwUAHw8AABgPEwAeDwEI +EQALDwEIEQAcDwEHEQABBwcPFgABBxkPFQABCA0PAQgRAAEIOw8BBxIAAQcT +DwEIEwABCBkPAQcTAC8PCAkBBysPAQcFCQEHNg8BCAYJAAMFCQcAHg8AABgP +EwABBx0PAQgRAAsPAQcRAAEHGw8BBxEAAQcHDxcAGA8BBxUAAQcNDwEIEQAB +CDsPAQcSAAEHEw8UAAEIGQ8BBxMALw8ICQEHKw8BBQUJNw8BCAgJAQgeDwAA +GA8BCBIAAQgdDwEIEQAMDxEAAQgbDwEIEQAIDxcAAQcXDwEIFQAODwEIEQAB +CDsPAQgSAAEHEw8VABkPAQgTAC8PCAkBByoPAQcFCQEINw8BBwkJHg8AABgP +AQcTAB0PAQgRAAwPAQgQAAEIGw8BCBEACA8YABYPAQcWAA4PEgABCDsPAQgS +AAEHEw8VAAEHGA8BCBMALw8ICQEHKg8BBwUJAQckDwEHAQcSDwEFCAkBBx0P +AAAZDxMAAQgcDwEIEQAMDwEHEQAbDxEAAQgIDxgAAQgVDxYAAQgODxIAAQgT +DwEHAQgmDxMAFA8VAAEIGA8BCBMALw8BBQcJAQcqDwEFBQkkDwAEBwcFBxIP +AQcBBQcJBQ8BBxcPAAAZDwEIEwAcDwEIEQANDxEAAQcZDwEHEQABBwgPGQAB +BxMPAQgWAAEHDg8SAAEIEw8AAwgACAAkDwEHEwAUDxYAAQcXDxQALw8BBQcJ +AQcqDwUJAQgkDwAEBwcPBxMPAQcHCQEHBA8BBxcPAAAaDxMAAQgbDwEIEQAN +DwEIEAABCBkPAQgRAAkPGgASDwEHFwAPDxIAAQgTDwEIAwABByIPAQgTABQP +FgABCBYPAQcUAC8PAQUHCQEHKg8FCQEHJQ8ABAcPDwcTDwEFBwkEDwEHFw8A +ABoPAQgTAAEHGg8BCBEADg8RAAEHGA8SAAkPEgABCAgAEA8BBxcAAQgPDxIA +AQgTDwUAAQghDxMAAQgUDxcAAQgVDwEIEwABCC8PCAkBBykPAQcFCQEHJg8A +AwcPBwATDwEHBwkBBxsPAAAaDwEHFAABBxkPAQgRAA4PAQgQAAEIFw8BCBEA +AQgJDxIAAQ8JAAEHDQ8BCBgAAQgPDxIAAQgSDwEHBwABBx4PAQgTAAEIFA8Y +AAEHEw8BBxQAAQgvDwgJAQcpDwEHBQknDwEHFg8HCQEFBA8BBxYPAAAbDwEI +FAABBxgPAQgRAA8PEQABBxYPEgABBwkPEgABDwEICQABCAoPAQcBCBkAEA8S +AAEIEg8BCAgAAQgBBxsPAQgUAAEIEw8BBxkAAQcSDxUAAQgvDwgJAQcpDwEH +BAkBBT4PAQgHCQQPAQcWDwAAGw8BBxUAAQcXDwEIEQAPDwEIEQAVDwEIEQAB +CAoPEgABDwEHCwAACQgIBw8PBwcICAAaAAEIDw8BBxMAEg8MAAEIGA8BCBUA +AQcTDwEHGgABBxAPAQgVAAEHLw8ICQEIKQ8BCAQJAQU+DwEHBwkABQcHDw8H +ABYPAAAcDwEIFQABCBUPAQcSABAPEQABCBMPAQcSAAEICg8SAAADDw8IAC0A +AQcPDwEHEwARDwEHDgABCAEHFA8BCBYAFA8BBxIAAQgBCAcAAQgNDwEHFwAB +By8PCAkBCCkPAQgECQEIPw8HCQEIAw8BBxYPAAAdDxcAAQcRDwEHAQgTABAP +AQgRAAEIEQ8BBxMACw8SAAADDw8HAC0AEA8BBxMAEQ8BCBEAAAQICAcHDA8B +BwEIFwABCBQPAQgSAAEIAQcJAAEIAQcIDwEHAQgYADAPCAkBBSkPAQgDCQEF +QA8HCQEIGg8AAB0PAQcYAAEIAQcLDwEHAQgWABEPAQgSAAEHDg8BCBMAAQgL +DxIAAAQHDw8IKwABBxAPAQgTABEPGAAICBsAAQcUDwEIEgABCAEPDgABCAEI +HAABCDAPCQkpDwEIAwkBBT8PAQcBBQYJAQgaDwAAHg8BCBoACAgaABIPEwAB +CAEHCg8BBxUADA8SAAAEBw8PBysAEQ8BCBMAEA8BCDsAFQ8BCBIAAAMIDwgA +KwABCDAPAQUICSkPAQgDCQEFPw8BBwEFBwkBBxkPAAAfDzwAEg8BBxUAAQgF +BwEIAQgWAAEHDA8SAAEHAw8BCCkAAQcRDxQAEA87AAEHFQ8TAAADCA8PACsA +MQ8BBQgJKQ8BBwQJPw8BBwgJAQgBBxgPAAAfDwEHOwATDwEIMQABCA0PEgAB +BwQPKAABCBIPFAAPDwEHOwAVDwEHEwAABAgPDwcpAAEIMQ8BBQgJAQcoDwEH +BAk/DwEHCAkBCAEFGA8AACAPAQc6ABQPAQgwAA4PEgABBwQPAQgnABIPAQcU +AA8POwABBxUPAQgTAAEIAw8BCCgAAQcxDwEFCAkBBygPAQcECS0PAQgRDwEH +CgkBBxcPAAAhDwEHOQAVDwEILgABBw4PEgABBwUPAQglABMPAQgUAA4PAQg6 +AAEIFg8UAAEIBA8nAAEIMg8BBQgJAQcoDwEHBAkBBysPAQcBBRIPCgkBBxcP +AAAiDwEHOAAWDwEILAABCA8PEgABBwYPJAABBxIPAQcVAA4PAQg5AAEIFg8B +BxQAAQgEDwEHJgABBzIPAQUICQEHKQ8BCAMJAQgrDwEHAQgSDwoJAQgXDwAA +JA8BCDYAAQcWDwEIKgABCBAPEgABBwcPIgABBxMPFgABBw8PAQg2AAEIFw8B +CBQAAQgFDwEHJAABCDMPAQUICQEIKQ8BBwMJAQUsDwEHEg8LCRcPAAAlDwEI +NQABBxcPAQcoAAEHEQ8SAAEHCA8gAAEHEw8BCBYAAQcRDwEIMwABCBcPAQgV +AAEIBg8BByIAAQg0DwEFCAkBBSoPAQUDCT8PCwkBBxYPAAAmDwEHNAABBxkP +AQglAAEHEg8SAAEHCQ8BCBwAAQgUDwEIFwABCBMPAQcBCC8AAQcXDwEIFgAB +CAcPAQcgAAEINQ8BBQgJAQUqDwEHAwkBBz4PCwkBBRYPAAAoDwEIMgABBxoP +AQciAAEIFA8SAAEHCg8BCBoAAQgYDwEHAQcECA8AAQgVDwEHAQgrAAEIGQ8B +BwUIEQABCAkPAQgdAAEINg8BBQkJKw8DCQEFPg8MCRYPAAAqDwEHAQgvAAEH +HA8BBwEIHQABCBYPEgABBwsPAQcBCBYAAQgiDwEHAwgJAAEIGA8AAwcICAAl +AAEIJA8ABAcHCAgKAAEICg8BBxoAAQgBBzcPCgkrDwEIAwkBBz0PCgkBCBcP +AAAsDwEHAQgaAAEIAQgRAAEHHg8BBwEIGQABCBgPEgABBw0PAQcBCBIAAQgB +BygPAQcBCAcAHA8BBwEIHwABCAEHKw8AAwcICAAGAAEIDA8BBxYAAQgBBzgP +AQcKCQEHKg8BBwMJAQU9DwoJAQcXDwAAMA8AAwcICAAQAAADCAgHAAMPAQcR +AAEHIQ8AAwcICAARAAADCAgHABoPEgABBxAPAQgBCAwAAQgBBy4PAQcBCAQA +IA8ABAcHCAgUAAADCAgHADMPAQgBCAMAAQgODwADBwgIAA8AAQgBCDwPCgkB +CCsPAQUDCQEHPA8KCQEHFw8AADUPBAcECAMHCQ8BBxEAAQcmDwEHAQcJCAEH +AQcfDxIAAQcUDwEHAQcECAEHAQc1DwAEBwgABycPBAcGCAMHOw8ABAcIAAgS +DwEHAQcJCAEHQA8BCAoJKw8BBwQJPA8KCRgPAABJDwEHEQABB1IPEgABB1MP +AQcBB3EPAQcBCF4PAQcKCQEIKw8BBQMJAQg7DwoJGA8AAEkPAQcRAAEHUQ8B +BxIAAQf/DygPCwksDwEFAwkBBzoPCgkBBxcPAABJDwEHEQABB1EPAQcSAAEH +/w8oDwEICgkBCCwPAQUDCQEHOQ8KCQEIFw8AAEkPAQcRAAEIUQ8BBxIAAQf/ +DygPAQcLCQEHKw8BBwQJAQc3DwEHCgkYDwAASQ8BBxEAAQhRDwEHEgABB/8P +KQ8LCQEILA8BCAQJAQc2DwEICQkBBxgPAABJDwEHEQABCFEPAQcSAAEI/w8p +DwEICwkBBywPAQUECQEIHQ8BBxcPAQUJCQYPAQcSDwAASQ8BBxEAAQhRDwEH +EgABCP8PJQ8BBwMPAQcLCQEILQ8FCQEFAQcaDwEHGA8BBQgJAAMFDwcABA8B +BxIPAABJDwEHEQABCFEPAQcSAAEI/w8lDwEHAQcDDwwJAQcsDwEHBgkBCBcP +AQcBCBkPCQkAAwgIBwADDwEHEw8AAEkPAQcRAAEIUQ8BCBIAAQj/DyUPAQcB +CAMPAQgLCQEILg8BBQYJAQgBBxIPAAMHBQgAGQ8BBwkJAAMFCQcAAw8BBxMP +AABJDwEHEQABCFEPAQgSAAEI/w8mDwEFAw8BBwsJAQUvDwEIBwkAAwUHBwAM +DwAFBwgJCQcAGg8BBwsJBA8BBxMPAABJDwEHEQABCFEPAQgSAAEI/w8mDwEH +BA8BBQoJMQ8BBwEFCQkBBQEIBgcBCAEFAwkBCBwPAQgKCQEIAw8BBxQPAABJ +DwEHEQABCFEPAQgSAAEISA8BCAEH4A8BBwoJAQgyDwEHAQUSCQEFAQcdDwsJ +AQcDDwEHFA8AAEkPAQcRAAEIUQ8BCBIAAQhHDwAECAkJB+APCwkBBzMPAQcB +CA4JAQgBBx4PAQcLCQEHAw8BBxQPAABJDwEIEQABCFEPAQgSAAEIRg8BCAQJ +AQffDwEICwkBBzUPAAwHBwgFBQkJBQUIBwchDwEICwkABQcPDwcHABQPAABJ +DwEIEQABCFEPEwABCEUPAQgGCQEH3g8BBwsJAQViDwoJAQUBCAMPAQgVDwAA +SQ8BCBEAAQhRDxMAAQhEDwEICAkBB94PAQULCQEFYA8BBwkJAQgEDwEHAQgV +DwAASQ8BCBIAUQ8TAAEIQw8BCAoJAQfdDwEHDAkBCF8PAQUJCQEHBA8BCAEI +FQ8AAEkPAQgSAFAPAQcTAAEIQg8BCAwJAQfdDwEFDAkBCF0PAQcKCQUPAQkB +CBUPAABJDwEIEgBQDwEHFABBDwEIDgkBB9wPAQcNCQEHXA8BBQoJBA8AAwgJ +BwAVDwAASQ8TAFAPAQgUAEAPAQgQCQEH3Q8BBwwJAQdaDwEHCwkEBwAECQkH +BxQPAABJDxMAUA8BCBQAPw8BCBIJAQfVDwEHBw8BCAwJAQdZDwEFDgkABQUJ +CQUHABQPAABIDwEHEwBQDxUAPg8BCBQJAQfVDwEFBw8NCQEHVw8BBxIJAQUV +DwAASA8BCBMATw8BBxUAPQ8BCBYJAQfUDwEFAQcGDwEIDQkBB1YPEwkBBxUP +AABIDwEIEwABB04PAQgVADwPAQgYCQEH0w8BCAEIBg8BBw4JAQhUDwEIEwkW +DwAARw8BBxQAAQdNDwEHFgA7DwEIGgkBB9sPAQUOCQEIUg8BBxMJAQgWDwAA +Rw8BCBQAAQdNDwEIFgA6DwEIHAkBB9oPAQcPCQEFUQ8UCRcPAABGDwEHFQAB +CEwPAQgXAAEHOQ8BBxsJAQUBB9sPEQkBB04PAQUTCQEIFw8AAEUPAQcWAAEI +Sg8BBwEIGAABBzoPAQcZCQEF3Q8BBxEJAQhMDwEIFAkYDwAARQ8BCBYAAQhK +DwEHAQcDCBUAAQc7DwEHFwkBBQEH3g8TCQEISQ8BBxQJAQcYDwAASA8BBwEH +AwgPAAEIUg8AAwcICAAPAAEHPA8BBxUJAQUBB98PAQcUCQADBQgHAEQPAQcU +CQEFGQ8AAE8PAAMHCAgACgABCFcPAQgBCAsAAQc9DwEHEwkBBeIPAQcUCQAD +CAcHAEIPAQcVCQEHGQ8AAFMPAAMHCAgABwBaDwEHAQgIAAEIPg8BBxEJAQUB +B+MPAQUUCQEHQg8BBxUJAQgaDwAAVw8BCAUAXQ8BBwEIBQABCD8PAQcPCQEF +AQfkDwEHFQkBB0APAQcVCQEFGw8AAFkPAAQHCAAAYA8BCAMAAQhADwEHDQkB +BQEH5g8BCBUJAQg+DwEHFgkBBxsPAABcDwEIAQdhDwADBwgIAEEPAQcLCQEF +AQfoDwEFFQkBBQEHOw8BBxYJAQccDwAA/w8FDwEHCgkBB+oPFwkAAwUHBwA3 +DwEIFgkBBx0PAAD/DwYPAQcHCQEFAQfrDwEHGwkAAwUIBwAwDwEHAQUWCQEI +Hg8AAP8PBw8BBwUJAQUBB+0PAQcaCQEIAwcuDwEHFwkBBR8PAAD/DwgPAQcE +CQEH7w8BBwEFGgkBBQEHLA8BBwEFFwkBBSAPAAD/DwkPAAQICQUH8g8BBRwJ +AQgoDwEHAQgYCQEFIQ8AAP8PCg8BBwEH9A8BBR0JAQckDwEHAQgZCQEFIg8A +AP8P/w8AAw8PCAAdCQEFAQcfDwEHAQgbCQEFIw8AAP8P/w8DDwEIHgkAAwUH +BwAYDwADBwcFAB0JAQgkDwAA/w//DwQPAQghCQAGBQgHBwUIBAcFDwQHAAMI +CAUAIAkBByUPAAD/D/8PBQ8BB1UJAQcmDwAA/w//DwYPAAMHBwgAUAkBBSgP +AAD/D/8PCQ8BCEsJAAQFBQkHKQ8AAP8P/w8KDwEHSQkABAcHBQcqDwAA/w// +DwwPAQhFCQAEBQcPBywPAAD/D/8PDQ8BBwEFQwkwDwAA/w//Dw8PAQdBCQEH +MA8AAP8P/w8RDwEINgkACQgHDwcHBQUIBwAxDwAA/w//DxMPAQgyCQEIAQc6 +DwAA/w//DxUPAQcuCQEIAQc8DwAA/w//DxcPAQcBBSgJAQgBBz8PAAD/D/8P +GQ8BBwEFIwkBCAEHQg8AAP8P/w8bDwEHAQgQCQEHAw8DBwMIAAYHBwkJCAdF +DwAA/w//Dx4PAQcBBQYJAQUGBwQPAQcGDwEHAQdIDwAAaA//Bx4HmQ8ACQcH +DwcHCAUJBwAHDwEHAQdQDwAAYw//BygHnQ8BBwQPAQdTDwAAYg8EB/8IIggE +B/UPAABiDwAEBwcICP8JIgkABAgIBwf1DwAAYg8AAwcHCAD/CSQJAAMIBwcA +9Q8AAGIPAQcBCP8JJgkBCAEH9Q8AAGEPAAMHBwgABAmMCAQJjAgFCQADCAcH +APQPAABhDwADBwcIAAMJAQgBCIoHAAYICAkJCAiKBwEIAQgECQADCAcHAPQP +AABhDwADBwcIAAMJAQiMBwAECAkJCIwHAQgECQADCAcHAPQPAABhDwADBwcI +AAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwAD +BwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABh +DwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQP +AABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcH +APQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQAD +CAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAE +CQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcH +CAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8A +AwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcH +iA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJ +CAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcH +CAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8A +CAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcA +iA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMI +BwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJ +AAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcI +AAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwAD +BwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABh +DwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQP +AABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcH +APQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQAD +CAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAE +CQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcH +CAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8A +AwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcH +iA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJ +CAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcH +CAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8A +CAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcA +iA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMI +BwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJ +AAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcI +AAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwAD +BwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABh +DwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQP +AABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcH +APQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQAD +CAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAE +CQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcH +CAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8A +AwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcH +iA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJ +CAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcH +CAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8A +CAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcA +iA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMI +BwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJ +AAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcI +AAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwAD +BwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABh +DwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQP +AABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcH +APQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQAD +CAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAE +CQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcH +CAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8A +AwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcH +iA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJ +CAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcH +CAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8A +CAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcA +iA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMI +BwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJ +AAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcI +AAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwAD +BwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABh +DwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQP +AABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcH +APQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQAD +CAcHAK4PAQBFDwAAYQ8AAwcHCAADCQADCAcHAIgPAAgHBwgJCQgHB4gPAAMH +BwgABAkAAwgHBwCuDwEARQ8AAGEPAAMHBwgAAwkAAwgHBwCIDwAIBwcICQkI +BweIDwADBwcIAAQJAAMIBwcAGg8EBwMPBAcDDwEHAQcPDwAIBwcPDwcHDwcD +DwMHDg8BBwEHAw8BBwEHCA8BBwMPAwcBDwMHAQ8BBwMPAQcBBwMPAwcFDwYH +AAQPDwcHAw8DBwEPAwcBDwMHAAQPDwcHAw8DBwYPAQcBBwMPAAMADwcABA8A +AwcHDwADBwMPAAQHBw8PAwcBDwYHKA8AAGEPAAMHBwgAAwkAAwgHBwCIDwAI +BwcICQkIBweIDwADBwcIAAQJAAMIBwcAGQ8ADwgACA8IAA8PCAgPCAgPCAAD +AAoPABcHAA8PAAgHCAAACAAIDwAIBwAPDwcABwAJDwAIAAgHDwAIDwgGDwAR +AAAICA8PAA8PBwAPBwAIDwgAAwADDwEAAQcFDwAIBwgPBwAIDwgDAAMPABMA +Bw8PCAcPDwAHDwAACAgPDwcAAAYPAAoABwcIDw8AAAcAAw8AGAAIBw8ABw8P +AAcHCA8PAA8PBwAPAAcPACcPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJ +CAcHiA8AAwcHCAAECQADCAcHABgPAAMHAAcAAw8ACgcHDwgPDwgIBwADDwEH +Bw8AAwgACAADDwALAA8PAAcPAAgPDwAAAw8ABwAPDwcIAAgABw8ACQAPDwgI +Dw8IAAAEDwASAAgPDwcPDwAPDwcADwcIDwcAAw8ABQcPDwAHAAUPAAgHCA8A +Bw8HAAMPAA8HDw8ABw8PCAcPDwAHCAAAAw8ABAcPBwAFDwAIAAcPDwAIDwAD +DwAEAA8PAAMPABUABw8ABw8PAAgPAA8PBwAPCA8PAAcAJg8AAGEPAAMHBwgA +AwkAAwgHBwCIDwAIBwcICQkIBweIDwADBwcIAAQJAAMIBwcAGA8BBwEABQ8A +CQcPDwcIAAcHAAAJDwAECAAIBwQPAQADDwAHCA8ICA8PAAADDwEAAQcDDwAE +BwAIBwUPAAkADw8ABw8PBwAABA8BAAYPAAsADw8HAA8HCA8HAAAGDwEAAQcF +DwAIBwAICA8PBwAGDwAMAAcPDwgHDw8ABwgIBQ8BBwEABA8BBwEAAw8ABAgI +DwADDwAEAAcPAAMPAAQABwcAAw8ADQgIDwAPDwcADw8IAAAAJw8AAGEPAAMH +BwgAAwkAAwgHBwCIDwAIBwcICQkIBweIDwADBwcIAAQJAAMIBwcAGA8BBwEA +BQ8ACQcPCAAHDw8HAAAECAQPAQgBAAcPAQAEDwAGCAAIDw8AAw8BAAEHBQ8A +AwcABwAEDwAJAA8PAAcPDwcAAAQPAQAECAANDw8ADw8HAA8HCA8HAAAECAAE +Dw8ABwUPAAMHAAAAAw8BBwEABAgADg8PAAcPDwgHDw8ABwgAAwgABAcPBwAE +DwEHAQADDwAECAgPAAMPAAQABw8AAw8ABAAHBwADDwAMCAgPAA8PBwAPAAAH +KA8AAGEPAAMHBwgAAwkAAwgHBwCIDwAIBwcICQkIBweIDwADBwcIAAQJAAMI +BwcAGA8BBwEABQ8ADQcPCAgPCAcPCA8PCAgABQ8ABAgACAcEDwAPAA8PBwgP +CAgPDwAHDwgAAAQPAAQHAAgHBQ8ACQAPDwcIDw8ACAAEDwAbCAcPBwAPDwAH +DwgADwcIDw8IDw8ICA8PAAgHAAQPAAQHCA8IAw8AGggPDwgIDw8ACAcPCAgP +DwAHBwgPDwAHDwcABQ8ADwgHDw8ABw8ABw8IAA8PAAADDwAUAAcPCAcPDwAH +DwAHDwgADwAPDwAnDwAAYQ8AAwcHCAADCQADCAcHAIgPAAgHBwgJCQgHB4gP +AAMHBwgABAkAAwgHBwAYDwEHAQAFDwAMBw8PCAcABw8HAAgACA8AGwgACA8P +BwAHDw8IBwAHDw8ABwAABw8PBwAABwAGDwAJBwAHDw8ICAAIAAYPABsACAAH +DwgABwAABw8IAAcPBwAIAA8PCAAIAAcAAw8AIQcIDwAABw8HAAgADw8IAAgA +CAAHAAAIDw8IAAAIDw8HAAAGDwAlCAcABw8IAAcAAAcPBwAHDwgABw8PCAcA +Bw8IAAcAAAcPBwgIAAAnDwAAYQ8AAwcHCAADCQADCAcHAIgPAAgHBwgJCQgH +B4gPAAMHBwgABAkAAwgHBwAYDwEHAQAFDwEHFQ8ABQcADw8IAAkPAQAFDwAD +BwgHAAkPAQgaDwEIEA8BBwEIHQ8BBwEAEw8BCD4PAABhDwADBwcIAAMJAAMI +BwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHABgPAQcBAAUPAQcZDwEH +CQ8BABEPAQcaDwEHEA8BBwEIHQ8BBwEAEw8BBz4PAABhDwADBwcIAAMJAAMI +BwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHABgPAAMIAAcAAw8BBwEI +Ig8BCAEAPA8AAwcACAAcDwADBwAAABcPAQABBzkPAABhDwADBwcIAAMJAAMI +BwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHABcPBAcDDwMHIg8BBz4P +AQceDwEHFw8BBzoPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8A +AwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcH +iA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJ +CAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8ACAcH +CAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcAiA8A +CAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMIBwcA +iA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJAAMI +BwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcIAAMJ +AAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwADBwcI +AAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAPQPAABhDwAD +BwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHABcPBAcB +DwEPBwcAAw8PBwAODwEHAQcDDwMHDg8BBwEHAw8BBwEHBw8DBwUPAQcBBwUP +AQcEDwEHBQ8DBwQPAQcBBwMPAwcABA8PBwcEDwEHAQcEDwADBw8PAAMHAw8B +BwMPBgdRDwAAYQ8AAwcHCAADCQADCAcHAIgPAAgHBwgJCQgHB4gPAAMHBwgA +BAkAAwgHBwAYDwAQCAAHDw8HAAgPDwgIDwcACAkPABEICA8PAAAICA8PCAgP +DwcABwAJDwAIAAgHDwAIDwgFDwAFBwAHCAgAAw8ADwAHBwgPDwgADwgPDwcA +CAAEDwAXAAcPAA8PAAAICA8PBwAPDwAACAgPDwgAAwAAFg8PBwAIDwcADw8I +AA8IDw8HCA8PCAhRDwAAYQ8AAwcHCAADCQADCAcHAIgPAAgHBwgJCQgHB4gP +AAMHBwgABAkAAwgHBwAYDwEHAQAEDwAJAAcPDwgIDwcIAAcPAA8HCAAHDw8A +CA8PBw8PCAgAAw8ABAcIAAgHDwAJAA8PCAgPDwgAAAQPAA8HCA8PCAAPAAcP +DwAIBwAAAw8ABAAPBwgFDwAHCA8PAAcIAAADDwAHBw8HAA8IAAADDwADBwcA +AAMPAAsHDwcIDw8HAA8HAAADDwAIAA8HCA8PCAhRDwAAYQ8AAwcHCAADCQAD +CAcHAIgPAAgHBwgJCQgHB4gPAAMHBwgABAkAAwgHBwAYDwEHAQAEDwAJAAcP +DwgIDwcIAAYPAAMIAAgABA8BAAYPAQgBCAUPAAQHAAgHBQ8ACQAPDwAHDw8H +AAAEDwAIBwgPDwcABwADDwQIAw8ABAAHBwgGDwAGCAAADwgIBQ8ABQcADwgI +AAQPAQcBAAUPAAkHCA8PBwAPCAgAAw8ACAAHBwgPDwgIUQ8AAGEPAAMHBwgA +AwkAAwgHBwCIDwAIBwcICQkIBweIDwADBwcIAAQJAAMIBwcAGA8BBwEABA8A +CQAHDw8ICA8HCAAFDwEAAQgGDwEABg8BCAEIBw8AAwcABwAEDwAJAA8PAAcP +DwcAAAQPAAgHCA8PBwAHAAMPBAgDDwAEAAcHCAUPAAcAAAcPDwgAAAMIAAcH +DwcADwgAAAMIAAMHBwgABQ8ACQcIDw8HAA8ICAADDwAIAAcHCA8PCAhRDwAA +YQ8AAwcHCAADCQADCAcHAIgPAAgHBwgJCQgHB4gPAAMHBwgABAkAAwgHBwAY +DwEHAQAEBwAJAAcPDwgIDwcIAAYPAAMIAAgABA8ACwgIDwgIDw8IAAcHAAMP +AAQHAAgHBQ8ACQAPDwcIDw8ACAAEDwAWBwAPBwAADwgHDw8ABw8ADw8IAA8H +CAUPADAADw8ADwcIDw8ABw8HAA8HCA8PAAcPAA8PAAcPBwgPDwcADw8ADw8I +AA8HAA8PAAhRDwAAYQ8AAwcHCAADCQADCAcHAIgPAAgHBwgJCQgHB4gPAAMH +BwgABAkAAwgHBwAYDwEHAQAEDwAKAAcPCAAIDwgABwcPAAMIAAcAAw8ADwAI +AAcPCAAIAAgPBwAABwAGDwAJBwAHDw8ICAAIAAUPAAUHCAgAAAADDwAPCAcA +Bw8PBwgIAA8PCAAHAAQPACoHCAgADw8IAAAIDw8HAA8PCAAACA8PBwAHAA8P +CAAHBwAADw8HCAgADwcDCAEAAQBSDwAAYQ8AAwcHCAADCQADCAcHAIgPAAgH +BwgJCQgHB4gPAAMHBwgABAkAAwgHBwAYDwEHAQAEDwEAAQcGDwEICg8BCAEI +DA8AAwcIBwAJDwEIDA8BBwEIEw8BCBEPAQcBAA8PAQhjDwAAYQ8AAwcHCAAD +CQADCAcHAIgPAAgHBwgJCQgHB4gPAAMHBwgABAkAAwgHBwAYDwEHAQAEDwEA +AQcGDwEHJA8BBwwPAQcBCBMPAQcRDwEHAQAPDwEHYw8AAGEPAAMHBwgAAwkA +AwgHBwCIDwAIBwcICQkIBweIDwADBwcIAAQJAAMIBwcAGA8ADAgABw8PBwAI +Dw8ICDMPAAMHAAgAJA8AAwcAAAASDwEHAQBfDwAAYQ8AAwcHCAADCQADCAcH +AIgPAAgHBwgJCQgHB4gPAAMHBwgABAkAAwgHBwAXDwQHAQ8BDwQHAAMPBwcA +NQ8BByYPAQcTDwEHXw8AAGEPAAMHBwgAAwkAAwgHBwCIDwAIBwcICQkIBweI +DwADBwcIAAQJAAMIBwcA9A8AAGEPAAMHBwgAAwkAAwgHBwCIDwAIBwcICQkI +BweIDwADBwcIAAQJAAMIBwcA9A8AAGEPAAMHBwgAAwkAAwgHBwCIDwAIBwcI +CQkIBweIDwADBwcIAAQJAAMIBwcA9A8AAGEPAAMHBwgAAwkAAwgHBwCIDwAI +BwcICQkIBweIDwADBwcIAAQJAAMIBwcA9A8AAGEPAAMHBwgAAwkAAwgHBwCI +DwAIBwcICQkIBweIDwADBwcIAAQJAAMIBwcA9A8AAGEPAAMHBwgAAwkAAwgH +BwCIDwAIBwcICQkIBweIDwADBwcIAAQJAAMIBwcA9A8AAGEPAAMHBwgAAwkA +AwgHBwCIDwAIBwcICQkIBweIDwADBwcIAAQJAAMIBwcA9A8AAGEPAAMHBwgA +AwkAAwgHBwCIDwAIBwcICQkIBweIDwADBwcIAAQJAAMIBwcA9A8AAGEPAAMH +BwgAAwkAAwgHBwCIDwAIBwcICQkIBweIDwADBwcIAAQJAAMIBwcA9A8AAGEP +AAMHBwgAAwkAAwgHBwCIDwAIBwcICQkIBweIDwADBwcIAAQJAAMIBwcA9A8A +AGEPAAMHBwgAAwkAAwgHBwCIDwAIBwcICQkIBweIDwADBwcIAAQJAAMIBwcA +9A8AAGEPAAMHBwgAAwkAAwgHBwCIDwAIBwcICQkIBweIDwADBwcIAAQJAAMI +BwcA9A8AAGEPAAMHBwgAAwkAAwgHBwCIDwAIBwcICQkIBweIDwADBwcIAAQJ +AAMIBwcA9A8AAGEPAAMHBwgAAwkAAwgHBwCIDwAIBwcICQkIBweIDwADBwcI +AAQJAAMIBwcA9A8AAGEPAAMHBwgAAwkAAwgHBwCIDwAIBwcICQkIBweIDwAD +BwcIAAQJAAMIBwcA9A8AAGEPAAMHBwgAAwkAAwgHBwCIDwAIBwcICQkIBweI +DwADBwcIAAQJAAMIBwcA9A8AAGEPAAMHBwgAAwkAAwgHBwCIDwAIBwcICQkI +BweIDwADBwcIAAQJAAMIBwcA9A8AAGEPAAMHBwgAAwkAAwgHBwCIDwAIBwcI +CQkIBweIDwADBwcIAAQJAAMIBwcA9A8AAGEPAAMHBwgAAwkAAwgHBwCIDwAI +BwcICQkIBweIDwADBwcIAAQJAAMIBwcA9A8AAGEPAAMHBwgAAwkAAwgHBwCI +DwAIBwcICQkIBweIDwADBwcIAAQJAAMIBwcA9A8AAGEPAAMHBwgAAwkAAwgH +BwCIDwAIBwcICQkIBweIDwADBwcIAAQJAAMIBwcA9A8AAGEPAAMHBwgAAwkA +AwgHBwCIDwAIBwcICQkIBweIDwADBwcIAAQJAAMIBwcA9A8AAGEPAAMHBwgA +AwkAAwgHBwCIDwAIBwcICQkIBweIDwADBwcIAAQJAAMIBwcAdA8sB1QPAABh +DwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHAG8P +NgdPDwAAYQ8AAwcHCAADCQADCAcHAIgPAAgHBwgJCQgHB4gPAAMHBwgABAkA +AwgHBwBuDwQHMAgEB04PAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcH +iA8AAwcHCAAECQADCAcHAG4PAAQHBwgIMAkABAgIBwdODwAAYQ8AAwcHCAAD +CQADCAcHAIgPAAgHBwgJCQgHB4gPAAMHBwgABAkAAwgHBwBuDwADBwcIADIJ +AAMIBwcATg8AAGEPAAMHBwgAAwkAAwgHBwCIDwAIBwcICQkIBweIDwADBwcI +AAQJAAMIBwcAbg8BBwEINAkBCAEHTg8AAGEPAAMHBwgAAwkAAwgHBwCIDwAI +BwcICQkIBweIDwADBwcIAAQJAAMIBwcAbQ8AAwcHCAAECSwIBAkAAwgHBwBN +DwAAYQ8AAwcHCAADCQADCAcHAIgPAAgHBwgJCQgHB4gPAAMHBwgABAkAAwgH +BwBtDwADBwcIAAMJAQgBCCoHAQgBCAMJAAMIBwcATQ8AAGEPAAMHBwgAAwkA +AwgHBwCIDwAIBwcICQkIBweIDwADBwcIAAQJAAMIBwcAbQ8AAwcHCAADCQEI +LAcBCAMJAAMIBwcATQ8AAGEPAAMHBwgAAwkAAwgHBwCIDwAIBwcICQkIBweI +DwADBwcIAAQJAAMIBwcAbQ8AAwcHCAADCQADCAcHACgPAAMHBwgAAwkAAwgH +BwBNDwAAYQ8AAwcHCAADCQADCAcHAIgPAAgHBwgJCQgHB4gPAAMHBwgABAkA +AwgHBwAaDwEHBAgBBwEPBQcBDwUHAQ8FBwEPAQ8FBwQPAQcBBwMIAQcBBwYP +BAcHDwQIAQcBDwQHBA8BBwQIAQcEDwADBwcIAAMJAAMIBwcAKA8AAwcHCAAD +CQADCAcHAE0PAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcH +CAAECQADCAcHABkPAQcGAAEPBQABBwUAAQ8BCAQAAQcBBwQAAAQIDw8ICAAE +DwEIBwAEDwsAAAQHDw8HBgAEDwADBwcIAAMJAAMIBwcAKA8AAwcHCAADCQAD +CAcHAE0PAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAE +CQADCAcHABkPBwABDwUAAQcFAAEPAQgEAAEHAQcEAAADCA8IAAkAAw8KAAAD +Bw8IAAsAAAMHDw8ABwAEDwADBwcIAAMJAAMIBwcAKA8AAwcHCAADCQADCAcH +AE0PAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQAD +CAcHABkPBwABBwUAAQcFAAEPAQgEAAEHAQcEAAEIAQcFAAMIAAUAAA8PCAAL +AAEPAQgLAAADBw8PAAcAAQcDDwADBwcIAAMJAAMIBwcAKA8AAwcHCAADCQAD +CAcHAE0PAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAE +CQADCAcHABkPBQADDwUAAQcFAAEPAQgEAAEHAQcEAAEIAQgEAAUPAAMHDw8A +BQABDwEPBQABBwEIBAABCAEPBQAAAwcPDwAFAAYPAAMHBwgAAwkAAwgHBwAo +DwADBwcIAAMJAAMIBwcATQ8AAGEPAAMHBwgAAwkAAwgHBwCIDwAIBwcICQkI +BweIDwADBwcIAAQJAAMIBwcAGQ8EAAEIAw8FAAEHBQABDwEIBAABBwEHBAAB +CAEICwABDwUAAAMPDwcABAABBwEIBAAAAwcPBwAEAAADBw8PAAQAAQgGDwAD +BwcIAAMJAAMIBwcAKA8AAwcHCAADCQADCAcHAE0PAABhDwADBwcIAAMJAAMI +BwcAiA8ACAcHCAkJCAcHiA8AAwcHCAAECQADCAcHABkPBAABCAMPBQABBwUA +AQ8FAAEHAQcEAAEIAQgEAAEIAQgFAAEPBQAAAw8PCAAEAAEHAQgEAAADBw8H +AAQAAAMHDw8ABAABCAYPAAMHBwgAAwkAAwgHBwAoDwADBwcIAAMJAAMIBwcA +TQ8AAGEPAAMHBwgAAwkAAwgHBwCIDwAIBwcICQkIBweIDwADBwcIAAQJAAMI +BwcAFw8BCAEIBQAAAwgIDwAFAAEHEQABCAEHBAABBwEPBQABDwUAAQgBBwUA +AQcBCAQAAAMHDwcABAAAAwcICAAFAAEIAQgEDwADBwcIAAMJAAMIBwcAKA8A +AwcHCAADCQADCAcHAE0PAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcH +iA8AAwcHCAAECQADCAcHABcPAQgIAAEPBQABBxEAAQgBDwoAAAMHDwcACwAB +DwEIBAAAAwcPBwAEAAEHAQgIAAQPAAMHBwgAAwkAAwgHBwAoDwADBwcIAAMJ +AAMIBwcATQ8AAGEPAAMHBwgAAwkAAwgHBwCIDwAIBwcICQkIBweIDwADBwcI +AAQJAAMIBwcAFw8BCAgAAQ8FAAEHEQAAAwcPBwAIAAEHAw8BCAkAAAMPDwgA +BAAAAwcPBwAEAAEHAQgIAAQPAAMHBwgAAwkAAwgHBwAoDwADBwcIAAMJAAMI +BwcATQ8AAGEPAAMHBwgAAwkAAwgHBwCIDwAIBwcICQkIBweIDwADBwcIAAQJ +AAMIBwcAFw8BCAgAAQ8FAAEHBAABCAUAAQcBCAQAAQgEDwEIBAABCAEHBQ8B +BwYAAQgDDwEIBAAAAwcPBwAEAAEHAQgIAAQPAAMHBwgAAwkAAwgHBwAoDwAD +BwcIAAMJAAMIBwcATQ8AAGEPAAMHBwgAAwkAAwgHBwCIDwAIBwcICQkIBweI +DwADBwcIAAQJAAMIBwcAGQ8EAAEIAw8FBwQPAQcDDwEHAQcEDwEHAQcUDwQH +FA8EAAEIBg8AAwcHCAADCQADCAcHACgPAAMHBwgAAwkAAwgHBwBNDwAAYQ8A +AwcHCAADCQADCAcHAIgPAAgHBwgJCQgHB4gPAAMHBwgABAkAAwgHBwAZDwAF +CAgAAAgAAw8FADwPAAUICAAACAAGDwADBwcIAAMJAAMIBwcAKA8AAwcHCAAD +CQADCAcHAE0PAABhDwADBwcIAAMJAAMIBwcAiA8ACAcHCAkJCAcHiA8AAwcH +CAAECQADCAcHAB0PAQcDDwUAQA8BBwYPAAMHBwgAAwkAAwgHBwAoDwADBwcI +AAMJAAMIBwcATQ8AAGEPAAMHBwgAAwkAAwgHBwCIDwAIBwcICQkIBweIDwAD +BwcIAAQJAAMIBwcAIQ8FCEcPAAMHBwgAAwkAAwgHBwAoDwADBwcIAAMJAAMI +BwcATQ8AAGEPAAMHBwgAAwkBCIwHAAQICQkIjAcBCAQJAAMIBwcAbQ8AAwcH +CAADCQEILAcBCAMJAAMIBwcATQ8AAGEPAAMHBwgAAwkBCAEIigcABggICQkI +CIoHAQgBCAQJAAMIBwcAbQ8AAwcHCAADCQEIAQgqBwEIAQgDCQADCAcHAE0P +AABhDwADBwcIAAQJjAgECYwIBQkAAwgHBwBtDwADBwcIAAQJLAgECQADCAcH +AE0PAABiDwEHAQj/CSYJAQgBB28PAQcBCDQJAQgBB04PAABiDwADBwcIAP8J +JAkAAwgHBwBvDwADBwcIADIJAAMIBwcATg8AAGIPAAQHBwgI/wkiCQAECAgH +B28PAAQHBwgIMAkABAgIBwdODwAAYg8EB/8IIggEB28PBAcwCAQHTg8AAGMP +/wcoB3EPNgdPDwAAaA//Bx4Hew8sB1QPAAD/D/8Pgg8AAP8P/w+CDwAA/w// +D4IPAAD/D/8Pgg8AAP8P/w+CDwAA/w//D4IPAAD/D/8Pgg8AAP8P/w+CDwAA +/w//D4IPAAD/D/8Pgg8AAP8P/w+CDwAA/w//D4IPAAD/D/8Pgg8AAP8P/w+C +DwAA/w//D4IPAAD/D/8Pgg8AAP8P/w+CDwAA/w//D4IPAAD/D/8Pgg8AAP8P +/w+CDwAA/w//D4IPAAD/D/8Pgg8AAP8P/w+CDwAA/w//D4IPAAD/D/8Pgg8A +AP8P/w+CDwAA/w//D4IPAAD/D/8Pgg8AAP8P/w+CDwAA/w//D4IPAAD/D/8P +gg8AAP8P/w+CDwAA/w//D4IPAAD/D/8Pgg8AAP8P/w+CDwAA/w//D4IPAAD/ +D/8Pgg8AAP8P/w+CDwAA/w//D4IPAAD/D/8Pgg8AAP8P/w+CDwAALA//B/8H +NwcfDwAAKQ8EB/8I/wg1CAQHHA8AACcPAwcDCP8J/wk1CQMIAwcaDwAAJg8A +BQcHCAgFAP8J/wk6CQAECAgHBxkPAAAlDwADBwcIAP8J/wk/CQADCAcHABgP +AAAlDwEHAQgJCf8I/wgvCAkJAQgBBxgPAAAkDwADBwcIAAYJAwj/B/8HLwcD +CAYJAAMIBwcAFw8AACQPAQcBCAUJAQgBCAQH/w//Dy0PBAcBCAEIBQkBCAEH +Fw8AACQPAQcBCAQJAQgDB/8P/w8zDwMHAQgECQEIAQcXDwAAIw8AAwcHCAAE +CQEIAQf/D/8PNw8BBwEIBAkAAwgHBwAWDwAAIw8BBwEIBAkAAwgHBwD/D/8P +Nw8AAwcHCAAECQEIAQcWDwAAIw8BBwEIBAkBCAEH/w//DzkPAQcBCAQJAQgB +BxYPAAAjDwEHAQgECQEIAQf/D/8POQ8BBwEIBAkBCAEHFg8AACMPAQcBCAMJ +AAMIBwcA/w//DzkPAAMHBwgAAwkBCAEHFg8AACMPAQcBCAMJAQgBB/8P/w87 +DwEHAQgDCQEIAQcWDwAAIw8BBwEIAwkBCAEH/w//DzsPAQcBCAMJAQgBBxYP +AAAjDwEHAQgDCQEIAQdzDwsHZA8LBykPCwfuDwMHBQgDBx8PAQcBCAMJAQgB +BxYPAAAjDwEHAQgDCQEIAQcGDyIIAQ8BDxAIAQ8BDyIIEQ8BCAEIDwAAAwgI +BwAiDxwIAQcBBxsPAQgBCA8AAAMICAcAIA8BCAEIDwAAAwgIBwAdDwEHDwgB +ByMPAQcMCAEHBA8BBw0IBQ8OCAEPAQ8jCAADDw8HAA0IDA8SCAEHDA8AAwcI +CAAQAAEIAQcaDwEHAQgDCQEIAQcWDwAAIw8BBwEIAwkBCAEHBg8BCCAAAAQI +Dw8IDwAAAw8PCAAgAAEIDg8BBxcAAQgBBx8PAQgfAAEIFQ8BBxcAAQgBBxoP +AQcXAAEIAQcaDwEHDwABByMPAQcMAAEHBA8BBw0ABQ8BCAwAAAMIDw8AIwAA +Aw8PBwANAAsPAQcSAAEHCg8BCBcAAQgBBxcPAQcBCAMJAQgBBxYPAAAjDwEH +AQgDCQEIAQcGDwEIIAAABAgPDwgPAAADDw8IACAAAQgMDwEIHAABBx0PAQgh +AAEIEQ8BCBwAAQcWDwEIHAABBxgPAQcPAAEHIw8BBwwAAQcEDwEIDQABBwQP +AQgMAAADCA8PACMAAAMPDwcADQALDxMAAQcIDwEIHAABCBUPAQcBCAMJAQgB +BxYPAAAjDwEHAQgDCQEIAQcGDwEIIAAABAgPDwgPAAADDw8IACAAAQgLDx8A +AQgcDwEIIwABBw4PHwABCBQPHwABCBcPAQcPAAEHIw8BBwwAAQcEDw4AAQgE +DwEIDAAAAwgPDwAjAAADDw8HAA0ACg8BCBMAAQcGDwEHIAABBxMPAQcBCAMJ +AQgBBxYPAAAjDwEHAQgDCQEIAQcGDwEIIAAABAgPDwgPAAADDw8IACAAAQgJ +DwEHIgABBxoPAQgkAAEHCw8BByIAAQcQDwEHIgABBxUPAQcPAAEHIw8BBwwA +AQcEDw8ABA8BCAwAAAMIDw8AIwAAAw8PBwANAAoPFAABBwUPAQgiAAEIEg8B +BwEIAwkBCAEHFg8AACMPAQcBCAMJAQgBBwYPAQggAAAECA8PCA8AAAMPDwgA +IAABCAgPAQgkAAEHGQ8BCCUACg8BCCQAAQcODwEIJAABBxQPAQcPAAEHIw8B +BwwAAQcDDwEHDwAEDwEIDAAAAwgPDwAjAAADDw8HAA0ACQ8BCBQAAQcEDwEI +JAABCBEPAQcBCAMJAQgBBxYPAAAjDwEHAQgDCQEIAQcGDwEIIAAABAgPDwgP +AAADDw8IACAAAQgHDwEIJgABBxgPAQglAAEICA8BCCYAAQcMDwEIJgABBxMP +AQcPAAEHIw8BBwwAAQcDDwEIDwABBwMPAQgMAAADCA8PACMAAAMPDwcADQAJ +DxUAAQcDDwEHJgABCBAPAQcBCAMJAQgBBxYPAAAjDwEHAQgDCQEIAQcGDwEI +IAAABAgPDwgPAAADDw8IACAAAQgGDwEHKAABBxcPAQgmAAcPAQcoAAEHCg8B +BygAAQcSDwEHDwABByMPAQcMAAEHAw8BCA8AAQgDDwEIDAAAAwgPDwAjAAAD +Dw8HAA0ACA8WAAEHAw8oABAPAQcBCAMJAQgBBxYPAAAjDwEHAQgDCQEIAQcG +DwEIIAAABAgPDwgPAAADDw8IACAAAQgFDwEHKgAXDwEIJgABBwUPAQcqAAkP +AQcqABIPAQcPAAEHIw8BBwwAAQcDDxAAAQgDDwEIDAAAAwgPDwAjAAADDw8H +AA0ABw8BBxYAAAQHDw8IKAABCA8PAQcBCAMJAQgBBxYPAAAjDwEHAQgDCQEI +AQcGDwEIIAAABAgPDwgPAAADDw8IACAAAQgFDywAFg8BCCYAAQgFDywACA8s +ABEPAQcPAAEHIw8BBwwAAQcDDxEAAw8BCAwAAAMIDw8AIwAAAw8PBwANAAcP +FwAAAwcPDwAqAA8PAQcBCAMJAQgBBxYPAAAjDwEHAQgDCQEIAQcGDwEIDwAU +DwEIDwAAAw8PCAAPABYPAQgSAAEIAQcDDwEHAQgTAAEHFQ8BCA4ABw8BBwEI +DwABCAQPAQgSAAEIAQcDDwEHAQgTAAEHBg8BCBIAAQgBBwMPAQcBCBMAAQcQ +DwEHDwABByMPAQcMAAAEBw8PBxEAAAQHDw8IDAAAAwgPDwAQABMIAAMPDwcA +DQAGDwEIFwAAAwcPDwAUAAEIAQgUAA8PAQcBCAMJAQgBBxYPAAAjDwEHAQgD +CQEIAQcGDwEIDwAUDwEIDwAAAw8PCAAPABYPEQABCAkPAQcSABUPAQgOAAkP +DwABCAQPEQABCAkPAQcSAAYPEQABCAkPAQcSABAPAQcPAAEHIw8BBwwAAAQH +Dw8IEQAABAcPDwgMAAADCA8PAA8AAQcVDwEHDQAGDxgAAAMHDwcAEgABCAQP +AQgSAA8PAQcBCAMJAQgBBxYPAAAjDwEHAQgDCQEIAQcGDwEIDwAUDwEIDwAA +Aw8PCAAPABUPAQgQAAEIDA8RAAEHFA8BCA4ACQ8BBw4AAQgDDwEIEAABCAwP +EQABBwQPAQgQAAEIDA8RAAEHDw8BBw8AAQcjDwEHDAAAAwcPDwASAAAECA8P +CAwAAAMIDw8ADwABBxUPAQcNAAUPAQgYAAADBw8HABEABw8BBxEADw8BBwEI +AwkBCAEHFg8AACMPAQcBCAMJAQgBBwYPAQgPABQPAQgPAAADDw8IAA8AFQ8Q +AAEIDg8QAAEIFA8BCA4ACQ8BCA4AAQcDDxAAAQgODxAAAQgEDxAAAQgODxAA +AQgPDwEHDwABByMPAQcMAAADBw8PABMAAAMPDwgADAAAAwgPDwAPAAEHFQ8B +Bw0ABQ8ZAAADBw8HABAAAQcIDxEADw8BBwEIAwkBCAEHFg8AACMPAQcBCAMJ +AQgBBwYPAQgPABQPAQgPAAADDw8IAA8AFA8BBxAADw8BBxAAFA8BCA4ACQ8P +AAMPAQcQAA8PAQcQAAMPAQcQAA8PAQcQAA8PAQcPAAEHIw8BBwwAAAMHDwcA +EwAAAw8PCAAMAAADCA8PAA8AAQgQBwUPAQcNAAQPGgAAAwcPBwAQAAkPAQcQ +AA8PAQcBCAMJAQgBBxYPAAAjDwEHAQgDCQEIAQcGDwEIDwAUDwEIDwAAAw8P +CAAPABQPAQgPAAEIEA8QAAEHEw8BCA4ACA8BCA4AAQgDDwEIDwABCBAPEAAA +BAcPDwgPAAEIEA8QAAEHDg8BBw8AAQcjDwEHDAAAAwcPCAATAAADBw8IAAwA +AAMIDw8AHwABCAUPAQcNAAMPAQcaAAADBw8HAA8AAQgJDwEHEAAPDwEHAQgD +CQEIAQcWDwAAIw8BBwEIAwkBCAEHBg8BCA8AFA8BCA8AAAMPDwgADwAUDwEI +DwABBxAPAQgPAAEHEw8BCA4ABggRAAQPAQgPAAEHEA8BCA8AAAQHDw8IDwAB +BxAPAQgPAAEHDg8BBw8AAQcjDwEHDAAAAwcPCAATAAADCA8IAAwAAAMIDw8A +HwABCAUPAQcNAAMPGwAAAwcPBwAPAAEICQ8BBxAADw8BBwEIAwkBCAEHFg8A +ACMPAQcBCAMJAQgBBwYPAQgPABQPAQgPAAADDw8IAA8AFA8QABEPAQcPAAEI +Ew8BCCQABQ8QABEPAQcPAAADCA8PABAAEQ8BBw8AAQgODwEHDwABByMPAQcM +AAEHAQ8VAAEPAQgMAAADCA8PAB8AAQgFDwEHDQAAAw8PCAAbAAADBw8HAA8A +AQgJDwEHEAAPDwEHAQgDCQEIAQcWDwAAIw8BBwEIAwkBCAEHBg8BCA8AFA8B +CA8AAAMPDwgADwAUDxAAEg8PAAEIEw8BCCMABg8QABIPDwAAAwgPDwAQABIP +DwABCA4PAQcPAAEHIw8BBwwAAQcBDwoAAQcKAAEPAQgMAAADCA8PAB8AAQgF +DwEHDQABDwEPHAAAAwcPBwAPAAEICQ8BBxAADw8BBwEIAwkBCAEHFg8AACMP +AQcBCAMJAQgBBwYPAQgPABQPAQgPAAADDw8IAA8AFA8QABIPDwABCBMPAQgh +AAEIBw8QABIPDwAAAwgPDwAQABIPDwABCA4PAQcPAAEHIw8BBwwAAQcBBwoA +AQcKAAEHAQgMAAADCA8PAB8AAQgFDwEHDQABDwEIDgABCA0AAAMHDwcADwAB +CAkPAQcQAA8PAQcBCAMJAQgBBxYPAAAjDwEHAQgDCQEIAQcGDwEIDwAUDwEI +DwAAAw8PCAAPABQPEAASDw8AAQgTDwEIHwABCAkPEAASDw8AAAMIDw8AEAAS +Dw8AAQgODwEHDwABByMPAQcMAAEHAQgKAAEPCgABCAEIDAAAAwgPDwAfAAEI +BQ8BBw0AAQ8OAAEPAQgNAAADBw8HAA8AAQgJDwEHEAAPDwEHAQgDCQEIAQcW +DwAAIw8BBwEIAwkBCAEHBg8BCA8AFA8BCA8AAAMPDwgADwAUDxAAAQcRDw8A +AQgTDwEIHwABCAkPEAABBxEPDwAAAwgPDwAQAAEHEQ8PAAEIDg8BBw8AAQcj +DwEHDAABBwoAAAMIDwgACQABCAEIDAAAAwgPDwAfAAEIBQ8BBxsAAAMIDwgA +DQAAAwcPBwAPAAEICQ8BBxAADw8BBwEIAwkBCAEHFg8AACMPAQcBCAMJAQgB +BwYPAQgPABQPAQgPAAADDw8IAA8AFA8QAAEIEA8BBw8AAQgTDwEIIQABCAcP +EAABCBAPAQcPAAADCA8PABAAAQgQDwEHDwABCA4PAQcPAAEHIw8BBwwAAQcK +AAADCA8IAAoAAQgMAAADCA8PAB8AAQgFDwEHGwAAAw8PCAANAAADBw8HAA8A +AQgJDwEHEAAPDwEHAQgDCQEIAQcWDwAAIw8BBwEIAwkBCAEHBg8BCA8AFA8B +CA8AAAMPDwgADwAUDwEIEAAQDwEIDwABBxMPAQgiAAEIBg8BCBAAEA8BCA8A +AAQHDw8IEAAQDwEIDwABBw4PAQcPAAEHIw8BBwwAAQgKAAADBw8HABcAAAMI +Dw8AHwABCAUPAQcaAAAECA8PCA0AAAMHDwcADwABCAkPAQcQAA8PAQcBCAMJ +AQgBBxYPAAAjDwEHAQgDCQEIAQcGDwEIDwAUDwEIDwAAAw8PCAAPABQPAQgQ +AAEHDw8QAAEHEw8BCCMAAQcFDwEIEAABBw8PEAAABAcPDwgQAAEHDw8QAAEH +Dg8BBw8AAQcjDwEHFwADDxcAAAMIDw8AHwABCAUPAQcaAAMPAQgNAAADBw8H +AA8AAQgJDwEHEAAPDwEHAQgDCQEIAQcWDwAAIw8BBwEIAwkBCAEHBg8BCA8A +FA8BCA8AAAMPDwgADwAUDwEHEQAODwEIEAAUDwEIDgAGCBAABQ8BBxEADg8B +CBAAAw8BBxEADg8BCBAADw8BBw8AAQcjDwEHFwADDxcAAAMIDw8ADwABBxUP +AQcZAAEHAw8BCA0AAAMHDwcADwABCAkPAQcQAA8PAQcBCAMJAQgBBxYPAAAj +DwEHAQgDCQEIAQcGDwEIDwAUDwEIDwAAAw8PCAAPABUPEQABCAwPAQcQAAEI +FA8BCA4ABw8BCA4AAQcFDxEAAQgMDwEHEAABCAQPEQABCAwPAQcQAAEIDw8B +Bw8AAQcjDwEHFwADDwEIFgAAAwgPDwAPAAEHFQ8BBxkABA8BCA0AAAMHDwcA +DwABCAkPAQcQAA8PAQcBCAMJAQgBBxYPAAAjDwEHAQgDCQEIAQcGDwEIDwAU +DwEIDwAAAw8PCAAPABUPAQgRAAEICg8BCBEAAQcUDwEIDgAIDw4AAQgFDwEI +EQABCAoPAQgRAAEHBA8BCBEAAQgKDwEIEQABBw8PAQcPAAEHIw8BBxYAAQgD +DwEHFgAAAwgPDwAPAAEHFQ8BBxgAAQcEDwEIDQAAAwcPBwAPAAEICQ8BBxAA +Dw8BBwEIAwkBCAEHFg8AACMPAQcBCAMJAQgBBwYPAQgPABQPAQgPAAADDw8I +AA8AFg8TAAEHBg8BCBMAFQ8BCA4ABw8BBw4AAQgGDxMAAQcGDwEIEwAGDxMA +AQcGDwEIEwAQDwEHDwABByMPAQcWAAEIBA8WAAADCA8PAA8AAQcVDwEHFwAB +CAUPAQgNAAADBw8HAA8AAQgJDwEHEAAPDwEHAQgDCQEIAQcWDwAAIw8BBwEI +AwkBCAEHBg8BCA8AFA8BCA8AAAMPDwgADwAWDwEIFAAECBQAAQcVDwEIDgAH +DwEIDwAGDwEIFAAECBQAAQcGDwEIFAAECBQAAQcFDwsHAQgPAAEIDAcXDwEH +FgABBwQPFgAAAwgPDwAQABMIAAMPDwcAFwAGDwEIDQAAAwcPBwAPAAEICQ8B +BxAADw8BBwEIAwkBCAEHFg8AACMPAQcBCAMJAQgBBwYPAQgPABQPAQgPAAAD +Dw8IAA8AFw8rAAEIFg8BCA4ABgcRAAcPKwABCAgPKwABCAUPAQcnAAEIFw8B +BxYAAQcEDwEIFQAAAwgPDwAjAAADDw8HABYAAQgGDwEIDQAAAwcPBwAPAAEI +CQ8BBxAADw8BBwEIAwkBCAEHFg8AACMPAQcBCAMJAQgBBwYPAQgPABQPAQgP +AAADDw8IAA8AGA8qABcPAQgkAAEICA8qAAoPKgAGDwEHJwABCBcPAQcWAAUP +AQcVAAADCA8PACMAAAMPDwcAFgAHDwEIDQAAAwcPBwAPAAEICQ8BBxAADw8B +BwEIAwkBCAEHFg8AACMPAQcBCAMJAQgBBwYPAQgPABQPAQgPAAADDw8IAA8A +GA8BBygAGA8BCCQAAQgIDwEHKAALDwEHKAAHDwEHJwABCBcPAQcWAAYPFQAA +AwgPDwAjAAADDw8HABUAAQgHDwEIDQAAAwcPBwAPAAEICQ8BBxAADw8BBwEI +AwkBCAEHFg8AACMPAQcBCAMJAQgBBwYPAQgPABQPAQgPAAADDw8IAA8AGQ8B +ByYAAQcYDwEIJAAKDwEHJgABBwwPAQcmAAEHBw8BBycAAQgXDwEHFQABCAYP +FQAAAwgPDwAjAAADDw8HABUACA8BCA0AAAMHDwcADwABCAkPAQcQAA8PAQcB +CAMJAQgBBxYPAAAjDwEHAQgDCQEIAQcGDwEIDwAUDwEIDwAAAw8PCAAPABoP +AQckAAEHGQ8BCCMAAQgLDwEHJAABBw4PAQckAAEHCA8BBycAAQgXDwEHFQAB +CAYPAQgUAAADCA8PACMAAAMPDwcAFAABBwgPAQgNAAADBw8HAA8AAQgJDwEH +EAAPDwEHAQgDCQEIAQcWDwAAIw8BBwEIAwkBCAEHBg8BCA8AFA8BCA8AAAMP +DwgADwAbDwEHIgAbDwEIIwANDwEHIgARDwEHIgAKDwEHJwABCBcPAQcVAAEH +Bg8BCBQAAAMIDw8AIwAAAw8PBwAUAAkPAQgNAAADBw8HAA8AAQgJDwEHEAAP +DwEHAQgDCQEIAQcWDwAAIw8BBwEIAwkBCAEHBg8BCA8AFA8BCA8AAAMPDwgA +DwAdDwEIHgABCBwPAQgiABAPAQgeAAEIFA8BCB4AAQgLDwEHJwABCBcPAQcV +AAEHBg8BBxQAAAMIDw8AIwAAAw8PBwATAAEHCQ8BCA0AAAMHDwcADwABCAkP +AQcQAA8PAQcBCAMJAQgBBxYPAAAjDwEHAQgDCQEIAQcGDwEIDwAUDwEIDwAA +Aw8PCAAPAB4PAQcbAAEIHg8BCCAAAQgSDwEHGwABCBcPAQcbAAEIDQ8BBycA +AQgXDwEHFQAIDxQAAAMIDw8AIwAAAw8PBwASAAEICg8BCA0AAAMHDwcADwAB +CAkPAQcQAA8PAQcBCAMJAQgBBxYPAAAjDwEHAQgDCQEIAQcGDwEIDwAUDwEI +DwAAAw8PCAAPACEPAQgWAAEIIA8BCB8AAQcWDwEIFgABCBwPAQgWAAEIDw8B +BycAAQgXDwEHFQAIDxQAAAMIDw8AIwAAAw8PBwASAAsPAQgNAAADBw8HAA8A +AQgJDwEHEAAPDwEHAQgDCQEIAQcWDwAAIw8BBwEIAwkBCAEHBg8BCA8AFA8B +CA8AAAMPDwgADwAjDwADBwgIAA4AAAMICAcAIg8BCBsAAQgBCBsPAAMHCAgA +DgAAAwgIBwAgDwADBwgIAA4AAAMICAcAEQ8BBycAAQgXDwEHFAABCAgPAQgT +AAADCA8PACMAAAMPDwcAEQABCAsPAQgNAAADBw8HAA8AAQgJDwEHEAAPDwEH +AQgDCQEIAQcWDwAAIw8BBwEIAwkBCAEHdA8KB2UPCgcqDwoH/w8ZDwEHAQgD +CQEIAQcWDwAAIw8BBwEIAwkAAwgHBwD/D/8POQ8AAwcHCAADCQEIAQcWDwAA +Iw8BBwEIBAkBCAEH/w//DzkPAQcBCAQJAQgBBxYPAAAjDwEHAQgECQEIAQf/ +D/8POQ8BBwEIBAkBCAEHFg8AACMPAQcBCAQJAAMIBwcA/w//DzcPAAMHBwgA +BAkBCAEHFg8AACMPAAMHBwgABAkBCAEH/w//DzcPAQcBCAQJAAMIBwcAFg8A +ACQPAQcBCAUJAwf/D/8PMw8DBwEIBAkBCAEHFw8AACQPAQcBCAUJAQgBCAQH +/w//Dy0PBAcBCAEIBQkBCAEHFw8AACQPAAMHBwgABgkDCP8H/wcvBwMIBgkA +AwgHBwAXDwAAJQ8BBwEICQn/CP8ILwgJCQEIAQcYDwAAJQ8AAwcHCAD/Cf8J +PwkAAwgHBwAYDwAAJg8ABAcHCAj/Cf8JOwkABAgIBwcZDwAAJw8DBwMI/wn/ +CTUJAwgDBxoPAAApDwQH/wj/CDUIBAccDwAALA//B/8HNwcfDwAA/w//D4IP +AAD/D/8Pgg8AAP8P/w+CDwAA/w//D4IPAAD/D/8Pgg8AAP8P/w+CDwAA/w// +D4IPAAD/D/8Pgg8AAP8P/w+CDwAA/w//D4IPAAD/D/8Pgg8AAP8P/w+CDwAA +/w//D4IPAAD/D/8Pgg8AAP8P/w+CDwAA/w//D4IPAAD/D/8Pgg8AAP8P/w+C +DwAA/w//D4IPAAD/D/8Pgg8AAP8P/w+CDwAA/w//D4IPAAE= +==== diff --git a/images/inside_16c.dat b/images/inside_16c.dat new file mode 100644 index 0000000..70e4906 --- /dev/null +++ b/images/inside_16c.dat @@ -0,0 +1,14 @@ +# Lilo boot menu background configuration (Lilo 23) +# +# color palette: 0 black, 3 magenta, 7 pink, +# 8 middle grey, 10 bright grey, 13 white +# +# bmp-table = ,;,,, +# bmp-colors = ,,;,, +# bmp-timer = ,;,, + +bitmap = inside.bmp + +bmp-table = 21,284p;2,7,175p,4 +bmp-colors = 14,11,;15,9,0 +bmp-timer = 73,29;12,8,0 diff --git a/images/inside_16c.uu b/images/inside_16c.uu new file mode 100644 index 0000000..1be414f --- /dev/null +++ b/images/inside_16c.uu @@ -0,0 +1,503 @@ +begin-base64 644 inside.bmp +Qk0CWAAAAAAAADYEAAAoAAAAgAIAAOABAAABAAgAAQAAAMxTAAAgHAAAIBwA +AAABAAAAAQAAAgIEAA0TGAAOV3kAE5rOAK1CQwD/TlAAg56rAPOrrAAIsvEA +CMXtAAvC8gBn2vEA5ObvAPDo7QDe9/cA+/n7AAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8O +/w6CDgAA/w7/DoIOAAD/Dv8Ogg4AAP8O/w6CDgAA/w7/DoIOAAD/Dv8Ogg4A +AP8O/w6CDgAA/w7/DoIOAAD/Dv8Ogg4AAP8O/w6CDgAA/w7/DoIOAAD/Dv8O +gg4AAP8O/w5DDiYAGQ4AAP8O/w5BDgEAAQAmCAEAAQAXDgAA/w7/DkAOAQAq +CAEAFg4AAP8O/w4/DgEALAgBABUOAAD/Dv8OPg4BAC4IAQAUDgAA/w7/Dj4O +AQAuCAEAFA4AAP8O/w49DgEAMAgBABMOAAD/Dv8OPQ4BADAIAQATDgAA/w7/ +Dj0OAQAwCAEAEw4AAP8O/w49DgEAMAgBABMOAAD/Dv8OPQ4BADAIAQATDgAA +/w7/Dj0OAQAwCAEAEw4AAP8O/w49DgEAMAgBABMOAAD/Dv8OPQ4BADAIAQAT +DgAA/w7/Dj0OAQAwCAEAEw4AAP8O/w49DgEAMAgBABMOAAD/Dv8OPQ4BADAI +AQATDgAA/w7/Dj0OAQAwCAEAEw4AAP8O/w49DgEAMAgBABMOAAD/Dv8OPg4B +AC4IAQAUDgAA/w7/Dj4OAQAuCAEAFA4AAP8O/w4/DgEALAgBABUOAAD/Dv8O +QA4BACoIAQAWDgAA/w7/DkEOAQABACYIAQABABcOAAD/Dv8OQw4mABkOAAD/ +Dv8Ogg4AAP8O/w6CDgAA/w7/DoIOAAD/Dv8Ogg4AAP8O/w6CDgAA/w7/DoIO +AAD/Dv8Ogg4AAP8OGg4DAP8OZQ4AAP8OGw4BACAOAQD/DkUOAAD/DhsOAQAh +DgEA/w5EDgAApg4DAAMOAwABDgMAAAMOAAAADg4BAAEAAw4FAAEOAQ4DAA8O +AQABAAMOAwAIDgMAAQ4BDgMAAQ4DAAADDgAAAAMOAwABDgEOAwAIDgMAAw4A +BAAOAAADDgADAAAOAAMAAQ4BDgMAAQ4BDgMAAQ4DAAEOAwAABA4OAAAPDgMA +AQ4BDgMADw4BAAEAAw4DAAgOAwAEDgMABA4DAAMOAQABAAYOAwAEDgMAAQ4B +DgMAAQ4BDgMABA4DAAMOAAMAAA4AAwABDgEOAwABDgEOAwABDgMAvw4AAKcO +AQAFDgEAAw4ABgAODgAOAA0OAAUADgAOAAADDgAEAA4OAAMOAQAODgAFAA4A +DgAAAw4BAAYOAQADDgAEAA4OAAMOAAgADg4ADgAOAAMOAAQADg4ACA4BAAMO +ABIADg4AAA4OAA4OAA4ADgAODgADDgAEAA4OAAMOAAcADg4ADg4AABEOAQAD +DgAEAA4OABAOAAUADgAOAAADDgEABg4BAAMOAAQADg4AAw4ABAAODgADDgAG +AA4OAA4ABQ4ABwAODgAODgAAAw4ABwAODgAODgAAAw4ABAAODgADDgALAA4O +AA4ADgAODgAAAw4ABAAODgADDgEAwA4AAKcOAQAFDgEAAw4ABAAODgAMDgAE +AA4OAAMOAQADDgAEAA4OAAMOAAQADg4ACw4BAAMOAQADDgEABg4BAAYOAQAD +DgAEAA4OAAMOAQAGDgEACA4BAAMOAAQADg4AAw4ABAAODgADDgAEAA4OAAMO +AAQADg4AAw4BAAUOAQAODgAEAA4OAAYOAQAEDgEACw4BAAMOAQADDgEABg4B +AAMOAAQADg4AAw4ABAAODgADDgAEAA4OAAoOAAQADg4ABg4ABAAODgAGDgEA +Bg4BAAMOAAQADg4AAw4ABAAODgADDgEAwA4AAKcOAQAFDgEAAw4ABAAODgAK +DgEAAQADDgEABA4EAAADDg4AAAMOAQADDgEAAQAJDgEAAw4BAAMOAQAGDgEA +Bg4BAAMOAAQADg4AAw4BAAYOAQAIDgEAAw4ABAAODgADDgAEAA4OAAMOAAQA +Dg4AAw4ABAAODgADDgEAAw4BAAEADQ4BAAEAAw4BAAYOAQAFDgEAAQAJDgEA +Aw4BAAMOAQAGDgEAAw4ABAAODgADDgAEAA4OAAMOAAQADg4ACA4BAAEAAw4B +AAYOAAQADg4ABg4BAAYOAQADDgAEAA4OAAMOAAQADg4AAw4BAMAOAACnDgEA +BQ4BAAMOAAQADg4ACA4BAAEABQ4BAAcOAAQADg4AAw4BAAUOAQABAAcOAQAD +DgEAAw4BAAYOBQAAAw4OAAADDgAEAA4OAAMOBQAAAw4OAAAIDgEAAw4ABAAO +DgADDgAEAA4OAAMOAAQADg4AAw4ABAAODgADDgAEAA4OAA0OAQABAAUOAQAG +DgEABw4BAAEABw4BAAMOAQADDgEABg4BAAMOAAQADg4AAw4ABAAODgADDgAE +AA4OAAcOAQAFDgUAAAUODgAODgAFAAADDg4AAAYOAQADDgAEAA4OAAMOAAQA +Dg4AAw4BAMAOAACnDgcAAAcODgAADg4AAAcOAQAHDgEAAw4BAAMOAAgADg4A +AA4OAAcOAQAGDgEAAw4BAAMOAQAGDgEAAw4BAAEOAwAABg4OAA4OAAMOAQAD +DgEAAQ4DAAcOAQADDgEAAQ4DAAANDg4ADg4ADg4AAA4OAAADDgEAAQ4DAAAJ +Dg4ADg4ADg4AAAkOAQAHDgEAAw4BAAEOAwAIDgEABg4BAAMOAQADDgEABg4A +CAAADg4ADg4AAw4ABAAODgADDgAEAA4OAAcOAAcADg4ADg4AAAMOAAcADg4A +Dg4AAAMOAAQADg4AAw4ACwAODgAODgAADg4AAAMOAQABDgMAAAMODgAAwA4A +AKcOAQAFDgEAAw4BAAEOBAAGDgEAAQAEDgQAAQ4BDgMAAw4ABAAOAAAGDgEA +AQAGDgQAAQ4BDgMACA4DAAMOAAYADgAADg4EAAEOAQ4DAAMOAAQADgAABg4D +AAMOAAYADgAADg4EAAEOAQADDgMAAw4ABAAOAAAEDgMACg4BAAEABg4DAAMO +AAQADgAABA4BAAEABg4EAAEOAQ4DAAcOAAQADgAABA4DAAQOAwABDgEOBAAG +DgMAAw4DAAMOAQADDgMABA4DAAEOAQ4EAAEOAQADDgMAAw4ABAAOAADBDgAA +pw4BAAUOAQAGDgEACg4BAAEAAw4BAAoOAQAHDgEAAQAJDgEAHA4BACEOAQAk +DgEAAQAQDgEAAQAJDgEADg4BABQOAQAUDgEAEA4BANIOAACnDgEABQ4BAAYO +AQAMDgAEAA4OAAoOAQAGDgEACw4BABwOAQAhDgEAJg4BAA4OAQALDgEADg4B +ABQOAQAUDgEAEA4BANIOAACmDgMAAw4DAB8OAQABAKEOAQABACgOAQABAOMO +AACxDgEAHQ4BAFUOAQBMDgEAKQ4BABQOAQDODgAA/w7/DoIOAAD/Dv8Ogg4A +AP8O/w6CDgAA/w7/DoIOAAD/Dv8Ogg4AAP8O/w6CDgAA/w7/DoIOAAD/Dv8O +gg4AAP8O/w6CDgAA/w7/DoIOAAD/Dv8Ogg4AAP8O/w6CDgAA/w7/DoIOAAD/ +Dv8Ogg4AAP8O/w6CDgAA/w7/DoIOAAD/Dv8Ogg4AAP8O/w6CDgAAnQ6UABsO +lACgDgAAmw4BAAEAlAsBAAEAFw4BAAEAlAsBAAEAng4AAJoOAQCYCwEAFQ4B +AJgLAQCdDgAAmQ4BAJoLAQATDgEAmgsBAJwOAACYDgEAnAsBABEOAQCcCwEA +mw4AAJgOAQCcCwEAEQ4BAJwLAQCbDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACX +DgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4L +AQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4B +AJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEA +mg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACX +DgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4L +AQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4B +AJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEA +mg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACX +DgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4L +AQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4B +AJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEA +mg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACX +DgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4L +AQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4B +AJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEA +mg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACX +DgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4L +AQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4B +AJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEA +mg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACX +DgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4L +AQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4B +AJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEA +mg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACX +DgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4L +AQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4B +AJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEA +mg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACX +DgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4L +AQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4B +AJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEA +mg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACX +DgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4L +AQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4B +AJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEA +mg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACX +DgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4L +AQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4B +AJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEA +mg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACX +DgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4L +AQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4B +AJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEA +mg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACX +DgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4L +AQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4B +AJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEA +mg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACX +DgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4BAJ4LAQCaDgAAlw4BAJ4L +AQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEAmg4AAJcOAQCeCwEADw4B +AJ4LAQCaDgAAlw4BAJ4LAQAPDgEAngsBAJoOAACXDgEAngsBAA8OAQCeCwEA +mg4AAJgOAQCcCwEAEQ4BAJwLAQCbDgAAmA4BAJwLAQARDgEAnAsBAJsOAACZ +DgEAmgsBABMOAQCaCwEAnA4AAJoOAQCYCwEAFQ4BAJgLAQCdDgAAmw4BAAEA +lAsBAAEAFw4BAAEAlAsBAAEAng4AAJ0OlAAbDpQAoA4AAP8O/w6CDgAA/w7/ +DoIOAAD/Dv8Ogg4AAP8O/w6CDgAA/w7/DoIOAAD/Dv8Ogg4AAP8O/w6CDgAA +/w7/DoIOAAD/Dv8Ogg4AAP8O/w6CDgAA/w7/DoIOAAD/Dv8Ogg4AAP8O/w6C +DgAA/w7/DoIOAAD/Dv8Ogg4AAP8O/w6CDgAA/w7/DoIOAAD/DqwOAAQMBQUH +Bg4ABAcFBQ3HDgAA/w6sDgAFDAUFBw0ABQ4ABQcFBQcNAAUOAAMMDQwAvg4A +AP8OrA4BDAQFAQcFDgENAwcBDAQOAAMHBQcAvg4AAP8OrA4BDQQFAQcBDAUO +AAUNBQUHDAADDgAEBwUHDb0OAAD/DqwOAQwFBQQHAw4DBQAFBwwODg0ABAcB +DLsOAAD/DqwOAQwJBQAEBw4OBwMFAQcBDAMOAAQHBQUHuw4AAP8OrA4BDAEH +CAUABQcHDQcHAAMFAAoHDA4ODAcFBwcMmQ4DDB0OAAD/Dq4OAQcJBQAEBw4M +BwMFAAkHDA4ODAcFBQcAmA4ABAwHBQcdDgAA/w6vDgEHCQUAAw0ODAAEBQAI +BwwODgwHBQeXDgAFDAcFBQcAHQ4AAP8OsA4BBwEHBwUABQcHDA0HAAMFAAcH +DA4ODAcNAJYOAAYNBwUHBwwdDgAA/w6xDgEHCQUABAwODQcDBQEHAQyaDgAE +BwUFDB8OAAD/DrIOAQcIBQAFBw0MDQcAAwUBBwEMiw4BDQEMCg4BDAQHIA4A +AP8Osw4BDQkFAAQHDgwHAwUBBwEMiQ4ABAwHBQcIDgAFDAcFBw0AIQ4AAP8O +tA4BBwgFAAQHDA4HBAUBBwEMBg4BDYAOAAUMBwUFBwAIDgAEBwUFByIOAAD/ +DrQOAQwBBwgFAQcBBwYFAQcBDAQOAwd+DgEMAQcDBQEHBg4BDAEHAwUBByIO +AAD/DrYOAQcQBQEHAQwDDgAEBwUFDX0OAQcEBQENBg4BBwQFAQciDgAA/w62 +DgEMAQcQBQAFBwwODg0ABAcBDHcOAQ0DBwMFAQcBDQUOAQwBBwQFAQcBDCIO +AAD/DrgOAQcQBQEHAQwDDgAEBwUFB3YOAQ0GBQEHAQ0GDgEHBAUBByQOAAD/ +DrkOAQcQBQAKBw0NDg0HBQcMDHMOAQ0BBwcFAQcBDAQOAQcEBQEHJQ4AAP8O +uQ4BDAEHEAUEBwAFDQ0HBQcAcg4BBwoFAAUHDA4OBwAEBQEHAQwlDgAA/w67 +DgEHEgUABwcMDgcFBQ0AcA4BDAEHCwUAAwwODQAEBQEHJw4AAP8Ouw4BDAEH +EgUAAwcMDQAEBwEMbQ4BBwEHCgUABAcHDQcEBQEHAQwnDgAA/w5EDgMMdg4B +BxMFAAYNDgwFBQdsDgENCwUABAcMDgcEBQEHKQ4AAMEOBAYwDgEMAwYBDBAO +AAMMBgwAMw4BBgEGBQIBBgEMNA4EBjAOAQwLBgEHEgUAAwcMDQADBwEMAQwi +DhEGNg4BDQEHCgUABAcHDg0EBQEHAQwpDgAAwQ4DAgEGMA4BDAMCAQYPDgAE +DAICDDEOAQwKAgEGMw4DAgEGMA4BDAwCAQcSBQAHBwcODQcFBwAiDgEGEAI1 +DgENAQcKBQAEBwwOBwQFAQcBDCoOAADBDgMCAQYwDgEMAwIBBg4OAQwDAgEM +MA4BDAwCAQYyDgMCAQYwDgEMDQIBBxIFAAcHDA4HBQcNACEOAQYQAjQOAQwB +BwsFAAMHDg0ABAUBBywOAADBDgMCAQYwDgEMAwIBBg0OAQwBBAMCAQwvDgEM +BQIEBgUCAQYxDgMCAQYwDgEMDQIAAwYHBwARBQAEBwcNDAMHAQwfDgEGEAIz +DgEHAQcMBQMHAwUBBwEMLA4AAMEOAwIBBjAOAQwDAgEGDQ4BBgQCAQwvDgEG +BAIBBgQOAQwBBAMCAQQxDgMCAQYwDgEMAwIBBgQOAwwDBgECAQcTBQAGDQ4M +BQUMHw4BBgMCPw4BDAEHEgUBBy4OAADBDgMCAQYwDgEMAwIBBgwOAQYFAgEM +Lg4BBgQCAQYGDgEMBAIBDDAOAwIBBjAOAQwDAgEGCg4AAwwGBwASBQADBw0N +AAQHAQwdDgEGAwI4DgADDA0NAAMOAQwBBxMFAQwuDgAAMw4BBgEGAwEBAgEG +Lg4BBgEGBgEBBgEGTw4DAgEGMA4BDAMCAQYLDgEGBgIBDC4OAAUMBAICBgAI +DgEGAwIBBjAOAwIBBjAOAQwDAgEGDA4BDAEHEwUABgcODQcFBx0OAQYDAjgO +AAYHBQcODgwVBQEHLg4AADAOAQYJAgADAQIGACkOAAMGAQEACgIBBk0OAwIB +BjAOAQwDAgEGCg4BBgcCAQwwDgADBgYMAAgOAQYDAgEGMA4DAgEGMA4BDAMC +AQYNDgEMAQcSBQAIBwwNBwUHDQwbDgEGAwI3DgAHDQcFBw0MBwAUBQEHAQwu +DgAALQ4BBgEGDAIAAwEBBgAnDgECAQEOAgEGSw4DAgEGMA4BDAMCAQYJDgEM +CAIBDDsOAQYDAgEGMA4DAgEGMA4BDAMCAQYODgMHEQUABAcHDQwDBxsOAQYD +AjYOAAcHBQcHDAcHABQFAQcBDC8OAAArDgEGEQIBAQEGJQ4BAgEBEAIBBkoO +AwIBBjAOAQwDAgEGCA4BDAUCAQYDAgEMOg4BDAQCAQwwDgMCAQYwDgEMAwIB +Bg8OAQIBBxIFAAcHDA4HBQUMABoOAQYDAjUOAAcNBQUHDgwHABQFAQcBDDAO +AAAnDgEGAQYVAgEBAQYjDgEGAQEFAgkDBAIBBkkOAwIBBjAOAQwDAgEGBw4B +DAUCAQwBBgMCAQw5DgEMAQYEAjEOAwIBBjAOAQwDAgEGDw4ABAYEBwcRBQEH +AQ0FBwEMGA4BBgMCMw4BDAUHAQ0BBxQFAQcBDTEOAAAjDgEGAQYJAgoDBwIA +AwEAAQAhDgYCDAMDAgEGSA4DAgEGMA4BDAMCAQYGDgEMAQQEAgADBw4GAAMC +AQw4DgEMAQYEAgEGMQ4DAgEGMA4BDAMCAQYPDgAEDAICBxMFAAYMDg0HBQcY +DgEGAwIzDgAHBwUFDA4NBwAUBQEHAQwyDgAAIA4BBgoCDwMFAgAEAQEABh0O +AwYBAQQCDwMAAwICBgBHDgMCAQYwDgEMAwIBBgYOAQYEAgAEBg4OBgMCAQw3 +DgEMAQYEAgEGMg4DAgEGMA4BDAMCAQYPDgAFDAIGBwcAEgUABgcOBwUFBxgO +AQYDAjEOAAgMDAcFBw0MBxUFAQczDgAAHA4BBgEDCAILAwUIBQMFAgEBBwAU +BgYAAQEBAQMCBgMFCAcDAQIBAkYOAwIBBjAOAQwDAgEGBQ4BBgQCAQYDDgEG +AwIBDDYOAQwFAgEEAQwyDgMCAQYwDgEMAwIBBhAOAwcAAwYNBwARBQEHAwUB +BxgOAQYDAjEOAAcHBQcMDQcHABYFAQczDgAAGA4AAwsGAwADAg8DCwgEAwQC +AQEBASAAAQEBAQMCBAMKCAcDRQ4DAgEGMA4BDAMCAQYEDgEGBAIBBgQOAQYD +AgEMNQ4BBgUCAQQBDDMOAwIBBjAOAQwDAgEGEA4ABgcFBQcPDRUFAQcYDgEG +EAIjDgAHDAcFBw4MBwAXBQEHMw4AABQOAAMLBgMAAwIQAw8IBAMEAgEBIAAA +BAEBAgIFAwwIBgMBC0MOAwIBBjAOAQwDAgEGAw4BBgQCAQYFDgEGAwIBDDQO +AQYFAgEGAQw0DgMCAQYwDgEMAwIBBhAOAAgHBQUHDQ8HBxQFAQcBDBYOAQYQ +AiEOAQwFBwENAQcXBQEHAQwzDgAAEg4BCxEDFggDAwQCAQEgAAAEAQECAgQD +DggGAwEGQg4DAgEGMA4BDAMCAAQGDg4MBAIBBAEMBQ4BBgMCAQwyDgEMAQYF +AgEGNg4DAgEGMA4BDAMCAQYPDgEMAQcEBQADDQ8NABUFAQcBDBUOAQYQAiEO +AAcMBQUHDg0HABcFAQc1DgAAEQ4BCw0DGwgEAwMCAQEgAAEBAwIDAxEIBgMB +C0AOAwIBBjAOAQwDAgADBg4MAAUCAQwGDgEGAwIBDDIOAQYFAgEGNw4DAgEG +MA4BDAMCAQYPDgEGAQcEBQAFBw0PBwcAFAUBBwEMFA4BBgMCDQYgDgENAwcA +AwwMBwAXBQEHNg4AABEOAQsGAyMIAwMAAwICAQAhAAEBAwIDAxQIBQM/DgMC +AQYwDgEMAwIBBgEMBQIBDAcOAQYDAgEMMQ4BBgQCAQQBDDgOAwIBBjAOAQwD +AgEGDw4BBgEHBQUABQcHDgwHABQFAQcBDBMOAQYDAiwOAwcABA0OBwcXBQEH +Nw4AABEOAQsEAyUIAwMAAwICAQAhAAAEAQECAgMDFwgDAwEGPQ4DAgEGMA4B +DAMCAQYBBAQCAQcIDgEGAwIBDDAOAQwEAgEGAQw5DgMCAQYwDgEMAwIBBg4O +AAMMAgcABgUABAcMDgcVBQEHAQwSDgEGAwIrDgAHDAcFBwwOBwAXBQEHOA4A +ABEOAQsDAyYIAwMAAwICAQADAAAEAQECBAMGAwIBAQEBEwAABQECAgMDABkI +BAMBCzsOAwIBBjAOAQwIAgEGCQ4BBgMCAQwwDgEGBAIBDDoOAwIBBjAOAQwD +AgEGDg4ABQYCBAcHAAUFAwcWBQEHAQwRDgEGAwIqDgEMAQcDBQEHAQcWBQAD +BwcMADgOAAARDgELAwMmCAMDAAgCAQABBAYMDQgPAAYNDQwGBgEPAAAFAQIC +AwMAGwgFAzkOAwIBBjAOAQwHAgEGCg4BBgMCAQwwDgEGAwIBBjsOAwIBBjAO +AQwDAgEGDQ4BBgQCAQcBBx4FAQcRDgEGAwIpDgEMAQccBQEHOg4AABIOAwMn +CAAGAwMCAQYMEg8AAwwGAQAMAAAFAQICAwMAHggDAwELNw4DAgEGMA4BDAYC +AQYLDgEGAwIBDDAOAQYDAgEMBg4AAwwGDAAyDgMCAQYwDgEMAwIBBgwOAQYE +AgAEBA4HBx4FAQcBDA8OAQYDAigOAQ0BBxwFAQc7DgAAEg4BCwMDJAgABgkI +AwIBBxcPAQYBAQoAAAUBAgIDAwAgCAMDAQs1DgMCAQYwDgEMBQIBBgwOAQYD +AgEMMA4BBgMCAQYFDgEMAwIBBjEOAwIBBjAOAQwDAgEGCg4BDAEGBQIABQwO +DgwHAB4FAQcBDA4OAQYDAicOAQwBBxwFAQ08DgAAEw4DAyMIAAYJCQgDAgYZ +DwADDQYBAAgAAAUBAgIDAwAhCAMDAQs0DgMCAQYwDgEMBAIBBAEMDA4BBgMC +AQwwDgEGBAIBDAMOAQwBBAQCMQ4DAgEGMA4BDAMCAQYGDgAEDAwGBgYCAQYE +DgEHHwUBBwEMDQ4BBgMCJg4BDAEHHAUBBz0OAAATDgQDIQgABgoJCggDBhwP +AQ0BBgcAAAUBAgIDAwAjCAEDAQM0DgMCAQYwDgEMBAIBDA0OAQYDAgEMMA4B +DAUCAwYFAgEGMQ4DAgEGMA4BDAMCAQQDBgEECwIBBgYOAQwBBx4FAQcBDAwO +AQYDAg0GGA4BDAEHGwUAAwcHDAA9DgAAEw4BCwMDIQgABgoKCQMCDR4PAQwB +AQYAAAQCAgMDJAgBAwEDMw4DAgEGMA4BDAMCAQwODgEGAwIBDDEOAQYLAgEG +Mg4DAgEGMA4BDBECAQYBDAgOAQ0fBQEHDA4BBhACFw4BDAEHHAUBBz8OAAAT +DgELAwMgCAMKAAMDAgwAIA8BDAECBQAABAICAwMlCAEDMw4DAgEGMA4ABAwC +AgYPDgEGAwIBDDIOAQYJAgEGMw4DAgEGMA4BDA8CAQYBBgsOAQcBBx4FAQcB +DAoOAQYQAhYOAQ0BBxwFAQdADgAAFA4DAyAIAAUKCQgDBgAiDwENAQYEAAAE +AQIDAyYIMw4EBjAOAAMMBgYAEA4EBgEMMw4BBgcCAQY0DgQGMA4BDA0GAQwB +DA4OAQ0BBx4FAQcBDAkOEQYVDgEMAQccBQEHQQ4AABQOAwMgCAAICQkDAQEC +Bg0hDwAIBgEAAAECAwMmCLQOAQwDBgEMiQ4BBx8FAAQHDQ0MKw4BDAEHHAUB +B0IOAAAUDgMDHwgABAoJCAIEAAEBAQYhDwAHBgEAAQIDAwAlCAEL/w5DDgEH +IAUEBykOAQ0BBxsFAQcBB0MOAAAUDgMDHwgABAkJAwEGAAEGIA8ABwwGAQEC +AwMAIwgBCwEM/w5EDgEHIwUBBwEMJw4BDAEHHAUBB0QOAAAUDgMDHggABAoK +AwEHAAEBIA8ABwwMBgECAwMAIQgBAwEL/w5GDgEMAQcjBQEHAQ0lDgENAQcd +BQEHRA4AABMOAQsDAx0IAAQKCQgCCAABAQENHw8ABwwMBwYCAwMAHggAAwoI +AwD/DkoOAQckBQENIw4BDAEHHgUBB0QOAAATDgADCwMDAB4IAAQKCQMBCAAB +ASAPAAQMDAcHAwMKCAEDAQMTCAED/w5LDgEMAQcjBQEHAQ0hDgEMAQceBQEH +AQxEDgAAEw4AAwYDAwAdCAAECgkDAgkAAQYfDwENAQwDBwMDBggJAw8IAQP/ +Dk0OAQwBByQFAQ0fDgENAQceBQEHAQ1FDgAAEw4AAwYDAwAdCAADCgkCAAkA +AQEBDB8PAQ0BDAMHAwMFCAsDDQgBA/8OUA4BByMFAQcBDB0OAQwBBx4FAQcB +DEYOAAATDgMDHAgABAoJAwEIAAEBAQYgDwENAQwDBwEDAQMFCA0DCwgBA/8O +UQ4BDAEHIwUBBwEHGw4BDAEHHgUBBwEMRw4AABMOAwMcCAADCQgCAAgAAQEB +BiEPAQ0BDAMHAQMBAwUIDgMKCAEL/w4VDgMGAQEFAAAEAQYGDDEOAQcjBQEH +AQwZDgEMAQceBQEHAQxIDgAAEw4DAxsIAAQKCQMBBwABAQEGIg8BDQEMAwcB +AwEDBAgQAwgIAQsxDgEMKwQBBgkOAQYrBAoOAQYoBAwOAQYnBAEGFw4BBgEC +DwABBAEGFA4SBgEMBw4BDAEHIwUBBwENFw4BDQEHHgUBBwENSQ4AABMOAwMb +CAADCQgCAAcAAQIBDCQPAQwDBwEDAQMECAQDAQIBAgUBAQIBAgQDAAMICAoA +BAgyDgEGKwABBgkOAQIrAAoOAQYoAAwOAQEnAAEGFQ4BBgEBEwAAAwEGDAAR +DgEGGQAAAwYOBwAjBQEHAQ0VDgENAQceBQEHAQxKDgAAEw4BCwMDGQgAAwoJ +AwAGAAADAQYMACUPAQwDBwEDAQMECAMDAQIBAQgAAQEBAgMDBQgBAzIOAQYr +AAEGCQ4BBCsACg4BBigADA4BAScAAQYTDgEGAQEYAAEGEA4BBhkAAAQGDgwH +IwUBBwEMEw4BDAEHHgUBBwEMSw4AABQOBAMBCAEIBAMSCAADCQMBAAUAAAMB +Bg0AJg8ADg0MBwcDCAgKCAgDAwIBCwAABQEDAwgKAAMIAQMyDgEGKwABBgkO +AQIrAAoOAQYoAAwOAQEnAAEGEQ4BDAECHAABBg4OAQIZAAAFBg4ODAcAIwUB +BwEHEQ4BDQEHHgUBBwENTA4AABQOAQsMAw4IAAMKCAIABQAAAwEGDQAoDwAE +DQ0MAwUIAAMDAwEADQAAAwEDCQADCgEIAQMyDgEGKwABBgkOAQIrAAoOAQYo +AAwOAQEnAAEGEA4BBgEBHgABAgEMDA4aAAEGBA4BByMFAQcBDQ8OAQwBBx4F +AQcBDE0OAAAWDgELAQsKAw0IAQoBAwUAAQIBDC0PAQMECAAECgMCAQ4AAAcC +CAoKCAoDADIOAQYrAAEGCQ4BBCsACg4BBigADA4BAScAAQYPDgEGIgABBgsO +GgABBgQOAQwBByMFAQcBDQ0OAQ0BBx8FAQdODgAAHg4BCwQDCwgAAwoDAQAD +AAADAQQMAAwPAw0fDwEDBAgAAwoIAgAQAAAGAwoKCQoLMw4JDAADBgYBABQA +AQQBBgkMCg4JDAADBgYEABQAAAMCBgYACQwKDgcMAAMGBgIAFQAAAwIGBgAH +DAwOBgwDBgEBFQAAAwQGBgAHDA4OAQYkAAEECg4RAAADAQYGAAYMBg4BDAEH +JAUBDQsOAQ0BByAFAQdODgAAIA4DAwoIAAMKCAIAAwAAAwEGDQANDwADDAwN +AB8PAQMDCAMKAQIQAAAGAQMKCQkLPw4BBhEAAQIiDgEMAQIQAAEBAQYgDgEM +AQIRAAEBAQwgDgEGAQERAAEGGA4BBhcAAAQBAgIBCwABAQgOAQwPAAEBAQwR +DgEHIwUBBwEMCQ4BDAEHIQUBB04OAAAhDgMDCggBAgMAAQEBBg8PAAMMDA0A +Hw8ABAMICAoDCQEDDQADAQAFAAIKCQsAQQ4BBg8AAQIlDgEBDwABDCMOAQYP +AAEBJA4BAQ8AAQYZDgEBEgAAAwEGDAAHDgADDAYEAAgAAQEBDAYOAQYOAAEC +Ew4BDAEHIwUBBwENBw4BDQEHIAUAAwcHDABODgAAIQ4AAwsDAwAJCAECAwAB +AQEMEA8BDAEMIA8BCgEIBQkBAwEBDQAEAQEDRA4BAg4AJg4BDA4AAQYlDgEC +DgABDCQOAQwOAAEBGQ4BBBEAAQIBBg4OAQYBAQYAAQEBDAUOAQYNAAECFg4B +ByMFAQcBDAUOAQwBByEFAQdQDgAAIg4BAwEDCAgBAgMAAQIBDBEPAAMMDA0A +Hw8AAw4ICAADCgADCAMBAA0ABAEBAAEGQw4BBg0AAQEnDgEBDQABBiUOAQYN +AAECJg4BAg0AAQYYDgEMEAABAQEGEg4BBgEBBgABBgQOAQYNAAEMFg4BDAEH +IwUBBwEMAw4BDQEHIAUBBwEHUQ4AACIOAQsBAwcIAQIDAAECAQwSDwEMAQwh +DwEOBAwAAwYBAQANAAAGAQICAQAGRA4NAAEEJw4BBg0AJw4NAAEGJg4BBg0A +AQwYDgECDwABARYOAQIGAAEMAw4BBgwAAQIZDgEHIwUABQcMDgwHACEFAQxS +DgAAIw4BAgEDBQgBAgMAAQIBDBMPAAMMDA0AJQ8ABAcAAQEMAAAGAQYCAAAG +RA4BAQwAAQQnDgEGDQAnDg0AAQYmDgEMDQAYDgEMDwABAhgOAQYFAAAFAQwO +DgIADAABBhkOAQ0kBQADBw0HACEFAQdTDgAAIg4ABAYAAQIDAwECAwABAQEG +FA8AAwwMDQAlDwAFDQEAAQEACQAABAEBAgEEAEQOAQEMAAEEJw4BBg0AJw4N +AAEGJg4BDA0AGA4BBg4AAQEaDgEGBQAABAEMDgEMAAEMGQ4BDSUFAQcgBQEH +AQ1UDgAAIg4KAAADAQEGABQPAAMMDA0AJg8AAwEAAAAEAQEAAQAGAQYARA4B +AQwAAQQnDgEGDQAnDg0AAQYmDgEMDQAYDgEBDgABDBsOAQYFAAADAQ4BAAwA +Gg4BDUYFAQdVDgAAIg4JAAAEAQEABhQPAAMMDA0AJg8BBAQAAwEBAAMBCQAB +BkMOAQEMAAEEJw4BBg0AJw4NAAEGJg4BDA0AFw4BDA4AAQYdDgEGBQABAQ0A +Gw4BDQEHQgUBBwEHVg4AACIOCAAABQECAAAGABQPAAMMDA0AJg8BBgUAAQEB +AQ0AAQZDDgEBDAABBCcOAQYNACcODQABBiYOAQwNABcOAQYNAAEBHw4BAhIA +HA4BDAEHQQUBDVcOAAAiDgcAAAYBAgIAAAYUDwADDAwNACYPAQYGAAEBDQAB +BkMOAQEMAAEEJw4BBg0AJw4NAAEGJg4BDA0AFw4BAg0AAQYgDgEBEQAdDgEN +AQc/BQEHWA4AACIOAQEFAAAHAQEEAQAABgAUDwADDAwNACYPAQYGAAEBDQAB +BkMOAQEMAAEEJw4BBg0AJw4NAAEGJg4BDA0AFw4NAAEBIQ4BBhEAHg4BDAEH +PAUBBwENWQ4AACIOAQYFAAAHAQECAQAABgAUDwADDAwNACYPAQYGAAEBAQEM +AAEGQw4BAQwAAQQnDgEGDQAnDg0AAQYmDgEMDQAWDgEMDQABBiIOAQQQAB8O +AQwBBzsFAQdaDgAAIg4BBgYAAAYBAgEAAAYUDwADDAwNACYPAQYHAAEBDAAB +BkMOAQEMAAEEJw4BBg0AJw4NAAEGJg4BDA0AFg4BBg0AAQYiDgEMEAAgDgEN +AQc6BQEHWg4AACMOBgABAQECAwABAgENEw8AAw0MDQAmDwEGBwABAQwAAQZD +DgEBDAABBCcOAQYNACcODQABBiYOAQwNABYOAQYNACQOAQIPACEOAQwBBzkF +AQdaDgAAIw4BBgYAAQIDAAECAQ0TDwADDQwNACYPAQYHAAEBAQELAAEGQw4B +AQwAAQQnDgEGDQAnDg0AAQYmDgEMDQAWDgEGDAABASQOAQwPACIOAQ0BBzcF +AQcBDVoOAAAkDgEBBQABAgMAAQEBDRMPAAMNDA0AJg8BBgcAAQEBAQsAAQZD +DgEBDAABBCcOAQYNACcODQABBiYOAQwNABYOAQIMAAECJQ4BAQ4AIw4BDAEH +NQUBBwEMWw4AACQOAQYFAAECAwABAQEMEw8AAw0MDQAmDwEGBwABAQEBCwAB +BkMOAQEMAAEEJw4BBg0AJw4NAAEGJg4BDA0AFg4BAQwAAQYlDgEGDgAkDgEN +AQczBQEHAQxcDgAAJQ4BAQQAAQEEAAEGEw8AAw0MDQAmDwEGCAABAQsARA4B +AQwAAQQnDgEGDQAnDg0AAQYmDgEMDQAWDg0AAQYlDgEMDgAlDgENAQcxBQEH +AQxdDgAAJg4EAAEBBAABBhMPAAMNDA0AJg8BAggAAQELAEQOAQEMAAEEJw4B +Bg0AJw4NAAEGJg4BDA0AFg4NAAEGJg4BAQ0AJg4BDAEHLwUBBwEMXg4AACYO +AQYDAAEBAQEDAAEBAQ0SDwADDQwNACYPAQIIAAECCgABAUQOAQEMAAEEJw4B +Bg0AJw4NAAEGJg4BDA0AFg4NAAEGJg4BBg0AJw4BDQEHLQUBBwEMXw4AACcO +BAABAgQAAQwSDwADDQwNACYPAQEIAAECCgABBkQOAQEMAAEEJw4BBg0AJw4N +AAEGJg4BDA0AFg4NAAEGJg4BBg0AKA4BDAEHKwUBBwEMYA4AACcOAQYDAAEC +BAABBhMPAQwBDSYPAQEIAAECCgABBkQOAQEMAAEEJw4BBg0AJw4NAAEGJg4B +DA0AFg4NAAEGJg4BBg0AKQ4BDQEHKgUBDWEOAAAoDgMAAQEBAQMAAQEBDRIP +AQ0BDSUPAQwJAAECAQEJAEUOAQEMAAEEJw4BBg0AJw4NAAEGJg4BDA0AFg4N +AAEGJg4BDA0AKg4BDQEHKQUBDGEOAAAoDgEGAwABAgMAAQEBBhIPAQ0BDCUP +AQcJAAECCgBFDgEBDAABBCcOAQYNACcODQABBiYOAQwNABYODQABBicODQAr +DgEMAQcoBQENYQ4AACgOAQYDAAECAQEDAAEBAQ0RDwENAQwlDwEGCAABAQEB +CQABBkUOAQEMAAEEJw4BBg0AJw4NAAEGJg4BDA0AFg4NAAEGJw4NACwOAQ0B +ByUFAQcBDGIOAAApDgAFAQAAAQEAAwABAQEHEQ8BDQENJQ8BAggAAQEBAQkA +AQZFDgEBDAABBCcOAQYNACcODQABBiYOAQwNABYODQABBicODQAtDgEMAQcj +BQEHAQxjDgAAKQ4BBgMAAQIEAAECNw8BDQYBAwABAgoARg4BAQwAAQQnDgEG +DQAnDg0AAQYmDgEMDQAWDg0AAQYnDg0ALg4BByMFAQcBDWMOAAAqDgMAAQEB +AQMAAQEBDDYPAQcBAAYBAAMAAQEACQABBkYOAQEMAAEEJw4BBg0AJw4NAAEG +Jg4BDA0AFg4NAAEGJw4NAC4OAQclBQEHAQxhDgAAKg4BAQMAAQIBAQMAAQI2 +DwAKBgAAAQECAQEAAgoAAQZGDgEBDAABBCcOAQYNACcODQABBiYOAQwNABYO +DQABBicODQAtDgEMAQcmBQEHAQxgDgAAKg4BBgMAAQEBAQQAAQwxDwAHDQwM +DQEAAAAHAQkAAQFHDgEBDAABBCcOAQYNACcODQABBiYOAQwNABYODQABBicO +DQAsDgENAQcoBQEHAQxfDgAAKw4EAAEBAQEDAAECAQ0vDwAFDQwMDQcAAwAG +AQoAAQZHDgEBDAABBCcOAQYNACcODQABBiYOAQwNABYODQABBicODQArDgEM +AQcqBQEHXw4AACsOAQEDAAEBAQEEAAEGLg8ABg0MBwwPAgcAAQEBAQoASA4B +AQwAAQQnDgEGDQAnDg0AAQYmDgEMDQAWDg0AAQYnDg0AKg4BDQEHLAUBBwEM +XQ4AACsOAQYEAAECAQEDAAADAgwNACoPAAcNDQwHDA0HAAcAAQEBAQoAAQFI +DgEBDAABBCcOAQYNACcODQABBiYOAQwNABYODQABBicODQApDgENLwUBBwEM +XA4AACsOAQYEAAMBAAYAAAEGDA0oDwAIDQwMBwcMDwIGAAEBAQELAAEGSA4B +AQwAAQQnDgEGDQAnDg0AAQYmDgEMDQAWDg0AAQYnDg0AKA4BDAEHMAUBBwEM +Ww4AACwOBgABAQMAAAQBBwwNDQ8BDRcPAAkNDQwMBwcMDQYABgADAQoAAQFJ +DgEBDAABBCcOAQYNACcODQABBiYOAQwNABYODQABBicODQAnDgENAQcyBQEH +AQxaDgAALA4BAQkAAAYBBgcMDQ0KDwENAQ0VDwENAwwDBwAEDA0NAQQABAEL +AAEGSQ4BAQwAAQQnDgEGDQAnDg0AAQYmDgEMDQAWDg0AAQYnDg0AJg4BDAEH +NAUBB1oOAAAsDgEGCQAABwEBBgcMDA0ACQ8DDQ8PAw0EDAUHAAMMDQQAAwAA +BAECAQENAEoOAQEMAAEEJw4BBg0AJw4NAAEGJg4BDA0AFg4NAAEGJw4NACUO +AQ0BBzYFAQcBDFgOAAAtDgEBCAABAQEBAwYABQcMDA0NAAYPAAMNDA0ADA8B +DQENBQwHBwADDA0GAAQAAQEBAQ4AAQZKDgEBDAABBCcOAQYNACcODQABBiYO +AQwNABYODQABBicODQAkDgENOQUBBwEMVw4AAC0OAQYJAAEBAwYBBwMMAQ0G +DwADDQwMAAMNCA8BDQQMCQcABAwMBgEUAEsOAQEMAAEEJw4BBg0AJw4NAAEG +Jg4BDA0AFg4NAAEGJw4NACMOAQwBBzoFAQdXDgAALg4BAQkAAAQGBgcMBA0D +DwENAQ0HDAAHDQ0PDw0PDwADDQ4MAQEUAAEGSw4BAQwAAQQnDgEGDQAnDg0A +AQYmDgEMDQAWDg0AAQYnDg0AIg4BBwEHPAUBBwEMVQ4AAC8OCQAABAYGDA0J +DwcNDQ8FDQUMAQYUAAEGTA4BAQwAAQQnDgEGDQAnDg0AAQYmDgEMDQAWDg0A +AQYnDg0AIQ4BDAEHPgUBB1UOAAAvDgEGCAAABAIHDA0MDwENAQ0TDwYNAQYT +AAEBTQ4BAQwAAQQnDgEGDQAnDg0AAQEmDgEGDQAWDg0AAQYnDg0AIg4BBz8F +AQcBDFMOAAAwDgEGBwAABAEHDQ0kDwMNAQISAAEBTg4BAQwAAQQnDgEGDQAn +Dg4AJg4BBg0AFg4NAAEGJw4NACIOAQdABQEHUw4AADEOAQYHAAEGAQ0nDwEM +AQERAAEBTw4BAQwAAQQnDgEGDQAnDg4AAQwlDgEGDQAWDg0AAQYnDg0AIA4B +DAEHQgUBBwEMUQ4AADIOAQEGAAECAQ0nDwEHEQABAVAOAQEMAAEEJw4BBg0A +Jw4OAAEGJQ4BBg0AFg4NAAEGJw4NAB8OAQwBB0QFAQcBDFAOAAAzDgEBBgAB +Bw0PAQ0ZDwEGEQABBlAOAQEMAAEEJw4BBg0AJw4OAAECJQ4BBg0AFg4NAAEG +Jw4NAB8OAQdGBQEHUA4AADMOAQYGAAECAQ0LDwMNGA8BAhAAAQZRDgEBDAAB +BCcOAQYNACcODwAlDgEBDAABARYODQABBicODQAdDgEMAQdIBQEHAQxODgAA +NA4BBgYAAQYJDwENAQ0EDAENAQ0UDwEMAQEPAAEGUg4BAQwAAQQnDgEGDQAn +Dg8AAQYkDg0AAQIWDg0AAQYnDg0AHQ4BB0oFAQdODgAANQ4BBgUAAQEBDQcP +AQ0BDAYHAAMMDA0AEg8BBg8AAQFTDgEBDAABBCcOAQYNACcODwABASMOAQwN +AAEEFg4NAAEGJw4NABsOAQwBByMFAQcoBQEHAQxMDgAANg4BAQUAAQYBDQUP +AQ0BDAgHAAQMDA0NDw8BDQEBDwBUDgEBDAABBCcOAQYNACcOEAABBiIOAQYN +AAEGFg4NAAEGJw4NABoOAQwBByMFAAMHDQcAKAUBBwEMSw4AADcOAAcAAQEA +AAEMAAUPAQwLBwADDAwNAA4PAQYPAAEGVA4BAQwAAQQnDgEGDQAnDhAAAQEi +DgECDQABBhYODQABBicODQAZDgEMAQcjBQAFBwwODAcAKAUBB0sOAAA3DgAD +BgABAAMAAAcCDQ8PDQ0MAAwHAwwBDQsPAQ0BAQ4AAQJVDgEBDAABBCcOAQYN +ACcOEQABBiAOAQwOAAEMFg4NAAEGJw4NABgOAQwBByMFAQcBDQMOAQwBBygF +AAcHDA4OBwcNAEQOAAA4DgEGBQAABQYPDQ0MAAwHAAcGBwcMDA0NAAkPAQYO +AAEBAQZVDgEBDAABBCcOAQYNACcOEgABDB8OAQYOABcODQABBicODQAYDgEH +IwUBBwEMBQ4BDAEHKAUABgcODQUFB0QOAAA5DgEBBAAABQENDQwMAAYHBAYD +BwAGBgcHDAwNCA8BDQEBDgABAlYOAQEMAAEEJw4BBg0AJw4SAAEBHg4BDA4A +AQIXDg0AAQYnDg0AFg4BDAEHIwUBBwENBw4BDQEHKAUBBwENBAcBDUIOAAA5 +DgEGBAAABAEGDAwEBwMGBAIDBgAHBwYGBwcMDQAGDwENAQYPAFcOAQEMAAEE +Jw4BBg0AJw4NAAEGBQABAh0OAQIOAAEGFw4NAAEGJw4NABUOAQwBByMFAQcB +DAkOAQwBBygFAAcHDgwHBQcMAEEOAAA6DgEBBAABBgMHAwYKAgEGAQYEBwEM +AQ0EDwADDQwBAA4AAQZXDgEBDAABBCcOAQYNACcODQABDgEGBQABBhsOAQYP +ABgODQABBicODQAUDgEMAQcjBQEHAQ0LDgENAQcoBQAHDQ4HBQUHDABADgAA +Ow4DAAEBAQYDBwAEBgYCAgsDAAcGBwYHBwwMAAMNAQwBBgYAAQEBAQcAWA4B +AQwAAQQnDgEGDQAmDgEGDQAAAw4OAQAFAAEGGQ4BDAEBDgABAhgODQABBicO +DQATDgEMAQcjBQEHAQ0NDgENAQcnBQAEBwcNDQMHAQw/DgAAOw4ACwEAAAEG +BwcGBgICAA0DAwYBBwEHAwwAAwcGAQAFAAAEAgYGAQUAAQZYDgEBDAABBCcO +AQENACYOAQYNAAADDg4MAAYAAQIXDgEMAQEPAAEGFw4BBg0AAQYmDgEGDQAS +DgEMAQcjBQEHAQwPDgEMAQcoBQAGDQ4NBQUHPw4AADsOAQYDAAAEBgcGBgMC +AAMDCAgADAMACAYHBwwMBwcGBQABAQMGAQQBAQMAAQFZDgEBDAABBCYOAQYO +ACYOAQIMAAEBAw4BBgYAAQEBDBQOAQYBAQ8AAQIYDgEGDQABBiYOAQQNABEO +AQwBByMFAQcBDREOAQ0BBycFAAMHDQ0ABAcBDD0OAAA7DgEGAwAAAwIHBgAE +AgEDBAILAwEGAQYEBwEGBQABAgMGAQIEAAEGWQ4BAQwAAQQmDgEBDgAlDgEM +DQABAgQOAQYHAAEGEg4BBhEAAQYXDgEMDgABBiUOAQwOABAOAQwBByMFAQcB +DBMOAQwBBygFAAYHDg4HBQc9DgAAOw4BBgMAAQEBBgMCAwMBCQEJAwMDAgkD +BAYBAQQAAQEEBgEBAwABAVoOAQEMAAEEJQ4BBg8AJQ4BAg0AAQYFDgECBwAA +AwEGDAANDgEGAQERAAECGA4BAQ4AAQYlDgEBDgAQDgEHIwUBBwENFQ4BDQEH +JwUABwcMDAcFBQcAPA4AADsOAQYDAAMCAAUDCAoKCQADCgMJAAUKAwMCAgAJ +AwECBQAABQIGBgIBAAQAAQZaDgEBDAABBCQOAQIQACQOAQQOAAEGBg4BAgkA +AAQBBgYMBQ4AAwYGAgAUAAEMFw4BAg8AAQYjDgEMAQEPAA4OAQwBByMFAQcB +DRcOAQ0BBycFAQcBBwQFAQcBDDoOAAA7DgAHBgAAAQICAwAECAAECgkJCgcJ +AQMBAggDAQIFAAADBgIBAAYAWw4BAQwAAQQiDgEGAQERACMOAQIPAAEGBw4B +AicAAQYWDgEGAQEQAAEGIQ4BDAECEQAODgEHIwUBBwENGQ4BDAEHLQUBBzoO +AAA7DgAHBgABAgIDAwADCAMKAQkBCQMKBgkJAwEBBAABAQcAAQZbDgEBDAAB +BBYOAQwJBgEBFAAgDgADDAYBABAAAQYIDgEGJQABBBAOAQwBDAMGAQITAAEG +Gw4BDAMGAQIUAAwOAQwBByMFAQcBDRsOAQwBBy0FAQcBDDgOAAA7DgADBgAB +AAQDAQgBCAUKAAUJCgoLCgAGCQEDAQIGAwEBDAABBlsOAQEMAAEEFg4BBh4A +GA4GBgECAQETAAoOAQYjAAECDw4BBBoAAQYZDgEBGgAMDgEHIwUBBwEMHQ4B +DAEHLQUBBzgOAAA7DgADBgABAAUDAQgBCAQKAAYJCQoLCwoHCQYDAQELAAEB +XA4BAQwAAQQWDgEGHgAYDgEGGgALDgEMAQEgAAECEA4BBBoAAQYZDgEBGgAK +DgEMAQckBQEHHw4BDQEHLQUBBwEMNg4AADsOAAQGAAECBAMECAAJCgoJCQoK +CwsKAAcJAAYDAgMIAwILAAEGXA4BAQwAAQQWDgEGHgAYDgEGGQABAQ0OAQYe +AAEGEQ4BBBoAAQYZDgEBGgAJDgEMAQclBQEHIA4BDAEHLQUBBzYOAAA7DgMA +AQIFAwMIAwoAAwkJCgADCwEKCQkAAwoIAgALAAEGXA4BAQwAAQQWDgEGHgAY +DgEGGQABBg4OAQwBBBoAAQEBBhIOAQQaAAEGGQ4BARoACQ4BByYFAQchDgEM +AQctBQEHNQ4AADsOBAABAgQDAwgDCgMJAQoDCwEKBwkABAoKAwELAF0OAQEM +AAEEFg4BBh4AAQwXDgEGGQABBhAOAAMMBgEAFQABAQEGFA4BBBoAAQYZDgEB +GgAHDgENAQcmBQEHAQwiDgENAQctBQEHAQwzDgAAOw4EAAEBAQYDAwMIBAoA +BwkJCgoLCwoAAwkABwoKCQoIAwIADABdDgEBDAABBBYOAQwJBgQCBAENAAEM +Fw4BDAQGAAQCAgEBEQABBhMOAAMGBgEADwAAAwEGBgAWDgUGAAUEAgIBAQAR +AAEGGQ4FBgECAQIDAREABw4BByYFAQclDgEMAQctBQEHMw4AADsOBAAAAwYM +BgADAwEIAQgDCgMJBgoABQkKCggDAAMGDQBdDgEBDAABBDMOAQwBBiYOCAYA +BAQBAQAYDgMGAQQBAgQBAQQDBikOAQwJBgADBAIGACgOAQwJBgEEAQEHDgEH +JQUBBwEMJg4BBy4FAQcBDDEOAAA7DgMAAAUBDA8MAgADAwAECAgKCgUJAA0K +CgkKCQMCAgwPDwwCAAwAXQ4BAQwAAQT9DgEHJAUBBygOAQcvBQEHMQ4AADsO +AwAAFgYNDQEAAQIDAwgKCgkIAwMCAwoKAwIDAAAFAgwPDwYACwABAV0OAQEM +AAEE/A4BDQEHIwUBBykOAQcwBQEHMA4AADsOAwAAAwYNBAADAAAIAQIDAwoK +CAgDAwAECAMGAQUAAAUCDw8MAQAKAAEGXQ4BAQwAAQT7DgEHAQcjBQEHAQwp +DgADDAcHAC8FAQcvDgAAOw4ABQAAAQwMAAUAAAMBBgIABgMABAICDAYHAAAE +DA8NAgoAAQZdDgEBDAABBPoOAQ0kBQEHLQ4BBzAFAQcuDgAAOw4ABQAAAQwG +AAMAAwEBDQECBwEAAwYNBgAHAAAEBg8NAgoAAQZdDgEBDAABBPkOAQ0BByMF +AQcBDC4OAQcBBy8FAQcBDCwOAAA6DgAGBgAAAQwGAwADAQEPAQcEAAMBAAMM +DwYABQAABgEBBg8NAgoAAQZdDgEBDAABBPgOAQckBQEHMQ4BDTAFAQcsDgAA +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 +AQcBDQMOAAQMBwUHJw4AAEkOBQYBAAEBBAZqDgADDAYBABEAAQQjDhIAyw4B +DQUHAQxkDgEMAQcDBQAFBwcNBwcABAUABQcMDAcNAAUOAwwnDgAAtA4IBgEC +AQEUAAEEIw4BARAAAQH/DjgOAQwBBwQFAAMMDg0ABAUBBzMOAAC0DgEGHQAB +BCMOAQYQAAEG/w45DgAFDAcFBQcAAw4BBwQFAQcBDDEOAAC0DgEGHQABBCMO +AQwQAAEM/w46DgAEDA0NDAQOAQcEBQEHAQwwDgAAtA4BBh0AAQQkDgEGDgAB +Bv8ORA4BBwMFAQcxDgAAtA4BBh0AAQQlDgECDAABAv8ORQ4BDAMHAQ0xDgAA +tA4BBh0AAQQmDgEGCgABAv8OfA4AALQOAQwKBgEBAQERAAEEJw4BBgEBBgAB +AQEG/w59DgAAyA4BDAEMCQYpDgEMBAYBDP8Ofw4AAP8O/w6CDgAA/w7/DoIO +AAD/Dv8Ogg4AAP8O/w6CDgAA/w7/DoIOAAD/Dv8Ogg4AAP8O/w6CDgAA/w7/ +DoIOAAD/Dv8Ogg4AAP8O/w6CDgAA/w7/DoIOAAD/Dv8Ogg4AAP8O/w6CDgAA +/w7/DoIOAAD/Dv8Ogg4AAP8O/w6CDgAA/w7/DoIOAAD/Dv8Ogg4AAP8O/w6C +DgAA/w7/DoIOAAD/Dv8Ogg4AAP8O/w6CDgAA/w7/DoIOAAD/Dv8Ogg4AAP8O +/w6CDgAA/w7/DoIOAAD/Dv8Ogg4AAP8O/w6CDgAA/w7/DoIOAAD/Dv8Ogg4A +AP8O/w6CDgAA/w7/DoIOAAD/Dv8Ogg4AAP8O/w6CDgAA/w7/DoIOAAD/Dv8O +gg4AAP8O/w6CDgAA/w7/DoIOAAD/Dv8Ogg4AAP8O/w6CDgAA/w7/DoIOAAD/ +Dv8Ogg4AAP8O/w6CDgAA/w7/DoIOAAD/Dv8Ogg4AAP8O/w6CDgAA/w7/DoIO +AAD/Dv8Ogg4AAP8O/w6CDgAA/w7/DoIOAAD/Dv8Ogg4AAP8O/w6CDgAA/w7/ +DoIOAAD/Dv8Ogg4AAP8O/w6CDgAA/w7/DoIOAAD/Dv8Ogg4AAP8O/w6CDgAA +/w7/DoIOAAD/Dv8Ogg4AAP8O/w6CDgAA/w7/DoIOAAD/Dv8Ogg4AAP8O/w6C +DgAA/w7/DoIOAAD/Dv8Ogg4AAP8O/w6CDgAA/w7/DoIOAAD/Dv8Ogg4AAP8O +/w6CDgAA/w7/DoIOAAD/Dv8Ogg4AAP8O/w6CDgAB +==== diff --git a/images/onlyblue_16c.dat b/images/onlyblue_16c.dat new file mode 100644 index 0000000..3aeeaac --- /dev/null +++ b/images/onlyblue_16c.dat @@ -0,0 +1,14 @@ +# Lilo boot menu background configuration (Lilo 23) +# +# color palette: 0 black, 3 magenta, 7 pink, +# 8 middle grey, 10 bright grey, 13 white +# +# bmp-table = ,;,,, +# bmp-colors = ,,;,, +# bmp-timer = ,;,, + +bitmap = onlyblue.bmp + +bmp-table = 3,4;4,26,19,1 +bmp-colors = 7,,0;15,,0 +bmp-timer = 37,2;7,4,0 diff --git a/images/onlyblue_16c.uu b/images/onlyblue_16c.uu new file mode 100644 index 0000000..b975f5c --- /dev/null +++ b/images/onlyblue_16c.uu @@ -0,0 +1,154 @@ +begin-base64 644 onlyblue.bmp +Qk2uGgAAAAAAADYEAAAoAAAAgAIAAOABAAABAAgAAQAAAHgWAAAgHAAAIBwA +AAABAAAAAQAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAA +AAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8O +/w6CDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8E +gAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/ +BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA +AQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQB +DgAAAQ7/BP8EgAQBDgAAAQ7/BP8EgAQBDgAA/w7/DoIOAAE= +==== diff --git a/images/tuxlogo_16c.dat b/images/tuxlogo_16c.dat new file mode 100644 index 0000000..195474e --- /dev/null +++ b/images/tuxlogo_16c.dat @@ -0,0 +1,14 @@ +# Lilo boot menu background configuration (Lilo 23) +# +# color palette: 0 black, 3 magenta, 7 pink, +# 8 middle grey, 10 bright grey, 13 white +# +# bmp-table = ,;,,, +# bmp-colors = ,,;,, +# bmp-timer = ,;,, + +bitmap = tuxlogo.bmp + +bmp-table = 59,5;1,23, +bmp-colors = 6,9,0;15,9,0 +bmp-timer = 66,28;6,8,0 diff --git a/images/tuxlogo_16c.uu b/images/tuxlogo_16c.uu new file mode 100644 index 0000000..7d2cac0 --- /dev/null +++ b/images/tuxlogo_16c.uu @@ -0,0 +1,739 @@ +begin-base64 644 tuxlogo.bmp +Qk14gQAAAAAAADYEAAAoAAAAgAIAAOABAAABAAgAAQAAAEJ9AAAgHAAAIBwA +AAABAAAAAQAACQgJAB4xPgA1frkAQ7zkAKK50wCtvfcAvsLJAN3i4wACS/8A +AIv/AACt/wABz/sAWM77ALri+wDl9vsA//v7AAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8F +/wWCBQAA/wX/BYIFAAD/Bf8FggUAAP8F/wWCBQAA/wX/BYIFAAD/Bf8FggUA +AP8F/wWCBQAA/wX/BYIFAAD/Bf8FggUAAP8F/wWCBQAA/wX/BYIFAAD/Bf8F +ggUAAP8F/wWCBQAA/wX/BYIFAAD/Bf8FggUAAP8F/wWCBQAA/wX/BYIFAAD/ +Bf8FggUAAP8F/wWCBQAA/wX/BYIFAAD/Bf8FggUAAP8F/wWCBQAA/wX/BYIF +AAD/BWMFAwD/BRwFAAC9BQEApQUBAP8FHQUAAL4FAQCkBQEA/wUdBQAAKAUD +AAMFAwABBQMAAAMFAAAADwUDAAEFAQUDAA8FAQABAAMFAwAIBQMABAUDAAQF +AwADBQEAAQAGBQMABAUDAAEFAQUDAAEFAQUDAAQFAwADBQADAAAFAAMAAQUB +BQMAAQUBBQMAAQUDAAADBQAAAAcFAAYAAAUABQUDAAQFAwAPBQEAAQADBQUA +AQUBBQMADwUBAAEAAwUDAAgFAwABBQEFAwABBQMAAAMFAAAAAwUDAAEFAQUD +AAYFAwABBQMAAQUBBQMAAQUBBQMAAQUBBQMAAQUDAAEFAQUDAAEFAQUDAAYF +AwADBQAEAAUAAAMFAAMAAAUAAwABBQEFAwABBQEFAwABBQMAAQUDAP4FAAAp +BQEABQUBAAMFAAYABQUABQANBQEAAwUABAAFBQAQBQAFAAUABQAAAwUBAAYF +AQADBQAEAAUFAAMFAAQABQUAAwUABgAFBQAFAAUFAAcABQUABQUAAAMFAAcA +BQUABQUAAAMFAAQABQUAAwUACwAFBQAFAAUABQUAAAMFAAQABQUAAwUBAAoF +AAMABQUAAwAACAUABQUABQUAAwUBAA4FAAUABQAFAAADBQAEAAUFAAMFAQAO +BQAFAAUABQAAAwUBAAYFAQADBQAEAAUFAAMFAAgABQUABQAFAAMFAAQABQUA +CAUBAAMFAAQABQUAAwUABAAFBQAEBQEAAwUABAAFBQADBQAEAAUFAAYFAQAD +BQASAAUFAAAFBQAFBQAFAAUABQUAAwUABAAFBQADBQAHAAUFAAUFAACCBQEJ +LghMBQAAKQUBAAUFAQADBQAEAAUFAAwFAAQABQUABgUBAAQFAQALBQEAAwUB +AAMFAQAGBQEAAwUABAAFBQADBQAEAAUFAAMFAAQABQUACgUABAAFBQAGBQAE +AAUFAAYFAQAGBQEAAwUABAAFBQADBQAEAAUFAAMFAQAKBQEAAwUBAAUFAAQA +BQUADwUABAAFBQADBQEAAwUABAAFBQADBQAEAAUFAAsFAQADBQEAAwUBAAYF +AQAGBQEAAwUABAAFBQADBQEABgUBAAgFAAQABQUAAwUBAAYFAQAEBQEAAwUA +BAAFBQAGBQEABgUBAAMFAAQABQUAAwUABAAFBQADBQAEAAUFAAMFAAQABQUA +AwUBAAUFAQCBBTIISgUAACkFAQAFBQEAAwUABAAFBQAKBQEAAQADBQEABgUB +AAUFAQABAAkFAQADBQEAAwUBAAYFAQADBQAEAAUFAAMFAAQABQUAAwUABAAF +BQAIBQEAAQADBQEABgUABAAFBQAGBQEABgUBAAMFAAQABQUAAwUABAAFBQAD +BQEACgUBAAMFAQADBQEAAQADBQEADQUBAAEAAwUBAAQFBAAAAwUFAAADBQEA +AwUBAAEACQUBAAMFAQADBQEABgUBAAYFAQADBQAEAAUFAAMFAQAGBQEACAUD +AAQFAQAGBQEABAUBAAMFAAQABQUABgUBAAYFAQADBQAEAAUFAAMFAAQABQUA +AwUABAAFBQADBQAEAAUFAAMFAQADBQEAAQCBBQEJMghKBQAAKQUBAAUFAQAD +BQAEAAUFAAgFAQABAAUFAQAGBQEABwUBAAEABwUBAAMFAQADBQEABgUBAAMF +AAQABQUAAwUABAAFBQADBQAEAAUFAAcFAQAFBQUAAAUFBQAFBQAFAAADBQUA +AAYFAQADBQAEAAUFAAMFAAQABQUAAwUBAAoFAQADBQAEAAUFAAUFBQAHBQEA +AQAFBQEABwUABAAFBQADBQEABQUBAAEABwUBAAMFAQADBQEABgUFAAADBQUA +AAMFAAQABQUAAwUFAAADBQUAAAgFAAMABQAABAUFAAADBQUAAAQFAQADBQAD +AAUFAAUAAAMFBQAABgUBAAMFAAQABQUAAwUABAAFBQADBQAEAAUFAAMFAAQA +BQUAAwUABAAFBQCCBQEJNAhJBQAAKQUHAAAHBQUAAAUFAAAHBQEABwUBAAMF +AQABBQMACAUBAAYFAQADBQEAAwUBAAYFAAgAAAUFAAUFAAMFAAQABQUAAwUA +BAAFBQAHBQAHAAUFAAUFAAADBQAHAAUFAAUFAAADBQAEAAUFAAMFAAsABQUA +BQUAAAUFAAADBQEAAQUDAAADBQUAAAoFAQADBQAKAAUFAAUFAAUFAAMFAQAG +BQEABwUBAAMFAQADBQAIAAUFAAAFBQAHBQEABgUBAAMFAQADBQEABgUBAAMF +AQABBQMAAAYFBQAFBQADBQEAAwUBAAEFAwAHBQAEAAUFAAMFAQADBQEAAQUD +AAEFAQUDAAAGBQUABQUAAwUABAAFBQAGBQEAAwUBAAEFAwAADQUFAAUFAAUF +AAAFBQAAAwUBAAEFAwAACQUFAAUFAAUFAAB+BQEJNghIBQAAKQUBAAUFAQAD +BQEAAQUEAAYFAQABAAYFAwADBQAEAAUAAAQFAQABAAYFBAABBQEFAwAHBQAE +AAUAAAQFAwAEBQMAAQUBBQQABgUDAAMFAwADBQEAAwUDAAQFAwABBQEFBAAB +BQEAAwUDAAMFAAQABQAAAwUBAAYFAAYAAAUFAAADBQMAAwUDAAgFAQABAAQF +BAABBQEFAwADBQAEAAUAAAYFAQABAAYFBAABBQEFAwAIBQMAAwUABgAFAAAF +BQQAAQUBBQMAAwUABAAFAAAFBQADAAUFAAMAAQUBBQMAAwUACQAFAAAFAAUA +AAAEBQMAAwUBAAcFAwADBQAGAAUAAAUFBAABBQEAAwUDAAMFAAQABQAABAUD +AH4FAQk2CEgFAAApBQEABQUBAAYFAQAKBQEAAQAQBQEAAQAJBQEADgUBABQF +AQAUBQEAEAUBADcFAQABAAMFAQAKBQEABwUBAAEACQUBABwFAQATBQEAIAUB +ABQFAQCWBQEJNghIBQAAKQUBAAUFAQAGBQEADAUBAA4FAQALBQEADgUBABQF +AQAUBQEAEAUBADkFAAQABQUACgUBAAYFAQALBQEAHAUBABMFAQAgBQEAFAUB +AJYFAQk2CEgFAAAoBQMAAwUDADsFAQABACgFAQABAFcFAQABAEIFAQABAB8F +AQABAKsFAQk2CEgFAAAzBQEAOQUBACkFAQAUBQEAQwUBAEMFAQAgBQEAGAUB +AJIFAQk2CEgFAAD/Bf8FAwUBCTYISAUAAP8F/wUDBQEJNghIBQAA/wX/BQMF +AQk2CEgFAAD/Bf8FAwUBCTYISAUAAP8F/wUDBQEJNghIBQAA/wX/BQMFAQk2 +CEgFAAD/Bf8FAwUBCTYISAUAAP8F/wUDBQEJNghIBQAA/wX/BQMFAQk2CEgF +AAD/Bf8FAwUBCQEJNAgBCUgFAAD/Bf8FBAUBCQEJMggBCUkFAAD/Bf8FBQUB +CQEJMAgBCUoFAAD/Bf8FBgUBCQEJLggBCUsFAAD/Bf8FBwUFCSYIBAlMBQAA +/wX/BQsFJwlQBQAA/wX/BYIFAAD/Bf8FggUAAP8F/wWCBQAA/wX/BYIFAAD/ +Bf8FggUAAP8F/wWCBQAA/wX/BYIFAAD/Bf8FggUAAP8F/wWCBQAA/wX/BYIF +AAD/Bf8FggUAAP8F/wWCBQAA/wX/BYIFAAD/Bf8FggUAAP8F/wWCBQAA/wX/ +BYIFAAD/Bf8FggUAAP8F/wWCBQAA/wX/BYIFAAD/Bf8FggUAAP8F/wWCBQAA +/wX/BYIFAAD/Bf8FggUAAP8FxwWnChMFAAD/BcYFqQoSBQAA/wXFBasKEQUA +AP8FxAUHCqAJBgoQBQAA/wXEBQYKogkFChAFAAD/BcMFBgqkCQUKDwUAAP8F +wwUFCqYJBAoPBQAA/wXDBQUKpgkECg8FAAD/BcIFBQqoCQMKDwUAAP8FwgUF +CqgJAwoPBQAA/wXCBQUKqAkDCg8FAAD/BcIFBAqpCQMKDwUAAP8FLgUBBEUF +AAMGBQ0ASwUECqkJAwoPBQAA/wUqBQYEAQIFBDoFAQYDBAECAQIEAQAFAgIE +BAYAQwUECqkJAwoPBQAA/wUpBQAMBAQCAgECAQECAQICAwQ2BQAEBAQCAgsB +AAQCAgQEQQUECqkJAwoPBQAA/wUnBQADBAQCAAwBAAMCBAQANAUBBAEEDwEA +BAICBARABQQKqQkDCg8FAAD/BSQFAAQGBAQCBQEAAwIBAgADAQECBAEBAgEE +MgUBBgECBgEADwIBAgECAgECAQIBAQICBAA/BQQKqQkDCg8FAAD/BSEFAwQA +DwMCAQECAQIBAgECAQIBAgAHAQEEAQQvBQEEAQIFAQANAgECAQIBAgECAQIB +AgADAQADAgQEAD0FBAqpCQMKDwUAAP8FHgUABQ0GBAQCAAMBABcCAQECAQIB +AgECAgECAQIBAQIBAQIEBAAtBQEGAQQEAQAEAgECAQoCAAgBAgECAQIEBDwF +BAqpCQMKDwUAAP8FGgUABAYFBgQDAgAGAQECAQIBCQIABgECAQIBAgUBAQID +BCwFAQIEAQAFAgECAgEADAIABwECAQICDQQAOgUECqkJAwoPBQAA/wUWBQAO +DQYFBAMCAgECAQIBAgEPAgAFAQICAQIABgEABAQEBQQoBQEGBAEBAgEBEgIA +BAECAQQ7BQQKqQkDCg8FAAD/BRAFAAYNBQYFBgQEAgAGAQECAQIBFQIABAEC +AQIEAQAEAAABAQMEBAYABAUGBQQbBQAEBwYEAgMBAQIBAQ0CAQoGAgEBAwIB +BwcFAQYxBQQKqQkDCg8FAAD/BQ4FAAUNBgQEAwAEAgADAQIBAA8CAQoMAgAE +AQIBAgQBBAADAQMCAQQBAgQEEgYACAUEBQQFBgQCBQEBAgEBCQIABAoCAgoK +AgAEAQICBzgFBAqpCQMKDwUAAP8FCQUABQ0GDQYEAAYCAQEMAgEKBAIACgoC +CgICCgIKAgoIAgEBAQIEAQwAHQEEAAMBCQIADAoCAgoCAgoCCgICCgQCAAUB +AgMGDQA2BQQKqQkDCg8FAAD/BQYFAAUHDQQEAwAYAgAQCgIKCgIKAgoKAgoK +AgoCCgcCAAQBAgEBLQAABAEBAgEGAgAQCgICCgIKAgoKAgoCCgICCgYCAQQ2 +BQQKqQkDCg8FAAD/BQMFAAQEBQQDFwIBCgMCAAULAgsKAgAECgAJAgoKAgoC +CgIKAAUCAQEBAgQBLAADAQYCABIKAgIKCgILCgIKAgoCCgIKAgoGAgEECgUB +BioFBAqpCQMKDwUAAP8FAwUBBA0CAQoFAgAJCgICCgIKAgoCAAQKABACCwoL +CgILCgoLCgoLAgoKBwIAAwECAQAtAAEBAQEGAgEKAQIDCgAEAgsCCwUKAAcC +CwIKAgIKAAUCAAUEDQUFBAAwBQQKqQkDCg8FAAD/BQENAQQNAgAVCgICCgIK +AgoCAgoCCgILCgIKCgILAAMKAA4CCwoKCwoCCwoCCwoCCgUCAQEBAgMBLAAB +AQEBBQIABgoCCgoCCwQKAAgCCwoCCgoCCwQKBgIAAwMFDQAxBQQKqQkDCg8F +AAD/BQEECAIBCgMCAQoDAgAHCgICCgIKAgAFCgAQAgsKCgsKCgILCgsKCgsC +CwQKAQsDCgECAQoFAgMBLAABAQEBBQIADgoCCgIKCgILCwoLCgoLBAoABwIL +AgsCCgoABQIBBQENMAUECqkJAwoPBQAA/gUACQ0CAgoCCgICCgADAgAECgIK +AgMKAAQCCwoCAwoADAILAgsKCgMKAgsKCwMKAQIBCwUKAAkDCgoCCwIKAgoA +AwIAAwECAQAtAAEBBQIBCgECBAoADQsKCgILAgsKAgsKAgsAAwoABwILCgIK +AgoAAwIAAwwEDQAuBQQKqQkDCg8FAAD9BQALDQUCCgIKAgoCCgIAAwoAEwIK +CgIKAgoKAgsKAgsKCwoKAgsAAwoAEAsKCgMLCgsKCgMLCgsKCgsDCgECAQoF +AgEBAQEtAAEBAQEEAgAPCgILAgsKCgILCgoLCgoLAAQKAAYCCwoLAgsECgAL +AgoCAgMEBQ0FBQQABgUBBiIFBAqpCQMKDwUAAP4FABEEAwIKAgoCCgoCCgoC +CgoCCwAGCgELAwoACgILCgsKCgMLCgsDCgAEAwoDCwMKAAoDCgsKCwoCCwIK +BAIBAQEBLQABAQEBAwIACwoCCgIKCgILCgoDAAMKAAUDCgMKCwAECgASAgsK +AgsCCwoKAgsCAwMEBA0NCAUBBiAFBAqpCQMKDwUAAP0FABsNBQMCCgIKAgoC +CgoCCwoLCgoCCwoCCwoCCwsABAoAAwMKCwADCgAEAwsKCwQKAAMDCwsABAoA +BgILCgoCCgMCAQEBAQYACwEBAAEBGwABAQEBBAIGCgAPCwILCgoDCwoLCwoK +AgsLAAMKABELCgMLAgsLCgoCCwIDAwwNDQAoBQQKqQkDCg8FAAD/BQAGAwIK +AgoCAwoBCwMKAQIBCwYKAA4LCgoCCwoLCwoLCgsKCwMKABIDCwoLCwoKAgsK +CwsKCgILAgoDAgAPAQEAAAECBgYHDg8ODw4PAAQOAAUHBwYEBAADARUAAQEB +AQMCAAYKAgoKAgsDCgAYCwoLCgoDCwILCgsKAgsKCwILCgILCgILBAoABwIL +AwMMDQYAJgUECqkJAwoPBQAA/gUABQ0DAgoCAAMKABALCgILCgsLCgoLAgsK +CgILAwoAJwsKAgsDCgMKAwoLAwoKAwoCCwsKCwoKAgsKCgIKAgoCAgEAAgYG +DgASDwAGDgcGBAEBEwABAQQCACcKAgsKCgILCwoKAgsLCgoLCgoDCgsKCgMK +CgMKCwoKCwoKCwsKCgIAAwMAAwwNDQAHBQEGHAUECqkJAwoPBQAA/gUACgYF +AgoKAgoKAgsECgAxAgsKAgsKAgsKCwoKAwoLCgsKCwoLCgsKCwsKCgsKCwIL +CgILCgoLAgsCCgICAQIEBwAYDwAGDg4GBgEBEAABAQMCABsKAgoKAgsKCgIL +CgsKCgMLCgoLCgoDCgsKCgsAAwoACAMLCgMKCwILBAoABgIDAwUNDSIFBAqp +CQMKDwUAAP8FAAQFAgoCAwoACwsKCwoDCwoLCwoLAAUKABUCCwoKAwoKCwIL +AwsKAwsCCwMKCgMABgoACwsCCwoCCwICBAQOAB0PAAMHBgIADwABAQQCAQoB +AgMKACoCCwoKCwoKCwoKAwsKCwoLCgMKCwILCgsKCgMKCwoLCgMKCgsKCgID +Aw0iBQQKqQkDCg8FAAD/BQAEDQIKAgMKAQIBCwYKABECCwoCCwoDCgsKCgsK +CwMKCwADCgEDAwoAFgsKCgsKCgsLCgoLCgILAgsCCgQNDg4fDwADDgYCAA0A +AQEDAgEKAQIDCgAtCwoLCwoLAgsDCgsKCgMKCwILCgsKCwoLCgsKCgsKAwoD +CgsDCgMKAwoDAwQNACAFBAqpCQMKDwUAAP8FAAUNAwIKAgADCgAMAwoDCwMK +CwoLCgoLBAoADAMKCgMKCwoDCgMLCgMLABUDCgsKAwsKAgsKCgILCgsLAgIN +Dg4AIQ8ABA4HBgELAAEBAQEDAgAyCgoCCwIKCgILCgoLCgoDCgsKCwoLCwoD +CgoDCgoDCgsDCgoLCgsKCwsKCwMKAgsDBA0EBQEGGgUECqkJAwoPBQAA/wUA +Bw0CCQIKAgsABgoBCwMKAA8DCgoDCgsKCwoLCgsCCwsAAwoAGAMKCgILCgML +CgoDCgsKCwoLCgsCAwQODiUPAAMGAgEACQABAQQCADIKAgsKCgsLCgoDCwoK +CwoLCgoDCgsCCwoKCwoKCwoLCgsKCwMKAwoLAgsDCgoDCgMDBB8FBAqpCQMK +DwUAAP8FACAHAwIKAgsKAgsKCwMLCgMKCwoKCwoKAwoLAgsDCgsKAgMLAAQK +CwoLAwoAEAILCwoLCgsCCwoKCwIDBw4nDwADBwQBAAkAAAcBAgIKAgoCAAMK +AQIBCwQKACcLAwoKAwsKCwoKCwoLCgMLCgoDCgoDCgoLCgsKCwoLCgMLCgsC +DA0AHgUECqkJAwoPBQAA/wUABgUCCQIKAgMKACoDCgsCCwoKAwoLAgsKCgMK +CgsKCgMKCwoKAgsKAwoKAwsKCwILAgsLCgoDCwADAwUOACoPAQcBAggABAID +CgELAwoAEgsLCgsDCgsKCwoKAwoLAwoKAwMKABYDCwoLCwoLAwoKAwsKCgML +CgoLCgsDHwUECqkJAwoPBQAA/wUABAUDAgIECgELBAoBCwELBAoACgsKCwoK +AwsKAwsDCgADAwoLAAMKAQMBCwMKAA0DCgsKCwILCgsCAwQNACwPAAMOBAEA +BgABAQMCABwKAgoCCwILCgILCgsKCgMKCgsKCwoLCgsKCwoLAwoAFAsCCwoL +CgsKCgMLCgoDCwoDCwsEHgUECqkJAwoPBQAA/wUAHQUCAgoKAgsKAgsDCgsK +AgsLCgMKCgMKCwoCCwoCAAMLAAsKCwoDCwsKAgsKCwADCgAKAwoLCgsDCwMN +Di0PAAQOBgEBBAABAQMCACgKAgoLCgsKCgsKAwoKCwoKCwoDCwILCgsCCwoK +AwoLCgoLAwoLCgMLAwoADAsLCgMKCwMMDQUFBhoFBAqpCQMKDwUAAP4FAAwG +BQMCCgILCgoLCgsECgAFCwILCgsAAwoADwMKCgsKCwoKAgsKAwoKAgADCwAO +CgMKCwsKCwILAwsCBQ4vDwAEDgYBAQMAAQEEAgQKAAsCCwoKCwoLAwoLAwAF +CgAeCwoKCwoLCgoLCgMLCgoLAgsKCgsKCwMKAwoLAwMNHgUECqkJAwoPBQAA +/wUAOQUCAgoKAgsKAgsKAwoDCwoLCgMKAwoLCgoLCgMKCgMLCgsKCgsKCwoC +CwoLCgILCgsKCwIMDg8PDgAvDwEHAQEDAAEBAwIAHQoCCgILCgsKCwILCgoL +CgoLCgsKCwoCCwoKAgsLAAQKABIDCwoLCgMLAwoDCgsKCwMDDQ0eBQQKqQkD +Cg8FAAD/BQAJDQMCCgILCgoLAAMKAQsDCgEDBAoABAsKCgMECgELAwoAFQMK +CwMKAwoLCgoDCgsKCgsLAwMNDgAzDwAFBgEAAAEABAIDCgAMCwoKAgsKCgML +CgsDAwoAEwMKCgsKAwoKCwILCwoLCgoDCgsAAwoACQsKCwsDAwwNDQAfBQQK +qQkDCg8FAAD/BQADDQICAAMKAB0CCwoCCwMKCwoLCgoDCwoLAgsLCgMKCwoD +CgsKAwAECgAOCwoKCwoDCgoLCwIDBA4DDwEOMA8ABQYEAQABAAMCAAYKAgIK +AgsFCgADCwILAAQKAAQLCgoLBAoAGAsKCgsCCwoDCwoLCgsKAwoLCgMDBQ0F +Bh8FBAqpCQMKDwUAAP8FABEFAgoKAgsKCwoLCgsKAwoDCwADCgAWAwoKCwIL +CgsKAwsKAwoLCgsKCwoLAwMKAAcLCgsCAwMNADUPAAUHBgQBAQAEAgUKAAQC +CwoLAwoABQsCCwoLAAMKABgLAgsKCgsCCwoKCwoLCgoLAwoDCwoDCwwDDSEF +BAqpCQMKDwUAAP8FABYEAgoCCwsKCgILCgMKCgsKCgMKCwoDBAoAAwsCCwAE +CgAUAwoDCgoDCwoKCwoLCgsLAwMNDg4zDwAGDgcGBgQBBAIABQoCCwILAAMK +AAYCCwILAgsDCgECAQsECgELBAoAEQsKAwoKAwsKCgsKAwsDBQ0NACMFBAqp +CQMKDwUAAP8FADMECgIKCgILCgsKCwoKCwoKCwoKAwsLCgMLAwoKCwoDCwoL +CgsKCwoKAwsCCwoLCwoCBQ0ANQ8BDgEHAwYEAgEKAQIECgECCQoBAgELAwoA +BQsKCgsCAAMLBAoBCwMKAAkDCgMLAwwNBQYAIwUECqkJAwoPBQAA/wUABQQC +CgILAAMKAQMDCgALCwoLCgMKCwoKAgsAAwoBCwEDBAoACAMKCgMKCgsDAwoD +CwAFAgMDDQ4AAw8BDjEPAQ4EBgUCAA4KCgIKAgsKAgoCCgIKAgQKAAQCCwIL +BQoADQILCwoLCgMLCgsKCwMAKAUECqkJAwoPBQAA/wUBBAECAwoBCwQKAAYL +AwoLAgsDCgAfAwoLCgoLAwoLCgMLCgsDCgsKCwMKCgMLCgsCCwMEDgA2DwEH +BAYBBAMCAAMKAgsABAoACwIKAgoCCgIKAgoCAAcKAAcLCwoKCwILAAMKAAUD +CgoLAwApBQQKqQkDCg8FAAD/BQAKBAIKAgsCCwsKAwUKAQsBCwMKAAQLCgoD +AwoBAwMKABMDCgsKAwoLCgoDCgoLCwoDAwcOAAQPAQ4xDwEHBAYDAgAVCgIL +AgsCCgIKAgoCCgICCQIJAgoCAAQKAAULCgILCwADCgAJCwoLCgsLAwUNACgF +BAqpCQMKDwUAAP8FAQQBAgUKAAYCCwoKCwMDCgAhAgsLCgoCCwsKAwsKAwsK +CwoDCwoLCgoDCgsKCgIDAw0OADYPAQ4BBwQGAQQDAgEKAQIDCgAIAgoCAgkC +AgkEAgAHCQIKAgsCCwAECgAMAgsKCwoDCgsDAwwNKQUECqkJAwoPBQAA/wUA +BgQCCgIKAgQKAAUCCwoKCwADCgAHAgsKCgsCCwAFCgEDAwoACAMKAwsDCgMK +AwsABAMEDg42DwEOAQcEBgMCAwoABgsCCgICCgwCABcJAgoKAgsKCwoKCwIL +CgsKAwwNDQUFBgAmBQQKqQkDCg8FAAD/BQAEBQICAwQKAQIFCgAHAgsKCwoK +CwAECgAWAwoLCgsKCgMLCgsKCwoLCgoLCgIDDTkPAQcEBgAGBAIKAgoCAwoB +AgEKDgIBCQECAwoAAwsCCwAECgAGCwoDAw0NKgUECqkJAwoPBQAA/wUABwUE +AwICCgIABQoAIwILCgoCCgILAgsLCgoLCgoDCgMLCgoDCgsCCwoCCwsDAw0O +ADgPAQ4BBwQGAAgDAgIKCgsKChMCAAMKAgsAAwoACQsKCwMKCwMFDQArBQQK +qQkDCg8FAAD/BQAQBQcNBAIDAgMCAgMCCgIKAgYKABICCwoKAwsKCwoKAwsK +CwoLCgoDCwADAgMOADkPAQ4BBwQGAAoEAgoKAgoCCgIKBgIACAECAQECAQIB +BAIAAwkCCwADCgAHCwMKCgMDDQAsBQQKqQkDCg8FAAD/BQMFAAcHBQQFBAMD +AAUCACAKAgoKAgoKCwoDCgoDCgMLCgsCCwMKCgsLCgsCAw0ODjkPAQcEBgAI +AwIKAgoLCgoGAgQBBAAEAQMCAAwKAgsKAwoLCgsLDA0sBQQKqQkDCg8FAAD/ +BQYFAAcNBgUNBgUDAAQCABwKAgoCCgILCgsLCgsKCgMKCwoLCgsKAgsKAwQO +Ow8BBwQGAAwEAgoKCwoCCgIJAgIDAQoAAQEBAQMCAAsKAgsKCgMKCgMFDQAD +BQEGKAUECqkJAwoPBQAA/wULBQAIBw0FAwICCgIFCgALAgsCCwoDCwoLCgMA +BAoABgsLAwQNDjwPAQcDBgAIAwIKCgILCgoEAgEBDgAADAECAgoLCgMKCwoL +Ay4FBAqpCQMKDwUAAP8FDAUABA0HDQQDAgAZCgIKAgoLCgoLCgoDCgMKCgsD +CgsKAwMNDgA+DwAPBwcGBAMKAgsLCgIKAgIBABAAAQEDAgAICwoLCgoLAw0t +BQQKqQkDCg8FAAD/BQ8FAAYGBQICCgIDCgALAgsLCgMLCgsKCwMAAwoABQML +AwQOAEEPAAMODAIAAwoABwILCgICAQEAEQAABAECCwoFCwEDAQ0tBQQKqQkD +Cg8FAAD/BREFAAYEAwICCgIDCgARAgsKCgMKAwoLCgMLCwMMDg4AQQ8ADA4F +AwoCCwsKAgsCARMAAAoBAgsCCwsDCwMNLQUECqkJAwoPBQAA/wUSBQAYBAIK +AgoCCgoLCgoLCgsKCwMKCwoDAw0OBA8BDhIPAAMOBw4AKA8ADA4FAgoKCwIL +CwICARQAAAoBCgsLAwsLAw0ELAUECqkJAwoPBQAA/wUSBQAXDQQCCgIKAgoC +CwoDCgMKAwsKCwMDBQ0AGA8DBygPAAUOBQMKAgADCwAEAgsCARUAAAgBCwML +AwsDDS0FBAqpCQMKDwUAAP8FFAUADAMCCgIKCwoKAwoDCwQKAAULAwMNDgAY +DwMHKA8ADA4FAgoKCwsCCwsCARUAAAsBAgoLCwMFDQUFBgAqBQQKqQkDCg8F +AAD/BRMFABYNBAIKAgoCCwoLCgsKAwsDCwMCDQ4OGA8AAwcHDgAoDwAMDgUD +AwoLCwMLAgIBFgABAQMDAAMMDQ0ALQUECqkJAwoPBQAA/wUUBQADDQMCAAQK +AwsACgoLCgsLCgIEBw4ZDwMHKA8ABA4NAwMFCwADCgIBABcAAAUBAQQNDQAu +BQQKqQkDCg8FAAD/BRQFABINBQMKCgMLCgMKCwoLCgICAQIbDwADBwcOACkP +AQ4BBQcDAAMCAQEAEwABAQQAAAMCBg0ALgUECqkJAwoPBQAA/wUWBQARBAIL +CgoDCwMKCwoLAgEABAcABA8BDhUPAwcqDwAIDg0FBQwEDAIDARIAAwEDAAAD +AQQEAC4FBAqpCQMKDwUAAP8FFQUAEQYEAgoDCwoDCgMLCgIBAAAEABsPAAMH +Bw4AKw8GDgAEBgEAAREAAAQBAQYBBAABBAEELgUECqkJAwoPBQAA/wUVBQAN +BAIBAQoCCwoLCwICAQADAAEEAQcaDwMHMQ8ABgcBAAABAQ4AAAUBAQYCAQAE +AAEBAQYuBQQKqQkDCg8FAAD/BRUFAAYEAQABAgIDCgADAgIBAAQAAQQBBxoP +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 +AQoKAgEEBwYHAAAGAQEGAgEBBgABBEsFBAqpCQMKDwUAAP8FNQUBBgECBAAA +BgEEAgIBARICAQoJAgEEBAYBAQYAAAMBAQYAAwEGAAECAQZLBQQKqQkDCg8F +AAD/BTYFAQIEAAAEAQICAQQCAAgKAwMLAwsCCwoCAAMKAgoABgIABQMEBgIB +AAYAAQEBBAMBBgABAQEETAUECqkJAwoPBQAA/wU1BQEGAQQEAAAEAQECAQMC +AAwKAwsLAwsDAwsDCwsLAgEKBwIBAQYABAEHAAADAQQEAEwFBAqpCQMKDwUA +AP8FNQUBBAECBAABAQEBAwIAEgoLCgsLAwsLAwsLAwsCCwsCCwYCAAUKAgoC +CgADAgEBAQEGAAEBAQEJAAEBAQZNBQQKqQkDCg8FAAD/BTUFAQYBBAQAAQEB +AQMCABUKAgsDCgsLAwsLAwsDCwsDCwILAgsABQIACAoCCgIKAgIBEQABAgEG +TQUECqkJAwoPBQAA/wU1BQEGAQIDAAEBAQEDAgAGCgoLCgoDBQsABQMLAwsD +AAMLAAQDCwILBAIACAsCCgIKAgIBEAABAQEETgUECqkJAwoPBQAA/wU2BQEC +AwAEAgAICgIKAgsKCwoECwAIAwsDAwsDCwMDCwADAwsDAAQCAAMLAgoAAwIQ +AAEBAQROBQQKqQkDCg8FAAD/BTUFAQQBAQMAAQEDAgEKAQIDCgANCwoLCgML +AwsDCwMLAwADCwECAwsAAwILAwADAgAGCwIKAgIBDwABAgEGTgUECqkJAwoP +BQAA/wU1BQEGAQIDAAQCAAcKCgILCgsKAAYLAQMBCwMDAQsBAwMLAQIDCwEC +AQsFAgADCgIBAA4AAAMBBAQATgUECqkJAwoPBQAA/wU1BQEEAQEDAAEBAwIB +CQECAwoACwsKCgsKAwsDCwMLAAMDAQsBAwMLAQMECwAIAgsCAgsCAgEOAAEB +AQRPBQQKqQkDCg8FAAD/BTUFAQQBAQQAAQEDAgAICgILCgoDCwoECwEDAQsE +AwAFCwMLCwMABAsACAMLCwILAwsCDwABAQEETwUECqkJAwoPBQAA/wU1BQEE +AQEEAAAMAQECAgoCCwoKCwoDAwsAAwMLCwAIAwMLAQIDCwAGAwsDAwIBDwAB +AQEETwUECqkJAwoPBQAA/wU1BQEEAQEFAAEBAwIDCgAHAwoKCwoLAwADCwED +AQsDAwAFCwMLCwIABAsABgILAwMCARAAAQIBBk8FBAqpCQMKDwUAAP8FNQUB +BAEBBgAADwQCAwIKAgsKCwMLCgsLAwADCwEDAQsFAwMLAAcCCwMLAwIBABEA +AQEBB08FBAqpCQMKDwUAAP8FNQUBBAEBBQAABQEHDQICAAMKAAUDCgsKAwAF +CwEDAQsEAwQLAAgCCwMDBA0NBBEAAQIBBk8FBAqpCQMKDwUAAP8FNQUBBAEB +BAAAJgEGBwYCAQICCgoLCgsLCgMLCwMLCwMLAwsLAgsCCwICBwcODwcEEAAB +AlAFBAqpCQMKDwUAAP8FNQUBBAUAABMBBwcEAAABAgIKAgILCgoLCwMLAAMC +AwsADgILAgEBAAABBw8HDwcBDwABBAEETwUECqkJAwoPBQAA/wU1BQEGBQAA +BAQHBgEDAAEBAQEDAgAGCgMLCwILAwIABwsCCwICAQEABQAABgEHDw8HBg8A +AQQBBE8FBAqpCQMKDwUAAP8FNQUBBAQAAAQBBgcBBgABAgMDAA0LCwILCwIL +AgIDBAIBAAgAAAYCBw8PBgEOAAEEUAUECqkJAwoPBQAA/wU0BQEGAQQEAAAD +AQcGAAcAAAMBBwQAAwIBCwQCAAUBAgYHAgAJAAAGAQYPDgYBDgABBlAFBAqp +CQMKDwUAAP8FNQUBBAQAAAMBBwYABAAABwEBAAIHBwIABgEABgAAAgYHBAkA +AAYBBgcPBwEOAAENUAUECqkJAwoPBQAA/wU0BQEGAQIEAAADAgcBAAQABAEA +BA8HAQEGAAAFAQYGDwQACQAABgEGBw8HBA0AAQEBBlAFBAqpCQMKDwUAAP8F +NQUBAgQAAAMEBgEABAAABwIBAQIHDwQABQAABwEAAQYHDwYACQAABgEGDw8H +AQ0AAQEBBlAFBAqpCQMKDwUAAP8FNQUBAQQAAAMGBgEABAAABwYBAQYPBwEA +AwADAQAGAAEGBw8GBgAACQEBAAEHDw8HAgANAAEBAQZQBQQKqQkDCg8FAAD/ +BTUFAQEEAAADAgcBAAMAAAgEBgABBw8HBAcAAAYBBgcPBwEEAAAKAQECAAIH +DwcGAQ0AAQEBBlAFBAqpCQMKDwUAAEkFAQbpBQEHAQEEAAMGAwADAQAFBgcP +BwEABwAABgEGBw8HBgQAAAUBBgEBBgADDwEGAQENAAEBUQUECqkJAwoPBQAA +PwUBBvMFAQYBAQQAAA4CBwcBAQAAAQIHDwcHAQcAAAoBBgcHDwcBAQAAAwEA +BgYHDw8GAQ4AAQFRBQQKqQkDCg8FAABCBQEEAQ3wBQEBBAAADQEGBwcGBgQG +BwcPDwYACAAAEwEGBw8PBwcEAQABAQYHDwcHBgEADgABAVEFBAqpCQMKDwUA +AEEFBQ0HBQEG5QUBBgEBBAABAQMGAQcFDwADBwYBAAkAAAQEBgcHAw8EBwAG +Dw8HBgYBDwABAVEFBAqpCQMKDwUAAEAFAQ0BDQMMAw3rBQEGAQEEAAADAQQE +AAMGAwcDBgoAAQEDBgMHAAYPBw8PBwcDBhAAAQEBDVAFBAqpCQMKDwUAAD8F +AAoNDAwLCwMMDA0N6wUBAQUAAQEJBgEBCwABAQwGAAMCAQEADwABAgEGUAUE +CqkJAwoPBQAAPgUAAw0MAwAFCwADAwwNAOoFAQYBAQUAAQEBAQYGAAMCAQEA +CwABAQECCwYBBBEAAQQBBFAFBAqpCQMKDwUAAD0FAAMNDAMABwsAAwMNDQDp +BQEGAQEGAAEBAQIFBgAEAQAAAQsAAAQBAQYCCAYBAQEBEAABBAEEUAUECqkJ +AwoPBQAAPAUAAw0NDAAJCwADDA0NAOkFAQEHAAAEAQECAgMBAAMAAQEADQAA +AwEEAgAGBgAEAQEAAQ8AAQRRBQQKqQkDCg8FAAA8BQENAQwLCwADDAUNAAoF +AQbcBQEGAQEKAAEBAwABAQEBEAAACwECAgEGAQIBAAEBAA4AAQEBBFEFBAqp +CQMKDwUAADoFAAQGBQ0MDAsABAMMDg0KBQEG2gUBBgEBDQADARMAAQEBAQMA +AwEOAAEBAQZRBQQKqQkDCg8FAAA7BQADDQ0DAAgLAQoECwAEAwwNDQsFAQbZ +BQEBCwADARkAAwEPAAEBAQ1RBQQKqQkDCg8FAAA7BQENAQMPCwAFAwwMDQ0A +4gUBBgEBJwABAQEBEAABAgEGUQUECqkJAwoPBQAAOwUBDRALAAYKCwMMBQ0L +BQEG1QUBBgEBOAAAAwEEBABRBQQKqQkDCg8FAAA6BQENAQwPCwEKAwsABQoD +DA0NAN8FAQYBATgAAQEBBFIFBAqpCQMKDwUAADoFAQ0BDBELAQoECwAEAwMN +Dd4FAQE4AAEBUwUECqkJAwoPBQAAOwUBDA8LAAQKCwsKBQsABQMMBQ0NANoF +AQYBATcAAAMBBAQAUgUECqkJAwoPBQAAOwUVCwEKAwsABAoLAwwDDQ4FAQbJ +BQENAQE3AAEBAQZTBQQKqQkDCg8FAAA6BQEMFgsACwoLCgsLCgsDDAUNAA8F +AQbHBQEEAQE3AAECAQZTBQQKqQkDCg8FAAA5BQENAQwVCwANCgsKCwsKCwsK +CwMMDAADDQ8FAQbEBQEENwABBlQFBAqpCQMKDwUAADoFAQwQCwEKCAsADgoL +CwoLCwoLAwMMBQ0NDwUBBsIFAQQBASQAAQEQAAECAQZUBQQKqQkDCg8FAAA6 +BQEDEgsADQoLCwoLCwoLCwoLCwoAAwsACAoDAwwMBQUNDwUBBr8FAQYBASMA +BQEMAAEBAQRVBQQKqQkDCg8FAAA4BQENAQUaCwEKBQsADQoLCgsKCwoLAwwF +BQ0ADwUBBr0FAQQBAiMABwEKAAECAQZVBQQKqQkDCg8FAAA4BQEOAQwRCwEK +AwsAGwoLCwoLCwoLCwoLCwoLCgsKCwoLCgMDDAUNDQDLBQEEAQEiAAMBAQYE +AQgAAQEBBlYFBAqpCQMKDwUAADgFAQ0BDBoLABgKCwsKCwsKCwoLCgsKCwoL +CgsLCgMMBQUDDQ8FAQa2BQEGAQEiAAAFAQIGAQYAAwEIAAEEAQRWBQQKqQkD +Cg8FAAA4BQENAQMVCwAiCgsLCgsLCgsLCgsLCgsKCwoLCgsKCwoLCgsKAwwM +BQ0FDQ8FAQa1BQEEAQEhAAMBAQYEAQcAAQIBBlcFBAqpCQMKDwUAADgFAQ0S +CwEKCAsAIAoLCwoLCwoLCgsLCgsLCgsKCwoKCwoKCwoDAwwFBQ0NwgUBBgEC +IQAABwEBBgIGAQEABwABAQEGWAUECqkJAwoPBQAANgUAAwYFDQAVCwAdCgsL +CgsKCwsKCwsKCwoLCwoLCgsKCwoKCwoLCgsAAwoACAsKCwMMBQ0NEQUBBq8F +AQQBASAABwEGAAEBAQRZBQQKqQkDCg8FAAA4BQENHAsABAoLCwoDCwANCgsK +CwoLCgsKCwoKCwAECgAJCwoKCwoLAwMMAAMFAQ0BDQ4FAQauBQEGAQEgAAQB +BwAAAwEEBABZBQQKqQkDCg8FAAA3BQENAQUTCwEKAwsAIAoLCgsKCwsKCwsK +CwoLCgsKCwoLCgoLCgsKCwoLCgoLBQoACAsDAwwMBQ0NEQUBBqoFAQQBASkA +AAMBBAQAWgUECqkJAwoPBQAANwUBDQEMHAsAHQoLCwoLCwoLCwoLCgsKCwoL +CgoLCgoLCgoLCgoLAAcKAwMBDAQNEQUBBqYFAAMGBAEAJwAAAwEEBABbBQQK +qQkDCg8FAAA3BQENAQwVCwEKAwsAHAoLCgsLCgsLCgsKCwoLCgsKCwoLCgsK +CgsKCgsFCgAJCwoKCwoKCwoLAAQDBAUBDRAFAQalBQADBAEBACQAAQEBBF0F +BAqpCQMKDwUAADcFAQ0BDBILAQoECwEKBAsAHAoLCwoLCwoLCgsKCwoLCgsK +CgsKCwoKCwoLCgsHCgELCAoAAwMDDAC4BQADBAQBACEAAAMBAgYAXgUECqkJ +AwoPBQAANwUBDQEMGAsACQoLCwoLCgsLCgADCwAKCgsKCwoLCgsKCwMKAAML +CgsABQoBCwMKAQsNCgMDAAUMBQUNDQCxBQAEBAQCAR4AAAMBBAQAXwUECqkJ +AwoPBQAANgUAAw0NDAAVCwEKAwsBCgQLABMKCwsKCwoLCgsKCwoLCgsKCwoL +AAQKAAMLCgsAFwoDAwAEDAUNDQsFAQakBQAEBAQCARoAAQEDBGAFBAqpCQMK +DwUAADcFAQ4BAxELAQoFCwEKAwsAGgoLCgsLCgsLCgsKCwoLCgsKCwoKCwoK +CwoLBQoBCxcKAwMABQwMBQUNAAYFAQ0BDQkFAQadBQAEBgQCARMAAAQBAQIG +ZAUECqkJAwoPBQAANgUAAw0NDAATCwEKBgsBCgQLABoKCwsKCwsKCwoLCgsK +CwoLCgoLCgsKCgsKCx0KAwMBDAMFAQ0BDawFAAQGBAQCBAEABwAAAQAAAQAA +BAEBAgMEZgUECqkJAwoPBQAANgUAAw0NDAAVCwEKAwsAGAoLCwoLCgsLCgsL +CgsKCwoLCgsKCwoKCwMKAQsJCgELEwoABQkKCQoJAAMKAAUDCgMMBAAEBQAD +DQ0HABIFAQaVBREEaQUECqkJAwoPBQAANgUAAw0NDAARCwEKBQsBCgMLAQoD +CwEKAwsAGQoLCgsKCwoLCgsKCgsKCwoLCgoLCgsKCgsAHAoABwkKCgkJCgoA +BAMBBQQNEgUBBpYFAAoGBQUEBQUGBQUGbQUECqkJAwoPBQAANwUBDQEMEwsB +CgYLAQoDCwATCgsLCgsKCwoLCgsKCwoLCgsKCwADCgELJQoBCQQKAQkDCgMD +AQwDBQENAQ3/BR0FBAqpCQMKDwUAADYFAAMNDQwAFQsBCgMLABUKCwsKCwsK +CwsKCwsKCwoLCgsKCgsAAwoACAsKCwoKCwoLHgoABAkKCgkDCgAOCQoKCQoJ +CgkKCgMDBQwDBQEN/wUZBQQKqQkDCg8FAAA3BQENAQwRCwEKBQsBCgMLABsK +CwsKCwsKCwoLCgsKCwoLCgsKCwoLCgsKCgsABAoBCyEKAQkDCgEJAwoAEQkK +CgkKCgkDAgMMAwQFBQ0NAP8FFAUECqkJAwoPBQAANgUAAw0HDAATCwEKBgsA +BwoLCwoLCwoAAwsACgoLCgsKCwoLCgsDCgAECwoKCwMKAQsFCgELGgoBCQQK +AQkDCgAUCQoJCgkKCQkKCQoKCQoDCgMMBAUDDf8FEAUECqkJAwoPBQAANwUB +DQEMFgsAIAoLCwoLCwoLCwoLCgsKCwoLCgsKCwoLCgsKCwoKCwoLJQoBCQQK +AAoJCgoJCgoJCgkKBQkABgoJCgkKCQQDAAMMBQ0A/wUNBQQKqQkDCg8FAAA3 +BQENAQwRCwAECgsLCgULAQoDCwEKBAsAEAoLCgsKCwoLCgsKCgsKCgsDCgAG +CwoLCgoLGgoABAkKCgkDCgAKCQoJCgoJCgoJCgMJAAUKCQoJCgALCQALCgID +DAwEDQ0FDQ0A/wUEBQQKqQkDCg8FAAA3BQEHAQUZCwEKAwsAGQoLCwoLCgsL +CgsKCwoLCgsKCwoKCwoLCgsAJQoBCQUKAA8JCgoJCgkKCQoKCQoKCQoAAwkB +CgUJAAYKCQkKCQoEAwADBQUEAAQFAQ39BQQKqQkDCg8FAAA4BQENFwsBCgML +AQoDCwASCgsKCwsKCwoLCgsKCwoLCgoLAwoBCwMKAQsgCgEJBAoADAkKCQoK +CQoJCgkKCgMJAAQKCQkKBAkAAwoJCgADCQEKBwkAAwMJCQADAwEEAQUFDfgF +BAqpCQMKDwUAADgFAQ0RCwAECgsLCgQLAAYKCwsKCwoECwARCgsKCwoLCgsK +CwoKCwoLCgsAAwoABAsKCgsDCgELHQoBCQUKAQkDCgEJAQoDCQEKAwkABgoJ +CgoJCgMJAAMKCQoAAwkBCgwJAAQCCQIDAwUACA0NBwUFDQUN7gUECqkJAwoP +BQAAOAUBDRYLAQoDCwEKBAsAEAoLCgsKCwoLCgsKCwoLCgsDCgAECwoKCyEK +AAQJCgoJBAoACwkKCQoJCgkKCgkKAAMJAAsKCQoJCgkKCQoJCgAECQEKEwkB +AgEJAwMBDAoFAQ3nBQQKqQkDCg8FAAA4BQENAQwRCwEKBgsABgoLCwoLCgML +ABcKCwsKCwoLCgsKCwoKCwoLCgsKCgsKCwAlCgEJBQoAAwkKCQADCgAICQoJ +CgkKCQoICQEKBgkBChQJAAgCCQMCAwMEDAMFAw3kBQQKqQkDCg8FAAA6BQEM +EgsABAoLCwoDCwEKAwsAEgoLCgsKCwoLCgsKCwoLCgsKCwMKAQsFCgELHgoB +CQMKAQkDCgADCQoJAAMKAAkJCgkKCQoJCQoAAwkABwoJCQoJCQoABAkBCiAJ +AQIDAwAHAgQFBQ0FDQDeBQQKqQkDCg8FAAA6BQEMFwsBCgQLAQoECwANCgsK +CwoLCgsKCwoKCwADCgELAwoBCwQKAQseCgEJBAoBCQMKABUJCgkKCgkKCQoJ +CgkKCQoJCQoJCQoAAwkBCgMJAQoZCQEIAwkABQgJCQgCAAMJAAkCCQICAwMM +DAQABAUBDQcFAQ3MBQQKqQkDCg8FAAA5BQADDQUMAA8LAQoECwEKAwsAGAoL +CgsLCgsKCwsKCwoLCgsKCwoLCgsKCwMKAAQLCgoLHAoABAkKCgkFCgEJAwoA +FQkKCQoKCQoJCgkKCQoJCgkJCgkJCgADCQEKCQkBCh4JAQgDCQAOCAkJAgkC +CAIDAwIDBAwFBQAHBw0FDQUNDQDGBQQKqQkDCg8FAAA5BQAEDQUMAxALAQoF +CwEKAwsAEAoLCwoLCwoLCgsKCwoLCgsDCgELAwoBCwcKAQsdCgAECQoKCQMK +ABkJCgkKCgkKCQoJCgkKCQoJCQoJCgkJCgkKAAMJAQoeCQEIEgkACggJCQgJ +AgkCCQIDAwAFBAMFBQ0AxgUECqkJAwoPBQAAOgUABQ0NBQwDAAsLAAkKCwoL +CwoLCwoAAwsAFAoLCwoLCwoLCgsKCwoLCgsKCwoLAwoBCwMKAQsGCgELGQoB +CQYKABMJCgoJCgoJCgkKCQoJCgkKCQkKAAMJAQoFCQEKBQkBChUJAAQICQkI +AwkBCAQJAA4ICQgJCAkICQgJCAkJCAQJABEICQkICQkICQIIAgIDAgQMBAAF +BQENuwUECqkJAwoPBQAAPAUABA0NDAwTCwAaCgsKCwsKCwsKCwoLCgsKCwoL +CgoLCgoLCgsDCgAECwoKCyIKAB4JCgkKCgkKCgkKCgkKCQoJCgkKCQoJCgkK +CQkKCQoECQEKIgkBCAwJAAYICQkICQgDCQAGCAkICQkIBAkAEQgJCAkICQII +AgMCDAQEBQUNAAMFAQ2xBQQKqQkDCg8FAAA9BQAFBw0NBQwADwsBCgQLAAQK +CwsKAwsADQoLCgsKCwoLCgsKCgsABAoBCwYKAQsaCgEJAwoBCQUKABcJCgoJ +CgoJCgkKCQoJCgkJCgkJCgkJCgAECQEKIQkBCAQJAQgDCQAKCAkICQgJCAkJ +CAQJAAMICQgAAwkAHggJCAkICQgJCAkICQgJCAkICQgICQIIAgkDDAQFBK8F +BAqpCQMKDwUAAEAFAQcDBQEMAQMGCwAECgsLCgMLABsKCwoLCwoLCgsKCwoL +CgsKCwoLCgoLCgoLCgsAAwoBCyAKAQkECgAZCQoJCgoJCgkKCQoJCgkKCQoJ +CgkJCgkJCgADCQEKBAkBCiAJAQgDCQEICQkBCAMJAC0ICQgJCAkICQgJCAkJ +CAkICQgJCAkICAkICQgJCAkICQgCCAIICQIJAwIDAwIABQUBDQgFAQ2aBQQK +qQkDCg8FAABDBQMNAAMFDAMACQsBCgMLAQoECwAQCgsLCgsKCwoLCgsKCwoK +CwUKAAQLCgoLIgoBCQUKABYJCgoJCgoJCgkKCQoJCgkKCQkKCQkKAwkBCgUJ +AQoZCQEICQkABwgJCAkICQgABAkAJggJCAkICQkICQkICQgJCAkICQgJCAkI +CQgICQgICQgJCAkICQgJBAgABgkICAkCCQMCAAQDBAMEAwUBDQENmwUECqkJ +AwoPBQAARQUBBwMNAAQFDAwDCAsAGgoLCwoLCgsKCwoLCgsKCwoLCgoLCgsK +CwoLGgoBCQgKAAMJCgkABAoAFAkKCQoKCQoJCgkKCQoJCgkJCgkKAwkABAoJ +CQoeCQEIBQkABggJCQgJCAkJAAMICQgABgkAJwgJCQgJCQgJCQgJCAkICQgJ +CAkICQgJCAgJCAgJCAgJCAgJCAkICQADCAAJCQgJCAkICQIIAAMCAAQEBQUN +lwUECqkJAwoPBQAASAUBBwMNAwUABQwMAwsDAAMLABEKCwoLCgsLCgsKCwoK +CwoKCwAICgELJgoBCQQKAA4JCgkKCgkKCQoJCgkJCgMJAAUKCQoJCgADCQAE +CgkJCicJAAcICQgJCAkIAAQJACcICQgJCAkJCAkICQgJCAkICQgJCAkICQgJ +CAkICAkICAkICAkICAkAEggBCQQIAAcCCAIMBAMEAJEFBAqpCQMKDwUAAE0F +AAYNBQUNBQUDDAEDAwsAFQoLCgoLCgsKCwoLCgsKCwoLCgsKCwAECgAFCwoL +CgsAFQoBCQUKAAMJCgkAAwoAFAkKCQoJCgoJCgkKCQoJCQoJCgkKBgkBCgcJ +AQoaCQEIBAkABAgJCQgJCQADCAkIAAMJADQICQkICQgJCAkICQgJCAkICQgJ +CAkICAkICQgJCAkICQgICQgICQgJCAkICQgJCAgJCAgJCQgAEQkIAggCCQID +AgMEDAUEBQ0NAIUFBAqpCQMKDwUAAFEFAAQNBw0OAw0AFAUMDAMDCwsKCwoL +CwoKCwoKCwoLBQoABQsKCwoLABUKAQkDCgEJCAoBCQMKABUJCgkKCQoJCgkK +CQoJCgkKCQkKCQoABAkABAoJCQofCQEICQkABggJCQgJCAMJACgICQgJCQgJ +CQgJCAkICQgJCAkICQgJCAkICQgICQgJCAgJCAgJCAgJEAgBCQMIAQkNCAAK +AggCCAIDAgQEBQQNfgUECqkJAwoPBQAAWQUBBwMNAQUDDAMDAAQLAwoLBwoB +Cx0KAQkECgEJAwoBCQQKABMJCgoJCgoJCgkKCQoJCgkJCgkKAAQJAQofCQEI +BwkABwgJCQgJCQgAAwkBCAUJAQgECQAyCAkICQgJCQgJCAkICQgJCAkICQgI +CQgJCAkICAkICAkICAkICAkICQgJCAkICAkICAkdCAAKAggCAgUEBQUNDXkF +BAqpCQMKDwUAAFsFAAQHBQ0NBQUDDAAHAwMLCgMKCwAECgELHAoAAwkKCQAG +CgATCQoJCgoJCgoJCgkKCQoJCgkJCgADCQADCgkKAAQJAQoECQEKAwkBChcJ +AQgMCQEIAwkALAgJCAkJCAkICQgJCQgJCAkJCAkICQgJCAkICQgJCAkICQgI +CQgJCAgJCAgJEggBCR8IAwIBBAEEdwUECqkJAwoPBQAAYgUBDQQFAAQNBQ0F +AwwAAwMKAwAeCgAJCQoKCQoJCgoJAAQKABIJCgoJCgkKCQoJCQoJCgkKCQoF +CQEKAwkBCiAJAAoICQkICQkICQkIBAkBCAMJADkICQkICQkICQgJCQgJCAkI +CQgJCAkICQgJCAkICAkICQgJCAgJCAgJCAgJCAkICQgJCAkICAkICAkAKAgA +AwIIAgADBAAEBQcFDWwFBAqpCQMKDwUAAGwFAQcDDQAEBQ0MDAQDEAoBCQgK +AQkHCgAUCQoJCgkKCQoJCgkKCQoJCQoJCQoDCQEKBAkBCi0JAAMICQgAAwkA +KggJCQgJCQgJCQgJCAkICQgJCAkICQgJCAkICAkICQgICQgJCAkICAkICRoI +AQkiCAAGAggCAgQEawUECqkJAwoPBQAAcAUABA0HDQ4DDQAGBQUEBQwMAwMA +BQsKAwoJAAUKAQkICgEJAwoBCQgKABAJCgoJCgkKCQoJCQoJCgkKAwkBCgYJ +AQoZCQEIAwkABAgJCQgDCQADCAkIAAYJACEICQkICQkICQkICQkICQgJCAkI +CQgJCAkICQgJCAgJCAkABQgBCQUIAA0JCAgJCAkICQgICQgJAAgIAQktCAMC +AQRmBQQKqQkDCg8FAABzBQADBwUNAAQFAAMNBQcABQUEDAAMAwMKAwoDCgkK +CQoJBAoBCQMKABMJCgkKCQoJCgkKCgkKCQoJCgkKAAMJAQoECQADCgkKACUJ +AQgFCQAzCAkICQgJCQgJCQgJCAkICQgJCAkJCAkICQgJCAkICQgJCAkICQgJ +CAkICQgJCAkICQgJAA0IAQk3CAMCAQQBBGEFBAqpCQMKDwUAAIEFAAcNBQ0F +DQcNAAQFACcMDAMDCgMKAwkDCQoJCQoJCgkKCQoJCgkJCgkKCQoJCgkKCQoJ +CQoAJAkBCAMJAQgFCQEIBwkAJAgJCQgJCQgJCQgJCQgJCAkICQgJCAkICQgJ +CAgJCAkICAkICQMIAQkGCAAICQgJCAkICAkGCAEJOggABAICBARdBQQKqQkD +Cg8FAACLBQEHAw0BBQENBAUACwMMAwwDAwkKCgkKAAgJAQonCQEICAkBCAUJ +AQgECQAmCAkICQgJCQgJCQgJCQgJCQgJCQgJCAkICQgJCAkICQgJCAkICAkD +CAAKCQgJCAgJCAkICQoIAQlCCAAFAgIEBAYAWAUECqkJAwoPBQAAkwUACAcF +DQUNBw0NBQUBDAYDDgkBCh8JAQgHCQEIAwkAAwgJCAAFCQEIAwkAIAgJCQgJ +CQgJCAkICQgJCAkICQgJCAkICAkICAkICQgJBAgBCQcIAAcJCAkICQgJAAMI +AQlECAAGAgQEBwUHUwUECqkJAwoPBQAAoAUFDQMFAQwBBAQMBAMBCQEDHgkB +CAUJAAQICQkIAwkABAgJCQgDCQAyCAkICQgJCAkJCAkJCAkICQgJCAkICQgJ +CAkICQgJCAkICQgJCAkICAkICQgICQgJCAkPCAEJQwgBAgEEVAUECqkJAwoP +BQAAogUBBwUFAAcHBQ0NBQcNAAYFAQwBBQcDJwkBCAUJACgICQkICQkICQgJ +CAkICQgJCAkICQgJCAkICQgICQgJCAgJCAgJCAgJBggACQkICQgICQgICQAH +CAEJQwgAAwIEBABRBQQKqQkDCg8FAACxBQADBw0NAAMFAAQNBQUNBAUABAwF +DAQDDAAHAgMJAgkJAgAICQAPCAkJCAkJCAkICQkICQkIAAUJAB4ICQgJCAkI +CAkICQgJCAkICQgJCAkICQgJCAkICAkECAADCQgJAAMIAQkDCAADCQgJAAwI +AQlKCAADAgQEAE8FBAqpCQMKDwUAAMQFAQ0BBwYNAAsFDQUEAgQCAwIDAwAI +CQAJCAkJCAkICQkIAAoJABkICQgJCAkICQgJCAkICQgJCAkICQgJCAkJAAMI +AAcJCAkICQgJAAQIAAYJCAkICAkDCAEJAwgBCUoIAQIBBE4FBAqpCQMKDwUA +AM8FAQcHDQAPBQQFBAUEDAQMAwIDAgMCAAMJAQgBCQcIBAkAGAgJCAkICQgJ +CAkICAkICAkICAkICAkICQkIAQlaCAEEAQdNBQQKqQkDCg8FAADRBQEHBQUA +CgcFDQUNBQUHBQ0IBQAGAwQDDAMFAwMAJAgCCAIICQIICQgJCAkICQgJCAkI +CQkICQgJCAkICQgJCAkICQMIAAgJCAkICAkICVAIAQIBBE4FBAqpCQMKDwUA +APEFAQ0JBQAJAggJCAIICQgCAAwIAAMJCAkAAwgAAwkICQAECAEJBAgABAkI +CAlLCAEETwUECqkJAwoPBQAA9AUBBwYFABYHDQcHDQcNBw0NBAIEAgQDAgQC +BAgCAwgBCVoIAAMCBQcATwUECqkJAwoPBQAA/wUHBQAWBwUNDQUNDQUNBAUE +BQUEBQUEBQUCAwcCAQMBAkQIAAMCCAIAAwQBBQENUAUECqkJAwoPBQAA/wUb +BQEGCQUAHQQFBAQFAwQFBAUDBAUDBAQDAggCCAIIAggCCAgCAAMIAQIFCAEC +EAgBAgUIAQIEBAAEAgQFBFcFBAqpCQMKDwUAAP8FNgUAAwQFBgAGBQEGBAUB +BgQFAQYDBQAKBgUFBgUFBgUFBgMFAQYDBQAEBgUFBgYFAQRZBQQKqQkDCg8F +AAD/BcIFBAqpCQMKDwUAAP8FwgUECqkJAwoPBQAA/wXCBQQKqQkDCg8FAAD/ +BcIFBAqpCQMKDwUAAP8FwgUECqkJAwoPBQAA/wXCBQQKqQkDCg8FAAD/BcIF +BAqpCQMKDwUAAP8FGQUBBlkFAQZOBQQKqQkDCg8FAAD/BcIFBAqpCQMKDwUA +AP8FAAYEBgUEBga8BQQKqQkDCg8FAAA7BQA6BAUFBAUEBQQFBAUEBQQFBAUE +BQQFBAUEBQQFBAUEBQQFBAUEBQQFBAUEBQQFBAUEBQQFBAUEBQQFBAgFAB4E +BQUEBQQFBAUEBQQFBAUEBQQFBAUEBQQFBAUEBQQKBQAZBAUEBQQFBAUEBQQF +BAUEBQQFBAUEBQQFBAAMBQAZBAUEBQQFBAUEBQQFBAUEBQQFBAUEBQQFBAAZ +BQEGAwQACgICBAICBAQGBQQPBQATBAUEBQQFBAUEBQQFBAUEBQQFBAAHBQAU +BAUFBAUEBQQFBAUEBQQFBAUEBQQPBQAYBAUFBAUEBQQFBAUEBQQFBAUEBQQF +BAUEUwUECqkJAwoPBQAAOAUBBAEGPgQEBSEEBAUBBgEGHQQIBR0EAQYTBQAE +DQUGAgMBBQADAQAEAgYEDQsFAQYXBAAFBQUGBAYAFgQKBQEGGwQBBlAFBAqp +CQMKDwUAADkFAQI9AAEEAQQDBSAABAUBBAEBHQABBAEEBgUBBh0AAQEBBhEF +AAMGAgEAEAABAQMEBwUBBAEBFQABAQMEAQIXAAEEAQQJBQEBGwAAAwEEBABO +BQQKqQkDCg8FAAA4BQEGAQE8AAADAQQEAAMFIAAEBQEGAQEdAAECAQYGBQEG +AQEcAAEBAQYPBQAEBgUBARMAAQEDBAUFAQQBARUAAAUBBAUEBAAXAAEEAQQJ +BQEBGwABAQEEAwUBBksFBAqpCQMKDwUAADkFAQI9AAEEAQQDBSAABAUBBAEC +HQABBAEEBgUBBh0AAQEQBQEEAQEXAAEBAwQDBQEEAQEVAAAFAQQFBgIAFwAB +AgEGCQUBARsAAQEBBE8FBAqpCQMKDwUAADgFAQQBATwAAAMBBAQAAwUgAAQF +AQQBAR0AAQIBBgYFAQQdAAEBAQYNBQADBAQBABoAAAcBBAQFBAQBABUAAAUB +BAUEAgAXAAEEAQQJBQEBGwABAQEETwUECqkJAwoPBQAAOAUBBAECPQABBAEE +AwUgAAQFAAMEAQEAHAABBAEEBgUBBAEBHAABAQEGDQUBBAECHQABAQMEAQEV +AAAHAQQFBAIAAQAUAAADAQQEAAkFAAMCAQEAGQABAQEETwUECqkJAwoPBQAA +OAUBBAECAwE5AAADAQQEAAMFAAQEAgECAwESAAAIAQECAQIEAgYEBQAHBAIC +AQIBAQASAAAEAQECAgMEBgUABwYEAgECAQEAEQAABQEBAgECAAMEDQUBBB8A +AAQBAgQBDwADAQECAQEDBAAEBQUEBAQBDQADAQADAgYEAAoFAAUGBAQCAQAS +AAMBAQIDBE8FBAqpCQMKDwUAADkFBgQAAwICAQARABgBDAABBAEEAwUBBgEF +BQQBAQ8AAQEBAgUEAQUBBAUFAQYBBQUEAQEPAAAHAQIGBAQFBAAJBQUEAQIB +AQ8AAQEFBAEFAQYNBQEEAQEhAAEBDwABAQUEAQUBBAQFAQYBBQMEAQIBAgoA +AAcCBgQEBQUGAA0FAQQBBBEAAQIEBFIFBAqpCQMKDwUAAEAFAAMEBAEAEAAB +AhcEAQEKAAADAQQEAAkFAAMGBAEADgABAQENEwUBBAEBDgABAQENEwUBBgEC +DgABAQEEFAUBBDIAAQIRBQEEAQIJAAEBAQYTBQEEEAAABAIGBQZUBQQKqQkD +Cg8FAABCBQEEEAABBAEEFgUBBAsAAQQBBAsFAQEOAAEEAQQTBQEGAQEOAAEC +AQYUBQECDgABAQEGEwUBBAEBMQAAAwEEBAARBQADBAEBAAgAAQIBBBAFAAMG +BAEADwABAQEEVwUECqkJAwoPBQAAQgUBBBAAAQQBBBcFAQEJAAADAQQEAAsF +AQEOAAEEAQQTBQEEAQEOAAEEAQQUBQEEDgABARQFAQQBARMAAAQBAgIGAwQB +AgEEAwESAAADAQQEABEFAAMGBAEACAAAAwEEBAAPBQEEAQIQAAEEAQRXBQQK +qQkDCg8FAABCBQEEAQEPAAEEAQQXBQEBCgABBAEECwUBAQ4AAQQBBBMFAQQB +AQ4AAQQBBBMFAQQBAg4AAQEBBhIFAQYBBBIAAQEDBAgFAAYGBAQCAQEPAAEE +FAUBBAkAAQEBBg4FAQQBBBAAAQIBBlgFBAqpCQMKDwUAAEIFAQQQAAEEAQQW +BQEGAQIJAAADAQQEAAsFAQEOAAEEAQQTBQEGAQEOAAECAQYUBQEEDgABARQF +AQIRAAADAgYEAA0FAwQBAQ0AAAMBBAQAFAUBAgkAAQIBBA0FAQQBAQ8AAQEB +BFkFBAqpCQMKDwUAAEIFAQQBAQ8AAQQBBBcFAQIKAAEEAQQLBQEBDgABBAEE +EwUBBAEBDgABBAEEEwUBBgEEDgABAQEGEgUBBgEBEAABAgEGEQUBBAEBDQAA +AwEEBAAUBQEEAQIJAAEEAQQKBQADBAQCAA8AAAMBBAQAWQUECqkJAwoPBQAA +QgUBBBAAAQQBBBYFAQQBBAkAAAMBBAQACwUBAQ4AAQQBBBQFAQEOAAEEAQQU +BQECDgABARMFAQQBAQ8AAQETBQEEAQENAAADAQQEABUFAQQBAQgAAQEBBAsF +AQQQAAECAQZaBQQKqQkDCg8FAABCBQEEAQEPAAEEAQQXBQEEAQEJAAEEAQQL +BQEBDgABBAEEEwUBBgEBDgABAgEGEwUBBgEEDgABAQEGEgUBBAEBDwABAgEG +EgUBBAEBDQAAAwEEBAAWBQEECQABAgEGCAUAAwYEAQAPAAEBAQRbBQQKqQkD +Cg8FAABCBQEEEAABBAEEFwUBBAEBCAAAAwEEBAALBQEBDgABBAEEEwUBBAEB +DgABBAEEFAUBBA4AAQESBQADBAQBAA4AAQEBBBMFAQQBAQ0AAAMBBAQAFgUB +BgEECQABBAgFAQQBAg8AAQEBBFwFBAqpCQMKDwUAAEIFAQQBAQ8AAQQBBBcF +AQQBAQkAAQQBBAsFAQEOAAEEAQQTBQEEAQEOAAEEAQQTBQEEAQIOAAEBAQYS +BQEEDwABAQENEgUAAwQEAQANAAADAQQEABgFAQIBAQcAAQEBBAcFAQQPAAAD +AQIGAFwFBAqpCQMKDwUAAEIFAQQQAAEEAQQXBQEEAQEIAAADAQQEAAsFAQEO +AAEEAQQTBQEGAQEOAAECAQYUBQEEDgABARIFAQQBAg8AAQIUBQEEAQENAAAD +AQQEABgFAAMEAQEABwABAQEEBQUBBAEBDwABAQEGXQUECqkJAwoPBQAAQgUB +BAEBDwABBAEEFwUBBAECCQABBAEECwUBAQ4AAQQBBBMFAQQBAQ4AAQQBBBQF +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 +BAAbBQEEAQEWAAECAQRkBQQKqQkDCg8FAABCBQEEEAABBAEELwUBAQ4AAQQB +BBQFAQEOAAEEAQQUBQEEDgABARIFAQQBAg4AAQEBBBQFAQQBAQ0AAAMBBAQA +GQUAAwYEAQAPAAEBCAABBAEEYwUECqkJAwoPBQAAQgUBBAEBDwABBAEELwUB +AQ4AAQQBBBMFAQYBAQ4AAQIBBhMFAQQBAg4AAQEBBhIFAQQOAAADAQQEABMF +AQQBAQ0AAAMBBAQAGgUBAg8AAAMBBAIABwABAQEEYwUECqkJAwoPBQAAQgUB +BBAAAQQBBC8FAQEOAAEEAQQTBQEEAQEOAAEEAQQUBQEEDgABARIFAQQBAg4A +AQEBBBQFAQQBAQ0AAAMBBAQAFwUABAYFBAEPAAAEAgYEAQcAAQEBBmIFBAqp +CQMKDwUAAEIFAQQBAQ8AAQQBBC8FAQEOAAEEAQQTBQEEAQEOAAEEAQQTBQEG +AQEOAAEBAQQSBQEEDgABAQEEFAUBBAEBDQAAAwEEBAAYBQEEAQEPAAEBAwUB +BAEBBwABAgEGYQUECqkJAwoPBQAAQgUBBBAAAQQBBC8FAQEOAAEEAQQTBQEG +AQEOAAECAQYTBQEEAQIOAAEBAQYSBQECDgAAAwEEBAATBQEEAQENAAADAQQE +ABcFAQQBAg8AAAgBBAQFBQQCAQcAAQIBBmAFBAqpCQMKDwUAAEIFAQQBAQ8A +AQQBBC8FAQEOAAEEAQQTBQEEAQEOAAEEAQQTBQEEAQEOAAECAQQRBQEGAQQO +AAEBAQQUBQEEAQENAAADAQQEABcFAQQQAAECAQYEBQEEAQEHAAEBAQRgBQQK +qQkDCg8FAABCBQEEEAABBAEELwUBAQ4AAQQBBBQFAQEOAAEEAQQSBQEGAQQP +AAEBAQYSBQECDgAAAwEEBAATBQEEAQENAAADAQQEABYFAQQBAQ8AAQEGBQEG +AQQIAAEBYAUECqkJAwoPBQAAQgUBBAEBDwABBAEELwUBAQ4AAQQBBBMFAQYB +AQ4AAQIBBhIFAQQBAg8AAQIBBhEFAQYBBA4AAQEBBBQFAQQBAQ0AAAMBBAQA +FAUAAwQEAgAPAAEBAQQIBQEECAABAQEGXgUECqkJAwoPBQAAQgUBBBAAAQQB +BC8FAQEOAAEEAQQTBQEEAQEOAAEEAQQSBQEEAQEPAAECAQYSBQECDgABAQEE +FAUBBAEBDQAAAwEEBAAVBQEEEAABAgEGCAUBBAEBCAABAgEEXQUECqkJAwoP +BQAAQgUBBAEBDwABBAEELwUBAQ4AAQQBBBMFAQQBAQ4AAQQBBBEFAQYBARAA +AQISBQEGAQQOAAADAQQEABMFAQQBAQ0AAAMBBAQAFAUBBAEBDwABAQEECgUB +BAEBBwAAAwEEBABcBQQKqQkDCg8FAABCBQEEEAABBAEELwUBAQ4AAQQBBBMF +AQQBAQ4AAQIDBgEFAQQLBQADBAQCABAAAAMBBAQAEgUBAg4AAQEBBBQFAQQB +AQ0AAAMBBAQAEgUAAwQEAQAPAAADAQQEAAoFAQQBBAgAAQEBBFwFBAqpCQMK +DwUAAEIFAQQBAQ8AAQQBBCYFAQQBBAYGAQUBAQ4AAQQBBAsFAAQEBAYEAwYA +AwQGAQAQAAECAQIDBAAMBgYEBAYFBAYGBAQBEQABAQEGDAUACAQFBQQFBQQE +DgAAAwEEBAAMBQAJBAUGBQQFBQQBAA0AAAMBBAQAEwUBBBAAAQQBBA0FAQII +AAEBAQZbBQQKqQkDCg8FAABCBQEEEAABBAEEJwUACQQBAgIBAgIBAQAOAAEE +AQQLBQAKBAQCBAIEAgQCARIAAwEACgICBAQCBAQCAgETAAEBAQ0LBQMEAAYC +BAQCBAIOAAEBAQQMBQMEAAcCBAQCBAIBAA0AAAMBBAQAEgUBBAEBDwABAQ8F +AQQBAQgAAAMCBAQAWQUECqkJAwoPBQAAQgUBBAEBDwABBAEEJwUBARYAAQQB +BAsFAAcEAQABAAABABsAAAMBAAEAFwABBAEECgUACAQEAQEAAQABEAABAQEE +DAUABwQBAQABAAEAEAAAAwEEBAAQBQADBgQBAA8AAAMBBAQADwUBBAgAAAMB +BAQAWQUECqkJAwoPBQAAQgUBBBAAAQQBBCcFAQEWAAEEAQQKBQADBAQBADoA +DQUBBAEBFQAAAwEEBAALBQEEFgAAAwEEBAAOBQAEBAUFAhAAAQQBBBAFAQQB +AggAAAUBBAYFBABWBQQKqQkDCg8FAABCBQEEAQEPAAEEAQQnBQEBFgABBAEE +CwUBBDoAAQIBBgsFAQQBBBYAAQEBBAwFAQYBARUAAAMBBAQACgUBBAEGBAQB +AQEBEAAAAwIGBAALBQMGAAQFBAIBCAAACAECBgQEBgYEUgUECqkJAwoPBQAA +QgUBBBAAAQQBBCYFAQQBARYAAQQBBAsFAQQBARYAAwEfAAEBAQQNBQEEAQEV +AAADAQQEAAsFAQYBARUAAAMBBAQACAUDBAECAwETAAAGAQEEAgYECAUAAwQC +AgADAQsAAwEABAICBgRRBQQKqQkDCg8FAABCBQEEAQEPAAEEAQQnBQAEBAEA +ARMAAQQBBAsFAAMEAQEAFQAABAIGAgEeAAECAQYNBQADBAEBABQAAQEBBAwF +AAMEAQEAFAAAAwEEBAAJBQEEAQEaAAAEAQEEBAcFAQEVAAECAQZRBQQKqQkD +Cg8FAABCBQEEEAABBAEEJwUABQYEBAEBABIAAQQBBAsFAAUGBAQCAQATAAAG +BAQFBAQBGwABAgEGDgUABQYEBAEBABIAAAMBBAQADAUABAYEAQESAAADAQQE +AAkFAQQBARwAAQQIBRYAAQIBBlEFBAqpCQMKDwUAAEIFAQQBAQ8AAQQBBCsF +AAQGBAIBDwABBAEEDwUABQYEAgEBAA8AAQQBBAMFAAMEBAEAGAABARMFAAUG +BAQBAQAPAAEBAQQQBQAEBAQCAQ8AAAMBBAQACAUBBAEEHQABBAEEBwUBARUA +AQFSBQQKqQkDCg8FAABCBQEEEAABBAEELQUDBAEBAQEMAAEEAQQRBQAGBgQE +AgEBDAABAgEGBAUABQYEBAEBABMAAAMBAQYAFgUABQQEAgEBAAwAAQEBBBIF +AAUGBAQBAQAMAAADAQQEAAkFAQQBARwAAQQIBRYAAAUCBAQFBAADBQAGBAQF +BQQERQUECqkJAwoPBQAAQgUBBAEBDwABBAEEMAUABQYEBAEBAAkAAQQBBBUF +AAUEBAIBAQAJAAEEAQQHBQAGBAQCAQABDgAAAwEEBAAaBQAFBgQCAQEACQAA +AwEEBAAUBQAFBgQEAQEACQAAAwEEBAAJBQEEAQEcAAEEAQQGBQEEAQEVAAAI +AQUEAgQEBQYIBEMFBAqpCQMKDwUAAEIFAQQQAAEEAQQyBQAFBgQEAgEABwAB +BAEEFwUDBAADAgEBAAYAAQQBBAkFAAMGBAQAAwEJAAEBAQEDBB0FAAUGBAQC +AQAHAAEBAQQXBQAGBgQEAgEBBwABBAoFAB8EBAICBAICBAICBAICBAICBAIC +BAICBAICBAICBAIGAAgFABUEAgIEAgIEAgIEAgIEAgIEAgIEAgIAAwQBAAMB +AAQFAgAAAwEAAwACBgBDBQQKqQkDCg8FAABCBQEEAQEPAAEEAQQ2BQEGCQQb +BQoEDAUBBgEFAwQABAIBAgEFBCQFAAgEBAIBAgEBAgMEGgUDBAAFAQIBAgEA +AwRIBQANAgEBBAUEAQIGBAIABABEBQQKqQkDCg8FAABCBQEEEAABBAEE/wUa +BQMEAAgBAgYEBAEBAgMBRQUECqkJAwoPBQAAQgUBBAEBDwABBAEE/wUZBQEG +AwQACwECBAIEAQAAAQAAAEUFBAqpCQMKDwUAAEIFAQQQAAEEAQT/BRoFAA8C +AQYBBAQBBAEAAgIBAAQARAUECqkJAwoPBQAAQgUBBAEBDwABBAEE/wUZBQAF +BgIAAgAAAwEACQQAAQQEAQAEBABDBQQKqQkDCg8FAABCBQEEEAABBAEE/wUa +BQECBgEACQIBAgYFBAECBgBDBQQKqQkDCg8FAABCBQEEAQEPAAEEAQT/BRoF +CgQBBQEFAwREBQQKqQkDCg8FAABCBQEEEAABBAEE/wVtBQQKqQkDCg8FAABC +BQEEAQEPAAEEAQQ1BQADBAUEAP8FNQUECqkJAwoPBQAAQgUBBBAAAQQBBDMF +AAcGBAQCBAIGAP8FMwUECqkJAwoPBQAAQgUBBAEBDwABBAEEMQUABQQEAgEB +AAMAAAQBAQQE/wUwBQQKqQkDCg8FAABCBQEEEAABBAEEMAUAAwYEAQAJAAEC +AQb/BS8FBAqpCQMKDwUAAEIFAQQBAQ8AAQQwBQEEAQIMAAEBAQT/BS4FBAqp +CQMKDwUAAEEFAQYBAhAAAQEwBQEEAQENAAECAQb/BS0FBAqpCQMKDwUAADkF +AAUEBg0GDQADBAECAQERAAEBAwQEBgEEJQUAAwQEAQAPAAEEAQT/BSwFBAqp +CQMKDwUAADkFAQQBAgYBFQADAQAFAgECBAQAJQUBBBAAAQIBBv8FLAUECqkJ +AwoPBQAAOAUBBAEBIgABASUFAQYBBBAAAQEBBP8FLAUECqkJAwoPBQAAOQUB +AiIAAQEBDSUFAQERAAEEAQT/BSsFBAqpCQMKDwUAADgFAQYBASIAAQElBQEE +AQERAAEE/wUsBQQKqQkDCg8FAAA5BQECIgABAQENJAUBBAEBEQABBAEE/wUr +BQQKqQkDCg8FAAA4BQEEAQEiAAEBJQUBBAEBEAABAQEE/wUsBQQKqQkDCg8F +AAA5BQEEIgIBBAEEJAUBBAEEEAABAQEE/wUsBQQKqQkDCg8FAAA5BQAkBgUE +BgUEBgUEBgUEBgUEBgUEBgUEBgUEBgUEBgUEBgUEBgUEJgUBBBAAAQIBBv8F +LAUECqkJAwoPBQAAgwUBBAECDgABAQEE/wUtBQQKqQkDCg8FAACEBQEEAQEN +AAECAQb/BS0FBAqpCQMKDwUAAIUFAQQBAQsAAQIBBv8FLgUECqkJAwoPBQAA +hQUABAQEAQEHAAADAQQEAP8FLwUECqkJAwoPBQAAhwUBBAEEBgEDBAADBQUG +AP8FLQUECqkJAwoPBQAAigUAAwYEBAD/BTUFBAqpCQMKDwUAAP8FwgUECqkJ +AwoPBQAA/wXCBQQKqQkDCg8FAAD/BcIFBQqoCQMKDwUAAP8FwgUFCqgJAwoP +BQAA/wXCBQUKqAkDCg8FAAD/BcIFBgqmCQQKDwUAAP8FwwUFCqYJBAoPBQAA +/wXDBQYKpAkFCg8FAAD/BcMFBwqiCQYKDwUAAP8FxAUHCqAJBgoQBQAA/wXE +BQsKmAkKChAFAAD/BcUFqwoRBQAA/wXGBakKEgUAAP8FxwWnChMFAAD/BcsF +nwoXBQAA/wX/BYIFAAD/Bf8FggUAAP8F/wWCBQAA/wX/BYIFAAD/Bf8FggUA +AP8F/wWCBQAA/wX/BYIFAAD/Bf8FggUAAP8F/wWCBQAA/wX/BYIFAAD/Bf8F +ggUAAP8F/wWCBQAA/wX/BYIFAAD/Bf8FggUAAP8F/wWCBQAA/wX/BYIFAAD/ +Bf8FggUAAP8F/wWCBQAA/wX/BYIFAAD/Bf8FggUAAP8F/wWCBQAA/wX/BYIF +AAD/Bf8FggUAAP8F/wWCBQAA/wX/BYIFAAD/Bf8FggUAAP8F/wWCBQAA/wX/ +BYIFAAD/Bf8FggUAAP8F/wWCBQAA/wX/BYIFAAD/Bf8FggUAAP8F/wWCBQAA +/wX/BYIFAAD/Bf8FggUAAP8F/wWCBQAB +==== diff --git a/keytab-lilo.pl b/keytab-lilo.pl new file mode 100755 index 0000000..1312194 --- /dev/null +++ b/keytab-lilo.pl @@ -0,0 +1,91 @@ +#!/usr/bin/perl +$DEFAULT_MAP = "us"; +$DEFAULT_EXT = ".kmap"; + +sub usage +{ + print STDERR + "usage: $0 [ -p old_code=new_code ] ...\n". + (" "x(8+length $0))."[path]default_layout[.map] ] ". + "[path]kbd_layout[.map]\n"; + exit 1; +} + + +while ($ARGV[0] eq "-p") { + shift(@ARGV); + &usage unless $ARGV[0] =~ /=/; + $table[eval($`)] = eval($'); + shift(@ARGV); +} +&usage unless defined $ARGV[0]; +load_map("def",defined $ARGV[1] ? $ARGV[0] : undef); +load_map("kbd",defined $ARGV[1] ? $ARGV[1] : $ARGV[0]); +&build_table("plain","shift","ctrl","altgr","shift_ctrl", + "altgr_ctrl","alt","shift_alt","ctrl_alt"); +for ($i = 0; $i < 256; $i++) { + printf("%c",$table[$i] ? $table[$i] : $i) || die "print: $!"; +} +close STDOUT || die "close: $!"; + + +sub load_map +{ + local ($pfx,$map) = @_; + local ($empty,$current); + + $map = $DEFAULT_MAP unless defined $map; + $map .= $DEFAULT_EXT unless $map =~ m|/[^/]+\.[^/]+$|; + if (!open(FILE,"loadkeys -m $map |")) { + print STDERR "loadkeys -m $map: $!\n"; + exit 1; + } + undef $current; + $empty = 1; + while () { + chop; + if (/^(static\s+)?u_short\s+(\S+)_map\[\S*\]\s+=\s+{\s*$/) { + die "active at beginning of map" if defined $current; + $current = $pfx.":".$2; + next; + } + undef $current if /^};\s*$/; + next unless defined $current; + s/\s//g; + $map{$current} .= $_; + $empty = 0; + } + close FILE; + return unless $empty; + print STDERR "Keymap is empty\n"; + exit 1; +} + + +sub build_table +{ + local (@maps) = @_; + local (@tmp); + + $set = 0; + for $map (@maps) { + $code = $set; + for (split(",",$map{"def:".$map})) { + die "bad map entry $_ (def, map $map)" unless /^0x\S\S(\S\S)$/; + $tmp[$code] = hex $1 unless $tmp[$code]; + $code++; + } + $set += 256; + } + $set = 0; + for $map (@maps) { + $code = $set; + for (split(",",$map{"kbd:".$map})) { + die "bad map entry $_ (kbd, map $map)" unless /^0x\S\S(\S\S)$/; + $table[$tmp[$code]] = hex $1 unless $table[$tmp[$code]]; + $code++; + } + $set += 256; + } + $table[0] = 0; +} diff --git a/lilo.lsm b/lilo.lsm new file mode 100644 index 0000000..fa399f5 --- /dev/null +++ b/lilo.lsm @@ -0,0 +1,20 @@ +Begin4 +Title: LILO +Version: 23.1 +Entered-date: 2010-11-04 +Description: Generic boot loader for Linux. Distribution + includes full source, documentation and support files. +Keywords: Linux, boot loader, LILO +Author: Joachim Wiedorn +Maintained-by: Joachim Wiedorn +Primary-site: http://lilo.alioth.debian.org/ +Original-site: http://lilo.alioth.debian.org/ +Alternate-site: http://alioth.debian.org/projects/lilo/ (developer's site) +Files: 561kB lilo-23.1.tar.gz +Platforms: Linux (>= 2.4.0), + gcc (>= 3.3.5), as86 (>= 0.16.14) needed to compile. + bcc (0.16.14) needed to compile diagnostic disk 2 & DOS *.com. + LaTeX and (optionally) Perl and Transfig needed to print the + documentation. +Copying-policy: BSD-License +End diff --git a/make.vars b/make.vars new file mode 100644 index 0000000..afa1656 --- /dev/null +++ b/make.vars @@ -0,0 +1,101 @@ +### Configuration variables for makefiles ### + +# NOTE: These variables can also be stored in a file /etc/lilo.defines, e.g. +# -DIGNORECASE -DONE_SHOT +# +# NOTE: If the file /etc/lilo.defines exists, variables configured in this +# Makefile are ignored +# +# ATARAID Detect 'dmraid' drivers (linux/drivers/raid/dm.c). +# AUTOAUTO Enable automatic generation of change rules for MS partitions; +# issue warning if "CHANGE AUTOMATIC" is assumed +# * BDATA Enable real mode gathering of system information for '-T' +# BEEP Beep after displaying "LILO". +# BOOT_FILE Append "BOOT_FILE=" to the kernel command line. +# BUG_SI_EBDA=n Compensate for BIOS's (notably early Silicon Image S-ATA) +# that use the EBDA, but don't properly allocate the space. +# (n=1..64) specifies the extra EBDA in kilobytes (default 20). +# COHERENT Make boot loaders (chain.b & mbr.b) compatible with Coherent +# by writing the boot device code to the memory copy of the PT +# * DEVMAPPER Device Mapper (aka LVM2) support (2.6 kernels only) +# * DSECS=n Set the number of Descriptor Sectors (n=1..12). Each sector +# of the descriptor table holds 9..10 descriptors. +# * EVMS Enables support for booting from EVMS volumes. Requires a +# 2.4 or 2.6 kernel patched to EVMS version 1.1.0 or later. +# HP_TTRC Insert 150ms delay for HP TTRC card. Affects 'second.S' +# * IGNORECASE Image selection is case-insensitive. Passwords are still +# case-sensitive. +# INITRDLOW Always load initial ramdisk images below address 15M, +# ignoring any 'large-memory' option in the config file. +# * LVM Enables support for booting from LVM partitions. Requires a +# 2.4 kernel (>= 2.4.7) or a 2.6 kernel. +# * MDPRAID Enable automatic marking of volumes of full volume raid +# as 'inaccessible. Add "noraid" keyword to suppress. +# NO1STDIAG Don't show diagnostic on read errors in the first stage +# boot. (not recommended) +# NODRAIN Don't drain keyboard buffer after booting. +# NOINSTDEF Don't install a new boot sector if INSTALL is not specified. +# * NOKEYBOARD Enable the 'nokbdefault' keyword, and test for booting on +# a system without a keyboard; alters default descriptor +# to be booted. Enable the 'nokbdisable' keyword also. +# NOSERIAL Don't assemble serial line support in the boot loader. +# NOVGA Don't write to Monochrome or VGA displays. +# OLD_DIRSTR Use old locations of config and boot files: (/etc/lilo) +# * ONE_SHOT Disable the command-line and password timeout if any key is +# hit at the boot prompt. +# * PASS160 Use 160-bit password hash (Secure Hash Standard, see +# FIPS PUB 180-1) instead of 64-bit CRC-32 hash +# READAHEAD Enable read-ahead on EDD disks which support the function. +# Note: no BIOS has yet been seen which supports this +# EDD revision 1.1 function. +# READONLY Don't write to disk while booting, e.g. don't overwrite the +# default command line in the map file after reading it. +# * REISERFS Compile support for parts of LILO on ReiserFS. +# Requires header files for kernel 2.4.0test8 or later. +# * REWRITE_TABLE Enable rewriting the partition table at boot time. +# * SOLO_CHAIN Assemble all chain-loader functions into 'chain.b', +# eliminating the need for 'os2_d.b'. +# SUSPEND= Modify 'vmdefault' action if this partition type on C: drive +# is marked active; (Dell suspend partition is -DSUSPEND=0x84). +# USE_TMPDIR Create temporary devices in $TMPDIR if set +# * VERSION Prints version string at LILO boot prompt. +# * VIRTUAL Enable 'vmdefault', 'vmdisable', 'vmwarn' keywords; feature +# requested by VMware users (new, experimental) +# XL_SECS=n Support for extra large (non-standard) floppies. + +CONFIG=-DBDATA -DDSECS=3 -DEVMS -DIGNORECASE -DLVM -DNOKEYBOARD -DONE_SHOT \ + -DPASS160 -DREISERFS -DREWRITE_TABLE -DSOLO_CHAIN -DVERSION -DVIRTUAL \ + -DMDPRAID -DDEVMAPPER + +# set the following if you wish LILO.COM to be installed +DOS_DIR=/dosC/boot + +# select place for man pages +MAN_DIR=/usr/share/man + +# set the compiler optimization level +OPT=-Os + +### End of configuration variables for makefiles ### + + +# +# Do not modify anything below this point +# + +SBIN_DIR=/sbin +CFG_DIR=/etc +BOOT_DIR=/boot +USRSBIN_DIR=/usr/sbin +BUILTIN=1 + +PCONFIG=$(KVER) $(HDM) $(LILO) `( if [ -r $$DESTDIR/etc/lilo.defines ]; then \ + cat $$DESTDIR/etc/lilo.defines; else echo $(CONFIG); fi ) | \ + sed 's/-D/-DLCF_/g'` +LILO=-DLILO=0xbb920890 +KVER=`if [ -f /usr/include/linux/version.h ]; then echo -DHAS_VERSION_H; fi` +HDM=`if [ -f /usr/include/libdevmapper.h ]; then echo -DHAS_LIBDEVMAPPER_H; fi` +DEVMAPPER=`if [ -f /usr/include/libdevmapper.h ]; then echo "-ldevmapper"; fi` + +TMP=_TmP_ + diff --git a/man/Makefile b/man/Makefile new file mode 100644 index 0000000..05ae551 --- /dev/null +++ b/man/Makefile @@ -0,0 +1,25 @@ +# -*- makefile -*- + +# adding variables +include ../make.vars + +all: + +install: + mkdir -p $$DESTDIR$(MAN_DIR)/man5 + mkdir -p $$DESTDIR$(MAN_DIR)/man8 + + install -m 0644 lilo.8 $$DESTDIR$(MAN_DIR)/man8 + install -m 0644 mkrescue.8 $$DESTDIR$(MAN_DIR)/man8 + install -m 0644 lilo.conf.5 $$DESTDIR$(MAN_DIR)/man5 + install -m 0644 keytab-lilo.8 $$DESTDIR$(MAN_DIR)/man8 + +clean: + +distclean: + +uninstall: + rm -f $$DESTDIR$(MAN_DIR)/man8/lilo.8 + rm -f $$DESTDIR$(MAN_DIR)/man8/mkrescue.8 + rm -f $$DESTDIR$(MAN_DIR)/man5/lilo.conf.5 + rm -f $$DESTDIR$(MAN_DIR)/man8/keytab-lilo.8 diff --git a/man/keytab-lilo.8 b/man/keytab-lilo.8 new file mode 100644 index 0000000..d5f4e90 --- /dev/null +++ b/man/keytab-lilo.8 @@ -0,0 +1,102 @@ +.\" '\" t +.\" This page is based on the lilo docs/source, which carry the following +.\" COPYING condition: +.\" +.\" LILO program code, documentation and auxiliary programs are +.\" Copyright 1992-1994 Werner Almesberger. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms of parts of or the +.\" whole original or derived work are permitted provided that the +.\" original work is properly attributed to the author. The name of the +.\" author may not be used to endorse or promote products derived from +.\" this software without specific prior written permission. This work +.\" is provided "as is" and without any express or implied warranties. +.\" +.\" Original version of this manpage: +.\" Peter Maydell (pmaydell@chiark.greenend.org.uk), 03/1998 +.\" +.TH "KEYTAB-LILO.PL" "8" "April 1998" "" "" +.SH "NAME" +keytab\-lilo \- compile keytables files for use with LILO +.SH "SYNOPSIS" +.B /usr/sbin/keytab\-lilo +.RB [ \-p +.I R old_code = new_code ] +.RB ... +.RI [ default_layout ] " kbd_layout" +.SH "DESCRIPTION" +.LP +.B keytab\-lilo +is a program which compiles keytable definitions (in the format +specified in +.BR keytables(5) ) +into a format which can be used by +.B lilo(8) +to set the keyboard type when booting +[using the +.B keytable +parameter in +.BR /etc/lilo.conf ]. + +.I kbd_layout +should be the name of a map file which specifies the desired +keyboard layout. This file may be a +.B gzip(1) +compressed map. If no file extension is given, +.B .map.gz +is assumed. If the full pathname is not specified, +.B /usr/share/keymaps/ +is assumed. + +Since +.B lilo +essentially needs to know the differences between +the BIOS keyboard mapping and the one you require, the +.I default_layout +file should contain a +.B keytables(5) +file for the BIOS default mapping. If no +.I default_layout +file is specified, +.B us.map.gz +is used. + +.B keytab\-lilo +writes the output translation table as a binary string to standard +output, so you should redirect it to a suitable file. +.B lilo +has no particular restrictions on the name of keyboard translation +files, but the suggested naming convention and location is +.BI /boot/ mapping .ktl +(where +.B .ktl +stands for "Keyboard Table for Lilo"). +.SH "OPTIONS" +.TP +.B \-p +.I R old_code = new_code +.br +Specifies corrections ("patches") to the mapping obtained from the +translation table files. E.g. if pressing the upper case "A" should +yield an at sign, \-p 65=64 would be used. The \-p option can be +repeated any number of times. The codes can also be given as +hexadecimal or as octal numbers if they are prefixed with 0x or 0, +respectively. + +.SH "EXAMPLES" +.TP +.B keytab\-lilo dvorak >/boot/dvorak.ktl + +This is the most common form of invocation; it simply compiles the +given map file (in this case dvorak) and puts the result in +.BR /boot/dvorak.ktl . + +.SH "AUTHOR" +Werner Almesberger (almesber@bernina.ethz.ch). +.br +Peter Maydell (pmaydell@chiark.greenend.org.uk) wrote this manual page. +.SH "SEE ALSO" +.BR lilo (8), +.BR keytables (5), +.BR gzip (1) diff --git a/man/lilo.8 b/man/lilo.8 new file mode 100644 index 0000000..9309925 --- /dev/null +++ b/man/lilo.8 @@ -0,0 +1,496 @@ +'\" t +.\" @(#)lilo.8 1.0 950728 aeb +.\" This page is based on the lilo docs, which carry the following +.\" COPYING condition: +.\" +.\" LILO program code, documentation and auxiliary programs are +.\" Copyright 1992-1998 Werner Almesberger. +.\" Extensions to LILO, documentation and auxiliary programs are +.\" Copyright 1999-2005 John Coffman. +.\" All rights reserved by the respective copyright holders. +.\" +.\" Redistribution and use is subject to the terms set forth in +.\" the file COPYING in the source directory. +.\" +.\" Original version, Andries Brouwer (aeb@cwi.nl), 950728 +.\" Added t directive, as Daniel Quinlan asked, 950824 +.\" Added L switch, John Coffman, 991118 +.\" Added T switch, John Coffman, 001001 +.\" Added p switch, John Coffman, 010402 +.\" Added x switch, John Coffman, 010409 +.\" Added A switch, John Coffman, 010417 +.\" Added M switch, John Coffman, 010417 +.\" Added g switch, John Coffman, 010526 +.\" Added z switch, John Coffman, 010829 +.\" Added E switch, John Coffman, 020409 +.\" Added B,F & X switches, John Coffman, 020418 +.\" Added "k" option to I switch, John Coffman, 020609 +.\" Added Z switch, John Coffman, 030314 +.\" Added I switch options "D" and "a", John Coffman, 030513 +.\" Added I switch option "R", John Coffman, 041116 +.\" Added H switch, John Coffman, 050927 +.\" +.TH LILO 8 "07 Oct 2005" +.SH NAME +lilo \- install boot loader +.SH SYNOPSIS +Main function: +.LP +.B " /sbin/lilo" +\- install boot loader +.LP +Auxiliary uses: +.LP +.B " /sbin/lilo -A" +\- activate/show active partition +.br +.B " /sbin/lilo -E" +\- edit header or update a bitmap file +.br +.B " /sbin/lilo -I" +\- inquire path name of current kernel +.br +.B " /sbin/lilo -M " +\- write a Master Boot Loader on a device +.br +.B " /sbin/lilo -q" +\- query map +.br +.B " /sbin/lilo -R" +\- set default command line for next reboot +.br +.B " /sbin/lilo -T" +\- tell more about specified topic +.br +.B " /sbin/lilo {-u|-U}" +\- uninstall LILO boot loader +.SH DESCRIPTION +.LP +.B lilo +installs a boot loader that will be activated the next time you boot your +system. The default configuration file +.I "/etc/lilo.conf" +(see 'man lilo.conf') will contain most options, but many, including +those which override the +configuration file, may be specified on the command line. +.LP +.TP +.BI "\-\^A " "master-device [ N ]" +Used with a single argument, inquire of active partition on device +.IR master-device ; +e.g., \fI/dev/hda\fP. With N==0, deactivate all partitions on the device. With +N in the range [1..n], activate the specified partition and deactivate all +others. Normally, only primary partitions [1..4] may be activated, but if +the Extended Master Boot Loader is present on the Master Boot Record +of the device +(see the \fI-M\fP option), any partition may be made active. Whether the +actual OS in the partition will boot from an extended partition depends on +the characteristics of the OS. LILO boot records for Linux +may be booted from an extended partition. +.TP +.BI "\-\^b " bootdev +Specify the boot device; i.e., where the boot loader will be installed. +"\-b /dev/hda" specifies the Master Boot Record; "\-b /dev/sdb5" specifies +the first extended partition on the second SCSI disk. +.TP +.BI "\-\^B " bitmap-file +Specify a bitmap file for the boot-time graphics screen, preferably one +already pre-processed with the 'lilo \-E' command. +.TP +.B "\-\^c" +Enable map compaction. This will merge read requests from adjacent +sectors. Speeds up the booting (especially from floppy). +.TP +.BI "\-\^C " config-file +.B lilo +Specify an alternate pathname for the configuration file. +This option overrides the use of the default configuration file, +.IR "/etc/lilo.conf" . +.TP +.BI "\-\^d " delay +Specifies the delay time in tenths of a second (20 = 2 sec) before +automatically booting the first image. Gives you time to interrupt the +automatic boot process with Shift, Alt, Ctrl, ScrollLock, or CapsLock. If +interrupted, the `boot:' prompt is displayed. This switch is overridden by +the appearance of +.I prompt +in the configuration file. +.TP +.BI "\-\^D " label +Use the kernel with the given label, instead of the first one +in the list, as the default kernel to boot. +.TP +.BI "\-\^E " filename.ext +If \fB.ext\fP is \fB.bmp\fP, then take the file to be a bitmap graphic file +for use in the "bitmap=" configuration file directive. Enter an interactive +editor to create or update the color/placement information in the +bitmap file LILO header. (see 'bmp-colors', 'bmp-table', and 'bmp-timer' +on the man page for 'lilo.conf(5)'.) +.sp +If \fB.ext\fP is \fB.dat\fP, then take the file to be a configuration file which +specifies bitmap graphic parameters, which are transferred into the LILO +header in the bitmap file of the same name. +.sp +When a \fB.bmp\fP file is modified using a graphics editor (e.g., GIMP), the +LILO header will be lost. It can be restored using the \fB.dat\fP file, +which is used as a text-based backup for the LILO header information. +.TP +.BI "\-\^f " disk-tab +Specify disk geometry parameter file. (The default is +.IR /etc/disktab .) +.TP +.BI "\-\^F" +Override boot sector check for filesystems (e.g., swap, XFS, ...) which might be +destroyed by the installation of the LILO boot sector on the first sector of +the partition. These filesystems use the first sector as a superblock. + +Compare with "\-P ignore", which bypasses certain partition table checks. +.TP +.BI "\-\^g" +Generate cylinder/head/sector (geometric) disk addresses. Limited to +cylinders up to 1023. Forces compatibility with older versions of LILO. +.TP +.BI "\-\^H" +Override fatal halt when a RAID array does not have all disks active. +.TP +.BI "\-\^i " boot-loader +Specify a file to be used as the new boot loader. (The default is +.IR /boot/boot.b .) +.TP +.BI "\-I " "label [D|a|i|k|r|R]" +.B label +is taken to be the name of an image specified in the configuration file. +This command will print the path name of the corresponding kernel file, keytable +file, initial ramdisk file, root specification, or "append=" +string ("i", "k", "r", "R", or "a" option). +The "D" option ignores the +.B label +parameter, and prints the default "image=" label, or first "image=" label +if no default +.BI image +is specified. +.TP +.BI "\-\^l" +Generate 24-bit linear sector addresses instead of cylinder/head/sector +addresses. +.TP +.BI "\-\^L" +Generate 32-bit Logical Block Addresses instead of cylinder/head/sector +addresses, allowing +access to all partitions on disks with more than 1024 cylinders. +.TP +.BI "\-\^m " map-file +Use specified map file instead of the default. +.TP +.BI "\-\^M " "master-device " "[mbr|ext]" +Install a Master Boot Record on the device specified as +.IR master-device , +selecting the Standard or Extended Master Boot Loader per the option. +The primary partition table on +.I master-device +is undisturbed. If no valid Volume-ID (serial number) +is present, then generate one +and write it to the MBR. If \fBmbr\fP is specified, the Standard Master +Boot Loader +will search partitions 1-4 for an active flag, and boot the flagged +partition. Only one active flag is allowed. If \fBext\fP is specified, the +search for an active partition will include extended partitions as well. +The presence of the Extended Master Boot Loader on the +Master Boot Record (MBR = sector 0) of a disk +affects the operation of the \fI-A\fP option. +.TP +.BI "\-\^p" +Require interactive entry of all passwords specified as +.B """""" +in the configuration file. +.TP +.BI "\-\^P " "{fix|ignore|\}" +Fix or ignore `corrupt' partition tables, i.e., partition tables +with linear and cylinder/head/sector addresses that do not correspond. +Always try +.I -P ignore +first, as +.I -P fix +will re-write the partition table, possibly destroying all partitions +on the disk. + +.I -P ignore +is also used to bypass the partition table check for partition types within +the partition table which +might not allow the installation of a LILO boot sector. Compare with the +"\-F" flag, which overrides the check of the actual boot sector. + +.I "-P " +allows the passing of any global option which may appear in the global +section (top) of the configuration file (/etc/lilo.conf). For instance, +.I -P nowarn +will pass the "nowarn" option, just as though "nowarn" appeared in the +configuration file (same as the "\-w" switch). Similarly, +.I -P timeout=50 +will add or override the "timeout=" line in the configuration file. Note +that the general +.I -P +switch actually duplicates a number of command line option switches. +However, it is not strictly the same as some switches whick cause an +override of other options; e.g., "\-g" (\-P geometric), "\-L" (\-P lba32). +.TP +.B \-\^q +List the currently mapped files. +.B lilo +maintains a file, by default +.IR "/boot/map" , +containing the name and location of the kernel(s) to boot. +This option will list the names therein. Use with \fB-v\fP for +more detailed information about the installed boot loader. +.TP +.BI "\-\^r " root-directory +Before doing anything else, do a \fIchroot\fP to the indicated +directory. The new root directory must contain a +.I /dev +directory, and may need a +.I /boot +directory. It may also need an +.IR /etc/lilo.conf " file." +.TP +.BI "\-\^R " "command line" +This option sets the default command for the boot loader the next +time it executes. The boot loader will then erase this line: this +is a once-only command. It is typically used in reboot scripts, +just before calling `shutdown \-r'. Used without any arguments, it will +cancel a \fIlock\fP-ed or \fIfallback\fP command line. +.TP +.BI "\-\^s " save-file +When +.B lilo +writes a new boot sector, it preserves the former contents of the sector +in a file, named by default \fI/boot/boot.NNNN\fP, +where NNNN is the hexadecimal representation of the major and minor +device numbers of the drive/partition. This option specifies the backup +save file in one of three ways: a save directory (default is '/boot') using +the default filename 'boot.NNNN' in the specified directory; a pathname template +to which '.NNNN' is appended (default would be '/boot/boot'); +or the full pathname of the file, which must include the correct '.NNNN' +suffix. When used with the +\fB-u\fP option, the full file pathname must be specified. +.TP +.BI "\-\^S " save-file +Normally, +.B lilo +will not overwrite an existing boot sector save file. This options says +that overwriting is to be forced. As with \fB-s\fP, the specification may be of a +save directory, pathname template, or full pathname (which includes the '.NNNN' +suffix.) +.TP +.BI "\-\^t " +Test only. Do not really write a new boot sector or map file. +Use together with \fB-v\fP to find out what +.B lilo +is about to do. +.TP +.BI "\-\^T " option +Print out system information, some of it extracted from the system +bios. This is more convenient than booting the LILO diagnostic +floppy on problem systems. +.I option +may be any one of the following: +.IP +.nf + help - print a list of available diagnostics + ChRul - list the partition types subject to + Change-Rules + EBDA - list Extended BIOS Data Area information + geom= list drive geometry for bios drive; + e.g., geom=0x80 + geom - list drive geometry for all drives + table= list the primary partition table; + e.g., table=/dev/sda + video - list graphic modes available to boot + loader +.fi +.TP +.BI "\-\^u " [device-name] +Uninstall \fIlilo\fP by copying the saved boot sector back. +The '\-s' and '\-C' switches may be used with this option. +The \fIdevice-name\fP is optional. A time-stamp is checked. +.TP +.BI "\-\^U " [device-name] +Idem, but do not check the time-stamp. +.TP +.B "\-\^v" +Increase verbosity. Giving one to five \fB-v\fP options +will make lilo more verbose, or use, \fB-v\fP \fIn\fP (n=1..5) to +set verbosity level '\fIn\fP'. +.TP +.B "\-\^V" +Print version number. +.TP +.B "\-\^w" +Used as \fB-w\fP or \fB-w-\fP, suppress warning messages. +Used as \fB-w+\fP, override \fInowarn\fP in +the configuration file, and show warning messages. +.TP +.BI "\-\^x " option +For RAID installations only. The option may be any of the keywords +.IR none , +.IR auto , +.IR mbr , +.IR mbr-only , +or a comma separated list of additional boot devices (no spaces allowed in +the list). +.TP +.BI "\-\^X" +Reserved for LILO internal use. May produce different +output for different LILO versions. The line beginning "CFLAGS=" +will contain the compiler options used to generate this version of LILO. +.TP +.B "\-\^z" +When used with the `\-M' switch, clears the Volume-ID. Usually used +in the following sequence to generate a new Volume-ID: +.nf + lilo \-z \-M /dev/hda + lilo \-M /dev/hda +.fi +.br +.TP +.BI "\-\^Z " option +Tells the boot installer whether special precautions need to be taken +because the BIOS fails to pass the correct device code in DL (\-Z0). Or may +specify that the BIOS always gets DL right (\-Z1). Corresponds to, and +overrides, the configuration file option 'bios-passes-dl='. +.LP +The above command line options correspond to the key words +in the config file indicated below. +.IP +.TS +l l. +\-b bootdev boot=bootdev +\-B file.bmp bitmap=file.bmp +\-c compact +\-d dsec delay=dsec +\-D label default=label +\-i boot-loader install=boot-loader +\-f file disktab=file +\-g geometric +\-l linear +\-L lba32 +\-m mapfile map=mapfile +\-P fix fix-table +\-P ignore ignore-table +\-s file backup=file +\-S file force-backup=file +\-v [N] verbose=N +\-w nowarn +\-x option raid-extra-boot=option +\-Z option bios-passes-dl=option +.TE +.SH "BOOT OPTIONS" +The options described here may be specified at boot time on +the command line when a +kernel image is booted. These options are processed by LILO, and are +removed from the command line before it is passed to the kernel, +unless otherwise noted. +.LP +.TP +.BI lock +Locks the command line, as though 'lock' had been specified in 'lilo.conf.' +.TP +.BI "mem=###[,K,M,G]" +Specifies the maximum memory in the system in bytes, kilobytes, megabytes, +or gigabytes. +This option is not removed from the command line, and is always passed to +the kernel. +.TP +.BI nobd +Suppresses the BIOS data check. This option is reserved for use with +non-IBM-compliant BIOS's which hang with the lines: +.sp +.nf + Loading............... + BIOS data check +.fi +.TP +.BI "vga=[ASK,EXT,EXTENDED,NORMAL,###,0x###]" +Allows overriding the default video mode upon kernel startup. +.br +.SH BOOT ERRORS +The boot process takes place in two stages. The first stage loader is a +single sector, and is loaded by the BIOS or by the loader in the MBR. It +loads the multi-sector second stage loader, but is very space limited. When +the first stage loader gets control, it types the letter "L"; when it is +ready to transfer control to the second stage loader it types the letter +"I". If any error occurs, like a disk read error, it will put out a +hexadecimal error code, and then it will re-try the operation. All hex +error codes are BIOS return values, except for the lilo-generated 40, 99 and 9A. +A partial list of error codes follows: +.br +.IP +.TS +l l. +00 no error +01 invalid disk command +02 address mark not found +03 disk write-protected +04 sector not found +06 floppy disk removed +08 DMA overrun +0A bad sector flag +0B bad track flag +20 controller failure +40 seek failure (BIOS) +40 cylinder>1023 (LILO) +99 invalid second stage index sector (LILO) +9A no second stage loader signature (LILO) +AA drive not ready +FF sense operation failed +.TE +.br +.LP +Error code 40 is generated by the BIOS, or by LILO during the conversion of +a linear (24-bit) disk address to a geometric (C:H:S) address. On older +systems which do not support lba32 (32-bit) addressing, this error may also +be generated. Errors 99 and 9A usually mean the map file (\-m or map=) is +not readable, likely because LILO was not re-run after some system change, +or there is a geometry mis-match between what LILO used (lilo \-v3 to +display) and what is actually being used by the BIOS (one of the lilo +diagnostic disks, available in the source distribution, may be needed to +diagnose this problem). + +When the second stage loader has received control from the first stage, it +prints the letter "L", and when it has initialized itself, including +verifying the "Descriptor Table" \- the list of kernels/others to boot \- it +will print the letter "O", to form the full word "LILO", in uppercase. + +All second stage loader error messages are English text, and try to +pinpoint, more or less successfully, the point of failure. +.br +.SH INCOMPATIBILITIES +.B lilo +is known to have problems with the +.I reiserfs +introduced with the 2.2.x kernels, unless the file system is +mounted with the 'notail' option. This incompatibility has been +resolved with reiserfs 3.6.18 and lilo 21.6. +.I reiser4 +introduced with the 2.5.x kernels requires lilo 22.5.2 or later. +.sp +Beginning with version 22.0, RAID installations write the boot record to +the RAID partition. Conditional writing of MBRs may occur to aid in making +the RAID set bootable in a recovery situation, but all default actions may +be overridden. Action similar to previous versions is +achieved using the `\-x mbr-only' switch. +.SH BUGS +Configuration file options `backup' and `force-backup' +should specify a backup directory or backup file pathname template on +all RAID installations. Use of an explicit filename may not allow multiple +backup files to be created correctly. It is best to use the default mechanism, +as it works correctly in all cases. +.SH "SEE ALSO" +fdisk(8), lilo.conf(5), mkrescue(8), mkinitrd(8). +.sp +The lilo distribution comes with very extensive TeX documentation through +Version 21. Text file README's in the source directory provide updates on +more recent topics. +.SH "AUTHORS" +Werner Almesberger (versions 0 to 21) +.br +John Coffman (21.2 to present date) diff --git a/man/lilo.conf.5 b/man/lilo.conf.5 new file mode 100644 index 0000000..a0f5da0 --- /dev/null +++ b/man/lilo.conf.5 @@ -0,0 +1,1066 @@ +'\" t +.\" @(#)lilo.conf.5 1.0 950728 aeb +.\" This page is based on the lilo docs, which carry the following +.\" COPYING condition: +.\" +.\" LILO program code, documentation and auxiliary programs are +.\" Copyright 1992-1998 Werner Almesberger. +.\" Extensions to LILO, documentation and auxiliary programs are +.\" Copyright 1999-2005 John Coffman. +.\" All rights reserved by the respective copyright holders. +.\" +.\" Redistribution and use in source and binary forms of parts of or the +.\" whole original or derived work are permitted provided that the +.\" original work is properly attributed to the author. The name of the +.\" author may not be used to endorse or promote products derived from +.\" this software without specific prior written permission. This work +.\" is provided "as is" and without any express or implied warranties. +.\" +.TH LILO.CONF 5 "July 2010" +.SH NAME +lilo.conf \- configuration file for lilo +.SH DESCRIPTION +.LP +This file, by default +.IR /etc/lilo.conf , +is read by the boot loader installer 'lilo' (see lilo(8)). +.LP +It might look as follows: +.IP +.nf +# lilo.conf +# +# global options: +boot=/dev/hda +prompt +timeout=150 +lba32 +compact +vga=normal +root=/dev/hda1 +read-only +menu-title=" John's Computer " +# +# bootable kernel images: +image=/boot/zImage-1.5.99 + label=try +image=/boot/zImage-1.0.9 + label=1.0.9 +image=/tamu/vmlinuz + label=tamu + initrd=initramdisk.img + root=/dev/hdb2 + vga=ask +# +# other operating systems: +other=/dev/hda3 + label=dos + boot-as=0x80 # must be C: +other=/dev/hdb1 + label=Win98 + boot-as=0x80 # must be C: +other=/dev/hdb5 + label=os2 + loader=os2_d + table=E: # os2 sees as E: +.fi +.LP +This configuration file specifies that lilo uses the Master +Boot Record on /dev/hda. (For a discussion of the various ways +to use lilo, and the interaction with other operating systems, +see user.tex from the lilo documentation.) +.LP +When booting, the boot loader will issue its +.I "boot:" +prompt and wait for you to enter the label of the kernel (and any options) +which you wish to boot. At any time you may hit [Tab] to see +a list of kernel/other labels. +Alternately, if the \fBmenu\fP boot loader is installed, +a menu of boot options will be presented for your selection. +The title of this menu is overridden with the menu +title specification in this configuration file. +If you enter nothing, +then the default kernel image, the first mentioned, (/boot/zImage-1.5.99) +will be booted after a timeout of 15 seconds (150 deciseconds). +There may be at least 16 images mentioned in lilo.conf. (The exact number depends +upon compilation options.) +.LP +As can be seen above, a configuration file starts with a number +of global options (the top 9 lines in the example), +followed by descriptions of the options for the various images. +An option in an image description will override a global option. +.LP +Comment lines may appear anywhere, and begin with the "#" character. + +.SH "GLOBAL OPTIONS" +There are many possible keywords. The description below is +almost literally from user.tex (just slightly abbreviated). +.TP +.BI "backup=" +Specifies the location where a copy of any modified boot sector will be +saved in a file. 'backup=' may specify this location in one of three ways: +a directory where the default backup file 'boot.NNNN' will be created; +a file pathname template to which the '.NNNN' suffix will be added; or +the full file pathname, which must include the correct '.NNNN' suffix. +All RAID installations should use only the first two alternatives, as +multiple backups may be created. The '.NNNN' suffix is the hexadecimal +representation of the major and minor device numbers of the device or +partition. If this option is not specified, the default name of boot sector +backups is '/boot/boot.NNNN'. If a backup already exists, it will be +preserved, rather than overwritten. C.f., \fBforce-backup=\fP below. +.TP +.BI "bios-passes-dl="