summaryrefslogtreecommitdiff
authorRicardo Cerqueira <cyanogenmod@cerqueira.org>2014-04-04 17:09:03 (GMT)
committer Ricardo Cerqueira <cyanogenmod@cerqueira.org>2014-04-04 18:55:18 (GMT)
commit6786b974a95ee8a263a76381074c55083faf123c (patch)
treebac4e8bf2e42c97f747ec3632a32925ad8844256
parentb8b045192272ddfd7d7707da3ac148f973388355 (diff)
parentd9e0c438e10e2155513e5d26498af472c5137d65 (diff)
downloadbusybox-6786b974a95ee8a263a76381074c55083faf123c.zip
busybox-6786b974a95ee8a263a76381074c55083faf123c.tar.gz
busybox-6786b974a95ee8a263a76381074c55083faf123c.tar.bz2
Merge branch '1_22_stable' of git://git.busybox.net/busybox into 1.22
Change-Id: I670b5234b100649bdf916f69f99e76048e2ec82c
Diffstat
-rw-r--r--Config.in5
-rw-r--r--Makefile4
-rw-r--r--Makefile.custom11
-rw-r--r--TODO16
-rw-r--r--android/regex/regex.h21
-rw-r--r--applets/applet_tables.c10
-rwxr-xr-xapplets/busybox.mksuid54
-rwxr-xr-xapplets/usage_compressed12
-rw-r--r--archival/Config.src350
-rw-r--r--archival/Kbuild.src19
-rw-r--r--archival/ar.c43
-rw-r--r--archival/bbunzip.c209
-rw-r--r--archival/bzip2.c16
-rw-r--r--archival/cpio.c33
-rw-r--r--archival/dpkg.c16
-rw-r--r--archival/dpkg_deb.c27
-rw-r--r--archival/gzip.c31
-rw-r--r--archival/libarchive/Kbuild.src36
-rw-r--r--archival/libarchive/bz/compress.c16
-rw-r--r--archival/libarchive/data_extract_all.c15
-rw-r--r--archival/libarchive/data_extract_to_command.c2
-rw-r--r--archival/libarchive/decompress_bunzip2.c1
-rw-r--r--archival/libarchive/decompress_gunzip.c2
-rw-r--r--archival/libarchive/decompress_unlzma.c29
-rw-r--r--archival/libarchive/get_header_ar.c35
-rw-r--r--archival/libarchive/get_header_tar.c14
-rw-r--r--archival/libarchive/lzo1x_9x.c3
-rw-r--r--archival/libarchive/open_transformer.c16
-rw-r--r--archival/libarchive/unxz/README6
-rw-r--r--archival/libarchive/unxz/xz.h17
-rw-r--r--archival/libarchive/unxz/xz_dec_bcj.c34
-rw-r--r--archival/libarchive/unxz/xz_dec_lzma2.c7
-rw-r--r--archival/libarchive/unxz/xz_stream.h11
-rw-r--r--archival/lzop.c52
-rw-r--r--archival/rpm.c314
-rw-r--r--archival/rpm2cpio.c9
-rw-r--r--archival/tar.c123
-rw-r--r--archival/unzip.c102
-rw-r--r--busybox-full.sources4
-rw-r--r--busybox-minimal.sources4
-rw-r--r--console-tools/dumpkmap.c37
-rw-r--r--console-tools/loadkmap.c27
-rw-r--r--coreutils/Kbuild.src2
-rw-r--r--coreutils/cal.c2
-rw-r--r--coreutils/catv.c43
-rw-r--r--coreutils/dd.c111
-rw-r--r--coreutils/expand.c13
-rw-r--r--coreutils/head.c157
-rw-r--r--coreutils/hostid.c3
-rw-r--r--coreutils/id.c4
-rw-r--r--coreutils/md5_sha1_sum.c4
-rw-r--r--coreutils/od_bloaty.c12
-rw-r--r--coreutils/readlink.c5
-rw-r--r--coreutils/split.c11
-rw-r--r--coreutils/stat.c2
-rw-r--r--coreutils/stty.c105
-rw-r--r--coreutils/sum.c4
-rw-r--r--coreutils/tail.c44
-rw-r--r--coreutils/touch.c39
-rw-r--r--debianutils/run_parts.c58
-rw-r--r--docs/keep_data_small.txt15
-rw-r--r--docs/mdev.txt4
-rw-r--r--docs/tcp.txt93
-rw-r--r--e2fsprogs/old_e2fsprogs/blkid/blkidP.h4
-rw-r--r--e2fsprogs/old_e2fsprogs/blkid/cache.c2
-rw-r--r--e2fsprogs/old_e2fsprogs/blkid/dev.c4
-rw-r--r--e2fsprogs/old_e2fsprogs/blkid/read.c2
-rw-r--r--e2fsprogs/old_e2fsprogs/blkid/tag.c6
-rw-r--r--e2fsprogs/old_e2fsprogs/e2fsck.c10
-rw-r--r--e2fsprogs/old_e2fsprogs/ext2fs/initialize.c2
-rw-r--r--e2fsprogs/old_e2fsprogs/ext2fs/unix_io.c4
-rw-r--r--e2fsprogs/old_e2fsprogs/fsck.c1
-rw-r--r--e2fsprogs/old_e2fsprogs/mke2fs.c8
-rw-r--r--e2fsprogs/old_e2fsprogs/tune2fs.c2
-rw-r--r--e2fsprogs/old_e2fsprogs/util.c4
-rw-r--r--editors/Config.src60
-rw-r--r--editors/Kbuild.src5
-rw-r--r--editors/awk.c138
-rw-r--r--editors/cmp.c11
-rw-r--r--editors/diff.c27
-rw-r--r--editors/ed.c12
-rw-r--r--editors/patch_bbox.c4
-rw-r--r--editors/sed.c282
-rw-r--r--editors/vi.c102
-rw-r--r--examples/inittab8
-rwxr-xr-xexamples/mdev.conf.change_blockdev.sh29
-rw-r--r--examples/mdev_fat.conf37
-rwxr-xr-xexamples/udhcp/simple.script15
-rw-r--r--findutils/find.c89
-rw-r--r--findutils/grep.c48
-rw-r--r--include-full/applet_tables.h2
-rw-r--r--include-full/applets.h74
-rw-r--r--include-full/autoconf.h3006
-rw-r--r--include-full/bbconfigopts.h59
-rw-r--r--include-full/bbconfigopts_bz2.h660
-rw-r--r--include-full/usage_compressed.h7822
-rw-r--r--include-minimal/applet_tables.h2
-rw-r--r--include-minimal/applets.h74
-rw-r--r--include-minimal/autoconf.h2214
-rw-r--r--include-minimal/bbconfigopts.h59
-rw-r--r--include-minimal/bbconfigopts_bz2.h657
-rw-r--r--include-minimal/usage_compressed.h5933
-rw-r--r--include/applets.src.h41
-rw-r--r--include/bb_archive.h3
-rw-r--r--include/bb_e2fs_defs.h2
-rw-r--r--include/libbb.h97
-rw-r--r--include/liblzo_interface.h2
-rw-r--r--include/platform.h23
-rw-r--r--init/bootchartd.c6
-rw-r--r--init/init.c109
-rw-r--r--libbb/Kbuild.src4
-rw-r--r--libbb/appletlib.c4
-rw-r--r--libbb/bb_askpass.c4
-rw-r--r--libbb/bb_pwd.c48
-rw-r--r--libbb/correct_password.c23
-rw-r--r--libbb/create_icmp6_socket.c38
-rw-r--r--libbb/create_icmp_socket.c36
-rw-r--r--libbb/dump.c2
-rw-r--r--libbb/endofname.c26
-rw-r--r--libbb/fclose_nonstdin.c3
-rw-r--r--libbb/hash_md5_sha.c6
-rw-r--r--libbb/human_readable.c6
-rw-r--r--libbb/in_ether.c59
-rw-r--r--libbb/inet_common.c3
-rw-r--r--libbb/lineedit.c205
-rw-r--r--libbb/login.c3
-rw-r--r--libbb/nuke_str.c21
-rw-r--r--libbb/platform.c10
-rw-r--r--libbb/printable.c24
-rw-r--r--libbb/pw_encrypt_md5.c2
-rw-r--r--libbb/time.c54
-rw-r--r--libbb/unicode.c38
-rw-r--r--libbb/xatonum.c7
-rw-r--r--libbb/xfuncs_printf.c57
-rw-r--r--libbb/xreadlink.c9
-rw-r--r--loginutils/adduser.c4
-rw-r--r--loginutils/cryptpw.c19
-rw-r--r--loginutils/getty.c2
-rw-r--r--loginutils/login.c2
-rw-r--r--loginutils/passwd.c5
-rw-r--r--loginutils/su.c2
-rw-r--r--loginutils/sulogin.c45
-rw-r--r--loginutils/vlock.c2
-rw-r--r--mailutils/sendmail.c103
-rw-r--r--miscutils/Config.src19
-rw-r--r--miscutils/Kbuild.src2
-rw-r--r--miscutils/chat.c2
-rw-r--r--miscutils/chrt.c3
-rw-r--r--miscutils/crontab.c27
-rw-r--r--miscutils/devfsd.c20
-rw-r--r--miscutils/flash_eraseall.c15
-rw-r--r--miscutils/flashcp.c26
-rw-r--r--miscutils/hdparm.c8
-rw-r--r--miscutils/less.c29
-rw-r--r--miscutils/man.c2
-rw-r--r--miscutils/nandwrite.c8
-rw-r--r--miscutils/rfkill.c17
-rw-r--r--miscutils/setserial.c4
-rw-r--r--miscutils/setsid.c14
-rw-r--r--miscutils/ubi_tools.c305
-rw-r--r--miscutils/wall.c21
-rw-r--r--modutils/modprobe.c2
-rw-r--r--networking/Config.src16
-rw-r--r--networking/arp.c49
-rw-r--r--networking/ether-wake.c24
-rw-r--r--networking/hostname.c7
-rw-r--r--networking/httpd.c50
-rw-r--r--networking/ifconfig.c45
-rw-r--r--networking/ifplugd.c17
-rw-r--r--networking/ifupdown.c19
-rw-r--r--networking/interface.c57
-rw-r--r--networking/libiproute/ipaddress.c22
-rw-r--r--networking/libiproute/iplink.c143
-rw-r--r--networking/libiproute/iprule.c8
-rw-r--r--networking/libiproute/iptunnel.c6
-rw-r--r--networking/nameif.c15
-rw-r--r--networking/nc.c22
-rw-r--r--networking/nc_bloaty.c149
-rw-r--r--networking/netstat.c8
-rw-r--r--networking/nslookup.c15
-rw-r--r--networking/ntpd.c244
-rw-r--r--networking/ntpd_simple.c2
-rw-r--r--networking/ping.c163
-rw-r--r--networking/pscan.c2
-rw-r--r--networking/tc.c5
-rw-r--r--networking/telnet.c17
-rw-r--r--networking/traceroute.c19
-rw-r--r--networking/udhcp/common.c34
-rw-r--r--networking/udhcp/common.h5
-rw-r--r--networking/udhcp/d6_dhcpc.c28
-rw-r--r--networking/udhcp/dhcpc.c89
-rw-r--r--networking/udhcp/dhcpc.h6
-rw-r--r--networking/udhcp/dhcpd.c19
-rw-r--r--networking/udhcp/dhcpd.h6
-rw-r--r--networking/udhcp/packet.c9
-rw-r--r--networking/wget.c75
-rw-r--r--procps/kill.c43
-rw-r--r--procps/lsof.c9
-rw-r--r--procps/nmeter.c3
-rw-r--r--procps/pgrep.c6
-rw-r--r--procps/powertop.c3
-rw-r--r--procps/ps.c44
-rw-r--r--procps/pstree.c13
-rw-r--r--procps/top.c7
-rw-r--r--procps/watch.c12
-rw-r--r--runit/chpst.c5
-rw-r--r--runit/runsv.c1
-rw-r--r--runit/runsvdir.c1
-rw-r--r--runit/sv.c1
-rw-r--r--runit/svlogd.c6
-rwxr-xr-xscripts/bloat-o-meter11
-rw-r--r--scripts/kconfig/Makefile2
-rw-r--r--scripts/kconfig/confdata.c24
-rwxr-xr-xscripts/mkconfigs4
-rwxr-xr-xscripts/randomtest2
-rwxr-xr-xscripts/trylink6
-rw-r--r--shell/ash.c99
-rw-r--r--shell/hush.c53
-rw-r--r--shell/hush_test/hush-misc/source2.right4
-rwxr-xr-xshell/hush_test/hush-misc/source2.tests8
-rw-r--r--shell/hush_test/hush-misc/while4.right1
-rwxr-xr-xshell/hush_test/hush-misc/while4.tests6
-rw-r--r--shell/math.c12
-rw-r--r--shell/math.h5
-rw-r--r--shell/shell_common.c2
-rw-r--r--sysklogd/logread.c25
-rw-r--r--sysklogd/syslogd.c13
-rwxr-xr-xtestsuite/awk.tests79
-rw-r--r--testsuite/date/date-works8
-rw-r--r--testsuite/date/date-works-16
-rw-r--r--testsuite/du/du-k-works6
-rw-r--r--testsuite/du/du-l-works1
-rwxr-xr-xtestsuite/grep.tests32
-rw-r--r--testsuite/hostid/hostid-works10
-rwxr-xr-xtestsuite/md5sum.tests6
-rwxr-xr-xtestsuite/sed.tests23
-rwxr-xr-xtestsuite/tar.tests38
-rw-r--r--testsuite/testing.sh8
-rw-r--r--testsuite/which/which-uses-default-path2
-rw-r--r--util-linux/Config.src246
-rw-r--r--util-linux/fdformat.c2
-rw-r--r--util-linux/fdisk_gpt.c8
-rw-r--r--util-linux/fdisk_sun.c10
-rw-r--r--util-linux/fsck_minix.c2
-rw-r--r--util-linux/getopt.c59
-rw-r--r--util-linux/hexdump.c14
-rw-r--r--util-linux/ipcs.c10
-rw-r--r--util-linux/losetup.c125
-rw-r--r--util-linux/mdev.c23
-rw-r--r--util-linux/mkfs_minix.c79
-rw-r--r--util-linux/mount.c4
-rw-r--r--util-linux/readprofile.c12
-rw-r--r--util-linux/swaponoff.c14
-rw-r--r--util-linux/volume_id/Config.src15
-rw-r--r--util-linux/volume_id/Kbuild.src38
-rw-r--r--util-linux/volume_id/btrfs.c11
-rw-r--r--util-linux/volume_id/cramfs.c11
-rw-r--r--util-linux/volume_id/exfat.c13
-rw-r--r--util-linux/volume_id/ext.c11
-rw-r--r--util-linux/volume_id/f2fs.c95
-rw-r--r--util-linux/volume_id/fat.c11
-rw-r--r--util-linux/volume_id/get_devname.c5
-rw-r--r--util-linux/volume_id/hfs.c11
-rw-r--r--util-linux/volume_id/iso9660.c11
-rw-r--r--util-linux/volume_id/jfs.c11
-rw-r--r--util-linux/volume_id/linux_raid.c11
-rw-r--r--util-linux/volume_id/linux_swap.c11
-rw-r--r--util-linux/volume_id/luks.c11
-rw-r--r--util-linux/volume_id/nilfs.c20
-rw-r--r--util-linux/volume_id/ntfs.c11
-rw-r--r--util-linux/volume_id/ocfs2.c11
-rw-r--r--util-linux/volume_id/reiserfs.c11
-rw-r--r--util-linux/volume_id/romfs.c11
-rw-r--r--util-linux/volume_id/squashfs.c12
-rw-r--r--util-linux/volume_id/sysv.c11
-rw-r--r--util-linux/volume_id/udf.c11
-rw-r--r--util-linux/volume_id/unused_highpoint.c11
-rw-r--r--util-linux/volume_id/unused_hpfs.c11
-rw-r--r--util-linux/volume_id/unused_isw_raid.c11
-rw-r--r--util-linux/volume_id/unused_lsi_raid.c11
-rw-r--r--util-linux/volume_id/unused_lvm.c11
-rw-r--r--util-linux/volume_id/unused_mac.c11
-rw-r--r--util-linux/volume_id/unused_minix.c11
-rw-r--r--util-linux/volume_id/unused_msdos.c13
-rw-r--r--util-linux/volume_id/unused_nvidia_raid.c11
-rw-r--r--util-linux/volume_id/unused_promise_raid.c11
-rw-r--r--util-linux/volume_id/unused_silicon_raid.c11
-rw-r--r--util-linux/volume_id/unused_ufs.c11
-rw-r--r--util-linux/volume_id/unused_via_raid.c11
-rw-r--r--util-linux/volume_id/volume_id.c5
-rw-r--r--util-linux/volume_id/volume_id_internal.h54
-rw-r--r--util-linux/volume_id/xfs.c11
292 files changed, 17013 insertions, 11914 deletions
diff --git a/Config.in b/Config.in
index 03c2d03..2c4be2e 100644
--- a/Config.in
+++ b/Config.in
@@ -161,12 +161,13 @@ config UNICODE_USING_LOCALE
Internal implementation is smaller.
config FEATURE_CHECK_UNICODE_IN_ENV
- bool "Check $LANG environment variable"
+ bool "Check $LC_ALL, $LC_CTYPE and $LANG environment variables"
default n
depends on UNICODE_SUPPORT && !UNICODE_USING_LOCALE
help
With this option on, Unicode support is activated
- only if LANG variable has the value of the form "xxxx.utf8"
+ only if locale-related variables have the value of the form
+ "xxxx.utf8"
Otherwise, Unicode support will be always enabled and active.
diff --git a/Makefile b/Makefile
index 2affc1c..80182da 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
VERSION = 1
-PATCHLEVEL = 21
+PATCHLEVEL = 22
SUBLEVEL = 1
-EXTRAVERSION = -kk
+EXTRAVERSION =
NAME = bionic
# *DOCUMENTATION*
diff --git a/Makefile.custom b/Makefile.custom
index 6da79e6..8c95ef2 100644
--- a/Makefile.custom
+++ b/Makefile.custom
@@ -3,7 +3,12 @@
# ==========================================================================
busybox.links: $(srctree)/applets/busybox.mkll $(objtree)/include/autoconf.h include/applets.h
- $(Q)-$(SHELL) $^ >$@
+ $(Q)-$(SHELL) $^ > $@
+
+busybox.cfg.suid: $(srctree)/applets/busybox.mksuid $(objtree)/include/autoconf.h include/applets.h
+ $(Q)-SUID="yes" $(SHELL) $^ > $@
+busybox.cfg.nosuid: $(srctree)/applets/busybox.mksuid $(objtree)/include/autoconf.h include/applets.h
+ $(Q)-SUID="DROP" $(SHELL) $^ > $@
.PHONY: install
ifeq ($(CONFIG_INSTALL_APPLET_SYMLINKS),y)
@@ -69,6 +74,10 @@ release: distclean
-print \
-exec rm -r -f {} \; ; \
find busybox-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)/ -type f \
+ -name .gitignore \
+ -print \
+ -exec rm -f {} \; ; \
+ find busybox-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)/ -type f \
-name .\#* \
-print \
-exec rm -f {} \; ; \
diff --git a/TODO b/TODO
index 4436469..dcf48c2 100644
--- a/TODO
+++ b/TODO
@@ -127,20 +127,6 @@ patch
And while we're at it, a new patch filename quoting format is apparently
coming soon: http://marc.theaimsgroup.com/?l=git&m=112927316408690&w=2
----
-stty / catv
- stty's visible() function and catv's guts are identical. Merge them into
- an appropriate libbb function.
----
-struct suffix_mult
- Several duplicate users of: grep -r "1024\*1024" * -B2 -A1
- Merge to a single size_suffixes[] in libbb.
- Users: head tail od_bloaty hexdump and (partially as it wouldn't hurt) svlogd
----
-tail
- ./busybox tail -f foo.c~ TODO
- should not print fmt=header_fmt for subsequent date >> TODO; i.e. only
- fmt+ if another (not the current) file did change
Architectural issues:
@@ -234,8 +220,6 @@ Minor stuff:
See grep -r strtod
Alot of duplication that wants cleanup.
---
- in_ether duplicated in network/{interface,ifconfig}.c
----
unify progress_meter. wget, flash_eraseall, pipe_progress, fbsplash, setfiles.
---
support start-stop-daemon -d <chdir-path>
diff --git a/android/regex/regex.h b/android/regex/regex.h
index eb1b406..20e8b1e 100644
--- a/android/regex/regex.h
+++ b/android/regex/regex.h
@@ -134,6 +134,27 @@ typedef unsigned reg_syntax_t;
without further backtracking. */
#define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD << 1)
+/* If this bit is set, do not process the GNU regex operators.
+ If not set, then the GNU regex operators are recognized. */
+#define RE_NO_GNU_OPS (RE_NO_POSIX_BACKTRACKING << 1)
+
+/* If this bit is set, turn on internal regex debugging.
+ If not set, and debugging was on, turn it off.
+ This only works if regex.c is compiled -DDEBUG.
+ We define this bit always, so that all that's needed to turn on
+ debugging is to recompile regex.c; the calling code can always have
+ this bit set, and it won't affect anything in the normal case. */
+#define RE_DEBUG (RE_NO_GNU_OPS << 1)
+
+/* If this bit is set, a syntactically invalid interval is treated as
+ a string of ordinary characters. For example, the ERE 'a{1' is
+ treated as 'a\{1'. */
+#define RE_INVALID_INTERVAL_ORD (RE_DEBUG << 1)
+
+/* If this bit is set, then ignore case when matching.
+ If not set, then case is significant. */
+#define RE_ICASE (RE_INVALID_INTERVAL_ORD << 1)
+
/* This global variable defines the particular regexp syntax to use (for
some interfaces). When a regexp is compiled, the syntax used is
stored in the pattern buffer, so changing this does not affect
diff --git a/applets/applet_tables.c b/applets/applet_tables.c
index 152d5f4..94b974e 100644
--- a/applets/applet_tables.c
+++ b/applets/applet_tables.c
@@ -53,7 +53,7 @@ int main(int argc, char **argv)
{
int i;
int ofs;
- unsigned MAX_APPLET_NAME_LEN = 1;
+// unsigned MAX_APPLET_NAME_LEN = 1;
qsort(applets, NUM_APPLETS, sizeof(applets[0]), cmp_name);
@@ -89,8 +89,8 @@ int main(int argc, char **argv)
printf("const char applet_names[] ALIGN1 = \"\"\n");
for (i = 0; i < NUM_APPLETS; i++) {
printf("\"%s\" \"\\0\"\n", applets[i].name);
- if (MAX_APPLET_NAME_LEN < strlen(applets[i].name))
- MAX_APPLET_NAME_LEN = strlen(applets[i].name);
+// if (MAX_APPLET_NAME_LEN < strlen(applets[i].name))
+// MAX_APPLET_NAME_LEN = strlen(applets[i].name);
}
printf(";\n\n");
@@ -130,8 +130,8 @@ int main(int argc, char **argv)
printf("};\n");
#endif
//printf("#endif /* SKIP_definitions */\n");
- printf("\n");
- printf("#define MAX_APPLET_NAME_LEN %u\n", MAX_APPLET_NAME_LEN);
+// printf("\n");
+// printf("#define MAX_APPLET_NAME_LEN %u\n", MAX_APPLET_NAME_LEN);
if (argv[2]) {
char line_old[80];
diff --git a/applets/busybox.mksuid b/applets/busybox.mksuid
new file mode 100755
index 0000000..6492c07
--- a/dev/null
+++ b/applets/busybox.mksuid
@@ -0,0 +1,54 @@
+#!/bin/sh
+# Make list of configuration variables regarding suid handling
+
+# input $1: full path to autoconf.h
+# input $2: full path to applets.h
+# input $3: full path to .config
+# output (stdout): list of CONFIG_ that do or may require suid
+
+# If the environment variable SUID is not set or set to DROP,
+# lists all config options that do not require suid permissions.
+# Otherwise, lists all config options for applets that DO or MAY require
+# suid permissions.
+
+# Maintainer: Bernhard Reutner-Fischer
+
+export LC_ALL=POSIX
+export LC_CTYPE=POSIX
+
+CONFIG_H=${1:-include/autoconf.h}
+APPLETS_H=${2:-include/applets.h}
+DOT_CONFIG=${3:-.config}
+
+case ${SUID:-DROP} in
+[dD][rR][oO][pP]) USE="DROP" ;;
+*) USE="suid" ;;
+esac
+
+$HOSTCC -E -DMAKE_SUID -include $CONFIG_H $APPLETS_H |
+ awk -v USE=${USE} '
+ /^SUID[ \t]/{
+ if (USE == "DROP") {
+ if ($2 != "BB_SUID_DROP") next
+ } else {
+ if ($2 == "BB_SUID_DROP") next
+ }
+ cfg = $NF
+ gsub("\"", "", cfg)
+ cfg = substr(cfg, 8)
+ s[i++] = "CONFIG_" cfg
+ s[i++] = "CONFIG_FEATURE_" cfg "_.*"
+ }
+ END{
+ while (getline < ARGV[2]) {
+ for (j in s) {
+ if ($0 ~ "^" s[j] "=y$") {
+ sub(/=.*/, "")
+ print
+ if (s[j] !~ /\*$/) delete s[j] # can drop this applet now
+ }
+ }
+ }
+ }
+' - $DOT_CONFIG
+
diff --git a/applets/usage_compressed b/applets/usage_compressed
index af66bc5..fb6e1c2 100755
--- a/applets/usage_compressed
+++ b/applets/usage_compressed
@@ -10,20 +10,20 @@ test "$SED" || SED=sed
test "$DD" || DD=dd
# Some people were bitten by their system lacking a (proper) od
-od -v -t x1 </dev/null >/dev/null
+od -v -b </dev/null >/dev/null
if test $? != 0; then
- echo 'od tool is not installed or cannot accept "-v -t x1" options'
+ echo 'od tool is not installed or cannot accept "-v -b" options'
exit 1
fi
exec >"$target.$$"
echo '#define UNPACKED_USAGE "" \'
-"$loc/usage" | od -v -t x1 \
+"$loc/usage" | od -v -b \
| $SED -e 's/^[^ ]*//' \
-e 's/ //g' \
-e '/^$/d' \
- -e 's/\(..\)/\\x\1/g' \
+ -e 's/\(...\)/\\\1/g' \
-e 's/^/"/' \
-e 's/$/" \\/'
echo ''
@@ -39,11 +39,11 @@ echo '#define PACKED_USAGE \'
## -e '/^$/d' \
## -e 's/\(..\)\(..\)/0x\2,0x\1,/g'
## -e 's/$/ \\/'
-"$loc/usage" | bzip2 -1 | $DD bs=2 skip=1 2>/dev/null | od -v -t x1 \
+"$loc/usage" | bzip2 -1 | $DD bs=2 skip=1 2>/dev/null | od -v -b \
| $SED -e 's/^[^ ]*//' \
-e 's/ //g' \
-e '/^$/d' \
- -e 's/\(..\)/0x\1,/g' \
+ -e 's/\(...\)/0\1,/g' \
-e 's/$/ \\/'
echo ''
diff --git a/archival/Config.src b/archival/Config.src
index ae1afc5..76635ba 100644
--- a/archival/Config.src
+++ b/archival/Config.src
@@ -5,8 +5,6 @@
menu "Archival Utilities"
-INSERT
-
config FEATURE_SEAMLESS_XZ
bool "Make tar, rpm, modprobe etc understand .xz data"
default y
@@ -37,352 +35,6 @@ config FEATURE_SEAMLESS_Z
help
Make tar, rpm, modprobe etc understand .Z data.
-config AR
- bool "ar"
- default n # needs to be improved to be able to replace binutils ar
- help
- ar is an archival utility program used to create, modify, and
- extract contents from archives. An archive is a single file holding
- a collection of other files in a structure that makes it possible to
- retrieve the original individual files (called archive members).
- The original files' contents, mode (permissions), timestamp, owner,
- and group are preserved in the archive, and can be restored on
- extraction.
-
- The stored filename is limited to 15 characters. (for more information
- see long filename support).
- ar has 60 bytes of overheads for every stored file.
-
- This implementation of ar can extract archives, it cannot create or
- modify them.
- On an x86 system, the ar applet adds about 1K.
-
- Unless you have a specific application which requires ar, you should
- probably say N here.
-
-config FEATURE_AR_LONG_FILENAMES
- bool "Support for long filenames (not needed for debs)"
- default y
- depends on AR
- help
- By default the ar format can only store the first 15 characters
- of the filename, this option removes that limitation.
- It supports the GNU ar long filename method which moves multiple long
- filenames into a the data section of a new ar entry.
-
-config FEATURE_AR_CREATE
- bool "Support archive creation"
- default y
- depends on AR
- help
- This enables archive creation (-c and -r) with busybox ar.
-
-config BUNZIP2
- bool "bunzip2"
- default y
- help
- bunzip2 is a compression utility using the Burrows-Wheeler block
- sorting text compression algorithm, and Huffman coding. Compression
- is generally considerably better than that achieved by more
- conventional LZ77/LZ78-based compressors, and approaches the
- performance of the PPM family of statistical compressors.
-
- Unless you have a specific application which requires bunzip2, you
- should probably say N here.
-
-config BZIP2
- bool "bzip2"
- default y
- help
- bzip2 is a compression utility using the Burrows-Wheeler block
- sorting text compression algorithm, and Huffman coding. Compression
- is generally considerably better than that achieved by more
- conventional LZ77/LZ78-based compressors, and approaches the
- performance of the PPM family of statistical compressors.
-
- Unless you have a specific application which requires bzip2, you
- should probably say N here.
-
-config CPIO
- bool "cpio"
- default y
- help
- cpio is an archival utility program used to create, modify, and
- extract contents from archives.
- cpio has 110 bytes of overheads for every stored file.
-
- This implementation of cpio can extract cpio archives created in the
- "newc" or "crc" format, it cannot create or modify them.
-
- Unless you have a specific application which requires cpio, you
- should probably say N here.
-
-config FEATURE_CPIO_O
- bool "Support for archive creation"
- default y
- depends on CPIO
- help
- This implementation of cpio can create cpio archives in the "newc"
- format only.
-
-config FEATURE_CPIO_P
- bool "Support for passthrough mode"
- default y
- depends on FEATURE_CPIO_O
- help
- Passthrough mode. Rarely used.
-
-config DPKG
- bool "dpkg"
- default n
- select FEATURE_SEAMLESS_GZ
- help
- dpkg is a medium-level tool to install, build, remove and manage
- Debian packages.
-
- This implementation of dpkg has a number of limitations,
- you should use the official dpkg if possible.
-
-config DPKG_DEB
- bool "dpkg_deb"
- default n
- select FEATURE_SEAMLESS_GZ
- help
- dpkg-deb unpacks and provides information about Debian archives.
-
- This implementation of dpkg-deb cannot pack archives.
-
- Unless you have a specific application which requires dpkg-deb,
- say N here.
-
-config FEATURE_DPKG_DEB_EXTRACT_ONLY
- bool "Extract only (-x)"
- default n
- depends on DPKG_DEB
- help
- This reduces dpkg-deb to the equivalent of
- "ar -p <deb> data.tar.gz | tar -zx". However it saves space as none
- of the extra dpkg-deb, ar or tar options are needed, they are linked
- to internally.
-
-config GUNZIP
- bool "gunzip"
- default y
- help
- gunzip is used to decompress archives created by gzip.
- You can use the `-t' option to test the integrity of
- an archive, without decompressing it.
-
-config GZIP
- bool "gzip"
- default y
- help
- gzip is used to compress files.
- It's probably the most widely used UNIX compression program.
-
-config FEATURE_GZIP_LONG_OPTIONS
- bool "Enable long options"
- default y
- depends on GZIP && LONG_OPTS
- help
- Enable use of long options, increases size by about 106 Bytes
-
-config GZIP_FAST
- int "Trade memory for gzip speed (0:small,slow - 2:fast,big)"
- default 0
- range 0 2
- depends on GZIP
- help
- Enable big memory options for gzip.
- 0: small buffers, small hash-tables
- 1: larger buffers, larger hash-tables
- 2: larger buffers, largest hash-tables
- Larger models may give slightly better compression
-
-config LZOP
- bool "lzop"
- default y
- help
- Lzop compression/decompresion.
-
-config LZOP_COMPR_HIGH
- bool "lzop compression levels 7,8,9 (not very useful)"
- default n
- depends on LZOP
- help
- High levels (7,8,9) of lzop compression. These levels
- are actually slower than gzip at equivalent compression ratios
- and take up 3.2K of code.
-
-config RPM2CPIO
- bool "rpm2cpio"
- default y
- help
- Converts a RPM file into a CPIO archive.
-
-config RPM
- bool "rpm"
- default y
- help
- Mini RPM applet - queries and extracts RPM packages.
-
-config TAR
- bool "tar"
- default y
- help
- tar is an archiving program. It's commonly used with gzip to
- create compressed archives. It's probably the most widely used
- UNIX archive program.
-
-config FEATURE_TAR_CREATE
- bool "Enable archive creation"
- default y
- depends on TAR
- help
- If you enable this option you'll be able to create
- tar archives using the `-c' option.
-
-config FEATURE_TAR_AUTODETECT
- bool "Autodetect compressed tarballs"
- default y
- depends on TAR && (FEATURE_SEAMLESS_Z || FEATURE_SEAMLESS_GZ || FEATURE_SEAMLESS_BZ2 || FEATURE_SEAMLESS_LZMA || FEATURE_SEAMLESS_XZ)
- help
- With this option tar can automatically detect compressed
- tarballs. Currently it works only on files (not pipes etc).
-
-config FEATURE_TAR_FROM
- bool "Enable -X (exclude from) and -T (include from) options)"
- default y
- depends on TAR
- help
- If you enable this option you'll be able to specify
- a list of files to include or exclude from an archive.
-
-config FEATURE_TAR_OLDGNU_COMPATIBILITY
- bool "Support for old tar header format"
- default y
- depends on TAR || DPKG
- help
- This option is required to unpack archives created in
- the old GNU format; help to kill this old format by
- repacking your ancient archives with the new format.
-
-config FEATURE_TAR_OLDSUN_COMPATIBILITY
- bool "Enable untarring of tarballs with checksums produced by buggy Sun tar"
- default y
- depends on TAR || DPKG
- help
- This option is required to unpack archives created by some old
- version of Sun's tar (it was calculating checksum using signed
- arithmetic). It is said to be fixed in newer Sun tar, but "old"
- tarballs still exist.
-
-config FEATURE_TAR_GNU_EXTENSIONS
- bool "Support for GNU tar extensions (long filenames)"
- default y
- depends on TAR || DPKG
- help
- With this option busybox supports GNU long filenames and
- linknames.
-
-config FEATURE_TAR_LONG_OPTIONS
- bool "Enable long options"
- default y
- depends on TAR && LONG_OPTS
- help
- Enable use of long options, increases size by about 400 Bytes
-
-config FEATURE_TAR_TO_COMMAND
- bool "Support for writing to an external program"
- default y
- depends on TAR && FEATURE_TAR_LONG_OPTIONS
- help
- If you enable this option you'll be able to instruct tar to send
- the contents of each extracted file to the standard input of an
- external program.
-
-config FEATURE_TAR_UNAME_GNAME
- bool "Enable use of user and group names"
- default y
- depends on TAR
- help
- Enables use of user and group names in tar. This affects contents
- listings (-t) and preserving permissions when unpacking (-p).
- +200 bytes.
-
-config FEATURE_TAR_NOPRESERVE_TIME
- bool "Enable -m (do not preserve time) option"
- default y
- depends on TAR
- help
- With this option busybox supports GNU tar -m
- (do not preserve time) option.
-
-config FEATURE_TAR_SELINUX
- bool "Support for extracting SELinux labels"
- default n
- depends on TAR && SELINUX
- help
- With this option busybox supports restoring SELinux labels
- when extracting files from tar archives.
-
-config UNCOMPRESS
- bool "uncompress"
- default n
- help
- uncompress is used to decompress archives created by compress.
- Not much used anymore, replaced by gzip/gunzip.
-
-config UNLZMA
- bool "unlzma"
- default y
- help
- unlzma is a compression utility using the Lempel-Ziv-Markov chain
- compression algorithm, and range coding. Compression
- is generally considerably better than that achieved by the bzip2
- compressors.
-
- The BusyBox unlzma applet is limited to decompression only.
- On an x86 system, this applet adds about 4K.
-
-config FEATURE_LZMA_FAST
- bool "Optimize unlzma for speed"
- default n
- depends on UNLZMA
- help
- This option reduces decompression time by about 25% at the cost of
- a 1K bigger binary.
-
-config LZMA
- bool "Provide lzma alias which supports only unpacking"
- default y
- depends on UNLZMA
- help
- Enable this option if you want commands like "lzma -d" to work.
- IOW: you'll get lzma applet, but it will always require -d option.
-
-config UNXZ
- bool "unxz"
- default y
- help
- unxz is a unlzma successor.
-
-config XZ
- bool "Provide xz alias which supports only unpacking"
- default y
- depends on UNXZ
- help
- Enable this option if you want commands like "xz -d" to work.
- IOW: you'll get xz applet, but it will always require -d option.
-
-config UNZIP
- bool "unzip"
- default y
- help
- unzip will list or extract files from a ZIP archive,
- commonly found on DOS/WIN systems. The default behavior
- (with no options) is to extract the archive into the
- current directory. Use the `-d' option to extract to a
- directory of your choice.
+INSERT
endmenu
diff --git a/archival/Kbuild.src b/archival/Kbuild.src
index 3466452..a6fd2ea 100644
--- a/archival/Kbuild.src
+++ b/archival/Kbuild.src
@@ -9,22 +9,3 @@ libs-y += libarchive/
lib-y:=
INSERT
-
-lib-$(CONFIG_AR) += ar.o
-lib-$(CONFIG_CPIO) += cpio.o
-lib-$(CONFIG_DPKG) += dpkg.o
-lib-$(CONFIG_DPKG_DEB) += dpkg_deb.o
-lib-$(CONFIG_RPM2CPIO) += rpm2cpio.o
-lib-$(CONFIG_RPM) += rpm.o
-lib-$(CONFIG_TAR) += tar.o
-lib-$(CONFIG_UNZIP) += unzip.o
-
-lib-$(CONFIG_LZOP) += lzop.o bbunzip.o
-lib-$(CONFIG_GZIP) += gzip.o bbunzip.o
-lib-$(CONFIG_BZIP2) += bzip2.o bbunzip.o
-
-lib-$(CONFIG_UNXZ) += bbunzip.o
-lib-$(CONFIG_UNLZMA) += bbunzip.o
-lib-$(CONFIG_BUNZIP2) += bbunzip.o
-lib-$(CONFIG_GUNZIP) += bbunzip.o
-lib-$(CONFIG_UNCOMPRESS) += bbunzip.o
diff --git a/archival/ar.c b/archival/ar.c
index 88236e8..f86c52d 100644
--- a/archival/ar.c
+++ b/archival/ar.c
@@ -17,6 +17,49 @@
* http://www.unix-systems.org/single_unix_specification_v2/xcu/ar.html
*/
+//config:config AR
+//config: bool "ar"
+//config: default n # needs to be improved to be able to replace binutils ar
+//config: help
+//config: ar is an archival utility program used to create, modify, and
+//config: extract contents from archives. An archive is a single file holding
+//config: a collection of other files in a structure that makes it possible to
+//config: retrieve the original individual files (called archive members).
+//config: The original files' contents, mode (permissions), timestamp, owner,
+//config: and group are preserved in the archive, and can be restored on
+//config: extraction.
+//config:
+//config: The stored filename is limited to 15 characters. (for more information
+//config: see long filename support).
+//config: ar has 60 bytes of overheads for every stored file.
+//config:
+//config: This implementation of ar can extract archives, it cannot create or
+//config: modify them.
+//config: On an x86 system, the ar applet adds about 1K.
+//config:
+//config: Unless you have a specific application which requires ar, you should
+//config: probably say N here.
+//config:
+//config:config FEATURE_AR_LONG_FILENAMES
+//config: bool "Support for long filenames (not needed for debs)"
+//config: default y
+//config: depends on AR
+//config: help
+//config: By default the ar format can only store the first 15 characters
+//config: of the filename, this option removes that limitation.
+//config: It supports the GNU ar long filename method which moves multiple long
+//config: filenames into a the data section of a new ar entry.
+//config:
+//config:config FEATURE_AR_CREATE
+//config: bool "Support archive creation"
+//config: default y
+//config: depends on AR
+//config: help
+//config: This enables archive creation (-c and -r) with busybox ar.
+
+//applet:IF_AR(APPLET(ar, BB_DIR_USR_BIN, BB_SUID_DROP))
+//kbuild:lib-$(CONFIG_AR) += ar.o
+
//usage:#define ar_trivial_usage
//usage: "[-o] [-v] [-p] [-t] [-x] ARCHIVE FILES"
//usage:#define ar_full_usage "\n\n"
diff --git a/archival/bbunzip.c b/archival/bbunzip.c
index 94d8a81..b3fb90f 100644
--- a/archival/bbunzip.c
+++ b/archival/bbunzip.c
@@ -7,13 +7,19 @@
#include "libbb.h"
#include "bb_archive.h"
+/* lzop_main() uses bbunpack(), need this: */
+//kbuild:lib-$(CONFIG_LZOP) += bbunzip.o
+
+/* Note: must be kept in sync with archival/lzop.c */
enum {
OPT_STDOUT = 1 << 0,
OPT_FORCE = 1 << 1,
/* only some decompressors: */
OPT_VERBOSE = 1 << 2,
- OPT_DECOMPRESS = 1 << 3,
- OPT_TEST = 1 << 4,
+ OPT_QUIET = 1 << 3,
+ OPT_DECOMPRESS = 1 << 4,
+ OPT_TEST = 1 << 5,
+ SEAMLESS_MAGIC = (1 << 31) * SEAMLESS_COMPRESSION,
};
static
@@ -39,7 +45,7 @@ int FAST_FUNC bbunpack(char **argv,
)
{
struct stat stat_buf;
- IF_DESKTOP(long long) int status;
+ IF_DESKTOP(long long) int status = 0;
char *filename, *new_name;
smallint exitcode = 0;
transformer_aux_data_t aux;
@@ -54,13 +60,27 @@ int FAST_FUNC bbunpack(char **argv,
/* Open src */
if (filename) {
- if (stat(filename, &stat_buf) != 0) {
- bb_simple_perror_msg(filename);
+ if (!(option_mask32 & SEAMLESS_MAGIC)) {
+ if (stat(filename, &stat_buf) != 0) {
+ err_name:
+ bb_simple_perror_msg(filename);
err:
- exitcode = 1;
- goto free_name;
+ exitcode = 1;
+ goto free_name;
+ }
+ if (open_to_or_warn(STDIN_FILENO, filename, O_RDONLY, 0))
+ goto err;
+ } else {
+ /* "clever zcat" with FILE */
+ int fd = open_zipped(filename);
+ if (fd < 0)
+ goto err_name;
+ xmove_fd(fd, STDIN_FILENO);
}
- if (open_to_or_warn(STDIN_FILENO, filename, O_RDONLY, 0))
+ } else
+ if (option_mask32 & SEAMLESS_MAGIC) {
+ /* "clever zcat" on stdin */
+ if (setup_unzip_on_fd(STDIN_FILENO, /*fail_if_not_detected*/ 0))
goto err;
}
@@ -68,7 +88,7 @@ int FAST_FUNC bbunpack(char **argv,
if (option_mask32 & (OPT_STDOUT|OPT_TEST)) {
if (option_mask32 & OPT_TEST)
if (open_to_or_warn(STDOUT_FILENO, bb_dev_null, O_WRONLY, 0))
- goto err;
+ xfunc_die();
filename = NULL;
}
@@ -93,23 +113,32 @@ int FAST_FUNC bbunpack(char **argv,
}
/* Check that the input is sane */
- if (isatty(STDIN_FILENO) && (option_mask32 & OPT_FORCE) == 0) {
+ if (!(option_mask32 & OPT_FORCE) && isatty(STDIN_FILENO)) {
bb_error_msg_and_die("compressed data not read from terminal, "
"use -f to force it");
}
- init_transformer_aux_data(&aux);
- aux.check_signature = 1;
- status = unpacker(&aux);
- if (status < 0)
- exitcode = 1;
+ if (!(option_mask32 & SEAMLESS_MAGIC)) {
+ init_transformer_aux_data(&aux);
+ aux.check_signature = 1;
+ status = unpacker(&aux);
+ if (status < 0)
+ exitcode = 1;
+ } else {
+ if (bb_copyfd_eof(STDIN_FILENO, STDOUT_FILENO) < 0)
+ /* Disk full, tty closed, etc. No point in continuing */
+ xfunc_die();
+ }
if (!(option_mask32 & OPT_STDOUT))
xclose(STDOUT_FILENO); /* with error check! */
if (filename) {
char *del = new_name;
+
if (status >= 0) {
+ unsigned new_name_len;
+
/* TODO: restore other things? */
if (aux.mtime != 0) {
struct timeval times[2];
@@ -123,22 +152,29 @@ int FAST_FUNC bbunpack(char **argv,
utimes(new_name, times); /* ignoring errors */
}
- /* Delete _compressed_ file */
+ if (ENABLE_DESKTOP)
+ new_name_len = strlen(new_name);
+ /* Restore source filename (unless tgz -> tar case) */
+ if (new_name == filename) {
+ new_name_len = strlen(filename);
+ filename[new_name_len] = '.';
+ }
+ /* Extreme bloat for gunzip compat */
+ /* Some users do want this info... */
+ if (ENABLE_DESKTOP && (option_mask32 & OPT_VERBOSE)) {
+ unsigned percent = status
+ ? ((uoff_t)stat_buf.st_size * 100u / (unsigned long long)status)
+ : 0;
+ fprintf(stderr, "%s: %u%% - replaced with %.*s\n",
+ filename,
+ 100u - percent,
+ new_name_len, new_name
+ );
+ }
+ /* Delete _source_ file */
del = filename;
- /* restore extension (unless tgz -> tar case) */
- if (new_name == filename)
- filename[strlen(filename)] = '.';
}
xunlink(del);
-
-#if 0 /* Currently buggy - wrong name: "a.gz: 261% - replaced with a.gz" */
- /* Extreme bloat for gunzip compat */
- if (ENABLE_DESKTOP && (option_mask32 & OPT_VERBOSE) && status >= 0) {
- fprintf(stderr, "%s: %u%% - replaced with %s\n",
- filename, (unsigned)(stat_buf.st_size*100 / (status+1)), new_name);
- }
-#endif
-
free_name:
if (new_name != filename)
free(new_name);
@@ -172,7 +208,6 @@ char* FAST_FUNC make_new_name_generic(char *filename, const char *expected_ext)
*
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
-
//usage:#define uncompress_trivial_usage
//usage: "[-cf] [FILE]..."
//usage:#define uncompress_full_usage "\n\n"
@@ -180,6 +215,15 @@ char* FAST_FUNC make_new_name_generic(char *filename, const char *expected_ext)
//usage: "\n -c Write to stdout"
//usage: "\n -f Overwrite"
+//config:config UNCOMPRESS
+//config: bool "uncompress"
+//config: default n
+//config: help
+//config: uncompress is used to decompress archives created by compress.
+//config: Not much used anymore, replaced by gzip/gunzip.
+
+//applet:IF_UNCOMPRESS(APPLET(uncompress, BB_DIR_BIN, BB_SUID_DROP))
+//kbuild:lib-$(CONFIG_UNCOMPRESS) += bbunzip.o
#if ENABLE_UNCOMPRESS
static
IF_DESKTOP(long long) int FAST_FUNC unpack_uncompress(transformer_aux_data_t *aux)
@@ -220,11 +264,7 @@ int uncompress_main(int argc UNUSED_PARAM, char **argv)
* Portions of the lzw code are derived from the public domain 'compress'
* written by Spencer Thomas, Joe Orost, James Woods, Jim McKie, Steve Davies,
* Ken Turkowski, Dave Mack and Peter Jannesen.
- *
- * See the license_msg below and the file COPYING for the software license.
- * See the file algorithm.doc for the compression algorithms and file formats.
*/
-
//usage:#define gunzip_trivial_usage
//usage: "[-cft] [FILE]..."
//usage:#define gunzip_full_usage "\n\n"
@@ -241,10 +281,22 @@ int uncompress_main(int argc UNUSED_PARAM, char **argv)
//usage: "-rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar\n"
//usage:
//usage:#define zcat_trivial_usage
-//usage: "FILE"
+//usage: "[FILE]..."
//usage:#define zcat_full_usage "\n\n"
//usage: "Decompress to stdout"
+//config:config GUNZIP
+//config: bool "gunzip"
+//config: default y
+//config: help
+//config: gunzip is used to decompress archives created by gzip.
+//config: You can use the `-t' option to test the integrity of
+//config: an archive, without decompressing it.
+
+//applet:IF_GUNZIP(APPLET(gunzip, BB_DIR_BIN, BB_SUID_DROP))
+//applet:IF_GUNZIP(APPLET_ODDNAME(zcat, gunzip, BB_DIR_BIN, BB_SUID_DROP, zcat))
+//kbuild:lib-$(CONFIG_GZIP) += bbunzip.o
+//kbuild:lib-$(CONFIG_GUNZIP) += bbunzip.o
#if ENABLE_GUNZIP
static
char* FAST_FUNC make_new_name_gunzip(char *filename, const char *expected_ext UNUSED_PARAM)
@@ -292,11 +344,15 @@ IF_DESKTOP(long long) int FAST_FUNC unpack_gunzip(transformer_aux_data_t *aux)
int gunzip_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int gunzip_main(int argc UNUSED_PARAM, char **argv)
{
- getopt32(argv, "cfvdtn");
+ getopt32(argv, "cfvqdtn");
argv += optind;
- /* if called as zcat */
+
+ /* If called as zcat...
+ * Normally, "zcat" is just "gunzip -c".
+ * But if seamless magic is enabled, then we are much more clever.
+ */
if (applet_name[1] == 'c')
- option_mask32 |= OPT_STDOUT;
+ option_mask32 |= OPT_STDOUT | SEAMLESS_MAGIC;
return bbunpack(argv, unpack_gunzip, make_new_name_gunzip, /*unused:*/ NULL);
}
@@ -316,11 +372,27 @@ int gunzip_main(int argc UNUSED_PARAM, char **argv)
//usage: "\n -c Write to stdout"
//usage: "\n -f Force"
//usage:#define bzcat_trivial_usage
-//usage: "FILE"
+//usage: "[FILE]..."
//usage:#define bzcat_full_usage "\n\n"
//usage: "Decompress to stdout"
+
+//config:config BUNZIP2
+//config: bool "bunzip2"
+//config: default y
+//config: help
+//config: bunzip2 is a compression utility using the Burrows-Wheeler block
+//config: sorting text compression algorithm, and Huffman coding. Compression
+//config: is generally considerably better than that achieved by more
+//config: conventional LZ77/LZ78-based compressors, and approaches the
+//config: performance of the PPM family of statistical compressors.
+//config:
+//config: Unless you have a specific application which requires bunzip2, you
+//config: should probably say N here.
+
//applet:IF_BUNZIP2(APPLET(bunzip2, BB_DIR_USR_BIN, BB_SUID_DROP))
//applet:IF_BUNZIP2(APPLET_ODDNAME(bzcat, bunzip2, BB_DIR_USR_BIN, BB_SUID_DROP, bzcat))
+//kbuild:lib-$(CONFIG_BZIP2) += bbunzip.o
+//kbuild:lib-$(CONFIG_BUNZIP2) += bbunzip.o
#if ENABLE_BUNZIP2
static
IF_DESKTOP(long long) int FAST_FUNC unpack_bunzip2(transformer_aux_data_t *aux)
@@ -330,7 +402,7 @@ IF_DESKTOP(long long) int FAST_FUNC unpack_bunzip2(transformer_aux_data_t *aux)
int bunzip2_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int bunzip2_main(int argc UNUSED_PARAM, char **argv)
{
- getopt32(argv, "cfvdt");
+ getopt32(argv, "cfvqdt");
argv += optind;
if (applet_name[2] == 'c') /* bzcat */
option_mask32 |= OPT_STDOUT;
@@ -348,7 +420,6 @@ int bunzip2_main(int argc UNUSED_PARAM, char **argv)
*
* Licensed under GPLv2, see file LICENSE in this source tree.
*/
-
//usage:#define unlzma_trivial_usage
//usage: "[-cf] [FILE]..."
//usage:#define unlzma_full_usage "\n\n"
@@ -365,7 +436,7 @@ int bunzip2_main(int argc UNUSED_PARAM, char **argv)
//usage: "\n -f Force"
//usage:
//usage:#define lzcat_trivial_usage
-//usage: "FILE"
+//usage: "[FILE]..."
//usage:#define lzcat_full_usage "\n\n"
//usage: "Decompress to stdout"
//usage:
@@ -385,10 +456,42 @@ int bunzip2_main(int argc UNUSED_PARAM, char **argv)
//usage: "\n -f Force"
//usage:
//usage:#define xzcat_trivial_usage
-//usage: "FILE"
+//usage: "[FILE]..."
//usage:#define xzcat_full_usage "\n\n"
//usage: "Decompress to stdout"
+//config:config UNLZMA
+//config: bool "unlzma"
+//config: default y
+//config: help
+//config: unlzma is a compression utility using the Lempel-Ziv-Markov chain
+//config: compression algorithm, and range coding. Compression
+//config: is generally considerably better than that achieved by the bzip2
+//config: compressors.
+//config:
+//config: The BusyBox unlzma applet is limited to decompression only.
+//config: On an x86 system, this applet adds about 4K.
+//config:
+//config:config FEATURE_LZMA_FAST
+//config: bool "Optimize unlzma for speed"
+//config: default n
+//config: depends on UNLZMA
+//config: help
+//config: This option reduces decompression time by about 25% at the cost of
+//config: a 1K bigger binary.
+//config:
+//config:config LZMA
+//config: bool "Provide lzma alias which supports only unpacking"
+//config: default y
+//config: depends on UNLZMA
+//config: help
+//config: Enable this option if you want commands like "lzma -d" to work.
+//config: IOW: you'll get lzma applet, but it will always require -d option.
+
+//applet:IF_UNLZMA(APPLET(unlzma, BB_DIR_USR_BIN, BB_SUID_DROP))
+//applet:IF_UNLZMA(APPLET_ODDNAME(lzcat, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzcat))
+//applet:IF_LZMA(APPLET_ODDNAME(lzma, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzma))
+//kbuild:lib-$(CONFIG_UNLZMA) += bbunzip.o
#if ENABLE_UNLZMA
static
IF_DESKTOP(long long) int FAST_FUNC unpack_unlzma(transformer_aux_data_t *aux)
@@ -398,7 +501,7 @@ IF_DESKTOP(long long) int FAST_FUNC unpack_unlzma(transformer_aux_data_t *aux)
int unlzma_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int unlzma_main(int argc UNUSED_PARAM, char **argv)
{
- IF_LZMA(int opts =) getopt32(argv, "cfvdt");
+ IF_LZMA(int opts =) getopt32(argv, "cfvqdt");
# if ENABLE_LZMA
/* lzma without -d or -t? */
if (applet_name[2] == 'm' && !(opts & (OPT_DECOMPRESS|OPT_TEST)))
@@ -414,6 +517,24 @@ int unlzma_main(int argc UNUSED_PARAM, char **argv)
#endif
+//config:config UNXZ
+//config: bool "unxz"
+//config: default y
+//config: help
+//config: unxz is a unlzma successor.
+//config:
+//config:config XZ
+//config: bool "Provide xz alias which supports only unpacking"
+//config: default y
+//config: depends on UNXZ
+//config: help
+//config: Enable this option if you want commands like "xz -d" to work.
+//config: IOW: you'll get xz applet, but it will always require -d option.
+
+//applet:IF_UNXZ(APPLET(unxz, BB_DIR_USR_BIN, BB_SUID_DROP))
+//applet:IF_UNXZ(APPLET_ODDNAME(xzcat, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xzcat))
+//applet:IF_XZ(APPLET_ODDNAME(xz, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xz))
+//kbuild:lib-$(CONFIG_UNXZ) += bbunzip.o
#if ENABLE_UNXZ
static
IF_DESKTOP(long long) int FAST_FUNC unpack_unxz(transformer_aux_data_t *aux)
@@ -423,7 +544,7 @@ IF_DESKTOP(long long) int FAST_FUNC unpack_unxz(transformer_aux_data_t *aux)
int unxz_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int unxz_main(int argc UNUSED_PARAM, char **argv)
{
- IF_XZ(int opts =) getopt32(argv, "cfvdt");
+ IF_XZ(int opts =) getopt32(argv, "cfvqdt");
# if ENABLE_XZ
/* xz without -d or -t? */
if (applet_name[2] == '\0' && !(opts & (OPT_DECOMPRESS|OPT_TEST)))
diff --git a/archival/bzip2.c b/archival/bzip2.c
index dd77c8e..f7718b4 100644
--- a/archival/bzip2.c
+++ b/archival/bzip2.c
@@ -7,6 +7,22 @@
* about bzip2 library code.
*/
+//config:config BZIP2
+//config: bool "bzip2"
+//config: default y
+//config: help
+//config: bzip2 is a compression utility using the Burrows-Wheeler block
+//config: sorting text compression algorithm, and Huffman coding. Compression
+//config: is generally considerably better than that achieved by more
+//config: conventional LZ77/LZ78-based compressors, and approaches the
+//config: performance of the PPM family of statistical compressors.
+//config:
+//config: Unless you have a specific application which requires bzip2, you
+//config: should probably say N here.
+
+//applet:IF_BZIP2(APPLET(bzip2, BB_DIR_USR_BIN, BB_SUID_DROP))
+//kbuild:lib-$(CONFIG_BZIP2) += bzip2.o
+
//usage:#define bzip2_trivial_usage
//usage: "[OPTIONS] [FILE]..."
//usage:#define bzip2_full_usage "\n\n"
diff --git a/archival/cpio.c b/archival/cpio.c
index 12b7f9a..5fb5327 100644
--- a/archival/cpio.c
+++ b/archival/cpio.c
@@ -9,11 +9,42 @@
* Limitations:
* Doesn't check CRC's
* Only supports new ASCII and CRC formats
- *
*/
#include "libbb.h"
#include "bb_archive.h"
+//config:config CPIO
+//config: bool "cpio"
+//config: default y
+//config: help
+//config: cpio is an archival utility program used to create, modify, and
+//config: extract contents from archives.
+//config: cpio has 110 bytes of overheads for every stored file.
+//config:
+//config: This implementation of cpio can extract cpio archives created in the
+//config: "newc" or "crc" format, it cannot create or modify them.
+//config:
+//config: Unless you have a specific application which requires cpio, you
+//config: should probably say N here.
+//config:
+//config:config FEATURE_CPIO_O
+//config: bool "Support for archive creation"
+//config: default y
+//config: depends on CPIO
+//config: help
+//config: This implementation of cpio can create cpio archives in the "newc"
+//config: format only.
+//config:
+//config:config FEATURE_CPIO_P
+//config: bool "Support for passthrough mode"
+//config: default y
+//config: depends on FEATURE_CPIO_O
+//config: help
+//config: Passthrough mode. Rarely used.
+
+//applet:IF_CPIO(APPLET(cpio, BB_DIR_BIN, BB_SUID_DROP))
+//kbuild:lib-$(CONFIG_CPIO) += cpio.o
+
//usage:#define cpio_trivial_usage
//usage: "[-dmvu] [-F FILE]" IF_FEATURE_CPIO_O(" [-H newc]")
//usage: " [-ti"IF_FEATURE_CPIO_O("o")"]" IF_FEATURE_CPIO_P(" [-p DIR]")
diff --git a/archival/dpkg.c b/archival/dpkg.c
index ed86f33..2893cfc 100644
--- a/archival/dpkg.c
+++ b/archival/dpkg.c
@@ -14,7 +14,6 @@
*
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
-
/*
* known difference between busybox dpkg and the official dpkg that i don't
* consider important, its worth keeping a note of differences anyway, just to
@@ -25,9 +24,22 @@
*
* bugs that need to be fixed
* - (unknown, please let me know when you find any)
- *
*/
+//config:config DPKG
+//config: bool "dpkg"
+//config: default n
+//config: select FEATURE_SEAMLESS_GZ
+//config: help
+//config: dpkg is a medium-level tool to install, build, remove and manage
+//config: Debian packages.
+//config:
+//config: This implementation of dpkg has a number of limitations,
+//config: you should use the official dpkg if possible.
+
+//applet:IF_DPKG(APPLET(dpkg, BB_DIR_USR_BIN, BB_SUID_DROP))
+//kbuild:lib-$(CONFIG_DPKG) += dpkg.o
+
//usage:#define dpkg_trivial_usage
//usage: "[-ilCPru] [-F OPT] PACKAGE"
//usage:#define dpkg_full_usage "\n\n"
diff --git a/archival/dpkg_deb.c b/archival/dpkg_deb.c
index a04ec94..13f9db9 100644
--- a/archival/dpkg_deb.c
+++ b/archival/dpkg_deb.c
@@ -5,8 +5,33 @@
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
+//config:config DPKG_DEB
+//config: bool "dpkg_deb"
+//config: default n
+//config: select FEATURE_SEAMLESS_GZ
+//config: help
+//config: dpkg-deb unpacks and provides information about Debian archives.
+//config:
+//config: This implementation of dpkg-deb cannot pack archives.
+//config:
+//config: Unless you have a specific application which requires dpkg-deb,
+//config: say N here.
+//config:
+//config:config FEATURE_DPKG_DEB_EXTRACT_ONLY
+//config: bool "Extract only (-x)"
+//config: default n
+//config: depends on DPKG_DEB
+//config: help
+//config: This reduces dpkg-deb to the equivalent of
+//config: "ar -p <deb> data.tar.gz | tar -zx". However it saves space as none
+//config: of the extra dpkg-deb, ar or tar options are needed, they are linked
+//config: to internally.
+
+//applet:IF_DPKG_DEB(APPLET_ODDNAME(dpkg-deb, dpkg_deb, BB_DIR_USR_BIN, BB_SUID_DROP, dpkg_deb))
+//kbuild:lib-$(CONFIG_DPKG_DEB) += dpkg_deb.o
+
//usage:#define dpkg_deb_trivial_usage
-//usage: "[-cefxX] FILE [argument"
+//usage: "[-cefxX] FILE [argument]"
//usage:#define dpkg_deb_full_usage "\n\n"
//usage: "Perform actions on Debian packages (.debs)\n"
//usage: "\n -c List contents of filesystem tree"
diff --git a/archival/gzip.c b/archival/gzip.c
index 31ccab3..1e779c9 100644
--- a/archival/gzip.c
+++ b/archival/gzip.c
@@ -15,7 +15,6 @@
*
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
-
/* big objects in bss:
* 00000020 b bl_count
* 00000074 b base_length
@@ -31,7 +30,6 @@
* 00000480 b static_ltree
* 000008f4 b dyn_ltree
*/
-
/* TODO: full support for -v for DESKTOP
* "/usr/bin/gzip -v a bogus aa" should say:
a: 85.1% -- replaced with a.gz
@@ -39,6 +37,35 @@ gzip: bogus: No such file or directory
aa: 85.1% -- replaced with aa.gz
*/
+//config:config GZIP
+//config: bool "gzip"
+//config: default y
+//config: help
+//config: gzip is used to compress files.
+//config: It's probably the most widely used UNIX compression program.
+//config:
+//config:config FEATURE_GZIP_LONG_OPTIONS
+//config: bool "Enable long options"
+//config: default y
+//config: depends on GZIP && LONG_OPTS
+//config: help
+//config: Enable use of long options, increases size by about 106 Bytes
+//config:
+//config:config GZIP_FAST
+//config: int "Trade memory for gzip speed (0:small,slow - 2:fast,big)"
+//config: default 0
+//config: range 0 2
+//config: depends on GZIP
+//config: help
+//config: Enable big memory options for gzip.
+//config: 0: small buffers, small hash-tables
+//config: 1: larger buffers, larger hash-tables
+//config: 2: larger buffers, largest hash-tables
+//config: Larger models may give slightly better compression
+
+//applet:IF_GZIP(APPLET(gzip, BB_DIR_BIN, BB_SUID_DROP))
+//kbuild:lib-$(CONFIG_GZIP) += gzip.o
+
//usage:#define gzip_trivial_usage
//usage: "[-cfd] [FILE]..."
//usage:#define gzip_full_usage "\n\n"
diff --git a/archival/libarchive/Kbuild.src b/archival/libarchive/Kbuild.src
index 1517c8c..968fdf8 100644
--- a/archival/libarchive/Kbuild.src
+++ b/archival/libarchive/Kbuild.src
@@ -38,23 +38,38 @@ DPKG_FILES:= \
INSERT
-lib-$(CONFIG_AR) += get_header_ar.o unpack_ar_archive.o
-lib-$(CONFIG_BUNZIP2) += decompress_bunzip2.o
-lib-$(CONFIG_UNLZMA) += decompress_unlzma.o
-lib-$(CONFIG_UNXZ) += decompress_unxz.o
-lib-$(CONFIG_CPIO) += get_header_cpio.o
lib-$(CONFIG_DPKG) += $(DPKG_FILES)
lib-$(CONFIG_DPKG_DEB) += $(DPKG_FILES)
-lib-$(CONFIG_GUNZIP) += open_transformer.o decompress_gunzip.o
-lib-$(CONFIG_RPM2CPIO) += decompress_gunzip.o get_header_cpio.o
-lib-$(CONFIG_RPM) += open_transformer.o decompress_gunzip.o get_header_cpio.o
+
+lib-$(CONFIG_AR) += get_header_ar.o unpack_ar_archive.o
+lib-$(CONFIG_CPIO) += get_header_cpio.o
lib-$(CONFIG_TAR) += get_header_tar.o
-lib-$(CONFIG_UNCOMPRESS) += decompress_uncompress.o
-lib-$(CONFIG_UNZIP) += decompress_gunzip.o
+lib-$(CONFIG_FEATURE_TAR_TO_COMMAND) += data_extract_to_command.o
lib-$(CONFIG_LZOP) += lzo1x_1.o lzo1x_1o.o lzo1x_d.o
lib-$(CONFIG_LZOP_COMPR_HIGH) += lzo1x_9x.o
+lib-$(CONFIG_BUNZIP2) += open_transformer.o decompress_bunzip2.o
+lib-$(CONFIG_UNLZMA) += open_transformer.o decompress_unlzma.o
+lib-$(CONFIG_UNXZ) += open_transformer.o decompress_unxz.o
+lib-$(CONFIG_GUNZIP) += open_transformer.o decompress_gunzip.o
+lib-$(CONFIG_UNCOMPRESS) += open_transformer.o decompress_uncompress.o
+lib-$(CONFIG_UNZIP) += open_transformer.o decompress_gunzip.o
+lib-$(CONFIG_RPM2CPIO) += open_transformer.o decompress_gunzip.o get_header_cpio.o
+lib-$(CONFIG_RPM) += open_transformer.o decompress_gunzip.o get_header_cpio.o
+
+lib-$(CONFIG_GZIP) += open_transformer.o
+lib-$(CONFIG_BZIP2) += open_transformer.o
+lib-$(CONFIG_LZOP) += open_transformer.o
+lib-$(CONFIG_MAN) += open_transformer.o
+lib-$(CONFIG_SETFONT) += open_transformer.o
+lib-$(CONFIG_FEATURE_2_4_MODULES) += open_transformer.o
lib-$(CONFIG_MODINFO) += open_transformer.o
lib-$(CONFIG_INSMOD) += open_transformer.o
+lib-$(CONFIG_DEPMOD) += open_transformer.o
+lib-$(CONFIG_RMMOD) += open_transformer.o
+lib-$(CONFIG_LSMOD) += open_transformer.o
+lib-$(CONFIG_MODPROBE) += open_transformer.o
+lib-$(CONFIG_MODPROBE_SMALL) += open_transformer.o
+
lib-$(CONFIG_FEATURE_SEAMLESS_Z) += open_transformer.o decompress_uncompress.o
lib-$(CONFIG_FEATURE_SEAMLESS_GZ) += open_transformer.o decompress_gunzip.o
lib-$(CONFIG_FEATURE_SEAMLESS_BZ2) += open_transformer.o decompress_bunzip2.o
@@ -62,7 +77,6 @@ lib-$(CONFIG_FEATURE_SEAMLESS_LZMA) += open_transformer.o decompress_unlzma.
lib-$(CONFIG_FEATURE_SEAMLESS_XZ) += open_transformer.o decompress_unxz.o
lib-$(CONFIG_FEATURE_COMPRESS_USAGE) += open_transformer.o decompress_bunzip2.o
lib-$(CONFIG_FEATURE_COMPRESS_BBCONFIG) += open_transformer.o decompress_bunzip2.o
-lib-$(CONFIG_FEATURE_TAR_TO_COMMAND) += data_extract_to_command.o
ifneq ($(lib-y),)
lib-y += $(COMMON_FILES)
diff --git a/archival/libarchive/bz/compress.c b/archival/libarchive/bz/compress.c
index e9f1afd..23de9d3 100644
--- a/archival/libarchive/bz/compress.c
+++ b/archival/libarchive/bz/compress.c
@@ -249,7 +249,7 @@ void generateMTFValues(EState* s)
static NOINLINE
void sendMTFValues(EState* s)
{
- int32_t v, t, i, j, gs, ge, totc, bt, bc, iter;
+ int32_t v, t, i, j, gs, ge, bt, bc, iter;
int32_t nSelectors, alphaSize, minLen, maxLen, selCtr;
int32_t nGroups;
@@ -345,7 +345,6 @@ void sendMTFValues(EState* s)
}
#endif
nSelectors = 0;
- totc = 0;
gs = 0;
while (1) {
/*--- Set group start & end marks. --*/
@@ -411,7 +410,6 @@ void sendMTFValues(EState* s)
bt = t;
}
}
- totc += bc;
fave[bt]++;
s->selector[nSelectors] = bt;
nSelectors++;
@@ -501,14 +499,14 @@ void sendMTFValues(EState* s)
for (i = 0; i < 16; i++) {
if (sizeof(long) <= 4) {
inUse16 = inUse16*2 +
- ((*(uint32_t*)&(s->inUse[i * 16 + 0])
- | *(uint32_t*)&(s->inUse[i * 16 + 4])
- | *(uint32_t*)&(s->inUse[i * 16 + 8])
- | *(uint32_t*)&(s->inUse[i * 16 + 12])) != 0);
+ ((*(bb__aliased_uint32_t*)&(s->inUse[i * 16 + 0])
+ | *(bb__aliased_uint32_t*)&(s->inUse[i * 16 + 4])
+ | *(bb__aliased_uint32_t*)&(s->inUse[i * 16 + 8])
+ | *(bb__aliased_uint32_t*)&(s->inUse[i * 16 + 12])) != 0);
} else { /* Our CPU can do better */
inUse16 = inUse16*2 +
- ((*(uint64_t*)&(s->inUse[i * 16 + 0])
- | *(uint64_t*)&(s->inUse[i * 16 + 8])) != 0);
+ ((*(bb__aliased_uint64_t*)&(s->inUse[i * 16 + 0])
+ | *(bb__aliased_uint64_t*)&(s->inUse[i * 16 + 8])) != 0);
}
}
diff --git a/archival/libarchive/data_extract_all.c b/archival/libarchive/data_extract_all.c
index aaab437..f8a562c 100644
--- a/archival/libarchive/data_extract_all.c
+++ b/archival/libarchive/data_extract_all.c
@@ -106,15 +106,28 @@ void FAST_FUNC data_extract_all(archive_handle_t *archive_handle)
switch (file_header->mode & S_IFMT) {
case S_IFREG: {
/* Regular file */
+ char *dst_name;
int flags = O_WRONLY | O_CREAT | O_EXCL;
if (archive_handle->ah_flags & ARCHIVE_O_TRUNC)
flags = O_WRONLY | O_CREAT | O_TRUNC;
- dst_fd = xopen3(file_header->name,
+ dst_name = file_header->name;
+#ifdef ARCHIVE_REPLACE_VIA_RENAME
+ if (archive_handle->ah_flags & ARCHIVE_REPLACE_VIA_RENAME)
+ /* rpm-style temp file name */
+ dst_name = xasprintf("%s;%x", dst_name, (int)getpid());
+#endif
+ dst_fd = xopen3(dst_name,
flags,
file_header->mode
);
bb_copyfd_exact_size(archive_handle->src_fd, dst_fd, file_header->size);
close(dst_fd);
+#ifdef ARCHIVE_REPLACE_VIA_RENAME
+ if (archive_handle->ah_flags & ARCHIVE_REPLACE_VIA_RENAME) {
+ xrename(dst_name, file_header->name);
+ free(dst_name);
+ }
+#endif
break;
}
case S_IFDIR:
diff --git a/archival/libarchive/data_extract_to_command.c b/archival/libarchive/data_extract_to_command.c
index 354e958..5cf14b3 100644
--- a/archival/libarchive/data_extract_to_command.c
+++ b/archival/libarchive/data_extract_to_command.c
@@ -103,7 +103,7 @@ void FAST_FUNC data_extract_to_command(archive_handle_t *archive_handle)
archive_handle->tar__to_command_shell,
"-c",
archive_handle->tar__to_command,
- NULL);
+ (char *)0);
bb_perror_msg_and_die("can't execute '%s'", archive_handle->tar__to_command_shell);
}
close(p[0]);
diff --git a/archival/libarchive/decompress_bunzip2.c b/archival/libarchive/decompress_bunzip2.c
index 24438a2..0e3ab43 100644
--- a/archival/libarchive/decompress_bunzip2.c
+++ b/archival/libarchive/decompress_bunzip2.c
@@ -818,7 +818,6 @@ static char *const bunzip_errors[] = {
/* Dumb little test thing, decompress stdin to stdout */
int main(int argc, char **argv)
{
- int i;
char c;
int i = unpack_bz2_stream(0, 1);
diff --git a/archival/libarchive/decompress_gunzip.c b/archival/libarchive/decompress_gunzip.c
index ddf59bc..d27f428 100644
--- a/archival/libarchive/decompress_gunzip.c
+++ b/archival/libarchive/decompress_gunzip.c
@@ -336,7 +336,7 @@ static int huft_build(const unsigned *b, const unsigned n,
}
/* Find minimum and maximum length, bound *m by those */
- for (j = 1; (c[j] == 0) && (j <= BMAX); j++)
+ for (j = 1; (j <= BMAX) && (c[j] == 0); j++)
continue;
k = j; /* minimum code length */
for (i = BMAX; (c[i] == 0) && i; i--)
diff --git a/archival/libarchive/decompress_unlzma.c b/archival/libarchive/decompress_unlzma.c
index cfde8ea..ca32bd8 100644
--- a/archival/libarchive/decompress_unlzma.c
+++ b/archival/libarchive/decompress_unlzma.c
@@ -45,16 +45,16 @@ typedef struct {
#define RC_MODEL_TOTAL_BITS 11
-/* Called twice: once at startup (LZMA_FAST only) and once in rc_normalize() */
-static size_inline void rc_read(rc_t *rc)
+/* Called once in rc_do_normalize() */
+static void rc_read(rc_t *rc)
{
int buffer_size = safe_read(rc->fd, RC_BUFFER, RC_BUFFER_SIZE);
//TODO: return -1 instead
//This will make unlzma delete broken unpacked file on unpack errors
if (buffer_size <= 0)
bb_error_msg_and_die("unexpected EOF");
- rc->ptr = RC_BUFFER;
rc->buffer_end = RC_BUFFER + buffer_size;
+ rc->ptr = RC_BUFFER;
}
/* Called twice, but one callsite is in speed_inline'd rc_is_bit_1() */
@@ -65,6 +65,12 @@ static void rc_do_normalize(rc_t *rc)
rc->range <<= 8;
rc->code = (rc->code << 8) | *rc->ptr++;
}
+static ALWAYS_INLINE void rc_normalize(rc_t *rc)
+{
+ if (rc->range < (1 << RC_TOP_BITS)) {
+ rc_do_normalize(rc);
+ }
+}
/* Called once */
static ALWAYS_INLINE rc_t* rc_init(int fd) /*, int buffer_size) */
@@ -78,15 +84,9 @@ static ALWAYS_INLINE rc_t* rc_init(int fd) /*, int buffer_size) */
/* rc->ptr = rc->buffer_end; */
for (i = 0; i < 5; i++) {
-#if ENABLE_FEATURE_LZMA_FAST
- if (rc->ptr >= rc->buffer_end)
- rc_read(rc);
- rc->code = (rc->code << 8) | *rc->ptr++;
-#else
rc_do_normalize(rc);
-#endif
}
- rc->range = 0xFFFFFFFF;
+ rc->range = 0xffffffff;
return rc;
}
@@ -96,13 +96,6 @@ static ALWAYS_INLINE void rc_free(rc_t *rc)
free(rc);
}
-static ALWAYS_INLINE void rc_normalize(rc_t *rc)
-{
- if (rc->range < (1 << RC_TOP_BITS)) {
- rc_do_normalize(rc);
- }
-}
-
/* rc_is_bit_1 is called 9 times */
static speed_inline int rc_is_bit_1(rc_t *rc, uint16_t *p)
{
@@ -120,7 +113,7 @@ static speed_inline int rc_is_bit_1(rc_t *rc, uint16_t *p)
}
/* Called 4 times in unlzma loop */
-static speed_inline int rc_get_bit(rc_t *rc, uint16_t *p, int *symbol)
+static ALWAYS_INLINE int rc_get_bit(rc_t *rc, uint16_t *p, int *symbol)
{
int ret = rc_is_bit_1(rc, p);
*symbol = *symbol * 2 + ret;
diff --git a/archival/libarchive/get_header_ar.c b/archival/libarchive/get_header_ar.c
index 23c4124..c66bb3e 100644
--- a/archival/libarchive/get_header_ar.c
+++ b/archival/libarchive/get_header_ar.c
@@ -8,11 +8,19 @@
#include "bb_archive.h"
#include "ar.h"
-static unsigned read_num(const char *str, int base)
+/* WARNING: Clobbers str[len], so fields must be read in reverse order! */
+static unsigned read_num(char *str, int base, int len)
{
+ int err;
+
+ /* ar fields are fixed length text strings (padded with spaces).
+ * Ensure bb_strtou doesn't read past the field in case the full
+ * width is used. */
+ str[len] = 0;
+
/* This code works because
* on misformatted numbers bb_strtou returns all-ones */
- int err = bb_strtou(str, NULL, base);
+ err = bb_strtou(str, NULL, base);
if (err == -1)
bb_error_msg_and_die("invalid ar header");
return err;
@@ -51,11 +59,13 @@ char FAST_FUNC get_header_ar(archive_handle_t *archive_handle)
if (ar.formatted.magic[0] != '`' || ar.formatted.magic[1] != '\n')
bb_error_msg_and_die("invalid ar header");
- /* FIXME: more thorough routine would be in order here
- * (we have something like that in tar)
- * but for now we are lax. */
- ar.formatted.magic[0] = '\0'; /* else 4G-2 file will have size="4294967294`\n..." */
- typed->size = size = read_num(ar.formatted.size, 10);
+ /*
+ * Note that the fields MUST be read in reverse order as
+ * read_num() clobbers the next byte after the field!
+ * Order is: name, date, uid, gid, mode, size, magic.
+ */
+ typed->size = size = read_num(ar.formatted.size, 10,
+ sizeof(ar.formatted.size));
/* special filenames have '/' as the first character */
if (ar.formatted.name[0] == '/') {
@@ -87,10 +97,10 @@ char FAST_FUNC get_header_ar(archive_handle_t *archive_handle)
* long filename pseudo file. Thus we decode the rest
* after dealing with long filename pseudo file.
*/
- typed->mode = read_num(ar.formatted.mode, 8);
- typed->mtime = read_num(ar.formatted.date, 10);
- typed->uid = read_num(ar.formatted.uid, 10);
- typed->gid = read_num(ar.formatted.gid, 10);
+ typed->mode = read_num(ar.formatted.mode, 8, sizeof(ar.formatted.mode));
+ typed->gid = read_num(ar.formatted.gid, 10, sizeof(ar.formatted.gid));
+ typed->uid = read_num(ar.formatted.uid, 10, sizeof(ar.formatted.uid));
+ typed->mtime = read_num(ar.formatted.date, 10, sizeof(ar.formatted.date));
#if ENABLE_FEATURE_AR_LONG_FILENAMES
if (ar.formatted.name[0] == '/') {
@@ -98,7 +108,8 @@ char FAST_FUNC get_header_ar(archive_handle_t *archive_handle)
/* The number after the '/' indicates the offset in the ar data section
* (saved in ar_long_names) that conatains the real filename */
- long_offset = read_num(&ar.formatted.name[1], 10);
+ long_offset = read_num(&ar.formatted.name[1], 10,
+ sizeof(ar.formatted.name) - 1);
if (long_offset >= ar_long_name_size) {
bb_error_msg_and_die("can't resolve long filename");
}
diff --git a/archival/libarchive/get_header_tar.c b/archival/libarchive/get_header_tar.c
index bc09756..32f8420 100644
--- a/archival/libarchive/get_header_tar.c
+++ b/archival/libarchive/get_header_tar.c
@@ -198,13 +198,13 @@ char FAST_FUNC get_header_tar(archive_handle_t *archive_handle)
* the message and we don't check whether we indeed
* saw zero block directly before this. */
if (i == 0) {
- xfunc_error_retval = 0;
- short_read:
- bb_error_msg_and_die("short read");
+ bb_error_msg("short read");
+ /* this merely signals end of archive, not exit(1): */
+ return EXIT_FAILURE;
}
if (i != 512) {
IF_FEATURE_TAR_AUTODETECT(goto autodetect;)
- goto short_read;
+ bb_error_msg_and_die("short read");
}
#else
@@ -221,10 +221,10 @@ char FAST_FUNC get_header_tar(archive_handle_t *archive_handle)
*/
while (full_read(archive_handle->src_fd, &tar, 512) == 512)
continue;
- return EXIT_FAILURE;
+ return EXIT_FAILURE; /* "end of archive" */
}
archive_handle->tar__end = 1;
- return EXIT_SUCCESS;
+ return EXIT_SUCCESS; /* "decoded one header" */
}
archive_handle->tar__end = 0;
@@ -471,5 +471,5 @@ char FAST_FUNC get_header_tar(archive_handle_t *archive_handle)
free(file_header->tar__uname);
free(file_header->tar__gname);
#endif
- return EXIT_SUCCESS;
+ return EXIT_SUCCESS; /* "decoded one header" */
}
diff --git a/archival/libarchive/lzo1x_9x.c b/archival/libarchive/lzo1x_9x.c
index 8971329..2b490ae 100644
--- a/archival/libarchive/lzo1x_9x.c
+++ b/archival/libarchive/lzo1x_9x.c
@@ -94,7 +94,7 @@ typedef struct {
( ((0x9f5f * ((((b[p]<<5)^b[p+1])<<5) ^ b[p+2])) >> 5) & (SWD_HSIZE-1) )
#if defined(LZO_UNALIGNED_OK_2)
-# define HEAD2(b,p) (* (uint16_t *) &(b[p]))
+# define HEAD2(b,p) (* (bb__aliased_uint16_t *) &(b[p]))
#else
# define HEAD2(b,p) (b[p] ^ ((unsigned)b[p+1]<<8))
#endif
@@ -466,7 +466,6 @@ static int find_match(lzo1x_999_t *c, lzo_swd_p s,
}
s->m_len = 1;
- s->m_len = 1;
#ifdef SWD_BEST_OFF
if (s->use_best_off)
memset(s->best_pos, 0, sizeof(s->best_pos));
diff --git a/archival/libarchive/open_transformer.c b/archival/libarchive/open_transformer.c
index dae04aa..4e98264 100644
--- a/archival/libarchive/open_transformer.c
+++ b/archival/libarchive/open_transformer.c
@@ -34,6 +34,7 @@ void check_errors_in_children(int signo)
if (!signo) {
/* block waiting for any child */
if (wait(&status) < 0)
+//FIXME: check EINTR?
return; /* probably there are no children */
goto check_status;
}
@@ -41,14 +42,18 @@ void check_errors_in_children(int signo)
/* Wait for any child without blocking */
for (;;) {
if (wait_any_nohang(&status) < 0)
+//FIXME: check EINTR?
/* wait failed?! I'm confused... */
return;
check_status:
- if (WIFEXITED(status) && WEXITSTATUS(status) == 0)
+ /*if (WIFEXITED(status) && WEXITSTATUS(status) == 0)*/
+ /* On Linux, the above can be checked simply as: */
+ if (status == 0)
/* this child exited with 0 */
continue;
- /* Cannot happen?
- if (!WIFSIGNALED(status) && !WIFEXITED(status)) ???; */
+ /* Cannot happen:
+ if (!WIFSIGNALED(status) && !WIFEXITED(status)) ???;
+ */
bb_got_signal = 1;
}
}
@@ -74,16 +79,17 @@ void FAST_FUNC open_transformer(int fd, const char *transform_prog)
// FIXME: error check?
#if BB_MMU
{
+ IF_DESKTOP(long long) int r;
transformer_aux_data_t aux;
init_transformer_aux_data(&aux);
aux.check_signature = check_signature;
- transformer(&aux, fd, fd_pipe.wr);
+ r = transformer(&aux, fd, fd_pipe.wr);
if (ENABLE_FEATURE_CLEAN_UP) {
close(fd_pipe.wr); /* send EOF */
close(fd);
}
/* must be _exit! bug was actually seen here */
- _exit(EXIT_SUCCESS);
+ _exit(/*error if:*/ r < 0);
}
#else
{
diff --git a/archival/libarchive/unxz/README b/archival/libarchive/unxz/README
index c5972f6..a849120 100644
--- a/archival/libarchive/unxz/README
+++ b/archival/libarchive/unxz/README
@@ -7,7 +7,7 @@ XZ Embedded
XZ Embedded was written for use in the Linux kernel, but the code can
be easily used in other environments too, including regular userspace
- applications.
+ applications. See userspace/xzminidec.c for an example program.
This README contains information that is useful only when the copy
of XZ Embedded isn't part of the Linux kernel tree. You should also
@@ -55,7 +55,7 @@ Compiler requirements
code is modified not to support large files, which needs some more
care than just using 32-bit integer instead of 64-bit).
- If you use GCC, try to use a recent version. For example, on x86,
+ If you use GCC, try to use a recent version. For example, on x86-32,
xz_dec_lzma2.c compiled with GCC 3.3.6 is 15-25 % slower than when
compiled with GCC 4.3.3.
@@ -93,7 +93,7 @@ BCJ filter support
them always #defined doesn't hurt either.
#define Instruction set BCJ filter endianness
- XZ_DEC_X86 x86 or x86-64 Little endian only
+ XZ_DEC_X86 x86-32 or x86-64 Little endian only
XZ_DEC_POWERPC PowerPC Big endian only
XZ_DEC_IA64 Itanium (IA-64) Big or little endian
XZ_DEC_ARM ARM Little endian only
diff --git a/archival/libarchive/unxz/xz.h b/archival/libarchive/unxz/xz.h
index c6c071c..e0b22db 100644
--- a/archival/libarchive/unxz/xz.h
+++ b/archival/libarchive/unxz/xz.h
@@ -19,6 +19,10 @@
# include <stdint.h>
#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/* In Linux, this is used to make extern functions static when needed. */
#ifndef XZ_EXTERN
# define XZ_EXTERN extern
@@ -70,7 +74,7 @@ enum xz_mode {
* @XZ_UNSUPPORTED_CHECK: Integrity check type is not supported. Decoding
* is still possible in multi-call mode by simply
* calling xz_dec_run() again.
- * NOTE: This return value is used only if
+ * Note that this return value is used only if
* XZ_DEC_ANY_CHECK was defined at build time,
* which is not used in the kernel. Unsupported
* check types return XZ_OPTIONS_ERROR if
@@ -105,7 +109,7 @@ enum xz_mode {
* stream that is truncated or otherwise corrupt.
*
* In single-call mode, XZ_BUF_ERROR is returned only when the output buffer
- * is too small, or the compressed input is corrupt in a way that makes the
+ * is too small or the compressed input is corrupt in a way that makes the
* decoder produce more output than the caller expected. When it is
* (relatively) clear that the compressed input is truncated, XZ_DATA_ERROR
* is used instead of XZ_BUF_ERROR.
@@ -207,8 +211,8 @@ XZ_EXTERN struct xz_dec * XZ_FUNC xz_dec_init(
* The possible return values depend on build options and operation mode.
* See enum xz_ret for details.
*
- * NOTE: If an error occurs in single-call mode (return value is not
- * XZ_STREAM_END), b->in_pos and b->out_pos are not modified, and the
+ * Note that if an error occurs in single-call mode (return value is not
+ * XZ_STREAM_END), b->in_pos and b->out_pos are not modified and the
* contents of the output buffer from b->out[b->out_pos] onward are
* undefined. This is true even after XZ_BUF_ERROR, because with some filter
* chains, there may be a second pass over the output buffer, and this pass
@@ -268,4 +272,9 @@ XZ_EXTERN void XZ_FUNC xz_crc32_init(void);
XZ_EXTERN uint32_t XZ_FUNC xz_crc32(
const uint8_t *buf, size_t size, uint32_t crc);
#endif
+
+#ifdef __cplusplus
+}
+#endif
+
#endif
diff --git a/archival/libarchive/unxz/xz_dec_bcj.c b/archival/libarchive/unxz/xz_dec_bcj.c
index 09162b5..e0f913a 100644
--- a/archival/libarchive/unxz/xz_dec_bcj.c
+++ b/archival/libarchive/unxz/xz_dec_bcj.c
@@ -77,10 +77,13 @@ struct xz_dec_bcj {
#ifdef XZ_DEC_X86
/*
- * This is macro used to test the most significant byte of a memory address
+ * This is used to test the most significant byte of a memory address
* in an x86 instruction.
*/
-#define bcj_x86_test_msbyte(b) ((b) == 0x00 || (b) == 0xFF)
+static inline int bcj_x86_test_msbyte(uint8_t b)
+{
+ return b == 0x00 || b == 0xFF;
+}
static noinline_for_stack size_t XZ_FUNC bcj_x86(
struct xz_dec_bcj *s, uint8_t *buf, size_t size)
@@ -443,8 +446,12 @@ XZ_EXTERN enum xz_ret XZ_FUNC xz_dec_bcj_run(struct xz_dec_bcj *s,
* next filter in the chain. Apply the BCJ filter on the new data
* in the output buffer. If everything cannot be filtered, copy it
* to temp and rewind the output buffer position accordingly.
+ *
+ * This needs to be always run when temp.size == 0 to handle a special
+ * case where the output buffer is full and the next filter has no
+ * more output coming but hasn't returned XZ_STREAM_END yet.
*/
- if (s->temp.size < b->out_size - b->out_pos) {
+ if (s->temp.size < b->out_size - b->out_pos || s->temp.size == 0) {
out_start = b->out_pos;
memcpy(b->out + b->out_pos, s->temp.buf, s->temp.size);
b->out_pos += s->temp.size;
@@ -467,16 +474,25 @@ XZ_EXTERN enum xz_ret XZ_FUNC xz_dec_bcj_run(struct xz_dec_bcj *s,
s->temp.size = b->out_pos - out_start;
b->out_pos -= s->temp.size;
memcpy(s->temp.buf, b->out + b->out_pos, s->temp.size);
+
+ /*
+ * If there wasn't enough input to the next filter to fill
+ * the output buffer with unfiltered data, there's no point
+ * to try decoding more data to temp.
+ */
+ if (b->out_pos + s->temp.size < b->out_size)
+ return XZ_OK;
}
/*
- * If we have unfiltered data in temp, try to fill by decoding more
- * data from the next filter. Apply the BCJ filter on temp. Then we
- * hopefully can fill the actual output buffer by copying filtered
- * data from temp. A mix of filtered and unfiltered data may be left
- * in temp; it will be taken care on the next call to this function.
+ * We have unfiltered data in temp. If the output buffer isn't full
+ * yet, try to fill the temp buffer by decoding more data from the
+ * next filter. Apply the BCJ filter on temp. Then we hopefully can
+ * fill the actual output buffer by copying filtered data from temp.
+ * A mix of filtered and unfiltered data may be left in temp; it will
+ * be taken care on the next call to this function.
*/
- if (s->temp.size > 0) {
+ if (b->out_pos < b->out_size) {
/* Make b->out{,_pos,_size} temporarily point to s->temp. */
s->out = b->out;
s->out_pos = b->out_pos;
diff --git a/archival/libarchive/unxz/xz_dec_lzma2.c b/archival/libarchive/unxz/xz_dec_lzma2.c
index da71cb4..3c2dc88 100644
--- a/archival/libarchive/unxz/xz_dec_lzma2.c
+++ b/archival/libarchive/unxz/xz_dec_lzma2.c
@@ -407,7 +407,6 @@ static void XZ_FUNC dict_uncompressed(
b->out_pos += copy_size;
b->in_pos += copy_size;
-
}
}
@@ -972,6 +971,9 @@ XZ_EXTERN NOINLINE enum xz_ret XZ_FUNC xz_dec_lzma2_run(
*/
tmp = b->in[b->in_pos++];
+ if (tmp == 0x00)
+ return XZ_STREAM_END;
+
if (tmp >= 0xE0 || tmp == 0x01) {
s->lzma2.need_props = true;
s->lzma2.need_dict_reset = false;
@@ -1004,9 +1006,6 @@ XZ_EXTERN NOINLINE enum xz_ret XZ_FUNC xz_dec_lzma2_run(
lzma_reset(s);
}
} else {
- if (tmp == 0x00)
- return XZ_STREAM_END;
-
if (tmp > 0x02)
return XZ_DATA_ERROR;
diff --git a/archival/libarchive/unxz/xz_stream.h b/archival/libarchive/unxz/xz_stream.h
index 36f2a7c..66cb5a7 100644
--- a/archival/libarchive/unxz/xz_stream.h
+++ b/archival/libarchive/unxz/xz_stream.h
@@ -25,15 +25,20 @@
#define STREAM_HEADER_SIZE 12
-#define HEADER_MAGIC "\3757zXZ\0"
+#define HEADER_MAGIC "\3757zXZ"
#define HEADER_MAGIC_SIZE 6
#define FOOTER_MAGIC "YZ"
#define FOOTER_MAGIC_SIZE 2
/*
- * Variable-length integer can hold a 63-bit unsigned integer, or a special
- * value to indicate that the value is unknown.
+ * Variable-length integer can hold a 63-bit unsigned integer or a special
+ * value indicating that the value is unknown.
+ *
+ * Experimental: vli_type can be defined to uint32_t to save a few bytes
+ * in code size (no effect on speed). Doing so limits the uncompressed and
+ * compressed size of the file to less than 256 MiB and may also weaken
+ * error detection slightly.
*/
typedef uint64_t vli_type;
diff --git a/archival/lzop.c b/archival/lzop.c
index 56003d4..5062d93 100644
--- a/archival/lzop.c
+++ b/archival/lzop.c
@@ -25,6 +25,26 @@
"Minimalized" for busybox by Alain Knaff
*/
+//config:config LZOP
+//config: bool "lzop"
+//config: default y
+//config: help
+//config: Lzop compression/decompresion.
+//config:
+//config:config LZOP_COMPR_HIGH
+//config: bool "lzop compression levels 7,8,9 (not very useful)"
+//config: default n
+//config: depends on LZOP
+//config: help
+//config: High levels (7,8,9) of lzop compression. These levels
+//config: are actually slower than gzip at equivalent compression ratios
+//config: and take up 3.2K of code.
+
+//applet:IF_LZOP(APPLET(lzop, BB_DIR_BIN, BB_SUID_DROP))
+//applet:IF_LZOP(APPLET_ODDNAME(lzopcat, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, lzopcat))
+//applet:IF_LZOP(APPLET_ODDNAME(unlzop, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, unlzop))
+//kbuild:lib-$(CONFIG_LZOP) += lzop.o
+
//usage:#define lzop_trivial_usage
//usage: "[-cfvd123456789CF] [FILE]..."
//usage:#define lzop_full_usage "\n\n"
@@ -436,25 +456,27 @@ struct globals {
//#define LZOP_VERSION_STRING "1.01"
//#define LZOP_VERSION_DATE "Apr 27th 2003"
-#define OPTION_STRING "cfvdt123456789CF"
+#define OPTION_STRING "cfvqdt123456789CF"
+/* Note: must be kept in sync with archival/bbunzip.c */
enum {
OPT_STDOUT = (1 << 0),
OPT_FORCE = (1 << 1),
OPT_VERBOSE = (1 << 2),
- OPT_DECOMPRESS = (1 << 3),
- OPT_TEST = (1 << 4),
- OPT_1 = (1 << 5),
- OPT_2 = (1 << 6),
- OPT_3 = (1 << 7),
- OPT_4 = (1 << 8),
- OPT_5 = (1 << 9),
- OPT_6 = (1 << 10),
- OPT_789 = (7 << 11),
- OPT_7 = (1 << 11),
- OPT_8 = (1 << 12),
- OPT_C = (1 << 14),
- OPT_F = (1 << 15),
+ OPT_QUIET = (1 << 3),
+ OPT_DECOMPRESS = (1 << 4),
+ OPT_TEST = (1 << 5),
+ OPT_1 = (1 << 6),
+ OPT_2 = (1 << 7),
+ OPT_3 = (1 << 8),
+ OPT_4 = (1 << 9),
+ OPT_5 = (1 << 10),
+ OPT_6 = (1 << 11),
+ OPT_789 = (7 << 12),
+ OPT_7 = (1 << 13),
+ OPT_8 = (1 << 14),
+ OPT_C = (1 << 15),
+ OPT_F = (1 << 16),
};
/**********************************************************************/
@@ -1093,7 +1115,7 @@ int lzop_main(int argc UNUSED_PARAM, char **argv)
if (applet_name[4] == 'c')
option_mask32 |= (OPT_STDOUT | OPT_DECOMPRESS);
/* unlzop? */
- if (applet_name[0] == 'u')
+ if (applet_name[4] == 'o')
option_mask32 |= OPT_DECOMPRESS;
global_crc32_table = crc32_filltable(NULL, 0);
diff --git a/archival/rpm.c b/archival/rpm.c
index 6757a6c..885eddd 100644
--- a/archival/rpm.c
+++ b/archival/rpm.c
@@ -7,6 +7,15 @@
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
+//config:config RPM
+//config: bool "rpm"
+//config: default y
+//config: help
+//config: Mini RPM applet - queries and extracts RPM packages.
+
+//applet:IF_RPM(APPLET(rpm, BB_DIR_BIN, BB_SUID_DROP))
+//kbuild:lib-$(CONFIG_RPM) += rpm.o
+
//usage:#define rpm_trivial_usage
//usage: "-i PACKAGE.rpm; rpm -qp[ildc] PACKAGE.rpm"
//usage:#define rpm_full_usage "\n\n"
@@ -14,10 +23,10 @@
//usage: "\nCommands:"
//usage: "\n -i Install package"
//usage: "\n -qp Query package"
-//usage: "\n -i Show information"
-//usage: "\n -l List contents"
-//usage: "\n -d List documents"
-//usage: "\n -c List config files"
+//usage: "\n -qpi Show information"
+//usage: "\n -qpl List contents"
+//usage: "\n -qpd List documents"
+//usage: "\n -qpc List config files"
#include "libbb.h"
#include "bb_archive.h"
@@ -79,136 +88,13 @@ typedef struct {
uint32_t count; /* 4 byte count */
} rpm_index;
-static void *map;
-static rpm_index **mytags;
-static int tagcount;
-
-static void extract_cpio(int fd, const char *source_rpm);
-static rpm_index **rpm_gettags(int fd, int *num_tags);
-static int bsearch_rpmtag(const void *key, const void *item);
-static char *rpm_getstr(int tag, int itemindex);
-static int rpm_getint(int tag, int itemindex);
-static int rpm_getcount(int tag);
-static void fileaction_dobackup(char *filename, int fileref);
-static void fileaction_setowngrp(char *filename, int fileref);
-static void loop_through_files(int filetag, void (*fileaction)(char *filename, int fileref));
-
-int rpm_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int rpm_main(int argc, char **argv)
-{
- int opt = 0, func = 0, rpm_fd, offset;
- const int pagesize = getpagesize();
-
- while ((opt = getopt(argc, argv, "iqpldc")) != -1) {
- switch (opt) {
- case 'i': /* First arg: Install mode, with q: Information */
- if (!func) func = rpm_install;
- else func |= rpm_query_info;
- break;
- case 'q': /* First arg: Query mode */
- if (func) bb_show_usage();
- func = rpm_query;
- break;
- case 'p': /* Query a package */
- func |= rpm_query_package;
- break;
- case 'l': /* List files in a package */
- func |= rpm_query_list;
- break;
- case 'd': /* List doc files in a package (implies list) */
- func |= rpm_query_list;
- func |= rpm_query_list_doc;
- break;
- case 'c': /* List config files in a package (implies list) */
- func |= rpm_query_list;
- func |= rpm_query_list_config;
- break;
- default:
- bb_show_usage();
- }
- }
- argv += optind;
- //argc -= optind;
- if (!argv[0]) {
- bb_show_usage();
- }
-
- while (*argv) {
- const char *source_rpm;
-
- rpm_fd = xopen(*argv++, O_RDONLY);
- mytags = rpm_gettags(rpm_fd, &tagcount);
- if (!mytags)
- bb_error_msg_and_die("error reading rpm header");
- offset = xlseek(rpm_fd, 0, SEEK_CUR);
- /* Mimimum is one page */
- map = mmap(0, offset > pagesize ? (offset + offset % pagesize) : pagesize, PROT_READ, MAP_PRIVATE, rpm_fd, 0);
-
- source_rpm = rpm_getstr(TAG_SOURCERPM, 0);
-
- if (func & rpm_install) {
- /* Backup any config files */
- loop_through_files(TAG_BASENAMES, fileaction_dobackup);
- /* Extact the archive */
- extract_cpio(rpm_fd, source_rpm);
- /* Set the correct file uid/gid's */
- loop_through_files(TAG_BASENAMES, fileaction_setowngrp);
- }
- else if ((func & (rpm_query|rpm_query_package)) == (rpm_query|rpm_query_package)) {
- if (!(func & (rpm_query_info|rpm_query_list))) {
- /* If just a straight query, just give package name */
- printf("%s-%s-%s\n", rpm_getstr(TAG_NAME, 0), rpm_getstr(TAG_VERSION, 0), rpm_getstr(TAG_RELEASE, 0));
- }
- if (func & rpm_query_info) {
- /* Do the nice printout */
- time_t bdate_time;
- struct tm *bdate_ptm;
- char bdatestring[50];
- const char *p;
-
- p = rpm_getstr(TAG_PREFIXS, 0);
- if (!p) p = "(not relocateable)";
- printf("Name : %-29sRelocations: %s\n", rpm_getstr(TAG_NAME, 0), p);
- p = rpm_getstr(TAG_VENDOR, 0);
- if (!p) p = "(none)";
- printf("Version : %-34sVendor: %s\n", rpm_getstr(TAG_VERSION, 0), p);
- bdate_time = rpm_getint(TAG_BUILDTIME, 0);
- bdate_ptm = localtime(&bdate_time);
- strftime(bdatestring, 50, "%a %d %b %Y %T %Z", bdate_ptm);
- printf("Release : %-30sBuild Date: %s\n", rpm_getstr(TAG_RELEASE, 0), bdatestring);
- printf("Install date: %-30sBuild Host: %s\n", "(not installed)", rpm_getstr(TAG_BUILDHOST, 0));
- printf("Group : %-30sSource RPM: %s\n", rpm_getstr(TAG_GROUP, 0), source_rpm);
- printf("Size : %-33dLicense: %s\n", rpm_getint(TAG_SIZE, 0), rpm_getstr(TAG_LICENSE, 0));
- printf("URL : %s\n", rpm_getstr(TAG_URL, 0));
- printf("Summary : %s\n", rpm_getstr(TAG_SUMMARY, 0));
- printf("Description :\n%s\n", rpm_getstr(TAG_DESCRIPTION, 0));
- }
- if (func & rpm_query_list) {
- int count, it, flags;
- count = rpm_getcount(TAG_BASENAMES);
- for (it = 0; it < count; it++) {
- flags = rpm_getint(TAG_FILEFLAGS, it);
- switch (func & (rpm_query_list_doc|rpm_query_list_config)) {
- case rpm_query_list_doc:
- if (!(flags & RPMFILE_DOC)) continue;
- break;
- case rpm_query_list_config:
- if (!(flags & RPMFILE_CONFIG)) continue;
- break;
- case rpm_query_list_doc|rpm_query_list_config:
- if (!(flags & (RPMFILE_CONFIG|RPMFILE_DOC))) continue;
- break;
- }
- printf("%s%s\n",
- rpm_getstr(TAG_DIRNAMES, rpm_getint(TAG_DIRINDEXES, it)),
- rpm_getstr(TAG_BASENAMES, it));
- }
- }
- }
- free(mytags);
- }
- return 0;
-}
+struct globals {
+ void *map;
+ rpm_index **mytags;
+ int tagcount;
+} FIX_ALIASING;
+#define G (*(struct globals*)&bb_common_bufsiz1)
+#define INIT_G() do { } while (0)
static void extract_cpio(int fd, const char *source_rpm)
{
@@ -231,8 +117,8 @@ static void extract_cpio(int fd, const char *source_rpm)
/* compat: overwrite existing files.
* try "rpm -i foo.src.rpm" few times in a row -
* standard rpm will not complain.
- * (TODO? real rpm creates "file;1234" and then renames it) */
- | ARCHIVE_UNLINK_OLD;
+ */
+ | ARCHIVE_REPLACE_VIA_RENAME;
archive_handle->src_fd = fd;
/*archive_handle->offset = 0; - init_handle() did it */
@@ -294,7 +180,7 @@ static int bsearch_rpmtag(const void *key, const void *item)
static int rpm_getcount(int tag)
{
rpm_index **found;
- found = bsearch(&tag, mytags, tagcount, sizeof(struct rpmtag *), bsearch_rpmtag);
+ found = bsearch(&tag, G.mytags, G.tagcount, sizeof(struct rpmtag *), bsearch_rpmtag);
if (!found)
return 0;
return found[0]->count;
@@ -303,7 +189,7 @@ static int rpm_getcount(int tag)
static char *rpm_getstr(int tag, int itemindex)
{
rpm_index **found;
- found = bsearch(&tag, mytags, tagcount, sizeof(struct rpmtag *), bsearch_rpmtag);
+ found = bsearch(&tag, G.mytags, G.tagcount, sizeof(struct rpmtag *), bsearch_rpmtag);
if (!found || itemindex >= found[0]->count)
return NULL;
if (found[0]->type == RPM_STRING_TYPE
@@ -311,7 +197,7 @@ static char *rpm_getstr(int tag, int itemindex)
|| found[0]->type == RPM_STRING_ARRAY_TYPE
) {
int n;
- char *tmpstr = (char *) map + found[0]->offset;
+ char *tmpstr = (char *) G.map + found[0]->offset;
for (n = 0; n < itemindex; n++)
tmpstr = tmpstr + strlen(tmpstr) + 1;
return tmpstr;
@@ -322,32 +208,25 @@ static char *rpm_getstr(int tag, int itemindex)
static int rpm_getint(int tag, int itemindex)
{
rpm_index **found;
- int *tmpint; /* NB: using int8_t* would be easier to code */
+ char *tmpint;
/* gcc throws warnings here when sizeof(void*)!=sizeof(int) ...
* it's ok to ignore it because tag won't be used as a pointer */
- found = bsearch(&tag, mytags, tagcount, sizeof(struct rpmtag *), bsearch_rpmtag);
+ found = bsearch(&tag, G.mytags, G.tagcount, sizeof(struct rpmtag *), bsearch_rpmtag);
if (!found || itemindex >= found[0]->count)
return -1;
- tmpint = (int *) ((char *) map + found[0]->offset);
-
+ tmpint = (char *) G.map + found[0]->offset;
if (found[0]->type == RPM_INT32_TYPE) {
- tmpint = (int *) ((char *) tmpint + itemindex*4);
- /*return ntohl(*tmpint);*/
- /* int can be != int32_t */
+ tmpint += itemindex*4;
return ntohl(*(int32_t*)tmpint);
}
if (found[0]->type == RPM_INT16_TYPE) {
- tmpint = (int *) ((char *) tmpint + itemindex*2);
- /* ??? read int, and THEN ntohs() it?? */
- /*return ntohs(*tmpint);*/
+ tmpint += itemindex*2;
return ntohs(*(int16_t*)tmpint);
}
if (found[0]->type == RPM_INT8_TYPE) {
- tmpint = (int *) ((char *) tmpint + itemindex);
- /* ??? why we don't read byte here??? */
- /*return ntohs(*tmpint);*/
+ tmpint += itemindex;
return *(int8_t*)tmpint;
}
return -1;
@@ -392,3 +271,134 @@ static void loop_through_files(int filetag, void (*fileaction)(char *filename, i
free(filename);
}
}
+
+int rpm_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+int rpm_main(int argc, char **argv)
+{
+ int opt, func = 0;
+ const unsigned pagesize = getpagesize();
+
+ while ((opt = getopt(argc, argv, "iqpldc")) != -1) {
+ switch (opt) {
+ case 'i': /* First arg: Install mode, with q: Information */
+ if (!func) func = rpm_install;
+ else func |= rpm_query_info;
+ break;
+ case 'q': /* First arg: Query mode */
+ if (func) bb_show_usage();
+ func = rpm_query;
+ break;
+ case 'p': /* Query a package */
+ func |= rpm_query_package;
+ break;
+ case 'l': /* List files in a package */
+ func |= rpm_query_list;
+ break;
+ case 'd': /* List doc files in a package (implies list) */
+ func |= rpm_query_list;
+ func |= rpm_query_list_doc;
+ break;
+ case 'c': /* List config files in a package (implies list) */
+ func |= rpm_query_list;
+ func |= rpm_query_list_config;
+ break;
+ default:
+ bb_show_usage();
+ }
+ }
+ argv += optind;
+ //argc -= optind;
+ if (!argv[0]) {
+ bb_show_usage();
+ }
+
+ while (*argv) {
+ int rpm_fd;
+ unsigned mapsize;
+ const char *source_rpm;
+
+ rpm_fd = xopen(*argv++, O_RDONLY);
+ G.mytags = rpm_gettags(rpm_fd, &G.tagcount);
+ if (!G.mytags)
+ bb_error_msg_and_die("error reading rpm header");
+ mapsize = xlseek(rpm_fd, 0, SEEK_CUR);
+ mapsize = (mapsize + pagesize) & -(int)pagesize;
+ /* Some NOMMU systems prefer MAP_PRIVATE over MAP_SHARED */
+ G.map = mmap(0, mapsize, PROT_READ, MAP_PRIVATE, rpm_fd, 0);
+//FIXME: error check?
+
+ source_rpm = rpm_getstr(TAG_SOURCERPM, 0);
+
+ if (func & rpm_install) {
+ /* Backup any config files */
+ loop_through_files(TAG_BASENAMES, fileaction_dobackup);
+ /* Extact the archive */
+ extract_cpio(rpm_fd, source_rpm);
+ /* Set the correct file uid/gid's */
+ loop_through_files(TAG_BASENAMES, fileaction_setowngrp);
+ }
+ else if ((func & (rpm_query|rpm_query_package)) == (rpm_query|rpm_query_package)) {
+ if (!(func & (rpm_query_info|rpm_query_list))) {
+ /* If just a straight query, just give package name */
+ printf("%s-%s-%s\n", rpm_getstr(TAG_NAME, 0), rpm_getstr(TAG_VERSION, 0), rpm_getstr(TAG_RELEASE, 0));
+ }
+ if (func & rpm_query_info) {
+ /* Do the nice printout */
+ time_t bdate_time;
+ struct tm *bdate_ptm;
+ char bdatestring[50];
+ const char *p;
+
+ printf("%-12s: %s\n", "Name" , rpm_getstr(TAG_NAME, 0));
+ /* TODO compat: add "Epoch" here */
+ printf("%-12s: %s\n", "Version" , rpm_getstr(TAG_VERSION, 0));
+ printf("%-12s: %s\n", "Release" , rpm_getstr(TAG_RELEASE, 0));
+ /* add "Architecture" */
+ printf("%-12s: %s\n", "Install Date", "(not installed)");
+ printf("%-12s: %s\n", "Group" , rpm_getstr(TAG_GROUP, 0));
+ printf("%-12s: %d\n", "Size" , rpm_getint(TAG_SIZE, 0));
+ printf("%-12s: %s\n", "License" , rpm_getstr(TAG_LICENSE, 0));
+ /* add "Signature" */
+ printf("%-12s: %s\n", "Source RPM" , source_rpm ? source_rpm : "(none)");
+ bdate_time = rpm_getint(TAG_BUILDTIME, 0);
+ bdate_ptm = localtime(&bdate_time);
+ strftime(bdatestring, 50, "%a %d %b %Y %T %Z", bdate_ptm);
+ printf("%-12s: %s\n", "Build Date" , bdatestring);
+ printf("%-12s: %s\n", "Build Host" , rpm_getstr(TAG_BUILDHOST, 0));
+ p = rpm_getstr(TAG_PREFIXS, 0);
+ printf("%-12s: %s\n", "Relocations" , p ? p : "(not relocatable)");
+ /* add "Packager" */
+ p = rpm_getstr(TAG_VENDOR, 0);
+ printf("%-12s: %s\n", "Vendor" , p ? p : "(none)");
+ printf("%-12s: %s\n", "URL" , rpm_getstr(TAG_URL, 0));
+ printf("%-12s: %s\n", "Summary" , rpm_getstr(TAG_SUMMARY, 0));
+ printf("Description :\n%s\n", rpm_getstr(TAG_DESCRIPTION, 0));
+ }
+ if (func & rpm_query_list) {
+ int count, it, flags;
+ count = rpm_getcount(TAG_BASENAMES);
+ for (it = 0; it < count; it++) {
+ flags = rpm_getint(TAG_FILEFLAGS, it);
+ switch (func & (rpm_query_list_doc|rpm_query_list_config)) {
+ case rpm_query_list_doc:
+ if (!(flags & RPMFILE_DOC)) continue;
+ break;
+ case rpm_query_list_config:
+ if (!(flags & RPMFILE_CONFIG)) continue;
+ break;
+ case rpm_query_list_doc|rpm_query_list_config:
+ if (!(flags & (RPMFILE_CONFIG|RPMFILE_DOC))) continue;
+ break;
+ }
+ printf("%s%s\n",
+ rpm_getstr(TAG_DIRNAMES, rpm_getint(TAG_DIRINDEXES, it)),
+ rpm_getstr(TAG_BASENAMES, it));
+ }
+ }
+ }
+ munmap(G.map, mapsize);
+ free(G.mytags);
+ close(rpm_fd);
+ }
+ return 0;
+}
diff --git a/archival/rpm2cpio.c b/archival/rpm2cpio.c
index f3dfa51..61adde7 100644
--- a/archival/rpm2cpio.c
+++ b/archival/rpm2cpio.c
@@ -7,6 +7,15 @@
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
+//config:config RPM2CPIO
+//config: bool "rpm2cpio"
+//config: default y
+//config: help
+//config: Converts a RPM file into a CPIO archive.
+
+//applet:IF_RPM2CPIO(APPLET(rpm2cpio, BB_DIR_USR_BIN, BB_SUID_DROP))
+//kbuild:lib-$(CONFIG_RPM2CPIO) += rpm2cpio.o
+
//usage:#define rpm2cpio_trivial_usage
//usage: "package.rpm"
//usage:#define rpm2cpio_full_usage "\n\n"
diff --git a/archival/tar.c b/archival/tar.c
index baca798..fa2deb5 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -22,7 +22,6 @@
*
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
-
/* TODO: security with -C DESTDIR option can be enhanced.
* Consider tar file created via:
* $ tar cvf bug.tar anything.txt
@@ -42,6 +41,109 @@
* This doesn't feel right, and IIRC GNU tar doesn't do that.
*/
+//config:config TAR
+//config: bool "tar"
+//config: default y
+//config: help
+//config: tar is an archiving program. It's commonly used with gzip to
+//config: create compressed archives. It's probably the most widely used
+//config: UNIX archive program.
+//config:
+//config:config FEATURE_TAR_CREATE
+//config: bool "Enable archive creation"
+//config: default y
+//config: depends on TAR
+//config: help
+//config: If you enable this option you'll be able to create
+//config: tar archives using the `-c' option.
+//config:
+//config:config FEATURE_TAR_AUTODETECT
+//config: bool "Autodetect compressed tarballs"
+//config: default y
+//config: depends on TAR && (FEATURE_SEAMLESS_Z || FEATURE_SEAMLESS_GZ || FEATURE_SEAMLESS_BZ2 || FEATURE_SEAMLESS_LZMA || FEATURE_SEAMLESS_XZ)
+//config: help
+//config: With this option tar can automatically detect compressed
+//config: tarballs. Currently it works only on files (not pipes etc).
+//config:
+//config:config FEATURE_TAR_FROM
+//config: bool "Enable -X (exclude from) and -T (include from) options)"
+//config: default y
+//config: depends on TAR
+//config: help
+//config: If you enable this option you'll be able to specify
+//config: a list of files to include or exclude from an archive.
+//config:
+//config:config FEATURE_TAR_OLDGNU_COMPATIBILITY
+//config: bool "Support for old tar header format"
+//config: default y
+//config: depends on TAR || DPKG
+//config: help
+//config: This option is required to unpack archives created in
+//config: the old GNU format; help to kill this old format by
+//config: repacking your ancient archives with the new format.
+//config:
+//config:config FEATURE_TAR_OLDSUN_COMPATIBILITY
+//config: bool "Enable untarring of tarballs with checksums produced by buggy Sun tar"
+//config: default y
+//config: depends on TAR || DPKG
+//config: help
+//config: This option is required to unpack archives created by some old
+//config: version of Sun's tar (it was calculating checksum using signed
+//config: arithmetic). It is said to be fixed in newer Sun tar, but "old"
+//config: tarballs still exist.
+//config:
+//config:config FEATURE_TAR_GNU_EXTENSIONS
+//config: bool "Support for GNU tar extensions (long filenames)"
+//config: default y
+//config: depends on TAR || DPKG
+//config: help
+//config: With this option busybox supports GNU long filenames and
+//config: linknames.
+//config:
+//config:config FEATURE_TAR_LONG_OPTIONS
+//config: bool "Enable long options"
+//config: default y
+//config: depends on TAR && LONG_OPTS
+//config: help
+//config: Enable use of long options, increases size by about 400 Bytes
+//config:
+//config:config FEATURE_TAR_TO_COMMAND
+//config: bool "Support for writing to an external program"
+//config: default y
+//config: depends on TAR && FEATURE_TAR_LONG_OPTIONS
+//config: help
+//config: If you enable this option you'll be able to instruct tar to send
+//config: the contents of each extracted file to the standard input of an
+//config: external program.
+//config:
+//config:config FEATURE_TAR_UNAME_GNAME
+//config: bool "Enable use of user and group names"
+//config: default y
+//config: depends on TAR
+//config: help
+//config: Enables use of user and group names in tar. This affects contents
+//config: listings (-t) and preserving permissions when unpacking (-p).
+//config: +200 bytes.
+//config:
+//config:config FEATURE_TAR_NOPRESERVE_TIME
+//config: bool "Enable -m (do not preserve time) option"
+//config: default y
+//config: depends on TAR
+//config: help
+//config: With this option busybox supports GNU tar -m
+//config: (do not preserve time) option.
+//config:
+//config:config FEATURE_TAR_SELINUX
+//config: bool "Support for extracting SELinux labels"
+//config: default n
+//config: depends on TAR && SELINUX
+//config: help
+//config: With this option busybox supports restoring SELinux labels
+//config: when extracting files from tar archives.
+
+//applet:IF_TAR(APPLET(tar, BB_DIR_BIN, BB_SUID_DROP))
+//kbuild:lib-$(CONFIG_TAR) += tar.o
+
#include <fnmatch.h>
#include "libbb.h"
#include "bb_archive.h"
@@ -566,7 +668,7 @@ static void NOINLINE vfork_compressor(int tar_fd, int gzip)
xmove_fd(gzipDataPipe.rd, 0);
xmove_fd(tar_fd, 1);
/* exec gzip/bzip2 program/applet */
- BB_EXECLP(zip_exec, zip_exec, "-f", NULL);
+ BB_EXECLP(zip_exec, zip_exec, "-f", (char *)0);
vfork_exec_errno = errno;
_exit(EXIT_FAILURE);
}
@@ -678,14 +780,12 @@ static llist_t *append_file_list_to_list(llist_t *list)
char *cp = last_char_is(line, '/');
if (cp > line)
*cp = '\0';
- llist_add_to(&newlist, line);
+ llist_add_to_end(&newlist, line);
}
fclose(src_stream);
}
return newlist;
}
-#else
-# define append_file_list_to_list(x) 0
#endif
//usage:#define tar_trivial_usage
@@ -1095,8 +1195,14 @@ int tar_main(int argc UNUSED_PARAM, char **argv)
/*tar_handle->offset = 0; - already is */
}
+ /* Zero processed headers (== empty file) is not a valid tarball.
+ * We (ab)use bb_got_signal as exitcode here,
+ * because check_errors_in_children() uses _it_ as error indicator.
+ */
+ bb_got_signal = EXIT_FAILURE;
+
while (get_header_tar(tar_handle) == EXIT_SUCCESS)
- continue;
+ bb_got_signal = EXIT_SUCCESS; /* saw at least one header, good */
/* Check that every file that should have been extracted was */
while (tar_handle->accept) {
@@ -1112,8 +1218,9 @@ int tar_main(int argc UNUSED_PARAM, char **argv)
close(tar_handle->src_fd);
if (SEAMLESS_COMPRESSION || OPT_COMPRESS) {
+ /* Set bb_got_signal to 1 if a child died with !0 exitcode */
check_errors_in_children(0);
- return bb_got_signal;
}
- return EXIT_SUCCESS;
+
+ return bb_got_signal;
}
diff --git a/archival/unzip.c b/archival/unzip.c
index 9add637..c9625ab 100644
--- a/archival/unzip.c
+++ b/archival/unzip.c
@@ -9,16 +9,27 @@
*
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
-
/* For reference see
* http://www.pkware.com/company/standards/appnote/
* http://www.info-zip.org/pub/infozip/doc/appnote-iz-latest.zip
- */
-
-/* TODO
+ *
+ * TODO
* Zip64 + other methods
*/
+//config:config UNZIP
+//config: bool "unzip"
+//config: default y
+//config: help
+//config: unzip will list or extract files from a ZIP archive,
+//config: commonly found on DOS/WIN systems. The default behavior
+//config: (with no options) is to extract the archive into the
+//config: current directory. Use the `-d' option to extract to a
+//config: directory of your choice.
+
+//applet:IF_UNZIP(APPLET(unzip, BB_DIR_USR_BIN, BB_SUID_DROP))
+//kbuild:lib-$(CONFIG_UNZIP) += unzip.o
+
//usage:#define unzip_trivial_usage
//usage: "[-lnopq] FILE[.zip] [FILE]... [-x FILE...] [-d DIR]"
//usage:#define unzip_full_usage "\n\n"
@@ -163,7 +174,17 @@ enum { zip_fd = 3 };
#if ENABLE_DESKTOP
-#define PEEK_FROM_END 16384
+/* Seen in the wild:
+ * Self-extracting PRO2K3XP_32.exe contains 19078464 byte zip archive,
+ * where CDE was nearly 48 kbytes before EOF.
+ * (Surprisingly, it also apparently has *another* CDE structure
+ * closer to the end, with bogus cdf_offset).
+ * To make extraction work, bumped PEEK_FROM_END from 16k to 64k.
+ */
+#define PEEK_FROM_END (64*1024)
+
+/* This value means that we failed to find CDF */
+#define BAD_CDF_OFFSET ((uint32_t)0xffffffff)
/* NB: does not preserve file position! */
static uint32_t find_cdf_offset(void)
@@ -180,6 +201,7 @@ static uint32_t find_cdf_offset(void)
xlseek(zip_fd, end, SEEK_SET);
full_read(zip_fd, buf, PEEK_FROM_END);
+ cde_header.formatted.cdf_offset = BAD_CDF_OFFSET;
p = buf;
while (p <= buf + PEEK_FROM_END - CDE_HEADER_LEN - 4) {
if (*p != 'P') {
@@ -195,11 +217,17 @@ static uint32_t find_cdf_offset(void)
/* we found CDE! */
memcpy(cde_header.raw, p + 1, CDE_HEADER_LEN);
FIX_ENDIANNESS_CDE(cde_header);
- free(buf);
- return cde_header.formatted.cdf_offset;
+ /*
+ * I've seen .ZIP files with seemingly valid CDEs
+ * where cdf_offset points past EOF - ??
+ * Ignore such CDEs:
+ */
+ if (cde_header.formatted.cdf_offset < end + (p - buf))
+ break;
+ cde_header.formatted.cdf_offset = BAD_CDF_OFFSET;
}
- //free(buf);
- bb_error_msg_and_die("can't find file table");
+ free(buf);
+ return cde_header.formatted.cdf_offset;
};
static uint32_t read_next_cdf(uint32_t cdf_offset, cdf_header_t *cdf_ptr)
@@ -211,13 +239,15 @@ static uint32_t read_next_cdf(uint32_t cdf_offset, cdf_header_t *cdf_ptr)
if (!cdf_offset)
cdf_offset = find_cdf_offset();
- xlseek(zip_fd, cdf_offset + 4, SEEK_SET);
- xread(zip_fd, cdf_ptr->raw, CDF_HEADER_LEN);
- FIX_ENDIANNESS_CDF(*cdf_ptr);
- cdf_offset += 4 + CDF_HEADER_LEN
- + cdf_ptr->formatted.file_name_length
- + cdf_ptr->formatted.extra_field_length
- + cdf_ptr->formatted.file_comment_length;
+ if (cdf_offset != BAD_CDF_OFFSET) {
+ xlseek(zip_fd, cdf_offset + 4, SEEK_SET);
+ xread(zip_fd, cdf_ptr->raw, CDF_HEADER_LEN);
+ FIX_ENDIANNESS_CDF(*cdf_ptr);
+ cdf_offset += 4 + CDF_HEADER_LEN
+ + cdf_ptr->formatted.file_name_length
+ + cdf_ptr->formatted.extra_field_length
+ + cdf_ptr->formatted.file_comment_length;
+ }
xlseek(zip_fd, org, SEEK_SET);
return cdf_offset;
@@ -226,8 +256,9 @@ static uint32_t read_next_cdf(uint32_t cdf_offset, cdf_header_t *cdf_ptr)
static void unzip_skip(off_t skip)
{
- if (lseek(zip_fd, skip, SEEK_CUR) == (off_t)-1)
- bb_copyfd_exact_size(zip_fd, -1, skip);
+ if (skip != 0)
+ if (lseek(zip_fd, skip, SEEK_CUR) == (off_t)-1)
+ bb_copyfd_exact_size(zip_fd, -1, skip);
}
static void unzip_create_leading_dirs(const char *fn)
@@ -267,6 +298,14 @@ static void unzip_extract(zip_header_t *zip_header, int dst_fd)
}
}
+static void my_fgets80(char *buf80)
+{
+ fflush_all();
+ if (!fgets(buf80, 80, stdin)) {
+ bb_perror_msg_and_die("can't read standard input");
+ }
+}
+
int unzip_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int unzip_main(int argc, char **argv)
{
@@ -291,7 +330,7 @@ int unzip_main(int argc, char **argv)
llist_t *zreject = NULL;
char *base_dir = NULL;
int i, opt;
- char key_buf[80];
+ char key_buf[80]; /* must match size used by my_fgets80 */
struct stat stat_buf;
/* -q, -l and -v: UnZip 5.52 of 28 February 2005, by Info-ZIP:
@@ -520,21 +559,31 @@ int unzip_main(int argc, char **argv)
bb_error_msg_and_die("zip flag 1 (encryption) is not supported");
}
- {
+ if (cdf_offset != BAD_CDF_OFFSET) {
cdf_header_t cdf_header;
cdf_offset = read_next_cdf(cdf_offset, &cdf_header);
+ /*
+ * Note: cdf_offset can become BAD_CDF_OFFSET after the above call.
+ */
if (zip_header.formatted.zip_flags & SWAP_LE16(0x0008)) {
/* 0x0008 - streaming. [u]cmpsize can be reliably gotten
- * only from Central Directory. See unzip_doc.txt */
+ * only from Central Directory. See unzip_doc.txt
+ */
zip_header.formatted.crc32 = cdf_header.formatted.crc32;
zip_header.formatted.cmpsize = cdf_header.formatted.cmpsize;
zip_header.formatted.ucmpsize = cdf_header.formatted.ucmpsize;
}
if ((cdf_header.formatted.version_made_by >> 8) == 3) {
- /* this archive is created on Unix */
+ /* This archive is created on Unix */
dir_mode = file_mode = (cdf_header.formatted.external_file_attributes >> 16);
}
}
+ if (cdf_offset == BAD_CDF_OFFSET
+ && (zip_header.formatted.zip_flags & SWAP_LE16(0x0008))
+ ) {
+ /* If it's a streaming zip, we _require_ CDF */
+ bb_error_msg_and_die("can't find file table");
+ }
#endif
/* Read filename */
@@ -624,10 +673,7 @@ int unzip_main(int argc, char **argv)
i = 'y';
} else {
printf("replace %s? [y]es, [n]o, [A]ll, [N]one, [r]ename: ", dst_fn);
- fflush_all();
- if (!fgets(key_buf, sizeof(key_buf), stdin)) {
- bb_perror_msg_and_die("can't read input");
- }
+ my_fgets80(key_buf);
i = key_buf[0];
}
} else { /* File is not regular file */
@@ -668,9 +714,7 @@ int unzip_main(int argc, char **argv)
case 'r':
/* Prompt for new name */
printf("new name: ");
- if (!fgets(key_buf, sizeof(key_buf), stdin)) {
- bb_perror_msg_and_die("can't read input");
- }
+ my_fgets80(key_buf);
free(dst_fn);
dst_fn = xstrdup(key_buf);
chomp(dst_fn);
diff --git a/busybox-full.sources b/busybox-full.sources
index 17cdd00..e050ef4 100644
--- a/busybox-full.sources
+++ b/busybox-full.sources
@@ -17,7 +17,7 @@ findutils/find.c findutils/grep.c findutils/xargs.c
init/halt.c init/mesg.c
-libbb/appletlib.c libbb/ask_confirmation.c libbb/bb_askpass.c libbb/bb_do_delay.c libbb/bb_pwd.c libbb/bb_qsort.c libbb/bb_strtonum.c libbb/change_identity.c libbb/chomp.c libbb/compare_string_array.c libbb/concat_path_file.c libbb/concat_subpath_file.c libbb/copy_file.c libbb/copyfd.c libbb/crc32.c libbb/create_icmp6_socket.c libbb/create_icmp_socket.c libbb/percent_decode.c libbb/default_error_retval.c libbb/device_open.c libbb/dump.c libbb/execable.c libbb/fclose_nonstdin.c libbb/fflush_stdout_and_exit.c libbb/fgets_str.c libbb/find_mount_point.c libbb/find_pid_by_name.c libbb/find_root_device.c libbb/full_write.c libbb/get_console.c libbb/get_last_path_component.c libbb/get_line_from_file.c libbb/get_volsize.c libbb/getopt32.c libbb/getpty.c libbb/herror_msg.c libbb/human_readable.c libbb/inet_cksum.c libbb/inet_common.c libbb/info_msg.c libbb/inode_hash.c libbb/isdirectory.c libbb/kernel_version.c libbb/last_char_is.c libbb/lineedit.c libbb/lineedit_ptr_hack.c libbb/llist.c libbb/login.c libbb/loop.c libbb/make_directory.c libbb/makedev.c libbb/match_fstype.c libbb/hash_md5_sha.c libbb/bb_bswap_64.c libbb/messages.c libbb/mode_string.c libbb/mtab.c libbb/parse_config.c libbb/parse_mode.c libbb/perror_msg.c libbb/perror_nomsg.c libbb/perror_nomsg_and_die.c libbb/pidfile.c libbb/platform.c libbb/print_flags.c libbb/printable.c libbb/printable_string.c libbb/process_escape_sequence.c libbb/procps.c libbb/progress.c libbb/ptr_to_globals.c libbb/read.c libbb/read_key.c libbb/read_printf.c libbb/recursive_action.c libbb/remove_file.c libbb/run_shell.c libbb/safe_gethostname.c libbb/safe_poll.c libbb/safe_strncpy.c libbb/safe_write.c libbb/setup_environment.c libbb/signals.c libbb/simplify_path.c libbb/single_argv.c libbb/skip_whitespace.c libbb/speed_table.c libbb/str_tolower.c libbb/strrstr.c libbb/time.c libbb/trim.c libbb/u_signal_names.c libbb/udp_io.c libbb/unicode.c libbb/uuencode.c libbb/vdprintf.c libbb/verror_msg.c libbb/vfork_daemon_rexec.c libbb/warn_ignoring_args.c libbb/wfopen.c libbb/wfopen_input.c libbb/write.c libbb/xatonum.c libbb/xconnect.c libbb/xfunc_die.c libbb/xfuncs.c libbb/xfuncs_printf.c libbb/xgetcwd.c libbb/xgethostbyname.c libbb/xreadlink.c libbb/xrealloc_vector.c libbb/xregcomp.c libbb/get_cpu_count.c libbb/get_shell_name.c
+libbb/appletlib.c libbb/ask_confirmation.c libbb/bb_askpass.c libbb/bb_do_delay.c libbb/bb_pwd.c libbb/bb_qsort.c libbb/bb_strtonum.c libbb/change_identity.c libbb/chomp.c libbb/compare_string_array.c libbb/concat_path_file.c libbb/concat_subpath_file.c libbb/copy_file.c libbb/copyfd.c libbb/crc32.c libbb/percent_decode.c libbb/default_error_retval.c libbb/device_open.c libbb/dump.c libbb/execable.c libbb/fclose_nonstdin.c libbb/fflush_stdout_and_exit.c libbb/fgets_str.c libbb/find_mount_point.c libbb/find_pid_by_name.c libbb/find_root_device.c libbb/full_write.c libbb/get_console.c libbb/get_last_path_component.c libbb/get_line_from_file.c libbb/get_volsize.c libbb/getopt32.c libbb/getpty.c libbb/herror_msg.c libbb/human_readable.c libbb/inet_cksum.c libbb/inet_common.c libbb/info_msg.c libbb/inode_hash.c libbb/isdirectory.c libbb/kernel_version.c libbb/last_char_is.c libbb/lineedit.c libbb/lineedit_ptr_hack.c libbb/llist.c libbb/login.c libbb/loop.c libbb/make_directory.c libbb/makedev.c libbb/match_fstype.c libbb/hash_md5_sha.c libbb/bb_bswap_64.c libbb/messages.c libbb/mode_string.c libbb/mtab.c libbb/parse_config.c libbb/parse_mode.c libbb/perror_msg.c libbb/perror_nomsg.c libbb/perror_nomsg_and_die.c libbb/pidfile.c libbb/platform.c libbb/print_flags.c libbb/printable.c libbb/printable_string.c libbb/process_escape_sequence.c libbb/procps.c libbb/progress.c libbb/ptr_to_globals.c libbb/read.c libbb/read_key.c libbb/read_printf.c libbb/recursive_action.c libbb/remove_file.c libbb/run_shell.c libbb/safe_gethostname.c libbb/safe_poll.c libbb/safe_strncpy.c libbb/safe_write.c libbb/setup_environment.c libbb/signals.c libbb/simplify_path.c libbb/single_argv.c libbb/skip_whitespace.c libbb/speed_table.c libbb/str_tolower.c libbb/strrstr.c libbb/time.c libbb/trim.c libbb/u_signal_names.c libbb/udp_io.c libbb/unicode.c libbb/uuencode.c libbb/vdprintf.c libbb/verror_msg.c libbb/vfork_daemon_rexec.c libbb/warn_ignoring_args.c libbb/wfopen.c libbb/wfopen_input.c libbb/write.c libbb/xatonum.c libbb/xconnect.c libbb/xfunc_die.c libbb/xfuncs.c libbb/xfuncs_printf.c libbb/xgetcwd.c libbb/xgethostbyname.c libbb/xreadlink.c libbb/xrealloc_vector.c libbb/xregcomp.c libbb/get_cpu_count.c libbb/get_shell_name.c libbb/endofname.c libbb/in_ether.c
libpwdgrp/uidgid_get.c
@@ -46,5 +46,5 @@ util-linux/more.c util-linux/mount.c util-linux/rdev.c util-linux/rev.c util-lin
util-linux/volume_id/get_devname.c util-linux/volume_id/volume_id.c util-linux/volume_id/util.c util-linux/volume_id/ext.c
util-linux/volume_id/fat.c util-linux/volume_id/iso9660.c util-linux/volume_id/ntfs.c util-linux/volume_id/linux_swap.c
-util-linux/volume_id/exfat.c util-linux/volume_id/squashfs.c
+util-linux/volume_id/exfat.c util-linux/volume_id/squashfs.c util-linux/volume_id/f2fs.c
diff --git a/busybox-minimal.sources b/busybox-minimal.sources
index 4e31001..880bdb7 100644
--- a/busybox-minimal.sources
+++ b/busybox-minimal.sources
@@ -13,7 +13,7 @@ e2fsprogs/e2fs_lib.c e2fsprogs/chattr.c e2fsprogs/lsattr.c e2fsprogs/tune2fs.c
editors/awk.c editors/cmp.c editors/diff.c editors/patch.c editors/sed.c
findutils/find.c findutils/grep.c findutils/xargs.c
-libbb/appletlib.c libbb/ask_confirmation.c libbb/bb_askpass.c libbb/bb_do_delay.c libbb/bb_pwd.c libbb/bb_qsort.c libbb/bb_strtonum.c libbb/change_identity.c libbb/chomp.c libbb/compare_string_array.c libbb/concat_path_file.c libbb/concat_subpath_file.c libbb/copy_file.c libbb/copyfd.c libbb/crc32.c libbb/create_icmp6_socket.c libbb/create_icmp_socket.c libbb/default_error_retval.c libbb/device_open.c libbb/dump.c libbb/execable.c libbb/fclose_nonstdin.c libbb/fflush_stdout_and_exit.c libbb/fgets_str.c libbb/find_mount_point.c libbb/find_pid_by_name.c libbb/find_root_device.c libbb/full_write.c libbb/get_console.c libbb/get_last_path_component.c libbb/get_line_from_file.c libbb/get_shell_name.c libbb/get_volsize.c libbb/getopt32.c libbb/getpty.c libbb/herror_msg.c libbb/human_readable.c libbb/inet_common.c libbb/info_msg.c libbb/inode_hash.c libbb/isdirectory.c libbb/kernel_version.c libbb/last_char_is.c libbb/lineedit.c libbb/lineedit_ptr_hack.c libbb/llist.c libbb/login.c libbb/loop.c libbb/make_directory.c libbb/makedev.c libbb/match_fstype.c libbb/hash_md5_sha.c libbb/bb_bswap_64.c libbb/messages.c libbb/mode_string.c libbb/mtab.c libbb/parse_config.c libbb/parse_mode.c libbb/perror_msg.c libbb/perror_nomsg.c libbb/perror_nomsg_and_die.c libbb/pidfile.c libbb/platform.c libbb/print_flags.c libbb/printable.c libbb/printable_string.c libbb/process_escape_sequence.c libbb/procps.c libbb/progress.c libbb/ptr_to_globals.c libbb/read.c libbb/read_key.c libbb/read_printf.c libbb/recursive_action.c libbb/remove_file.c libbb/run_shell.c libbb/safe_gethostname.c libbb/safe_poll.c libbb/safe_strncpy.c libbb/safe_write.c libbb/setup_environment.c libbb/signals.c libbb/simplify_path.c libbb/single_argv.c libbb/skip_whitespace.c libbb/speed_table.c libbb/str_tolower.c libbb/strrstr.c libbb/time.c libbb/trim.c libbb/u_signal_names.c libbb/udp_io.c libbb/uuencode.c libbb/vdprintf.c libbb/verror_msg.c libbb/vfork_daemon_rexec.c libbb/warn_ignoring_args.c libbb/wfopen.c libbb/wfopen_input.c libbb/write.c libbb/xatonum.c libbb/xconnect.c libbb/xfunc_die.c libbb/xfuncs.c libbb/xfuncs_printf.c libbb/xgetcwd.c libbb/xgethostbyname.c libbb/xreadlink.c libbb/xrealloc_vector.c libbb/xregcomp.c libbb/unicode.c
+libbb/appletlib.c libbb/ask_confirmation.c libbb/bb_askpass.c libbb/bb_do_delay.c libbb/bb_pwd.c libbb/bb_qsort.c libbb/bb_strtonum.c libbb/change_identity.c libbb/chomp.c libbb/compare_string_array.c libbb/concat_path_file.c libbb/concat_subpath_file.c libbb/copy_file.c libbb/copyfd.c libbb/crc32.c libbb/default_error_retval.c libbb/device_open.c libbb/dump.c libbb/execable.c libbb/fclose_nonstdin.c libbb/fflush_stdout_and_exit.c libbb/fgets_str.c libbb/find_mount_point.c libbb/find_pid_by_name.c libbb/find_root_device.c libbb/full_write.c libbb/get_console.c libbb/get_last_path_component.c libbb/get_line_from_file.c libbb/get_shell_name.c libbb/endofname.c libbb/in_ether.c libbb/get_volsize.c libbb/getopt32.c libbb/getpty.c libbb/herror_msg.c libbb/human_readable.c libbb/inet_common.c libbb/info_msg.c libbb/inode_hash.c libbb/isdirectory.c libbb/kernel_version.c libbb/last_char_is.c libbb/lineedit.c libbb/lineedit_ptr_hack.c libbb/llist.c libbb/login.c libbb/loop.c libbb/make_directory.c libbb/makedev.c libbb/match_fstype.c libbb/hash_md5_sha.c libbb/bb_bswap_64.c libbb/messages.c libbb/mode_string.c libbb/mtab.c libbb/parse_config.c libbb/parse_mode.c libbb/perror_msg.c libbb/perror_nomsg.c libbb/perror_nomsg_and_die.c libbb/pidfile.c libbb/platform.c libbb/print_flags.c libbb/printable.c libbb/printable_string.c libbb/process_escape_sequence.c libbb/procps.c libbb/progress.c libbb/ptr_to_globals.c libbb/read.c libbb/read_key.c libbb/read_printf.c libbb/recursive_action.c libbb/remove_file.c libbb/run_shell.c libbb/safe_gethostname.c libbb/safe_poll.c libbb/safe_strncpy.c libbb/safe_write.c libbb/setup_environment.c libbb/signals.c libbb/simplify_path.c libbb/single_argv.c libbb/skip_whitespace.c libbb/speed_table.c libbb/str_tolower.c libbb/strrstr.c libbb/time.c libbb/trim.c libbb/u_signal_names.c libbb/udp_io.c libbb/uuencode.c libbb/vdprintf.c libbb/verror_msg.c libbb/vfork_daemon_rexec.c libbb/warn_ignoring_args.c libbb/wfopen.c libbb/wfopen_input.c libbb/write.c libbb/xatonum.c libbb/xconnect.c libbb/xfunc_die.c libbb/xfuncs.c libbb/xfuncs_printf.c libbb/xgetcwd.c libbb/xgethostbyname.c libbb/xreadlink.c libbb/xrealloc_vector.c libbb/xregcomp.c libbb/unicode.c
libpwdgrp/uidgid_get.c
miscutils/bbconfig.c miscutils/dc.c miscutils/devmem.c miscutils/less.c miscutils/makedevs.c miscutils/mountpoint.c miscutils/nandwrite.c
@@ -31,5 +31,5 @@ util-linux/more.c util-linux/mount.c util-linux/rdev.c util-linux/rev.c util-lin
util-linux/volume_id/get_devname.c util-linux/volume_id/volume_id.c util-linux/volume_id/util.c util-linux/volume_id/ext.c
util-linux/volume_id/fat.c util-linux/volume_id/iso9660.c util-linux/volume_id/ntfs.c util-linux/volume_id/linux_swap.c
-util-linux/volume_id/exfat.c util-linux/volume_id/squashfs.c
+util-linux/volume_id/exfat.c util-linux/volume_id/squashfs.c util-linux/volume_id/f2fs.c
diff --git a/console-tools/dumpkmap.c b/console-tools/dumpkmap.c
index 6b923d2..bf8d690 100644
--- a/console-tools/dumpkmap.c
+++ b/console-tools/dumpkmap.c
@@ -36,47 +36,56 @@ int dumpkmap_main(int argc UNUSED_PARAM, char **argv)
{
struct kbentry ke;
int i, j, fd;
- RESERVE_CONFIG_BUFFER(flags, MAX_NR_KEYMAPS);
+#define flags bb_common_bufsiz1
/* When user accidentally runs "dumpkmap FILE"
* instead of "dumpkmap >FILE", we'd dump binary stuff to tty.
- * Let's prevent it: */
+ * Let's prevent it:
+ */
if (argv[1])
bb_show_usage();
/* bb_warn_ignoring_args(argv[1]);*/
fd = get_console_fd_or_die();
+#if 0
write(STDOUT_FILENO, "bkeymap", 7);
-
/* Here we want to set everything to 0 except for indexes:
- * [0-2] [4-6] [8-10] [12] */
- memset(flags, 0x00, MAX_NR_KEYMAPS);
+ * [0-2] [4-6] [8-10] [12]
+ */
+ /*memset(flags, 0x00, MAX_NR_KEYMAPS); - already is */
memset(flags, 0x01, 13);
flags[3] = flags[7] = flags[11] = 0;
-
/* dump flags */
write(STDOUT_FILENO, flags, MAX_NR_KEYMAPS);
+#define flags7 flags
+#else
+ /* Same effect */
+ /* 0 1 2 3 4 5 6 7 8 9 a b c=12 */
+ memcpy(flags, "bkeymap\1\1\1\0\1\1\1\0\1\1\1\0\1",
+ /* Can use sizeof, or sizeof-1. sizeof is even, using that */
+ /****/ sizeof("bkeymap\1\1\1\0\1\1\1\0\1\1\1\0\1")
+ );
+ write(STDOUT_FILENO, flags, 7 + MAX_NR_KEYMAPS);
+#define flags7 (flags + 7)
+#endif
- for (i = 0; i < MAX_NR_KEYMAPS; i++) {
- if (flags[i] == 1) {
+ for (i = 0; i < 13; i++) {
+ if (flags7[i]) {
for (j = 0; j < NR_KEYS; j++) {
ke.kb_index = j;
ke.kb_table = i;
if (!ioctl_or_perror(fd, KDGKBENT, &ke,
- "ioctl failed with %s, %s, %p",
- (char *)&ke.kb_index,
- (char *)&ke.kb_table,
- &ke.kb_value)
+ "ioctl(KDGKBENT{%d,%d}) failed",
+ j, i)
) {
- write(STDOUT_FILENO, (void*)&ke.kb_value, 2);
+ write(STDOUT_FILENO, &ke.kb_value, 2);
}
}
}
}
if (ENABLE_FEATURE_CLEAN_UP) {
close(fd);
- RELEASE_CONFIG_BUFFER(flags);
}
return EXIT_SUCCESS;
}
diff --git a/console-tools/loadkmap.c b/console-tools/loadkmap.c
index bcffe16..66ec3b0 100644
--- a/console-tools/loadkmap.c
+++ b/console-tools/loadkmap.c
@@ -48,6 +48,7 @@ int loadkmap_main(int argc UNUSED_PARAM, char **argv)
if (argv[1])
bb_show_usage();
/* bb_warn_ignoring_args(argv[1]); */
+
fd = get_console_fd_or_die();
/* or maybe:
opt = getopt32(argv, "C:", &tty_name);
@@ -61,14 +62,24 @@ int loadkmap_main(int argc UNUSED_PARAM, char **argv)
xread(STDIN_FILENO, flags, MAX_NR_KEYMAPS);
for (i = 0; i < MAX_NR_KEYMAPS; i++) {
- if (flags[i] == 1) {
- xread(STDIN_FILENO, ibuff, NR_KEYS * sizeof(uint16_t));
- for (j = 0; j < NR_KEYS; j++) {
- ke.kb_index = j;
- ke.kb_table = i;
- ke.kb_value = ibuff[j];
- ioctl(fd, KDSKBENT, &ke);
- }
+ if (flags[i] != 1)
+ continue;
+ xread(STDIN_FILENO, ibuff, NR_KEYS * sizeof(uint16_t));
+ for (j = 0; j < NR_KEYS; j++) {
+ ke.kb_index = j;
+ ke.kb_table = i;
+ ke.kb_value = ibuff[j];
+ /*
+ * Note: table[idx:0] can contain special value
+ * K_ALLOCATED (marks allocated tables in kernel).
+ * dumpkmap saves the value as-is; but attempts
+ * to load it here fail, since it isn't a valid
+ * key value: it is K(KT_SPEC,126) == 2<<8 + 126,
+ * whereas last valid KT_SPEC is
+ * K_BARENUMLOCK == K(KT_SPEC,19).
+ * So far we just ignore these errors:
+ */
+ ioctl(fd, KDSKBENT, &ke);
}
}
diff --git a/coreutils/Kbuild.src b/coreutils/Kbuild.src
index f796b57..9970c8f 100644
--- a/coreutils/Kbuild.src
+++ b/coreutils/Kbuild.src
@@ -35,7 +35,6 @@ lib-$(CONFIG_EXPAND) += expand.o
lib-$(CONFIG_FALSE) += false.o
lib-$(CONFIG_FOLD) += fold.o
lib-$(CONFIG_FSYNC) += fsync.o
-lib-$(CONFIG_HEAD) += head.o
lib-$(CONFIG_INSTALL) += install.o
#lib-$(CONFIG_LENGTH) += length.o
lib-$(CONFIG_LN) += ln.o
@@ -72,7 +71,6 @@ lib-$(CONFIG_STTY) += stty.o
lib-$(CONFIG_SUM) += sum.o
lib-$(CONFIG_SYNC) += sync.o
lib-$(CONFIG_TAC) += tac.o
-lib-$(CONFIG_TAIL) += tail.o
lib-$(CONFIG_TEE) += tee.o
lib-$(CONFIG_TRUE) += true.o
lib-$(CONFIG_TTY) += tty.o
diff --git a/coreutils/cal.c b/coreutils/cal.c
index c631327..5d97d61 100644
--- a/coreutils/cal.c
+++ b/coreutils/cal.c
@@ -165,7 +165,7 @@ int cal_main(int argc UNUSED_PARAM, char **argv)
char lineout[30];
day_array(month, year, dp);
- len = sprintf(lineout, "%s %d", month_names[month - 1], year);
+ len = sprintf(lineout, "%s %u", month_names[month - 1], year);
printf("%*s%s\n%s\n",
((7*julian + WEEK_LEN) - len) / 2, "",
lineout, day_headings);
diff --git a/coreutils/catv.c b/coreutils/catv.c
index 214b431..e3499c5 100644
--- a/coreutils/catv.c
+++ b/coreutils/catv.c
@@ -25,14 +25,23 @@ int catv_main(int argc UNUSED_PARAM, char **argv)
{
int retval = EXIT_SUCCESS;
int fd;
- unsigned flags;
-
- flags = getopt32(argv, "etv");
+ unsigned opts;
#define CATV_OPT_e (1<<0)
#define CATV_OPT_t (1<<1)
#define CATV_OPT_v (1<<2)
- flags ^= CATV_OPT_v;
+ typedef char BUG_const_mismatch[
+ CATV_OPT_e == VISIBLE_ENDLINE && CATV_OPT_t == VISIBLE_SHOW_TABS
+ ? 1 : -1
+ ];
+
+ opts = getopt32(argv, "etv");
argv += optind;
+#if 0 /* These consts match, we can just pass "opts" to visible() */
+ if (opts & CATV_OPT_e)
+ flags |= VISIBLE_ENDLINE;
+ if (opts & CATV_OPT_t)
+ flags |= VISIBLE_SHOW_TABS;
+#endif
/* Read from stdin if there's nothing else to do. */
if (!argv[0])
@@ -50,29 +59,17 @@ int catv_main(int argc UNUSED_PARAM, char **argv)
res = read(fd, read_buf, COMMON_BUFSIZE);
if (res < 0)
retval = EXIT_FAILURE;
- if (res < 1)
+ if (res <= 0)
break;
for (i = 0; i < res; i++) {
unsigned char c = read_buf[i];
-
- if (c > 126 && (flags & CATV_OPT_v)) {
- if (c == 127) {
- printf("^?");
- continue;
- }
- printf("M-");
- c -= 128;
- }
- if (c < 32) {
- if (c == 10) {
- if (flags & CATV_OPT_e)
- bb_putchar('$');
- } else if (flags & (c==9 ? CATV_OPT_t : CATV_OPT_v)) {
- printf("^%c", c+'@');
- continue;
- }
+ if (opts & CATV_OPT_v) {
+ putchar(c);
+ } else {
+ char buf[sizeof("M-^c")];
+ visible(c, buf, opts);
+ fputs(buf, stdout);
}
- bb_putchar(c);
}
}
if (ENABLE_FEATURE_CLEAN_UP && fd)
diff --git a/coreutils/dd.c b/coreutils/dd.c
index 96602eb..2838f63 100644
--- a/coreutils/dd.c
+++ b/coreutils/dd.c
@@ -30,10 +30,10 @@
//usage: "\n conv=noerror Continue after read errors"
//usage: "\n conv=sync Pad blocks with zeros"
//usage: "\n conv=fsync Physically write data out before finishing"
+//usage: "\n conv=swab Swap every pair of bytes"
//usage: )
//usage: "\n"
-//usage: "\nNumbers may be suffixed by c (x1), w (x2), b (x512), kD (x1000), k (x1024),"
-//usage: "\nMD (x1000000), M (x1048576), GD (x1000000000) or G (x1073741824)"
+//usage: "\nN may be suffixed by c (1), w (2), b (512), kD (1000), k (1024), MD, M, GD, G"
//usage:
//usage:#define dd_example_usage
//usage: "$ dd if=/dev/zero of=/dev/ram1 bs=1M count=4\n"
@@ -151,13 +151,14 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
enum {
/* Must be in the same order as OP_conv_XXX! */
/* (see "flags |= (1 << what)" below) */
- FLAG_NOTRUNC = 1 << 0,
- FLAG_SYNC = 1 << 1,
- FLAG_NOERROR = 1 << 2,
- FLAG_FSYNC = 1 << 3,
+ FLAG_NOTRUNC = (1 << 0) * ENABLE_FEATURE_DD_IBS_OBS,
+ FLAG_SYNC = (1 << 1) * ENABLE_FEATURE_DD_IBS_OBS,
+ FLAG_NOERROR = (1 << 2) * ENABLE_FEATURE_DD_IBS_OBS,
+ FLAG_FSYNC = (1 << 3) * ENABLE_FEATURE_DD_IBS_OBS,
+ FLAG_SWAB = (1 << 4) * ENABLE_FEATURE_DD_IBS_OBS,
/* end of conv flags */
- FLAG_TWOBUFS = 1 << 4,
- FLAG_COUNT = 1 << 5,
+ FLAG_TWOBUFS = (1 << 5) * ENABLE_FEATURE_DD_IBS_OBS,
+ FLAG_COUNT = 1 << 6,
};
static const char keywords[] ALIGN1 =
"bs\0""count\0""seek\0""skip\0""if\0""of\0"
@@ -167,7 +168,7 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
;
#if ENABLE_FEATURE_DD_IBS_OBS
static const char conv_words[] ALIGN1 =
- "notrunc\0""sync\0""noerror\0""fsync\0";
+ "notrunc\0""sync\0""noerror\0""fsync\0""swab\0";
#endif
enum {
OP_bs = 0,
@@ -185,11 +186,11 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
OP_conv_sync,
OP_conv_noerror,
OP_conv_fsync,
+ OP_conv_swab,
/* Unimplemented conv=XXX: */
//nocreat do not create the output file
//excl fail if the output file already exists
//fdatasync physically write output file data before finishing
- //swab swap every pair of input bytes
//lcase change upper case to lower case
//ucase change lower case to upper case
//block pad newline-terminated records with spaces to cbs-size
@@ -197,22 +198,33 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
//ascii from EBCDIC to ASCII
//ebcdic from ASCII to EBCDIC
//ibm from ASCII to alternate EBCDIC
+ /* Partially implemented: */
+ //swab swap every pair of input bytes: will abort on non-even reads
#endif
};
- int exitcode = EXIT_FAILURE;
- size_t ibs = 512, obs = 512;
- ssize_t n, w;
- char *ibuf, *obuf;
- /* And these are all zeroed at once! */
+ smallint exitcode = EXIT_FAILURE;
+ int i;
+ size_t ibs = 512;
+ char *ibuf;
+#if ENABLE_FEATURE_DD_IBS_OBS
+ size_t obs = 512;
+ char *obuf;
+#else
+# define obs ibs
+# define obuf ibuf
+#endif
+ /* These are all zeroed at once! */
struct {
int flags;
size_t oc;
+ ssize_t prev_read_size; /* for detecting swab failure */
off_t count;
off_t seek, skip;
const char *infile, *outfile;
} Z;
#define flags (Z.flags )
#define oc (Z.oc )
+#define prev_read_size (Z.prev_read_size)
#define count (Z.count )
#define seek (Z.seek )
#define skip (Z.skip )
@@ -223,10 +235,10 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
INIT_G();
//fflush_all(); - is this needed because of NOEXEC?
- for (n = 1; argv[n]; n++) {
+ for (i = 1; argv[i]; i++) {
int what;
char *val;
- char *arg = argv[n];
+ char *arg = argv[i];
#if ENABLE_DESKTOP
/* "dd --". NB: coreutils 6.9 will complain if they see
@@ -255,6 +267,7 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
}
if (what == OP_conv) {
while (1) {
+ int n;
/* find ',', replace them with NUL so we can use val for
* index_in_strings() without copying.
* We rely on val being non-null, else strchr would fault.
@@ -262,20 +275,21 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
arg = strchr(val, ',');
if (arg)
*arg = '\0';
- what = index_in_strings(conv_words, val);
- if (what < 0)
+ n = index_in_strings(conv_words, val);
+ if (n < 0)
bb_error_msg_and_die(bb_msg_invalid_arg, val, "conv");
- flags |= (1 << what);
+ flags |= (1 << n);
if (!arg) /* no ',' left, so this was the last specifier */
break;
/* *arg = ','; - to preserve ps listing? */
val = arg + 1; /* skip this keyword and ',' */
}
- continue; /* we trashed 'what', can't fall through */
+ /*continue;*/
}
#endif
if (what == OP_bs) {
- ibs = obs = xatoul_range_sfx(val, 1, ((size_t)-1L)/2, dd_suffixes);
+ ibs = xatoul_range_sfx(val, 1, ((size_t)-1L)/2, dd_suffixes);
+ obs = ibs;
/*continue;*/
}
/* These can be large: */
@@ -300,14 +314,17 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
outfile = val;
/*continue;*/
}
- } /* end of "for (argv[n])" */
+ } /* end of "for (argv[i])" */
//XXX:FIXME for huge ibs or obs, malloc'ing them isn't the brightest idea ever
- ibuf = obuf = xmalloc(ibs);
+ ibuf = xmalloc(ibs);
+ obuf = ibuf;
+#if ENABLE_FEATURE_DD_IBS_OBS
if (ibs != obs) {
flags |= FLAG_TWOBUFS;
obuf = xmalloc(obs);
}
+#endif
#if ENABLE_FEATURE_DD_SIGNAL_HANDLING
signal_SA_RESTART_empty_mask(SIGUSR1, dd_output_status);
@@ -316,12 +333,12 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
G.begin_time_us = monotonic_us();
#endif
- if (infile != NULL)
+ if (infile) {
xmove_fd(xopen(infile, O_RDONLY), ifd);
- else {
+ } else {
infile = bb_msg_standard_input;
}
- if (outfile != NULL) {
+ if (outfile) {
int oflag = O_WRONLY | O_CREAT;
if (!seek && !(flags & FLAG_NOTRUNC))
@@ -346,13 +363,13 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
}
if (skip) {
if (lseek(ifd, skip * ibs, SEEK_CUR) < 0) {
- while (skip-- > 0) {
- n = safe_read(ifd, ibuf, ibs);
+ do {
+ ssize_t n = safe_read(ifd, ibuf, ibs);
if (n < 0)
goto die_infile;
if (n == 0)
break;
- }
+ } while (--skip != 0);
}
}
if (seek) {
@@ -361,6 +378,8 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
}
while (!(flags & FLAG_COUNT) || (G.in_full + G.in_part != count)) {
+ ssize_t n;
+
n = safe_read(ifd, ibuf, ibs);
if (n == 0)
break;
@@ -375,6 +394,27 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
* conv=noerror just ignores input bad blocks */
n = 0;
}
+ if (flags & FLAG_SWAB) {
+ uint16_t *p16;
+ ssize_t n2;
+
+ /* Our code allows only last read to be odd-sized */
+ if (prev_read_size & 1)
+ bb_error_msg_and_die("can't swab %lu byte buffer",
+ (unsigned long)prev_read_size);
+ prev_read_size = n;
+
+ /* If n is odd, last byte is not swapped:
+ * echo -n "qwe" | dd conv=swab
+ * prints "wqe".
+ */
+ p16 = (void*) ibuf;
+ n2 = (n >> 1);
+ while (--n2 >= 0) {
+ *p16 = bswap_16(*p16);
+ p16++;
+ }
+ }
if ((size_t)n == ibs)
G.in_full++;
else {
@@ -401,8 +441,10 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
oc = 0;
}
}
- } else if (write_and_stats(ibuf, n, obs, outfile))
- goto out_status;
+ } else {
+ if (write_and_stats(ibuf, n, obs, outfile))
+ goto out_status;
+ }
if (flags & FLAG_FSYNC) {
if (fsync(ofd) < 0)
@@ -411,9 +453,8 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
}
if (ENABLE_FEATURE_DD_IBS_OBS && oc) {
- w = full_write_or_warn(obuf, oc, outfile);
- if (w < 0) goto out_status;
- if (w > 0) G.out_part++;
+ if (write_and_stats(obuf, oc, obs, outfile))
+ goto out_status;
}
if (close(ifd) < 0) {
die_infile:
diff --git a/coreutils/expand.c b/coreutils/expand.c
index ac5ad5b..9a83fad 100644
--- a/coreutils/expand.c
+++ b/coreutils/expand.c
@@ -78,11 +78,7 @@ static void expand(FILE *file, unsigned tab_size, unsigned opt)
unsigned len;
*ptr = '\0';
# if ENABLE_UNICODE_SUPPORT
- {
- uni_stat_t uni_stat;
- printable_string(&uni_stat, ptr_strbeg);
- len = uni_stat.unicode_width;
- }
+ len = unicode_strwidth(ptr_strbeg);
# else
len = ptr - ptr_strbeg;
# endif
@@ -138,12 +134,9 @@ static void unexpand(FILE *file, unsigned tab_size, unsigned opt)
printf("%*s%.*s", len, "", n, ptr);
# if ENABLE_UNICODE_SUPPORT
{
- char c;
- uni_stat_t uni_stat;
- c = ptr[n];
+ char c = ptr[n];
ptr[n] = '\0';
- printable_string(&uni_stat, ptr);
- len = uni_stat.unicode_width;
+ len = unicode_strwidth(ptr);
ptr[n] = c;
}
# else
diff --git a/coreutils/head.c b/coreutils/head.c
index ec45127..9388b02 100644
--- a/coreutils/head.c
+++ b/coreutils/head.c
@@ -11,6 +11,8 @@
/* BB_AUDIT GNU compatible -c, -q, and -v options in 'fancy' configuration. */
/* http://www.opengroup.org/onlinepubs/007904975/utilities/head.html */
+//kbuild:lib-$(CONFIG_HEAD) += head.o
+
//usage:#define head_trivial_usage
//usage: "[OPTIONS] [FILE]..."
//usage:#define head_full_usage "\n\n"
@@ -18,7 +20,8 @@
//usage: "With more than one FILE, precede each with a filename header.\n"
//usage: "\n -n N[kbm] Print first N lines"
//usage: IF_FEATURE_FANCY_HEAD(
-//usage: "\n -c N[kbm] Print first N bytes"
+//usage: "\n -n -N[kbm] Print all except N last lines"
+//usage: "\n -c [-]N[kbm] Print first N bytes"
//usage: "\n -q Never print headers"
//usage: "\n -v Always print headers"
//usage: )
@@ -34,6 +37,110 @@
/* This is a NOEXEC applet. Be very careful! */
+#if !ENABLE_FEATURE_FANCY_HEAD
+# define print_first_N(fp,count,bytes) print_first_N(fp,count)
+#endif
+static void
+print_first_N(FILE *fp, unsigned long count, bool count_bytes)
+{
+#if !ENABLE_FEATURE_FANCY_HEAD
+ const int count_bytes = 0;
+#endif
+ while (count) {
+ int c = getc(fp);
+ if (c == EOF)
+ break;
+ if (count_bytes || (c == '\n'))
+ --count;
+ putchar(c);
+ }
+}
+
+#if ENABLE_FEATURE_FANCY_HEAD
+static void
+print_except_N_last_bytes(FILE *fp, unsigned count)
+{
+ unsigned char *circle = xmalloc(++count);
+ unsigned head = 0;
+ for(;;) {
+ int c;
+ c = getc(fp);
+ if (c == EOF)
+ goto ret;
+ circle[head++] = c;
+ if (head == count)
+ break;
+ }
+ for (;;) {
+ int c;
+ if (head == count)
+ head = 0;
+ putchar(circle[head]);
+ c = getc(fp);
+ if (c == EOF)
+ goto ret;
+ circle[head] = c;
+ head++;
+ }
+ ret:
+ free(circle);
+}
+
+static void
+print_except_N_last_lines(FILE *fp, unsigned count)
+{
+ char **circle = xzalloc((++count) * sizeof(circle[0]));
+ unsigned head = 0;
+ for(;;) {
+ char *c;
+ c = xmalloc_fgets(fp);
+ if (!c)
+ goto ret;
+ circle[head++] = c;
+ if (head == count)
+ break;
+ }
+ for (;;) {
+ char *c;
+ if (head == count)
+ head = 0;
+ fputs(circle[head], stdout);
+ c = xmalloc_fgets(fp);
+ if (!c)
+ goto ret;
+ free(circle[head]);
+ circle[head++] = c;
+ }
+ ret:
+ head = 0;
+ for(;;) {
+ free(circle[head++]);
+ if (head == count)
+ break;
+ }
+ free(circle);
+}
+#else
+/* Must never be called */
+void print_except_N_last_bytes(FILE *fp, unsigned count);
+void print_except_N_last_lines(FILE *fp, unsigned count);
+#endif
+
+#if !ENABLE_FEATURE_FANCY_HEAD
+# define eat_num(negative_N,p) eat_num(p)
+#endif
+static unsigned long
+eat_num(bool *negative_N, const char *p)
+{
+#if ENABLE_FEATURE_FANCY_HEAD
+ if (*p == '-') {
+ *negative_N = 1;
+ p++;
+ }
+#endif
+ return xatoul_sfx(p, bkm_suffixes);
+}
+
static const char head_opts[] ALIGN1 =
"n:"
#if ENABLE_FEATURE_FANCY_HEAD
@@ -41,29 +148,25 @@ static const char head_opts[] ALIGN1 =
#endif
;
-static const struct suffix_mult head_suffixes[] = {
- { "b", 512 },
- { "k", 1024 },
- { "m", 1024*1024 },
- { "", 0 }
-};
-
#define header_fmt_str "\n==> %s <==\n"
int head_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int head_main(int argc, char **argv)
{
unsigned long count = 10;
- unsigned long i;
#if ENABLE_FEATURE_FANCY_HEAD
- int count_bytes = 0;
int header_threshhold = 1;
+ bool count_bytes = 0;
+ bool negative_N = 0;
+#else
+# define header_threshhold 1
+# define count_bytes 0
+# define negative_N 0
#endif
FILE *fp;
const char *fmt;
char *p;
int opt;
- int c;
int retval = EXIT_SUCCESS;
#if ENABLE_INCLUDE_SUSv2 || ENABLE_FEATURE_FANCY_HEAD
@@ -73,7 +176,7 @@ int head_main(int argc, char **argv)
) {
--argc;
++argv;
- p = (*argv) + 1;
+ p = argv[0] + 1;
goto GET_COUNT;
}
#endif
@@ -97,7 +200,7 @@ int head_main(int argc, char **argv)
#if ENABLE_INCLUDE_SUSv2 || ENABLE_FEATURE_FANCY_HEAD
GET_COUNT:
#endif
- count = xatoul_sfx(p, head_suffixes);
+ count = eat_num(&negative_N, p);
break;
default:
bb_show_usage();
@@ -110,19 +213,17 @@ int head_main(int argc, char **argv)
*--argv = (char*)"-";
fmt = header_fmt_str + 1;
-#if ENABLE_FEATURE_FANCY_HEAD
if (argc <= header_threshhold) {
+#if ENABLE_FEATURE_FANCY_HEAD
header_threshhold = 0;
- }
#else
- if (argc <= 1) {
fmt += 11; /* "" */
- }
- /* Now define some things here to avoid #ifdefs in the code below.
- * These should optimize out of the if conditions below. */
-#define header_threshhold 1
-#define count_bytes 0
#endif
+ }
+ if (negative_N) {
+ if (count >= INT_MAX / sizeof(char*))
+ bb_error_msg("count is too big: %lu", count);
+ }
do {
fp = fopen_or_warn_stdin(*argv);
@@ -133,18 +234,20 @@ int head_main(int argc, char **argv)
if (header_threshhold) {
printf(fmt, *argv);
}
- i = count;
- while (i && ((c = getc(fp)) != EOF)) {
- if (count_bytes || (c == '\n')) {
- --i;
+ if (negative_N) {
+ if (count_bytes) {
+ print_except_N_last_bytes(fp, count);
+ } else {
+ print_except_N_last_lines(fp, count);
}
- putchar(c);
+ } else {
+ print_first_N(fp, count, count_bytes);
}
+ die_if_ferror_stdout();
if (fclose_if_not_stdin(fp)) {
bb_simple_perror_msg(*argv);
retval = EXIT_FAILURE;
}
- die_if_ferror_stdout();
} else {
retval = EXIT_FAILURE;
}
diff --git a/coreutils/hostid.c b/coreutils/hostid.c
index 5c1a4e0..e5b1f51 100644
--- a/coreutils/hostid.c
+++ b/coreutils/hostid.c
@@ -36,7 +36,8 @@ int hostid_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
bb_show_usage();
}
- printf("%08lx\n", gethostid());
+ /* POSIX says gethostid returns a "32-bit identifier" */
+ printf("%08x\n", (unsigned)(uint32_t)gethostid());
return fflush_all();
}
diff --git a/coreutils/id.c b/coreutils/id.c
index 1f20b75..1f3e1c4 100644
--- a/coreutils/id.c
+++ b/coreutils/id.c
@@ -64,12 +64,10 @@
/* This is a NOEXEC applet. Be very careful! */
#if !ENABLE_USE_BB_PWD_GRP
-#if defined(__UCLIBC_MAJOR__) && (__UCLIBC_MAJOR__ == 0)
-#if (__UCLIBC_MINOR__ < 9) || (__UCLIBC_MINOR__ == 9 && __UCLIBC_SUBLEVEL__ < 30)
+#if defined(__UCLIBC__) && UCLIBC_VERSION < KERNEL_VERSION(0, 9, 30)
#error "Sorry, you need at least uClibc version 0.9.30 for id applet to build"
#endif
#endif
-#endif
enum {
PRINT_REAL = (1 << 0),
diff --git a/coreutils/md5_sha1_sum.c b/coreutils/md5_sha1_sum.c
index 92a4d44..1a5342e 100644
--- a/coreutils/md5_sha1_sum.c
+++ b/coreutils/md5_sha1_sum.c
@@ -151,7 +151,9 @@ static uint8_t *hash_file(const char *filename)
update(&context, in_buf, count);
}
hash_value = NULL;
- if (count == 0) {
+ if (count < 0)
+ bb_perror_msg("can't read '%s'", filename);
+ else /* count == 0 */ {
final(&context, in_buf);
hash_value = hash_bin_to_hex(in_buf, hash_len);
}
diff --git a/coreutils/od_bloaty.c b/coreutils/od_bloaty.c
index a632489..6b00a43 100644
--- a/coreutils/od_bloaty.c
+++ b/coreutils/od_bloaty.c
@@ -1166,12 +1166,6 @@ parse_old_offset(const char *s, off_t *offset)
int od_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int od_main(int argc UNUSED_PARAM, char **argv)
{
- static const struct suffix_mult bkm[] = {
- { "b", 512 },
- { "k", 1024 },
- { "m", 1024*1024 },
- { "", 0 }
- };
#if ENABLE_LONG_OPTS
static const char od_longopts[] ALIGN1 =
"skip-bytes\0" Required_argument "j"
@@ -1230,7 +1224,7 @@ int od_main(int argc UNUSED_PARAM, char **argv)
address_pad_len_char = doxn_address_pad_len_char[pos];
}
if (opt & OPT_N) {
- max_bytes_to_format = xstrtooff_sfx(str_N, 0, bkm);
+ max_bytes_to_format = xstrtooff_sfx(str_N, 0, bkm_suffixes);
}
if (opt & OPT_a) decode_format_string("a");
if (opt & OPT_b) decode_format_string("oC");
@@ -1239,7 +1233,7 @@ int od_main(int argc UNUSED_PARAM, char **argv)
if (opt & OPT_f) decode_format_string("fF");
if (opt & OPT_h) decode_format_string("x2");
if (opt & OPT_i) decode_format_string("d2");
- if (opt & OPT_j) n_bytes_to_skip = xstrtooff_sfx(str_j, 0, bkm);
+ if (opt & OPT_j) n_bytes_to_skip = xstrtooff_sfx(str_j, 0, bkm_suffixes);
if (opt & OPT_l) decode_format_string("d4");
if (opt & OPT_o) decode_format_string("o2");
while (lst_t) {
@@ -1248,7 +1242,7 @@ int od_main(int argc UNUSED_PARAM, char **argv)
if (opt & OPT_x) decode_format_string("x2");
if (opt & OPT_s) decode_format_string("d2");
if (opt & OPT_S) {
- string_min = xstrtou_sfx(str_S, 0, bkm);
+ string_min = xstrtou_sfx(str_S, 0, bkm_suffixes);
}
// Bloat:
diff --git a/coreutils/readlink.c b/coreutils/readlink.c
index f7ad791..d73ef4d 100644
--- a/coreutils/readlink.c
+++ b/coreutils/readlink.c
@@ -39,7 +39,10 @@
* -q, --quiet, -s, --silent suppress most error messages
* -v, --verbose report error messages
*
- * bbox supports: -f -n -v (fully), -q -s (accepts but ignores)
+ * bbox supports: -f (partially) -n -v (fully), -q -s (accepts but ignores)
+ * Note: we export the -f flag, but our -f behaves like coreutils' -e.
+ * Unfortunately, there isn't a C lib function we can leverage to get this
+ * behavior which means we'd have to implement the full stack ourselves :(.
*/
int readlink_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
diff --git a/coreutils/split.c b/coreutils/split.c
index 11e6404..1e1673e 100644
--- a/coreutils/split.c
+++ b/coreutils/split.c
@@ -23,17 +23,15 @@
#include "libbb.h"
-static const struct suffix_mult split_suffices[] = {
#if ENABLE_FEATURE_SPLIT_FANCY
+static const struct suffix_mult split_suffixes[] = {
{ "b", 512 },
-#endif
{ "k", 1024 },
{ "m", 1024*1024 },
-#if ENABLE_FEATURE_SPLIT_FANCY
{ "g", 1024*1024*1024 },
-#endif
{ "", 0 }
};
+#endif
/* Increment the suffix part of the filename.
* Returns NULL if we are out of filenames.
@@ -86,7 +84,10 @@ int split_main(int argc UNUSED_PARAM, char **argv)
if (opt & SPLIT_OPT_l)
cnt = XATOOFF(count_p);
if (opt & SPLIT_OPT_b) // FIXME: also needs XATOOFF
- cnt = xatoull_sfx(count_p, split_suffices);
+ cnt = xatoull_sfx(count_p,
+ IF_FEATURE_SPLIT_FANCY(split_suffixes)
+ IF_NOT_FEATURE_SPLIT_FANCY(km_suffixes)
+ );
sfx = "x";
argv += optind;
diff --git a/coreutils/stat.c b/coreutils/stat.c
index c8677eb..dc9d81c 100644
--- a/coreutils/stat.c
+++ b/coreutils/stat.c
@@ -127,7 +127,7 @@ static const char *human_time(time_t t)
/*static char buf[sizeof("YYYY-MM-DD HH:MM:SS.000000000")] ALIGN1;*/
#define buf bb_common_bufsiz1
- strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S.000000000", localtime(&t));
+ strcpy(strftime_YYYYMMDDHHMMSS(buf, sizeof(buf), &t), ".000000000");
return buf;
#undef buf
}
diff --git a/coreutils/stty.c b/coreutils/stty.c
index 96754dd..378a848 100644
--- a/coreutils/stty.c
+++ b/coreutils/stty.c
@@ -246,10 +246,21 @@ enum speed_setting {
/* Which member(s) of 'struct termios' a mode uses */
enum {
- /* Do NOT change the order or values, as mode_type_flag()
- * depends on them */
control, input, output, local, combination
};
+static tcflag_t *get_ptr_to_tcflag(unsigned type, const struct termios *mode)
+{
+ static const uint8_t tcflag_offsets[] ALIGN1 = {
+ offsetof(struct termios, c_cflag), /* control */
+ offsetof(struct termios, c_iflag), /* input */
+ offsetof(struct termios, c_oflag), /* output */
+ offsetof(struct termios, c_lflag) /* local */
+ };
+ if (type <= local) {
+ return (tcflag_t*) (((char*)mode) + tcflag_offsets[type]);
+ }
+ return NULL;
+}
/* Flags for 'struct mode_info' */
#define SANE_SET 1 /* Set in 'sane' mode */
@@ -770,51 +781,6 @@ struct globals {
G.max_col = 80; \
} while (0)
-
-/* Return a string that is the printable representation of character CH */
-/* Adapted from 'cat' by Torbjorn Granlund */
-static const char *visible(unsigned ch)
-{
- char *bpout = G.buf;
-
- if (ch == _POSIX_VDISABLE)
- return "<undef>";
-
- if (ch >= 128) {
- ch -= 128;
- *bpout++ = 'M';
- *bpout++ = '-';
- }
-
- if (ch < 32) {
- *bpout++ = '^';
- *bpout++ = ch + 64;
- } else if (ch < 127) {
- *bpout++ = ch;
- } else {
- *bpout++ = '^';
- *bpout++ = '?';
- }
-
- *bpout = '\0';
- return G.buf;
-}
-
-static tcflag_t *mode_type_flag(unsigned type, const struct termios *mode)
-{
- static const uint8_t tcflag_offsets[] ALIGN1 = {
- offsetof(struct termios, c_cflag), /* control */
- offsetof(struct termios, c_iflag), /* input */
- offsetof(struct termios, c_oflag), /* output */
- offsetof(struct termios, c_lflag) /* local */
- };
-
- if (type <= local) {
- return (tcflag_t*) (((char*)mode) + tcflag_offsets[type]);
- }
- return NULL;
-}
-
static void set_speed_or_die(enum speed_setting type, const char *arg,
struct termios *mode)
{
@@ -1042,6 +1008,7 @@ static void do_display(const struct termios *mode, int all)
#endif
for (i = 0; i != CIDX_min; ++i) {
+ char ch;
/* If swtch is the same as susp, don't print both */
#if VSWTCH == VSUSP
if (i == CIDX_swtch)
@@ -1055,8 +1022,12 @@ static void do_display(const struct termios *mode, int all)
continue;
}
#endif
- wrapf("%s = %s;", nth_string(control_name, i),
- visible(mode->c_cc[control_info[i].offset]));
+ ch = mode->c_cc[control_info[i].offset];
+ if (ch == _POSIX_VDISABLE)
+ strcpy(G.buf, "<undef>");
+ else
+ visible(ch, G.buf, 0);
+ wrapf("%s = %s;", nth_string(control_name, i), G.buf);
}
#if VEOF == VMIN
if ((mode->c_lflag & ICANON) == 0)
@@ -1072,7 +1043,7 @@ static void do_display(const struct termios *mode, int all)
prev_type = mode_info[i].type;
}
- bitsp = mode_type_flag(mode_info[i].type, mode);
+ bitsp = get_ptr_to_tcflag(mode_info[i].type, mode);
mask = mode_info[i].mask ? mode_info[i].mask : mode_info[i].bits;
if ((*bitsp & mask) == mode_info[i].bits) {
if (all || (mode_info[i].flags & SANE_UNSET))
@@ -1091,7 +1062,6 @@ static void do_display(const struct termios *mode, int all)
static void sane_mode(struct termios *mode)
{
int i;
- tcflag_t *bitsp;
for (i = 0; i < NUM_control_info; ++i) {
#if VMIN == VEOF
@@ -1102,14 +1072,17 @@ static void sane_mode(struct termios *mode)
}
for (i = 0; i < NUM_mode_info; ++i) {
+ tcflag_t val;
+ tcflag_t *bitsp = get_ptr_to_tcflag(mode_info[i].type, mode);
+
+ if (!bitsp)
+ continue;
+ val = *bitsp & ~((unsigned long)mode_info[i].mask);
if (mode_info[i].flags & SANE_SET) {
- bitsp = mode_type_flag(mode_info[i].type, mode);
- *bitsp = (*bitsp & ~((unsigned long)mode_info[i].mask))
- | mode_info[i].bits;
- } else if (mode_info[i].flags & SANE_UNSET) {
- bitsp = mode_type_flag(mode_info[i].type, mode);
- *bitsp = *bitsp & ~((unsigned long)mode_info[i].mask)
- & ~mode_info[i].bits;
+ *bitsp = val | mode_info[i].bits;
+ } else
+ if (mode_info[i].flags & SANE_UNSET) {
+ *bitsp = val & ~mode_info[i].bits;
}
}
}
@@ -1119,17 +1092,18 @@ static void set_mode(const struct mode_info *info, int reversed,
{
tcflag_t *bitsp;
- bitsp = mode_type_flag(info->type, mode);
+ bitsp = get_ptr_to_tcflag(info->type, mode);
if (bitsp) {
+ tcflag_t val = *bitsp & ~info->mask;
if (reversed)
- *bitsp = *bitsp & ~info->mask & ~info->bits;
+ *bitsp = val & ~info->bits;
else
- *bitsp = (*bitsp & ~info->mask) | info->bits;
+ *bitsp = val | info->bits;
return;
}
- /* Combination mode */
+ /* !bitsp - it's a "combination" mode */
if (info == &mode_info[IDX_evenp] || info == &mode_info[IDX_parity]) {
if (reversed)
mode->c_cflag = (mode->c_cflag & ~PARENB & ~CSIZE) | CS8;
@@ -1534,7 +1508,12 @@ int stty_main(int argc UNUSED_PARAM, char **argv)
perror_on_device_and_die("%s");
if (memcmp(&mode, &new_mode, sizeof(mode)) != 0) {
-#if CIBAUD
+/*
+ * I think the below chunk is not necessary on Linux.
+ * If you are deleting it, also delete STTY_speed_was_set bit -
+ * it is only ever checked here.
+ */
+#if 0 /* was "if CIBAUD" */
/* SunOS 4.1.3 (at least) has the problem that after this sequence,
tcgetattr (&m1); tcsetattr (&m1); tcgetattr (&m2);
sometimes (m1 != m2). The only difference is in the four bits
diff --git a/coreutils/sum.c b/coreutils/sum.c
index 75f6ef6..deb068e 100644
--- a/coreutils/sum.c
+++ b/coreutils/sum.c
@@ -70,9 +70,9 @@ static unsigned sum_file(const char *file, unsigned type)
if (type >= SUM_SYSV) {
r = (s & 0xffff) + ((s & 0xffffffff) >> 16);
s = (r & 0xffff) + (r >> 16);
- printf("%d %llu %s\n", s, (total_bytes + 511) / 512, file);
+ printf("%u %llu %s\n", s, (total_bytes + 511) / 512, file);
} else
- printf("%05d %5llu %s\n", s, (total_bytes + 1023) / 1024, file);
+ printf("%05u %5llu %s\n", s, (total_bytes + 1023) / 1024, file);
return 1;
#undef buf
}
diff --git a/coreutils/tail.c b/coreutils/tail.c
index 96fd011..0e12443 100644
--- a/coreutils/tail.c
+++ b/coreutils/tail.c
@@ -24,6 +24,8 @@
* 7) lseek attempted when count==0 even if arg was +0 (from top)
*/
+//kbuild:lib-$(CONFIG_TAIL) += tail.o
+
//usage:#define tail_trivial_usage
//usage: "[OPTIONS] [FILE]..."
//usage:#define tail_full_usage "\n\n"
@@ -34,14 +36,13 @@
//usage: "\n -s SECONDS Wait SECONDS between reads with -f"
//usage: )
//usage: "\n -n N[kbm] Print last N lines"
+//usage: "\n -n +N[kbm] Start on Nth line and print the rest"
//usage: IF_FEATURE_FANCY_TAIL(
-//usage: "\n -c N[kbm] Print last N bytes"
+//usage: "\n -c [+]N[kbm] Print last N bytes"
//usage: "\n -q Never print headers"
//usage: "\n -v Always print headers"
//usage: "\n"
//usage: "\nN may be suffixed by k (x1024), b (x512), or m (x1024^2)."
-//usage: "\nIf N starts with a '+', output begins with the Nth item from the start"
-//usage: "\nof each file, not from the end."
//usage: )
//usage:
//usage:#define tail_example_usage
@@ -50,13 +51,6 @@
#include "libbb.h"
-static const struct suffix_mult tail_suffixes[] = {
- { "b", 512 },
- { "k", 1024 },
- { "m", 1024*1024 },
- { "", 0 }
-};
-
struct globals {
bool from_top;
bool exitcode;
@@ -73,15 +67,6 @@ static void tail_xprint_header(const char *fmt, const char *filename)
static ssize_t tail_read(int fd, char *buf, size_t count)
{
ssize_t r;
- off_t current;
- struct stat sbuf;
-
- /* /proc files report zero st_size, don't lseek them. */
- if (fstat(fd, &sbuf) == 0 && sbuf.st_size > 0) {
- current = lseek(fd, 0, SEEK_CUR);
- if (sbuf.st_size < current)
- xlseek(fd, 0, SEEK_SET);
- }
r = full_read(fd, buf, count);
if (r < 0) {
@@ -102,7 +87,7 @@ static unsigned eat_num(const char *p)
p++;
G.from_top = 1;
}
- return xatou_sfx(p, tail_suffixes);
+ return xatou_sfx(p, bkm_suffixes);
}
int tail_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
@@ -120,6 +105,7 @@ int tail_main(int argc, char **argv)
int *fds;
const char *fmt;
+ int prev_fd;
INIT_G();
@@ -324,6 +310,7 @@ int tail_main(int argc, char **argv)
xwrite(STDOUT_FILENO, tailbuf, taillen);
}
} while (++i < nfiles);
+ prev_fd = fds[i-1];
tailbuf = xrealloc(tailbuf, BUFSIZ);
@@ -367,10 +354,23 @@ int tail_main(int argc, char **argv)
if (nfiles > header_threshhold) {
fmt = header_fmt_str;
}
- while ((nread = tail_read(fd, tailbuf, BUFSIZ)) > 0) {
- if (fmt) {
+ for (;;) {
+ /* tail -f keeps following files even if they are truncated */
+ struct stat sbuf;
+ /* /proc files report zero st_size, don't lseek them */
+ if (fstat(fd, &sbuf) == 0 && sbuf.st_size > 0) {
+ off_t current = lseek(fd, 0, SEEK_CUR);
+ if (sbuf.st_size < current)
+ xlseek(fd, 0, SEEK_SET);
+ }
+
+ nread = tail_read(fd, tailbuf, BUFSIZ);
+ if (nread <= 0)
+ break;
+ if (fmt && (fd != prev_fd)) {
tail_xprint_header(fmt, filename);
fmt = NULL;
+ prev_fd = fd;
}
xwrite(STDOUT_FILENO, tailbuf, nread);
}
diff --git a/coreutils/touch.c b/coreutils/touch.c
index 1216ca2..293a968 100644
--- a/coreutils/touch.c
+++ b/coreutils/touch.c
@@ -26,6 +26,14 @@
//config: touch is used to create or change the access and/or
//config: modification timestamp of specified files.
//config:
+//config:config FEATURE_TOUCH_NODEREF
+//config: bool "Add support for -h"
+//config: default y
+//config: depends on TOUCH
+//config: help
+//config: Enable touch to have the -h option.
+//config: This requires libc support for lutimes() function.
+//config:
//config:config FEATURE_TOUCH_SUSV3
//config: bool "Add support for SUSV3 features (-d -t -r)"
//config: default y
@@ -42,6 +50,9 @@
//usage:#define touch_full_usage "\n\n"
//usage: "Update the last-modified date on the given FILE[s]\n"
//usage: "\n -c Don't create files"
+//usage: IF_FEATURE_TOUCH_NODEREF(
+//usage: "\n -h Don't follow links"
+//usage: )
//usage: IF_FEATURE_TOUCH_SUSV3(
//usage: "\n -d DT Date/time to use"
//usage: "\n -t DT Date/time to use"
@@ -65,6 +76,7 @@
* parse STRING and use it instead of current time
* -f (ignored, BSD compat)
* -m change only the modification time
+ * -h, --no-dereference
* -r, --reference=FILE
* use this file's times instead of current time
* -t STAMP
@@ -79,6 +91,13 @@ int touch_main(int argc UNUSED_PARAM, char **argv)
int fd;
int status = EXIT_SUCCESS;
int opts;
+ enum {
+ OPT_c = (1 << 0),
+ OPT_r = (1 << 1) * ENABLE_FEATURE_TOUCH_SUSV3,
+ OPT_d = (1 << 2) * ENABLE_FEATURE_TOUCH_SUSV3,
+ OPT_t = (1 << 3) * ENABLE_FEATURE_TOUCH_SUSV3,
+ OPT_h = (1 << 4) * ENABLE_FEATURE_TOUCH_NODEREF,
+ };
#if ENABLE_FEATURE_TOUCH_SUSV3
# if ENABLE_LONG_OPTS
static const char touch_longopts[] ALIGN1 =
@@ -86,6 +105,7 @@ int touch_main(int argc UNUSED_PARAM, char **argv)
"no-create\0" No_argument "c"
"reference\0" Required_argument "r"
"date\0" Required_argument "d"
+ IF_FEATURE_TOUCH_NODEREF("no-dereference\0" No_argument "h")
;
# endif
char *reference_file = NULL;
@@ -105,13 +125,13 @@ int touch_main(int argc UNUSED_PARAM, char **argv)
* accepted data format differs a bit between -d and -t.
* We accept the same formats for both */
opts = getopt32(argv, "c" IF_FEATURE_TOUCH_SUSV3("r:d:t:")
+ IF_FEATURE_TOUCH_NODEREF("h")
/*ignored:*/ "fma"
IF_FEATURE_TOUCH_SUSV3(, &reference_file)
IF_FEATURE_TOUCH_SUSV3(, &date_str)
IF_FEATURE_TOUCH_SUSV3(, &date_str)
);
- opts &= 1; /* only -c bit is left */
argv += optind;
if (!*argv) {
bb_show_usage();
@@ -121,6 +141,10 @@ int touch_main(int argc UNUSED_PARAM, char **argv)
struct stat stbuf;
xstat(reference_file, &stbuf);
timebuf[1].tv_sec = timebuf[0].tv_sec = stbuf.st_mtime;
+ /* Can use .st_mtim.tv_nsec
+ * (or is it .st_mtimensec?? see date.c)
+ * to set microseconds too.
+ */
}
if (date_str) {
@@ -141,9 +165,16 @@ int touch_main(int argc UNUSED_PARAM, char **argv)
}
do {
- if (utimes(*argv, (reference_file || date_str) ? timebuf : NULL) != 0) {
- if (errno == ENOENT) { /* no such file */
- if (opts) { /* creation is disabled, so ignore */
+ int result;
+ result = (
+#if ENABLE_FEATURE_TOUCH_NODEREF
+ (opts & OPT_h) ? lutimes :
+#endif
+ utimes)(*argv, (reference_file || date_str) ? timebuf : NULL);
+ if (result != 0) {
+ if (errno == ENOENT) { /* no such file? */
+ if (opts & OPT_c) {
+ /* Creation is disabled, so ignore */
continue;
}
/* Try to create the file */
diff --git a/debianutils/run_parts.c b/debianutils/run_parts.c
index 005b304..527fae2 100644
--- a/debianutils/run_parts.c
+++ b/debianutils/run_parts.c
@@ -21,24 +21,24 @@
* taken from debian-utils. I've only removed the long options and the
* report mode. As the original run-parts support only long options, I've
* broken compatibility because the BusyBox policy doesn't allow them.
- * The supported options are:
- * -t test. Print the name of the files to be executed, without
- * execute them.
- * -a ARG argument. Pass ARG as an argument the program executed. It can
- * be repeated to pass multiple arguments.
- * -u MASK umask. Set the umask of the program executed to MASK.
*/
//usage:#define run_parts_trivial_usage
-//usage: "[-t"IF_FEATURE_RUN_PARTS_FANCY("l")"] [-a ARG]... [-u MASK] DIRECTORY"
+//usage: "[-a ARG]... [-u UMASK] "
+//usage: IF_FEATURE_RUN_PARTS_LONG_OPTIONS("[--reverse] [--test] [--exit-on-error] "IF_FEATURE_RUN_PARTS_FANCY("[--list] "))
+//usage: "DIRECTORY"
//usage:#define run_parts_full_usage "\n\n"
//usage: "Run a bunch of scripts in DIRECTORY\n"
-//usage: "\n -t Dry run"
+//usage: "\n -a ARG Pass ARG as argument to scripts"
+//usage: "\n -u UMASK Set UMASK before running scripts"
+//usage: IF_FEATURE_RUN_PARTS_LONG_OPTIONS(
+//usage: "\n --reverse Reverse execution order"
+//usage: "\n --test Dry run"
+//usage: "\n --exit-on-error Exit if a script exits with non-zero"
//usage: IF_FEATURE_RUN_PARTS_FANCY(
-//usage: "\n -l Print names of matching files even if they are not executable"
+//usage: "\n --list Print names of matching files even if they are not executable"
+//usage: )
//usage: )
-//usage: "\n -a ARG Pass ARG as argument to programs"
-//usage: "\n -u MASK Set umask to MASK before running programs"
//usage:
//usage:#define run_parts_example_usage
//usage: "$ run-parts -a start /etc/init.d\n"
@@ -59,7 +59,7 @@
struct globals {
char **names;
int cur;
- char *cmd[1];
+ char *cmd[2 /* using 1 provokes compiler warning */];
} FIX_ALIASING;
#define G (*(struct globals*)&bb_common_bufsiz1)
#define names (G.names)
@@ -70,19 +70,15 @@ struct globals {
enum { NUM_CMD = (COMMON_BUFSIZE - sizeof(G)) / sizeof(cmd[0]) - 1 };
enum {
- OPT_r = (1 << 0),
- OPT_a = (1 << 1),
- OPT_u = (1 << 2),
- OPT_t = (1 << 3),
- OPT_l = (1 << 4) * ENABLE_FEATURE_RUN_PARTS_FANCY,
+ OPT_a = (1 << 0),
+ OPT_u = (1 << 1),
+ OPT_r = (1 << 2) * ENABLE_FEATURE_RUN_PARTS_LONG_OPTIONS,
+ OPT_t = (1 << 3) * ENABLE_FEATURE_RUN_PARTS_LONG_OPTIONS,
+ OPT_e = (1 << 4) * ENABLE_FEATURE_RUN_PARTS_LONG_OPTIONS,
+ OPT_l = (1 << 5) * ENABLE_FEATURE_RUN_PARTS_LONG_OPTIONS
+ * ENABLE_FEATURE_RUN_PARTS_FANCY,
};
-#if ENABLE_FEATURE_RUN_PARTS_FANCY
-#define list_mode (option_mask32 & OPT_l)
-#else
-#define list_mode 0
-#endif
-
/* Is this a valid filename (upper/lower alpha, digits,
* underscores, and hyphens only?)
*/
@@ -110,7 +106,7 @@ static int FAST_FUNC act(const char *file, struct stat *statbuf, void *args UNUS
if (depth == 2
&& ( !(statbuf->st_mode & (S_IFREG | S_IFLNK))
|| invalid_name(file)
- || (!list_mode && access(file, X_OK) != 0))
+ || (!(option_mask32 & OPT_l) && access(file, X_OK) != 0))
) {
return SKIP;
}
@@ -126,11 +122,12 @@ static int FAST_FUNC act(const char *file, struct stat *statbuf, void *args UNUS
static const char runparts_longopts[] ALIGN1 =
"arg\0" Required_argument "a"
"umask\0" Required_argument "u"
- "test\0" No_argument "t"
-#if ENABLE_FEATURE_RUN_PARTS_FANCY
- "list\0" No_argument "l"
- "reverse\0" No_argument "r"
//TODO: "verbose\0" No_argument "v"
+ "reverse\0" No_argument "\xf0"
+ "test\0" No_argument "\xf1"
+ "exit-on-error\0" No_argument "\xf2"
+#if ENABLE_FEATURE_RUN_PARTS_FANCY
+ "list\0" No_argument "\xf3"
#endif
;
#endif
@@ -150,7 +147,7 @@ int run_parts_main(int argc UNUSED_PARAM, char **argv)
#endif
/* We require exactly one argument: the directory name */
opt_complementary = "=1:a::";
- getopt32(argv, "ra:u:t"IF_FEATURE_RUN_PARTS_FANCY("l"), &arg_list, &umask_p);
+ getopt32(argv, "a:u:", &arg_list, &umask_p);
umask(xstrtou_range(umask_p, 8, 0, 07777));
@@ -193,6 +190,9 @@ int run_parts_main(int argc UNUSED_PARAM, char **argv)
bb_perror_msg("can't execute '%s'", name);
else /* ret > 0 */
bb_error_msg("%s exited with code %d", name, ret & 0xff);
+
+ if (option_mask32 & OPT_e)
+ xfunc_die();
}
return n;
diff --git a/docs/keep_data_small.txt b/docs/keep_data_small.txt
index 21d7326..9fc7996 100644
--- a/docs/keep_data_small.txt
+++ b/docs/keep_data_small.txt
@@ -138,13 +138,6 @@ less readable, use #defines:
#define sector (G.sector)
- Word of caution
-
-If applet doesn't use much of global data, converting it to use
-one of above methods is not worth the resulting code obfuscation.
-If you have less than ~300 bytes of global data - don't bother.
-
-
Finding non-shared duplicated strings
strings busybox | sort | uniq -c | sort -nr
@@ -224,6 +217,14 @@ Result (non-static busybox built against glibc):
Keeping code small
+Use scripts/bloat-o-meter to check whether introduced changes
+didn't generate unnecessary bloat. This script needs unstripped binaries
+to generate a detailed report. To automate this, just use
+"make bloatcheck". It requires busybox_old binary to be present,
+use "make baseline" to generate it from unmodified source, or
+copy busybox_unstripped to busybox_old before modifying sources
+and rebuilding.
+
Set CONFIG_EXTRA_CFLAGS="-fno-inline-functions-called-once",
produce "make bloatcheck", see the biggest auto-inlined functions.
Now, set CONFIG_EXTRA_CFLAGS back to "", but add NOINLINE
diff --git a/docs/mdev.txt b/docs/mdev.txt
index 61f93c9..b24025f 100644
--- a/docs/mdev.txt
+++ b/docs/mdev.txt
@@ -51,9 +51,9 @@ device nodes if your system needs something more than the default root/root
660 permissions.
The file has the format:
- [-]<device regex> <uid>:<gid> <permissions>
+ [-][envmatch]<device regex> <uid>:<gid> <permissions>
or
- @<maj[,min1[-min2]]> <uid>:<gid> <permissions>
+ [envmatch]@<maj[,min1[-min2]]> <uid>:<gid> <permissions>
or
$envvar=<regex> <uid>:<gid> <permissions>
diff --git a/docs/tcp.txt b/docs/tcp.txt
new file mode 100644
index 0000000..2000f31
--- a/dev/null
+++ b/docs/tcp.txt
@@ -0,0 +1,93 @@
+ Some less-widely known details of TCP connections.
+
+ Properly closing the connection.
+
+After this code sequence:
+
+ sock = socket(AF_INET, SOCK_STREAM, 0);
+ connect(sock, &remote, sizeof(remote));
+ write(sock, buffer, 1000000);
+
+a large block of data is only buffered by kernel, it can't be sent all at once.
+What will happen if we close the socket?
+
+"A host MAY implement a 'half-duplex' TCP close sequence, so that
+ an application that has called close() cannot continue to read
+ data from the connection. If such a host issues a close() call
+ while received data is still pending in TCP, or if new data is
+ received after close() is called, its TCP SHOULD send a RST
+ to show that data was lost."
+
+IOW: if we just close(sock) now, kernel can reset the TCP connection
+(send RST packet).
+
+This is problematic for two reasons: it discards some not-yet sent
+data, and it may be reported as error, not EOF, on peer's side.
+
+What can be done about it?
+
+Solution #1: block until sending is done:
+
+ /* When enabled, a close(2) or shutdown(2) will not return until
+ * all queued messages for the socket have been successfully sent
+ * or the linger timeout has been reached.
+ */
+ struct linger {
+ int l_onoff; /* linger active */
+ int l_linger; /* how many seconds to linger for */
+ } linger;
+ linger.l_onoff = 1;
+ linger.l_linger = SOME_NUM;
+ setsockopt(sock, SOL_SOCKET, SO_LINGER, &linger, sizeof(linger));
+ close(sock);
+
+Solution #2: tell kernel that you are done sending.
+This makes kernel send FIN after all data is written:
+
+ shutdown(sock, SHUT_WR);
+ close(sock);
+
+However, experiments on Linux 3.9.4 show that kernel can return from
+shutdown() and from close() before all data is sent,
+and if peer sends any data to us after this, kernel still responds with
+RST before all our data is sent.
+
+In practice the protocol in use often does not allow peer to send
+such data to us, in which case this solution is acceptable.
+
+Solution #3: if you know that peer is going to close its end after it sees
+our FIN (as EOF), it might be a good idea to perform a read after shutdown().
+When read finishes with 0-sized result, we conclude that peer received all
+the data, saw EOF, and closed its end.
+
+However, this incurs small performance penalty (we run for a longer time)
+and requires safeguards (nonblocking reads, timeouts etc) against
+malicious peers which don't close the connection.
+
+Solutions #1 and #2 can be combined:
+
+ /* ...set up struct linger... then: */
+ setsockopt(sock, SOL_SOCKET, SO_LINGER, &linger, sizeof(linger));
+ shutdown(sock, SHUT_WR);
+ /* At this point, kernel sent FIN packet, not RST, to the peer, */
+ /* even if there is buffered read data from the peer. */
+ close(sock);
+
+ Defeating Nagle.
+
+Method #1: manually control whether partial sends are allowed:
+
+This prevents partially filled packets being sent:
+
+ int state = 1;
+ setsockopt(fd, IPPROTO_TCP, TCP_CORK, &state, sizeof(state));
+
+and this forces last, partially filled packet (if any) to be sent:
+
+ int state = 0;
+ setsockopt(fd, IPPROTO_TCP, TCP_CORK, &state, sizeof(state));
+
+Method #2: make any write to immediately send data, even if it's partial:
+
+ int state = 1;
+ setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &state, sizeof(state));
diff --git a/e2fsprogs/old_e2fsprogs/blkid/blkidP.h b/e2fsprogs/old_e2fsprogs/blkid/blkidP.h
index d6b2b42..bbadc8e 100644
--- a/e2fsprogs/old_e2fsprogs/blkid/blkidP.h
+++ b/e2fsprogs/old_e2fsprogs/blkid/blkidP.h
@@ -179,8 +179,4 @@ extern int blkid_set_tag(blkid_dev dev, const char *name,
extern blkid_dev blkid_new_dev(void);
extern void blkid_free_dev(blkid_dev dev);
-#ifdef __cplusplus
-}
-#endif
-
#endif
diff --git a/e2fsprogs/old_e2fsprogs/blkid/cache.c b/e2fsprogs/old_e2fsprogs/blkid/cache.c
index d1d2914..251e499 100644
--- a/e2fsprogs/old_e2fsprogs/blkid/cache.c
+++ b/e2fsprogs/old_e2fsprogs/blkid/cache.c
@@ -115,7 +115,7 @@ int main(int argc, char** argv)
argv[0], ret);
exit(1);
}
- if ((ret = blkid_probe_all(cache) < 0))
+ if ((ret = blkid_probe_all(cache)) < 0)
fprintf(stderr, "error probing devices\n");
blkid_put_cache(cache);
diff --git a/e2fsprogs/old_e2fsprogs/blkid/dev.c b/e2fsprogs/old_e2fsprogs/blkid/dev.c
index bb0cc91..260e49c 100644
--- a/e2fsprogs/old_e2fsprogs/blkid/dev.c
+++ b/e2fsprogs/old_e2fsprogs/blkid/dev.c
@@ -153,7 +153,7 @@ extern int optind;
void usage(char *prog)
{
fprintf(stderr, "Usage: %s [-f blkid_file] [-m debug_mask]\n", prog);
- fprintf(stderr, "\tList all devices and exit\n", prog);
+ fprintf(stderr, "\tList all devices and exit\n");
exit(1);
}
@@ -176,7 +176,7 @@ int main(int argc, char **argv)
case 'm':
blkid_debug_mask = strtoul (optarg, &tmp, 0);
if (*tmp) {
- fprintf(stderr, "Invalid debug mask: %d\n",
+ fprintf(stderr, "Invalid debug mask: %s\n",
optarg);
exit(1);
}
diff --git a/e2fsprogs/old_e2fsprogs/blkid/read.c b/e2fsprogs/old_e2fsprogs/blkid/read.c
index f795a5d..feeda51 100644
--- a/e2fsprogs/old_e2fsprogs/blkid/read.c
+++ b/e2fsprogs/old_e2fsprogs/blkid/read.c
@@ -385,7 +385,7 @@ void blkid_read_cache(blkid_cache cache)
continue;
end = strlen(buf) - 1;
/* Continue reading next line if it ends with a backslash */
- while (buf[end] == '\\' && end < sizeof(buf) - 2 &&
+ while (end < sizeof(buf) - 2 && buf[end] == '\\' &&
fgets(buf + end, sizeof(buf) - end, file)) {
end = strlen(buf) - 1;
lineno++;
diff --git a/e2fsprogs/old_e2fsprogs/blkid/tag.c b/e2fsprogs/old_e2fsprogs/blkid/tag.c
index 8337b46..7424ede 100644
--- a/e2fsprogs/old_e2fsprogs/blkid/tag.c
+++ b/e2fsprogs/old_e2fsprogs/blkid/tag.c
@@ -356,7 +356,7 @@ void usage(char *prog)
fprintf(stderr, "Usage: %s [-f blkid_file] [-m debug_mask] device "
"[type value]\n",
prog);
- fprintf(stderr, "\tList all tags for a device and exit\n", prog);
+ fprintf(stderr, "\tList all tags for a device and exit\n");
exit(1);
}
@@ -382,7 +382,7 @@ int main(int argc, char **argv)
case 'm':
blkid_debug_mask = strtoul (optarg, &tmp, 0);
if (*tmp) {
- fprintf(stderr, "Invalid debug mask: %d\n",
+ fprintf(stderr, "Invalid debug mask: %s\n",
optarg);
exit(1);
}
@@ -407,7 +407,7 @@ int main(int argc, char **argv)
dev = blkid_get_dev(cache, devname, flags);
if (!dev) {
- fprintf(stderr, "%s: cannot find device in blkid cache\n");
+ fprintf(stderr, "%s: cannot find device in blkid cache\n", devname);
exit(1);
}
if (search_type) {
diff --git a/e2fsprogs/old_e2fsprogs/e2fsck.c b/e2fsprogs/old_e2fsprogs/e2fsck.c
index 373e8ce..8400a92 100644
--- a/e2fsprogs/old_e2fsprogs/e2fsck.c
+++ b/e2fsprogs/old_e2fsprogs/e2fsck.c
@@ -1050,7 +1050,7 @@ static errcode_t ea_refcount_create(int size, ext2_refcount_t *ret)
refcount->size = size;
bytes = (size_t) (size * sizeof(struct ea_refcount_el));
#ifdef DEBUG
- printf("Refcount allocated %d entries, %d bytes.\n",
+ printf("Refcount allocated %d entries, %lu bytes.\n",
refcount->size, bytes);
#endif
retval = ext2fs_get_mem(bytes, &refcount->list);
@@ -3424,7 +3424,7 @@ static void e2fsck_pass1(e2fsck_t ctx)
continue;
}
if ((inode->i_links_count || inode->i_blocks ||
- inode->i_blocks || inode->i_block[0]) &&
+ inode->i_block[0]) &&
fix_problem(ctx, PR_1_JOURNAL_INODE_NOT_CLEAR,
&pctx)) {
memset(inode, 0, inode_size);
@@ -12195,11 +12195,7 @@ static void swap_filesys(e2fsck_t ctx)
void *e2fsck_allocate_memory(e2fsck_t ctx, unsigned int size,
const char *description)
{
- void *ret;
- char buf[256];
-
- ret = xzalloc(size);
- return ret;
+ return xzalloc(size);
}
static char *string_copy(const char *str, int len)
diff --git a/e2fsprogs/old_e2fsprogs/ext2fs/initialize.c b/e2fsprogs/old_e2fsprogs/ext2fs/initialize.c
index da2d151..240335b 100644
--- a/e2fsprogs/old_e2fsprogs/ext2fs/initialize.c
+++ b/e2fsprogs/old_e2fsprogs/ext2fs/initialize.c
@@ -83,7 +83,7 @@ static int calc_reserved_gdt_blocks(ext2_filsys fs)
if (rsv_gdb > EXT2_ADDR_PER_BLOCK(sb))
rsv_gdb = EXT2_ADDR_PER_BLOCK(sb);
#ifdef RES_GDT_DEBUG
- printf("max_blocks %lu, rsv_groups = %lu, rsv_gdb = %lu\n",
+ printf("max_blocks %lu, rsv_groups = %lu, rsv_gdb = %u\n",
max_blocks, rsv_groups, rsv_gdb);
#endif
diff --git a/e2fsprogs/old_e2fsprogs/ext2fs/unix_io.c b/e2fsprogs/old_e2fsprogs/ext2fs/unix_io.c
index 474f073..3c95829 100644
--- a/e2fsprogs/old_e2fsprogs/ext2fs/unix_io.c
+++ b/e2fsprogs/old_e2fsprogs/ext2fs/unix_io.c
@@ -544,7 +544,7 @@ static errcode_t unix_read_blk(io_channel channel, unsigned long block,
/* If it's in the cache, use it! */
if ((cache = find_cached_block(data, block, &reuse[0]))) {
#ifdef DEBUG
- printf("Using cached block %d\n", block);
+ printf("Using cached block %lu\n", block);
#endif
memcpy(cp, cache->buf, channel->block_size);
count--;
@@ -560,7 +560,7 @@ static errcode_t unix_read_blk(io_channel channel, unsigned long block,
if (find_cached_block(data, block+i, &reuse[i]))
break;
#ifdef DEBUG
- printf("Reading %d blocks starting at %d\n", i, block);
+ printf("Reading %d blocks starting at %lu\n", i, block);
#endif
if ((retval = raw_read_blk(channel, data, block, i, cp)))
return retval;
diff --git a/e2fsprogs/old_e2fsprogs/fsck.c b/e2fsprogs/old_e2fsprogs/fsck.c
index 3a0743b..91cce97 100644
--- a/e2fsprogs/old_e2fsprogs/fsck.c
+++ b/e2fsprogs/old_e2fsprogs/fsck.c
@@ -1239,7 +1239,6 @@ static void PRS(int argc, char **argv)
progress_fd = 0;
else {
goto next_arg;
- i++;
}
}
break;
diff --git a/e2fsprogs/old_e2fsprogs/mke2fs.c b/e2fsprogs/old_e2fsprogs/mke2fs.c
index 35d717a..ebcb46c 100644
--- a/e2fsprogs/old_e2fsprogs/mke2fs.c
+++ b/e2fsprogs/old_e2fsprogs/mke2fs.c
@@ -239,7 +239,7 @@ static void test_disk(ext2_filsys fs, badblocks_list *bb_list)
errcode_t retval;
char buf[1024];
- sprintf(buf, "badblocks -b %d %s%s%s %d", fs->blocksize,
+ sprintf(buf, "badblocks -b %u %s%s%s %d", fs->blocksize,
quiet ? "" : "-s ", (cflag > 1) ? "-w " : "",
fs->device_name, fs->super->s_blocks_count);
mke2fs_verbose("Running command: %s\n", buf);
@@ -385,7 +385,7 @@ static errcode_t zero_blocks(ext2_filsys fs, blk_t blk, int num,
struct progress_struct *progress,
blk_t *ret_blk, int *ret_count)
{
- int j, count, next_update, next_update_incr;
+ int j, count, next_update;
static char *buf;
errcode_t retval;
@@ -403,9 +403,7 @@ static errcode_t zero_blocks(ext2_filsys fs, blk_t blk, int num,
}
/* OK, do the write loop */
next_update = 0;
- next_update_incr = num / 100;
- if (next_update_incr < 1)
- next_update_incr = 1;
+
for (j=0; j < num; j += STRIDE_LENGTH, blk += STRIDE_LENGTH) {
count = num - j;
if (count > STRIDE_LENGTH)
diff --git a/e2fsprogs/old_e2fsprogs/tune2fs.c b/e2fsprogs/old_e2fsprogs/tune2fs.c
index 3c3f4af..bbe30e5 100644
--- a/e2fsprogs/old_e2fsprogs/tune2fs.c
+++ b/e2fsprogs/old_e2fsprogs/tune2fs.c
@@ -607,7 +607,7 @@ int tune2fs_main(int argc, char **argv)
if (e_flag) {
sb->s_errors = errors;
ext2fs_mark_super_dirty(fs);
- printf("Setting error behavior to %d\n", errors);
+ printf("Setting error behavior to %u\n", errors);
}
if (g_flag) {
sb->s_def_resgid = resgid;
diff --git a/e2fsprogs/old_e2fsprogs/util.c b/e2fsprogs/old_e2fsprogs/util.c
index a61abc2..3e7ee8e 100644
--- a/e2fsprogs/old_e2fsprogs/util.c
+++ b/e2fsprogs/old_e2fsprogs/util.c
@@ -117,7 +117,7 @@ void parse_journal_opts(char **journal_device, int *journal_flags,
}
if (strcmp(token, "device") == 0) {
*journal_device = blkid_get_devname(NULL, arg, NULL);
- if (!journal_device) {
+ if (!*journal_device) {
journal_usage++;
continue;
}
@@ -239,7 +239,7 @@ void make_journal_blocks(ext2_filsys fs, int journal_size, int journal_flags, in
return;
}
if (!quiet)
- printf("Creating journal (%ld blocks): ", journal_blocks);
+ printf("Creating journal (%lu blocks): ", journal_blocks);
fflush(stdout);
retval = ext2fs_add_journal_inode(fs, journal_blocks,
journal_flags);
diff --git a/editors/Config.src b/editors/Config.src
index af1e1de..c6e9d92 100644
--- a/editors/Config.src
+++ b/editors/Config.src
@@ -7,66 +7,6 @@ menu "Editors"
INSERT
-config AWK
- bool "awk"
- default y
- help
- Awk is used as a pattern scanning and processing language. This is
- the BusyBox implementation of that programming language.
-
-config FEATURE_AWK_LIBM
- bool "Enable math functions (requires libm)"
- default y
- depends on AWK
- help
- Enable math functions of the Awk programming language.
- NOTE: This will require libm to be present for linking.
-
-config CMP
- bool "cmp"
- default y
- help
- cmp is used to compare two files and returns the result
- to standard output.
-
-config DIFF
- bool "diff"
- default y
- help
- diff compares two files or directories and outputs the
- differences between them in a form that can be given to
- the patch command.
-
-config FEATURE_DIFF_LONG_OPTIONS
- bool "Enable long options"
- default y
- depends on DIFF && LONG_OPTS
- help
- Enable use of long options.
-
-config FEATURE_DIFF_DIR
- bool "Enable directory support"
- default y
- depends on DIFF
- help
- This option enables support for directory and subdirectory
- comparison.
-
-config ED
- bool "ed"
- default y
- help
- The original 1970's Unix text editor, from the days of teletypes.
- Small, simple, evil. Part of SUSv3. If you're not already using
- this, you don't need it.
-
-config SED
- bool "sed"
- default y
- help
- sed is used to perform text transformations on a file
- or input from a pipeline.
-
config FEATURE_ALLOW_EXEC
bool "Allow vi and awk to execute shell commands"
default y
diff --git a/editors/Kbuild.src b/editors/Kbuild.src
index 8888cba..6b4fb74 100644
--- a/editors/Kbuild.src
+++ b/editors/Kbuild.src
@@ -7,8 +7,3 @@
lib-y:=
INSERT
-lib-$(CONFIG_AWK) += awk.o
-lib-$(CONFIG_CMP) += cmp.o
-lib-$(CONFIG_DIFF) += diff.o
-lib-$(CONFIG_ED) += ed.o
-lib-$(CONFIG_SED) += sed.o
diff --git a/editors/awk.c b/editors/awk.c
index d8c393f..b511361 100644
--- a/editors/awk.c
+++ b/editors/awk.c
@@ -7,12 +7,45 @@
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
+//config:config AWK
+//config: bool "awk"
+//config: default y
+//config: help
+//config: Awk is used as a pattern scanning and processing language. This is
+//config: the BusyBox implementation of that programming language.
+//config:
+//config:config FEATURE_AWK_LIBM
+//config: bool "Enable math functions (requires libm)"
+//config: default y
+//config: depends on AWK
+//config: help
+//config: Enable math functions of the Awk programming language.
+//config: NOTE: This will require libm to be present for linking.
+//config:
+//config:config FEATURE_AWK_GNU_EXTENSIONS
+//config: bool "Enable a few GNU extensions"
+//config: default y
+//config: depends on AWK
+//config: help
+//config: Enable a few features from gawk:
+//config: * command line option -e AWK_PROGRAM
+//config: * simultaneous use of -f and -e on the command line.
+//config: This enables the use of awk library files.
+//config: Ex: awk -f mylib.awk -e '{print myfunction($1);}' ...
+
+//applet:IF_AWK(APPLET_NOEXEC(awk, awk, BB_DIR_USR_BIN, BB_SUID_DROP, awk))
+
+//kbuild:lib-$(CONFIG_AWK) += awk.o
+
//usage:#define awk_trivial_usage
//usage: "[OPTIONS] [AWK_PROGRAM] [FILE]..."
//usage:#define awk_full_usage "\n\n"
//usage: " -v VAR=VAL Set variable"
//usage: "\n -F SEP Use SEP as field separator"
//usage: "\n -f FILE Read program from FILE"
+//usage: IF_FEATURE_AWK_GNU_EXTENSIONS(
+//usage: "\n -e AWK_PROGRAM"
+//usage: )
#include "libbb.h"
#include "xregex.h"
@@ -38,6 +71,25 @@
#endif
+#define OPTSTR_AWK \
+ "F:v:f:" \
+ IF_FEATURE_AWK_GNU_EXTENSIONS("e:") \
+ "W:"
+#define OPTCOMPLSTR_AWK \
+ "v::f::" \
+ IF_FEATURE_AWK_GNU_EXTENSIONS("e::")
+enum {
+ OPTBIT_F, /* define field separator */
+ OPTBIT_v, /* define variable */
+ OPTBIT_f, /* pull in awk program from file */
+ IF_FEATURE_AWK_GNU_EXTENSIONS(OPTBIT_e,) /* -e AWK_PROGRAM */
+ OPTBIT_W, /* -W ignored */
+ OPT_F = 1 << OPTBIT_F,
+ OPT_v = 1 << OPTBIT_v,
+ OPT_f = 1 << OPTBIT_f,
+ OPT_e = IF_FEATURE_AWK_GNU_EXTENSIONS((1 << OPTBIT_e)) + 0,
+ OPT_W = 1 << OPTBIT_W
+};
#define MAXVARFMT 240
#define MINNVBLOCK 64
@@ -190,7 +242,7 @@ typedef struct tsplitter_s {
/* combined token classes */
#define TC_BINOP (TC_BINOPX | TC_COMMA | TC_PIPE | TC_IN)
-#define TC_UNARYOP (TC_UOPPRE | TC_UOPPOST)
+//#define TC_UNARYOP (TC_UOPPRE | TC_UOPPOST)
#define TC_OPERAND (TC_VARIABLE | TC_ARRAY | TC_FUNCTION \
| TC_BUILTIN | TC_GETLINE | TC_SEQSTART | TC_STRING | TC_NUMBER)
@@ -2015,8 +2067,8 @@ static int fmt_num(char *b, int size, const char *format, double n, int int_as_i
char c;
const char *s = format;
- if (int_as_int && n == (int)n) {
- r = snprintf(b, size, "%d", (int)n);
+ if (int_as_int && n == (long long)n) {
+ r = snprintf(b, size, "%lld", (long long)n);
} else {
do { c = *s; } while (c && *++s);
if (strchr("diouxX", c)) {
@@ -2661,7 +2713,8 @@ static var *evaluate(node *op, var *res)
var *vbeg, *v;
const char *sv_progname;
- if (!op->r.f->body.first)
+ /* The body might be empty, still has to eval the args */
+ if (!op->r.n->info && !op->r.f->body.first)
syntax_error(EMSG_UNDEF_FUNC);
vbeg = v = nvalloc(op->r.f->nargs + 1);
@@ -2732,7 +2785,7 @@ static var *evaluate(node *op, var *res)
switch (opn) {
case F_in:
- R_d = (int)L_d;
+ R_d = (long long)L_d;
break;
case F_rn:
@@ -2783,8 +2836,16 @@ static var *evaluate(node *op, var *res)
break;
case F_le:
- if (!op1)
+ debug_printf_eval("length: L.s:'%s'\n", L.s);
+ if (!op1) {
L.s = getvar_s(intvar[F0]);
+ debug_printf_eval("length: L.s='%s'\n", L.s);
+ }
+ else if (L.v->type & VF_ARRAY) {
+ R_d = L.v->x.array->nel;
+ debug_printf_eval("length: array_len:%d\n", L.v->x.array->nel);
+ break;
+ }
R_d = strlen(L.s);
break;
@@ -2930,7 +2991,7 @@ static var *evaluate(node *op, var *res)
case '%':
if (R_d == 0)
syntax_error(EMSG_DIV_BY_ZERO);
- L_d -= (int)(L_d / R_d) * R_d;
+ L_d -= (long long)(L_d / R_d) * R_d;
break;
}
debug_printf_eval("BINARY/REPLACE result:%f\n", L_d);
@@ -3078,6 +3139,9 @@ int awk_main(int argc, char **argv)
char *opt_F;
llist_t *list_v = NULL;
llist_t *list_f = NULL;
+#if ENABLE_FEATURE_AWK_GNU_EXTENSIONS
+ llist_t *list_e = NULL;
+#endif
int i, j;
var *v;
var tv;
@@ -3136,47 +3200,51 @@ int awk_main(int argc, char **argv)
*s1 = '=';
}
}
- opt_complementary = "v::f::"; /* -v and -f can occur multiple times */
- opt = getopt32(argv, "F:v:f:W:", &opt_F, &list_v, &list_f, NULL);
+ opt_complementary = OPTCOMPLSTR_AWK;
+ opt = getopt32(argv, OPTSTR_AWK, &opt_F, &list_v, &list_f, IF_FEATURE_AWK_GNU_EXTENSIONS(&list_e,) NULL);
argv += optind;
argc -= optind;
- if (opt & 0x1) { /* -F */
+ if (opt & OPT_W)
+ bb_error_msg("warning: option -W is ignored");
+ if (opt & OPT_F) {
unescape_string_in_place(opt_F);
setvar_s(intvar[FS], opt_F);
}
- while (list_v) { /* -v */
+ while (list_v) {
if (!is_assignment(llist_pop(&list_v)))
bb_show_usage();
}
- if (list_f) { /* -f */
- do {
- char *s = NULL;
- FILE *from_file;
-
- g_progname = llist_pop(&list_f);
- from_file = xfopen_stdin(g_progname);
- /* one byte is reserved for some trick in next_token */
- for (i = j = 1; j > 0; i += j) {
- s = xrealloc(s, i + 4096);
- j = fread(s + i, 1, 4094, from_file);
- }
- s[i] = '\0';
- fclose(from_file);
- parse_program(s + 1);
- free(s);
- } while (list_f);
- argc++;
- } else { // no -f: take program from 1st parameter
- if (!argc)
+ while (list_f) {
+ char *s = NULL;
+ FILE *from_file;
+
+ g_progname = llist_pop(&list_f);
+ from_file = xfopen_stdin(g_progname);
+ /* one byte is reserved for some trick in next_token */
+ for (i = j = 1; j > 0; i += j) {
+ s = xrealloc(s, i + 4096);
+ j = fread(s + i, 1, 4094, from_file);
+ }
+ s[i] = '\0';
+ fclose(from_file);
+ parse_program(s + 1);
+ free(s);
+ }
+ g_progname = "cmd. line";
+#if ENABLE_FEATURE_AWK_GNU_EXTENSIONS
+ while (list_e) {
+ parse_program(llist_pop(&list_e));
+ }
+#endif
+ if (!(opt & (OPT_f | OPT_e))) {
+ if (!*argv)
bb_show_usage();
- g_progname = "cmd. line";
parse_program(*argv++);
+ argc--;
}
- if (opt & 0x8) // -W
- bb_error_msg("warning: option -W is ignored");
/* fill in ARGV array */
- setvar_i(intvar[ARGC], argc);
+ setvar_i(intvar[ARGC], argc + 1);
setari_u(intvar[ARGV], 0, "awk");
i = 0;
while (*argv)
diff --git a/editors/cmp.c b/editors/cmp.c
index fbe6b97..a4af6f4 100644
--- a/editors/cmp.c
+++ b/editors/cmp.c
@@ -10,6 +10,17 @@
/* BB_AUDIT SUSv3 (virtually) compliant -- uses nicer GNU format for -l. */
/* http://www.opengroup.org/onlinepubs/007904975/utilities/cmp.html */
+//config:config CMP
+//config: bool "cmp"
+//config: default y
+//config: help
+//config: cmp is used to compare two files and returns the result
+//config: to standard output.
+
+//kbuild:lib-$(CONFIG_CMP) += cmp.o
+
+//applet:IF_CMP(APPLET(cmp, BB_DIR_USR_BIN, BB_SUID_DROP))
+
//usage:#define cmp_trivial_usage
//usage: "[-l] [-s] FILE1 [FILE2" IF_DESKTOP(" [SKIP1 [SKIP2]]") "]"
//usage:#define cmp_full_usage "\n\n"
diff --git a/editors/diff.c b/editors/diff.c
index 0c55820..1961de6 100644
--- a/editors/diff.c
+++ b/editors/diff.c
@@ -76,6 +76,33 @@
* 6n words for files of length n.
*/
+//config:config DIFF
+//config: bool "diff"
+//config: default y
+//config: help
+//config: diff compares two files or directories and outputs the
+//config: differences between them in a form that can be given to
+//config: the patch command.
+//config:
+//config:config FEATURE_DIFF_LONG_OPTIONS
+//config: bool "Enable long options"
+//config: default y
+//config: depends on DIFF && LONG_OPTS
+//config: help
+//config: Enable use of long options.
+//config:
+//config:config FEATURE_DIFF_DIR
+//config: bool "Enable directory support"
+//config: default y
+//config: depends on DIFF
+//config: help
+//config: This option enables support for directory and subdirectory
+//config: comparison.
+
+//kbuild:lib-$(CONFIG_DIFF) += diff.o
+
+//applet:IF_DIFF(APPLET(diff, BB_DIR_USR_BIN, BB_SUID_DROP))
+
//usage:#define diff_trivial_usage
//usage: "[-abBdiNqrTstw] [-L LABEL] [-S FILE] [-U LINES] FILE1 FILE2"
//usage:#define diff_full_usage "\n\n"
diff --git a/editors/ed.c b/editors/ed.c
index dbb5130..3087fb0 100644
--- a/editors/ed.c
+++ b/editors/ed.c
@@ -7,6 +7,18 @@
* The "ed" built-in command (much simplified)
*/
+//config:config ED
+//config: bool "ed"
+//config: default y
+//config: help
+//config: The original 1970's Unix text editor, from the days of teletypes.
+//config: Small, simple, evil. Part of SUSv3. If you're not already using
+//config: this, you don't need it.
+
+//kbuild:lib-$(CONFIG_ED) += ed.o
+
+//applet:IF_ED(APPLET(ed, BB_DIR_BIN, BB_SUID_DROP))
+
//usage:#define ed_trivial_usage ""
//usage:#define ed_full_usage ""
diff --git a/editors/patch_bbox.c b/editors/patch_bbox.c
index 78aa5fd..aae7b79 100644
--- a/editors/patch_bbox.c
+++ b/editors/patch_bbox.c
@@ -188,8 +188,8 @@ int patch_main(int argc UNUSED_PARAM, char **argv)
unsigned src_last_line = 1;
unsigned dst_last_line = 1;
- if ((sscanf(patch_line, "@@ -%d,%d +%d,%d", &src_beg_line, &src_last_line, &dst_beg_line, &dst_last_line) < 3)
- && (sscanf(patch_line, "@@ -%d +%d,%d", &src_beg_line, &dst_beg_line, &dst_last_line) < 2)
+ if ((sscanf(patch_line, "@@ -%u,%u +%u,%u", &src_beg_line, &src_last_line, &dst_beg_line, &dst_last_line) < 3)
+ && (sscanf(patch_line, "@@ -%u +%u,%u", &src_beg_line, &dst_beg_line, &dst_last_line) < 2)
) {
/* No more hunks for this file */
break;
diff --git a/editors/sed.c b/editors/sed.c
index f8ca5d3..e18e48a 100644
--- a/editors/sed.c
+++ b/editors/sed.c
@@ -23,9 +23,6 @@
* resulting sed_cmd_t structures are appended to a linked list
* (G.sed_cmd_head/G.sed_cmd_tail).
*
- * add_input_file() adds a FILE* to the list of input files. We need to
- * know all input sources ahead of time to find the last line for the $ match.
- *
* process_files() does actual sedding, reading data lines from each input FILE*
* (which could be stdin) and applying the sed command list (sed_cmd_head) to
* each of the resulting lines.
@@ -58,16 +55,27 @@
* http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html
*/
+//config:config SED
+//config: bool "sed"
+//config: default y
+//config: help
+//config: sed is used to perform text transformations on a file
+//config: or input from a pipeline.
+
+//kbuild:lib-$(CONFIG_SED) += sed.o
+
+//applet:IF_SED(APPLET(sed, BB_DIR_BIN, BB_SUID_DROP))
+
//usage:#define sed_trivial_usage
-//usage: "[-inr] [-f FILE]... [-e CMD]... [FILE]...\n"
-//usage: "or: sed [-inr] CMD [FILE]..."
+//usage: "[-inrE] [-f FILE]... [-e CMD]... [FILE]...\n"
+//usage: "or: sed [-inrE] CMD [FILE]..."
//usage:#define sed_full_usage "\n\n"
//usage: " -e CMD Add CMD to sed commands to be executed"
//usage: "\n -f FILE Add FILE contents to sed commands to be executed"
//usage: "\n -i[SFX] Edit files in-place (otherwise sends to stdout)"
//usage: "\n Optionally back files up, appending SFX"
//usage: "\n -n Suppress automatic printing of pattern space"
-//usage: "\n -r Use extended regex syntax"
+//usage: "\n -r,-E Use extended regex syntax"
//usage: "\n"
//usage: "\nIf no -e or -f, the first non-option argument is the sed command string."
//usage: "\nRemaining arguments are input files (stdin if none)."
@@ -124,12 +132,15 @@ static const char semicolon_whitespace[] ALIGN1 = "; \n\r\t\v";
struct globals {
/* options */
int be_quiet, regex_type;
+
FILE *nonstdout;
char *outname, *hold_space;
+ smallint exitcode;
- /* List of input files */
- int input_file_count, current_input_file;
- FILE **input_file_list;
+ /* list of input files */
+ int current_input_file, last_input_file;
+ char **input_file_list;
+ FILE *current_fp;
regmatch_t regmatch[10];
regex_t *previous_regex_ptr;
@@ -137,7 +148,7 @@ struct globals {
/* linked list of sed commands */
sed_cmd_t *sed_cmd_head, **sed_cmd_tail;
- /* Linked list of append lines */
+ /* linked list of append lines */
llist_t *append_head;
char *add_cmd_line;
@@ -189,8 +200,8 @@ static void sed_free_and_close_stuff(void)
free(G.hold_space);
- while (G.current_input_file < G.input_file_count)
- fclose(G.input_file_list[G.current_input_file++]);
+ if (G.current_fp)
+ fclose(G.current_fp);
}
#else
void sed_free_and_close_stuff(void);
@@ -330,7 +341,7 @@ static int get_address(const char *my_str, int *linenum, regex_t ** regex)
next = index_of_next_unescaped_regexp_delim(delimiter, ++pos);
temp = copy_parsing_escapes(pos, next);
*regex = xzalloc(sizeof(regex_t));
- xregcomp(*regex, temp, G.regex_type|REG_NEWLINE);
+ xregcomp(*regex, temp, G.regex_type);
free(temp);
/* Move position to next character after last delimiter */
pos += (next+1);
@@ -370,7 +381,7 @@ static int parse_subst_cmd(sed_cmd_t *sed_cmd, const char *substr)
/*
* A substitution command should look something like this:
- * s/match/replace/ #gIpw
+ * s/match/replace/ #giIpw
* || | |||
* mandatory optional
*/
@@ -418,6 +429,7 @@ static int parse_subst_cmd(sed_cmd_t *sed_cmd, const char *substr)
break;
}
/* Ignore case (gnu exension) */
+ case 'i':
case 'I':
cflags |= REG_ICASE;
break;
@@ -649,6 +661,12 @@ static void add_cmd(const char *cmdstr)
sed_cmd->cmd = *cmdstr++;
cmdstr = parse_cmd_args(sed_cmd, cmdstr);
+ /* cmdstr now points past args.
+ * GNU sed requires a separator, if there are more commands,
+ * else it complains "char N: extra characters after command".
+ * Example: "sed 'p;d'". We also allow "sed 'pd'".
+ */
+
/* Add the command to the command array */
*G.sed_cmd_tail = sed_cmd;
G.sed_cmd_tail = &sed_cmd->next;
@@ -842,46 +860,100 @@ static sed_cmd_t *branch_to(char *label)
static void append(char *s)
{
- llist_add_to_end(&G.append_head, xstrdup(s));
+ llist_add_to_end(&G.append_head, s);
+}
+
+/* Output line of text. */
+/* Note:
+ * The tricks with NO_EOL_CHAR and last_puts_char are there to emulate gnu sed.
+ * Without them, we had this:
+ * echo -n thingy >z1
+ * echo -n again >z2
+ * >znull
+ * sed "s/i/z/" z1 z2 znull | hexdump -vC
+ * output:
+ * gnu sed 4.1.5:
+ * 00000000 74 68 7a 6e 67 79 0a 61 67 61 7a 6e |thzngy.agazn|
+ * bbox:
+ * 00000000 74 68 7a 6e 67 79 61 67 61 7a 6e |thzngyagazn|
+ */
+enum {
+ NO_EOL_CHAR = 1,
+ LAST_IS_NUL = 2,
+};
+static void puts_maybe_newline(char *s, FILE *file, char *last_puts_char, char last_gets_char)
+{
+ char lpc = *last_puts_char;
+
+ /* Need to insert a '\n' between two files because first file's
+ * last line wasn't terminated? */
+ if (lpc != '\n' && lpc != '\0') {
+ fputc('\n', file);
+ lpc = '\n';
+ }
+ fputs(s, file);
+
+ /* 'x' - just something which is not '\n', '\0' or NO_EOL_CHAR */
+ if (s[0])
+ lpc = 'x';
+
+ /* had trailing '\0' and it was last char of file? */
+ if (last_gets_char == LAST_IS_NUL) {
+ fputc('\0', file);
+ lpc = 'x'; /* */
+ } else
+ /* had trailing '\n' or '\0'? */
+ if (last_gets_char != NO_EOL_CHAR) {
+ fputc(last_gets_char, file);
+ lpc = last_gets_char;
+ }
+
+ if (ferror(file)) {
+ xfunc_error_retval = 4; /* It's what gnu sed exits with... */
+ bb_error_msg_and_die(bb_msg_write_error);
+ }
+ *last_puts_char = lpc;
}
-static void flush_append(void)
+static void flush_append(char *last_puts_char, char last_gets_char)
{
char *data;
/* Output appended lines. */
while ((data = (char *)llist_pop(&G.append_head))) {
- fprintf(G.nonstdout, "%s\n", data);
+ puts_maybe_newline(data, G.nonstdout, last_puts_char, last_gets_char);
free(data);
}
}
-static void add_input_file(FILE *file)
-{
- G.input_file_list = xrealloc_vector(G.input_file_list, 2, G.input_file_count);
- G.input_file_list[G.input_file_count++] = file;
-}
-
/* Get next line of input from G.input_file_list, flushing append buffer and
* noting if we ran out of files without a newline on the last line we read.
*/
-enum {
- NO_EOL_CHAR = 1,
- LAST_IS_NUL = 2,
-};
-static char *get_next_line(char *gets_char)
+static char *get_next_line(char *gets_char, char *last_puts_char, char last_gets_char)
{
char *temp = NULL;
int len;
char gc;
- flush_append();
+ flush_append(last_puts_char, last_gets_char);
/* will be returned if last line in the file
* doesn't end with either '\n' or '\0' */
gc = NO_EOL_CHAR;
- while (G.current_input_file < G.input_file_count) {
- FILE *fp = G.input_file_list[G.current_input_file];
+ for (; G.current_input_file <= G.last_input_file; G.current_input_file++) {
+ FILE *fp = G.current_fp;
+ if (!fp) {
+ const char *path = G.input_file_list[G.current_input_file];
+ fp = stdin;
+ if (path != bb_msg_standard_input) {
+ fp = fopen_or_warn(path, "r");
+ if (!fp) {
+ G.exitcode = EXIT_FAILURE;
+ continue;
+ }
+ }
+ G.current_fp = fp;
+ }
/* Read line up to a newline or NUL byte, inclusive,
* return malloc'ed char[]. length of the chunk read
* is stored in len. NULL if EOF/error */
@@ -912,61 +984,13 @@ static char *get_next_line(char *gets_char)
* (note: *no* newline after "b bang"!) */
}
/* Close this file and advance to next one */
- fclose(fp);
- G.current_input_file++;
+ fclose_if_not_stdin(fp);
+ G.current_fp = NULL;
}
*gets_char = gc;
return temp;
}
-/* Output line of text. */
-/* Note:
- * The tricks with NO_EOL_CHAR and last_puts_char are there to emulate gnu sed.
- * Without them, we had this:
- * echo -n thingy >z1
- * echo -n again >z2
- * >znull
- * sed "s/i/z/" z1 z2 znull | hexdump -vC
- * output:
- * gnu sed 4.1.5:
- * 00000000 74 68 7a 6e 67 79 0a 61 67 61 7a 6e |thzngy.agazn|
- * bbox:
- * 00000000 74 68 7a 6e 67 79 61 67 61 7a 6e |thzngyagazn|
- */
-static void puts_maybe_newline(char *s, FILE *file, char *last_puts_char, char last_gets_char)
-{
- char lpc = *last_puts_char;
-
- /* Need to insert a '\n' between two files because first file's
- * last line wasn't terminated? */
- if (lpc != '\n' && lpc != '\0') {
- fputc('\n', file);
- lpc = '\n';
- }
- fputs(s, file);
-
- /* 'x' - just something which is not '\n', '\0' or NO_EOL_CHAR */
- if (s[0])
- lpc = 'x';
-
- /* had trailing '\0' and it was last char of file? */
- if (last_gets_char == LAST_IS_NUL) {
- fputc('\0', file);
- lpc = 'x'; /* */
- } else
- /* had trailing '\n' or '\0'? */
- if (last_gets_char != NO_EOL_CHAR) {
- fputc(last_gets_char, file);
- lpc = last_gets_char;
- }
-
- if (ferror(file)) {
- xfunc_error_retval = 4; /* It's what gnu sed exits with... */
- bb_error_msg_and_die(bb_msg_write_error);
- }
- *last_puts_char = lpc;
-}
-
#define sed_puts(s, n) (puts_maybe_newline(s, G.nonstdout, &last_puts_char, n))
static int beg_match(sed_cmd_t *sed_cmd, const char *pattern_space)
@@ -989,7 +1013,7 @@ static void process_files(void)
int substituted;
/* Prime the pump */
- next_line = get_next_line(&next_gets_char);
+ next_line = get_next_line(&next_gets_char, &last_puts_char, '\n' /*last_gets_char*/);
/* Go through every line in each file */
again:
@@ -1003,7 +1027,7 @@ static void process_files(void)
/* Read one line in advance so we can act on the last line,
* the '$' address */
- next_line = get_next_line(&next_gets_char);
+ next_line = get_next_line(&next_gets_char, &last_puts_char, last_gets_char);
linenum++;
/* For every line, go through all the commands */
@@ -1175,7 +1199,7 @@ static void process_files(void)
/* Append line to linked list to be printed later */
case 'a':
- append(sed_cmd->string);
+ append(xstrdup(sed_cmd->string));
break;
/* Insert text before this line */
@@ -1197,11 +1221,10 @@ static void process_files(void)
rfile = fopen_for_read(sed_cmd->string);
if (rfile) {
char *line;
-
while ((line = xmalloc_fgetline(rfile))
!= NULL)
append(line);
- xprint_and_close_file(rfile);
+ fclose(rfile);
}
break;
@@ -1222,7 +1245,7 @@ static void process_files(void)
free(pattern_space);
pattern_space = next_line;
last_gets_char = next_gets_char;
- next_line = get_next_line(&next_gets_char);
+ next_line = get_next_line(&next_gets_char, &last_puts_char, last_gets_char);
substituted = 0;
linenum++;
break;
@@ -1258,7 +1281,7 @@ static void process_files(void)
pattern_space[len] = '\n';
strcpy(pattern_space + len+1, next_line);
last_gets_char = next_gets_char;
- next_line = get_next_line(&next_gets_char);
+ next_line = get_next_line(&next_gets_char, &last_puts_char, last_gets_char);
linenum++;
break;
}
@@ -1362,7 +1385,7 @@ static void process_files(void)
/* Delete and such jump here. */
discard_line:
- flush_append();
+ flush_append(&last_puts_char, last_gets_char);
free(pattern_space);
goto again;
@@ -1371,7 +1394,7 @@ static void process_files(void)
/* It is possible to have a command line argument with embedded
* newlines. This counts as multiple command lines.
* However, newline can be escaped: 's/e/z\<newline>z/'
- * We check for this.
+ * add_cmd() handles this.
*/
static void add_cmd_block(char *cmdstr)
@@ -1381,22 +1404,8 @@ static void add_cmd_block(char *cmdstr)
cmdstr = sv = xstrdup(cmdstr);
do {
eol = strchr(cmdstr, '\n');
- next:
- if (eol) {
- /* Count preceding slashes */
- int slashes = 0;
- char *sl = eol;
-
- while (sl != cmdstr && *--sl == '\\')
- slashes++;
- /* Odd number of preceding slashes - newline is escaped */
- if (slashes & 1) {
- overlapping_strcpy(eol - 1, eol);
- eol = strchr(eol, '\n');
- goto next;
- }
+ if (eol)
*eol = '\0';
- }
add_cmd(cmdstr);
cmdstr = eol + 1;
} while (eol);
@@ -1421,8 +1430,6 @@ int sed_main(int argc UNUSED_PARAM, char **argv)
"file\0" Required_argument "f";
#endif
- int status = EXIT_SUCCESS;
-
INIT_G();
/* destroy command strings on exit */
@@ -1443,15 +1450,21 @@ int sed_main(int argc UNUSED_PARAM, char **argv)
IF_LONG_OPTS(applet_long_options = sed_longopts);
/* -i must be first, to match OPT_in_place definition */
- opt = getopt32(argv, "i::rne:f:", &opt_i, &opt_e, &opt_f,
+ /* -E is a synonym of -r:
+ * GNU sed 4.2.1 mentions it in neither --help
+ * nor manpage, but does recognize it.
+ */
+ opt = getopt32(argv, "i::rEne:f:", &opt_i, &opt_e, &opt_f,
&G.be_quiet); /* counter for -n */
//argc -= optind;
argv += optind;
if (opt & OPT_in_place) { // -i
atexit(cleanup_outname);
}
- if (opt & 0x2) G.regex_type |= REG_EXTENDED; // -r
- //if (opt & 0x4) G.be_quiet++; // -n
+ if (opt & (2|4))
+ G.regex_type |= REG_EXTENDED; // -r or -E
+ //if (opt & 8)
+ // G.be_quiet++; // -n (implemented with a counter instead)
while (opt_e) { // -e
add_cmd_block(llist_pop(&opt_e));
}
@@ -1466,7 +1479,7 @@ int sed_main(int argc UNUSED_PARAM, char **argv)
fclose(cmdfile);
}
/* if we didn't get a pattern from -e or -f, use argv[0] */
- if (!(opt & 0x18)) {
+ if (!(opt & 0x30)) {
if (!*argv)
bb_show_usage();
add_cmd_block(*argv++);
@@ -1480,42 +1493,38 @@ int sed_main(int argc UNUSED_PARAM, char **argv)
/* argv[0..(argc-1)] should be names of file to process. If no
* files were specified or '-' was specified, take input from stdin.
* Otherwise, we process all the files specified. */
- if (argv[0] == NULL) {
+ G.input_file_list = argv;
+ if (!argv[0]) {
if (opt & OPT_in_place)
bb_error_msg_and_die(bb_msg_requires_arg, "-i");
- add_input_file(stdin);
+ argv[0] = (char*)bb_msg_standard_input;
+ /* G.last_input_file = 0; - already is */
} else {
- int i;
+ goto start;
- for (i = 0; argv[i]; i++) {
+ for (; *argv; argv++) {
struct stat statbuf;
int nonstdoutfd;
- FILE *file;
sed_cmd_t *sed_cmd;
- if (LONE_DASH(argv[i]) && !(opt & OPT_in_place)) {
- add_input_file(stdin);
- process_files();
- continue;
- }
- file = fopen_or_warn(argv[i], "r");
- if (!file) {
- status = EXIT_FAILURE;
- continue;
- }
- add_input_file(file);
+ G.last_input_file++;
+ start:
if (!(opt & OPT_in_place)) {
+ if (LONE_DASH(*argv)) {
+ *argv = (char*)bb_msg_standard_input;
+ process_files();
+ }
continue;
}
/* -i: process each FILE separately: */
- G.outname = xasprintf("%sXXXXXX", argv[i]);
+ G.outname = xasprintf("%sXXXXXX", *argv);
nonstdoutfd = xmkstemp(G.outname);
G.nonstdout = xfdopen_for_write(nonstdoutfd);
/* Set permissions/owner of output file */
- fstat(fileno(file), &statbuf);
+ stat(*argv, &statbuf);
/* chmod'ing AFTER chown would preserve suid/sgid bits,
* but GNU sed 4.2.1 does not preserve them either */
fchmod(nonstdoutfd, statbuf.st_mode);
@@ -1526,12 +1535,12 @@ int sed_main(int argc UNUSED_PARAM, char **argv)
G.nonstdout = stdout;
if (opt_i) {
- char *backupname = xasprintf("%s%s", argv[i], opt_i);
- xrename(argv[i], backupname);
+ char *backupname = xasprintf("%s%s", *argv, opt_i);
+ xrename(*argv, backupname);
free(backupname);
}
- /* else unlink(argv[i]); - rename below does this */
- xrename(G.outname, argv[i]); //TODO: rollback backup on error?
+ /* else unlink(*argv); - rename below does this */
+ xrename(G.outname, *argv); //TODO: rollback backup on error?
free(G.outname);
G.outname = NULL;
@@ -1541,12 +1550,13 @@ int sed_main(int argc UNUSED_PARAM, char **argv)
}
}
/* Here, to handle "sed 'cmds' nonexistent_file" case we did:
- * if (G.current_input_file >= G.input_file_count)
- * return status;
+ * if (G.current_input_file[G.current_input_file] == NULL)
+ * return G.exitcode;
* but it's not needed since process_files() works correctly
* in this case too. */
}
+
process_files();
- return status;
+ return G.exitcode;
}
diff --git a/editors/vi.c b/editors/vi.c
index 5d214e2..16729d9 100644
--- a/editors/vi.c
+++ b/editors/vi.c
@@ -478,6 +478,7 @@ static void flash(int); // flash the terminal screen
static void show_status_line(void); // put a message on the bottom line
static void status_line(const char *, ...); // print to status buf
static void status_line_bold(const char *, ...);
+static void status_line_bold_errno(const char *fn);
static void not_implemented(const char *); // display "Not implemented" message
static int format_edit_status(void); // format file status on status line
static void redraw(int); // force a full screen refresh
@@ -1051,7 +1052,7 @@ static void colon(char *buf)
#endif
// how many lines in text[]?
li = count_lines(text, end - 1);
- status_line("\"%s\"%s"
+ status_line("'%s'%s"
IF_FEATURE_VI_READONLY("%s")
" %dL, %dC", current_filename,
(file_size(fn) < 0 ? " [New file]" : ""),
@@ -1167,7 +1168,7 @@ static void colon(char *buf)
goto ret; // nothing was inserted
// how many lines in text[]?
li = count_lines(q, q + ch - 1);
- status_line("\"%s\""
+ status_line("'%s'"
IF_FEATURE_VI_READONLY("%s")
" %dL, %dC", fn,
IF_FEATURE_VI_READONLY((readonly_mode ? " [Readonly]" : ""),)
@@ -1300,7 +1301,7 @@ static void colon(char *buf)
}
#if ENABLE_FEATURE_VI_READONLY
if (readonly_mode && !useforce) {
- status_line_bold("\"%s\" File is read only", fn);
+ status_line_bold("'%s' is read only", fn);
goto ret;
}
#endif
@@ -1323,9 +1324,9 @@ static void colon(char *buf)
}
if (l < 0) {
if (l == -1)
- status_line_bold("\"%s\" %s", fn, strerror(errno));
+ status_line_bold_errno(fn);
} else {
- status_line("\"%s\" %dL, %dC", fn, li, l);
+ status_line("'%s' %dL, %dC", fn, li, l);
if (q == text && r == end - 1 && l == ch) {
file_modified = 0;
last_file_modified = -1;
@@ -1708,65 +1709,53 @@ static char *new_screen(int ro, int co)
// search for pattern starting at p
static char *char_search(char *p, const char *pat, int dir, int range)
{
- char *q;
struct re_pattern_buffer preg;
+ const char *err;
+ char *q;
int i;
int size;
re_syntax_options = RE_SYNTAX_POSIX_EXTENDED;
- preg.translate = 0;
- preg.fastmap = 0;
- preg.buffer = 0;
- preg.allocated = 0;
+ if (ignorecase)
+ re_syntax_options = RE_SYNTAX_POSIX_EXTENDED | RE_ICASE;
+
+ memset(&preg, 0, sizeof(preg));
+ err = re_compile_pattern(pat, strlen(pat), &preg);
+ if (err != NULL) {
+ status_line_bold("bad search pattern '%s': %s", pat, err);
+ return p;
+ }
// assume a LIMITED forward search
- q = next_line(p);
- q = end_line(q);
q = end - 1;
- if (dir == BACK) {
- q = prev_line(p);
+ if (dir == BACK)
q = text;
- }
- // count the number of chars to search over, forward or backward
- size = q - p;
- if (size < 0)
- size = p - q;
// RANGE could be negative if we are searching backwards
range = q - p;
-
- q = (char *)re_compile_pattern(pat, strlen(pat), (struct re_pattern_buffer *)&preg);
- if (q != 0) {
- // The pattern was not compiled
- status_line_bold("bad search pattern: \"%s\": %s", pat, q);
- i = 0; // return p if pattern not compiled
- goto cs1;
- }
-
q = p;
+ size = range;
if (range < 0) {
+ size = -size;
q = p - size;
if (q < text)
q = text;
}
// search for the compiled pattern, preg, in p[]
- // range < 0- search backward
- // range > 0- search forward
+ // range < 0: search backward
+ // range > 0: search forward
// 0 < start < size
- // re_search() < 0 not found or error
- // re_search() > 0 index of found pattern
- // struct pattern char int int int struct reg
- // re_search (*pattern_buffer, *string, size, start, range, *regs)
- i = re_search(&preg, q, size, 0, range, 0);
- if (i == -1) {
- p = 0;
- i = 0; // return NULL if pattern not found
- }
- cs1:
- if (dir == FORWARD) {
+ // re_search() < 0: not found or error
+ // re_search() >= 0: index of found pattern
+ // struct pattern char int int int struct reg
+ // re_search(*pattern_buffer, *string, size, start, range, *regs)
+ i = re_search(&preg, q, size, /*start:*/ 0, range, /*struct re_registers*:*/ NULL);
+ regfree(&preg);
+ if (i < 0)
+ return NULL;
+ if (dir == FORWARD)
p = p + i;
- } else {
+ else
p = p - i;
- }
return p;
}
@@ -1791,7 +1780,7 @@ static char *char_search(char *p, const char *pat, int dir, int range)
len = strlen(pat);
if (dir == FORWARD) {
- stop = end - 1; // assume range is p - end-1
+ stop = end - 1; // assume range is p..end-1
if (range == LIMITED)
stop = next_line(p); // range is to next line
for (start = p; start < stop; start++) {
@@ -1800,7 +1789,7 @@ static char *char_search(char *p, const char *pat, int dir, int range)
}
}
} else if (dir == BACK) {
- stop = text; // assume range is text - p
+ stop = text; // assume range is text..p
if (range == LIMITED)
stop = prev_line(p); // range is to prev line
for (start = p - len; start >= stop; start--) {
@@ -2505,12 +2494,12 @@ static int file_insert(const char *fn, char *p, int update_ro_status)
/* Validate file */
if (stat(fn, &statbuf) < 0) {
- status_line_bold("\"%s\" %s", fn, strerror(errno));
+ status_line_bold_errno(fn);
goto fi0;
}
if (!S_ISREG(statbuf.st_mode)) {
// This is not a regular file
- status_line_bold("\"%s\" Not a regular file", fn);
+ status_line_bold("'%s' is not a regular file", fn);
goto fi0;
}
if (p < text || p > end) {
@@ -2521,19 +2510,19 @@ static int file_insert(const char *fn, char *p, int update_ro_status)
// read file to buffer
fd = open(fn, O_RDONLY);
if (fd < 0) {
- status_line_bold("\"%s\" %s", fn, strerror(errno));
+ status_line_bold_errno(fn);
goto fi0;
}
- size = statbuf.st_size;
+ size = (statbuf.st_size < INT_MAX ? (int)statbuf.st_size : INT_MAX);
p += text_hole_make(p, size);
cnt = safe_read(fd, p, size);
if (cnt < 0) {
- status_line_bold("\"%s\" %s", fn, strerror(errno));
+ status_line_bold_errno(fn);
p = text_hole_delete(p, p + size - 1); // un-do buffer insert
} else if (cnt < size) {
// There was a partial read, shrink unused space text[]
- p = text_hole_delete(p + cnt, p + (size - cnt) - 1); // un-do buffer insert
- status_line_bold("can't read all of file \"%s\"", fn);
+ p = text_hole_delete(p + cnt, p + size - 1); // un-do buffer insert
+ status_line_bold("can't read '%s'", fn);
}
if (cnt >= size)
file_modified++;
@@ -2719,6 +2708,11 @@ static void status_line_bold(const char *format, ...)
have_status_msg = 1 + sizeof(ESC_BOLD_TEXT) + sizeof(ESC_NORM_TEXT) - 2;
}
+static void status_line_bold_errno(const char *fn)
+{
+ status_line_bold("'%s' %s", fn, strerror(errno));
+}
+
// format status buffer
static void status_line(const char *format, ...)
{
@@ -3471,7 +3465,7 @@ static void do_cmd(int c)
} else {
file_modified = 0;
last_file_modified = -1;
- status_line("\"%s\" %dL, %dC", current_filename, count_lines(text, end - 1), cnt);
+ status_line("'%s' %dL, %dC", current_filename, count_lines(text, end - 1), cnt);
if (p[0] == 'x' || p[1] == 'q' || p[1] == 'n'
|| p[0] == 'X' || p[1] == 'Q' || p[1] == 'N'
) {
@@ -3669,7 +3663,7 @@ static void do_cmd(int c)
}
if (file_modified) {
if (ENABLE_FEATURE_VI_READONLY && readonly_mode) {
- status_line_bold("\"%s\" File is read only", current_filename);
+ status_line_bold("'%s' is read only", current_filename);
break;
}
cnt = file_write(current_filename, text, end - 1);
diff --git a/examples/inittab b/examples/inittab
index c4e0af5..01ceaef 100644
--- a/examples/inittab
+++ b/examples/inittab
@@ -15,10 +15,7 @@
# the specified process to run on. The contents of this field are
# appended to "/dev/" and used as-is. There is no need for this field to
# be unique, although if it isn't you may have strange results. If this
-# field is left blank, it is completely ignored. Also note that if
-# BusyBox detects that a serial console is in use, then all entries
-# containing non-empty id fields will be ignored. BusyBox init does
-# nothing with utmp. We don't need no stinkin' utmp.
+# field is left blank, then the init's stdin/out will be used.
#
# <runlevels>: The runlevels field is completely ignored.
#
@@ -43,9 +40,6 @@
# ::shutdown:/sbin/swapoff -a
# ::shutdown:/bin/umount -a -r
# ::restart:/sbin/init
-#
-# if it detects that /dev/console is _not_ a serial console, it will
-# also run:
# tty2::askfirst:/bin/sh
# tty3::askfirst:/bin/sh
# tty4::askfirst:/bin/sh
diff --git a/examples/mdev.conf.change_blockdev.sh b/examples/mdev.conf.change_blockdev.sh
new file mode 100755
index 0000000..512e43f
--- a/dev/null
+++ b/examples/mdev.conf.change_blockdev.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+# Seconds to try to reread partition table
+cnt=60
+
+exec </dev/null
+exec >"/tmp/${0##*/}.$$.out"
+exec 2>&1
+
+(
+echo "Running: $0"
+echo "Env:"
+env | sort
+
+while sleep 1; test $cnt != 0; do
+ echo "Trying to reread partition table on $DEVNAME ($cnt)"
+ : $((cnt--))
+ # If device node doesn't exist, it means the device was removed.
+ # Stop trying.
+ test -e "$DEVNAME" || { echo "$DEVNAME doesn't exist, aborting"; exit 1; }
+ #echo "$DEVNAME exists"
+ if blockdev --rereadpt "$DEVNAME"; then
+ echo "blockdev --rereadpt succeeded"
+ exit 0
+ fi
+ echo "blockdev --rereadpt failed, exit code: $?"
+done
+echo "Timed out"
+) &
diff --git a/examples/mdev_fat.conf b/examples/mdev_fat.conf
index ceba3a7..f2a15f3 100644
--- a/examples/mdev_fat.conf
+++ b/examples/mdev_fat.conf
@@ -7,9 +7,9 @@
# instead of the default 0:0 660.
#
# Syntax:
-# [-]devicename_regex user:group mode [=path]|[>path]|[!] [@|$|*cmd args...]
-# [-]$ENVVAR=regex user:group mode [=path]|[>path]|[!] [@|$|*cmd args...]
-# [-]@maj,min[-min2] user:group mode [=path]|[>path]|[!] [@|$|*cmd args...]
+# [-][ENVVAR=regex;]...devicename_regex user:group mode [=path]|[>path]|[!] [@|$|*cmd args...]
+# [-][ENVVAR=regex;]...@maj,min[-min2] user:group mode [=path]|[>path]|[!] [@|$|*cmd args...]
+# [-]$ENVVAR=regex user:group mode [=path]|[>path]|[!] [@|$|*cmd args...]
#
# [-]: do not stop on this match, continue reading mdev.conf
# =: move, >: move and create a symlink
@@ -53,6 +53,7 @@ sr[0-9]* root:cdrom 660 @ln -sf $MDEV cdrom
fd[0-9]* root:floppy 660
# net devices
+SUBSYSTEM=net;.* root:root 600 @nameif
tun[0-9]* root:root 600 =net/
tap[0-9]* root:root 600 =net/
@@ -111,3 +112,33 @@ usbdev[0-9].[0-9]_.* root:root 660
# zaptel devices
zap(.*) root:dialout 660 =zap/%1
dahdi!(.*) root:dialout 660 =dahdi/%1
+
+# HTC Android
+# Attaching it via USB cable causes a flurry of activity:
+#
+# mdev[1271]: 48.639459 ACTION:add SUBSYSTEM:usb DEVNAME:bus/usb/001/009 DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5
+# mdev[1271]: mknod bus/usb/001/009 (189,8) 20660 0:0
+# mdev[1272]: 48.642354 ACTION:add SUBSYSTEM:usb DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0
+# mdev[1272]: running: modprobe "$MODALIAS"
+# mdev[1273]: 48.650078 ACTION:add SUBSYSTEM:scsi DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11
+# mdev[1274]: 48.651297 ACTION:add SUBSYSTEM:scsi_host DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/scsi_host/host11
+# mdev[1275]: 49.649422 ACTION:add SUBSYSTEM:scsi DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/target11:0:0
+# mdev[1276]: 49.650703 ACTION:add SUBSYSTEM:scsi DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/target11:0:0/11:0:0:0
+# mdev[1276]: running: modprobe "$MODALIAS"
+# modprobe: module scsi:t-0x00 not found in modules.dep
+# mdev[1277]: 49.658002 ACTION:add SUBSYSTEM:scsi_disk DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/target11:0:0/11:0:0:0/scsi_disk/11:0:0:0
+# mdev[1278]: 49.659244 ACTION:add SUBSYSTEM:scsi_device DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/target11:0:0/11:0:0:0/scsi_device/11:0:0:
+# mdev[1279]: 49.660535 ACTION:add SUBSYSTEM:bsg DEVNAME:bsg/11:0:0:0 DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/target11:0:0/11:0:0:0/bsg/11:0:0:0
+# mdev[1279]: mknod bsg/11:0:0:0 (253,1) 20660 0:0
+# mdev[1280]: 49.663516 ACTION:add SUBSYSTEM:bdi DEVNAME:(null) DEVPATH:/devices/virtual/bdi/8:16
+# mdev[1281]: 49.664748 ACTION:add SUBSYSTEM:block DEVNAME:sdb DEVPATH:/block/sdb
+# mdev[1281]: mknod sdb (8,16) 60660 0:0
+# mdev[1282]: 49.677597 ACTION:change SUBSYSTEM:block DEVNAME:sdb DEVPATH:/block/sdb
+# mdev[1283]: 50.692936 ACTION:change SUBSYSTEM:block DEVNAME:sdb DEVPATH:/block/sdb
+#
+# We are hooking to the last events. To avoid having two scripts running,
+# we check for DISK_MEDIA_CHANGE=1 (prev to last event has it,
+# and it's the _only_ difference in env for these two events as of kernel 3.7.7)
+# Unfortunately, there is no event for "user pressed [Turn USB storage] btn"!
+# Script merely backgrounds and tries to rescan partition table for 1 minute:
+ACTION=change;SUBSYSTEM=block;DISK_MEDIA_CHANGE=1;.* 0:0 660 */etc/mdev.conf.change_blockdev.sh
diff --git a/examples/udhcp/simple.script b/examples/udhcp/simple.script
index 40ee738..2a917eb 100755
--- a/examples/udhcp/simple.script
+++ b/examples/udhcp/simple.script
@@ -29,18 +29,23 @@ case "$1" in
metric=0
for i in $router ; do
echo "Adding router $i"
- route add default gw $i dev $interface metric $((metric++))
+ route add default gw $i dev $interface metric $metric
+ : $(( metric += 1 ))
done
fi
echo "Recreating $RESOLV_CONF"
- echo -n > $RESOLV_CONF-$$
- [ -n "$domain" ] && echo "search $domain" >> $RESOLV_CONF-$$
+ # If the file is a symlink somewhere (like /etc/resolv.conf
+ # pointing to /run/resolv.conf), make sure things work.
+ realconf=$(readlink -f "$RESOLV_CONF" 2>/dev/null || echo "$RESOLV_CONF")
+ tmpfile="$realconf-$$"
+ > "$tmpfile"
+ [ -n "$domain" ] && echo "search $domain" >> "$tmpfile"
for i in $dns ; do
echo " Adding DNS server $i"
- echo "nameserver $i" >> $RESOLV_CONF-$$
+ echo "nameserver $i" >> "$tmpfile"
done
- mv $RESOLV_CONF-$$ $RESOLV_CONF
+ mv "$tmpfile" "$realconf"
;;
esac
diff --git a/findutils/find.c b/findutils/find.c
index 67cb47d..4c9f9d8 100644
--- a/findutils/find.c
+++ b/findutils/find.c
@@ -231,12 +231,13 @@
//kbuild:lib-$(CONFIG_FIND) += find.o
//usage:#define find_trivial_usage
-//usage: "[PATH]... [OPTIONS] [ACTIONS]"
+//usage: "[-HL] [PATH]... [OPTIONS] [ACTIONS]"
//usage:#define find_full_usage "\n\n"
//usage: "Search for files and perform actions on them.\n"
//usage: "First failed action stops processing of current file.\n"
//usage: "Defaults: PATH is current directory, action is '-print'\n"
-//usage: "\n -follow Follow symlinks"
+//usage: "\n -L,-follow Follow symlinks"
+//usage: "\n -H ...on command line only"
//usage: IF_FEATURE_FIND_XDEV(
//usage: "\n -xdev Don't descend directories on other filesystems"
//usage: )
@@ -814,6 +815,31 @@ static const char* plus_minus_num(const char* str)
}
#endif
+/* Say no to GCCism */
+#define USE_NESTED_FUNCTION 0
+
+#if !USE_NESTED_FUNCTION
+struct pp_locals {
+ action*** appp;
+ unsigned cur_group;
+ unsigned cur_action;
+ IF_FEATURE_FIND_NOT( bool invert_flag; )
+};
+static action* alloc_action(struct pp_locals *ppl, int sizeof_struct, action_fp f)
+{
+ action *ap = xzalloc(sizeof_struct);
+ action **app;
+ action ***group = &ppl->appp[ppl->cur_group];
+ *group = app = xrealloc(*group, (ppl->cur_action+2) * sizeof(ppl->appp[0][0]));
+ app[ppl->cur_action++] = ap;
+ app[ppl->cur_action] = NULL;
+ ap->f = f;
+ IF_FEATURE_FIND_NOT( ap->invert = ppl->invert_flag; )
+ IF_FEATURE_FIND_NOT( ppl->invert_flag = 0; )
+ return ap;
+}
+#endif
+
static action*** parse_params(char **argv)
{
enum {
@@ -900,10 +926,18 @@ static action*** parse_params(char **argv)
IF_FEATURE_FIND_MAXDEPTH("-mindepth\0""-maxdepth\0")
;
+#if !USE_NESTED_FUNCTION
+ struct pp_locals ppl;
+#define appp (ppl.appp )
+#define cur_group (ppl.cur_group )
+#define cur_action (ppl.cur_action )
+#define invert_flag (ppl.invert_flag)
+#define ALLOC_ACTION(name) (action_##name*)alloc_action(&ppl, sizeof(action_##name), (action_fp) func_##name)
+#else
action*** appp;
- unsigned cur_group = 0;
- unsigned cur_action = 0;
- IF_FEATURE_FIND_NOT( bool invert_flag = 0; )
+ unsigned cur_group;
+ unsigned cur_action;
+ IF_FEATURE_FIND_NOT( bool invert_flag; )
/* This is the only place in busybox where we use nested function.
* So far more standard alternatives were bigger. */
@@ -912,7 +946,7 @@ static action*** parse_params(char **argv)
action* alloc_action(int sizeof_struct, action_fp f)
{
action *ap;
- appp[cur_group] = xrealloc(appp[cur_group], (cur_action+2) * sizeof(*appp));
+ appp[cur_group] = xrealloc(appp[cur_group], (cur_action+2) * sizeof(appp[0][0]));
appp[cur_group][cur_action++] = ap = xzalloc(sizeof_struct);
appp[cur_group][cur_action] = NULL;
ap->f = f;
@@ -920,9 +954,12 @@ static action*** parse_params(char **argv)
IF_FEATURE_FIND_NOT( invert_flag = 0; )
return ap;
}
-
#define ALLOC_ACTION(name) (action_##name*)alloc_action(sizeof(action_##name), (action_fp) func_##name)
+#endif
+ cur_group = 0;
+ cur_action = 0;
+ IF_FEATURE_FIND_NOT( invert_flag = 0; )
appp = xzalloc(2 * sizeof(appp[0])); /* appp[0],[1] == NULL */
while (*argv) {
@@ -948,8 +985,8 @@ static action*** parse_params(char **argv)
*/
/* Options */
if (parm == OPT_FOLLOW) {
- dbg("follow enabled: %d", __LINE__);
- G.recurse_flags |= ACTION_FOLLOWLINKS | ACTION_DANGLING_OK;
+ dbg("follow enabled: %d", __LINE__);
+ G.recurse_flags |= ACTION_FOLLOWLINKS | ACTION_DANGLING_OK;
}
#if ENABLE_FEATURE_FIND_XDEV
else if (parm == OPT_XDEV) {
@@ -987,7 +1024,7 @@ static action*** parse_params(char **argv)
dbg("%d", __LINE__);
/* start new OR group */
cur_group++;
- appp = xrealloc(appp, (cur_group+2) * sizeof(*appp));
+ appp = xrealloc(appp, (cur_group+2) * sizeof(appp[0]));
/*appp[cur_group] = NULL; - already NULL */
appp[cur_group+1] = NULL;
cur_action = 0;
@@ -1245,16 +1282,46 @@ static action*** parse_params(char **argv)
dbg("exiting %s", __func__);
return appp;
#undef ALLOC_ACTION
+#undef appp
+#undef cur_action
+#undef invert_flag
}
int find_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int find_main(int argc UNUSED_PARAM, char **argv)
{
int i, firstopt, status = EXIT_SUCCESS;
+ char **past_HLP, *saved;
INIT_G();
- argv++;
+ /* "find -type f" + getopt("+HLP") => disaster.
+ * Need to avoid getopt running into a non-HLP option.
+ * Do this by temporarily storing NULL there:
+ */
+ past_HLP = argv;
+ for (;;) {
+ saved = *++past_HLP;
+ if (!saved)
+ break;
+ if (saved[0] != '-')
+ break;
+ if (!saved[1])
+ break; /* it is "-" */
+ if ((saved+1)[strspn(saved+1, "HLP")] != '\0')
+ break;
+ }
+ *past_HLP = NULL;
+ /* "+": stop on first non-option */
+ i = getopt32(argv, "+HLP");
+ if (i & (1<<0))
+ G.recurse_flags |= ACTION_FOLLOWLINKS_L0 | ACTION_DANGLING_OK;
+ if (i & (1<<1))
+ G.recurse_flags |= ACTION_FOLLOWLINKS | ACTION_DANGLING_OK;
+ /* -P is default and is ignored */
+ argv = past_HLP; /* same result as "argv += optind;" */
+ *past_HLP = saved;
+
for (firstopt = 0; argv[firstopt]; firstopt++) {
if (argv[firstopt][0] == '-')
break;
diff --git a/findutils/grep.c b/findutils/grep.c
index a64a735..22101f3 100644
--- a/findutils/grep.c
+++ b/findutils/grep.c
@@ -373,6 +373,11 @@ static int grep_file(FILE *file)
opt_f_not_found: ;
}
} else {
+#if ENABLE_EXTRA_COMPAT
+ unsigned start_pos;
+#endif
+ char *match_at;
+
if (!(gl->flg_mem_alocated_compiled & COMPILED)) {
gl->flg_mem_alocated_compiled |= COMPILED;
#if !ENABLE_EXTRA_COMPAT
@@ -387,33 +392,56 @@ static int grep_file(FILE *file)
#if !ENABLE_EXTRA_COMPAT
gl->matched_range.rm_so = 0;
gl->matched_range.rm_eo = 0;
+#else
+ start_pos = 0;
#endif
+ match_at = line;
+ opt_w_again:
+//bb_error_msg("'%s' start_pos:%d line_len:%d", match_at, start_pos, line_len);
if (
#if !ENABLE_EXTRA_COMPAT
- regexec(&gl->compiled_regex, line, 1, &gl->matched_range, 0) == 0
+ regexec(&gl->compiled_regex, match_at, 1, &gl->matched_range, 0) == 0
#else
- re_search(&gl->compiled_regex, line, line_len,
- /*start:*/ 0, /*range:*/ line_len,
+ re_search(&gl->compiled_regex, match_at, line_len,
+ start_pos, /*range:*/ line_len,
&gl->matched_range) >= 0
#endif
) {
if (option_mask32 & OPT_x) {
found = (gl->matched_range.rm_so == 0
- && line[gl->matched_range.rm_eo] == '\0');
+ && match_at[gl->matched_range.rm_eo] == '\0');
} else
if (!(option_mask32 & OPT_w)) {
found = 1;
} else {
char c = ' ';
if (gl->matched_range.rm_so)
- c = line[gl->matched_range.rm_so - 1];
+ c = match_at[gl->matched_range.rm_so - 1];
if (!isalnum(c) && c != '_') {
- c = line[gl->matched_range.rm_eo];
- if (!c || (!isalnum(c) && c != '_'))
+ c = match_at[gl->matched_range.rm_eo];
+ if (!c || (!isalnum(c) && c != '_')) {
found = 1;
+ } else {
+ /*
+ * Why check gl->matched_range.rm_eo?
+ * Zero-length match makes -w skip the line:
+ * "echo foo | grep ^" prints "foo",
+ * "echo foo | grep -w ^" prints nothing.
+ * Without such check, we can loop forever.
+ */
+#if !ENABLE_EXTRA_COMPAT
+ if (gl->matched_range.rm_eo != 0) {
+ match_at += gl->matched_range.rm_eo;
+ goto opt_w_again;
+ }
+#else
+ if (gl->matched_range.rm_eo > start_pos) {
+ start_pos = gl->matched_range.rm_eo;
+ goto opt_w_again;
+ }
+#endif
+ }
}
-//BUG: "echo foop foo | grep -w foo" should match, but doesn't:
-//we bail out on first "mismatch" because it's not a word.
}
}
}
@@ -710,7 +738,7 @@ int grep_main(int argc UNUSED_PARAM, char **argv)
option_mask32 |= OPT_F;
#if !ENABLE_EXTRA_COMPAT
- if (!(option_mask32 & (OPT_o | OPT_w)))
+ if (!(option_mask32 & (OPT_o | OPT_w | OPT_x)))
reflags = REG_NOSUB;
#endif
diff --git a/include-full/applet_tables.h b/include-full/applet_tables.h
index 7a6238f..f86d391 100644
--- a/include-full/applet_tables.h
+++ b/include-full/applet_tables.h
@@ -670,5 +670,3 @@ const uint16_t applet_nameofs[] ALIGN2 = {
0x055f,
};
-
-#define MAX_APPLET_NAME_LEN 13
diff --git a/include-full/applets.h b/include-full/applets.h
index 7b47429..f24268a 100644
--- a/include-full/applets.h
+++ b/include-full/applets.h
@@ -53,6 +53,12 @@ s - suid type:
# define APPLET_NOEXEC(name,main,l,s,name2) LINK l name
# define APPLET_NOFORK(name,main,l,s,name2) LINK l name
+#elif defined(MAKE_SUID)
+# define APPLET(name,l,s) SUID s l name
+# define APPLET_ODDNAME(name,main,l,s,name2) SUID s l name
+# define APPLET_NOEXEC(name,main,l,s,name2) SUID s l name
+# define APPLET_NOFORK(name,main,l,s,name2) SUID s l name
+
#else
static struct bb_applet applets[] = { /* name, main, location, need_suid */
# define APPLET(name,l,s) { #name, #name, l, s },
@@ -67,8 +73,30 @@ s - suid type:
#endif
+IF_AR(APPLET(ar, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_UNCOMPRESS(APPLET(uncompress, BB_DIR_BIN, BB_SUID_DROP))
+IF_GUNZIP(APPLET(gunzip, BB_DIR_BIN, BB_SUID_DROP))
+IF_GUNZIP(APPLET_ODDNAME(zcat, gunzip, BB_DIR_BIN, BB_SUID_DROP, zcat))
IF_BUNZIP2(APPLET(bunzip2, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_BUNZIP2(APPLET_ODDNAME(bzcat, bunzip2, BB_DIR_USR_BIN, BB_SUID_DROP, bzcat))
+IF_UNLZMA(APPLET(unlzma, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_UNLZMA(APPLET_ODDNAME(lzcat, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzcat))
+IF_LZMA(APPLET_ODDNAME(lzma, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzma))
+IF_UNXZ(APPLET(unxz, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_UNXZ(APPLET_ODDNAME(xzcat, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xzcat))
+IF_XZ(APPLET_ODDNAME(xz, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xz))
+IF_BZIP2(APPLET(bzip2, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_CPIO(APPLET(cpio, BB_DIR_BIN, BB_SUID_DROP))
+IF_DPKG(APPLET(dpkg, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_DPKG_DEB(APPLET_ODDNAME(dpkg-deb, dpkg_deb, BB_DIR_USR_BIN, BB_SUID_DROP, dpkg_deb))
+IF_GZIP(APPLET(gzip, BB_DIR_BIN, BB_SUID_DROP))
+IF_LZOP(APPLET(lzop, BB_DIR_BIN, BB_SUID_DROP))
+IF_LZOP(APPLET_ODDNAME(lzopcat, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, lzopcat))
+IF_LZOP(APPLET_ODDNAME(unlzop, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, unlzop))
+IF_RPM2CPIO(APPLET(rpm2cpio, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_RPM(APPLET(rpm, BB_DIR_BIN, BB_SUID_DROP))
+IF_TAR(APPLET(tar, BB_DIR_BIN, BB_SUID_DROP))
+IF_UNZIP(APPLET(unzip, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_DATE(APPLET(date, BB_DIR_BIN, BB_SUID_DROP))
IF_HOSTID(APPLET_NOFORK(hostid, hostid, BB_DIR_USR_BIN, BB_SUID_DROP, hostid))
IF_GROUPS(APPLET_NOEXEC(groups, id, BB_DIR_USR_BIN, BB_SUID_DROP, groups))
@@ -77,7 +105,12 @@ IF_TOUCH(APPLET_NOFORK(touch, touch, BB_DIR_BIN, BB_SUID_DROP, touch))
IF_BASE64(APPLET(base64, BB_DIR_BIN, BB_SUID_DROP))
IF_USERS(APPLET_ODDNAME(users, who, BB_DIR_USR_BIN, BB_SUID_DROP, users))
IF_WHO( APPLET( who, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_AWK(APPLET_NOEXEC(awk, awk, BB_DIR_USR_BIN, BB_SUID_DROP, awk))
+IF_CMP(APPLET(cmp, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_DIFF(APPLET(diff, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_ED(APPLET(ed, BB_DIR_BIN, BB_SUID_DROP))
IF_PATCH(APPLET(patch, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_SED(APPLET(sed, BB_DIR_BIN, BB_SUID_DROP))
IF_VI(APPLET(vi, BB_DIR_BIN, BB_SUID_DROP))
IF_FIND(APPLET_NOEXEC(find, find, BB_DIR_USR_BIN, BB_SUID_DROP, find))
IF_GREP(APPLET(grep, BB_DIR_BIN, BB_SUID_DROP))
@@ -95,7 +128,8 @@ IF_ADD_SHELL( APPLET_ODDNAME(add-shell , add_remove_shell, BB_DIR_USR_SBIN,
IF_REMOVE_SHELL(APPLET_ODDNAME(remove-shell, add_remove_shell, BB_DIR_USR_SBIN, BB_SUID_DROP, remove_shell))
IF_CONSPY(APPLET(conspy, BB_DIR_BIN, BB_SUID_DROP))
IF_NANDWRITE(APPLET(nandwrite, BB_DIR_USR_SBIN, BB_SUID_DROP))
-IF_NANDWRITE(APPLET_ODDNAME(nanddump, nandwrite, BB_DIR_USR_SBIN, BB_SUID_DROP, nanddump))
+IF_NANDDUMP(APPLET_ODDNAME(nanddump, nandwrite, BB_DIR_USR_SBIN, BB_SUID_DROP, nanddump))
+IF_RFKILL(APPLET(rfkill, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_SETSERIAL(APPLET(setserial, BB_DIR_BIN, BB_SUID_DROP))
IF_UBIATTACH(APPLET_ODDNAME(ubiattach, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubiattach))
IF_UBIDETACH(APPLET_ODDNAME(ubidetach, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubidetach))
@@ -103,16 +137,17 @@ IF_UBIMKVOL(APPLET_ODDNAME(ubimkvol, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, u
IF_UBIRMVOL(APPLET_ODDNAME(ubirmvol, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubirmvol))
IF_UBIRSVOL(APPLET_ODDNAME(ubirsvol, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubirsvol))
IF_UBIUPDATEVOL(APPLET_ODDNAME(ubiupdatevol, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubiupdatevol))
+IF_WALL(APPLET(wall, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
IF_DEPMOD(APPLET(depmod, BB_DIR_SBIN, BB_SUID_DROP))
IF_INSMOD(APPLET(insmod, BB_DIR_SBIN, BB_SUID_DROP))
IF_LSMOD(APPLET(lsmod, BB_DIR_SBIN, BB_SUID_DROP))
IF_MODINFO(APPLET(modinfo, BB_DIR_SBIN, BB_SUID_DROP))
+IF_MODPROBE(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP))
IF_MODPROBE_SMALL(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP))
IF_MODPROBE_SMALL(APPLET_ODDNAME(depmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe))
IF_MODPROBE_SMALL(APPLET_ODDNAME(insmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe))
IF_MODPROBE_SMALL(APPLET_ODDNAME(lsmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe))
IF_MODPROBE_SMALL(APPLET_ODDNAME(rmmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe))
-IF_MODPROBE(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP))
IF_RMMOD(APPLET(rmmod, BB_DIR_SBIN, BB_SUID_DROP))
IF_NBDCLIENT(APPLET_ODDNAME(nbd-client, nbdclient, BB_DIR_USR_SBIN, BB_SUID_DROP, nbdclient))
IF_PING(APPLET(ping, BB_DIR_BIN, BB_SUID_MAYBE))
@@ -146,16 +181,13 @@ IF_ACPID(APPLET(acpid, BB_DIR_SBIN, BB_SUID_DROP))
IF_ADDGROUP(APPLET(addgroup, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_ADDUSER(APPLET(adduser, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_ADJTIMEX(APPLET(adjtimex, BB_DIR_SBIN, BB_SUID_DROP))
-IF_AR(APPLET(ar, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_ARP(APPLET(arp, BB_DIR_SBIN, BB_SUID_DROP))
IF_ARPING(APPLET(arping, BB_DIR_USR_SBIN, BB_SUID_DROP))
-IF_AWK(APPLET_NOEXEC(awk, awk, BB_DIR_USR_BIN, BB_SUID_DROP, awk))
IF_BASENAME(APPLET_NOFORK(basename, basename, BB_DIR_USR_BIN, BB_SUID_DROP, basename))
IF_BBCONFIG(APPLET(bbconfig, BB_DIR_BIN, BB_SUID_DROP))
IF_BEEP(APPLET(beep, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_BLKID(APPLET(blkid, BB_DIR_SBIN, BB_SUID_DROP))
IF_BRCTL(APPLET(brctl, BB_DIR_USR_SBIN, BB_SUID_DROP))
-IF_BZIP2(APPLET(bzip2, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_CAL(APPLET(cal, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_CAT(APPLET_NOFORK(cat, cat, BB_DIR_BIN, BB_SUID_DROP, cat))
IF_CATV(APPLET(catv, BB_DIR_BIN, BB_SUID_DROP))
@@ -172,10 +204,8 @@ IF_CHRT(APPLET(chrt, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_CHVT(APPLET(chvt, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_CKSUM(APPLET_NOEXEC(cksum, cksum, BB_DIR_USR_BIN, BB_SUID_DROP, cksum))
IF_CLEAR(APPLET(clear, BB_DIR_USR_BIN, BB_SUID_DROP))
-IF_CMP(APPLET(cmp, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_COMM(APPLET(comm, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_CP(APPLET_NOEXEC(cp, cp, BB_DIR_BIN, BB_SUID_DROP, cp))
-IF_CPIO(APPLET(cpio, BB_DIR_BIN, BB_SUID_DROP))
IF_CROND(APPLET(crond, BB_DIR_USR_SBIN, BB_SUID_DROP))
/* Needs to be run by root or be suid root - needs to change /var/spool/cron* files: */
IF_CRONTAB(APPLET(crontab, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
@@ -190,21 +220,17 @@ IF_DEVFSD(APPLET(devfsd, BB_DIR_SBIN, BB_SUID_DROP))
IF_DEVMEM(APPLET(devmem, BB_DIR_SBIN, BB_SUID_DROP))
IF_DF(APPLET(df, BB_DIR_BIN, BB_SUID_DROP))
IF_DHCPRELAY(APPLET(dhcprelay, BB_DIR_USR_SBIN, BB_SUID_DROP))
-IF_DIFF(APPLET(diff, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_DIRNAME(APPLET_NOFORK(dirname, dirname, BB_DIR_USR_BIN, BB_SUID_DROP, dirname))
IF_DMESG(APPLET(dmesg, BB_DIR_BIN, BB_SUID_DROP))
IF_DNSD(APPLET(dnsd, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_HOSTNAME(APPLET_ODDNAME(dnsdomainname, hostname, BB_DIR_BIN, BB_SUID_DROP, dnsdomainname))
IF_DOS2UNIX(APPLET_NOEXEC(dos2unix, dos2unix, BB_DIR_USR_BIN, BB_SUID_DROP, dos2unix))
-IF_DPKG(APPLET(dpkg, BB_DIR_USR_BIN, BB_SUID_DROP))
-IF_DPKG_DEB(APPLET_ODDNAME(dpkg-deb, dpkg_deb, BB_DIR_USR_BIN, BB_SUID_DROP, dpkg_deb))
IF_DU(APPLET(du, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_DUMPKMAP(APPLET(dumpkmap, BB_DIR_BIN, BB_SUID_DROP))
IF_DUMPLEASES(APPLET(dumpleases, BB_DIR_USR_BIN, BB_SUID_DROP))
//IF_E2FSCK(APPLET(e2fsck, BB_DIR_SBIN, BB_SUID_DROP))
//IF_E2LABEL(APPLET_ODDNAME(e2label, tune2fs, BB_DIR_SBIN, BB_SUID_DROP, e2label))
IF_ECHO(APPLET_NOFORK(echo, echo, BB_DIR_BIN, BB_SUID_DROP, echo))
-IF_ED(APPLET(ed, BB_DIR_BIN, BB_SUID_DROP))
IF_EJECT(APPLET(eject, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_ENV(APPLET_NOEXEC(env, env, BB_DIR_USR_BIN, BB_SUID_DROP, env))
IF_ENVDIR(APPLET_ODDNAME(envdir, chpst, BB_DIR_USR_BIN, BB_SUID_DROP, envdir))
@@ -243,8 +269,6 @@ IF_GETENFORCE(APPLET(getenforce, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_GETOPT(APPLET(getopt, BB_DIR_BIN, BB_SUID_DROP))
IF_GETSEBOOL(APPLET(getsebool, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_GETTY(APPLET(getty, BB_DIR_SBIN, BB_SUID_DROP))
-IF_GUNZIP(APPLET(gunzip, BB_DIR_BIN, BB_SUID_DROP))
-IF_GZIP(APPLET(gzip, BB_DIR_BIN, BB_SUID_DROP))
IF_HD(APPLET_NOEXEC(hd, hexdump, BB_DIR_USR_BIN, BB_SUID_DROP, hd))
IF_HDPARM(APPLET(hdparm, BB_DIR_SBIN, BB_SUID_DROP))
IF_HEAD(APPLET_NOEXEC(head, head, BB_DIR_USR_BIN, BB_SUID_DROP, head))
@@ -303,13 +327,9 @@ IF_LS(APPLET_NOEXEC(ls, ls, BB_DIR_BIN, BB_SUID_DROP, ls))
IF_LSATTR(APPLET(lsattr, BB_DIR_BIN, BB_SUID_DROP))
IF_LSPCI(APPLET(lspci, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_LSUSB(APPLET(lsusb, BB_DIR_USR_BIN, BB_SUID_DROP))
-IF_UNLZMA(APPLET_ODDNAME(lzcat, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzcat))
-IF_LZMA(APPLET_ODDNAME(lzma, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzma))
-IF_LZOP(APPLET(lzop, BB_DIR_BIN, BB_SUID_DROP))
-IF_LZOP(APPLET_ODDNAME(lzopcat, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, lzopcat))
IF_MAKEDEVS(APPLET(makedevs, BB_DIR_SBIN, BB_SUID_DROP))
IF_MAKEMIME(APPLET(makemime, BB_DIR_BIN, BB_SUID_DROP))
-IF_MAN(APPLET(man, BB_DIR_SBIN, BB_SUID_DROP))
+IF_MAN(APPLET(man, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_MATCHPATHCON(APPLET(matchpathcon, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_MD5SUM(APPLET_NOEXEC(md5sum, md5_sha1_sum, BB_DIR_USR_BIN, BB_SUID_DROP, md5sum))
IF_MICROCOM(APPLET(microcom, BB_DIR_USR_BIN, BB_SUID_DROP))
@@ -370,12 +390,9 @@ IF_RENICE(APPLET(renice, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_RESET(APPLET(reset, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_RESIZE(APPLET(resize, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_RESTORECON(APPLET_ODDNAME(restorecon, setfiles, BB_DIR_SBIN, BB_SUID_DROP, restorecon))
-IF_RFKILL(APPLET(rfkill, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_RM(APPLET_NOFORK(rm, rm, BB_DIR_BIN, BB_SUID_DROP, rm))
IF_RMDIR(APPLET_NOFORK(rmdir, rmdir, BB_DIR_BIN, BB_SUID_DROP, rmdir))
IF_ROUTE(APPLET(route, BB_DIR_SBIN, BB_SUID_DROP))
-IF_RPM(APPLET(rpm, BB_DIR_BIN, BB_SUID_DROP))
-IF_RPM2CPIO(APPLET(rpm2cpio, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_RTCWAKE(APPLET(rtcwake, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_RUN_PARTS(APPLET_ODDNAME(run-parts, run_parts, BB_DIR_BIN, BB_SUID_DROP, run_parts))
IF_RUNCON(APPLET(runcon, BB_DIR_USR_BIN, BB_SUID_DROP))
@@ -385,7 +402,6 @@ IF_RUNSVDIR(APPLET(runsvdir, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_RX(APPLET(rx, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_SCRIPT(APPLET(script, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_SCRIPTREPLAY(APPLET(scriptreplay, BB_DIR_BIN, BB_SUID_DROP))
-IF_SED(APPLET(sed, BB_DIR_BIN, BB_SUID_DROP))
IF_SELINUXENABLED(APPLET(selinuxenabled, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_SENDMAIL(APPLET(sendmail, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_SEQ(APPLET_NOFORK(seq, seq, BB_DIR_USR_BIN, BB_SUID_DROP, seq))
@@ -429,7 +445,6 @@ IF_BB_SYSCTL(APPLET(sysctl, BB_DIR_SBIN, BB_SUID_DROP))
IF_SYSLOGD(APPLET(syslogd, BB_DIR_SBIN, BB_SUID_DROP))
IF_TAC(APPLET_NOEXEC(tac, tac, BB_DIR_USR_BIN, BB_SUID_DROP, tac))
IF_TAIL(APPLET(tail, BB_DIR_USR_BIN, BB_SUID_DROP))
-IF_TAR(APPLET(tar, BB_DIR_BIN, BB_SUID_DROP))
IF_TASKSET(APPLET(taskset, BB_DIR_USR_BIN, BB_SUID_DROP))
/* IF_TC(APPLET(tc, BB_DIR_SBIN, BB_SUID_DROP)) */
IF_TCPSVD(APPLET_ODDNAME(tcpsvd, tcpudpsvd, BB_DIR_USR_BIN, BB_SUID_DROP, tcpsvd))
@@ -458,14 +473,9 @@ IF_UDHCPD(APPLET(udhcpd, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_UDPSVD(APPLET_ODDNAME(udpsvd, tcpudpsvd, BB_DIR_USR_BIN, BB_SUID_DROP, udpsvd))
IF_UMOUNT(APPLET(umount, BB_DIR_BIN, BB_SUID_DROP))
IF_UNAME(APPLET(uname, BB_DIR_BIN, BB_SUID_DROP))
-IF_UNCOMPRESS(APPLET(uncompress, BB_DIR_BIN, BB_SUID_DROP))
IF_UNEXPAND(APPLET_ODDNAME(unexpand, expand, BB_DIR_USR_BIN, BB_SUID_DROP, unexpand))
IF_UNIQ(APPLET(uniq, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_UNIX2DOS(APPLET_NOEXEC(unix2dos, dos2unix, BB_DIR_USR_BIN, BB_SUID_DROP, unix2dos))
-IF_UNXZ(APPLET(unxz, BB_DIR_USR_BIN, BB_SUID_DROP))
-IF_UNLZMA(APPLET(unlzma, BB_DIR_USR_BIN, BB_SUID_DROP))
-IF_LZOP(APPLET_ODDNAME(unlzop, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, unlzop))
-IF_UNZIP(APPLET(unzip, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_UPTIME(APPLET(uptime, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_USLEEP(APPLET_NOFORK(usleep, usleep, BB_DIR_BIN, BB_SUID_DROP, usleep))
IF_UUDECODE(APPLET(uudecode, BB_DIR_USR_BIN, BB_SUID_DROP))
@@ -474,21 +484,17 @@ IF_VCONFIG(APPLET(vconfig, BB_DIR_SBIN, BB_SUID_DROP))
/* Needs to be run by root or be suid root - needs to change uid and gid: */
IF_VLOCK(APPLET(vlock, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
IF_VOLNAME(APPLET(volname, BB_DIR_USR_BIN, BB_SUID_DROP))
-/* Needs to be run by root or be suid root - needs to write to /dev/TTY: */
-IF_WALL(APPLET(wall, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
IF_WATCH(APPLET(watch, BB_DIR_BIN, BB_SUID_DROP))
IF_WATCHDOG(APPLET(watchdog, BB_DIR_SBIN, BB_SUID_DROP))
IF_WC(APPLET(wc, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_WGET(APPLET(wget, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_WHICH(APPLET(which, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_WHOAMI(APPLET_NOFORK(whoami, whoami, BB_DIR_USR_BIN, BB_SUID_DROP, whoami))
-IF_UNXZ(APPLET_ODDNAME(xzcat, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xzcat))
-IF_XZ(APPLET_ODDNAME(xz, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xz))
IF_YES(APPLET_NOFORK(yes, yes, BB_DIR_USR_BIN, BB_SUID_DROP, yes))
-IF_GUNZIP(APPLET_ODDNAME(zcat, gunzip, BB_DIR_BIN, BB_SUID_DROP, zcat))
IF_ZCIP(APPLET(zcip, BB_DIR_SBIN, BB_SUID_DROP))
-#if !defined(PROTOTYPES) && !defined(NAME_MAIN_CNAME) && !defined(MAKE_USAGE)
+#if !defined(PROTOTYPES) && !defined(NAME_MAIN_CNAME) && !defined(MAKE_USAGE) \
+ && !defined(MAKE_LINKS) && !defined(MAKE_SUID)
};
#endif
diff --git a/include-full/autoconf.h b/include-full/autoconf.h
index e2f304b..006a504 100644
--- a/include-full/autoconf.h
+++ b/include-full/autoconf.h
@@ -1,12 +1,16 @@
/*
* Automatically generated C config: don't edit
- * Busybox version: 1.21.1-kk
+ * Busybox version: 1.22.1
*/
-#define AUTOCONF_TIMESTAMP "2013-11-24 11:52 +0100"
+#define AUTOCONF_TIMESTAMP "2014-04-04 19:53 +0100"
#define CONFIG_HAVE_DOT_CONFIG 1
#define ENABLE_HAVE_DOT_CONFIG 1
-#define IF_HAVE_DOT_CONFIG(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_HAVE_DOT_CONFIG(...) __VA_ARGS__ "CONFIG_HAVE_DOT_CONFIG"
+#else
+# define IF_HAVE_DOT_CONFIG(...) __VA_ARGS__
+#endif
#define IF_NOT_HAVE_DOT_CONFIG(...)
/*
@@ -34,11 +38,19 @@
#define IF_NOT_USE_PORTABLE_CODE(...) __VA_ARGS__
#define CONFIG_PLATFORM_LINUX 1
#define ENABLE_PLATFORM_LINUX 1
-#define IF_PLATFORM_LINUX(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PLATFORM_LINUX(...) __VA_ARGS__ "CONFIG_PLATFORM_LINUX"
+#else
+# define IF_PLATFORM_LINUX(...) __VA_ARGS__
+#endif
#define IF_NOT_PLATFORM_LINUX(...)
#define CONFIG_FEATURE_BUFFERS_USE_MALLOC 1
#define ENABLE_FEATURE_BUFFERS_USE_MALLOC 1
-#define IF_FEATURE_BUFFERS_USE_MALLOC(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_BUFFERS_USE_MALLOC(...) __VA_ARGS__ "CONFIG_FEATURE_BUFFERS_USE_MALLOC"
+#else
+# define IF_FEATURE_BUFFERS_USE_MALLOC(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_BUFFERS_USE_MALLOC(...)
#undef CONFIG_FEATURE_BUFFERS_GO_ON_STACK
#define ENABLE_FEATURE_BUFFERS_GO_ON_STACK 0
@@ -50,15 +62,27 @@
#define IF_NOT_FEATURE_BUFFERS_GO_IN_BSS(...) __VA_ARGS__
#define CONFIG_SHOW_USAGE 1
#define ENABLE_SHOW_USAGE 1
-#define IF_SHOW_USAGE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SHOW_USAGE(...) __VA_ARGS__ "CONFIG_SHOW_USAGE"
+#else
+# define IF_SHOW_USAGE(...) __VA_ARGS__
+#endif
#define IF_NOT_SHOW_USAGE(...)
#define CONFIG_FEATURE_VERBOSE_USAGE 1
#define ENABLE_FEATURE_VERBOSE_USAGE 1
-#define IF_FEATURE_VERBOSE_USAGE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_VERBOSE_USAGE(...) __VA_ARGS__ "CONFIG_FEATURE_VERBOSE_USAGE"
+#else
+# define IF_FEATURE_VERBOSE_USAGE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_VERBOSE_USAGE(...)
#define CONFIG_FEATURE_COMPRESS_USAGE 1
#define ENABLE_FEATURE_COMPRESS_USAGE 1
-#define IF_FEATURE_COMPRESS_USAGE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_COMPRESS_USAGE(...) __VA_ARGS__ "CONFIG_FEATURE_COMPRESS_USAGE"
+#else
+# define IF_FEATURE_COMPRESS_USAGE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_COMPRESS_USAGE(...)
#undef CONFIG_FEATURE_INSTALLER
#define ENABLE_FEATURE_INSTALLER 0
@@ -66,7 +90,11 @@
#define IF_NOT_FEATURE_INSTALLER(...) __VA_ARGS__
#define CONFIG_INSTALL_NO_USR 1
#define ENABLE_INSTALL_NO_USR 1
-#define IF_INSTALL_NO_USR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_INSTALL_NO_USR(...) __VA_ARGS__ "CONFIG_INSTALL_NO_USR"
+#else
+# define IF_INSTALL_NO_USR(...) __VA_ARGS__
+#endif
#define IF_NOT_INSTALL_NO_USR(...)
#undef CONFIG_LOCALE_SUPPORT
#define ENABLE_LOCALE_SUPPORT 0
@@ -74,7 +102,11 @@
#define IF_NOT_LOCALE_SUPPORT(...) __VA_ARGS__
#define CONFIG_UNICODE_SUPPORT 1
#define ENABLE_UNICODE_SUPPORT 1
-#define IF_UNICODE_SUPPORT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UNICODE_SUPPORT(...) __VA_ARGS__ "CONFIG_UNICODE_SUPPORT"
+#else
+# define IF_UNICODE_SUPPORT(...) __VA_ARGS__
+#endif
#define IF_NOT_UNICODE_SUPPORT(...)
#undef CONFIG_UNICODE_USING_LOCALE
#define ENABLE_UNICODE_USING_LOCALE 0
@@ -86,11 +118,19 @@
#define IF_NOT_FEATURE_CHECK_UNICODE_IN_ENV(...) __VA_ARGS__
#define CONFIG_SUBST_WCHAR 63
#define ENABLE_SUBST_WCHAR 1
-#define IF_SUBST_WCHAR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SUBST_WCHAR(...) __VA_ARGS__ "CONFIG_SUBST_WCHAR"
+#else
+# define IF_SUBST_WCHAR(...) __VA_ARGS__
+#endif
#define IF_NOT_SUBST_WCHAR(...)
#define CONFIG_LAST_SUPPORTED_WCHAR 0
#define ENABLE_LAST_SUPPORTED_WCHAR 1
-#define IF_LAST_SUPPORTED_WCHAR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LAST_SUPPORTED_WCHAR(...) __VA_ARGS__ "CONFIG_LAST_SUPPORTED_WCHAR"
+#else
+# define IF_LAST_SUPPORTED_WCHAR(...) __VA_ARGS__
+#endif
#define IF_NOT_LAST_SUPPORTED_WCHAR(...)
#undef CONFIG_UNICODE_COMBINING_WCHARS
#define ENABLE_UNICODE_COMBINING_WCHARS 0
@@ -98,7 +138,11 @@
#define IF_NOT_UNICODE_COMBINING_WCHARS(...) __VA_ARGS__
#define CONFIG_UNICODE_WIDE_WCHARS 1
#define ENABLE_UNICODE_WIDE_WCHARS 1
-#define IF_UNICODE_WIDE_WCHARS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UNICODE_WIDE_WCHARS(...) __VA_ARGS__ "CONFIG_UNICODE_WIDE_WCHARS"
+#else
+# define IF_UNICODE_WIDE_WCHARS(...) __VA_ARGS__
+#endif
#define IF_NOT_UNICODE_WIDE_WCHARS(...)
#undef CONFIG_UNICODE_BIDI_SUPPORT
#define ENABLE_UNICODE_BIDI_SUPPORT 0
@@ -110,15 +154,27 @@
#define IF_NOT_UNICODE_NEUTRAL_TABLE(...) __VA_ARGS__
#define CONFIG_UNICODE_PRESERVE_BROKEN 1
#define ENABLE_UNICODE_PRESERVE_BROKEN 1
-#define IF_UNICODE_PRESERVE_BROKEN(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UNICODE_PRESERVE_BROKEN(...) __VA_ARGS__ "CONFIG_UNICODE_PRESERVE_BROKEN"
+#else
+# define IF_UNICODE_PRESERVE_BROKEN(...) __VA_ARGS__
+#endif
#define IF_NOT_UNICODE_PRESERVE_BROKEN(...)
#define CONFIG_LONG_OPTS 1
#define ENABLE_LONG_OPTS 1
-#define IF_LONG_OPTS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LONG_OPTS(...) __VA_ARGS__ "CONFIG_LONG_OPTS"
+#else
+# define IF_LONG_OPTS(...) __VA_ARGS__
+#endif
#define IF_NOT_LONG_OPTS(...)
#define CONFIG_FEATURE_DEVPTS 1
#define ENABLE_FEATURE_DEVPTS 1
-#define IF_FEATURE_DEVPTS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_DEVPTS(...) __VA_ARGS__ "CONFIG_FEATURE_DEVPTS"
+#else
+# define IF_FEATURE_DEVPTS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_DEVPTS(...)
#undef CONFIG_FEATURE_CLEAN_UP
#define ENABLE_FEATURE_CLEAN_UP 0
@@ -138,11 +194,19 @@
#define IF_NOT_FEATURE_PIDFILE(...) __VA_ARGS__
#define CONFIG_PID_FILE_PATH ""
#define ENABLE_PID_FILE_PATH 1
-#define IF_PID_FILE_PATH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PID_FILE_PATH(...) __VA_ARGS__ "CONFIG_PID_FILE_PATH"
+#else
+# define IF_PID_FILE_PATH(...) __VA_ARGS__
+#endif
#define IF_NOT_PID_FILE_PATH(...)
#define CONFIG_FEATURE_SUID 1
#define ENABLE_FEATURE_SUID 1
-#define IF_FEATURE_SUID(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_SUID(...) __VA_ARGS__ "CONFIG_FEATURE_SUID"
+#else
+# define IF_FEATURE_SUID(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_SUID(...)
#undef CONFIG_FEATURE_SUID_CONFIG
#define ENABLE_FEATURE_SUID_CONFIG 0
@@ -162,15 +226,27 @@
#define IF_NOT_FEATURE_PREFER_APPLETS(...) __VA_ARGS__
#define CONFIG_BUSYBOX_EXEC_PATH "/proc/self/exe"
#define ENABLE_BUSYBOX_EXEC_PATH 1
-#define IF_BUSYBOX_EXEC_PATH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_BUSYBOX_EXEC_PATH(...) __VA_ARGS__ "CONFIG_BUSYBOX_EXEC_PATH"
+#else
+# define IF_BUSYBOX_EXEC_PATH(...) __VA_ARGS__
+#endif
#define IF_NOT_BUSYBOX_EXEC_PATH(...)
#define CONFIG_FEATURE_SYSLOG 1
#define ENABLE_FEATURE_SYSLOG 1
-#define IF_FEATURE_SYSLOG(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_SYSLOG(...) __VA_ARGS__ "CONFIG_FEATURE_SYSLOG"
+#else
+# define IF_FEATURE_SYSLOG(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_SYSLOG(...)
#define CONFIG_FEATURE_HAVE_RPC 1
#define ENABLE_FEATURE_HAVE_RPC 1
-#define IF_FEATURE_HAVE_RPC(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_HAVE_RPC(...) __VA_ARGS__ "CONFIG_FEATURE_HAVE_RPC"
+#else
+# define IF_FEATURE_HAVE_RPC(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_HAVE_RPC(...)
/*
@@ -206,23 +282,43 @@
#define IF_NOT_LFS(...) __VA_ARGS__
#define CONFIG_CROSS_COMPILER_PREFIX "arm-eabi-"
#define ENABLE_CROSS_COMPILER_PREFIX 1
-#define IF_CROSS_COMPILER_PREFIX(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CROSS_COMPILER_PREFIX(...) __VA_ARGS__ "CONFIG_CROSS_COMPILER_PREFIX"
+#else
+# define IF_CROSS_COMPILER_PREFIX(...) __VA_ARGS__
+#endif
#define IF_NOT_CROSS_COMPILER_PREFIX(...)
#define CONFIG_SYSROOT ""
#define ENABLE_SYSROOT 1
-#define IF_SYSROOT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SYSROOT(...) __VA_ARGS__ "CONFIG_SYSROOT"
+#else
+# define IF_SYSROOT(...) __VA_ARGS__
+#endif
#define IF_NOT_SYSROOT(...)
#define CONFIG_EXTRA_CFLAGS "-Os -fno-short-enums -fgcse-after-reload -frerun-cse-after-loop -frename-registers"
#define ENABLE_EXTRA_CFLAGS 1
-#define IF_EXTRA_CFLAGS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_EXTRA_CFLAGS(...) __VA_ARGS__ "CONFIG_EXTRA_CFLAGS"
+#else
+# define IF_EXTRA_CFLAGS(...) __VA_ARGS__
+#endif
#define IF_NOT_EXTRA_CFLAGS(...)
#define CONFIG_EXTRA_LDFLAGS ""
#define ENABLE_EXTRA_LDFLAGS 1
-#define IF_EXTRA_LDFLAGS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_EXTRA_LDFLAGS(...) __VA_ARGS__ "CONFIG_EXTRA_LDFLAGS"
+#else
+# define IF_EXTRA_LDFLAGS(...) __VA_ARGS__
+#endif
#define IF_NOT_EXTRA_LDFLAGS(...)
#define CONFIG_EXTRA_LDLIBS ""
#define ENABLE_EXTRA_LDLIBS 1
-#define IF_EXTRA_LDLIBS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_EXTRA_LDLIBS(...) __VA_ARGS__ "CONFIG_EXTRA_LDLIBS"
+#else
+# define IF_EXTRA_LDLIBS(...) __VA_ARGS__
+#endif
#define IF_NOT_EXTRA_LDLIBS(...)
/*
@@ -242,7 +338,11 @@
#define IF_NOT_WERROR(...) __VA_ARGS__
#define CONFIG_NO_DEBUG_LIB 1
#define ENABLE_NO_DEBUG_LIB 1
-#define IF_NO_DEBUG_LIB(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_NO_DEBUG_LIB(...) __VA_ARGS__ "CONFIG_NO_DEBUG_LIB"
+#else
+# define IF_NO_DEBUG_LIB(...) __VA_ARGS__
+#endif
#define IF_NOT_NO_DEBUG_LIB(...)
#undef CONFIG_DMALLOC
#define ENABLE_DMALLOC 0
@@ -258,7 +358,11 @@
*/
#define CONFIG_INSTALL_APPLET_SYMLINKS 1
#define ENABLE_INSTALL_APPLET_SYMLINKS 1
-#define IF_INSTALL_APPLET_SYMLINKS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_INSTALL_APPLET_SYMLINKS(...) __VA_ARGS__ "CONFIG_INSTALL_APPLET_SYMLINKS"
+#else
+# define IF_INSTALL_APPLET_SYMLINKS(...) __VA_ARGS__
+#endif
#define IF_NOT_INSTALL_APPLET_SYMLINKS(...)
#undef CONFIG_INSTALL_APPLET_HARDLINKS
#define ENABLE_INSTALL_APPLET_HARDLINKS 0
@@ -286,7 +390,11 @@
#define IF_NOT_INSTALL_SH_APPLET_SCRIPT_WRAPPER(...) __VA_ARGS__
#define CONFIG_PREFIX "./_install"
#define ENABLE_PREFIX 1
-#define IF_PREFIX(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PREFIX(...) __VA_ARGS__ "CONFIG_PREFIX"
+#else
+# define IF_PREFIX(...) __VA_ARGS__
+#endif
#define IF_NOT_PREFIX(...)
/*
@@ -298,23 +406,43 @@
#define IF_NOT_FEATURE_SYSTEMD(...) __VA_ARGS__
#define CONFIG_FEATURE_RTMINMAX 1
#define ENABLE_FEATURE_RTMINMAX 1
-#define IF_FEATURE_RTMINMAX(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_RTMINMAX(...) __VA_ARGS__ "CONFIG_FEATURE_RTMINMAX"
+#else
+# define IF_FEATURE_RTMINMAX(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_RTMINMAX(...)
#define CONFIG_PASSWORD_MINLEN 6
#define ENABLE_PASSWORD_MINLEN 1
-#define IF_PASSWORD_MINLEN(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PASSWORD_MINLEN(...) __VA_ARGS__ "CONFIG_PASSWORD_MINLEN"
+#else
+# define IF_PASSWORD_MINLEN(...) __VA_ARGS__
+#endif
#define IF_NOT_PASSWORD_MINLEN(...)
#define CONFIG_MD5_SMALL 1
#define ENABLE_MD5_SMALL 1
-#define IF_MD5_SMALL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MD5_SMALL(...) __VA_ARGS__ "CONFIG_MD5_SMALL"
+#else
+# define IF_MD5_SMALL(...) __VA_ARGS__
+#endif
#define IF_NOT_MD5_SMALL(...)
#define CONFIG_SHA3_SMALL 1
#define ENABLE_SHA3_SMALL 1
-#define IF_SHA3_SMALL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SHA3_SMALL(...) __VA_ARGS__ "CONFIG_SHA3_SMALL"
+#else
+# define IF_SHA3_SMALL(...) __VA_ARGS__
+#endif
#define IF_NOT_SHA3_SMALL(...)
#define CONFIG_FEATURE_FAST_TOP 1
#define ENABLE_FEATURE_FAST_TOP 1
-#define IF_FEATURE_FAST_TOP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FAST_TOP(...) __VA_ARGS__ "CONFIG_FEATURE_FAST_TOP"
+#else
+# define IF_FEATURE_FAST_TOP(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FAST_TOP(...)
#undef CONFIG_FEATURE_ETC_NETWORKS
#define ENABLE_FEATURE_ETC_NETWORKS 0
@@ -322,27 +450,51 @@
#define IF_NOT_FEATURE_ETC_NETWORKS(...) __VA_ARGS__
#define CONFIG_FEATURE_USE_TERMIOS 1
#define ENABLE_FEATURE_USE_TERMIOS 1
-#define IF_FEATURE_USE_TERMIOS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_USE_TERMIOS(...) __VA_ARGS__ "CONFIG_FEATURE_USE_TERMIOS"
+#else
+# define IF_FEATURE_USE_TERMIOS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_USE_TERMIOS(...)
#define CONFIG_FEATURE_EDITING 1
#define ENABLE_FEATURE_EDITING 1
-#define IF_FEATURE_EDITING(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_EDITING(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING"
+#else
+# define IF_FEATURE_EDITING(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_EDITING(...)
#define CONFIG_FEATURE_EDITING_MAX_LEN 1024
#define ENABLE_FEATURE_EDITING_MAX_LEN 1
-#define IF_FEATURE_EDITING_MAX_LEN(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_EDITING_MAX_LEN(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_MAX_LEN"
+#else
+# define IF_FEATURE_EDITING_MAX_LEN(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_EDITING_MAX_LEN(...)
#define CONFIG_FEATURE_EDITING_VI 1
#define ENABLE_FEATURE_EDITING_VI 1
-#define IF_FEATURE_EDITING_VI(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_EDITING_VI(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_VI"
+#else
+# define IF_FEATURE_EDITING_VI(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_EDITING_VI(...)
#define CONFIG_FEATURE_EDITING_HISTORY 256
#define ENABLE_FEATURE_EDITING_HISTORY 1
-#define IF_FEATURE_EDITING_HISTORY(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_EDITING_HISTORY(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_HISTORY"
+#else
+# define IF_FEATURE_EDITING_HISTORY(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_EDITING_HISTORY(...)
#define CONFIG_FEATURE_EDITING_SAVEHISTORY 1
#define ENABLE_FEATURE_EDITING_SAVEHISTORY 1
-#define IF_FEATURE_EDITING_SAVEHISTORY(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_EDITING_SAVEHISTORY(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_SAVEHISTORY"
+#else
+# define IF_FEATURE_EDITING_SAVEHISTORY(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_EDITING_SAVEHISTORY(...)
#undef CONFIG_FEATURE_EDITING_SAVE_ON_EXIT
#define ENABLE_FEATURE_EDITING_SAVE_ON_EXIT 0
@@ -350,11 +502,19 @@
#define IF_NOT_FEATURE_EDITING_SAVE_ON_EXIT(...) __VA_ARGS__
#define CONFIG_FEATURE_REVERSE_SEARCH 1
#define ENABLE_FEATURE_REVERSE_SEARCH 1
-#define IF_FEATURE_REVERSE_SEARCH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_REVERSE_SEARCH(...) __VA_ARGS__ "CONFIG_FEATURE_REVERSE_SEARCH"
+#else
+# define IF_FEATURE_REVERSE_SEARCH(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_REVERSE_SEARCH(...)
#define CONFIG_FEATURE_TAB_COMPLETION 1
#define ENABLE_FEATURE_TAB_COMPLETION 1
-#define IF_FEATURE_TAB_COMPLETION(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TAB_COMPLETION(...) __VA_ARGS__ "CONFIG_FEATURE_TAB_COMPLETION"
+#else
+# define IF_FEATURE_TAB_COMPLETION(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TAB_COMPLETION(...)
#undef CONFIG_FEATURE_USERNAME_COMPLETION
#define ENABLE_FEATURE_USERNAME_COMPLETION 0
@@ -362,15 +522,27 @@
#define IF_NOT_FEATURE_USERNAME_COMPLETION(...) __VA_ARGS__
#define CONFIG_FEATURE_EDITING_FANCY_PROMPT 1
#define ENABLE_FEATURE_EDITING_FANCY_PROMPT 1
-#define IF_FEATURE_EDITING_FANCY_PROMPT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_EDITING_FANCY_PROMPT(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_FANCY_PROMPT"
+#else
+# define IF_FEATURE_EDITING_FANCY_PROMPT(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_EDITING_FANCY_PROMPT(...)
#define CONFIG_FEATURE_EDITING_ASK_TERMINAL 1
#define ENABLE_FEATURE_EDITING_ASK_TERMINAL 1
-#define IF_FEATURE_EDITING_ASK_TERMINAL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_EDITING_ASK_TERMINAL(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_ASK_TERMINAL"
+#else
+# define IF_FEATURE_EDITING_ASK_TERMINAL(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_EDITING_ASK_TERMINAL(...)
#define CONFIG_FEATURE_NON_POSIX_CP 1
#define ENABLE_FEATURE_NON_POSIX_CP 1
-#define IF_FEATURE_NON_POSIX_CP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_NON_POSIX_CP(...) __VA_ARGS__ "CONFIG_FEATURE_NON_POSIX_CP"
+#else
+# define IF_FEATURE_NON_POSIX_CP(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_NON_POSIX_CP(...)
#undef CONFIG_FEATURE_VERBOSE_CP_MESSAGE
#define ENABLE_FEATURE_VERBOSE_CP_MESSAGE 0
@@ -378,19 +550,35 @@
#define IF_NOT_FEATURE_VERBOSE_CP_MESSAGE(...) __VA_ARGS__
#define CONFIG_FEATURE_COPYBUF_KB 4
#define ENABLE_FEATURE_COPYBUF_KB 1
-#define IF_FEATURE_COPYBUF_KB(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_COPYBUF_KB(...) __VA_ARGS__ "CONFIG_FEATURE_COPYBUF_KB"
+#else
+# define IF_FEATURE_COPYBUF_KB(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_COPYBUF_KB(...)
#define CONFIG_FEATURE_SKIP_ROOTFS 1
#define ENABLE_FEATURE_SKIP_ROOTFS 1
-#define IF_FEATURE_SKIP_ROOTFS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_SKIP_ROOTFS(...) __VA_ARGS__ "CONFIG_FEATURE_SKIP_ROOTFS"
+#else
+# define IF_FEATURE_SKIP_ROOTFS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_SKIP_ROOTFS(...)
#define CONFIG_MONOTONIC_SYSCALL 1
#define ENABLE_MONOTONIC_SYSCALL 1
-#define IF_MONOTONIC_SYSCALL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MONOTONIC_SYSCALL(...) __VA_ARGS__ "CONFIG_MONOTONIC_SYSCALL"
+#else
+# define IF_MONOTONIC_SYSCALL(...) __VA_ARGS__
+#endif
#define IF_NOT_MONOTONIC_SYSCALL(...)
#define CONFIG_IOCTL_HEX2STR_ERROR 1
#define ENABLE_IOCTL_HEX2STR_ERROR 1
-#define IF_IOCTL_HEX2STR_ERROR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_IOCTL_HEX2STR_ERROR(...) __VA_ARGS__ "CONFIG_IOCTL_HEX2STR_ERROR"
+#else
+# define IF_IOCTL_HEX2STR_ERROR(...) __VA_ARGS__
+#endif
#define IF_NOT_IOCTL_HEX2STR_ERROR(...)
#undef CONFIG_FEATURE_HWIB
#define ENABLE_FEATURE_HWIB 0
@@ -406,19 +594,35 @@
*/
#define CONFIG_FEATURE_SEAMLESS_XZ 1
#define ENABLE_FEATURE_SEAMLESS_XZ 1
-#define IF_FEATURE_SEAMLESS_XZ(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_SEAMLESS_XZ(...) __VA_ARGS__ "CONFIG_FEATURE_SEAMLESS_XZ"
+#else
+# define IF_FEATURE_SEAMLESS_XZ(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_SEAMLESS_XZ(...)
#define CONFIG_FEATURE_SEAMLESS_LZMA 1
#define ENABLE_FEATURE_SEAMLESS_LZMA 1
-#define IF_FEATURE_SEAMLESS_LZMA(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_SEAMLESS_LZMA(...) __VA_ARGS__ "CONFIG_FEATURE_SEAMLESS_LZMA"
+#else
+# define IF_FEATURE_SEAMLESS_LZMA(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_SEAMLESS_LZMA(...)
#define CONFIG_FEATURE_SEAMLESS_BZ2 1
#define ENABLE_FEATURE_SEAMLESS_BZ2 1
-#define IF_FEATURE_SEAMLESS_BZ2(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_SEAMLESS_BZ2(...) __VA_ARGS__ "CONFIG_FEATURE_SEAMLESS_BZ2"
+#else
+# define IF_FEATURE_SEAMLESS_BZ2(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_SEAMLESS_BZ2(...)
#define CONFIG_FEATURE_SEAMLESS_GZ 1
#define ENABLE_FEATURE_SEAMLESS_GZ 1
-#define IF_FEATURE_SEAMLESS_GZ(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_SEAMLESS_GZ(...) __VA_ARGS__ "CONFIG_FEATURE_SEAMLESS_GZ"
+#else
+# define IF_FEATURE_SEAMLESS_GZ(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_SEAMLESS_GZ(...)
#undef CONFIG_FEATURE_SEAMLESS_Z
#define ENABLE_FEATURE_SEAMLESS_Z 0
@@ -436,25 +640,101 @@
#define ENABLE_FEATURE_AR_CREATE 0
#define IF_FEATURE_AR_CREATE(...)
#define IF_NOT_FEATURE_AR_CREATE(...) __VA_ARGS__
+#define CONFIG_UNCOMPRESS 1
+#define ENABLE_UNCOMPRESS 1
+#ifdef MAKE_SUID
+# define IF_UNCOMPRESS(...) __VA_ARGS__ "CONFIG_UNCOMPRESS"
+#else
+# define IF_UNCOMPRESS(...) __VA_ARGS__
+#endif
+#define IF_NOT_UNCOMPRESS(...)
+#define CONFIG_GUNZIP 1
+#define ENABLE_GUNZIP 1
+#ifdef MAKE_SUID
+# define IF_GUNZIP(...) __VA_ARGS__ "CONFIG_GUNZIP"
+#else
+# define IF_GUNZIP(...) __VA_ARGS__
+#endif
+#define IF_NOT_GUNZIP(...)
#define CONFIG_BUNZIP2 1
#define ENABLE_BUNZIP2 1
-#define IF_BUNZIP2(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_BUNZIP2(...) __VA_ARGS__ "CONFIG_BUNZIP2"
+#else
+# define IF_BUNZIP2(...) __VA_ARGS__
+#endif
#define IF_NOT_BUNZIP2(...)
+#define CONFIG_UNLZMA 1
+#define ENABLE_UNLZMA 1
+#ifdef MAKE_SUID
+# define IF_UNLZMA(...) __VA_ARGS__ "CONFIG_UNLZMA"
+#else
+# define IF_UNLZMA(...) __VA_ARGS__
+#endif
+#define IF_NOT_UNLZMA(...)
+#define CONFIG_FEATURE_LZMA_FAST 1
+#define ENABLE_FEATURE_LZMA_FAST 1
+#ifdef MAKE_SUID
+# define IF_FEATURE_LZMA_FAST(...) __VA_ARGS__ "CONFIG_FEATURE_LZMA_FAST"
+#else
+# define IF_FEATURE_LZMA_FAST(...) __VA_ARGS__
+#endif
+#define IF_NOT_FEATURE_LZMA_FAST(...)
+#define CONFIG_LZMA 1
+#define ENABLE_LZMA 1
+#ifdef MAKE_SUID
+# define IF_LZMA(...) __VA_ARGS__ "CONFIG_LZMA"
+#else
+# define IF_LZMA(...) __VA_ARGS__
+#endif
+#define IF_NOT_LZMA(...)
+#define CONFIG_UNXZ 1
+#define ENABLE_UNXZ 1
+#ifdef MAKE_SUID
+# define IF_UNXZ(...) __VA_ARGS__ "CONFIG_UNXZ"
+#else
+# define IF_UNXZ(...) __VA_ARGS__
+#endif
+#define IF_NOT_UNXZ(...)
+#define CONFIG_XZ 1
+#define ENABLE_XZ 1
+#ifdef MAKE_SUID
+# define IF_XZ(...) __VA_ARGS__ "CONFIG_XZ"
+#else
+# define IF_XZ(...) __VA_ARGS__
+#endif
+#define IF_NOT_XZ(...)
#define CONFIG_BZIP2 1
#define ENABLE_BZIP2 1
-#define IF_BZIP2(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_BZIP2(...) __VA_ARGS__ "CONFIG_BZIP2"
+#else
+# define IF_BZIP2(...) __VA_ARGS__
+#endif
#define IF_NOT_BZIP2(...)
#define CONFIG_CPIO 1
#define ENABLE_CPIO 1
-#define IF_CPIO(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CPIO(...) __VA_ARGS__ "CONFIG_CPIO"
+#else
+# define IF_CPIO(...) __VA_ARGS__
+#endif
#define IF_NOT_CPIO(...)
#define CONFIG_FEATURE_CPIO_O 1
#define ENABLE_FEATURE_CPIO_O 1
-#define IF_FEATURE_CPIO_O(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_CPIO_O(...) __VA_ARGS__ "CONFIG_FEATURE_CPIO_O"
+#else
+# define IF_FEATURE_CPIO_O(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_CPIO_O(...)
#define CONFIG_FEATURE_CPIO_P 1
#define ENABLE_FEATURE_CPIO_P 1
-#define IF_FEATURE_CPIO_P(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_CPIO_P(...) __VA_ARGS__ "CONFIG_FEATURE_CPIO_P"
+#else
+# define IF_FEATURE_CPIO_P(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_CPIO_P(...)
#undef CONFIG_DPKG
#define ENABLE_DPKG 0
@@ -468,25 +748,37 @@
#define ENABLE_FEATURE_DPKG_DEB_EXTRACT_ONLY 0
#define IF_FEATURE_DPKG_DEB_EXTRACT_ONLY(...)
#define IF_NOT_FEATURE_DPKG_DEB_EXTRACT_ONLY(...) __VA_ARGS__
-#define CONFIG_GUNZIP 1
-#define ENABLE_GUNZIP 1
-#define IF_GUNZIP(...) __VA_ARGS__
-#define IF_NOT_GUNZIP(...)
#define CONFIG_GZIP 1
#define ENABLE_GZIP 1
-#define IF_GZIP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_GZIP(...) __VA_ARGS__ "CONFIG_GZIP"
+#else
+# define IF_GZIP(...) __VA_ARGS__
+#endif
#define IF_NOT_GZIP(...)
#define CONFIG_FEATURE_GZIP_LONG_OPTIONS 1
#define ENABLE_FEATURE_GZIP_LONG_OPTIONS 1
-#define IF_FEATURE_GZIP_LONG_OPTIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_GZIP_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_GZIP_LONG_OPTIONS"
+#else
+# define IF_FEATURE_GZIP_LONG_OPTIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_GZIP_LONG_OPTIONS(...)
#define CONFIG_GZIP_FAST 2
#define ENABLE_GZIP_FAST 1
-#define IF_GZIP_FAST(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_GZIP_FAST(...) __VA_ARGS__ "CONFIG_GZIP_FAST"
+#else
+# define IF_GZIP_FAST(...) __VA_ARGS__
+#endif
#define IF_NOT_GZIP_FAST(...)
#define CONFIG_LZOP 1
#define ENABLE_LZOP 1
-#define IF_LZOP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LZOP(...) __VA_ARGS__ "CONFIG_LZOP"
+#else
+# define IF_LZOP(...) __VA_ARGS__
+#endif
#define IF_NOT_LZOP(...)
#undef CONFIG_LZOP_COMPR_HIGH
#define ENABLE_LZOP_COMPR_HIGH 0
@@ -502,19 +794,35 @@
#define IF_NOT_RPM(...) __VA_ARGS__
#define CONFIG_TAR 1
#define ENABLE_TAR 1
-#define IF_TAR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TAR(...) __VA_ARGS__ "CONFIG_TAR"
+#else
+# define IF_TAR(...) __VA_ARGS__
+#endif
#define IF_NOT_TAR(...)
#define CONFIG_FEATURE_TAR_CREATE 1
#define ENABLE_FEATURE_TAR_CREATE 1
-#define IF_FEATURE_TAR_CREATE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TAR_CREATE(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_CREATE"
+#else
+# define IF_FEATURE_TAR_CREATE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TAR_CREATE(...)
#define CONFIG_FEATURE_TAR_AUTODETECT 1
#define ENABLE_FEATURE_TAR_AUTODETECT 1
-#define IF_FEATURE_TAR_AUTODETECT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TAR_AUTODETECT(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_AUTODETECT"
+#else
+# define IF_FEATURE_TAR_AUTODETECT(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TAR_AUTODETECT(...)
#define CONFIG_FEATURE_TAR_FROM 1
#define ENABLE_FEATURE_TAR_FROM 1
-#define IF_FEATURE_TAR_FROM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TAR_FROM(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_FROM"
+#else
+# define IF_FEATURE_TAR_FROM(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TAR_FROM(...)
#undef CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY
#define ENABLE_FEATURE_TAR_OLDGNU_COMPATIBILITY 0
@@ -526,55 +834,55 @@
#define IF_NOT_FEATURE_TAR_OLDSUN_COMPATIBILITY(...) __VA_ARGS__
#define CONFIG_FEATURE_TAR_GNU_EXTENSIONS 1
#define ENABLE_FEATURE_TAR_GNU_EXTENSIONS 1
-#define IF_FEATURE_TAR_GNU_EXTENSIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TAR_GNU_EXTENSIONS(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_GNU_EXTENSIONS"
+#else
+# define IF_FEATURE_TAR_GNU_EXTENSIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TAR_GNU_EXTENSIONS(...)
#define CONFIG_FEATURE_TAR_LONG_OPTIONS 1
#define ENABLE_FEATURE_TAR_LONG_OPTIONS 1
-#define IF_FEATURE_TAR_LONG_OPTIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TAR_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_LONG_OPTIONS"
+#else
+# define IF_FEATURE_TAR_LONG_OPTIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TAR_LONG_OPTIONS(...)
#define CONFIG_FEATURE_TAR_TO_COMMAND 1
#define ENABLE_FEATURE_TAR_TO_COMMAND 1
-#define IF_FEATURE_TAR_TO_COMMAND(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TAR_TO_COMMAND(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_TO_COMMAND"
+#else
+# define IF_FEATURE_TAR_TO_COMMAND(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TAR_TO_COMMAND(...)
#define CONFIG_FEATURE_TAR_UNAME_GNAME 1
#define ENABLE_FEATURE_TAR_UNAME_GNAME 1
-#define IF_FEATURE_TAR_UNAME_GNAME(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TAR_UNAME_GNAME(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_UNAME_GNAME"
+#else
+# define IF_FEATURE_TAR_UNAME_GNAME(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TAR_UNAME_GNAME(...)
#define CONFIG_FEATURE_TAR_NOPRESERVE_TIME 1
#define ENABLE_FEATURE_TAR_NOPRESERVE_TIME 1
-#define IF_FEATURE_TAR_NOPRESERVE_TIME(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TAR_NOPRESERVE_TIME(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_NOPRESERVE_TIME"
+#else
+# define IF_FEATURE_TAR_NOPRESERVE_TIME(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TAR_NOPRESERVE_TIME(...)
#undef CONFIG_FEATURE_TAR_SELINUX
#define ENABLE_FEATURE_TAR_SELINUX 0
#define IF_FEATURE_TAR_SELINUX(...)
#define IF_NOT_FEATURE_TAR_SELINUX(...) __VA_ARGS__
-#define CONFIG_UNCOMPRESS 1
-#define ENABLE_UNCOMPRESS 1
-#define IF_UNCOMPRESS(...) __VA_ARGS__
-#define IF_NOT_UNCOMPRESS(...)
-#define CONFIG_UNLZMA 1
-#define ENABLE_UNLZMA 1
-#define IF_UNLZMA(...) __VA_ARGS__
-#define IF_NOT_UNLZMA(...)
-#define CONFIG_FEATURE_LZMA_FAST 1
-#define ENABLE_FEATURE_LZMA_FAST 1
-#define IF_FEATURE_LZMA_FAST(...) __VA_ARGS__
-#define IF_NOT_FEATURE_LZMA_FAST(...)
-#define CONFIG_LZMA 1
-#define ENABLE_LZMA 1
-#define IF_LZMA(...) __VA_ARGS__
-#define IF_NOT_LZMA(...)
-#define CONFIG_UNXZ 1
-#define ENABLE_UNXZ 1
-#define IF_UNXZ(...) __VA_ARGS__
-#define IF_NOT_UNXZ(...)
-#define CONFIG_XZ 1
-#define ENABLE_XZ 1
-#define IF_XZ(...) __VA_ARGS__
-#define IF_NOT_XZ(...)
#define CONFIG_UNZIP 1
#define ENABLE_UNZIP 1
-#define IF_UNZIP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UNZIP(...) __VA_ARGS__ "CONFIG_UNZIP"
+#else
+# define IF_UNZIP(...) __VA_ARGS__
+#endif
#define IF_NOT_UNZIP(...)
/*
@@ -582,19 +890,35 @@
*/
#define CONFIG_BASENAME 1
#define ENABLE_BASENAME 1
-#define IF_BASENAME(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_BASENAME(...) __VA_ARGS__ "CONFIG_BASENAME"
+#else
+# define IF_BASENAME(...) __VA_ARGS__
+#endif
#define IF_NOT_BASENAME(...)
#define CONFIG_CAT 1
#define ENABLE_CAT 1
-#define IF_CAT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CAT(...) __VA_ARGS__ "CONFIG_CAT"
+#else
+# define IF_CAT(...) __VA_ARGS__
+#endif
#define IF_NOT_CAT(...)
#define CONFIG_DATE 1
#define ENABLE_DATE 1
-#define IF_DATE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DATE(...) __VA_ARGS__ "CONFIG_DATE"
+#else
+# define IF_DATE(...) __VA_ARGS__
+#endif
#define IF_NOT_DATE(...)
#define CONFIG_FEATURE_DATE_ISOFMT 1
#define ENABLE_FEATURE_DATE_ISOFMT 1
-#define IF_FEATURE_DATE_ISOFMT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_DATE_ISOFMT(...) __VA_ARGS__ "CONFIG_FEATURE_DATE_ISOFMT"
+#else
+# define IF_FEATURE_DATE_ISOFMT(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_DATE_ISOFMT(...)
#undef CONFIG_FEATURE_DATE_NANO
#define ENABLE_FEATURE_DATE_NANO 0
@@ -602,7 +926,11 @@
#define IF_NOT_FEATURE_DATE_NANO(...) __VA_ARGS__
#define CONFIG_FEATURE_DATE_COMPAT 1
#define ENABLE_FEATURE_DATE_COMPAT 1
-#define IF_FEATURE_DATE_COMPAT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_DATE_COMPAT(...) __VA_ARGS__ "CONFIG_FEATURE_DATE_COMPAT"
+#else
+# define IF_FEATURE_DATE_COMPAT(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_DATE_COMPAT(...)
#undef CONFIG_HOSTID
#define ENABLE_HOSTID 0
@@ -610,15 +938,27 @@
#define IF_NOT_HOSTID(...) __VA_ARGS__
#define CONFIG_ID 1
#define ENABLE_ID 1
-#define IF_ID(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ID(...) __VA_ARGS__ "CONFIG_ID"
+#else
+# define IF_ID(...) __VA_ARGS__
+#endif
#define IF_NOT_ID(...)
#define CONFIG_GROUPS 1
#define ENABLE_GROUPS 1
-#define IF_GROUPS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_GROUPS(...) __VA_ARGS__ "CONFIG_GROUPS"
+#else
+# define IF_GROUPS(...) __VA_ARGS__
+#endif
#define IF_NOT_GROUPS(...)
#define CONFIG_TEST 1
#define ENABLE_TEST 1
-#define IF_TEST(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TEST(...) __VA_ARGS__ "CONFIG_TEST"
+#else
+# define IF_TEST(...) __VA_ARGS__
+#endif
#define IF_NOT_TEST(...)
#undef CONFIG_FEATURE_TEST_64
#define ENABLE_FEATURE_TEST_64 0
@@ -626,19 +966,39 @@
#define IF_NOT_FEATURE_TEST_64(...) __VA_ARGS__
#define CONFIG_TOUCH 1
#define ENABLE_TOUCH 1
-#define IF_TOUCH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TOUCH(...) __VA_ARGS__ "CONFIG_TOUCH"
+#else
+# define IF_TOUCH(...) __VA_ARGS__
+#endif
#define IF_NOT_TOUCH(...)
+#undef CONFIG_FEATURE_TOUCH_NODEREF
+#define ENABLE_FEATURE_TOUCH_NODEREF 0
+#define IF_FEATURE_TOUCH_NODEREF(...)
+#define IF_NOT_FEATURE_TOUCH_NODEREF(...) __VA_ARGS__
#define CONFIG_FEATURE_TOUCH_SUSV3 1
#define ENABLE_FEATURE_TOUCH_SUSV3 1
-#define IF_FEATURE_TOUCH_SUSV3(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TOUCH_SUSV3(...) __VA_ARGS__ "CONFIG_FEATURE_TOUCH_SUSV3"
+#else
+# define IF_FEATURE_TOUCH_SUSV3(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TOUCH_SUSV3(...)
#define CONFIG_TR 1
#define ENABLE_TR 1
-#define IF_TR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TR(...) __VA_ARGS__ "CONFIG_TR"
+#else
+# define IF_TR(...) __VA_ARGS__
+#endif
#define IF_NOT_TR(...)
#define CONFIG_FEATURE_TR_CLASSES 1
#define ENABLE_FEATURE_TR_CLASSES 1
-#define IF_FEATURE_TR_CLASSES(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TR_CLASSES(...) __VA_ARGS__ "CONFIG_FEATURE_TR_CLASSES"
+#else
+# define IF_FEATURE_TR_CLASSES(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TR_CLASSES(...)
#undef CONFIG_FEATURE_TR_EQUIV
#define ENABLE_FEATURE_TR_EQUIV 0
@@ -646,7 +1006,11 @@
#define IF_NOT_FEATURE_TR_EQUIV(...) __VA_ARGS__
#define CONFIG_BASE64 1
#define ENABLE_BASE64 1
-#define IF_BASE64(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_BASE64(...) __VA_ARGS__ "CONFIG_BASE64"
+#else
+# define IF_BASE64(...) __VA_ARGS__
+#endif
#define IF_NOT_BASE64(...)
#undef CONFIG_WHO
#define ENABLE_WHO 0
@@ -658,31 +1022,59 @@
#define IF_NOT_USERS(...) __VA_ARGS__
#define CONFIG_CAL 1
#define ENABLE_CAL 1
-#define IF_CAL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CAL(...) __VA_ARGS__ "CONFIG_CAL"
+#else
+# define IF_CAL(...) __VA_ARGS__
+#endif
#define IF_NOT_CAL(...)
#define CONFIG_CATV 1
#define ENABLE_CATV 1
-#define IF_CATV(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CATV(...) __VA_ARGS__ "CONFIG_CATV"
+#else
+# define IF_CATV(...) __VA_ARGS__
+#endif
#define IF_NOT_CATV(...)
#define CONFIG_CHGRP 1
#define ENABLE_CHGRP 1
-#define IF_CHGRP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CHGRP(...) __VA_ARGS__ "CONFIG_CHGRP"
+#else
+# define IF_CHGRP(...) __VA_ARGS__
+#endif
#define IF_NOT_CHGRP(...)
#define CONFIG_CHMOD 1
#define ENABLE_CHMOD 1
-#define IF_CHMOD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CHMOD(...) __VA_ARGS__ "CONFIG_CHMOD"
+#else
+# define IF_CHMOD(...) __VA_ARGS__
+#endif
#define IF_NOT_CHMOD(...)
#define CONFIG_CHOWN 1
#define ENABLE_CHOWN 1
-#define IF_CHOWN(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CHOWN(...) __VA_ARGS__ "CONFIG_CHOWN"
+#else
+# define IF_CHOWN(...) __VA_ARGS__
+#endif
#define IF_NOT_CHOWN(...)
#define CONFIG_FEATURE_CHOWN_LONG_OPTIONS 1
#define ENABLE_FEATURE_CHOWN_LONG_OPTIONS 1
-#define IF_FEATURE_CHOWN_LONG_OPTIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_CHOWN_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_CHOWN_LONG_OPTIONS"
+#else
+# define IF_FEATURE_CHOWN_LONG_OPTIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_CHOWN_LONG_OPTIONS(...)
#define CONFIG_CHROOT 1
#define ENABLE_CHROOT 1
-#define IF_CHROOT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CHROOT(...) __VA_ARGS__ "CONFIG_CHROOT"
+#else
+# define IF_CHROOT(...) __VA_ARGS__
+#endif
#define IF_NOT_CHROOT(...)
#undef CONFIG_CKSUM
#define ENABLE_CKSUM 0
@@ -690,127 +1082,251 @@
#define IF_NOT_CKSUM(...) __VA_ARGS__
#define CONFIG_COMM 1
#define ENABLE_COMM 1
-#define IF_COMM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_COMM(...) __VA_ARGS__ "CONFIG_COMM"
+#else
+# define IF_COMM(...) __VA_ARGS__
+#endif
#define IF_NOT_COMM(...)
#define CONFIG_CP 1
#define ENABLE_CP 1
-#define IF_CP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CP(...) __VA_ARGS__ "CONFIG_CP"
+#else
+# define IF_CP(...) __VA_ARGS__
+#endif
#define IF_NOT_CP(...)
#define CONFIG_FEATURE_CP_LONG_OPTIONS 1
#define ENABLE_FEATURE_CP_LONG_OPTIONS 1
-#define IF_FEATURE_CP_LONG_OPTIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_CP_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_CP_LONG_OPTIONS"
+#else
+# define IF_FEATURE_CP_LONG_OPTIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_CP_LONG_OPTIONS(...)
#define CONFIG_CUT 1
#define ENABLE_CUT 1
-#define IF_CUT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CUT(...) __VA_ARGS__ "CONFIG_CUT"
+#else
+# define IF_CUT(...) __VA_ARGS__
+#endif
#define IF_NOT_CUT(...)
#define CONFIG_DD 1
#define ENABLE_DD 1
-#define IF_DD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DD(...) __VA_ARGS__ "CONFIG_DD"
+#else
+# define IF_DD(...) __VA_ARGS__
+#endif
#define IF_NOT_DD(...)
#define CONFIG_FEATURE_DD_SIGNAL_HANDLING 1
#define ENABLE_FEATURE_DD_SIGNAL_HANDLING 1
-#define IF_FEATURE_DD_SIGNAL_HANDLING(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_DD_SIGNAL_HANDLING(...) __VA_ARGS__ "CONFIG_FEATURE_DD_SIGNAL_HANDLING"
+#else
+# define IF_FEATURE_DD_SIGNAL_HANDLING(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_DD_SIGNAL_HANDLING(...)
#define CONFIG_FEATURE_DD_THIRD_STATUS_LINE 1
#define ENABLE_FEATURE_DD_THIRD_STATUS_LINE 1
-#define IF_FEATURE_DD_THIRD_STATUS_LINE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_DD_THIRD_STATUS_LINE(...) __VA_ARGS__ "CONFIG_FEATURE_DD_THIRD_STATUS_LINE"
+#else
+# define IF_FEATURE_DD_THIRD_STATUS_LINE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_DD_THIRD_STATUS_LINE(...)
#define CONFIG_FEATURE_DD_IBS_OBS 1
#define ENABLE_FEATURE_DD_IBS_OBS 1
-#define IF_FEATURE_DD_IBS_OBS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_DD_IBS_OBS(...) __VA_ARGS__ "CONFIG_FEATURE_DD_IBS_OBS"
+#else
+# define IF_FEATURE_DD_IBS_OBS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_DD_IBS_OBS(...)
#define CONFIG_DF 1
#define ENABLE_DF 1
-#define IF_DF(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DF(...) __VA_ARGS__ "CONFIG_DF"
+#else
+# define IF_DF(...) __VA_ARGS__
+#endif
#define IF_NOT_DF(...)
#define CONFIG_FEATURE_DF_FANCY 1
#define ENABLE_FEATURE_DF_FANCY 1
-#define IF_FEATURE_DF_FANCY(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_DF_FANCY(...) __VA_ARGS__ "CONFIG_FEATURE_DF_FANCY"
+#else
+# define IF_FEATURE_DF_FANCY(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_DF_FANCY(...)
#define CONFIG_DIRNAME 1
#define ENABLE_DIRNAME 1
-#define IF_DIRNAME(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DIRNAME(...) __VA_ARGS__ "CONFIG_DIRNAME"
+#else
+# define IF_DIRNAME(...) __VA_ARGS__
+#endif
#define IF_NOT_DIRNAME(...)
#define CONFIG_DOS2UNIX 1
#define ENABLE_DOS2UNIX 1
-#define IF_DOS2UNIX(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DOS2UNIX(...) __VA_ARGS__ "CONFIG_DOS2UNIX"
+#else
+# define IF_DOS2UNIX(...) __VA_ARGS__
+#endif
#define IF_NOT_DOS2UNIX(...)
#define CONFIG_UNIX2DOS 1
#define ENABLE_UNIX2DOS 1
-#define IF_UNIX2DOS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UNIX2DOS(...) __VA_ARGS__ "CONFIG_UNIX2DOS"
+#else
+# define IF_UNIX2DOS(...) __VA_ARGS__
+#endif
#define IF_NOT_UNIX2DOS(...)
#define CONFIG_DU 1
#define ENABLE_DU 1
-#define IF_DU(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DU(...) __VA_ARGS__ "CONFIG_DU"
+#else
+# define IF_DU(...) __VA_ARGS__
+#endif
#define IF_NOT_DU(...)
#define CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K 1
#define ENABLE_FEATURE_DU_DEFAULT_BLOCKSIZE_1K 1
-#define IF_FEATURE_DU_DEFAULT_BLOCKSIZE_1K(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_DU_DEFAULT_BLOCKSIZE_1K(...) __VA_ARGS__ "CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K"
+#else
+# define IF_FEATURE_DU_DEFAULT_BLOCKSIZE_1K(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_DU_DEFAULT_BLOCKSIZE_1K(...)
#define CONFIG_ECHO 1
#define ENABLE_ECHO 1
-#define IF_ECHO(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ECHO(...) __VA_ARGS__ "CONFIG_ECHO"
+#else
+# define IF_ECHO(...) __VA_ARGS__
+#endif
#define IF_NOT_ECHO(...)
#define CONFIG_FEATURE_FANCY_ECHO 1
#define ENABLE_FEATURE_FANCY_ECHO 1
-#define IF_FEATURE_FANCY_ECHO(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FANCY_ECHO(...) __VA_ARGS__ "CONFIG_FEATURE_FANCY_ECHO"
+#else
+# define IF_FEATURE_FANCY_ECHO(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FANCY_ECHO(...)
#define CONFIG_ENV 1
#define ENABLE_ENV 1
-#define IF_ENV(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ENV(...) __VA_ARGS__ "CONFIG_ENV"
+#else
+# define IF_ENV(...) __VA_ARGS__
+#endif
#define IF_NOT_ENV(...)
#define CONFIG_FEATURE_ENV_LONG_OPTIONS 1
#define ENABLE_FEATURE_ENV_LONG_OPTIONS 1
-#define IF_FEATURE_ENV_LONG_OPTIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_ENV_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_ENV_LONG_OPTIONS"
+#else
+# define IF_FEATURE_ENV_LONG_OPTIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_ENV_LONG_OPTIONS(...)
#define CONFIG_EXPAND 1
#define ENABLE_EXPAND 1
-#define IF_EXPAND(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_EXPAND(...) __VA_ARGS__ "CONFIG_EXPAND"
+#else
+# define IF_EXPAND(...) __VA_ARGS__
+#endif
#define IF_NOT_EXPAND(...)
#define CONFIG_FEATURE_EXPAND_LONG_OPTIONS 1
#define ENABLE_FEATURE_EXPAND_LONG_OPTIONS 1
-#define IF_FEATURE_EXPAND_LONG_OPTIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_EXPAND_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_EXPAND_LONG_OPTIONS"
+#else
+# define IF_FEATURE_EXPAND_LONG_OPTIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_EXPAND_LONG_OPTIONS(...)
#define CONFIG_EXPR 1
#define ENABLE_EXPR 1
-#define IF_EXPR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_EXPR(...) __VA_ARGS__ "CONFIG_EXPR"
+#else
+# define IF_EXPR(...) __VA_ARGS__
+#endif
#define IF_NOT_EXPR(...)
#define CONFIG_EXPR_MATH_SUPPORT_64 1
#define ENABLE_EXPR_MATH_SUPPORT_64 1
-#define IF_EXPR_MATH_SUPPORT_64(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_EXPR_MATH_SUPPORT_64(...) __VA_ARGS__ "CONFIG_EXPR_MATH_SUPPORT_64"
+#else
+# define IF_EXPR_MATH_SUPPORT_64(...) __VA_ARGS__
+#endif
#define IF_NOT_EXPR_MATH_SUPPORT_64(...)
#define CONFIG_FALSE 1
#define ENABLE_FALSE 1
-#define IF_FALSE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FALSE(...) __VA_ARGS__ "CONFIG_FALSE"
+#else
+# define IF_FALSE(...) __VA_ARGS__
+#endif
#define IF_NOT_FALSE(...)
#define CONFIG_FOLD 1
#define ENABLE_FOLD 1
-#define IF_FOLD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FOLD(...) __VA_ARGS__ "CONFIG_FOLD"
+#else
+# define IF_FOLD(...) __VA_ARGS__
+#endif
#define IF_NOT_FOLD(...)
#define CONFIG_FSYNC 1
#define ENABLE_FSYNC 1
-#define IF_FSYNC(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FSYNC(...) __VA_ARGS__ "CONFIG_FSYNC"
+#else
+# define IF_FSYNC(...) __VA_ARGS__
+#endif
#define IF_NOT_FSYNC(...)
#define CONFIG_HEAD 1
#define ENABLE_HEAD 1
-#define IF_HEAD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_HEAD(...) __VA_ARGS__ "CONFIG_HEAD"
+#else
+# define IF_HEAD(...) __VA_ARGS__
+#endif
#define IF_NOT_HEAD(...)
#define CONFIG_FEATURE_FANCY_HEAD 1
#define ENABLE_FEATURE_FANCY_HEAD 1
-#define IF_FEATURE_FANCY_HEAD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FANCY_HEAD(...) __VA_ARGS__ "CONFIG_FEATURE_FANCY_HEAD"
+#else
+# define IF_FEATURE_FANCY_HEAD(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FANCY_HEAD(...)
#define CONFIG_INSTALL 1
#define ENABLE_INSTALL 1
-#define IF_INSTALL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_INSTALL(...) __VA_ARGS__ "CONFIG_INSTALL"
+#else
+# define IF_INSTALL(...) __VA_ARGS__
+#endif
#define IF_NOT_INSTALL(...)
#define CONFIG_FEATURE_INSTALL_LONG_OPTIONS 1
#define ENABLE_FEATURE_INSTALL_LONG_OPTIONS 1
-#define IF_FEATURE_INSTALL_LONG_OPTIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_INSTALL_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_INSTALL_LONG_OPTIONS"
+#else
+# define IF_FEATURE_INSTALL_LONG_OPTIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_INSTALL_LONG_OPTIONS(...)
#define CONFIG_LN 1
#define ENABLE_LN 1
-#define IF_LN(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LN(...) __VA_ARGS__ "CONFIG_LN"
+#else
+# define IF_LN(...) __VA_ARGS__
+#endif
#define IF_NOT_LN(...)
#undef CONFIG_LOGNAME
#define ENABLE_LOGNAME 0
@@ -818,35 +1334,67 @@
#define IF_NOT_LOGNAME(...) __VA_ARGS__
#define CONFIG_LS 1
#define ENABLE_LS 1
-#define IF_LS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LS(...) __VA_ARGS__ "CONFIG_LS"
+#else
+# define IF_LS(...) __VA_ARGS__
+#endif
#define IF_NOT_LS(...)
#define CONFIG_FEATURE_LS_FILETYPES 1
#define ENABLE_FEATURE_LS_FILETYPES 1
-#define IF_FEATURE_LS_FILETYPES(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LS_FILETYPES(...) __VA_ARGS__ "CONFIG_FEATURE_LS_FILETYPES"
+#else
+# define IF_FEATURE_LS_FILETYPES(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LS_FILETYPES(...)
#define CONFIG_FEATURE_LS_FOLLOWLINKS 1
#define ENABLE_FEATURE_LS_FOLLOWLINKS 1
-#define IF_FEATURE_LS_FOLLOWLINKS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LS_FOLLOWLINKS(...) __VA_ARGS__ "CONFIG_FEATURE_LS_FOLLOWLINKS"
+#else
+# define IF_FEATURE_LS_FOLLOWLINKS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LS_FOLLOWLINKS(...)
#define CONFIG_FEATURE_LS_RECURSIVE 1
#define ENABLE_FEATURE_LS_RECURSIVE 1
-#define IF_FEATURE_LS_RECURSIVE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LS_RECURSIVE(...) __VA_ARGS__ "CONFIG_FEATURE_LS_RECURSIVE"
+#else
+# define IF_FEATURE_LS_RECURSIVE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LS_RECURSIVE(...)
#define CONFIG_FEATURE_LS_SORTFILES 1
#define ENABLE_FEATURE_LS_SORTFILES 1
-#define IF_FEATURE_LS_SORTFILES(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LS_SORTFILES(...) __VA_ARGS__ "CONFIG_FEATURE_LS_SORTFILES"
+#else
+# define IF_FEATURE_LS_SORTFILES(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LS_SORTFILES(...)
#define CONFIG_FEATURE_LS_TIMESTAMPS 1
#define ENABLE_FEATURE_LS_TIMESTAMPS 1
-#define IF_FEATURE_LS_TIMESTAMPS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LS_TIMESTAMPS(...) __VA_ARGS__ "CONFIG_FEATURE_LS_TIMESTAMPS"
+#else
+# define IF_FEATURE_LS_TIMESTAMPS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LS_TIMESTAMPS(...)
#define CONFIG_FEATURE_LS_USERNAME 1
#define ENABLE_FEATURE_LS_USERNAME 1
-#define IF_FEATURE_LS_USERNAME(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LS_USERNAME(...) __VA_ARGS__ "CONFIG_FEATURE_LS_USERNAME"
+#else
+# define IF_FEATURE_LS_USERNAME(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LS_USERNAME(...)
#define CONFIG_FEATURE_LS_COLOR 1
#define ENABLE_FEATURE_LS_COLOR 1
-#define IF_FEATURE_LS_COLOR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LS_COLOR(...) __VA_ARGS__ "CONFIG_FEATURE_LS_COLOR"
+#else
+# define IF_FEATURE_LS_COLOR(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LS_COLOR(...)
#undef CONFIG_FEATURE_LS_COLOR_IS_DEFAULT
#define ENABLE_FEATURE_LS_COLOR_IS_DEFAULT 0
@@ -854,131 +1402,259 @@
#define IF_NOT_FEATURE_LS_COLOR_IS_DEFAULT(...) __VA_ARGS__
#define CONFIG_MD5SUM 1
#define ENABLE_MD5SUM 1
-#define IF_MD5SUM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MD5SUM(...) __VA_ARGS__ "CONFIG_MD5SUM"
+#else
+# define IF_MD5SUM(...) __VA_ARGS__
+#endif
#define IF_NOT_MD5SUM(...)
#define CONFIG_MKDIR 1
#define ENABLE_MKDIR 1
-#define IF_MKDIR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MKDIR(...) __VA_ARGS__ "CONFIG_MKDIR"
+#else
+# define IF_MKDIR(...) __VA_ARGS__
+#endif
#define IF_NOT_MKDIR(...)
#define CONFIG_FEATURE_MKDIR_LONG_OPTIONS 1
#define ENABLE_FEATURE_MKDIR_LONG_OPTIONS 1
-#define IF_FEATURE_MKDIR_LONG_OPTIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MKDIR_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_MKDIR_LONG_OPTIONS"
+#else
+# define IF_FEATURE_MKDIR_LONG_OPTIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MKDIR_LONG_OPTIONS(...)
#define CONFIG_MKFIFO 1
#define ENABLE_MKFIFO 1
-#define IF_MKFIFO(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MKFIFO(...) __VA_ARGS__ "CONFIG_MKFIFO"
+#else
+# define IF_MKFIFO(...) __VA_ARGS__
+#endif
#define IF_NOT_MKFIFO(...)
#define CONFIG_MKNOD 1
#define ENABLE_MKNOD 1
-#define IF_MKNOD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MKNOD(...) __VA_ARGS__ "CONFIG_MKNOD"
+#else
+# define IF_MKNOD(...) __VA_ARGS__
+#endif
#define IF_NOT_MKNOD(...)
#define CONFIG_MV 1
#define ENABLE_MV 1
-#define IF_MV(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MV(...) __VA_ARGS__ "CONFIG_MV"
+#else
+# define IF_MV(...) __VA_ARGS__
+#endif
#define IF_NOT_MV(...)
#define CONFIG_FEATURE_MV_LONG_OPTIONS 1
#define ENABLE_FEATURE_MV_LONG_OPTIONS 1
-#define IF_FEATURE_MV_LONG_OPTIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MV_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_MV_LONG_OPTIONS"
+#else
+# define IF_FEATURE_MV_LONG_OPTIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MV_LONG_OPTIONS(...)
#define CONFIG_NICE 1
#define ENABLE_NICE 1
-#define IF_NICE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_NICE(...) __VA_ARGS__ "CONFIG_NICE"
+#else
+# define IF_NICE(...) __VA_ARGS__
+#endif
#define IF_NOT_NICE(...)
#define CONFIG_NOHUP 1
#define ENABLE_NOHUP 1
-#define IF_NOHUP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_NOHUP(...) __VA_ARGS__ "CONFIG_NOHUP"
+#else
+# define IF_NOHUP(...) __VA_ARGS__
+#endif
#define IF_NOT_NOHUP(...)
#define CONFIG_OD 1
#define ENABLE_OD 1
-#define IF_OD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_OD(...) __VA_ARGS__ "CONFIG_OD"
+#else
+# define IF_OD(...) __VA_ARGS__
+#endif
#define IF_NOT_OD(...)
#define CONFIG_PRINTENV 1
#define ENABLE_PRINTENV 1
-#define IF_PRINTENV(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PRINTENV(...) __VA_ARGS__ "CONFIG_PRINTENV"
+#else
+# define IF_PRINTENV(...) __VA_ARGS__
+#endif
#define IF_NOT_PRINTENV(...)
#define CONFIG_PRINTF 1
#define ENABLE_PRINTF 1
-#define IF_PRINTF(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PRINTF(...) __VA_ARGS__ "CONFIG_PRINTF"
+#else
+# define IF_PRINTF(...) __VA_ARGS__
+#endif
#define IF_NOT_PRINTF(...)
#define CONFIG_PWD 1
#define ENABLE_PWD 1
-#define IF_PWD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PWD(...) __VA_ARGS__ "CONFIG_PWD"
+#else
+# define IF_PWD(...) __VA_ARGS__
+#endif
#define IF_NOT_PWD(...)
#define CONFIG_READLINK 1
#define ENABLE_READLINK 1
-#define IF_READLINK(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_READLINK(...) __VA_ARGS__ "CONFIG_READLINK"
+#else
+# define IF_READLINK(...) __VA_ARGS__
+#endif
#define IF_NOT_READLINK(...)
#define CONFIG_FEATURE_READLINK_FOLLOW 1
#define ENABLE_FEATURE_READLINK_FOLLOW 1
-#define IF_FEATURE_READLINK_FOLLOW(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_READLINK_FOLLOW(...) __VA_ARGS__ "CONFIG_FEATURE_READLINK_FOLLOW"
+#else
+# define IF_FEATURE_READLINK_FOLLOW(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_READLINK_FOLLOW(...)
#define CONFIG_REALPATH 1
#define ENABLE_REALPATH 1
-#define IF_REALPATH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_REALPATH(...) __VA_ARGS__ "CONFIG_REALPATH"
+#else
+# define IF_REALPATH(...) __VA_ARGS__
+#endif
#define IF_NOT_REALPATH(...)
#define CONFIG_RM 1
#define ENABLE_RM 1
-#define IF_RM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_RM(...) __VA_ARGS__ "CONFIG_RM"
+#else
+# define IF_RM(...) __VA_ARGS__
+#endif
#define IF_NOT_RM(...)
#define CONFIG_RMDIR 1
#define ENABLE_RMDIR 1
-#define IF_RMDIR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_RMDIR(...) __VA_ARGS__ "CONFIG_RMDIR"
+#else
+# define IF_RMDIR(...) __VA_ARGS__
+#endif
#define IF_NOT_RMDIR(...)
#define CONFIG_FEATURE_RMDIR_LONG_OPTIONS 1
#define ENABLE_FEATURE_RMDIR_LONG_OPTIONS 1
-#define IF_FEATURE_RMDIR_LONG_OPTIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_RMDIR_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_RMDIR_LONG_OPTIONS"
+#else
+# define IF_FEATURE_RMDIR_LONG_OPTIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_RMDIR_LONG_OPTIONS(...)
#define CONFIG_SEQ 1
#define ENABLE_SEQ 1
-#define IF_SEQ(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SEQ(...) __VA_ARGS__ "CONFIG_SEQ"
+#else
+# define IF_SEQ(...) __VA_ARGS__
+#endif
#define IF_NOT_SEQ(...)
#define CONFIG_SHA1SUM 1
#define ENABLE_SHA1SUM 1
-#define IF_SHA1SUM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SHA1SUM(...) __VA_ARGS__ "CONFIG_SHA1SUM"
+#else
+# define IF_SHA1SUM(...) __VA_ARGS__
+#endif
#define IF_NOT_SHA1SUM(...)
#define CONFIG_SHA256SUM 1
#define ENABLE_SHA256SUM 1
-#define IF_SHA256SUM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SHA256SUM(...) __VA_ARGS__ "CONFIG_SHA256SUM"
+#else
+# define IF_SHA256SUM(...) __VA_ARGS__
+#endif
#define IF_NOT_SHA256SUM(...)
#define CONFIG_SHA512SUM 1
#define ENABLE_SHA512SUM 1
-#define IF_SHA512SUM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SHA512SUM(...) __VA_ARGS__ "CONFIG_SHA512SUM"
+#else
+# define IF_SHA512SUM(...) __VA_ARGS__
+#endif
#define IF_NOT_SHA512SUM(...)
#define CONFIG_SHA3SUM 1
#define ENABLE_SHA3SUM 1
-#define IF_SHA3SUM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SHA3SUM(...) __VA_ARGS__ "CONFIG_SHA3SUM"
+#else
+# define IF_SHA3SUM(...) __VA_ARGS__
+#endif
#define IF_NOT_SHA3SUM(...)
#define CONFIG_SLEEP 1
#define ENABLE_SLEEP 1
-#define IF_SLEEP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SLEEP(...) __VA_ARGS__ "CONFIG_SLEEP"
+#else
+# define IF_SLEEP(...) __VA_ARGS__
+#endif
#define IF_NOT_SLEEP(...)
#define CONFIG_FEATURE_FANCY_SLEEP 1
#define ENABLE_FEATURE_FANCY_SLEEP 1
-#define IF_FEATURE_FANCY_SLEEP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FANCY_SLEEP(...) __VA_ARGS__ "CONFIG_FEATURE_FANCY_SLEEP"
+#else
+# define IF_FEATURE_FANCY_SLEEP(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FANCY_SLEEP(...)
#define CONFIG_FEATURE_FLOAT_SLEEP 1
#define ENABLE_FEATURE_FLOAT_SLEEP 1
-#define IF_FEATURE_FLOAT_SLEEP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FLOAT_SLEEP(...) __VA_ARGS__ "CONFIG_FEATURE_FLOAT_SLEEP"
+#else
+# define IF_FEATURE_FLOAT_SLEEP(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FLOAT_SLEEP(...)
#define CONFIG_SORT 1
#define ENABLE_SORT 1
-#define IF_SORT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SORT(...) __VA_ARGS__ "CONFIG_SORT"
+#else
+# define IF_SORT(...) __VA_ARGS__
+#endif
#define IF_NOT_SORT(...)
#define CONFIG_FEATURE_SORT_BIG 1
#define ENABLE_FEATURE_SORT_BIG 1
-#define IF_FEATURE_SORT_BIG(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_SORT_BIG(...) __VA_ARGS__ "CONFIG_FEATURE_SORT_BIG"
+#else
+# define IF_FEATURE_SORT_BIG(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_SORT_BIG(...)
#define CONFIG_SPLIT 1
#define ENABLE_SPLIT 1
-#define IF_SPLIT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SPLIT(...) __VA_ARGS__ "CONFIG_SPLIT"
+#else
+# define IF_SPLIT(...) __VA_ARGS__
+#endif
#define IF_NOT_SPLIT(...)
#define CONFIG_FEATURE_SPLIT_FANCY 1
#define ENABLE_FEATURE_SPLIT_FANCY 1
-#define IF_FEATURE_SPLIT_FANCY(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_SPLIT_FANCY(...) __VA_ARGS__ "CONFIG_FEATURE_SPLIT_FANCY"
+#else
+# define IF_FEATURE_SPLIT_FANCY(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_SPLIT_FANCY(...)
#define CONFIG_STAT 1
#define ENABLE_STAT 1
-#define IF_STAT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_STAT(...) __VA_ARGS__ "CONFIG_STAT"
+#else
+# define IF_STAT(...) __VA_ARGS__
+#endif
#define IF_NOT_STAT(...)
#undef CONFIG_FEATURE_STAT_FORMAT
#define ENABLE_FEATURE_STAT_FORMAT 0
@@ -986,39 +1662,75 @@
#define IF_NOT_FEATURE_STAT_FORMAT(...) __VA_ARGS__
#define CONFIG_STTY 1
#define ENABLE_STTY 1
-#define IF_STTY(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_STTY(...) __VA_ARGS__ "CONFIG_STTY"
+#else
+# define IF_STTY(...) __VA_ARGS__
+#endif
#define IF_NOT_STTY(...)
#define CONFIG_SUM 1
#define ENABLE_SUM 1
-#define IF_SUM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SUM(...) __VA_ARGS__ "CONFIG_SUM"
+#else
+# define IF_SUM(...) __VA_ARGS__
+#endif
#define IF_NOT_SUM(...)
#define CONFIG_SYNC 1
#define ENABLE_SYNC 1
-#define IF_SYNC(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SYNC(...) __VA_ARGS__ "CONFIG_SYNC"
+#else
+# define IF_SYNC(...) __VA_ARGS__
+#endif
#define IF_NOT_SYNC(...)
#define CONFIG_TAC 1
#define ENABLE_TAC 1
-#define IF_TAC(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TAC(...) __VA_ARGS__ "CONFIG_TAC"
+#else
+# define IF_TAC(...) __VA_ARGS__
+#endif
#define IF_NOT_TAC(...)
#define CONFIG_TAIL 1
#define ENABLE_TAIL 1
-#define IF_TAIL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TAIL(...) __VA_ARGS__ "CONFIG_TAIL"
+#else
+# define IF_TAIL(...) __VA_ARGS__
+#endif
#define IF_NOT_TAIL(...)
#define CONFIG_FEATURE_FANCY_TAIL 1
#define ENABLE_FEATURE_FANCY_TAIL 1
-#define IF_FEATURE_FANCY_TAIL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FANCY_TAIL(...) __VA_ARGS__ "CONFIG_FEATURE_FANCY_TAIL"
+#else
+# define IF_FEATURE_FANCY_TAIL(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FANCY_TAIL(...)
#define CONFIG_TEE 1
#define ENABLE_TEE 1
-#define IF_TEE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TEE(...) __VA_ARGS__ "CONFIG_TEE"
+#else
+# define IF_TEE(...) __VA_ARGS__
+#endif
#define IF_NOT_TEE(...)
#define CONFIG_FEATURE_TEE_USE_BLOCK_IO 1
#define ENABLE_FEATURE_TEE_USE_BLOCK_IO 1
-#define IF_FEATURE_TEE_USE_BLOCK_IO(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TEE_USE_BLOCK_IO(...) __VA_ARGS__ "CONFIG_FEATURE_TEE_USE_BLOCK_IO"
+#else
+# define IF_FEATURE_TEE_USE_BLOCK_IO(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TEE_USE_BLOCK_IO(...)
#define CONFIG_TRUE 1
#define ENABLE_TRUE 1
-#define IF_TRUE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TRUE(...) __VA_ARGS__ "CONFIG_TRUE"
+#else
+# define IF_TRUE(...) __VA_ARGS__
+#endif
#define IF_NOT_TRUE(...)
#undef CONFIG_TTY
#define ENABLE_TTY 0
@@ -1026,35 +1738,67 @@
#define IF_NOT_TTY(...) __VA_ARGS__
#define CONFIG_UNAME 1
#define ENABLE_UNAME 1
-#define IF_UNAME(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UNAME(...) __VA_ARGS__ "CONFIG_UNAME"
+#else
+# define IF_UNAME(...) __VA_ARGS__
+#endif
#define IF_NOT_UNAME(...)
#define CONFIG_UNEXPAND 1
#define ENABLE_UNEXPAND 1
-#define IF_UNEXPAND(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UNEXPAND(...) __VA_ARGS__ "CONFIG_UNEXPAND"
+#else
+# define IF_UNEXPAND(...) __VA_ARGS__
+#endif
#define IF_NOT_UNEXPAND(...)
#define CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS 1
#define ENABLE_FEATURE_UNEXPAND_LONG_OPTIONS 1
-#define IF_FEATURE_UNEXPAND_LONG_OPTIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_UNEXPAND_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS"
+#else
+# define IF_FEATURE_UNEXPAND_LONG_OPTIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_UNEXPAND_LONG_OPTIONS(...)
#define CONFIG_UNIQ 1
#define ENABLE_UNIQ 1
-#define IF_UNIQ(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UNIQ(...) __VA_ARGS__ "CONFIG_UNIQ"
+#else
+# define IF_UNIQ(...) __VA_ARGS__
+#endif
#define IF_NOT_UNIQ(...)
#define CONFIG_USLEEP 1
#define ENABLE_USLEEP 1
-#define IF_USLEEP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_USLEEP(...) __VA_ARGS__ "CONFIG_USLEEP"
+#else
+# define IF_USLEEP(...) __VA_ARGS__
+#endif
#define IF_NOT_USLEEP(...)
#define CONFIG_UUDECODE 1
#define ENABLE_UUDECODE 1
-#define IF_UUDECODE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UUDECODE(...) __VA_ARGS__ "CONFIG_UUDECODE"
+#else
+# define IF_UUDECODE(...) __VA_ARGS__
+#endif
#define IF_NOT_UUDECODE(...)
#define CONFIG_UUENCODE 1
#define ENABLE_UUENCODE 1
-#define IF_UUENCODE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UUENCODE(...) __VA_ARGS__ "CONFIG_UUENCODE"
+#else
+# define IF_UUENCODE(...) __VA_ARGS__
+#endif
#define IF_NOT_UUENCODE(...)
#define CONFIG_WC 1
#define ENABLE_WC 1
-#define IF_WC(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_WC(...) __VA_ARGS__ "CONFIG_WC"
+#else
+# define IF_WC(...) __VA_ARGS__
+#endif
#define IF_NOT_WC(...)
#undef CONFIG_FEATURE_WC_LARGE
#define ENABLE_FEATURE_WC_LARGE 0
@@ -1062,11 +1806,19 @@
#define IF_NOT_FEATURE_WC_LARGE(...) __VA_ARGS__
#define CONFIG_WHOAMI 1
#define ENABLE_WHOAMI 1
-#define IF_WHOAMI(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_WHOAMI(...) __VA_ARGS__ "CONFIG_WHOAMI"
+#else
+# define IF_WHOAMI(...) __VA_ARGS__
+#endif
#define IF_NOT_WHOAMI(...)
#define CONFIG_YES 1
#define ENABLE_YES 1
-#define IF_YES(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_YES(...) __VA_ARGS__ "CONFIG_YES"
+#else
+# define IF_YES(...) __VA_ARGS__
+#endif
#define IF_NOT_YES(...)
/*
@@ -1074,7 +1826,11 @@
*/
#define CONFIG_FEATURE_PRESERVE_HARDLINKS 1
#define ENABLE_FEATURE_PRESERVE_HARDLINKS 1
-#define IF_FEATURE_PRESERVE_HARDLINKS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_PRESERVE_HARDLINKS(...) __VA_ARGS__ "CONFIG_FEATURE_PRESERVE_HARDLINKS"
+#else
+# define IF_FEATURE_PRESERVE_HARDLINKS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_PRESERVE_HARDLINKS(...)
/*
@@ -1082,7 +1838,11 @@
*/
#define CONFIG_FEATURE_AUTOWIDTH 1
#define ENABLE_FEATURE_AUTOWIDTH 1
-#define IF_FEATURE_AUTOWIDTH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_AUTOWIDTH(...) __VA_ARGS__ "CONFIG_FEATURE_AUTOWIDTH"
+#else
+# define IF_FEATURE_AUTOWIDTH(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_AUTOWIDTH(...)
/*
@@ -1090,7 +1850,11 @@
*/
#define CONFIG_FEATURE_HUMAN_READABLE 1
#define ENABLE_FEATURE_HUMAN_READABLE 1
-#define IF_FEATURE_HUMAN_READABLE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_HUMAN_READABLE(...) __VA_ARGS__ "CONFIG_FEATURE_HUMAN_READABLE"
+#else
+# define IF_FEATURE_HUMAN_READABLE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_HUMAN_READABLE(...)
/*
@@ -1098,7 +1862,11 @@
*/
#define CONFIG_FEATURE_MD5_SHA1_SUM_CHECK 1
#define ENABLE_FEATURE_MD5_SHA1_SUM_CHECK 1
-#define IF_FEATURE_MD5_SHA1_SUM_CHECK(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MD5_SHA1_SUM_CHECK(...) __VA_ARGS__ "CONFIG_FEATURE_MD5_SHA1_SUM_CHECK"
+#else
+# define IF_FEATURE_MD5_SHA1_SUM_CHECK(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MD5_SHA1_SUM_CHECK(...)
/*
@@ -1114,7 +1882,11 @@
#define IF_NOT_FGCONSOLE(...) __VA_ARGS__
#define CONFIG_CLEAR 1
#define ENABLE_CLEAR 1
-#define IF_CLEAR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CLEAR(...) __VA_ARGS__ "CONFIG_CLEAR"
+#else
+# define IF_CLEAR(...) __VA_ARGS__
+#endif
#define IF_NOT_CLEAR(...)
#undef CONFIG_DEALLOCVT
#define ENABLE_DEALLOCVT 0
@@ -1142,11 +1914,19 @@
#define IF_NOT_OPENVT(...) __VA_ARGS__
#define CONFIG_RESET 1
#define ENABLE_RESET 1
-#define IF_RESET(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_RESET(...) __VA_ARGS__ "CONFIG_RESET"
+#else
+# define IF_RESET(...) __VA_ARGS__
+#endif
#define IF_NOT_RESET(...)
#define CONFIG_RESIZE 1
#define ENABLE_RESIZE 1
-#define IF_RESIZE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_RESIZE(...) __VA_ARGS__ "CONFIG_RESIZE"
+#else
+# define IF_RESIZE(...) __VA_ARGS__
+#endif
#define IF_NOT_RESIZE(...)
#undef CONFIG_FEATURE_RESIZE_PRINT
#define ENABLE_FEATURE_RESIZE_PRINT 0
@@ -1154,7 +1934,11 @@
#define IF_NOT_FEATURE_RESIZE_PRINT(...) __VA_ARGS__
#define CONFIG_SETCONSOLE 1
#define ENABLE_SETCONSOLE 1
-#define IF_SETCONSOLE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SETCONSOLE(...) __VA_ARGS__ "CONFIG_SETCONSOLE"
+#else
+# define IF_SETCONSOLE(...) __VA_ARGS__
+#endif
#define IF_NOT_SETCONSOLE(...)
#undef CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS
#define ENABLE_FEATURE_SETCONSOLE_LONG_OPTIONS 0
@@ -1170,7 +1954,11 @@
#define IF_NOT_FEATURE_SETFONT_TEXTUAL_MAP(...) __VA_ARGS__
#define CONFIG_DEFAULT_SETFONT_DIR ""
#define ENABLE_DEFAULT_SETFONT_DIR 1
-#define IF_DEFAULT_SETFONT_DIR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DEFAULT_SETFONT_DIR(...) __VA_ARGS__ "CONFIG_DEFAULT_SETFONT_DIR"
+#else
+# define IF_DEFAULT_SETFONT_DIR(...) __VA_ARGS__
+#endif
#define IF_NOT_DEFAULT_SETFONT_DIR(...)
#undef CONFIG_SETKEYCODES
#define ENABLE_SETKEYCODES 0
@@ -1198,23 +1986,43 @@
*/
#define CONFIG_MKTEMP 1
#define ENABLE_MKTEMP 1
-#define IF_MKTEMP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MKTEMP(...) __VA_ARGS__ "CONFIG_MKTEMP"
+#else
+# define IF_MKTEMP(...) __VA_ARGS__
+#endif
#define IF_NOT_MKTEMP(...)
#define CONFIG_PIPE_PROGRESS 1
#define ENABLE_PIPE_PROGRESS 1
-#define IF_PIPE_PROGRESS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PIPE_PROGRESS(...) __VA_ARGS__ "CONFIG_PIPE_PROGRESS"
+#else
+# define IF_PIPE_PROGRESS(...) __VA_ARGS__
+#endif
#define IF_NOT_PIPE_PROGRESS(...)
#define CONFIG_RUN_PARTS 1
#define ENABLE_RUN_PARTS 1
-#define IF_RUN_PARTS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_RUN_PARTS(...) __VA_ARGS__ "CONFIG_RUN_PARTS"
+#else
+# define IF_RUN_PARTS(...) __VA_ARGS__
+#endif
#define IF_NOT_RUN_PARTS(...)
#define CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS 1
#define ENABLE_FEATURE_RUN_PARTS_LONG_OPTIONS 1
-#define IF_FEATURE_RUN_PARTS_LONG_OPTIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_RUN_PARTS_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS"
+#else
+# define IF_FEATURE_RUN_PARTS_LONG_OPTIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_RUN_PARTS_LONG_OPTIONS(...)
#define CONFIG_FEATURE_RUN_PARTS_FANCY 1
#define ENABLE_FEATURE_RUN_PARTS_FANCY 1
-#define IF_FEATURE_RUN_PARTS_FANCY(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_RUN_PARTS_FANCY(...) __VA_ARGS__ "CONFIG_FEATURE_RUN_PARTS_FANCY"
+#else
+# define IF_FEATURE_RUN_PARTS_FANCY(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_RUN_PARTS_FANCY(...)
#undef CONFIG_START_STOP_DAEMON
#define ENABLE_START_STOP_DAEMON 0
@@ -1230,107 +2038,215 @@
#define IF_NOT_FEATURE_START_STOP_DAEMON_LONG_OPTIONS(...) __VA_ARGS__
#define CONFIG_WHICH 1
#define ENABLE_WHICH 1
-#define IF_WHICH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_WHICH(...) __VA_ARGS__ "CONFIG_WHICH"
+#else
+# define IF_WHICH(...) __VA_ARGS__
+#endif
#define IF_NOT_WHICH(...)
/*
* Editors
*/
+#define CONFIG_AWK 1
+#define ENABLE_AWK 1
+#ifdef MAKE_SUID
+# define IF_AWK(...) __VA_ARGS__ "CONFIG_AWK"
+#else
+# define IF_AWK(...) __VA_ARGS__
+#endif
+#define IF_NOT_AWK(...)
+#define CONFIG_FEATURE_AWK_LIBM 1
+#define ENABLE_FEATURE_AWK_LIBM 1
+#ifdef MAKE_SUID
+# define IF_FEATURE_AWK_LIBM(...) __VA_ARGS__ "CONFIG_FEATURE_AWK_LIBM"
+#else
+# define IF_FEATURE_AWK_LIBM(...) __VA_ARGS__
+#endif
+#define IF_NOT_FEATURE_AWK_LIBM(...)
+#define CONFIG_FEATURE_AWK_GNU_EXTENSIONS 1
+#define ENABLE_FEATURE_AWK_GNU_EXTENSIONS 1
+#ifdef MAKE_SUID
+# define IF_FEATURE_AWK_GNU_EXTENSIONS(...) __VA_ARGS__ "CONFIG_FEATURE_AWK_GNU_EXTENSIONS"
+#else
+# define IF_FEATURE_AWK_GNU_EXTENSIONS(...) __VA_ARGS__
+#endif
+#define IF_NOT_FEATURE_AWK_GNU_EXTENSIONS(...)
+#define CONFIG_CMP 1
+#define ENABLE_CMP 1
+#ifdef MAKE_SUID
+# define IF_CMP(...) __VA_ARGS__ "CONFIG_CMP"
+#else
+# define IF_CMP(...) __VA_ARGS__
+#endif
+#define IF_NOT_CMP(...)
+#define CONFIG_DIFF 1
+#define ENABLE_DIFF 1
+#ifdef MAKE_SUID
+# define IF_DIFF(...) __VA_ARGS__ "CONFIG_DIFF"
+#else
+# define IF_DIFF(...) __VA_ARGS__
+#endif
+#define IF_NOT_DIFF(...)
+#define CONFIG_FEATURE_DIFF_LONG_OPTIONS 1
+#define ENABLE_FEATURE_DIFF_LONG_OPTIONS 1
+#ifdef MAKE_SUID
+# define IF_FEATURE_DIFF_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_DIFF_LONG_OPTIONS"
+#else
+# define IF_FEATURE_DIFF_LONG_OPTIONS(...) __VA_ARGS__
+#endif
+#define IF_NOT_FEATURE_DIFF_LONG_OPTIONS(...)
+#define CONFIG_FEATURE_DIFF_DIR 1
+#define ENABLE_FEATURE_DIFF_DIR 1
+#ifdef MAKE_SUID
+# define IF_FEATURE_DIFF_DIR(...) __VA_ARGS__ "CONFIG_FEATURE_DIFF_DIR"
+#else
+# define IF_FEATURE_DIFF_DIR(...) __VA_ARGS__
+#endif
+#define IF_NOT_FEATURE_DIFF_DIR(...)
+#define CONFIG_ED 1
+#define ENABLE_ED 1
+#ifdef MAKE_SUID
+# define IF_ED(...) __VA_ARGS__ "CONFIG_ED"
+#else
+# define IF_ED(...) __VA_ARGS__
+#endif
+#define IF_NOT_ED(...)
#define CONFIG_PATCH 1
#define ENABLE_PATCH 1
-#define IF_PATCH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PATCH(...) __VA_ARGS__ "CONFIG_PATCH"
+#else
+# define IF_PATCH(...) __VA_ARGS__
+#endif
#define IF_NOT_PATCH(...)
+#define CONFIG_SED 1
+#define ENABLE_SED 1
+#ifdef MAKE_SUID
+# define IF_SED(...) __VA_ARGS__ "CONFIG_SED"
+#else
+# define IF_SED(...) __VA_ARGS__
+#endif
+#define IF_NOT_SED(...)
#define CONFIG_VI 1
#define ENABLE_VI 1
-#define IF_VI(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_VI(...) __VA_ARGS__ "CONFIG_VI"
+#else
+# define IF_VI(...) __VA_ARGS__
+#endif
#define IF_NOT_VI(...)
#define CONFIG_FEATURE_VI_MAX_LEN 256
#define ENABLE_FEATURE_VI_MAX_LEN 1
-#define IF_FEATURE_VI_MAX_LEN(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_VI_MAX_LEN(...) __VA_ARGS__ "CONFIG_FEATURE_VI_MAX_LEN"
+#else
+# define IF_FEATURE_VI_MAX_LEN(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_VI_MAX_LEN(...)
#define CONFIG_FEATURE_VI_8BIT 1
#define ENABLE_FEATURE_VI_8BIT 1
-#define IF_FEATURE_VI_8BIT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_VI_8BIT(...) __VA_ARGS__ "CONFIG_FEATURE_VI_8BIT"
+#else
+# define IF_FEATURE_VI_8BIT(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_VI_8BIT(...)
#define CONFIG_FEATURE_VI_COLON 1
#define ENABLE_FEATURE_VI_COLON 1
-#define IF_FEATURE_VI_COLON(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_VI_COLON(...) __VA_ARGS__ "CONFIG_FEATURE_VI_COLON"
+#else
+# define IF_FEATURE_VI_COLON(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_VI_COLON(...)
#define CONFIG_FEATURE_VI_YANKMARK 1
#define ENABLE_FEATURE_VI_YANKMARK 1
-#define IF_FEATURE_VI_YANKMARK(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_VI_YANKMARK(...) __VA_ARGS__ "CONFIG_FEATURE_VI_YANKMARK"
+#else
+# define IF_FEATURE_VI_YANKMARK(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_VI_YANKMARK(...)
#define CONFIG_FEATURE_VI_SEARCH 1
#define ENABLE_FEATURE_VI_SEARCH 1
-#define IF_FEATURE_VI_SEARCH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_VI_SEARCH(...) __VA_ARGS__ "CONFIG_FEATURE_VI_SEARCH"
+#else
+# define IF_FEATURE_VI_SEARCH(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_VI_SEARCH(...)
#define CONFIG_FEATURE_VI_REGEX_SEARCH 1
#define ENABLE_FEATURE_VI_REGEX_SEARCH 1
-#define IF_FEATURE_VI_REGEX_SEARCH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_VI_REGEX_SEARCH(...) __VA_ARGS__ "CONFIG_FEATURE_VI_REGEX_SEARCH"
+#else
+# define IF_FEATURE_VI_REGEX_SEARCH(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_VI_REGEX_SEARCH(...)
#define CONFIG_FEATURE_VI_USE_SIGNALS 1
#define ENABLE_FEATURE_VI_USE_SIGNALS 1
-#define IF_FEATURE_VI_USE_SIGNALS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_VI_USE_SIGNALS(...) __VA_ARGS__ "CONFIG_FEATURE_VI_USE_SIGNALS"
+#else
+# define IF_FEATURE_VI_USE_SIGNALS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_VI_USE_SIGNALS(...)
#define CONFIG_FEATURE_VI_DOT_CMD 1
#define ENABLE_FEATURE_VI_DOT_CMD 1
-#define IF_FEATURE_VI_DOT_CMD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_VI_DOT_CMD(...) __VA_ARGS__ "CONFIG_FEATURE_VI_DOT_CMD"
+#else
+# define IF_FEATURE_VI_DOT_CMD(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_VI_DOT_CMD(...)
#define CONFIG_FEATURE_VI_READONLY 1
#define ENABLE_FEATURE_VI_READONLY 1
-#define IF_FEATURE_VI_READONLY(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_VI_READONLY(...) __VA_ARGS__ "CONFIG_FEATURE_VI_READONLY"
+#else
+# define IF_FEATURE_VI_READONLY(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_VI_READONLY(...)
#define CONFIG_FEATURE_VI_SETOPTS 1
#define ENABLE_FEATURE_VI_SETOPTS 1
-#define IF_FEATURE_VI_SETOPTS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_VI_SETOPTS(...) __VA_ARGS__ "CONFIG_FEATURE_VI_SETOPTS"
+#else
+# define IF_FEATURE_VI_SETOPTS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_VI_SETOPTS(...)
#define CONFIG_FEATURE_VI_SET 1
#define ENABLE_FEATURE_VI_SET 1
-#define IF_FEATURE_VI_SET(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_VI_SET(...) __VA_ARGS__ "CONFIG_FEATURE_VI_SET"
+#else
+# define IF_FEATURE_VI_SET(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_VI_SET(...)
#define CONFIG_FEATURE_VI_WIN_RESIZE 1
#define ENABLE_FEATURE_VI_WIN_RESIZE 1
-#define IF_FEATURE_VI_WIN_RESIZE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_VI_WIN_RESIZE(...) __VA_ARGS__ "CONFIG_FEATURE_VI_WIN_RESIZE"
+#else
+# define IF_FEATURE_VI_WIN_RESIZE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_VI_WIN_RESIZE(...)
#define CONFIG_FEATURE_VI_ASK_TERMINAL 1
#define ENABLE_FEATURE_VI_ASK_TERMINAL 1
-#define IF_FEATURE_VI_ASK_TERMINAL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_VI_ASK_TERMINAL(...) __VA_ARGS__ "CONFIG_FEATURE_VI_ASK_TERMINAL"
+#else
+# define IF_FEATURE_VI_ASK_TERMINAL(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_VI_ASK_TERMINAL(...)
-#define CONFIG_AWK 1
-#define ENABLE_AWK 1
-#define IF_AWK(...) __VA_ARGS__
-#define IF_NOT_AWK(...)
-#define CONFIG_FEATURE_AWK_LIBM 1
-#define ENABLE_FEATURE_AWK_LIBM 1
-#define IF_FEATURE_AWK_LIBM(...) __VA_ARGS__
-#define IF_NOT_FEATURE_AWK_LIBM(...)
-#define CONFIG_CMP 1
-#define ENABLE_CMP 1
-#define IF_CMP(...) __VA_ARGS__
-#define IF_NOT_CMP(...)
-#define CONFIG_DIFF 1
-#define ENABLE_DIFF 1
-#define IF_DIFF(...) __VA_ARGS__
-#define IF_NOT_DIFF(...)
-#define CONFIG_FEATURE_DIFF_LONG_OPTIONS 1
-#define ENABLE_FEATURE_DIFF_LONG_OPTIONS 1
-#define IF_FEATURE_DIFF_LONG_OPTIONS(...) __VA_ARGS__
-#define IF_NOT_FEATURE_DIFF_LONG_OPTIONS(...)
-#define CONFIG_FEATURE_DIFF_DIR 1
-#define ENABLE_FEATURE_DIFF_DIR 1
-#define IF_FEATURE_DIFF_DIR(...) __VA_ARGS__
-#define IF_NOT_FEATURE_DIFF_DIR(...)
-#define CONFIG_ED 1
-#define ENABLE_ED 1
-#define IF_ED(...) __VA_ARGS__
-#define IF_NOT_ED(...)
-#define CONFIG_SED 1
-#define ENABLE_SED 1
-#define IF_SED(...) __VA_ARGS__
-#define IF_NOT_SED(...)
#define CONFIG_FEATURE_ALLOW_EXEC 1
#define ENABLE_FEATURE_ALLOW_EXEC 1
-#define IF_FEATURE_ALLOW_EXEC(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_ALLOW_EXEC(...) __VA_ARGS__ "CONFIG_FEATURE_ALLOW_EXEC"
+#else
+# define IF_FEATURE_ALLOW_EXEC(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_ALLOW_EXEC(...)
/*
@@ -1338,39 +2254,75 @@
*/
#define CONFIG_FIND 1
#define ENABLE_FIND 1
-#define IF_FIND(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FIND(...) __VA_ARGS__ "CONFIG_FIND"
+#else
+# define IF_FIND(...) __VA_ARGS__
+#endif
#define IF_NOT_FIND(...)
#define CONFIG_FEATURE_FIND_PRINT0 1
#define ENABLE_FEATURE_FIND_PRINT0 1
-#define IF_FEATURE_FIND_PRINT0(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_PRINT0(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_PRINT0"
+#else
+# define IF_FEATURE_FIND_PRINT0(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_PRINT0(...)
#define CONFIG_FEATURE_FIND_MTIME 1
#define ENABLE_FEATURE_FIND_MTIME 1
-#define IF_FEATURE_FIND_MTIME(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_MTIME(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_MTIME"
+#else
+# define IF_FEATURE_FIND_MTIME(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_MTIME(...)
#define CONFIG_FEATURE_FIND_MMIN 1
#define ENABLE_FEATURE_FIND_MMIN 1
-#define IF_FEATURE_FIND_MMIN(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_MMIN(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_MMIN"
+#else
+# define IF_FEATURE_FIND_MMIN(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_MMIN(...)
#define CONFIG_FEATURE_FIND_PERM 1
#define ENABLE_FEATURE_FIND_PERM 1
-#define IF_FEATURE_FIND_PERM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_PERM(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_PERM"
+#else
+# define IF_FEATURE_FIND_PERM(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_PERM(...)
#define CONFIG_FEATURE_FIND_TYPE 1
#define ENABLE_FEATURE_FIND_TYPE 1
-#define IF_FEATURE_FIND_TYPE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_TYPE(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_TYPE"
+#else
+# define IF_FEATURE_FIND_TYPE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_TYPE(...)
#define CONFIG_FEATURE_FIND_XDEV 1
#define ENABLE_FEATURE_FIND_XDEV 1
-#define IF_FEATURE_FIND_XDEV(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_XDEV(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_XDEV"
+#else
+# define IF_FEATURE_FIND_XDEV(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_XDEV(...)
#define CONFIG_FEATURE_FIND_MAXDEPTH 1
#define ENABLE_FEATURE_FIND_MAXDEPTH 1
-#define IF_FEATURE_FIND_MAXDEPTH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_MAXDEPTH(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_MAXDEPTH"
+#else
+# define IF_FEATURE_FIND_MAXDEPTH(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_MAXDEPTH(...)
#define CONFIG_FEATURE_FIND_NEWER 1
#define ENABLE_FEATURE_FIND_NEWER 1
-#define IF_FEATURE_FIND_NEWER(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_NEWER(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_NEWER"
+#else
+# define IF_FEATURE_FIND_NEWER(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_NEWER(...)
#undef CONFIG_FEATURE_FIND_INUM
#define ENABLE_FEATURE_FIND_INUM 0
@@ -1378,35 +2330,67 @@
#define IF_NOT_FEATURE_FIND_INUM(...) __VA_ARGS__
#define CONFIG_FEATURE_FIND_EXEC 1
#define ENABLE_FEATURE_FIND_EXEC 1
-#define IF_FEATURE_FIND_EXEC(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_EXEC(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_EXEC"
+#else
+# define IF_FEATURE_FIND_EXEC(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_EXEC(...)
#define CONFIG_FEATURE_FIND_USER 1
#define ENABLE_FEATURE_FIND_USER 1
-#define IF_FEATURE_FIND_USER(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_USER(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_USER"
+#else
+# define IF_FEATURE_FIND_USER(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_USER(...)
#define CONFIG_FEATURE_FIND_GROUP 1
#define ENABLE_FEATURE_FIND_GROUP 1
-#define IF_FEATURE_FIND_GROUP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_GROUP(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_GROUP"
+#else
+# define IF_FEATURE_FIND_GROUP(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_GROUP(...)
#define CONFIG_FEATURE_FIND_NOT 1
#define ENABLE_FEATURE_FIND_NOT 1
-#define IF_FEATURE_FIND_NOT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_NOT(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_NOT"
+#else
+# define IF_FEATURE_FIND_NOT(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_NOT(...)
#define CONFIG_FEATURE_FIND_DEPTH 1
#define ENABLE_FEATURE_FIND_DEPTH 1
-#define IF_FEATURE_FIND_DEPTH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_DEPTH(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_DEPTH"
+#else
+# define IF_FEATURE_FIND_DEPTH(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_DEPTH(...)
#define CONFIG_FEATURE_FIND_PAREN 1
#define ENABLE_FEATURE_FIND_PAREN 1
-#define IF_FEATURE_FIND_PAREN(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_PAREN(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_PAREN"
+#else
+# define IF_FEATURE_FIND_PAREN(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_PAREN(...)
#define CONFIG_FEATURE_FIND_SIZE 1
#define ENABLE_FEATURE_FIND_SIZE 1
-#define IF_FEATURE_FIND_SIZE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_SIZE(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_SIZE"
+#else
+# define IF_FEATURE_FIND_SIZE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_SIZE(...)
#define CONFIG_FEATURE_FIND_PRUNE 1
#define ENABLE_FEATURE_FIND_PRUNE 1
-#define IF_FEATURE_FIND_PRUNE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_PRUNE(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_PRUNE"
+#else
+# define IF_FEATURE_FIND_PRUNE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_PRUNE(...)
#undef CONFIG_FEATURE_FIND_DELETE
#define ENABLE_FEATURE_FIND_DELETE 0
@@ -1414,11 +2398,19 @@
#define IF_NOT_FEATURE_FIND_DELETE(...) __VA_ARGS__
#define CONFIG_FEATURE_FIND_PATH 1
#define ENABLE_FEATURE_FIND_PATH 1
-#define IF_FEATURE_FIND_PATH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_PATH(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_PATH"
+#else
+# define IF_FEATURE_FIND_PATH(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_PATH(...)
#define CONFIG_FEATURE_FIND_REGEX 1
#define ENABLE_FEATURE_FIND_REGEX 1
-#define IF_FEATURE_FIND_REGEX(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_REGEX(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_REGEX"
+#else
+# define IF_FEATURE_FIND_REGEX(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_REGEX(...)
#undef CONFIG_FEATURE_FIND_CONTEXT
#define ENABLE_FEATURE_FIND_CONTEXT 0
@@ -1426,43 +2418,83 @@
#define IF_NOT_FEATURE_FIND_CONTEXT(...) __VA_ARGS__
#define CONFIG_FEATURE_FIND_LINKS 1
#define ENABLE_FEATURE_FIND_LINKS 1
-#define IF_FEATURE_FIND_LINKS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_LINKS(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_LINKS"
+#else
+# define IF_FEATURE_FIND_LINKS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_LINKS(...)
#define CONFIG_GREP 1
#define ENABLE_GREP 1
-#define IF_GREP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_GREP(...) __VA_ARGS__ "CONFIG_GREP"
+#else
+# define IF_GREP(...) __VA_ARGS__
+#endif
#define IF_NOT_GREP(...)
#define CONFIG_FEATURE_GREP_EGREP_ALIAS 1
#define ENABLE_FEATURE_GREP_EGREP_ALIAS 1
-#define IF_FEATURE_GREP_EGREP_ALIAS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_GREP_EGREP_ALIAS(...) __VA_ARGS__ "CONFIG_FEATURE_GREP_EGREP_ALIAS"
+#else
+# define IF_FEATURE_GREP_EGREP_ALIAS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_GREP_EGREP_ALIAS(...)
#define CONFIG_FEATURE_GREP_FGREP_ALIAS 1
#define ENABLE_FEATURE_GREP_FGREP_ALIAS 1
-#define IF_FEATURE_GREP_FGREP_ALIAS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_GREP_FGREP_ALIAS(...) __VA_ARGS__ "CONFIG_FEATURE_GREP_FGREP_ALIAS"
+#else
+# define IF_FEATURE_GREP_FGREP_ALIAS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_GREP_FGREP_ALIAS(...)
#define CONFIG_FEATURE_GREP_CONTEXT 1
#define ENABLE_FEATURE_GREP_CONTEXT 1
-#define IF_FEATURE_GREP_CONTEXT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_GREP_CONTEXT(...) __VA_ARGS__ "CONFIG_FEATURE_GREP_CONTEXT"
+#else
+# define IF_FEATURE_GREP_CONTEXT(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_GREP_CONTEXT(...)
#define CONFIG_XARGS 1
#define ENABLE_XARGS 1
-#define IF_XARGS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_XARGS(...) __VA_ARGS__ "CONFIG_XARGS"
+#else
+# define IF_XARGS(...) __VA_ARGS__
+#endif
#define IF_NOT_XARGS(...)
#define CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION 1
#define ENABLE_FEATURE_XARGS_SUPPORT_CONFIRMATION 1
-#define IF_FEATURE_XARGS_SUPPORT_CONFIRMATION(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_XARGS_SUPPORT_CONFIRMATION(...) __VA_ARGS__ "CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION"
+#else
+# define IF_FEATURE_XARGS_SUPPORT_CONFIRMATION(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_XARGS_SUPPORT_CONFIRMATION(...)
#define CONFIG_FEATURE_XARGS_SUPPORT_QUOTES 1
#define ENABLE_FEATURE_XARGS_SUPPORT_QUOTES 1
-#define IF_FEATURE_XARGS_SUPPORT_QUOTES(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_XARGS_SUPPORT_QUOTES(...) __VA_ARGS__ "CONFIG_FEATURE_XARGS_SUPPORT_QUOTES"
+#else
+# define IF_FEATURE_XARGS_SUPPORT_QUOTES(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_XARGS_SUPPORT_QUOTES(...)
#define CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT 1
#define ENABLE_FEATURE_XARGS_SUPPORT_TERMOPT 1
-#define IF_FEATURE_XARGS_SUPPORT_TERMOPT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_XARGS_SUPPORT_TERMOPT(...) __VA_ARGS__ "CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT"
+#else
+# define IF_FEATURE_XARGS_SUPPORT_TERMOPT(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_XARGS_SUPPORT_TERMOPT(...)
#define CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM 1
#define ENABLE_FEATURE_XARGS_SUPPORT_ZERO_TERM 1
-#define IF_FEATURE_XARGS_SUPPORT_ZERO_TERM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_XARGS_SUPPORT_ZERO_TERM(...) __VA_ARGS__ "CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM"
+#else
+# define IF_FEATURE_XARGS_SUPPORT_ZERO_TERM(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_XARGS_SUPPORT_ZERO_TERM(...)
/*
@@ -1482,7 +2514,11 @@
#define IF_NOT_FEATURE_BOOTCHARTD_CONFIG_FILE(...) __VA_ARGS__
#define CONFIG_HALT 1
#define ENABLE_HALT 1
-#define IF_HALT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_HALT(...) __VA_ARGS__ "CONFIG_HALT"
+#else
+# define IF_HALT(...) __VA_ARGS__
+#endif
#define IF_NOT_HALT(...)
#undef CONFIG_FEATURE_CALL_TELINIT
#define ENABLE_FEATURE_CALL_TELINIT 0
@@ -1490,7 +2526,11 @@
#define IF_NOT_FEATURE_CALL_TELINIT(...) __VA_ARGS__
#define CONFIG_TELINIT_PATH ""
#define ENABLE_TELINIT_PATH 1
-#define IF_TELINIT_PATH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TELINIT_PATH(...) __VA_ARGS__ "CONFIG_TELINIT_PATH"
+#else
+# define IF_TELINIT_PATH(...) __VA_ARGS__
+#endif
#define IF_NOT_TELINIT_PATH(...)
#undef CONFIG_INIT
#define ENABLE_INIT 0
@@ -1506,7 +2546,11 @@
#define IF_NOT_FEATURE_KILL_REMOVED(...) __VA_ARGS__
#define CONFIG_FEATURE_KILL_DELAY 0
#define ENABLE_FEATURE_KILL_DELAY 1
-#define IF_FEATURE_KILL_DELAY(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_KILL_DELAY(...) __VA_ARGS__ "CONFIG_FEATURE_KILL_DELAY"
+#else
+# define IF_FEATURE_KILL_DELAY(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_KILL_DELAY(...)
#undef CONFIG_FEATURE_INIT_SCTTY
#define ENABLE_FEATURE_INIT_SCTTY 0
@@ -1530,15 +2574,27 @@
#define IF_NOT_FEATURE_INITRD(...) __VA_ARGS__
#define CONFIG_INIT_TERMINAL_TYPE ""
#define ENABLE_INIT_TERMINAL_TYPE 1
-#define IF_INIT_TERMINAL_TYPE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_INIT_TERMINAL_TYPE(...) __VA_ARGS__ "CONFIG_INIT_TERMINAL_TYPE"
+#else
+# define IF_INIT_TERMINAL_TYPE(...) __VA_ARGS__
+#endif
#define IF_NOT_INIT_TERMINAL_TYPE(...)
#define CONFIG_MESG 1
#define ENABLE_MESG 1
-#define IF_MESG(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MESG(...) __VA_ARGS__ "CONFIG_MESG"
+#else
+# define IF_MESG(...) __VA_ARGS__
+#endif
#define IF_NOT_MESG(...)
#define CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP 1
#define ENABLE_FEATURE_MESG_ENABLE_ONLY_GROUP 1
-#define IF_FEATURE_MESG_ENABLE_ONLY_GROUP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MESG_ENABLE_ONLY_GROUP(...) __VA_ARGS__ "CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP"
+#else
+# define IF_FEATURE_MESG_ENABLE_ONLY_GROUP(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MESG_ENABLE_ONLY_GROUP(...)
/*
@@ -1566,7 +2622,11 @@
#define IF_NOT_USE_BB_SHADOW(...) __VA_ARGS__
#define CONFIG_USE_BB_CRYPT 1
#define ENABLE_USE_BB_CRYPT 1
-#define IF_USE_BB_CRYPT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_USE_BB_CRYPT(...) __VA_ARGS__ "CONFIG_USE_BB_CRYPT"
+#else
+# define IF_USE_BB_CRYPT(...) __VA_ARGS__
+#endif
#define IF_NOT_USE_BB_CRYPT(...)
#undef CONFIG_USE_BB_CRYPT_SHA
#define ENABLE_USE_BB_CRYPT_SHA 0
@@ -1586,11 +2646,19 @@
#define IF_NOT_FEATURE_CHECK_NAMES(...) __VA_ARGS__
#define CONFIG_FIRST_SYSTEM_ID 0
#define ENABLE_FIRST_SYSTEM_ID 1
-#define IF_FIRST_SYSTEM_ID(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FIRST_SYSTEM_ID(...) __VA_ARGS__ "CONFIG_FIRST_SYSTEM_ID"
+#else
+# define IF_FIRST_SYSTEM_ID(...) __VA_ARGS__
+#endif
#define IF_NOT_FIRST_SYSTEM_ID(...)
#define CONFIG_LAST_SYSTEM_ID 0
#define ENABLE_LAST_SYSTEM_ID 1
-#define IF_LAST_SYSTEM_ID(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LAST_SYSTEM_ID(...) __VA_ARGS__ "CONFIG_LAST_SYSTEM_ID"
+#else
+# define IF_LAST_SYSTEM_ID(...) __VA_ARGS__
+#endif
#define IF_NOT_LAST_SYSTEM_ID(...)
#undef CONFIG_ADDGROUP
#define ENABLE_ADDGROUP 0
@@ -1662,7 +2730,11 @@
#define IF_NOT_CHPASSWD(...) __VA_ARGS__
#define CONFIG_FEATURE_DEFAULT_PASSWD_ALGO ""
#define ENABLE_FEATURE_DEFAULT_PASSWD_ALGO 1
-#define IF_FEATURE_DEFAULT_PASSWD_ALGO(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_DEFAULT_PASSWD_ALGO(...) __VA_ARGS__ "CONFIG_FEATURE_DEFAULT_PASSWD_ALGO"
+#else
+# define IF_FEATURE_DEFAULT_PASSWD_ALGO(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_DEFAULT_PASSWD_ALGO(...)
#undef CONFIG_SU
#define ENABLE_SU 0
@@ -1690,7 +2762,11 @@
*/
#define CONFIG_CHATTR 1
#define ENABLE_CHATTR 1
-#define IF_CHATTR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CHATTR(...) __VA_ARGS__ "CONFIG_CHATTR"
+#else
+# define IF_CHATTR(...) __VA_ARGS__
+#endif
#define IF_NOT_CHATTR(...)
#undef CONFIG_FSCK
#define ENABLE_FSCK 0
@@ -1698,11 +2774,19 @@
#define IF_NOT_FSCK(...) __VA_ARGS__
#define CONFIG_LSATTR 1
#define ENABLE_LSATTR 1
-#define IF_LSATTR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LSATTR(...) __VA_ARGS__ "CONFIG_LSATTR"
+#else
+# define IF_LSATTR(...) __VA_ARGS__
+#endif
#define IF_NOT_LSATTR(...)
#define CONFIG_TUNE2FS 1
#define ENABLE_TUNE2FS 1
-#define IF_TUNE2FS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TUNE2FS(...) __VA_ARGS__ "CONFIG_TUNE2FS"
+#else
+# define IF_TUNE2FS(...) __VA_ARGS__
+#endif
#define IF_NOT_TUNE2FS(...)
/*
@@ -1710,7 +2794,11 @@
*/
#define CONFIG_MODINFO 1
#define ENABLE_MODINFO 1
-#define IF_MODINFO(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MODINFO(...) __VA_ARGS__ "CONFIG_MODINFO"
+#else
+# define IF_MODINFO(...) __VA_ARGS__
+#endif
#define IF_NOT_MODINFO(...)
#undef CONFIG_MODPROBE_SMALL
#define ENABLE_MODPROBE_SMALL 0
@@ -1718,31 +2806,59 @@
#define IF_NOT_MODPROBE_SMALL(...) __VA_ARGS__
#define CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE 1
#define ENABLE_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE 1
-#define IF_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE(...) __VA_ARGS__ "CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE"
+#else
+# define IF_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE(...)
#define CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED 1
#define ENABLE_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED 1
-#define IF_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED(...) __VA_ARGS__ "CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED"
+#else
+# define IF_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED(...)
#define CONFIG_INSMOD 1
#define ENABLE_INSMOD 1
-#define IF_INSMOD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_INSMOD(...) __VA_ARGS__ "CONFIG_INSMOD"
+#else
+# define IF_INSMOD(...) __VA_ARGS__
+#endif
#define IF_NOT_INSMOD(...)
#define CONFIG_RMMOD 1
#define ENABLE_RMMOD 1
-#define IF_RMMOD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_RMMOD(...) __VA_ARGS__ "CONFIG_RMMOD"
+#else
+# define IF_RMMOD(...) __VA_ARGS__
+#endif
#define IF_NOT_RMMOD(...)
#define CONFIG_LSMOD 1
#define ENABLE_LSMOD 1
-#define IF_LSMOD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LSMOD(...) __VA_ARGS__ "CONFIG_LSMOD"
+#else
+# define IF_LSMOD(...) __VA_ARGS__
+#endif
#define IF_NOT_LSMOD(...)
#define CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT 1
#define ENABLE_FEATURE_LSMOD_PRETTY_2_6_OUTPUT 1
-#define IF_FEATURE_LSMOD_PRETTY_2_6_OUTPUT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LSMOD_PRETTY_2_6_OUTPUT(...) __VA_ARGS__ "CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT"
+#else
+# define IF_FEATURE_LSMOD_PRETTY_2_6_OUTPUT(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LSMOD_PRETTY_2_6_OUTPUT(...)
#define CONFIG_MODPROBE 1
#define ENABLE_MODPROBE 1
-#define IF_MODPROBE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MODPROBE(...) __VA_ARGS__ "CONFIG_MODPROBE"
+#else
+# define IF_MODPROBE(...) __VA_ARGS__
+#endif
#define IF_NOT_MODPROBE(...)
#undef CONFIG_FEATURE_MODPROBE_BLACKLIST
#define ENABLE_FEATURE_MODPROBE_BLACKLIST 0
@@ -1750,7 +2866,11 @@
#define IF_NOT_FEATURE_MODPROBE_BLACKLIST(...) __VA_ARGS__
#define CONFIG_DEPMOD 1
#define ENABLE_DEPMOD 1
-#define IF_DEPMOD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DEPMOD(...) __VA_ARGS__ "CONFIG_DEPMOD"
+#else
+# define IF_DEPMOD(...) __VA_ARGS__
+#endif
#define IF_NOT_DEPMOD(...)
/*
@@ -1762,7 +2882,11 @@
#define IF_NOT_FEATURE_2_4_MODULES(...) __VA_ARGS__
#define CONFIG_FEATURE_INSMOD_TRY_MMAP 1
#define ENABLE_FEATURE_INSMOD_TRY_MMAP 1
-#define IF_FEATURE_INSMOD_TRY_MMAP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_INSMOD_TRY_MMAP(...) __VA_ARGS__ "CONFIG_FEATURE_INSMOD_TRY_MMAP"
+#else
+# define IF_FEATURE_INSMOD_TRY_MMAP(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_INSMOD_TRY_MMAP(...)
#undef CONFIG_FEATURE_INSMOD_VERSION_CHECKING
#define ENABLE_FEATURE_INSMOD_VERSION_CHECKING 0
@@ -1786,19 +2910,35 @@
#define IF_NOT_FEATURE_INSMOD_LOAD_MAP_FULL(...) __VA_ARGS__
#define CONFIG_FEATURE_CHECK_TAINTED_MODULE 1
#define ENABLE_FEATURE_CHECK_TAINTED_MODULE 1
-#define IF_FEATURE_CHECK_TAINTED_MODULE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_CHECK_TAINTED_MODULE(...) __VA_ARGS__ "CONFIG_FEATURE_CHECK_TAINTED_MODULE"
+#else
+# define IF_FEATURE_CHECK_TAINTED_MODULE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_CHECK_TAINTED_MODULE(...)
#define CONFIG_FEATURE_MODUTILS_ALIAS 1
#define ENABLE_FEATURE_MODUTILS_ALIAS 1
-#define IF_FEATURE_MODUTILS_ALIAS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MODUTILS_ALIAS(...) __VA_ARGS__ "CONFIG_FEATURE_MODUTILS_ALIAS"
+#else
+# define IF_FEATURE_MODUTILS_ALIAS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MODUTILS_ALIAS(...)
#define CONFIG_FEATURE_MODUTILS_SYMBOLS 1
#define ENABLE_FEATURE_MODUTILS_SYMBOLS 1
-#define IF_FEATURE_MODUTILS_SYMBOLS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MODUTILS_SYMBOLS(...) __VA_ARGS__ "CONFIG_FEATURE_MODUTILS_SYMBOLS"
+#else
+# define IF_FEATURE_MODUTILS_SYMBOLS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MODUTILS_SYMBOLS(...)
#define CONFIG_DEFAULT_DEPMOD_FILE "modules.dep"
#define ENABLE_DEFAULT_DEPMOD_FILE 1
-#define IF_DEFAULT_DEPMOD_FILE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DEFAULT_DEPMOD_FILE(...) __VA_ARGS__ "CONFIG_DEFAULT_DEPMOD_FILE"
+#else
+# define IF_DEFAULT_DEPMOD_FILE(...) __VA_ARGS__
+#endif
#define IF_NOT_DEFAULT_DEPMOD_FILE(...)
/*
@@ -1806,11 +2946,19 @@
*/
#define CONFIG_BLOCKDEV 1
#define ENABLE_BLOCKDEV 1
-#define IF_BLOCKDEV(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_BLOCKDEV(...) __VA_ARGS__ "CONFIG_BLOCKDEV"
+#else
+# define IF_BLOCKDEV(...) __VA_ARGS__
+#endif
#define IF_NOT_BLOCKDEV(...)
#define CONFIG_FSTRIM 1
#define ENABLE_FSTRIM 1
-#define IF_FSTRIM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FSTRIM(...) __VA_ARGS__ "CONFIG_FSTRIM"
+#else
+# define IF_FSTRIM(...) __VA_ARGS__
+#endif
#define IF_NOT_FSTRIM(...)
#undef CONFIG_MDEV
#define ENABLE_MDEV 0
@@ -1838,7 +2986,11 @@
#define IF_NOT_FEATURE_MDEV_LOAD_FIRMWARE(...) __VA_ARGS__
#define CONFIG_REV 1
#define ENABLE_REV 1
-#define IF_REV(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_REV(...) __VA_ARGS__ "CONFIG_REV"
+#else
+# define IF_REV(...) __VA_ARGS__
+#endif
#define IF_NOT_REV(...)
#undef CONFIG_ACPID
#define ENABLE_ACPID 0
@@ -1850,15 +3002,27 @@
#define IF_NOT_FEATURE_ACPID_COMPAT(...) __VA_ARGS__
#define CONFIG_BLKID 1
#define ENABLE_BLKID 1
-#define IF_BLKID(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_BLKID(...) __VA_ARGS__ "CONFIG_BLKID"
+#else
+# define IF_BLKID(...) __VA_ARGS__
+#endif
#define IF_NOT_BLKID(...)
#define CONFIG_FEATURE_BLKID_TYPE 1
#define ENABLE_FEATURE_BLKID_TYPE 1
-#define IF_FEATURE_BLKID_TYPE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_BLKID_TYPE(...) __VA_ARGS__ "CONFIG_FEATURE_BLKID_TYPE"
+#else
+# define IF_FEATURE_BLKID_TYPE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_BLKID_TYPE(...)
#define CONFIG_DMESG 1
#define ENABLE_DMESG 1
-#define IF_DMESG(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DMESG(...) __VA_ARGS__ "CONFIG_DMESG"
+#else
+# define IF_DMESG(...) __VA_ARGS__
+#endif
#define IF_NOT_DMESG(...)
#undef CONFIG_FEATURE_DMESG_PRETTY
#define ENABLE_FEATURE_DMESG_PRETTY 0
@@ -1886,15 +3050,27 @@
#define IF_NOT_FDFORMAT(...) __VA_ARGS__
#define CONFIG_FDISK 1
#define ENABLE_FDISK 1
-#define IF_FDISK(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FDISK(...) __VA_ARGS__ "CONFIG_FDISK"
+#else
+# define IF_FDISK(...) __VA_ARGS__
+#endif
#define IF_NOT_FDISK(...)
#define CONFIG_FDISK_SUPPORT_LARGE_DISKS 1
#define ENABLE_FDISK_SUPPORT_LARGE_DISKS 1
-#define IF_FDISK_SUPPORT_LARGE_DISKS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FDISK_SUPPORT_LARGE_DISKS(...) __VA_ARGS__ "CONFIG_FDISK_SUPPORT_LARGE_DISKS"
+#else
+# define IF_FDISK_SUPPORT_LARGE_DISKS(...) __VA_ARGS__
+#endif
#define IF_NOT_FDISK_SUPPORT_LARGE_DISKS(...)
#define CONFIG_FEATURE_FDISK_WRITABLE 1
#define ENABLE_FEATURE_FDISK_WRITABLE 1
-#define IF_FEATURE_FDISK_WRITABLE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FDISK_WRITABLE(...) __VA_ARGS__ "CONFIG_FEATURE_FDISK_WRITABLE"
+#else
+# define IF_FEATURE_FDISK_WRITABLE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FDISK_WRITABLE(...)
#undef CONFIG_FEATURE_AIX_LABEL
#define ENABLE_FEATURE_AIX_LABEL 0
@@ -1926,11 +3102,19 @@
#define IF_NOT_FINDFS(...) __VA_ARGS__
#define CONFIG_FLOCK 1
#define ENABLE_FLOCK 1
-#define IF_FLOCK(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FLOCK(...) __VA_ARGS__ "CONFIG_FLOCK"
+#else
+# define IF_FLOCK(...) __VA_ARGS__
+#endif
#define IF_NOT_FLOCK(...)
#define CONFIG_FREERAMDISK 1
#define ENABLE_FREERAMDISK 1
-#define IF_FREERAMDISK(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FREERAMDISK(...) __VA_ARGS__ "CONFIG_FREERAMDISK"
+#else
+# define IF_FREERAMDISK(...) __VA_ARGS__
+#endif
#define IF_NOT_FREERAMDISK(...)
#undef CONFIG_FSCK_MINIX
#define ENABLE_FSCK_MINIX 0
@@ -1938,7 +3122,11 @@
#define IF_NOT_FSCK_MINIX(...) __VA_ARGS__
#define CONFIG_MKFS_EXT2 1
#define ENABLE_MKFS_EXT2 1
-#define IF_MKFS_EXT2(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MKFS_EXT2(...) __VA_ARGS__ "CONFIG_MKFS_EXT2"
+#else
+# define IF_MKFS_EXT2(...) __VA_ARGS__
+#endif
#define IF_NOT_MKFS_EXT2(...)
#undef CONFIG_MKFS_MINIX
#define ENABLE_MKFS_MINIX 0
@@ -1954,23 +3142,43 @@
#define IF_NOT_MKFS_REISER(...) __VA_ARGS__
#define CONFIG_MKFS_VFAT 1
#define ENABLE_MKFS_VFAT 1
-#define IF_MKFS_VFAT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MKFS_VFAT(...) __VA_ARGS__ "CONFIG_MKFS_VFAT"
+#else
+# define IF_MKFS_VFAT(...) __VA_ARGS__
+#endif
#define IF_NOT_MKFS_VFAT(...)
#define CONFIG_GETOPT 1
#define ENABLE_GETOPT 1
-#define IF_GETOPT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_GETOPT(...) __VA_ARGS__ "CONFIG_GETOPT"
+#else
+# define IF_GETOPT(...) __VA_ARGS__
+#endif
#define IF_NOT_GETOPT(...)
#define CONFIG_FEATURE_GETOPT_LONG 1
#define ENABLE_FEATURE_GETOPT_LONG 1
-#define IF_FEATURE_GETOPT_LONG(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_GETOPT_LONG(...) __VA_ARGS__ "CONFIG_FEATURE_GETOPT_LONG"
+#else
+# define IF_FEATURE_GETOPT_LONG(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_GETOPT_LONG(...)
#define CONFIG_HEXDUMP 1
#define ENABLE_HEXDUMP 1
-#define IF_HEXDUMP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_HEXDUMP(...) __VA_ARGS__ "CONFIG_HEXDUMP"
+#else
+# define IF_HEXDUMP(...) __VA_ARGS__
+#endif
#define IF_NOT_HEXDUMP(...)
#define CONFIG_FEATURE_HEXDUMP_REVERSE 1
#define ENABLE_FEATURE_HEXDUMP_REVERSE 1
-#define IF_FEATURE_HEXDUMP_REVERSE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_HEXDUMP_REVERSE(...) __VA_ARGS__ "CONFIG_FEATURE_HEXDUMP_REVERSE"
+#else
+# define IF_FEATURE_HEXDUMP_REVERSE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_HEXDUMP_REVERSE(...)
#undef CONFIG_HD
#define ENABLE_HD 0
@@ -1998,7 +3206,11 @@
#define IF_NOT_IPCS(...) __VA_ARGS__
#define CONFIG_LOSETUP 1
#define ENABLE_LOSETUP 1
-#define IF_LOSETUP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LOSETUP(...) __VA_ARGS__ "CONFIG_LOSETUP"
+#else
+# define IF_LOSETUP(...) __VA_ARGS__
+#endif
#define IF_NOT_LOSETUP(...)
#undef CONFIG_LSPCI
#define ENABLE_LSPCI 0
@@ -2006,11 +3218,19 @@
#define IF_NOT_LSPCI(...) __VA_ARGS__
#define CONFIG_LSUSB 1
#define ENABLE_LSUSB 1
-#define IF_LSUSB(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LSUSB(...) __VA_ARGS__ "CONFIG_LSUSB"
+#else
+# define IF_LSUSB(...) __VA_ARGS__
+#endif
#define IF_NOT_LSUSB(...)
#define CONFIG_MKSWAP 1
#define ENABLE_MKSWAP 1
-#define IF_MKSWAP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MKSWAP(...) __VA_ARGS__ "CONFIG_MKSWAP"
+#else
+# define IF_MKSWAP(...) __VA_ARGS__
+#endif
#define IF_NOT_MKSWAP(...)
#undef CONFIG_FEATURE_MKSWAP_UUID
#define ENABLE_FEATURE_MKSWAP_UUID 0
@@ -2018,19 +3238,35 @@
#define IF_NOT_FEATURE_MKSWAP_UUID(...) __VA_ARGS__
#define CONFIG_MORE 1
#define ENABLE_MORE 1
-#define IF_MORE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MORE(...) __VA_ARGS__ "CONFIG_MORE"
+#else
+# define IF_MORE(...) __VA_ARGS__
+#endif
#define IF_NOT_MORE(...)
#define CONFIG_MOUNT 1
#define ENABLE_MOUNT 1
-#define IF_MOUNT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MOUNT(...) __VA_ARGS__ "CONFIG_MOUNT"
+#else
+# define IF_MOUNT(...) __VA_ARGS__
+#endif
#define IF_NOT_MOUNT(...)
#define CONFIG_FEATURE_MOUNT_FAKE 1
#define ENABLE_FEATURE_MOUNT_FAKE 1
-#define IF_FEATURE_MOUNT_FAKE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MOUNT_FAKE(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_FAKE"
+#else
+# define IF_FEATURE_MOUNT_FAKE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MOUNT_FAKE(...)
#define CONFIG_FEATURE_MOUNT_VERBOSE 1
#define ENABLE_FEATURE_MOUNT_VERBOSE 1
-#define IF_FEATURE_MOUNT_VERBOSE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MOUNT_VERBOSE(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_VERBOSE"
+#else
+# define IF_FEATURE_MOUNT_VERBOSE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MOUNT_VERBOSE(...)
#undef CONFIG_FEATURE_MOUNT_HELPERS
#define ENABLE_FEATURE_MOUNT_HELPERS 0
@@ -2038,23 +3274,43 @@
#define IF_NOT_FEATURE_MOUNT_HELPERS(...) __VA_ARGS__
#define CONFIG_FEATURE_MOUNT_LABEL 1
#define ENABLE_FEATURE_MOUNT_LABEL 1
-#define IF_FEATURE_MOUNT_LABEL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MOUNT_LABEL(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_LABEL"
+#else
+# define IF_FEATURE_MOUNT_LABEL(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MOUNT_LABEL(...)
#define CONFIG_FEATURE_MOUNT_NFS 1
#define ENABLE_FEATURE_MOUNT_NFS 1
-#define IF_FEATURE_MOUNT_NFS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MOUNT_NFS(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_NFS"
+#else
+# define IF_FEATURE_MOUNT_NFS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MOUNT_NFS(...)
#define CONFIG_FEATURE_MOUNT_CIFS 1
#define ENABLE_FEATURE_MOUNT_CIFS 1
-#define IF_FEATURE_MOUNT_CIFS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MOUNT_CIFS(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_CIFS"
+#else
+# define IF_FEATURE_MOUNT_CIFS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MOUNT_CIFS(...)
#define CONFIG_FEATURE_MOUNT_FLAGS 1
#define ENABLE_FEATURE_MOUNT_FLAGS 1
-#define IF_FEATURE_MOUNT_FLAGS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MOUNT_FLAGS(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_FLAGS"
+#else
+# define IF_FEATURE_MOUNT_FLAGS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MOUNT_FLAGS(...)
#define CONFIG_FEATURE_MOUNT_FSTAB 1
#define ENABLE_FEATURE_MOUNT_FSTAB 1
-#define IF_FEATURE_MOUNT_FSTAB(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MOUNT_FSTAB(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_FSTAB"
+#else
+# define IF_FEATURE_MOUNT_FSTAB(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MOUNT_FSTAB(...)
#undef CONFIG_PIVOT_ROOT
#define ENABLE_PIVOT_ROOT 0
@@ -2066,7 +3322,11 @@
#define IF_NOT_RDATE(...) __VA_ARGS__
#define CONFIG_RDEV 1
#define ENABLE_RDEV 1
-#define IF_RDEV(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_RDEV(...) __VA_ARGS__ "CONFIG_RDEV"
+#else
+# define IF_RDEV(...) __VA_ARGS__
+#endif
#define IF_NOT_RDEV(...)
#undef CONFIG_READPROFILE
#define ENABLE_READPROFILE 0
@@ -2090,7 +3350,11 @@
#define IF_NOT_SETARCH(...) __VA_ARGS__
#define CONFIG_SWAPONOFF 1
#define ENABLE_SWAPONOFF 1
-#define IF_SWAPONOFF(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SWAPONOFF(...) __VA_ARGS__ "CONFIG_SWAPONOFF"
+#else
+# define IF_SWAPONOFF(...) __VA_ARGS__
+#endif
#define IF_NOT_SWAPONOFF(...)
#undef CONFIG_FEATURE_SWAPON_PRI
#define ENABLE_FEATURE_SWAPON_PRI 0
@@ -2102,11 +3366,19 @@
#define IF_NOT_SWITCH_ROOT(...) __VA_ARGS__
#define CONFIG_UMOUNT 1
#define ENABLE_UMOUNT 1
-#define IF_UMOUNT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UMOUNT(...) __VA_ARGS__ "CONFIG_UMOUNT"
+#else
+# define IF_UMOUNT(...) __VA_ARGS__
+#endif
#define IF_NOT_UMOUNT(...)
#define CONFIG_FEATURE_UMOUNT_ALL 1
#define ENABLE_FEATURE_UMOUNT_ALL 1
-#define IF_FEATURE_UMOUNT_ALL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_UMOUNT_ALL(...) __VA_ARGS__ "CONFIG_FEATURE_UMOUNT_ALL"
+#else
+# define IF_FEATURE_UMOUNT_ALL(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_UMOUNT_ALL(...)
/*
@@ -2114,11 +3386,19 @@
*/
#define CONFIG_FEATURE_MOUNT_LOOP 1
#define ENABLE_FEATURE_MOUNT_LOOP 1
-#define IF_FEATURE_MOUNT_LOOP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MOUNT_LOOP(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_LOOP"
+#else
+# define IF_FEATURE_MOUNT_LOOP(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MOUNT_LOOP(...)
#define CONFIG_FEATURE_MOUNT_LOOP_CREATE 1
#define ENABLE_FEATURE_MOUNT_LOOP_CREATE 1
-#define IF_FEATURE_MOUNT_LOOP_CREATE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MOUNT_LOOP_CREATE(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_LOOP_CREATE"
+#else
+# define IF_FEATURE_MOUNT_LOOP_CREATE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MOUNT_LOOP_CREATE(...)
#undef CONFIG_FEATURE_MTAB_SUPPORT
#define ENABLE_FEATURE_MTAB_SUPPORT 0
@@ -2126,92 +3406,132 @@
#define IF_NOT_FEATURE_MTAB_SUPPORT(...) __VA_ARGS__
#define CONFIG_VOLUMEID 1
#define ENABLE_VOLUMEID 1
-#define IF_VOLUMEID(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_VOLUMEID(...) __VA_ARGS__ "CONFIG_VOLUMEID"
+#else
+# define IF_VOLUMEID(...) __VA_ARGS__
+#endif
#define IF_NOT_VOLUMEID(...)
/*
* Filesystem/Volume identification
*/
-#define CONFIG_FEATURE_VOLUMEID_EXT 1
-#define ENABLE_FEATURE_VOLUMEID_EXT 1
-#define IF_FEATURE_VOLUMEID_EXT(...) __VA_ARGS__
-#define IF_NOT_FEATURE_VOLUMEID_EXT(...)
#undef CONFIG_FEATURE_VOLUMEID_BTRFS
#define ENABLE_FEATURE_VOLUMEID_BTRFS 0
#define IF_FEATURE_VOLUMEID_BTRFS(...)
#define IF_NOT_FEATURE_VOLUMEID_BTRFS(...) __VA_ARGS__
-#undef CONFIG_FEATURE_VOLUMEID_REISERFS
-#define ENABLE_FEATURE_VOLUMEID_REISERFS 0
-#define IF_FEATURE_VOLUMEID_REISERFS(...)
-#define IF_NOT_FEATURE_VOLUMEID_REISERFS(...) __VA_ARGS__
-#define CONFIG_FEATURE_VOLUMEID_FAT 1
-#define ENABLE_FEATURE_VOLUMEID_FAT 1
-#define IF_FEATURE_VOLUMEID_FAT(...) __VA_ARGS__
-#define IF_NOT_FEATURE_VOLUMEID_FAT(...)
+#undef CONFIG_FEATURE_VOLUMEID_CRAMFS
+#define ENABLE_FEATURE_VOLUMEID_CRAMFS 0
+#define IF_FEATURE_VOLUMEID_CRAMFS(...)
+#define IF_NOT_FEATURE_VOLUMEID_CRAMFS(...) __VA_ARGS__
#define CONFIG_FEATURE_VOLUMEID_EXFAT 1
#define ENABLE_FEATURE_VOLUMEID_EXFAT 1
-#define IF_FEATURE_VOLUMEID_EXFAT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_VOLUMEID_EXFAT(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_EXFAT"
+#else
+# define IF_FEATURE_VOLUMEID_EXFAT(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_VOLUMEID_EXFAT(...)
+#define CONFIG_FEATURE_VOLUMEID_EXT 1
+#define ENABLE_FEATURE_VOLUMEID_EXT 1
+#ifdef MAKE_SUID
+# define IF_FEATURE_VOLUMEID_EXT(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_EXT"
+#else
+# define IF_FEATURE_VOLUMEID_EXT(...) __VA_ARGS__
+#endif
+#define IF_NOT_FEATURE_VOLUMEID_EXT(...)
+#define CONFIG_FEATURE_VOLUMEID_F2FS 1
+#define ENABLE_FEATURE_VOLUMEID_F2FS 1
+#ifdef MAKE_SUID
+# define IF_FEATURE_VOLUMEID_F2FS(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_F2FS"
+#else
+# define IF_FEATURE_VOLUMEID_F2FS(...) __VA_ARGS__
+#endif
+#define IF_NOT_FEATURE_VOLUMEID_F2FS(...)
+#define CONFIG_FEATURE_VOLUMEID_FAT 1
+#define ENABLE_FEATURE_VOLUMEID_FAT 1
+#ifdef MAKE_SUID
+# define IF_FEATURE_VOLUMEID_FAT(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_FAT"
+#else
+# define IF_FEATURE_VOLUMEID_FAT(...) __VA_ARGS__
+#endif
+#define IF_NOT_FEATURE_VOLUMEID_FAT(...)
#undef CONFIG_FEATURE_VOLUMEID_HFS
#define ENABLE_FEATURE_VOLUMEID_HFS 0
#define IF_FEATURE_VOLUMEID_HFS(...)
#define IF_NOT_FEATURE_VOLUMEID_HFS(...) __VA_ARGS__
+#define CONFIG_FEATURE_VOLUMEID_ISO9660 1
+#define ENABLE_FEATURE_VOLUMEID_ISO9660 1
+#ifdef MAKE_SUID
+# define IF_FEATURE_VOLUMEID_ISO9660(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_ISO9660"
+#else
+# define IF_FEATURE_VOLUMEID_ISO9660(...) __VA_ARGS__
+#endif
+#define IF_NOT_FEATURE_VOLUMEID_ISO9660(...)
#undef CONFIG_FEATURE_VOLUMEID_JFS
#define ENABLE_FEATURE_VOLUMEID_JFS 0
#define IF_FEATURE_VOLUMEID_JFS(...)
#define IF_NOT_FEATURE_VOLUMEID_JFS(...) __VA_ARGS__
-#undef CONFIG_FEATURE_VOLUMEID_XFS
-#define ENABLE_FEATURE_VOLUMEID_XFS 0
-#define IF_FEATURE_VOLUMEID_XFS(...)
-#define IF_NOT_FEATURE_VOLUMEID_XFS(...) __VA_ARGS__
+#undef CONFIG_FEATURE_VOLUMEID_LINUXRAID
+#define ENABLE_FEATURE_VOLUMEID_LINUXRAID 0
+#define IF_FEATURE_VOLUMEID_LINUXRAID(...)
+#define IF_NOT_FEATURE_VOLUMEID_LINUXRAID(...) __VA_ARGS__
+#define CONFIG_FEATURE_VOLUMEID_LINUXSWAP 1
+#define ENABLE_FEATURE_VOLUMEID_LINUXSWAP 1
+#ifdef MAKE_SUID
+# define IF_FEATURE_VOLUMEID_LINUXSWAP(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_LINUXSWAP"
+#else
+# define IF_FEATURE_VOLUMEID_LINUXSWAP(...) __VA_ARGS__
+#endif
+#define IF_NOT_FEATURE_VOLUMEID_LINUXSWAP(...)
+#undef CONFIG_FEATURE_VOLUMEID_LUKS
+#define ENABLE_FEATURE_VOLUMEID_LUKS 0
+#define IF_FEATURE_VOLUMEID_LUKS(...)
+#define IF_NOT_FEATURE_VOLUMEID_LUKS(...) __VA_ARGS__
#undef CONFIG_FEATURE_VOLUMEID_NILFS
#define ENABLE_FEATURE_VOLUMEID_NILFS 0
#define IF_FEATURE_VOLUMEID_NILFS(...)
#define IF_NOT_FEATURE_VOLUMEID_NILFS(...) __VA_ARGS__
#define CONFIG_FEATURE_VOLUMEID_NTFS 1
#define ENABLE_FEATURE_VOLUMEID_NTFS 1
-#define IF_FEATURE_VOLUMEID_NTFS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_VOLUMEID_NTFS(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_NTFS"
+#else
+# define IF_FEATURE_VOLUMEID_NTFS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_VOLUMEID_NTFS(...)
-#define CONFIG_FEATURE_VOLUMEID_ISO9660 1
-#define ENABLE_FEATURE_VOLUMEID_ISO9660 1
-#define IF_FEATURE_VOLUMEID_ISO9660(...) __VA_ARGS__
-#define IF_NOT_FEATURE_VOLUMEID_ISO9660(...)
-#undef CONFIG_FEATURE_VOLUMEID_UDF
-#define ENABLE_FEATURE_VOLUMEID_UDF 0
-#define IF_FEATURE_VOLUMEID_UDF(...)
-#define IF_NOT_FEATURE_VOLUMEID_UDF(...) __VA_ARGS__
-#undef CONFIG_FEATURE_VOLUMEID_LUKS
-#define ENABLE_FEATURE_VOLUMEID_LUKS 0
-#define IF_FEATURE_VOLUMEID_LUKS(...)
-#define IF_NOT_FEATURE_VOLUMEID_LUKS(...) __VA_ARGS__
-#define CONFIG_FEATURE_VOLUMEID_LINUXSWAP 1
-#define ENABLE_FEATURE_VOLUMEID_LINUXSWAP 1
-#define IF_FEATURE_VOLUMEID_LINUXSWAP(...) __VA_ARGS__
-#define IF_NOT_FEATURE_VOLUMEID_LINUXSWAP(...)
-#undef CONFIG_FEATURE_VOLUMEID_CRAMFS
-#define ENABLE_FEATURE_VOLUMEID_CRAMFS 0
-#define IF_FEATURE_VOLUMEID_CRAMFS(...)
-#define IF_NOT_FEATURE_VOLUMEID_CRAMFS(...) __VA_ARGS__
+#undef CONFIG_FEATURE_VOLUMEID_OCFS2
+#define ENABLE_FEATURE_VOLUMEID_OCFS2 0
+#define IF_FEATURE_VOLUMEID_OCFS2(...)
+#define IF_NOT_FEATURE_VOLUMEID_OCFS2(...) __VA_ARGS__
+#undef CONFIG_FEATURE_VOLUMEID_REISERFS
+#define ENABLE_FEATURE_VOLUMEID_REISERFS 0
+#define IF_FEATURE_VOLUMEID_REISERFS(...)
+#define IF_NOT_FEATURE_VOLUMEID_REISERFS(...) __VA_ARGS__
#undef CONFIG_FEATURE_VOLUMEID_ROMFS
#define ENABLE_FEATURE_VOLUMEID_ROMFS 0
#define IF_FEATURE_VOLUMEID_ROMFS(...)
#define IF_NOT_FEATURE_VOLUMEID_ROMFS(...) __VA_ARGS__
#define CONFIG_FEATURE_VOLUMEID_SQUASHFS 1
#define ENABLE_FEATURE_VOLUMEID_SQUASHFS 1
-#define IF_FEATURE_VOLUMEID_SQUASHFS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_VOLUMEID_SQUASHFS(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_SQUASHFS"
+#else
+# define IF_FEATURE_VOLUMEID_SQUASHFS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_VOLUMEID_SQUASHFS(...)
#undef CONFIG_FEATURE_VOLUMEID_SYSV
#define ENABLE_FEATURE_VOLUMEID_SYSV 0
#define IF_FEATURE_VOLUMEID_SYSV(...)
#define IF_NOT_FEATURE_VOLUMEID_SYSV(...) __VA_ARGS__
-#undef CONFIG_FEATURE_VOLUMEID_OCFS2
-#define ENABLE_FEATURE_VOLUMEID_OCFS2 0
-#define IF_FEATURE_VOLUMEID_OCFS2(...)
-#define IF_NOT_FEATURE_VOLUMEID_OCFS2(...) __VA_ARGS__
-#undef CONFIG_FEATURE_VOLUMEID_LINUXRAID
-#define ENABLE_FEATURE_VOLUMEID_LINUXRAID 0
-#define IF_FEATURE_VOLUMEID_LINUXRAID(...)
-#define IF_NOT_FEATURE_VOLUMEID_LINUXRAID(...) __VA_ARGS__
+#undef CONFIG_FEATURE_VOLUMEID_UDF
+#define ENABLE_FEATURE_VOLUMEID_UDF 0
+#define IF_FEATURE_VOLUMEID_UDF(...)
+#define IF_NOT_FEATURE_VOLUMEID_UDF(...) __VA_ARGS__
+#undef CONFIG_FEATURE_VOLUMEID_XFS
+#define ENABLE_FEATURE_VOLUMEID_XFS 0
+#define IF_FEATURE_VOLUMEID_XFS(...)
+#define IF_NOT_FEATURE_VOLUMEID_XFS(...) __VA_ARGS__
/*
* Miscellaneous Utilities
@@ -2222,11 +3542,19 @@
#define IF_NOT_CONSPY(...) __VA_ARGS__
#define CONFIG_LESS 1
#define ENABLE_LESS 1
-#define IF_LESS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LESS(...) __VA_ARGS__ "CONFIG_LESS"
+#else
+# define IF_LESS(...) __VA_ARGS__
+#endif
#define IF_NOT_LESS(...)
#define CONFIG_FEATURE_LESS_MAXLINES 65536
#define ENABLE_FEATURE_LESS_MAXLINES 1
-#define IF_FEATURE_LESS_MAXLINES(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LESS_MAXLINES(...) __VA_ARGS__ "CONFIG_FEATURE_LESS_MAXLINES"
+#else
+# define IF_FEATURE_LESS_MAXLINES(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LESS_MAXLINES(...)
#undef CONFIG_FEATURE_LESS_BRACKETS
#define ENABLE_FEATURE_LESS_BRACKETS 0
@@ -2238,19 +3566,35 @@
#define IF_NOT_FEATURE_LESS_FLAGS(...) __VA_ARGS__
#define CONFIG_FEATURE_LESS_MARKS 1
#define ENABLE_FEATURE_LESS_MARKS 1
-#define IF_FEATURE_LESS_MARKS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LESS_MARKS(...) __VA_ARGS__ "CONFIG_FEATURE_LESS_MARKS"
+#else
+# define IF_FEATURE_LESS_MARKS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LESS_MARKS(...)
#define CONFIG_FEATURE_LESS_REGEXP 1
#define ENABLE_FEATURE_LESS_REGEXP 1
-#define IF_FEATURE_LESS_REGEXP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LESS_REGEXP(...) __VA_ARGS__ "CONFIG_FEATURE_LESS_REGEXP"
+#else
+# define IF_FEATURE_LESS_REGEXP(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LESS_REGEXP(...)
#define CONFIG_FEATURE_LESS_WINCH 1
#define ENABLE_FEATURE_LESS_WINCH 1
-#define IF_FEATURE_LESS_WINCH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LESS_WINCH(...) __VA_ARGS__ "CONFIG_FEATURE_LESS_WINCH"
+#else
+# define IF_FEATURE_LESS_WINCH(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LESS_WINCH(...)
#define CONFIG_FEATURE_LESS_ASK_TERMINAL 1
#define ENABLE_FEATURE_LESS_ASK_TERMINAL 1
-#define IF_FEATURE_LESS_ASK_TERMINAL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LESS_ASK_TERMINAL(...) __VA_ARGS__ "CONFIG_FEATURE_LESS_ASK_TERMINAL"
+#else
+# define IF_FEATURE_LESS_ASK_TERMINAL(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LESS_ASK_TERMINAL(...)
#undef CONFIG_FEATURE_LESS_DASHCMD
#define ENABLE_FEATURE_LESS_DASHCMD 0
@@ -2262,15 +3606,31 @@
#define IF_NOT_FEATURE_LESS_LINENUMS(...) __VA_ARGS__
#define CONFIG_NANDWRITE 1
#define ENABLE_NANDWRITE 1
-#define IF_NANDWRITE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_NANDWRITE(...) __VA_ARGS__ "CONFIG_NANDWRITE"
+#else
+# define IF_NANDWRITE(...) __VA_ARGS__
+#endif
#define IF_NOT_NANDWRITE(...)
#define CONFIG_NANDDUMP 1
#define ENABLE_NANDDUMP 1
-#define IF_NANDDUMP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_NANDDUMP(...) __VA_ARGS__ "CONFIG_NANDDUMP"
+#else
+# define IF_NANDDUMP(...) __VA_ARGS__
+#endif
#define IF_NOT_NANDDUMP(...)
+#undef CONFIG_RFKILL
+#define ENABLE_RFKILL 0
+#define IF_RFKILL(...)
+#define IF_NOT_RFKILL(...) __VA_ARGS__
#define CONFIG_SETSERIAL 1
#define ENABLE_SETSERIAL 1
-#define IF_SETSERIAL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SETSERIAL(...) __VA_ARGS__ "CONFIG_SETSERIAL"
+#else
+# define IF_SETSERIAL(...) __VA_ARGS__
+#endif
#define IF_NOT_SETSERIAL(...)
#undef CONFIG_UBIATTACH
#define ENABLE_UBIATTACH 0
@@ -2296,17 +3656,33 @@
#define ENABLE_UBIUPDATEVOL 0
#define IF_UBIUPDATEVOL(...)
#define IF_NOT_UBIUPDATEVOL(...) __VA_ARGS__
+#undef CONFIG_WALL
+#define ENABLE_WALL 0
+#define IF_WALL(...)
+#define IF_NOT_WALL(...) __VA_ARGS__
#define CONFIG_ADJTIMEX 1
#define ENABLE_ADJTIMEX 1
-#define IF_ADJTIMEX(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ADJTIMEX(...) __VA_ARGS__ "CONFIG_ADJTIMEX"
+#else
+# define IF_ADJTIMEX(...) __VA_ARGS__
+#endif
#define IF_NOT_ADJTIMEX(...)
#define CONFIG_BBCONFIG 1
#define ENABLE_BBCONFIG 1
-#define IF_BBCONFIG(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_BBCONFIG(...) __VA_ARGS__ "CONFIG_BBCONFIG"
+#else
+# define IF_BBCONFIG(...) __VA_ARGS__
+#endif
#define IF_NOT_BBCONFIG(...)
#define CONFIG_FEATURE_COMPRESS_BBCONFIG 1
#define ENABLE_FEATURE_COMPRESS_BBCONFIG 1
-#define IF_FEATURE_COMPRESS_BBCONFIG(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_COMPRESS_BBCONFIG(...) __VA_ARGS__ "CONFIG_FEATURE_COMPRESS_BBCONFIG"
+#else
+# define IF_FEATURE_COMPRESS_BBCONFIG(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_COMPRESS_BBCONFIG(...)
#undef CONFIG_BEEP
#define ENABLE_BEEP 0
@@ -2314,11 +3690,19 @@
#define IF_NOT_BEEP(...) __VA_ARGS__
#define CONFIG_FEATURE_BEEP_FREQ 0
#define ENABLE_FEATURE_BEEP_FREQ 1
-#define IF_FEATURE_BEEP_FREQ(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_BEEP_FREQ(...) __VA_ARGS__ "CONFIG_FEATURE_BEEP_FREQ"
+#else
+# define IF_FEATURE_BEEP_FREQ(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_BEEP_FREQ(...)
#define CONFIG_FEATURE_BEEP_LENGTH_MS 0
#define ENABLE_FEATURE_BEEP_LENGTH_MS 1
-#define IF_FEATURE_BEEP_LENGTH_MS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_BEEP_LENGTH_MS(...) __VA_ARGS__ "CONFIG_FEATURE_BEEP_LENGTH_MS"
+#else
+# define IF_FEATURE_BEEP_LENGTH_MS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_BEEP_LENGTH_MS(...)
#undef CONFIG_CHAT
#define ENABLE_CHAT 0
@@ -2358,7 +3742,11 @@
#define IF_NOT_CHRT(...) __VA_ARGS__
#define CONFIG_CROND 1
#define ENABLE_CROND 1
-#define IF_CROND(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CROND(...) __VA_ARGS__ "CONFIG_CROND"
+#else
+# define IF_CROND(...) __VA_ARGS__
+#endif
#define IF_NOT_CROND(...)
#undef CONFIG_FEATURE_CROND_D
#define ENABLE_FEATURE_CROND_D 0
@@ -2370,19 +3758,35 @@
#define IF_NOT_FEATURE_CROND_CALL_SENDMAIL(...) __VA_ARGS__
#define CONFIG_FEATURE_CROND_DIR "/system/etc/cron.d"
#define ENABLE_FEATURE_CROND_DIR 1
-#define IF_FEATURE_CROND_DIR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_CROND_DIR(...) __VA_ARGS__ "CONFIG_FEATURE_CROND_DIR"
+#else
+# define IF_FEATURE_CROND_DIR(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_CROND_DIR(...)
#define CONFIG_CRONTAB 1
#define ENABLE_CRONTAB 1
-#define IF_CRONTAB(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CRONTAB(...) __VA_ARGS__ "CONFIG_CRONTAB"
+#else
+# define IF_CRONTAB(...) __VA_ARGS__
+#endif
#define IF_NOT_CRONTAB(...)
#define CONFIG_DC 1
#define ENABLE_DC 1
-#define IF_DC(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DC(...) __VA_ARGS__ "CONFIG_DC"
+#else
+# define IF_DC(...) __VA_ARGS__
+#endif
#define IF_NOT_DC(...)
#define CONFIG_FEATURE_DC_LIBM 1
#define ENABLE_FEATURE_DC_LIBM 1
-#define IF_FEATURE_DC_LIBM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_DC_LIBM(...) __VA_ARGS__ "CONFIG_FEATURE_DC_LIBM"
+#else
+# define IF_FEATURE_DC_LIBM(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_DC_LIBM(...)
#undef CONFIG_DEVFSD
#define ENABLE_DEVFSD 0
@@ -2406,7 +3810,11 @@
#define IF_NOT_FEATURE_DEVFS(...) __VA_ARGS__
#define CONFIG_DEVMEM 1
#define ENABLE_DEVMEM 1
-#define IF_DEVMEM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DEVMEM(...) __VA_ARGS__ "CONFIG_DEVMEM"
+#else
+# define IF_DEVMEM(...) __VA_ARGS__
+#endif
#define IF_NOT_DEVMEM(...)
#undef CONFIG_EJECT
#define ENABLE_EJECT 0
@@ -2418,19 +3826,35 @@
#define IF_NOT_FEATURE_EJECT_SCSI(...) __VA_ARGS__
#define CONFIG_FBSPLASH 1
#define ENABLE_FBSPLASH 1
-#define IF_FBSPLASH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FBSPLASH(...) __VA_ARGS__ "CONFIG_FBSPLASH"
+#else
+# define IF_FBSPLASH(...) __VA_ARGS__
+#endif
#define IF_NOT_FBSPLASH(...)
#define CONFIG_FLASHCP 1
#define ENABLE_FLASHCP 1
-#define IF_FLASHCP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FLASHCP(...) __VA_ARGS__ "CONFIG_FLASHCP"
+#else
+# define IF_FLASHCP(...) __VA_ARGS__
+#endif
#define IF_NOT_FLASHCP(...)
#define CONFIG_FLASH_LOCK 1
#define ENABLE_FLASH_LOCK 1
-#define IF_FLASH_LOCK(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FLASH_LOCK(...) __VA_ARGS__ "CONFIG_FLASH_LOCK"
+#else
+# define IF_FLASH_LOCK(...) __VA_ARGS__
+#endif
#define IF_NOT_FLASH_LOCK(...)
#define CONFIG_FLASH_UNLOCK 1
#define ENABLE_FLASH_UNLOCK 1
-#define IF_FLASH_UNLOCK(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FLASH_UNLOCK(...) __VA_ARGS__ "CONFIG_FLASH_UNLOCK"
+#else
+# define IF_FLASH_UNLOCK(...) __VA_ARGS__
+#endif
#define IF_NOT_FLASH_UNLOCK(...)
#undef CONFIG_FLASH_ERASEALL
#define ENABLE_FLASH_ERASEALL 0
@@ -2438,7 +3862,11 @@
#define IF_NOT_FLASH_ERASEALL(...) __VA_ARGS__
#define CONFIG_IONICE 1
#define ENABLE_IONICE 1
-#define IF_IONICE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_IONICE(...) __VA_ARGS__ "CONFIG_IONICE"
+#else
+# define IF_IONICE(...) __VA_ARGS__
+#endif
#define IF_NOT_IONICE(...)
#undef CONFIG_INOTIFYD
#define ENABLE_INOTIFYD 0
@@ -2498,7 +3926,11 @@
#define IF_NOT_FEATURE_MAKEDEVS_TABLE(...) __VA_ARGS__
#define CONFIG_MAN 1
#define ENABLE_MAN 1
-#define IF_MAN(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MAN(...) __VA_ARGS__ "CONFIG_MAN"
+#else
+# define IF_MAN(...) __VA_ARGS__
+#endif
#define IF_NOT_MAN(...)
#undef CONFIG_MICROCOM
#define ENABLE_MICROCOM 0
@@ -2506,7 +3938,11 @@
#define IF_NOT_MICROCOM(...) __VA_ARGS__
#define CONFIG_MOUNTPOINT 1
#define ENABLE_MOUNTPOINT 1
-#define IF_MOUNTPOINT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MOUNTPOINT(...) __VA_ARGS__ "CONFIG_MOUNTPOINT"
+#else
+# define IF_MOUNTPOINT(...) __VA_ARGS__
+#endif
#define IF_NOT_MOUNTPOINT(...)
#undef CONFIG_MT
#define ENABLE_MT 0
@@ -2520,54 +3956,78 @@
#define ENABLE_READAHEAD 0
#define IF_READAHEAD(...)
#define IF_NOT_READAHEAD(...) __VA_ARGS__
-#undef CONFIG_RFKILL
-#define ENABLE_RFKILL 0
-#define IF_RFKILL(...)
-#define IF_NOT_RFKILL(...) __VA_ARGS__
#undef CONFIG_RUNLEVEL
#define ENABLE_RUNLEVEL 0
#define IF_RUNLEVEL(...)
#define IF_NOT_RUNLEVEL(...) __VA_ARGS__
#define CONFIG_RX 1
#define ENABLE_RX 1
-#define IF_RX(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_RX(...) __VA_ARGS__ "CONFIG_RX"
+#else
+# define IF_RX(...) __VA_ARGS__
+#endif
#define IF_NOT_RX(...)
#define CONFIG_SETSID 1
#define ENABLE_SETSID 1
-#define IF_SETSID(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SETSID(...) __VA_ARGS__ "CONFIG_SETSID"
+#else
+# define IF_SETSID(...) __VA_ARGS__
+#endif
#define IF_NOT_SETSID(...)
#define CONFIG_STRINGS 1
#define ENABLE_STRINGS 1
-#define IF_STRINGS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_STRINGS(...) __VA_ARGS__ "CONFIG_STRINGS"
+#else
+# define IF_STRINGS(...) __VA_ARGS__
+#endif
#define IF_NOT_STRINGS(...)
#define CONFIG_TASKSET 1
#define ENABLE_TASKSET 1
-#define IF_TASKSET(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TASKSET(...) __VA_ARGS__ "CONFIG_TASKSET"
+#else
+# define IF_TASKSET(...) __VA_ARGS__
+#endif
#define IF_NOT_TASKSET(...)
#define CONFIG_FEATURE_TASKSET_FANCY 1
#define ENABLE_FEATURE_TASKSET_FANCY 1
-#define IF_FEATURE_TASKSET_FANCY(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TASKSET_FANCY(...) __VA_ARGS__ "CONFIG_FEATURE_TASKSET_FANCY"
+#else
+# define IF_FEATURE_TASKSET_FANCY(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TASKSET_FANCY(...)
#define CONFIG_TIME 1
#define ENABLE_TIME 1
-#define IF_TIME(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TIME(...) __VA_ARGS__ "CONFIG_TIME"
+#else
+# define IF_TIME(...) __VA_ARGS__
+#endif
#define IF_NOT_TIME(...)
#define CONFIG_TIMEOUT 1
#define ENABLE_TIMEOUT 1
-#define IF_TIMEOUT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TIMEOUT(...) __VA_ARGS__ "CONFIG_TIMEOUT"
+#else
+# define IF_TIMEOUT(...) __VA_ARGS__
+#endif
#define IF_NOT_TIMEOUT(...)
#define CONFIG_TTYSIZE 1
#define ENABLE_TTYSIZE 1
-#define IF_TTYSIZE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TTYSIZE(...) __VA_ARGS__ "CONFIG_TTYSIZE"
+#else
+# define IF_TTYSIZE(...) __VA_ARGS__
+#endif
#define IF_NOT_TTYSIZE(...)
#undef CONFIG_VOLNAME
#define ENABLE_VOLNAME 0
#define IF_VOLNAME(...)
#define IF_NOT_VOLNAME(...) __VA_ARGS__
-#undef CONFIG_WALL
-#define ENABLE_WALL 0
-#define IF_WALL(...)
-#define IF_NOT_WALL(...) __VA_ARGS__
#undef CONFIG_WATCHDOG
#define ENABLE_WATCHDOG 0
#define IF_WATCHDOG(...)
@@ -2586,19 +4046,35 @@
#define IF_NOT_FEATURE_NAMEIF_EXTENDED(...) __VA_ARGS__
#define CONFIG_NBDCLIENT 1
#define ENABLE_NBDCLIENT 1
-#define IF_NBDCLIENT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_NBDCLIENT(...) __VA_ARGS__ "CONFIG_NBDCLIENT"
+#else
+# define IF_NBDCLIENT(...) __VA_ARGS__
+#endif
#define IF_NOT_NBDCLIENT(...)
#define CONFIG_NC 1
#define ENABLE_NC 1
-#define IF_NC(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_NC(...) __VA_ARGS__ "CONFIG_NC"
+#else
+# define IF_NC(...) __VA_ARGS__
+#endif
#define IF_NOT_NC(...)
#define CONFIG_NC_SERVER 1
#define ENABLE_NC_SERVER 1
-#define IF_NC_SERVER(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_NC_SERVER(...) __VA_ARGS__ "CONFIG_NC_SERVER"
+#else
+# define IF_NC_SERVER(...) __VA_ARGS__
+#endif
#define IF_NOT_NC_SERVER(...)
#define CONFIG_NC_EXTRA 1
#define ENABLE_NC_EXTRA 1
-#define IF_NC_EXTRA(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_NC_EXTRA(...) __VA_ARGS__ "CONFIG_NC_EXTRA"
+#else
+# define IF_NC_EXTRA(...) __VA_ARGS__
+#endif
#define IF_NOT_NC_EXTRA(...)
#undef CONFIG_NC_110_COMPAT
#define ENABLE_NC_110_COMPAT 0
@@ -2606,7 +4082,11 @@
#define IF_NOT_NC_110_COMPAT(...) __VA_ARGS__
#define CONFIG_PING 1
#define ENABLE_PING 1
-#define IF_PING(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PING(...) __VA_ARGS__ "CONFIG_PING"
+#else
+# define IF_PING(...) __VA_ARGS__
+#endif
#define IF_NOT_PING(...)
#undef CONFIG_PING6
#define ENABLE_PING6 0
@@ -2614,7 +4094,11 @@
#define IF_NOT_PING6(...) __VA_ARGS__
#define CONFIG_FEATURE_FANCY_PING 1
#define ENABLE_FEATURE_FANCY_PING 1
-#define IF_FEATURE_FANCY_PING(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FANCY_PING(...) __VA_ARGS__ "CONFIG_FEATURE_FANCY_PING"
+#else
+# define IF_FEATURE_FANCY_PING(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FANCY_PING(...)
#undef CONFIG_WHOIS
#define ENABLE_WHOIS 0
@@ -2622,7 +4106,11 @@
#define IF_NOT_WHOIS(...) __VA_ARGS__
#define CONFIG_FEATURE_IPV6 1
#define ENABLE_FEATURE_IPV6 1
-#define IF_FEATURE_IPV6(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_IPV6(...) __VA_ARGS__ "CONFIG_FEATURE_IPV6"
+#else
+# define IF_FEATURE_IPV6(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_IPV6(...)
#undef CONFIG_FEATURE_UNIX_LOCAL
#define ENABLE_FEATURE_UNIX_LOCAL 0
@@ -2630,7 +4118,11 @@
#define IF_NOT_FEATURE_UNIX_LOCAL(...) __VA_ARGS__
#define CONFIG_FEATURE_PREFER_IPV4_ADDRESS 1
#define ENABLE_FEATURE_PREFER_IPV4_ADDRESS 1
-#define IF_FEATURE_PREFER_IPV4_ADDRESS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_PREFER_IPV4_ADDRESS(...) __VA_ARGS__ "CONFIG_FEATURE_PREFER_IPV4_ADDRESS"
+#else
+# define IF_FEATURE_PREFER_IPV4_ADDRESS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_PREFER_IPV4_ADDRESS(...)
#undef CONFIG_VERBOSE_RESOLUTION_ERRORS
#define ENABLE_VERBOSE_RESOLUTION_ERRORS 0
@@ -2638,7 +4130,11 @@
#define IF_NOT_VERBOSE_RESOLUTION_ERRORS(...) __VA_ARGS__
#define CONFIG_ARP 1
#define ENABLE_ARP 1
-#define IF_ARP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ARP(...) __VA_ARGS__ "CONFIG_ARP"
+#else
+# define IF_ARP(...) __VA_ARGS__
+#endif
#define IF_NOT_ARP(...)
#undef CONFIG_ARPING
#define ENABLE_ARPING 0
@@ -2646,19 +4142,35 @@
#define IF_NOT_ARPING(...) __VA_ARGS__
#define CONFIG_BRCTL 1
#define ENABLE_BRCTL 1
-#define IF_BRCTL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_BRCTL(...) __VA_ARGS__ "CONFIG_BRCTL"
+#else
+# define IF_BRCTL(...) __VA_ARGS__
+#endif
#define IF_NOT_BRCTL(...)
#define CONFIG_FEATURE_BRCTL_FANCY 1
#define ENABLE_FEATURE_BRCTL_FANCY 1
-#define IF_FEATURE_BRCTL_FANCY(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_BRCTL_FANCY(...) __VA_ARGS__ "CONFIG_FEATURE_BRCTL_FANCY"
+#else
+# define IF_FEATURE_BRCTL_FANCY(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_BRCTL_FANCY(...)
#define CONFIG_FEATURE_BRCTL_SHOW 1
#define ENABLE_FEATURE_BRCTL_SHOW 1
-#define IF_FEATURE_BRCTL_SHOW(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_BRCTL_SHOW(...) __VA_ARGS__ "CONFIG_FEATURE_BRCTL_SHOW"
+#else
+# define IF_FEATURE_BRCTL_SHOW(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_BRCTL_SHOW(...)
#define CONFIG_DNSD 1
#define ENABLE_DNSD 1
-#define IF_DNSD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DNSD(...) __VA_ARGS__ "CONFIG_DNSD"
+#else
+# define IF_DNSD(...) __VA_ARGS__
+#endif
#define IF_NOT_DNSD(...)
#undef CONFIG_ETHER_WAKE
#define ENABLE_ETHER_WAKE 0
@@ -2682,15 +4194,27 @@
#define IF_NOT_FEATURE_FTPD_ACCEPT_BROKEN_LIST(...) __VA_ARGS__
#define CONFIG_FTPGET 1
#define ENABLE_FTPGET 1
-#define IF_FTPGET(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FTPGET(...) __VA_ARGS__ "CONFIG_FTPGET"
+#else
+# define IF_FTPGET(...) __VA_ARGS__
+#endif
#define IF_NOT_FTPGET(...)
#define CONFIG_FTPPUT 1
#define ENABLE_FTPPUT 1
-#define IF_FTPPUT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FTPPUT(...) __VA_ARGS__ "CONFIG_FTPPUT"
+#else
+# define IF_FTPPUT(...) __VA_ARGS__
+#endif
#define IF_NOT_FTPPUT(...)
#define CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS 1
#define ENABLE_FEATURE_FTPGETPUT_LONG_OPTIONS 1
-#define IF_FEATURE_FTPGETPUT_LONG_OPTIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FTPGETPUT_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS"
+#else
+# define IF_FEATURE_FTPGETPUT_LONG_OPTIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FTPGETPUT_LONG_OPTIONS(...)
#undef CONFIG_HOSTNAME
#define ENABLE_HOSTNAME 0
@@ -2750,11 +4274,19 @@
#define IF_NOT_FEATURE_HTTPD_GZIP(...) __VA_ARGS__
#define CONFIG_IFCONFIG 1
#define ENABLE_IFCONFIG 1
-#define IF_IFCONFIG(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_IFCONFIG(...) __VA_ARGS__ "CONFIG_IFCONFIG"
+#else
+# define IF_IFCONFIG(...) __VA_ARGS__
+#endif
#define IF_NOT_IFCONFIG(...)
#define CONFIG_FEATURE_IFCONFIG_STATUS 1
#define ENABLE_FEATURE_IFCONFIG_STATUS 1
-#define IF_FEATURE_IFCONFIG_STATUS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_IFCONFIG_STATUS(...) __VA_ARGS__ "CONFIG_FEATURE_IFCONFIG_STATUS"
+#else
+# define IF_FEATURE_IFCONFIG_STATUS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_IFCONFIG_STATUS(...)
#undef CONFIG_FEATURE_IFCONFIG_SLIP
#define ENABLE_FEATURE_IFCONFIG_SLIP 0
@@ -2766,7 +4298,11 @@
#define IF_NOT_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ(...) __VA_ARGS__
#define CONFIG_FEATURE_IFCONFIG_HW 1
#define ENABLE_FEATURE_IFCONFIG_HW 1
-#define IF_FEATURE_IFCONFIG_HW(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_IFCONFIG_HW(...) __VA_ARGS__ "CONFIG_FEATURE_IFCONFIG_HW"
+#else
+# define IF_FEATURE_IFCONFIG_HW(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_IFCONFIG_HW(...)
#undef CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS
#define ENABLE_FEATURE_IFCONFIG_BROADCAST_PLUS 0
@@ -2786,7 +4322,11 @@
#define IF_NOT_IFUPDOWN(...) __VA_ARGS__
#define CONFIG_IFUPDOWN_IFSTATE_PATH ""
#define ENABLE_IFUPDOWN_IFSTATE_PATH 1
-#define IF_IFUPDOWN_IFSTATE_PATH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_IFUPDOWN_IFSTATE_PATH(...) __VA_ARGS__ "CONFIG_IFUPDOWN_IFSTATE_PATH"
+#else
+# define IF_IFUPDOWN_IFSTATE_PATH(...) __VA_ARGS__
+#endif
#define IF_NOT_IFUPDOWN_IFSTATE_PATH(...)
#undef CONFIG_FEATURE_IFUPDOWN_IP
#define ENABLE_FEATURE_IFUPDOWN_IP 0
@@ -2818,11 +4358,19 @@
#define IF_NOT_FEATURE_IFUPDOWN_EXTERNAL_DHCP(...) __VA_ARGS__
#define CONFIG_INETD 1
#define ENABLE_INETD 1
-#define IF_INETD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_INETD(...) __VA_ARGS__ "CONFIG_INETD"
+#else
+# define IF_INETD(...) __VA_ARGS__
+#endif
#define IF_NOT_INETD(...)
#define CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO 1
#define ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_ECHO 1
-#define IF_FEATURE_INETD_SUPPORT_BUILTIN_ECHO(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_INETD_SUPPORT_BUILTIN_ECHO(...) __VA_ARGS__ "CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO"
+#else
+# define IF_FEATURE_INETD_SUPPORT_BUILTIN_ECHO(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_INETD_SUPPORT_BUILTIN_ECHO(...)
#undef CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD
#define ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD 0
@@ -2830,11 +4378,19 @@
#define IF_NOT_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD(...) __VA_ARGS__
#define CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME 1
#define ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_TIME 1
-#define IF_FEATURE_INETD_SUPPORT_BUILTIN_TIME(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_INETD_SUPPORT_BUILTIN_TIME(...) __VA_ARGS__ "CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME"
+#else
+# define IF_FEATURE_INETD_SUPPORT_BUILTIN_TIME(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_INETD_SUPPORT_BUILTIN_TIME(...)
#define CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME 1
#define ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME 1
-#define IF_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME(...) __VA_ARGS__ "CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME"
+#else
+# define IF_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME(...)
#undef CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN
#define ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN 0
@@ -2846,19 +4402,35 @@
#define IF_NOT_FEATURE_INETD_RPC(...) __VA_ARGS__
#define CONFIG_IP 1
#define ENABLE_IP 1
-#define IF_IP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_IP(...) __VA_ARGS__ "CONFIG_IP"
+#else
+# define IF_IP(...) __VA_ARGS__
+#endif
#define IF_NOT_IP(...)
#define CONFIG_FEATURE_IP_ADDRESS 1
#define ENABLE_FEATURE_IP_ADDRESS 1
-#define IF_FEATURE_IP_ADDRESS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_IP_ADDRESS(...) __VA_ARGS__ "CONFIG_FEATURE_IP_ADDRESS"
+#else
+# define IF_FEATURE_IP_ADDRESS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_IP_ADDRESS(...)
#define CONFIG_FEATURE_IP_LINK 1
#define ENABLE_FEATURE_IP_LINK 1
-#define IF_FEATURE_IP_LINK(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_IP_LINK(...) __VA_ARGS__ "CONFIG_FEATURE_IP_LINK"
+#else
+# define IF_FEATURE_IP_LINK(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_IP_LINK(...)
#define CONFIG_FEATURE_IP_ROUTE 1
#define ENABLE_FEATURE_IP_ROUTE 1
-#define IF_FEATURE_IP_ROUTE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_IP_ROUTE(...) __VA_ARGS__ "CONFIG_FEATURE_IP_ROUTE"
+#else
+# define IF_FEATURE_IP_ROUTE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_IP_ROUTE(...)
#undef CONFIG_FEATURE_IP_TUNNEL
#define ENABLE_FEATURE_IP_TUNNEL 0
@@ -2866,7 +4438,11 @@
#define IF_NOT_FEATURE_IP_TUNNEL(...) __VA_ARGS__
#define CONFIG_FEATURE_IP_RULE 1
#define ENABLE_FEATURE_IP_RULE 1
-#define IF_FEATURE_IP_RULE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_IP_RULE(...) __VA_ARGS__ "CONFIG_FEATURE_IP_RULE"
+#else
+# define IF_FEATURE_IP_RULE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_IP_RULE(...)
#undef CONFIG_FEATURE_IP_SHORT_FORMS
#define ENABLE_FEATURE_IP_SHORT_FORMS 0
@@ -2910,23 +4486,43 @@
#define IF_NOT_FEATURE_IPCALC_LONG_OPTIONS(...) __VA_ARGS__
#define CONFIG_NETSTAT 1
#define ENABLE_NETSTAT 1
-#define IF_NETSTAT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_NETSTAT(...) __VA_ARGS__ "CONFIG_NETSTAT"
+#else
+# define IF_NETSTAT(...) __VA_ARGS__
+#endif
#define IF_NOT_NETSTAT(...)
#define CONFIG_FEATURE_NETSTAT_WIDE 1
#define ENABLE_FEATURE_NETSTAT_WIDE 1
-#define IF_FEATURE_NETSTAT_WIDE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_NETSTAT_WIDE(...) __VA_ARGS__ "CONFIG_FEATURE_NETSTAT_WIDE"
+#else
+# define IF_FEATURE_NETSTAT_WIDE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_NETSTAT_WIDE(...)
#define CONFIG_FEATURE_NETSTAT_PRG 1
#define ENABLE_FEATURE_NETSTAT_PRG 1
-#define IF_FEATURE_NETSTAT_PRG(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_NETSTAT_PRG(...) __VA_ARGS__ "CONFIG_FEATURE_NETSTAT_PRG"
+#else
+# define IF_FEATURE_NETSTAT_PRG(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_NETSTAT_PRG(...)
#define CONFIG_NSLOOKUP 1
#define ENABLE_NSLOOKUP 1
-#define IF_NSLOOKUP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_NSLOOKUP(...) __VA_ARGS__ "CONFIG_NSLOOKUP"
+#else
+# define IF_NSLOOKUP(...) __VA_ARGS__
+#endif
#define IF_NOT_NSLOOKUP(...)
#define CONFIG_NTPD 1
#define ENABLE_NTPD 1
-#define IF_NTPD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_NTPD(...) __VA_ARGS__ "CONFIG_NTPD"
+#else
+# define IF_NTPD(...) __VA_ARGS__
+#endif
#define IF_NOT_NTPD(...)
#undef CONFIG_FEATURE_NTPD_SERVER
#define ENABLE_FEATURE_NTPD_SERVER 0
@@ -2938,7 +4534,11 @@
#define IF_NOT_PSCAN(...) __VA_ARGS__
#define CONFIG_ROUTE 1
#define ENABLE_ROUTE 1
-#define IF_ROUTE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ROUTE(...) __VA_ARGS__ "CONFIG_ROUTE"
+#else
+# define IF_ROUTE(...) __VA_ARGS__
+#endif
#define IF_NOT_ROUTE(...)
#undef CONFIG_SLATTACH
#define ENABLE_SLATTACH 0
@@ -2950,11 +4550,19 @@
#define IF_NOT_TCPSVD(...) __VA_ARGS__
#define CONFIG_TELNET 1
#define ENABLE_TELNET 1
-#define IF_TELNET(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TELNET(...) __VA_ARGS__ "CONFIG_TELNET"
+#else
+# define IF_TELNET(...) __VA_ARGS__
+#endif
#define IF_NOT_TELNET(...)
#define CONFIG_FEATURE_TELNET_TTYPE 1
#define ENABLE_FEATURE_TELNET_TTYPE 1
-#define IF_FEATURE_TELNET_TTYPE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TELNET_TTYPE(...) __VA_ARGS__ "CONFIG_FEATURE_TELNET_TTYPE"
+#else
+# define IF_FEATURE_TELNET_TTYPE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TELNET_TTYPE(...)
#undef CONFIG_FEATURE_TELNET_AUTOLOGIN
#define ENABLE_FEATURE_TELNET_AUTOLOGIN 0
@@ -2962,23 +4570,43 @@
#define IF_NOT_FEATURE_TELNET_AUTOLOGIN(...) __VA_ARGS__
#define CONFIG_TELNETD 1
#define ENABLE_TELNETD 1
-#define IF_TELNETD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TELNETD(...) __VA_ARGS__ "CONFIG_TELNETD"
+#else
+# define IF_TELNETD(...) __VA_ARGS__
+#endif
#define IF_NOT_TELNETD(...)
#define CONFIG_FEATURE_TELNETD_STANDALONE 1
#define ENABLE_FEATURE_TELNETD_STANDALONE 1
-#define IF_FEATURE_TELNETD_STANDALONE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TELNETD_STANDALONE(...) __VA_ARGS__ "CONFIG_FEATURE_TELNETD_STANDALONE"
+#else
+# define IF_FEATURE_TELNETD_STANDALONE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TELNETD_STANDALONE(...)
#define CONFIG_FEATURE_TELNETD_INETD_WAIT 1
#define ENABLE_FEATURE_TELNETD_INETD_WAIT 1
-#define IF_FEATURE_TELNETD_INETD_WAIT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TELNETD_INETD_WAIT(...) __VA_ARGS__ "CONFIG_FEATURE_TELNETD_INETD_WAIT"
+#else
+# define IF_FEATURE_TELNETD_INETD_WAIT(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TELNETD_INETD_WAIT(...)
#define CONFIG_TFTP 1
#define ENABLE_TFTP 1
-#define IF_TFTP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TFTP(...) __VA_ARGS__ "CONFIG_TFTP"
+#else
+# define IF_TFTP(...) __VA_ARGS__
+#endif
#define IF_NOT_TFTP(...)
#define CONFIG_TFTPD 1
#define ENABLE_TFTPD 1
-#define IF_TFTPD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TFTPD(...) __VA_ARGS__ "CONFIG_TFTPD"
+#else
+# define IF_TFTPD(...) __VA_ARGS__
+#endif
#define IF_NOT_TFTPD(...)
/*
@@ -2986,11 +4614,19 @@
*/
#define CONFIG_FEATURE_TFTP_GET 1
#define ENABLE_FEATURE_TFTP_GET 1
-#define IF_FEATURE_TFTP_GET(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TFTP_GET(...) __VA_ARGS__ "CONFIG_FEATURE_TFTP_GET"
+#else
+# define IF_FEATURE_TFTP_GET(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TFTP_GET(...)
#define CONFIG_FEATURE_TFTP_PUT 1
#define ENABLE_FEATURE_TFTP_PUT 1
-#define IF_FEATURE_TFTP_PUT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TFTP_PUT(...) __VA_ARGS__ "CONFIG_FEATURE_TFTP_PUT"
+#else
+# define IF_FEATURE_TFTP_PUT(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TFTP_PUT(...)
#undef CONFIG_FEATURE_TFTP_BLOCKSIZE
#define ENABLE_FEATURE_TFTP_BLOCKSIZE 0
@@ -3006,7 +4642,11 @@
#define IF_NOT_TFTP_DEBUG(...) __VA_ARGS__
#define CONFIG_TRACEROUTE 1
#define ENABLE_TRACEROUTE 1
-#define IF_TRACEROUTE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TRACEROUTE(...) __VA_ARGS__ "CONFIG_TRACEROUTE"
+#else
+# define IF_TRACEROUTE(...) __VA_ARGS__
+#endif
#define IF_NOT_TRACEROUTE(...)
#undef CONFIG_TRACEROUTE6
#define ENABLE_TRACEROUTE6 0
@@ -3014,7 +4654,11 @@
#define IF_NOT_TRACEROUTE6(...) __VA_ARGS__
#define CONFIG_FEATURE_TRACEROUTE_VERBOSE 1
#define ENABLE_FEATURE_TRACEROUTE_VERBOSE 1
-#define IF_FEATURE_TRACEROUTE_VERBOSE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TRACEROUTE_VERBOSE(...) __VA_ARGS__ "CONFIG_FEATURE_TRACEROUTE_VERBOSE"
+#else
+# define IF_FEATURE_TRACEROUTE_VERBOSE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TRACEROUTE_VERBOSE(...)
#undef CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE
#define ENABLE_FEATURE_TRACEROUTE_SOURCE_ROUTE 0
@@ -3058,7 +4702,11 @@
#define IF_NOT_FEATURE_UDHCPD_BASE_IP_ON_MAC(...) __VA_ARGS__
#define CONFIG_DHCPD_LEASES_FILE ""
#define ENABLE_DHCPD_LEASES_FILE 1
-#define IF_DHCPD_LEASES_FILE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DHCPD_LEASES_FILE(...) __VA_ARGS__ "CONFIG_DHCPD_LEASES_FILE"
+#else
+# define IF_DHCPD_LEASES_FILE(...) __VA_ARGS__
+#endif
#define IF_NOT_DHCPD_LEASES_FILE(...)
#undef CONFIG_UDHCPC
#define ENABLE_UDHCPC 0
@@ -3074,7 +4722,11 @@
#define IF_NOT_FEATURE_UDHCP_PORT(...) __VA_ARGS__
#define CONFIG_UDHCP_DEBUG 0
#define ENABLE_UDHCP_DEBUG 1
-#define IF_UDHCP_DEBUG(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UDHCP_DEBUG(...) __VA_ARGS__ "CONFIG_UDHCP_DEBUG"
+#else
+# define IF_UDHCP_DEBUG(...) __VA_ARGS__
+#endif
#define IF_NOT_UDHCP_DEBUG(...)
#undef CONFIG_FEATURE_UDHCP_RFC3397
#define ENABLE_FEATURE_UDHCP_RFC3397 0
@@ -3086,15 +4738,27 @@
#define IF_NOT_FEATURE_UDHCP_8021Q(...) __VA_ARGS__
#define CONFIG_UDHCPC_DEFAULT_SCRIPT ""
#define ENABLE_UDHCPC_DEFAULT_SCRIPT 1
-#define IF_UDHCPC_DEFAULT_SCRIPT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UDHCPC_DEFAULT_SCRIPT(...) __VA_ARGS__ "CONFIG_UDHCPC_DEFAULT_SCRIPT"
+#else
+# define IF_UDHCPC_DEFAULT_SCRIPT(...) __VA_ARGS__
+#endif
#define IF_NOT_UDHCPC_DEFAULT_SCRIPT(...)
#define CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS 0
#define ENABLE_UDHCPC_SLACK_FOR_BUGGY_SERVERS 1
-#define IF_UDHCPC_SLACK_FOR_BUGGY_SERVERS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UDHCPC_SLACK_FOR_BUGGY_SERVERS(...) __VA_ARGS__ "CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS"
+#else
+# define IF_UDHCPC_SLACK_FOR_BUGGY_SERVERS(...) __VA_ARGS__
+#endif
#define IF_NOT_UDHCPC_SLACK_FOR_BUGGY_SERVERS(...)
#define CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS ""
#define ENABLE_IFUPDOWN_UDHCPC_CMD_OPTIONS 1
-#define IF_IFUPDOWN_UDHCPC_CMD_OPTIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_IFUPDOWN_UDHCPC_CMD_OPTIONS(...) __VA_ARGS__ "CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS"
+#else
+# define IF_IFUPDOWN_UDHCPC_CMD_OPTIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_IFUPDOWN_UDHCPC_CMD_OPTIONS(...)
#undef CONFIG_UDPSVD
#define ENABLE_UDPSVD 0
@@ -3106,23 +4770,43 @@
#define IF_NOT_VCONFIG(...) __VA_ARGS__
#define CONFIG_WGET 1
#define ENABLE_WGET 1
-#define IF_WGET(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_WGET(...) __VA_ARGS__ "CONFIG_WGET"
+#else
+# define IF_WGET(...) __VA_ARGS__
+#endif
#define IF_NOT_WGET(...)
#define CONFIG_FEATURE_WGET_STATUSBAR 1
#define ENABLE_FEATURE_WGET_STATUSBAR 1
-#define IF_FEATURE_WGET_STATUSBAR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_WGET_STATUSBAR(...) __VA_ARGS__ "CONFIG_FEATURE_WGET_STATUSBAR"
+#else
+# define IF_FEATURE_WGET_STATUSBAR(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_WGET_STATUSBAR(...)
#define CONFIG_FEATURE_WGET_AUTHENTICATION 1
#define ENABLE_FEATURE_WGET_AUTHENTICATION 1
-#define IF_FEATURE_WGET_AUTHENTICATION(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_WGET_AUTHENTICATION(...) __VA_ARGS__ "CONFIG_FEATURE_WGET_AUTHENTICATION"
+#else
+# define IF_FEATURE_WGET_AUTHENTICATION(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_WGET_AUTHENTICATION(...)
#define CONFIG_FEATURE_WGET_LONG_OPTIONS 1
#define ENABLE_FEATURE_WGET_LONG_OPTIONS 1
-#define IF_FEATURE_WGET_LONG_OPTIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_WGET_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_WGET_LONG_OPTIONS"
+#else
+# define IF_FEATURE_WGET_LONG_OPTIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_WGET_LONG_OPTIONS(...)
#define CONFIG_FEATURE_WGET_TIMEOUT 1
#define ENABLE_FEATURE_WGET_TIMEOUT 1
-#define IF_FEATURE_WGET_TIMEOUT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_WGET_TIMEOUT(...) __VA_ARGS__ "CONFIG_FEATURE_WGET_TIMEOUT"
+#else
+# define IF_FEATURE_WGET_TIMEOUT(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_WGET_TIMEOUT(...)
#undef CONFIG_ZCIP
#define ENABLE_ZCIP 0
@@ -3154,7 +4838,11 @@
#define IF_NOT_MAKEMIME(...) __VA_ARGS__
#define CONFIG_FEATURE_MIME_CHARSET ""
#define ENABLE_FEATURE_MIME_CHARSET 1
-#define IF_FEATURE_MIME_CHARSET(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MIME_CHARSET(...) __VA_ARGS__ "CONFIG_FEATURE_MIME_CHARSET"
+#else
+# define IF_FEATURE_MIME_CHARSET(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MIME_CHARSET(...)
#undef CONFIG_POPMAILDIR
#define ENABLE_POPMAILDIR 0
@@ -3182,15 +4870,27 @@
*/
#define CONFIG_IOSTAT 1
#define ENABLE_IOSTAT 1
-#define IF_IOSTAT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_IOSTAT(...) __VA_ARGS__ "CONFIG_IOSTAT"
+#else
+# define IF_IOSTAT(...) __VA_ARGS__
+#endif
#define IF_NOT_IOSTAT(...)
#define CONFIG_LSOF 1
#define ENABLE_LSOF 1
-#define IF_LSOF(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LSOF(...) __VA_ARGS__ "CONFIG_LSOF"
+#else
+# define IF_LSOF(...) __VA_ARGS__
+#endif
#define IF_NOT_LSOF(...)
#define CONFIG_MPSTAT 1
#define ENABLE_MPSTAT 1
-#define IF_MPSTAT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MPSTAT(...) __VA_ARGS__ "CONFIG_MPSTAT"
+#else
+# define IF_MPSTAT(...) __VA_ARGS__
+#endif
#define IF_NOT_MPSTAT(...)
#undef CONFIG_NMETER
#define ENABLE_NMETER 0
@@ -3198,7 +4898,11 @@
#define IF_NOT_NMETER(...) __VA_ARGS__
#define CONFIG_PMAP 1
#define ENABLE_PMAP 1
-#define IF_PMAP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PMAP(...) __VA_ARGS__ "CONFIG_PMAP"
+#else
+# define IF_PMAP(...) __VA_ARGS__
+#endif
#define IF_NOT_PMAP(...)
#undef CONFIG_POWERTOP
#define ENABLE_POWERTOP 0
@@ -3206,11 +4910,19 @@
#define IF_NOT_POWERTOP(...) __VA_ARGS__
#define CONFIG_PSTREE 1
#define ENABLE_PSTREE 1
-#define IF_PSTREE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PSTREE(...) __VA_ARGS__ "CONFIG_PSTREE"
+#else
+# define IF_PSTREE(...) __VA_ARGS__
+#endif
#define IF_NOT_PSTREE(...)
#define CONFIG_PWDX 1
#define ENABLE_PWDX 1
-#define IF_PWDX(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PWDX(...) __VA_ARGS__ "CONFIG_PWDX"
+#else
+# define IF_PWDX(...) __VA_ARGS__
+#endif
#define IF_NOT_PWDX(...)
#undef CONFIG_SMEMCAP
#define ENABLE_SMEMCAP 0
@@ -3218,23 +4930,43 @@
#define IF_NOT_SMEMCAP(...) __VA_ARGS__
#define CONFIG_TOP 1
#define ENABLE_TOP 1
-#define IF_TOP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TOP(...) __VA_ARGS__ "CONFIG_TOP"
+#else
+# define IF_TOP(...) __VA_ARGS__
+#endif
#define IF_NOT_TOP(...)
#define CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE 1
#define ENABLE_FEATURE_TOP_CPU_USAGE_PERCENTAGE 1
-#define IF_FEATURE_TOP_CPU_USAGE_PERCENTAGE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TOP_CPU_USAGE_PERCENTAGE(...) __VA_ARGS__ "CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE"
+#else
+# define IF_FEATURE_TOP_CPU_USAGE_PERCENTAGE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TOP_CPU_USAGE_PERCENTAGE(...)
#define CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS 1
#define ENABLE_FEATURE_TOP_CPU_GLOBAL_PERCENTS 1
-#define IF_FEATURE_TOP_CPU_GLOBAL_PERCENTS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TOP_CPU_GLOBAL_PERCENTS(...) __VA_ARGS__ "CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS"
+#else
+# define IF_FEATURE_TOP_CPU_GLOBAL_PERCENTS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TOP_CPU_GLOBAL_PERCENTS(...)
#define CONFIG_FEATURE_TOP_SMP_CPU 1
#define ENABLE_FEATURE_TOP_SMP_CPU 1
-#define IF_FEATURE_TOP_SMP_CPU(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TOP_SMP_CPU(...) __VA_ARGS__ "CONFIG_FEATURE_TOP_SMP_CPU"
+#else
+# define IF_FEATURE_TOP_SMP_CPU(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TOP_SMP_CPU(...)
#define CONFIG_FEATURE_TOP_DECIMALS 1
#define ENABLE_FEATURE_TOP_DECIMALS 1
-#define IF_FEATURE_TOP_DECIMALS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TOP_DECIMALS(...) __VA_ARGS__ "CONFIG_FEATURE_TOP_DECIMALS"
+#else
+# define IF_FEATURE_TOP_DECIMALS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TOP_DECIMALS(...)
#undef CONFIG_FEATURE_TOP_SMP_PROCESS
#define ENABLE_FEATURE_TOP_SMP_PROCESS 0
@@ -3242,11 +4974,19 @@
#define IF_NOT_FEATURE_TOP_SMP_PROCESS(...) __VA_ARGS__
#define CONFIG_FEATURE_TOPMEM 1
#define ENABLE_FEATURE_TOPMEM 1
-#define IF_FEATURE_TOPMEM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TOPMEM(...) __VA_ARGS__ "CONFIG_FEATURE_TOPMEM"
+#else
+# define IF_FEATURE_TOPMEM(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TOPMEM(...)
#define CONFIG_UPTIME 1
#define ENABLE_UPTIME 1
-#define IF_UPTIME(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UPTIME(...) __VA_ARGS__ "CONFIG_UPTIME"
+#else
+# define IF_UPTIME(...) __VA_ARGS__
+#endif
#define IF_NOT_UPTIME(...)
#undef CONFIG_FEATURE_UPTIME_UTMP_SUPPORT
#define ENABLE_FEATURE_UPTIME_UTMP_SUPPORT 0
@@ -3254,55 +4994,107 @@
#define IF_NOT_FEATURE_UPTIME_UTMP_SUPPORT(...) __VA_ARGS__
#define CONFIG_FREE 1
#define ENABLE_FREE 1
-#define IF_FREE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FREE(...) __VA_ARGS__ "CONFIG_FREE"
+#else
+# define IF_FREE(...) __VA_ARGS__
+#endif
#define IF_NOT_FREE(...)
#define CONFIG_FUSER 1
#define ENABLE_FUSER 1
-#define IF_FUSER(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FUSER(...) __VA_ARGS__ "CONFIG_FUSER"
+#else
+# define IF_FUSER(...) __VA_ARGS__
+#endif
#define IF_NOT_FUSER(...)
#define CONFIG_KILL 1
#define ENABLE_KILL 1
-#define IF_KILL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_KILL(...) __VA_ARGS__ "CONFIG_KILL"
+#else
+# define IF_KILL(...) __VA_ARGS__
+#endif
#define IF_NOT_KILL(...)
#define CONFIG_KILLALL 1
#define ENABLE_KILLALL 1
-#define IF_KILLALL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_KILLALL(...) __VA_ARGS__ "CONFIG_KILLALL"
+#else
+# define IF_KILLALL(...) __VA_ARGS__
+#endif
#define IF_NOT_KILLALL(...)
#define CONFIG_KILLALL5 1
#define ENABLE_KILLALL5 1
-#define IF_KILLALL5(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_KILLALL5(...) __VA_ARGS__ "CONFIG_KILLALL5"
+#else
+# define IF_KILLALL5(...) __VA_ARGS__
+#endif
#define IF_NOT_KILLALL5(...)
#define CONFIG_PGREP 1
#define ENABLE_PGREP 1
-#define IF_PGREP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PGREP(...) __VA_ARGS__ "CONFIG_PGREP"
+#else
+# define IF_PGREP(...) __VA_ARGS__
+#endif
#define IF_NOT_PGREP(...)
#define CONFIG_PIDOF 1
#define ENABLE_PIDOF 1
-#define IF_PIDOF(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PIDOF(...) __VA_ARGS__ "CONFIG_PIDOF"
+#else
+# define IF_PIDOF(...) __VA_ARGS__
+#endif
#define IF_NOT_PIDOF(...)
#define CONFIG_FEATURE_PIDOF_SINGLE 1
#define ENABLE_FEATURE_PIDOF_SINGLE 1
-#define IF_FEATURE_PIDOF_SINGLE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_PIDOF_SINGLE(...) __VA_ARGS__ "CONFIG_FEATURE_PIDOF_SINGLE"
+#else
+# define IF_FEATURE_PIDOF_SINGLE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_PIDOF_SINGLE(...)
#define CONFIG_FEATURE_PIDOF_OMIT 1
#define ENABLE_FEATURE_PIDOF_OMIT 1
-#define IF_FEATURE_PIDOF_OMIT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_PIDOF_OMIT(...) __VA_ARGS__ "CONFIG_FEATURE_PIDOF_OMIT"
+#else
+# define IF_FEATURE_PIDOF_OMIT(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_PIDOF_OMIT(...)
#define CONFIG_PKILL 1
#define ENABLE_PKILL 1
-#define IF_PKILL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PKILL(...) __VA_ARGS__ "CONFIG_PKILL"
+#else
+# define IF_PKILL(...) __VA_ARGS__
+#endif
#define IF_NOT_PKILL(...)
#define CONFIG_PS 1
#define ENABLE_PS 1
-#define IF_PS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PS(...) __VA_ARGS__ "CONFIG_PS"
+#else
+# define IF_PS(...) __VA_ARGS__
+#endif
#define IF_NOT_PS(...)
#define CONFIG_FEATURE_PS_WIDE 1
#define ENABLE_FEATURE_PS_WIDE 1
-#define IF_FEATURE_PS_WIDE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_PS_WIDE(...) __VA_ARGS__ "CONFIG_FEATURE_PS_WIDE"
+#else
+# define IF_FEATURE_PS_WIDE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_PS_WIDE(...)
#define CONFIG_FEATURE_PS_LONG 1
#define ENABLE_FEATURE_PS_LONG 1
-#define IF_FEATURE_PS_LONG(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_PS_LONG(...) __VA_ARGS__ "CONFIG_FEATURE_PS_LONG"
+#else
+# define IF_FEATURE_PS_LONG(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_PS_LONG(...)
#undef CONFIG_FEATURE_PS_TIME
#define ENABLE_FEATURE_PS_TIME 0
@@ -3318,19 +5110,35 @@
#define IF_NOT_FEATURE_PS_UNUSUAL_SYSTEMS(...) __VA_ARGS__
#define CONFIG_RENICE 1
#define ENABLE_RENICE 1
-#define IF_RENICE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_RENICE(...) __VA_ARGS__ "CONFIG_RENICE"
+#else
+# define IF_RENICE(...) __VA_ARGS__
+#endif
#define IF_NOT_RENICE(...)
#define CONFIG_BB_SYSCTL 1
#define ENABLE_BB_SYSCTL 1
-#define IF_BB_SYSCTL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_BB_SYSCTL(...) __VA_ARGS__ "CONFIG_BB_SYSCTL"
+#else
+# define IF_BB_SYSCTL(...) __VA_ARGS__
+#endif
#define IF_NOT_BB_SYSCTL(...)
#define CONFIG_FEATURE_SHOW_THREADS 1
#define ENABLE_FEATURE_SHOW_THREADS 1
-#define IF_FEATURE_SHOW_THREADS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_SHOW_THREADS(...) __VA_ARGS__ "CONFIG_FEATURE_SHOW_THREADS"
+#else
+# define IF_FEATURE_SHOW_THREADS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_SHOW_THREADS(...)
#define CONFIG_WATCH 1
#define ENABLE_WATCH 1
-#define IF_WATCH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_WATCH(...) __VA_ARGS__ "CONFIG_WATCH"
+#else
+# define IF_WATCH(...) __VA_ARGS__
+#endif
#define IF_NOT_WATCH(...)
/*
@@ -3354,7 +5162,11 @@
#define IF_NOT_SV(...) __VA_ARGS__
#define CONFIG_SV_DEFAULT_SERVICE_DIR ""
#define ENABLE_SV_DEFAULT_SERVICE_DIR 1
-#define IF_SV_DEFAULT_SERVICE_DIR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SV_DEFAULT_SERVICE_DIR(...) __VA_ARGS__ "CONFIG_SV_DEFAULT_SERVICE_DIR"
+#else
+# define IF_SV_DEFAULT_SERVICE_DIR(...) __VA_ARGS__
+#endif
#define IF_NOT_SV_DEFAULT_SERVICE_DIR(...)
#undef CONFIG_SVLOGD
#define ENABLE_SVLOGD 0
@@ -3446,11 +5258,19 @@
*/
#define CONFIG_ASH 1
#define ENABLE_ASH 1
-#define IF_ASH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ASH(...) __VA_ARGS__ "CONFIG_ASH"
+#else
+# define IF_ASH(...) __VA_ARGS__
+#endif
#define IF_NOT_ASH(...)
#define CONFIG_ASH_BASH_COMPAT 1
#define ENABLE_ASH_BASH_COMPAT 1
-#define IF_ASH_BASH_COMPAT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ASH_BASH_COMPAT(...) __VA_ARGS__ "CONFIG_ASH_BASH_COMPAT"
+#else
+# define IF_ASH_BASH_COMPAT(...) __VA_ARGS__
+#endif
#define IF_NOT_ASH_BASH_COMPAT(...)
#undef CONFIG_ASH_IDLE_TIMEOUT
#define ENABLE_ASH_IDLE_TIMEOUT 0
@@ -3458,11 +5278,19 @@
#define IF_NOT_ASH_IDLE_TIMEOUT(...) __VA_ARGS__
#define CONFIG_ASH_JOB_CONTROL 1
#define ENABLE_ASH_JOB_CONTROL 1
-#define IF_ASH_JOB_CONTROL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ASH_JOB_CONTROL(...) __VA_ARGS__ "CONFIG_ASH_JOB_CONTROL"
+#else
+# define IF_ASH_JOB_CONTROL(...) __VA_ARGS__
+#endif
#define IF_NOT_ASH_JOB_CONTROL(...)
#define CONFIG_ASH_ALIAS 1
#define ENABLE_ASH_ALIAS 1
-#define IF_ASH_ALIAS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ASH_ALIAS(...) __VA_ARGS__ "CONFIG_ASH_ALIAS"
+#else
+# define IF_ASH_ALIAS(...) __VA_ARGS__
+#endif
#define IF_NOT_ASH_ALIAS(...)
#undef CONFIG_ASH_GETOPTS
#define ENABLE_ASH_GETOPTS 0
@@ -3470,19 +5298,35 @@
#define IF_NOT_ASH_GETOPTS(...) __VA_ARGS__
#define CONFIG_ASH_BUILTIN_ECHO 1
#define ENABLE_ASH_BUILTIN_ECHO 1
-#define IF_ASH_BUILTIN_ECHO(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ASH_BUILTIN_ECHO(...) __VA_ARGS__ "CONFIG_ASH_BUILTIN_ECHO"
+#else
+# define IF_ASH_BUILTIN_ECHO(...) __VA_ARGS__
+#endif
#define IF_NOT_ASH_BUILTIN_ECHO(...)
#define CONFIG_ASH_BUILTIN_PRINTF 1
#define ENABLE_ASH_BUILTIN_PRINTF 1
-#define IF_ASH_BUILTIN_PRINTF(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ASH_BUILTIN_PRINTF(...) __VA_ARGS__ "CONFIG_ASH_BUILTIN_PRINTF"
+#else
+# define IF_ASH_BUILTIN_PRINTF(...) __VA_ARGS__
+#endif
#define IF_NOT_ASH_BUILTIN_PRINTF(...)
#define CONFIG_ASH_BUILTIN_TEST 1
#define ENABLE_ASH_BUILTIN_TEST 1
-#define IF_ASH_BUILTIN_TEST(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ASH_BUILTIN_TEST(...) __VA_ARGS__ "CONFIG_ASH_BUILTIN_TEST"
+#else
+# define IF_ASH_BUILTIN_TEST(...) __VA_ARGS__
+#endif
#define IF_NOT_ASH_BUILTIN_TEST(...)
#define CONFIG_ASH_CMDCMD 1
#define ENABLE_ASH_CMDCMD 1
-#define IF_ASH_CMDCMD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ASH_CMDCMD(...) __VA_ARGS__ "CONFIG_ASH_CMDCMD"
+#else
+# define IF_ASH_CMDCMD(...) __VA_ARGS__
+#endif
#define IF_NOT_ASH_CMDCMD(...)
#undef CONFIG_ASH_MAIL
#define ENABLE_ASH_MAIL 0
@@ -3490,15 +5334,27 @@
#define IF_NOT_ASH_MAIL(...) __VA_ARGS__
#define CONFIG_ASH_OPTIMIZE_FOR_SIZE 1
#define ENABLE_ASH_OPTIMIZE_FOR_SIZE 1
-#define IF_ASH_OPTIMIZE_FOR_SIZE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ASH_OPTIMIZE_FOR_SIZE(...) __VA_ARGS__ "CONFIG_ASH_OPTIMIZE_FOR_SIZE"
+#else
+# define IF_ASH_OPTIMIZE_FOR_SIZE(...) __VA_ARGS__
+#endif
#define IF_NOT_ASH_OPTIMIZE_FOR_SIZE(...)
#define CONFIG_ASH_RANDOM_SUPPORT 1
#define ENABLE_ASH_RANDOM_SUPPORT 1
-#define IF_ASH_RANDOM_SUPPORT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ASH_RANDOM_SUPPORT(...) __VA_ARGS__ "CONFIG_ASH_RANDOM_SUPPORT"
+#else
+# define IF_ASH_RANDOM_SUPPORT(...) __VA_ARGS__
+#endif
#define IF_NOT_ASH_RANDOM_SUPPORT(...)
#define CONFIG_ASH_EXPAND_PRMT 1
#define ENABLE_ASH_EXPAND_PRMT 1
-#define IF_ASH_EXPAND_PRMT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ASH_EXPAND_PRMT(...) __VA_ARGS__ "CONFIG_ASH_EXPAND_PRMT"
+#else
+# define IF_ASH_EXPAND_PRMT(...) __VA_ARGS__
+#endif
#define IF_NOT_ASH_EXPAND_PRMT(...)
#undef CONFIG_CTTYHACK
#define ENABLE_CTTYHACK 0
@@ -3574,7 +5430,11 @@
#define IF_NOT_MSH(...) __VA_ARGS__
#define CONFIG_FEATURE_SH_IS_ASH 1
#define ENABLE_FEATURE_SH_IS_ASH 1
-#define IF_FEATURE_SH_IS_ASH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_SH_IS_ASH(...) __VA_ARGS__ "CONFIG_FEATURE_SH_IS_ASH"
+#else
+# define IF_FEATURE_SH_IS_ASH(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_SH_IS_ASH(...)
#undef CONFIG_FEATURE_SH_IS_HUSH
#define ENABLE_FEATURE_SH_IS_HUSH 0
@@ -3594,19 +5454,35 @@
#define IF_NOT_FEATURE_BASH_IS_HUSH(...) __VA_ARGS__
#define CONFIG_FEATURE_BASH_IS_NONE 1
#define ENABLE_FEATURE_BASH_IS_NONE 1
-#define IF_FEATURE_BASH_IS_NONE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_BASH_IS_NONE(...) __VA_ARGS__ "CONFIG_FEATURE_BASH_IS_NONE"
+#else
+# define IF_FEATURE_BASH_IS_NONE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_BASH_IS_NONE(...)
#define CONFIG_SH_MATH_SUPPORT 1
#define ENABLE_SH_MATH_SUPPORT 1
-#define IF_SH_MATH_SUPPORT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SH_MATH_SUPPORT(...) __VA_ARGS__ "CONFIG_SH_MATH_SUPPORT"
+#else
+# define IF_SH_MATH_SUPPORT(...) __VA_ARGS__
+#endif
#define IF_NOT_SH_MATH_SUPPORT(...)
#define CONFIG_SH_MATH_SUPPORT_64 1
#define ENABLE_SH_MATH_SUPPORT_64 1
-#define IF_SH_MATH_SUPPORT_64(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SH_MATH_SUPPORT_64(...) __VA_ARGS__ "CONFIG_SH_MATH_SUPPORT_64"
+#else
+# define IF_SH_MATH_SUPPORT_64(...) __VA_ARGS__
+#endif
#define IF_NOT_SH_MATH_SUPPORT_64(...)
#define CONFIG_FEATURE_SH_EXTRA_QUIET 1
#define ENABLE_FEATURE_SH_EXTRA_QUIET 1
-#define IF_FEATURE_SH_EXTRA_QUIET(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_SH_EXTRA_QUIET(...) __VA_ARGS__ "CONFIG_FEATURE_SH_EXTRA_QUIET"
+#else
+# define IF_FEATURE_SH_EXTRA_QUIET(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_SH_EXTRA_QUIET(...)
#undef CONFIG_FEATURE_SH_STANDALONE
#define ENABLE_FEATURE_SH_STANDALONE 0
@@ -3646,7 +5522,11 @@
#define IF_NOT_FEATURE_SYSLOGD_CFG(...) __VA_ARGS__
#define CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE 0
#define ENABLE_FEATURE_SYSLOGD_READ_BUFFER_SIZE 1
-#define IF_FEATURE_SYSLOGD_READ_BUFFER_SIZE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_SYSLOGD_READ_BUFFER_SIZE(...) __VA_ARGS__ "CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE"
+#else
+# define IF_FEATURE_SYSLOGD_READ_BUFFER_SIZE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_SYSLOGD_READ_BUFFER_SIZE(...)
#undef CONFIG_FEATURE_IPC_SYSLOG
#define ENABLE_FEATURE_IPC_SYSLOG 0
@@ -3654,7 +5534,11 @@
#define IF_NOT_FEATURE_IPC_SYSLOG(...) __VA_ARGS__
#define CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE 0
#define ENABLE_FEATURE_IPC_SYSLOG_BUFFER_SIZE 1
-#define IF_FEATURE_IPC_SYSLOG_BUFFER_SIZE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_IPC_SYSLOG_BUFFER_SIZE(...) __VA_ARGS__ "CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE"
+#else
+# define IF_FEATURE_IPC_SYSLOG_BUFFER_SIZE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_IPC_SYSLOG_BUFFER_SIZE(...)
#undef CONFIG_LOGREAD
#define ENABLE_LOGREAD 0
diff --git a/include-full/bbconfigopts.h b/include-full/bbconfigopts.h
index 82ecbfc..e77ae85 100644
--- a/include-full/bbconfigopts.h
+++ b/include-full/bbconfigopts.h
@@ -109,7 +109,14 @@ static const char bbconfig_config[] ALIGN1 =
"# CONFIG_AR is not set\n"
"# CONFIG_FEATURE_AR_LONG_FILENAMES is not set\n"
"# CONFIG_FEATURE_AR_CREATE is not set\n"
+"CONFIG_UNCOMPRESS=y\n"
+"CONFIG_GUNZIP=y\n"
"CONFIG_BUNZIP2=y\n"
+"CONFIG_UNLZMA=y\n"
+"CONFIG_FEATURE_LZMA_FAST=y\n"
+"CONFIG_LZMA=y\n"
+"CONFIG_UNXZ=y\n"
+"CONFIG_XZ=y\n"
"CONFIG_BZIP2=y\n"
"CONFIG_CPIO=y\n"
"CONFIG_FEATURE_CPIO_O=y\n"
@@ -117,7 +124,6 @@ static const char bbconfig_config[] ALIGN1 =
"# CONFIG_DPKG is not set\n"
"# CONFIG_DPKG_DEB is not set\n"
"# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set\n"
-"CONFIG_GUNZIP=y\n"
"CONFIG_GZIP=y\n"
"CONFIG_FEATURE_GZIP_LONG_OPTIONS=y\n"
"CONFIG_GZIP_FAST=2\n"
@@ -137,12 +143,6 @@ static const char bbconfig_config[] ALIGN1 =
"CONFIG_FEATURE_TAR_UNAME_GNAME=y\n"
"CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y\n"
"# CONFIG_FEATURE_TAR_SELINUX is not set\n"
-"CONFIG_UNCOMPRESS=y\n"
-"CONFIG_UNLZMA=y\n"
-"CONFIG_FEATURE_LZMA_FAST=y\n"
-"CONFIG_LZMA=y\n"
-"CONFIG_UNXZ=y\n"
-"CONFIG_XZ=y\n"
"CONFIG_UNZIP=y\n"
"CONFIG_BASENAME=y\n"
"CONFIG_CAT=y\n"
@@ -156,6 +156,7 @@ static const char bbconfig_config[] ALIGN1 =
"CONFIG_TEST=y\n"
"# CONFIG_FEATURE_TEST_64 is not set\n"
"CONFIG_TOUCH=y\n"
+"# CONFIG_FEATURE_TOUCH_NODEREF is not set\n"
"CONFIG_FEATURE_TOUCH_SUSV3=y\n"
"CONFIG_TR=y\n"
"CONFIG_FEATURE_TR_CLASSES=y\n"
@@ -301,7 +302,16 @@ static const char bbconfig_config[] ALIGN1 =
"# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set\n"
"# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set\n"
"CONFIG_WHICH=y\n"
+"CONFIG_AWK=y\n"
+"CONFIG_FEATURE_AWK_LIBM=y\n"
+"CONFIG_FEATURE_AWK_GNU_EXTENSIONS=y\n"
+"CONFIG_CMP=y\n"
+"CONFIG_DIFF=y\n"
+"CONFIG_FEATURE_DIFF_LONG_OPTIONS=y\n"
+"CONFIG_FEATURE_DIFF_DIR=y\n"
+"CONFIG_ED=y\n"
"CONFIG_PATCH=y\n"
+"CONFIG_SED=y\n"
"CONFIG_VI=y\n"
"CONFIG_FEATURE_VI_MAX_LEN=256\n"
"CONFIG_FEATURE_VI_8BIT=y\n"
@@ -316,14 +326,6 @@ static const char bbconfig_config[] ALIGN1 =
"CONFIG_FEATURE_VI_SET=y\n"
"CONFIG_FEATURE_VI_WIN_RESIZE=y\n"
"CONFIG_FEATURE_VI_ASK_TERMINAL=y\n"
-"CONFIG_AWK=y\n"
-"CONFIG_FEATURE_AWK_LIBM=y\n"
-"CONFIG_CMP=y\n"
-"CONFIG_DIFF=y\n"
-"CONFIG_FEATURE_DIFF_LONG_OPTIONS=y\n"
-"CONFIG_FEATURE_DIFF_DIR=y\n"
-"CONFIG_ED=y\n"
-"CONFIG_SED=y\n"
"CONFIG_FEATURE_ALLOW_EXEC=y\n"
"CONFIG_FIND=y\n"
"CONFIG_FEATURE_FIND_PRINT0=y\n"
@@ -516,26 +518,27 @@ static const char bbconfig_config[] ALIGN1 =
"CONFIG_FEATURE_MOUNT_LOOP_CREATE=y\n"
"# CONFIG_FEATURE_MTAB_SUPPORT is not set\n"
"CONFIG_VOLUMEID=y\n"
-"CONFIG_FEATURE_VOLUMEID_EXT=y\n"
"# CONFIG_FEATURE_VOLUMEID_BTRFS is not set\n"
-"# CONFIG_FEATURE_VOLUMEID_REISERFS is not set\n"
-"CONFIG_FEATURE_VOLUMEID_FAT=y\n"
+"# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set\n"
"CONFIG_FEATURE_VOLUMEID_EXFAT=y\n"
+"CONFIG_FEATURE_VOLUMEID_EXT=y\n"
+"CONFIG_FEATURE_VOLUMEID_F2FS=y\n"
+"CONFIG_FEATURE_VOLUMEID_FAT=y\n"
"# CONFIG_FEATURE_VOLUMEID_HFS is not set\n"
+"CONFIG_FEATURE_VOLUMEID_ISO9660=y\n"
"# CONFIG_FEATURE_VOLUMEID_JFS is not set\n"
-"# CONFIG_FEATURE_VOLUMEID_XFS is not set\n"
+"# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set\n"
+"CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y\n"
+"# CONFIG_FEATURE_VOLUMEID_LUKS is not set\n"
"# CONFIG_FEATURE_VOLUMEID_NILFS is not set\n"
"CONFIG_FEATURE_VOLUMEID_NTFS=y\n"
-"CONFIG_FEATURE_VOLUMEID_ISO9660=y\n"
-"# CONFIG_FEATURE_VOLUMEID_UDF is not set\n"
-"# CONFIG_FEATURE_VOLUMEID_LUKS is not set\n"
-"CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y\n"
-"# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set\n"
+"# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set\n"
+"# CONFIG_FEATURE_VOLUMEID_REISERFS is not set\n"
"# CONFIG_FEATURE_VOLUMEID_ROMFS is not set\n"
"CONFIG_FEATURE_VOLUMEID_SQUASHFS=y\n"
"# CONFIG_FEATURE_VOLUMEID_SYSV is not set\n"
-"# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set\n"
-"# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set\n"
+"# CONFIG_FEATURE_VOLUMEID_UDF is not set\n"
+"# CONFIG_FEATURE_VOLUMEID_XFS is not set\n"
"# CONFIG_CONSPY is not set\n"
"CONFIG_LESS=y\n"
"CONFIG_FEATURE_LESS_MAXLINES=65536\n"
@@ -549,6 +552,7 @@ static const char bbconfig_config[] ALIGN1 =
"# CONFIG_FEATURE_LESS_LINENUMS is not set\n"
"CONFIG_NANDWRITE=y\n"
"CONFIG_NANDDUMP=y\n"
+"# CONFIG_RFKILL is not set\n"
"CONFIG_SETSERIAL=y\n"
"# CONFIG_UBIATTACH is not set\n"
"# CONFIG_UBIDETACH is not set\n"
@@ -556,6 +560,7 @@ static const char bbconfig_config[] ALIGN1 =
"# CONFIG_UBIRMVOL is not set\n"
"# CONFIG_UBIRSVOL is not set\n"
"# CONFIG_UBIUPDATEVOL is not set\n"
+"# CONFIG_WALL is not set\n"
"CONFIG_ADJTIMEX=y\n"
"CONFIG_BBCONFIG=y\n"
"CONFIG_FEATURE_COMPRESS_BBCONFIG=y\n"
@@ -612,7 +617,6 @@ static const char bbconfig_config[] ALIGN1 =
"# CONFIG_MT is not set\n"
"# CONFIG_RAIDAUTORUN is not set\n"
"# CONFIG_READAHEAD is not set\n"
-"# CONFIG_RFKILL is not set\n"
"# CONFIG_RUNLEVEL is not set\n"
"CONFIG_RX=y\n"
"CONFIG_SETSID=y\n"
@@ -623,7 +627,6 @@ static const char bbconfig_config[] ALIGN1 =
"CONFIG_TIMEOUT=y\n"
"CONFIG_TTYSIZE=y\n"
"# CONFIG_VOLNAME is not set\n"
-"# CONFIG_WALL is not set\n"
"# CONFIG_WATCHDOG is not set\n"
"# CONFIG_NAMEIF is not set\n"
"# CONFIG_FEATURE_NAMEIF_EXTENDED is not set\n"
diff --git a/include-full/bbconfigopts_bz2.h b/include-full/bbconfigopts_bz2.h
index d658477..112c89e 100644
--- a/include-full/bbconfigopts_bz2.h
+++ b/include-full/bbconfigopts_bz2.h
@@ -9,335 +9,335 @@
* Do not edit.
*/
static const char bbconfig_config_bz2[] ALIGN1 = {
-0x68,0x31,0x31,0x41,0x59,0x26,0x53,0x59,0x6a,0x50,0x48,0xd0,0x00,0x0a,0xb6,0x5f,
-0x80,0x00,0x10,0x58,0x03,0xff,0xe2,0x3f,0xff,0xff,0xf0,0xbf,0xe7,0xdf,0x60,0x60,
-0x1b,0x1c,0x00,0x3d,0xdc,0x06,0x40,0xc8,0xfb,0x6c,0x28,0x7d,0xf0,0x00,0x37,0x7b,
-0x59,0x0b,0x15,0xaf,0x40,0x74,0xaf,0x4e,0xba,0x01,0xee,0x6d,0x01,0xd9,0x9d,0x48,
-0x0e,0xed,0xa6,0x40,0x5a,0xd4,0x0b,0x5a,0x42,0x6c,0x6e,0xa6,0xee,0x50,0xe9,0xcb,
-0xad,0xbb,0x8c,0x8c,0xfb,0xd0,0x69,0xa1,0x00,0x08,0x26,0x89,0xa2,0x98,0xd5,0x1e,
-0xa0,0x01,0xe4,0x4d,0xa8,0x0d,0x00,0x34,0xc8,0x26,0x88,0x23,0x49,0x3c,0x92,0x6d,
-0x50,0x00,0x34,0xc8,0x00,0x00,0x01,0x29,0x88,0xa2,0x32,0xa9,0xfb,0x49,0x95,0x3d,
-0x4c,0x21,0xa0,0x01,0xa0,0x06,0x81,0xa0,0x00,0x93,0xd5,0x29,0x48,0xa6,0x09,0xea,
-0x06,0x23,0x40,0x00,0xd1,0x90,0xc4,0xd0,0xd0,0x00,0x12,0x2a,0x27,0x92,0x99,0x94,
-0xf4,0x80,0x01,0xa0,0xd3,0x40,0x3d,0x4d,0x3d,0x43,0xd4,0xc9,0x84,0xfd,0x51,0xa0,
-0x90,0x90,0x41,0x34,0xc8,0x12,0x6a,0x9e,0xa9,0xe9,0x00,0x00,0x00,0x01,0xa0,0xd3,
-0xff,0x7b,0x5f,0xef,0x8b,0x39,0x5d,0x25,0xea,0xed,0xd2,0x92,0x88,0xd1,0x46,0xc9,
-0x68,0x48,0x0a,0x66,0xda,0x42,0xe5,0xba,0x5e,0x35,0xd2,0xe7,0x4d,0x7d,0x8e,0xed,
-0x15,0x29,0x16,0x31,0x82,0xc4,0x49,0x45,0xe9,0xdc,0xa2,0x16,0xf4,0xed,0xd2,0x9b,
-0x21,0x99,0x42,0x5b,0x5e,0x77,0x1b,0x51,0x4f,0x3b,0x74,0xcc,0x04,0xd2,0xf1,0xd4,
-0x6a,0x36,0xb9,0x5d,0x17,0x74,0x57,0x43,0x5c,0x9d,0xe7,0x9c,0x28,0x33,0x32,0x29,
-0x23,0x3c,0x6e,0x22,0x82,0x73,0xb4,0xc2,0xb7,0x67,0x4a,0x5e,0x75,0x73,0x19,0x34,
-0x6c,0x5e,0x9e,0xce,0xaf,0x17,0xbc,0xb8,0x58,0xb5,0x19,0x13,0x21,0x6c,0x45,0x8b,
-0x45,0x06,0x89,0xe7,0x5e,0xbb,0xce,0xa3,0x68,0xd1,0x8f,0x52,0xdb,0x8c,0xd4,0x60,
-0xc6,0x89,0x26,0xf5,0xae,0x91,0x9b,0xd9,0xe7,0x9e,0x4c,0x8f,0x67,0x5e,0xaf,0x5f,
-0xa5,0xe4,0x8c,0x19,0x31,0x1b,0x24,0xcc,0x44,0x86,0x08,0xd7,0xb4,0xe6,0xc8,0x9e,
-0x2e,0x4c,0xd2,0x19,0x33,0x09,0x9a,0x62,0x6c,0x1b,0x1a,0x6a,0x47,0xe5,0xd5,0xa4,
-0x02,0x17,0x1d,0xb6,0x59,0x97,0xa6,0x67,0xdd,0x8e,0xcf,0x4b,0xc3,0x6f,0x3f,0xb7,
-0xf1,0xc0,0x9f,0xc9,0x07,0xf3,0x44,0x5f,0xeb,0x06,0x66,0x5f,0x5f,0x6f,0xd7,0xb5,
-0xcf,0xd8,0xa4,0xe6,0xf4,0xbe,0xbb,0xe4,0xf1,0x99,0xc2,0xfb,0x7e,0xc1,0x34,0xb5,
-0x1f,0xd7,0xaf,0xa6,0xd3,0xd4,0x6e,0xec,0x37,0xdb,0x5b,0x8f,0x9b,0x7b,0xfd,0x5e,
-0x5b,0xde,0x6d,0xc4,0xfa,0x83,0xf5,0xa9,0x75,0x48,0x3c,0x7f,0x3a,0xb7,0x7e,0x6d,
-0x66,0xe7,0x4b,0x1b,0x4e,0x5c,0xc6,0x51,0x22,0x1b,0x40,0xbe,0x26,0x9c,0xf7,0x9c,
-0x75,0xb4,0x4f,0xa6,0x15,0xe2,0x21,0xa6,0xb7,0xee,0x8d,0xe6,0xfc,0x6e,0xbc,0x14,
-0x78,0x6e,0x1a,0xef,0x55,0xdb,0x69,0x44,0xbe,0xd0,0x94,0xa3,0x58,0x6a,0x5c,0xda,
-0x2c,0xb5,0x61,0x50,0xaa,0xe7,0xb7,0x30,0x9c,0x2f,0xb5,0x3b,0x3d,0x62,0x33,0x5c,
-0x52,0xd4,0xf6,0xfa,0xcb,0x9b,0xe3,0x14,0x9c,0x7a,0xae,0x45,0xdf,0x2b,0x1f,0xaf,
-0x6a,0xbc,0x3a,0x69,0x8e,0x4b,0xd2,0x90,0x80,0x94,0x56,0xa7,0x1e,0xb1,0xb4,0x32,
-0xa2,0xc9,0x1f,0x34,0xcd,0x65,0xbe,0x31,0x7a,0x93,0x14,0x9a,0xe9,0x6d,0x08,0x0e,
-0x97,0xa8,0x3d,0x95,0x78,0xdd,0xb6,0x85,0xa6,0x75,0x9c,0xed,0x7a,0x4b,0xb4,0x71,
-0xa3,0x56,0x58,0x32,0x98,0xbf,0x7c,0x4b,0xb4,0xac,0x51,0x24,0x1a,0x9d,0xa9,0xac,
-0x95,0x77,0xb8,0xde,0x54,0x87,0x1c,0x2d,0xba,0xa7,0xdd,0x6e,0x68,0xa5,0xe5,0x22,
-0xa3,0x0a,0xee,0xb9,0xcb,0x39,0xe8,0x71,0x56,0xac,0xa9,0xed,0xcf,0x51,0x1c,0x6d,
-0x96,0xc6,0xcb,0x26,0x7f,0xcc,0x88,0x00,0x85,0xda,0x90,0x08,0x59,0x0d,0x2d,0x2c,
-0x99,0x26,0x83,0x33,0x3b,0x1f,0xb8,0x22,0xc4,0x80,0x42,0xd3,0x3c,0x0d,0x7a,0xea,
-0xb4,0x25,0x07,0x2a,0x28,0xab,0xe7,0x56,0x0d,0x71,0x9d,0xd6,0x23,0x3d,0xde,0x5c,
-0xb3,0x5e,0x4f,0x4f,0xc3,0xcb,0xec,0x42,0xdc,0x5d,0x7f,0xd9,0xc8,0x11,0xa7,0xbc,
-0xfa,0xf3,0x9f,0xcc,0xea,0xd9,0x1b,0x7d,0xfb,0xff,0x6f,0xe5,0x91,0xce,0xcd,0x20,
-0x0c,0xff,0x8c,0x67,0x09,0x27,0xd2,0x09,0x48,0x0a,0x52,0xbf,0xb7,0x55,0x85,0xd8,
-0x85,0xff,0x12,0x9b,0xb1,0x1f,0x6a,0xeb,0xef,0x1d,0xff,0x08,0x1b,0x41,0xcc,0x19,
-0x9b,0xb3,0xc1,0x61,0xb4,0x3e,0x8d,0xb1,0x8f,0xd6,0x11,0xe4,0x7e,0x16,0xa2,0xfd,
-0x8c,0xe5,0xc7,0xb0,0x59,0x52,0xfe,0xbf,0x67,0x13,0x77,0xac,0xd6,0x43,0x3e,0x93,
-0xab,0xac,0xf1,0x3d,0xa7,0x61,0xfc,0xe8,0xdc,0xc5,0x53,0x78,0xb3,0x25,0xaa,0xbf,
-0x03,0xdb,0x02,0x1e,0xfb,0x40,0x38,0xba,0x9f,0x65,0xea,0xd0,0x26,0x1f,0x2e,0x7a,
-0xd1,0x9c,0x62,0xa5,0xe7,0x31,0x55,0xf8,0x71,0x3f,0x89,0xe3,0xc4,0xfd,0x39,0xc7,
-0x8f,0x4d,0xd8,0x78,0xde,0xc0,0xb7,0xe3,0x77,0x85,0x33,0xdd,0xc4,0xa1,0x8b,0xb6,
-0xc5,0xf3,0x0f,0x18,0xe4,0x49,0x69,0xb9,0x51,0x1d,0xeb,0xe4,0xbf,0x7e,0xfb,0x30,
-0x5e,0x5f,0x0e,0xab,0xaa,0x6d,0xdf,0xb5,0xac,0x30,0xbd,0x1a,0x42,0xdd,0x89,0xfe,
-0xab,0xbf,0xf4,0x87,0x79,0x58,0xdb,0x53,0x9f,0x12,0xbf,0x9f,0x49,0x9d,0xab,0x06,
-0x6f,0x4d,0xde,0x35,0x1b,0x22,0x79,0x36,0xa7,0x3c,0x4d,0x7c,0xb0,0x83,0xcd,0x3b,
-0x12,0x3e,0xa5,0x7d,0x90,0x81,0xa2,0x35,0x66,0x3b,0x19,0x75,0xed,0x48,0xef,0x68,
-0x6b,0xea,0xf8,0xbf,0x9e,0x87,0x6d,0x65,0xf2,0xe7,0xb3,0xb8,0x48,0x95,0xcf,0xa9,
-0xc6,0x2b,0x18,0x0a,0x7d,0x45,0x73,0x1f,0x37,0xaf,0x26,0xa7,0x2e,0xec,0x14,0xaf,
-0x68,0xde,0x96,0x3c,0xd6,0x4e,0x66,0xd1,0x59,0xf6,0x71,0xb5,0xc8,0x85,0xde,0x63,
-0xa7,0xf1,0xea,0xae,0x6f,0xe2,0x4a,0xf5,0xbc,0x5e,0xf8,0x1e,0x77,0xf7,0x61,0x4a,
-0xef,0xbe,0x2a,0xfe,0xd1,0xa6,0xef,0x82,0x6b,0x7f,0x84,0x12,0x93,0x58,0x67,0xaa,
-0x17,0xd8,0x57,0x26,0x73,0x8d,0x3e,0x3d,0xa1,0xcb,0xcb,0x27,0xee,0xf6,0xc6,0xd7,
-0x96,0xf2,0x5a,0xcb,0xcc,0x26,0x42,0x59,0x52,0x09,0xa0,0x85,0x37,0xf4,0x53,0xf2,
-0x0a,0x20,0x56,0x21,0x14,0x09,0x4c,0x96,0x21,0xd6,0xe2,0x74,0xb8,0x64,0x60,0xe9,
-0x84,0x1c,0x0c,0x0c,0xa6,0x50,0x3d,0x93,0xe1,0x6a,0xf0,0x72,0x04,0xe4,0x7a,0xd9,
-0xb0,0x08,0x3e,0xb6,0x22,0x21,0x89,0xd7,0xc7,0xa1,0xdb,0xb9,0x44,0xb0,0xb6,0x15,
-0x67,0x1b,0xa1,0xa9,0xa7,0x67,0x10,0x84,0x5c,0x07,0x20,0xc5,0x50,0xdc,0x46,0x30,
-0x9d,0xb6,0x54,0xbf,0xa9,0xcb,0x6c,0xaa,0x00,0x07,0x7a,0xa0,0xc6,0x2d,0xe6,0xe9,
-0x2d,0x69,0xdc,0xd7,0xb6,0xc4,0xb2,0x9f,0x75,0x5a,0xe7,0x66,0x11,0xf4,0x39,0x0c,
-0x95,0xc8,0x0e,0xa7,0x3b,0x19,0xde,0x9c,0x5a,0x59,0x61,0xeb,0xaf,0x8a,0x7f,0x84,
-0x6e,0x69,0x84,0xb7,0x58,0x14,0x5b,0x07,0x2e,0xcd,0x36,0x97,0xa0,0xed,0xc7,0x67,
-0xaa,0x78,0x5d,0xbd,0x3f,0x54,0x2b,0x15,0x14,0x4e,0x34,0xe6,0xa5,0x2a,0xdc,0x4f,
-0xc8,0xf6,0x6a,0x5b,0x8b,0x87,0x76,0xde,0x6f,0x26,0x5d,0x0f,0xab,0x3b,0xf6,0xec,
-0xdb,0xf5,0x0c,0x36,0xde,0xf9,0x4b,0x09,0x95,0xad,0x5b,0x9d,0xfd,0xec,0x81,0x20,
-0x59,0x09,0x3a,0x90,0x4d,0x4a,0x2d,0xd1,0x30,0x82,0xe6,0xb4,0x11,0x27,0x67,0x17,
-0x41,0x04,0x8b,0x86,0x20,0x5b,0xc5,0xb1,0xec,0x58,0x59,0xf6,0x8d,0x22,0xcd,0x1e,
-0x0f,0x99,0xc5,0x96,0x45,0x03,0xd1,0x46,0x49,0xbb,0x3f,0x8d,0xdb,0x09,0x34,0xae,
-0x5c,0xdc,0xa5,0x63,0xb0,0xbf,0x0a,0x80,0xc6,0xbe,0x02,0xb5,0xb4,0x15,0xf4,0x51,
-0x8c,0x17,0x0c,0x35,0xd2,0x8b,0x32,0x9d,0x75,0x6f,0x7a,0x62,0x6c,0xf1,0xf2,0x79,
-0xc9,0xe1,0x67,0x06,0xf8,0x50,0xf3,0x43,0x3a,0x64,0xd1,0xee,0xf3,0xd1,0xad,0x93,
-0xea,0x8f,0x97,0x46,0xd8,0x96,0xc9,0x67,0x4a,0xbe,0x69,0x34,0x66,0x6d,0xdc,0xcb,
-0x1c,0x4d,0x21,0xb0,0x5d,0xc1,0xa8,0xc1,0xe3,0xbd,0x5b,0xef,0x33,0x6d,0xd4,0x7c,
-0x5b,0x0b,0x6d,0xa3,0x48,0xd4,0x65,0xc0,0xba,0xe3,0x7a,0x7d,0x3c,0x97,0x03,0x9a,
-0x34,0xcf,0x1b,0x29,0xab,0xd3,0x7b,0x63,0x6d,0xe3,0x7d,0x6e,0x7a,0xfc,0xbe,0xef,
-0xc1,0xcf,0x7f,0xe6,0xaf,0xe2,0x15,0x21,0xb1,0x1d,0xce,0xb7,0x0c,0x8c,0xc6,0x92,
-0x99,0x23,0x4c,0x46,0x44,0x91,0x94,0x40,0x92,0xc4,0x92,0x92,0x45,0xa0,0x59,0x31,
-0xa4,0xa4,0xd8,0x02,0xcc,0x4c,0x6a,0x80,0xd2,0xc5,0x62,0x88,0xb4,0x25,0x44,0x65,
-0x12,0x34,0x52,0x99,0x1b,0x23,0x48,0x4a,0x8d,0x04,0x29,0x24,0x24,0xc8,0x4b,0x2a,
-0x42,0x99,0x8b,0x10,0xd9,0x96,0x10,0xb0,0x92,0xa4,0xa2,0x5b,0x26,0x11,0x18,0xa5,
-0x14,0xf4,0xee,0x45,0x92,0x30,0x9b,0x24,0xda,0xbc,0x74,0xc8,0x09,0x93,0x29,0xa9,
-0x93,0x0b,0x49,0x94,0x66,0x13,0xbb,0x99,0x2c,0x69,0x0a,0x28,0x29,0x9a,0x48,0xc9,
-0x46,0xf3,0xae,0x04,0xc1,0x4d,0x92,0x31,0x16,0x46,0x8c,0x79,0xd7,0x43,0xba,0xe0,
-0x90,0x68,0xd8,0xd1,0x02,0xa4,0x14,0xc8,0xd8,0x53,0x22,0x01,0x0f,0x3b,0x77,0x7e,
-0x2b,0xdf,0xba,0xbd,0xbf,0x73,0xae,0x4d,0xaf,0xb5,0x7e,0x5f,0x37,0x9e,0xa8,0xa0,
-0xc6,0x34,0x79,0x4b,0xdf,0x54,0x82,0x57,0x26,0xba,0xbd,0xbe,0xae,0xfc,0x3b,0x56,
-0x98,0xca,0x98,0xdf,0x01,0xb3,0x05,0x55,0x21,0x7c,0xf5,0xd2,0xc6,0x90,0x8c,0x88,
-0xc2,0xda,0xee,0xc9,0x2b,0xb3,0x18,0xf9,0x95,0xda,0xb3,0xd3,0x77,0x9e,0x27,0x2e,
-0xf4,0xdd,0xad,0x76,0x2f,0x30,0x03,0x83,0xcf,0x5d,0xf6,0x97,0xc2,0xea,0x76,0x3d,
-0xe9,0x2c,0x2c,0xe3,0x83,0x9b,0xb6,0xe0,0xbc,0x47,0x4c,0x6c,0x2e,0x4e,0x8b,0x5d,
-0x97,0xfa,0xde,0x8a,0x4b,0x2d,0x46,0xcd,0x56,0x06,0x44,0x1f,0x77,0xbd,0x21,0x5c,
-0x67,0xe8,0xeb,0x12,0xd3,0x3b,0x63,0xf4,0xa6,0x6d,0xda,0x58,0x50,0x6d,0x11,0x64,
-0x29,0xd4,0x73,0xf5,0x6e,0xc6,0x26,0x44,0xf4,0x1f,0x00,0x02,0x49,0x00,0xb5,0xdf,
-0xa6,0x11,0xec,0x20,0x06,0x2e,0xae,0xee,0xee,0x6e,0xa5,0x30,0x00,0xb6,0x31,0x64,
-0x35,0x9b,0xea,0x04,0x1c,0x55,0xc1,0x46,0x32,0x4c,0x38,0x77,0x1e,0x08,0x5e,0x02,
-0x03,0x04,0x46,0x49,0x20,0x6d,0xae,0x8e,0x79,0x7c,0x5a,0x07,0x33,0x1c,0x4e,0x01,
-0xd9,0x59,0x1c,0x2c,0xb1,0x95,0xba,0x2d,0xf2,0xd4,0x6a,0xbd,0xea,0x45,0x15,0x08,
-0x81,0x0e,0x10,0x76,0xf5,0xa5,0x71,0x9a,0xcc,0xed,0xaa,0x71,0xac,0xe3,0x89,0x91,
-0x0d,0x6e,0x1f,0x41,0x74,0x7d,0x71,0x4e,0x28,0x91,0xec,0x9b,0x16,0x86,0x89,0xda,
-0x1e,0x86,0xf2,0xdc,0x08,0x88,0xdc,0xb0,0x51,0x6a,0x49,0xad,0xa2,0xb6,0xe6,0x6b,
-0x1e,0x72,0xfd,0xb5,0x95,0xcb,0x18,0xfa,0x47,0xc4,0xd7,0xcc,0x62,0x6f,0x4f,0xab,
-0xce,0x4e,0x27,0xa5,0x0f,0x29,0x0b,0x8e,0xef,0x5b,0xc6,0xf1,0xc1,0xd0,0x33,0x9c,
-0x3e,0x3c,0x5a,0xc4,0x55,0xca,0x3b,0x50,0xf3,0x80,0xf3,0x47,0x35,0xa7,0xa9,0x43,
-0xb5,0x60,0x73,0x95,0x33,0x8e,0xf1,0xa8,0xae,0x1f,0x52,0xc3,0x4a,0x62,0x82,0x3d,
-0xd0,0x82,0x50,0x0b,0x71,0x58,0x3a,0xa0,0x70,0x53,0xa5,0x4a,0x5f,0x68,0x12,0x05,
-0x7b,0x8c,0x5f,0x85,0x80,0x9a,0x20,0x78,0xff,0xae,0xef,0x35,0x9e,0xfb,0x79,0xd3,
-0x0f,0x6f,0x29,0x81,0xa2,0xdb,0x46,0xa1,0xf3,0x50,0x64,0xac,0xa5,0x8a,0x48,0x7a,
-0x9c,0xea,0xc4,0x8b,0x16,0x32,0x8e,0x8c,0x4b,0x65,0x68,0x6e,0xa7,0x75,0x42,0x64,
-0x35,0x0a,0xdb,0xed,0x64,0x28,0xb3,0x3b,0x7b,0x6a,0xd8,0xe7,0xbd,0x6f,0x79,0xe3,
-0xea,0xfa,0xe0,0x19,0x8c,0x4c,0x78,0xe3,0x3a,0x2b,0xc5,0x52,0x47,0xc1,0x19,0xd9,
-0x3b,0xa5,0xc1,0x06,0x80,0x51,0x50,0x30,0x39,0x91,0x10,0xed,0xc6,0xcf,0x7b,0xf7,
-0x61,0x17,0xdb,0x5a,0x16,0x0b,0x97,0x8d,0x28,0x6e,0x8f,0xc5,0x69,0x95,0x8c,0x3c,
-0x87,0x95,0x7b,0x25,0x55,0x31,0x26,0xd0,0x9e,0x39,0xd3,0x81,0x53,0xca,0x9e,0xa2,
-0xa3,0xe9,0xae,0x3a,0x61,0x60,0x4a,0x6c,0x9e,0xe4,0x39,0x11,0x79,0x88,0x04,0x30,
-0x25,0xac,0x4c,0x43,0xc5,0x07,0xa1,0xb7,0xbf,0x68,0xc7,0xb3,0x5b,0xd9,0x23,0x16,
-0xbd,0xf5,0x68,0xc5,0xc8,0x58,0x6c,0xf5,0x52,0x86,0xf2,0xb6,0x88,0x95,0x2e,0xdc,
-0x88,0x44,0x18,0xc6,0x85,0x0e,0x58,0xaa,0xd8,0xca,0xd9,0x50,0x5f,0x1a,0x6c,0xcd,
-0x85,0x43,0xb3,0x6d,0x18,0x63,0x69,0x0e,0xb6,0x3c,0xea,0x25,0xb8,0x33,0x6f,0xc4,
-0xa6,0x1e,0x58,0x76,0x68,0x5c,0x62,0xb6,0x76,0x16,0x1a,0x03,0xad,0xe6,0x8c,0x4a,
-0x9a,0x45,0xda,0x48,0xd9,0x84,0x68,0xb3,0x01,0x67,0x30,0x10,0xda,0x46,0x8d,0x28,
-0xd1,0x4c,0x4d,0xa4,0x31,0xea,0xc1,0x53,0x42,0x54,0xcb,0x35,0x6b,0xc2,0xd5,0xad,
-0x06,0x2d,0x0c,0x3d,0x3a,0x80,0x6a,0xf5,0x79,0x6b,0x6a,0x82,0x29,0xb6,0x28,0xc0,
-0x8f,0x74,0xf5,0x60,0x6f,0xb1,0x04,0x2b,0xb4,0x62,0xd1,0x24,0x5a,0xd3,0xde,0x21,
-0x67,0xad,0x44,0x80,0xa6,0x86,0xdb,0x0f,0x0b,0xf1,0xe2,0x59,0xe9,0xef,0x36,0x9f,
-0xa8,0xa7,0xe9,0x08,0xfb,0x7d,0xf8,0x4a,0x07,0x6d,0x92,0x89,0x24,0x81,0x54,0xd1,
-0x41,0x99,0xaf,0xb4,0x33,0xc6,0x02,0x7c,0xee,0x08,0x01,0x2e,0x3e,0x69,0x8a,0x6b,
-0xb8,0x31,0x0a,0xec,0xdc,0xed,0x2f,0xb4,0x4a,0x67,0x15,0x74,0x9c,0x09,0x05,0xc4,
-0x19,0xe6,0x0c,0x08,0x89,0x41,0xdf,0x55,0xe3,0xcf,0x6e,0x1d,0x5e,0xd9,0x9e,0x6d,
-0x7f,0x53,0x81,0x60,0x0b,0x93,0xc0,0x75,0x7a,0x6c,0x1a,0x1a,0xb0,0x86,0xfd,0x3d,
-0xfd,0x7b,0xb6,0x4a,0xd2,0x6e,0xb3,0x08,0xd5,0xa4,0xbd,0x5a,0xd2,0x18,0xa5,0x19,
-0x79,0x55,0xd5,0x5b,0x0c,0x30,0xc3,0xe5,0xd8,0x3f,0x93,0x3b,0xfe,0x7e,0xe0,0x36,
-0xa3,0x6b,0xf0,0x19,0xc6,0x82,0x96,0xe7,0x41,0xc2,0x4b,0x37,0xb4,0x84,0x16,0x27,
-0xa2,0x8c,0x0e,0x35,0x46,0x47,0x06,0x31,0x50,0x14,0xf6,0xc0,0x19,0xb1,0x00,0xdb,
-0xa6,0x8e,0xc2,0x45,0x34,0x8d,0x58,0x20,0xf0,0xc6,0xd0,0x97,0x76,0x85,0x66,0x80,
-0x10,0x9b,0x15,0x46,0xaa,0xbe,0xca,0xb9,0xab,0x15,0x6b,0xd8,0xae,0xab,0x2b,0xc5,
-0xb7,0xa2,0xb0,0x50,0xd2,0x05,0x18,0x20,0x23,0x01,0xb4,0x88,0x79,0x66,0xbe,0x14,
-0x1d,0x04,0x8e,0x04,0x44,0x71,0xc4,0xbf,0x2c,0xdc,0xa1,0xa9,0x00,0x21,0x25,0x9f,
-0x34,0xd2,0x56,0x15,0x34,0xbb,0xb5,0x10,0x5a,0x99,0x82,0x07,0x3d,0x98,0x3b,0x7d,
-0xd2,0x96,0x81,0x19,0x62,0x20,0x85,0x58,0x8e,0x96,0x55,0x75,0x45,0x05,0x30,0x2e,
-0x92,0x0b,0xb6,0xc2,0x9c,0x6d,0x48,0x5f,0x7e,0xaa,0xde,0xcf,0xab,0x7b,0x0f,0xd5,
-0xda,0x1b,0x0d,0x6f,0x0e,0x12,0x7d,0x41,0xe1,0x00,0x05,0x1e,0xcd,0xb6,0x07,0x7e,
-0xa8,0x68,0x0f,0x7e,0x5a,0x93,0xc8,0x77,0xd3,0x52,0x61,0x9d,0x91,0xf5,0x16,0x88,
-0x50,0x8d,0x0b,0x56,0x4e,0x2c,0xb0,0xad,0x94,0x1e,0xd7,0x5e,0xab,0xd3,0x48,0xe7,
-0x16,0x17,0x18,0xe4,0xa1,0x24,0x92,0x17,0x22,0xa6,0x6f,0x40,0x70,0xc5,0xe3,0x27,
-0x29,0x6c,0x60,0x47,0xae,0x2b,0xd0,0xd2,0x18,0xcf,0x1c,0x4d,0x39,0x87,0xa0,0xc2,
-0x3c,0xdb,0x81,0xb1,0x23,0x40,0x80,0x79,0xe7,0xb8,0xd1,0x6d,0x77,0xe2,0x28,0xc3,
-0x9e,0x35,0xc3,0x4d,0xae,0xca,0x23,0x66,0x28,0x52,0x41,0xa1,0xef,0xc4,0xa1,0x8e,
-0xe2,0x7a,0xa1,0xbe,0xfc,0x90,0xe0,0xb2,0xe2,0x85,0x1a,0x02,0x34,0x0c,0x7b,0x56,
-0xe5,0xc6,0xb4,0xae,0xbf,0x28,0x8d,0x81,0x76,0xb7,0x06,0xd3,0x15,0x36,0xce,0x98,
-0x75,0xa2,0x0f,0x5e,0x7c,0xba,0xbc,0xaa,0x0f,0x2f,0xd8,0xc5,0x73,0x83,0x7f,0x1a,
-0x85,0x92,0xe7,0x7f,0xcb,0xce,0xf6,0xf7,0xaf,0xb6,0x9e,0xe8,0x32,0x7a,0xd0,0x9e,
-0xa4,0x0d,0x7e,0x5f,0xe5,0xf5,0xd3,0xe6,0x81,0xe8,0x78,0xed,0x21,0xc3,0x01,0xbf,
-0xa0,0xf2,0xc5,0xa3,0x5e,0x8f,0x2a,0x8e,0x97,0x66,0x6a,0x98,0x69,0xfc,0xaf,0xcd,
-0x8b,0xdc,0xc8,0xf7,0x3b,0x01,0xf0,0xac,0xf8,0xba,0x3a,0x5e,0x0f,0x1a,0xd3,0x0c,
-0x0d,0xca,0x67,0xe7,0x80,0xf6,0xb8,0xf0,0x85,0xba,0x08,0x5b,0x48,0xa4,0x9f,0x84,
-0xee,0x79,0xa4,0x39,0x20,0x41,0x2c,0x4f,0x9f,0xb1,0xd5,0x0b,0x57,0xe0,0xde,0xd2,
-0xc6,0x09,0x63,0x56,0xf1,0x48,0xea,0x16,0x8c,0xcb,0x32,0xee,0x05,0xee,0x57,0x8f,
-0x2e,0xc1,0x85,0x9d,0xa0,0x6f,0x28,0x98,0x6c,0xd6,0xd5,0xcf,0x7d,0x13,0x1b,0x71,
-0x1e,0x0a,0x2d,0xd2,0x42,0x92,0x4f,0x78,0xd8,0xd6,0x17,0xd8,0x22,0xe7,0x59,0xc4,
-0x35,0x65,0x2e,0x98,0xdb,0x60,0xc9,0xc6,0xaa,0x34,0xb3,0xaf,0x67,0x6e,0x3c,0x65,
-0xde,0xc8,0x0e,0x04,0x5e,0x38,0xef,0x32,0x7c,0xab,0x1b,0xab,0x94,0x1c,0xf8,0x75,
-0x21,0x12,0x3b,0xfb,0xac,0x70,0x0c,0xf2,0x77,0x85,0xa7,0x4d,0x04,0x06,0x1c,0x8c,
-0xb3,0x45,0x34,0xda,0x33,0x6b,0x0b,0x6a,0x11,0x9f,0x5e,0xbd,0x16,0x0f,0x3f,0x5e,
-0xeb,0x19,0x8c,0xbb,0x78,0xe8,0xb3,0x6c,0xf7,0xe3,0x57,0x49,0xbb,0x1c,0x3e,0xa4,
-0x45,0x4e,0x4a,0x48,0x54,0xd5,0x0f,0x40,0xe6,0xf5,0x19,0x36,0xb9,0x7a,0x96,0x8d,
-0xb4,0x74,0xc4,0xd9,0xa5,0x50,0x88,0x2c,0x78,0xbe,0x04,0x89,0xa7,0x7a,0xf9,0xd0,
-0x61,0x1b,0xa3,0x76,0xf9,0x6e,0x46,0x36,0x46,0xaf,0x44,0x75,0xa5,0x9b,0xad,0xcd,
-0x36,0x2d,0xd6,0x2d,0xc5,0x7b,0xbe,0x5b,0x46,0x3d,0x7d,0xae,0x08,0x6c,0x40,0xf0,
-0x15,0x21,0xb4,0xd7,0x49,0xe4,0x75,0x98,0x53,0xd8,0x60,0xfa,0x81,0xb7,0x1f,0xa8,
-0xe3,0xd3,0xb8,0x44,0xc5,0x93,0xaa,0x1f,0x03,0x1b,0x69,0x8c,0x63,0x7c,0x21,0x0c,
-0xdf,0xdf,0x1c,0xeb,0x95,0x83,0xaa,0x1b,0xae,0x5a,0xb3,0x63,0x7d,0xdd,0xbb,0x71,
-0x27,0x4c,0x20,0x79,0x99,0xcb,0x2c,0x90,0xf2,0x8e,0x87,0x0e,0x20,0xba,0xc7,0x9c,
-0xd8,0xe6,0x68,0x12,0x0c,0x89,0x86,0x22,0xb5,0x66,0x06,0x84,0x90,0x81,0x46,0x06,
-0xe1,0xd8,0xdc,0x20,0x20,0x8e,0x48,0x0b,0x9c,0x3e,0x84,0x5e,0x55,0xd7,0x45,0x18,
-0xf2,0x87,0x62,0xe4,0xd1,0xc9,0x61,0x40,0xa0,0x8e,0xc1,0x24,0x44,0xa9,0x76,0x47,
-0xdf,0x77,0xa6,0x8f,0x51,0x33,0x32,0xc5,0x93,0x7b,0xbe,0x53,0xc7,0x17,0x0f,0x21,
-0x67,0x42,0x0c,0x3b,0xb8,0x74,0xdc,0xdf,0x52,0x17,0x15,0x24,0xae,0xb6,0x97,0x68,
-0xb9,0x09,0x06,0xaa,0x9b,0x1d,0x40,0xa1,0xa0,0x6c,0x54,0x5c,0x84,0x3d,0x90,0xd9,
-0xb1,0xb6,0x2c,0x84,0x19,0x72,0xe2,0x40,0x09,0x5b,0x25,0xa1,0x51,0x02,0xd5,0x96,
-0x88,0xa9,0x01,0x48,0x13,0xbc,0x02,0x3b,0x88,0x29,0x52,0xa3,0x10,0x0c,0xb2,0x72,
-0xd0,0xb7,0x35,0x76,0x82,0xf2,0x2b,0xc5,0xdd,0x80,0xbd,0x67,0x43,0x19,0x4a,0xe0,
-0xd2,0x32,0xa0,0x4a,0x65,0xc4,0x40,0x62,0x2e,0x08,0xbb,0x8c,0x68,0x05,0x4a,0xe3,
-0x65,0x74,0x20,0x10,0x2e,0xc4,0x37,0x43,0x3a,0xad,0x59,0x57,0x97,0x51,0x29,0x4c,
-0xcc,0x54,0xd1,0x71,0xf8,0xf4,0xef,0xce,0x77,0x46,0x6e,0xe4,0xeb,0xda,0x41,0x16,
-0x67,0xee,0x3b,0x23,0x15,0x42,0xaa,0x80,0xbd,0x56,0x2b,0xc0,0x6f,0x88,0xbd,0x86,
-0x5a,0x08,0x08,0xf3,0xc6,0x0d,0x64,0x74,0x68,0x0d,0xa4,0x8b,0x0e,0xdf,0x3b,0x58,
-0xf0,0xbe,0x82,0x73,0xc1,0xb2,0xcd,0x17,0xd3,0x8e,0x17,0xdb,0x76,0x42,0x26,0x5e,
-0xad,0xeb,0x0c,0xb0,0x0a,0x38,0x21,0xdf,0x98,0x35,0xcb,0x57,0x0c,0x50,0xec,0x24,
-0x00,0x94,0x48,0x56,0xdf,0x4d,0x1f,0x1a,0xdd,0x2c,0xb4,0x81,0x83,0xe3,0x0f,0x6b,
-0x28,0x16,0x32,0xde,0x2c,0x39,0xb6,0x93,0x6e,0x06,0x5d,0xea,0x14,0x9e,0xeb,0xef,
-0x99,0x9d,0x09,0xad,0x89,0xad,0xc1,0x28,0xd9,0xb6,0x61,0x76,0x2d,0x0d,0xbb,0x1e,
-0xf5,0xbe,0x96,0xb3,0x16,0x3b,0x76,0x03,0x96,0x9b,0x1b,0x17,0x87,0x4d,0x1a,0x06,
-0x36,0xcc,0xe8,0xeb,0x2a,0xed,0x73,0xa6,0x6f,0xa9,0xdc,0x3a,0xb4,0x5f,0x3a,0x25,
-0xac,0xf7,0x3c,0xf7,0x30,0x25,0x70,0x39,0xfa,0x51,0x07,0x16,0x33,0xbf,0x3d,0xf5,
-0xaa,0xb4,0x69,0x36,0xa0,0x51,0xa1,0x33,0x0b,0xe9,0x49,0xe9,0x49,0x10,0x21,0xff,
-0x1d,0xd7,0x75,0x0e,0x3c,0x7a,0xe9,0xc1,0x38,0x78,0x17,0xa2,0xee,0xfd,0xe8,0xec,
-0x2e,0xbc,0x4c,0x8a,0x32,0xea,0xaa,0xea,0xf0,0x44,0xc1,0xd5,0x8a,0x7a,0x15,0x40,
-0xf2,0x63,0x42,0xc3,0x1e,0x99,0x88,0x1d,0x7d,0x45,0xa2,0x4c,0x5d,0xed,0x46,0xfc,
-0x37,0xaa,0xf6,0xca,0x06,0x3e,0xc6,0x59,0xc2,0x43,0x29,0x89,0xb1,0x3f,0xc8,0x35,
-0xd5,0xd0,0xcb,0x78,0x3d,0x26,0x16,0x64,0x02,0x45,0xe7,0x70,0xc8,0xe0,0x11,0xa4,
-0x30,0xc2,0xee,0xc9,0x20,0x01,0xa4,0x07,0x8c,0x6a,0x77,0x23,0xd0,0xde,0xb8,0x19,
-0xb2,0x6d,0x0d,0x88,0xf2,0xc8,0xd9,0x49,0x1d,0x21,0x17,0xeb,0x57,0x9c,0x07,0x2c,
-0xdb,0xba,0x82,0x39,0x43,0x6c,0x39,0x6d,0xd6,0x1d,0xdd,0x6c,0xcf,0x15,0x33,0xa4,
-0x30,0xd6,0x87,0x8c,0x58,0xe4,0xd4,0x26,0x60,0xd1,0x28,0x9f,0x72,0x14,0x9f,0x4f,
-0x2e,0x33,0x9e,0xbb,0x87,0x10,0x02,0x86,0xf6,0xc4,0xce,0x45,0x28,0x7d,0xd0,0x68,
-0x95,0x12,0x47,0x89,0x4f,0xc5,0x22,0x4e,0x24,0x3a,0x74,0x06,0x03,0xac,0x4e,0xbc,
-0x7c,0x68,0x56,0xdb,0xb3,0x92,0x2c,0xed,0x9c,0xe0,0xea,0x5e,0xb1,0x17,0x66,0x52,
-0xa5,0x28,0xc6,0xb7,0xc5,0xe1,0x8b,0xba,0x22,0x5f,0x64,0x9e,0xb7,0x95,0xbd,0x2f,
-0xa1,0xd3,0xb0,0xa0,0xb7,0x19,0xd6,0xa1,0xaa,0x77,0xc1,0x16,0x36,0x93,0xcd,0x92,
-0xf7,0xf2,0x53,0xec,0xaf,0x07,0x8f,0xad,0x5f,0x21,0x71,0x7e,0x19,0x18,0x5d,0xad,
-0x0c,0x34,0x62,0xea,0xc2,0xf2,0x5a,0x9b,0x29,0xf7,0x71,0x44,0x80,0x03,0x2c,0x48,
-0x41,0x0c,0xf3,0x7b,0x80,0xe5,0x11,0x1b,0xa5,0x3a,0x0d,0x7b,0x65,0xb3,0x57,0x8d,
-0x0d,0x6e,0x73,0x08,0x52,0x23,0x9b,0x58,0xc0,0xaa,0xd4,0xce,0xae,0x2c,0xb5,0x0d,
-0xf8,0xd6,0xd2,0xe8,0xa3,0xcf,0x89,0xec,0x2d,0x31,0xd0,0x12,0x6d,0x06,0x11,0xd7,
-0x0e,0xc4,0x19,0x5d,0x9a,0x38,0x65,0x9b,0x6d,0x9d,0xec,0x45,0x65,0xb3,0x41,0x8c,
-0x28,0x4b,0x52,0xa1,0x0d,0x83,0x4d,0x71,0xad,0xe9,0x91,0xa5,0x74,0x9d,0x46,0x6c,
-0xaf,0xe7,0x37,0x77,0xb4,0x35,0x84,0xb3,0xd2,0x1d,0x55,0x4c,0x14,0x25,0x34,0x42,
-0x21,0x24,0x4f,0x83,0x82,0x88,0x33,0x7e,0x67,0xdc,0xcd,0x0f,0x0c,0x16,0x0f,0x6e,
-0xbe,0x35,0xd4,0x89,0x96,0xd4,0x65,0x50,0xb5,0x12,0xd7,0x0f,0xcd,0xe2,0x48,0x89,
-0xe3,0x6c,0x18,0xc9,0xa1,0xc7,0x66,0xa8,0x94,0x69,0xce,0x33,0xb3,0xda,0x99,0x9e,
-0x18,0x56,0xfc,0x38,0xad,0x27,0x7d,0x86,0x02,0xc6,0x91,0xf1,0x3b,0x0e,0x62,0x33,
-0xa2,0x0d,0x9a,0x7a,0xab,0x76,0x80,0x72,0x66,0xd3,0xf8,0x7d,0xc3,0x6f,0x6a,0x1f,
-0x79,0xad,0xfd,0x6e,0x50,0x17,0x73,0x66,0xb9,0xe4,0x67,0x8d,0xeb,0x00,0x74,0x34,
-0x46,0x8e,0xc6,0x88,0x30,0x99,0xdb,0x66,0x29,0xa7,0x87,0x08,0x75,0x39,0xea,0x5c,
-0xb0,0x03,0x6c,0xd4,0x98,0xcb,0x09,0x22,0xc8,0x56,0x9a,0x72,0xf5,0x30,0xcf,0x37,
-0xcb,0x52,0x2b,0x08,0x63,0x4d,0xa1,0xb5,0x51,0xb4,0xda,0x1c,0x71,0xc9,0x07,0x06,
-0xdc,0x6d,0xb7,0x08,0xe4,0x6e,0x39,0xe9,0xef,0x63,0xb3,0xbf,0x45,0x6e,0x6d,0xc6,
-0xf9,0x1f,0x88,0x4a,0x7c,0x94,0xf7,0x2a,0x11,0x3a,0x35,0x6b,0x67,0x91,0x15,0x12,
-0xea,0x21,0xb2,0x17,0xa7,0x29,0x66,0x05,0xba,0x85,0x9e,0x73,0x8b,0xb1,0x68,0xc6,
-0x26,0x8d,0x98,0x29,0xd6,0xc4,0xa1,0xf8,0xd7,0x64,0x8b,0x43,0xc3,0x0c,0xf5,0xae,
-0xba,0x5f,0x2c,0x2e,0x6e,0x17,0x30,0x59,0x5e,0x94,0xce,0x67,0xe8,0xef,0xba,0x3a,
-0x7c,0x5b,0xbb,0x47,0x5f,0xc3,0xf9,0xd7,0xf9,0x3f,0x8b,0x07,0xe1,0x89,0x1f,0x18,
-0x79,0xf9,0x37,0xf0,0x51,0x5c,0xb3,0x8f,0xd2,0x13,0xf0,0x88,0xf2,0xa0,0x57,0xa8,
-0x90,0x69,0xb7,0xb3,0x28,0xf7,0xee,0xc5,0x16,0xb6,0x3d,0x29,0x93,0xb8,0x54,0x3e,
-0x37,0x7d,0x5a,0x6c,0xd0,0xf5,0xdb,0x53,0x3c,0xbf,0xd0,0x0c,0xad,0x92,0x34,0xb7,
-0xc4,0x43,0x6f,0xb4,0xe3,0x9f,0xa6,0x92,0x58,0x94,0x63,0x22,0xe3,0xd7,0xd6,0xd4,
-0x85,0x25,0x66,0x56,0x5e,0x6c,0xef,0x98,0x5e,0xeb,0x18,0xd8,0x87,0x9d,0x5e,0xd5,
-0x9b,0x5e,0xc6,0x2f,0x3b,0xdb,0x8c,0x9d,0x6a,0x69,0xe1,0xe3,0x49,0x54,0x4e,0xdc,
-0x69,0xa5,0xd4,0x9a,0x28,0x66,0xea,0xa6,0xd4,0x6b,0xc6,0x31,0xec,0x2b,0x13,0x87,
-0x83,0x5c,0xe6,0xca,0x09,0x3a,0x81,0x10,0x9a,0x38,0x68,0x37,0x22,0x66,0xb7,0x2f,
-0xac,0x79,0x84,0x1b,0x01,0x1b,0x0a,0x72,0x81,0x20,0x87,0x75,0x33,0x41,0x85,0xf8,
-0x2d,0xbe,0x01,0xa4,0x65,0x99,0xd4,0x6a,0x1a,0xe0,0x24,0xd9,0x84,0xc7,0x4d,0x22,
-0xf5,0x68,0x0a,0x8a,0xb6,0x6c,0x40,0x1c,0x03,0xe4,0x87,0xc4,0x85,0xed,0xb4,0x86,
-0xcc,0xeb,0x58,0x0f,0xe5,0xef,0xd4,0x17,0xef,0x14,0x7a,0x37,0x01,0x81,0x38,0x3b,
-0x16,0xa0,0xf4,0xd0,0x8d,0xb8,0xac,0x30,0xf9,0x20,0x78,0xfd,0x78,0x3a,0xea,0x0f,
-0xdd,0xf9,0x5a,0x03,0x30,0x9a,0x78,0x6a,0x11,0xad,0x4f,0x9b,0xc2,0x20,0x8d,0x42,
-0x3b,0x63,0xb5,0x0b,0x38,0xcb,0xf9,0x10,0xf2,0xc5,0xde,0xf9,0xfc,0x43,0x1b,0x30,
-0x96,0xd9,0x8d,0x9b,0xde,0x50,0x14,0x67,0xa3,0xf5,0xa1,0x32,0xde,0x19,0xae,0xb5,
-0x0a,0x7b,0xc2,0x2d,0x5c,0xc0,0x92,0x40,0x9f,0x1a,0xb6,0xc6,0xd5,0x9b,0x2a,0x2d,
-0x36,0x37,0x80,0xbc,0x65,0x30,0x8c,0xf4,0x1f,0x42,0xa7,0x00,0x9b,0x84,0xf8,0xa4,
-0xe0,0x97,0xb8,0x30,0x82,0xed,0x30,0x20,0xcf,0x19,0xbc,0xc4,0xd1,0xc0,0xd6,0x10,
-0xbb,0xc4,0x0d,0x2c,0xd6,0x59,0x3b,0x8a,0x70,0x63,0x31,0x0e,0xa4,0x44,0x2a,0x13,
-0xf2,0x8f,0x78,0x3c,0x37,0xcf,0x41,0x15,0xf2,0x35,0x98,0x22,0x25,0x5b,0x84,0x46,
-0x21,0xca,0x51,0xe7,0xe5,0x94,0x55,0x20,0x88,0x0c,0x66,0x2a,0x3b,0x47,0x28,0x8f,
-0x96,0x2f,0x79,0x12,0x38,0x32,0x2b,0xdf,0x4b,0x26,0x69,0xba,0x94,0x0b,0xf4,0x71,
-0x94,0x38,0xb9,0x12,0x87,0x0f,0xf3,0xa1,0x75,0xdf,0x0b,0x7c,0x43,0x47,0xf8,0xef,
-0xf3,0x81,0x1b,0x21,0x17,0xc8,0xcf,0xad,0x10,0x24,0x0a,0xa7,0x54,0x50,0x5e,0x56,
-0xd6,0xcb,0x08,0x30,0x55,0xa8,0x82,0x2e,0xb3,0xca,0xd2,0x6d,0xed,0xef,0x08,0x23,
-0xca,0xdc,0xdf,0x62,0x82,0xdf,0x58,0x86,0xd8,0x36,0x4d,0x98,0x72,0xa5,0xc7,0x2e,
-0x84,0x01,0x03,0x68,0x5e,0x8a,0xc5,0x8c,0x33,0x9b,0xd1,0xd2,0x18,0xf0,0x30,0x19,
-0x31,0xe4,0xb4,0x9a,0xc9,0x79,0x42,0x1e,0x32,0xab,0x4b,0xed,0xb4,0x96,0x55,0x18,
-0xc3,0x8f,0x0d,0xc9,0xa2,0x1e,0xa8,0x73,0xbe,0xf8,0x23,0x43,0x27,0x21,0xad,0x33,
-0x4b,0x17,0x18,0x24,0x92,0xac,0xe0,0xb0,0x12,0x59,0x26,0x42,0x0d,0xc2,0x54,0x54,
-0xe1,0xd8,0x70,0x87,0x47,0xb1,0xe4,0x72,0x44,0x73,0x42,0xc5,0x39,0x75,0xcd,0x28,
-0x8b,0x0a,0xc4,0xd4,0x55,0x44,0x10,0x06,0xb6,0x71,0xa4,0x5a,0x0b,0x1f,0x3e,0x17,
-0x95,0x3b,0x4f,0xb3,0xde,0x34,0xf4,0x77,0xd5,0xcb,0x32,0xb1,0x5b,0xdf,0xba,0xce,
-0x9e,0xad,0x8b,0xa4,0xd1,0xa2,0x84,0x60,0x1a,0xcd,0x35,0x73,0x9c,0x51,0xf1,0x9a,
-0x7b,0xae,0x15,0x77,0x10,0xda,0x36,0xd0,0x2a,0x48,0xa8,0x49,0x64,0x7a,0xf8,0xc2,
-0x1d,0xeb,0x81,0x9a,0xcc,0x9d,0xbf,0x44,0x9d,0xc1,0x1e,0x02,0xc7,0xbc,0x04,0xad,
-0x08,0xd3,0x38,0x24,0x93,0x91,0xc9,0xa1,0x61,0x06,0x63,0xba,0xed,0x3a,0xdf,0x4a,
-0xe8,0xda,0x13,0xa1,0x0c,0xa2,0x1c,0x02,0x0b,0x49,0x46,0x16,0xf1,0x0e,0x45,0x53,
-0xb8,0x26,0x33,0x87,0x63,0x16,0x6c,0xd0,0x16,0xc5,0x49,0xb2,0x16,0x25,0xc3,0xfb,
-0x1c,0xcb,0x82,0x88,0x4e,0x3c,0x3f,0x8d,0x42,0xa4,0x49,0x48,0x52,0x82,0xc7,0x0c,
-0xac,0x2f,0x3c,0xbc,0x35,0x31,0x46,0x7f,0x13,0xd3,0xeb,0xf4,0xbb,0x73,0xbe,0x9f,
-0xc9,0x1e,0x3e,0x99,0xee,0x58,0xf0,0xa2,0xaa,0x7e,0x74,0x1c,0x4b,0x11,0x15,0xe2,
-0x0c,0xcb,0x11,0x82,0x48,0x99,0x6c,0xbc,0xb6,0x92,0x25,0x8b,0x40,0xec,0x82,0x9d,
-0xde,0x7c,0x70,0xfd,0x69,0x6e,0x68,0xf1,0x09,0xcb,0x02,0x4c,0xa6,0x42,0x0c,0x7d,
-0x51,0xc4,0x4b,0x84,0x51,0xf6,0x74,0x0f,0x29,0xb0,0xfc,0x60,0x7c,0xe4,0x40,0x00,
-0xf6,0x28,0xd6,0x29,0xda,0x37,0xf0,0x62,0x84,0x4f,0x2f,0xf1,0xec,0xaa,0x6a,0xc9,
-0x43,0x79,0xed,0xe3,0x1e,0x3d,0xb0,0x06,0x73,0xe1,0xc1,0x9a,0x5a,0xcf,0xb3,0x8b,
-0x6c,0x11,0xd7,0x95,0xc4,0x20,0x40,0x29,0x22,0x8a,0xa0,0xab,0x92,0x72,0x8d,0xb6,
-0x42,0xa8,0x6e,0x68,0xc2,0xd1,0xe5,0xbb,0x1d,0xd9,0xa7,0x71,0x92,0x5a,0x09,0x26,
-0x38,0x74,0x42,0x75,0xec,0x7d,0xfa,0x8b,0xd0,0x52,0x5a,0xab,0xce,0xf2,0x4d,0x24,
-0x28,0xf3,0xb8,0x77,0x27,0x0c,0x0a,0x0c,0x71,0x5b,0x56,0x26,0xa6,0xb5,0x89,0x02,
-0x58,0x36,0x51,0x2c,0x00,0x4d,0x07,0xbe,0x16,0x84,0xea,0xc2,0x8a,0x21,0x08,0xe0,
-0xda,0x1d,0x9c,0x6c,0x58,0x91,0x0d,0x31,0x36,0xc1,0xb0,0xbd,0xad,0xbd,0xfb,0xdb,
-0x0b,0x2d,0x58,0x63,0x18,0x4d,0x5d,0x0d,0xa5,0x33,0x34,0x29,0x85,0x33,0xac,0x05,
-0xcb,0x48,0x4c,0xdb,0x3e,0xbe,0xad,0xe9,0xdd,0x82,0x3d,0x87,0x67,0xd4,0xd8,0xf6,
-0xc4,0xb0,0x04,0x4d,0xf3,0x62,0xa3,0xb9,0x1b,0xe3,0xa3,0x91,0x0b,0xd2,0x0b,0xbe,
-0xe8,0x27,0x9d,0xcb,0x84,0x36,0xcb,0xdc,0xe2,0xe2,0x39,0x58,0x98,0xde,0xbb,0xd6,
-0xb2,0x8f,0x2d,0x23,0x2b,0xc7,0x05,0x51,0x2e,0x50,0x80,0x1e,0x8c,0xc4,0x6d,0x49,
-0xc1,0x26,0x73,0x2a,0xa2,0xac,0xc4,0x47,0x88,0x56,0x41,0x60,0x41,0xd9,0x29,0xe5,
-0x62,0x11,0x66,0x27,0xbb,0x99,0xa8,0xec,0xd9,0x3e,0xe1,0x40,0xc4,0x3b,0x32,0x5a,
-0x4e,0x24,0xcc,0x23,0x13,0x3a,0x77,0xbd,0xa3,0x98,0x8e,0x68,0x16,0xf1,0x7c,0x90,
-0xa5,0xfb,0x45,0xde,0x23,0x7a,0x4a,0x27,0x33,0x95,0x6e,0xa0,0x0a,0x94,0x44,0xb7,
-0x85,0x9f,0xc6,0x78,0x79,0x70,0x8f,0xa6,0xac,0x4d,0x75,0xc7,0xb3,0xc2,0x24,0x20,
-0xec,0x83,0x45,0x6a,0xf8,0x47,0x28,0xc5,0xcd,0x8f,0x34,0xcb,0x97,0x0a,0xa8,0x38,
-0x4e,0x20,0x51,0x76,0x12,0x87,0xcf,0xdd,0x19,0x5d,0xc6,0x2a,0x20,0x64,0x8b,0x7f,
-0x93,0xd1,0xf0,0x94,0xa2,0xf0,0x5d,0xe7,0x8a,0xf2,0x0c,0x11,0x68,0x21,0x94,0x53,
-0x23,0x8c,0x6a,0x64,0x19,0x97,0x4c,0x5d,0x22,0xc4,0x90,0x60,0x8e,0xe6,0x8e,0x21,
-0xc0,0x90,0xdb,0x7a,0x54,0x3b,0x95,0xba,0xa3,0xb7,0x5d,0x46,0xd3,0xa2,0x2c,0x82,
-0x61,0x20,0xe5,0xb0,0x4b,0xc3,0xfb,0x90,0x38,0x74,0x86,0xfb,0x5e,0x30,0x2a,0x8a,
-0x81,0x41,0x48,0x77,0xca,0x2b,0x66,0x03,0x37,0x52,0xff,0x2c,0x28,0x7b,0x02,0x2e,
-0xc1,0x4d,0x35,0xba,0xbb,0x82,0x94,0x66,0x54,0xcb,0x80,0xc8,0x47,0xba,0xfa,0xf1,
-0x66,0xe0,0xbd,0x68,0x45,0x50,0x5f,0xc9,0x46,0x8a,0x59,0x22,0x51,0x80,0xe1,0x75,
-0x97,0xf8,0x88,0xa4,0x59,0x25,0xcc,0x8d,0x5b,0xc4,0x8f,0x1b,0x27,0x66,0x04,0x90,
-0x61,0x32,0x03,0xd4,0x35,0xb9,0x8e,0x9d,0xdc,0x22,0x5b,0x3f,0x4e,0x76,0x8c,0x52,
-0xc2,0x84,0x9c,0x31,0x3e,0x5c,0xbb,0x3b,0x69,0x65,0xc2,0x92,0x4a,0x3d,0x6f,0x21,
-0xc3,0x12,0x23,0x29,0x93,0x12,0x0c,0x14,0x6c,0x84,0x46,0xe5,0x99,0x6c,0xb5,0xb2,
-0x16,0x64,0x39,0xdf,0xb6,0xd7,0x79,0xba,0x07,0x51,0xdf,0x7b,0x27,0x36,0x33,0xa7,
-0x0f,0x47,0x64,0x53,0x58,0x4a,0x29,0x52,0x0a,0x27,0x10,0x1e,0x3b,0x23,0x18,0x20,
-0x99,0x17,0x2b,0xb3,0x8e,0x5a,0xea,0x62,0x06,0x6b,0x35,0x4d,0x6b,0xfc,0x7a,0xbf,
-0x1f,0x90,0xfc,0xbd,0x5f,0x6f,0xf3,0x21,0x44,0x65,0x0b,0x88,0x6c,0xcc,0x66,0xa3,
-0x3c,0xef,0x03,0x9f,0x44,0xea,0x7d,0x50,0x48,0x04,0x2a,0x89,0xa2,0x14,0x9a,0x37,
-0x23,0xfb,0x6d,0xc9,0x00,0x85,0xe3,0x5f,0xdb,0x9d,0x5e,0xdd,0xa5,0x7a,0xb9,0xe6,
-0xdc,0x6c,0x90,0x08,0x5f,0xb2,0xbe,0x6f,0xb7,0xa7,0x34,0xfd,0xb7,0x48,0x04,0x29,
-0x1d,0xe6,0x56,0x52,0x57,0x29,0x42,0x87,0x56,0x3a,0xd2,0x01,0x0a,0xbb,0xd1,0x29,
-0xc2,0x90,0x08,0x55,0x6d,0xec,0xda,0x85,0x09,0x00,0x85,0x4a,0x40,0x21,0x5f,0xe2,
-0x9d,0xe1,0x1f,0x25,0xf8,0x62,0x8c,0x84,0x21,0x0a,0x3f,0xe2,0xee,0x48,0xa7,0x0a,
-0x12,0x0d,0x4a,0x09,0x1a,0x00,
+0150,0061,0061,0101,0131,0046,0123,0131,0071,0314,0132,0071,0000,0012,0277,0337,
+0200,0000,0020,0130,0003,0377,0342,0077,0377,0377,0360,0277,0347,0337,0140,0140,
+0033,0074,0000,0036,0316,0206,0063,0012,0075,0367,0045,0006,0276,0000,0013,0313,
+0322,0152,0305,0153,0320,0016,0353,0171,0346,0364,0001,0153,0120,0322,0313,0124,
+0200,0320,0112,0232,0317,0132,0367,0271,0352,0173,0120,0110,0111,0133,0155,0215,
+0331,0227,0135,0260,0006,0371,0340,0152,0140,0040,0020,0011,0250,0322,0117,0124,
+0323,0046,0043,0046,0064,0046,0103,0020,0003,0114,0202,0010,0002,0106,0204,0324,
+0206,0200,0000,0032,0064,0006,0200,0022,0230,0222,0051,0342,0247,0344,0236,0221,
+0103,0011,0240,0006,0040,0060,0115,0031,0000,0011,0075,0122,0224,0212,0150,0151,
+0372,0240,0001,0223,0100,0015,0000,0006,0023,0041,0240,0022,0210,0236,0246,0123,
+0115,0114,0322,0000,0000,0155,0115,0032,0075,0064,0320,0324,0311,0215,0115,0000,
+0221,0010,0021,0064,0310,0021,0042,0236,0120,0000,0000,0000,0006,0215,0077,0367,
+0271,0364,0161,0147,0053,0244,0275,0235,0272,0122,0121,0032,0050,0331,0055,0011,
+0001,0114,0333,0110,0134,0267,0113,0306,0272,0134,0351,0257,0257,0335,0242,0245,
+0042,0306,0060,0130,0211,0050,0275,0073,0224,0141,0157,0116,0335,0042,0004,0106,
+0145,0011,0155,0171,0334,0155,0105,0074,0355,0323,0060,0023,0113,0307,0121,0215,
+0033,0134,0256,0213,0272,0053,0241,0256,0116,0363,0316,0024,0031,0231,0024,0221,
+0236,0070,0042,0202,0163,0264,0302,0267,0147,0115,0057,0072,0271,0214,0232,0066,
+0057,0117,0136,0257,0027,0272,0270,0130,0265,0031,0023,0041,0154,0105,0213,0105,
+0006,0211,0347,0136,0333,0316,0243,0150,0244,0307,0261,0133,0231,0115,0106,0014,
+0130,0111,0275,0253,0244,0146,0365,0363,0317,0046,0107,0257,0136,0317,0157,0245,
+0344,0214,0031,0061,0033,0044,0314,0104,0206,0011,0053,0334,0163,0144,0117,0027,
+0046,0151,0014,0345,0163,0050,0050,0231,0276,0213,0375,0374,0136,0265,0253,0133,
+0357,0377,0117,0341,0125,0175,0356,0315,0223,0036,0152,0245,0025,0137,0055,0224,
+0310,0067,0244,0213,0353,0044,0221,0230,0126,0146,0174,0325,0145,0277,0026,0370,
+0163,0055,0350,0314,0354,0261,0311,0142,0215,0007,0375,0176,0300,0316,0172,0077,
+0325,0247,0337,0254,0364,0173,0252,0015,0265,0323,0141,0363,0247,0313,0361,0130,
+0332,0363,0115,0347,0323,0057,0132,0107,0124,0145,0177,0230,0323,0307,0026,0262,
+0161,0241,0275,0247,0034,0074,0071,0006,0325,0211,0161,0071,0161,0342,0157,0246,
+0256,0136,0230,0065,0160,0332,0046,0237,0252,0265,0274,0067,0147,0276,0342,0172,
+0023,0254,0145,0163,0315,0250,0307,0063,0153,0126,0047,0213,0170,0322,0235,0145,
+0306,0102,0120,0175,0070,0151,0265,0365,0247,0053,0127,0031,0256,0051,0152,0173,
+0174,0143,0213,0343,0024,0233,0365,0134,0213,0256,0117,0343,0315,0122,0235,0044,
+0307,0005,0072,0073,0060,0207,0072,0226,0074,0275,0233,0046,0055,0047,0365,0246,
+0153,0033,0143,0024,0270,0047,0224,0317,0103,0262,0216,0237,0246,0133,0031,0357,
+0262,0152,0326,0231,0151,0234,0353,0172,0107,0057,0215,0012,0250,0154,0206,0116,
+0276,0061,0034,0307,0167,0071,0101,0001,0060,0325,0351,0265,0320,0215,0127,0003,
+0170,0243,0161,0301,0333,0305,0076,0026,0346,0206,0113,0020,0106,0060,0152,0247,
+0234,0241,0051,0370,0034,0125,0053,0024,0366,0347,0303,0216,0076,0041,0323,0321,
+0103,0341,0043,0171,0002,0002,0011,0214,0020,0020,0112,0115,0312,0211,0115,0056,
+0145,0065,0255,0113,0240,0020,0250,0020,0020,0115,0317,0142,0353,0247,0260,0070,
+0062,0360,0204,0047,0325,0276,0153,0245,0172,0340,0020,0331,0156,0136,0247,0110,
+0213,0273,0112,0347,0260,0152,0373,0274,0177,0166,0014,0113,0177,0047,0312,0373,
+0306,0154,0156,0303,0076,0002,0215,0030,0276,0253,0302,0162,0142,0174,0001,0143,
+0232,0130,0264,0023,0073,0045,0346,0030,0306,0177,0117,0031,0235,0134,0205,0376,
+0055,0170,0162,0076,0334,0361,0374,0107,0267,0331,0047,0111,0203,0056,0357,0351,
+0022,0247,0231,0375,0357,0311,0257,0341,0065,0340,0175,0232,0141,0175,0246,0366,
+0357,0344,0053,0143,0137,0237,0266,0005,0342,0063,0165,0141,0277,0275,0363,0012,
+0373,0137,0233,0350,0077,0226,0037,0305,0051,0154,0350,0222,0265,0117,0334,0271,
+0300,0157,0175,0130,0050,0273,0241,0373,0037,0126,0244,0177,0004,0201,0307,0132,
+0025,0041,0214,0226,0220,0056,0177,0046,0363,0367,0055,0373,0237,0241,0157,0216,
+0375,0066,0101,0336,0326,0004,0237,0332,0352,0324,0317,0152,0041,0157,0164,0077,
+0103,0236,0127,0274,0016,0170,0073,0156,0106,0037,0172,0372,0222,0367,0336,0350,
+0017,0225,0321,0160,0231,0132,0355,0337,0127,0270,0311,0370,0052,0065,0374,0021,
+0177,0163,0337,0364,0157,0021,0142,0266,0223,0237,0021,0177,0076,0263,0055,0152,
+0310,0234,0354,0257,0121,0143,0042,0311,0114,0332,0230,0147,0346,0014,0043,0072,
+0110,0210,0171,0071,0360,0204,0014,0221,0233,0230,0340,0313,0257,0024,0216,0267,
+0103,0077,0037,0113,0373,0344,0161,0234,0076,0034,0360,0356,0022,0045,0157,0345,
+0235,0235,0301,0257,0205,0236,0127,0321,0037,0242,0013,0104,0104,0006,0107,0313,
+0136,0166,0056,0055,0012,0123,0102,0023,0345,0006,0267,0040,0327,0130,0035,0057,
+0176,0115,0112,0335,0301,0255,0156,0353,0175,0007,0254,0376,0124,0024,0115,0165,
+0275,0027,0331,0370,0331,0160,0205,0177,0221,0245,0070,0073,0347,0252,0222,0352,
+0053,0222,0234,0336,0236,0374,0267,0013,0031,0366,0370,0143,0133,0306,0223,0072,
+0374,0074,0361,0102,0022,0301,0311,0245,0260,0221,0126,0236,0046,0276,0161,0230,
+0117,0042,0230,0146,0363,0054,0147,0073,0024,0245,0156,0206,0201,0104,0014,0114,
+0056,0062,0131,0040,0366,0117,0205,0247,0207,0240,0266,0217,0275,0326,0006,0077,
+0275,0331,0124,0233,0333,0364,0373,0071,0351,0040,0130,0135,0205,0134,0333,0124,
+0063,0065,0017,0002,0146,0240,0010,0040,0322,0143,0250,0252,0233,0351,0312,0155,
+0176,0116,0357,0312,0100,0000,0172,0313,0015,0266,0323,0351,0253,0063,0141,0314,
+0214,0153,0220,0241,0227,0303,0276,0055,0222,0002,0074,0202,0240,0301,0074,0200,
+0346,0071,0330,0306,0362,0341,0146,0225,0336,0265,0342,0137,0341,0033,0231,0272,
+0133,0253,0212,0026,0301,0313,0246,0233,0113,0320,0166,0343,0263,0322,0167,0135,
+0275,0077,0122,0052,0046,0024,0047,0015,0070,0321,0052,0167,0023,0354,0034,0226,
+0121,0264,0201,0271,0046,0322,0225,0213,0203,0314,0031,0323,0120,0117,0204,0050,
+0222,0164,0263,0065,0061,0023,0251,0256,0167,0367,0260,0044,0201,0140,0061,0120,
+0306,0366,0152,0073,0045,0302,0073,0075,0264,0135,0276,0251,0166,0105,0225,0350,
+0226,0033,0375,0357,0307,0350,0344,0336,0266,0206,0221,0115,0036,0017,0230,0275,
+0054,0012,0003,0321,0046,0010,0335,0237,0306,0352,0351,0064,0254,0130,0334,0225,
+0107,0141,0175,0251,0002,0372,0360,0023,0252,0201,0133,0052,0030,0301,0160,0303,
+0131,0222,0231,0056,0172,0257,0171,0274,0154,0357,0362,0074,0340,0360,0261,0163,
+0173,0250,0074,0310,0316,0231,0031,0173,0274,0164,0152,0223,0352,0117,0226,0106,
+0327,0212,0301,0116,0124,0337,0345,0363,0112,0173,0230,0143,0204,0322,0033,0012,
+0340,0025,0064,0031,0265,0304,0277,0016,0217,0135,0224,0174,0133,0013,0155,0243,
+0050,0324,0145,0300,0272,0343,0145,0034,0175,0124,0206,0231,0173,0173,0241,0103,
+0051,0151,0266,0222,0226,0261,0016,0362,0175,0374,0207,0357,0373,0203,0374,0133,
+0152,0220,0330,0216,0347,0133,0206,0106,0143,0111,0114,0221,0246,0043,0042,0110,
+0312,0040,0111,0142,0144,0244,0221,0150,0026,0114,0151,0051,0066,0000,0263,0023,
+0032,0240,0064,0261,0130,0242,0055,0011,0121,0031,0104,0215,0024,0246,0106,0310,
+0322,0022,0243,0101,0012,0111,0011,0062,0022,0312,0220,0246,0142,0304,0066,0145,
+0204,0054,0211,0052,0112,0045,0262,0120,0210,0305,0050,0247,0247,0162,0054,0221,
+0204,0331,0046,0325,0343,0246,0100,0114,0231,0115,0114,0230,0132,0114,0243,0060,
+0235,0334,0311,0143,0110,0121,0101,0114,0322,0106,0112,0067,0235,0160,0046,0012,
+0154,0221,0210,0262,0064,0143,0316,0272,0035,0327,0004,0203,0106,0306,0210,0025,
+0040,0246,0106,0302,0231,0020,0010,0171,0333,0273,0361,0337,0162,0200,0326,0320,
+0103,0032,0107,0203,0365,0225,0066,0205,0003,0030,0321,0345,0057,0175,0112,0010,
+0236,0115,0151,0355,0364,0305,0261,0052,0115,0342,0106,0366,0160,0052,0100,0112,
+0246,0100,0375,0172,0350,0336,0214,0360,0103,0026,0272,0054,0242,0350,0204,0376,
+0261,0164,0254,0364,0117,0023,0304,0343,0305,0066,0113,0134,0041,0043,0050,0010,
+0013,0073,0153,0146,0010,0133,0055,0213,0126,0063,0163,0236,0047,0276,0162,0103,
+0341,0324,0327,0204,0362,0107,0167,0263,0127,0145,0276,0267,0222,0122,0303,0120,
+0331,0245,0161,0220,0203,0336,0145,0330,0064,0202,0076,0242,0364,0024,0053,0146,
+0276,0252,0146,0325,0245,0205,0006,0311,0027,0041,0116,0143,0177,0215,0130,0305,
+0254,0133,0301,0070,0001,0266,0301,0254,0347,0351,0027,0366,0130,0070,0355,0025,
+0125,0124,0373,0103,0134,0001,0277,0034,0156,0236,0331,0256,0154,0307,0306,0324,
+0065,0057,0013,0212,0052,0217,0266,0107,0221,0016,0311,0112,0302,0047,0256,0312,
+0237,0210,0333,0111,0073,0334,0133,0271,0020,0223,0264,0005,0155,0260,0265,0105,
+0275,0063,0031,0257,0152,0221,0105,0102,0040,0103,0204,0034,0017,0071,0127,0214,
+0126,0047,0114,0323,0214,0342,0333,0114,0210,0153,0270,0174,0205,0321,0363,0265,
+0070,0242,0107,0204,0326,0271,0212,0221,0131,0121,0305,0332,0130,0012,0253,0162,
+0220,0065,0231,0261,0023,0331,0136,0331,0147,0216,0250,0232,0126,0207,0231,0022,
+0371,0217,0231,0257,0161,0151,0276,0137,0067,0306,0014,0165,0170,0171,0110,0136,
+0071,0057,0132,0276,0261,0261,0310,0063,0213,0075,0273,0272,0264,0074,0330,0312,
+0316,0072,0200,0214,0345,0107,0252,0073,0030,0322,0254,0131,0311,0224,0337,0147,
+0250,0256,0027,0110,0302,0104,0305,0003,0375,0046,0066,0203,0177,0073,0132,0241,
+0024,0065,0362,0024,0257,0300,0044,0201,0132,0303,0027,0332,0270,0106,0120,0073,
+0377,0327,0167,0211,0307,0175,0274,0344,0333,0036,0124,0001,0225,0266,0132,0203,
+0346,0201,0221,0057,0051,0136,0022,0036,0216,0164,0322,0105,0024,0141,0035,0027,
+0212,0302,0311,0272,0216,0352,0104,0310,0064,0023,0267,0341,0140,0044,0246,0137,
+0222,0222,0276,0231,0113,0061,0355,0341,0250,0340,0020,0167,0060,0375,0357,0235,
+0010,0367,0254,0240,0273,0041,0235,0145,0342,0127,0004,0013,0101,0250,0104,0217,
+0276,0031,0157,0176,0172,0256,0335,0276,0244,0275,0155,0251,0025,0315,0134,0274,
+0264,0240,0335,0037,0163,0254,0265,0121,0270,0035,0264,0303,0063,0272,0244,0264,
+0101,0165,0305,0367,0025,0073,0051,0352,0052,0076,0231,0333,0246,0027,0002,0123,
+0141,0364,0311,0145,0147,0125,0103,0020,0332,0311,0152,0251,0251,0017,0103,0157,
+0176,0320,0307,0263,0133,0322,0105,0357,0030,0321,0121,0226,0006,0130,0221,0335,
+0034,0022,0316,0265,0210,0225,0056,0334,0210,0104,0030,0306,0207,0046,0154,0325,
+0101,0002,0331,0240,0256,0367,0332,0015,0205,0043,0246,0332,0056,0306,0301,0071,
+0330,0363,0244,0226,0340,0315,0276,0342,0130,0171,0141,0331,0241,0161,0171,0331,
+0320,0256,0320,0035,0157,0031,0142,0122,0322,0054,0322,0106,0314,0041,0242,0230,
+0013,0030,0200,0103,0151,0031,0151,0103,0104,0261,0066,0220,0307,0246,0012,0132,
+0022,0226,0123,0125,0150,0052,0165,0041,0172,0202,0357,0075,0100,0032,0172,0170,
+0153,0151,0201,0022,0333,0024,0060,0041,0356,0236,0230,0033,0354,0100,0205,0146,
+0213,0324,0000,0252,0243,0335,0340,0247,0251,0200,0101,0055,0015,0266,0036,0027,
+0337,0210,0247,0214,0370,0367,0253,0307,0344,0113,0241,0043,0361,0337,0051,0110,
+0166,0331,0050,0020,0010,0123,0031,0120,0063,0023,0370,0103,0074,0134,0043,0347,
+0164,0220,0002,0134,0174,0315,0345,0256,0340,0304,0053,0063,0163,0264,0133,0150,
+0112,0061,0175,0251,0146,0315,0216,0213,0115,0144,0166,0145,0334,0206,0151,0352,
+0134,0153,0307,0150,0166,0315,0233,0067,0362,0027,0002,0240,0022,0220,0330,0015,
+0131,0010,0200,0051,0002,0222,0211,0002,0076,0016,0236,0075,0042,0301,0356,0264,
+0153,0040,0213,0102,0122,0361,0011,0012,0166,0104,0112,0167,0345,0342,0210,0024,
+0100,0351,0210,0002,0350,0342,0336,0175,0014,0002,0051,0031,0024,0273,0002,0036,
+0142,0226,0343,0100,0242,0121,0233,0332,0003,0033,0220,0351,0251,0037,0034,0352,
+0125,0016,0367,0200,0207,0357,0200,0357,0273,0007,0135,0064,0166,0022,0045,0244,
+0151,0202,0257,0262,0215,0155,0352,0326,0364,0126,0255,0142,0325,0032,0252,0373,
+0012,0346,0254,0125,0257,0125,0165,0131,0136,0055,0275,0025,0253,0311,0265,0156,
+0126,0253,0200,0045,0124,0063,0252,0064,0346,0230,0240,0066,0044,0301,0003,0155,
+0325,0170,0321,0261,0005,0115,0200,0061,0273,0135,0042,0252,0253,0052,0052,0256,
+0025,0072,0013,0246,0140,0100,0347,0164,0035,0276,0251,0115,0060,0145,0250,0144,
+0214,0152,0314,0342,0204,0271,0142,0011,0140,0131,0044,0026,0156,0140,0011,0104,
+0262,0102,0164,0345,0343,0320,0171,0217,0100,0076,0065,0103,0040,0266,0210,0166,
+0327,0365,0230,0231,0000,0142,0064,0175,0107,0237,0236,0165,0032,0037,0237,0251,
+0325,0373,0226,0256,0147,0131,0046,0245,0127,0067,0233,0220,0210,0150,0132,0144,
+0161,0112,0352,0260,0203,0332,0353,0324,0372,0151,0034,0336,0205,0305,0371,0045,
+0000,0002,0134,0212,0131,0274,0201,0303,0027,0214,0034,0245,0261,0161,0036,0270,
+0237,0103,0110,0143,0074,0161,0031,0346,0017,0101,0164,0171,0256,0006,0304,0214,
+0204,0001,0347,0236,0343,0105,0153,0176,0041,0103,0016,0170,0325,0332,0155,0166,
+0120,0215,0230,0240,0224,0203,0047,0277,0021,0043,0035,0204,0364,0206,0373,0362,
+0101,0301,0113,0211,0024,0060,0120,0320,0332,0006,0075,0247,0162,0303,0131,0236,
+0277,0061,0102,0013,0065,0270,0066,0230,0245,0266,0164,0303,0254,0240,0365,0347,
+0313,0233,0104,0310,0171,0176,0306,0053,0034,0033,0370,0320,0122,0134,0357,0371,
+0274,0157,0136,0365,0355,0247,0272,0014,0036,0262,0107,0250,0200,0327,0313,0174,
+0266,0263,0363,0041,0350,0167,0355,0020,0160,0300,0157,0350,0074,0261,0145,0257,
+0107,0225,0047,0113,0263,0064,0230,0147,0371,0137,0232,0055,0143,0003,0334,0354,
+0007,0302,0161,0342,0310,0351,0170,0074,0152,0130,0140,0354,0341,0117,0176,0011,
+0317,0231,0356,0313,0244,0020,0273,0110,0244,0237,0144,0356,0167,0245,0271,0044,
+0010,0045,0211,0370,0350,0160,0101,0262,0345,0054,0274,0052,0026,0022,0267,0205,
+0043,0010,0132,0061,0213,0061,0167,0002,0366,0053,0277,0263,0220,0301,0147,0060,
+0066,0224,0036,0106,0121,0313,0143,0112,0050,0044,0234,0216,0113,0235,0011,0040,
+0273,0245,0351,0131,0030,0102,0162,0002,0156,0061,0034,0101,0246,0112,0351,0215,
+0266,0014,0216,0064,0241,0245,0215,0166,0165,0307,0235,0114,0345,0204,0205,0147,
+0034,0165,0062,0175,0125,0306,0252,0362,0203,0236,0335,0110,0104,0216,0175,0225,
+0266,0006,0167,0033,0240,0171,0042,0113,0061,0000,0203,0221,0224,0321,0055,0066,
+0214,0125,0013,0151,0021,0217,0136,0275,0024,0036,0176,0275,0315,0361,0014,0263,
+0167,0350,0246,0331,0357,0306,0234,0246,0350,0341,0365,0020,0211,0216,0111,0110,
+0122,0324,0217,0041,0315,0246,0031,0033,0130,0264,0305,0103,0155,0035,0061,0066,
+0146,0144,0104,0012,0376,0055,0164,0221,0031,0357,0077,0072,0013,0243,0164,0156,
+0337,0055,0304,0061,0262,0032,0264,0220,0347,0064,0334,0356,0147,0142,0272,0275,
+0161,0356,0255,0206,0321,0177,0137,0205,0301,0006,0243,0016,0102,0066,0152,0365,
+0354,0175,0105,0063,0144,0132,0210,0027,0153,0015,0167,0361,0033,0367,0054,0003,
+0244,0054,0035,0110,0370,0030,0333,0114,0143,0033,0340,0110,0146,0376,0370,0347,
+0130,0127,0072,0221,0271,0345,0252,0154,0157,0273,0256,0334,0104,0164,0302,0003,
+0314,0143,0014,0244,0207,0204,0164,0121,0105,0243,0236,0077,0056,0373,0276,0371,
+0105,0142,0125,0157,0021,0256,0262,0013,0104,0221,0103,0067,0071,0264,0247,0200,
+0241,0210,0341,0003,0343,0071,0251,0167,0302,0275,0164,0121,0217,0124,0070,0056,
+0115,0034,0026,0024,0012,0010,0350,0022,0104,0112,0227,0144,0175,0265,0172,0150,
+0363,0023,0063,0054,0131,0067,0263,0341,0074,0155,0170,0171,0013,0031,0020,0141,
+0335,0300,0344,0225,0246,0002,0022,0031,0332,0253,0025,0253,0302,0243,0003,0033,
+0025,0110,0220,0243,0010,0052,0004,0212,0206,0006,0063,0274,0146,0315,0215,0261,
+0140,0040,0145,0213,0040,0100,0045,0130,0052,0005,0054,0036,0040,0246,0113,0110,
+0012,0100,0235,0340,0010,0356,0040,0245,0112,0214,0040,0031,0164,0235,0262,0372,
+0103,0012,0202,0321,0012,0320,0273,0264,0013,0326,0062,0257,0204,0254,0015,0043,
+0012,0002,0024,0025,0054,0220,0201,0225,0004,0135,0306,0064,0002,0245,0161,0262,
+0267,0250,0004,0013,0261,0015,0320,0316,0213,0066,0125,0342,0352,0045,0051,0230,
+0302,0246,0213,0217,0277,0176,0272,0116,0250,0306,0316,0116,0234,0266,0121,0150,
+0362,0053,0243,0051,0042,0231,0200,0136,0246,0363,0340,0067,0274,0057,0152,0136,
+0032,0011,0004,0171,0342,0306,0242,0034,0231,0006,0322,0105,0016,0276,0166,0243,
+0302,0372,0010,0347,0203,0145,0211,0055,0236,0070,0137,0206,0350,0110,0214,0075,
+0067,0250,0060,0300,0044,0340,0203,0277,0060,0065,0313,0126,0013,0310,0351,0002,
+0001,0050,0110,0125,0276,0162,0370,0325,0222,0303,0004,0060,0174,0135,0355,0112,
+0002,0214,0067,0172,0034,0155,0230,0333,0201,0226,0172,0011,0117,0165,0370,0346,
+0061,0222,0065,0104,0152,0300,0224,0066,0155,0210,0054,0305,0223,0156,0307,0275,
+0133,0065,0114,0127,0355,0330,0016,0132,0154,0154,0136,0034,0264,0144,0057,0266,
+0043,0243,0254,0053,0065,0316,0161,0155,0035,0303,0252,0205,0363,0242,0052,0236,
+0347,0236,0352,0342,0126,0003,0237,0245,0010,0070,0243,0033,0363,0337,0123,0065,
+0015,0046,0324,0020,0162,0145,0333,0267,0060,0337,0304,0110,0222,0043,0371,0364,
+0272,0102,0007,0267,0323,0210,0004,0355,0022,0143,0013,0250,0363,0210,0161,0172,
+0356,0144,0121,0227,0127,0261,0210,0276,0160,0313,0123,0333,0045,0356,0136,0357,
+0273,0306,0306,0104,0374,0044,0303,0307,0324,0054,0244,0305,0336,0244,0337,0206,
+0364,0275,0262,0101,0217,0261,0206,0160,0220,0311,0142,0154,0117,0363,0016,0176,
+0166,0117,0036,0055,0132,0311,0031,0140,0331,0333,0075,0211,0124,0014,0345,0073,
+0161,0036,0045,0140,0007,0253,0037,0167,0321,0334,0207,0223,0171,0340,0146,0311,
+0264,0066,0043,0313,0041,0262,0122,0072,0102,0055,0326,0236,0056,0034,0263,0156,
+0352,0004,0162,0206,0330,0162,0333,0233,0273,0071,0331,0236,0046,0061,0230,0056,
+0326,0117,0027,0243,0223,0104,0044,0052,0264,0067,0366,0305,0047,0313,0313,0214,
+0143,0256,0103,0210,0001,0103,0170,0264,0316,0005,0050,0175,0120,0150,0225,0022,
+0107,0162,0237,0152,0104,0233,0110,0164,0350,0013,0007,0126,0234,0367,0363,0221,
+0132,0152,0316,0110,0271,0323,0030,0260,0345,0113,0322,0155,0110,0166,0165,0022,
+0137,0126,0275,0240,0275,0234,0220,0227,0340,0210,0365,0274,0116,0362,0276,0207,
+0056,0205,0002,0334,0147,0132,0015,0061,0232,0011,0253,0051,0167,0014,0336,0236,
+0251,0316,0255,0050,0032,0363,0203,0257,0000,0120,0157,0142,0021,0002,0213,0140,
+0131,0243,0026,0124,0057,0044,0120,0311,0174,0270,0120,0010,0000,0303,0001,0040,
+0203,0032,0265,0200,0161,0044,0043,0164,0243,0240,0327,0154,0066,0151,0337,0046,
+0254,0163,0004,0022,0210,0161,0265,0027,0024,0324,0263,0254,0025,0232,0246,0155,
+0276,0226,0361,0104,0072,0362,0373,0302,0336,0135,0240,0067,0253,0020,0065,0067,
+0126,0061,0023,0331,0243,0206,0123,0155,0263,0275,0020,0251,0154,0320,0136,0352,
+0010,0251,0122,0041,0260,0151,0256,0065,0056,0102,0054,0322,0314,0135,0021,0226,
+0236,0355,0046,0141,0014,0040,0240,0335,0016,0152,0246,0012,0022,0232,0041,0020,
+0222,0047,0216,0325,0312,0040,0326,0075,0147,0330,0315,0013,0017,0222,0367,0074,
+0367,0071,0352,0105,0313,0361,0126,0310,0131,0021,0246,0353,0305,0334,0007,0055,
+0365,0301,0074,0043,0157,0312,0124,0103,0323,0214,0147,0125,0260,0246,0147,0204,
+0223,0337,0010,0036,0246,0211,0240,0260,0126,0312,0075,0316,0203,0170,0214,0144,
+0203,0163,0117,0125,0174,0103,0110,0050,0315,0327,0121,0270,0031,0364,0144,0075,
+0361,0073,0372,0334,0220,0054,0343,0146,0271,0344,0147,0215,0346,0340,0164,0064,
+0103,0107,0143,0146,0072,0205,0053,0164,0123,0116,0316,0020,0352,0161,0324,0271,
+0140,0006,0230,0251,0061,0206,0022,0105,0310,0127,0114,0270,0070,0024,0107,0163,
+0146,0356,0336,0226,0223,0032,0067,0234,0143,0116,0163,0273,0247,0103,0200,0306,
+0233,0111,0247,0334,0266,0263,0300,0261,0333,0123,0143,0135,0366,0314,0134,0261,
+0305,0320,0213,0142,0061,0322,0206,0232,0331,0340,0104,0302,0135,0102,0033,0040,
+0264,0270,0225,0210,0012,0352,0012,0170,0305,0354,0305,0226,0061,0064,0154,0301,
+0107,0133,0021,0043,0361,0255,0222,0052,0017,0014,0061,0326,0265,0233,0141,0205,
+0215,0302,0305,0312,0223,0044,0216,0040,0376,0004,0326,0220,0324,0260,0271,0051,
+0015,0176,0157,0064,0372,0076,0167,0035,0220,0224,0207,0104,0006,0375,0035,0266,
+0010,0023,0106,0161,0372,0101,0037,0150,0207,0205,0001,0076,0241,0040,0316,0336,
+0314,0043,0337,0272,0044,0252,0307,0324,0132,0317,0261,0027,0075,0256,0225,0231,
+0312,0216,0074,0151,0126,0154,0247,0220,0050,0166,0063,0047,0073,0302,0254,0257,
+0146,0214,0371,0322,0121,0210,0167,0202,0121,0347,0315,0250,0324,0213,0041,0241,
+0361,0145,0134,0265,0356,0156,0366,0040,0263,0252,0332,0263,0113,0330,0235,0132,
+0346,0050,0125,0242,0262,0103,0306,0022,0250,0235,0066,0303,0113,0251,0325,0130,
+0270,0316,0055,0151,0302,0213,0367,0153,0170,0025,0145,0261,0241,0213,0132,0031,
+0011,0071,0200,0204,0046,0216,0032,0015,0310,0114,0325,0213,0152,0036,0040,0201,
+0240,0255,0310,0271,0001,0040,0207,0165,0063,0101,0205,0373,0055,0255,0201,0024,
+0214,0263,0072,0214,0303,0136,0002,0115,0210,0114,0162,0322,0063,0266,0140,0057,
+0127,0312,0130,0240,0340,0177,0031,0070,0261,0036,0267,0260,0265,0155,0266,0301,
+0077,0036,0375,0100,0277,0170,0223,0321,0270,0014,0010,0340,0354,0124,0207,0246,
+0204,0155,0304,0335,0207,0310,0200,0361,0372,0334,0353,0250,0037,0273,0162,0262,
+0014,0272,0151,0335,0250,0120,0326,0217,0233,0301,0010,0041,0250,0041,0325,0373,
+0110,0261,0174,0077,0220,0207,0206,0056,0366,0307,0334,0027,0331,0204,0126,0314,
+0154,0336,0321,0040,0111,0216,0217,0325,0011,0225,0341,0232,0324,0301,0057,0170,
+0041,0151,0305,0320,0002,0023,0343,0115,0261,0265,0115,0223,0013,0073,0033,0321,
+0036,0165,0010,0255,0164,0037,0042,0246,0300,0233,0302,0173,0122,0160,0113,0336,
+0014,0040,0270,0230,0020,0147,0154,0137,0021,0064,0154,0063,0144,0057,0173,0100,
+0312,0305,0141,0223,0270,0247,0006,0061,0020,0352,0104,0102,0241,0076,0221,0355,
+0007,0147,0374,0174,0006,0121,0273,0161,0336,0311,0055,0247,0312,0122,0312,0153,
+0125,0237,0312,0140,0331,0131,0041,0337,0046,0307,0273,0367,0111,0362,0305,0357,
+0011,0043,0203,0002,0265,0263,0111,0231,0335,0104,0202,0375,0034,0062,0107,0013,
+0221,0050,0070,0177,0236,0113,0056,0367,0133,0336,0014,0277,0276,0377,0070,0021,
+0262,0021,0154,0014,0372,0310,0044,0201,0114,0165,0044,0205,0242,0166,0254,0060,
+0201,0202,0235,0010,0041,0165,0216,0126,0143,0157,0157,0170,0040,0107,0225,0271,
+0276,0304,0205,0175,0136,0226,0342,0323,0313,0041,0312,0227,0033,0272,0020,0004,
+0015,0041,0171,0052,0327,0026,0147,0067,0311,0312,0026,0354,0130,0061,0101,0113,
+0301,0050,0313,0304,0260,0041,0112,0014,0325,0035,0145,0336,0031,0230,0112,0003,
+0176,0164,0017,0104,0053,0041,0276,0272,0330,0214,0232,0172,0026,0141,0053,0047,
+0046,0033,0155,0306,0136,0032,0013,0065,0020,0240,0247,0232,0143,0102,0236,0361,
+0101,0335,0220,0216,0337,0121,0063,0054,0323,0035,0234,0347,0233,0135,0022,0354,
+0053,0070,0162,0322,0044,0150,0005,0240,0157,0116,0150,0031,0130,0334,0373,0025,
+0005,0164,0264,0164,0125,0050,0341,0074,0011,0151,0060,0164,0335,0255,0177,0021,
+0173,0044,0321,0225,0004,0060,0015,0106,0164,0343,0233,0311,0361,0231,0367,0074,
+0051,0356,0041,0265,0065,0322,0205,0260,0224,0144,0171,0357,0022,0055,0253,0201,
+0232,0314,0213,0137,0345,0012,0240,0207,0140,0337,0303,0010,0263,0075,0063,0004,
+0104,0105,0101,0222,0241,0160,0203,0061,0325,0161,0071,0327,0052,0364,0105,0320,
+0234,0210,0145,0020,0340,0020,0132,0112,0060,0265,0210,0162,0136,0363,0043,0165,
+0254,0112,0165,0227,0227,0160,0312,0161,0147,0226,0106,0055,0044,0372,0172,0265,
+0015,0046,0370,0373,0136,0364,0152,0220,0203,0040,0145,0041,0142,0302,0032,0013,
+0317,0052,0332,0114,0121,0027,0271,0350,0272,0175,0012,0231,0275,0123,0242,0033,
+0371,0307,0045,0216,0312,0052,0247,0336,0203,0211,0142,0042,0273,0203,0062,0304,
+0130,0222,0046,0133,0017,0055,0224,0211,0142,0320,0070,0101,0116,0257,0075,0354,
+0375,0145,0152,0150,0355,0011,0313,0002,0114,0246,0102,0014,0174,0106,0321,0056,
+0021,0107,0303,0240,0167,0115,0147,0332,0303,0336,0104,0000,0017,0005,0032,0265,
+0073,0106,0275,0230,0241,0023,0273,0374,0370,0125,0065,0162,0121,0332,0334,0371,
+0061,0347,0326,0003,0132,0317,0232,0035,0361,0033,0155,0352,0115,0054,0063,0307,
+0310,0332,0240,0140,0333,0150,0112,0202,0256,0111,0331,0033,0154,0205,0120,0334,
+0311,0205,0243,0344,0273,0035,0331,0227,0121,0230,0125,0151,0043,0033,0072,0041,
+0072,0360,0175,0272,0214,0143,0041,0350,0265,0255,0353,0254,0223,0111,0012,0073,
+0354,0035,0311,0263,0002,0203,0033,0126,0265,0151,0251,0254,0332,0100,0226,0015,
+0204,0113,0000,0023,0101,0346,0313,0042,0163,0160,0242,0210,0010,0043,0003,0150,
+0164,0341,0261,0136,0041,0015,0061,0066,0301,0260,0265,0126,0366,0355,0127,0130,
+0152,0206,0061,0204,0151,0310,0332,0121,0210,0311,0054,0045,0235,0134,0054,0124,
+0101,0030,0254,0172,0372,0257,0117,0071,0031,0350,0160,0371,0233,0217,0026,0226,
+0000,0211,0276,0367,0025,0034,0221,0255,0272,0070,0020,0274,0240,0271,0325,0004,
+0363,0321,0200,0306,0331,0133,0226,0056,0037,0046,0344,0367,0256,0325,0254,0077,
+0011,0005,0027,0174,0021,0312,0127,0051,0020,0001,0150,0210,0102,0316,0150,0011,
+0063,0211,0125,0025,0163,0021,0035,0302,0271,0005,0201,0007,0104,0247,0165,0150,
+0105,0230,0236,0134,0131,0321,0204,0207,0341,0144,0004,0120,0255,0016,0333,0335,
+0274,0330,0321,0110,0355,0130,0305,0265,0224,0116,0326,0203,0273,0256,0110,0031,
+0057,0056,0252,0343,0152,0103,0226,0147,0025,0271,0200,0052,0122,0224,0255,0331,
+0317,0336,0170,0130,0336,0107,0210,0060,0121,0342,0126,0124,0207,0044,0020,0072,
+0040,0121,0203,0033,0221,0167,0100,0341,0005,0065,0060,0360,0345,0124,0033,0047,
+0020,0050,0273,0011,0103,0337,0331,0031,0134,0213,0124,0100,0301,0027,0177,0107,
+0243,0332,0122,0213,0301,0167,0235,0253,0324,0030,0042,0350,0041,0204,0123,0043,
+0153,0146,0144,0031,0227,0114,0135,0042,0304,0220,0140,0216,0115,0033,0103,0201,
+0041,0264,0362,0250,0162,0126,0252,0216,0235,0165,0032,0116,0110,0271,0004,0302,
+0101,0313,0130,0227,0207,0372,0310,0035,0303,0117,0134,0353,0122,0123,0046,0010,
+0026,0237,0073,0262,0175,0344,0157,0252,0061,0370,0066,0102,0064,0004,0152,0341,
+0034,0161,0322,0210,0005,0260,0356,0233,0170,0001,0330,0217,0255,0175,0073,0321,
+0373,0061,0234,0021,0226,0032,0374,0026,0172,0155,0032,0212,0060,0034,0056,0260,
+0377,0061,0024,0213,0044,0267,0221,0233,0274,0110,0357,0104,0354,0300,0222,0014,
+0046,0100,0171,0206,0273,0230,0351,0335,0302,0045,0261,0364,0337,0110,0265,0053,
+0050,0111,0303,0022,0075,0134,0273,0073,0145,0141,0302,0222,0112,0075,0153,0041,
+0303,0022,0043,0011,0223,0022,0014,0024,0156,0102,0043,0122,0314,0264,0131,0321,
+0013,0231,0016,0165,0343,0110,0211,0321,0003,0250,0357,0255,0223,0106,0063,0176,
+0036,0116,0310,0246,0160,0224,0122,0245,0105,0023,0210,0017,0016,0307,0270,0160,
+0050,0075,0236,0261,0222,0103,0004,0141,0001,0224,0034,0072,0020,0163,0226,0033,
+0365,0151,0244,0267,0125,0167,0075,0241,0057,0006,0264,0157,0355,0146,0270,0154,
+0172,0314,0257,0332,0364,0176,0366,0004,0004,0022,0161,0322,0205,0363,0155,0022,
+0376,0131,0150,0040,0040,0274,0153,0366,0343,0117,0156,0321,0076,0254,0171,0256,
+0066,0004,0010,0137,0367,0077,0067,0333,0323,0214,0376,0333,0002,0004,0050,0277,
+0226,0167,0067,0073,0376,0317,0331,0154,0076,0337,0303,0334,0020,0041,0167,0253,
+0233,0362,0010,0020,0273,0161,0373,0163,0154,0002,0004,0055,0301,0002,0026,0276,
+0245,0362,0077,0306,0255,0372,0337,0366,0002,0102,0025,0377,0374,0135,0311,0024,
+0341,0102,0100,0347,0061,0150,0344,
};
#endif
diff --git a/include-full/usage_compressed.h b/include-full/usage_compressed.h
index 1cc3f7a..dc781e0 100644
--- a/include-full/usage_compressed.h
+++ b/include-full/usage_compressed.h
@@ -1,3909 +1,3921 @@
#define UNPACKED_USAGE "" \
-"\x45\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x20\x5d\x0a\x0a\x43\x68" \
-"\x65\x63\x6b\x20\x66\x69\x6c\x65\x20\x74\x79\x70\x65\x73\x2c\x20" \
-"\x63\x6f\x6d\x70\x61\x72\x65\x20\x76\x61\x6c\x75\x65\x73\x20\x65" \
-"\x74\x63\x2e\x20\x52\x65\x74\x75\x72\x6e\x20\x61\x20\x30\x2f\x31" \
-"\x20\x65\x78\x69\x74\x20\x63\x6f\x64\x65\x0a\x64\x65\x70\x65\x6e" \
-"\x64\x69\x6e\x67\x20\x6f\x6e\x20\x6c\x6f\x67\x69\x63\x61\x6c\x20" \
-"\x76\x61\x6c\x75\x65\x20\x6f\x66\x20\x45\x58\x50\x52\x45\x53\x53" \
-"\x49\x4f\x4e\x00\x45\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x20\x5d" \
-"\x0a\x0a\x43\x68\x65\x63\x6b\x20\x66\x69\x6c\x65\x20\x74\x79\x70" \
-"\x65\x73\x2c\x20\x63\x6f\x6d\x70\x61\x72\x65\x20\x76\x61\x6c\x75" \
-"\x65\x73\x20\x65\x74\x63\x2e\x20\x52\x65\x74\x75\x72\x6e\x20\x61" \
-"\x20\x30\x2f\x31\x20\x65\x78\x69\x74\x20\x63\x6f\x64\x65\x0a\x64" \
-"\x65\x70\x65\x6e\x64\x69\x6e\x67\x20\x6f\x6e\x20\x6c\x6f\x67\x69" \
-"\x63\x61\x6c\x20\x76\x61\x6c\x75\x65\x20\x6f\x66\x20\x45\x58\x50" \
-"\x52\x45\x53\x53\x49\x4f\x4e\x00\x5b\x2d\x71\x5d\x20\x5b\x2d\x6f" \
-"\x20\x4f\x46\x46\x5d\x20\x5b\x2d\x66\x20\x46\x52\x45\x51\x5d\x20" \
-"\x5b\x2d\x70\x20\x54\x43\x4f\x4e\x53\x54\x5d\x20\x5b\x2d\x74\x20" \
-"\x54\x49\x43\x4b\x5d\x0a\x0a\x52\x65\x61\x64\x20\x61\x6e\x64\x20" \
-"\x6f\x70\x74\x69\x6f\x6e\x61\x6c\x6c\x79\x20\x73\x65\x74\x20\x73" \
-"\x79\x73\x74\x65\x6d\x20\x74\x69\x6d\x65\x62\x61\x73\x65\x20\x70" \
-"\x61\x72\x61\x6d\x65\x74\x65\x72\x73\x2e\x20\x53\x65\x65\x20\x61" \
-"\x64\x6a\x74\x69\x6d\x65\x78\x28\x32\x29\x0a\x0a\x09\x2d\x71\x09" \
-"\x51\x75\x69\x65\x74\x0a\x09\x2d\x6f\x20\x4f\x46\x46\x09\x54\x69" \
-"\x6d\x65\x20\x6f\x66\x66\x73\x65\x74\x2c\x20\x6d\x69\x63\x72\x6f" \
-"\x73\x65\x63\x6f\x6e\x64\x73\x0a\x09\x2d\x66\x20\x46\x52\x45\x51" \
-"\x09\x46\x72\x65\x71\x75\x65\x6e\x63\x79\x20\x61\x64\x6a\x75\x73" \
-"\x74\x2c\x20\x69\x6e\x74\x65\x67\x65\x72\x20\x6b\x65\x72\x6e\x65" \
-"\x6c\x20\x75\x6e\x69\x74\x73\x20\x28\x36\x35\x35\x33\x36\x20\x69" \
-"\x73\x20\x31\x70\x70\x6d\x29\x0a\x09\x09\x28\x70\x6f\x73\x69\x74" \
-"\x69\x76\x65\x20\x76\x61\x6c\x75\x65\x73\x20\x6d\x61\x6b\x65\x20" \
-"\x63\x6c\x6f\x63\x6b\x20\x72\x75\x6e\x20\x66\x61\x73\x74\x65\x72" \
-"\x29\x0a\x09\x2d\x74\x20\x54\x49\x43\x4b\x09\x4d\x69\x63\x72\x6f" \
-"\x73\x65\x63\x6f\x6e\x64\x73\x20\x70\x65\x72\x20\x74\x69\x63\x6b" \
-"\x2c\x20\x75\x73\x75\x61\x6c\x6c\x79\x20\x31\x30\x30\x30\x30\x0a" \
-"\x09\x2d\x70\x20\x54\x43\x4f\x4e\x53\x54\x00\x0a\x5b\x2d\x76\x6e" \
-"\x5d\x09\x5b\x2d\x48\x20\x48\x57\x54\x59\x50\x45\x5d\x20\x5b\x2d" \
-"\x69\x20\x49\x46\x5d\x20\x2d\x61\x20\x5b\x48\x4f\x53\x54\x4e\x41" \
-"\x4d\x45\x5d\x0a\x5b\x2d\x76\x5d\x09\x09\x20\x20\x20\x20\x5b\x2d" \
-"\x69\x20\x49\x46\x5d\x20\x2d\x64\x20\x48\x4f\x53\x54\x4e\x41\x4d" \
-"\x45\x20\x5b\x70\x75\x62\x5d\x0a\x5b\x2d\x76\x5d\x09\x5b\x2d\x48" \
-"\x20\x48\x57\x54\x59\x50\x45\x5d\x20\x5b\x2d\x69\x20\x49\x46\x5d" \
-"\x20\x2d\x73\x20\x48\x4f\x53\x54\x4e\x41\x4d\x45\x20\x48\x57\x41" \
-"\x44\x44\x52\x20\x5b\x74\x65\x6d\x70\x5d\x0a\x5b\x2d\x76\x5d\x09" \
-"\x5b\x2d\x48\x20\x48\x57\x54\x59\x50\x45\x5d\x20\x5b\x2d\x69\x20" \
-"\x49\x46\x5d\x20\x2d\x73\x20\x48\x4f\x53\x54\x4e\x41\x4d\x45\x20" \
-"\x48\x57\x41\x44\x44\x52\x20\x5b\x6e\x65\x74\x6d\x61\x73\x6b\x20" \
-"\x4d\x41\x53\x4b\x5d\x20\x70\x75\x62\x0a\x5b\x2d\x76\x5d\x09\x5b" \
-"\x2d\x48\x20\x48\x57\x54\x59\x50\x45\x5d\x20\x5b\x2d\x69\x20\x49" \
-"\x46\x5d\x20\x2d\x44\x73\x20\x48\x4f\x53\x54\x4e\x41\x4d\x45\x20" \
-"\x49\x46\x41\x43\x45\x20\x5b\x6e\x65\x74\x6d\x61\x73\x6b\x20\x4d" \
-"\x41\x53\x4b\x5d\x20\x70\x75\x62\x0a\x0a\x4d\x61\x6e\x69\x70\x75" \
-"\x6c\x61\x74\x65\x20\x41\x52\x50\x20\x63\x61\x63\x68\x65\x0a\x0a" \
-"\x09\x2d\x61\x09\x09\x44\x69\x73\x70\x6c\x61\x79\x20\x28\x61\x6c" \
-"\x6c\x29\x20\x68\x6f\x73\x74\x73\x0a\x09\x2d\x73\x09\x09\x53\x65" \
-"\x74\x20\x6e\x65\x77\x20\x41\x52\x50\x20\x65\x6e\x74\x72\x79\x0a" \
-"\x09\x2d\x64\x09\x09\x44\x65\x6c\x65\x74\x65\x20\x61\x20\x73\x70" \
-"\x65\x63\x69\x66\x69\x65\x64\x20\x65\x6e\x74\x72\x79\x0a\x09\x2d" \
-"\x76\x09\x09\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x6e\x09\x09" \
-"\x44\x6f\x6e\x27\x74\x20\x72\x65\x73\x6f\x6c\x76\x65\x20\x6e\x61" \
-"\x6d\x65\x73\x0a\x09\x2d\x69\x20\x49\x46\x09\x09\x4e\x65\x74\x77" \
-"\x6f\x72\x6b\x20\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x0a\x09\x2d" \
-"\x44\x09\x09\x52\x65\x61\x64\x20\x3c\x68\x77\x61\x64\x64\x72\x3e" \
-"\x20\x66\x72\x6f\x6d\x20\x67\x69\x76\x65\x6e\x20\x64\x65\x76\x69" \
-"\x63\x65\x0a\x09\x2d\x41\x2c\x2d\x70\x20\x41\x46\x09\x50\x72\x6f" \
-"\x74\x6f\x63\x6f\x6c\x20\x66\x61\x6d\x69\x6c\x79\x0a\x09\x2d\x48" \
-"\x20\x48\x57\x54\x59\x50\x45\x09\x48\x61\x72\x64\x77\x61\x72\x65" \
-"\x20\x61\x64\x64\x72\x65\x73\x73\x20\x74\x79\x70\x65\x00\x5b\x2d" \
-"\x2f\x2b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x2d\x2f\x2b\x6f" \
-"\x20\x4f\x50\x54\x5d\x2e\x2e\x2e\x20\x5b\x2d\x63\x20\x27\x53\x43" \
-"\x52\x49\x50\x54\x27\x20\x5b\x41\x52\x47\x30\x20\x5b\x41\x52\x47" \
-"\x53\x5d\x5d\x20\x2f\x20\x46\x49\x4c\x45\x20\x5b\x41\x52\x47\x53" \
-"\x5d\x5d\x0a\x0a\x55\x6e\x69\x78\x20\x73\x68\x65\x6c\x6c\x20\x69" \
-"\x6e\x74\x65\x72\x70\x72\x65\x74\x65\x72\x00\x5b\x4f\x50\x54\x49" \
-"\x4f\x4e\x53\x5d\x20\x5b\x41\x57\x4b\x5f\x50\x52\x4f\x47\x52\x41" \
-"\x4d\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x09\x2d" \
-"\x76\x20\x56\x41\x52\x3d\x56\x41\x4c\x09\x53\x65\x74\x20\x76\x61" \
-"\x72\x69\x61\x62\x6c\x65\x0a\x09\x2d\x46\x20\x53\x45\x50\x09\x09" \
-"\x55\x73\x65\x20\x53\x45\x50\x20\x61\x73\x20\x66\x69\x65\x6c\x64" \
-"\x20\x73\x65\x70\x61\x72\x61\x74\x6f\x72\x0a\x09\x2d\x66\x20\x46" \
-"\x49\x4c\x45\x09\x09\x52\x65\x61\x64\x20\x70\x72\x6f\x67\x72\x61" \
-"\x6d\x20\x66\x72\x6f\x6d\x20\x46\x49\x4c\x45\x00\x5b\x2d\x64\x5d" \
-"\x20\x5b\x46\x49\x4c\x45\x5d\x0a\x0a\x42\x61\x73\x65\x36\x34\x20" \
-"\x65\x6e\x63\x6f\x64\x65\x20\x6f\x72\x20\x64\x65\x63\x6f\x64\x65" \
-"\x20\x46\x49\x4c\x45\x20\x74\x6f\x20\x73\x74\x61\x6e\x64\x61\x72" \
-"\x64\x20\x6f\x75\x74\x70\x75\x74\x0a\x09\x2d\x64\x09\x44\x65\x63" \
-"\x6f\x64\x65\x20\x64\x61\x74\x61\x00\x46\x49\x4c\x45\x20\x5b\x53" \
-"\x55\x46\x46\x49\x58\x5d\x0a\x0a\x53\x74\x72\x69\x70\x20\x64\x69" \
-"\x72\x65\x63\x74\x6f\x72\x79\x20\x70\x61\x74\x68\x20\x61\x6e\x64" \
-"\x20\x2e\x53\x55\x46\x46\x49\x58\x20\x66\x72\x6f\x6d\x20\x46\x49" \
-"\x4c\x45\x0a\x00\x0a\x0a\x50\x72\x69\x6e\x74\x20\x74\x68\x65\x20" \
-"\x63\x6f\x6e\x66\x69\x67\x20\x66\x69\x6c\x65\x20\x75\x73\x65\x64" \
-"\x20\x62\x79\x20\x62\x75\x73\x79\x62\x6f\x78\x20\x62\x75\x69\x6c" \
-"\x64\x00\x5b\x42\x4c\x4f\x43\x4b\x44\x45\x56\x5d\x2e\x2e\x2e\x0a" \
-"\x0a\x50\x72\x69\x6e\x74\x20\x55\x55\x49\x44\x73\x20\x6f\x66\x20" \
-"\x61\x6c\x6c\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x73\x00" \
-"\x4f\x50\x54\x49\x4f\x4e\x20\x42\x4c\x4f\x43\x4b\x44\x45\x56\x0a" \
-"\x0a\x09\x2d\x2d\x73\x65\x74\x72\x6f\x09\x09\x53\x65\x74\x20\x72" \
-"\x6f\x0a\x09\x2d\x2d\x73\x65\x74\x72\x77\x09\x09\x53\x65\x74\x20" \
-"\x72\x77\x0a\x09\x2d\x2d\x67\x65\x74\x72\x6f\x09\x09\x47\x65\x74" \
-"\x20\x72\x6f\x0a\x09\x2d\x2d\x67\x65\x74\x73\x73\x09\x09\x47\x65" \
-"\x74\x20\x73\x65\x63\x74\x6f\x72\x20\x73\x69\x7a\x65\x0a\x09\x2d" \
-"\x2d\x67\x65\x74\x62\x73\x7a\x09\x47\x65\x74\x20\x62\x6c\x6f\x63" \
-"\x6b\x20\x73\x69\x7a\x65\x0a\x09\x2d\x2d\x73\x65\x74\x62\x73\x7a" \
-"\x20\x42\x59\x54\x45\x53\x09\x53\x65\x74\x20\x62\x6c\x6f\x63\x6b" \
-"\x20\x73\x69\x7a\x65\x0a\x09\x2d\x2d\x67\x65\x74\x73\x7a\x09\x09" \
-"\x47\x65\x74\x20\x64\x65\x76\x69\x63\x65\x20\x73\x69\x7a\x65\x20" \
-"\x69\x6e\x20\x35\x31\x32\x2d\x62\x79\x74\x65\x20\x73\x65\x63\x74" \
-"\x6f\x72\x73\x0a\x09\x2d\x2d\x67\x65\x74\x73\x69\x7a\x65\x36\x34" \
-"\x09\x47\x65\x74\x20\x64\x65\x76\x69\x63\x65\x20\x73\x69\x7a\x65" \
-"\x20\x69\x6e\x20\x62\x79\x74\x65\x73\x0a\x09\x2d\x2d\x66\x6c\x75" \
-"\x73\x68\x62\x75\x66\x73\x09\x46\x6c\x75\x73\x68\x20\x62\x75\x66" \
-"\x66\x65\x72\x73\x0a\x09\x2d\x2d\x72\x65\x72\x65\x61\x64\x70\x74" \
-"\x09\x52\x65\x72\x65\x61\x64\x20\x70\x61\x72\x74\x69\x74\x69\x6f" \
-"\x6e\x20\x74\x61\x62\x6c\x65\x00\x43\x4f\x4d\x4d\x41\x4e\x44\x20" \
-"\x5b\x42\x52\x49\x44\x47\x45\x20\x5b\x49\x4e\x54\x45\x52\x46\x41" \
-"\x43\x45\x5d\x5d\x0a\x0a\x4d\x61\x6e\x61\x67\x65\x20\x65\x74\x68" \
-"\x65\x72\x6e\x65\x74\x20\x62\x72\x69\x64\x67\x65\x73\x0a\x0a\x43" \
-"\x6f\x6d\x6d\x61\x6e\x64\x73\x3a\x0a\x09\x73\x68\x6f\x77\x09\x09" \
-"\x09\x53\x68\x6f\x77\x20\x61\x20\x6c\x69\x73\x74\x20\x6f\x66\x20" \
-"\x62\x72\x69\x64\x67\x65\x73\x0a\x09\x61\x64\x64\x62\x72\x20\x42" \
-"\x52\x49\x44\x47\x45\x09\x09\x43\x72\x65\x61\x74\x65\x20\x42\x52" \
-"\x49\x44\x47\x45\x0a\x09\x64\x65\x6c\x62\x72\x20\x42\x52\x49\x44" \
-"\x47\x45\x09\x09\x44\x65\x6c\x65\x74\x65\x20\x42\x52\x49\x44\x47" \
-"\x45\x0a\x09\x61\x64\x64\x69\x66\x20\x42\x52\x49\x44\x47\x45\x20" \
-"\x49\x46\x41\x43\x45\x09\x41\x64\x64\x20\x49\x46\x41\x43\x45\x20" \
-"\x74\x6f\x20\x42\x52\x49\x44\x47\x45\x0a\x09\x64\x65\x6c\x69\x66" \
-"\x20\x42\x52\x49\x44\x47\x45\x20\x49\x46\x41\x43\x45\x09\x44\x65" \
-"\x6c\x65\x74\x65\x20\x49\x46\x41\x43\x45\x20\x66\x72\x6f\x6d\x20" \
-"\x42\x52\x49\x44\x47\x45\x0a\x09\x73\x65\x74\x61\x67\x65\x69\x6e" \
-"\x67\x20\x42\x52\x49\x44\x47\x45\x20\x54\x49\x4d\x45\x09\x09\x53" \
-"\x65\x74\x20\x61\x67\x65\x69\x6e\x67\x20\x74\x69\x6d\x65\x0a\x09" \
-"\x73\x65\x74\x66\x64\x20\x42\x52\x49\x44\x47\x45\x20\x54\x49\x4d" \
-"\x45\x09\x09\x53\x65\x74\x20\x62\x72\x69\x64\x67\x65\x20\x66\x6f" \
-"\x72\x77\x61\x72\x64\x20\x64\x65\x6c\x61\x79\x0a\x09\x73\x65\x74" \
-"\x68\x65\x6c\x6c\x6f\x20\x42\x52\x49\x44\x47\x45\x20\x54\x49\x4d" \
-"\x45\x09\x09\x53\x65\x74\x20\x68\x65\x6c\x6c\x6f\x20\x74\x69\x6d" \
-"\x65\x0a\x09\x73\x65\x74\x6d\x61\x78\x61\x67\x65\x20\x42\x52\x49" \
-"\x44\x47\x45\x20\x54\x49\x4d\x45\x09\x09\x53\x65\x74\x20\x6d\x61" \
-"\x78\x20\x6d\x65\x73\x73\x61\x67\x65\x20\x61\x67\x65\x0a\x09\x73" \
-"\x65\x74\x70\x61\x74\x68\x63\x6f\x73\x74\x20\x42\x52\x49\x44\x47" \
-"\x45\x20\x43\x4f\x53\x54\x09\x09\x53\x65\x74\x20\x70\x61\x74\x68" \
-"\x20\x63\x6f\x73\x74\x0a\x09\x73\x65\x74\x70\x6f\x72\x74\x70\x72" \
-"\x69\x6f\x20\x42\x52\x49\x44\x47\x45\x20\x50\x52\x49\x4f\x09\x09" \
-"\x53\x65\x74\x20\x70\x6f\x72\x74\x20\x70\x72\x69\x6f\x72\x69\x74" \
-"\x79\x0a\x09\x73\x65\x74\x62\x72\x69\x64\x67\x65\x70\x72\x69\x6f" \
-"\x20\x42\x52\x49\x44\x47\x45\x20\x50\x52\x49\x4f\x09\x53\x65\x74" \
-"\x20\x62\x72\x69\x64\x67\x65\x20\x70\x72\x69\x6f\x72\x69\x74\x79" \
-"\x0a\x09\x73\x74\x70\x20\x42\x52\x49\x44\x47\x45\x20\x5b\x31\x2f" \
-"\x79\x65\x73\x2f\x6f\x6e\x7c\x30\x2f\x6e\x6f\x2f\x6f\x66\x66\x5d" \
-"\x09\x53\x54\x50\x20\x6f\x6e\x2f\x6f\x66\x66\x00\x5b\x2d\x63\x66" \
-"\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x44\x65\x63" \
-"\x6f\x6d\x70\x72\x65\x73\x73\x20\x46\x49\x4c\x45\x73\x20\x28\x6f" \
-"\x72\x20\x73\x74\x64\x69\x6e\x29\x0a\x0a\x09\x2d\x63\x09\x57\x72" \
-"\x69\x74\x65\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x2d" \
-"\x66\x09\x46\x6f\x72\x63\x65\x00\x46\x49\x4c\x45\x0a\x0a\x44\x65" \
-"\x63\x6f\x6d\x70\x72\x65\x73\x73\x20\x74\x6f\x20\x73\x74\x64\x6f" \
-"\x75\x74\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x46\x49" \
-"\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x6f\x6d\x70\x72\x65\x73\x73" \
-"\x20\x46\x49\x4c\x45\x73\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e" \
-"\x29\x20\x77\x69\x74\x68\x20\x62\x7a\x69\x70\x32\x20\x61\x6c\x67" \
-"\x6f\x72\x69\x74\x68\x6d\x0a\x0a\x09\x2d\x31\x2e\x2e\x39\x09\x43" \
-"\x6f\x6d\x70\x72\x65\x73\x73\x69\x6f\x6e\x20\x6c\x65\x76\x65\x6c" \
-"\x0a\x09\x2d\x64\x09\x44\x65\x63\x6f\x6d\x70\x72\x65\x73\x73\x0a" \
-"\x09\x2d\x63\x09\x57\x72\x69\x74\x65\x20\x74\x6f\x20\x73\x74\x64" \
-"\x6f\x75\x74\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x00\x5b\x2d" \
-"\x6a\x79\x5d\x20\x5b\x5b\x4d\x4f\x4e\x54\x48\x5d\x20\x59\x45\x41" \
-"\x52\x5d\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x61\x20\x63\x61" \
-"\x6c\x65\x6e\x64\x61\x72\x0a\x0a\x09\x2d\x6a\x09\x55\x73\x65\x20" \
-"\x6a\x75\x6c\x69\x61\x6e\x20\x64\x61\x74\x65\x73\x0a\x09\x2d\x79" \
-"\x09\x44\x69\x73\x70\x6c\x61\x79\x20\x74\x68\x65\x20\x65\x6e\x74" \
-"\x69\x72\x65\x20\x79\x65\x61\x72\x00\x5b\x46\x49\x4c\x45\x5d\x2e" \
-"\x2e\x2e\x0a\x0a\x43\x6f\x6e\x63\x61\x74\x65\x6e\x61\x74\x65\x20" \
-"\x46\x49\x4c\x45\x73\x20\x61\x6e\x64\x20\x70\x72\x69\x6e\x74\x20" \
-"\x74\x68\x65\x6d\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x00\x5b" \
-"\x2d\x65\x74\x76\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a" \
-"\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x6e\x6f\x6e\x70\x72\x69\x6e" \
-"\x74\x69\x6e\x67\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x20" \
-"\x61\x73\x20\x5e\x78\x20\x6f\x72\x20\x4d\x2d\x78\x0a\x0a\x09\x2d" \
-"\x65\x09\x45\x6e\x64\x20\x65\x61\x63\x68\x20\x6c\x69\x6e\x65\x20" \
-"\x77\x69\x74\x68\x20\x24\x0a\x09\x2d\x74\x09\x53\x68\x6f\x77\x20" \
-"\x74\x61\x62\x73\x20\x61\x73\x20\x5e\x49\x0a\x09\x2d\x76\x09\x44" \
-"\x6f\x6e\x27\x74\x20\x75\x73\x65\x20\x5e\x78\x20\x6f\x72\x20\x4d" \
-"\x2d\x78\x20\x65\x73\x63\x61\x70\x65\x73\x00\x5b\x2d\x52\x5d\x20" \
-"\x5b\x2d\x2b\x3d\x41\x61\x63\x44\x64\x69\x6a\x73\x53\x74\x54\x75" \
-"\x5d\x20\x5b\x2d\x76\x20\x56\x45\x52\x53\x49\x4f\x4e\x5d\x20\x5b" \
-"\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x68\x61\x6e\x67\x65" \
-"\x20\x66\x69\x6c\x65\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73" \
-"\x20\x6f\x6e\x20\x61\x6e\x20\x65\x78\x74\x32\x20\x66\x73\x0a\x0a" \
-"\x4d\x6f\x64\x69\x66\x69\x65\x72\x73\x3a\x0a\x09\x2d\x09\x52\x65" \
-"\x6d\x6f\x76\x65\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73\x0a" \
-"\x09\x2b\x09\x41\x64\x64\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65" \
-"\x73\x0a\x09\x3d\x09\x53\x65\x74\x20\x61\x74\x74\x72\x69\x62\x75" \
-"\x74\x65\x73\x0a\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73\x3a\x0a" \
-"\x09\x41\x09\x44\x6f\x6e\x27\x74\x20\x74\x72\x61\x63\x6b\x20\x61" \
-"\x74\x69\x6d\x65\x0a\x09\x61\x09\x41\x70\x70\x65\x6e\x64\x20\x6d" \
-"\x6f\x64\x65\x20\x6f\x6e\x6c\x79\x0a\x09\x63\x09\x45\x6e\x61\x62" \
-"\x6c\x65\x20\x63\x6f\x6d\x70\x72\x65\x73\x73\x0a\x09\x44\x09\x57" \
-"\x72\x69\x74\x65\x20\x64\x69\x72\x20\x63\x6f\x6e\x74\x65\x6e\x74" \
-"\x73\x20\x73\x79\x6e\x63\x68\x72\x6f\x6e\x6f\x75\x73\x6c\x79\x0a" \
-"\x09\x64\x09\x44\x6f\x6e\x27\x74\x20\x62\x61\x63\x6b\x75\x70\x20" \
-"\x77\x69\x74\x68\x20\x64\x75\x6d\x70\x0a\x09\x69\x09\x43\x61\x6e" \
-"\x6e\x6f\x74\x20\x62\x65\x20\x6d\x6f\x64\x69\x66\x69\x65\x64\x20" \
-"\x28\x69\x6d\x6d\x75\x74\x61\x62\x6c\x65\x29\x0a\x09\x6a\x09\x57" \
-"\x72\x69\x74\x65\x20\x61\x6c\x6c\x20\x64\x61\x74\x61\x20\x74\x6f" \
-"\x20\x6a\x6f\x75\x72\x6e\x61\x6c\x20\x66\x69\x72\x73\x74\x0a\x09" \
-"\x73\x09\x5a\x65\x72\x6f\x20\x64\x69\x73\x6b\x20\x73\x74\x6f\x72" \
-"\x61\x67\x65\x20\x77\x68\x65\x6e\x20\x64\x65\x6c\x65\x74\x65\x64" \
-"\x0a\x09\x53\x09\x57\x72\x69\x74\x65\x20\x66\x69\x6c\x65\x20\x63" \
-"\x6f\x6e\x74\x65\x6e\x74\x73\x20\x73\x79\x6e\x63\x68\x72\x6f\x6e" \
-"\x6f\x75\x73\x6c\x79\x0a\x09\x74\x09\x44\x69\x73\x61\x62\x6c\x65" \
-"\x20\x74\x61\x69\x6c\x2d\x6d\x65\x72\x67\x69\x6e\x67\x20\x6f\x66" \
-"\x20\x70\x61\x72\x74\x69\x61\x6c\x20\x62\x6c\x6f\x63\x6b\x73\x20" \
-"\x77\x69\x74\x68\x20\x6f\x74\x68\x65\x72\x20\x66\x69\x6c\x65\x73" \
-"\x0a\x09\x75\x09\x41\x6c\x6c\x6f\x77\x20\x66\x69\x6c\x65\x20\x74" \
-"\x6f\x20\x62\x65\x20\x75\x6e\x64\x65\x6c\x65\x74\x65\x64\x0a\x09" \
-"\x2d\x52\x09\x52\x65\x63\x75\x72\x73\x65\x0a\x09\x2d\x76\x09\x53" \
-"\x65\x74\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x27\x73\x20\x76\x65" \
-"\x72\x73\x69\x6f\x6e\x2f\x67\x65\x6e\x65\x72\x61\x74\x69\x6f\x6e" \
-"\x20\x6e\x75\x6d\x62\x65\x72\x00\x5b\x2d\x52\x68\x4c\x48\x50\x5d" \
-"\x2e\x2e\x2e\x20\x47\x52\x4f\x55\x50\x20\x46\x49\x4c\x45\x2e\x2e" \
-"\x2e\x0a\x0a\x43\x68\x61\x6e\x67\x65\x20\x74\x68\x65\x20\x67\x72" \
-"\x6f\x75\x70\x20\x6d\x65\x6d\x62\x65\x72\x73\x68\x69\x70\x20\x6f" \
-"\x66\x20\x65\x61\x63\x68\x20\x46\x49\x4c\x45\x20\x74\x6f\x20\x47" \
-"\x52\x4f\x55\x50\x0a\x0a\x09\x2d\x52\x09\x52\x65\x63\x75\x72\x73" \
-"\x65\x0a\x09\x2d\x68\x09\x41\x66\x66\x65\x63\x74\x20\x73\x79\x6d" \
-"\x6c\x69\x6e\x6b\x73\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66" \
-"\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x20\x74\x61\x72\x67\x65\x74\x73" \
-"\x0a\x09\x2d\x4c\x09\x54\x72\x61\x76\x65\x72\x73\x65\x20\x61\x6c" \
-"\x6c\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20\x74\x6f\x20\x64\x69" \
-"\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x0a\x09\x2d\x48\x09\x54\x72" \
-"\x61\x76\x65\x72\x73\x65\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20" \
-"\x6f\x6e\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6c\x69\x6e\x65\x20" \
-"\x6f\x6e\x6c\x79\x0a\x09\x2d\x50\x09\x44\x6f\x6e\x27\x74\x20\x74" \
-"\x72\x61\x76\x65\x72\x73\x65\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73" \
-"\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x00\x5b\x2d\x52\x5d\x20" \
-"\x4d\x4f\x44\x45\x5b\x2c\x4d\x4f\x44\x45\x5d\x2e\x2e\x2e\x20\x46" \
-"\x49\x4c\x45\x2e\x2e\x2e\x0a\x0a\x45\x61\x63\x68\x20\x4d\x4f\x44" \
-"\x45\x20\x69\x73\x20\x6f\x6e\x65\x20\x6f\x72\x20\x6d\x6f\x72\x65" \
-"\x20\x6f\x66\x20\x74\x68\x65\x20\x6c\x65\x74\x74\x65\x72\x73\x20" \
-"\x75\x67\x6f\x61\x2c\x20\x6f\x6e\x65\x20\x6f\x66\x20\x74\x68\x65" \
-"\x0a\x73\x79\x6d\x62\x6f\x6c\x73\x20\x2b\x2d\x3d\x20\x61\x6e\x64" \
-"\x20\x6f\x6e\x65\x20\x6f\x72\x20\x6d\x6f\x72\x65\x20\x6f\x66\x20" \
-"\x74\x68\x65\x20\x6c\x65\x74\x74\x65\x72\x73\x20\x72\x77\x78\x73" \
-"\x74\x0a\x0a\x09\x2d\x52\x09\x52\x65\x63\x75\x72\x73\x65\x00\x5b" \
-"\x2d\x52\x68\x4c\x48\x50\x5d\x2e\x2e\x2e\x20\x4f\x57\x4e\x45\x52" \
-"\x5b\x3c\x2e\x7c\x3a\x3e\x5b\x47\x52\x4f\x55\x50\x5d\x5d\x20\x46" \
-"\x49\x4c\x45\x2e\x2e\x2e\x0a\x0a\x43\x68\x61\x6e\x67\x65\x20\x74" \
-"\x68\x65\x20\x6f\x77\x6e\x65\x72\x20\x61\x6e\x64\x2f\x6f\x72\x20" \
-"\x67\x72\x6f\x75\x70\x20\x6f\x66\x20\x65\x61\x63\x68\x20\x46\x49" \
-"\x4c\x45\x20\x74\x6f\x20\x4f\x57\x4e\x45\x52\x20\x61\x6e\x64\x2f" \
-"\x6f\x72\x20\x47\x52\x4f\x55\x50\x0a\x0a\x09\x2d\x52\x09\x52\x65" \
-"\x63\x75\x72\x73\x65\x0a\x09\x2d\x68\x09\x41\x66\x66\x65\x63\x74" \
-"\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20\x69\x6e\x73\x74\x65\x61" \
-"\x64\x20\x6f\x66\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x20\x74\x61\x72" \
-"\x67\x65\x74\x73\x0a\x09\x2d\x4c\x09\x54\x72\x61\x76\x65\x72\x73" \
-"\x65\x20\x61\x6c\x6c\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20\x74" \
-"\x6f\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x0a\x09\x2d" \
-"\x48\x09\x54\x72\x61\x76\x65\x72\x73\x65\x20\x73\x79\x6d\x6c\x69" \
-"\x6e\x6b\x73\x20\x6f\x6e\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6c" \
-"\x69\x6e\x65\x20\x6f\x6e\x6c\x79\x0a\x09\x2d\x50\x09\x44\x6f\x6e" \
-"\x27\x74\x20\x74\x72\x61\x76\x65\x72\x73\x65\x20\x73\x79\x6d\x6c" \
-"\x69\x6e\x6b\x73\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x00\x4e" \
-"\x45\x57\x52\x4f\x4f\x54\x20\x5b\x50\x52\x4f\x47\x20\x41\x52\x47" \
-"\x53\x5d\x0a\x0a\x52\x75\x6e\x20\x50\x52\x4f\x47\x20\x77\x69\x74" \
-"\x68\x20\x72\x6f\x6f\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79" \
-"\x20\x73\x65\x74\x20\x74\x6f\x20\x4e\x45\x57\x52\x4f\x4f\x54\x00" \
-"\x0a\x0a\x43\x6c\x65\x61\x72\x20\x73\x63\x72\x65\x65\x6e\x00\x5b" \
-"\x2d\x6c\x5d\x20\x5b\x2d\x73\x5d\x20\x46\x49\x4c\x45\x31\x20\x5b" \
-"\x46\x49\x4c\x45\x32\x5d\x0a\x0a\x43\x6f\x6d\x70\x61\x72\x65\x20" \
-"\x46\x49\x4c\x45\x31\x20\x77\x69\x74\x68\x20\x46\x49\x4c\x45\x32" \
-"\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x0a\x0a\x09\x2d\x6c" \
-"\x09\x57\x72\x69\x74\x65\x20\x74\x68\x65\x20\x62\x79\x74\x65\x20" \
-"\x6e\x75\x6d\x62\x65\x72\x73\x20\x28\x64\x65\x63\x69\x6d\x61\x6c" \
-"\x29\x20\x61\x6e\x64\x20\x76\x61\x6c\x75\x65\x73\x20\x28\x6f\x63" \
-"\x74\x61\x6c\x29\x0a\x09\x09\x66\x6f\x72\x20\x61\x6c\x6c\x20\x64" \
-"\x69\x66\x66\x65\x72\x69\x6e\x67\x20\x62\x79\x74\x65\x73\x0a\x09" \
-"\x2d\x73\x09\x51\x75\x69\x65\x74\x00\x5b\x2d\x31\x32\x33\x5d\x20" \
-"\x46\x49\x4c\x45\x31\x20\x46\x49\x4c\x45\x32\x0a\x0a\x43\x6f\x6d" \
-"\x70\x61\x72\x65\x20\x46\x49\x4c\x45\x31\x20\x77\x69\x74\x68\x20" \
-"\x46\x49\x4c\x45\x32\x0a\x0a\x09\x2d\x31\x09\x53\x75\x70\x70\x72" \
-"\x65\x73\x73\x20\x6c\x69\x6e\x65\x73\x20\x75\x6e\x69\x71\x75\x65" \
-"\x20\x74\x6f\x20\x46\x49\x4c\x45\x31\x0a\x09\x2d\x32\x09\x53\x75" \
-"\x70\x70\x72\x65\x73\x73\x20\x6c\x69\x6e\x65\x73\x20\x75\x6e\x69" \
-"\x71\x75\x65\x20\x74\x6f\x20\x46\x49\x4c\x45\x32\x0a\x09\x2d\x33" \
-"\x09\x53\x75\x70\x70\x72\x65\x73\x73\x20\x6c\x69\x6e\x65\x73\x20" \
-"\x63\x6f\x6d\x6d\x6f\x6e\x20\x74\x6f\x20\x62\x6f\x74\x68\x20\x66" \
-"\x69\x6c\x65\x73\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x53" \
-"\x4f\x55\x52\x43\x45\x2e\x2e\x2e\x20\x44\x45\x53\x54\x0a\x0a\x43" \
-"\x6f\x70\x79\x20\x53\x4f\x55\x52\x43\x45\x28\x73\x29\x20\x74\x6f" \
-"\x20\x44\x45\x53\x54\x0a\x0a\x09\x2d\x61\x09\x53\x61\x6d\x65\x20" \
-"\x61\x73\x20\x2d\x64\x70\x52\x0a\x09\x2d\x52\x2c\x2d\x72\x09\x52" \
-"\x65\x63\x75\x72\x73\x65\x0a\x09\x2d\x64\x2c\x2d\x50\x09\x50\x72" \
-"\x65\x73\x65\x72\x76\x65\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20" \
-"\x28\x64\x65\x66\x61\x75\x6c\x74\x20\x69\x66\x20\x2d\x52\x29\x0a" \
-"\x09\x2d\x4c\x09\x46\x6f\x6c\x6c\x6f\x77\x20\x61\x6c\x6c\x20\x73" \
-"\x79\x6d\x6c\x69\x6e\x6b\x73\x0a\x09\x2d\x48\x09\x46\x6f\x6c\x6c" \
-"\x6f\x77\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20\x6f\x6e\x20\x63" \
-"\x6f\x6d\x6d\x61\x6e\x64\x20\x6c\x69\x6e\x65\x0a\x09\x2d\x70\x09" \
-"\x50\x72\x65\x73\x65\x72\x76\x65\x20\x66\x69\x6c\x65\x20\x61\x74" \
-"\x74\x72\x69\x62\x75\x74\x65\x73\x20\x69\x66\x20\x70\x6f\x73\x73" \
-"\x69\x62\x6c\x65\x0a\x09\x2d\x66\x09\x4f\x76\x65\x72\x77\x72\x69" \
-"\x74\x65\x0a\x09\x2d\x69\x09\x50\x72\x6f\x6d\x70\x74\x20\x62\x65" \
-"\x66\x6f\x72\x65\x20\x6f\x76\x65\x72\x77\x72\x69\x74\x65\x0a\x09" \
-"\x2d\x6c\x2c\x2d\x73\x09\x43\x72\x65\x61\x74\x65\x20\x28\x73\x79" \
-"\x6d\x29\x6c\x69\x6e\x6b\x73\x00\x5b\x2d\x64\x6d\x76\x75\x5d\x20" \
-"\x5b\x2d\x46\x20\x46\x49\x4c\x45\x5d\x20\x5b\x2d\x48\x20\x6e\x65" \
-"\x77\x63\x5d\x20\x5b\x2d\x74\x69\x6f\x5d\x20\x5b\x2d\x70\x20\x44" \
-"\x49\x52\x5d\x20\x5b\x45\x58\x54\x52\x5f\x46\x49\x4c\x45\x5d\x2e" \
-"\x2e\x2e\x0a\x0a\x45\x78\x74\x72\x61\x63\x74\x20\x6f\x72\x20\x6c" \
-"\x69\x73\x74\x20\x66\x69\x6c\x65\x73\x20\x66\x72\x6f\x6d\x20\x61" \
-"\x20\x63\x70\x69\x6f\x20\x61\x72\x63\x68\x69\x76\x65\x2c\x20\x6f" \
-"\x72\x0a\x63\x72\x65\x61\x74\x65\x20\x61\x6e\x20\x61\x72\x63\x68" \
-"\x69\x76\x65\x20\x28\x2d\x6f\x29\x20\x6f\x72\x20\x63\x6f\x70\x79" \
-"\x20\x66\x69\x6c\x65\x73\x20\x28\x2d\x70\x29\x20\x75\x73\x69\x6e" \
-"\x67\x20\x66\x69\x6c\x65\x20\x6c\x69\x73\x74\x20\x6f\x6e\x20\x73" \
-"\x74\x64\x69\x6e\x0a\x0a\x4d\x61\x69\x6e\x20\x6f\x70\x65\x72\x61" \
-"\x74\x69\x6f\x6e\x20\x6d\x6f\x64\x65\x3a\x0a\x09\x2d\x74\x09\x4c" \
-"\x69\x73\x74\x0a\x09\x2d\x69\x09\x45\x78\x74\x72\x61\x63\x74\x20" \
-"\x45\x58\x54\x52\x5f\x46\x49\x4c\x45\x73\x20\x28\x6f\x72\x20\x61" \
-"\x6c\x6c\x29\x0a\x09\x2d\x6f\x09\x43\x72\x65\x61\x74\x65\x20\x28" \
-"\x72\x65\x71\x75\x69\x72\x65\x73\x20\x2d\x48\x20\x6e\x65\x77\x63" \
-"\x29\x0a\x09\x2d\x70\x20\x44\x49\x52\x09\x43\x6f\x70\x79\x20\x66" \
-"\x69\x6c\x65\x73\x20\x74\x6f\x20\x44\x49\x52\x0a\x09\x2d\x64\x09" \
-"\x4d\x61\x6b\x65\x20\x6c\x65\x61\x64\x69\x6e\x67\x20\x64\x69\x72" \
-"\x65\x63\x74\x6f\x72\x69\x65\x73\x0a\x09\x2d\x6d\x09\x50\x72\x65" \
-"\x73\x65\x72\x76\x65\x20\x6d\x74\x69\x6d\x65\x0a\x09\x2d\x76\x09" \
-"\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x75\x09\x4f\x76\x65\x72" \
-"\x77\x72\x69\x74\x65\x0a\x09\x2d\x46\x20\x46\x49\x4c\x45\x09\x49" \
-"\x6e\x70\x75\x74\x20\x28\x2d\x74\x2c\x2d\x69\x2c\x2d\x70\x29\x20" \
-"\x6f\x72\x20\x6f\x75\x74\x70\x75\x74\x20\x28\x2d\x6f\x29\x20\x66" \
-"\x69\x6c\x65\x0a\x09\x2d\x48\x20\x6e\x65\x77\x63\x09\x41\x72\x63" \
-"\x68\x69\x76\x65\x20\x66\x6f\x72\x6d\x61\x74\x00\x2d\x66\x62\x53" \
-"\x20\x2d\x6c\x20\x4e\x20\x2d\x4c\x20\x4c\x4f\x47\x46\x49\x4c\x45" \
-"\x20\x2d\x63\x20\x44\x49\x52\x0a\x0a\x09\x2d\x66\x09\x46\x6f\x72" \
-"\x65\x67\x72\x6f\x75\x6e\x64\x0a\x09\x2d\x62\x09\x42\x61\x63\x6b" \
-"\x67\x72\x6f\x75\x6e\x64\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29" \
-"\x0a\x09\x2d\x53\x09\x4c\x6f\x67\x20\x74\x6f\x20\x73\x79\x73\x6c" \
-"\x6f\x67\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x0a\x09\x2d\x6c" \
-"\x09\x53\x65\x74\x20\x6c\x6f\x67\x20\x6c\x65\x76\x65\x6c\x2e\x20" \
-"\x30\x20\x69\x73\x20\x74\x68\x65\x20\x6d\x6f\x73\x74\x20\x76\x65" \
-"\x72\x62\x6f\x73\x65\x2c\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x38" \
-"\x0a\x09\x2d\x4c\x09\x4c\x6f\x67\x20\x74\x6f\x20\x66\x69\x6c\x65" \
-"\x0a\x09\x2d\x63\x09\x57\x6f\x72\x6b\x69\x6e\x67\x20\x64\x69\x72" \
-"\x00\x5b\x2d\x63\x20\x44\x49\x52\x5d\x20\x5b\x2d\x75\x20\x55\x53" \
-"\x45\x52\x5d\x20\x5b\x2d\x6c\x65\x72\x5d\x7c\x5b\x46\x49\x4c\x45" \
-"\x5d\x0a\x0a\x09\x2d\x63\x09\x43\x72\x6f\x6e\x74\x61\x62\x20\x64" \
-"\x69\x72\x65\x63\x74\x6f\x72\x79\x0a\x09\x2d\x75\x09\x55\x73\x65" \
-"\x72\x0a\x09\x2d\x6c\x09\x4c\x69\x73\x74\x20\x63\x72\x6f\x6e\x74" \
-"\x61\x62\x0a\x09\x2d\x65\x09\x45\x64\x69\x74\x20\x63\x72\x6f\x6e" \
-"\x74\x61\x62\x0a\x09\x2d\x72\x09\x44\x65\x6c\x65\x74\x65\x20\x63" \
-"\x72\x6f\x6e\x74\x61\x62\x0a\x09\x46\x49\x4c\x45\x09\x52\x65\x70" \
-"\x6c\x61\x63\x65\x20\x63\x72\x6f\x6e\x74\x61\x62\x20\x62\x79\x20" \
-"\x46\x49\x4c\x45\x20\x28\x27\x2d\x27\x3a\x20\x73\x74\x64\x69\x6e" \
-"\x29\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x46\x49\x4c" \
-"\x45\x5d\x2e\x2e\x2e\x0a\x0a\x50\x72\x69\x6e\x74\x20\x73\x65\x6c" \
-"\x65\x63\x74\x65\x64\x20\x66\x69\x65\x6c\x64\x73\x20\x66\x72\x6f" \
-"\x6d\x20\x65\x61\x63\x68\x20\x69\x6e\x70\x75\x74\x20\x46\x49\x4c" \
-"\x45\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x0a\x09\x2d\x62" \
-"\x20\x4c\x49\x53\x54\x09\x4f\x75\x74\x70\x75\x74\x20\x6f\x6e\x6c" \
-"\x79\x20\x62\x79\x74\x65\x73\x20\x66\x72\x6f\x6d\x20\x4c\x49\x53" \
-"\x54\x0a\x09\x2d\x63\x20\x4c\x49\x53\x54\x09\x4f\x75\x74\x70\x75" \
-"\x74\x20\x6f\x6e\x6c\x79\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72" \
-"\x73\x20\x66\x72\x6f\x6d\x20\x4c\x49\x53\x54\x0a\x09\x2d\x64\x20" \
-"\x43\x48\x41\x52\x09\x55\x73\x65\x20\x43\x48\x41\x52\x20\x69\x6e" \
-"\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x74\x61\x62\x20\x61\x73\x20" \
-"\x74\x68\x65\x20\x66\x69\x65\x6c\x64\x20\x64\x65\x6c\x69\x6d\x69" \
-"\x74\x65\x72\x0a\x09\x2d\x73\x09\x4f\x75\x74\x70\x75\x74\x20\x6f" \
-"\x6e\x6c\x79\x20\x74\x68\x65\x20\x6c\x69\x6e\x65\x73\x20\x63\x6f" \
-"\x6e\x74\x61\x69\x6e\x69\x6e\x67\x20\x64\x65\x6c\x69\x6d\x69\x74" \
-"\x65\x72\x0a\x09\x2d\x66\x20\x4e\x09\x50\x72\x69\x6e\x74\x20\x6f" \
-"\x6e\x6c\x79\x20\x74\x68\x65\x73\x65\x20\x66\x69\x65\x6c\x64\x73" \
-"\x0a\x09\x2d\x6e\x09\x49\x67\x6e\x6f\x72\x65\x64\x00\x5b\x4f\x50" \
-"\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x2b\x46\x4d\x54\x5d\x20\x5b\x54" \
-"\x49\x4d\x45\x5d\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x74\x69" \
-"\x6d\x65\x20\x28\x75\x73\x69\x6e\x67\x20\x2b\x46\x4d\x54\x29\x2c" \
-"\x20\x6f\x72\x20\x73\x65\x74\x20\x74\x69\x6d\x65\x0a\x0a\x09\x5b" \
-"\x2d\x73\x2c\x2d\x2d\x73\x65\x74\x5d\x20\x54\x49\x4d\x45\x09\x53" \
-"\x65\x74\x20\x74\x69\x6d\x65\x20\x74\x6f\x20\x54\x49\x4d\x45\x0a" \
-"\x09\x2d\x75\x2c\x2d\x2d\x75\x74\x63\x09\x57\x6f\x72\x6b\x20\x69" \
-"\x6e\x20\x55\x54\x43\x20\x28\x64\x6f\x6e\x27\x74\x20\x63\x6f\x6e" \
-"\x76\x65\x72\x74\x20\x74\x6f\x20\x6c\x6f\x63\x61\x6c\x20\x74\x69" \
-"\x6d\x65\x29\x0a\x09\x2d\x52\x2c\x2d\x2d\x72\x66\x63\x2d\x32\x38" \
-"\x32\x32\x09\x4f\x75\x74\x70\x75\x74\x20\x52\x46\x43\x2d\x32\x38" \
-"\x32\x32\x20\x63\x6f\x6d\x70\x6c\x69\x61\x6e\x74\x20\x64\x61\x74" \
-"\x65\x20\x73\x74\x72\x69\x6e\x67\x0a\x09\x2d\x49\x5b\x53\x50\x45" \
-"\x43\x5d\x09\x4f\x75\x74\x70\x75\x74\x20\x49\x53\x4f\x2d\x38\x36" \
-"\x30\x31\x20\x63\x6f\x6d\x70\x6c\x69\x61\x6e\x74\x20\x64\x61\x74" \
-"\x65\x20\x73\x74\x72\x69\x6e\x67\x0a\x09\x09\x09\x53\x50\x45\x43" \
-"\x3d\x27\x64\x61\x74\x65\x27\x20\x28\x64\x65\x66\x61\x75\x6c\x74" \
-"\x29\x20\x66\x6f\x72\x20\x64\x61\x74\x65\x20\x6f\x6e\x6c\x79\x2c" \
-"\x0a\x09\x09\x09\x27\x68\x6f\x75\x72\x73\x27\x2c\x20\x27\x6d\x69" \
-"\x6e\x75\x74\x65\x73\x27\x2c\x20\x6f\x72\x20\x27\x73\x65\x63\x6f" \
-"\x6e\x64\x73\x27\x20\x66\x6f\x72\x20\x64\x61\x74\x65\x20\x61\x6e" \
-"\x64\x0a\x09\x09\x09\x74\x69\x6d\x65\x20\x74\x6f\x20\x74\x68\x65" \
-"\x20\x69\x6e\x64\x69\x63\x61\x74\x65\x64\x20\x70\x72\x65\x63\x69" \
-"\x73\x69\x6f\x6e\x0a\x09\x2d\x72\x2c\x2d\x2d\x72\x65\x66\x65\x72" \
-"\x65\x6e\x63\x65\x20\x46\x49\x4c\x45\x09\x44\x69\x73\x70\x6c\x61" \
-"\x79\x20\x6c\x61\x73\x74\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74" \
-"\x69\x6f\x6e\x20\x74\x69\x6d\x65\x20\x6f\x66\x20\x46\x49\x4c\x45" \
-"\x0a\x09\x2d\x64\x2c\x2d\x2d\x64\x61\x74\x65\x20\x54\x49\x4d\x45" \
-"\x09\x44\x69\x73\x70\x6c\x61\x79\x20\x54\x49\x4d\x45\x2c\x20\x6e" \
-"\x6f\x74\x20\x27\x6e\x6f\x77\x27\x0a\x09\x2d\x44\x20\x46\x4d\x54" \
-"\x09\x09\x55\x73\x65\x20\x46\x4d\x54\x20\x66\x6f\x72\x20\x2d\x64" \
-"\x20\x54\x49\x4d\x45\x20\x63\x6f\x6e\x76\x65\x72\x73\x69\x6f\x6e" \
-"\x0a\x0a\x52\x65\x63\x6f\x67\x6e\x69\x7a\x65\x64\x20\x54\x49\x4d" \
-"\x45\x20\x66\x6f\x72\x6d\x61\x74\x73\x3a\x0a\x09\x68\x68\x3a\x6d" \
-"\x6d\x5b\x3a\x73\x73\x5d\x0a\x09\x5b\x59\x59\x59\x59\x2e\x5d\x4d" \
-"\x4d\x2e\x44\x44\x2d\x68\x68\x3a\x6d\x6d\x5b\x3a\x73\x73\x5d\x0a" \
-"\x09\x59\x59\x59\x59\x2d\x4d\x4d\x2d\x44\x44\x20\x68\x68\x3a\x6d" \
-"\x6d\x5b\x3a\x73\x73\x5d\x0a\x09\x5b\x5b\x5b\x5b\x5b\x59\x59\x5d" \
-"\x59\x59\x5d\x4d\x4d\x5d\x44\x44\x5d\x68\x68\x5d\x6d\x6d\x5b\x2e" \
-"\x73\x73\x5d\x0a\x09\x27\x64\x61\x74\x65\x20\x54\x49\x4d\x45\x27" \
-"\x20\x66\x6f\x72\x6d\x20\x61\x63\x63\x65\x70\x74\x73\x20\x4d\x4d" \
-"\x44\x44\x68\x68\x6d\x6d\x5b\x5b\x59\x59\x5d\x59\x59\x5d\x5b\x2e" \
-"\x73\x73\x5d\x20\x69\x6e\x73\x74\x65\x61\x64\x00\x45\x58\x50\x52" \
-"\x45\x53\x53\x49\x4f\x4e\x2e\x2e\x2e\x0a\x0a\x54\x69\x6e\x79\x20" \
-"\x52\x50\x4e\x20\x63\x61\x6c\x63\x75\x6c\x61\x74\x6f\x72\x2e\x20" \
-"\x4f\x70\x65\x72\x61\x74\x69\x6f\x6e\x73\x3a\x0a\x2b\x2c\x20\x61" \
-"\x64\x64\x2c\x20\x2d\x2c\x20\x73\x75\x62\x2c\x20\x2a\x2c\x20\x6d" \
-"\x75\x6c\x2c\x20\x2f\x2c\x20\x64\x69\x76\x2c\x20\x25\x2c\x20\x6d" \
-"\x6f\x64\x2c\x20\x2a\x2a\x2c\x20\x65\x78\x70\x2c\x20\x61\x6e\x64" \
-"\x2c\x20\x6f\x72\x2c\x20\x6e\x6f\x74\x2c\x20\x78\x6f\x72\x2c\x0a" \
-"\x70\x20\x2d\x20\x70\x72\x69\x6e\x74\x20\x74\x6f\x70\x20\x6f\x66" \
-"\x20\x74\x68\x65\x20\x73\x74\x61\x63\x6b\x20\x28\x77\x69\x74\x68" \
-"\x6f\x75\x74\x20\x70\x6f\x70\x70\x69\x6e\x67\x29\x2c\x0a\x66\x20" \
-"\x2d\x20\x70\x72\x69\x6e\x74\x20\x65\x6e\x74\x69\x72\x65\x20\x73" \
-"\x74\x61\x63\x6b\x2c\x0a\x6f\x20\x2d\x20\x70\x6f\x70\x20\x74\x68" \
-"\x65\x20\x76\x61\x6c\x75\x65\x20\x61\x6e\x64\x20\x73\x65\x74\x20" \
-"\x6f\x75\x74\x70\x75\x74\x20\x72\x61\x64\x69\x78\x20\x28\x6d\x75" \
-"\x73\x74\x20\x62\x65\x20\x31\x30\x2c\x20\x31\x36\x2c\x20\x38\x20" \
-"\x6f\x72\x20\x32\x29\x2e\x0a\x45\x78\x61\x6d\x70\x6c\x65\x73\x3a" \
-"\x20\x27\x64\x63\x20\x32\x20\x32\x20\x61\x64\x64\x20\x70\x27\x20" \
-"\x2d\x3e\x20\x34\x2c\x20\x27\x64\x63\x20\x38\x20\x38\x20\x6d\x75" \
-"\x6c\x20\x32\x20\x32\x20\x2b\x20\x2f\x20\x70\x27\x20\x2d\x3e\x20" \
-"\x31\x36\x00\x5b\x69\x66\x3d\x46\x49\x4c\x45\x5d\x20\x5b\x6f\x66" \
-"\x3d\x46\x49\x4c\x45\x5d\x20\x5b\x69\x62\x73\x3d\x4e\x5d\x20\x5b" \
-"\x6f\x62\x73\x3d\x4e\x5d\x20\x5b\x62\x73\x3d\x4e\x5d\x20\x5b\x63" \
-"\x6f\x75\x6e\x74\x3d\x4e\x5d\x20\x5b\x73\x6b\x69\x70\x3d\x4e\x5d" \
-"\x0a\x09\x5b\x73\x65\x65\x6b\x3d\x4e\x5d\x20\x5b\x63\x6f\x6e\x76" \
-"\x3d\x6e\x6f\x74\x72\x75\x6e\x63\x7c\x6e\x6f\x65\x72\x72\x6f\x72" \
-"\x7c\x73\x79\x6e\x63\x7c\x66\x73\x79\x6e\x63\x5d\x0a\x0a\x43\x6f" \
-"\x70\x79\x20\x61\x20\x66\x69\x6c\x65\x20\x77\x69\x74\x68\x20\x63" \
-"\x6f\x6e\x76\x65\x72\x74\x69\x6e\x67\x20\x61\x6e\x64\x20\x66\x6f" \
-"\x72\x6d\x61\x74\x74\x69\x6e\x67\x0a\x0a\x09\x69\x66\x3d\x46\x49" \
-"\x4c\x45\x09\x09\x52\x65\x61\x64\x20\x66\x72\x6f\x6d\x20\x46\x49" \
-"\x4c\x45\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x73\x74" \
-"\x64\x69\x6e\x0a\x09\x6f\x66\x3d\x46\x49\x4c\x45\x09\x09\x57\x72" \
-"\x69\x74\x65\x20\x74\x6f\x20\x46\x49\x4c\x45\x20\x69\x6e\x73\x74" \
-"\x65\x61\x64\x20\x6f\x66\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x62" \
-"\x73\x3d\x4e\x09\x09\x52\x65\x61\x64\x20\x61\x6e\x64\x20\x77\x72" \
-"\x69\x74\x65\x20\x4e\x20\x62\x79\x74\x65\x73\x20\x61\x74\x20\x61" \
-"\x20\x74\x69\x6d\x65\x0a\x09\x69\x62\x73\x3d\x4e\x09\x09\x52\x65" \
-"\x61\x64\x20\x4e\x20\x62\x79\x74\x65\x73\x20\x61\x74\x20\x61\x20" \
-"\x74\x69\x6d\x65\x0a\x09\x6f\x62\x73\x3d\x4e\x09\x09\x57\x72\x69" \
-"\x74\x65\x20\x4e\x20\x62\x79\x74\x65\x73\x20\x61\x74\x20\x61\x20" \
-"\x74\x69\x6d\x65\x0a\x09\x63\x6f\x75\x6e\x74\x3d\x4e\x09\x09\x43" \
-"\x6f\x70\x79\x20\x6f\x6e\x6c\x79\x20\x4e\x20\x69\x6e\x70\x75\x74" \
-"\x20\x62\x6c\x6f\x63\x6b\x73\x0a\x09\x73\x6b\x69\x70\x3d\x4e\x09" \
-"\x09\x53\x6b\x69\x70\x20\x4e\x20\x69\x6e\x70\x75\x74\x20\x62\x6c" \
-"\x6f\x63\x6b\x73\x0a\x09\x73\x65\x65\x6b\x3d\x4e\x09\x09\x53\x6b" \
-"\x69\x70\x20\x4e\x20\x6f\x75\x74\x70\x75\x74\x20\x62\x6c\x6f\x63" \
-"\x6b\x73\x0a\x09\x63\x6f\x6e\x76\x3d\x6e\x6f\x74\x72\x75\x6e\x63" \
-"\x09\x44\x6f\x6e\x27\x74\x20\x74\x72\x75\x6e\x63\x61\x74\x65\x20" \
-"\x6f\x75\x74\x70\x75\x74\x20\x66\x69\x6c\x65\x0a\x09\x63\x6f\x6e" \
-"\x76\x3d\x6e\x6f\x65\x72\x72\x6f\x72\x09\x43\x6f\x6e\x74\x69\x6e" \
-"\x75\x65\x20\x61\x66\x74\x65\x72\x20\x72\x65\x61\x64\x20\x65\x72" \
-"\x72\x6f\x72\x73\x0a\x09\x63\x6f\x6e\x76\x3d\x73\x79\x6e\x63\x09" \
-"\x50\x61\x64\x20\x62\x6c\x6f\x63\x6b\x73\x20\x77\x69\x74\x68\x20" \
-"\x7a\x65\x72\x6f\x73\x0a\x09\x63\x6f\x6e\x76\x3d\x66\x73\x79\x6e" \
-"\x63\x09\x50\x68\x79\x73\x69\x63\x61\x6c\x6c\x79\x20\x77\x72\x69" \
-"\x74\x65\x20\x64\x61\x74\x61\x20\x6f\x75\x74\x20\x62\x65\x66\x6f" \
-"\x72\x65\x20\x66\x69\x6e\x69\x73\x68\x69\x6e\x67\x0a\x0a\x4e\x75" \
-"\x6d\x62\x65\x72\x73\x20\x6d\x61\x79\x20\x62\x65\x20\x73\x75\x66" \
-"\x66\x69\x78\x65\x64\x20\x62\x79\x20\x63\x20\x28\x78\x31\x29\x2c" \
-"\x20\x77\x20\x28\x78\x32\x29\x2c\x20\x62\x20\x28\x78\x35\x31\x32" \
-"\x29\x2c\x20\x6b\x44\x20\x28\x78\x31\x30\x30\x30\x29\x2c\x20\x6b" \
-"\x20\x28\x78\x31\x30\x32\x34\x29\x2c\x0a\x4d\x44\x20\x28\x78\x31" \
-"\x30\x30\x30\x30\x30\x30\x29\x2c\x20\x4d\x20\x28\x78\x31\x30\x34" \
-"\x38\x35\x37\x36\x29\x2c\x20\x47\x44\x20\x28\x78\x31\x30\x30\x30" \
-"\x30\x30\x30\x30\x30\x30\x29\x20\x6f\x72\x20\x47\x20\x28\x78\x31" \
-"\x30\x37\x33\x37\x34\x31\x38\x32\x34\x29\x00\x5b\x2d\x6e\x5d\x20" \
-"\x5b\x4d\x4f\x44\x46\x49\x4c\x45\x53\x5d\x2e\x2e\x2e\x0a\x0a\x47" \
-"\x65\x6e\x65\x72\x61\x74\x65\x20\x6d\x6f\x64\x75\x6c\x65\x73\x2e" \
-"\x64\x65\x70\x2c\x20\x61\x6c\x69\x61\x73\x2c\x20\x61\x6e\x64\x20" \
-"\x73\x79\x6d\x62\x6f\x6c\x73\x20\x66\x69\x6c\x65\x73\x0a\x0a\x09" \
-"\x2d\x6e\x09\x44\x72\x79\x20\x72\x75\x6e\x3a\x20\x70\x72\x69\x6e" \
-"\x74\x20\x66\x69\x6c\x65\x73\x20\x74\x6f\x20\x73\x74\x64\x6f\x75" \
-"\x74\x00\x41\x44\x44\x52\x45\x53\x53\x20\x5b\x57\x49\x44\x54\x48" \
-"\x20\x5b\x56\x41\x4c\x55\x45\x5d\x5d\x0a\x0a\x52\x65\x61\x64\x2f" \
-"\x77\x72\x69\x74\x65\x20\x66\x72\x6f\x6d\x20\x70\x68\x79\x73\x69" \
-"\x63\x61\x6c\x20\x61\x64\x64\x72\x65\x73\x73\x0a\x0a\x09\x41\x44" \
-"\x44\x52\x45\x53\x53\x09\x41\x64\x64\x72\x65\x73\x73\x20\x74\x6f" \
-"\x20\x61\x63\x74\x20\x75\x70\x6f\x6e\x0a\x09\x57\x49\x44\x54\x48" \
-"\x09\x57\x69\x64\x74\x68\x20\x28\x38\x2f\x31\x36\x2f\x2e\x2e\x2e" \
-"\x29\x0a\x09\x56\x41\x4c\x55\x45\x09\x44\x61\x74\x61\x20\x74\x6f" \
-"\x20\x62\x65\x20\x77\x72\x69\x74\x74\x65\x6e\x00\x5b\x2d\x50\x6b" \
-"\x6d\x68\x61\x69\x5d\x20\x5b\x2d\x42\x20\x53\x49\x5a\x45\x5d\x20" \
-"\x5b\x46\x49\x4c\x45\x53\x59\x53\x54\x45\x4d\x5d\x2e\x2e\x2e\x0a" \
-"\x0a\x50\x72\x69\x6e\x74\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65" \
-"\x6d\x20\x75\x73\x61\x67\x65\x20\x73\x74\x61\x74\x69\x73\x74\x69" \
-"\x63\x73\x0a\x0a\x09\x2d\x50\x09\x50\x4f\x53\x49\x58\x20\x6f\x75" \
-"\x74\x70\x75\x74\x20\x66\x6f\x72\x6d\x61\x74\x0a\x09\x2d\x6b\x09" \
-"\x31\x30\x32\x34\x2d\x62\x79\x74\x65\x20\x62\x6c\x6f\x63\x6b\x73" \
-"\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x0a\x09\x2d\x6d\x09\x31" \
-"\x4d\x2d\x62\x79\x74\x65\x20\x62\x6c\x6f\x63\x6b\x73\x0a\x09\x2d" \
-"\x68\x09\x48\x75\x6d\x61\x6e\x20\x72\x65\x61\x64\x61\x62\x6c\x65" \
-"\x20\x28\x65\x2e\x67\x2e\x20\x31\x4b\x20\x32\x34\x33\x4d\x20\x32" \
-"\x47\x29\x0a\x09\x2d\x61\x09\x53\x68\x6f\x77\x20\x61\x6c\x6c\x20" \
-"\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x73\x0a\x09\x2d\x69\x09" \
-"\x49\x6e\x6f\x64\x65\x73\x0a\x09\x2d\x42\x20\x53\x49\x5a\x45\x09" \
-"\x42\x6c\x6f\x63\x6b\x73\x69\x7a\x65\x00\x5b\x2d\x61\x62\x42\x64" \
-"\x69\x4e\x71\x72\x54\x73\x74\x77\x5d\x20\x5b\x2d\x4c\x20\x4c\x41" \
-"\x42\x45\x4c\x5d\x20\x5b\x2d\x53\x20\x46\x49\x4c\x45\x5d\x20\x5b" \
-"\x2d\x55\x20\x4c\x49\x4e\x45\x53\x5d\x20\x46\x49\x4c\x45\x31\x20" \
-"\x46\x49\x4c\x45\x32\x0a\x0a\x43\x6f\x6d\x70\x61\x72\x65\x20\x66" \
-"\x69\x6c\x65\x73\x20\x6c\x69\x6e\x65\x20\x62\x79\x20\x6c\x69\x6e" \
-"\x65\x20\x61\x6e\x64\x20\x6f\x75\x74\x70\x75\x74\x20\x74\x68\x65" \
-"\x20\x64\x69\x66\x66\x65\x72\x65\x6e\x63\x65\x73\x20\x62\x65\x74" \
-"\x77\x65\x65\x6e\x20\x74\x68\x65\x6d\x2e\x0a\x54\x68\x69\x73\x20" \
-"\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x73" \
-"\x75\x70\x70\x6f\x72\x74\x73\x20\x75\x6e\x69\x66\x69\x65\x64\x20" \
-"\x64\x69\x66\x66\x73\x20\x6f\x6e\x6c\x79\x2e\x0a\x0a\x09\x2d\x61" \
-"\x09\x54\x72\x65\x61\x74\x20\x61\x6c\x6c\x20\x66\x69\x6c\x65\x73" \
-"\x20\x61\x73\x20\x74\x65\x78\x74\x0a\x09\x2d\x62\x09\x49\x67\x6e" \
-"\x6f\x72\x65\x20\x63\x68\x61\x6e\x67\x65\x73\x20\x69\x6e\x20\x74" \
-"\x68\x65\x20\x61\x6d\x6f\x75\x6e\x74\x20\x6f\x66\x20\x77\x68\x69" \
-"\x74\x65\x73\x70\x61\x63\x65\x0a\x09\x2d\x42\x09\x49\x67\x6e\x6f" \
-"\x72\x65\x20\x63\x68\x61\x6e\x67\x65\x73\x20\x77\x68\x6f\x73\x65" \
-"\x20\x6c\x69\x6e\x65\x73\x20\x61\x72\x65\x20\x61\x6c\x6c\x20\x62" \
-"\x6c\x61\x6e\x6b\x0a\x09\x2d\x64\x09\x54\x72\x79\x20\x68\x61\x72" \
-"\x64\x20\x74\x6f\x20\x66\x69\x6e\x64\x20\x61\x20\x73\x6d\x61\x6c" \
-"\x6c\x65\x72\x20\x73\x65\x74\x20\x6f\x66\x20\x63\x68\x61\x6e\x67" \
-"\x65\x73\x0a\x09\x2d\x69\x09\x49\x67\x6e\x6f\x72\x65\x20\x63\x61" \
-"\x73\x65\x20\x64\x69\x66\x66\x65\x72\x65\x6e\x63\x65\x73\x0a\x09" \
-"\x2d\x4c\x09\x55\x73\x65\x20\x4c\x41\x42\x45\x4c\x20\x69\x6e\x73" \
-"\x74\x65\x61\x64\x20\x6f\x66\x20\x74\x68\x65\x20\x66\x69\x6c\x65" \
-"\x6e\x61\x6d\x65\x20\x69\x6e\x20\x74\x68\x65\x20\x75\x6e\x69\x66" \
-"\x69\x65\x64\x20\x68\x65\x61\x64\x65\x72\x0a\x09\x2d\x4e\x09\x54" \
-"\x72\x65\x61\x74\x20\x61\x62\x73\x65\x6e\x74\x20\x66\x69\x6c\x65" \
-"\x73\x20\x61\x73\x20\x65\x6d\x70\x74\x79\x0a\x09\x2d\x71\x09\x4f" \
-"\x75\x74\x70\x75\x74\x20\x6f\x6e\x6c\x79\x20\x77\x68\x65\x74\x68" \
-"\x65\x72\x20\x66\x69\x6c\x65\x73\x20\x64\x69\x66\x66\x65\x72\x0a" \
-"\x09\x2d\x72\x09\x52\x65\x63\x75\x72\x73\x65\x0a\x09\x2d\x53\x09" \
-"\x53\x74\x61\x72\x74\x20\x77\x69\x74\x68\x20\x46\x49\x4c\x45\x20" \
-"\x77\x68\x65\x6e\x20\x63\x6f\x6d\x70\x61\x72\x69\x6e\x67\x20\x64" \
-"\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x0a\x09\x2d\x54\x09\x4d" \
-"\x61\x6b\x65\x20\x74\x61\x62\x73\x20\x6c\x69\x6e\x65\x20\x75\x70" \
-"\x20\x62\x79\x20\x70\x72\x65\x66\x69\x78\x69\x6e\x67\x20\x61\x20" \
-"\x74\x61\x62\x20\x77\x68\x65\x6e\x20\x6e\x65\x63\x65\x73\x73\x61" \
-"\x72\x79\x0a\x09\x2d\x73\x09\x52\x65\x70\x6f\x72\x74\x20\x77\x68" \
-"\x65\x6e\x20\x74\x77\x6f\x20\x66\x69\x6c\x65\x73\x20\x61\x72\x65" \
-"\x20\x74\x68\x65\x20\x73\x61\x6d\x65\x0a\x09\x2d\x74\x09\x45\x78" \
-"\x70\x61\x6e\x64\x20\x74\x61\x62\x73\x20\x74\x6f\x20\x73\x70\x61" \
-"\x63\x65\x73\x20\x69\x6e\x20\x6f\x75\x74\x70\x75\x74\x0a\x09\x2d" \
-"\x55\x09\x4f\x75\x74\x70\x75\x74\x20\x4c\x49\x4e\x45\x53\x20\x6c" \
-"\x69\x6e\x65\x73\x20\x6f\x66\x20\x63\x6f\x6e\x74\x65\x78\x74\x0a" \
-"\x09\x2d\x77\x09\x49\x67\x6e\x6f\x72\x65\x20\x61\x6c\x6c\x20\x77" \
-"\x68\x69\x74\x65\x73\x70\x61\x63\x65\x00\x46\x49\x4c\x45\x4e\x41" \
-"\x4d\x45\x0a\x0a\x53\x74\x72\x69\x70\x20\x6e\x6f\x6e\x2d\x64\x69" \
-"\x72\x65\x63\x74\x6f\x72\x79\x20\x73\x75\x66\x66\x69\x78\x20\x66" \
-"\x72\x6f\x6d\x20\x46\x49\x4c\x45\x4e\x41\x4d\x45\x00\x5b\x2d\x63" \
-"\x5d\x20\x5b\x2d\x6e\x20\x4c\x45\x56\x45\x4c\x5d\x20\x5b\x2d\x72" \
-"\x5d\x20\x5b\x2d\x73\x20\x53\x49\x5a\x45\x5d\x20\x5b\x2d\x43\x5d" \
-"\x0a\x0a\x50\x72\x69\x6e\x74\x20\x6f\x72\x20\x63\x6f\x6e\x74\x72" \
-"\x6f\x6c\x20\x74\x68\x65\x20\x6b\x65\x72\x6e\x65\x6c\x20\x72\x69" \
-"\x6e\x67\x20\x62\x75\x66\x66\x65\x72\x0a\x0a\x09\x2d\x63\x09\x09" \
-"\x43\x6c\x65\x61\x72\x20\x72\x69\x6e\x67\x20\x62\x75\x66\x66\x65" \
-"\x72\x20\x61\x66\x74\x65\x72\x20\x70\x72\x69\x6e\x74\x69\x6e\x67" \
-"\x0a\x09\x2d\x6e\x20\x4c\x45\x56\x45\x4c\x09\x53\x65\x74\x20\x63" \
-"\x6f\x6e\x73\x6f\x6c\x65\x20\x6c\x6f\x67\x67\x69\x6e\x67\x20\x6c" \
-"\x65\x76\x65\x6c\x0a\x09\x2d\x72\x09\x09\x53\x68\x6f\x77\x20\x6c" \
-"\x65\x76\x65\x6c\x20\x70\x72\x65\x66\x69\x78\x0a\x09\x2d\x73\x20" \
-"\x53\x49\x5a\x45\x09\x09\x42\x75\x66\x66\x65\x72\x20\x73\x69\x7a" \
-"\x65\x0a\x09\x2d\x43\x09\x09\x43\x6f\x6c\x6f\x72\x65\x64\x20\x6f" \
-"\x75\x74\x70\x75\x74\x00\x5b\x2d\x64\x76\x73\x5d\x20\x5b\x2d\x63" \
-"\x20\x43\x4f\x4e\x46\x46\x49\x4c\x45\x5d\x20\x5b\x2d\x74\x20\x54" \
-"\x54\x4c\x5f\x53\x45\x43\x5d\x20\x5b\x2d\x70\x20\x50\x4f\x52\x54" \
-"\x5d\x20\x5b\x2d\x69\x20\x41\x44\x44\x52\x5d\x0a\x0a\x53\x6d\x61" \
-"\x6c\x6c\x20\x73\x74\x61\x74\x69\x63\x20\x44\x4e\x53\x20\x73\x65" \
-"\x72\x76\x65\x72\x20\x64\x61\x65\x6d\x6f\x6e\x0a\x0a\x09\x2d\x63" \
-"\x20\x46\x49\x4c\x45\x09\x43\x6f\x6e\x66\x69\x67\x20\x66\x69\x6c" \
-"\x65\x0a\x09\x2d\x74\x20\x53\x45\x43\x09\x54\x54\x4c\x0a\x09\x2d" \
-"\x70\x20\x50\x4f\x52\x54\x09\x4c\x69\x73\x74\x65\x6e\x20\x6f\x6e" \
-"\x20\x50\x4f\x52\x54\x0a\x09\x2d\x69\x20\x41\x44\x44\x52\x09\x4c" \
-"\x69\x73\x74\x65\x6e\x20\x6f\x6e\x20\x41\x44\x44\x52\x0a\x09\x2d" \
-"\x64\x09\x44\x61\x65\x6d\x6f\x6e\x69\x7a\x65\x0a\x09\x2d\x76\x09" \
-"\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x73\x09\x53\x65\x6e\x64" \
-"\x20\x73\x75\x63\x63\x65\x73\x73\x66\x75\x6c\x20\x72\x65\x70\x6c" \
-"\x69\x65\x73\x20\x6f\x6e\x6c\x79\x2e\x20\x55\x73\x65\x20\x74\x68" \
-"\x69\x73\x20\x69\x66\x20\x79\x6f\x75\x20\x77\x61\x6e\x74\x0a\x09" \
-"\x09\x74\x6f\x20\x75\x73\x65\x20\x2f\x65\x74\x63\x2f\x72\x65\x73" \
-"\x6f\x6c\x76\x2e\x63\x6f\x6e\x66\x20\x77\x69\x74\x68\x20\x74\x77" \
-"\x6f\x20\x6e\x61\x6d\x65\x73\x65\x72\x76\x65\x72\x20\x6c\x69\x6e" \
-"\x65\x73\x3a\x0a\x09\x09\x09\x6e\x61\x6d\x65\x73\x65\x72\x76\x65" \
-"\x72\x20\x44\x4e\x53\x44\x5f\x53\x45\x52\x56\x45\x52\x0a\x09\x09" \
-"\x09\x6e\x61\x6d\x65\x73\x65\x72\x76\x65\x72\x20\x4e\x4f\x52\x4d" \
-"\x41\x4c\x5f\x44\x4e\x53\x5f\x53\x45\x52\x56\x45\x52\x00\x5b\x2d" \
-"\x75\x64\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x0a\x0a\x43\x6f\x6e\x76" \
-"\x65\x72\x74\x20\x46\x49\x4c\x45\x20\x69\x6e\x2d\x70\x6c\x61\x63" \
-"\x65\x20\x66\x72\x6f\x6d\x20\x44\x4f\x53\x20\x74\x6f\x20\x55\x6e" \
-"\x69\x78\x20\x66\x6f\x72\x6d\x61\x74\x2e\x0a\x57\x68\x65\x6e\x20" \
-"\x6e\x6f\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x67\x69\x76\x65\x6e" \
-"\x2c\x20\x75\x73\x65\x20\x73\x74\x64\x69\x6e\x2f\x73\x74\x64\x6f" \
-"\x75\x74\x2e\x0a\x0a\x09\x2d\x75\x09\x64\x6f\x73\x32\x75\x6e\x69" \
-"\x78\x0a\x09\x2d\x64\x09\x75\x6e\x69\x78\x32\x64\x6f\x73\x00\x5b" \
-"\x2d\x61\x48\x4c\x64\x63\x6c\x73\x78\x68\x6d\x6b\x5d\x20\x5b\x46" \
-"\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x53\x75\x6d\x6d\x61\x72\x69" \
-"\x7a\x65\x20\x64\x69\x73\x6b\x20\x73\x70\x61\x63\x65\x20\x75\x73" \
-"\x65\x64\x20\x66\x6f\x72\x20\x65\x61\x63\x68\x20\x46\x49\x4c\x45" \
-"\x20\x61\x6e\x64\x2f\x6f\x72\x20\x64\x69\x72\x65\x63\x74\x6f\x72" \
-"\x79\x0a\x0a\x09\x2d\x61\x09\x53\x68\x6f\x77\x20\x66\x69\x6c\x65" \
-"\x20\x73\x69\x7a\x65\x73\x20\x74\x6f\x6f\x0a\x09\x2d\x4c\x09\x46" \
-"\x6f\x6c\x6c\x6f\x77\x20\x61\x6c\x6c\x20\x73\x79\x6d\x6c\x69\x6e" \
-"\x6b\x73\x0a\x09\x2d\x48\x09\x46\x6f\x6c\x6c\x6f\x77\x20\x73\x79" \
-"\x6d\x6c\x69\x6e\x6b\x73\x20\x6f\x6e\x20\x63\x6f\x6d\x6d\x61\x6e" \
-"\x64\x20\x6c\x69\x6e\x65\x0a\x09\x2d\x64\x20\x4e\x09\x4c\x69\x6d" \
-"\x69\x74\x20\x6f\x75\x74\x70\x75\x74\x20\x74\x6f\x20\x64\x69\x72" \
-"\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x28\x61\x6e\x64\x20\x66\x69" \
-"\x6c\x65\x73\x20\x77\x69\x74\x68\x20\x2d\x61\x29\x20\x6f\x66\x20" \
-"\x64\x65\x70\x74\x68\x20\x3c\x20\x4e\x0a\x09\x2d\x63\x09\x53\x68" \
-"\x6f\x77\x20\x67\x72\x61\x6e\x64\x20\x74\x6f\x74\x61\x6c\x0a\x09" \
-"\x2d\x6c\x09\x43\x6f\x75\x6e\x74\x20\x73\x69\x7a\x65\x73\x20\x6d" \
-"\x61\x6e\x79\x20\x74\x69\x6d\x65\x73\x20\x69\x66\x20\x68\x61\x72" \
-"\x64\x20\x6c\x69\x6e\x6b\x65\x64\x0a\x09\x2d\x73\x09\x44\x69\x73" \
-"\x70\x6c\x61\x79\x20\x6f\x6e\x6c\x79\x20\x61\x20\x74\x6f\x74\x61" \
-"\x6c\x20\x66\x6f\x72\x20\x65\x61\x63\x68\x20\x61\x72\x67\x75\x6d" \
-"\x65\x6e\x74\x0a\x09\x2d\x78\x09\x53\x6b\x69\x70\x20\x64\x69\x72" \
-"\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x6f\x6e\x20\x64\x69\x66\x66" \
-"\x65\x72\x65\x6e\x74\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d" \
-"\x73\x0a\x09\x2d\x68\x09\x53\x69\x7a\x65\x73\x20\x69\x6e\x20\x68" \
-"\x75\x6d\x61\x6e\x20\x72\x65\x61\x64\x61\x62\x6c\x65\x20\x66\x6f" \
-"\x72\x6d\x61\x74\x20\x28\x65\x2e\x67\x2e\x2c\x20\x31\x4b\x20\x32" \
-"\x34\x33\x4d\x20\x32\x47\x29\x0a\x09\x2d\x6d\x09\x53\x69\x7a\x65" \
-"\x73\x20\x69\x6e\x20\x6d\x65\x67\x61\x62\x79\x74\x65\x73\x0a\x09" \
-"\x2d\x6b\x09\x53\x69\x7a\x65\x73\x20\x69\x6e\x20\x6b\x69\x6c\x6f" \
-"\x62\x79\x74\x65\x73\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x00" \
-"\x5b\x2d\x6e\x65\x45\x5d\x20\x5b\x41\x52\x47\x5d\x2e\x2e\x2e\x0a" \
-"\x0a\x50\x72\x69\x6e\x74\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69" \
-"\x66\x69\x65\x64\x20\x41\x52\x47\x73\x20\x74\x6f\x20\x73\x74\x64" \
-"\x6f\x75\x74\x0a\x0a\x09\x2d\x6e\x09\x53\x75\x70\x70\x72\x65\x73" \
-"\x73\x20\x74\x72\x61\x69\x6c\x69\x6e\x67\x20\x6e\x65\x77\x6c\x69" \
-"\x6e\x65\x0a\x09\x2d\x65\x09\x49\x6e\x74\x65\x72\x70\x72\x65\x74" \
-"\x20\x62\x61\x63\x6b\x73\x6c\x61\x73\x68\x20\x65\x73\x63\x61\x70" \
-"\x65\x73\x20\x28\x69\x2e\x65\x2e\x2c\x20\x5c\x74\x3d\x74\x61\x62" \
-"\x29\x0a\x09\x2d\x45\x09\x44\x6f\x6e\x27\x74\x20\x69\x6e\x74\x65" \
-"\x72\x70\x72\x65\x74\x20\x62\x61\x63\x6b\x73\x6c\x61\x73\x68\x20" \
-"\x65\x73\x63\x61\x70\x65\x73\x20\x28\x64\x65\x66\x61\x75\x6c\x74" \
-"\x29\x00\x00\x08\x00\x5b\x2d\x69\x75\x5d\x20\x5b\x2d\x5d\x20\x5b" \
-"\x6e\x61\x6d\x65\x3d\x76\x61\x6c\x75\x65\x5d\x2e\x2e\x2e\x20\x5b" \
-"\x50\x52\x4f\x47\x20\x41\x52\x47\x53\x5d\x0a\x0a\x50\x72\x69\x6e" \
-"\x74\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x65\x6e" \
-"\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x20\x6f\x72\x20\x72\x75\x6e" \
-"\x20\x50\x52\x4f\x47\x20\x61\x66\x74\x65\x72\x20\x73\x65\x74\x74" \
-"\x69\x6e\x67\x20\x75\x70\x0a\x74\x68\x65\x20\x73\x70\x65\x63\x69" \
-"\x66\x69\x65\x64\x20\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74" \
-"\x0a\x0a\x09\x2d\x2c\x20\x2d\x69\x09\x53\x74\x61\x72\x74\x20\x77" \
-"\x69\x74\x68\x20\x61\x6e\x20\x65\x6d\x70\x74\x79\x20\x65\x6e\x76" \
-"\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x0a\x09\x2d\x75\x09\x52\x65\x6d" \
-"\x6f\x76\x65\x20\x76\x61\x72\x69\x61\x62\x6c\x65\x20\x66\x72\x6f" \
-"\x6d\x20\x74\x68\x65\x20\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e" \
-"\x74\x00\x5b\x2d\x69\x5d\x20\x5b\x2d\x74\x20\x4e\x5d\x20\x5b\x46" \
-"\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x6f\x6e\x76\x65\x72\x74" \
-"\x20\x74\x61\x62\x73\x20\x74\x6f\x20\x73\x70\x61\x63\x65\x73\x2c" \
-"\x20\x77\x72\x69\x74\x69\x6e\x67\x20\x74\x6f\x20\x73\x74\x64\x6f" \
-"\x75\x74\x0a\x0a\x09\x2d\x69\x2c\x2d\x2d\x69\x6e\x69\x74\x69\x61" \
-"\x6c\x09\x44\x6f\x6e\x27\x74\x20\x63\x6f\x6e\x76\x65\x72\x74\x20" \
-"\x74\x61\x62\x73\x20\x61\x66\x74\x65\x72\x20\x6e\x6f\x6e\x20\x62" \
-"\x6c\x61\x6e\x6b\x73\x0a\x09\x2d\x74\x2c\x2d\x2d\x74\x61\x62\x73" \
-"\x3d\x4e\x09\x54\x61\x62\x73\x74\x6f\x70\x73\x20\x65\x76\x65\x72" \
-"\x79\x20\x4e\x20\x63\x68\x61\x72\x73\x00\x45\x58\x50\x52\x45\x53" \
-"\x53\x49\x4f\x4e\x0a\x0a\x50\x72\x69\x6e\x74\x20\x74\x68\x65\x20" \
-"\x76\x61\x6c\x75\x65\x20\x6f\x66\x20\x45\x58\x50\x52\x45\x53\x53" \
-"\x49\x4f\x4e\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x0a\x45" \
-"\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x20\x6d\x61\x79\x20\x62\x65" \
-"\x3a\x0a\x09\x41\x52\x47\x31\x20\x7c\x20\x41\x52\x47\x32\x09\x41" \
-"\x52\x47\x31\x20\x69\x66\x20\x69\x74\x20\x69\x73\x20\x6e\x65\x69" \
-"\x74\x68\x65\x72\x20\x6e\x75\x6c\x6c\x20\x6e\x6f\x72\x20\x30\x2c" \
-"\x20\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x20\x41\x52\x47\x32\x0a" \
-"\x09\x41\x52\x47\x31\x20\x26\x20\x41\x52\x47\x32\x09\x41\x52\x47" \
-"\x31\x20\x69\x66\x20\x6e\x65\x69\x74\x68\x65\x72\x20\x61\x72\x67" \
-"\x75\x6d\x65\x6e\x74\x20\x69\x73\x20\x6e\x75\x6c\x6c\x20\x6f\x72" \
-"\x20\x30\x2c\x20\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x20\x30\x0a" \
-"\x09\x41\x52\x47\x31\x20\x3c\x20\x41\x52\x47\x32\x09\x31\x20\x69" \
-"\x66\x20\x41\x52\x47\x31\x20\x69\x73\x20\x6c\x65\x73\x73\x20\x74" \
-"\x68\x61\x6e\x20\x41\x52\x47\x32\x2c\x20\x65\x6c\x73\x65\x20\x30" \
-"\x2e\x20\x53\x69\x6d\x69\x6c\x61\x72\x6c\x79\x3a\x0a\x09\x41\x52" \
-"\x47\x31\x20\x3c\x3d\x20\x41\x52\x47\x32\x0a\x09\x41\x52\x47\x31" \
-"\x20\x3d\x20\x41\x52\x47\x32\x0a\x09\x41\x52\x47\x31\x20\x21\x3d" \
-"\x20\x41\x52\x47\x32\x0a\x09\x41\x52\x47\x31\x20\x3e\x3d\x20\x41" \
-"\x52\x47\x32\x0a\x09\x41\x52\x47\x31\x20\x3e\x20\x41\x52\x47\x32" \
-"\x0a\x09\x41\x52\x47\x31\x20\x2b\x20\x41\x52\x47\x32\x09\x53\x75" \
-"\x6d\x20\x6f\x66\x20\x41\x52\x47\x31\x20\x61\x6e\x64\x20\x41\x52" \
-"\x47\x32\x2e\x20\x53\x69\x6d\x69\x6c\x61\x72\x6c\x79\x3a\x0a\x09" \
-"\x41\x52\x47\x31\x20\x2d\x20\x41\x52\x47\x32\x0a\x09\x41\x52\x47" \
-"\x31\x20\x2a\x20\x41\x52\x47\x32\x0a\x09\x41\x52\x47\x31\x20\x2f" \
-"\x20\x41\x52\x47\x32\x0a\x09\x41\x52\x47\x31\x20\x25\x20\x41\x52" \
-"\x47\x32\x0a\x09\x53\x54\x52\x49\x4e\x47\x20\x3a\x20\x52\x45\x47" \
-"\x45\x58\x50\x09\x09\x41\x6e\x63\x68\x6f\x72\x65\x64\x20\x70\x61" \
-"\x74\x74\x65\x72\x6e\x20\x6d\x61\x74\x63\x68\x20\x6f\x66\x20\x52" \
-"\x45\x47\x45\x58\x50\x20\x69\x6e\x20\x53\x54\x52\x49\x4e\x47\x0a" \
-"\x09\x6d\x61\x74\x63\x68\x20\x53\x54\x52\x49\x4e\x47\x20\x52\x45" \
-"\x47\x45\x58\x50\x09\x53\x61\x6d\x65\x20\x61\x73\x20\x53\x54\x52" \
-"\x49\x4e\x47\x20\x3a\x20\x52\x45\x47\x45\x58\x50\x0a\x09\x73\x75" \
-"\x62\x73\x74\x72\x20\x53\x54\x52\x49\x4e\x47\x20\x50\x4f\x53\x20" \
-"\x4c\x45\x4e\x47\x54\x48\x20\x53\x75\x62\x73\x74\x72\x69\x6e\x67" \
-"\x20\x6f\x66\x20\x53\x54\x52\x49\x4e\x47\x2c\x20\x50\x4f\x53\x20" \
-"\x63\x6f\x75\x6e\x74\x65\x64\x20\x66\x72\x6f\x6d\x20\x31\x0a\x09" \
-"\x69\x6e\x64\x65\x78\x20\x53\x54\x52\x49\x4e\x47\x20\x43\x48\x41" \
-"\x52\x53\x09\x49\x6e\x64\x65\x78\x20\x69\x6e\x20\x53\x54\x52\x49" \
-"\x4e\x47\x20\x77\x68\x65\x72\x65\x20\x61\x6e\x79\x20\x43\x48\x41" \
-"\x52\x53\x20\x69\x73\x20\x66\x6f\x75\x6e\x64\x2c\x20\x6f\x72\x20" \
-"\x30\x0a\x09\x6c\x65\x6e\x67\x74\x68\x20\x53\x54\x52\x49\x4e\x47" \
-"\x09\x09\x4c\x65\x6e\x67\x74\x68\x20\x6f\x66\x20\x53\x54\x52\x49" \
-"\x4e\x47\x0a\x09\x71\x75\x6f\x74\x65\x20\x54\x4f\x4b\x45\x4e\x09" \
-"\x09\x49\x6e\x74\x65\x72\x70\x72\x65\x74\x20\x54\x4f\x4b\x45\x4e" \
-"\x20\x61\x73\x20\x61\x20\x73\x74\x72\x69\x6e\x67\x2c\x20\x65\x76" \
-"\x65\x6e\x20\x69\x66\x0a\x09\x09\x09\x09\x69\x74\x20\x69\x73\x20" \
-"\x61\x20\x6b\x65\x79\x77\x6f\x72\x64\x20\x6c\x69\x6b\x65\x20\x27" \
-"\x6d\x61\x74\x63\x68\x27\x20\x6f\x72\x20\x61\x6e\x0a\x09\x09\x09" \
-"\x09\x6f\x70\x65\x72\x61\x74\x6f\x72\x20\x6c\x69\x6b\x65\x20\x27" \
-"\x2f\x27\x0a\x09\x28\x45\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x29" \
-"\x09\x09\x56\x61\x6c\x75\x65\x20\x6f\x66\x20\x45\x58\x50\x52\x45" \
-"\x53\x53\x49\x4f\x4e\x0a\x0a\x42\x65\x77\x61\x72\x65\x20\x74\x68" \
-"\x61\x74\x20\x6d\x61\x6e\x79\x20\x6f\x70\x65\x72\x61\x74\x6f\x72" \
-"\x73\x20\x6e\x65\x65\x64\x20\x74\x6f\x20\x62\x65\x20\x65\x73\x63" \
-"\x61\x70\x65\x64\x20\x6f\x72\x20\x71\x75\x6f\x74\x65\x64\x20\x66" \
-"\x6f\x72\x20\x73\x68\x65\x6c\x6c\x73\x2e\x0a\x43\x6f\x6d\x70\x61" \
-"\x72\x69\x73\x6f\x6e\x73\x20\x61\x72\x65\x20\x61\x72\x69\x74\x68" \
-"\x6d\x65\x74\x69\x63\x20\x69\x66\x20\x62\x6f\x74\x68\x20\x41\x52" \
-"\x47\x73\x20\x61\x72\x65\x20\x6e\x75\x6d\x62\x65\x72\x73\x2c\x20" \
-"\x65\x6c\x73\x65\x0a\x6c\x65\x78\x69\x63\x6f\x67\x72\x61\x70\x68" \
-"\x69\x63\x61\x6c\x2e\x20\x50\x61\x74\x74\x65\x72\x6e\x20\x6d\x61" \
-"\x74\x63\x68\x65\x73\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65" \
-"\x20\x73\x74\x72\x69\x6e\x67\x20\x6d\x61\x74\x63\x68\x65\x64\x20" \
-"\x62\x65\x74\x77\x65\x65\x6e\x0a\x5c\x28\x20\x61\x6e\x64\x20\x5c" \
-"\x29\x20\x6f\x72\x20\x6e\x75\x6c\x6c\x3b\x20\x69\x66\x20\x5c\x28" \
-"\x20\x61\x6e\x64\x20\x5c\x29\x20\x61\x72\x65\x20\x6e\x6f\x74\x20" \
-"\x75\x73\x65\x64\x2c\x20\x74\x68\x65\x79\x20\x72\x65\x74\x75\x72" \
-"\x6e\x20\x74\x68\x65\x20\x6e\x75\x6d\x62\x65\x72\x0a\x6f\x66\x20" \
-"\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x20\x6d\x61\x74\x63\x68" \
-"\x65\x64\x20\x6f\x72\x20\x30\x2e\x00\x0a\x0a\x52\x65\x74\x75\x72" \
-"\x6e\x20\x61\x6e\x20\x65\x78\x69\x74\x20\x63\x6f\x64\x65\x20\x6f" \
-"\x66\x20\x46\x41\x4c\x53\x45\x20\x28\x31\x29\x00\x2d\x73\x20\x49" \
-"\x4d\x47\x46\x49\x4c\x45\x20\x5b\x2d\x63\x5d\x20\x5b\x2d\x64\x20" \
-"\x44\x45\x56\x5d\x20\x5b\x2d\x69\x20\x49\x4e\x49\x46\x49\x4c\x45" \
-"\x5d\x20\x5b\x2d\x66\x20\x43\x4d\x44\x5d\x0a\x0a\x09\x2d\x73\x09" \
-"\x49\x6d\x61\x67\x65\x0a\x09\x2d\x63\x09\x48\x69\x64\x65\x20\x63" \
-"\x75\x72\x73\x6f\x72\x0a\x09\x2d\x64\x09\x46\x72\x61\x6d\x65\x62" \
-"\x75\x66\x66\x65\x72\x20\x64\x65\x76\x69\x63\x65\x20\x28\x64\x65" \
-"\x66\x61\x75\x6c\x74\x20\x2f\x64\x65\x76\x2f\x66\x62\x30\x29\x0a" \
-"\x09\x2d\x69\x09\x43\x6f\x6e\x66\x69\x67\x20\x66\x69\x6c\x65\x20" \
-"\x28\x76\x61\x72\x3d\x76\x61\x6c\x75\x65\x29\x3a\x0a\x09\x09\x09" \
-"\x42\x41\x52\x5f\x4c\x45\x46\x54\x2c\x42\x41\x52\x5f\x54\x4f\x50" \
-"\x2c\x42\x41\x52\x5f\x57\x49\x44\x54\x48\x2c\x42\x41\x52\x5f\x48" \
-"\x45\x49\x47\x48\x54\x0a\x09\x09\x09\x42\x41\x52\x5f\x52\x2c\x42" \
-"\x41\x52\x5f\x47\x2c\x42\x41\x52\x5f\x42\x0a\x09\x2d\x66\x09\x43" \
-"\x6f\x6e\x74\x72\x6f\x6c\x20\x70\x69\x70\x65\x20\x28\x65\x6c\x73" \
-"\x65\x20\x65\x78\x69\x74\x20\x61\x66\x74\x65\x72\x20\x64\x72\x61" \
-"\x77\x69\x6e\x67\x20\x69\x6d\x61\x67\x65\x29\x0a\x09\x09\x09\x63" \
-"\x6f\x6d\x6d\x61\x6e\x64\x73\x3a\x20\x27\x4e\x4e\x27\x20\x28\x25" \
-"\x20\x66\x6f\x72\x20\x70\x72\x6f\x67\x72\x65\x73\x73\x20\x62\x61" \
-"\x72\x29\x20\x6f\x72\x20\x27\x65\x78\x69\x74\x27\x00\x5b\x2d\x75" \
-"\x6c\x5d\x20\x5b\x2d\x43\x20\x43\x59\x4c\x49\x4e\x44\x45\x52\x53" \
-"\x5d\x20\x5b\x2d\x48\x20\x48\x45\x41\x44\x53\x5d\x20\x5b\x2d\x53" \
-"\x20\x53\x45\x43\x54\x4f\x52\x53\x5d\x20\x5b\x2d\x62\x20\x53\x53" \
-"\x5a\x5d\x20\x44\x49\x53\x4b\x0a\x0a\x43\x68\x61\x6e\x67\x65\x20" \
-"\x70\x61\x72\x74\x69\x74\x69\x6f\x6e\x20\x74\x61\x62\x6c\x65\x0a" \
-"\x0a\x09\x2d\x75\x09\x09\x53\x74\x61\x72\x74\x20\x61\x6e\x64\x20" \
-"\x45\x6e\x64\x20\x61\x72\x65\x20\x69\x6e\x20\x73\x65\x63\x74\x6f" \
-"\x72\x73\x20\x28\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x63" \
-"\x79\x6c\x69\x6e\x64\x65\x72\x73\x29\x0a\x09\x2d\x6c\x09\x09\x53" \
-"\x68\x6f\x77\x20\x70\x61\x72\x74\x69\x74\x69\x6f\x6e\x20\x74\x61" \
-"\x62\x6c\x65\x20\x66\x6f\x72\x20\x65\x61\x63\x68\x20\x44\x49\x53" \
-"\x4b\x2c\x20\x74\x68\x65\x6e\x20\x65\x78\x69\x74\x0a\x09\x2d\x62" \
-"\x20\x32\x30\x34\x38\x09\x09\x28\x66\x6f\x72\x20\x63\x65\x72\x74" \
-"\x61\x69\x6e\x20\x4d\x4f\x20\x64\x69\x73\x6b\x73\x29\x20\x75\x73" \
-"\x65\x20\x32\x30\x34\x38\x2d\x62\x79\x74\x65\x20\x73\x65\x63\x74" \
-"\x6f\x72\x73\x0a\x09\x2d\x43\x20\x43\x59\x4c\x49\x4e\x44\x45\x52" \
-"\x53\x09\x53\x65\x74\x20\x6e\x75\x6d\x62\x65\x72\x20\x6f\x66\x20" \
-"\x63\x79\x6c\x69\x6e\x64\x65\x72\x73\x2f\x68\x65\x61\x64\x73\x2f" \
-"\x73\x65\x63\x74\x6f\x72\x73\x0a\x09\x2d\x48\x20\x48\x45\x41\x44" \
-"\x53\x0a\x09\x2d\x53\x20\x53\x45\x43\x54\x4f\x52\x53\x00\x08\x00" \
-"\x5b\x50\x41\x54\x48\x5d\x2e\x2e\x2e\x20\x5b\x4f\x50\x54\x49\x4f" \
-"\x4e\x53\x5d\x20\x5b\x41\x43\x54\x49\x4f\x4e\x53\x5d\x0a\x0a\x53" \
-"\x65\x61\x72\x63\x68\x20\x66\x6f\x72\x20\x66\x69\x6c\x65\x73\x20" \
-"\x61\x6e\x64\x20\x70\x65\x72\x66\x6f\x72\x6d\x20\x61\x63\x74\x69" \
-"\x6f\x6e\x73\x20\x6f\x6e\x20\x74\x68\x65\x6d\x2e\x0a\x46\x69\x72" \
-"\x73\x74\x20\x66\x61\x69\x6c\x65\x64\x20\x61\x63\x74\x69\x6f\x6e" \
-"\x20\x73\x74\x6f\x70\x73\x20\x70\x72\x6f\x63\x65\x73\x73\x69\x6e" \
-"\x67\x20\x6f\x66\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x66\x69\x6c" \
-"\x65\x2e\x0a\x44\x65\x66\x61\x75\x6c\x74\x73\x3a\x20\x50\x41\x54" \
-"\x48\x20\x69\x73\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x64\x69\x72" \
-"\x65\x63\x74\x6f\x72\x79\x2c\x20\x61\x63\x74\x69\x6f\x6e\x20\x69" \
-"\x73\x20\x27\x2d\x70\x72\x69\x6e\x74\x27\x0a\x0a\x09\x2d\x66\x6f" \
-"\x6c\x6c\x6f\x77\x09\x09\x46\x6f\x6c\x6c\x6f\x77\x20\x73\x79\x6d" \
-"\x6c\x69\x6e\x6b\x73\x0a\x09\x2d\x78\x64\x65\x76\x09\x09\x44\x6f" \
-"\x6e\x27\x74\x20\x64\x65\x73\x63\x65\x6e\x64\x20\x64\x69\x72\x65" \
-"\x63\x74\x6f\x72\x69\x65\x73\x20\x6f\x6e\x20\x6f\x74\x68\x65\x72" \
-"\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x73\x0a\x09\x2d\x6d" \
-"\x61\x78\x64\x65\x70\x74\x68\x20\x4e\x09\x44\x65\x73\x63\x65\x6e" \
-"\x64\x20\x61\x74\x20\x6d\x6f\x73\x74\x20\x4e\x20\x6c\x65\x76\x65" \
-"\x6c\x73\x2e\x20\x2d\x6d\x61\x78\x64\x65\x70\x74\x68\x20\x30\x20" \
-"\x61\x70\x70\x6c\x69\x65\x73\x0a\x09\x09\x09\x61\x63\x74\x69\x6f" \
-"\x6e\x73\x20\x74\x6f\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6c\x69" \
-"\x6e\x65\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x20\x6f\x6e\x6c" \
-"\x79\x0a\x09\x2d\x6d\x69\x6e\x64\x65\x70\x74\x68\x20\x4e\x09\x44" \
-"\x6f\x6e\x27\x74\x20\x61\x63\x74\x20\x6f\x6e\x20\x66\x69\x72\x73" \
-"\x74\x20\x4e\x20\x6c\x65\x76\x65\x6c\x73\x0a\x09\x2d\x64\x65\x70" \
-"\x74\x68\x09\x09\x41\x63\x74\x20\x6f\x6e\x20\x64\x69\x72\x65\x63" \
-"\x74\x6f\x72\x79\x20\x2a\x61\x66\x74\x65\x72\x2a\x20\x74\x72\x61" \
-"\x76\x65\x72\x73\x69\x6e\x67\x20\x69\x74\x0a\x0a\x41\x63\x74\x69" \
-"\x6f\x6e\x73\x3a\x0a\x09\x28\x20\x41\x43\x54\x49\x4f\x4e\x53\x20" \
-"\x29\x09\x47\x72\x6f\x75\x70\x20\x61\x63\x74\x69\x6f\x6e\x73\x20" \
-"\x66\x6f\x72\x20\x2d\x6f\x20\x2f\x20\x2d\x61\x0a\x09\x21\x20\x41" \
-"\x43\x54\x09\x09\x49\x6e\x76\x65\x72\x74\x20\x41\x43\x54\x27\x73" \
-"\x20\x73\x75\x63\x63\x65\x73\x73\x2f\x66\x61\x69\x6c\x75\x72\x65" \
-"\x0a\x09\x41\x43\x54\x31\x20\x5b\x2d\x61\x5d\x20\x41\x43\x54\x32" \
-"\x09\x49\x66\x20\x41\x43\x54\x31\x20\x66\x61\x69\x6c\x73\x2c\x20" \
-"\x73\x74\x6f\x70\x2c\x20\x65\x6c\x73\x65\x20\x64\x6f\x20\x41\x43" \
-"\x54\x32\x0a\x09\x41\x43\x54\x31\x20\x2d\x6f\x20\x41\x43\x54\x32" \
-"\x09\x49\x66\x20\x41\x43\x54\x31\x20\x73\x75\x63\x63\x65\x65\x64" \
-"\x73\x2c\x20\x73\x74\x6f\x70\x2c\x20\x65\x6c\x73\x65\x20\x64\x6f" \
-"\x20\x41\x43\x54\x32\x0a\x09\x09\x09\x4e\x6f\x74\x65\x3a\x20\x2d" \
-"\x61\x20\x68\x61\x73\x20\x68\x69\x67\x68\x65\x72\x20\x70\x72\x69" \
-"\x6f\x72\x69\x74\x79\x20\x74\x68\x61\x6e\x20\x2d\x6f\x0a\x09\x2d" \
-"\x6e\x61\x6d\x65\x20\x50\x41\x54\x54\x45\x52\x4e\x09\x4d\x61\x74" \
-"\x63\x68\x20\x66\x69\x6c\x65\x20\x6e\x61\x6d\x65\x20\x28\x77\x2f" \
-"\x6f\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x6e\x61\x6d\x65" \
-"\x29\x20\x74\x6f\x20\x50\x41\x54\x54\x45\x52\x4e\x0a\x09\x2d\x69" \
-"\x6e\x61\x6d\x65\x20\x50\x41\x54\x54\x45\x52\x4e\x09\x43\x61\x73" \
-"\x65\x20\x69\x6e\x73\x65\x6e\x73\x69\x74\x69\x76\x65\x20\x2d\x6e" \
-"\x61\x6d\x65\x0a\x09\x2d\x70\x61\x74\x68\x20\x50\x41\x54\x54\x45" \
-"\x52\x4e\x09\x4d\x61\x74\x63\x68\x20\x70\x61\x74\x68\x20\x74\x6f" \
-"\x20\x50\x41\x54\x54\x45\x52\x4e\x0a\x09\x2d\x69\x70\x61\x74\x68" \
-"\x20\x50\x41\x54\x54\x45\x52\x4e\x09\x43\x61\x73\x65\x20\x69\x6e" \
-"\x73\x65\x6e\x73\x69\x74\x69\x76\x65\x20\x2d\x70\x61\x74\x68\x0a" \
-"\x09\x2d\x72\x65\x67\x65\x78\x20\x50\x41\x54\x54\x45\x52\x4e\x09" \
-"\x4d\x61\x74\x63\x68\x20\x70\x61\x74\x68\x20\x74\x6f\x20\x72\x65" \
-"\x67\x65\x78\x20\x50\x41\x54\x54\x45\x52\x4e\x0a\x09\x2d\x74\x79" \
-"\x70\x65\x20\x58\x09\x09\x46\x69\x6c\x65\x20\x74\x79\x70\x65\x20" \
-"\x69\x73\x20\x58\x20\x28\x6f\x6e\x65\x20\x6f\x66\x3a\x20\x66\x2c" \
-"\x64\x2c\x6c\x2c\x62\x2c\x63\x2c\x2e\x2e\x2e\x29\x0a\x09\x2d\x70" \
-"\x65\x72\x6d\x20\x4d\x41\x53\x4b\x09\x41\x74\x20\x6c\x65\x61\x73" \
-"\x74\x20\x6f\x6e\x65\x20\x6d\x61\x73\x6b\x20\x62\x69\x74\x20\x28" \
-"\x2b\x4d\x41\x53\x4b\x29\x2c\x20\x61\x6c\x6c\x20\x62\x69\x74\x73" \
-"\x20\x28\x2d\x4d\x41\x53\x4b\x29\x2c\x0a\x09\x09\x09\x6f\x72\x20" \
-"\x65\x78\x61\x63\x74\x6c\x79\x20\x4d\x41\x53\x4b\x20\x62\x69\x74" \
-"\x73\x20\x61\x72\x65\x20\x73\x65\x74\x20\x69\x6e\x20\x66\x69\x6c" \
-"\x65\x27\x73\x20\x6d\x6f\x64\x65\x0a\x09\x2d\x6d\x74\x69\x6d\x65" \
-"\x20\x44\x41\x59\x53\x09\x6d\x74\x69\x6d\x65\x20\x69\x73\x20\x67" \
-"\x72\x65\x61\x74\x65\x72\x20\x74\x68\x61\x6e\x20\x28\x2b\x4e\x29" \
-"\x2c\x20\x6c\x65\x73\x73\x20\x74\x68\x61\x6e\x20\x28\x2d\x4e\x29" \
-"\x2c\x0a\x09\x09\x09\x6f\x72\x20\x65\x78\x61\x63\x74\x6c\x79\x20" \
-"\x4e\x20\x64\x61\x79\x73\x20\x69\x6e\x20\x74\x68\x65\x20\x70\x61" \
-"\x73\x74\x0a\x09\x2d\x6d\x6d\x69\x6e\x20\x4d\x49\x4e\x53\x09\x6d" \
-"\x74\x69\x6d\x65\x20\x69\x73\x20\x67\x72\x65\x61\x74\x65\x72\x20" \
-"\x74\x68\x61\x6e\x20\x28\x2b\x4e\x29\x2c\x20\x6c\x65\x73\x73\x20" \
-"\x74\x68\x61\x6e\x20\x28\x2d\x4e\x29\x2c\x0a\x09\x09\x09\x6f\x72" \
-"\x20\x65\x78\x61\x63\x74\x6c\x79\x20\x4e\x20\x6d\x69\x6e\x75\x74" \
-"\x65\x73\x20\x69\x6e\x20\x74\x68\x65\x20\x70\x61\x73\x74\x0a\x09" \
-"\x2d\x6e\x65\x77\x65\x72\x20\x46\x49\x4c\x45\x09\x6d\x74\x69\x6d" \
-"\x65\x20\x69\x73\x20\x6d\x6f\x72\x65\x20\x72\x65\x63\x65\x6e\x74" \
-"\x20\x74\x68\x61\x6e\x20\x46\x49\x4c\x45\x27\x73\x0a\x09\x2d\x75" \
-"\x73\x65\x72\x20\x4e\x41\x4d\x45\x2f\x49\x44\x09\x46\x69\x6c\x65" \
-"\x20\x69\x73\x20\x6f\x77\x6e\x65\x64\x20\x62\x79\x20\x67\x69\x76" \
-"\x65\x6e\x20\x75\x73\x65\x72\x0a\x09\x2d\x67\x72\x6f\x75\x70\x20" \
-"\x4e\x41\x4d\x45\x2f\x49\x44\x09\x46\x69\x6c\x65\x20\x69\x73\x20" \
-"\x6f\x77\x6e\x65\x64\x20\x62\x79\x20\x67\x69\x76\x65\x6e\x20\x67" \
-"\x72\x6f\x75\x70\x0a\x09\x2d\x73\x69\x7a\x65\x20\x4e\x5b\x62\x63" \
-"\x6b\x5d\x09\x46\x69\x6c\x65\x20\x73\x69\x7a\x65\x20\x69\x73\x20" \
-"\x4e\x20\x28\x63\x3a\x62\x79\x74\x65\x73\x2c\x6b\x3a\x6b\x62\x79" \
-"\x74\x65\x73\x2c\x62\x3a\x35\x31\x32\x20\x62\x79\x74\x65\x73\x28" \
-"\x64\x65\x66\x2e\x29\x29\x0a\x09\x09\x09\x2b\x2f\x2d\x4e\x3a\x20" \
-"\x66\x69\x6c\x65\x20\x73\x69\x7a\x65\x20\x69\x73\x20\x62\x69\x67" \
-"\x67\x65\x72\x2f\x73\x6d\x61\x6c\x6c\x65\x72\x20\x74\x68\x61\x6e" \
-"\x20\x4e\x0a\x09\x2d\x6c\x69\x6e\x6b\x73\x20\x4e\x09\x4e\x75\x6d" \
-"\x62\x65\x72\x20\x6f\x66\x20\x6c\x69\x6e\x6b\x73\x20\x69\x73\x20" \
-"\x67\x72\x65\x61\x74\x65\x72\x20\x74\x68\x61\x6e\x20\x28\x2b\x4e" \
-"\x29\x2c\x20\x6c\x65\x73\x73\x20\x74\x68\x61\x6e\x20\x28\x2d\x4e" \
-"\x29\x2c\x0a\x09\x09\x09\x6f\x72\x20\x65\x78\x61\x63\x74\x6c\x79" \
-"\x20\x4e\x0a\x09\x2d\x70\x72\x75\x6e\x65\x09\x09\x49\x66\x20\x63" \
-"\x75\x72\x72\x65\x6e\x74\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x64" \
-"\x69\x72\x65\x63\x74\x6f\x72\x79\x2c\x20\x64\x6f\x6e\x27\x74\x20" \
-"\x64\x65\x73\x63\x65\x6e\x64\x20\x69\x6e\x74\x6f\x20\x69\x74\x0a" \
-"\x49\x66\x20\x6e\x6f\x6e\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x66" \
-"\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x61\x63\x74\x69\x6f\x6e\x73" \
-"\x20\x69\x73\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x2c\x20\x2d" \
-"\x70\x72\x69\x6e\x74\x20\x69\x73\x20\x61\x73\x73\x75\x6d\x65\x64" \
-"\x0a\x09\x2d\x70\x72\x69\x6e\x74\x09\x09\x50\x72\x69\x6e\x74\x20" \
-"\x66\x69\x6c\x65\x20\x6e\x61\x6d\x65\x0a\x09\x2d\x70\x72\x69\x6e" \
-"\x74\x30\x09\x09\x50\x72\x69\x6e\x74\x20\x66\x69\x6c\x65\x20\x6e" \
-"\x61\x6d\x65\x2c\x20\x4e\x55\x4c\x20\x74\x65\x72\x6d\x69\x6e\x61" \
-"\x74\x65\x64\x0a\x09\x2d\x65\x78\x65\x63\x20\x43\x4d\x44\x20\x41" \
-"\x52\x47\x20\x3b\x09\x52\x75\x6e\x20\x43\x4d\x44\x20\x77\x69\x74" \
-"\x68\x20\x61\x6c\x6c\x20\x69\x6e\x73\x74\x61\x6e\x63\x65\x73\x20" \
-"\x6f\x66\x20\x7b\x7d\x20\x72\x65\x70\x6c\x61\x63\x65\x64\x20\x62" \
-"\x79\x0a\x09\x09\x09\x66\x69\x6c\x65\x20\x6e\x61\x6d\x65\x2e\x20" \
-"\x46\x61\x69\x6c\x73\x20\x69\x66\x20\x43\x4d\x44\x20\x65\x78\x69" \
-"\x74\x73\x20\x77\x69\x74\x68\x20\x6e\x6f\x6e\x7a\x65\x72\x6f\x00" \
-"\x4d\x54\x44\x5f\x44\x45\x56\x49\x43\x45\x20\x4f\x46\x46\x53\x45" \
-"\x54\x20\x53\x45\x43\x54\x4f\x52\x53\x0a\x0a\x4c\x6f\x63\x6b\x20" \
-"\x70\x61\x72\x74\x20\x6f\x72\x20\x61\x6c\x6c\x20\x6f\x66\x20\x61" \
-"\x6e\x20\x4d\x54\x44\x20\x64\x65\x76\x69\x63\x65\x2e\x20\x49\x66" \
-"\x20\x53\x45\x43\x54\x4f\x52\x53\x20\x69\x73\x20\x2d\x31\x2c\x20" \
-"\x74\x68\x65\x6e\x20\x61\x6c\x6c\x20\x73\x65\x63\x74\x6f\x72\x73" \
-"\x0a\x77\x69\x6c\x6c\x20\x62\x65\x20\x6c\x6f\x63\x6b\x65\x64\x2c" \
-"\x20\x72\x65\x67\x61\x72\x64\x6c\x65\x73\x73\x20\x6f\x66\x20\x74" \
-"\x68\x65\x20\x76\x61\x6c\x75\x65\x20\x6f\x66\x20\x4f\x46\x46\x53" \
-"\x45\x54\x00\x4d\x54\x44\x5f\x44\x45\x56\x49\x43\x45\x0a\x0a\x55" \
-"\x6e\x6c\x6f\x63\x6b\x20\x61\x6e\x20\x4d\x54\x44\x20\x64\x65\x76" \
-"\x69\x63\x65\x00\x2d\x76\x20\x46\x49\x4c\x45\x20\x4d\x54\x44\x5f" \
-"\x44\x45\x56\x49\x43\x45\x0a\x0a\x43\x6f\x70\x79\x20\x61\x6e\x20" \
-"\x69\x6d\x61\x67\x65\x20\x74\x6f\x20\x4d\x54\x44\x20\x64\x65\x76" \
-"\x69\x63\x65\x0a\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73\x65" \
-"\x00\x5b\x2d\x73\x78\x75\x6e\x5d\x20\x46\x44\x7c\x7b\x46\x49\x4c" \
-"\x45\x20\x5b\x2d\x63\x5d\x20\x50\x52\x4f\x47\x20\x41\x52\x47\x53" \
-"\x7d\x0a\x0a\x5b\x55\x6e\x5d\x6c\x6f\x63\x6b\x20\x66\x69\x6c\x65" \
-"\x20\x64\x65\x73\x63\x72\x69\x70\x74\x6f\x72\x2c\x20\x6f\x72\x20" \
-"\x6c\x6f\x63\x6b\x20\x46\x49\x4c\x45\x2c\x20\x72\x75\x6e\x20\x50" \
-"\x52\x4f\x47\x0a\x0a\x09\x2d\x73\x09\x53\x68\x61\x72\x65\x64\x20" \
-"\x6c\x6f\x63\x6b\x0a\x09\x2d\x78\x09\x45\x78\x63\x6c\x75\x73\x69" \
-"\x76\x65\x20\x6c\x6f\x63\x6b\x20\x28\x64\x65\x66\x61\x75\x6c\x74" \
-"\x29\x0a\x09\x2d\x75\x09\x55\x6e\x6c\x6f\x63\x6b\x20\x46\x44\x0a" \
-"\x09\x2d\x6e\x09\x46\x61\x69\x6c\x20\x72\x61\x74\x68\x65\x72\x20" \
-"\x74\x68\x61\x6e\x20\x77\x61\x69\x74\x00\x5b\x2d\x62\x73\x5d\x20" \
-"\x5b\x2d\x77\x20\x57\x49\x44\x54\x48\x5d\x20\x5b\x46\x49\x4c\x45" \
-"\x5d\x2e\x2e\x2e\x0a\x0a\x57\x72\x61\x70\x20\x69\x6e\x70\x75\x74" \
-"\x20\x6c\x69\x6e\x65\x73\x20\x69\x6e\x20\x65\x61\x63\x68\x20\x46" \
-"\x49\x4c\x45\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x2c\x20" \
-"\x77\x72\x69\x74\x69\x6e\x67\x20\x74\x6f\x20\x73\x74\x64\x6f\x75" \
-"\x74\x0a\x0a\x09\x2d\x62\x09\x43\x6f\x75\x6e\x74\x20\x62\x79\x74" \
-"\x65\x73\x20\x72\x61\x74\x68\x65\x72\x20\x74\x68\x61\x6e\x20\x63" \
-"\x6f\x6c\x75\x6d\x6e\x73\x0a\x09\x2d\x73\x09\x42\x72\x65\x61\x6b" \
-"\x20\x61\x74\x20\x73\x70\x61\x63\x65\x73\x0a\x09\x2d\x77\x09\x55" \
-"\x73\x65\x20\x57\x49\x44\x54\x48\x20\x63\x6f\x6c\x75\x6d\x6e\x73" \
-"\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x38\x30\x00\x0a" \
-"\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x74\x68\x65\x20\x61\x6d\x6f" \
-"\x75\x6e\x74\x20\x6f\x66\x20\x66\x72\x65\x65\x20\x61\x6e\x64\x20" \
-"\x75\x73\x65\x64\x20\x73\x79\x73\x74\x65\x6d\x20\x6d\x65\x6d\x6f" \
-"\x72\x79\x00\x44\x45\x56\x49\x43\x45\x0a\x0a\x46\x72\x65\x65\x20" \
-"\x61\x6c\x6c\x20\x6d\x65\x6d\x6f\x72\x79\x20\x75\x73\x65\x64\x20" \
-"\x62\x79\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64" \
-"\x20\x72\x61\x6d\x64\x69\x73\x6b\x00\x5b\x4f\x50\x54\x49\x4f\x4e" \
-"\x53\x5d\x20\x4d\x4f\x55\x4e\x54\x50\x4f\x49\x4e\x54\x0a\x0a\x09" \
-"\x2d\x6f\x2c\x2d\x2d\x6f\x66\x66\x73\x65\x74\x3d\x4f\x46\x46\x53" \
-"\x45\x54\x09\x4f\x66\x66\x73\x65\x74\x20\x69\x6e\x20\x62\x79\x74" \
-"\x65\x73\x20\x74\x6f\x20\x64\x69\x73\x63\x61\x72\x64\x20\x66\x72" \
-"\x6f\x6d\x0a\x09\x2d\x6c\x2c\x2d\x2d\x6c\x65\x6e\x67\x74\x68\x3d" \
-"\x4c\x45\x4e\x09\x09\x42\x79\x74\x65\x73\x20\x74\x6f\x20\x64\x69" \
-"\x73\x63\x61\x72\x64\x0a\x09\x2d\x6d\x2c\x2d\x2d\x6d\x69\x6e\x69" \
-"\x6d\x75\x6d\x3d\x4d\x49\x4e\x09\x4d\x69\x6e\x69\x6d\x75\x6d\x20" \
-"\x65\x78\x74\x65\x6e\x74\x20\x6c\x65\x6e\x67\x74\x68\x0a\x09\x2d" \
-"\x76\x2c\x2d\x2d\x76\x65\x72\x62\x6f\x73\x65\x09\x09\x50\x72\x69" \
-"\x6e\x74\x20\x6e\x75\x6d\x62\x65\x72\x20\x6f\x66\x20\x64\x69\x73" \
-"\x63\x61\x72\x64\x65\x64\x20\x62\x79\x74\x65\x73\x00\x5b\x2d\x64" \
-"\x5d\x20\x46\x49\x4c\x45\x2e\x2e\x2e\x0a\x0a\x57\x72\x69\x74\x65" \
-"\x20\x66\x69\x6c\x65\x73\x27\x20\x62\x75\x66\x66\x65\x72\x65\x64" \
-"\x20\x62\x6c\x6f\x63\x6b\x73\x20\x74\x6f\x20\x64\x69\x73\x6b\x0a" \
-"\x0a\x09\x2d\x64\x09\x41\x76\x6f\x69\x64\x20\x73\x79\x6e\x63\x69" \
-"\x6e\x67\x20\x6d\x65\x74\x61\x64\x61\x74\x61\x00\x5b\x4f\x50\x54" \
-"\x49\x4f\x4e\x53\x5d\x20\x48\x4f\x53\x54\x20\x5b\x4c\x4f\x43\x41" \
-"\x4c\x5f\x46\x49\x4c\x45\x5d\x20\x52\x45\x4d\x4f\x54\x45\x5f\x46" \
-"\x49\x4c\x45\x0a\x0a\x44\x6f\x77\x6e\x6c\x6f\x61\x64\x20\x61\x20" \
-"\x66\x69\x6c\x65\x20\x76\x69\x61\x20\x46\x54\x50\x0a\x0a\x09\x2d" \
-"\x63\x2c\x2d\x2d\x63\x6f\x6e\x74\x69\x6e\x75\x65\x09\x09\x43\x6f" \
-"\x6e\x74\x69\x6e\x75\x65\x20\x70\x72\x65\x76\x69\x6f\x75\x73\x20" \
-"\x74\x72\x61\x6e\x73\x66\x65\x72\x0a\x09\x2d\x76\x2c\x2d\x2d\x76" \
-"\x65\x72\x62\x6f\x73\x65\x09\x09\x56\x65\x72\x62\x6f\x73\x65\x0a" \
-"\x09\x2d\x75\x2c\x2d\x2d\x75\x73\x65\x72\x6e\x61\x6d\x65\x20\x55" \
-"\x53\x45\x52\x09\x55\x73\x65\x72\x6e\x61\x6d\x65\x0a\x09\x2d\x70" \
-"\x2c\x2d\x2d\x70\x61\x73\x73\x77\x6f\x72\x64\x20\x50\x41\x53\x53" \
-"\x09\x50\x61\x73\x73\x77\x6f\x72\x64\x0a\x09\x2d\x50\x2c\x2d\x2d" \
-"\x70\x6f\x72\x74\x20\x4e\x55\x4d\x09\x09\x50\x6f\x72\x74\x00\x5b" \
-"\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x48\x4f\x53\x54\x20\x5b\x52" \
-"\x45\x4d\x4f\x54\x45\x5f\x46\x49\x4c\x45\x5d\x20\x4c\x4f\x43\x41" \
-"\x4c\x5f\x46\x49\x4c\x45\x0a\x0a\x55\x70\x6c\x6f\x61\x64\x20\x61" \
-"\x20\x66\x69\x6c\x65\x20\x74\x6f\x20\x61\x20\x46\x54\x50\x20\x73" \
-"\x65\x72\x76\x65\x72\x0a\x0a\x09\x2d\x76\x2c\x2d\x2d\x76\x65\x72" \
-"\x62\x6f\x73\x65\x09\x09\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d" \
-"\x75\x2c\x2d\x2d\x75\x73\x65\x72\x6e\x61\x6d\x65\x20\x55\x53\x45" \
-"\x52\x09\x55\x73\x65\x72\x6e\x61\x6d\x65\x0a\x09\x2d\x70\x2c\x2d" \
-"\x2d\x70\x61\x73\x73\x77\x6f\x72\x64\x20\x50\x41\x53\x53\x09\x50" \
-"\x61\x73\x73\x77\x6f\x72\x64\x0a\x09\x2d\x50\x2c\x2d\x2d\x70\x6f" \
-"\x72\x74\x20\x4e\x55\x4d\x09\x09\x50\x6f\x72\x74\x00\x5b\x4f\x50" \
-"\x54\x49\x4f\x4e\x53\x5d\x20\x46\x49\x4c\x45\x20\x6f\x72\x20\x50" \
-"\x4f\x52\x54\x2f\x50\x52\x4f\x54\x4f\x0a\x0a\x46\x69\x6e\x64\x20" \
-"\x70\x72\x6f\x63\x65\x73\x73\x65\x73\x20\x77\x68\x69\x63\x68\x20" \
-"\x75\x73\x65\x20\x46\x49\x4c\x45\x73\x20\x6f\x72\x20\x50\x4f\x52" \
-"\x54\x73\x0a\x0a\x09\x2d\x6d\x09\x46\x69\x6e\x64\x20\x70\x72\x6f" \
-"\x63\x65\x73\x73\x65\x73\x20\x77\x68\x69\x63\x68\x20\x75\x73\x65" \
-"\x20\x73\x61\x6d\x65\x20\x66\x73\x20\x61\x73\x20\x46\x49\x4c\x45" \
-"\x73\x0a\x09\x2d\x34\x2c\x2d\x36\x09\x53\x65\x61\x72\x63\x68\x20" \
-"\x6f\x6e\x6c\x79\x20\x49\x50\x76\x34\x2f\x49\x50\x76\x36\x20\x73" \
-"\x70\x61\x63\x65\x0a\x09\x2d\x73\x09\x44\x6f\x6e\x27\x74\x20\x64" \
-"\x69\x73\x70\x6c\x61\x79\x20\x50\x49\x44\x73\x0a\x09\x2d\x6b\x09" \
-"\x4b\x69\x6c\x6c\x20\x66\x6f\x75\x6e\x64\x20\x70\x72\x6f\x63\x65" \
-"\x73\x73\x65\x73\x0a\x09\x2d\x53\x49\x47\x4e\x41\x4c\x09\x53\x69" \
-"\x67\x6e\x61\x6c\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x28\x64\x65" \
-"\x66\x61\x75\x6c\x74\x3a\x20\x4b\x49\x4c\x4c\x29\x00\x5b\x4f\x50" \
-"\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x2d\x2d\x5d\x20\x4f\x50\x54\x53" \
-"\x54\x52\x49\x4e\x47\x20\x50\x41\x52\x41\x4d\x53\x0a\x0a\x09\x2d" \
-"\x61\x2c\x2d\x2d\x61\x6c\x74\x65\x72\x6e\x61\x74\x69\x76\x65\x09" \
-"\x09\x41\x6c\x6c\x6f\x77\x20\x6c\x6f\x6e\x67\x20\x6f\x70\x74\x69" \
-"\x6f\x6e\x73\x20\x73\x74\x61\x72\x74\x69\x6e\x67\x20\x77\x69\x74" \
-"\x68\x20\x73\x69\x6e\x67\x6c\x65\x20\x2d\x0a\x09\x2d\x6c\x2c\x2d" \
-"\x2d\x6c\x6f\x6e\x67\x6f\x70\x74\x69\x6f\x6e\x73\x3d\x4c\x4f\x50" \
-"\x54\x5b\x2c\x2e\x2e\x2e\x5d\x09\x4c\x6f\x6e\x67\x20\x6f\x70\x74" \
-"\x69\x6f\x6e\x73\x20\x74\x6f\x20\x62\x65\x20\x72\x65\x63\x6f\x67" \
-"\x6e\x69\x7a\x65\x64\x0a\x09\x2d\x6e\x2c\x2d\x2d\x6e\x61\x6d\x65" \
-"\x3d\x50\x52\x4f\x47\x4e\x41\x4d\x45\x09\x09\x54\x68\x65\x20\x6e" \
-"\x61\x6d\x65\x20\x75\x6e\x64\x65\x72\x20\x77\x68\x69\x63\x68\x20" \
-"\x65\x72\x72\x6f\x72\x73\x20\x61\x72\x65\x20\x72\x65\x70\x6f\x72" \
-"\x74\x65\x64\x0a\x09\x2d\x6f\x2c\x2d\x2d\x6f\x70\x74\x69\x6f\x6e" \
-"\x73\x3d\x4f\x50\x54\x53\x54\x52\x49\x4e\x47\x09\x09\x53\x68\x6f" \
-"\x72\x74\x20\x6f\x70\x74\x69\x6f\x6e\x73\x20\x74\x6f\x20\x62\x65" \
-"\x20\x72\x65\x63\x6f\x67\x6e\x69\x7a\x65\x64\x0a\x09\x2d\x71\x2c" \
-"\x2d\x2d\x71\x75\x69\x65\x74\x09\x09\x09\x44\x69\x73\x61\x62\x6c" \
-"\x65\x20\x65\x72\x72\x6f\x72\x20\x72\x65\x70\x6f\x72\x74\x69\x6e" \
-"\x67\x20\x62\x79\x20\x67\x65\x74\x6f\x70\x74\x28\x33\x29\x0a\x09" \
-"\x2d\x51\x2c\x2d\x2d\x71\x75\x69\x65\x74\x2d\x6f\x75\x74\x70\x75" \
-"\x74\x09\x09\x4e\x6f\x20\x6e\x6f\x72\x6d\x61\x6c\x20\x6f\x75\x74" \
-"\x70\x75\x74\x0a\x09\x2d\x73\x2c\x2d\x2d\x73\x68\x65\x6c\x6c\x3d" \
-"\x53\x48\x45\x4c\x4c\x09\x09\x53\x65\x74\x20\x73\x68\x65\x6c\x6c" \
-"\x20\x71\x75\x6f\x74\x69\x6e\x67\x20\x63\x6f\x6e\x76\x65\x6e\x74" \
-"\x69\x6f\x6e\x73\x0a\x09\x2d\x54\x2c\x2d\x2d\x74\x65\x73\x74\x09" \
-"\x09\x09\x54\x65\x73\x74\x20\x66\x6f\x72\x20\x67\x65\x74\x6f\x70" \
-"\x74\x28\x31\x29\x20\x76\x65\x72\x73\x69\x6f\x6e\x0a\x09\x2d\x75" \
-"\x2c\x2d\x2d\x75\x6e\x71\x75\x6f\x74\x65\x64\x09\x09\x09\x44\x6f" \
-"\x6e\x27\x74\x20\x71\x75\x6f\x74\x65\x20\x74\x68\x65\x20\x6f\x75" \
-"\x74\x70\x75\x74\x0a\x0a\x45\x78\x61\x6d\x70\x6c\x65\x3a\x0a\x0a" \
-"\x4f\x3d\x60\x67\x65\x74\x6f\x70\x74\x20\x2d\x6c\x20\x62\x62\x3a" \
-"\x20\x2d\x2d\x20\x61\x62\x3a\x63\x3a\x3a\x20\x22\x24\x40\x22\x60" \
-"\x20\x7c\x7c\x20\x65\x78\x69\x74\x20\x31\x0a\x65\x76\x61\x6c\x20" \
-"\x73\x65\x74\x20\x2d\x2d\x20\x22\x24\x4f\x22\x0a\x77\x68\x69\x6c" \
-"\x65\x20\x74\x72\x75\x65\x3b\x20\x64\x6f\x0a\x09\x63\x61\x73\x65" \
-"\x20\x22\x24\x31\x22\x20\x69\x6e\x0a\x09\x2d\x61\x29\x09\x65\x63" \
-"\x68\x6f\x20\x41\x3b\x20\x73\x68\x69\x66\x74\x3b\x3b\x0a\x09\x2d" \
-"\x62\x7c\x2d\x2d\x62\x62\x29\x20\x65\x63\x68\x6f\x20\x22\x42\x3a" \
-"\x27\x24\x32\x27\x22\x3b\x20\x73\x68\x69\x66\x74\x20\x32\x3b\x3b" \
-"\x0a\x09\x2d\x63\x29\x09\x63\x61\x73\x65\x20\x22\x24\x32\x22\x20" \
-"\x69\x6e\x0a\x09\x09\x22\x22\x29\x09\x65\x63\x68\x6f\x20\x43\x3b" \
-"\x20\x73\x68\x69\x66\x74\x20\x32\x3b\x3b\x0a\x09\x09\x2a\x29\x09" \
-"\x65\x63\x68\x6f\x20\x22\x43\x3a\x27\x24\x32\x27\x22\x3b\x20\x73" \
-"\x68\x69\x66\x74\x20\x32\x3b\x3b\x0a\x09\x09\x65\x73\x61\x63\x3b" \
-"\x3b\x0a\x09\x2d\x2d\x29\x09\x73\x68\x69\x66\x74\x3b\x20\x62\x72" \
-"\x65\x61\x6b\x3b\x3b\x0a\x09\x2a\x29\x09\x65\x63\x68\x6f\x20\x45" \
-"\x72\x72\x6f\x72\x3b\x20\x65\x78\x69\x74\x20\x31\x3b\x3b\x0a\x09" \
-"\x65\x73\x61\x63\x0a\x64\x6f\x6e\x65\x00\x5b\x2d\x48\x68\x6e\x6c" \
-"\x4c\x6f\x71\x76\x73\x72\x69\x77\x46\x45\x5d\x20\x5b\x2d\x6d\x20" \
-"\x4e\x5d\x20\x5b\x2d\x41\x2f\x42\x2f\x43\x20\x4e\x5d\x20\x50\x41" \
-"\x54\x54\x45\x52\x4e\x2f\x2d\x65\x20\x50\x41\x54\x54\x45\x52\x4e" \
-"\x2e\x2e\x2e\x2f\x2d\x66\x20\x46\x49\x4c\x45\x20\x5b\x46\x49\x4c" \
-"\x45\x5d\x2e\x2e\x2e\x0a\x0a\x53\x65\x61\x72\x63\x68\x20\x66\x6f" \
-"\x72\x20\x50\x41\x54\x54\x45\x52\x4e\x20\x69\x6e\x20\x46\x49\x4c" \
-"\x45\x73\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x0a\x0a\x09" \
-"\x2d\x48\x09\x41\x64\x64\x20\x27\x66\x69\x6c\x65\x6e\x61\x6d\x65" \
-"\x3a\x27\x20\x70\x72\x65\x66\x69\x78\x0a\x09\x2d\x68\x09\x44\x6f" \
-"\x20\x6e\x6f\x74\x20\x61\x64\x64\x20\x27\x66\x69\x6c\x65\x6e\x61" \
-"\x6d\x65\x3a\x27\x20\x70\x72\x65\x66\x69\x78\x0a\x09\x2d\x6e\x09" \
-"\x41\x64\x64\x20\x27\x6c\x69\x6e\x65\x5f\x6e\x6f\x3a\x27\x20\x70" \
-"\x72\x65\x66\x69\x78\x0a\x09\x2d\x6c\x09\x53\x68\x6f\x77\x20\x6f" \
-"\x6e\x6c\x79\x20\x6e\x61\x6d\x65\x73\x20\x6f\x66\x20\x66\x69\x6c" \
-"\x65\x73\x20\x74\x68\x61\x74\x20\x6d\x61\x74\x63\x68\x0a\x09\x2d" \
-"\x4c\x09\x53\x68\x6f\x77\x20\x6f\x6e\x6c\x79\x20\x6e\x61\x6d\x65" \
-"\x73\x20\x6f\x66\x20\x66\x69\x6c\x65\x73\x20\x74\x68\x61\x74\x20" \
-"\x64\x6f\x6e\x27\x74\x20\x6d\x61\x74\x63\x68\x0a\x09\x2d\x63\x09" \
-"\x53\x68\x6f\x77\x20\x6f\x6e\x6c\x79\x20\x63\x6f\x75\x6e\x74\x20" \
-"\x6f\x66\x20\x6d\x61\x74\x63\x68\x69\x6e\x67\x20\x6c\x69\x6e\x65" \
-"\x73\x0a\x09\x2d\x6f\x09\x53\x68\x6f\x77\x20\x6f\x6e\x6c\x79\x20" \
-"\x74\x68\x65\x20\x6d\x61\x74\x63\x68\x69\x6e\x67\x20\x70\x61\x72" \
-"\x74\x20\x6f\x66\x20\x6c\x69\x6e\x65\x0a\x09\x2d\x71\x09\x51\x75" \
-"\x69\x65\x74\x2e\x20\x52\x65\x74\x75\x72\x6e\x20\x30\x20\x69\x66" \
-"\x20\x50\x41\x54\x54\x45\x52\x4e\x20\x69\x73\x20\x66\x6f\x75\x6e" \
-"\x64\x2c\x20\x31\x20\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x0a\x09" \
-"\x2d\x76\x09\x53\x65\x6c\x65\x63\x74\x20\x6e\x6f\x6e\x2d\x6d\x61" \
-"\x74\x63\x68\x69\x6e\x67\x20\x6c\x69\x6e\x65\x73\x0a\x09\x2d\x73" \
-"\x09\x53\x75\x70\x70\x72\x65\x73\x73\x20\x6f\x70\x65\x6e\x20\x61" \
-"\x6e\x64\x20\x72\x65\x61\x64\x20\x65\x72\x72\x6f\x72\x73\x0a\x09" \
-"\x2d\x72\x09\x52\x65\x63\x75\x72\x73\x65\x0a\x09\x2d\x69\x09\x49" \
-"\x67\x6e\x6f\x72\x65\x20\x63\x61\x73\x65\x0a\x09\x2d\x77\x09\x4d" \
-"\x61\x74\x63\x68\x20\x77\x68\x6f\x6c\x65\x20\x77\x6f\x72\x64\x73" \
-"\x20\x6f\x6e\x6c\x79\x0a\x09\x2d\x78\x09\x4d\x61\x74\x63\x68\x20" \
-"\x77\x68\x6f\x6c\x65\x20\x6c\x69\x6e\x65\x73\x20\x6f\x6e\x6c\x79" \
-"\x0a\x09\x2d\x46\x09\x50\x41\x54\x54\x45\x52\x4e\x20\x69\x73\x20" \
-"\x61\x20\x6c\x69\x74\x65\x72\x61\x6c\x20\x28\x6e\x6f\x74\x20\x72" \
-"\x65\x67\x65\x78\x70\x29\x0a\x09\x2d\x45\x09\x50\x41\x54\x54\x45" \
-"\x52\x4e\x20\x69\x73\x20\x61\x6e\x20\x65\x78\x74\x65\x6e\x64\x65" \
-"\x64\x20\x72\x65\x67\x65\x78\x70\x0a\x09\x2d\x6d\x20\x4e\x09\x4d" \
-"\x61\x74\x63\x68\x20\x75\x70\x20\x74\x6f\x20\x4e\x20\x74\x69\x6d" \
-"\x65\x73\x20\x70\x65\x72\x20\x66\x69\x6c\x65\x0a\x09\x2d\x41\x20" \
-"\x4e\x09\x50\x72\x69\x6e\x74\x20\x4e\x20\x6c\x69\x6e\x65\x73\x20" \
-"\x6f\x66\x20\x74\x72\x61\x69\x6c\x69\x6e\x67\x20\x63\x6f\x6e\x74" \
-"\x65\x78\x74\x0a\x09\x2d\x42\x20\x4e\x09\x50\x72\x69\x6e\x74\x20" \
-"\x4e\x20\x6c\x69\x6e\x65\x73\x20\x6f\x66\x20\x6c\x65\x61\x64\x69" \
-"\x6e\x67\x20\x63\x6f\x6e\x74\x65\x78\x74\x0a\x09\x2d\x43\x20\x4e" \
-"\x09\x53\x61\x6d\x65\x20\x61\x73\x20\x27\x2d\x41\x20\x4e\x20\x2d" \
-"\x42\x20\x4e\x27\x0a\x09\x2d\x65\x20\x50\x54\x52\x4e\x09\x50\x61" \
-"\x74\x74\x65\x72\x6e\x20\x74\x6f\x20\x6d\x61\x74\x63\x68\x0a\x09" \
-"\x2d\x66\x20\x46\x49\x4c\x45\x09\x52\x65\x61\x64\x20\x70\x61\x74" \
-"\x74\x65\x72\x6e\x20\x66\x72\x6f\x6d\x20\x66\x69\x6c\x65\x00\x5b" \
-"\x55\x53\x45\x52\x5d\x0a\x0a\x50\x72\x69\x6e\x74\x20\x74\x68\x65" \
-"\x20\x67\x72\x6f\x75\x70\x20\x6d\x65\x6d\x62\x65\x72\x73\x68\x69" \
-"\x70\x73\x20\x6f\x66\x20\x55\x53\x45\x52\x20\x6f\x72\x20\x66\x6f" \
-"\x72\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x70\x72" \
-"\x6f\x63\x65\x73\x73\x00\x5b\x2d\x63\x66\x74\x5d\x20\x5b\x46\x49" \
-"\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x44\x65\x63\x6f\x6d\x70\x72\x65" \
-"\x73\x73\x20\x46\x49\x4c\x45\x73\x20\x28\x6f\x72\x20\x73\x74\x64" \
-"\x69\x6e\x29\x0a\x0a\x09\x2d\x63\x09\x57\x72\x69\x74\x65\x20\x74" \
-"\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x2d\x66\x09\x46\x6f\x72" \
-"\x63\x65\x0a\x09\x2d\x74\x09\x54\x65\x73\x74\x20\x66\x69\x6c\x65" \
-"\x20\x69\x6e\x74\x65\x67\x72\x69\x74\x79\x00\x5b\x2d\x63\x66\x64" \
-"\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x6f\x6d" \
-"\x70\x72\x65\x73\x73\x20\x46\x49\x4c\x45\x73\x20\x28\x6f\x72\x20" \
-"\x73\x74\x64\x69\x6e\x29\x0a\x0a\x09\x2d\x64\x09\x44\x65\x63\x6f" \
-"\x6d\x70\x72\x65\x73\x73\x0a\x09\x2d\x63\x09\x57\x72\x69\x74\x65" \
-"\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x2d\x66\x09\x46" \
-"\x6f\x72\x63\x65\x00\x5b\x2d\x64\x20\x44\x45\x4c\x41\x59\x5d\x20" \
-"\x5b\x2d\x6e\x5d\x20\x5b\x2d\x66\x5d\x0a\x0a\x48\x61\x6c\x74\x20" \
-"\x74\x68\x65\x20\x73\x79\x73\x74\x65\x6d\x0a\x0a\x09\x2d\x64\x20" \
-"\x53\x45\x43\x09\x44\x65\x6c\x61\x79\x20\x69\x6e\x74\x65\x72\x76" \
-"\x61\x6c\x0a\x09\x2d\x6e\x09\x44\x6f\x20\x6e\x6f\x74\x20\x73\x79" \
-"\x6e\x63\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x20\x28\x64\x6f" \
-"\x6e\x27\x74\x20\x67\x6f\x20\x74\x68\x72\x6f\x75\x67\x68\x20\x69" \
-"\x6e\x69\x74\x29\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b" \
-"\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x50\x72\x69\x6e\x74\x20" \
-"\x66\x69\x72\x73\x74\x20\x31\x30\x20\x6c\x69\x6e\x65\x73\x20\x6f" \
-"\x66\x20\x65\x61\x63\x68\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20" \
-"\x73\x74\x64\x69\x6e\x29\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74" \
-"\x2e\x0a\x57\x69\x74\x68\x20\x6d\x6f\x72\x65\x20\x74\x68\x61\x6e" \
-"\x20\x6f\x6e\x65\x20\x46\x49\x4c\x45\x2c\x20\x70\x72\x65\x63\x65" \
-"\x64\x65\x20\x65\x61\x63\x68\x20\x77\x69\x74\x68\x20\x61\x20\x66" \
-"\x69\x6c\x65\x6e\x61\x6d\x65\x20\x68\x65\x61\x64\x65\x72\x2e\x0a" \
-"\x0a\x09\x2d\x6e\x20\x4e\x5b\x6b\x62\x6d\x5d\x09\x50\x72\x69\x6e" \
-"\x74\x20\x66\x69\x72\x73\x74\x20\x4e\x20\x6c\x69\x6e\x65\x73\x0a" \
-"\x09\x2d\x63\x20\x4e\x5b\x6b\x62\x6d\x5d\x09\x50\x72\x69\x6e\x74" \
-"\x20\x66\x69\x72\x73\x74\x20\x4e\x20\x62\x79\x74\x65\x73\x0a\x09" \
-"\x2d\x71\x09\x09\x4e\x65\x76\x65\x72\x20\x70\x72\x69\x6e\x74\x20" \
-"\x68\x65\x61\x64\x65\x72\x73\x0a\x09\x2d\x76\x09\x09\x41\x6c\x77" \
-"\x61\x79\x73\x20\x70\x72\x69\x6e\x74\x20\x68\x65\x61\x64\x65\x72" \
-"\x73\x0a\x0a\x4e\x20\x6d\x61\x79\x20\x62\x65\x20\x73\x75\x66\x66" \
-"\x69\x78\x65\x64\x20\x62\x79\x20\x6b\x20\x28\x78\x31\x30\x32\x34" \
-"\x29\x2c\x20\x62\x20\x28\x78\x35\x31\x32\x29\x2c\x20\x6f\x72\x20" \
-"\x6d\x20\x28\x78\x31\x30\x32\x34\x5e\x32\x29\x2e\x00\x5b\x2d\x62" \
-"\x63\x43\x64\x65\x66\x6e\x6f\x73\x76\x78\x52\x5d\x20\x5b\x46\x49" \
-"\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20" \
-"\x46\x49\x4c\x45\x73\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29" \
-"\x20\x69\x6e\x20\x61\x20\x75\x73\x65\x72\x20\x73\x70\x65\x63\x69" \
-"\x66\x69\x65\x64\x20\x66\x6f\x72\x6d\x61\x74\x0a\x0a\x09\x2d\x62" \
-"\x09\x09\x4f\x6e\x65\x2d\x62\x79\x74\x65\x20\x6f\x63\x74\x61\x6c" \
-"\x20\x64\x69\x73\x70\x6c\x61\x79\x0a\x09\x2d\x63\x09\x09\x4f\x6e" \
-"\x65\x2d\x62\x79\x74\x65\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72" \
-"\x20\x64\x69\x73\x70\x6c\x61\x79\x0a\x09\x2d\x43\x09\x09\x43\x61" \
-"\x6e\x6f\x6e\x69\x63\x61\x6c\x20\x68\x65\x78\x2b\x41\x53\x43\x49" \
-"\x49\x2c\x20\x31\x36\x20\x62\x79\x74\x65\x73\x20\x70\x65\x72\x20" \
-"\x6c\x69\x6e\x65\x0a\x09\x2d\x64\x09\x09\x54\x77\x6f\x2d\x62\x79" \
-"\x74\x65\x20\x64\x65\x63\x69\x6d\x61\x6c\x20\x64\x69\x73\x70\x6c" \
-"\x61\x79\x0a\x09\x2d\x65\x20\x46\x4f\x52\x4d\x41\x54\x5f\x53\x54" \
-"\x52\x49\x4e\x47\x0a\x09\x2d\x66\x20\x46\x4f\x52\x4d\x41\x54\x5f" \
-"\x46\x49\x4c\x45\x0a\x09\x2d\x6e\x20\x4c\x45\x4e\x47\x54\x48\x09" \
-"\x49\x6e\x74\x65\x72\x70\x72\x65\x74\x20\x6f\x6e\x6c\x79\x20\x4c" \
-"\x45\x4e\x47\x54\x48\x20\x62\x79\x74\x65\x73\x20\x6f\x66\x20\x69" \
-"\x6e\x70\x75\x74\x0a\x09\x2d\x6f\x09\x09\x54\x77\x6f\x2d\x62\x79" \
-"\x74\x65\x20\x6f\x63\x74\x61\x6c\x20\x64\x69\x73\x70\x6c\x61\x79" \
-"\x0a\x09\x2d\x73\x20\x4f\x46\x46\x53\x45\x54\x09\x53\x6b\x69\x70" \
-"\x20\x4f\x46\x46\x53\x45\x54\x20\x62\x79\x74\x65\x73\x0a\x09\x2d" \
-"\x76\x09\x09\x44\x69\x73\x70\x6c\x61\x79\x20\x61\x6c\x6c\x20\x69" \
-"\x6e\x70\x75\x74\x20\x64\x61\x74\x61\x0a\x09\x2d\x78\x09\x09\x54" \
-"\x77\x6f\x2d\x62\x79\x74\x65\x20\x68\x65\x78\x61\x64\x65\x63\x69" \
-"\x6d\x61\x6c\x20\x64\x69\x73\x70\x6c\x61\x79\x0a\x09\x2d\x52\x09" \
-"\x09\x52\x65\x76\x65\x72\x73\x65\x20\x6f\x66\x20\x27\x68\x65\x78" \
-"\x64\x75\x6d\x70\x20\x2d\x43\x76\x27\x00\x5b\x4f\x50\x54\x49\x4f" \
-"\x4e\x53\x5d\x20\x5b\x55\x53\x45\x52\x5d\x0a\x0a\x50\x72\x69\x6e" \
-"\x74\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x20\x61\x62" \
-"\x6f\x75\x74\x20\x55\x53\x45\x52\x20\x6f\x72\x20\x74\x68\x65\x20" \
-"\x63\x75\x72\x72\x65\x6e\x74\x20\x75\x73\x65\x72\x0a\x0a\x09\x2d" \
-"\x75\x09\x55\x73\x65\x72\x20\x49\x44\x0a\x09\x2d\x67\x09\x47\x72" \
-"\x6f\x75\x70\x20\x49\x44\x0a\x09\x2d\x47\x09\x53\x75\x70\x70\x6c" \
-"\x65\x6d\x65\x6e\x74\x61\x72\x79\x20\x67\x72\x6f\x75\x70\x20\x49" \
-"\x44\x73\x0a\x09\x2d\x6e\x09\x50\x72\x69\x6e\x74\x20\x6e\x61\x6d" \
-"\x65\x73\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x6e\x75" \
-"\x6d\x62\x65\x72\x73\x0a\x09\x2d\x72\x09\x50\x72\x69\x6e\x74\x20" \
-"\x72\x65\x61\x6c\x20\x49\x44\x20\x69\x6e\x73\x74\x65\x61\x64\x20" \
-"\x6f\x66\x20\x65\x66\x66\x65\x63\x74\x69\x76\x65\x20\x49\x44\x00" \
-"\x5b\x2d\x61\x5d\x20\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x20\x5b" \
-"\x61\x64\x64\x72\x65\x73\x73\x5d\x0a\x0a\x43\x6f\x6e\x66\x69\x67" \
-"\x75\x72\x65\x20\x61\x20\x6e\x65\x74\x77\x6f\x72\x6b\x20\x69\x6e" \
-"\x74\x65\x72\x66\x61\x63\x65\x0a\x0a\x09\x5b\x61\x64\x64\x20\x41" \
-"\x44\x44\x52\x45\x53\x53\x5b\x2f\x50\x52\x45\x46\x49\x58\x4c\x45" \
-"\x4e\x5d\x5d\x0a\x09\x5b\x64\x65\x6c\x20\x41\x44\x44\x52\x45\x53" \
-"\x53\x5b\x2f\x50\x52\x45\x46\x49\x58\x4c\x45\x4e\x5d\x5d\x0a\x09" \
-"\x5b\x5b\x2d\x5d\x62\x72\x6f\x61\x64\x63\x61\x73\x74\x20\x5b\x41" \
-"\x44\x44\x52\x45\x53\x53\x5d\x5d\x20\x5b\x5b\x2d\x5d\x70\x6f\x69" \
-"\x6e\x74\x6f\x70\x6f\x69\x6e\x74\x20\x5b\x41\x44\x44\x52\x45\x53" \
-"\x53\x5d\x5d\x0a\x09\x5b\x6e\x65\x74\x6d\x61\x73\x6b\x20\x41\x44" \
-"\x44\x52\x45\x53\x53\x5d\x20\x5b\x64\x73\x74\x61\x64\x64\x72\x20" \
-"\x41\x44\x44\x52\x45\x53\x53\x5d\x0a\x09\x5b\x68\x77\x20\x65\x74" \
-"\x68\x65\x72\x20\x41\x44\x44\x52\x45\x53\x53\x5d\x20\x5b\x6d\x65" \
-"\x74\x72\x69\x63\x20\x4e\x4e\x5d\x20\x5b\x6d\x74\x75\x20\x4e\x4e" \
-"\x5d\x0a\x09\x5b\x5b\x2d\x5d\x74\x72\x61\x69\x6c\x65\x72\x73\x5d" \
-"\x20\x5b\x5b\x2d\x5d\x61\x72\x70\x5d\x20\x5b\x5b\x2d\x5d\x61\x6c" \
-"\x6c\x6d\x75\x6c\x74\x69\x5d\x0a\x09\x5b\x6d\x75\x6c\x74\x69\x63" \
-"\x61\x73\x74\x5d\x20\x5b\x5b\x2d\x5d\x70\x72\x6f\x6d\x69\x73\x63" \
-"\x5d\x20\x5b\x74\x78\x71\x75\x65\x75\x65\x6c\x65\x6e\x20\x4e\x4e" \
-"\x5d\x20\x5b\x5b\x2d\x5d\x64\x79\x6e\x61\x6d\x69\x63\x5d\x0a\x09" \
-"\x5b\x75\x70\x7c\x64\x6f\x77\x6e\x5d\x20\x2e\x2e\x2e\x00\x5b\x2d" \
-"\x66\x65\x5d\x20\x5b\x2d\x71\x20\x4e\x5d\x20\x5b\x2d\x52\x20\x4e" \
-"\x5d\x20\x5b\x43\x4f\x4e\x46\x46\x49\x4c\x45\x5d\x0a\x0a\x4c\x69" \
-"\x73\x74\x65\x6e\x20\x66\x6f\x72\x20\x6e\x65\x74\x77\x6f\x72\x6b" \
-"\x20\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x73\x20\x61\x6e\x64" \
-"\x20\x6c\x61\x75\x6e\x63\x68\x20\x70\x72\x6f\x67\x72\x61\x6d\x73" \
-"\x0a\x0a\x09\x2d\x66\x09\x52\x75\x6e\x20\x69\x6e\x20\x66\x6f\x72" \
-"\x65\x67\x72\x6f\x75\x6e\x64\x0a\x09\x2d\x65\x09\x4c\x6f\x67\x20" \
-"\x74\x6f\x20\x73\x74\x64\x65\x72\x72\x0a\x09\x2d\x71\x20\x4e\x09" \
-"\x53\x6f\x63\x6b\x65\x74\x20\x6c\x69\x73\x74\x65\x6e\x20\x71\x75" \
-"\x65\x75\x65\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x3a\x20\x31\x32" \
-"\x38\x29\x0a\x09\x2d\x52\x20\x4e\x09\x50\x61\x75\x73\x65\x20\x73" \
-"\x65\x72\x76\x69\x63\x65\x73\x20\x61\x66\x74\x65\x72\x20\x4e\x20" \
-"\x63\x6f\x6e\x6e\x65\x63\x74\x73\x2f\x6d\x69\x6e\x0a\x09\x09\x28" \
-"\x64\x65\x66\x61\x75\x6c\x74\x3a\x20\x30\x20\x2d\x20\x64\x69\x73" \
-"\x61\x62\x6c\x65\x64\x29\x00\x46\x49\x4c\x45\x20\x5b\x53\x59\x4d" \
-"\x42\x4f\x4c\x3d\x56\x41\x4c\x55\x45\x5d\x2e\x2e\x2e\x0a\x0a\x4c" \
-"\x6f\x61\x64\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65" \
-"\x64\x20\x6b\x65\x72\x6e\x65\x6c\x20\x6d\x6f\x64\x75\x6c\x65\x73" \
-"\x20\x69\x6e\x74\x6f\x20\x74\x68\x65\x20\x6b\x65\x72\x6e\x65\x6c" \
-"\x00\x5b\x2d\x63\x64\x44\x73\x70\x5d\x20\x5b\x2d\x6f\x20\x55\x53" \
-"\x45\x52\x5d\x20\x5b\x2d\x67\x20\x47\x52\x50\x5d\x20\x5b\x2d\x6d" \
-"\x20\x4d\x4f\x44\x45\x5d\x20\x5b\x53\x4f\x55\x52\x43\x45\x5d\x2e" \
-"\x2e\x2e\x20\x44\x45\x53\x54\x0a\x0a\x43\x6f\x70\x79\x20\x66\x69" \
-"\x6c\x65\x73\x20\x61\x6e\x64\x20\x73\x65\x74\x20\x61\x74\x74\x72" \
-"\x69\x62\x75\x74\x65\x73\x0a\x0a\x09\x2d\x63\x09\x4a\x75\x73\x74" \
-"\x20\x63\x6f\x70\x79\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x0a" \
-"\x09\x2d\x64\x09\x43\x72\x65\x61\x74\x65\x20\x64\x69\x72\x65\x63" \
-"\x74\x6f\x72\x69\x65\x73\x0a\x09\x2d\x44\x09\x43\x72\x65\x61\x74" \
-"\x65\x20\x6c\x65\x61\x64\x69\x6e\x67\x20\x74\x61\x72\x67\x65\x74" \
-"\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x0a\x09\x2d\x73" \
-"\x09\x53\x74\x72\x69\x70\x20\x73\x79\x6d\x62\x6f\x6c\x20\x74\x61" \
-"\x62\x6c\x65\x0a\x09\x2d\x70\x09\x50\x72\x65\x73\x65\x72\x76\x65" \
-"\x20\x64\x61\x74\x65\x0a\x09\x2d\x6f\x20\x55\x53\x45\x52\x09\x53" \
-"\x65\x74\x20\x6f\x77\x6e\x65\x72\x73\x68\x69\x70\x0a\x09\x2d\x67" \
-"\x20\x47\x52\x50\x09\x53\x65\x74\x20\x67\x72\x6f\x75\x70\x20\x6f" \
-"\x77\x6e\x65\x72\x73\x68\x69\x70\x0a\x09\x2d\x6d\x20\x4d\x4f\x44" \
-"\x45\x09\x53\x65\x74\x20\x70\x65\x72\x6d\x69\x73\x73\x69\x6f\x6e" \
-"\x73\x00\x5b\x2d\x63\x20\x31\x2d\x33\x5d\x20\x5b\x2d\x6e\x20\x30" \
-"\x2d\x37\x5d\x20\x5b\x2d\x70\x20\x50\x49\x44\x5d\x20\x5b\x50\x52" \
-"\x4f\x47\x5d\x0a\x0a\x43\x68\x61\x6e\x67\x65\x20\x49\x2f\x4f\x20" \
-"\x70\x72\x69\x6f\x72\x69\x74\x79\x20\x61\x6e\x64\x20\x63\x6c\x61" \
-"\x73\x73\x0a\x0a\x09\x2d\x63\x09\x43\x6c\x61\x73\x73\x2e\x20\x31" \
-"\x3a\x72\x65\x61\x6c\x74\x69\x6d\x65\x20\x32\x3a\x62\x65\x73\x74" \
-"\x2d\x65\x66\x66\x6f\x72\x74\x20\x33\x3a\x69\x64\x6c\x65\x0a\x09" \
-"\x2d\x6e\x09\x50\x72\x69\x6f\x72\x69\x74\x79\x00\x5b\x2d\x63\x5d" \
-"\x20\x5b\x2d\x64\x5d\x20\x5b\x2d\x74\x5d\x20\x5b\x2d\x7a\x5d\x20" \
-"\x5b\x2d\x6b\x7c\x2d\x6d\x5d\x20\x5b\x41\x4c\x4c\x7c\x42\x4c\x4f" \
-"\x43\x4b\x44\x45\x56\x2e\x2e\x2e\x5d\x20\x5b\x49\x4e\x54\x45\x52" \
-"\x56\x41\x4c\x20\x5b\x43\x4f\x55\x4e\x54\x5d\x5d\x0a\x0a\x52\x65" \
-"\x70\x6f\x72\x74\x20\x43\x50\x55\x20\x61\x6e\x64\x20\x49\x2f\x4f" \
-"\x20\x73\x74\x61\x74\x69\x73\x74\x69\x63\x73\x0a\x0a\x09\x2d\x63" \
-"\x09\x53\x68\x6f\x77\x20\x43\x50\x55\x20\x75\x74\x69\x6c\x69\x7a" \
-"\x61\x74\x69\x6f\x6e\x0a\x09\x2d\x64\x09\x53\x68\x6f\x77\x20\x64" \
-"\x65\x76\x69\x63\x65\x20\x75\x74\x69\x6c\x69\x7a\x61\x74\x69\x6f" \
-"\x6e\x0a\x09\x2d\x74\x09\x50\x72\x69\x6e\x74\x20\x63\x75\x72\x72" \
-"\x65\x6e\x74\x20\x74\x69\x6d\x65\x0a\x09\x2d\x7a\x09\x4f\x6d\x69" \
-"\x74\x20\x64\x65\x76\x69\x63\x65\x73\x20\x77\x69\x74\x68\x20\x6e" \
-"\x6f\x20\x61\x63\x74\x69\x76\x69\x74\x79\x0a\x09\x2d\x6b\x09\x55" \
-"\x73\x65\x20\x6b\x62\x2f\x73\x0a\x09\x2d\x6d\x09\x55\x73\x65\x20" \
-"\x4d\x62\x2f\x73\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x7b" \
-"\x61\x64\x64\x72\x65\x73\x73\x20\x7c\x20\x72\x6f\x75\x74\x65\x20" \
-"\x7c\x20\x6c\x69\x6e\x6b\x20\x7c\x20\x72\x75\x6c\x65\x7d\x20\x7b" \
-"\x43\x4f\x4d\x4d\x41\x4e\x44\x7d\x0a\x0a\x69\x70\x20\x5b\x4f\x50" \
-"\x54\x49\x4f\x4e\x53\x5d\x20\x4f\x42\x4a\x45\x43\x54\x20\x7b\x43" \
-"\x4f\x4d\x4d\x41\x4e\x44\x7d\x0a\x77\x68\x65\x72\x65\x20\x4f\x42" \
-"\x4a\x45\x43\x54\x20\x3a\x3d\x20\x7b\x61\x64\x64\x72\x65\x73\x73" \
-"\x20\x7c\x20\x72\x6f\x75\x74\x65\x20\x7c\x20\x6c\x69\x6e\x6b\x20" \
-"\x7c\x20\x72\x75\x6c\x65\x7d\x0a\x4f\x50\x54\x49\x4f\x4e\x53\x20" \
-"\x3a\x3d\x20\x7b\x20\x2d\x66\x5b\x61\x6d\x69\x6c\x79\x5d\x20\x7b" \
-"\x20\x69\x6e\x65\x74\x20\x7c\x20\x69\x6e\x65\x74\x36\x20\x7c\x20" \
-"\x6c\x69\x6e\x6b\x20\x7d\x20\x7c\x20\x2d\x6f\x5b\x6e\x65\x6c\x69" \
-"\x6e\x65\x5d\x20\x7d\x00\x5b\x2d\x6c\x5d\x20\x5b\x2d\x53\x49\x47" \
-"\x5d\x20\x50\x49\x44\x2e\x2e\x2e\x0a\x0a\x53\x65\x6e\x64\x20\x61" \
-"\x20\x73\x69\x67\x6e\x61\x6c\x20\x28\x64\x65\x66\x61\x75\x6c\x74" \
-"\x3a\x20\x54\x45\x52\x4d\x29\x20\x74\x6f\x20\x67\x69\x76\x65\x6e" \
-"\x20\x50\x49\x44\x73\x0a\x0a\x09\x2d\x6c\x09\x4c\x69\x73\x74\x20" \
-"\x61\x6c\x6c\x20\x73\x69\x67\x6e\x61\x6c\x20\x6e\x61\x6d\x65\x73" \
-"\x20\x61\x6e\x64\x20\x6e\x75\x6d\x62\x65\x72\x73\x00\x5b\x2d\x6c" \
-"\x5d\x20\x5b\x2d\x71\x5d\x20\x5b\x2d\x53\x49\x47\x5d\x20\x50\x52" \
-"\x4f\x43\x45\x53\x53\x5f\x4e\x41\x4d\x45\x2e\x2e\x2e\x0a\x0a\x53" \
-"\x65\x6e\x64\x20\x61\x20\x73\x69\x67\x6e\x61\x6c\x20\x28\x64\x65" \
-"\x66\x61\x75\x6c\x74\x3a\x20\x54\x45\x52\x4d\x29\x20\x74\x6f\x20" \
-"\x67\x69\x76\x65\x6e\x20\x70\x72\x6f\x63\x65\x73\x73\x65\x73\x0a" \
-"\x0a\x09\x2d\x6c\x09\x4c\x69\x73\x74\x20\x61\x6c\x6c\x20\x73\x69" \
-"\x67\x6e\x61\x6c\x20\x6e\x61\x6d\x65\x73\x20\x61\x6e\x64\x20\x6e" \
-"\x75\x6d\x62\x65\x72\x73\x0a\x09\x2d\x71\x09\x44\x6f\x6e\x27\x74" \
-"\x20\x63\x6f\x6d\x70\x6c\x61\x69\x6e\x20\x69\x66\x20\x6e\x6f\x20" \
-"\x70\x72\x6f\x63\x65\x73\x73\x65\x73\x20\x77\x65\x72\x65\x20\x6b" \
-"\x69\x6c\x6c\x65\x64\x00\x5b\x2d\x6c\x5d\x20\x5b\x2d\x53\x49\x47" \
-"\x5d\x20\x5b\x2d\x6f\x20\x50\x49\x44\x5d\x2e\x2e\x2e\x0a\x0a\x53" \
-"\x65\x6e\x64\x20\x61\x20\x73\x69\x67\x6e\x61\x6c\x20\x28\x64\x65" \
-"\x66\x61\x75\x6c\x74\x3a\x20\x54\x45\x52\x4d\x29\x20\x74\x6f\x20" \
-"\x61\x6c\x6c\x20\x70\x72\x6f\x63\x65\x73\x73\x65\x73\x20\x6f\x75" \
-"\x74\x73\x69\x64\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x73\x65" \
-"\x73\x73\x69\x6f\x6e\x0a\x0a\x09\x2d\x6c\x09\x4c\x69\x73\x74\x20" \
-"\x61\x6c\x6c\x20\x73\x69\x67\x6e\x61\x6c\x20\x6e\x61\x6d\x65\x73" \
-"\x20\x61\x6e\x64\x20\x6e\x75\x6d\x62\x65\x72\x73\x0a\x09\x2d\x6f" \
-"\x20\x50\x49\x44\x09\x44\x6f\x6e\x27\x74\x20\x73\x69\x67\x6e\x61" \
-"\x6c\x20\x74\x68\x69\x73\x20\x50\x49\x44\x00\x5b\x2d\x45\x4e\x68" \
-"\x7e\x49\x3f\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a" \
-"\x56\x69\x65\x77\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20\x73\x74" \
-"\x64\x69\x6e\x29\x20\x6f\x6e\x65\x20\x73\x63\x72\x65\x65\x6e\x66" \
-"\x75\x6c\x20\x61\x74\x20\x61\x20\x74\x69\x6d\x65\x0a\x0a\x09\x2d" \
-"\x45\x09\x51\x75\x69\x74\x20\x6f\x6e\x63\x65\x20\x74\x68\x65\x20" \
-"\x65\x6e\x64\x20\x6f\x66\x20\x61\x20\x66\x69\x6c\x65\x20\x69\x73" \
-"\x20\x72\x65\x61\x63\x68\x65\x64\x0a\x09\x2d\x4e\x09\x50\x72\x65" \
-"\x66\x69\x78\x20\x6c\x69\x6e\x65\x20\x6e\x75\x6d\x62\x65\x72\x20" \
-"\x74\x6f\x20\x65\x61\x63\x68\x20\x6c\x69\x6e\x65\x0a\x09\x2d\x49" \
-"\x09\x49\x67\x6e\x6f\x72\x65\x20\x63\x61\x73\x65\x20\x69\x6e\x20" \
-"\x61\x6c\x6c\x20\x73\x65\x61\x72\x63\x68\x65\x73\x0a\x09\x2d\x7e" \
-"\x09\x53\x75\x70\x70\x72\x65\x73\x73\x20\x7e\x73\x20\x64\x69\x73" \
-"\x70\x6c\x61\x79\x65\x64\x20\x70\x61\x73\x74\x20\x45\x4f\x46\x00" \
-"\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x54\x41\x52\x47\x45\x54" \
-"\x2e\x2e\x2e\x20\x4c\x49\x4e\x4b\x7c\x44\x49\x52\x0a\x0a\x43\x72" \
-"\x65\x61\x74\x65\x20\x61\x20\x6c\x69\x6e\x6b\x20\x4c\x49\x4e\x4b" \
-"\x20\x6f\x72\x20\x44\x49\x52\x2f\x54\x41\x52\x47\x45\x54\x20\x74" \
-"\x6f\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20" \
-"\x54\x41\x52\x47\x45\x54\x28\x73\x29\x0a\x0a\x09\x2d\x73\x09\x4d" \
-"\x61\x6b\x65\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20\x69\x6e\x73" \
-"\x74\x65\x61\x64\x20\x6f\x66\x20\x68\x61\x72\x64\x6c\x69\x6e\x6b" \
-"\x73\x0a\x09\x2d\x66\x09\x52\x65\x6d\x6f\x76\x65\x20\x65\x78\x69" \
-"\x73\x74\x69\x6e\x67\x20\x64\x65\x73\x74\x69\x6e\x61\x74\x69\x6f" \
-"\x6e\x73\x0a\x09\x2d\x6e\x09\x44\x6f\x6e\x27\x74\x20\x64\x65\x72" \
-"\x65\x66\x65\x72\x65\x6e\x63\x65\x20\x73\x79\x6d\x6c\x69\x6e\x6b" \
-"\x73\x20\x2d\x20\x74\x72\x65\x61\x74\x20\x6c\x69\x6b\x65\x20\x6e" \
-"\x6f\x72\x6d\x61\x6c\x20\x66\x69\x6c\x65\x0a\x09\x2d\x62\x09\x4d" \
-"\x61\x6b\x65\x20\x61\x20\x62\x61\x63\x6b\x75\x70\x20\x6f\x66\x20" \
-"\x74\x68\x65\x20\x74\x61\x72\x67\x65\x74\x20\x28\x69\x66\x20\x65" \
-"\x78\x69\x73\x74\x73\x29\x20\x62\x65\x66\x6f\x72\x65\x20\x6c\x69" \
-"\x6e\x6b\x20\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\x0a\x09\x2d\x53" \
-"\x20\x73\x75\x66\x09\x55\x73\x65\x20\x73\x75\x66\x66\x69\x78\x20" \
-"\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x7e\x20\x77\x68\x65" \
-"\x6e\x20\x6d\x61\x6b\x69\x6e\x67\x20\x62\x61\x63\x6b\x75\x70\x20" \
-"\x66\x69\x6c\x65\x73\x0a\x09\x2d\x54\x09\x32\x6e\x64\x20\x61\x72" \
-"\x67\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x61\x20\x44\x49\x52\x0a" \
-"\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73\x65\x00\x5b\x2d\x72\x5d" \
-"\x20\x5b\x2d\x6f\x20\x4f\x46\x53\x5d\x20\x4c\x4f\x4f\x50\x44\x45" \
-"\x56\x20\x46\x49\x4c\x45\x20\x2d\x20\x61\x73\x73\x6f\x63\x69\x61" \
-"\x74\x65\x20\x6c\x6f\x6f\x70\x20\x64\x65\x76\x69\x63\x65\x73\x0a" \
-"\x09\x6c\x6f\x73\x65\x74\x75\x70\x20\x2d\x64\x20\x4c\x4f\x4f\x50" \
-"\x44\x45\x56\x20\x2d\x20\x64\x69\x73\x61\x73\x73\x6f\x63\x69\x61" \
-"\x74\x65\x0a\x09\x6c\x6f\x73\x65\x74\x75\x70\x20\x5b\x2d\x66\x5d" \
-"\x20\x2d\x20\x73\x68\x6f\x77\x0a\x0a\x09\x2d\x6f\x20\x4f\x46\x53" \
-"\x09\x53\x74\x61\x72\x74\x20\x4f\x46\x53\x20\x62\x79\x74\x65\x73" \
-"\x20\x69\x6e\x74\x6f\x20\x46\x49\x4c\x45\x0a\x09\x2d\x72\x09\x52" \
-"\x65\x61\x64\x2d\x6f\x6e\x6c\x79\x0a\x09\x2d\x66\x09\x53\x68\x6f" \
-"\x77\x20\x66\x69\x72\x73\x74\x20\x66\x72\x65\x65\x20\x6c\x6f\x6f" \
-"\x70\x20\x64\x65\x76\x69\x63\x65\x00\x5b\x2d\x31\x41\x61\x43\x78" \
-"\x64\x4c\x48\x52\x46\x70\x6c\x69\x6e\x73\x65\x68\x72\x53\x58\x76" \
-"\x63\x74\x75\x5d\x20\x5b\x2d\x77\x20\x57\x49\x44\x54\x48\x5d\x20" \
-"\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x4c\x69\x73\x74\x20" \
-"\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x63\x6f\x6e\x74\x65\x6e" \
-"\x74\x73\x0a\x0a\x09\x2d\x31\x09\x4f\x6e\x65\x20\x63\x6f\x6c\x75" \
-"\x6d\x6e\x20\x6f\x75\x74\x70\x75\x74\x0a\x09\x2d\x61\x09\x49\x6e" \
-"\x63\x6c\x75\x64\x65\x20\x65\x6e\x74\x72\x69\x65\x73\x20\x77\x68" \
-"\x69\x63\x68\x20\x73\x74\x61\x72\x74\x20\x77\x69\x74\x68\x20\x2e" \
-"\x0a\x09\x2d\x41\x09\x4c\x69\x6b\x65\x20\x2d\x61\x2c\x20\x62\x75" \
-"\x74\x20\x65\x78\x63\x6c\x75\x64\x65\x20\x2e\x20\x61\x6e\x64\x20" \
-"\x2e\x2e\x0a\x09\x2d\x43\x09\x4c\x69\x73\x74\x20\x62\x79\x20\x63" \
-"\x6f\x6c\x75\x6d\x6e\x73\x0a\x09\x2d\x78\x09\x4c\x69\x73\x74\x20" \
-"\x62\x79\x20\x6c\x69\x6e\x65\x73\x0a\x09\x2d\x64\x09\x4c\x69\x73" \
-"\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x65\x6e\x74\x72" \
-"\x69\x65\x73\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x63" \
-"\x6f\x6e\x74\x65\x6e\x74\x73\x0a\x09\x2d\x4c\x09\x46\x6f\x6c\x6c" \
-"\x6f\x77\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x0a\x09\x2d\x48\x09" \
-"\x46\x6f\x6c\x6c\x6f\x77\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20" \
-"\x6f\x6e\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6c\x69\x6e\x65\x0a" \
-"\x09\x2d\x52\x09\x52\x65\x63\x75\x72\x73\x65\x0a\x09\x2d\x70\x09" \
-"\x41\x70\x70\x65\x6e\x64\x20\x2f\x20\x74\x6f\x20\x64\x69\x72\x20" \
-"\x65\x6e\x74\x72\x69\x65\x73\x0a\x09\x2d\x46\x09\x41\x70\x70\x65" \
-"\x6e\x64\x20\x69\x6e\x64\x69\x63\x61\x74\x6f\x72\x20\x28\x6f\x6e" \
-"\x65\x20\x6f\x66\x20\x2a\x2f\x3d\x40\x7c\x29\x20\x74\x6f\x20\x65" \
-"\x6e\x74\x72\x69\x65\x73\x0a\x09\x2d\x6c\x09\x4c\x6f\x6e\x67\x20" \
-"\x6c\x69\x73\x74\x69\x6e\x67\x20\x66\x6f\x72\x6d\x61\x74\x0a\x09" \
-"\x2d\x69\x09\x4c\x69\x73\x74\x20\x69\x6e\x6f\x64\x65\x20\x6e\x75" \
-"\x6d\x62\x65\x72\x73\x0a\x09\x2d\x6e\x09\x4c\x69\x73\x74\x20\x6e" \
-"\x75\x6d\x65\x72\x69\x63\x20\x55\x49\x44\x73\x20\x61\x6e\x64\x20" \
-"\x47\x49\x44\x73\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20" \
-"\x6e\x61\x6d\x65\x73\x0a\x09\x2d\x73\x09\x4c\x69\x73\x74\x20\x61" \
-"\x6c\x6c\x6f\x63\x61\x74\x65\x64\x20\x62\x6c\x6f\x63\x6b\x73\x0a" \
-"\x09\x2d\x65\x09\x4c\x69\x73\x74\x20\x66\x75\x6c\x6c\x20\x64\x61" \
-"\x74\x65\x20\x61\x6e\x64\x20\x74\x69\x6d\x65\x0a\x09\x2d\x68\x09" \
-"\x4c\x69\x73\x74\x20\x73\x69\x7a\x65\x73\x20\x69\x6e\x20\x68\x75" \
-"\x6d\x61\x6e\x20\x72\x65\x61\x64\x61\x62\x6c\x65\x20\x66\x6f\x72" \
-"\x6d\x61\x74\x20\x28\x31\x4b\x20\x32\x34\x33\x4d\x20\x32\x47\x29" \
-"\x0a\x09\x2d\x72\x09\x53\x6f\x72\x74\x20\x69\x6e\x20\x72\x65\x76" \
-"\x65\x72\x73\x65\x20\x6f\x72\x64\x65\x72\x0a\x09\x2d\x53\x09\x53" \
-"\x6f\x72\x74\x20\x62\x79\x20\x73\x69\x7a\x65\x0a\x09\x2d\x58\x09" \
-"\x53\x6f\x72\x74\x20\x62\x79\x20\x65\x78\x74\x65\x6e\x73\x69\x6f" \
-"\x6e\x0a\x09\x2d\x76\x09\x53\x6f\x72\x74\x20\x62\x79\x20\x76\x65" \
-"\x72\x73\x69\x6f\x6e\x0a\x09\x2d\x63\x09\x57\x69\x74\x68\x20\x2d" \
-"\x6c\x3a\x20\x73\x6f\x72\x74\x20\x62\x79\x20\x63\x74\x69\x6d\x65" \
-"\x0a\x09\x2d\x74\x09\x57\x69\x74\x68\x20\x2d\x6c\x3a\x20\x73\x6f" \
-"\x72\x74\x20\x62\x79\x20\x6d\x74\x69\x6d\x65\x0a\x09\x2d\x75\x09" \
-"\x57\x69\x74\x68\x20\x2d\x6c\x3a\x20\x73\x6f\x72\x74\x20\x62\x79" \
-"\x20\x61\x74\x69\x6d\x65\x0a\x09\x2d\x77\x20\x4e\x09\x41\x73\x73" \
-"\x75\x6d\x65\x20\x74\x68\x65\x20\x74\x65\x72\x6d\x69\x6e\x61\x6c" \
-"\x20\x69\x73\x20\x4e\x20\x63\x6f\x6c\x75\x6d\x6e\x73\x20\x77\x69" \
-"\x64\x65\x0a\x09\x2d\x2d\x63\x6f\x6c\x6f\x72\x5b\x3d\x7b\x61\x6c" \
-"\x77\x61\x79\x73\x2c\x6e\x65\x76\x65\x72\x2c\x61\x75\x74\x6f\x7d" \
-"\x5d\x09\x43\x6f\x6e\x74\x72\x6f\x6c\x20\x63\x6f\x6c\x6f\x72\x69" \
-"\x6e\x67\x00\x5b\x2d\x52\x61\x64\x6c\x76\x5d\x20\x5b\x46\x49\x4c" \
-"\x45\x5d\x2e\x2e\x2e\x0a\x0a\x4c\x69\x73\x74\x20\x66\x69\x6c\x65" \
-"\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73\x20\x6f\x6e\x20\x61" \
-"\x6e\x20\x65\x78\x74\x32\x20\x66\x73\x0a\x0a\x09\x2d\x52\x09\x52" \
-"\x65\x63\x75\x72\x73\x65\x0a\x09\x2d\x61\x09\x44\x6f\x6e\x27\x74" \
-"\x20\x68\x69\x64\x65\x20\x65\x6e\x74\x72\x69\x65\x73\x20\x73\x74" \
-"\x61\x72\x74\x69\x6e\x67\x20\x77\x69\x74\x68\x20\x2e\x0a\x09\x2d" \
-"\x64\x09\x4c\x69\x73\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79" \
-"\x20\x65\x6e\x74\x72\x69\x65\x73\x20\x69\x6e\x73\x74\x65\x61\x64" \
-"\x20\x6f\x66\x20\x63\x6f\x6e\x74\x65\x6e\x74\x73\x0a\x09\x2d\x6c" \
-"\x09\x4c\x69\x73\x74\x20\x6c\x6f\x6e\x67\x20\x66\x6c\x61\x67\x20" \
-"\x6e\x61\x6d\x65\x73\x0a\x09\x2d\x76\x09\x4c\x69\x73\x74\x20\x74" \
-"\x68\x65\x20\x66\x69\x6c\x65\x27\x73\x20\x76\x65\x72\x73\x69\x6f" \
-"\x6e\x2f\x67\x65\x6e\x65\x72\x61\x74\x69\x6f\x6e\x20\x6e\x75\x6d" \
-"\x62\x65\x72\x00\x0a\x0a\x4c\x69\x73\x74\x20\x74\x68\x65\x20\x63" \
-"\x75\x72\x72\x65\x6e\x74\x6c\x79\x20\x6c\x6f\x61\x64\x65\x64\x20" \
-"\x6b\x65\x72\x6e\x65\x6c\x20\x6d\x6f\x64\x75\x6c\x65\x73\x00\x0a" \
-"\x0a\x53\x68\x6f\x77\x20\x61\x6c\x6c\x20\x6f\x70\x65\x6e\x20\x66" \
-"\x69\x6c\x65\x73\x00\x08\x00\x46\x49\x4c\x45\x0a\x0a\x44\x65\x63" \
-"\x6f\x6d\x70\x72\x65\x73\x73\x20\x74\x6f\x20\x73\x74\x64\x6f\x75" \
-"\x74\x00\x2d\x64\x20\x5b\x2d\x63\x66\x5d\x20\x5b\x46\x49\x4c\x45" \
-"\x5d\x2e\x2e\x2e\x0a\x0a\x44\x65\x63\x6f\x6d\x70\x72\x65\x73\x73" \
-"\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29" \
-"\x0a\x0a\x09\x2d\x64\x09\x44\x65\x63\x6f\x6d\x70\x72\x65\x73\x73" \
-"\x0a\x09\x2d\x63\x09\x57\x72\x69\x74\x65\x20\x74\x6f\x20\x73\x74" \
-"\x64\x6f\x75\x74\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x00\x5b" \
-"\x2d\x63\x66\x76\x64\x31\x32\x33\x34\x35\x36\x37\x38\x39\x43\x46" \
-"\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x09\x2d\x31" \
-"\x2e\x2e\x39\x09\x43\x6f\x6d\x70\x72\x65\x73\x73\x69\x6f\x6e\x20" \
-"\x6c\x65\x76\x65\x6c\x0a\x09\x2d\x64\x09\x44\x65\x63\x6f\x6d\x70" \
-"\x72\x65\x73\x73\x0a\x09\x2d\x63\x09\x57\x72\x69\x74\x65\x20\x74" \
-"\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x2d\x66\x09\x46\x6f\x72" \
-"\x63\x65\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73\x65\x0a\x09" \
-"\x2d\x46\x09\x44\x6f\x6e\x27\x74\x20\x73\x74\x6f\x72\x65\x20\x6f" \
-"\x72\x20\x76\x65\x72\x69\x66\x79\x20\x63\x68\x65\x63\x6b\x73\x75" \
-"\x6d\x0a\x09\x2d\x43\x09\x41\x6c\x73\x6f\x20\x77\x72\x69\x74\x65" \
-"\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x20\x6f\x66\x20\x63\x6f\x6d" \
-"\x70\x72\x65\x73\x73\x65\x64\x20\x62\x6c\x6f\x63\x6b\x00\x5b\x2d" \
-"\x76\x43\x46\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a" \
-"\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x46\x09" \
-"\x44\x6f\x6e\x27\x74\x20\x73\x74\x6f\x72\x65\x20\x6f\x72\x20\x76" \
-"\x65\x72\x69\x66\x79\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x00\x5b" \
-"\x2d\x61\x77\x5d\x20\x5b\x4d\x41\x4e\x50\x41\x47\x45\x5d\x2e\x2e" \
-"\x2e\x0a\x0a\x46\x6f\x72\x6d\x61\x74\x20\x61\x6e\x64\x20\x64\x69" \
-"\x73\x70\x6c\x61\x79\x20\x6d\x61\x6e\x75\x61\x6c\x20\x70\x61\x67" \
-"\x65\x0a\x0a\x09\x2d\x61\x09\x44\x69\x73\x70\x6c\x61\x79\x20\x61" \
-"\x6c\x6c\x20\x70\x61\x67\x65\x73\x0a\x09\x2d\x77\x09\x53\x68\x6f" \
-"\x77\x20\x70\x61\x67\x65\x20\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x73" \
-"\x00\x5b\x2d\x63\x5b\x73\x77\x5d\x5d\x20\x5b\x46\x49\x4c\x45\x5d" \
-"\x2e\x2e\x2e\x0a\x0a\x50\x72\x69\x6e\x74\x20\x6f\x72\x20\x63\x68" \
-"\x65\x63\x6b\x20\x4d\x44\x35\x20\x63\x68\x65\x63\x6b\x73\x75\x6d" \
-"\x73\x0a\x0a\x09\x2d\x63\x09\x43\x68\x65\x63\x6b\x20\x73\x75\x6d" \
-"\x73\x20\x61\x67\x61\x69\x6e\x73\x74\x20\x6c\x69\x73\x74\x20\x69" \
-"\x6e\x20\x46\x49\x4c\x45\x73\x0a\x09\x2d\x73\x09\x44\x6f\x6e\x27" \
-"\x74\x20\x6f\x75\x74\x70\x75\x74\x20\x61\x6e\x79\x74\x68\x69\x6e" \
-"\x67\x2c\x20\x73\x74\x61\x74\x75\x73\x20\x63\x6f\x64\x65\x20\x73" \
-"\x68\x6f\x77\x73\x20\x73\x75\x63\x63\x65\x73\x73\x0a\x09\x2d\x77" \
-"\x09\x57\x61\x72\x6e\x20\x61\x62\x6f\x75\x74\x20\x69\x6d\x70\x72" \
-"\x6f\x70\x65\x72\x6c\x79\x20\x66\x6f\x72\x6d\x61\x74\x74\x65\x64" \
-"\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x20\x6c\x69\x6e\x65\x73\x00" \
-"\x5b\x79\x7c\x6e\x5d\x0a\x0a\x43\x6f\x6e\x74\x72\x6f\x6c\x20\x77" \
-"\x72\x69\x74\x65\x20\x61\x63\x63\x65\x73\x73\x20\x74\x6f\x20\x79" \
-"\x6f\x75\x72\x20\x74\x65\x72\x6d\x69\x6e\x61\x6c\x0a\x09\x79\x09" \
-"\x41\x6c\x6c\x6f\x77\x20\x77\x72\x69\x74\x65\x20\x61\x63\x63\x65" \
-"\x73\x73\x20\x74\x6f\x20\x79\x6f\x75\x72\x20\x74\x65\x72\x6d\x69" \
-"\x6e\x61\x6c\x0a\x09\x6e\x09\x44\x69\x73\x61\x6c\x6c\x6f\x77\x20" \
-"\x77\x72\x69\x74\x65\x20\x61\x63\x63\x65\x73\x73\x20\x74\x6f\x20" \
-"\x79\x6f\x75\x72\x20\x74\x65\x72\x6d\x69\x6e\x61\x6c\x00\x5b\x4f" \
-"\x50\x54\x49\x4f\x4e\x53\x5d\x20\x44\x49\x52\x45\x43\x54\x4f\x52" \
-"\x59\x2e\x2e\x2e\x0a\x0a\x43\x72\x65\x61\x74\x65\x20\x44\x49\x52" \
-"\x45\x43\x54\x4f\x52\x59\x0a\x0a\x09\x2d\x6d\x20\x4d\x4f\x44\x45" \
-"\x09\x4d\x6f\x64\x65\x0a\x09\x2d\x70\x09\x4e\x6f\x20\x65\x72\x72" \
-"\x6f\x72\x20\x69\x66\x20\x65\x78\x69\x73\x74\x73\x3b\x20\x6d\x61" \
-"\x6b\x65\x20\x70\x61\x72\x65\x6e\x74\x20\x64\x69\x72\x65\x63\x74" \
-"\x6f\x72\x69\x65\x73\x20\x61\x73\x20\x6e\x65\x65\x64\x65\x64\x00" \
-"\x5b\x2d\x76\x5d\x20\x5b\x2d\x6e\x20\x4c\x41\x42\x45\x4c\x5d\x20" \
-"\x42\x4c\x4f\x43\x4b\x44\x45\x56\x20\x5b\x4b\x42\x59\x54\x45\x53" \
-"\x5d\x0a\x0a\x4d\x61\x6b\x65\x20\x61\x20\x46\x41\x54\x33\x32\x20" \
-"\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x0a\x0a\x09\x2d\x76\x09" \
-"\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x6e\x20\x4c\x42\x4c\x09" \
-"\x56\x6f\x6c\x75\x6d\x65\x20\x6c\x61\x62\x65\x6c\x00\x5b\x2d\x46" \
-"\x6e\x5d\x20\x5b\x2d\x62\x20\x42\x4c\x4b\x5f\x53\x49\x5a\x45\x5d" \
-"\x20\x5b\x2d\x69\x20\x49\x4e\x4f\x44\x45\x5f\x52\x41\x54\x49\x4f" \
-"\x5d\x20\x5b\x2d\x49\x20\x49\x4e\x4f\x44\x45\x5f\x53\x49\x5a\x45" \
-"\x5d\x20\x5b\x2d\x6d\x20\x52\x45\x53\x45\x52\x56\x45\x44\x5f\x50" \
-"\x45\x52\x43\x45\x4e\x54\x5d\x20\x5b\x2d\x4c\x20\x4c\x41\x42\x45" \
-"\x4c\x5d\x20\x42\x4c\x4f\x43\x4b\x44\x45\x56\x20\x5b\x4b\x42\x59" \
-"\x54\x45\x53\x5d\x0a\x0a\x09\x2d\x62\x20\x42\x4c\x4b\x5f\x53\x49" \
-"\x5a\x45\x09\x42\x6c\x6f\x63\x6b\x20\x73\x69\x7a\x65\x2c\x20\x62" \
-"\x79\x74\x65\x73\x0a\x09\x2d\x46\x09\x09\x46\x6f\x72\x63\x65\x0a" \
-"\x09\x2d\x69\x20\x52\x41\x54\x49\x4f\x09\x4d\x61\x78\x20\x6e\x75" \
-"\x6d\x62\x65\x72\x20\x6f\x66\x20\x66\x69\x6c\x65\x73\x20\x69\x73" \
-"\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x5f\x73\x69\x7a\x65" \
-"\x20\x2f\x20\x52\x41\x54\x49\x4f\x0a\x09\x2d\x49\x20\x42\x59\x54" \
-"\x45\x53\x09\x49\x6e\x6f\x64\x65\x20\x73\x69\x7a\x65\x20\x28\x6d" \
-"\x69\x6e\x20\x31\x32\x38\x29\x0a\x09\x2d\x4c\x20\x4c\x42\x4c\x09" \
-"\x09\x56\x6f\x6c\x75\x6d\x65\x20\x6c\x61\x62\x65\x6c\x0a\x09\x2d" \
-"\x6d\x20\x50\x45\x52\x43\x45\x4e\x54\x09\x50\x65\x72\x63\x65\x6e" \
-"\x74\x20\x6f\x66\x20\x62\x6c\x6f\x63\x6b\x73\x20\x74\x6f\x20\x72" \
-"\x65\x73\x65\x72\x76\x65\x20\x66\x6f\x72\x20\x61\x64\x6d\x69\x6e" \
-"\x0a\x09\x2d\x6e\x09\x09\x44\x72\x79\x20\x72\x75\x6e\x00\x5b\x2d" \
-"\x6d\x20\x4d\x4f\x44\x45\x5d\x20\x4e\x41\x4d\x45\x0a\x0a\x43\x72" \
-"\x65\x61\x74\x65\x20\x6e\x61\x6d\x65\x64\x20\x70\x69\x70\x65\x0a" \
-"\x0a\x09\x2d\x6d\x20\x4d\x4f\x44\x45\x09\x4d\x6f\x64\x65\x20\x28" \
-"\x64\x65\x66\x61\x75\x6c\x74\x20\x61\x3d\x72\x77\x29\x00\x5b\x2d" \
-"\x46\x6e\x5d\x20\x5b\x2d\x62\x20\x42\x4c\x4b\x5f\x53\x49\x5a\x45" \
-"\x5d\x20\x5b\x2d\x69\x20\x49\x4e\x4f\x44\x45\x5f\x52\x41\x54\x49" \
-"\x4f\x5d\x20\x5b\x2d\x49\x20\x49\x4e\x4f\x44\x45\x5f\x53\x49\x5a" \
-"\x45\x5d\x20\x5b\x2d\x6d\x20\x52\x45\x53\x45\x52\x56\x45\x44\x5f" \
-"\x50\x45\x52\x43\x45\x4e\x54\x5d\x20\x5b\x2d\x4c\x20\x4c\x41\x42" \
-"\x45\x4c\x5d\x20\x42\x4c\x4f\x43\x4b\x44\x45\x56\x20\x5b\x4b\x42" \
-"\x59\x54\x45\x53\x5d\x0a\x0a\x09\x2d\x62\x20\x42\x4c\x4b\x5f\x53" \
-"\x49\x5a\x45\x09\x42\x6c\x6f\x63\x6b\x20\x73\x69\x7a\x65\x2c\x20" \
-"\x62\x79\x74\x65\x73\x0a\x09\x2d\x46\x09\x09\x46\x6f\x72\x63\x65" \
-"\x0a\x09\x2d\x69\x20\x52\x41\x54\x49\x4f\x09\x4d\x61\x78\x20\x6e" \
-"\x75\x6d\x62\x65\x72\x20\x6f\x66\x20\x66\x69\x6c\x65\x73\x20\x69" \
-"\x73\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x5f\x73\x69\x7a" \
-"\x65\x20\x2f\x20\x52\x41\x54\x49\x4f\x0a\x09\x2d\x49\x20\x42\x59" \
-"\x54\x45\x53\x09\x49\x6e\x6f\x64\x65\x20\x73\x69\x7a\x65\x20\x28" \
-"\x6d\x69\x6e\x20\x31\x32\x38\x29\x0a\x09\x2d\x4c\x20\x4c\x42\x4c" \
-"\x09\x09\x56\x6f\x6c\x75\x6d\x65\x20\x6c\x61\x62\x65\x6c\x0a\x09" \
-"\x2d\x6d\x20\x50\x45\x52\x43\x45\x4e\x54\x09\x50\x65\x72\x63\x65" \
-"\x6e\x74\x20\x6f\x66\x20\x62\x6c\x6f\x63\x6b\x73\x20\x74\x6f\x20" \
-"\x72\x65\x73\x65\x72\x76\x65\x20\x66\x6f\x72\x20\x61\x64\x6d\x69" \
-"\x6e\x0a\x09\x2d\x6e\x09\x09\x44\x72\x79\x20\x72\x75\x6e\x00\x5b" \
-"\x2d\x76\x5d\x20\x5b\x2d\x6e\x20\x4c\x41\x42\x45\x4c\x5d\x20\x42" \
-"\x4c\x4f\x43\x4b\x44\x45\x56\x20\x5b\x4b\x42\x59\x54\x45\x53\x5d" \
-"\x0a\x0a\x4d\x61\x6b\x65\x20\x61\x20\x46\x41\x54\x33\x32\x20\x66" \
-"\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x0a\x0a\x09\x2d\x76\x09\x56" \
-"\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x6e\x20\x4c\x42\x4c\x09\x56" \
-"\x6f\x6c\x75\x6d\x65\x20\x6c\x61\x62\x65\x6c\x00\x5b\x2d\x6d\x20" \
-"\x4d\x4f\x44\x45\x5d\x20\x4e\x41\x4d\x45\x20\x54\x59\x50\x45\x20" \
-"\x4d\x41\x4a\x4f\x52\x20\x4d\x49\x4e\x4f\x52\x0a\x0a\x43\x72\x65" \
-"\x61\x74\x65\x20\x61\x20\x73\x70\x65\x63\x69\x61\x6c\x20\x66\x69" \
-"\x6c\x65\x20\x28\x62\x6c\x6f\x63\x6b\x2c\x20\x63\x68\x61\x72\x61" \
-"\x63\x74\x65\x72\x2c\x20\x6f\x72\x20\x70\x69\x70\x65\x29\x0a\x0a" \
-"\x09\x2d\x6d\x20\x4d\x4f\x44\x45\x09\x43\x72\x65\x61\x74\x69\x6f" \
-"\x6e\x20\x6d\x6f\x64\x65\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x20" \
-"\x61\x3d\x72\x77\x29\x0a\x54\x59\x50\x45\x3a\x0a\x09\x62\x09\x42" \
-"\x6c\x6f\x63\x6b\x20\x64\x65\x76\x69\x63\x65\x0a\x09\x63\x20\x6f" \
-"\x72\x20\x75\x09\x43\x68\x61\x72\x61\x63\x74\x65\x72\x20\x64\x65" \
-"\x76\x69\x63\x65\x0a\x09\x70\x09\x4e\x61\x6d\x65\x64\x20\x70\x69" \
-"\x70\x65\x20\x28\x4d\x41\x4a\x4f\x52\x20\x61\x6e\x64\x20\x4d\x49" \
-"\x4e\x4f\x52\x20\x61\x72\x65\x20\x69\x67\x6e\x6f\x72\x65\x64\x29" \
-"\x00\x5b\x2d\x4c\x20\x4c\x42\x4c\x5d\x20\x42\x4c\x4f\x43\x4b\x44" \
-"\x45\x56\x20\x5b\x4b\x42\x59\x54\x45\x53\x5d\x0a\x0a\x50\x72\x65" \
-"\x70\x61\x72\x65\x20\x42\x4c\x4f\x43\x4b\x44\x45\x56\x20\x74\x6f" \
-"\x20\x62\x65\x20\x75\x73\x65\x64\x20\x61\x73\x20\x73\x77\x61\x70" \
-"\x20\x70\x61\x72\x74\x69\x74\x69\x6f\x6e\x0a\x0a\x09\x2d\x4c\x20" \
-"\x4c\x42\x4c\x09\x4c\x61\x62\x65\x6c\x00\x5b\x2d\x64\x74\x5d\x20" \
-"\x5b\x2d\x70\x20\x44\x49\x52\x5d\x20\x5b\x54\x45\x4d\x50\x4c\x41" \
-"\x54\x45\x5d\x0a\x0a\x43\x72\x65\x61\x74\x65\x20\x61\x20\x74\x65" \
-"\x6d\x70\x6f\x72\x61\x72\x79\x20\x66\x69\x6c\x65\x20\x77\x69\x74" \
-"\x68\x20\x6e\x61\x6d\x65\x20\x62\x61\x73\x65\x64\x20\x6f\x6e\x20" \
-"\x54\x45\x4d\x50\x4c\x41\x54\x45\x20\x61\x6e\x64\x20\x70\x72\x69" \
-"\x6e\x74\x20\x69\x74\x73\x20\x6e\x61\x6d\x65\x2e\x0a\x54\x45\x4d" \
-"\x50\x4c\x41\x54\x45\x20\x6d\x75\x73\x74\x20\x65\x6e\x64\x20\x77" \
-"\x69\x74\x68\x20\x58\x58\x58\x58\x58\x58\x20\x28\x65\x2e\x67\x2e" \
-"\x20\x5b\x2f\x64\x69\x72\x2f\x5d\x6e\x61\x6d\x65\x58\x58\x58\x58" \
-"\x58\x58\x29\x2e\x0a\x57\x69\x74\x68\x6f\x75\x74\x20\x54\x45\x4d" \
-"\x50\x4c\x41\x54\x45\x2c\x20\x2d\x74\x20\x74\x6d\x70\x2e\x58\x58" \
-"\x58\x58\x58\x58\x20\x69\x73\x20\x61\x73\x73\x75\x6d\x65\x64\x2e" \
-"\x0a\x0a\x09\x2d\x64\x09\x4d\x61\x6b\x65\x20\x64\x69\x72\x65\x63" \
-"\x74\x6f\x72\x79\x2c\x20\x6e\x6f\x74\x20\x66\x69\x6c\x65\x0a\x09" \
-"\x2d\x71\x09\x46\x61\x69\x6c\x20\x73\x69\x6c\x65\x6e\x74\x6c\x79" \
-"\x20\x6f\x6e\x20\x65\x72\x72\x6f\x72\x73\x0a\x09\x2d\x74\x09\x50" \
-"\x72\x65\x70\x65\x6e\x64\x20\x62\x61\x73\x65\x20\x64\x69\x72\x65" \
-"\x63\x74\x6f\x72\x79\x20\x6e\x61\x6d\x65\x20\x74\x6f\x20\x54\x45" \
-"\x4d\x50\x4c\x41\x54\x45\x0a\x09\x2d\x70\x20\x44\x49\x52\x09\x55" \
-"\x73\x65\x20\x44\x49\x52\x20\x61\x73\x20\x61\x20\x62\x61\x73\x65" \
-"\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x28\x69\x6d\x70\x6c" \
-"\x69\x65\x73\x20\x2d\x74\x29\x0a\x09\x2d\x75\x09\x44\x6f\x20\x6e" \
-"\x6f\x74\x20\x63\x72\x65\x61\x74\x65\x20\x61\x6e\x79\x74\x68\x69" \
-"\x6e\x67\x3b\x20\x70\x72\x69\x6e\x74\x20\x61\x20\x6e\x61\x6d\x65" \
-"\x0a\x0a\x42\x61\x73\x65\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79" \
-"\x20\x69\x73\x3a\x20\x2d\x70\x20\x44\x49\x52\x2c\x20\x65\x6c\x73" \
-"\x65\x20\x24\x54\x4d\x50\x44\x49\x52\x2c\x20\x65\x6c\x73\x65\x20" \
-"\x2f\x64\x61\x74\x61\x2f\x6c\x6f\x63\x61\x6c\x2f\x74\x6d\x70\x00" \
-"\x5b\x2d\x61\x64\x6c\x70\x30\x5d\x20\x5b\x2d\x46\x20\x6b\x65\x79" \
-"\x77\x6f\x72\x64\x5d\x20\x4d\x4f\x44\x55\x4c\x45\x0a\x0a\x09\x2d" \
-"\x61\x09\x09\x53\x68\x6f\x72\x74\x63\x75\x74\x20\x66\x6f\x72\x20" \
-"\x27\x2d\x46\x20\x61\x75\x74\x68\x6f\x72\x27\x0a\x09\x2d\x64\x09" \
-"\x09\x53\x68\x6f\x72\x74\x63\x75\x74\x20\x66\x6f\x72\x20\x27\x2d" \
-"\x46\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x27\x0a\x09" \
-"\x2d\x6c\x09\x09\x53\x68\x6f\x72\x74\x63\x75\x74\x20\x66\x6f\x72" \
-"\x20\x27\x2d\x46\x20\x6c\x69\x63\x65\x6e\x73\x65\x27\x0a\x09\x2d" \
-"\x70\x09\x09\x53\x68\x6f\x72\x74\x63\x75\x74\x20\x66\x6f\x72\x20" \
-"\x27\x2d\x46\x20\x70\x61\x72\x6d\x27\x0a\x09\x2d\x46\x20\x6b\x65" \
-"\x79\x77\x6f\x72\x64\x09\x4b\x65\x79\x77\x6f\x72\x64\x20\x74\x6f" \
-"\x20\x6c\x6f\x6f\x6b\x20\x66\x6f\x72\x0a\x09\x2d\x30\x09\x09\x53" \
-"\x65\x70\x61\x72\x61\x74\x65\x20\x6f\x75\x74\x70\x75\x74\x20\x77" \
-"\x69\x74\x68\x20\x4e\x55\x4c\x73\x00\x5b\x2d\x71\x66\x77\x72\x73" \
-"\x76\x5d\x20\x4d\x4f\x44\x55\x4c\x45\x20\x5b\x73\x79\x6d\x62\x6f" \
-"\x6c\x3d\x76\x61\x6c\x75\x65\x5d\x2e\x2e\x2e\x0a\x0a\x09\x2d\x72" \
-"\x09\x52\x65\x6d\x6f\x76\x65\x20\x4d\x4f\x44\x55\x4c\x45\x20\x28" \
-"\x73\x74\x61\x63\x6b\x73\x29\x20\x6f\x72\x20\x64\x6f\x20\x61\x75" \
-"\x74\x6f\x63\x6c\x65\x61\x6e\x0a\x09\x2d\x71\x09\x51\x75\x69\x65" \
-"\x74\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d" \
-"\x66\x09\x46\x6f\x72\x63\x65\x0a\x09\x2d\x77\x09\x57\x61\x69\x74" \
-"\x20\x66\x6f\x72\x20\x75\x6e\x6c\x6f\x61\x64\x0a\x09\x2d\x73\x09" \
-"\x52\x65\x70\x6f\x72\x74\x20\x76\x69\x61\x20\x73\x79\x73\x6c\x6f" \
-"\x67\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x73\x74\x64" \
-"\x65\x72\x72\x00\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x56" \
-"\x69\x65\x77\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20\x73\x74\x64" \
-"\x69\x6e\x29\x20\x6f\x6e\x65\x20\x73\x63\x72\x65\x65\x6e\x66\x75" \
-"\x6c\x20\x61\x74\x20\x61\x20\x74\x69\x6d\x65\x00\x5b\x4f\x50\x54" \
-"\x49\x4f\x4e\x53\x5d\x20\x5b\x2d\x6f\x20\x4f\x50\x54\x53\x5d\x20" \
-"\x44\x45\x56\x49\x43\x45\x20\x4e\x4f\x44\x45\x0a\x0a\x4d\x6f\x75" \
-"\x6e\x74\x20\x61\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x2e" \
-"\x20\x46\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x20\x61\x75\x74\x6f" \
-"\x64\x65\x74\x65\x63\x74\x69\x6f\x6e\x20\x72\x65\x71\x75\x69\x72" \
-"\x65\x73\x20\x2f\x70\x72\x6f\x63\x2e\x0a\x0a\x09\x2d\x61\x09\x09" \
-"\x4d\x6f\x75\x6e\x74\x20\x61\x6c\x6c\x20\x66\x69\x6c\x65\x73\x79" \
-"\x73\x74\x65\x6d\x73\x20\x69\x6e\x20\x66\x73\x74\x61\x62\x0a\x09" \
-"\x2d\x66\x09\x09\x44\x72\x79\x20\x72\x75\x6e\x0a\x09\x2d\x76\x09" \
-"\x09\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x72\x09\x09\x52\x65" \
-"\x61\x64\x2d\x6f\x6e\x6c\x79\x20\x6d\x6f\x75\x6e\x74\x0a\x09\x2d" \
-"\x77\x09\x09\x52\x65\x61\x64\x2d\x77\x72\x69\x74\x65\x20\x6d\x6f" \
-"\x75\x6e\x74\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x0a\x09\x2d" \
-"\x74\x20\x46\x53\x54\x59\x50\x45\x5b\x2c\x2e\x2e\x2e\x5d\x09\x46" \
-"\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x20\x74\x79\x70\x65\x28\x73" \
-"\x29\x0a\x09\x2d\x4f\x20\x4f\x50\x54\x09\x09\x4d\x6f\x75\x6e\x74" \
-"\x20\x6f\x6e\x6c\x79\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d" \
-"\x73\x20\x77\x69\x74\x68\x20\x6f\x70\x74\x69\x6f\x6e\x20\x4f\x50" \
-"\x54\x20\x28\x2d\x61\x20\x6f\x6e\x6c\x79\x29\x0a\x2d\x6f\x20\x4f" \
-"\x50\x54\x3a\x0a\x09\x6c\x6f\x6f\x70\x09\x09\x49\x67\x6e\x6f\x72" \
-"\x65\x64\x20\x28\x6c\x6f\x6f\x70\x20\x64\x65\x76\x69\x63\x65\x73" \
-"\x20\x61\x72\x65\x20\x61\x75\x74\x6f\x64\x65\x74\x65\x63\x74\x65" \
-"\x64\x29\x0a\x09\x5b\x61\x5d\x73\x79\x6e\x63\x09\x09\x57\x72\x69" \
-"\x74\x65\x73\x20\x61\x72\x65\x20\x5b\x61\x5d\x73\x79\x6e\x63\x68" \
-"\x72\x6f\x6e\x6f\x75\x73\x0a\x09\x5b\x6e\x6f\x5d\x61\x74\x69\x6d" \
-"\x65\x09\x44\x69\x73\x61\x62\x6c\x65\x2f\x65\x6e\x61\x62\x6c\x65" \
-"\x20\x75\x70\x64\x61\x74\x65\x73\x20\x74\x6f\x20\x69\x6e\x6f\x64" \
-"\x65\x20\x61\x63\x63\x65\x73\x73\x20\x74\x69\x6d\x65\x73\x0a\x09" \
-"\x5b\x6e\x6f\x5d\x64\x69\x72\x61\x74\x69\x6d\x65\x09\x44\x69\x73" \
-"\x61\x62\x6c\x65\x2f\x65\x6e\x61\x62\x6c\x65\x20\x61\x74\x69\x6d" \
-"\x65\x20\x75\x70\x64\x61\x74\x65\x73\x20\x74\x6f\x20\x64\x69\x72" \
-"\x65\x63\x74\x6f\x72\x69\x65\x73\x0a\x09\x5b\x6e\x6f\x5d\x72\x65" \
-"\x6c\x61\x74\x69\x6d\x65\x09\x44\x69\x73\x61\x62\x6c\x65\x2f\x65" \
-"\x6e\x61\x62\x6c\x65\x20\x61\x74\x69\x6d\x65\x20\x75\x70\x64\x61" \
-"\x74\x65\x73\x20\x72\x65\x6c\x61\x74\x69\x76\x65\x20\x74\x6f\x20" \
-"\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x74\x69\x6d" \
-"\x65\x0a\x09\x5b\x6e\x6f\x5d\x64\x65\x76\x09\x09\x28\x44\x69\x73" \
-"\x29\x61\x6c\x6c\x6f\x77\x20\x75\x73\x65\x20\x6f\x66\x20\x73\x70" \
-"\x65\x63\x69\x61\x6c\x20\x64\x65\x76\x69\x63\x65\x20\x66\x69\x6c" \
-"\x65\x73\x0a\x09\x5b\x6e\x6f\x5d\x65\x78\x65\x63\x09\x28\x44\x69" \
-"\x73\x29\x61\x6c\x6c\x6f\x77\x20\x75\x73\x65\x20\x6f\x66\x20\x65" \
-"\x78\x65\x63\x75\x74\x61\x62\x6c\x65\x20\x66\x69\x6c\x65\x73\x0a" \
-"\x09\x5b\x6e\x6f\x5d\x73\x75\x69\x64\x09\x28\x44\x69\x73\x29\x61" \
-"\x6c\x6c\x6f\x77\x20\x73\x65\x74\x2d\x75\x73\x65\x72\x2d\x69\x64" \
-"\x2d\x72\x6f\x6f\x74\x20\x70\x72\x6f\x67\x72\x61\x6d\x73\x0a\x09" \
-"\x5b\x72\x5d\x73\x68\x61\x72\x65\x64\x09\x43\x6f\x6e\x76\x65\x72" \
-"\x74\x20\x5b\x72\x65\x63\x75\x72\x73\x69\x76\x65\x6c\x79\x5d\x20" \
-"\x74\x6f\x20\x61\x20\x73\x68\x61\x72\x65\x64\x20\x73\x75\x62\x74" \
-"\x72\x65\x65\x0a\x09\x5b\x72\x5d\x73\x6c\x61\x76\x65\x09\x43\x6f" \
-"\x6e\x76\x65\x72\x74\x20\x5b\x72\x65\x63\x75\x72\x73\x69\x76\x65" \
-"\x6c\x79\x5d\x20\x74\x6f\x20\x61\x20\x73\x6c\x61\x76\x65\x20\x73" \
-"\x75\x62\x74\x72\x65\x65\x0a\x09\x5b\x72\x5d\x70\x72\x69\x76\x61" \
-"\x74\x65\x09\x43\x6f\x6e\x76\x65\x72\x74\x20\x5b\x72\x65\x63\x75" \
-"\x72\x73\x69\x76\x65\x6c\x79\x5d\x20\x74\x6f\x20\x61\x20\x70\x72" \
-"\x69\x76\x61\x74\x65\x20\x73\x75\x62\x74\x72\x65\x65\x0a\x09\x5b" \
-"\x75\x6e\x5d\x62\x69\x6e\x64\x61\x62\x6c\x65\x09\x4d\x61\x6b\x65" \
-"\x20\x6d\x6f\x75\x6e\x74\x20\x70\x6f\x69\x6e\x74\x20\x5b\x75\x6e" \
-"\x5d\x61\x62\x6c\x65\x20\x74\x6f\x20\x62\x65\x20\x62\x69\x6e\x64" \
-"\x20\x6d\x6f\x75\x6e\x74\x65\x64\x0a\x09\x5b\x72\x5d\x62\x69\x6e" \
-"\x64\x09\x09\x42\x69\x6e\x64\x20\x61\x20\x66\x69\x6c\x65\x20\x6f" \
-"\x72\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x5b\x72\x65\x63" \
-"\x75\x72\x73\x69\x76\x65\x6c\x79\x5d\x20\x74\x6f\x20\x61\x6e\x6f" \
-"\x74\x68\x65\x72\x20\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x0a\x09\x6d" \
-"\x6f\x76\x65\x09\x09\x52\x65\x6c\x6f\x63\x61\x74\x65\x20\x61\x6e" \
-"\x20\x65\x78\x69\x73\x74\x69\x6e\x67\x20\x6d\x6f\x75\x6e\x74\x20" \
-"\x70\x6f\x69\x6e\x74\x0a\x09\x72\x65\x6d\x6f\x75\x6e\x74\x09\x09" \
-"\x52\x65\x6d\x6f\x75\x6e\x74\x20\x61\x20\x6d\x6f\x75\x6e\x74\x65" \
-"\x64\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x2c\x20\x63\x68" \
-"\x61\x6e\x67\x69\x6e\x67\x20\x66\x6c\x61\x67\x73\x0a\x09\x72\x6f" \
-"\x2f\x72\x77\x09\x09\x53\x61\x6d\x65\x20\x61\x73\x20\x2d\x72\x2f" \
-"\x2d\x77\x0a\x0a\x54\x68\x65\x72\x65\x20\x61\x72\x65\x20\x66\x69" \
-"\x6c\x65\x73\x79\x73\x74\x65\x6d\x2d\x73\x70\x65\x63\x69\x66\x69" \
-"\x63\x20\x2d\x6f\x20\x66\x6c\x61\x67\x73\x2e\x00\x5b\x2d\x71\x5d" \
-"\x20\x3c\x5b\x2d\x64\x6e\x5d\x20\x44\x49\x52\x20\x7c\x20\x2d\x78" \
-"\x20\x44\x45\x56\x49\x43\x45\x3e\x0a\x0a\x43\x68\x65\x63\x6b\x20" \
-"\x69\x66\x20\x74\x68\x65\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79" \
-"\x20\x69\x73\x20\x61\x20\x6d\x6f\x75\x6e\x74\x70\x6f\x69\x6e\x74" \
-"\x0a\x0a\x09\x2d\x71\x09\x51\x75\x69\x65\x74\x0a\x09\x2d\x64\x09" \
-"\x50\x72\x69\x6e\x74\x20\x6d\x61\x6a\x6f\x72\x2f\x6d\x69\x6e\x6f" \
-"\x72\x20\x64\x65\x76\x69\x63\x65\x20\x6e\x75\x6d\x62\x65\x72\x20" \
-"\x6f\x66\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65" \
-"\x6d\x0a\x09\x2d\x6e\x09\x50\x72\x69\x6e\x74\x20\x64\x65\x76\x69" \
-"\x63\x65\x20\x6e\x61\x6d\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x66" \
-"\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x0a\x09\x2d\x78\x09\x50\x72" \
-"\x69\x6e\x74\x20\x6d\x61\x6a\x6f\x72\x2f\x6d\x69\x6e\x6f\x72\x20" \
-"\x64\x65\x76\x69\x63\x65\x20\x6e\x75\x6d\x62\x65\x72\x20\x6f\x66" \
-"\x20\x74\x68\x65\x20\x62\x6c\x6f\x63\x6b\x64\x65\x76\x69\x63\x65" \
-"\x00\x5b\x2d\x41\x5d\x20\x5b\x2d\x49\x20\x53\x55\x4d\x7c\x43\x50" \
-"\x55\x7c\x41\x4c\x4c\x7c\x53\x43\x50\x55\x5d\x20\x5b\x2d\x75\x5d" \
-"\x20\x5b\x2d\x50\x20\x6e\x75\x6d\x7c\x41\x4c\x4c\x5d\x20\x5b\x49" \
-"\x4e\x54\x45\x52\x56\x41\x4c\x20\x5b\x43\x4f\x55\x4e\x54\x5d\x5d" \
-"\x0a\x0a\x50\x65\x72\x2d\x70\x72\x6f\x63\x65\x73\x73\x6f\x72\x20" \
-"\x73\x74\x61\x74\x69\x73\x74\x69\x63\x73\x0a\x0a\x09\x2d\x41\x09" \
-"\x09\x09\x53\x61\x6d\x65\x20\x61\x73\x20\x2d\x49\x20\x41\x4c\x4c" \
-"\x20\x2d\x75\x20\x2d\x50\x20\x41\x4c\x4c\x0a\x09\x2d\x49\x20\x53" \
-"\x55\x4d\x7c\x43\x50\x55\x7c\x41\x4c\x4c\x7c\x53\x43\x50\x55\x09" \
-"\x52\x65\x70\x6f\x72\x74\x20\x69\x6e\x74\x65\x72\x72\x75\x70\x74" \
-"\x20\x73\x74\x61\x74\x69\x73\x74\x69\x63\x73\x0a\x09\x2d\x50\x20" \
-"\x6e\x75\x6d\x7c\x41\x4c\x4c\x09\x09\x50\x72\x6f\x63\x65\x73\x73" \
-"\x6f\x72\x20\x74\x6f\x20\x6d\x6f\x6e\x69\x74\x6f\x72\x0a\x09\x2d" \
-"\x75\x09\x09\x09\x52\x65\x70\x6f\x72\x74\x20\x43\x50\x55\x20\x75" \
-"\x74\x69\x6c\x69\x7a\x61\x74\x69\x6f\x6e\x00\x5b\x2d\x66\x69\x6e" \
-"\x5d\x20\x53\x4f\x55\x52\x43\x45\x20\x44\x45\x53\x54\x0a\x6f\x72" \
-"\x3a\x20\x6d\x76\x20\x5b\x2d\x66\x69\x6e\x5d\x20\x53\x4f\x55\x52" \
-"\x43\x45\x2e\x2e\x2e\x20\x44\x49\x52\x45\x43\x54\x4f\x52\x59\x0a" \
-"\x0a\x52\x65\x6e\x61\x6d\x65\x20\x53\x4f\x55\x52\x43\x45\x20\x74" \
-"\x6f\x20\x44\x45\x53\x54\x2c\x20\x6f\x72\x20\x6d\x6f\x76\x65\x20" \
-"\x53\x4f\x55\x52\x43\x45\x28\x73\x29\x20\x74\x6f\x20\x44\x49\x52" \
-"\x45\x43\x54\x4f\x52\x59\x0a\x0a\x09\x2d\x66\x09\x44\x6f\x6e\x27" \
-"\x74\x20\x70\x72\x6f\x6d\x70\x74\x20\x62\x65\x66\x6f\x72\x65\x20" \
-"\x6f\x76\x65\x72\x77\x72\x69\x74\x69\x6e\x67\x0a\x09\x2d\x69\x09" \
-"\x49\x6e\x74\x65\x72\x61\x63\x74\x69\x76\x65\x2c\x20\x70\x72\x6f" \
-"\x6d\x70\x74\x20\x62\x65\x66\x6f\x72\x65\x20\x6f\x76\x65\x72\x77" \
-"\x72\x69\x74\x65\x0a\x09\x2d\x6e\x09\x44\x6f\x6e\x27\x74\x20\x6f" \
-"\x76\x65\x72\x77\x72\x69\x74\x65\x20\x61\x6e\x20\x65\x78\x69\x73" \
-"\x74\x69\x6e\x67\x20\x66\x69\x6c\x65\x00\x5b\x2d\x6f\x5d\x20\x5b" \
-"\x2d\x62\x5d\x20\x5b\x2d\x73\x20\x41\x44\x44\x52\x5d\x20\x5b\x2d" \
-"\x66\x20\x46\x49\x4c\x45\x5d\x20\x4d\x54\x44\x5f\x44\x45\x56\x49" \
-"\x43\x45\x0a\x0a\x44\x75\x6d\x70\x20\x74\x68\x65\x20\x73\x70\x65" \
-"\x63\x69\x66\x69\x65\x64\x20\x4d\x54\x44\x20\x64\x65\x76\x69\x63" \
-"\x65\x0a\x0a\x09\x2d\x6f\x09\x44\x75\x6d\x70\x20\x6f\x6f\x62\x20" \
-"\x64\x61\x74\x61\x0a\x09\x2d\x62\x09\x4f\x6d\x69\x74\x20\x62\x61" \
-"\x64\x20\x62\x6c\x6f\x63\x6b\x20\x66\x72\x6f\x6d\x20\x74\x68\x65" \
-"\x20\x64\x75\x6d\x70\x0a\x09\x2d\x73\x20\x41\x44\x44\x52\x09\x53" \
-"\x74\x61\x72\x74\x20\x61\x64\x64\x72\x65\x73\x73\x0a\x09\x2d\x6c" \
-"\x20\x4c\x45\x4e\x09\x4c\x65\x6e\x67\x74\x68\x0a\x09\x2d\x66\x20" \
-"\x46\x49\x4c\x45\x09\x44\x75\x6d\x70\x20\x74\x6f\x20\x66\x69\x6c" \
-"\x65\x20\x28\x27\x2d\x27\x20\x66\x6f\x72\x20\x73\x74\x64\x6f\x75" \
-"\x74\x29\x00\x5b\x2d\x70\x5d\x20\x5b\x2d\x73\x20\x41\x44\x44\x52" \
-"\x5d\x20\x4d\x54\x44\x5f\x44\x45\x56\x49\x43\x45\x20\x5b\x46\x49" \
-"\x4c\x45\x5d\x0a\x0a\x57\x72\x69\x74\x65\x20\x74\x6f\x20\x74\x68" \
-"\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x4d\x54\x44\x20" \
-"\x64\x65\x76\x69\x63\x65\x0a\x0a\x09\x2d\x70\x09\x50\x61\x64\x20" \
-"\x74\x6f\x20\x70\x61\x67\x65\x20\x73\x69\x7a\x65\x0a\x09\x2d\x73" \
-"\x20\x41\x44\x44\x52\x09\x53\x74\x61\x72\x74\x20\x61\x64\x64\x72" \
-"\x65\x73\x73\x00\x48\x4f\x53\x54\x20\x50\x4f\x52\x54\x20\x42\x4c" \
-"\x4f\x43\x4b\x44\x45\x56\x0a\x0a\x43\x6f\x6e\x6e\x65\x63\x74\x20" \
-"\x74\x6f\x20\x48\x4f\x53\x54\x20\x61\x6e\x64\x20\x70\x72\x6f\x76" \
-"\x69\x64\x65\x20\x61\x20\x6e\x65\x74\x77\x6f\x72\x6b\x20\x62\x6c" \
-"\x6f\x63\x6b\x20\x64\x65\x76\x69\x63\x65\x20\x6f\x6e\x20\x42\x4c" \
-"\x4f\x43\x4b\x44\x45\x56\x00\x5b\x2d\x69\x4e\x5d\x20\x5b\x2d\x77" \
-"\x4e\x5d\x20\x5b\x2d\x6c\x5d\x20\x5b\x2d\x70\x20\x50\x4f\x52\x54" \
-"\x5d\x20\x5b\x2d\x66\x20\x46\x49\x4c\x45\x7c\x49\x50\x41\x44\x44" \
-"\x52\x20\x50\x4f\x52\x54\x5d\x20\x5b\x2d\x65\x20\x50\x52\x4f\x47" \
-"\x5d\x0a\x0a\x4f\x70\x65\x6e\x20\x61\x20\x70\x69\x70\x65\x20\x74" \
-"\x6f\x20\x49\x50\x3a\x50\x4f\x52\x54\x20\x6f\x72\x20\x46\x49\x4c" \
-"\x45\x0a\x0a\x09\x2d\x65\x20\x50\x52\x4f\x47\x09\x52\x75\x6e\x20" \
-"\x50\x52\x4f\x47\x20\x61\x66\x74\x65\x72\x20\x63\x6f\x6e\x6e\x65" \
-"\x63\x74\x0a\x09\x2d\x6c\x09\x4c\x69\x73\x74\x65\x6e\x20\x6d\x6f" \
-"\x64\x65\x2c\x20\x66\x6f\x72\x20\x69\x6e\x62\x6f\x75\x6e\x64\x20" \
-"\x63\x6f\x6e\x6e\x65\x63\x74\x73\x0a\x09\x09\x28\x75\x73\x65\x20" \
-"\x2d\x6c\x20\x74\x77\x69\x63\x65\x20\x77\x69\x74\x68\x20\x2d\x65" \
-"\x20\x66\x6f\x72\x20\x70\x65\x72\x73\x69\x73\x74\x65\x6e\x74\x20" \
-"\x73\x65\x72\x76\x65\x72\x29\x0a\x09\x2d\x70\x20\x50\x4f\x52\x54" \
-"\x09\x4c\x6f\x63\x61\x6c\x20\x70\x6f\x72\x74\x0a\x09\x2d\x77\x20" \
-"\x53\x45\x43\x09\x54\x69\x6d\x65\x6f\x75\x74\x20\x66\x6f\x72\x20" \
-"\x63\x6f\x6e\x6e\x65\x63\x74\x0a\x09\x2d\x69\x20\x53\x45\x43\x09" \
-"\x44\x65\x6c\x61\x79\x20\x69\x6e\x74\x65\x72\x76\x61\x6c\x20\x66" \
-"\x6f\x72\x20\x6c\x69\x6e\x65\x73\x20\x73\x65\x6e\x74\x0a\x09\x2d" \
-"\x66\x20\x46\x49\x4c\x45\x09\x55\x73\x65\x20\x66\x69\x6c\x65\x20" \
-"\x28\x61\x6c\x61\x20\x2f\x64\x65\x76\x2f\x74\x74\x79\x53\x30\x29" \
-"\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x6e\x65\x74\x77" \
-"\x6f\x72\x6b\x00\x5b\x2d\x72\x61\x6c\x5d\x20\x5b\x2d\x74\x75\x77" \
-"\x78\x5d\x20\x5b\x2d\x65\x6e\x57\x70\x5d\x0a\x0a\x44\x69\x73\x70" \
-"\x6c\x61\x79\x20\x6e\x65\x74\x77\x6f\x72\x6b\x69\x6e\x67\x20\x69" \
-"\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x0a\x0a\x09\x2d\x72\x09" \
-"\x52\x6f\x75\x74\x69\x6e\x67\x20\x74\x61\x62\x6c\x65\x0a\x09\x2d" \
-"\x61\x09\x41\x6c\x6c\x20\x73\x6f\x63\x6b\x65\x74\x73\x0a\x09\x2d" \
-"\x6c\x09\x4c\x69\x73\x74\x65\x6e\x69\x6e\x67\x20\x73\x6f\x63\x6b" \
-"\x65\x74\x73\x0a\x09\x09\x45\x6c\x73\x65\x3a\x20\x63\x6f\x6e\x6e" \
-"\x65\x63\x74\x65\x64\x20\x73\x6f\x63\x6b\x65\x74\x73\x0a\x09\x2d" \
-"\x74\x09\x54\x43\x50\x20\x73\x6f\x63\x6b\x65\x74\x73\x0a\x09\x2d" \
-"\x75\x09\x55\x44\x50\x20\x73\x6f\x63\x6b\x65\x74\x73\x0a\x09\x2d" \
-"\x77\x09\x52\x61\x77\x20\x73\x6f\x63\x6b\x65\x74\x73\x0a\x09\x2d" \
-"\x78\x09\x55\x6e\x69\x78\x20\x73\x6f\x63\x6b\x65\x74\x73\x0a\x09" \
-"\x09\x45\x6c\x73\x65\x3a\x20\x61\x6c\x6c\x20\x73\x6f\x63\x6b\x65" \
-"\x74\x20\x74\x79\x70\x65\x73\x0a\x09\x2d\x65\x09\x4f\x74\x68\x65" \
-"\x72\x2f\x6d\x6f\x72\x65\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69" \
-"\x6f\x6e\x0a\x09\x2d\x6e\x09\x44\x6f\x6e\x27\x74\x20\x72\x65\x73" \
-"\x6f\x6c\x76\x65\x20\x6e\x61\x6d\x65\x73\x0a\x09\x2d\x57\x09\x57" \
-"\x69\x64\x65\x20\x64\x69\x73\x70\x6c\x61\x79\x0a\x09\x2d\x70\x09" \
-"\x53\x68\x6f\x77\x20\x50\x49\x44\x2f\x70\x72\x6f\x67\x72\x61\x6d" \
-"\x20\x6e\x61\x6d\x65\x20\x66\x6f\x72\x20\x73\x6f\x63\x6b\x65\x74" \
-"\x73\x00\x5b\x2d\x6e\x20\x41\x44\x4a\x55\x53\x54\x5d\x20\x5b\x50" \
-"\x52\x4f\x47\x20\x41\x52\x47\x53\x5d\x0a\x0a\x43\x68\x61\x6e\x67" \
-"\x65\x20\x73\x63\x68\x65\x64\x75\x6c\x69\x6e\x67\x20\x70\x72\x69" \
-"\x6f\x72\x69\x74\x79\x2c\x20\x72\x75\x6e\x20\x50\x52\x4f\x47\x0a" \
-"\x0a\x09\x2d\x6e\x20\x41\x44\x4a\x55\x53\x54\x09\x41\x64\x6a\x75" \
-"\x73\x74\x20\x70\x72\x69\x6f\x72\x69\x74\x79\x20\x62\x79\x20\x41" \
-"\x44\x4a\x55\x53\x54\x00\x50\x52\x4f\x47\x20\x41\x52\x47\x53\x0a" \
-"\x0a\x52\x75\x6e\x20\x50\x52\x4f\x47\x20\x69\x6d\x6d\x75\x6e\x65" \
-"\x20\x74\x6f\x20\x68\x61\x6e\x67\x75\x70\x73\x2c\x20\x77\x69\x74" \
-"\x68\x20\x6f\x75\x74\x70\x75\x74\x20\x74\x6f\x20\x61\x20\x6e\x6f" \
-"\x6e\x2d\x74\x74\x79\x00\x5b\x48\x4f\x53\x54\x5d\x20\x5b\x53\x45" \
-"\x52\x56\x45\x52\x5d\x0a\x0a\x51\x75\x65\x72\x79\x20\x74\x68\x65" \
-"\x20\x6e\x61\x6d\x65\x73\x65\x72\x76\x65\x72\x20\x66\x6f\x72\x20" \
-"\x74\x68\x65\x20\x49\x50\x20\x61\x64\x64\x72\x65\x73\x73\x20\x6f" \
-"\x66\x20\x74\x68\x65\x20\x67\x69\x76\x65\x6e\x20\x48\x4f\x53\x54" \
-"\x0a\x6f\x70\x74\x69\x6f\x6e\x61\x6c\x6c\x79\x20\x75\x73\x69\x6e" \
-"\x67\x20\x61\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x44\x4e" \
-"\x53\x20\x73\x65\x72\x76\x65\x72\x00\x5b\x2d\x64\x6e\x71\x4e\x77" \
-"\x5d\x20\x5b\x2d\x53\x20\x50\x52\x4f\x47\x5d\x20\x5b\x2d\x70\x20" \
-"\x50\x45\x45\x52\x5d\x2e\x2e\x2e\x0a\x0a\x4e\x54\x50\x20\x63\x6c" \
-"\x69\x65\x6e\x74\x2f\x73\x65\x72\x76\x65\x72\x0a\x0a\x09\x2d\x64" \
-"\x09\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x6e\x09\x44\x6f\x20" \
-"\x6e\x6f\x74\x20\x64\x61\x65\x6d\x6f\x6e\x69\x7a\x65\x0a\x09\x2d" \
-"\x71\x09\x51\x75\x69\x74\x20\x61\x66\x74\x65\x72\x20\x63\x6c\x6f" \
-"\x63\x6b\x20\x69\x73\x20\x73\x65\x74\x0a\x09\x2d\x4e\x09\x52\x75" \
-"\x6e\x20\x61\x74\x20\x68\x69\x67\x68\x20\x70\x72\x69\x6f\x72\x69" \
-"\x74\x79\x0a\x09\x2d\x77\x09\x44\x6f\x20\x6e\x6f\x74\x20\x73\x65" \
-"\x74\x20\x74\x69\x6d\x65\x20\x28\x6f\x6e\x6c\x79\x20\x71\x75\x65" \
-"\x72\x79\x20\x70\x65\x65\x72\x73\x29\x2c\x20\x69\x6d\x70\x6c\x69" \
-"\x65\x73\x20\x2d\x6e\x0a\x09\x2d\x53\x20\x50\x52\x4f\x47\x09\x52" \
-"\x75\x6e\x20\x50\x52\x4f\x47\x20\x61\x66\x74\x65\x72\x20\x73\x74" \
-"\x65\x70\x70\x69\x6e\x67\x20\x74\x69\x6d\x65\x2c\x20\x73\x74\x72" \
-"\x61\x74\x75\x6d\x20\x63\x68\x61\x6e\x67\x65\x2c\x20\x61\x6e\x64" \
-"\x20\x65\x76\x65\x72\x79\x20\x31\x31\x20\x6d\x69\x6e\x73\x0a\x09" \
-"\x2d\x70\x20\x50\x45\x45\x52\x09\x4f\x62\x74\x61\x69\x6e\x20\x74" \
-"\x69\x6d\x65\x20\x66\x72\x6f\x6d\x20\x50\x45\x45\x52\x20\x28\x6d" \
-"\x61\x79\x20\x62\x65\x20\x72\x65\x70\x65\x61\x74\x65\x64\x29\x00" \
-"\x5b\x2d\x61\x42\x62\x63\x44\x64\x65\x46\x66\x48\x68\x49\x69\x4c" \
-"\x6c\x4f\x6f\x76\x58\x78\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x0a\x0a" \
-"\x50\x72\x69\x6e\x74\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20\x73" \
-"\x74\x64\x69\x6e\x29\x20\x75\x6e\x61\x6d\x62\x69\x67\x75\x6f\x75" \
-"\x73\x6c\x79\x2c\x20\x61\x73\x20\x6f\x63\x74\x61\x6c\x20\x62\x79" \
-"\x74\x65\x73\x20\x62\x79\x20\x64\x65\x66\x61\x75\x6c\x74\x00\x5b" \
-"\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x4f\x52\x49\x47\x46\x49" \
-"\x4c\x45\x20\x5b\x50\x41\x54\x43\x48\x46\x49\x4c\x45\x5d\x5d\x0a" \
-"\x0a\x09\x2d\x70\x2c\x2d\x2d\x73\x74\x72\x69\x70\x20\x4e\x09\x09" \
-"\x53\x74\x72\x69\x70\x20\x4e\x20\x6c\x65\x61\x64\x69\x6e\x67\x20" \
-"\x63\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x73\x20\x66\x72\x6f\x6d\x20" \
-"\x66\x69\x6c\x65\x20\x6e\x61\x6d\x65\x73\x0a\x09\x2d\x69\x2c\x2d" \
-"\x2d\x69\x6e\x70\x75\x74\x20\x44\x49\x46\x46\x09\x09\x52\x65\x61" \
-"\x64\x20\x44\x49\x46\x46\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f" \
-"\x66\x20\x73\x74\x64\x69\x6e\x0a\x09\x2d\x52\x2c\x2d\x2d\x72\x65" \
-"\x76\x65\x72\x73\x65\x09\x09\x52\x65\x76\x65\x72\x73\x65\x20\x70" \
-"\x61\x74\x63\x68\x0a\x09\x2d\x4e\x2c\x2d\x2d\x66\x6f\x72\x77\x61" \
-"\x72\x64\x09\x09\x49\x67\x6e\x6f\x72\x65\x20\x61\x6c\x72\x65\x61" \
-"\x64\x79\x20\x61\x70\x70\x6c\x69\x65\x64\x20\x70\x61\x74\x63\x68" \
-"\x65\x73\x0a\x09\x2d\x45\x2c\x2d\x2d\x72\x65\x6d\x6f\x76\x65\x2d" \
-"\x65\x6d\x70\x74\x79\x2d\x66\x69\x6c\x65\x73\x09\x52\x65\x6d\x6f" \
-"\x76\x65\x20\x6f\x75\x74\x70\x75\x74\x20\x66\x69\x6c\x65\x73\x20" \
-"\x69\x66\x20\x74\x68\x65\x79\x20\x62\x65\x63\x6f\x6d\x65\x20\x65" \
-"\x6d\x70\x74\x79\x00\x5b\x2d\x66\x6c\x6e\x6f\x76\x78\x5d\x20\x5b" \
-"\x2d\x73\x20\x53\x49\x44\x7c\x2d\x50\x20\x50\x50\x49\x44\x7c\x50" \
-"\x41\x54\x54\x45\x52\x4e\x5d\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79" \
-"\x20\x70\x72\x6f\x63\x65\x73\x73\x28\x65\x73\x29\x20\x73\x65\x6c" \
-"\x65\x63\x74\x65\x64\x20\x62\x79\x20\x72\x65\x67\x65\x78\x20\x50" \
-"\x41\x54\x54\x45\x52\x4e\x0a\x0a\x09\x2d\x6c\x09\x53\x68\x6f\x77" \
-"\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6e\x61\x6d\x65\x20\x74\x6f" \
-"\x6f\x0a\x09\x2d\x66\x09\x4d\x61\x74\x63\x68\x20\x61\x67\x61\x69" \
-"\x6e\x73\x74\x20\x65\x6e\x74\x69\x72\x65\x20\x63\x6f\x6d\x6d\x61" \
-"\x6e\x64\x20\x6c\x69\x6e\x65\x0a\x09\x2d\x6e\x09\x53\x68\x6f\x77" \
-"\x20\x74\x68\x65\x20\x6e\x65\x77\x65\x73\x74\x20\x70\x72\x6f\x63" \
-"\x65\x73\x73\x20\x6f\x6e\x6c\x79\x0a\x09\x2d\x6f\x09\x53\x68\x6f" \
-"\x77\x20\x74\x68\x65\x20\x6f\x6c\x64\x65\x73\x74\x20\x70\x72\x6f" \
-"\x63\x65\x73\x73\x20\x6f\x6e\x6c\x79\x0a\x09\x2d\x76\x09\x4e\x65" \
-"\x67\x61\x74\x65\x20\x74\x68\x65\x20\x6d\x61\x74\x63\x68\x0a\x09" \
-"\x2d\x78\x09\x4d\x61\x74\x63\x68\x20\x77\x68\x6f\x6c\x65\x20\x6e" \
-"\x61\x6d\x65\x20\x28\x6e\x6f\x74\x20\x73\x75\x62\x73\x74\x72\x69" \
-"\x6e\x67\x29\x0a\x09\x2d\x73\x09\x4d\x61\x74\x63\x68\x20\x73\x65" \
-"\x73\x73\x69\x6f\x6e\x20\x49\x44\x20\x28\x30\x20\x66\x6f\x72\x20" \
-"\x63\x75\x72\x72\x65\x6e\x74\x29\x0a\x09\x2d\x50\x09\x4d\x61\x74" \
-"\x63\x68\x20\x70\x61\x72\x65\x6e\x74\x20\x70\x72\x6f\x63\x65\x73" \
-"\x73\x20\x49\x44\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b" \
-"\x4e\x41\x4d\x45\x5d\x2e\x2e\x2e\x0a\x0a\x4c\x69\x73\x74\x20\x50" \
-"\x49\x44\x73\x20\x6f\x66\x20\x61\x6c\x6c\x20\x70\x72\x6f\x63\x65" \
-"\x73\x73\x65\x73\x20\x77\x69\x74\x68\x20\x6e\x61\x6d\x65\x73\x20" \
-"\x74\x68\x61\x74\x20\x6d\x61\x74\x63\x68\x20\x4e\x41\x4d\x45\x73" \
-"\x0a\x0a\x09\x2d\x73\x09\x53\x68\x6f\x77\x20\x6f\x6e\x6c\x79\x20" \
-"\x6f\x6e\x65\x20\x50\x49\x44\x0a\x09\x2d\x6f\x20\x50\x49\x44\x09" \
-"\x4f\x6d\x69\x74\x20\x67\x69\x76\x65\x6e\x20\x70\x69\x64\x0a\x09" \
-"\x09\x55\x73\x65\x20\x25\x50\x50\x49\x44\x20\x74\x6f\x20\x6f\x6d" \
-"\x69\x74\x20\x70\x69\x64\x20\x6f\x66\x20\x70\x69\x64\x6f\x66\x27" \
-"\x73\x20\x70\x61\x72\x65\x6e\x74\x00\x5b\x4f\x50\x54\x49\x4f\x4e" \
-"\x53\x5d\x20\x48\x4f\x53\x54\x0a\x0a\x53\x65\x6e\x64\x20\x49\x43" \
-"\x4d\x50\x20\x45\x43\x48\x4f\x5f\x52\x45\x51\x55\x45\x53\x54\x20" \
-"\x70\x61\x63\x6b\x65\x74\x73\x20\x74\x6f\x20\x6e\x65\x74\x77\x6f" \
-"\x72\x6b\x20\x68\x6f\x73\x74\x73\x0a\x0a\x09\x2d\x34\x2c\x2d\x36" \
-"\x09\x09\x46\x6f\x72\x63\x65\x20\x49\x50\x20\x6f\x72\x20\x49\x50" \
-"\x76\x36\x20\x6e\x61\x6d\x65\x20\x72\x65\x73\x6f\x6c\x75\x74\x69" \
-"\x6f\x6e\x0a\x09\x2d\x63\x20\x43\x4e\x54\x09\x09\x53\x65\x6e\x64" \
-"\x20\x6f\x6e\x6c\x79\x20\x43\x4e\x54\x20\x70\x69\x6e\x67\x73\x0a" \
-"\x09\x2d\x73\x20\x53\x49\x5a\x45\x09\x09\x53\x65\x6e\x64\x20\x53" \
-"\x49\x5a\x45\x20\x64\x61\x74\x61\x20\x62\x79\x74\x65\x73\x20\x69" \
-"\x6e\x20\x70\x61\x63\x6b\x65\x74\x73\x20\x28\x64\x65\x66\x61\x75" \
-"\x6c\x74\x3a\x35\x36\x29\x0a\x09\x2d\x74\x20\x54\x54\x4c\x09\x09" \
-"\x53\x65\x74\x20\x54\x54\x4c\x0a\x09\x2d\x49\x20\x49\x46\x41\x43" \
-"\x45\x2f\x49\x50\x09\x55\x73\x65\x20\x69\x6e\x74\x65\x72\x66\x61" \
-"\x63\x65\x20\x6f\x72\x20\x49\x50\x20\x61\x64\x64\x72\x65\x73\x73" \
-"\x20\x61\x73\x20\x73\x6f\x75\x72\x63\x65\x0a\x09\x2d\x57\x20\x53" \
-"\x45\x43\x09\x09\x53\x65\x63\x6f\x6e\x64\x73\x20\x74\x6f\x20\x77" \
-"\x61\x69\x74\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x66\x69\x72\x73" \
-"\x74\x20\x72\x65\x73\x70\x6f\x6e\x73\x65\x20\x28\x64\x65\x66\x61" \
-"\x75\x6c\x74\x3a\x31\x30\x29\x0a\x09\x09\x09\x28\x61\x66\x74\x65" \
-"\x72\x20\x61\x6c\x6c\x20\x2d\x63\x20\x43\x4e\x54\x20\x70\x61\x63" \
-"\x6b\x65\x74\x73\x20\x61\x72\x65\x20\x73\x65\x6e\x74\x29\x0a\x09" \
-"\x2d\x77\x20\x53\x45\x43\x09\x09\x53\x65\x63\x6f\x6e\x64\x73\x20" \
-"\x75\x6e\x74\x69\x6c\x20\x70\x69\x6e\x67\x20\x65\x78\x69\x74\x73" \
-"\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x3a\x69\x6e\x66\x69\x6e\x69" \
-"\x74\x65\x29\x0a\x09\x09\x09\x28\x63\x61\x6e\x20\x65\x78\x69\x74" \
-"\x20\x65\x61\x72\x6c\x69\x65\x72\x20\x77\x69\x74\x68\x20\x2d\x63" \
-"\x20\x43\x4e\x54\x29\x0a\x09\x2d\x71\x09\x09\x51\x75\x69\x65\x74" \
-"\x2c\x20\x6f\x6e\x6c\x79\x20\x64\x69\x73\x70\x6c\x61\x79\x73\x20" \
-"\x6f\x75\x74\x70\x75\x74\x20\x61\x74\x20\x73\x74\x61\x72\x74\x0a" \
-"\x09\x09\x09\x61\x6e\x64\x20\x77\x68\x65\x6e\x20\x66\x69\x6e\x69" \
-"\x73\x68\x65\x64\x00\x08\x00\x5b\x2d\x6c\x7c\x2d\x53\x49\x47\x4e" \
-"\x41\x4c\x5d\x20\x5b\x2d\x66\x6e\x6f\x76\x78\x5d\x20\x5b\x2d\x73" \
-"\x20\x53\x49\x44\x7c\x2d\x50\x20\x50\x50\x49\x44\x7c\x50\x41\x54" \
-"\x54\x45\x52\x4e\x5d\x0a\x0a\x53\x65\x6e\x64\x20\x61\x20\x73\x69" \
-"\x67\x6e\x61\x6c\x20\x74\x6f\x20\x70\x72\x6f\x63\x65\x73\x73\x28" \
-"\x65\x73\x29\x20\x73\x65\x6c\x65\x63\x74\x65\x64\x20\x62\x79\x20" \
-"\x72\x65\x67\x65\x78\x20\x50\x41\x54\x54\x45\x52\x4e\x0a\x0a\x09" \
-"\x2d\x6c\x09\x4c\x69\x73\x74\x20\x61\x6c\x6c\x20\x73\x69\x67\x6e" \
-"\x61\x6c\x73\x0a\x09\x2d\x66\x09\x4d\x61\x74\x63\x68\x20\x61\x67" \
-"\x61\x69\x6e\x73\x74\x20\x65\x6e\x74\x69\x72\x65\x20\x63\x6f\x6d" \
-"\x6d\x61\x6e\x64\x20\x6c\x69\x6e\x65\x0a\x09\x2d\x6e\x09\x53\x69" \
-"\x67\x6e\x61\x6c\x20\x74\x68\x65\x20\x6e\x65\x77\x65\x73\x74\x20" \
-"\x70\x72\x6f\x63\x65\x73\x73\x20\x6f\x6e\x6c\x79\x0a\x09\x2d\x6f" \
-"\x09\x53\x69\x67\x6e\x61\x6c\x20\x74\x68\x65\x20\x6f\x6c\x64\x65" \
-"\x73\x74\x20\x70\x72\x6f\x63\x65\x73\x73\x20\x6f\x6e\x6c\x79\x0a" \
-"\x09\x2d\x76\x09\x4e\x65\x67\x61\x74\x65\x20\x74\x68\x65\x20\x6d" \
-"\x61\x74\x63\x68\x0a\x09\x2d\x78\x09\x4d\x61\x74\x63\x68\x20\x77" \
-"\x68\x6f\x6c\x65\x20\x6e\x61\x6d\x65\x20\x28\x6e\x6f\x74\x20\x73" \
-"\x75\x62\x73\x74\x72\x69\x6e\x67\x29\x0a\x09\x2d\x73\x09\x4d\x61" \
-"\x74\x63\x68\x20\x73\x65\x73\x73\x69\x6f\x6e\x20\x49\x44\x20\x28" \
-"\x30\x20\x66\x6f\x72\x20\x63\x75\x72\x72\x65\x6e\x74\x29\x0a\x09" \
-"\x2d\x50\x09\x4d\x61\x74\x63\x68\x20\x70\x61\x72\x65\x6e\x74\x20" \
-"\x70\x72\x6f\x63\x65\x73\x73\x20\x49\x44\x00\x5b\x2d\x78\x71\x5d" \
-"\x20\x50\x49\x44\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x64\x65" \
-"\x74\x61\x69\x6c\x65\x64\x20\x70\x72\x6f\x63\x65\x73\x73\x20\x6d" \
-"\x65\x6d\x6f\x72\x79\x20\x75\x73\x61\x67\x65\x0a\x0a\x09\x2d\x78" \
-"\x09\x53\x68\x6f\x77\x20\x64\x65\x74\x61\x69\x6c\x73\x0a\x09\x2d" \
-"\x71\x09\x51\x75\x69\x65\x74\x00\x5b\x2d\x64\x20\x44\x45\x4c\x41" \
-"\x59\x5d\x20\x5b\x2d\x6e\x5d\x20\x5b\x2d\x66\x5d\x0a\x0a\x48\x61" \
-"\x6c\x74\x20\x61\x6e\x64\x20\x73\x68\x75\x74\x20\x6f\x66\x66\x20" \
-"\x70\x6f\x77\x65\x72\x0a\x0a\x09\x2d\x64\x20\x53\x45\x43\x09\x44" \
-"\x65\x6c\x61\x79\x20\x69\x6e\x74\x65\x72\x76\x61\x6c\x0a\x09\x2d" \
-"\x6e\x09\x44\x6f\x20\x6e\x6f\x74\x20\x73\x79\x6e\x63\x0a\x09\x2d" \
-"\x66\x09\x46\x6f\x72\x63\x65\x20\x28\x64\x6f\x6e\x27\x74\x20\x67" \
-"\x6f\x20\x74\x68\x72\x6f\x75\x67\x68\x20\x69\x6e\x69\x74\x29\x00" \
-"\x5b\x56\x41\x52\x49\x41\x42\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x50" \
-"\x72\x69\x6e\x74\x20\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74" \
-"\x20\x56\x41\x52\x49\x41\x42\x4c\x45\x73\x2e\x0a\x49\x66\x20\x6e" \
-"\x6f\x20\x56\x41\x52\x49\x41\x42\x4c\x45\x20\x73\x70\x65\x63\x69" \
-"\x66\x69\x65\x64\x2c\x20\x70\x72\x69\x6e\x74\x20\x61\x6c\x6c\x2e" \
-"\x00\x46\x4f\x52\x4d\x41\x54\x20\x5b\x41\x52\x47\x5d\x2e\x2e\x2e" \
-"\x0a\x0a\x46\x6f\x72\x6d\x61\x74\x20\x61\x6e\x64\x20\x70\x72\x69" \
-"\x6e\x74\x20\x41\x52\x47\x28\x73\x29\x20\x61\x63\x63\x6f\x72\x64" \
-"\x69\x6e\x67\x20\x74\x6f\x20\x46\x4f\x52\x4d\x41\x54\x20\x28\x61" \
-"\x2d\x6c\x61\x20\x43\x20\x70\x72\x69\x6e\x74\x66\x29\x00\x0a\x0a" \
-"\x53\x68\x6f\x77\x20\x6c\x69\x73\x74\x20\x6f\x66\x20\x70\x72\x6f" \
-"\x63\x65\x73\x73\x65\x73\x0a\x0a\x09\x77\x09\x57\x69\x64\x65\x20" \
-"\x6f\x75\x74\x70\x75\x74\x0a\x09\x6c\x09\x4c\x6f\x6e\x67\x20\x6f" \
-"\x75\x74\x70\x75\x74\x0a\x09\x54\x09\x53\x68\x6f\x77\x20\x74\x68" \
-"\x72\x65\x61\x64\x73\x00\x5b\x2d\x70\x5d\x20\x5b\x50\x49\x44\x7c" \
-"\x55\x53\x45\x52\x5d\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x70" \
-"\x72\x6f\x63\x65\x73\x73\x20\x74\x72\x65\x65\x2c\x20\x6f\x70\x74" \
-"\x69\x6f\x6e\x61\x6c\x6c\x79\x20\x73\x74\x61\x72\x74\x20\x66\x72" \
-"\x6f\x6d\x20\x55\x53\x45\x52\x20\x6f\x72\x20\x50\x49\x44\x0a\x0a" \
-"\x09\x2d\x70\x09\x53\x68\x6f\x77\x20\x70\x69\x64\x73\x00\x0a\x0a" \
-"\x50\x72\x69\x6e\x74\x20\x74\x68\x65\x20\x66\x75\x6c\x6c\x20\x66" \
-"\x69\x6c\x65\x6e\x61\x6d\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x63" \
-"\x75\x72\x72\x65\x6e\x74\x20\x77\x6f\x72\x6b\x69\x6e\x67\x20\x64" \
-"\x69\x72\x65\x63\x74\x6f\x72\x79\x00\x50\x49\x44\x2e\x2e\x2e\x0a" \
-"\x0a\x53\x68\x6f\x77\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x64\x69" \
-"\x72\x65\x63\x74\x6f\x72\x79\x20\x66\x6f\x72\x20\x50\x49\x44\x73" \
-"\x0a\x00\x0a\x0a\x50\x72\x69\x6e\x74\x20\x74\x68\x65\x20\x64\x65" \
-"\x76\x69\x63\x65\x20\x6e\x6f\x64\x65\x20\x61\x73\x73\x6f\x63\x69" \
-"\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x66\x69" \
-"\x6c\x65\x73\x79\x73\x74\x65\x6d\x20\x6d\x6f\x75\x6e\x74\x65\x64" \
-"\x20\x61\x74\x20\x27\x2f\x27\x00\x5b\x2d\x66\x6e\x76\x5d\x20\x46" \
-"\x49\x4c\x45\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x74\x68\x65" \
-"\x20\x76\x61\x6c\x75\x65\x20\x6f\x66\x20\x61\x20\x73\x79\x6d\x6c" \
-"\x69\x6e\x6b\x0a\x0a\x09\x2d\x66\x09\x43\x61\x6e\x6f\x6e\x69\x63" \
-"\x61\x6c\x69\x7a\x65\x20\x62\x79\x20\x66\x6f\x6c\x6c\x6f\x77\x69" \
-"\x6e\x67\x20\x61\x6c\x6c\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x0a" \
-"\x09\x2d\x6e\x09\x44\x6f\x6e\x27\x74\x20\x61\x64\x64\x20\x6e\x65" \
-"\x77\x6c\x69\x6e\x65\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73" \
-"\x65\x00\x46\x49\x4c\x45\x2e\x2e\x2e\x0a\x0a\x52\x65\x74\x75\x72" \
-"\x6e\x20\x74\x68\x65\x20\x61\x62\x73\x6f\x6c\x75\x74\x65\x20\x70" \
-"\x61\x74\x68\x6e\x61\x6d\x65\x73\x20\x6f\x66\x20\x67\x69\x76\x65" \
-"\x6e\x20\x46\x49\x4c\x45\x00\x5b\x2d\x64\x20\x44\x45\x4c\x41\x59" \
-"\x5d\x20\x5b\x2d\x6e\x5d\x20\x5b\x2d\x66\x5d\x0a\x0a\x52\x65\x62" \
-"\x6f\x6f\x74\x20\x74\x68\x65\x20\x73\x79\x73\x74\x65\x6d\x0a\x0a" \
-"\x09\x2d\x64\x20\x53\x45\x43\x09\x44\x65\x6c\x61\x79\x20\x69\x6e" \
-"\x74\x65\x72\x76\x61\x6c\x0a\x09\x2d\x6e\x09\x44\x6f\x20\x6e\x6f" \
-"\x74\x20\x73\x79\x6e\x63\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63\x65" \
-"\x20\x28\x64\x6f\x6e\x27\x74\x20\x67\x6f\x20\x74\x68\x72\x6f\x75" \
-"\x67\x68\x20\x69\x6e\x69\x74\x29\x00\x7b\x7b\x2d\x6e\x20\x49\x4e" \
-"\x43\x52\x45\x4d\x45\x4e\x54\x7d\x20\x7c\x20\x50\x52\x49\x4f\x52" \
-"\x49\x54\x59\x7d\x20\x5b\x5b\x2d\x70\x20\x7c\x20\x2d\x67\x20\x7c" \
-"\x20\x2d\x75\x5d\x20\x49\x44\x2e\x2e\x2e\x5d\x0a\x0a\x43\x68\x61" \
-"\x6e\x67\x65\x20\x73\x63\x68\x65\x64\x75\x6c\x69\x6e\x67\x20\x70" \
-"\x72\x69\x6f\x72\x69\x74\x79\x20\x66\x6f\x72\x20\x61\x20\x72\x75" \
-"\x6e\x6e\x69\x6e\x67\x20\x70\x72\x6f\x63\x65\x73\x73\x0a\x0a\x09" \
-"\x2d\x6e\x09\x41\x64\x6a\x75\x73\x74\x20\x63\x75\x72\x72\x65\x6e" \
-"\x74\x20\x6e\x69\x63\x65\x20\x76\x61\x6c\x75\x65\x20\x28\x73\x6d" \
-"\x61\x6c\x6c\x65\x72\x20\x69\x73\x20\x66\x61\x73\x74\x65\x72\x29" \
-"\x0a\x09\x2d\x70\x09\x50\x72\x6f\x63\x65\x73\x73\x20\x69\x64\x28" \
-"\x73\x29\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x0a\x09\x2d\x67" \
-"\x09\x50\x72\x6f\x63\x65\x73\x73\x20\x67\x72\x6f\x75\x70\x20\x69" \
-"\x64\x28\x73\x29\x0a\x09\x2d\x75\x09\x50\x72\x6f\x63\x65\x73\x73" \
-"\x20\x75\x73\x65\x72\x20\x6e\x61\x6d\x65\x28\x73\x29\x20\x61\x6e" \
-"\x64\x2f\x6f\x72\x20\x69\x64\x28\x73\x29\x00\x0a\x0a\x52\x65\x73" \
-"\x65\x74\x20\x74\x68\x65\x20\x73\x63\x72\x65\x65\x6e\x00\x0a\x0a" \
-"\x52\x65\x73\x69\x7a\x65\x20\x74\x68\x65\x20\x73\x63\x72\x65\x65" \
-"\x6e\x00\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x52\x65\x76" \
-"\x65\x72\x73\x65\x20\x6c\x69\x6e\x65\x73\x20\x6f\x66\x20\x46\x49" \
-"\x4c\x45\x00\x5b\x2d\x69\x72\x66\x5d\x20\x46\x49\x4c\x45\x2e\x2e" \
-"\x2e\x0a\x0a\x52\x65\x6d\x6f\x76\x65\x20\x28\x75\x6e\x6c\x69\x6e" \
-"\x6b\x29\x20\x46\x49\x4c\x45\x73\x0a\x0a\x09\x2d\x69\x09\x41\x6c" \
-"\x77\x61\x79\x73\x20\x70\x72\x6f\x6d\x70\x74\x20\x62\x65\x66\x6f" \
-"\x72\x65\x20\x72\x65\x6d\x6f\x76\x69\x6e\x67\x0a\x09\x2d\x66\x09" \
-"\x4e\x65\x76\x65\x72\x20\x70\x72\x6f\x6d\x70\x74\x0a\x09\x2d\x52" \
-"\x2c\x2d\x72\x09\x52\x65\x63\x75\x72\x73\x65\x00\x5b\x4f\x50\x54" \
-"\x49\x4f\x4e\x53\x5d\x20\x44\x49\x52\x45\x43\x54\x4f\x52\x59\x2e" \
-"\x2e\x2e\x0a\x0a\x52\x65\x6d\x6f\x76\x65\x20\x44\x49\x52\x45\x43" \
-"\x54\x4f\x52\x59\x20\x69\x66\x20\x69\x74\x20\x69\x73\x20\x65\x6d" \
-"\x70\x74\x79\x0a\x0a\x09\x2d\x70\x7c\x2d\x2d\x70\x61\x72\x65\x6e" \
-"\x74\x73\x09\x49\x6e\x63\x6c\x75\x64\x65\x20\x70\x61\x72\x65\x6e" \
-"\x74\x73\x0a\x09\x2d\x2d\x69\x67\x6e\x6f\x72\x65\x2d\x66\x61\x69" \
-"\x6c\x2d\x6f\x6e\x2d\x6e\x6f\x6e\x2d\x65\x6d\x70\x74\x79\x00\x5b" \
-"\x2d\x77\x66\x61\x5d\x20\x5b\x4d\x4f\x44\x55\x4c\x45\x5d\x2e\x2e" \
-"\x2e\x0a\x0a\x55\x6e\x6c\x6f\x61\x64\x20\x6b\x65\x72\x6e\x65\x6c" \
-"\x20\x6d\x6f\x64\x75\x6c\x65\x73\x0a\x0a\x09\x2d\x77\x09\x57\x61" \
-"\x69\x74\x20\x75\x6e\x74\x69\x6c\x20\x74\x68\x65\x20\x6d\x6f\x64" \
-"\x75\x6c\x65\x20\x69\x73\x20\x6e\x6f\x20\x6c\x6f\x6e\x67\x65\x72" \
-"\x20\x75\x73\x65\x64\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x20" \
-"\x75\x6e\x6c\x6f\x61\x64\x0a\x09\x2d\x61\x09\x52\x65\x6d\x6f\x76" \
-"\x65\x20\x61\x6c\x6c\x20\x75\x6e\x75\x73\x65\x64\x20\x6d\x6f\x64" \
-"\x75\x6c\x65\x73\x20\x28\x72\x65\x63\x75\x72\x73\x69\x76\x65\x6c" \
-"\x79\x29\x00\x5b\x7b\x61\x64\x64\x7c\x64\x65\x6c\x7c\x64\x65\x6c" \
-"\x65\x74\x65\x7d\x5d\x0a\x0a\x45\x64\x69\x74\x20\x6b\x65\x72\x6e" \
-"\x65\x6c\x20\x72\x6f\x75\x74\x69\x6e\x67\x20\x74\x61\x62\x6c\x65" \
-"\x73\x0a\x0a\x09\x2d\x6e\x09\x44\x6f\x6e\x27\x74\x20\x72\x65\x73" \
-"\x6f\x6c\x76\x65\x20\x6e\x61\x6d\x65\x73\x0a\x09\x2d\x65\x09\x44" \
-"\x69\x73\x70\x6c\x61\x79\x20\x6f\x74\x68\x65\x72\x2f\x6d\x6f\x72" \
-"\x65\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x0a\x09\x2d" \
-"\x41\x20\x69\x6e\x65\x74\x7b\x36\x7d\x09\x53\x65\x6c\x65\x63\x74" \
-"\x20\x61\x64\x64\x72\x65\x73\x73\x20\x66\x61\x6d\x69\x6c\x79\x00" \
-"\x5b\x2d\x74\x6c\x5d\x20\x5b\x2d\x61\x20\x41\x52\x47\x5d\x2e\x2e" \
-"\x2e\x20\x5b\x2d\x75\x20\x4d\x41\x53\x4b\x5d\x20\x44\x49\x52\x45" \
-"\x43\x54\x4f\x52\x59\x0a\x0a\x52\x75\x6e\x20\x61\x20\x62\x75\x6e" \
-"\x63\x68\x20\x6f\x66\x20\x73\x63\x72\x69\x70\x74\x73\x20\x69\x6e" \
-"\x20\x44\x49\x52\x45\x43\x54\x4f\x52\x59\x0a\x0a\x09\x2d\x74\x09" \
-"\x44\x72\x79\x20\x72\x75\x6e\x0a\x09\x2d\x6c\x09\x50\x72\x69\x6e" \
-"\x74\x20\x6e\x61\x6d\x65\x73\x20\x6f\x66\x20\x6d\x61\x74\x63\x68" \
-"\x69\x6e\x67\x20\x66\x69\x6c\x65\x73\x20\x65\x76\x65\x6e\x20\x69" \
-"\x66\x20\x74\x68\x65\x79\x20\x61\x72\x65\x20\x6e\x6f\x74\x20\x65" \
-"\x78\x65\x63\x75\x74\x61\x62\x6c\x65\x0a\x09\x2d\x61\x20\x41\x52" \
-"\x47\x09\x50\x61\x73\x73\x20\x41\x52\x47\x20\x61\x73\x20\x61\x72" \
-"\x67\x75\x6d\x65\x6e\x74\x20\x74\x6f\x20\x70\x72\x6f\x67\x72\x61" \
-"\x6d\x73\x0a\x09\x2d\x75\x20\x4d\x41\x53\x4b\x09\x53\x65\x74\x20" \
-"\x75\x6d\x61\x73\x6b\x20\x74\x6f\x20\x4d\x41\x53\x4b\x20\x62\x65" \
-"\x66\x6f\x72\x65\x20\x72\x75\x6e\x6e\x69\x6e\x67\x20\x70\x72\x6f" \
-"\x67\x72\x61\x6d\x73\x00\x46\x49\x4c\x45\x0a\x0a\x52\x65\x63\x65" \
-"\x69\x76\x65\x20\x61\x20\x66\x69\x6c\x65\x20\x75\x73\x69\x6e\x67" \
-"\x20\x74\x68\x65\x20\x78\x6d\x6f\x64\x65\x6d\x20\x70\x72\x6f\x74" \
-"\x6f\x63\x6f\x6c\x00\x5b\x2d\x69\x6e\x72\x5d\x20\x5b\x2d\x66\x20" \
-"\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x20\x5b\x2d\x65\x20\x43\x4d\x44" \
-"\x5d\x2e\x2e\x2e\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x6f" \
-"\x72\x3a\x20\x73\x65\x64\x20\x5b\x2d\x69\x6e\x72\x5d\x20\x43\x4d" \
-"\x44\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x09\x2d\x65" \
-"\x20\x43\x4d\x44\x09\x41\x64\x64\x20\x43\x4d\x44\x20\x74\x6f\x20" \
-"\x73\x65\x64\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x73\x20\x74\x6f\x20" \
-"\x62\x65\x20\x65\x78\x65\x63\x75\x74\x65\x64\x0a\x09\x2d\x66\x20" \
-"\x46\x49\x4c\x45\x09\x41\x64\x64\x20\x46\x49\x4c\x45\x20\x63\x6f" \
-"\x6e\x74\x65\x6e\x74\x73\x20\x74\x6f\x20\x73\x65\x64\x20\x63\x6f" \
-"\x6d\x6d\x61\x6e\x64\x73\x20\x74\x6f\x20\x62\x65\x20\x65\x78\x65" \
-"\x63\x75\x74\x65\x64\x0a\x09\x2d\x69\x5b\x53\x46\x58\x5d\x09\x45" \
-"\x64\x69\x74\x20\x66\x69\x6c\x65\x73\x20\x69\x6e\x2d\x70\x6c\x61" \
-"\x63\x65\x20\x28\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x20\x73\x65" \
-"\x6e\x64\x73\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x29\x0a\x09" \
-"\x09\x4f\x70\x74\x69\x6f\x6e\x61\x6c\x6c\x79\x20\x62\x61\x63\x6b" \
-"\x20\x66\x69\x6c\x65\x73\x20\x75\x70\x2c\x20\x61\x70\x70\x65\x6e" \
-"\x64\x69\x6e\x67\x20\x53\x46\x58\x0a\x09\x2d\x6e\x09\x53\x75\x70" \
-"\x70\x72\x65\x73\x73\x20\x61\x75\x74\x6f\x6d\x61\x74\x69\x63\x20" \
-"\x70\x72\x69\x6e\x74\x69\x6e\x67\x20\x6f\x66\x20\x70\x61\x74\x74" \
-"\x65\x72\x6e\x20\x73\x70\x61\x63\x65\x0a\x09\x2d\x72\x09\x55\x73" \
-"\x65\x20\x65\x78\x74\x65\x6e\x64\x65\x64\x20\x72\x65\x67\x65\x78" \
-"\x20\x73\x79\x6e\x74\x61\x78\x0a\x0a\x49\x66\x20\x6e\x6f\x20\x2d" \
-"\x65\x20\x6f\x72\x20\x2d\x66\x2c\x20\x74\x68\x65\x20\x66\x69\x72" \
-"\x73\x74\x20\x6e\x6f\x6e\x2d\x6f\x70\x74\x69\x6f\x6e\x20\x61\x72" \
-"\x67\x75\x6d\x65\x6e\x74\x20\x69\x73\x20\x74\x68\x65\x20\x73\x65" \
-"\x64\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x73\x74\x72\x69\x6e\x67" \
-"\x2e\x0a\x52\x65\x6d\x61\x69\x6e\x69\x6e\x67\x20\x61\x72\x67\x75" \
-"\x6d\x65\x6e\x74\x73\x20\x61\x72\x65\x20\x69\x6e\x70\x75\x74\x20" \
-"\x66\x69\x6c\x65\x73\x20\x28\x73\x74\x64\x69\x6e\x20\x69\x66\x20" \
-"\x6e\x6f\x6e\x65\x29\x2e\x00\x5b\x2d\x77\x5d\x20\x5b\x2d\x73\x20" \
-"\x53\x45\x50\x5d\x20\x5b\x46\x49\x52\x53\x54\x20\x5b\x49\x4e\x43" \
-"\x5d\x5d\x20\x4c\x41\x53\x54\x0a\x0a\x50\x72\x69\x6e\x74\x20\x6e" \
-"\x75\x6d\x62\x65\x72\x73\x20\x66\x72\x6f\x6d\x20\x46\x49\x52\x53" \
-"\x54\x20\x74\x6f\x20\x4c\x41\x53\x54\x2c\x20\x69\x6e\x20\x73\x74" \
-"\x65\x70\x73\x20\x6f\x66\x20\x49\x4e\x43\x2e\x0a\x46\x49\x52\x53" \
-"\x54\x2c\x20\x49\x4e\x43\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x74" \
-"\x6f\x20\x31\x2e\x0a\x0a\x09\x2d\x77\x09\x50\x61\x64\x20\x74\x6f" \
-"\x20\x6c\x61\x73\x74\x20\x77\x69\x74\x68\x20\x6c\x65\x61\x64\x69" \
-"\x6e\x67\x20\x7a\x65\x72\x6f\x73\x0a\x09\x2d\x73\x20\x53\x45\x50" \
-"\x09\x53\x74\x72\x69\x6e\x67\x20\x73\x65\x70\x61\x72\x61\x74\x6f" \
-"\x72\x00\x5b\x2d\x72\x5d\x20\x5b\x44\x45\x56\x49\x43\x45\x5d\x0a" \
-"\x0a\x52\x65\x64\x69\x72\x65\x63\x74\x20\x73\x79\x73\x74\x65\x6d" \
-"\x20\x63\x6f\x6e\x73\x6f\x6c\x65\x20\x6f\x75\x74\x70\x75\x74\x20" \
-"\x74\x6f\x20\x44\x45\x56\x49\x43\x45\x20\x28\x64\x65\x66\x61\x75" \
-"\x6c\x74\x3a\x20\x2f\x64\x65\x76\x2f\x74\x74\x79\x29\x0a\x0a\x09" \
-"\x2d\x72\x09\x52\x65\x73\x65\x74\x20\x6f\x75\x74\x70\x75\x74\x20" \
-"\x74\x6f\x20\x2f\x64\x65\x76\x2f\x63\x6f\x6e\x73\x6f\x6c\x65\x00" \
-"\x5b\x2d\x67\x61\x62\x47\x76\x7a\x56\x5d\x20\x44\x45\x56\x49\x43" \
-"\x45\x20\x5b\x50\x41\x52\x41\x4d\x45\x54\x45\x52\x20\x5b\x41\x52" \
-"\x47\x5d\x5d\x2e\x2e\x2e\x0a\x0a\x52\x65\x71\x75\x65\x73\x74\x20" \
-"\x6f\x72\x20\x73\x65\x74\x20\x4c\x69\x6e\x75\x78\x20\x73\x65\x72" \
-"\x69\x61\x6c\x20\x70\x6f\x72\x74\x20\x69\x6e\x66\x6f\x72\x6d\x61" \
-"\x74\x69\x6f\x6e\x0a\x0a\x09\x2d\x67\x09\x49\x6e\x74\x65\x72\x70" \
-"\x72\x65\x74\x20\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x73\x20\x61" \
-"\x73\x20\x6c\x69\x73\x74\x20\x6f\x66\x20\x64\x65\x76\x69\x63\x65" \
-"\x73\x20\x66\x6f\x72\x20\x72\x65\x70\x6f\x72\x74\x69\x6e\x67\x0a" \
-"\x09\x2d\x61\x09\x50\x72\x69\x6e\x74\x20\x61\x6c\x6c\x20\x61\x76" \
-"\x61\x69\x6c\x61\x62\x6c\x65\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74" \
-"\x69\x6f\x6e\x0a\x09\x2d\x62\x09\x50\x72\x69\x6e\x74\x20\x73\x75" \
-"\x6d\x6d\x61\x72\x79\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f" \
-"\x6e\x0a\x09\x2d\x47\x09\x50\x72\x69\x6e\x74\x20\x69\x6e\x20\x66" \
-"\x6f\x72\x6d\x20\x77\x68\x69\x63\x68\x20\x63\x61\x6e\x20\x62\x65" \
-"\x20\x66\x65\x64\x20\x62\x61\x63\x6b\x0a\x09\x09\x74\x6f\x20\x73" \
-"\x65\x74\x73\x65\x72\x69\x61\x6c\x20\x61\x73\x20\x63\x6f\x6d\x6d" \
-"\x61\x6e\x64\x20\x6c\x69\x6e\x65\x20\x70\x61\x72\x61\x6d\x65\x74" \
-"\x65\x72\x73\x0a\x09\x2d\x7a\x09\x5a\x65\x72\x6f\x20\x6f\x75\x74" \
-"\x20\x73\x65\x72\x69\x61\x6c\x20\x66\x6c\x61\x67\x73\x20\x62\x65" \
-"\x66\x6f\x72\x65\x20\x73\x65\x74\x74\x69\x6e\x67\x0a\x09\x2d\x76" \
-"\x09\x56\x65\x72\x62\x6f\x73\x65\x0a\x0a\x50\x61\x72\x61\x6d\x65" \
-"\x74\x65\x72\x73\x3a\x20\x28\x2a\x20\x3d\x20\x74\x61\x6b\x65\x73" \
-"\x20\x61\x6e\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x2c\x20\x5e\x20" \
-"\x3d\x20\x63\x61\x6e\x20\x62\x65\x20\x74\x75\x72\x6e\x65\x64\x20" \
-"\x6f\x66\x66\x20\x62\x79\x20\x70\x72\x65\x63\x65\x64\x69\x6e\x67" \
-"\x20\x5e\x29\x0a\x09\x2a\x70\x6f\x72\x74\x2c\x20\x2a\x69\x72\x71" \
-"\x2c\x20\x2a\x64\x69\x76\x69\x73\x6f\x72\x2c\x20\x2a\x75\x61\x72" \
-"\x74\x2c\x20\x2a\x62\x61\x75\x6e\x64\x5f\x62\x61\x73\x65\x2c\x20" \
-"\x2a\x63\x6c\x6f\x73\x65\x5f\x64\x65\x6c\x61\x79\x2c\x20\x2a\x63" \
-"\x6c\x6f\x73\x69\x6e\x67\x5f\x77\x61\x69\x74\x2c\x0a\x09\x5e\x66" \
-"\x6f\x75\x72\x70\x6f\x72\x74\x2c\x20\x5e\x61\x75\x74\x6f\x5f\x69" \
-"\x72\x71\x2c\x20\x5e\x73\x6b\x69\x70\x5f\x74\x65\x73\x74\x2c\x20" \
-"\x5e\x73\x61\x6b\x2c\x20\x5e\x73\x65\x73\x73\x69\x6f\x6e\x5f\x6c" \
-"\x6f\x63\x6b\x6f\x75\x74\x2c\x20\x5e\x70\x67\x72\x70\x5f\x6c\x6f" \
-"\x63\x6b\x6f\x75\x74\x2c\x0a\x09\x5e\x63\x61\x6c\x6c\x6f\x75\x74" \
-"\x5f\x6e\x6f\x68\x75\x70\x2c\x20\x5e\x73\x70\x6c\x69\x74\x5f\x74" \
-"\x65\x72\x6d\x69\x6f\x73\x2c\x20\x5e\x68\x75\x70\x5f\x6e\x6f\x74" \
-"\x69\x66\x79\x2c\x20\x5e\x6c\x6f\x77\x5f\x6c\x61\x74\x65\x6e\x63" \
-"\x79\x2c\x20\x61\x75\x74\x6f\x63\x6f\x6e\x66\x69\x67\x2c\x0a\x09" \
-"\x73\x70\x64\x5f\x6e\x6f\x72\x6d\x61\x6c\x2c\x20\x73\x70\x64\x5f" \
-"\x68\x69\x2c\x20\x73\x70\x64\x5f\x76\x68\x69\x2c\x20\x73\x70\x64" \
-"\x5f\x73\x68\x69\x2c\x20\x73\x70\x64\x5f\x77\x61\x72\x70\x2c\x20" \
-"\x73\x70\x64\x5f\x63\x75\x73\x74\x0a\x0a\x55\x41\x52\x54\x20\x74" \
-"\x79\x70\x65\x73\x3a\x0a\x09\x75\x6e\x6b\x6e\x6f\x77\x6e\x2c\x20" \
-"\x38\x32\x35\x30\x2c\x20\x31\x36\x34\x35\x30\x2c\x20\x31\x36\x35" \
-"\x35\x30\x2c\x20\x31\x36\x35\x35\x30\x41\x2c\x20\x43\x69\x72\x72" \
-"\x75\x73\x2c\x20\x31\x36\x36\x35\x30\x2c\x20\x31\x36\x36\x35\x30" \
-"\x56\x32\x2c\x20\x31\x36\x37\x35\x30\x2c\x0a\x09\x31\x36\x39\x35" \
-"\x30\x2c\x20\x31\x36\x39\x35\x34\x2c\x20\x31\x36\x36\x35\x34\x2c" \
-"\x20\x31\x36\x38\x35\x30\x2c\x20\x52\x53\x41\x2c\x20\x4e\x53\x31" \
-"\x36\x35\x35\x30\x41\x2c\x20\x58\x53\x43\x41\x4c\x45\x2c\x20\x52" \
-"\x4d\x39\x30\x30\x30\x2c\x20\x4f\x43\x54\x45\x4f\x4e\x2c\x20\x41" \
-"\x52\x37\x2c\x0a\x09\x55\x36\x5f\x31\x36\x35\x35\x30\x41\x00\x50" \
-"\x52\x4f\x47\x20\x41\x52\x47\x53\x0a\x0a\x52\x75\x6e\x20\x50\x52" \
-"\x4f\x47\x20\x69\x6e\x20\x61\x20\x6e\x65\x77\x20\x73\x65\x73\x73" \
-"\x69\x6f\x6e\x2e\x20\x50\x52\x4f\x47\x20\x77\x69\x6c\x6c\x20\x68" \
-"\x61\x76\x65\x20\x6e\x6f\x20\x63\x6f\x6e\x74\x72\x6f\x6c\x6c\x69" \
-"\x6e\x67\x20\x74\x65\x72\x6d\x69\x6e\x61\x6c\x0a\x61\x6e\x64\x20" \
-"\x77\x69\x6c\x6c\x20\x6e\x6f\x74\x20\x62\x65\x20\x61\x66\x66\x65" \
-"\x63\x74\x65\x64\x20\x62\x79\x20\x6b\x65\x79\x62\x6f\x61\x72\x64" \
-"\x20\x73\x69\x67\x6e\x61\x6c\x73\x20\x28\x43\x74\x72\x6c\x2d\x43" \
-"\x20\x65\x74\x63\x29\x2e\x0a\x53\x65\x65\x20\x73\x65\x74\x73\x69" \
-"\x64\x28\x32\x29\x20\x66\x6f\x72\x20\x64\x65\x74\x61\x69\x6c\x73" \
-"\x2e\x00\x5b\x2d\x2f\x2b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b" \
-"\x2d\x2f\x2b\x6f\x20\x4f\x50\x54\x5d\x2e\x2e\x2e\x20\x5b\x2d\x63" \
-"\x20\x27\x53\x43\x52\x49\x50\x54\x27\x20\x5b\x41\x52\x47\x30\x20" \
-"\x5b\x41\x52\x47\x53\x5d\x5d\x20\x2f\x20\x46\x49\x4c\x45\x20\x5b" \
-"\x41\x52\x47\x53\x5d\x5d\x0a\x0a\x55\x6e\x69\x78\x20\x73\x68\x65" \
-"\x6c\x6c\x20\x69\x6e\x74\x65\x72\x70\x72\x65\x74\x65\x72\x00\x5b" \
-"\x2d\x63\x5b\x73\x77\x5d\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e" \
-"\x2e\x0a\x0a\x50\x72\x69\x6e\x74\x20\x6f\x72\x20\x63\x68\x65\x63" \
-"\x6b\x20\x53\x48\x41\x31\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x73" \
-"\x0a\x0a\x09\x2d\x63\x09\x43\x68\x65\x63\x6b\x20\x73\x75\x6d\x73" \
-"\x20\x61\x67\x61\x69\x6e\x73\x74\x20\x6c\x69\x73\x74\x20\x69\x6e" \
-"\x20\x46\x49\x4c\x45\x73\x0a\x09\x2d\x73\x09\x44\x6f\x6e\x27\x74" \
-"\x20\x6f\x75\x74\x70\x75\x74\x20\x61\x6e\x79\x74\x68\x69\x6e\x67" \
-"\x2c\x20\x73\x74\x61\x74\x75\x73\x20\x63\x6f\x64\x65\x20\x73\x68" \
-"\x6f\x77\x73\x20\x73\x75\x63\x63\x65\x73\x73\x0a\x09\x2d\x77\x09" \
-"\x57\x61\x72\x6e\x20\x61\x62\x6f\x75\x74\x20\x69\x6d\x70\x72\x6f" \
-"\x70\x65\x72\x6c\x79\x20\x66\x6f\x72\x6d\x61\x74\x74\x65\x64\x20" \
-"\x63\x68\x65\x63\x6b\x73\x75\x6d\x20\x6c\x69\x6e\x65\x73\x00\x5b" \
-"\x2d\x63\x5b\x73\x77\x5d\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e" \
-"\x2e\x0a\x0a\x50\x72\x69\x6e\x74\x20\x6f\x72\x20\x63\x68\x65\x63" \
-"\x6b\x20\x53\x48\x41\x32\x35\x36\x20\x63\x68\x65\x63\x6b\x73\x75" \
-"\x6d\x73\x0a\x0a\x09\x2d\x63\x09\x43\x68\x65\x63\x6b\x20\x73\x75" \
-"\x6d\x73\x20\x61\x67\x61\x69\x6e\x73\x74\x20\x6c\x69\x73\x74\x20" \
-"\x69\x6e\x20\x46\x49\x4c\x45\x73\x0a\x09\x2d\x73\x09\x44\x6f\x6e" \
-"\x27\x74\x20\x6f\x75\x74\x70\x75\x74\x20\x61\x6e\x79\x74\x68\x69" \
-"\x6e\x67\x2c\x20\x73\x74\x61\x74\x75\x73\x20\x63\x6f\x64\x65\x20" \
-"\x73\x68\x6f\x77\x73\x20\x73\x75\x63\x63\x65\x73\x73\x0a\x09\x2d" \
-"\x77\x09\x57\x61\x72\x6e\x20\x61\x62\x6f\x75\x74\x20\x69\x6d\x70" \
-"\x72\x6f\x70\x65\x72\x6c\x79\x20\x66\x6f\x72\x6d\x61\x74\x74\x65" \
-"\x64\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x20\x6c\x69\x6e\x65\x73" \
-"\x00\x5b\x2d\x63\x5b\x73\x77\x5d\x5d\x20\x5b\x46\x49\x4c\x45\x5d" \
-"\x2e\x2e\x2e\x0a\x0a\x50\x72\x69\x6e\x74\x20\x6f\x72\x20\x63\x68" \
-"\x65\x63\x6b\x20\x53\x48\x41\x33\x2d\x35\x31\x32\x20\x63\x68\x65" \
-"\x63\x6b\x73\x75\x6d\x73\x0a\x0a\x09\x2d\x63\x09\x43\x68\x65\x63" \
-"\x6b\x20\x73\x75\x6d\x73\x20\x61\x67\x61\x69\x6e\x73\x74\x20\x6c" \
-"\x69\x73\x74\x20\x69\x6e\x20\x46\x49\x4c\x45\x73\x0a\x09\x2d\x73" \
-"\x09\x44\x6f\x6e\x27\x74\x20\x6f\x75\x74\x70\x75\x74\x20\x61\x6e" \
-"\x79\x74\x68\x69\x6e\x67\x2c\x20\x73\x74\x61\x74\x75\x73\x20\x63" \
-"\x6f\x64\x65\x20\x73\x68\x6f\x77\x73\x20\x73\x75\x63\x63\x65\x73" \
-"\x73\x0a\x09\x2d\x77\x09\x57\x61\x72\x6e\x20\x61\x62\x6f\x75\x74" \
-"\x20\x69\x6d\x70\x72\x6f\x70\x65\x72\x6c\x79\x20\x66\x6f\x72\x6d" \
-"\x61\x74\x74\x65\x64\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x20\x6c" \
-"\x69\x6e\x65\x73\x00\x5b\x2d\x63\x5b\x73\x77\x5d\x5d\x20\x5b\x46" \
-"\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x50\x72\x69\x6e\x74\x20\x6f" \
-"\x72\x20\x63\x68\x65\x63\x6b\x20\x53\x48\x41\x35\x31\x32\x20\x63" \
-"\x68\x65\x63\x6b\x73\x75\x6d\x73\x0a\x0a\x09\x2d\x63\x09\x43\x68" \
-"\x65\x63\x6b\x20\x73\x75\x6d\x73\x20\x61\x67\x61\x69\x6e\x73\x74" \
-"\x20\x6c\x69\x73\x74\x20\x69\x6e\x20\x46\x49\x4c\x45\x73\x0a\x09" \
-"\x2d\x73\x09\x44\x6f\x6e\x27\x74\x20\x6f\x75\x74\x70\x75\x74\x20" \
-"\x61\x6e\x79\x74\x68\x69\x6e\x67\x2c\x20\x73\x74\x61\x74\x75\x73" \
-"\x20\x63\x6f\x64\x65\x20\x73\x68\x6f\x77\x73\x20\x73\x75\x63\x63" \
-"\x65\x73\x73\x0a\x09\x2d\x77\x09\x57\x61\x72\x6e\x20\x61\x62\x6f" \
-"\x75\x74\x20\x69\x6d\x70\x72\x6f\x70\x65\x72\x6c\x79\x20\x66\x6f" \
-"\x72\x6d\x61\x74\x74\x65\x64\x20\x63\x68\x65\x63\x6b\x73\x75\x6d" \
-"\x20\x6c\x69\x6e\x65\x73\x00\x5b\x4e\x5d\x2e\x2e\x2e\x0a\x0a\x50" \
-"\x61\x75\x73\x65\x20\x66\x6f\x72\x20\x61\x20\x74\x69\x6d\x65\x20" \
-"\x65\x71\x75\x61\x6c\x20\x74\x6f\x20\x74\x68\x65\x20\x74\x6f\x74" \
-"\x61\x6c\x20\x6f\x66\x20\x74\x68\x65\x20\x61\x72\x67\x73\x20\x67" \
-"\x69\x76\x65\x6e\x2c\x20\x77\x68\x65\x72\x65\x20\x65\x61\x63\x68" \
-"\x20\x61\x72\x67\x20\x63\x61\x6e\x0a\x68\x61\x76\x65\x20\x61\x6e" \
-"\x20\x6f\x70\x74\x69\x6f\x6e\x61\x6c\x20\x73\x75\x66\x66\x69\x78" \
-"\x20\x6f\x66\x20\x28\x73\x29\x65\x63\x6f\x6e\x64\x73\x2c\x20\x28" \
-"\x6d\x29\x69\x6e\x75\x74\x65\x73\x2c\x20\x28\x68\x29\x6f\x75\x72" \
-"\x73\x2c\x20\x6f\x72\x20\x28\x64\x29\x61\x79\x73\x00\x5b\x2d\x6e" \
-"\x72\x75\x67\x4d\x63\x73\x7a\x62\x64\x66\x69\x6d\x53\x54\x6f\x6b" \
-"\x74\x5d\x20\x5b\x2d\x6f\x20\x46\x49\x4c\x45\x5d\x20\x5b\x2d\x6b" \
-"\x20\x73\x74\x61\x72\x74\x5b\x2e\x6f\x66\x66\x73\x65\x74\x5d\x5b" \
-"\x6f\x70\x74\x73\x5d\x5b\x2c\x65\x6e\x64\x5b\x2e\x6f\x66\x66\x73" \
-"\x65\x74\x5d\x5b\x6f\x70\x74\x73\x5d\x5d\x20\x5b\x2d\x74\x20\x43" \
-"\x48\x41\x52\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a" \
-"\x53\x6f\x72\x74\x20\x6c\x69\x6e\x65\x73\x20\x6f\x66\x20\x74\x65" \
-"\x78\x74\x0a\x0a\x09\x2d\x62\x09\x49\x67\x6e\x6f\x72\x65\x20\x6c" \
-"\x65\x61\x64\x69\x6e\x67\x20\x62\x6c\x61\x6e\x6b\x73\x0a\x09\x2d" \
-"\x63\x09\x43\x68\x65\x63\x6b\x20\x77\x68\x65\x74\x68\x65\x72\x20" \
-"\x69\x6e\x70\x75\x74\x20\x69\x73\x20\x73\x6f\x72\x74\x65\x64\x0a" \
-"\x09\x2d\x64\x09\x44\x69\x63\x74\x69\x6f\x6e\x61\x72\x79\x20\x6f" \
-"\x72\x64\x65\x72\x20\x28\x62\x6c\x61\x6e\x6b\x20\x6f\x72\x20\x61" \
-"\x6c\x70\x68\x61\x6e\x75\x6d\x65\x72\x69\x63\x20\x6f\x6e\x6c\x79" \
-"\x29\x0a\x09\x2d\x66\x09\x49\x67\x6e\x6f\x72\x65\x20\x63\x61\x73" \
-"\x65\x0a\x09\x2d\x67\x09\x47\x65\x6e\x65\x72\x61\x6c\x20\x6e\x75" \
-"\x6d\x65\x72\x69\x63\x61\x6c\x20\x73\x6f\x72\x74\x0a\x09\x2d\x69" \
-"\x09\x49\x67\x6e\x6f\x72\x65\x20\x75\x6e\x70\x72\x69\x6e\x74\x61" \
-"\x62\x6c\x65\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x0a\x09" \
-"\x2d\x6b\x09\x53\x6f\x72\x74\x20\x6b\x65\x79\x0a\x09\x2d\x4d\x09" \
-"\x53\x6f\x72\x74\x20\x6d\x6f\x6e\x74\x68\x0a\x09\x2d\x6e\x09\x53" \
-"\x6f\x72\x74\x20\x6e\x75\x6d\x62\x65\x72\x73\x0a\x09\x2d\x6f\x09" \
-"\x4f\x75\x74\x70\x75\x74\x20\x74\x6f\x20\x66\x69\x6c\x65\x0a\x09" \
-"\x2d\x6b\x09\x53\x6f\x72\x74\x20\x62\x79\x20\x6b\x65\x79\x0a\x09" \
-"\x2d\x74\x20\x43\x48\x41\x52\x09\x4b\x65\x79\x20\x73\x65\x70\x61" \
-"\x72\x61\x74\x6f\x72\x0a\x09\x2d\x72\x09\x52\x65\x76\x65\x72\x73" \
-"\x65\x20\x73\x6f\x72\x74\x20\x6f\x72\x64\x65\x72\x0a\x09\x2d\x73" \
-"\x09\x53\x74\x61\x62\x6c\x65\x20\x28\x64\x6f\x6e\x27\x74\x20\x73" \
-"\x6f\x72\x74\x20\x74\x69\x65\x73\x20\x61\x6c\x70\x68\x61\x62\x65" \
-"\x74\x69\x63\x61\x6c\x6c\x79\x29\x0a\x09\x2d\x75\x09\x53\x75\x70" \
-"\x70\x72\x65\x73\x73\x20\x64\x75\x70\x6c\x69\x63\x61\x74\x65\x20" \
-"\x6c\x69\x6e\x65\x73\x0a\x09\x2d\x7a\x09\x4c\x69\x6e\x65\x73\x20" \
-"\x61\x72\x65\x20\x74\x65\x72\x6d\x69\x6e\x61\x74\x65\x64\x20\x62" \
-"\x79\x20\x4e\x55\x4c\x2c\x20\x6e\x6f\x74\x20\x6e\x65\x77\x6c\x69" \
-"\x6e\x65\x0a\x09\x2d\x6d\x53\x54\x09\x49\x67\x6e\x6f\x72\x65\x64" \
-"\x20\x66\x6f\x72\x20\x47\x4e\x55\x20\x63\x6f\x6d\x70\x61\x74\x69" \
-"\x62\x69\x6c\x69\x74\x79\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d" \
-"\x20\x5b\x49\x4e\x50\x55\x54\x20\x5b\x50\x52\x45\x46\x49\x58\x5d" \
-"\x5d\x0a\x0a\x09\x2d\x62\x20\x4e\x5b\x6b\x7c\x6d\x5d\x09\x53\x70" \
-"\x6c\x69\x74\x20\x62\x79\x20\x4e\x20\x28\x6b\x69\x6c\x6f\x7c\x6d" \
-"\x65\x67\x61\x29\x62\x79\x74\x65\x73\x0a\x09\x2d\x6c\x20\x4e\x09" \
-"\x09\x53\x70\x6c\x69\x74\x20\x62\x79\x20\x4e\x20\x6c\x69\x6e\x65" \
-"\x73\x0a\x09\x2d\x61\x20\x4e\x09\x09\x55\x73\x65\x20\x4e\x20\x6c" \
-"\x65\x74\x74\x65\x72\x73\x20\x61\x73\x20\x73\x75\x66\x66\x69\x78" \
-"\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x46\x49\x4c\x45\x2e" \
-"\x2e\x2e\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x66\x69\x6c\x65" \
-"\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x20\x6f\x72\x20\x66\x69" \
-"\x6c\x65\x73\x79\x73\x74\x65\x6d\x20\x73\x74\x61\x74\x75\x73\x0a" \
-"\x0a\x09\x2d\x66\x09\x44\x69\x73\x70\x6c\x61\x79\x20\x66\x69\x6c" \
-"\x65\x73\x79\x73\x74\x65\x6d\x20\x73\x74\x61\x74\x75\x73\x0a\x09" \
-"\x2d\x4c\x09\x46\x6f\x6c\x6c\x6f\x77\x20\x6c\x69\x6e\x6b\x73\x0a" \
-"\x09\x2d\x74\x09\x44\x69\x73\x70\x6c\x61\x79\x20\x69\x6e\x66\x6f" \
-"\x20\x69\x6e\x20\x74\x65\x72\x73\x65\x20\x66\x6f\x72\x6d\x00\x5b" \
-"\x2d\x61\x66\x6f\x5d\x20\x5b\x2d\x6e\x20\x4c\x45\x4e\x5d\x20\x5b" \
-"\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x44\x69\x73\x70\x6c\x61" \
-"\x79\x20\x70\x72\x69\x6e\x74\x61\x62\x6c\x65\x20\x73\x74\x72\x69" \
-"\x6e\x67\x73\x20\x69\x6e\x20\x61\x20\x62\x69\x6e\x61\x72\x79\x20" \
-"\x66\x69\x6c\x65\x0a\x0a\x09\x2d\x61\x09\x53\x63\x61\x6e\x20\x77" \
-"\x68\x6f\x6c\x65\x20\x66\x69\x6c\x65\x20\x28\x64\x65\x66\x61\x75" \
-"\x6c\x74\x29\x0a\x09\x2d\x66\x09\x50\x72\x65\x63\x65\x64\x65\x20" \
-"\x73\x74\x72\x69\x6e\x67\x73\x20\x77\x69\x74\x68\x20\x66\x69\x6c" \
-"\x65\x6e\x61\x6d\x65\x73\x0a\x09\x2d\x6e\x20\x4c\x45\x4e\x09\x41" \
-"\x74\x20\x6c\x65\x61\x73\x74\x20\x4c\x45\x4e\x20\x63\x68\x61\x72" \
-"\x61\x63\x74\x65\x72\x73\x20\x66\x6f\x72\x6d\x20\x61\x20\x73\x74" \
-"\x72\x69\x6e\x67\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x20\x34\x29" \
-"\x0a\x09\x2d\x6f\x09\x50\x72\x65\x63\x65\x64\x65\x20\x73\x74\x72" \
-"\x69\x6e\x67\x73\x20\x77\x69\x74\x68\x20\x64\x65\x63\x69\x6d\x61" \
-"\x6c\x20\x6f\x66\x66\x73\x65\x74\x73\x00\x5b\x2d\x61\x7c\x67\x5d" \
-"\x20\x5b\x2d\x46\x20\x44\x45\x56\x49\x43\x45\x5d\x20\x5b\x53\x45" \
-"\x54\x54\x49\x4e\x47\x5d\x2e\x2e\x2e\x0a\x0a\x57\x69\x74\x68\x6f" \
-"\x75\x74\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x2c\x20\x70\x72" \
-"\x69\x6e\x74\x73\x20\x62\x61\x75\x64\x20\x72\x61\x74\x65\x2c\x20" \
-"\x6c\x69\x6e\x65\x20\x64\x69\x73\x63\x69\x70\x6c\x69\x6e\x65\x2c" \
-"\x0a\x61\x6e\x64\x20\x64\x65\x76\x69\x61\x74\x69\x6f\x6e\x73\x20" \
-"\x66\x72\x6f\x6d\x20\x73\x74\x74\x79\x20\x73\x61\x6e\x65\x0a\x0a" \
-"\x09\x2d\x46\x20\x44\x45\x56\x49\x43\x45\x09\x4f\x70\x65\x6e\x20" \
-"\x64\x65\x76\x69\x63\x65\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f" \
-"\x66\x20\x73\x74\x64\x69\x6e\x0a\x09\x2d\x61\x09\x09\x50\x72\x69" \
-"\x6e\x74\x20\x61\x6c\x6c\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x73" \
-"\x65\x74\x74\x69\x6e\x67\x73\x20\x69\x6e\x20\x68\x75\x6d\x61\x6e" \
-"\x2d\x72\x65\x61\x64\x61\x62\x6c\x65\x20\x66\x6f\x72\x6d\x0a\x09" \
-"\x2d\x67\x09\x09\x50\x72\x69\x6e\x74\x20\x69\x6e\x20\x73\x74\x74" \
-"\x79\x2d\x72\x65\x61\x64\x61\x62\x6c\x65\x20\x66\x6f\x72\x6d\x0a" \
-"\x09\x5b\x53\x45\x54\x54\x49\x4e\x47\x5d\x09\x53\x65\x65\x20\x6d" \
-"\x61\x6e\x70\x61\x67\x65\x00\x5b\x2d\x72\x73\x5d\x20\x5b\x46\x49" \
-"\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x68\x65\x63\x6b\x73\x75\x6d" \
-"\x20\x61\x6e\x64\x20\x63\x6f\x75\x6e\x74\x20\x74\x68\x65\x20\x62" \
-"\x6c\x6f\x63\x6b\x73\x20\x69\x6e\x20\x61\x20\x66\x69\x6c\x65\x0a" \
-"\x0a\x09\x2d\x72\x09\x55\x73\x65\x20\x42\x53\x44\x20\x73\x75\x6d" \
-"\x20\x61\x6c\x67\x6f\x72\x69\x74\x68\x6d\x20\x28\x31\x4b\x20\x62" \
-"\x6c\x6f\x63\x6b\x73\x29\x0a\x09\x2d\x73\x09\x55\x73\x65\x20\x53" \
-"\x79\x73\x74\x65\x6d\x20\x56\x20\x73\x75\x6d\x20\x61\x6c\x67\x6f" \
-"\x72\x69\x74\x68\x6d\x20\x28\x35\x31\x32\x62\x79\x74\x65\x20\x62" \
-"\x6c\x6f\x63\x6b\x73\x29\x00\x5b\x2d\x61\x5d\x20\x5b\x44\x45\x56" \
-"\x49\x43\x45\x5d\x0a\x0a\x53\x74\x6f\x70\x20\x73\x77\x61\x70\x70" \
-"\x69\x6e\x67\x20\x6f\x6e\x20\x44\x45\x56\x49\x43\x45\x0a\x0a\x09" \
-"\x2d\x61\x09\x53\x74\x6f\x70\x20\x73\x77\x61\x70\x70\x69\x6e\x67" \
-"\x20\x6f\x6e\x20\x61\x6c\x6c\x20\x73\x77\x61\x70\x20\x64\x65\x76" \
-"\x69\x63\x65\x73\x00\x5b\x2d\x61\x5d\x20\x5b\x44\x45\x56\x49\x43" \
-"\x45\x5d\x0a\x0a\x53\x74\x61\x72\x74\x20\x73\x77\x61\x70\x70\x69" \
-"\x6e\x67\x20\x6f\x6e\x20\x44\x45\x56\x49\x43\x45\x0a\x0a\x09\x2d" \
-"\x61\x09\x53\x74\x61\x72\x74\x20\x73\x77\x61\x70\x70\x69\x6e\x67" \
-"\x20\x6f\x6e\x20\x61\x6c\x6c\x20\x73\x77\x61\x70\x20\x64\x65\x76" \
-"\x69\x63\x65\x73\x00\x0a\x0a\x57\x72\x69\x74\x65\x20\x61\x6c\x6c" \
-"\x20\x62\x75\x66\x66\x65\x72\x65\x64\x20\x62\x6c\x6f\x63\x6b\x73" \
-"\x20\x74\x6f\x20\x64\x69\x73\x6b\x00\x5b\x4f\x50\x54\x49\x4f\x4e" \
-"\x53\x5d\x20\x5b\x4b\x45\x59\x5b\x3d\x56\x41\x4c\x55\x45\x5d\x5d" \
-"\x2e\x2e\x2e\x0a\x0a\x53\x68\x6f\x77\x2f\x73\x65\x74\x20\x6b\x65" \
-"\x72\x6e\x65\x6c\x20\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x73\x0a" \
-"\x0a\x09\x2d\x65\x09\x44\x6f\x6e\x27\x74\x20\x77\x61\x72\x6e\x20" \
-"\x61\x62\x6f\x75\x74\x20\x75\x6e\x6b\x6e\x6f\x77\x6e\x20\x6b\x65" \
-"\x79\x73\x0a\x09\x2d\x6e\x09\x44\x6f\x6e\x27\x74\x20\x73\x68\x6f" \
-"\x77\x20\x6b\x65\x79\x20\x6e\x61\x6d\x65\x73\x0a\x09\x2d\x61\x09" \
-"\x53\x68\x6f\x77\x20\x61\x6c\x6c\x20\x76\x61\x6c\x75\x65\x73\x0a" \
-"\x09\x2d\x77\x09\x53\x65\x74\x20\x76\x61\x6c\x75\x65\x73\x0a\x09" \
-"\x2d\x70\x20\x46\x49\x4c\x45\x09\x53\x65\x74\x20\x76\x61\x6c\x75" \
-"\x65\x73\x20\x66\x72\x6f\x6d\x20\x46\x49\x4c\x45\x20\x28\x64\x65" \
-"\x66\x61\x75\x6c\x74\x20\x2f\x65\x74\x63\x2f\x73\x79\x73\x63\x74" \
-"\x6c\x2e\x63\x6f\x6e\x66\x29\x0a\x09\x2d\x71\x20\x20\x20\x20\x20" \
-"\x20\x53\x65\x74\x20\x76\x61\x6c\x75\x65\x73\x20\x73\x69\x6c\x65" \
-"\x6e\x74\x6c\x79\x00\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a" \
-"\x43\x6f\x6e\x63\x61\x74\x65\x6e\x61\x74\x65\x20\x46\x49\x4c\x45" \
-"\x73\x20\x61\x6e\x64\x20\x70\x72\x69\x6e\x74\x20\x74\x68\x65\x6d" \
-"\x20\x69\x6e\x20\x72\x65\x76\x65\x72\x73\x65\x00\x5b\x4f\x50\x54" \
-"\x49\x4f\x4e\x53\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a" \
-"\x0a\x50\x72\x69\x6e\x74\x20\x6c\x61\x73\x74\x20\x31\x30\x20\x6c" \
-"\x69\x6e\x65\x73\x20\x6f\x66\x20\x65\x61\x63\x68\x20\x46\x49\x4c" \
-"\x45\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x20\x74\x6f\x20" \
-"\x73\x74\x64\x6f\x75\x74\x2e\x0a\x57\x69\x74\x68\x20\x6d\x6f\x72" \
-"\x65\x20\x74\x68\x61\x6e\x20\x6f\x6e\x65\x20\x46\x49\x4c\x45\x2c" \
-"\x20\x70\x72\x65\x63\x65\x64\x65\x20\x65\x61\x63\x68\x20\x77\x69" \
-"\x74\x68\x20\x61\x20\x66\x69\x6c\x65\x6e\x61\x6d\x65\x20\x68\x65" \
-"\x61\x64\x65\x72\x2e\x0a\x0a\x09\x2d\x66\x09\x09\x50\x72\x69\x6e" \
-"\x74\x20\x64\x61\x74\x61\x20\x61\x73\x20\x66\x69\x6c\x65\x20\x67" \
-"\x72\x6f\x77\x73\x0a\x09\x2d\x73\x20\x53\x45\x43\x4f\x4e\x44\x53" \
-"\x09\x57\x61\x69\x74\x20\x53\x45\x43\x4f\x4e\x44\x53\x20\x62\x65" \
-"\x74\x77\x65\x65\x6e\x20\x72\x65\x61\x64\x73\x20\x77\x69\x74\x68" \
-"\x20\x2d\x66\x0a\x09\x2d\x6e\x20\x4e\x5b\x6b\x62\x6d\x5d\x09\x50" \
-"\x72\x69\x6e\x74\x20\x6c\x61\x73\x74\x20\x4e\x20\x6c\x69\x6e\x65" \
-"\x73\x0a\x09\x2d\x63\x20\x4e\x5b\x6b\x62\x6d\x5d\x09\x50\x72\x69" \
-"\x6e\x74\x20\x6c\x61\x73\x74\x20\x4e\x20\x62\x79\x74\x65\x73\x0a" \
-"\x09\x2d\x71\x09\x09\x4e\x65\x76\x65\x72\x20\x70\x72\x69\x6e\x74" \
-"\x20\x68\x65\x61\x64\x65\x72\x73\x0a\x09\x2d\x76\x09\x09\x41\x6c" \
-"\x77\x61\x79\x73\x20\x70\x72\x69\x6e\x74\x20\x68\x65\x61\x64\x65" \
-"\x72\x73\x0a\x0a\x4e\x20\x6d\x61\x79\x20\x62\x65\x20\x73\x75\x66" \
-"\x66\x69\x78\x65\x64\x20\x62\x79\x20\x6b\x20\x28\x78\x31\x30\x32" \
-"\x34\x29\x2c\x20\x62\x20\x28\x78\x35\x31\x32\x29\x2c\x20\x6f\x72" \
-"\x20\x6d\x20\x28\x78\x31\x30\x32\x34\x5e\x32\x29\x2e\x0a\x49\x66" \
-"\x20\x4e\x20\x73\x74\x61\x72\x74\x73\x20\x77\x69\x74\x68\x20\x61" \
-"\x20\x27\x2b\x27\x2c\x20\x6f\x75\x74\x70\x75\x74\x20\x62\x65\x67" \
-"\x69\x6e\x73\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x4e\x74\x68" \
-"\x20\x69\x74\x65\x6d\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x73" \
-"\x74\x61\x72\x74\x0a\x6f\x66\x20\x65\x61\x63\x68\x20\x66\x69\x6c" \
-"\x65\x2c\x20\x6e\x6f\x74\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20" \
-"\x65\x6e\x64\x2e\x00\x2d\x5b\x63\x78\x74\x7a\x4a\x6a\x61\x68\x6d" \
-"\x76\x4f\x5d\x20\x5b\x2d\x58\x20\x46\x49\x4c\x45\x5d\x20\x5b\x2d" \
-"\x54\x20\x46\x49\x4c\x45\x5d\x20\x5b\x2d\x66\x20\x54\x41\x52\x46" \
-"\x49\x4c\x45\x5d\x20\x5b\x2d\x43\x20\x44\x49\x52\x5d\x20\x5b\x46" \
-"\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x72\x65\x61\x74\x65\x2c" \
-"\x20\x65\x78\x74\x72\x61\x63\x74\x2c\x20\x6f\x72\x20\x6c\x69\x73" \
-"\x74\x20\x66\x69\x6c\x65\x73\x20\x66\x72\x6f\x6d\x20\x61\x20\x74" \
-"\x61\x72\x20\x66\x69\x6c\x65\x0a\x0a\x4f\x70\x65\x72\x61\x74\x69" \
-"\x6f\x6e\x3a\x0a\x09\x63\x09\x43\x72\x65\x61\x74\x65\x0a\x09\x78" \
-"\x09\x45\x78\x74\x72\x61\x63\x74\x0a\x09\x74\x09\x4c\x69\x73\x74" \
-"\x0a\x09\x66\x09\x4e\x61\x6d\x65\x20\x6f\x66\x20\x54\x41\x52\x46" \
-"\x49\x4c\x45\x20\x28\x27\x2d\x27\x20\x66\x6f\x72\x20\x73\x74\x64" \
-"\x69\x6e\x2f\x6f\x75\x74\x29\x0a\x09\x43\x09\x43\x68\x61\x6e\x67" \
-"\x65\x20\x74\x6f\x20\x44\x49\x52\x20\x62\x65\x66\x6f\x72\x65\x20" \
-"\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\x0a\x09\x76\x09\x56\x65\x72" \
-"\x62\x6f\x73\x65\x0a\x09\x7a\x09\x28\x44\x65\x29\x63\x6f\x6d\x70" \
-"\x72\x65\x73\x73\x20\x75\x73\x69\x6e\x67\x20\x67\x7a\x69\x70\x0a" \
-"\x09\x4a\x09\x28\x44\x65\x29\x63\x6f\x6d\x70\x72\x65\x73\x73\x20" \
-"\x75\x73\x69\x6e\x67\x20\x78\x7a\x0a\x09\x6a\x09\x28\x44\x65\x29" \
-"\x63\x6f\x6d\x70\x72\x65\x73\x73\x20\x75\x73\x69\x6e\x67\x20\x62" \
-"\x7a\x69\x70\x32\x0a\x09\x61\x09\x28\x44\x65\x29\x63\x6f\x6d\x70" \
-"\x72\x65\x73\x73\x20\x75\x73\x69\x6e\x67\x20\x6c\x7a\x6d\x61\x0a" \
-"\x09\x4f\x09\x45\x78\x74\x72\x61\x63\x74\x20\x74\x6f\x20\x73\x74" \
-"\x64\x6f\x75\x74\x0a\x09\x68\x09\x46\x6f\x6c\x6c\x6f\x77\x20\x73" \
-"\x79\x6d\x6c\x69\x6e\x6b\x73\x0a\x09\x6d\x09\x44\x6f\x6e\x27\x74" \
-"\x20\x72\x65\x73\x74\x6f\x72\x65\x20\x6d\x74\x69\x6d\x65\x0a\x09" \
-"\x65\x78\x63\x6c\x75\x64\x65\x09\x46\x69\x6c\x65\x20\x74\x6f\x20" \
-"\x65\x78\x63\x6c\x75\x64\x65\x0a\x09\x58\x09\x46\x69\x6c\x65\x20" \
-"\x77\x69\x74\x68\x20\x6e\x61\x6d\x65\x73\x20\x74\x6f\x20\x65\x78" \
-"\x63\x6c\x75\x64\x65\x0a\x09\x54\x09\x46\x69\x6c\x65\x20\x77\x69" \
-"\x74\x68\x20\x6e\x61\x6d\x65\x73\x20\x74\x6f\x20\x69\x6e\x63\x6c" \
-"\x75\x64\x65\x00\x5b\x2d\x70\x5d\x20\x5b\x4d\x41\x53\x4b\x5d\x20" \
-"\x5b\x50\x49\x44\x20\x7c\x20\x50\x52\x4f\x47\x20\x41\x52\x47\x53" \
-"\x5d\x0a\x0a\x53\x65\x74\x20\x6f\x72\x20\x67\x65\x74\x20\x43\x50" \
-"\x55\x20\x61\x66\x66\x69\x6e\x69\x74\x79\x0a\x0a\x09\x2d\x70\x09" \
-"\x4f\x70\x65\x72\x61\x74\x65\x20\x6f\x6e\x20\x61\x6e\x20\x65\x78" \
-"\x69\x73\x74\x69\x6e\x67\x20\x50\x49\x44\x00\x5b\x2d\x61\x69\x5d" \
-"\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x6f\x70\x79" \
-"\x20\x73\x74\x64\x69\x6e\x20\x74\x6f\x20\x65\x61\x63\x68\x20\x46" \
-"\x49\x4c\x45\x2c\x20\x61\x6e\x64\x20\x61\x6c\x73\x6f\x20\x74\x6f" \
-"\x20\x73\x74\x64\x6f\x75\x74\x0a\x0a\x09\x2d\x61\x09\x41\x70\x70" \
-"\x65\x6e\x64\x20\x74\x6f\x20\x74\x68\x65\x20\x67\x69\x76\x65\x6e" \
-"\x20\x46\x49\x4c\x45\x73\x2c\x20\x64\x6f\x6e\x27\x74\x20\x6f\x76" \
-"\x65\x72\x77\x72\x69\x74\x65\x0a\x09\x2d\x69\x09\x49\x67\x6e\x6f" \
-"\x72\x65\x20\x69\x6e\x74\x65\x72\x72\x75\x70\x74\x20\x73\x69\x67" \
-"\x6e\x61\x6c\x73\x20\x28\x53\x49\x47\x49\x4e\x54\x29\x00\x48\x4f" \
-"\x53\x54\x20\x5b\x50\x4f\x52\x54\x5d\x0a\x0a\x43\x6f\x6e\x6e\x65" \
-"\x63\x74\x20\x74\x6f\x20\x74\x65\x6c\x6e\x65\x74\x20\x73\x65\x72" \
-"\x76\x65\x72\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x0a\x0a\x48" \
-"\x61\x6e\x64\x6c\x65\x20\x69\x6e\x63\x6f\x6d\x69\x6e\x67\x20\x74" \
-"\x65\x6c\x6e\x65\x74\x20\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e" \
-"\x73\x0a\x0a\x09\x2d\x6c\x20\x4c\x4f\x47\x49\x4e\x09\x45\x78\x65" \
-"\x63\x20\x4c\x4f\x47\x49\x4e\x20\x6f\x6e\x20\x63\x6f\x6e\x6e\x65" \
-"\x63\x74\x0a\x09\x2d\x66\x20\x49\x53\x53\x55\x45\x5f\x46\x49\x4c" \
-"\x45\x09\x44\x69\x73\x70\x6c\x61\x79\x20\x49\x53\x53\x55\x45\x5f" \
-"\x46\x49\x4c\x45\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20" \
-"\x2f\x65\x74\x63\x2f\x69\x73\x73\x75\x65\x0a\x09\x2d\x4b\x09\x09" \
-"\x43\x6c\x6f\x73\x65\x20\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e" \
-"\x20\x61\x73\x20\x73\x6f\x6f\x6e\x20\x61\x73\x20\x6c\x6f\x67\x69" \
-"\x6e\x20\x65\x78\x69\x74\x73\x0a\x09\x09\x09\x28\x6e\x6f\x72\x6d" \
-"\x61\x6c\x6c\x79\x20\x77\x61\x69\x74\x20\x75\x6e\x74\x69\x6c\x20" \
-"\x61\x6c\x6c\x20\x70\x72\x6f\x67\x72\x61\x6d\x73\x20\x63\x6c\x6f" \
-"\x73\x65\x20\x73\x6c\x61\x76\x65\x20\x70\x74\x79\x29\x0a\x09\x2d" \
-"\x70\x20\x50\x4f\x52\x54\x09\x09\x50\x6f\x72\x74\x20\x74\x6f\x20" \
-"\x6c\x69\x73\x74\x65\x6e\x20\x6f\x6e\x0a\x09\x2d\x62\x20\x41\x44" \
-"\x44\x52\x5b\x3a\x50\x4f\x52\x54\x5d\x09\x41\x64\x64\x72\x65\x73" \
-"\x73\x20\x74\x6f\x20\x62\x69\x6e\x64\x20\x74\x6f\x0a\x09\x2d\x46" \
-"\x09\x09\x52\x75\x6e\x20\x69\x6e\x20\x66\x6f\x72\x65\x67\x72\x6f" \
-"\x75\x6e\x64\x0a\x09\x2d\x69\x09\x09\x49\x6e\x65\x74\x64\x20\x6d" \
-"\x6f\x64\x65\x0a\x09\x2d\x77\x20\x53\x45\x43\x09\x09\x49\x6e\x65" \
-"\x74\x64\x20\x27\x77\x61\x69\x74\x27\x20\x6d\x6f\x64\x65\x2c\x20" \
-"\x6c\x69\x6e\x67\x65\x72\x20\x74\x69\x6d\x65\x20\x53\x45\x43\x0a" \
-"\x09\x2d\x53\x09\x09\x4c\x6f\x67\x20\x74\x6f\x20\x73\x79\x73\x6c" \
-"\x6f\x67\x20\x28\x69\x6d\x70\x6c\x69\x65\x64\x20\x62\x79\x20\x2d" \
-"\x69\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\x75\x74\x20\x2d\x46\x20" \
-"\x61\x6e\x64\x20\x2d\x77\x29\x00\x45\x58\x50\x52\x45\x53\x53\x49" \
-"\x4f\x4e\x20\x5d\x0a\x0a\x43\x68\x65\x63\x6b\x20\x66\x69\x6c\x65" \
-"\x20\x74\x79\x70\x65\x73\x2c\x20\x63\x6f\x6d\x70\x61\x72\x65\x20" \
-"\x76\x61\x6c\x75\x65\x73\x20\x65\x74\x63\x2e\x20\x52\x65\x74\x75" \
-"\x72\x6e\x20\x61\x20\x30\x2f\x31\x20\x65\x78\x69\x74\x20\x63\x6f" \
-"\x64\x65\x0a\x64\x65\x70\x65\x6e\x64\x69\x6e\x67\x20\x6f\x6e\x20" \
-"\x6c\x6f\x67\x69\x63\x61\x6c\x20\x76\x61\x6c\x75\x65\x20\x6f\x66" \
-"\x20\x45\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x00\x5b\x4f\x50\x54" \
-"\x49\x4f\x4e\x53\x5d\x20\x48\x4f\x53\x54\x20\x5b\x50\x4f\x52\x54" \
-"\x5d\x0a\x0a\x54\x72\x61\x6e\x73\x66\x65\x72\x20\x61\x20\x66\x69" \
-"\x6c\x65\x20\x66\x72\x6f\x6d\x2f\x74\x6f\x20\x74\x66\x74\x70\x20" \
-"\x73\x65\x72\x76\x65\x72\x0a\x0a\x09\x2d\x6c\x20\x46\x49\x4c\x45" \
-"\x09\x4c\x6f\x63\x61\x6c\x20\x46\x49\x4c\x45\x0a\x09\x2d\x72\x20" \
-"\x46\x49\x4c\x45\x09\x52\x65\x6d\x6f\x74\x65\x20\x46\x49\x4c\x45" \
-"\x0a\x09\x2d\x67\x09\x47\x65\x74\x20\x66\x69\x6c\x65\x0a\x09\x2d" \
-"\x70\x09\x50\x75\x74\x20\x66\x69\x6c\x65\x00\x5b\x2d\x63\x72\x5d" \
-"\x20\x5b\x2d\x75\x20\x55\x53\x45\x52\x5d\x20\x5b\x44\x49\x52\x5d" \
-"\x0a\x0a\x54\x72\x61\x6e\x73\x66\x65\x72\x20\x61\x20\x66\x69\x6c" \
-"\x65\x20\x6f\x6e\x20\x74\x66\x74\x70\x20\x63\x6c\x69\x65\x6e\x74" \
-"\x27\x73\x20\x72\x65\x71\x75\x65\x73\x74\x0a\x0a\x74\x66\x74\x70" \
-"\x64\x20\x73\x68\x6f\x75\x6c\x64\x20\x62\x65\x20\x75\x73\x65\x64" \
-"\x20\x61\x73\x20\x61\x6e\x20\x69\x6e\x65\x74\x64\x20\x73\x65\x72" \
-"\x76\x69\x63\x65\x2e\x0a\x74\x66\x74\x70\x64\x27\x73\x20\x6c\x69" \
-"\x6e\x65\x20\x66\x6f\x72\x20\x69\x6e\x65\x74\x64\x2e\x63\x6f\x6e" \
-"\x66\x3a\x0a\x09\x36\x39\x20\x64\x67\x72\x61\x6d\x20\x75\x64\x70" \
-"\x20\x6e\x6f\x77\x61\x69\x74\x20\x72\x6f\x6f\x74\x20\x74\x66\x74" \
-"\x70\x64\x20\x74\x66\x74\x70\x64\x20\x2d\x6c\x20\x2f\x66\x69\x6c" \
-"\x65\x73\x2f\x74\x6f\x2f\x73\x65\x72\x76\x65\x0a\x49\x74\x20\x61" \
-"\x6c\x73\x6f\x20\x63\x61\x6e\x20\x62\x65\x20\x72\x61\x6e\x20\x66" \
-"\x72\x6f\x6d\x20\x75\x64\x70\x73\x76\x64\x3a\x0a\x09\x75\x64\x70" \
-"\x73\x76\x64\x20\x2d\x76\x45\x20\x30\x2e\x30\x2e\x30\x2e\x30\x20" \
-"\x36\x39\x20\x74\x66\x74\x70\x64\x20\x2f\x66\x69\x6c\x65\x73\x2f" \
-"\x74\x6f\x2f\x73\x65\x72\x76\x65\x0a\x0a\x09\x2d\x72\x09\x50\x72" \
-"\x6f\x68\x69\x62\x69\x74\x20\x75\x70\x6c\x6f\x61\x64\x0a\x09\x2d" \
-"\x63\x09\x41\x6c\x6c\x6f\x77\x20\x66\x69\x6c\x65\x20\x63\x72\x65" \
-"\x61\x74\x69\x6f\x6e\x20\x76\x69\x61\x20\x75\x70\x6c\x6f\x61\x64" \
-"\x0a\x09\x2d\x75\x09\x41\x63\x63\x65\x73\x73\x20\x66\x69\x6c\x65" \
-"\x73\x20\x61\x73\x20\x55\x53\x45\x52\x0a\x09\x2d\x6c\x09\x4c\x6f" \
-"\x67\x20\x74\x6f\x20\x73\x79\x73\x6c\x6f\x67\x20\x28\x69\x6e\x65" \
-"\x74\x64\x20\x6d\x6f\x64\x65\x20\x72\x65\x71\x75\x69\x72\x65\x73" \
-"\x20\x74\x68\x69\x73\x29\x00\x5b\x2d\x76\x5d\x20\x50\x52\x4f\x47" \
-"\x20\x41\x52\x47\x53\x0a\x0a\x52\x75\x6e\x20\x50\x52\x4f\x47\x2c" \
-"\x20\x64\x69\x73\x70\x6c\x61\x79\x20\x72\x65\x73\x6f\x75\x72\x63" \
-"\x65\x20\x75\x73\x61\x67\x65\x20\x77\x68\x65\x6e\x20\x69\x74\x20" \
-"\x65\x78\x69\x74\x73\x0a\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f" \
-"\x73\x65\x00\x5b\x2d\x74\x20\x53\x45\x43\x53\x5d\x20\x5b\x2d\x73" \
-"\x20\x53\x49\x47\x5d\x20\x50\x52\x4f\x47\x20\x41\x52\x47\x53\x0a" \
-"\x0a\x52\x75\x6e\x73\x20\x50\x52\x4f\x47\x2e\x20\x53\x65\x6e\x64" \
-"\x73\x20\x53\x49\x47\x20\x74\x6f\x20\x69\x74\x20\x69\x66\x20\x69" \
-"\x74\x20\x69\x73\x20\x6e\x6f\x74\x20\x67\x6f\x6e\x65\x20\x69\x6e" \
-"\x20\x53\x45\x43\x53\x20\x73\x65\x63\x6f\x6e\x64\x73\x2e\x0a\x44" \
-"\x65\x66\x61\x75\x6c\x74\x73\x3a\x20\x53\x45\x43\x53\x3a\x20\x31" \
-"\x30\x2c\x20\x53\x49\x47\x3a\x20\x54\x45\x52\x4d\x2e\x00\x5b\x2d" \
-"\x62\x5d\x20\x5b\x2d\x6e\x43\x4f\x55\x4e\x54\x5d\x20\x5b\x2d\x64" \
-"\x53\x45\x43\x4f\x4e\x44\x53\x5d\x20\x5b\x2d\x6d\x5d\x0a\x0a\x50" \
-"\x72\x6f\x76\x69\x64\x65\x20\x61\x20\x76\x69\x65\x77\x20\x6f\x66" \
-"\x20\x70\x72\x6f\x63\x65\x73\x73\x20\x61\x63\x74\x69\x76\x69\x74" \
-"\x79\x20\x69\x6e\x20\x72\x65\x61\x6c\x20\x74\x69\x6d\x65\x2e\x0a" \
-"\x52\x65\x61\x64\x20\x74\x68\x65\x20\x73\x74\x61\x74\x75\x73\x20" \
-"\x6f\x66\x20\x61\x6c\x6c\x20\x70\x72\x6f\x63\x65\x73\x73\x65\x73" \
-"\x20\x66\x72\x6f\x6d\x20\x2f\x70\x72\x6f\x63\x20\x65\x61\x63\x68" \
-"\x20\x53\x45\x43\x4f\x4e\x44\x53\x0a\x61\x6e\x64\x20\x64\x69\x73" \
-"\x70\x6c\x61\x79\x20\x61\x20\x73\x63\x72\x65\x65\x6e\x66\x75\x6c" \
-"\x20\x6f\x66\x20\x74\x68\x65\x6d\x2e\x0a\x4b\x65\x79\x73\x3a\x0a" \
-"\x09\x4e\x2f\x4d\x2f\x50\x2f\x54\x3a\x20\x73\x68\x6f\x77\x20\x43" \
-"\x50\x55\x20\x75\x73\x61\x67\x65\x2c\x20\x73\x6f\x72\x74\x20\x62" \
-"\x79\x20\x70\x69\x64\x2f\x6d\x65\x6d\x2f\x63\x70\x75\x2f\x74\x69" \
-"\x6d\x65\x0a\x09\x53\x3a\x20\x73\x68\x6f\x77\x20\x6d\x65\x6d\x6f" \
-"\x72\x79\x0a\x09\x52\x3a\x20\x72\x65\x76\x65\x72\x73\x65\x20\x73" \
-"\x6f\x72\x74\x0a\x09\x48\x3a\x20\x74\x6f\x67\x67\x6c\x65\x20\x74" \
-"\x68\x72\x65\x61\x64\x73\x2c\x20\x31\x3a\x20\x74\x6f\x67\x67\x6c" \
-"\x65\x20\x53\x4d\x50\x0a\x09\x51\x2c\x5e\x43\x3a\x20\x65\x78\x69" \
-"\x74\x0a\x0a\x4f\x70\x74\x69\x6f\x6e\x73\x3a\x0a\x09\x2d\x62\x09" \
-"\x42\x61\x74\x63\x68\x20\x6d\x6f\x64\x65\x0a\x09\x2d\x6e\x20\x4e" \
-"\x09\x45\x78\x69\x74\x20\x61\x66\x74\x65\x72\x20\x4e\x20\x69\x74" \
-"\x65\x72\x61\x74\x69\x6f\x6e\x73\x0a\x09\x2d\x64\x20\x4e\x09\x44" \
-"\x65\x6c\x61\x79\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x75\x70\x64" \
-"\x61\x74\x65\x73\x0a\x09\x2d\x6d\x09\x53\x61\x6d\x65\x20\x61\x73" \
-"\x20\x27\x73\x27\x20\x6b\x65\x79\x00\x5b\x2d\x63\x5d\x20\x5b\x2d" \
-"\x64\x20\x44\x41\x54\x45\x5d\x20\x5b\x2d\x74\x20\x44\x41\x54\x45" \
-"\x5d\x20\x5b\x2d\x72\x20\x46\x49\x4c\x45\x5d\x20\x46\x49\x4c\x45" \
-"\x2e\x2e\x2e\x0a\x0a\x55\x70\x64\x61\x74\x65\x20\x74\x68\x65\x20" \
-"\x6c\x61\x73\x74\x2d\x6d\x6f\x64\x69\x66\x69\x65\x64\x20\x64\x61" \
-"\x74\x65\x20\x6f\x6e\x20\x74\x68\x65\x20\x67\x69\x76\x65\x6e\x20" \
-"\x46\x49\x4c\x45\x5b\x73\x5d\x0a\x0a\x09\x2d\x63\x09\x44\x6f\x6e" \
-"\x27\x74\x20\x63\x72\x65\x61\x74\x65\x20\x66\x69\x6c\x65\x73\x0a" \
-"\x09\x2d\x64\x20\x44\x54\x09\x44\x61\x74\x65\x2f\x74\x69\x6d\x65" \
-"\x20\x74\x6f\x20\x75\x73\x65\x0a\x09\x2d\x74\x20\x44\x54\x09\x44" \
-"\x61\x74\x65\x2f\x74\x69\x6d\x65\x20\x74\x6f\x20\x75\x73\x65\x0a" \
-"\x09\x2d\x72\x20\x46\x49\x4c\x45\x09\x55\x73\x65\x20\x46\x49\x4c" \
-"\x45\x27\x73\x20\x64\x61\x74\x65\x2f\x74\x69\x6d\x65\x00\x5b\x2d" \
-"\x63\x64\x73\x5d\x20\x53\x54\x52\x49\x4e\x47\x31\x20\x5b\x53\x54" \
-"\x52\x49\x4e\x47\x32\x5d\x0a\x0a\x54\x72\x61\x6e\x73\x6c\x61\x74" \
-"\x65\x2c\x20\x73\x71\x75\x65\x65\x7a\x65\x2c\x20\x6f\x72\x20\x64" \
-"\x65\x6c\x65\x74\x65\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73" \
-"\x20\x66\x72\x6f\x6d\x20\x73\x74\x64\x69\x6e\x2c\x20\x77\x72\x69" \
-"\x74\x69\x6e\x67\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x0a" \
-"\x09\x2d\x63\x09\x54\x61\x6b\x65\x20\x63\x6f\x6d\x70\x6c\x65\x6d" \
-"\x65\x6e\x74\x20\x6f\x66\x20\x53\x54\x52\x49\x4e\x47\x31\x0a\x09" \
-"\x2d\x64\x09\x44\x65\x6c\x65\x74\x65\x20\x69\x6e\x70\x75\x74\x20" \
-"\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x20\x63\x6f\x64\x65\x64" \
-"\x20\x53\x54\x52\x49\x4e\x47\x31\x0a\x09\x2d\x73\x09\x53\x71\x75" \
-"\x65\x65\x7a\x65\x20\x6d\x75\x6c\x74\x69\x70\x6c\x65\x20\x6f\x75" \
-"\x74\x70\x75\x74\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x20" \
-"\x6f\x66\x20\x53\x54\x52\x49\x4e\x47\x32\x20\x69\x6e\x74\x6f\x20" \
-"\x6f\x6e\x65\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x00\x5b\x2d" \
-"\x46\x49\x6c\x64\x6e\x72\x76\x5d\x20\x5b\x2d\x66\x20\x31\x53\x54" \
-"\x5f\x54\x54\x4c\x5d\x20\x5b\x2d\x6d\x20\x4d\x41\x58\x54\x54\x4c" \
-"\x5d\x20\x5b\x2d\x70\x20\x50\x4f\x52\x54\x5d\x20\x5b\x2d\x71\x20" \
-"\x50\x52\x4f\x42\x45\x53\x5d\x0a\x09\x5b\x2d\x73\x20\x53\x52\x43" \
-"\x5f\x49\x50\x5d\x20\x5b\x2d\x74\x20\x54\x4f\x53\x5d\x20\x5b\x2d" \
-"\x77\x20\x57\x41\x49\x54\x5f\x53\x45\x43\x5d\x20\x5b\x2d\x67\x20" \
-"\x47\x41\x54\x45\x57\x41\x59\x5d\x20\x5b\x2d\x69\x20\x49\x46\x41" \
-"\x43\x45\x5d\x0a\x09\x5b\x2d\x7a\x20\x50\x41\x55\x53\x45\x5f\x4d" \
-"\x53\x45\x43\x5d\x20\x48\x4f\x53\x54\x20\x5b\x42\x59\x54\x45\x53" \
-"\x5d\x0a\x0a\x54\x72\x61\x63\x65\x20\x74\x68\x65\x20\x72\x6f\x75" \
-"\x74\x65\x20\x74\x6f\x20\x48\x4f\x53\x54\x0a\x0a\x09\x2d\x46\x09" \
-"\x53\x65\x74\x20\x74\x68\x65\x20\x64\x6f\x6e\x27\x74\x20\x66\x72" \
-"\x61\x67\x6d\x65\x6e\x74\x20\x62\x69\x74\x0a\x09\x2d\x49\x09\x55" \
-"\x73\x65\x20\x49\x43\x4d\x50\x20\x45\x43\x48\x4f\x20\x69\x6e\x73" \
-"\x74\x65\x61\x64\x20\x6f\x66\x20\x55\x44\x50\x20\x64\x61\x74\x61" \
-"\x67\x72\x61\x6d\x73\x0a\x09\x2d\x6c\x09\x44\x69\x73\x70\x6c\x61" \
-"\x79\x20\x74\x68\x65\x20\x54\x54\x4c\x20\x76\x61\x6c\x75\x65\x20" \
-"\x6f\x66\x20\x74\x68\x65\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20" \
-"\x70\x61\x63\x6b\x65\x74\x0a\x09\x2d\x64\x09\x53\x65\x74\x20\x53" \
-"\x4f\x5f\x44\x45\x42\x55\x47\x20\x6f\x70\x74\x69\x6f\x6e\x73\x20" \
-"\x74\x6f\x20\x73\x6f\x63\x6b\x65\x74\x0a\x09\x2d\x6e\x09\x50\x72" \
-"\x69\x6e\x74\x20\x6e\x75\x6d\x65\x72\x69\x63\x20\x61\x64\x64\x72" \
-"\x65\x73\x73\x65\x73\x0a\x09\x2d\x72\x09\x42\x79\x70\x61\x73\x73" \
-"\x20\x72\x6f\x75\x74\x69\x6e\x67\x20\x74\x61\x62\x6c\x65\x73\x2c" \
-"\x20\x73\x65\x6e\x64\x20\x64\x69\x72\x65\x63\x74\x6c\x79\x20\x74" \
-"\x6f\x20\x48\x4f\x53\x54\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f" \
-"\x73\x65\x0a\x09\x2d\x6d\x09\x4d\x61\x78\x20\x74\x69\x6d\x65\x2d" \
-"\x74\x6f\x2d\x6c\x69\x76\x65\x20\x28\x6d\x61\x78\x20\x6e\x75\x6d" \
-"\x62\x65\x72\x20\x6f\x66\x20\x68\x6f\x70\x73\x29\x0a\x09\x2d\x70" \
-"\x09\x42\x61\x73\x65\x20\x55\x44\x50\x20\x70\x6f\x72\x74\x20\x6e" \
-"\x75\x6d\x62\x65\x72\x20\x75\x73\x65\x64\x20\x69\x6e\x20\x70\x72" \
-"\x6f\x62\x65\x73\x0a\x09\x09\x28\x64\x65\x66\x61\x75\x6c\x74\x20" \
-"\x33\x33\x34\x33\x34\x29\x0a\x09\x2d\x71\x09\x4e\x75\x6d\x62\x65" \
-"\x72\x20\x6f\x66\x20\x70\x72\x6f\x62\x65\x73\x20\x70\x65\x72\x20" \
-"\x54\x54\x4c\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x20\x33\x29\x0a" \
-"\x09\x2d\x73\x09\x49\x50\x20\x61\x64\x64\x72\x65\x73\x73\x20\x74" \
-"\x6f\x20\x75\x73\x65\x20\x61\x73\x20\x74\x68\x65\x20\x73\x6f\x75" \
-"\x72\x63\x65\x20\x61\x64\x64\x72\x65\x73\x73\x0a\x09\x2d\x74\x09" \
-"\x54\x79\x70\x65\x2d\x6f\x66\x2d\x73\x65\x72\x76\x69\x63\x65\x20" \
-"\x69\x6e\x20\x70\x72\x6f\x62\x65\x20\x70\x61\x63\x6b\x65\x74\x73" \
-"\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x20\x30\x29\x0a\x09\x2d\x77" \
-"\x09\x54\x69\x6d\x65\x20\x69\x6e\x20\x73\x65\x63\x6f\x6e\x64\x73" \
-"\x20\x74\x6f\x20\x77\x61\x69\x74\x20\x66\x6f\x72\x20\x61\x20\x72" \
-"\x65\x73\x70\x6f\x6e\x73\x65\x20\x28\x64\x65\x66\x61\x75\x6c\x74" \
-"\x20\x33\x29\x0a\x09\x2d\x67\x09\x4c\x6f\x6f\x73\x65\x20\x73\x6f" \
-"\x75\x72\x63\x65\x20\x72\x6f\x75\x74\x65\x20\x67\x61\x74\x65\x77" \
-"\x61\x79\x20\x28\x38\x20\x6d\x61\x78\x29\x00\x0a\x0a\x52\x65\x74" \
-"\x75\x72\x6e\x20\x61\x6e\x20\x65\x78\x69\x74\x20\x63\x6f\x64\x65" \
-"\x20\x6f\x66\x20\x54\x52\x55\x45\x20\x28\x30\x29\x00\x5b\x77\x5d" \
-"\x20\x5b\x68\x5d\x0a\x0a\x50\x72\x69\x6e\x74\x20\x64\x69\x6d\x65" \
-"\x6e\x73\x69\x6f\x6e\x28\x73\x29\x20\x6f\x66\x20\x73\x74\x64\x69" \
-"\x6e\x27\x73\x20\x74\x65\x72\x6d\x69\x6e\x61\x6c\x2c\x20\x6f\x6e" \
-"\x20\x65\x72\x72\x6f\x72\x20\x72\x65\x74\x75\x72\x6e\x20\x38\x30" \
-"\x78\x32\x35\x00\x5b\x2d\x63\x20\x4d\x41\x58\x5f\x4d\x4f\x55\x4e" \
-"\x54\x5f\x43\x4f\x55\x4e\x54\x5d\x20\x5b\x2d\x69\x20\x44\x41\x59" \
-"\x53\x5d\x20\x5b\x2d\x43\x20\x4d\x4f\x55\x4e\x54\x5f\x43\x4f\x55" \
-"\x4e\x54\x5d\x20\x5b\x2d\x4c\x20\x4c\x41\x42\x45\x4c\x5d\x20\x42" \
-"\x4c\x4f\x43\x4b\x44\x45\x56\x0a\x0a\x41\x64\x6a\x75\x73\x74\x20" \
-"\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x20\x6f\x70\x74\x69\x6f" \
-"\x6e\x73\x20\x6f\x6e\x20\x65\x78\x74\x5b\x32\x33\x5d\x20\x66\x69" \
-"\x6c\x65\x73\x79\x73\x74\x65\x6d\x73\x00\x5b\x4f\x50\x54\x49\x4f" \
-"\x4e\x53\x5d\x20\x46\x49\x4c\x45\x53\x59\x53\x54\x45\x4d\x7c\x44" \
-"\x49\x52\x45\x43\x54\x4f\x52\x59\x0a\x0a\x55\x6e\x6d\x6f\x75\x6e" \
-"\x74\x20\x66\x69\x6c\x65\x20\x73\x79\x73\x74\x65\x6d\x73\x0a\x0a" \
-"\x09\x2d\x61\x09\x55\x6e\x6d\x6f\x75\x6e\x74\x20\x61\x6c\x6c\x20" \
-"\x66\x69\x6c\x65\x20\x73\x79\x73\x74\x65\x6d\x73\x0a\x09\x2d\x72" \
-"\x09\x54\x72\x79\x20\x74\x6f\x20\x72\x65\x6d\x6f\x75\x6e\x74\x20" \
-"\x64\x65\x76\x69\x63\x65\x73\x20\x61\x73\x20\x72\x65\x61\x64\x2d" \
-"\x6f\x6e\x6c\x79\x20\x69\x66\x20\x6d\x6f\x75\x6e\x74\x20\x69\x73" \
-"\x20\x62\x75\x73\x79\x0a\x09\x2d\x6c\x09\x4c\x61\x7a\x79\x20\x75" \
-"\x6d\x6f\x75\x6e\x74\x20\x28\x64\x65\x74\x61\x63\x68\x20\x66\x69" \
-"\x6c\x65\x73\x79\x73\x74\x65\x6d\x29\x0a\x09\x2d\x66\x09\x46\x6f" \
-"\x72\x63\x65\x20\x75\x6d\x6f\x75\x6e\x74\x20\x28\x69\x2e\x65\x2e" \
-"\x2c\x20\x75\x6e\x72\x65\x61\x63\x68\x61\x62\x6c\x65\x20\x4e\x46" \
-"\x53\x20\x73\x65\x72\x76\x65\x72\x29\x0a\x09\x2d\x64\x09\x46\x72" \
-"\x65\x65\x20\x6c\x6f\x6f\x70\x20\x64\x65\x76\x69\x63\x65\x20\x65" \
-"\x76\x65\x6e\x20\x69\x66\x20\x69\x74\x20\x68\x61\x73\x20\x62\x65" \
-"\x65\x6e\x20\x75\x73\x65\x64\x00\x5b\x2d\x61\x6d\x6e\x72\x73\x70" \
-"\x76\x5d\x0a\x0a\x50\x72\x69\x6e\x74\x20\x73\x79\x73\x74\x65\x6d" \
-"\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x0a\x0a\x09\x2d" \
-"\x61\x09\x50\x72\x69\x6e\x74\x20\x61\x6c\x6c\x0a\x09\x2d\x6d\x09" \
-"\x54\x68\x65\x20\x6d\x61\x63\x68\x69\x6e\x65\x20\x28\x68\x61\x72" \
-"\x64\x77\x61\x72\x65\x29\x20\x74\x79\x70\x65\x0a\x09\x2d\x6e\x09" \
-"\x48\x6f\x73\x74\x6e\x61\x6d\x65\x0a\x09\x2d\x72\x09\x4f\x53\x20" \
-"\x72\x65\x6c\x65\x61\x73\x65\x0a\x09\x2d\x73\x09\x4f\x53\x20\x6e" \
-"\x61\x6d\x65\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x0a\x09\x2d" \
-"\x70\x09\x50\x72\x6f\x63\x65\x73\x73\x6f\x72\x20\x74\x79\x70\x65" \
-"\x0a\x09\x2d\x76\x09\x4f\x53\x20\x76\x65\x72\x73\x69\x6f\x6e\x00" \
-"\x5b\x2d\x63\x66\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a" \
-"\x0a\x44\x65\x63\x6f\x6d\x70\x72\x65\x73\x73\x20\x2e\x5a\x20\x66" \
-"\x69\x6c\x65\x5b\x73\x5d\x0a\x0a\x09\x2d\x63\x09\x57\x72\x69\x74" \
-"\x65\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x2d\x66\x09" \
-"\x4f\x76\x65\x72\x77\x72\x69\x74\x65\x00\x5b\x2d\x66\x61\x5d\x5b" \
-"\x2d\x74\x20\x4e\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a" \
-"\x0a\x43\x6f\x6e\x76\x65\x72\x74\x20\x73\x70\x61\x63\x65\x73\x20" \
-"\x74\x6f\x20\x74\x61\x62\x73\x2c\x20\x77\x72\x69\x74\x69\x6e\x67" \
-"\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x0a\x09\x2d\x61\x2c" \
-"\x2d\x2d\x61\x6c\x6c\x09\x43\x6f\x6e\x76\x65\x72\x74\x20\x61\x6c" \
-"\x6c\x20\x62\x6c\x61\x6e\x6b\x73\x0a\x09\x2d\x66\x2c\x2d\x2d\x66" \
-"\x69\x72\x73\x74\x2d\x6f\x6e\x6c\x79\x09\x43\x6f\x6e\x76\x65\x72" \
-"\x74\x20\x6f\x6e\x6c\x79\x20\x6c\x65\x61\x64\x69\x6e\x67\x20\x62" \
-"\x6c\x61\x6e\x6b\x73\x0a\x09\x2d\x74\x2c\x2d\x2d\x74\x61\x62\x73" \
-"\x3d\x4e\x09\x54\x61\x62\x73\x74\x6f\x70\x73\x20\x65\x76\x65\x72" \
-"\x79\x20\x4e\x20\x63\x68\x61\x72\x73\x00\x5b\x2d\x63\x64\x75\x5d" \
-"\x5b\x2d\x66\x2c\x73\x2c\x77\x20\x4e\x5d\x20\x5b\x49\x4e\x50\x55" \
-"\x54\x20\x5b\x4f\x55\x54\x50\x55\x54\x5d\x5d\x0a\x0a\x44\x69\x73" \
-"\x63\x61\x72\x64\x20\x64\x75\x70\x6c\x69\x63\x61\x74\x65\x20\x6c" \
-"\x69\x6e\x65\x73\x0a\x0a\x09\x2d\x63\x09\x50\x72\x65\x66\x69\x78" \
-"\x20\x6c\x69\x6e\x65\x73\x20\x62\x79\x20\x74\x68\x65\x20\x6e\x75" \
-"\x6d\x62\x65\x72\x20\x6f\x66\x20\x6f\x63\x63\x75\x72\x72\x65\x6e" \
-"\x63\x65\x73\x0a\x09\x2d\x64\x09\x4f\x6e\x6c\x79\x20\x70\x72\x69" \
-"\x6e\x74\x20\x64\x75\x70\x6c\x69\x63\x61\x74\x65\x20\x6c\x69\x6e" \
-"\x65\x73\x0a\x09\x2d\x75\x09\x4f\x6e\x6c\x79\x20\x70\x72\x69\x6e" \
-"\x74\x20\x75\x6e\x69\x71\x75\x65\x20\x6c\x69\x6e\x65\x73\x0a\x09" \
-"\x2d\x66\x20\x4e\x09\x53\x6b\x69\x70\x20\x66\x69\x72\x73\x74\x20" \
-"\x4e\x20\x66\x69\x65\x6c\x64\x73\x0a\x09\x2d\x73\x20\x4e\x09\x53" \
-"\x6b\x69\x70\x20\x66\x69\x72\x73\x74\x20\x4e\x20\x63\x68\x61\x72" \
-"\x73\x20\x28\x61\x66\x74\x65\x72\x20\x61\x6e\x79\x20\x73\x6b\x69" \
-"\x70\x70\x65\x64\x20\x66\x69\x65\x6c\x64\x73\x29\x0a\x09\x2d\x77" \
-"\x20\x4e\x09\x43\x6f\x6d\x70\x61\x72\x65\x20\x4e\x20\x63\x68\x61" \
-"\x72\x61\x63\x74\x65\x72\x73\x20\x69\x6e\x20\x6c\x69\x6e\x65\x00" \
-"\x5b\x2d\x75\x64\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x0a\x0a\x43\x6f" \
-"\x6e\x76\x65\x72\x74\x20\x46\x49\x4c\x45\x20\x69\x6e\x2d\x70\x6c" \
-"\x61\x63\x65\x20\x66\x72\x6f\x6d\x20\x55\x6e\x69\x78\x20\x74\x6f" \
-"\x20\x44\x4f\x53\x20\x66\x6f\x72\x6d\x61\x74\x2e\x0a\x57\x68\x65" \
-"\x6e\x20\x6e\x6f\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x67\x69\x76" \
-"\x65\x6e\x2c\x20\x75\x73\x65\x20\x73\x74\x64\x69\x6e\x2f\x73\x74" \
-"\x64\x6f\x75\x74\x2e\x0a\x0a\x09\x2d\x75\x09\x64\x6f\x73\x32\x75" \
-"\x6e\x69\x78\x0a\x09\x2d\x64\x09\x75\x6e\x69\x78\x32\x64\x6f\x73" \
-"\x00\x5b\x2d\x63\x66\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e" \
-"\x0a\x0a\x44\x65\x63\x6f\x6d\x70\x72\x65\x73\x73\x20\x46\x49\x4c" \
-"\x45\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x0a\x0a\x09\x2d" \
-"\x63\x09\x57\x72\x69\x74\x65\x20\x74\x6f\x20\x73\x74\x64\x6f\x75" \
-"\x74\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x00\x5b\x2d\x63\x66" \
-"\x76\x43\x46\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a" \
-"\x09\x2d\x63\x09\x57\x72\x69\x74\x65\x20\x74\x6f\x20\x73\x74\x64" \
-"\x6f\x75\x74\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x0a\x09\x2d" \
-"\x76\x09\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x46\x09\x44\x6f" \
-"\x6e\x27\x74\x20\x73\x74\x6f\x72\x65\x20\x6f\x72\x20\x76\x65\x72" \
-"\x69\x66\x79\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x00\x5b\x2d\x63" \
-"\x66\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x44\x65" \
-"\x63\x6f\x6d\x70\x72\x65\x73\x73\x20\x46\x49\x4c\x45\x20\x28\x6f" \
-"\x72\x20\x73\x74\x64\x69\x6e\x29\x0a\x0a\x09\x2d\x63\x09\x57\x72" \
-"\x69\x74\x65\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x2d" \
-"\x66\x09\x46\x6f\x72\x63\x65\x00\x5b\x2d\x6c\x6e\x6f\x70\x71\x5d" \
-"\x20\x46\x49\x4c\x45\x5b\x2e\x7a\x69\x70\x5d\x20\x5b\x46\x49\x4c" \
-"\x45\x5d\x2e\x2e\x2e\x20\x5b\x2d\x78\x20\x46\x49\x4c\x45\x2e\x2e" \
-"\x2e\x5d\x20\x5b\x2d\x64\x20\x44\x49\x52\x5d\x0a\x0a\x45\x78\x74" \
-"\x72\x61\x63\x74\x20\x46\x49\x4c\x45\x73\x20\x66\x72\x6f\x6d\x20" \
-"\x5a\x49\x50\x20\x61\x72\x63\x68\x69\x76\x65\x0a\x0a\x09\x2d\x6c" \
-"\x09\x4c\x69\x73\x74\x20\x63\x6f\x6e\x74\x65\x6e\x74\x73\x20\x28" \
-"\x77\x69\x74\x68\x20\x2d\x71\x20\x66\x6f\x72\x20\x73\x68\x6f\x72" \
-"\x74\x20\x66\x6f\x72\x6d\x29\x0a\x09\x2d\x6e\x09\x4e\x65\x76\x65" \
-"\x72\x20\x6f\x76\x65\x72\x77\x72\x69\x74\x65\x20\x66\x69\x6c\x65" \
-"\x73\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x3a\x20\x61\x73\x6b\x29" \
-"\x0a\x09\x2d\x6f\x09\x4f\x76\x65\x72\x77\x72\x69\x74\x65\x0a\x09" \
-"\x2d\x70\x09\x50\x72\x69\x6e\x74\x20\x74\x6f\x20\x73\x74\x64\x6f" \
-"\x75\x74\x0a\x09\x2d\x71\x09\x51\x75\x69\x65\x74\x0a\x09\x2d\x78" \
-"\x20\x46\x49\x4c\x45\x09\x45\x78\x63\x6c\x75\x64\x65\x20\x46\x49" \
-"\x4c\x45\x73\x0a\x09\x2d\x64\x20\x44\x49\x52\x09\x45\x78\x74\x72" \
-"\x61\x63\x74\x20\x69\x6e\x74\x6f\x20\x44\x49\x52\x00\x0a\x0a\x44" \
-"\x69\x73\x70\x6c\x61\x79\x20\x74\x68\x65\x20\x74\x69\x6d\x65\x20" \
-"\x73\x69\x6e\x63\x65\x20\x74\x68\x65\x20\x6c\x61\x73\x74\x20\x62" \
-"\x6f\x6f\x74\x00\x4e\x0a\x0a\x50\x61\x75\x73\x65\x20\x66\x6f\x72" \
-"\x20\x4e\x20\x6d\x69\x63\x72\x6f\x73\x65\x63\x6f\x6e\x64\x73\x00" \
-"\x5b\x2d\x6f\x20\x4f\x55\x54\x46\x49\x4c\x45\x5d\x20\x5b\x49\x4e" \
-"\x46\x49\x4c\x45\x5d\x0a\x0a\x55\x75\x64\x65\x63\x6f\x64\x65\x20" \
-"\x61\x20\x66\x69\x6c\x65\x0a\x46\x69\x6e\x64\x73\x20\x4f\x55\x54" \
-"\x46\x49\x4c\x45\x20\x69\x6e\x20\x75\x75\x65\x6e\x63\x6f\x64\x65" \
-"\x64\x20\x73\x6f\x75\x72\x63\x65\x20\x75\x6e\x6c\x65\x73\x73\x20" \
-"\x2d\x6f\x20\x69\x73\x20\x67\x69\x76\x65\x6e\x00\x5b\x2d\x6d\x5d" \
-"\x20\x5b\x46\x49\x4c\x45\x5d\x20\x53\x54\x4f\x52\x45\x44\x5f\x46" \
-"\x49\x4c\x45\x4e\x41\x4d\x45\x0a\x0a\x55\x75\x65\x6e\x63\x6f\x64" \
-"\x65\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e" \
-"\x29\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x0a\x09\x2d\x6d" \
-"\x09\x55\x73\x65\x20\x62\x61\x73\x65\x36\x34\x20\x65\x6e\x63\x6f" \
-"\x64\x69\x6e\x67\x20\x70\x65\x72\x20\x52\x46\x43\x31\x35\x32\x31" \
-"\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x46\x49\x4c\x45" \
-"\x5d\x2e\x2e\x2e\x0a\x0a\x45\x64\x69\x74\x20\x46\x49\x4c\x45\x0a" \
-"\x0a\x09\x2d\x63\x20\x43\x4d\x44\x09\x49\x6e\x69\x74\x69\x61\x6c" \
-"\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x74\x6f\x20\x72\x75\x6e\x20" \
-"\x28\x24\x45\x58\x49\x4e\x49\x54\x20\x61\x6c\x73\x6f\x20\x61\x76" \
-"\x61\x69\x6c\x61\x62\x6c\x65\x29\x0a\x09\x2d\x52\x09\x52\x65\x61" \
-"\x64\x2d\x6f\x6e\x6c\x79\x0a\x09\x2d\x48\x09\x4c\x69\x73\x74\x20" \
-"\x61\x76\x61\x69\x6c\x61\x62\x6c\x65\x20\x66\x65\x61\x74\x75\x72" \
-"\x65\x73\x00\x5b\x2d\x6e\x20\x53\x45\x43\x5d\x20\x5b\x2d\x74\x5d" \
-"\x20\x50\x52\x4f\x47\x20\x41\x52\x47\x53\x0a\x0a\x52\x75\x6e\x20" \
-"\x50\x52\x4f\x47\x20\x70\x65\x72\x69\x6f\x64\x69\x63\x61\x6c\x6c" \
-"\x79\x0a\x0a\x09\x2d\x6e\x09\x4c\x6f\x6f\x70\x20\x70\x65\x72\x69" \
-"\x6f\x64\x20\x69\x6e\x20\x73\x65\x63\x6f\x6e\x64\x73\x20\x28\x64" \
-"\x65\x66\x61\x75\x6c\x74\x20\x32\x29\x0a\x09\x2d\x74\x09\x44\x6f" \
-"\x6e\x27\x74\x20\x70\x72\x69\x6e\x74\x20\x68\x65\x61\x64\x65\x72" \
-"\x00\x5b\x2d\x63\x6d\x6c\x77\x4c\x5d\x20\x5b\x46\x49\x4c\x45\x5d" \
-"\x2e\x2e\x2e\x0a\x0a\x43\x6f\x75\x6e\x74\x20\x6c\x69\x6e\x65\x73" \
-"\x2c\x20\x77\x6f\x72\x64\x73\x2c\x20\x61\x6e\x64\x20\x62\x79\x74" \
-"\x65\x73\x20\x66\x6f\x72\x20\x65\x61\x63\x68\x20\x46\x49\x4c\x45" \
-"\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x0a\x0a\x09\x2d\x63" \
-"\x09\x43\x6f\x75\x6e\x74\x20\x62\x79\x74\x65\x73\x0a\x09\x2d\x6d" \
-"\x09\x43\x6f\x75\x6e\x74\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72" \
-"\x73\x0a\x09\x2d\x6c\x09\x43\x6f\x75\x6e\x74\x20\x6e\x65\x77\x6c" \
-"\x69\x6e\x65\x73\x0a\x09\x2d\x77\x09\x43\x6f\x75\x6e\x74\x20\x77" \
-"\x6f\x72\x64\x73\x0a\x09\x2d\x4c\x09\x50\x72\x69\x6e\x74\x20\x6c" \
-"\x6f\x6e\x67\x65\x73\x74\x20\x6c\x69\x6e\x65\x20\x6c\x65\x6e\x67" \
-"\x74\x68\x00\x5b\x2d\x63\x7c\x2d\x2d\x63\x6f\x6e\x74\x69\x6e\x75" \
-"\x65\x5d\x20\x5b\x2d\x73\x7c\x2d\x2d\x73\x70\x69\x64\x65\x72\x5d" \
-"\x20\x5b\x2d\x71\x7c\x2d\x2d\x71\x75\x69\x65\x74\x5d\x20\x5b\x2d" \
-"\x4f\x7c\x2d\x2d\x6f\x75\x74\x70\x75\x74\x2d\x64\x6f\x63\x75\x6d" \
-"\x65\x6e\x74\x20\x46\x49\x4c\x45\x5d\x0a\x09\x5b\x2d\x2d\x68\x65" \
-"\x61\x64\x65\x72\x20\x27\x68\x65\x61\x64\x65\x72\x3a\x20\x76\x61" \
-"\x6c\x75\x65\x27\x5d\x20\x5b\x2d\x59\x7c\x2d\x2d\x70\x72\x6f\x78" \
-"\x79\x20\x6f\x6e\x2f\x6f\x66\x66\x5d\x20\x5b\x2d\x50\x20\x44\x49" \
-"\x52\x5d\x0a\x09\x5b\x2d\x55\x7c\x2d\x2d\x75\x73\x65\x72\x2d\x61" \
-"\x67\x65\x6e\x74\x20\x41\x47\x45\x4e\x54\x5d\x20\x5b\x2d\x54\x20" \
-"\x53\x45\x43\x5d\x20\x55\x52\x4c\x2e\x2e\x2e\x0a\x0a\x52\x65\x74" \
-"\x72\x69\x65\x76\x65\x20\x66\x69\x6c\x65\x73\x20\x76\x69\x61\x20" \
-"\x48\x54\x54\x50\x20\x6f\x72\x20\x46\x54\x50\x0a\x0a\x09\x2d\x73" \
-"\x09\x53\x70\x69\x64\x65\x72\x20\x6d\x6f\x64\x65\x20\x2d\x20\x6f" \
-"\x6e\x6c\x79\x20\x63\x68\x65\x63\x6b\x20\x66\x69\x6c\x65\x20\x65" \
-"\x78\x69\x73\x74\x65\x6e\x63\x65\x0a\x09\x2d\x63\x09\x43\x6f\x6e" \
-"\x74\x69\x6e\x75\x65\x20\x72\x65\x74\x72\x69\x65\x76\x61\x6c\x20" \
-"\x6f\x66\x20\x61\x62\x6f\x72\x74\x65\x64\x20\x74\x72\x61\x6e\x73" \
-"\x66\x65\x72\x0a\x09\x2d\x71\x09\x51\x75\x69\x65\x74\x0a\x09\x2d" \
-"\x50\x20\x44\x49\x52\x09\x53\x61\x76\x65\x20\x74\x6f\x20\x44\x49" \
-"\x52\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x20\x2e\x29\x0a\x09\x2d" \
-"\x54\x20\x53\x45\x43\x09\x4e\x65\x74\x77\x6f\x72\x6b\x20\x72\x65" \
-"\x61\x64\x20\x74\x69\x6d\x65\x6f\x75\x74\x20\x69\x73\x20\x53\x45" \
-"\x43\x20\x73\x65\x63\x6f\x6e\x64\x73\x0a\x09\x2d\x4f\x20\x46\x49" \
-"\x4c\x45\x09\x53\x61\x76\x65\x20\x74\x6f\x20\x46\x49\x4c\x45\x20" \
-"\x28\x27\x2d\x27\x20\x66\x6f\x72\x20\x73\x74\x64\x6f\x75\x74\x29" \
-"\x0a\x09\x2d\x55\x20\x53\x54\x52\x09\x55\x73\x65\x20\x53\x54\x52" \
-"\x20\x66\x6f\x72\x20\x55\x73\x65\x72\x2d\x41\x67\x65\x6e\x74\x20" \
-"\x68\x65\x61\x64\x65\x72\x0a\x09\x2d\x59\x09\x55\x73\x65\x20\x70" \
-"\x72\x6f\x78\x79\x20\x28\x27\x6f\x6e\x27\x20\x6f\x72\x20\x27\x6f" \
-"\x66\x66\x27\x29\x00\x5b\x43\x4f\x4d\x4d\x41\x4e\x44\x5d\x2e\x2e" \
-"\x2e\x0a\x0a\x4c\x6f\x63\x61\x74\x65\x20\x61\x20\x43\x4f\x4d\x4d" \
-"\x41\x4e\x44\x00\x0a\x0a\x50\x72\x69\x6e\x74\x20\x74\x68\x65\x20" \
-"\x75\x73\x65\x72\x20\x6e\x61\x6d\x65\x20\x61\x73\x73\x6f\x63\x69" \
-"\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x63\x75" \
-"\x72\x72\x65\x6e\x74\x20\x65\x66\x66\x65\x63\x74\x69\x76\x65\x20" \
-"\x75\x73\x65\x72\x20\x69\x64\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53" \
-"\x5d\x20\x5b\x50\x52\x4f\x47\x20\x41\x52\x47\x53\x5d\x0a\x0a\x52" \
-"\x75\x6e\x20\x50\x52\x4f\x47\x20\x6f\x6e\x20\x65\x76\x65\x72\x79" \
-"\x20\x69\x74\x65\x6d\x20\x67\x69\x76\x65\x6e\x20\x62\x79\x20\x73" \
-"\x74\x64\x69\x6e\x0a\x0a\x09\x2d\x70\x09\x41\x73\x6b\x20\x75\x73" \
-"\x65\x72\x20\x77\x68\x65\x74\x68\x65\x72\x20\x74\x6f\x20\x72\x75" \
-"\x6e\x20\x65\x61\x63\x68\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x0a\x09" \
-"\x2d\x72\x09\x44\x6f\x6e\x27\x74\x20\x72\x75\x6e\x20\x63\x6f\x6d" \
-"\x6d\x61\x6e\x64\x20\x69\x66\x20\x69\x6e\x70\x75\x74\x20\x69\x73" \
-"\x20\x65\x6d\x70\x74\x79\x0a\x09\x2d\x30\x09\x49\x6e\x70\x75\x74" \
-"\x20\x69\x73\x20\x73\x65\x70\x61\x72\x61\x74\x65\x64\x20\x62\x79" \
-"\x20\x4e\x55\x4c\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x0a" \
-"\x09\x2d\x74\x09\x50\x72\x69\x6e\x74\x20\x74\x68\x65\x20\x63\x6f" \
-"\x6d\x6d\x61\x6e\x64\x20\x6f\x6e\x20\x73\x74\x64\x65\x72\x72\x20" \
-"\x62\x65\x66\x6f\x72\x65\x20\x65\x78\x65\x63\x75\x74\x69\x6f\x6e" \
-"\x0a\x09\x2d\x65\x5b\x53\x54\x52\x5d\x09\x53\x54\x52\x20\x73\x74" \
-"\x6f\x70\x73\x20\x69\x6e\x70\x75\x74\x20\x70\x72\x6f\x63\x65\x73" \
-"\x73\x69\x6e\x67\x0a\x09\x2d\x6e\x20\x4e\x09\x50\x61\x73\x73\x20" \
-"\x6e\x6f\x20\x6d\x6f\x72\x65\x20\x74\x68\x61\x6e\x20\x4e\x20\x61" \
-"\x72\x67\x73\x20\x74\x6f\x20\x50\x52\x4f\x47\x0a\x09\x2d\x73\x20" \
-"\x4e\x09\x50\x61\x73\x73\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6c" \
-"\x69\x6e\x65\x20\x6f\x66\x20\x6e\x6f\x20\x6d\x6f\x72\x65\x20\x74" \
-"\x68\x61\x6e\x20\x4e\x20\x62\x79\x74\x65\x73\x0a\x09\x2d\x78\x09" \
-"\x45\x78\x69\x74\x20\x69\x66\x20\x73\x69\x7a\x65\x20\x69\x73\x20" \
-"\x65\x78\x63\x65\x65\x64\x65\x64\x00\x2d\x64\x20\x5b\x2d\x63\x66" \
-"\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x44\x65\x63" \
-"\x6f\x6d\x70\x72\x65\x73\x73\x20\x46\x49\x4c\x45\x20\x28\x6f\x72" \
-"\x20\x73\x74\x64\x69\x6e\x29\x0a\x0a\x09\x2d\x64\x09\x44\x65\x63" \
-"\x6f\x6d\x70\x72\x65\x73\x73\x0a\x09\x2d\x63\x09\x57\x72\x69\x74" \
-"\x65\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x2d\x66\x09" \
-"\x46\x6f\x72\x63\x65\x00\x46\x49\x4c\x45\x0a\x0a\x44\x65\x63\x6f" \
-"\x6d\x70\x72\x65\x73\x73\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74" \
-"\x00\x5b\x53\x54\x52\x49\x4e\x47\x5d\x0a\x0a\x52\x65\x70\x65\x61" \
-"\x74\x65\x64\x6c\x79\x20\x6f\x75\x74\x70\x75\x74\x20\x61\x20\x6c" \
-"\x69\x6e\x65\x20\x77\x69\x74\x68\x20\x53\x54\x52\x49\x4e\x47\x2c" \
-"\x20\x6f\x72\x20\x27\x79\x27\x00\x46\x49\x4c\x45\x0a\x0a\x44\x65" \
-"\x63\x6f\x6d\x70\x72\x65\x73\x73\x20\x74\x6f\x20\x73\x74\x64\x6f" \
-"\x75\x74\x00" \
+"\105\130\120\122\105\123\123\111\117\116\040\135\012\012\103\150" \
+"\145\143\153\040\146\151\154\145\040\164\171\160\145\163\054\040" \
+"\143\157\155\160\141\162\145\040\166\141\154\165\145\163\040\145" \
+"\164\143\056\040\122\145\164\165\162\156\040\141\040\060\057\061" \
+"\040\145\170\151\164\040\143\157\144\145\012\144\145\160\145\156" \
+"\144\151\156\147\040\157\156\040\154\157\147\151\143\141\154\040" \
+"\166\141\154\165\145\040\157\146\040\105\130\120\122\105\123\123" \
+"\111\117\116\000\105\130\120\122\105\123\123\111\117\116\040\135" \
+"\012\012\103\150\145\143\153\040\146\151\154\145\040\164\171\160" \
+"\145\163\054\040\143\157\155\160\141\162\145\040\166\141\154\165" \
+"\145\163\040\145\164\143\056\040\122\145\164\165\162\156\040\141" \
+"\040\060\057\061\040\145\170\151\164\040\143\157\144\145\012\144" \
+"\145\160\145\156\144\151\156\147\040\157\156\040\154\157\147\151" \
+"\143\141\154\040\166\141\154\165\145\040\157\146\040\105\130\120" \
+"\122\105\123\123\111\117\116\000\133\055\161\135\040\133\055\157" \
+"\040\117\106\106\135\040\133\055\146\040\106\122\105\121\135\040" \
+"\133\055\160\040\124\103\117\116\123\124\135\040\133\055\164\040" \
+"\124\111\103\113\135\012\012\122\145\141\144\040\141\156\144\040" \
+"\157\160\164\151\157\156\141\154\154\171\040\163\145\164\040\163" \
+"\171\163\164\145\155\040\164\151\155\145\142\141\163\145\040\160" \
+"\141\162\141\155\145\164\145\162\163\056\040\123\145\145\040\141" \
+"\144\152\164\151\155\145\170\050\062\051\012\012\011\055\161\011" \
+"\121\165\151\145\164\012\011\055\157\040\117\106\106\011\124\151" \
+"\155\145\040\157\146\146\163\145\164\054\040\155\151\143\162\157" \
+"\163\145\143\157\156\144\163\012\011\055\146\040\106\122\105\121" \
+"\011\106\162\145\161\165\145\156\143\171\040\141\144\152\165\163" \
+"\164\054\040\151\156\164\145\147\145\162\040\153\145\162\156\145" \
+"\154\040\165\156\151\164\163\040\050\066\065\065\063\066\040\151" \
+"\163\040\061\160\160\155\051\012\011\011\050\160\157\163\151\164" \
+"\151\166\145\040\166\141\154\165\145\163\040\155\141\153\145\040" \
+"\143\154\157\143\153\040\162\165\156\040\146\141\163\164\145\162" \
+"\051\012\011\055\164\040\124\111\103\113\011\115\151\143\162\157" \
+"\163\145\143\157\156\144\163\040\160\145\162\040\164\151\143\153" \
+"\054\040\165\163\165\141\154\154\171\040\061\060\060\060\060\012" \
+"\011\055\160\040\124\103\117\116\123\124\000\012\133\055\166\156" \
+"\135\011\133\055\110\040\110\127\124\131\120\105\135\040\133\055" \
+"\151\040\111\106\135\040\055\141\040\133\110\117\123\124\116\101" \
+"\115\105\135\012\133\055\166\135\011\011\040\040\040\040\133\055" \
+"\151\040\111\106\135\040\055\144\040\110\117\123\124\116\101\115" \
+"\105\040\133\160\165\142\135\012\133\055\166\135\011\133\055\110" \
+"\040\110\127\124\131\120\105\135\040\133\055\151\040\111\106\135" \
+"\040\055\163\040\110\117\123\124\116\101\115\105\040\110\127\101" \
+"\104\104\122\040\133\164\145\155\160\135\012\133\055\166\135\011" \
+"\133\055\110\040\110\127\124\131\120\105\135\040\133\055\151\040" \
+"\111\106\135\040\055\163\040\110\117\123\124\116\101\115\105\040" \
+"\110\127\101\104\104\122\040\133\156\145\164\155\141\163\153\040" \
+"\115\101\123\113\135\040\160\165\142\012\133\055\166\135\011\133" \
+"\055\110\040\110\127\124\131\120\105\135\040\133\055\151\040\111" \
+"\106\135\040\055\104\163\040\110\117\123\124\116\101\115\105\040" \
+"\111\106\101\103\105\040\133\156\145\164\155\141\163\153\040\115" \
+"\101\123\113\135\040\160\165\142\012\012\115\141\156\151\160\165" \
+"\154\141\164\145\040\101\122\120\040\143\141\143\150\145\012\012" \
+"\011\055\141\011\011\104\151\163\160\154\141\171\040\050\141\154" \
+"\154\051\040\150\157\163\164\163\012\011\055\144\011\011\104\145" \
+"\154\145\164\145\040\101\122\120\040\145\156\164\162\171\012\011" \
+"\055\163\011\011\123\145\164\040\156\145\167\040\145\156\164\162" \
+"\171\012\011\055\166\011\011\126\145\162\142\157\163\145\012\011" \
+"\055\156\011\011\104\157\156\047\164\040\162\145\163\157\154\166" \
+"\145\040\156\141\155\145\163\012\011\055\151\040\111\106\011\011" \
+"\116\145\164\167\157\162\153\040\151\156\164\145\162\146\141\143" \
+"\145\012\011\055\104\011\011\122\145\141\144\040\110\127\101\104" \
+"\104\122\040\146\162\157\155\040\111\106\101\103\105\012\011\055" \
+"\101\054\055\160\040\101\106\011\120\162\157\164\157\143\157\154" \
+"\040\146\141\155\151\154\171\012\011\055\110\040\110\127\124\131" \
+"\120\105\011\110\141\162\144\167\141\162\145\040\141\144\144\162" \
+"\145\163\163\040\164\171\160\145\000\133\055\057\053\117\120\124" \
+"\111\117\116\123\135\040\133\055\057\053\157\040\117\120\124\135" \
+"\056\056\056\040\133\055\143\040\047\123\103\122\111\120\124\047" \
+"\040\133\101\122\107\060\040\133\101\122\107\123\135\135\040\057" \
+"\040\106\111\114\105\040\133\101\122\107\123\135\135\012\012\125" \
+"\156\151\170\040\163\150\145\154\154\040\151\156\164\145\162\160" \
+"\162\145\164\145\162\000\133\117\120\124\111\117\116\123\135\040" \
+"\133\101\127\113\137\120\122\117\107\122\101\115\135\040\133\106" \
+"\111\114\105\135\056\056\056\012\012\011\055\166\040\126\101\122" \
+"\075\126\101\114\011\123\145\164\040\166\141\162\151\141\142\154" \
+"\145\012\011\055\106\040\123\105\120\011\011\125\163\145\040\123" \
+"\105\120\040\141\163\040\146\151\145\154\144\040\163\145\160\141" \
+"\162\141\164\157\162\012\011\055\146\040\106\111\114\105\011\011" \
+"\122\145\141\144\040\160\162\157\147\162\141\155\040\146\162\157" \
+"\155\040\106\111\114\105\012\011\055\145\040\101\127\113\137\120" \
+"\122\117\107\122\101\115\000\133\055\144\135\040\133\106\111\114" \
+"\105\135\012\012\102\141\163\145\066\064\040\145\156\143\157\144" \
+"\145\040\157\162\040\144\145\143\157\144\145\040\106\111\114\105" \
+"\040\164\157\040\163\164\141\156\144\141\162\144\040\157\165\164" \
+"\160\165\164\012\011\055\144\011\104\145\143\157\144\145\040\144" \
+"\141\164\141\000\106\111\114\105\040\133\123\125\106\106\111\130" \
+"\135\012\012\123\164\162\151\160\040\144\151\162\145\143\164\157" \
+"\162\171\040\160\141\164\150\040\141\156\144\040\056\123\125\106" \
+"\106\111\130\040\146\162\157\155\040\106\111\114\105\012\000\012" \
+"\012\120\162\151\156\164\040\164\150\145\040\143\157\156\146\151" \
+"\147\040\146\151\154\145\040\165\163\145\144\040\142\171\040\142" \
+"\165\163\171\142\157\170\040\142\165\151\154\144\000\133\102\114" \
+"\117\103\113\104\105\126\135\056\056\056\012\012\120\162\151\156" \
+"\164\040\125\125\111\104\163\040\157\146\040\141\154\154\040\146" \
+"\151\154\145\163\171\163\164\145\155\163\000\117\120\124\111\117" \
+"\116\040\102\114\117\103\113\104\105\126\012\012\011\055\055\163" \
+"\145\164\162\157\011\011\123\145\164\040\162\157\012\011\055\055" \
+"\163\145\164\162\167\011\011\123\145\164\040\162\167\012\011\055" \
+"\055\147\145\164\162\157\011\011\107\145\164\040\162\157\012\011" \
+"\055\055\147\145\164\163\163\011\011\107\145\164\040\163\145\143" \
+"\164\157\162\040\163\151\172\145\012\011\055\055\147\145\164\142" \
+"\163\172\011\107\145\164\040\142\154\157\143\153\040\163\151\172" \
+"\145\012\011\055\055\163\145\164\142\163\172\040\102\131\124\105" \
+"\123\011\123\145\164\040\142\154\157\143\153\040\163\151\172\145" \
+"\012\011\055\055\147\145\164\163\172\011\011\107\145\164\040\144" \
+"\145\166\151\143\145\040\163\151\172\145\040\151\156\040\065\061" \
+"\062\055\142\171\164\145\040\163\145\143\164\157\162\163\012\011" \
+"\055\055\147\145\164\163\151\172\145\066\064\011\107\145\164\040" \
+"\144\145\166\151\143\145\040\163\151\172\145\040\151\156\040\142" \
+"\171\164\145\163\012\011\055\055\146\154\165\163\150\142\165\146" \
+"\163\011\106\154\165\163\150\040\142\165\146\146\145\162\163\012" \
+"\011\055\055\162\145\162\145\141\144\160\164\011\122\145\162\145" \
+"\141\144\040\160\141\162\164\151\164\151\157\156\040\164\141\142" \
+"\154\145\000\103\117\115\115\101\116\104\040\133\102\122\111\104" \
+"\107\105\040\133\111\116\124\105\122\106\101\103\105\135\135\012" \
+"\012\115\141\156\141\147\145\040\145\164\150\145\162\156\145\164" \
+"\040\142\162\151\144\147\145\163\012\012\103\157\155\155\141\156" \
+"\144\163\072\012\011\163\150\157\167\011\011\011\123\150\157\167" \
+"\040\141\040\154\151\163\164\040\157\146\040\142\162\151\144\147" \
+"\145\163\012\011\141\144\144\142\162\040\102\122\111\104\107\105" \
+"\011\011\103\162\145\141\164\145\040\102\122\111\104\107\105\012" \
+"\011\144\145\154\142\162\040\102\122\111\104\107\105\011\011\104" \
+"\145\154\145\164\145\040\102\122\111\104\107\105\012\011\141\144" \
+"\144\151\146\040\102\122\111\104\107\105\040\111\106\101\103\105" \
+"\011\101\144\144\040\111\106\101\103\105\040\164\157\040\102\122" \
+"\111\104\107\105\012\011\144\145\154\151\146\040\102\122\111\104" \
+"\107\105\040\111\106\101\103\105\011\104\145\154\145\164\145\040" \
+"\111\106\101\103\105\040\146\162\157\155\040\102\122\111\104\107" \
+"\105\012\011\163\145\164\141\147\145\151\156\147\040\102\122\111" \
+"\104\107\105\040\124\111\115\105\011\011\123\145\164\040\141\147" \
+"\145\151\156\147\040\164\151\155\145\012\011\163\145\164\146\144" \
+"\040\102\122\111\104\107\105\040\124\111\115\105\011\011\123\145" \
+"\164\040\142\162\151\144\147\145\040\146\157\162\167\141\162\144" \
+"\040\144\145\154\141\171\012\011\163\145\164\150\145\154\154\157" \
+"\040\102\122\111\104\107\105\040\124\111\115\105\011\011\123\145" \
+"\164\040\150\145\154\154\157\040\164\151\155\145\012\011\163\145" \
+"\164\155\141\170\141\147\145\040\102\122\111\104\107\105\040\124" \
+"\111\115\105\011\011\123\145\164\040\155\141\170\040\155\145\163" \
+"\163\141\147\145\040\141\147\145\012\011\163\145\164\160\141\164" \
+"\150\143\157\163\164\040\102\122\111\104\107\105\040\103\117\123" \
+"\124\011\011\123\145\164\040\160\141\164\150\040\143\157\163\164" \
+"\012\011\163\145\164\160\157\162\164\160\162\151\157\040\102\122" \
+"\111\104\107\105\040\120\122\111\117\011\011\123\145\164\040\160" \
+"\157\162\164\040\160\162\151\157\162\151\164\171\012\011\163\145" \
+"\164\142\162\151\144\147\145\160\162\151\157\040\102\122\111\104" \
+"\107\105\040\120\122\111\117\011\123\145\164\040\142\162\151\144" \
+"\147\145\040\160\162\151\157\162\151\164\171\012\011\163\164\160" \
+"\040\102\122\111\104\107\105\040\133\061\057\171\145\163\057\157" \
+"\156\174\060\057\156\157\057\157\146\146\135\011\123\124\120\040" \
+"\157\156\057\157\146\146\000\133\055\143\146\135\040\133\106\111" \
+"\114\105\135\056\056\056\012\012\104\145\143\157\155\160\162\145" \
+"\163\163\040\106\111\114\105\163\040\050\157\162\040\163\164\144" \
+"\151\156\051\012\012\011\055\143\011\127\162\151\164\145\040\164" \
+"\157\040\163\164\144\157\165\164\012\011\055\146\011\106\157\162" \
+"\143\145\000\133\106\111\114\105\135\056\056\056\012\012\104\145" \
+"\143\157\155\160\162\145\163\163\040\164\157\040\163\164\144\157" \
+"\165\164\000\133\117\120\124\111\117\116\123\135\040\133\106\111" \
+"\114\105\135\056\056\056\012\012\103\157\155\160\162\145\163\163" \
+"\040\106\111\114\105\163\040\050\157\162\040\163\164\144\151\156" \
+"\051\040\167\151\164\150\040\142\172\151\160\062\040\141\154\147" \
+"\157\162\151\164\150\155\012\012\011\055\061\056\056\071\011\103" \
+"\157\155\160\162\145\163\163\151\157\156\040\154\145\166\145\154" \
+"\012\011\055\144\011\104\145\143\157\155\160\162\145\163\163\012" \
+"\011\055\143\011\127\162\151\164\145\040\164\157\040\163\164\144" \
+"\157\165\164\012\011\055\146\011\106\157\162\143\145\000\133\055" \
+"\152\171\135\040\133\133\115\117\116\124\110\135\040\131\105\101" \
+"\122\135\012\012\104\151\163\160\154\141\171\040\141\040\143\141" \
+"\154\145\156\144\141\162\012\012\011\055\152\011\125\163\145\040" \
+"\152\165\154\151\141\156\040\144\141\164\145\163\012\011\055\171" \
+"\011\104\151\163\160\154\141\171\040\164\150\145\040\145\156\164" \
+"\151\162\145\040\171\145\141\162\000\133\106\111\114\105\135\056" \
+"\056\056\012\012\103\157\156\143\141\164\145\156\141\164\145\040" \
+"\106\111\114\105\163\040\141\156\144\040\160\162\151\156\164\040" \
+"\164\150\145\155\040\164\157\040\163\164\144\157\165\164\000\133" \
+"\055\145\164\166\135\040\133\106\111\114\105\135\056\056\056\012" \
+"\012\104\151\163\160\154\141\171\040\156\157\156\160\162\151\156" \
+"\164\151\156\147\040\143\150\141\162\141\143\164\145\162\163\040" \
+"\141\163\040\136\170\040\157\162\040\115\055\170\012\012\011\055" \
+"\145\011\105\156\144\040\145\141\143\150\040\154\151\156\145\040" \
+"\167\151\164\150\040\044\012\011\055\164\011\123\150\157\167\040" \
+"\164\141\142\163\040\141\163\040\136\111\012\011\055\166\011\104" \
+"\157\156\047\164\040\165\163\145\040\136\170\040\157\162\040\115" \
+"\055\170\040\145\163\143\141\160\145\163\000\133\055\122\135\040" \
+"\133\055\053\075\101\141\143\104\144\151\152\163\123\164\124\165" \
+"\135\040\133\055\166\040\126\105\122\123\111\117\116\135\040\133" \
+"\106\111\114\105\135\056\056\056\012\012\103\150\141\156\147\145" \
+"\040\146\151\154\145\040\141\164\164\162\151\142\165\164\145\163" \
+"\040\157\156\040\141\156\040\145\170\164\062\040\146\163\012\012" \
+"\115\157\144\151\146\151\145\162\163\072\012\011\055\011\122\145" \
+"\155\157\166\145\040\141\164\164\162\151\142\165\164\145\163\012" \
+"\011\053\011\101\144\144\040\141\164\164\162\151\142\165\164\145" \
+"\163\012\011\075\011\123\145\164\040\141\164\164\162\151\142\165" \
+"\164\145\163\012\101\164\164\162\151\142\165\164\145\163\072\012" \
+"\011\101\011\104\157\156\047\164\040\164\162\141\143\153\040\141" \
+"\164\151\155\145\012\011\141\011\101\160\160\145\156\144\040\155" \
+"\157\144\145\040\157\156\154\171\012\011\143\011\105\156\141\142" \
+"\154\145\040\143\157\155\160\162\145\163\163\012\011\104\011\127" \
+"\162\151\164\145\040\144\151\162\040\143\157\156\164\145\156\164" \
+"\163\040\163\171\156\143\150\162\157\156\157\165\163\154\171\012" \
+"\011\144\011\104\157\156\047\164\040\142\141\143\153\165\160\040" \
+"\167\151\164\150\040\144\165\155\160\012\011\151\011\103\141\156" \
+"\156\157\164\040\142\145\040\155\157\144\151\146\151\145\144\040" \
+"\050\151\155\155\165\164\141\142\154\145\051\012\011\152\011\127" \
+"\162\151\164\145\040\141\154\154\040\144\141\164\141\040\164\157" \
+"\040\152\157\165\162\156\141\154\040\146\151\162\163\164\012\011" \
+"\163\011\132\145\162\157\040\144\151\163\153\040\163\164\157\162" \
+"\141\147\145\040\167\150\145\156\040\144\145\154\145\164\145\144" \
+"\012\011\123\011\127\162\151\164\145\040\146\151\154\145\040\143" \
+"\157\156\164\145\156\164\163\040\163\171\156\143\150\162\157\156" \
+"\157\165\163\154\171\012\011\164\011\104\151\163\141\142\154\145" \
+"\040\164\141\151\154\055\155\145\162\147\151\156\147\040\157\146" \
+"\040\160\141\162\164\151\141\154\040\142\154\157\143\153\163\040" \
+"\167\151\164\150\040\157\164\150\145\162\040\146\151\154\145\163" \
+"\012\011\165\011\101\154\154\157\167\040\146\151\154\145\040\164" \
+"\157\040\142\145\040\165\156\144\145\154\145\164\145\144\012\011" \
+"\055\122\011\122\145\143\165\162\163\145\012\011\055\166\011\123" \
+"\145\164\040\164\150\145\040\146\151\154\145\047\163\040\166\145" \
+"\162\163\151\157\156\057\147\145\156\145\162\141\164\151\157\156" \
+"\040\156\165\155\142\145\162\000\133\055\122\150\114\110\120\135" \
+"\056\056\056\040\107\122\117\125\120\040\106\111\114\105\056\056" \
+"\056\012\012\103\150\141\156\147\145\040\164\150\145\040\147\162" \
+"\157\165\160\040\155\145\155\142\145\162\163\150\151\160\040\157" \
+"\146\040\145\141\143\150\040\106\111\114\105\040\164\157\040\107" \
+"\122\117\125\120\012\012\011\055\122\011\122\145\143\165\162\163" \
+"\145\012\011\055\150\011\101\146\146\145\143\164\040\163\171\155" \
+"\154\151\156\153\163\040\151\156\163\164\145\141\144\040\157\146" \
+"\040\163\171\155\154\151\156\153\040\164\141\162\147\145\164\163" \
+"\012\011\055\114\011\124\162\141\166\145\162\163\145\040\141\154" \
+"\154\040\163\171\155\154\151\156\153\163\040\164\157\040\144\151" \
+"\162\145\143\164\157\162\151\145\163\012\011\055\110\011\124\162" \
+"\141\166\145\162\163\145\040\163\171\155\154\151\156\153\163\040" \
+"\157\156\040\143\157\155\155\141\156\144\040\154\151\156\145\040" \
+"\157\156\154\171\012\011\055\120\011\104\157\156\047\164\040\164" \
+"\162\141\166\145\162\163\145\040\163\171\155\154\151\156\153\163" \
+"\040\050\144\145\146\141\165\154\164\051\000\133\055\122\135\040" \
+"\115\117\104\105\133\054\115\117\104\105\135\056\056\056\040\106" \
+"\111\114\105\056\056\056\012\012\105\141\143\150\040\115\117\104" \
+"\105\040\151\163\040\157\156\145\040\157\162\040\155\157\162\145" \
+"\040\157\146\040\164\150\145\040\154\145\164\164\145\162\163\040" \
+"\165\147\157\141\054\040\157\156\145\040\157\146\040\164\150\145" \
+"\012\163\171\155\142\157\154\163\040\053\055\075\040\141\156\144" \
+"\040\157\156\145\040\157\162\040\155\157\162\145\040\157\146\040" \
+"\164\150\145\040\154\145\164\164\145\162\163\040\162\167\170\163" \
+"\164\012\012\011\055\122\011\122\145\143\165\162\163\145\000\133" \
+"\055\122\150\114\110\120\135\056\056\056\040\117\127\116\105\122" \
+"\133\074\056\174\072\076\133\107\122\117\125\120\135\135\040\106" \
+"\111\114\105\056\056\056\012\012\103\150\141\156\147\145\040\164" \
+"\150\145\040\157\167\156\145\162\040\141\156\144\057\157\162\040" \
+"\147\162\157\165\160\040\157\146\040\145\141\143\150\040\106\111" \
+"\114\105\040\164\157\040\117\127\116\105\122\040\141\156\144\057" \
+"\157\162\040\107\122\117\125\120\012\012\011\055\122\011\122\145" \
+"\143\165\162\163\145\012\011\055\150\011\101\146\146\145\143\164" \
+"\040\163\171\155\154\151\156\153\163\040\151\156\163\164\145\141" \
+"\144\040\157\146\040\163\171\155\154\151\156\153\040\164\141\162" \
+"\147\145\164\163\012\011\055\114\011\124\162\141\166\145\162\163" \
+"\145\040\141\154\154\040\163\171\155\154\151\156\153\163\040\164" \
+"\157\040\144\151\162\145\143\164\157\162\151\145\163\012\011\055" \
+"\110\011\124\162\141\166\145\162\163\145\040\163\171\155\154\151" \
+"\156\153\163\040\157\156\040\143\157\155\155\141\156\144\040\154" \
+"\151\156\145\040\157\156\154\171\012\011\055\120\011\104\157\156" \
+"\047\164\040\164\162\141\166\145\162\163\145\040\163\171\155\154" \
+"\151\156\153\163\040\050\144\145\146\141\165\154\164\051\000\116" \
+"\105\127\122\117\117\124\040\133\120\122\117\107\040\101\122\107" \
+"\123\135\012\012\122\165\156\040\120\122\117\107\040\167\151\164" \
+"\150\040\162\157\157\164\040\144\151\162\145\143\164\157\162\171" \
+"\040\163\145\164\040\164\157\040\116\105\127\122\117\117\124\000" \
+"\012\012\103\154\145\141\162\040\163\143\162\145\145\156\000\133" \
+"\055\154\135\040\133\055\163\135\040\106\111\114\105\061\040\133" \
+"\106\111\114\105\062\135\012\012\103\157\155\160\141\162\145\040" \
+"\106\111\114\105\061\040\167\151\164\150\040\106\111\114\105\062" \
+"\040\050\157\162\040\163\164\144\151\156\051\012\012\011\055\154" \
+"\011\127\162\151\164\145\040\164\150\145\040\142\171\164\145\040" \
+"\156\165\155\142\145\162\163\040\050\144\145\143\151\155\141\154" \
+"\051\040\141\156\144\040\166\141\154\165\145\163\040\050\157\143" \
+"\164\141\154\051\012\011\011\146\157\162\040\141\154\154\040\144" \
+"\151\146\146\145\162\151\156\147\040\142\171\164\145\163\012\011" \
+"\055\163\011\121\165\151\145\164\000\133\055\061\062\063\135\040" \
+"\106\111\114\105\061\040\106\111\114\105\062\012\012\103\157\155" \
+"\160\141\162\145\040\106\111\114\105\061\040\167\151\164\150\040" \
+"\106\111\114\105\062\012\012\011\055\061\011\123\165\160\160\162" \
+"\145\163\163\040\154\151\156\145\163\040\165\156\151\161\165\145" \
+"\040\164\157\040\106\111\114\105\061\012\011\055\062\011\123\165" \
+"\160\160\162\145\163\163\040\154\151\156\145\163\040\165\156\151" \
+"\161\165\145\040\164\157\040\106\111\114\105\062\012\011\055\063" \
+"\011\123\165\160\160\162\145\163\163\040\154\151\156\145\163\040" \
+"\143\157\155\155\157\156\040\164\157\040\142\157\164\150\040\146" \
+"\151\154\145\163\000\133\117\120\124\111\117\116\123\135\040\123" \
+"\117\125\122\103\105\056\056\056\040\104\105\123\124\012\012\103" \
+"\157\160\171\040\123\117\125\122\103\105\050\163\051\040\164\157" \
+"\040\104\105\123\124\012\012\011\055\141\011\123\141\155\145\040" \
+"\141\163\040\055\144\160\122\012\011\055\122\054\055\162\011\122" \
+"\145\143\165\162\163\145\012\011\055\144\054\055\120\011\120\162" \
+"\145\163\145\162\166\145\040\163\171\155\154\151\156\153\163\040" \
+"\050\144\145\146\141\165\154\164\040\151\146\040\055\122\051\012" \
+"\011\055\114\011\106\157\154\154\157\167\040\141\154\154\040\163" \
+"\171\155\154\151\156\153\163\012\011\055\110\011\106\157\154\154" \
+"\157\167\040\163\171\155\154\151\156\153\163\040\157\156\040\143" \
+"\157\155\155\141\156\144\040\154\151\156\145\012\011\055\160\011" \
+"\120\162\145\163\145\162\166\145\040\146\151\154\145\040\141\164" \
+"\164\162\151\142\165\164\145\163\040\151\146\040\160\157\163\163" \
+"\151\142\154\145\012\011\055\146\011\117\166\145\162\167\162\151" \
+"\164\145\012\011\055\151\011\120\162\157\155\160\164\040\142\145" \
+"\146\157\162\145\040\157\166\145\162\167\162\151\164\145\012\011" \
+"\055\154\054\055\163\011\103\162\145\141\164\145\040\050\163\171" \
+"\155\051\154\151\156\153\163\000\133\055\144\155\166\165\135\040" \
+"\133\055\106\040\106\111\114\105\135\040\133\055\110\040\156\145" \
+"\167\143\135\040\133\055\164\151\157\135\040\133\055\160\040\104" \
+"\111\122\135\040\133\105\130\124\122\137\106\111\114\105\135\056" \
+"\056\056\012\012\105\170\164\162\141\143\164\040\157\162\040\154" \
+"\151\163\164\040\146\151\154\145\163\040\146\162\157\155\040\141" \
+"\040\143\160\151\157\040\141\162\143\150\151\166\145\054\040\157" \
+"\162\012\143\162\145\141\164\145\040\141\156\040\141\162\143\150" \
+"\151\166\145\040\050\055\157\051\040\157\162\040\143\157\160\171" \
+"\040\146\151\154\145\163\040\050\055\160\051\040\165\163\151\156" \
+"\147\040\146\151\154\145\040\154\151\163\164\040\157\156\040\163" \
+"\164\144\151\156\012\012\115\141\151\156\040\157\160\145\162\141" \
+"\164\151\157\156\040\155\157\144\145\072\012\011\055\164\011\114" \
+"\151\163\164\012\011\055\151\011\105\170\164\162\141\143\164\040" \
+"\105\130\124\122\137\106\111\114\105\163\040\050\157\162\040\141" \
+"\154\154\051\012\011\055\157\011\103\162\145\141\164\145\040\050" \
+"\162\145\161\165\151\162\145\163\040\055\110\040\156\145\167\143" \
+"\051\012\011\055\160\040\104\111\122\011\103\157\160\171\040\146" \
+"\151\154\145\163\040\164\157\040\104\111\122\012\011\055\144\011" \
+"\115\141\153\145\040\154\145\141\144\151\156\147\040\144\151\162" \
+"\145\143\164\157\162\151\145\163\012\011\055\155\011\120\162\145" \
+"\163\145\162\166\145\040\155\164\151\155\145\012\011\055\166\011" \
+"\126\145\162\142\157\163\145\012\011\055\165\011\117\166\145\162" \
+"\167\162\151\164\145\012\011\055\106\040\106\111\114\105\011\111" \
+"\156\160\165\164\040\050\055\164\054\055\151\054\055\160\051\040" \
+"\157\162\040\157\165\164\160\165\164\040\050\055\157\051\040\146" \
+"\151\154\145\012\011\055\110\040\156\145\167\143\011\101\162\143" \
+"\150\151\166\145\040\146\157\162\155\141\164\000\055\146\142\123" \
+"\040\055\154\040\116\040\055\114\040\114\117\107\106\111\114\105" \
+"\040\055\143\040\104\111\122\012\012\011\055\146\011\106\157\162" \
+"\145\147\162\157\165\156\144\012\011\055\142\011\102\141\143\153" \
+"\147\162\157\165\156\144\040\050\144\145\146\141\165\154\164\051" \
+"\012\011\055\123\011\114\157\147\040\164\157\040\163\171\163\154" \
+"\157\147\040\050\144\145\146\141\165\154\164\051\012\011\055\154" \
+"\011\123\145\164\040\154\157\147\040\154\145\166\145\154\056\040" \
+"\060\040\151\163\040\164\150\145\040\155\157\163\164\040\166\145" \
+"\162\142\157\163\145\054\040\144\145\146\141\165\154\164\040\070" \
+"\012\011\055\114\011\114\157\147\040\164\157\040\146\151\154\145" \
+"\012\011\055\143\011\127\157\162\153\151\156\147\040\144\151\162" \
+"\000\133\055\143\040\104\111\122\135\040\133\055\165\040\125\123" \
+"\105\122\135\040\133\055\154\145\162\135\174\133\106\111\114\105" \
+"\135\012\012\011\055\143\011\103\162\157\156\164\141\142\040\144" \
+"\151\162\145\143\164\157\162\171\012\011\055\165\011\125\163\145" \
+"\162\012\011\055\154\011\114\151\163\164\040\143\162\157\156\164" \
+"\141\142\012\011\055\145\011\105\144\151\164\040\143\162\157\156" \
+"\164\141\142\012\011\055\162\011\104\145\154\145\164\145\040\143" \
+"\162\157\156\164\141\142\012\011\106\111\114\105\011\122\145\160" \
+"\154\141\143\145\040\143\162\157\156\164\141\142\040\142\171\040" \
+"\106\111\114\105\040\050\047\055\047\072\040\163\164\144\151\156" \
+"\051\000\133\117\120\124\111\117\116\123\135\040\133\106\111\114" \
+"\105\135\056\056\056\012\012\120\162\151\156\164\040\163\145\154" \
+"\145\143\164\145\144\040\146\151\145\154\144\163\040\146\162\157" \
+"\155\040\145\141\143\150\040\151\156\160\165\164\040\106\111\114" \
+"\105\040\164\157\040\163\164\144\157\165\164\012\012\011\055\142" \
+"\040\114\111\123\124\011\117\165\164\160\165\164\040\157\156\154" \
+"\171\040\142\171\164\145\163\040\146\162\157\155\040\114\111\123" \
+"\124\012\011\055\143\040\114\111\123\124\011\117\165\164\160\165" \
+"\164\040\157\156\154\171\040\143\150\141\162\141\143\164\145\162" \
+"\163\040\146\162\157\155\040\114\111\123\124\012\011\055\144\040" \
+"\103\110\101\122\011\125\163\145\040\103\110\101\122\040\151\156" \
+"\163\164\145\141\144\040\157\146\040\164\141\142\040\141\163\040" \
+"\164\150\145\040\146\151\145\154\144\040\144\145\154\151\155\151" \
+"\164\145\162\012\011\055\163\011\117\165\164\160\165\164\040\157" \
+"\156\154\171\040\164\150\145\040\154\151\156\145\163\040\143\157" \
+"\156\164\141\151\156\151\156\147\040\144\145\154\151\155\151\164" \
+"\145\162\012\011\055\146\040\116\011\120\162\151\156\164\040\157" \
+"\156\154\171\040\164\150\145\163\145\040\146\151\145\154\144\163" \
+"\012\011\055\156\011\111\147\156\157\162\145\144\000\133\117\120" \
+"\124\111\117\116\123\135\040\133\053\106\115\124\135\040\133\124" \
+"\111\115\105\135\012\012\104\151\163\160\154\141\171\040\164\151" \
+"\155\145\040\050\165\163\151\156\147\040\053\106\115\124\051\054" \
+"\040\157\162\040\163\145\164\040\164\151\155\145\012\012\011\133" \
+"\055\163\054\055\055\163\145\164\135\040\124\111\115\105\011\123" \
+"\145\164\040\164\151\155\145\040\164\157\040\124\111\115\105\012" \
+"\011\055\165\054\055\055\165\164\143\011\127\157\162\153\040\151" \
+"\156\040\125\124\103\040\050\144\157\156\047\164\040\143\157\156" \
+"\166\145\162\164\040\164\157\040\154\157\143\141\154\040\164\151" \
+"\155\145\051\012\011\055\122\054\055\055\162\146\143\055\062\070" \
+"\062\062\011\117\165\164\160\165\164\040\122\106\103\055\062\070" \
+"\062\062\040\143\157\155\160\154\151\141\156\164\040\144\141\164" \
+"\145\040\163\164\162\151\156\147\012\011\055\111\133\123\120\105" \
+"\103\135\011\117\165\164\160\165\164\040\111\123\117\055\070\066" \
+"\060\061\040\143\157\155\160\154\151\141\156\164\040\144\141\164" \
+"\145\040\163\164\162\151\156\147\012\011\011\011\123\120\105\103" \
+"\075\047\144\141\164\145\047\040\050\144\145\146\141\165\154\164" \
+"\051\040\146\157\162\040\144\141\164\145\040\157\156\154\171\054" \
+"\012\011\011\011\047\150\157\165\162\163\047\054\040\047\155\151" \
+"\156\165\164\145\163\047\054\040\157\162\040\047\163\145\143\157" \
+"\156\144\163\047\040\146\157\162\040\144\141\164\145\040\141\156" \
+"\144\012\011\011\011\164\151\155\145\040\164\157\040\164\150\145" \
+"\040\151\156\144\151\143\141\164\145\144\040\160\162\145\143\151" \
+"\163\151\157\156\012\011\055\162\054\055\055\162\145\146\145\162" \
+"\145\156\143\145\040\106\111\114\105\011\104\151\163\160\154\141" \
+"\171\040\154\141\163\164\040\155\157\144\151\146\151\143\141\164" \
+"\151\157\156\040\164\151\155\145\040\157\146\040\106\111\114\105" \
+"\012\011\055\144\054\055\055\144\141\164\145\040\124\111\115\105" \
+"\011\104\151\163\160\154\141\171\040\124\111\115\105\054\040\156" \
+"\157\164\040\047\156\157\167\047\012\011\055\104\040\106\115\124" \
+"\011\011\125\163\145\040\106\115\124\040\146\157\162\040\055\144" \
+"\040\124\111\115\105\040\143\157\156\166\145\162\163\151\157\156" \
+"\012\012\122\145\143\157\147\156\151\172\145\144\040\124\111\115" \
+"\105\040\146\157\162\155\141\164\163\072\012\011\150\150\072\155" \
+"\155\133\072\163\163\135\012\011\133\131\131\131\131\056\135\115" \
+"\115\056\104\104\055\150\150\072\155\155\133\072\163\163\135\012" \
+"\011\131\131\131\131\055\115\115\055\104\104\040\150\150\072\155" \
+"\155\133\072\163\163\135\012\011\133\133\133\133\133\131\131\135" \
+"\131\131\135\115\115\135\104\104\135\150\150\135\155\155\133\056" \
+"\163\163\135\012\011\047\144\141\164\145\040\124\111\115\105\047" \
+"\040\146\157\162\155\040\141\143\143\145\160\164\163\040\115\115" \
+"\104\104\150\150\155\155\133\133\131\131\135\131\131\135\133\056" \
+"\163\163\135\040\151\156\163\164\145\141\144\000\105\130\120\122" \
+"\105\123\123\111\117\116\056\056\056\012\012\124\151\156\171\040" \
+"\122\120\116\040\143\141\154\143\165\154\141\164\157\162\056\040" \
+"\117\160\145\162\141\164\151\157\156\163\072\012\053\054\040\141" \
+"\144\144\054\040\055\054\040\163\165\142\054\040\052\054\040\155" \
+"\165\154\054\040\057\054\040\144\151\166\054\040\045\054\040\155" \
+"\157\144\054\040\052\052\054\040\145\170\160\054\040\141\156\144" \
+"\054\040\157\162\054\040\156\157\164\054\040\170\157\162\054\012" \
+"\160\040\055\040\160\162\151\156\164\040\164\157\160\040\157\146" \
+"\040\164\150\145\040\163\164\141\143\153\040\050\167\151\164\150" \
+"\157\165\164\040\160\157\160\160\151\156\147\051\054\012\146\040" \
+"\055\040\160\162\151\156\164\040\145\156\164\151\162\145\040\163" \
+"\164\141\143\153\054\012\157\040\055\040\160\157\160\040\164\150" \
+"\145\040\166\141\154\165\145\040\141\156\144\040\163\145\164\040" \
+"\157\165\164\160\165\164\040\162\141\144\151\170\040\050\155\165" \
+"\163\164\040\142\145\040\061\060\054\040\061\066\054\040\070\040" \
+"\157\162\040\062\051\056\012\105\170\141\155\160\154\145\163\072" \
+"\040\047\144\143\040\062\040\062\040\141\144\144\040\160\047\040" \
+"\055\076\040\064\054\040\047\144\143\040\070\040\070\040\155\165" \
+"\154\040\062\040\062\040\053\040\057\040\160\047\040\055\076\040" \
+"\061\066\000\133\151\146\075\106\111\114\105\135\040\133\157\146" \
+"\075\106\111\114\105\135\040\133\151\142\163\075\116\135\040\133" \
+"\157\142\163\075\116\135\040\133\142\163\075\116\135\040\133\143" \
+"\157\165\156\164\075\116\135\040\133\163\153\151\160\075\116\135" \
+"\012\011\133\163\145\145\153\075\116\135\040\133\143\157\156\166" \
+"\075\156\157\164\162\165\156\143\174\156\157\145\162\162\157\162" \
+"\174\163\171\156\143\174\146\163\171\156\143\135\012\012\103\157" \
+"\160\171\040\141\040\146\151\154\145\040\167\151\164\150\040\143" \
+"\157\156\166\145\162\164\151\156\147\040\141\156\144\040\146\157" \
+"\162\155\141\164\164\151\156\147\012\012\011\151\146\075\106\111" \
+"\114\105\011\011\122\145\141\144\040\146\162\157\155\040\106\111" \
+"\114\105\040\151\156\163\164\145\141\144\040\157\146\040\163\164" \
+"\144\151\156\012\011\157\146\075\106\111\114\105\011\011\127\162" \
+"\151\164\145\040\164\157\040\106\111\114\105\040\151\156\163\164" \
+"\145\141\144\040\157\146\040\163\164\144\157\165\164\012\011\142" \
+"\163\075\116\011\011\122\145\141\144\040\141\156\144\040\167\162" \
+"\151\164\145\040\116\040\142\171\164\145\163\040\141\164\040\141" \
+"\040\164\151\155\145\012\011\151\142\163\075\116\011\011\122\145" \
+"\141\144\040\116\040\142\171\164\145\163\040\141\164\040\141\040" \
+"\164\151\155\145\012\011\157\142\163\075\116\011\011\127\162\151" \
+"\164\145\040\116\040\142\171\164\145\163\040\141\164\040\141\040" \
+"\164\151\155\145\012\011\143\157\165\156\164\075\116\011\011\103" \
+"\157\160\171\040\157\156\154\171\040\116\040\151\156\160\165\164" \
+"\040\142\154\157\143\153\163\012\011\163\153\151\160\075\116\011" \
+"\011\123\153\151\160\040\116\040\151\156\160\165\164\040\142\154" \
+"\157\143\153\163\012\011\163\145\145\153\075\116\011\011\123\153" \
+"\151\160\040\116\040\157\165\164\160\165\164\040\142\154\157\143" \
+"\153\163\012\011\143\157\156\166\075\156\157\164\162\165\156\143" \
+"\011\104\157\156\047\164\040\164\162\165\156\143\141\164\145\040" \
+"\157\165\164\160\165\164\040\146\151\154\145\012\011\143\157\156" \
+"\166\075\156\157\145\162\162\157\162\011\103\157\156\164\151\156" \
+"\165\145\040\141\146\164\145\162\040\162\145\141\144\040\145\162" \
+"\162\157\162\163\012\011\143\157\156\166\075\163\171\156\143\011" \
+"\120\141\144\040\142\154\157\143\153\163\040\167\151\164\150\040" \
+"\172\145\162\157\163\012\011\143\157\156\166\075\146\163\171\156" \
+"\143\011\120\150\171\163\151\143\141\154\154\171\040\167\162\151" \
+"\164\145\040\144\141\164\141\040\157\165\164\040\142\145\146\157" \
+"\162\145\040\146\151\156\151\163\150\151\156\147\012\011\143\157" \
+"\156\166\075\163\167\141\142\011\123\167\141\160\040\145\166\145" \
+"\162\171\040\160\141\151\162\040\157\146\040\142\171\164\145\163" \
+"\012\012\116\040\155\141\171\040\142\145\040\163\165\146\146\151" \
+"\170\145\144\040\142\171\040\143\040\050\061\051\054\040\167\040" \
+"\050\062\051\054\040\142\040\050\065\061\062\051\054\040\153\104" \
+"\040\050\061\060\060\060\051\054\040\153\040\050\061\060\062\064" \
+"\051\054\040\115\104\054\040\115\054\040\107\104\054\040\107\000" \
+"\133\055\156\135\040\133\115\117\104\106\111\114\105\123\135\056" \
+"\056\056\012\012\107\145\156\145\162\141\164\145\040\155\157\144" \
+"\165\154\145\163\056\144\145\160\054\040\141\154\151\141\163\054" \
+"\040\141\156\144\040\163\171\155\142\157\154\163\040\146\151\154" \
+"\145\163\012\012\011\055\156\011\104\162\171\040\162\165\156\072" \
+"\040\160\162\151\156\164\040\146\151\154\145\163\040\164\157\040" \
+"\163\164\144\157\165\164\000\101\104\104\122\105\123\123\040\133" \
+"\127\111\104\124\110\040\133\126\101\114\125\105\135\135\012\012" \
+"\122\145\141\144\057\167\162\151\164\145\040\146\162\157\155\040" \
+"\160\150\171\163\151\143\141\154\040\141\144\144\162\145\163\163" \
+"\012\012\011\101\104\104\122\105\123\123\011\101\144\144\162\145" \
+"\163\163\040\164\157\040\141\143\164\040\165\160\157\156\012\011" \
+"\127\111\104\124\110\011\127\151\144\164\150\040\050\070\057\061" \
+"\066\057\056\056\056\051\012\011\126\101\114\125\105\011\104\141" \
+"\164\141\040\164\157\040\142\145\040\167\162\151\164\164\145\156" \
+"\000\133\055\120\153\155\150\141\151\135\040\133\055\102\040\123" \
+"\111\132\105\135\040\133\106\111\114\105\123\131\123\124\105\115" \
+"\135\056\056\056\012\012\120\162\151\156\164\040\146\151\154\145" \
+"\163\171\163\164\145\155\040\165\163\141\147\145\040\163\164\141" \
+"\164\151\163\164\151\143\163\012\012\011\055\120\011\120\117\123" \
+"\111\130\040\157\165\164\160\165\164\040\146\157\162\155\141\164" \
+"\012\011\055\153\011\061\060\062\064\055\142\171\164\145\040\142" \
+"\154\157\143\153\163\040\050\144\145\146\141\165\154\164\051\012" \
+"\011\055\155\011\061\115\055\142\171\164\145\040\142\154\157\143" \
+"\153\163\012\011\055\150\011\110\165\155\141\156\040\162\145\141" \
+"\144\141\142\154\145\040\050\145\056\147\056\040\061\113\040\062" \
+"\064\063\115\040\062\107\051\012\011\055\141\011\123\150\157\167" \
+"\040\141\154\154\040\146\151\154\145\163\171\163\164\145\155\163" \
+"\012\011\055\151\011\111\156\157\144\145\163\012\011\055\102\040" \
+"\123\111\132\105\011\102\154\157\143\153\163\151\172\145\000\133" \
+"\055\141\142\102\144\151\116\161\162\124\163\164\167\135\040\133" \
+"\055\114\040\114\101\102\105\114\135\040\133\055\123\040\106\111" \
+"\114\105\135\040\133\055\125\040\114\111\116\105\123\135\040\106" \
+"\111\114\105\061\040\106\111\114\105\062\012\012\103\157\155\160" \
+"\141\162\145\040\146\151\154\145\163\040\154\151\156\145\040\142" \
+"\171\040\154\151\156\145\040\141\156\144\040\157\165\164\160\165" \
+"\164\040\164\150\145\040\144\151\146\146\145\162\145\156\143\145" \
+"\163\040\142\145\164\167\145\145\156\040\164\150\145\155\056\012" \
+"\124\150\151\163\040\151\155\160\154\145\155\145\156\164\141\164" \
+"\151\157\156\040\163\165\160\160\157\162\164\163\040\165\156\151" \
+"\146\151\145\144\040\144\151\146\146\163\040\157\156\154\171\056" \
+"\012\012\011\055\141\011\124\162\145\141\164\040\141\154\154\040" \
+"\146\151\154\145\163\040\141\163\040\164\145\170\164\012\011\055" \
+"\142\011\111\147\156\157\162\145\040\143\150\141\156\147\145\163" \
+"\040\151\156\040\164\150\145\040\141\155\157\165\156\164\040\157" \
+"\146\040\167\150\151\164\145\163\160\141\143\145\012\011\055\102" \
+"\011\111\147\156\157\162\145\040\143\150\141\156\147\145\163\040" \
+"\167\150\157\163\145\040\154\151\156\145\163\040\141\162\145\040" \
+"\141\154\154\040\142\154\141\156\153\012\011\055\144\011\124\162" \
+"\171\040\150\141\162\144\040\164\157\040\146\151\156\144\040\141" \
+"\040\163\155\141\154\154\145\162\040\163\145\164\040\157\146\040" \
+"\143\150\141\156\147\145\163\012\011\055\151\011\111\147\156\157" \
+"\162\145\040\143\141\163\145\040\144\151\146\146\145\162\145\156" \
+"\143\145\163\012\011\055\114\011\125\163\145\040\114\101\102\105" \
+"\114\040\151\156\163\164\145\141\144\040\157\146\040\164\150\145" \
+"\040\146\151\154\145\156\141\155\145\040\151\156\040\164\150\145" \
+"\040\165\156\151\146\151\145\144\040\150\145\141\144\145\162\012" \
+"\011\055\116\011\124\162\145\141\164\040\141\142\163\145\156\164" \
+"\040\146\151\154\145\163\040\141\163\040\145\155\160\164\171\012" \
+"\011\055\161\011\117\165\164\160\165\164\040\157\156\154\171\040" \
+"\167\150\145\164\150\145\162\040\146\151\154\145\163\040\144\151" \
+"\146\146\145\162\012\011\055\162\011\122\145\143\165\162\163\145" \
+"\012\011\055\123\011\123\164\141\162\164\040\167\151\164\150\040" \
+"\106\111\114\105\040\167\150\145\156\040\143\157\155\160\141\162" \
+"\151\156\147\040\144\151\162\145\143\164\157\162\151\145\163\012" \
+"\011\055\124\011\115\141\153\145\040\164\141\142\163\040\154\151" \
+"\156\145\040\165\160\040\142\171\040\160\162\145\146\151\170\151" \
+"\156\147\040\141\040\164\141\142\040\167\150\145\156\040\156\145" \
+"\143\145\163\163\141\162\171\012\011\055\163\011\122\145\160\157" \
+"\162\164\040\167\150\145\156\040\164\167\157\040\146\151\154\145" \
+"\163\040\141\162\145\040\164\150\145\040\163\141\155\145\012\011" \
+"\055\164\011\105\170\160\141\156\144\040\164\141\142\163\040\164" \
+"\157\040\163\160\141\143\145\163\040\151\156\040\157\165\164\160" \
+"\165\164\012\011\055\125\011\117\165\164\160\165\164\040\114\111" \
+"\116\105\123\040\154\151\156\145\163\040\157\146\040\143\157\156" \
+"\164\145\170\164\012\011\055\167\011\111\147\156\157\162\145\040" \
+"\141\154\154\040\167\150\151\164\145\163\160\141\143\145\000\106" \
+"\111\114\105\116\101\115\105\012\012\123\164\162\151\160\040\156" \
+"\157\156\055\144\151\162\145\143\164\157\162\171\040\163\165\146" \
+"\146\151\170\040\146\162\157\155\040\106\111\114\105\116\101\115" \
+"\105\000\133\055\143\135\040\133\055\156\040\114\105\126\105\114" \
+"\135\040\133\055\162\135\040\133\055\163\040\123\111\132\105\135" \
+"\040\133\055\103\135\012\012\120\162\151\156\164\040\157\162\040" \
+"\143\157\156\164\162\157\154\040\164\150\145\040\153\145\162\156" \
+"\145\154\040\162\151\156\147\040\142\165\146\146\145\162\012\012" \
+"\011\055\143\011\011\103\154\145\141\162\040\162\151\156\147\040" \
+"\142\165\146\146\145\162\040\141\146\164\145\162\040\160\162\151" \
+"\156\164\151\156\147\012\011\055\156\040\114\105\126\105\114\011" \
+"\123\145\164\040\143\157\156\163\157\154\145\040\154\157\147\147" \
+"\151\156\147\040\154\145\166\145\154\012\011\055\162\011\011\123" \
+"\150\157\167\040\154\145\166\145\154\040\160\162\145\146\151\170" \
+"\012\011\055\163\040\123\111\132\105\011\011\102\165\146\146\145" \
+"\162\040\163\151\172\145\012\011\055\103\011\011\103\157\154\157" \
+"\162\145\144\040\157\165\164\160\165\164\000\133\055\144\166\163" \
+"\135\040\133\055\143\040\103\117\116\106\106\111\114\105\135\040" \
+"\133\055\164\040\124\124\114\137\123\105\103\135\040\133\055\160" \
+"\040\120\117\122\124\135\040\133\055\151\040\101\104\104\122\135" \
+"\012\012\123\155\141\154\154\040\163\164\141\164\151\143\040\104" \
+"\116\123\040\163\145\162\166\145\162\040\144\141\145\155\157\156" \
+"\012\012\011\055\143\040\106\111\114\105\011\103\157\156\146\151" \
+"\147\040\146\151\154\145\012\011\055\164\040\123\105\103\011\124" \
+"\124\114\012\011\055\160\040\120\117\122\124\011\114\151\163\164" \
+"\145\156\040\157\156\040\120\117\122\124\012\011\055\151\040\101" \
+"\104\104\122\011\114\151\163\164\145\156\040\157\156\040\101\104" \
+"\104\122\012\011\055\144\011\104\141\145\155\157\156\151\172\145" \
+"\012\011\055\166\011\126\145\162\142\157\163\145\012\011\055\163" \
+"\011\123\145\156\144\040\163\165\143\143\145\163\163\146\165\154" \
+"\040\162\145\160\154\151\145\163\040\157\156\154\171\056\040\125" \
+"\163\145\040\164\150\151\163\040\151\146\040\171\157\165\040\167" \
+"\141\156\164\012\011\011\164\157\040\165\163\145\040\057\145\164" \
+"\143\057\162\145\163\157\154\166\056\143\157\156\146\040\167\151" \
+"\164\150\040\164\167\157\040\156\141\155\145\163\145\162\166\145" \
+"\162\040\154\151\156\145\163\072\012\011\011\011\156\141\155\145" \
+"\163\145\162\166\145\162\040\104\116\123\104\137\123\105\122\126" \
+"\105\122\012\011\011\011\156\141\155\145\163\145\162\166\145\162" \
+"\040\116\117\122\115\101\114\137\104\116\123\137\123\105\122\126" \
+"\105\122\000\133\055\165\144\135\040\133\106\111\114\105\135\012" \
+"\012\103\157\156\166\145\162\164\040\106\111\114\105\040\151\156" \
+"\055\160\154\141\143\145\040\146\162\157\155\040\104\117\123\040" \
+"\164\157\040\125\156\151\170\040\146\157\162\155\141\164\056\012" \
+"\127\150\145\156\040\156\157\040\146\151\154\145\040\151\163\040" \
+"\147\151\166\145\156\054\040\165\163\145\040\163\164\144\151\156" \
+"\057\163\164\144\157\165\164\056\012\012\011\055\165\011\144\157" \
+"\163\062\165\156\151\170\012\011\055\144\011\165\156\151\170\062" \
+"\144\157\163\000\133\055\141\110\114\144\143\154\163\170\150\155" \
+"\153\135\040\133\106\111\114\105\135\056\056\056\012\012\123\165" \
+"\155\155\141\162\151\172\145\040\144\151\163\153\040\163\160\141" \
+"\143\145\040\165\163\145\144\040\146\157\162\040\145\141\143\150" \
+"\040\106\111\114\105\040\141\156\144\057\157\162\040\144\151\162" \
+"\145\143\164\157\162\171\012\012\011\055\141\011\123\150\157\167" \
+"\040\146\151\154\145\040\163\151\172\145\163\040\164\157\157\012" \
+"\011\055\114\011\106\157\154\154\157\167\040\141\154\154\040\163" \
+"\171\155\154\151\156\153\163\012\011\055\110\011\106\157\154\154" \
+"\157\167\040\163\171\155\154\151\156\153\163\040\157\156\040\143" \
+"\157\155\155\141\156\144\040\154\151\156\145\012\011\055\144\040" \
+"\116\011\114\151\155\151\164\040\157\165\164\160\165\164\040\164" \
+"\157\040\144\151\162\145\143\164\157\162\151\145\163\040\050\141" \
+"\156\144\040\146\151\154\145\163\040\167\151\164\150\040\055\141" \
+"\051\040\157\146\040\144\145\160\164\150\040\074\040\116\012\011" \
+"\055\143\011\123\150\157\167\040\147\162\141\156\144\040\164\157" \
+"\164\141\154\012\011\055\154\011\103\157\165\156\164\040\163\151" \
+"\172\145\163\040\155\141\156\171\040\164\151\155\145\163\040\151" \
+"\146\040\150\141\162\144\040\154\151\156\153\145\144\012\011\055" \
+"\163\011\104\151\163\160\154\141\171\040\157\156\154\171\040\141" \
+"\040\164\157\164\141\154\040\146\157\162\040\145\141\143\150\040" \
+"\141\162\147\165\155\145\156\164\012\011\055\170\011\123\153\151" \
+"\160\040\144\151\162\145\143\164\157\162\151\145\163\040\157\156" \
+"\040\144\151\146\146\145\162\145\156\164\040\146\151\154\145\163" \
+"\171\163\164\145\155\163\012\011\055\150\011\123\151\172\145\163" \
+"\040\151\156\040\150\165\155\141\156\040\162\145\141\144\141\142" \
+"\154\145\040\146\157\162\155\141\164\040\050\145\056\147\056\054" \
+"\040\061\113\040\062\064\063\115\040\062\107\051\012\011\055\155" \
+"\011\123\151\172\145\163\040\151\156\040\155\145\147\141\142\171" \
+"\164\145\163\012\011\055\153\011\123\151\172\145\163\040\151\156" \
+"\040\153\151\154\157\142\171\164\145\163\040\050\144\145\146\141" \
+"\165\154\164\051\000\133\055\156\145\105\135\040\133\101\122\107" \
+"\135\056\056\056\012\012\120\162\151\156\164\040\164\150\145\040" \
+"\163\160\145\143\151\146\151\145\144\040\101\122\107\163\040\164" \
+"\157\040\163\164\144\157\165\164\012\012\011\055\156\011\123\165" \
+"\160\160\162\145\163\163\040\164\162\141\151\154\151\156\147\040" \
+"\156\145\167\154\151\156\145\012\011\055\145\011\111\156\164\145" \
+"\162\160\162\145\164\040\142\141\143\153\163\154\141\163\150\040" \
+"\145\163\143\141\160\145\163\040\050\151\056\145\056\054\040\134" \
+"\164\075\164\141\142\051\012\011\055\105\011\104\157\156\047\164" \
+"\040\151\156\164\145\162\160\162\145\164\040\142\141\143\153\163" \
+"\154\141\163\150\040\145\163\143\141\160\145\163\040\050\144\145" \
+"\146\141\165\154\164\051\000\000\010\000\133\055\151\165\135\040" \
+"\133\055\135\040\133\156\141\155\145\075\166\141\154\165\145\135" \
+"\056\056\056\040\133\120\122\117\107\040\101\122\107\123\135\012" \
+"\012\120\162\151\156\164\040\164\150\145\040\143\165\162\162\145" \
+"\156\164\040\145\156\166\151\162\157\156\155\145\156\164\040\157" \
+"\162\040\162\165\156\040\120\122\117\107\040\141\146\164\145\162" \
+"\040\163\145\164\164\151\156\147\040\165\160\012\164\150\145\040" \
+"\163\160\145\143\151\146\151\145\144\040\145\156\166\151\162\157" \
+"\156\155\145\156\164\012\012\011\055\054\040\055\151\011\123\164" \
+"\141\162\164\040\167\151\164\150\040\141\156\040\145\155\160\164" \
+"\171\040\145\156\166\151\162\157\156\155\145\156\164\012\011\055" \
+"\165\011\122\145\155\157\166\145\040\166\141\162\151\141\142\154" \
+"\145\040\146\162\157\155\040\164\150\145\040\145\156\166\151\162" \
+"\157\156\155\145\156\164\000\133\055\151\135\040\133\055\164\040" \
+"\116\135\040\133\106\111\114\105\135\056\056\056\012\012\103\157" \
+"\156\166\145\162\164\040\164\141\142\163\040\164\157\040\163\160" \
+"\141\143\145\163\054\040\167\162\151\164\151\156\147\040\164\157" \
+"\040\163\164\144\157\165\164\012\012\011\055\151\054\055\055\151" \
+"\156\151\164\151\141\154\011\104\157\156\047\164\040\143\157\156" \
+"\166\145\162\164\040\164\141\142\163\040\141\146\164\145\162\040" \
+"\156\157\156\040\142\154\141\156\153\163\012\011\055\164\054\055" \
+"\055\164\141\142\163\075\116\011\124\141\142\163\164\157\160\163" \
+"\040\145\166\145\162\171\040\116\040\143\150\141\162\163\000\105" \
+"\130\120\122\105\123\123\111\117\116\012\012\120\162\151\156\164" \
+"\040\164\150\145\040\166\141\154\165\145\040\157\146\040\105\130" \
+"\120\122\105\123\123\111\117\116\040\164\157\040\163\164\144\157" \
+"\165\164\012\012\105\130\120\122\105\123\123\111\117\116\040\155" \
+"\141\171\040\142\145\072\012\011\101\122\107\061\040\174\040\101" \
+"\122\107\062\011\101\122\107\061\040\151\146\040\151\164\040\151" \
+"\163\040\156\145\151\164\150\145\162\040\156\165\154\154\040\156" \
+"\157\162\040\060\054\040\157\164\150\145\162\167\151\163\145\040" \
+"\101\122\107\062\012\011\101\122\107\061\040\046\040\101\122\107" \
+"\062\011\101\122\107\061\040\151\146\040\156\145\151\164\150\145" \
+"\162\040\141\162\147\165\155\145\156\164\040\151\163\040\156\165" \
+"\154\154\040\157\162\040\060\054\040\157\164\150\145\162\167\151" \
+"\163\145\040\060\012\011\101\122\107\061\040\074\040\101\122\107" \
+"\062\011\061\040\151\146\040\101\122\107\061\040\151\163\040\154" \
+"\145\163\163\040\164\150\141\156\040\101\122\107\062\054\040\145" \
+"\154\163\145\040\060\056\040\123\151\155\151\154\141\162\154\171" \
+"\072\012\011\101\122\107\061\040\074\075\040\101\122\107\062\012" \
+"\011\101\122\107\061\040\075\040\101\122\107\062\012\011\101\122" \
+"\107\061\040\041\075\040\101\122\107\062\012\011\101\122\107\061" \
+"\040\076\075\040\101\122\107\062\012\011\101\122\107\061\040\076" \
+"\040\101\122\107\062\012\011\101\122\107\061\040\053\040\101\122" \
+"\107\062\011\123\165\155\040\157\146\040\101\122\107\061\040\141" \
+"\156\144\040\101\122\107\062\056\040\123\151\155\151\154\141\162" \
+"\154\171\072\012\011\101\122\107\061\040\055\040\101\122\107\062" \
+"\012\011\101\122\107\061\040\052\040\101\122\107\062\012\011\101" \
+"\122\107\061\040\057\040\101\122\107\062\012\011\101\122\107\061" \
+"\040\045\040\101\122\107\062\012\011\123\124\122\111\116\107\040" \
+"\072\040\122\105\107\105\130\120\011\011\101\156\143\150\157\162" \
+"\145\144\040\160\141\164\164\145\162\156\040\155\141\164\143\150" \
+"\040\157\146\040\122\105\107\105\130\120\040\151\156\040\123\124" \
+"\122\111\116\107\012\011\155\141\164\143\150\040\123\124\122\111" \
+"\116\107\040\122\105\107\105\130\120\011\123\141\155\145\040\141" \
+"\163\040\123\124\122\111\116\107\040\072\040\122\105\107\105\130" \
+"\120\012\011\163\165\142\163\164\162\040\123\124\122\111\116\107" \
+"\040\120\117\123\040\114\105\116\107\124\110\040\123\165\142\163" \
+"\164\162\151\156\147\040\157\146\040\123\124\122\111\116\107\054" \
+"\040\120\117\123\040\143\157\165\156\164\145\144\040\146\162\157" \
+"\155\040\061\012\011\151\156\144\145\170\040\123\124\122\111\116" \
+"\107\040\103\110\101\122\123\011\111\156\144\145\170\040\151\156" \
+"\040\123\124\122\111\116\107\040\167\150\145\162\145\040\141\156" \
+"\171\040\103\110\101\122\123\040\151\163\040\146\157\165\156\144" \
+"\054\040\157\162\040\060\012\011\154\145\156\147\164\150\040\123" \
+"\124\122\111\116\107\011\011\114\145\156\147\164\150\040\157\146" \
+"\040\123\124\122\111\116\107\012\011\161\165\157\164\145\040\124" \
+"\117\113\105\116\011\011\111\156\164\145\162\160\162\145\164\040" \
+"\124\117\113\105\116\040\141\163\040\141\040\163\164\162\151\156" \
+"\147\054\040\145\166\145\156\040\151\146\012\011\011\011\011\151" \
+"\164\040\151\163\040\141\040\153\145\171\167\157\162\144\040\154" \
+"\151\153\145\040\047\155\141\164\143\150\047\040\157\162\040\141" \
+"\156\012\011\011\011\011\157\160\145\162\141\164\157\162\040\154" \
+"\151\153\145\040\047\057\047\012\011\050\105\130\120\122\105\123" \
+"\123\111\117\116\051\011\011\126\141\154\165\145\040\157\146\040" \
+"\105\130\120\122\105\123\123\111\117\116\012\012\102\145\167\141" \
+"\162\145\040\164\150\141\164\040\155\141\156\171\040\157\160\145" \
+"\162\141\164\157\162\163\040\156\145\145\144\040\164\157\040\142" \
+"\145\040\145\163\143\141\160\145\144\040\157\162\040\161\165\157" \
+"\164\145\144\040\146\157\162\040\163\150\145\154\154\163\056\012" \
+"\103\157\155\160\141\162\151\163\157\156\163\040\141\162\145\040" \
+"\141\162\151\164\150\155\145\164\151\143\040\151\146\040\142\157" \
+"\164\150\040\101\122\107\163\040\141\162\145\040\156\165\155\142" \
+"\145\162\163\054\040\145\154\163\145\012\154\145\170\151\143\157" \
+"\147\162\141\160\150\151\143\141\154\056\040\120\141\164\164\145" \
+"\162\156\040\155\141\164\143\150\145\163\040\162\145\164\165\162" \
+"\156\040\164\150\145\040\163\164\162\151\156\147\040\155\141\164" \
+"\143\150\145\144\040\142\145\164\167\145\145\156\012\134\050\040" \
+"\141\156\144\040\134\051\040\157\162\040\156\165\154\154\073\040" \
+"\151\146\040\134\050\040\141\156\144\040\134\051\040\141\162\145" \
+"\040\156\157\164\040\165\163\145\144\054\040\164\150\145\171\040" \
+"\162\145\164\165\162\156\040\164\150\145\040\156\165\155\142\145" \
+"\162\012\157\146\040\143\150\141\162\141\143\164\145\162\163\040" \
+"\155\141\164\143\150\145\144\040\157\162\040\060\056\000\012\012" \
+"\122\145\164\165\162\156\040\141\156\040\145\170\151\164\040\143" \
+"\157\144\145\040\157\146\040\106\101\114\123\105\040\050\061\051" \
+"\000\055\163\040\111\115\107\106\111\114\105\040\133\055\143\135" \
+"\040\133\055\144\040\104\105\126\135\040\133\055\151\040\111\116" \
+"\111\106\111\114\105\135\040\133\055\146\040\103\115\104\135\012" \
+"\012\011\055\163\011\111\155\141\147\145\012\011\055\143\011\110" \
+"\151\144\145\040\143\165\162\163\157\162\012\011\055\144\011\106" \
+"\162\141\155\145\142\165\146\146\145\162\040\144\145\166\151\143" \
+"\145\040\050\144\145\146\141\165\154\164\040\057\144\145\166\057" \
+"\146\142\060\051\012\011\055\151\011\103\157\156\146\151\147\040" \
+"\146\151\154\145\040\050\166\141\162\075\166\141\154\165\145\051" \
+"\072\012\011\011\011\102\101\122\137\114\105\106\124\054\102\101" \
+"\122\137\124\117\120\054\102\101\122\137\127\111\104\124\110\054" \
+"\102\101\122\137\110\105\111\107\110\124\012\011\011\011\102\101" \
+"\122\137\122\054\102\101\122\137\107\054\102\101\122\137\102\012" \
+"\011\055\146\011\103\157\156\164\162\157\154\040\160\151\160\145" \
+"\040\050\145\154\163\145\040\145\170\151\164\040\141\146\164\145" \
+"\162\040\144\162\141\167\151\156\147\040\151\155\141\147\145\051" \
+"\012\011\011\011\143\157\155\155\141\156\144\163\072\040\047\116" \
+"\116\047\040\050\045\040\146\157\162\040\160\162\157\147\162\145" \
+"\163\163\040\142\141\162\051\040\157\162\040\047\145\170\151\164" \
+"\047\000\133\055\165\154\135\040\133\055\103\040\103\131\114\111" \
+"\116\104\105\122\123\135\040\133\055\110\040\110\105\101\104\123" \
+"\135\040\133\055\123\040\123\105\103\124\117\122\123\135\040\133" \
+"\055\142\040\123\123\132\135\040\104\111\123\113\012\012\103\150" \
+"\141\156\147\145\040\160\141\162\164\151\164\151\157\156\040\164" \
+"\141\142\154\145\012\012\011\055\165\011\011\123\164\141\162\164" \
+"\040\141\156\144\040\105\156\144\040\141\162\145\040\151\156\040" \
+"\163\145\143\164\157\162\163\040\050\151\156\163\164\145\141\144" \
+"\040\157\146\040\143\171\154\151\156\144\145\162\163\051\012\011" \
+"\055\154\011\011\123\150\157\167\040\160\141\162\164\151\164\151" \
+"\157\156\040\164\141\142\154\145\040\146\157\162\040\145\141\143" \
+"\150\040\104\111\123\113\054\040\164\150\145\156\040\145\170\151" \
+"\164\012\011\055\142\040\062\060\064\070\011\011\050\146\157\162" \
+"\040\143\145\162\164\141\151\156\040\115\117\040\144\151\163\153" \
+"\163\051\040\165\163\145\040\062\060\064\070\055\142\171\164\145" \
+"\040\163\145\143\164\157\162\163\012\011\055\103\040\103\131\114" \
+"\111\116\104\105\122\123\011\123\145\164\040\156\165\155\142\145" \
+"\162\040\157\146\040\143\171\154\151\156\144\145\162\163\057\150" \
+"\145\141\144\163\057\163\145\143\164\157\162\163\012\011\055\110" \
+"\040\110\105\101\104\123\012\011\055\123\040\123\105\103\124\117" \
+"\122\123\000\010\000\133\055\110\114\135\040\133\120\101\124\110" \
+"\135\056\056\056\040\133\117\120\124\111\117\116\123\135\040\133" \
+"\101\103\124\111\117\116\123\135\012\012\123\145\141\162\143\150" \
+"\040\146\157\162\040\146\151\154\145\163\040\141\156\144\040\160" \
+"\145\162\146\157\162\155\040\141\143\164\151\157\156\163\040\157" \
+"\156\040\164\150\145\155\056\012\106\151\162\163\164\040\146\141" \
+"\151\154\145\144\040\141\143\164\151\157\156\040\163\164\157\160" \
+"\163\040\160\162\157\143\145\163\163\151\156\147\040\157\146\040" \
+"\143\165\162\162\145\156\164\040\146\151\154\145\056\012\104\145" \
+"\146\141\165\154\164\163\072\040\120\101\124\110\040\151\163\040" \
+"\143\165\162\162\145\156\164\040\144\151\162\145\143\164\157\162" \
+"\171\054\040\141\143\164\151\157\156\040\151\163\040\047\055\160" \
+"\162\151\156\164\047\012\012\011\055\114\054\055\146\157\154\154" \
+"\157\167\011\106\157\154\154\157\167\040\163\171\155\154\151\156" \
+"\153\163\012\011\055\110\011\011\056\056\056\157\156\040\143\157" \
+"\155\155\141\156\144\040\154\151\156\145\040\157\156\154\171\012" \
+"\011\055\170\144\145\166\011\011\104\157\156\047\164\040\144\145" \
+"\163\143\145\156\144\040\144\151\162\145\143\164\157\162\151\145" \
+"\163\040\157\156\040\157\164\150\145\162\040\146\151\154\145\163" \
+"\171\163\164\145\155\163\012\011\055\155\141\170\144\145\160\164" \
+"\150\040\116\011\104\145\163\143\145\156\144\040\141\164\040\155" \
+"\157\163\164\040\116\040\154\145\166\145\154\163\056\040\055\155" \
+"\141\170\144\145\160\164\150\040\060\040\141\160\160\154\151\145" \
+"\163\012\011\011\011\141\143\164\151\157\156\163\040\164\157\040" \
+"\143\157\155\155\141\156\144\040\154\151\156\145\040\141\162\147" \
+"\165\155\145\156\164\163\040\157\156\154\171\012\011\055\155\151" \
+"\156\144\145\160\164\150\040\116\011\104\157\156\047\164\040\141" \
+"\143\164\040\157\156\040\146\151\162\163\164\040\116\040\154\145" \
+"\166\145\154\163\012\011\055\144\145\160\164\150\011\011\101\143" \
+"\164\040\157\156\040\144\151\162\145\143\164\157\162\171\040\052" \
+"\141\146\164\145\162\052\040\164\162\141\166\145\162\163\151\156" \
+"\147\040\151\164\012\012\101\143\164\151\157\156\163\072\012\011" \
+"\050\040\101\103\124\111\117\116\123\040\051\011\107\162\157\165" \
+"\160\040\141\143\164\151\157\156\163\040\146\157\162\040\055\157" \
+"\040\057\040\055\141\012\011\041\040\101\103\124\011\011\111\156" \
+"\166\145\162\164\040\101\103\124\047\163\040\163\165\143\143\145" \
+"\163\163\057\146\141\151\154\165\162\145\012\011\101\103\124\061" \
+"\040\133\055\141\135\040\101\103\124\062\011\111\146\040\101\103" \
+"\124\061\040\146\141\151\154\163\054\040\163\164\157\160\054\040" \
+"\145\154\163\145\040\144\157\040\101\103\124\062\012\011\101\103" \
+"\124\061\040\055\157\040\101\103\124\062\011\111\146\040\101\103" \
+"\124\061\040\163\165\143\143\145\145\144\163\054\040\163\164\157" \
+"\160\054\040\145\154\163\145\040\144\157\040\101\103\124\062\012" \
+"\011\011\011\116\157\164\145\072\040\055\141\040\150\141\163\040" \
+"\150\151\147\150\145\162\040\160\162\151\157\162\151\164\171\040" \
+"\164\150\141\156\040\055\157\012\011\055\156\141\155\145\040\120" \
+"\101\124\124\105\122\116\011\115\141\164\143\150\040\146\151\154" \
+"\145\040\156\141\155\145\040\050\167\057\157\040\144\151\162\145" \
+"\143\164\157\162\171\040\156\141\155\145\051\040\164\157\040\120" \
+"\101\124\124\105\122\116\012\011\055\151\156\141\155\145\040\120" \
+"\101\124\124\105\122\116\011\103\141\163\145\040\151\156\163\145" \
+"\156\163\151\164\151\166\145\040\055\156\141\155\145\012\011\055" \
+"\160\141\164\150\040\120\101\124\124\105\122\116\011\115\141\164" \
+"\143\150\040\160\141\164\150\040\164\157\040\120\101\124\124\105" \
+"\122\116\012\011\055\151\160\141\164\150\040\120\101\124\124\105" \
+"\122\116\011\103\141\163\145\040\151\156\163\145\156\163\151\164" \
+"\151\166\145\040\055\160\141\164\150\012\011\055\162\145\147\145" \
+"\170\040\120\101\124\124\105\122\116\011\115\141\164\143\150\040" \
+"\160\141\164\150\040\164\157\040\162\145\147\145\170\040\120\101" \
+"\124\124\105\122\116\012\011\055\164\171\160\145\040\130\011\011" \
+"\106\151\154\145\040\164\171\160\145\040\151\163\040\130\040\050" \
+"\157\156\145\040\157\146\072\040\146\054\144\054\154\054\142\054" \
+"\143\054\056\056\056\051\012\011\055\160\145\162\155\040\115\101" \
+"\123\113\011\101\164\040\154\145\141\163\164\040\157\156\145\040" \
+"\155\141\163\153\040\142\151\164\040\050\053\115\101\123\113\051" \
+"\054\040\141\154\154\040\142\151\164\163\040\050\055\115\101\123" \
+"\113\051\054\012\011\011\011\157\162\040\145\170\141\143\164\154" \
+"\171\040\115\101\123\113\040\142\151\164\163\040\141\162\145\040" \
+"\163\145\164\040\151\156\040\146\151\154\145\047\163\040\155\157" \
+"\144\145\012\011\055\155\164\151\155\145\040\104\101\131\123\011" \
+"\155\164\151\155\145\040\151\163\040\147\162\145\141\164\145\162" \
+"\040\164\150\141\156\040\050\053\116\051\054\040\154\145\163\163" \
+"\040\164\150\141\156\040\050\055\116\051\054\012\011\011\011\157" \
+"\162\040\145\170\141\143\164\154\171\040\116\040\144\141\171\163" \
+"\040\151\156\040\164\150\145\040\160\141\163\164\012\011\055\155" \
+"\155\151\156\040\115\111\116\123\011\155\164\151\155\145\040\151" \
+"\163\040\147\162\145\141\164\145\162\040\164\150\141\156\040\050" \
+"\053\116\051\054\040\154\145\163\163\040\164\150\141\156\040\050" \
+"\055\116\051\054\012\011\011\011\157\162\040\145\170\141\143\164" \
+"\154\171\040\116\040\155\151\156\165\164\145\163\040\151\156\040" \
+"\164\150\145\040\160\141\163\164\012\011\055\156\145\167\145\162" \
+"\040\106\111\114\105\011\155\164\151\155\145\040\151\163\040\155" \
+"\157\162\145\040\162\145\143\145\156\164\040\164\150\141\156\040" \
+"\106\111\114\105\047\163\012\011\055\165\163\145\162\040\116\101" \
+"\115\105\057\111\104\011\106\151\154\145\040\151\163\040\157\167" \
+"\156\145\144\040\142\171\040\147\151\166\145\156\040\165\163\145" \
+"\162\012\011\055\147\162\157\165\160\040\116\101\115\105\057\111" \
+"\104\011\106\151\154\145\040\151\163\040\157\167\156\145\144\040" \
+"\142\171\040\147\151\166\145\156\040\147\162\157\165\160\012\011" \
+"\055\163\151\172\145\040\116\133\142\143\153\135\011\106\151\154" \
+"\145\040\163\151\172\145\040\151\163\040\116\040\050\143\072\142" \
+"\171\164\145\163\054\153\072\153\142\171\164\145\163\054\142\072" \
+"\065\061\062\040\142\171\164\145\163\050\144\145\146\056\051\051" \
+"\012\011\011\011\053\057\055\116\072\040\146\151\154\145\040\163" \
+"\151\172\145\040\151\163\040\142\151\147\147\145\162\057\163\155" \
+"\141\154\154\145\162\040\164\150\141\156\040\116\012\011\055\154" \
+"\151\156\153\163\040\116\011\116\165\155\142\145\162\040\157\146" \
+"\040\154\151\156\153\163\040\151\163\040\147\162\145\141\164\145" \
+"\162\040\164\150\141\156\040\050\053\116\051\054\040\154\145\163" \
+"\163\040\164\150\141\156\040\050\055\116\051\054\012\011\011\011" \
+"\157\162\040\145\170\141\143\164\154\171\040\116\012\011\055\160" \
+"\162\165\156\145\011\011\111\146\040\143\165\162\162\145\156\164" \
+"\040\146\151\154\145\040\151\163\040\144\151\162\145\143\164\157" \
+"\162\171\054\040\144\157\156\047\164\040\144\145\163\143\145\156" \
+"\144\040\151\156\164\157\040\151\164\012\111\146\040\156\157\156" \
+"\145\040\157\146\040\164\150\145\040\146\157\154\154\157\167\151" \
+"\156\147\040\141\143\164\151\157\156\163\040\151\163\040\163\160" \
+"\145\143\151\146\151\145\144\054\040\055\160\162\151\156\164\040" \
+"\151\163\040\141\163\163\165\155\145\144\012\011\055\160\162\151" \
+"\156\164\011\011\120\162\151\156\164\040\146\151\154\145\040\156" \
+"\141\155\145\012\011\055\160\162\151\156\164\060\011\011\120\162" \
+"\151\156\164\040\146\151\154\145\040\156\141\155\145\054\040\116" \
+"\125\114\040\164\145\162\155\151\156\141\164\145\144\012\011\055" \
+"\145\170\145\143\040\103\115\104\040\101\122\107\040\073\011\122" \
+"\165\156\040\103\115\104\040\167\151\164\150\040\141\154\154\040" \
+"\151\156\163\164\141\156\143\145\163\040\157\146\040\173\175\040" \
+"\162\145\160\154\141\143\145\144\040\142\171\012\011\011\011\146" \
+"\151\154\145\040\156\141\155\145\056\040\106\141\151\154\163\040" \
+"\151\146\040\103\115\104\040\145\170\151\164\163\040\167\151\164" \
+"\150\040\156\157\156\172\145\162\157\000\115\124\104\137\104\105" \
+"\126\111\103\105\040\117\106\106\123\105\124\040\123\105\103\124" \
+"\117\122\123\012\012\114\157\143\153\040\160\141\162\164\040\157" \
+"\162\040\141\154\154\040\157\146\040\141\156\040\115\124\104\040" \
+"\144\145\166\151\143\145\056\040\111\146\040\123\105\103\124\117" \
+"\122\123\040\151\163\040\055\061\054\040\164\150\145\156\040\141" \
+"\154\154\040\163\145\143\164\157\162\163\012\167\151\154\154\040" \
+"\142\145\040\154\157\143\153\145\144\054\040\162\145\147\141\162" \
+"\144\154\145\163\163\040\157\146\040\164\150\145\040\166\141\154" \
+"\165\145\040\157\146\040\117\106\106\123\105\124\000\115\124\104" \
+"\137\104\105\126\111\103\105\012\012\125\156\154\157\143\153\040" \
+"\141\156\040\115\124\104\040\144\145\166\151\143\145\000\055\166" \
+"\040\106\111\114\105\040\115\124\104\137\104\105\126\111\103\105" \
+"\012\012\103\157\160\171\040\141\156\040\151\155\141\147\145\040" \
+"\164\157\040\115\124\104\040\144\145\166\151\143\145\012\012\011" \
+"\055\166\011\126\145\162\142\157\163\145\000\133\055\163\170\165" \
+"\156\135\040\106\104\174\173\106\111\114\105\040\133\055\143\135" \
+"\040\120\122\117\107\040\101\122\107\123\175\012\012\133\125\156" \
+"\135\154\157\143\153\040\146\151\154\145\040\144\145\163\143\162" \
+"\151\160\164\157\162\054\040\157\162\040\154\157\143\153\040\106" \
+"\111\114\105\054\040\162\165\156\040\120\122\117\107\012\012\011" \
+"\055\163\011\123\150\141\162\145\144\040\154\157\143\153\012\011" \
+"\055\170\011\105\170\143\154\165\163\151\166\145\040\154\157\143" \
+"\153\040\050\144\145\146\141\165\154\164\051\012\011\055\165\011" \
+"\125\156\154\157\143\153\040\106\104\012\011\055\156\011\106\141" \
+"\151\154\040\162\141\164\150\145\162\040\164\150\141\156\040\167" \
+"\141\151\164\000\133\055\142\163\135\040\133\055\167\040\127\111" \
+"\104\124\110\135\040\133\106\111\114\105\135\056\056\056\012\012" \
+"\127\162\141\160\040\151\156\160\165\164\040\154\151\156\145\163" \
+"\040\151\156\040\145\141\143\150\040\106\111\114\105\040\050\157" \
+"\162\040\163\164\144\151\156\051\054\040\167\162\151\164\151\156" \
+"\147\040\164\157\040\163\164\144\157\165\164\012\012\011\055\142" \
+"\011\103\157\165\156\164\040\142\171\164\145\163\040\162\141\164" \
+"\150\145\162\040\164\150\141\156\040\143\157\154\165\155\156\163" \
+"\012\011\055\163\011\102\162\145\141\153\040\141\164\040\163\160" \
+"\141\143\145\163\012\011\055\167\011\125\163\145\040\127\111\104" \
+"\124\110\040\143\157\154\165\155\156\163\040\151\156\163\164\145" \
+"\141\144\040\157\146\040\070\060\000\012\012\104\151\163\160\154" \
+"\141\171\040\164\150\145\040\141\155\157\165\156\164\040\157\146" \
+"\040\146\162\145\145\040\141\156\144\040\165\163\145\144\040\163" \
+"\171\163\164\145\155\040\155\145\155\157\162\171\000\104\105\126" \
+"\111\103\105\012\012\106\162\145\145\040\141\154\154\040\155\145" \
+"\155\157\162\171\040\165\163\145\144\040\142\171\040\164\150\145" \
+"\040\163\160\145\143\151\146\151\145\144\040\162\141\155\144\151" \
+"\163\153\000\133\117\120\124\111\117\116\123\135\040\115\117\125" \
+"\116\124\120\117\111\116\124\012\012\011\055\157\054\055\055\157" \
+"\146\146\163\145\164\075\117\106\106\123\105\124\011\117\146\146" \
+"\163\145\164\040\151\156\040\142\171\164\145\163\040\164\157\040" \
+"\144\151\163\143\141\162\144\040\146\162\157\155\012\011\055\154" \
+"\054\055\055\154\145\156\147\164\150\075\114\105\116\011\011\102" \
+"\171\164\145\163\040\164\157\040\144\151\163\143\141\162\144\012" \
+"\011\055\155\054\055\055\155\151\156\151\155\165\155\075\115\111" \
+"\116\011\115\151\156\151\155\165\155\040\145\170\164\145\156\164" \
+"\040\154\145\156\147\164\150\012\011\055\166\054\055\055\166\145" \
+"\162\142\157\163\145\011\011\120\162\151\156\164\040\156\165\155" \
+"\142\145\162\040\157\146\040\144\151\163\143\141\162\144\145\144" \
+"\040\142\171\164\145\163\000\133\055\144\135\040\106\111\114\105" \
+"\056\056\056\012\012\127\162\151\164\145\040\146\151\154\145\163" \
+"\047\040\142\165\146\146\145\162\145\144\040\142\154\157\143\153" \
+"\163\040\164\157\040\144\151\163\153\012\012\011\055\144\011\101" \
+"\166\157\151\144\040\163\171\156\143\151\156\147\040\155\145\164" \
+"\141\144\141\164\141\000\133\117\120\124\111\117\116\123\135\040" \
+"\110\117\123\124\040\133\114\117\103\101\114\137\106\111\114\105" \
+"\135\040\122\105\115\117\124\105\137\106\111\114\105\012\012\104" \
+"\157\167\156\154\157\141\144\040\141\040\146\151\154\145\040\166" \
+"\151\141\040\106\124\120\012\012\011\055\143\054\055\055\143\157" \
+"\156\164\151\156\165\145\011\011\103\157\156\164\151\156\165\145" \
+"\040\160\162\145\166\151\157\165\163\040\164\162\141\156\163\146" \
+"\145\162\012\011\055\166\054\055\055\166\145\162\142\157\163\145" \
+"\011\011\126\145\162\142\157\163\145\012\011\055\165\054\055\055" \
+"\165\163\145\162\156\141\155\145\040\125\123\105\122\011\125\163" \
+"\145\162\156\141\155\145\012\011\055\160\054\055\055\160\141\163" \
+"\163\167\157\162\144\040\120\101\123\123\011\120\141\163\163\167" \
+"\157\162\144\012\011\055\120\054\055\055\160\157\162\164\040\116" \
+"\125\115\011\011\120\157\162\164\000\133\117\120\124\111\117\116" \
+"\123\135\040\110\117\123\124\040\133\122\105\115\117\124\105\137" \
+"\106\111\114\105\135\040\114\117\103\101\114\137\106\111\114\105" \
+"\012\012\125\160\154\157\141\144\040\141\040\146\151\154\145\040" \
+"\164\157\040\141\040\106\124\120\040\163\145\162\166\145\162\012" \
+"\012\011\055\166\054\055\055\166\145\162\142\157\163\145\011\011" \
+"\126\145\162\142\157\163\145\012\011\055\165\054\055\055\165\163" \
+"\145\162\156\141\155\145\040\125\123\105\122\011\125\163\145\162" \
+"\156\141\155\145\012\011\055\160\054\055\055\160\141\163\163\167" \
+"\157\162\144\040\120\101\123\123\011\120\141\163\163\167\157\162" \
+"\144\012\011\055\120\054\055\055\160\157\162\164\040\116\125\115" \
+"\011\011\120\157\162\164\000\133\117\120\124\111\117\116\123\135" \
+"\040\106\111\114\105\040\157\162\040\120\117\122\124\057\120\122" \
+"\117\124\117\012\012\106\151\156\144\040\160\162\157\143\145\163" \
+"\163\145\163\040\167\150\151\143\150\040\165\163\145\040\106\111" \
+"\114\105\163\040\157\162\040\120\117\122\124\163\012\012\011\055" \
+"\155\011\106\151\156\144\040\160\162\157\143\145\163\163\145\163" \
+"\040\167\150\151\143\150\040\165\163\145\040\163\141\155\145\040" \
+"\146\163\040\141\163\040\106\111\114\105\163\012\011\055\064\054" \
+"\055\066\011\123\145\141\162\143\150\040\157\156\154\171\040\111" \
+"\120\166\064\057\111\120\166\066\040\163\160\141\143\145\012\011" \
+"\055\163\011\104\157\156\047\164\040\144\151\163\160\154\141\171" \
+"\040\120\111\104\163\012\011\055\153\011\113\151\154\154\040\146" \
+"\157\165\156\144\040\160\162\157\143\145\163\163\145\163\012\011" \
+"\055\123\111\107\116\101\114\011\123\151\147\156\141\154\040\164" \
+"\157\040\163\145\156\144\040\050\144\145\146\141\165\154\164\072" \
+"\040\113\111\114\114\051\000\133\117\120\124\111\117\116\123\135" \
+"\040\133\055\055\135\040\117\120\124\123\124\122\111\116\107\040" \
+"\120\101\122\101\115\123\012\012\011\055\141\054\055\055\141\154" \
+"\164\145\162\156\141\164\151\166\145\011\011\101\154\154\157\167" \
+"\040\154\157\156\147\040\157\160\164\151\157\156\163\040\163\164" \
+"\141\162\164\151\156\147\040\167\151\164\150\040\163\151\156\147" \
+"\154\145\040\055\012\011\055\154\054\055\055\154\157\156\147\157" \
+"\160\164\151\157\156\163\075\114\117\120\124\133\054\056\056\056" \
+"\135\011\114\157\156\147\040\157\160\164\151\157\156\163\040\164" \
+"\157\040\162\145\143\157\147\156\151\172\145\012\011\055\156\054" \
+"\055\055\156\141\155\145\075\120\122\117\107\116\101\115\105\011" \
+"\011\124\150\145\040\156\141\155\145\040\165\156\144\145\162\040" \
+"\167\150\151\143\150\040\145\162\162\157\162\163\040\141\162\145" \
+"\040\162\145\160\157\162\164\145\144\012\011\055\157\054\055\055" \
+"\157\160\164\151\157\156\163\075\117\120\124\123\124\122\111\116" \
+"\107\011\011\123\150\157\162\164\040\157\160\164\151\157\156\163" \
+"\040\164\157\040\162\145\143\157\147\156\151\172\145\012\011\055" \
+"\161\054\055\055\161\165\151\145\164\011\011\011\116\157\040\145" \
+"\162\162\157\162\040\155\145\163\163\141\147\145\163\040\157\156" \
+"\040\165\156\162\145\143\157\147\156\151\172\145\144\040\157\160" \
+"\164\151\157\156\163\012\011\055\121\054\055\055\161\165\151\145" \
+"\164\055\157\165\164\160\165\164\011\011\116\157\040\156\157\162" \
+"\155\141\154\040\157\165\164\160\165\164\012\011\055\163\054\055" \
+"\055\163\150\145\154\154\075\123\110\105\114\114\011\011\123\145" \
+"\164\040\163\150\145\154\154\040\161\165\157\164\151\156\147\040" \
+"\143\157\156\166\145\156\164\151\157\156\163\012\011\055\124\054" \
+"\055\055\164\145\163\164\011\011\011\126\145\162\163\151\157\156" \
+"\040\164\145\163\164\040\050\145\170\151\164\163\040\167\151\164" \
+"\150\040\064\051\012\011\055\165\054\055\055\165\156\161\165\157" \
+"\164\145\144\011\011\011\104\157\156\047\164\040\161\165\157\164" \
+"\145\040\157\165\164\160\165\164\012\012\105\170\141\155\160\154" \
+"\145\072\012\012\117\075\140\147\145\164\157\160\164\040\055\154" \
+"\040\142\142\072\040\055\055\040\141\142\072\143\072\072\040\042" \
+"\044\100\042\140\040\174\174\040\145\170\151\164\040\061\012\145" \
+"\166\141\154\040\163\145\164\040\055\055\040\042\044\117\042\012" \
+"\167\150\151\154\145\040\164\162\165\145\073\040\144\157\012\011" \
+"\143\141\163\145\040\042\044\061\042\040\151\156\012\011\055\141" \
+"\051\011\145\143\150\157\040\101\073\040\163\150\151\146\164\073" \
+"\073\012\011\055\142\174\055\055\142\142\051\040\145\143\150\157" \
+"\040\042\102\072\047\044\062\047\042\073\040\163\150\151\146\164" \
+"\040\062\073\073\012\011\055\143\051\011\143\141\163\145\040\042" \
+"\044\062\042\040\151\156\012\011\011\042\042\051\011\145\143\150" \
+"\157\040\103\073\040\163\150\151\146\164\040\062\073\073\012\011" \
+"\011\052\051\011\145\143\150\157\040\042\103\072\047\044\062\047" \
+"\042\073\040\163\150\151\146\164\040\062\073\073\012\011\011\145" \
+"\163\141\143\073\073\012\011\055\055\051\011\163\150\151\146\164" \
+"\073\040\142\162\145\141\153\073\073\012\011\052\051\011\145\143" \
+"\150\157\040\105\162\162\157\162\073\040\145\170\151\164\040\061" \
+"\073\073\012\011\145\163\141\143\012\144\157\156\145\000\133\055" \
+"\110\150\156\154\114\157\161\166\163\162\151\167\106\105\135\040" \
+"\133\055\155\040\116\135\040\133\055\101\057\102\057\103\040\116" \
+"\135\040\120\101\124\124\105\122\116\057\055\145\040\120\101\124" \
+"\124\105\122\116\056\056\056\057\055\146\040\106\111\114\105\040" \
+"\133\106\111\114\105\135\056\056\056\012\012\123\145\141\162\143" \
+"\150\040\146\157\162\040\120\101\124\124\105\122\116\040\151\156" \
+"\040\106\111\114\105\163\040\050\157\162\040\163\164\144\151\156" \
+"\051\012\012\011\055\110\011\101\144\144\040\047\146\151\154\145" \
+"\156\141\155\145\072\047\040\160\162\145\146\151\170\012\011\055" \
+"\150\011\104\157\040\156\157\164\040\141\144\144\040\047\146\151" \
+"\154\145\156\141\155\145\072\047\040\160\162\145\146\151\170\012" \
+"\011\055\156\011\101\144\144\040\047\154\151\156\145\137\156\157" \
+"\072\047\040\160\162\145\146\151\170\012\011\055\154\011\123\150" \
+"\157\167\040\157\156\154\171\040\156\141\155\145\163\040\157\146" \
+"\040\146\151\154\145\163\040\164\150\141\164\040\155\141\164\143" \
+"\150\012\011\055\114\011\123\150\157\167\040\157\156\154\171\040" \
+"\156\141\155\145\163\040\157\146\040\146\151\154\145\163\040\164" \
+"\150\141\164\040\144\157\156\047\164\040\155\141\164\143\150\012" \
+"\011\055\143\011\123\150\157\167\040\157\156\154\171\040\143\157" \
+"\165\156\164\040\157\146\040\155\141\164\143\150\151\156\147\040" \
+"\154\151\156\145\163\012\011\055\157\011\123\150\157\167\040\157" \
+"\156\154\171\040\164\150\145\040\155\141\164\143\150\151\156\147" \
+"\040\160\141\162\164\040\157\146\040\154\151\156\145\012\011\055" \
+"\161\011\121\165\151\145\164\056\040\122\145\164\165\162\156\040" \
+"\060\040\151\146\040\120\101\124\124\105\122\116\040\151\163\040" \
+"\146\157\165\156\144\054\040\061\040\157\164\150\145\162\167\151" \
+"\163\145\012\011\055\166\011\123\145\154\145\143\164\040\156\157" \
+"\156\055\155\141\164\143\150\151\156\147\040\154\151\156\145\163" \
+"\012\011\055\163\011\123\165\160\160\162\145\163\163\040\157\160" \
+"\145\156\040\141\156\144\040\162\145\141\144\040\145\162\162\157" \
+"\162\163\012\011\055\162\011\122\145\143\165\162\163\145\012\011" \
+"\055\151\011\111\147\156\157\162\145\040\143\141\163\145\012\011" \
+"\055\167\011\115\141\164\143\150\040\167\150\157\154\145\040\167" \
+"\157\162\144\163\040\157\156\154\171\012\011\055\170\011\115\141" \
+"\164\143\150\040\167\150\157\154\145\040\154\151\156\145\163\040" \
+"\157\156\154\171\012\011\055\106\011\120\101\124\124\105\122\116" \
+"\040\151\163\040\141\040\154\151\164\145\162\141\154\040\050\156" \
+"\157\164\040\162\145\147\145\170\160\051\012\011\055\105\011\120" \
+"\101\124\124\105\122\116\040\151\163\040\141\156\040\145\170\164" \
+"\145\156\144\145\144\040\162\145\147\145\170\160\012\011\055\155" \
+"\040\116\011\115\141\164\143\150\040\165\160\040\164\157\040\116" \
+"\040\164\151\155\145\163\040\160\145\162\040\146\151\154\145\012" \
+"\011\055\101\040\116\011\120\162\151\156\164\040\116\040\154\151" \
+"\156\145\163\040\157\146\040\164\162\141\151\154\151\156\147\040" \
+"\143\157\156\164\145\170\164\012\011\055\102\040\116\011\120\162" \
+"\151\156\164\040\116\040\154\151\156\145\163\040\157\146\040\154" \
+"\145\141\144\151\156\147\040\143\157\156\164\145\170\164\012\011" \
+"\055\103\040\116\011\123\141\155\145\040\141\163\040\047\055\101" \
+"\040\116\040\055\102\040\116\047\012\011\055\145\040\120\124\122" \
+"\116\011\120\141\164\164\145\162\156\040\164\157\040\155\141\164" \
+"\143\150\012\011\055\146\040\106\111\114\105\011\122\145\141\144" \
+"\040\160\141\164\164\145\162\156\040\146\162\157\155\040\146\151" \
+"\154\145\000\133\125\123\105\122\135\012\012\120\162\151\156\164" \
+"\040\164\150\145\040\147\162\157\165\160\040\155\145\155\142\145" \
+"\162\163\150\151\160\163\040\157\146\040\125\123\105\122\040\157" \
+"\162\040\146\157\162\040\164\150\145\040\143\165\162\162\145\156" \
+"\164\040\160\162\157\143\145\163\163\000\133\055\143\146\164\135" \
+"\040\133\106\111\114\105\135\056\056\056\012\012\104\145\143\157" \
+"\155\160\162\145\163\163\040\106\111\114\105\163\040\050\157\162" \
+"\040\163\164\144\151\156\051\012\012\011\055\143\011\127\162\151" \
+"\164\145\040\164\157\040\163\164\144\157\165\164\012\011\055\146" \
+"\011\106\157\162\143\145\012\011\055\164\011\124\145\163\164\040" \
+"\146\151\154\145\040\151\156\164\145\147\162\151\164\171\000\133" \
+"\055\143\146\144\135\040\133\106\111\114\105\135\056\056\056\012" \
+"\012\103\157\155\160\162\145\163\163\040\106\111\114\105\163\040" \
+"\050\157\162\040\163\164\144\151\156\051\012\012\011\055\144\011" \
+"\104\145\143\157\155\160\162\145\163\163\012\011\055\143\011\127" \
+"\162\151\164\145\040\164\157\040\163\164\144\157\165\164\012\011" \
+"\055\146\011\106\157\162\143\145\000\133\055\144\040\104\105\114" \
+"\101\131\135\040\133\055\156\135\040\133\055\146\135\012\012\110" \
+"\141\154\164\040\164\150\145\040\163\171\163\164\145\155\012\012" \
+"\011\055\144\040\123\105\103\011\104\145\154\141\171\040\151\156" \
+"\164\145\162\166\141\154\012\011\055\156\011\104\157\040\156\157" \
+"\164\040\163\171\156\143\012\011\055\146\011\106\157\162\143\145" \
+"\040\050\144\157\156\047\164\040\147\157\040\164\150\162\157\165" \
+"\147\150\040\151\156\151\164\051\000\133\117\120\124\111\117\116" \
+"\123\135\040\133\106\111\114\105\135\056\056\056\012\012\120\162" \
+"\151\156\164\040\146\151\162\163\164\040\061\060\040\154\151\156" \
+"\145\163\040\157\146\040\145\141\143\150\040\106\111\114\105\040" \
+"\050\157\162\040\163\164\144\151\156\051\040\164\157\040\163\164" \
+"\144\157\165\164\056\012\127\151\164\150\040\155\157\162\145\040" \
+"\164\150\141\156\040\157\156\145\040\106\111\114\105\054\040\160" \
+"\162\145\143\145\144\145\040\145\141\143\150\040\167\151\164\150" \
+"\040\141\040\146\151\154\145\156\141\155\145\040\150\145\141\144" \
+"\145\162\056\012\012\011\055\156\040\116\133\153\142\155\135\011" \
+"\120\162\151\156\164\040\146\151\162\163\164\040\116\040\154\151" \
+"\156\145\163\012\011\055\156\040\055\116\133\153\142\155\135\011" \
+"\120\162\151\156\164\040\141\154\154\040\145\170\143\145\160\164" \
+"\040\116\040\154\141\163\164\040\154\151\156\145\163\012\011\055" \
+"\143\040\133\055\135\116\133\153\142\155\135\011\120\162\151\156" \
+"\164\040\146\151\162\163\164\040\116\040\142\171\164\145\163\012" \
+"\011\055\161\011\011\116\145\166\145\162\040\160\162\151\156\164" \
+"\040\150\145\141\144\145\162\163\012\011\055\166\011\011\101\154" \
+"\167\141\171\163\040\160\162\151\156\164\040\150\145\141\144\145" \
+"\162\163\012\012\116\040\155\141\171\040\142\145\040\163\165\146" \
+"\146\151\170\145\144\040\142\171\040\153\040\050\170\061\060\062" \
+"\064\051\054\040\142\040\050\170\065\061\062\051\054\040\157\162" \
+"\040\155\040\050\170\061\060\062\064\136\062\051\056\000\133\055" \
+"\142\143\103\144\145\146\156\157\163\166\170\122\135\040\133\106" \
+"\111\114\105\135\056\056\056\012\012\104\151\163\160\154\141\171" \
+"\040\106\111\114\105\163\040\050\157\162\040\163\164\144\151\156" \
+"\051\040\151\156\040\141\040\165\163\145\162\040\163\160\145\143" \
+"\151\146\151\145\144\040\146\157\162\155\141\164\012\012\011\055" \
+"\142\011\011\117\156\145\055\142\171\164\145\040\157\143\164\141" \
+"\154\040\144\151\163\160\154\141\171\012\011\055\143\011\011\117" \
+"\156\145\055\142\171\164\145\040\143\150\141\162\141\143\164\145" \
+"\162\040\144\151\163\160\154\141\171\012\011\055\103\011\011\103" \
+"\141\156\157\156\151\143\141\154\040\150\145\170\053\101\123\103" \
+"\111\111\054\040\061\066\040\142\171\164\145\163\040\160\145\162" \
+"\040\154\151\156\145\012\011\055\144\011\011\124\167\157\055\142" \
+"\171\164\145\040\144\145\143\151\155\141\154\040\144\151\163\160" \
+"\154\141\171\012\011\055\145\040\106\117\122\115\101\124\137\123" \
+"\124\122\111\116\107\012\011\055\146\040\106\117\122\115\101\124" \
+"\137\106\111\114\105\012\011\055\156\040\114\105\116\107\124\110" \
+"\011\111\156\164\145\162\160\162\145\164\040\157\156\154\171\040" \
+"\114\105\116\107\124\110\040\142\171\164\145\163\040\157\146\040" \
+"\151\156\160\165\164\012\011\055\157\011\011\124\167\157\055\142" \
+"\171\164\145\040\157\143\164\141\154\040\144\151\163\160\154\141" \
+"\171\012\011\055\163\040\117\106\106\123\105\124\011\123\153\151" \
+"\160\040\117\106\106\123\105\124\040\142\171\164\145\163\012\011" \
+"\055\166\011\011\104\151\163\160\154\141\171\040\141\154\154\040" \
+"\151\156\160\165\164\040\144\141\164\141\012\011\055\170\011\011" \
+"\124\167\157\055\142\171\164\145\040\150\145\170\141\144\145\143" \
+"\151\155\141\154\040\144\151\163\160\154\141\171\012\011\055\122" \
+"\011\011\122\145\166\145\162\163\145\040\157\146\040\047\150\145" \
+"\170\144\165\155\160\040\055\103\166\047\000\133\117\120\124\111" \
+"\117\116\123\135\040\133\125\123\105\122\135\012\012\120\162\151" \
+"\156\164\040\151\156\146\157\162\155\141\164\151\157\156\040\141" \
+"\142\157\165\164\040\125\123\105\122\040\157\162\040\164\150\145" \
+"\040\143\165\162\162\145\156\164\040\165\163\145\162\012\012\011" \
+"\055\165\011\125\163\145\162\040\111\104\012\011\055\147\011\107" \
+"\162\157\165\160\040\111\104\012\011\055\107\011\123\165\160\160" \
+"\154\145\155\145\156\164\141\162\171\040\147\162\157\165\160\040" \
+"\111\104\163\012\011\055\156\011\120\162\151\156\164\040\156\141" \
+"\155\145\163\040\151\156\163\164\145\141\144\040\157\146\040\156" \
+"\165\155\142\145\162\163\012\011\055\162\011\120\162\151\156\164" \
+"\040\162\145\141\154\040\111\104\040\151\156\163\164\145\141\144" \
+"\040\157\146\040\145\146\146\145\143\164\151\166\145\040\111\104" \
+"\000\133\055\141\135\040\151\156\164\145\162\146\141\143\145\040" \
+"\133\141\144\144\162\145\163\163\135\012\012\103\157\156\146\151" \
+"\147\165\162\145\040\141\040\156\145\164\167\157\162\153\040\151" \
+"\156\164\145\162\146\141\143\145\012\012\011\133\141\144\144\040" \
+"\101\104\104\122\105\123\123\133\057\120\122\105\106\111\130\114" \
+"\105\116\135\135\012\011\133\144\145\154\040\101\104\104\122\105" \
+"\123\123\133\057\120\122\105\106\111\130\114\105\116\135\135\012" \
+"\011\133\133\055\135\142\162\157\141\144\143\141\163\164\040\133" \
+"\101\104\104\122\105\123\123\135\135\040\133\133\055\135\160\157" \
+"\151\156\164\157\160\157\151\156\164\040\133\101\104\104\122\105" \
+"\123\123\135\135\012\011\133\156\145\164\155\141\163\153\040\101" \
+"\104\104\122\105\123\123\135\040\133\144\163\164\141\144\144\162" \
+"\040\101\104\104\122\105\123\123\135\012\011\133\150\167\040\145" \
+"\164\150\145\162\040\101\104\104\122\105\123\123\135\040\133\155" \
+"\145\164\162\151\143\040\116\116\135\040\133\155\164\165\040\116" \
+"\116\135\012\011\133\133\055\135\164\162\141\151\154\145\162\163" \
+"\135\040\133\133\055\135\141\162\160\135\040\133\133\055\135\141" \
+"\154\154\155\165\154\164\151\135\012\011\133\155\165\154\164\151" \
+"\143\141\163\164\135\040\133\133\055\135\160\162\157\155\151\163" \
+"\143\135\040\133\164\170\161\165\145\165\145\154\145\156\040\116" \
+"\116\135\040\133\133\055\135\144\171\156\141\155\151\143\135\012" \
+"\011\133\165\160\174\144\157\167\156\135\040\056\056\056\000\133" \
+"\055\146\145\135\040\133\055\161\040\116\135\040\133\055\122\040" \
+"\116\135\040\133\103\117\116\106\106\111\114\105\135\012\012\114" \
+"\151\163\164\145\156\040\146\157\162\040\156\145\164\167\157\162" \
+"\153\040\143\157\156\156\145\143\164\151\157\156\163\040\141\156" \
+"\144\040\154\141\165\156\143\150\040\160\162\157\147\162\141\155" \
+"\163\012\012\011\055\146\011\122\165\156\040\151\156\040\146\157" \
+"\162\145\147\162\157\165\156\144\012\011\055\145\011\114\157\147" \
+"\040\164\157\040\163\164\144\145\162\162\012\011\055\161\040\116" \
+"\011\123\157\143\153\145\164\040\154\151\163\164\145\156\040\161" \
+"\165\145\165\145\040\050\144\145\146\141\165\154\164\072\040\061" \
+"\062\070\051\012\011\055\122\040\116\011\120\141\165\163\145\040" \
+"\163\145\162\166\151\143\145\163\040\141\146\164\145\162\040\116" \
+"\040\143\157\156\156\145\143\164\163\057\155\151\156\012\011\011" \
+"\050\144\145\146\141\165\154\164\072\040\060\040\055\040\144\151" \
+"\163\141\142\154\145\144\051\000\106\111\114\105\040\133\123\131" \
+"\115\102\117\114\075\126\101\114\125\105\135\056\056\056\012\012" \
+"\114\157\141\144\040\164\150\145\040\163\160\145\143\151\146\151" \
+"\145\144\040\153\145\162\156\145\154\040\155\157\144\165\154\145" \
+"\163\040\151\156\164\157\040\164\150\145\040\153\145\162\156\145" \
+"\154\000\133\055\143\144\104\163\160\135\040\133\055\157\040\125" \
+"\123\105\122\135\040\133\055\147\040\107\122\120\135\040\133\055" \
+"\155\040\115\117\104\105\135\040\133\123\117\125\122\103\105\135" \
+"\056\056\056\040\104\105\123\124\012\012\103\157\160\171\040\146" \
+"\151\154\145\163\040\141\156\144\040\163\145\164\040\141\164\164" \
+"\162\151\142\165\164\145\163\012\012\011\055\143\011\112\165\163" \
+"\164\040\143\157\160\171\040\050\144\145\146\141\165\154\164\051" \
+"\012\011\055\144\011\103\162\145\141\164\145\040\144\151\162\145" \
+"\143\164\157\162\151\145\163\012\011\055\104\011\103\162\145\141" \
+"\164\145\040\154\145\141\144\151\156\147\040\164\141\162\147\145" \
+"\164\040\144\151\162\145\143\164\157\162\151\145\163\012\011\055" \
+"\163\011\123\164\162\151\160\040\163\171\155\142\157\154\040\164" \
+"\141\142\154\145\012\011\055\160\011\120\162\145\163\145\162\166" \
+"\145\040\144\141\164\145\012\011\055\157\040\125\123\105\122\011" \
+"\123\145\164\040\157\167\156\145\162\163\150\151\160\012\011\055" \
+"\147\040\107\122\120\011\123\145\164\040\147\162\157\165\160\040" \
+"\157\167\156\145\162\163\150\151\160\012\011\055\155\040\115\117" \
+"\104\105\011\123\145\164\040\160\145\162\155\151\163\163\151\157" \
+"\156\163\000\133\055\143\040\061\055\063\135\040\133\055\156\040" \
+"\060\055\067\135\040\133\055\160\040\120\111\104\135\040\133\120" \
+"\122\117\107\135\012\012\103\150\141\156\147\145\040\111\057\117" \
+"\040\160\162\151\157\162\151\164\171\040\141\156\144\040\143\154" \
+"\141\163\163\012\012\011\055\143\011\103\154\141\163\163\056\040" \
+"\061\072\162\145\141\154\164\151\155\145\040\062\072\142\145\163" \
+"\164\055\145\146\146\157\162\164\040\063\072\151\144\154\145\012" \
+"\011\055\156\011\120\162\151\157\162\151\164\171\000\133\055\143" \
+"\135\040\133\055\144\135\040\133\055\164\135\040\133\055\172\135" \
+"\040\133\055\153\174\055\155\135\040\133\101\114\114\174\102\114" \
+"\117\103\113\104\105\126\056\056\056\135\040\133\111\116\124\105" \
+"\122\126\101\114\040\133\103\117\125\116\124\135\135\012\012\122" \
+"\145\160\157\162\164\040\103\120\125\040\141\156\144\040\111\057" \
+"\117\040\163\164\141\164\151\163\164\151\143\163\012\012\011\055" \
+"\143\011\123\150\157\167\040\103\120\125\040\165\164\151\154\151" \
+"\172\141\164\151\157\156\012\011\055\144\011\123\150\157\167\040" \
+"\144\145\166\151\143\145\040\165\164\151\154\151\172\141\164\151" \
+"\157\156\012\011\055\164\011\120\162\151\156\164\040\143\165\162" \
+"\162\145\156\164\040\164\151\155\145\012\011\055\172\011\117\155" \
+"\151\164\040\144\145\166\151\143\145\163\040\167\151\164\150\040" \
+"\156\157\040\141\143\164\151\166\151\164\171\012\011\055\153\011" \
+"\125\163\145\040\153\142\057\163\012\011\055\155\011\125\163\145" \
+"\040\115\142\057\163\000\133\117\120\124\111\117\116\123\135\040" \
+"\173\141\144\144\162\145\163\163\040\174\040\162\157\165\164\145" \
+"\040\174\040\154\151\156\153\040\174\040\162\165\154\145\175\040" \
+"\173\103\117\115\115\101\116\104\175\012\012\151\160\040\133\117" \
+"\120\124\111\117\116\123\135\040\117\102\112\105\103\124\040\173" \
+"\103\117\115\115\101\116\104\175\012\167\150\145\162\145\040\117" \
+"\102\112\105\103\124\040\072\075\040\173\141\144\144\162\145\163" \
+"\163\040\174\040\162\157\165\164\145\040\174\040\154\151\156\153" \
+"\040\174\040\162\165\154\145\175\012\117\120\124\111\117\116\123" \
+"\040\072\075\040\173\040\055\146\133\141\155\151\154\171\135\040" \
+"\173\040\151\156\145\164\040\174\040\151\156\145\164\066\040\174" \
+"\040\154\151\156\153\040\175\040\174\040\055\157\133\156\145\154" \
+"\151\156\145\135\040\175\000\133\055\154\135\040\133\055\123\111" \
+"\107\135\040\120\111\104\056\056\056\012\012\123\145\156\144\040" \
+"\141\040\163\151\147\156\141\154\040\050\144\145\146\141\165\154" \
+"\164\072\040\124\105\122\115\051\040\164\157\040\147\151\166\145" \
+"\156\040\120\111\104\163\012\012\011\055\154\011\114\151\163\164" \
+"\040\141\154\154\040\163\151\147\156\141\154\040\156\141\155\145" \
+"\163\040\141\156\144\040\156\165\155\142\145\162\163\000\133\055" \
+"\154\135\040\133\055\161\135\040\133\055\123\111\107\135\040\120" \
+"\122\117\103\105\123\123\137\116\101\115\105\056\056\056\012\012" \
+"\123\145\156\144\040\141\040\163\151\147\156\141\154\040\050\144" \
+"\145\146\141\165\154\164\072\040\124\105\122\115\051\040\164\157" \
+"\040\147\151\166\145\156\040\160\162\157\143\145\163\163\145\163" \
+"\012\012\011\055\154\011\114\151\163\164\040\141\154\154\040\163" \
+"\151\147\156\141\154\040\156\141\155\145\163\040\141\156\144\040" \
+"\156\165\155\142\145\162\163\012\011\055\161\011\104\157\156\047" \
+"\164\040\143\157\155\160\154\141\151\156\040\151\146\040\156\157" \
+"\040\160\162\157\143\145\163\163\145\163\040\167\145\162\145\040" \
+"\153\151\154\154\145\144\000\133\055\154\135\040\133\055\123\111" \
+"\107\135\040\133\055\157\040\120\111\104\135\056\056\056\012\012" \
+"\123\145\156\144\040\141\040\163\151\147\156\141\154\040\050\144" \
+"\145\146\141\165\154\164\072\040\124\105\122\115\051\040\164\157" \
+"\040\141\154\154\040\160\162\157\143\145\163\163\145\163\040\157" \
+"\165\164\163\151\144\145\040\143\165\162\162\145\156\164\040\163" \
+"\145\163\163\151\157\156\012\012\011\055\154\011\114\151\163\164" \
+"\040\141\154\154\040\163\151\147\156\141\154\040\156\141\155\145" \
+"\163\040\141\156\144\040\156\165\155\142\145\162\163\012\011\055" \
+"\157\040\120\111\104\011\104\157\156\047\164\040\163\151\147\156" \
+"\141\154\040\164\150\151\163\040\120\111\104\000\133\055\105\116" \
+"\150\176\111\077\135\040\133\106\111\114\105\135\056\056\056\012" \
+"\012\126\151\145\167\040\106\111\114\105\040\050\157\162\040\163" \
+"\164\144\151\156\051\040\157\156\145\040\163\143\162\145\145\156" \
+"\146\165\154\040\141\164\040\141\040\164\151\155\145\012\012\011" \
+"\055\105\011\121\165\151\164\040\157\156\143\145\040\164\150\145" \
+"\040\145\156\144\040\157\146\040\141\040\146\151\154\145\040\151" \
+"\163\040\162\145\141\143\150\145\144\012\011\055\116\011\120\162" \
+"\145\146\151\170\040\154\151\156\145\040\156\165\155\142\145\162" \
+"\040\164\157\040\145\141\143\150\040\154\151\156\145\012\011\055" \
+"\111\011\111\147\156\157\162\145\040\143\141\163\145\040\151\156" \
+"\040\141\154\154\040\163\145\141\162\143\150\145\163\012\011\055" \
+"\176\011\123\165\160\160\162\145\163\163\040\176\163\040\144\151" \
+"\163\160\154\141\171\145\144\040\160\141\163\164\040\105\117\106" \
+"\000\133\117\120\124\111\117\116\123\135\040\124\101\122\107\105" \
+"\124\056\056\056\040\114\111\116\113\174\104\111\122\012\012\103" \
+"\162\145\141\164\145\040\141\040\154\151\156\153\040\114\111\116" \
+"\113\040\157\162\040\104\111\122\057\124\101\122\107\105\124\040" \
+"\164\157\040\164\150\145\040\163\160\145\143\151\146\151\145\144" \
+"\040\124\101\122\107\105\124\050\163\051\012\012\011\055\163\011" \
+"\115\141\153\145\040\163\171\155\154\151\156\153\163\040\151\156" \
+"\163\164\145\141\144\040\157\146\040\150\141\162\144\154\151\156" \
+"\153\163\012\011\055\146\011\122\145\155\157\166\145\040\145\170" \
+"\151\163\164\151\156\147\040\144\145\163\164\151\156\141\164\151" \
+"\157\156\163\012\011\055\156\011\104\157\156\047\164\040\144\145" \
+"\162\145\146\145\162\145\156\143\145\040\163\171\155\154\151\156" \
+"\153\163\040\055\040\164\162\145\141\164\040\154\151\153\145\040" \
+"\156\157\162\155\141\154\040\146\151\154\145\012\011\055\142\011" \
+"\115\141\153\145\040\141\040\142\141\143\153\165\160\040\157\146" \
+"\040\164\150\145\040\164\141\162\147\145\164\040\050\151\146\040" \
+"\145\170\151\163\164\163\051\040\142\145\146\157\162\145\040\154" \
+"\151\156\153\040\157\160\145\162\141\164\151\157\156\012\011\055" \
+"\123\040\163\165\146\011\125\163\145\040\163\165\146\146\151\170" \
+"\040\151\156\163\164\145\141\144\040\157\146\040\176\040\167\150" \
+"\145\156\040\155\141\153\151\156\147\040\142\141\143\153\165\160" \
+"\040\146\151\154\145\163\012\011\055\124\011\062\156\144\040\141" \
+"\162\147\040\155\165\163\164\040\142\145\040\141\040\104\111\122" \
+"\012\011\055\166\011\126\145\162\142\157\163\145\000\133\055\162" \
+"\135\040\133\055\157\040\117\106\123\135\040\173\055\146\174\114" \
+"\117\117\120\104\105\126\175\040\106\111\114\105\040\055\040\141" \
+"\163\163\157\143\151\141\164\145\040\154\157\157\160\040\144\145" \
+"\166\151\143\145\163\012\011\154\157\163\145\164\165\160\040\055" \
+"\144\040\114\117\117\120\104\105\126\040\055\040\144\151\163\141" \
+"\163\163\157\143\151\141\164\145\012\011\154\157\163\145\164\165" \
+"\160\040\055\141\040\055\040\163\150\157\167\040\163\164\141\164" \
+"\165\163\012\011\154\157\163\145\164\165\160\040\055\146\040\055" \
+"\040\163\150\157\167\040\156\145\170\164\040\146\162\145\145\040" \
+"\154\157\157\160\040\144\145\166\151\143\145\012\012\011\055\157" \
+"\040\117\106\123\011\123\164\141\162\164\040\117\106\123\040\142" \
+"\171\164\145\163\040\151\156\164\157\040\106\111\114\105\012\011" \
+"\055\162\011\122\145\141\144\055\157\156\154\171\012\011\055\146" \
+"\011\123\150\157\167\057\165\163\145\040\156\145\170\164\040\146" \
+"\162\145\145\040\154\157\157\160\040\144\145\166\151\143\145\000" \
+"\133\055\061\101\141\103\170\144\114\110\122\106\160\154\151\156" \
+"\163\145\150\162\123\130\166\143\164\165\135\040\133\055\167\040" \
+"\127\111\104\124\110\135\040\133\106\111\114\105\135\056\056\056" \
+"\012\012\114\151\163\164\040\144\151\162\145\143\164\157\162\171" \
+"\040\143\157\156\164\145\156\164\163\012\012\011\055\061\011\117" \
+"\156\145\040\143\157\154\165\155\156\040\157\165\164\160\165\164" \
+"\012\011\055\141\011\111\156\143\154\165\144\145\040\145\156\164" \
+"\162\151\145\163\040\167\150\151\143\150\040\163\164\141\162\164" \
+"\040\167\151\164\150\040\056\012\011\055\101\011\114\151\153\145" \
+"\040\055\141\054\040\142\165\164\040\145\170\143\154\165\144\145" \
+"\040\056\040\141\156\144\040\056\056\012\011\055\103\011\114\151" \
+"\163\164\040\142\171\040\143\157\154\165\155\156\163\012\011\055" \
+"\170\011\114\151\163\164\040\142\171\040\154\151\156\145\163\012" \
+"\011\055\144\011\114\151\163\164\040\144\151\162\145\143\164\157" \
+"\162\171\040\145\156\164\162\151\145\163\040\151\156\163\164\145" \
+"\141\144\040\157\146\040\143\157\156\164\145\156\164\163\012\011" \
+"\055\114\011\106\157\154\154\157\167\040\163\171\155\154\151\156" \
+"\153\163\012\011\055\110\011\106\157\154\154\157\167\040\163\171" \
+"\155\154\151\156\153\163\040\157\156\040\143\157\155\155\141\156" \
+"\144\040\154\151\156\145\012\011\055\122\011\122\145\143\165\162" \
+"\163\145\012\011\055\160\011\101\160\160\145\156\144\040\057\040" \
+"\164\157\040\144\151\162\040\145\156\164\162\151\145\163\012\011" \
+"\055\106\011\101\160\160\145\156\144\040\151\156\144\151\143\141" \
+"\164\157\162\040\050\157\156\145\040\157\146\040\052\057\075\100" \
+"\174\051\040\164\157\040\145\156\164\162\151\145\163\012\011\055" \
+"\154\011\114\157\156\147\040\154\151\163\164\151\156\147\040\146" \
+"\157\162\155\141\164\012\011\055\151\011\114\151\163\164\040\151" \
+"\156\157\144\145\040\156\165\155\142\145\162\163\012\011\055\156" \
+"\011\114\151\163\164\040\156\165\155\145\162\151\143\040\125\111" \
+"\104\163\040\141\156\144\040\107\111\104\163\040\151\156\163\164" \
+"\145\141\144\040\157\146\040\156\141\155\145\163\012\011\055\163" \
+"\011\114\151\163\164\040\141\154\154\157\143\141\164\145\144\040" \
+"\142\154\157\143\153\163\012\011\055\145\011\114\151\163\164\040" \
+"\146\165\154\154\040\144\141\164\145\040\141\156\144\040\164\151" \
+"\155\145\012\011\055\150\011\114\151\163\164\040\163\151\172\145" \
+"\163\040\151\156\040\150\165\155\141\156\040\162\145\141\144\141" \
+"\142\154\145\040\146\157\162\155\141\164\040\050\061\113\040\062" \
+"\064\063\115\040\062\107\051\012\011\055\162\011\123\157\162\164" \
+"\040\151\156\040\162\145\166\145\162\163\145\040\157\162\144\145" \
+"\162\012\011\055\123\011\123\157\162\164\040\142\171\040\163\151" \
+"\172\145\012\011\055\130\011\123\157\162\164\040\142\171\040\145" \
+"\170\164\145\156\163\151\157\156\012\011\055\166\011\123\157\162" \
+"\164\040\142\171\040\166\145\162\163\151\157\156\012\011\055\143" \
+"\011\127\151\164\150\040\055\154\072\040\163\157\162\164\040\142" \
+"\171\040\143\164\151\155\145\012\011\055\164\011\127\151\164\150" \
+"\040\055\154\072\040\163\157\162\164\040\142\171\040\155\164\151" \
+"\155\145\012\011\055\165\011\127\151\164\150\040\055\154\072\040" \
+"\163\157\162\164\040\142\171\040\141\164\151\155\145\012\011\055" \
+"\167\040\116\011\101\163\163\165\155\145\040\164\150\145\040\164" \
+"\145\162\155\151\156\141\154\040\151\163\040\116\040\143\157\154" \
+"\165\155\156\163\040\167\151\144\145\012\011\055\055\143\157\154" \
+"\157\162\133\075\173\141\154\167\141\171\163\054\156\145\166\145" \
+"\162\054\141\165\164\157\175\135\011\103\157\156\164\162\157\154" \
+"\040\143\157\154\157\162\151\156\147\000\133\055\122\141\144\154" \
+"\166\135\040\133\106\111\114\105\135\056\056\056\012\012\114\151" \
+"\163\164\040\146\151\154\145\040\141\164\164\162\151\142\165\164" \
+"\145\163\040\157\156\040\141\156\040\145\170\164\062\040\146\163" \
+"\012\012\011\055\122\011\122\145\143\165\162\163\145\012\011\055" \
+"\141\011\104\157\156\047\164\040\150\151\144\145\040\145\156\164" \
+"\162\151\145\163\040\163\164\141\162\164\151\156\147\040\167\151" \
+"\164\150\040\056\012\011\055\144\011\114\151\163\164\040\144\151" \
+"\162\145\143\164\157\162\171\040\145\156\164\162\151\145\163\040" \
+"\151\156\163\164\145\141\144\040\157\146\040\143\157\156\164\145" \
+"\156\164\163\012\011\055\154\011\114\151\163\164\040\154\157\156" \
+"\147\040\146\154\141\147\040\156\141\155\145\163\012\011\055\166" \
+"\011\114\151\163\164\040\164\150\145\040\146\151\154\145\047\163" \
+"\040\166\145\162\163\151\157\156\057\147\145\156\145\162\141\164" \
+"\151\157\156\040\156\165\155\142\145\162\000\012\012\114\151\163" \
+"\164\040\164\150\145\040\143\165\162\162\145\156\164\154\171\040" \
+"\154\157\141\144\145\144\040\153\145\162\156\145\154\040\155\157" \
+"\144\165\154\145\163\000\012\012\123\150\157\167\040\141\154\154" \
+"\040\157\160\145\156\040\146\151\154\145\163\000\010\000\133\106" \
+"\111\114\105\135\056\056\056\012\012\104\145\143\157\155\160\162" \
+"\145\163\163\040\164\157\040\163\164\144\157\165\164\000\055\144" \
+"\040\133\055\143\146\135\040\133\106\111\114\105\135\056\056\056" \
+"\012\012\104\145\143\157\155\160\162\145\163\163\040\106\111\114" \
+"\105\040\050\157\162\040\163\164\144\151\156\051\012\012\011\055" \
+"\144\011\104\145\143\157\155\160\162\145\163\163\012\011\055\143" \
+"\011\127\162\151\164\145\040\164\157\040\163\164\144\157\165\164" \
+"\012\011\055\146\011\106\157\162\143\145\000\133\055\143\146\166" \
+"\144\061\062\063\064\065\066\067\070\071\103\106\135\040\133\106" \
+"\111\114\105\135\056\056\056\012\012\011\055\061\056\056\071\011" \
+"\103\157\155\160\162\145\163\163\151\157\156\040\154\145\166\145" \
+"\154\012\011\055\144\011\104\145\143\157\155\160\162\145\163\163" \
+"\012\011\055\143\011\127\162\151\164\145\040\164\157\040\163\164" \
+"\144\157\165\164\012\011\055\146\011\106\157\162\143\145\012\011" \
+"\055\166\011\126\145\162\142\157\163\145\012\011\055\106\011\104" \
+"\157\156\047\164\040\163\164\157\162\145\040\157\162\040\166\145" \
+"\162\151\146\171\040\143\150\145\143\153\163\165\155\012\011\055" \
+"\103\011\101\154\163\157\040\167\162\151\164\145\040\143\150\145" \
+"\143\153\163\165\155\040\157\146\040\143\157\155\160\162\145\163" \
+"\163\145\144\040\142\154\157\143\153\000\133\055\166\103\106\135" \
+"\040\133\106\111\114\105\135\056\056\056\012\012\011\055\166\011" \
+"\126\145\162\142\157\163\145\012\011\055\106\011\104\157\156\047" \
+"\164\040\163\164\157\162\145\040\157\162\040\166\145\162\151\146" \
+"\171\040\143\150\145\143\153\163\165\155\000\133\055\141\167\135" \
+"\040\133\115\101\116\120\101\107\105\135\056\056\056\012\012\106" \
+"\157\162\155\141\164\040\141\156\144\040\144\151\163\160\154\141" \
+"\171\040\155\141\156\165\141\154\040\160\141\147\145\012\012\011" \
+"\055\141\011\104\151\163\160\154\141\171\040\141\154\154\040\160" \
+"\141\147\145\163\012\011\055\167\011\123\150\157\167\040\160\141" \
+"\147\145\040\154\157\143\141\164\151\157\156\163\000\133\055\143" \
+"\133\163\167\135\135\040\133\106\111\114\105\135\056\056\056\012" \
+"\012\120\162\151\156\164\040\157\162\040\143\150\145\143\153\040" \
+"\115\104\065\040\143\150\145\143\153\163\165\155\163\012\012\011" \
+"\055\143\011\103\150\145\143\153\040\163\165\155\163\040\141\147" \
+"\141\151\156\163\164\040\154\151\163\164\040\151\156\040\106\111" \
+"\114\105\163\012\011\055\163\011\104\157\156\047\164\040\157\165" \
+"\164\160\165\164\040\141\156\171\164\150\151\156\147\054\040\163" \
+"\164\141\164\165\163\040\143\157\144\145\040\163\150\157\167\163" \
+"\040\163\165\143\143\145\163\163\012\011\055\167\011\127\141\162" \
+"\156\040\141\142\157\165\164\040\151\155\160\162\157\160\145\162" \
+"\154\171\040\146\157\162\155\141\164\164\145\144\040\143\150\145" \
+"\143\153\163\165\155\040\154\151\156\145\163\000\133\171\174\156" \
+"\135\012\012\103\157\156\164\162\157\154\040\167\162\151\164\145" \
+"\040\141\143\143\145\163\163\040\164\157\040\171\157\165\162\040" \
+"\164\145\162\155\151\156\141\154\012\011\171\011\101\154\154\157" \
+"\167\040\167\162\151\164\145\040\141\143\143\145\163\163\040\164" \
+"\157\040\171\157\165\162\040\164\145\162\155\151\156\141\154\012" \
+"\011\156\011\104\151\163\141\154\154\157\167\040\167\162\151\164" \
+"\145\040\141\143\143\145\163\163\040\164\157\040\171\157\165\162" \
+"\040\164\145\162\155\151\156\141\154\000\133\117\120\124\111\117" \
+"\116\123\135\040\104\111\122\105\103\124\117\122\131\056\056\056" \
+"\012\012\103\162\145\141\164\145\040\104\111\122\105\103\124\117" \
+"\122\131\012\012\011\055\155\040\115\117\104\105\011\115\157\144" \
+"\145\012\011\055\160\011\116\157\040\145\162\162\157\162\040\151" \
+"\146\040\145\170\151\163\164\163\073\040\155\141\153\145\040\160" \
+"\141\162\145\156\164\040\144\151\162\145\143\164\157\162\151\145" \
+"\163\040\141\163\040\156\145\145\144\145\144\000\133\055\166\135" \
+"\040\133\055\156\040\114\101\102\105\114\135\040\102\114\117\103" \
+"\113\104\105\126\040\133\113\102\131\124\105\123\135\012\012\115" \
+"\141\153\145\040\141\040\106\101\124\063\062\040\146\151\154\145" \
+"\163\171\163\164\145\155\012\012\011\055\166\011\126\145\162\142" \
+"\157\163\145\012\011\055\156\040\114\102\114\011\126\157\154\165" \
+"\155\145\040\154\141\142\145\154\000\133\055\106\156\135\040\133" \
+"\055\142\040\102\114\113\137\123\111\132\105\135\040\133\055\151" \
+"\040\111\116\117\104\105\137\122\101\124\111\117\135\040\133\055" \
+"\111\040\111\116\117\104\105\137\123\111\132\105\135\040\133\055" \
+"\155\040\122\105\123\105\122\126\105\104\137\120\105\122\103\105" \
+"\116\124\135\040\133\055\114\040\114\101\102\105\114\135\040\102" \
+"\114\117\103\113\104\105\126\040\133\113\102\131\124\105\123\135" \
+"\012\012\011\055\142\040\102\114\113\137\123\111\132\105\011\102" \
+"\154\157\143\153\040\163\151\172\145\054\040\142\171\164\145\163" \
+"\012\011\055\106\011\011\106\157\162\143\145\012\011\055\151\040" \
+"\122\101\124\111\117\011\115\141\170\040\156\165\155\142\145\162" \
+"\040\157\146\040\146\151\154\145\163\040\151\163\040\146\151\154" \
+"\145\163\171\163\164\145\155\137\163\151\172\145\040\057\040\122" \
+"\101\124\111\117\012\011\055\111\040\102\131\124\105\123\011\111" \
+"\156\157\144\145\040\163\151\172\145\040\050\155\151\156\040\061" \
+"\062\070\051\012\011\055\114\040\114\102\114\011\011\126\157\154" \
+"\165\155\145\040\154\141\142\145\154\012\011\055\155\040\120\105" \
+"\122\103\105\116\124\011\120\145\162\143\145\156\164\040\157\146" \
+"\040\142\154\157\143\153\163\040\164\157\040\162\145\163\145\162" \
+"\166\145\040\146\157\162\040\141\144\155\151\156\012\011\055\156" \
+"\011\011\104\162\171\040\162\165\156\000\133\055\155\040\115\117" \
+"\104\105\135\040\116\101\115\105\012\012\103\162\145\141\164\145" \
+"\040\156\141\155\145\144\040\160\151\160\145\012\012\011\055\155" \
+"\040\115\117\104\105\011\115\157\144\145\040\050\144\145\146\141" \
+"\165\154\164\040\141\075\162\167\051\000\133\055\106\156\135\040" \
+"\133\055\142\040\102\114\113\137\123\111\132\105\135\040\133\055" \
+"\151\040\111\116\117\104\105\137\122\101\124\111\117\135\040\133" \
+"\055\111\040\111\116\117\104\105\137\123\111\132\105\135\040\133" \
+"\055\155\040\122\105\123\105\122\126\105\104\137\120\105\122\103" \
+"\105\116\124\135\040\133\055\114\040\114\101\102\105\114\135\040" \
+"\102\114\117\103\113\104\105\126\040\133\113\102\131\124\105\123" \
+"\135\012\012\011\055\142\040\102\114\113\137\123\111\132\105\011" \
+"\102\154\157\143\153\040\163\151\172\145\054\040\142\171\164\145" \
+"\163\012\011\055\106\011\011\106\157\162\143\145\012\011\055\151" \
+"\040\122\101\124\111\117\011\115\141\170\040\156\165\155\142\145" \
+"\162\040\157\146\040\146\151\154\145\163\040\151\163\040\146\151" \
+"\154\145\163\171\163\164\145\155\137\163\151\172\145\040\057\040" \
+"\122\101\124\111\117\012\011\055\111\040\102\131\124\105\123\011" \
+"\111\156\157\144\145\040\163\151\172\145\040\050\155\151\156\040" \
+"\061\062\070\051\012\011\055\114\040\114\102\114\011\011\126\157" \
+"\154\165\155\145\040\154\141\142\145\154\012\011\055\155\040\120" \
+"\105\122\103\105\116\124\011\120\145\162\143\145\156\164\040\157" \
+"\146\040\142\154\157\143\153\163\040\164\157\040\162\145\163\145" \
+"\162\166\145\040\146\157\162\040\141\144\155\151\156\012\011\055" \
+"\156\011\011\104\162\171\040\162\165\156\000\133\055\166\135\040" \
+"\133\055\156\040\114\101\102\105\114\135\040\102\114\117\103\113" \
+"\104\105\126\040\133\113\102\131\124\105\123\135\012\012\115\141" \
+"\153\145\040\141\040\106\101\124\063\062\040\146\151\154\145\163" \
+"\171\163\164\145\155\012\012\011\055\166\011\126\145\162\142\157" \
+"\163\145\012\011\055\156\040\114\102\114\011\126\157\154\165\155" \
+"\145\040\154\141\142\145\154\000\133\055\155\040\115\117\104\105" \
+"\135\040\116\101\115\105\040\124\131\120\105\040\115\101\112\117" \
+"\122\040\115\111\116\117\122\012\012\103\162\145\141\164\145\040" \
+"\141\040\163\160\145\143\151\141\154\040\146\151\154\145\040\050" \
+"\142\154\157\143\153\054\040\143\150\141\162\141\143\164\145\162" \
+"\054\040\157\162\040\160\151\160\145\051\012\012\011\055\155\040" \
+"\115\117\104\105\011\103\162\145\141\164\151\157\156\040\155\157" \
+"\144\145\040\050\144\145\146\141\165\154\164\040\141\075\162\167" \
+"\051\012\124\131\120\105\072\012\011\142\011\102\154\157\143\153" \
+"\040\144\145\166\151\143\145\012\011\143\040\157\162\040\165\011" \
+"\103\150\141\162\141\143\164\145\162\040\144\145\166\151\143\145" \
+"\012\011\160\011\116\141\155\145\144\040\160\151\160\145\040\050" \
+"\115\101\112\117\122\040\141\156\144\040\115\111\116\117\122\040" \
+"\141\162\145\040\151\147\156\157\162\145\144\051\000\133\055\114" \
+"\040\114\102\114\135\040\102\114\117\103\113\104\105\126\040\133" \
+"\113\102\131\124\105\123\135\012\012\120\162\145\160\141\162\145" \
+"\040\102\114\117\103\113\104\105\126\040\164\157\040\142\145\040" \
+"\165\163\145\144\040\141\163\040\163\167\141\160\040\160\141\162" \
+"\164\151\164\151\157\156\012\012\011\055\114\040\114\102\114\011" \
+"\114\141\142\145\154\000\133\055\144\164\135\040\133\055\160\040" \
+"\104\111\122\135\040\133\124\105\115\120\114\101\124\105\135\012" \
+"\012\103\162\145\141\164\145\040\141\040\164\145\155\160\157\162" \
+"\141\162\171\040\146\151\154\145\040\167\151\164\150\040\156\141" \
+"\155\145\040\142\141\163\145\144\040\157\156\040\124\105\115\120" \
+"\114\101\124\105\040\141\156\144\040\160\162\151\156\164\040\151" \
+"\164\163\040\156\141\155\145\056\012\124\105\115\120\114\101\124" \
+"\105\040\155\165\163\164\040\145\156\144\040\167\151\164\150\040" \
+"\130\130\130\130\130\130\040\050\145\056\147\056\040\133\057\144" \
+"\151\162\057\135\156\141\155\145\130\130\130\130\130\130\051\056" \
+"\012\127\151\164\150\157\165\164\040\124\105\115\120\114\101\124" \
+"\105\054\040\055\164\040\164\155\160\056\130\130\130\130\130\130" \
+"\040\151\163\040\141\163\163\165\155\145\144\056\012\012\011\055" \
+"\144\011\115\141\153\145\040\144\151\162\145\143\164\157\162\171" \
+"\054\040\156\157\164\040\146\151\154\145\012\011\055\161\011\106" \
+"\141\151\154\040\163\151\154\145\156\164\154\171\040\157\156\040" \
+"\145\162\162\157\162\163\012\011\055\164\011\120\162\145\160\145" \
+"\156\144\040\142\141\163\145\040\144\151\162\145\143\164\157\162" \
+"\171\040\156\141\155\145\040\164\157\040\124\105\115\120\114\101" \
+"\124\105\012\011\055\160\040\104\111\122\011\125\163\145\040\104" \
+"\111\122\040\141\163\040\141\040\142\141\163\145\040\144\151\162" \
+"\145\143\164\157\162\171\040\050\151\155\160\154\151\145\163\040" \
+"\055\164\051\012\011\055\165\011\104\157\040\156\157\164\040\143" \
+"\162\145\141\164\145\040\141\156\171\164\150\151\156\147\073\040" \
+"\160\162\151\156\164\040\141\040\156\141\155\145\012\012\102\141" \
+"\163\145\040\144\151\162\145\143\164\157\162\171\040\151\163\072" \
+"\040\055\160\040\104\111\122\054\040\145\154\163\145\040\044\124" \
+"\115\120\104\111\122\054\040\145\154\163\145\040\057\144\141\164" \
+"\141\057\154\157\143\141\154\057\164\155\160\000\133\055\141\144" \
+"\154\160\060\135\040\133\055\106\040\153\145\171\167\157\162\144" \
+"\135\040\115\117\104\125\114\105\012\012\011\055\141\011\011\123" \
+"\150\157\162\164\143\165\164\040\146\157\162\040\047\055\106\040" \
+"\141\165\164\150\157\162\047\012\011\055\144\011\011\123\150\157" \
+"\162\164\143\165\164\040\146\157\162\040\047\055\106\040\144\145" \
+"\163\143\162\151\160\164\151\157\156\047\012\011\055\154\011\011" \
+"\123\150\157\162\164\143\165\164\040\146\157\162\040\047\055\106" \
+"\040\154\151\143\145\156\163\145\047\012\011\055\160\011\011\123" \
+"\150\157\162\164\143\165\164\040\146\157\162\040\047\055\106\040" \
+"\160\141\162\155\047\012\011\055\106\040\153\145\171\167\157\162" \
+"\144\011\113\145\171\167\157\162\144\040\164\157\040\154\157\157" \
+"\153\040\146\157\162\012\011\055\060\011\011\123\145\160\141\162" \
+"\141\164\145\040\157\165\164\160\165\164\040\167\151\164\150\040" \
+"\116\125\114\163\000\133\055\161\146\167\162\163\166\135\040\115" \
+"\117\104\125\114\105\040\133\163\171\155\142\157\154\075\166\141" \
+"\154\165\145\135\056\056\056\012\012\011\055\162\011\122\145\155" \
+"\157\166\145\040\115\117\104\125\114\105\040\050\163\164\141\143" \
+"\153\163\051\040\157\162\040\144\157\040\141\165\164\157\143\154" \
+"\145\141\156\012\011\055\161\011\121\165\151\145\164\012\011\055" \
+"\166\011\126\145\162\142\157\163\145\012\011\055\146\011\106\157" \
+"\162\143\145\012\011\055\167\011\127\141\151\164\040\146\157\162" \
+"\040\165\156\154\157\141\144\012\011\055\163\011\122\145\160\157" \
+"\162\164\040\166\151\141\040\163\171\163\154\157\147\040\151\156" \
+"\163\164\145\141\144\040\157\146\040\163\164\144\145\162\162\000" \
+"\133\106\111\114\105\135\056\056\056\012\012\126\151\145\167\040" \
+"\106\111\114\105\040\050\157\162\040\163\164\144\151\156\051\040" \
+"\157\156\145\040\163\143\162\145\145\156\146\165\154\040\141\164" \
+"\040\141\040\164\151\155\145\000\133\117\120\124\111\117\116\123" \
+"\135\040\133\055\157\040\117\120\124\123\135\040\104\105\126\111" \
+"\103\105\040\116\117\104\105\012\012\115\157\165\156\164\040\141" \
+"\040\146\151\154\145\163\171\163\164\145\155\056\040\106\151\154" \
+"\145\163\171\163\164\145\155\040\141\165\164\157\144\145\164\145" \
+"\143\164\151\157\156\040\162\145\161\165\151\162\145\163\040\057" \
+"\160\162\157\143\056\012\012\011\055\141\011\011\115\157\165\156" \
+"\164\040\141\154\154\040\146\151\154\145\163\171\163\164\145\155" \
+"\163\040\151\156\040\146\163\164\141\142\012\011\055\146\011\011" \
+"\104\162\171\040\162\165\156\012\011\055\166\011\011\126\145\162" \
+"\142\157\163\145\012\011\055\162\011\011\122\145\141\144\055\157" \
+"\156\154\171\040\155\157\165\156\164\012\011\055\167\011\011\122" \
+"\145\141\144\055\167\162\151\164\145\040\155\157\165\156\164\040" \
+"\050\144\145\146\141\165\154\164\051\012\011\055\164\040\106\123" \
+"\124\131\120\105\133\054\056\056\056\135\011\106\151\154\145\163" \
+"\171\163\164\145\155\040\164\171\160\145\050\163\051\012\011\055" \
+"\117\040\117\120\124\011\011\115\157\165\156\164\040\157\156\154" \
+"\171\040\146\151\154\145\163\171\163\164\145\155\163\040\167\151" \
+"\164\150\040\157\160\164\151\157\156\040\117\120\124\040\050\055" \
+"\141\040\157\156\154\171\051\012\055\157\040\117\120\124\072\012" \
+"\011\154\157\157\160\011\011\111\147\156\157\162\145\144\040\050" \
+"\154\157\157\160\040\144\145\166\151\143\145\163\040\141\162\145" \
+"\040\141\165\164\157\144\145\164\145\143\164\145\144\051\012\011" \
+"\133\141\135\163\171\156\143\011\011\127\162\151\164\145\163\040" \
+"\141\162\145\040\133\141\135\163\171\156\143\150\162\157\156\157" \
+"\165\163\012\011\133\156\157\135\141\164\151\155\145\011\104\151" \
+"\163\141\142\154\145\057\145\156\141\142\154\145\040\165\160\144" \
+"\141\164\145\163\040\164\157\040\151\156\157\144\145\040\141\143" \
+"\143\145\163\163\040\164\151\155\145\163\012\011\133\156\157\135" \
+"\144\151\162\141\164\151\155\145\011\104\151\163\141\142\154\145" \
+"\057\145\156\141\142\154\145\040\141\164\151\155\145\040\165\160" \
+"\144\141\164\145\163\040\164\157\040\144\151\162\145\143\164\157" \
+"\162\151\145\163\012\011\133\156\157\135\162\145\154\141\164\151" \
+"\155\145\011\104\151\163\141\142\154\145\057\145\156\141\142\154" \
+"\145\040\141\164\151\155\145\040\165\160\144\141\164\145\163\040" \
+"\162\145\154\141\164\151\166\145\040\164\157\040\155\157\144\151" \
+"\146\151\143\141\164\151\157\156\040\164\151\155\145\012\011\133" \
+"\156\157\135\144\145\166\011\011\050\104\151\163\051\141\154\154" \
+"\157\167\040\165\163\145\040\157\146\040\163\160\145\143\151\141" \
+"\154\040\144\145\166\151\143\145\040\146\151\154\145\163\012\011" \
+"\133\156\157\135\145\170\145\143\011\050\104\151\163\051\141\154" \
+"\154\157\167\040\165\163\145\040\157\146\040\145\170\145\143\165" \
+"\164\141\142\154\145\040\146\151\154\145\163\012\011\133\156\157" \
+"\135\163\165\151\144\011\050\104\151\163\051\141\154\154\157\167" \
+"\040\163\145\164\055\165\163\145\162\055\151\144\055\162\157\157" \
+"\164\040\160\162\157\147\162\141\155\163\012\011\133\162\135\163" \
+"\150\141\162\145\144\011\103\157\156\166\145\162\164\040\133\162" \
+"\145\143\165\162\163\151\166\145\154\171\135\040\164\157\040\141" \
+"\040\163\150\141\162\145\144\040\163\165\142\164\162\145\145\012" \
+"\011\133\162\135\163\154\141\166\145\011\103\157\156\166\145\162" \
+"\164\040\133\162\145\143\165\162\163\151\166\145\154\171\135\040" \
+"\164\157\040\141\040\163\154\141\166\145\040\163\165\142\164\162" \
+"\145\145\012\011\133\162\135\160\162\151\166\141\164\145\011\103" \
+"\157\156\166\145\162\164\040\133\162\145\143\165\162\163\151\166" \
+"\145\154\171\135\040\164\157\040\141\040\160\162\151\166\141\164" \
+"\145\040\163\165\142\164\162\145\145\012\011\133\165\156\135\142" \
+"\151\156\144\141\142\154\145\011\115\141\153\145\040\155\157\165" \
+"\156\164\040\160\157\151\156\164\040\133\165\156\135\141\142\154" \
+"\145\040\164\157\040\142\145\040\142\151\156\144\040\155\157\165" \
+"\156\164\145\144\012\011\133\162\135\142\151\156\144\011\011\102" \
+"\151\156\144\040\141\040\146\151\154\145\040\157\162\040\144\151" \
+"\162\145\143\164\157\162\171\040\133\162\145\143\165\162\163\151" \
+"\166\145\154\171\135\040\164\157\040\141\156\157\164\150\145\162" \
+"\040\154\157\143\141\164\151\157\156\012\011\155\157\166\145\011" \
+"\011\122\145\154\157\143\141\164\145\040\141\156\040\145\170\151" \
+"\163\164\151\156\147\040\155\157\165\156\164\040\160\157\151\156" \
+"\164\012\011\162\145\155\157\165\156\164\011\011\122\145\155\157" \
+"\165\156\164\040\141\040\155\157\165\156\164\145\144\040\146\151" \
+"\154\145\163\171\163\164\145\155\054\040\143\150\141\156\147\151" \
+"\156\147\040\146\154\141\147\163\012\011\162\157\057\162\167\011" \
+"\011\123\141\155\145\040\141\163\040\055\162\057\055\167\012\012" \
+"\124\150\145\162\145\040\141\162\145\040\146\151\154\145\163\171" \
+"\163\164\145\155\055\163\160\145\143\151\146\151\143\040\055\157" \
+"\040\146\154\141\147\163\056\000\133\055\161\135\040\074\133\055" \
+"\144\156\135\040\104\111\122\040\174\040\055\170\040\104\105\126" \
+"\111\103\105\076\012\012\103\150\145\143\153\040\151\146\040\164" \
+"\150\145\040\144\151\162\145\143\164\157\162\171\040\151\163\040" \
+"\141\040\155\157\165\156\164\160\157\151\156\164\012\012\011\055" \
+"\161\011\121\165\151\145\164\012\011\055\144\011\120\162\151\156" \
+"\164\040\155\141\152\157\162\057\155\151\156\157\162\040\144\145" \
+"\166\151\143\145\040\156\165\155\142\145\162\040\157\146\040\164" \
+"\150\145\040\146\151\154\145\163\171\163\164\145\155\012\011\055" \
+"\156\011\120\162\151\156\164\040\144\145\166\151\143\145\040\156" \
+"\141\155\145\040\157\146\040\164\150\145\040\146\151\154\145\163" \
+"\171\163\164\145\155\012\011\055\170\011\120\162\151\156\164\040" \
+"\155\141\152\157\162\057\155\151\156\157\162\040\144\145\166\151" \
+"\143\145\040\156\165\155\142\145\162\040\157\146\040\164\150\145" \
+"\040\142\154\157\143\153\144\145\166\151\143\145\000\133\055\101" \
+"\135\040\133\055\111\040\123\125\115\174\103\120\125\174\101\114" \
+"\114\174\123\103\120\125\135\040\133\055\165\135\040\133\055\120" \
+"\040\156\165\155\174\101\114\114\135\040\133\111\116\124\105\122" \
+"\126\101\114\040\133\103\117\125\116\124\135\135\012\012\120\145" \
+"\162\055\160\162\157\143\145\163\163\157\162\040\163\164\141\164" \
+"\151\163\164\151\143\163\012\012\011\055\101\011\011\011\123\141" \
+"\155\145\040\141\163\040\055\111\040\101\114\114\040\055\165\040" \
+"\055\120\040\101\114\114\012\011\055\111\040\123\125\115\174\103" \
+"\120\125\174\101\114\114\174\123\103\120\125\011\122\145\160\157" \
+"\162\164\040\151\156\164\145\162\162\165\160\164\040\163\164\141" \
+"\164\151\163\164\151\143\163\012\011\055\120\040\156\165\155\174" \
+"\101\114\114\011\011\120\162\157\143\145\163\163\157\162\040\164" \
+"\157\040\155\157\156\151\164\157\162\012\011\055\165\011\011\011" \
+"\122\145\160\157\162\164\040\103\120\125\040\165\164\151\154\151" \
+"\172\141\164\151\157\156\000\133\055\146\151\156\135\040\123\117" \
+"\125\122\103\105\040\104\105\123\124\012\157\162\072\040\155\166" \
+"\040\133\055\146\151\156\135\040\123\117\125\122\103\105\056\056" \
+"\056\040\104\111\122\105\103\124\117\122\131\012\012\122\145\156" \
+"\141\155\145\040\123\117\125\122\103\105\040\164\157\040\104\105" \
+"\123\124\054\040\157\162\040\155\157\166\145\040\123\117\125\122" \
+"\103\105\050\163\051\040\164\157\040\104\111\122\105\103\124\117" \
+"\122\131\012\012\011\055\146\011\104\157\156\047\164\040\160\162" \
+"\157\155\160\164\040\142\145\146\157\162\145\040\157\166\145\162" \
+"\167\162\151\164\151\156\147\012\011\055\151\011\111\156\164\145" \
+"\162\141\143\164\151\166\145\054\040\160\162\157\155\160\164\040" \
+"\142\145\146\157\162\145\040\157\166\145\162\167\162\151\164\145" \
+"\012\011\055\156\011\104\157\156\047\164\040\157\166\145\162\167" \
+"\162\151\164\145\040\141\156\040\145\170\151\163\164\151\156\147" \
+"\040\146\151\154\145\000\133\055\157\135\040\133\055\142\135\040" \
+"\133\055\163\040\101\104\104\122\135\040\133\055\154\040\114\105" \
+"\116\135\040\133\055\146\040\106\111\114\105\135\040\115\124\104" \
+"\137\104\105\126\111\103\105\012\012\104\165\155\160\040\115\124" \
+"\104\137\104\105\126\111\103\105\012\012\011\055\157\011\104\165" \
+"\155\160\040\157\157\142\040\144\141\164\141\012\011\055\142\011" \
+"\117\155\151\164\040\142\141\144\040\142\154\157\143\153\040\146" \
+"\162\157\155\040\164\150\145\040\144\165\155\160\012\011\055\163" \
+"\040\101\104\104\122\011\123\164\141\162\164\040\141\144\144\162" \
+"\145\163\163\012\011\055\154\040\114\105\116\011\114\145\156\147" \
+"\164\150\012\011\055\146\040\106\111\114\105\011\104\165\155\160" \
+"\040\164\157\040\146\151\154\145\040\050\047\055\047\040\146\157" \
+"\162\040\163\164\144\157\165\164\051\000\133\055\160\135\040\133" \
+"\055\163\040\101\104\104\122\135\040\115\124\104\137\104\105\126" \
+"\111\103\105\040\133\106\111\114\105\135\012\012\127\162\151\164" \
+"\145\040\164\157\040\115\124\104\137\104\105\126\111\103\105\012" \
+"\012\011\055\160\011\120\141\144\040\164\157\040\160\141\147\145" \
+"\040\163\151\172\145\012\011\055\163\040\101\104\104\122\011\123" \
+"\164\141\162\164\040\141\144\144\162\145\163\163\000\110\117\123" \
+"\124\040\120\117\122\124\040\102\114\117\103\113\104\105\126\012" \
+"\012\103\157\156\156\145\143\164\040\164\157\040\110\117\123\124" \
+"\040\141\156\144\040\160\162\157\166\151\144\145\040\141\040\156" \
+"\145\164\167\157\162\153\040\142\154\157\143\153\040\144\145\166" \
+"\151\143\145\040\157\156\040\102\114\117\103\113\104\105\126\000" \
+"\133\055\151\116\135\040\133\055\167\116\135\040\133\055\154\135" \
+"\040\133\055\160\040\120\117\122\124\135\040\133\055\146\040\106" \
+"\111\114\105\174\111\120\101\104\104\122\040\120\117\122\124\135" \
+"\040\133\055\145\040\120\122\117\107\135\012\012\117\160\145\156" \
+"\040\141\040\160\151\160\145\040\164\157\040\111\120\072\120\117" \
+"\122\124\040\157\162\040\106\111\114\105\012\012\011\055\154\011" \
+"\114\151\163\164\145\156\040\155\157\144\145\054\040\146\157\162" \
+"\040\151\156\142\157\165\156\144\040\143\157\156\156\145\143\164" \
+"\163\012\011\011\050\165\163\145\040\055\154\154\040\167\151\164" \
+"\150\040\055\145\040\146\157\162\040\160\145\162\163\151\163\164" \
+"\145\156\164\040\163\145\162\166\145\162\051\012\011\055\160\040" \
+"\120\117\122\124\011\114\157\143\141\154\040\160\157\162\164\012" \
+"\011\055\167\040\123\105\103\011\103\157\156\156\145\143\164\040" \
+"\164\151\155\145\157\165\164\012\011\055\151\040\123\105\103\011" \
+"\104\145\154\141\171\040\151\156\164\145\162\166\141\154\040\146" \
+"\157\162\040\154\151\156\145\163\040\163\145\156\164\012\011\055" \
+"\146\040\106\111\114\105\011\125\163\145\040\146\151\154\145\040" \
+"\050\141\154\141\040\057\144\145\166\057\164\164\171\123\060\051" \
+"\040\151\156\163\164\145\141\144\040\157\146\040\156\145\164\167" \
+"\157\162\153\012\011\055\145\040\120\122\117\107\011\122\165\156" \
+"\040\120\122\117\107\040\141\146\164\145\162\040\143\157\156\156" \
+"\145\143\164\000\133\055\162\141\154\135\040\133\055\164\165\167" \
+"\170\135\040\133\055\145\156\127\160\135\012\012\104\151\163\160" \
+"\154\141\171\040\156\145\164\167\157\162\153\151\156\147\040\151" \
+"\156\146\157\162\155\141\164\151\157\156\012\012\011\055\162\011" \
+"\122\157\165\164\151\156\147\040\164\141\142\154\145\012\011\055" \
+"\141\011\101\154\154\040\163\157\143\153\145\164\163\012\011\055" \
+"\154\011\114\151\163\164\145\156\151\156\147\040\163\157\143\153" \
+"\145\164\163\012\011\011\105\154\163\145\072\040\143\157\156\156" \
+"\145\143\164\145\144\040\163\157\143\153\145\164\163\012\011\055" \
+"\164\011\124\103\120\040\163\157\143\153\145\164\163\012\011\055" \
+"\165\011\125\104\120\040\163\157\143\153\145\164\163\012\011\055" \
+"\167\011\122\141\167\040\163\157\143\153\145\164\163\012\011\055" \
+"\170\011\125\156\151\170\040\163\157\143\153\145\164\163\012\011" \
+"\011\105\154\163\145\072\040\141\154\154\040\163\157\143\153\145" \
+"\164\040\164\171\160\145\163\012\011\055\145\011\117\164\150\145" \
+"\162\057\155\157\162\145\040\151\156\146\157\162\155\141\164\151" \
+"\157\156\012\011\055\156\011\104\157\156\047\164\040\162\145\163" \
+"\157\154\166\145\040\156\141\155\145\163\012\011\055\127\011\127" \
+"\151\144\145\040\144\151\163\160\154\141\171\012\011\055\160\011" \
+"\123\150\157\167\040\120\111\104\057\160\162\157\147\162\141\155" \
+"\040\156\141\155\145\040\146\157\162\040\163\157\143\153\145\164" \
+"\163\000\133\055\156\040\101\104\112\125\123\124\135\040\133\120" \
+"\122\117\107\040\101\122\107\123\135\012\012\103\150\141\156\147" \
+"\145\040\163\143\150\145\144\165\154\151\156\147\040\160\162\151" \
+"\157\162\151\164\171\054\040\162\165\156\040\120\122\117\107\012" \
+"\012\011\055\156\040\101\104\112\125\123\124\011\101\144\152\165" \
+"\163\164\040\160\162\151\157\162\151\164\171\040\142\171\040\101" \
+"\104\112\125\123\124\000\120\122\117\107\040\101\122\107\123\012" \
+"\012\122\165\156\040\120\122\117\107\040\151\155\155\165\156\145" \
+"\040\164\157\040\150\141\156\147\165\160\163\054\040\167\151\164" \
+"\150\040\157\165\164\160\165\164\040\164\157\040\141\040\156\157" \
+"\156\055\164\164\171\000\133\110\117\123\124\135\040\133\123\105" \
+"\122\126\105\122\135\012\012\121\165\145\162\171\040\164\150\145" \
+"\040\156\141\155\145\163\145\162\166\145\162\040\146\157\162\040" \
+"\164\150\145\040\111\120\040\141\144\144\162\145\163\163\040\157" \
+"\146\040\164\150\145\040\147\151\166\145\156\040\110\117\123\124" \
+"\012\157\160\164\151\157\156\141\154\154\171\040\165\163\151\156" \
+"\147\040\141\040\163\160\145\143\151\146\151\145\144\040\104\116" \
+"\123\040\163\145\162\166\145\162\000\133\055\144\156\161\116\167" \
+"\135\040\133\055\123\040\120\122\117\107\135\040\133\055\160\040" \
+"\120\105\105\122\135\056\056\056\012\012\116\124\120\040\143\154" \
+"\151\145\156\164\057\163\145\162\166\145\162\012\012\011\055\144" \
+"\011\126\145\162\142\157\163\145\012\011\055\156\011\104\157\040" \
+"\156\157\164\040\144\141\145\155\157\156\151\172\145\012\011\055" \
+"\161\011\121\165\151\164\040\141\146\164\145\162\040\143\154\157" \
+"\143\153\040\151\163\040\163\145\164\012\011\055\116\011\122\165" \
+"\156\040\141\164\040\150\151\147\150\040\160\162\151\157\162\151" \
+"\164\171\012\011\055\167\011\104\157\040\156\157\164\040\163\145" \
+"\164\040\164\151\155\145\040\050\157\156\154\171\040\161\165\145" \
+"\162\171\040\160\145\145\162\163\051\054\040\151\155\160\154\151" \
+"\145\163\040\055\156\012\011\055\123\040\120\122\117\107\011\122" \
+"\165\156\040\120\122\117\107\040\141\146\164\145\162\040\163\164" \
+"\145\160\160\151\156\147\040\164\151\155\145\054\040\163\164\162" \
+"\141\164\165\155\040\143\150\141\156\147\145\054\040\141\156\144" \
+"\040\145\166\145\162\171\040\061\061\040\155\151\156\163\012\011" \
+"\055\160\040\120\105\105\122\011\117\142\164\141\151\156\040\164" \
+"\151\155\145\040\146\162\157\155\040\120\105\105\122\040\050\155" \
+"\141\171\040\142\145\040\162\145\160\145\141\164\145\144\051\000" \
+"\133\055\141\102\142\143\104\144\145\106\146\110\150\111\151\114" \
+"\154\117\157\166\130\170\135\040\133\106\111\114\105\135\012\012" \
+"\120\162\151\156\164\040\106\111\114\105\040\050\157\162\040\163" \
+"\164\144\151\156\051\040\165\156\141\155\142\151\147\165\157\165" \
+"\163\154\171\054\040\141\163\040\157\143\164\141\154\040\142\171" \
+"\164\145\163\040\142\171\040\144\145\146\141\165\154\164\000\133" \
+"\117\120\124\111\117\116\123\135\040\133\117\122\111\107\106\111" \
+"\114\105\040\133\120\101\124\103\110\106\111\114\105\135\135\012" \
+"\012\011\055\160\054\055\055\163\164\162\151\160\040\116\011\011" \
+"\123\164\162\151\160\040\116\040\154\145\141\144\151\156\147\040" \
+"\143\157\155\160\157\156\145\156\164\163\040\146\162\157\155\040" \
+"\146\151\154\145\040\156\141\155\145\163\012\011\055\151\054\055" \
+"\055\151\156\160\165\164\040\104\111\106\106\011\011\122\145\141" \
+"\144\040\104\111\106\106\040\151\156\163\164\145\141\144\040\157" \
+"\146\040\163\164\144\151\156\012\011\055\122\054\055\055\162\145" \
+"\166\145\162\163\145\011\011\122\145\166\145\162\163\145\040\160" \
+"\141\164\143\150\012\011\055\116\054\055\055\146\157\162\167\141" \
+"\162\144\011\011\111\147\156\157\162\145\040\141\154\162\145\141" \
+"\144\171\040\141\160\160\154\151\145\144\040\160\141\164\143\150" \
+"\145\163\012\011\055\105\054\055\055\162\145\155\157\166\145\055" \
+"\145\155\160\164\171\055\146\151\154\145\163\011\122\145\155\157" \
+"\166\145\040\157\165\164\160\165\164\040\146\151\154\145\163\040" \
+"\151\146\040\164\150\145\171\040\142\145\143\157\155\145\040\145" \
+"\155\160\164\171\000\133\055\146\154\156\157\166\170\135\040\133" \
+"\055\163\040\123\111\104\174\055\120\040\120\120\111\104\174\120" \
+"\101\124\124\105\122\116\135\012\012\104\151\163\160\154\141\171" \
+"\040\160\162\157\143\145\163\163\050\145\163\051\040\163\145\154" \
+"\145\143\164\145\144\040\142\171\040\162\145\147\145\170\040\120" \
+"\101\124\124\105\122\116\012\012\011\055\154\011\123\150\157\167" \
+"\040\143\157\155\155\141\156\144\040\156\141\155\145\040\164\157" \
+"\157\012\011\055\146\011\115\141\164\143\150\040\141\147\141\151" \
+"\156\163\164\040\145\156\164\151\162\145\040\143\157\155\155\141" \
+"\156\144\040\154\151\156\145\012\011\055\156\011\123\150\157\167" \
+"\040\164\150\145\040\156\145\167\145\163\164\040\160\162\157\143" \
+"\145\163\163\040\157\156\154\171\012\011\055\157\011\123\150\157" \
+"\167\040\164\150\145\040\157\154\144\145\163\164\040\160\162\157" \
+"\143\145\163\163\040\157\156\154\171\012\011\055\166\011\116\145" \
+"\147\141\164\145\040\164\150\145\040\155\141\164\143\150\012\011" \
+"\055\170\011\115\141\164\143\150\040\167\150\157\154\145\040\156" \
+"\141\155\145\040\050\156\157\164\040\163\165\142\163\164\162\151" \
+"\156\147\051\012\011\055\163\011\115\141\164\143\150\040\163\145" \
+"\163\163\151\157\156\040\111\104\040\050\060\040\146\157\162\040" \
+"\143\165\162\162\145\156\164\051\012\011\055\120\011\115\141\164" \
+"\143\150\040\160\141\162\145\156\164\040\160\162\157\143\145\163" \
+"\163\040\111\104\000\133\117\120\124\111\117\116\123\135\040\133" \
+"\116\101\115\105\135\056\056\056\012\012\114\151\163\164\040\120" \
+"\111\104\163\040\157\146\040\141\154\154\040\160\162\157\143\145" \
+"\163\163\145\163\040\167\151\164\150\040\156\141\155\145\163\040" \
+"\164\150\141\164\040\155\141\164\143\150\040\116\101\115\105\163" \
+"\012\012\011\055\163\011\123\150\157\167\040\157\156\154\171\040" \
+"\157\156\145\040\120\111\104\012\011\055\157\040\120\111\104\011" \
+"\117\155\151\164\040\147\151\166\145\156\040\160\151\144\012\011" \
+"\011\125\163\145\040\045\120\120\111\104\040\164\157\040\157\155" \
+"\151\164\040\160\151\144\040\157\146\040\160\151\144\157\146\047" \
+"\163\040\160\141\162\145\156\164\000\133\117\120\124\111\117\116" \
+"\123\135\040\110\117\123\124\012\012\123\145\156\144\040\111\103" \
+"\115\120\040\105\103\110\117\137\122\105\121\125\105\123\124\040" \
+"\160\141\143\153\145\164\163\040\164\157\040\156\145\164\167\157" \
+"\162\153\040\150\157\163\164\163\012\012\011\055\143\040\103\116" \
+"\124\011\011\123\145\156\144\040\157\156\154\171\040\103\116\124" \
+"\040\160\151\156\147\163\012\011\055\163\040\123\111\132\105\011" \
+"\011\123\145\156\144\040\123\111\132\105\040\144\141\164\141\040" \
+"\142\171\164\145\163\040\151\156\040\160\141\143\153\145\164\163" \
+"\040\050\144\145\146\141\165\154\164\072\065\066\051\012\011\055" \
+"\164\040\124\124\114\011\011\123\145\164\040\124\124\114\012\011" \
+"\055\111\040\111\106\101\103\105\057\111\120\011\125\163\145\040" \
+"\151\156\164\145\162\146\141\143\145\040\157\162\040\111\120\040" \
+"\141\144\144\162\145\163\163\040\141\163\040\163\157\165\162\143" \
+"\145\012\011\055\127\040\123\105\103\011\011\123\145\143\157\156" \
+"\144\163\040\164\157\040\167\141\151\164\040\146\157\162\040\164" \
+"\150\145\040\146\151\162\163\164\040\162\145\163\160\157\156\163" \
+"\145\040\050\144\145\146\141\165\154\164\072\061\060\051\012\011" \
+"\011\011\050\141\146\164\145\162\040\141\154\154\040\055\143\040" \
+"\103\116\124\040\160\141\143\153\145\164\163\040\141\162\145\040" \
+"\163\145\156\164\051\012\011\055\167\040\123\105\103\011\011\123" \
+"\145\143\157\156\144\163\040\165\156\164\151\154\040\160\151\156" \
+"\147\040\145\170\151\164\163\040\050\144\145\146\141\165\154\164" \
+"\072\151\156\146\151\156\151\164\145\051\012\011\011\011\050\143" \
+"\141\156\040\145\170\151\164\040\145\141\162\154\151\145\162\040" \
+"\167\151\164\150\040\055\143\040\103\116\124\051\012\011\055\161" \
+"\011\011\121\165\151\145\164\054\040\157\156\154\171\040\144\151" \
+"\163\160\154\141\171\163\040\157\165\164\160\165\164\040\141\164" \
+"\040\163\164\141\162\164\012\011\011\011\141\156\144\040\167\150" \
+"\145\156\040\146\151\156\151\163\150\145\144\000\010\000\133\055" \
+"\154\174\055\123\111\107\116\101\114\135\040\133\055\146\156\157" \
+"\166\170\135\040\133\055\163\040\123\111\104\174\055\120\040\120" \
+"\120\111\104\174\120\101\124\124\105\122\116\135\012\012\123\145" \
+"\156\144\040\141\040\163\151\147\156\141\154\040\164\157\040\160" \
+"\162\157\143\145\163\163\050\145\163\051\040\163\145\154\145\143" \
+"\164\145\144\040\142\171\040\162\145\147\145\170\040\120\101\124" \
+"\124\105\122\116\012\012\011\055\154\011\114\151\163\164\040\141" \
+"\154\154\040\163\151\147\156\141\154\163\012\011\055\146\011\115" \
+"\141\164\143\150\040\141\147\141\151\156\163\164\040\145\156\164" \
+"\151\162\145\040\143\157\155\155\141\156\144\040\154\151\156\145" \
+"\012\011\055\156\011\123\151\147\156\141\154\040\164\150\145\040" \
+"\156\145\167\145\163\164\040\160\162\157\143\145\163\163\040\157" \
+"\156\154\171\012\011\055\157\011\123\151\147\156\141\154\040\164" \
+"\150\145\040\157\154\144\145\163\164\040\160\162\157\143\145\163" \
+"\163\040\157\156\154\171\012\011\055\166\011\116\145\147\141\164" \
+"\145\040\164\150\145\040\155\141\164\143\150\012\011\055\170\011" \
+"\115\141\164\143\150\040\167\150\157\154\145\040\156\141\155\145" \
+"\040\050\156\157\164\040\163\165\142\163\164\162\151\156\147\051" \
+"\012\011\055\163\011\115\141\164\143\150\040\163\145\163\163\151" \
+"\157\156\040\111\104\040\050\060\040\146\157\162\040\143\165\162" \
+"\162\145\156\164\051\012\011\055\120\011\115\141\164\143\150\040" \
+"\160\141\162\145\156\164\040\160\162\157\143\145\163\163\040\111" \
+"\104\000\133\055\170\161\135\040\120\111\104\012\012\104\151\163" \
+"\160\154\141\171\040\144\145\164\141\151\154\145\144\040\160\162" \
+"\157\143\145\163\163\040\155\145\155\157\162\171\040\165\163\141" \
+"\147\145\012\012\011\055\170\011\123\150\157\167\040\144\145\164" \
+"\141\151\154\163\012\011\055\161\011\121\165\151\145\164\000\133" \
+"\055\144\040\104\105\114\101\131\135\040\133\055\156\135\040\133" \
+"\055\146\135\012\012\110\141\154\164\040\141\156\144\040\163\150" \
+"\165\164\040\157\146\146\040\160\157\167\145\162\012\012\011\055" \
+"\144\040\123\105\103\011\104\145\154\141\171\040\151\156\164\145" \
+"\162\166\141\154\012\011\055\156\011\104\157\040\156\157\164\040" \
+"\163\171\156\143\012\011\055\146\011\106\157\162\143\145\040\050" \
+"\144\157\156\047\164\040\147\157\040\164\150\162\157\165\147\150" \
+"\040\151\156\151\164\051\000\133\126\101\122\111\101\102\114\105" \
+"\135\056\056\056\012\012\120\162\151\156\164\040\145\156\166\151" \
+"\162\157\156\155\145\156\164\040\126\101\122\111\101\102\114\105" \
+"\163\056\012\111\146\040\156\157\040\126\101\122\111\101\102\114" \
+"\105\040\163\160\145\143\151\146\151\145\144\054\040\160\162\151" \
+"\156\164\040\141\154\154\056\000\106\117\122\115\101\124\040\133" \
+"\101\122\107\135\056\056\056\012\012\106\157\162\155\141\164\040" \
+"\141\156\144\040\160\162\151\156\164\040\101\122\107\050\163\051" \
+"\040\141\143\143\157\162\144\151\156\147\040\164\157\040\106\117" \
+"\122\115\101\124\040\050\141\055\154\141\040\103\040\160\162\151" \
+"\156\164\146\051\000\012\012\123\150\157\167\040\154\151\163\164" \
+"\040\157\146\040\160\162\157\143\145\163\163\145\163\012\012\011" \
+"\167\011\127\151\144\145\040\157\165\164\160\165\164\012\011\154" \
+"\011\114\157\156\147\040\157\165\164\160\165\164\012\011\124\011" \
+"\123\150\157\167\040\164\150\162\145\141\144\163\000\133\055\160" \
+"\135\040\133\120\111\104\174\125\123\105\122\135\012\012\104\151" \
+"\163\160\154\141\171\040\160\162\157\143\145\163\163\040\164\162" \
+"\145\145\054\040\157\160\164\151\157\156\141\154\154\171\040\163" \
+"\164\141\162\164\040\146\162\157\155\040\125\123\105\122\040\157" \
+"\162\040\120\111\104\012\012\011\055\160\011\123\150\157\167\040" \
+"\160\151\144\163\000\012\012\120\162\151\156\164\040\164\150\145" \
+"\040\146\165\154\154\040\146\151\154\145\156\141\155\145\040\157" \
+"\146\040\164\150\145\040\143\165\162\162\145\156\164\040\167\157" \
+"\162\153\151\156\147\040\144\151\162\145\143\164\157\162\171\000" \
+"\120\111\104\056\056\056\012\012\123\150\157\167\040\143\165\162" \
+"\162\145\156\164\040\144\151\162\145\143\164\157\162\171\040\146" \
+"\157\162\040\120\111\104\163\012\000\012\012\120\162\151\156\164" \
+"\040\164\150\145\040\144\145\166\151\143\145\040\156\157\144\145" \
+"\040\141\163\163\157\143\151\141\164\145\144\040\167\151\164\150" \
+"\040\164\150\145\040\146\151\154\145\163\171\163\164\145\155\040" \
+"\155\157\165\156\164\145\144\040\141\164\040\047\057\047\000\133" \
+"\055\146\156\166\135\040\106\111\114\105\012\012\104\151\163\160" \
+"\154\141\171\040\164\150\145\040\166\141\154\165\145\040\157\146" \
+"\040\141\040\163\171\155\154\151\156\153\012\012\011\055\146\011" \
+"\103\141\156\157\156\151\143\141\154\151\172\145\040\142\171\040" \
+"\146\157\154\154\157\167\151\156\147\040\141\154\154\040\163\171" \
+"\155\154\151\156\153\163\012\011\055\156\011\104\157\156\047\164" \
+"\040\141\144\144\040\156\145\167\154\151\156\145\012\011\055\166" \
+"\011\126\145\162\142\157\163\145\000\106\111\114\105\056\056\056" \
+"\012\012\122\145\164\165\162\156\040\164\150\145\040\141\142\163" \
+"\157\154\165\164\145\040\160\141\164\150\156\141\155\145\163\040" \
+"\157\146\040\147\151\166\145\156\040\106\111\114\105\000\133\055" \
+"\144\040\104\105\114\101\131\135\040\133\055\156\135\040\133\055" \
+"\146\135\012\012\122\145\142\157\157\164\040\164\150\145\040\163" \
+"\171\163\164\145\155\012\012\011\055\144\040\123\105\103\011\104" \
+"\145\154\141\171\040\151\156\164\145\162\166\141\154\012\011\055" \
+"\156\011\104\157\040\156\157\164\040\163\171\156\143\012\011\055" \
+"\146\011\106\157\162\143\145\040\050\144\157\156\047\164\040\147" \
+"\157\040\164\150\162\157\165\147\150\040\151\156\151\164\051\000" \
+"\173\173\055\156\040\111\116\103\122\105\115\105\116\124\175\040" \
+"\174\040\120\122\111\117\122\111\124\131\175\040\133\133\055\160" \
+"\040\174\040\055\147\040\174\040\055\165\135\040\111\104\056\056" \
+"\056\135\012\012\103\150\141\156\147\145\040\163\143\150\145\144" \
+"\165\154\151\156\147\040\160\162\151\157\162\151\164\171\040\146" \
+"\157\162\040\141\040\162\165\156\156\151\156\147\040\160\162\157" \
+"\143\145\163\163\012\012\011\055\156\011\101\144\152\165\163\164" \
+"\040\143\165\162\162\145\156\164\040\156\151\143\145\040\166\141" \
+"\154\165\145\040\050\163\155\141\154\154\145\162\040\151\163\040" \
+"\146\141\163\164\145\162\051\012\011\055\160\011\120\162\157\143" \
+"\145\163\163\040\151\144\050\163\051\040\050\144\145\146\141\165" \
+"\154\164\051\012\011\055\147\011\120\162\157\143\145\163\163\040" \
+"\147\162\157\165\160\040\151\144\050\163\051\012\011\055\165\011" \
+"\120\162\157\143\145\163\163\040\165\163\145\162\040\156\141\155" \
+"\145\050\163\051\040\141\156\144\057\157\162\040\151\144\050\163" \
+"\051\000\012\012\122\145\163\145\164\040\164\150\145\040\163\143" \
+"\162\145\145\156\000\012\012\122\145\163\151\172\145\040\164\150" \
+"\145\040\163\143\162\145\145\156\000\133\106\111\114\105\135\056" \
+"\056\056\012\012\122\145\166\145\162\163\145\040\154\151\156\145" \
+"\163\040\157\146\040\106\111\114\105\000\133\055\151\162\146\135" \
+"\040\106\111\114\105\056\056\056\012\012\122\145\155\157\166\145" \
+"\040\050\165\156\154\151\156\153\051\040\106\111\114\105\163\012" \
+"\012\011\055\151\011\101\154\167\141\171\163\040\160\162\157\155" \
+"\160\164\040\142\145\146\157\162\145\040\162\145\155\157\166\151" \
+"\156\147\012\011\055\146\011\116\145\166\145\162\040\160\162\157" \
+"\155\160\164\012\011\055\122\054\055\162\011\122\145\143\165\162" \
+"\163\145\000\133\117\120\124\111\117\116\123\135\040\104\111\122" \
+"\105\103\124\117\122\131\056\056\056\012\012\122\145\155\157\166" \
+"\145\040\104\111\122\105\103\124\117\122\131\040\151\146\040\151" \
+"\164\040\151\163\040\145\155\160\164\171\012\012\011\055\160\174" \
+"\055\055\160\141\162\145\156\164\163\011\111\156\143\154\165\144" \
+"\145\040\160\141\162\145\156\164\163\012\011\055\055\151\147\156" \
+"\157\162\145\055\146\141\151\154\055\157\156\055\156\157\156\055" \
+"\145\155\160\164\171\000\133\055\167\146\141\135\040\133\115\117" \
+"\104\125\114\105\135\056\056\056\012\012\125\156\154\157\141\144" \
+"\040\153\145\162\156\145\154\040\155\157\144\165\154\145\163\012" \
+"\012\011\055\167\011\127\141\151\164\040\165\156\164\151\154\040" \
+"\164\150\145\040\155\157\144\165\154\145\040\151\163\040\156\157" \
+"\040\154\157\156\147\145\162\040\165\163\145\144\012\011\055\146" \
+"\011\106\157\162\143\145\040\165\156\154\157\141\144\012\011\055" \
+"\141\011\122\145\155\157\166\145\040\141\154\154\040\165\156\165" \
+"\163\145\144\040\155\157\144\165\154\145\163\040\050\162\145\143" \
+"\165\162\163\151\166\145\154\171\051\000\133\173\141\144\144\174" \
+"\144\145\154\174\144\145\154\145\164\145\175\135\012\012\105\144" \
+"\151\164\040\153\145\162\156\145\154\040\162\157\165\164\151\156" \
+"\147\040\164\141\142\154\145\163\012\012\011\055\156\011\104\157" \
+"\156\047\164\040\162\145\163\157\154\166\145\040\156\141\155\145" \
+"\163\012\011\055\145\011\104\151\163\160\154\141\171\040\157\164" \
+"\150\145\162\057\155\157\162\145\040\151\156\146\157\162\155\141" \
+"\164\151\157\156\012\011\055\101\040\151\156\145\164\173\066\175" \
+"\011\123\145\154\145\143\164\040\141\144\144\162\145\163\163\040" \
+"\146\141\155\151\154\171\000\133\055\141\040\101\122\107\135\056" \
+"\056\056\040\133\055\165\040\125\115\101\123\113\135\040\133\055" \
+"\055\162\145\166\145\162\163\145\135\040\133\055\055\164\145\163" \
+"\164\135\040\133\055\055\145\170\151\164\055\157\156\055\145\162" \
+"\162\157\162\135\040\133\055\055\154\151\163\164\135\040\104\111" \
+"\122\105\103\124\117\122\131\012\012\122\165\156\040\141\040\142" \
+"\165\156\143\150\040\157\146\040\163\143\162\151\160\164\163\040" \
+"\151\156\040\104\111\122\105\103\124\117\122\131\012\012\011\055" \
+"\141\040\101\122\107\011\011\120\141\163\163\040\101\122\107\040" \
+"\141\163\040\141\162\147\165\155\145\156\164\040\164\157\040\163" \
+"\143\162\151\160\164\163\012\011\055\165\040\125\115\101\123\113" \
+"\011\123\145\164\040\125\115\101\123\113\040\142\145\146\157\162" \
+"\145\040\162\165\156\156\151\156\147\040\163\143\162\151\160\164" \
+"\163\012\011\055\055\162\145\166\145\162\163\145\011\122\145\166" \
+"\145\162\163\145\040\145\170\145\143\165\164\151\157\156\040\157" \
+"\162\144\145\162\012\011\055\055\164\145\163\164\011\011\104\162" \
+"\171\040\162\165\156\012\011\055\055\145\170\151\164\055\157\156" \
+"\055\145\162\162\157\162\011\105\170\151\164\040\151\146\040\141" \
+"\040\163\143\162\151\160\164\040\145\170\151\164\163\040\167\151" \
+"\164\150\040\156\157\156\055\172\145\162\157\012\011\055\055\154" \
+"\151\163\164\011\011\120\162\151\156\164\040\156\141\155\145\163" \
+"\040\157\146\040\155\141\164\143\150\151\156\147\040\146\151\154" \
+"\145\163\040\145\166\145\156\040\151\146\040\164\150\145\171\040" \
+"\141\162\145\040\156\157\164\040\145\170\145\143\165\164\141\142" \
+"\154\145\000\106\111\114\105\012\012\122\145\143\145\151\166\145" \
+"\040\141\040\146\151\154\145\040\165\163\151\156\147\040\164\150" \
+"\145\040\170\155\157\144\145\155\040\160\162\157\164\157\143\157" \
+"\154\000\133\055\151\156\162\105\135\040\133\055\146\040\106\111" \
+"\114\105\135\056\056\056\040\133\055\145\040\103\115\104\135\056" \
+"\056\056\040\133\106\111\114\105\135\056\056\056\012\157\162\072" \
+"\040\163\145\144\040\133\055\151\156\162\105\135\040\103\115\104" \
+"\040\133\106\111\114\105\135\056\056\056\012\012\011\055\145\040" \
+"\103\115\104\011\101\144\144\040\103\115\104\040\164\157\040\163" \
+"\145\144\040\143\157\155\155\141\156\144\163\040\164\157\040\142" \
+"\145\040\145\170\145\143\165\164\145\144\012\011\055\146\040\106" \
+"\111\114\105\011\101\144\144\040\106\111\114\105\040\143\157\156" \
+"\164\145\156\164\163\040\164\157\040\163\145\144\040\143\157\155" \
+"\155\141\156\144\163\040\164\157\040\142\145\040\145\170\145\143" \
+"\165\164\145\144\012\011\055\151\133\123\106\130\135\011\105\144" \
+"\151\164\040\146\151\154\145\163\040\151\156\055\160\154\141\143" \
+"\145\040\050\157\164\150\145\162\167\151\163\145\040\163\145\156" \
+"\144\163\040\164\157\040\163\164\144\157\165\164\051\012\011\011" \
+"\117\160\164\151\157\156\141\154\154\171\040\142\141\143\153\040" \
+"\146\151\154\145\163\040\165\160\054\040\141\160\160\145\156\144" \
+"\151\156\147\040\123\106\130\012\011\055\156\011\123\165\160\160" \
+"\162\145\163\163\040\141\165\164\157\155\141\164\151\143\040\160" \
+"\162\151\156\164\151\156\147\040\157\146\040\160\141\164\164\145" \
+"\162\156\040\163\160\141\143\145\012\011\055\162\054\055\105\011" \
+"\125\163\145\040\145\170\164\145\156\144\145\144\040\162\145\147" \
+"\145\170\040\163\171\156\164\141\170\012\012\111\146\040\156\157" \
+"\040\055\145\040\157\162\040\055\146\054\040\164\150\145\040\146" \
+"\151\162\163\164\040\156\157\156\055\157\160\164\151\157\156\040" \
+"\141\162\147\165\155\145\156\164\040\151\163\040\164\150\145\040" \
+"\163\145\144\040\143\157\155\155\141\156\144\040\163\164\162\151" \
+"\156\147\056\012\122\145\155\141\151\156\151\156\147\040\141\162" \
+"\147\165\155\145\156\164\163\040\141\162\145\040\151\156\160\165" \
+"\164\040\146\151\154\145\163\040\050\163\164\144\151\156\040\151" \
+"\146\040\156\157\156\145\051\056\000\133\055\167\135\040\133\055" \
+"\163\040\123\105\120\135\040\133\106\111\122\123\124\040\133\111" \
+"\116\103\135\135\040\114\101\123\124\012\012\120\162\151\156\164" \
+"\040\156\165\155\142\145\162\163\040\146\162\157\155\040\106\111" \
+"\122\123\124\040\164\157\040\114\101\123\124\054\040\151\156\040" \
+"\163\164\145\160\163\040\157\146\040\111\116\103\056\012\106\111" \
+"\122\123\124\054\040\111\116\103\040\144\145\146\141\165\154\164" \
+"\040\164\157\040\061\056\012\012\011\055\167\011\120\141\144\040" \
+"\164\157\040\154\141\163\164\040\167\151\164\150\040\154\145\141" \
+"\144\151\156\147\040\172\145\162\157\163\012\011\055\163\040\123" \
+"\105\120\011\123\164\162\151\156\147\040\163\145\160\141\162\141" \
+"\164\157\162\000\133\055\162\135\040\133\104\105\126\111\103\105" \
+"\135\012\012\122\145\144\151\162\145\143\164\040\163\171\163\164" \
+"\145\155\040\143\157\156\163\157\154\145\040\157\165\164\160\165" \
+"\164\040\164\157\040\104\105\126\111\103\105\040\050\144\145\146" \
+"\141\165\154\164\072\040\057\144\145\166\057\164\164\171\051\012" \
+"\012\011\055\162\011\122\145\163\145\164\040\157\165\164\160\165" \
+"\164\040\164\157\040\057\144\145\166\057\143\157\156\163\157\154" \
+"\145\000\133\055\147\141\142\107\166\172\126\135\040\104\105\126" \
+"\111\103\105\040\133\120\101\122\101\115\105\124\105\122\040\133" \
+"\101\122\107\135\135\056\056\056\012\012\122\145\161\165\145\163" \
+"\164\040\157\162\040\163\145\164\040\114\151\156\165\170\040\163" \
+"\145\162\151\141\154\040\160\157\162\164\040\151\156\146\157\162" \
+"\155\141\164\151\157\156\012\012\011\055\147\011\111\156\164\145" \
+"\162\160\162\145\164\040\160\141\162\141\155\145\164\145\162\163" \
+"\040\141\163\040\154\151\163\164\040\157\146\040\144\145\166\151" \
+"\143\145\163\040\146\157\162\040\162\145\160\157\162\164\151\156" \
+"\147\012\011\055\141\011\120\162\151\156\164\040\141\154\154\040" \
+"\141\166\141\151\154\141\142\154\145\040\151\156\146\157\162\155" \
+"\141\164\151\157\156\012\011\055\142\011\120\162\151\156\164\040" \
+"\163\165\155\155\141\162\171\040\151\156\146\157\162\155\141\164" \
+"\151\157\156\012\011\055\107\011\120\162\151\156\164\040\151\156" \
+"\040\146\157\162\155\040\167\150\151\143\150\040\143\141\156\040" \
+"\142\145\040\146\145\144\040\142\141\143\153\012\011\011\164\157" \
+"\040\163\145\164\163\145\162\151\141\154\040\141\163\040\143\157" \
+"\155\155\141\156\144\040\154\151\156\145\040\160\141\162\141\155" \
+"\145\164\145\162\163\012\011\055\172\011\132\145\162\157\040\157" \
+"\165\164\040\163\145\162\151\141\154\040\146\154\141\147\163\040" \
+"\142\145\146\157\162\145\040\163\145\164\164\151\156\147\012\011" \
+"\055\166\011\126\145\162\142\157\163\145\012\012\120\141\162\141" \
+"\155\145\164\145\162\163\072\040\050\052\040\075\040\164\141\153" \
+"\145\163\040\141\156\040\141\162\147\165\155\145\156\164\054\040" \
+"\136\040\075\040\143\141\156\040\142\145\040\164\165\162\156\145" \
+"\144\040\157\146\146\040\142\171\040\160\162\145\143\145\144\151" \
+"\156\147\040\136\051\012\011\052\160\157\162\164\054\040\052\151" \
+"\162\161\054\040\052\144\151\166\151\163\157\162\054\040\052\165" \
+"\141\162\164\054\040\052\142\141\165\144\137\142\141\163\145\054" \
+"\040\052\143\154\157\163\145\137\144\145\154\141\171\054\040\052" \
+"\143\154\157\163\151\156\147\137\167\141\151\164\054\012\011\136" \
+"\146\157\165\162\160\157\162\164\054\040\136\141\165\164\157\137" \
+"\151\162\161\054\040\136\163\153\151\160\137\164\145\163\164\054" \
+"\040\136\163\141\153\054\040\136\163\145\163\163\151\157\156\137" \
+"\154\157\143\153\157\165\164\054\040\136\160\147\162\160\137\154" \
+"\157\143\153\157\165\164\054\012\011\136\143\141\154\154\157\165" \
+"\164\137\156\157\150\165\160\054\040\136\163\160\154\151\164\137" \
+"\164\145\162\155\151\157\163\054\040\136\150\165\160\137\156\157" \
+"\164\151\146\171\054\040\136\154\157\167\137\154\141\164\145\156" \
+"\143\171\054\040\141\165\164\157\143\157\156\146\151\147\054\012" \
+"\011\163\160\144\137\156\157\162\155\141\154\054\040\163\160\144" \
+"\137\150\151\054\040\163\160\144\137\166\150\151\054\040\163\160" \
+"\144\137\163\150\151\054\040\163\160\144\137\167\141\162\160\054" \
+"\040\163\160\144\137\143\165\163\164\012\012\125\101\122\124\040" \
+"\164\171\160\145\163\072\012\011\165\156\153\156\157\167\156\054" \
+"\040\070\062\065\060\054\040\061\066\064\065\060\054\040\061\066" \
+"\065\065\060\054\040\061\066\065\065\060\101\054\040\103\151\162" \
+"\162\165\163\054\040\061\066\066\065\060\054\040\061\066\066\065" \
+"\060\126\062\054\040\061\066\067\065\060\054\012\011\061\066\071" \
+"\065\060\054\040\061\066\071\065\064\054\040\061\066\066\065\064" \
+"\054\040\061\066\070\065\060\054\040\122\123\101\054\040\116\123" \
+"\061\066\065\065\060\101\054\040\130\123\103\101\114\105\054\040" \
+"\122\115\071\060\060\060\054\040\117\103\124\105\117\116\054\040" \
+"\101\122\067\054\012\011\125\066\137\061\066\065\065\060\101\000" \
+"\120\122\117\107\040\101\122\107\123\012\012\122\165\156\040\120" \
+"\122\117\107\040\151\156\040\141\040\156\145\167\040\163\145\163" \
+"\163\151\157\156\056\040\120\122\117\107\040\167\151\154\154\040" \
+"\150\141\166\145\040\156\157\040\143\157\156\164\162\157\154\154" \
+"\151\156\147\040\164\145\162\155\151\156\141\154\012\141\156\144" \
+"\040\167\151\154\154\040\156\157\164\040\142\145\040\141\146\146" \
+"\145\143\164\145\144\040\142\171\040\153\145\171\142\157\141\162" \
+"\144\040\163\151\147\156\141\154\163\040\050\103\164\162\154\055" \
+"\103\040\145\164\143\051\056\012\123\145\145\040\163\145\164\163" \
+"\151\144\050\062\051\040\146\157\162\040\144\145\164\141\151\154" \
+"\163\056\000\133\055\057\053\117\120\124\111\117\116\123\135\040" \
+"\133\055\057\053\157\040\117\120\124\135\056\056\056\040\133\055" \
+"\143\040\047\123\103\122\111\120\124\047\040\133\101\122\107\060" \
+"\040\133\101\122\107\123\135\135\040\057\040\106\111\114\105\040" \
+"\133\101\122\107\123\135\135\012\012\125\156\151\170\040\163\150" \
+"\145\154\154\040\151\156\164\145\162\160\162\145\164\145\162\000" \
+"\133\055\143\133\163\167\135\135\040\133\106\111\114\105\135\056" \
+"\056\056\012\012\120\162\151\156\164\040\157\162\040\143\150\145" \
+"\143\153\040\123\110\101\061\040\143\150\145\143\153\163\165\155" \
+"\163\012\012\011\055\143\011\103\150\145\143\153\040\163\165\155" \
+"\163\040\141\147\141\151\156\163\164\040\154\151\163\164\040\151" \
+"\156\040\106\111\114\105\163\012\011\055\163\011\104\157\156\047" \
+"\164\040\157\165\164\160\165\164\040\141\156\171\164\150\151\156" \
+"\147\054\040\163\164\141\164\165\163\040\143\157\144\145\040\163" \
+"\150\157\167\163\040\163\165\143\143\145\163\163\012\011\055\167" \
+"\011\127\141\162\156\040\141\142\157\165\164\040\151\155\160\162" \
+"\157\160\145\162\154\171\040\146\157\162\155\141\164\164\145\144" \
+"\040\143\150\145\143\153\163\165\155\040\154\151\156\145\163\000" \
+"\133\055\143\133\163\167\135\135\040\133\106\111\114\105\135\056" \
+"\056\056\012\012\120\162\151\156\164\040\157\162\040\143\150\145" \
+"\143\153\040\123\110\101\062\065\066\040\143\150\145\143\153\163" \
+"\165\155\163\012\012\011\055\143\011\103\150\145\143\153\040\163" \
+"\165\155\163\040\141\147\141\151\156\163\164\040\154\151\163\164" \
+"\040\151\156\040\106\111\114\105\163\012\011\055\163\011\104\157" \
+"\156\047\164\040\157\165\164\160\165\164\040\141\156\171\164\150" \
+"\151\156\147\054\040\163\164\141\164\165\163\040\143\157\144\145" \
+"\040\163\150\157\167\163\040\163\165\143\143\145\163\163\012\011" \
+"\055\167\011\127\141\162\156\040\141\142\157\165\164\040\151\155" \
+"\160\162\157\160\145\162\154\171\040\146\157\162\155\141\164\164" \
+"\145\144\040\143\150\145\143\153\163\165\155\040\154\151\156\145" \
+"\163\000\133\055\143\133\163\167\135\135\040\133\106\111\114\105" \
+"\135\056\056\056\012\012\120\162\151\156\164\040\157\162\040\143" \
+"\150\145\143\153\040\123\110\101\063\055\065\061\062\040\143\150" \
+"\145\143\153\163\165\155\163\012\012\011\055\143\011\103\150\145" \
+"\143\153\040\163\165\155\163\040\141\147\141\151\156\163\164\040" \
+"\154\151\163\164\040\151\156\040\106\111\114\105\163\012\011\055" \
+"\163\011\104\157\156\047\164\040\157\165\164\160\165\164\040\141" \
+"\156\171\164\150\151\156\147\054\040\163\164\141\164\165\163\040" \
+"\143\157\144\145\040\163\150\157\167\163\040\163\165\143\143\145" \
+"\163\163\012\011\055\167\011\127\141\162\156\040\141\142\157\165" \
+"\164\040\151\155\160\162\157\160\145\162\154\171\040\146\157\162" \
+"\155\141\164\164\145\144\040\143\150\145\143\153\163\165\155\040" \
+"\154\151\156\145\163\000\133\055\143\133\163\167\135\135\040\133" \
+"\106\111\114\105\135\056\056\056\012\012\120\162\151\156\164\040" \
+"\157\162\040\143\150\145\143\153\040\123\110\101\065\061\062\040" \
+"\143\150\145\143\153\163\165\155\163\012\012\011\055\143\011\103" \
+"\150\145\143\153\040\163\165\155\163\040\141\147\141\151\156\163" \
+"\164\040\154\151\163\164\040\151\156\040\106\111\114\105\163\012" \
+"\011\055\163\011\104\157\156\047\164\040\157\165\164\160\165\164" \
+"\040\141\156\171\164\150\151\156\147\054\040\163\164\141\164\165" \
+"\163\040\143\157\144\145\040\163\150\157\167\163\040\163\165\143" \
+"\143\145\163\163\012\011\055\167\011\127\141\162\156\040\141\142" \
+"\157\165\164\040\151\155\160\162\157\160\145\162\154\171\040\146" \
+"\157\162\155\141\164\164\145\144\040\143\150\145\143\153\163\165" \
+"\155\040\154\151\156\145\163\000\133\116\135\056\056\056\012\012" \
+"\120\141\165\163\145\040\146\157\162\040\141\040\164\151\155\145" \
+"\040\145\161\165\141\154\040\164\157\040\164\150\145\040\164\157" \
+"\164\141\154\040\157\146\040\164\150\145\040\141\162\147\163\040" \
+"\147\151\166\145\156\054\040\167\150\145\162\145\040\145\141\143" \
+"\150\040\141\162\147\040\143\141\156\012\150\141\166\145\040\141" \
+"\156\040\157\160\164\151\157\156\141\154\040\163\165\146\146\151" \
+"\170\040\157\146\040\050\163\051\145\143\157\156\144\163\054\040" \
+"\050\155\051\151\156\165\164\145\163\054\040\050\150\051\157\165" \
+"\162\163\054\040\157\162\040\050\144\051\141\171\163\000\133\055" \
+"\156\162\165\147\115\143\163\172\142\144\146\151\155\123\124\157" \
+"\153\164\135\040\133\055\157\040\106\111\114\105\135\040\133\055" \
+"\153\040\163\164\141\162\164\133\056\157\146\146\163\145\164\135" \
+"\133\157\160\164\163\135\133\054\145\156\144\133\056\157\146\146" \
+"\163\145\164\135\133\157\160\164\163\135\135\040\133\055\164\040" \
+"\103\110\101\122\135\040\133\106\111\114\105\135\056\056\056\012" \
+"\012\123\157\162\164\040\154\151\156\145\163\040\157\146\040\164" \
+"\145\170\164\012\012\011\055\142\011\111\147\156\157\162\145\040" \
+"\154\145\141\144\151\156\147\040\142\154\141\156\153\163\012\011" \
+"\055\143\011\103\150\145\143\153\040\167\150\145\164\150\145\162" \
+"\040\151\156\160\165\164\040\151\163\040\163\157\162\164\145\144" \
+"\012\011\055\144\011\104\151\143\164\151\157\156\141\162\171\040" \
+"\157\162\144\145\162\040\050\142\154\141\156\153\040\157\162\040" \
+"\141\154\160\150\141\156\165\155\145\162\151\143\040\157\156\154" \
+"\171\051\012\011\055\146\011\111\147\156\157\162\145\040\143\141" \
+"\163\145\012\011\055\147\011\107\145\156\145\162\141\154\040\156" \
+"\165\155\145\162\151\143\141\154\040\163\157\162\164\012\011\055" \
+"\151\011\111\147\156\157\162\145\040\165\156\160\162\151\156\164" \
+"\141\142\154\145\040\143\150\141\162\141\143\164\145\162\163\012" \
+"\011\055\153\011\123\157\162\164\040\153\145\171\012\011\055\115" \
+"\011\123\157\162\164\040\155\157\156\164\150\012\011\055\156\011" \
+"\123\157\162\164\040\156\165\155\142\145\162\163\012\011\055\157" \
+"\011\117\165\164\160\165\164\040\164\157\040\146\151\154\145\012" \
+"\011\055\153\011\123\157\162\164\040\142\171\040\153\145\171\012" \
+"\011\055\164\040\103\110\101\122\011\113\145\171\040\163\145\160" \
+"\141\162\141\164\157\162\012\011\055\162\011\122\145\166\145\162" \
+"\163\145\040\163\157\162\164\040\157\162\144\145\162\012\011\055" \
+"\163\011\123\164\141\142\154\145\040\050\144\157\156\047\164\040" \
+"\163\157\162\164\040\164\151\145\163\040\141\154\160\150\141\142" \
+"\145\164\151\143\141\154\154\171\051\012\011\055\165\011\123\165" \
+"\160\160\162\145\163\163\040\144\165\160\154\151\143\141\164\145" \
+"\040\154\151\156\145\163\012\011\055\172\011\114\151\156\145\163" \
+"\040\141\162\145\040\164\145\162\155\151\156\141\164\145\144\040" \
+"\142\171\040\116\125\114\054\040\156\157\164\040\156\145\167\154" \
+"\151\156\145\012\011\055\155\123\124\011\111\147\156\157\162\145" \
+"\144\040\146\157\162\040\107\116\125\040\143\157\155\160\141\164" \
+"\151\142\151\154\151\164\171\000\133\117\120\124\111\117\116\123" \
+"\135\040\133\111\116\120\125\124\040\133\120\122\105\106\111\130" \
+"\135\135\012\012\011\055\142\040\116\133\153\174\155\135\011\123" \
+"\160\154\151\164\040\142\171\040\116\040\050\153\151\154\157\174" \
+"\155\145\147\141\051\142\171\164\145\163\012\011\055\154\040\116" \
+"\011\011\123\160\154\151\164\040\142\171\040\116\040\154\151\156" \
+"\145\163\012\011\055\141\040\116\011\011\125\163\145\040\116\040" \
+"\154\145\164\164\145\162\163\040\141\163\040\163\165\146\146\151" \
+"\170\000\133\117\120\124\111\117\116\123\135\040\106\111\114\105" \
+"\056\056\056\012\012\104\151\163\160\154\141\171\040\146\151\154" \
+"\145\040\050\144\145\146\141\165\154\164\051\040\157\162\040\146" \
+"\151\154\145\163\171\163\164\145\155\040\163\164\141\164\165\163" \
+"\012\012\011\055\146\011\104\151\163\160\154\141\171\040\146\151" \
+"\154\145\163\171\163\164\145\155\040\163\164\141\164\165\163\012" \
+"\011\055\114\011\106\157\154\154\157\167\040\154\151\156\153\163" \
+"\012\011\055\164\011\104\151\163\160\154\141\171\040\151\156\146" \
+"\157\040\151\156\040\164\145\162\163\145\040\146\157\162\155\000" \
+"\133\055\141\146\157\135\040\133\055\156\040\114\105\116\135\040" \
+"\133\106\111\114\105\135\056\056\056\012\012\104\151\163\160\154" \
+"\141\171\040\160\162\151\156\164\141\142\154\145\040\163\164\162" \
+"\151\156\147\163\040\151\156\040\141\040\142\151\156\141\162\171" \
+"\040\146\151\154\145\012\012\011\055\141\011\123\143\141\156\040" \
+"\167\150\157\154\145\040\146\151\154\145\040\050\144\145\146\141" \
+"\165\154\164\051\012\011\055\146\011\120\162\145\143\145\144\145" \
+"\040\163\164\162\151\156\147\163\040\167\151\164\150\040\146\151" \
+"\154\145\156\141\155\145\163\012\011\055\156\040\114\105\116\011" \
+"\101\164\040\154\145\141\163\164\040\114\105\116\040\143\150\141" \
+"\162\141\143\164\145\162\163\040\146\157\162\155\040\141\040\163" \
+"\164\162\151\156\147\040\050\144\145\146\141\165\154\164\040\064" \
+"\051\012\011\055\157\011\120\162\145\143\145\144\145\040\163\164" \
+"\162\151\156\147\163\040\167\151\164\150\040\144\145\143\151\155" \
+"\141\154\040\157\146\146\163\145\164\163\000\133\055\141\174\147" \
+"\135\040\133\055\106\040\104\105\126\111\103\105\135\040\133\123" \
+"\105\124\124\111\116\107\135\056\056\056\012\012\127\151\164\150" \
+"\157\165\164\040\141\162\147\165\155\145\156\164\163\054\040\160" \
+"\162\151\156\164\163\040\142\141\165\144\040\162\141\164\145\054" \
+"\040\154\151\156\145\040\144\151\163\143\151\160\154\151\156\145" \
+"\054\012\141\156\144\040\144\145\166\151\141\164\151\157\156\163" \
+"\040\146\162\157\155\040\163\164\164\171\040\163\141\156\145\012" \
+"\012\011\055\106\040\104\105\126\111\103\105\011\117\160\145\156" \
+"\040\144\145\166\151\143\145\040\151\156\163\164\145\141\144\040" \
+"\157\146\040\163\164\144\151\156\012\011\055\141\011\011\120\162" \
+"\151\156\164\040\141\154\154\040\143\165\162\162\145\156\164\040" \
+"\163\145\164\164\151\156\147\163\040\151\156\040\150\165\155\141" \
+"\156\055\162\145\141\144\141\142\154\145\040\146\157\162\155\012" \
+"\011\055\147\011\011\120\162\151\156\164\040\151\156\040\163\164" \
+"\164\171\055\162\145\141\144\141\142\154\145\040\146\157\162\155" \
+"\012\011\133\123\105\124\124\111\116\107\135\011\123\145\145\040" \
+"\155\141\156\160\141\147\145\000\133\055\162\163\135\040\133\106" \
+"\111\114\105\135\056\056\056\012\012\103\150\145\143\153\163\165" \
+"\155\040\141\156\144\040\143\157\165\156\164\040\164\150\145\040" \
+"\142\154\157\143\153\163\040\151\156\040\141\040\146\151\154\145" \
+"\012\012\011\055\162\011\125\163\145\040\102\123\104\040\163\165" \
+"\155\040\141\154\147\157\162\151\164\150\155\040\050\061\113\040" \
+"\142\154\157\143\153\163\051\012\011\055\163\011\125\163\145\040" \
+"\123\171\163\164\145\155\040\126\040\163\165\155\040\141\154\147" \
+"\157\162\151\164\150\155\040\050\065\061\062\142\171\164\145\040" \
+"\142\154\157\143\153\163\051\000\133\055\141\135\040\133\104\105" \
+"\126\111\103\105\135\012\012\123\164\157\160\040\163\167\141\160" \
+"\160\151\156\147\040\157\156\040\104\105\126\111\103\105\012\012" \
+"\011\055\141\011\123\164\157\160\040\163\167\141\160\160\151\156" \
+"\147\040\157\156\040\141\154\154\040\163\167\141\160\040\144\145" \
+"\166\151\143\145\163\000\133\055\141\135\040\133\104\105\126\111" \
+"\103\105\135\012\012\123\164\141\162\164\040\163\167\141\160\160" \
+"\151\156\147\040\157\156\040\104\105\126\111\103\105\012\012\011" \
+"\055\141\011\123\164\141\162\164\040\163\167\141\160\160\151\156" \
+"\147\040\157\156\040\141\154\154\040\163\167\141\160\040\144\145" \
+"\166\151\143\145\163\000\012\012\127\162\151\164\145\040\141\154" \
+"\154\040\142\165\146\146\145\162\145\144\040\142\154\157\143\153" \
+"\163\040\164\157\040\144\151\163\153\000\133\117\120\124\111\117" \
+"\116\123\135\040\133\113\105\131\133\075\126\101\114\125\105\135" \
+"\135\056\056\056\012\012\123\150\157\167\057\163\145\164\040\153" \
+"\145\162\156\145\154\040\160\141\162\141\155\145\164\145\162\163" \
+"\012\012\011\055\145\011\104\157\156\047\164\040\167\141\162\156" \
+"\040\141\142\157\165\164\040\165\156\153\156\157\167\156\040\153" \
+"\145\171\163\012\011\055\156\011\104\157\156\047\164\040\163\150" \
+"\157\167\040\153\145\171\040\156\141\155\145\163\012\011\055\141" \
+"\011\123\150\157\167\040\141\154\154\040\166\141\154\165\145\163" \
+"\012\011\055\167\011\123\145\164\040\166\141\154\165\145\163\012" \
+"\011\055\160\040\106\111\114\105\011\123\145\164\040\166\141\154" \
+"\165\145\163\040\146\162\157\155\040\106\111\114\105\040\050\144" \
+"\145\146\141\165\154\164\040\057\145\164\143\057\163\171\163\143" \
+"\164\154\056\143\157\156\146\051\012\011\055\161\040\040\040\040" \
+"\040\040\123\145\164\040\166\141\154\165\145\163\040\163\151\154" \
+"\145\156\164\154\171\000\133\106\111\114\105\135\056\056\056\012" \
+"\012\103\157\156\143\141\164\145\156\141\164\145\040\106\111\114" \
+"\105\163\040\141\156\144\040\160\162\151\156\164\040\164\150\145" \
+"\155\040\151\156\040\162\145\166\145\162\163\145\000\133\117\120" \
+"\124\111\117\116\123\135\040\133\106\111\114\105\135\056\056\056" \
+"\012\012\120\162\151\156\164\040\154\141\163\164\040\061\060\040" \
+"\154\151\156\145\163\040\157\146\040\145\141\143\150\040\106\111" \
+"\114\105\040\050\157\162\040\163\164\144\151\156\051\040\164\157" \
+"\040\163\164\144\157\165\164\056\012\127\151\164\150\040\155\157" \
+"\162\145\040\164\150\141\156\040\157\156\145\040\106\111\114\105" \
+"\054\040\160\162\145\143\145\144\145\040\145\141\143\150\040\167" \
+"\151\164\150\040\141\040\146\151\154\145\156\141\155\145\040\150" \
+"\145\141\144\145\162\056\012\012\011\055\146\011\011\120\162\151" \
+"\156\164\040\144\141\164\141\040\141\163\040\146\151\154\145\040" \
+"\147\162\157\167\163\012\011\055\163\040\123\105\103\117\116\104" \
+"\123\011\127\141\151\164\040\123\105\103\117\116\104\123\040\142" \
+"\145\164\167\145\145\156\040\162\145\141\144\163\040\167\151\164" \
+"\150\040\055\146\012\011\055\156\040\116\133\153\142\155\135\011" \
+"\120\162\151\156\164\040\154\141\163\164\040\116\040\154\151\156" \
+"\145\163\012\011\055\156\040\053\116\133\153\142\155\135\011\123" \
+"\164\141\162\164\040\157\156\040\116\164\150\040\154\151\156\145" \
+"\040\141\156\144\040\160\162\151\156\164\040\164\150\145\040\162" \
+"\145\163\164\012\011\055\143\040\133\053\135\116\133\153\142\155" \
+"\135\011\120\162\151\156\164\040\154\141\163\164\040\116\040\142" \
+"\171\164\145\163\012\011\055\161\011\011\116\145\166\145\162\040" \
+"\160\162\151\156\164\040\150\145\141\144\145\162\163\012\011\055" \
+"\166\011\011\101\154\167\141\171\163\040\160\162\151\156\164\040" \
+"\150\145\141\144\145\162\163\012\012\116\040\155\141\171\040\142" \
+"\145\040\163\165\146\146\151\170\145\144\040\142\171\040\153\040" \
+"\050\170\061\060\062\064\051\054\040\142\040\050\170\065\061\062" \
+"\051\054\040\157\162\040\155\040\050\170\061\060\062\064\136\062" \
+"\051\056\000\055\133\143\170\164\172\112\152\141\150\155\166\117" \
+"\135\040\133\055\130\040\106\111\114\105\135\040\133\055\124\040" \
+"\106\111\114\105\135\040\133\055\146\040\124\101\122\106\111\114" \
+"\105\135\040\133\055\103\040\104\111\122\135\040\133\106\111\114" \
+"\105\135\056\056\056\012\012\103\162\145\141\164\145\054\040\145" \
+"\170\164\162\141\143\164\054\040\157\162\040\154\151\163\164\040" \
+"\146\151\154\145\163\040\146\162\157\155\040\141\040\164\141\162" \
+"\040\146\151\154\145\012\012\117\160\145\162\141\164\151\157\156" \
+"\072\012\011\143\011\103\162\145\141\164\145\012\011\170\011\105" \
+"\170\164\162\141\143\164\012\011\164\011\114\151\163\164\012\011" \
+"\146\011\116\141\155\145\040\157\146\040\124\101\122\106\111\114" \
+"\105\040\050\047\055\047\040\146\157\162\040\163\164\144\151\156" \
+"\057\157\165\164\051\012\011\103\011\103\150\141\156\147\145\040" \
+"\164\157\040\104\111\122\040\142\145\146\157\162\145\040\157\160" \
+"\145\162\141\164\151\157\156\012\011\166\011\126\145\162\142\157" \
+"\163\145\012\011\172\011\050\104\145\051\143\157\155\160\162\145" \
+"\163\163\040\165\163\151\156\147\040\147\172\151\160\012\011\112" \
+"\011\050\104\145\051\143\157\155\160\162\145\163\163\040\165\163" \
+"\151\156\147\040\170\172\012\011\152\011\050\104\145\051\143\157" \
+"\155\160\162\145\163\163\040\165\163\151\156\147\040\142\172\151" \
+"\160\062\012\011\141\011\050\104\145\051\143\157\155\160\162\145" \
+"\163\163\040\165\163\151\156\147\040\154\172\155\141\012\011\117" \
+"\011\105\170\164\162\141\143\164\040\164\157\040\163\164\144\157" \
+"\165\164\012\011\150\011\106\157\154\154\157\167\040\163\171\155" \
+"\154\151\156\153\163\012\011\155\011\104\157\156\047\164\040\162" \
+"\145\163\164\157\162\145\040\155\164\151\155\145\012\011\145\170" \
+"\143\154\165\144\145\011\106\151\154\145\040\164\157\040\145\170" \
+"\143\154\165\144\145\012\011\130\011\106\151\154\145\040\167\151" \
+"\164\150\040\156\141\155\145\163\040\164\157\040\145\170\143\154" \
+"\165\144\145\012\011\124\011\106\151\154\145\040\167\151\164\150" \
+"\040\156\141\155\145\163\040\164\157\040\151\156\143\154\165\144" \
+"\145\000\133\055\160\135\040\133\115\101\123\113\135\040\133\120" \
+"\111\104\040\174\040\120\122\117\107\040\101\122\107\123\135\012" \
+"\012\123\145\164\040\157\162\040\147\145\164\040\103\120\125\040" \
+"\141\146\146\151\156\151\164\171\012\012\011\055\160\011\117\160" \
+"\145\162\141\164\145\040\157\156\040\141\156\040\145\170\151\163" \
+"\164\151\156\147\040\120\111\104\000\133\055\141\151\135\040\133" \
+"\106\111\114\105\135\056\056\056\012\012\103\157\160\171\040\163" \
+"\164\144\151\156\040\164\157\040\145\141\143\150\040\106\111\114" \
+"\105\054\040\141\156\144\040\141\154\163\157\040\164\157\040\163" \
+"\164\144\157\165\164\012\012\011\055\141\011\101\160\160\145\156" \
+"\144\040\164\157\040\164\150\145\040\147\151\166\145\156\040\106" \
+"\111\114\105\163\054\040\144\157\156\047\164\040\157\166\145\162" \
+"\167\162\151\164\145\012\011\055\151\011\111\147\156\157\162\145" \
+"\040\151\156\164\145\162\162\165\160\164\040\163\151\147\156\141" \
+"\154\163\040\050\123\111\107\111\116\124\051\000\110\117\123\124" \
+"\040\133\120\117\122\124\135\012\012\103\157\156\156\145\143\164" \
+"\040\164\157\040\164\145\154\156\145\164\040\163\145\162\166\145" \
+"\162\000\133\117\120\124\111\117\116\123\135\012\012\110\141\156" \
+"\144\154\145\040\151\156\143\157\155\151\156\147\040\164\145\154" \
+"\156\145\164\040\143\157\156\156\145\143\164\151\157\156\163\012" \
+"\012\011\055\154\040\114\117\107\111\116\011\105\170\145\143\040" \
+"\114\117\107\111\116\040\157\156\040\143\157\156\156\145\143\164" \
+"\012\011\055\146\040\111\123\123\125\105\137\106\111\114\105\011" \
+"\104\151\163\160\154\141\171\040\111\123\123\125\105\137\106\111" \
+"\114\105\040\151\156\163\164\145\141\144\040\157\146\040\057\145" \
+"\164\143\057\151\163\163\165\145\012\011\055\113\011\011\103\154" \
+"\157\163\145\040\143\157\156\156\145\143\164\151\157\156\040\141" \
+"\163\040\163\157\157\156\040\141\163\040\154\157\147\151\156\040" \
+"\145\170\151\164\163\012\011\011\011\050\156\157\162\155\141\154" \
+"\154\171\040\167\141\151\164\040\165\156\164\151\154\040\141\154" \
+"\154\040\160\162\157\147\162\141\155\163\040\143\154\157\163\145" \
+"\040\163\154\141\166\145\040\160\164\171\051\012\011\055\160\040" \
+"\120\117\122\124\011\011\120\157\162\164\040\164\157\040\154\151" \
+"\163\164\145\156\040\157\156\012\011\055\142\040\101\104\104\122" \
+"\133\072\120\117\122\124\135\011\101\144\144\162\145\163\163\040" \
+"\164\157\040\142\151\156\144\040\164\157\012\011\055\106\011\011" \
+"\122\165\156\040\151\156\040\146\157\162\145\147\162\157\165\156" \
+"\144\012\011\055\151\011\011\111\156\145\164\144\040\155\157\144" \
+"\145\012\011\055\167\040\123\105\103\011\011\111\156\145\164\144" \
+"\040\047\167\141\151\164\047\040\155\157\144\145\054\040\154\151" \
+"\156\147\145\162\040\164\151\155\145\040\123\105\103\012\011\055" \
+"\123\011\011\114\157\147\040\164\157\040\163\171\163\154\157\147" \
+"\040\050\151\155\160\154\151\145\144\040\142\171\040\055\151\040" \
+"\157\162\040\167\151\164\150\157\165\164\040\055\106\040\141\156" \
+"\144\040\055\167\051\000\105\130\120\122\105\123\123\111\117\116" \
+"\040\135\012\012\103\150\145\143\153\040\146\151\154\145\040\164" \
+"\171\160\145\163\054\040\143\157\155\160\141\162\145\040\166\141" \
+"\154\165\145\163\040\145\164\143\056\040\122\145\164\165\162\156" \
+"\040\141\040\060\057\061\040\145\170\151\164\040\143\157\144\145" \
+"\012\144\145\160\145\156\144\151\156\147\040\157\156\040\154\157" \
+"\147\151\143\141\154\040\166\141\154\165\145\040\157\146\040\105" \
+"\130\120\122\105\123\123\111\117\116\000\133\117\120\124\111\117" \
+"\116\123\135\040\110\117\123\124\040\133\120\117\122\124\135\012" \
+"\012\124\162\141\156\163\146\145\162\040\141\040\146\151\154\145" \
+"\040\146\162\157\155\057\164\157\040\164\146\164\160\040\163\145" \
+"\162\166\145\162\012\012\011\055\154\040\106\111\114\105\011\114" \
+"\157\143\141\154\040\106\111\114\105\012\011\055\162\040\106\111" \
+"\114\105\011\122\145\155\157\164\145\040\106\111\114\105\012\011" \
+"\055\147\011\107\145\164\040\146\151\154\145\012\011\055\160\011" \
+"\120\165\164\040\146\151\154\145\000\133\055\143\162\135\040\133" \
+"\055\165\040\125\123\105\122\135\040\133\104\111\122\135\012\012" \
+"\124\162\141\156\163\146\145\162\040\141\040\146\151\154\145\040" \
+"\157\156\040\164\146\164\160\040\143\154\151\145\156\164\047\163" \
+"\040\162\145\161\165\145\163\164\012\012\164\146\164\160\144\040" \
+"\163\150\157\165\154\144\040\142\145\040\165\163\145\144\040\141" \
+"\163\040\141\156\040\151\156\145\164\144\040\163\145\162\166\151" \
+"\143\145\056\012\164\146\164\160\144\047\163\040\154\151\156\145" \
+"\040\146\157\162\040\151\156\145\164\144\056\143\157\156\146\072" \
+"\012\011\066\071\040\144\147\162\141\155\040\165\144\160\040\156" \
+"\157\167\141\151\164\040\162\157\157\164\040\164\146\164\160\144" \
+"\040\164\146\164\160\144\040\055\154\040\057\146\151\154\145\163" \
+"\057\164\157\057\163\145\162\166\145\012\111\164\040\141\154\163" \
+"\157\040\143\141\156\040\142\145\040\162\141\156\040\146\162\157" \
+"\155\040\165\144\160\163\166\144\072\012\011\165\144\160\163\166" \
+"\144\040\055\166\105\040\060\056\060\056\060\056\060\040\066\071" \
+"\040\164\146\164\160\144\040\057\146\151\154\145\163\057\164\157" \
+"\057\163\145\162\166\145\012\012\011\055\162\011\120\162\157\150" \
+"\151\142\151\164\040\165\160\154\157\141\144\012\011\055\143\011" \
+"\101\154\154\157\167\040\146\151\154\145\040\143\162\145\141\164" \
+"\151\157\156\040\166\151\141\040\165\160\154\157\141\144\012\011" \
+"\055\165\011\101\143\143\145\163\163\040\146\151\154\145\163\040" \
+"\141\163\040\125\123\105\122\012\011\055\154\011\114\157\147\040" \
+"\164\157\040\163\171\163\154\157\147\040\050\151\156\145\164\144" \
+"\040\155\157\144\145\040\162\145\161\165\151\162\145\163\040\164" \
+"\150\151\163\051\000\133\055\166\135\040\120\122\117\107\040\101" \
+"\122\107\123\012\012\122\165\156\040\120\122\117\107\054\040\144" \
+"\151\163\160\154\141\171\040\162\145\163\157\165\162\143\145\040" \
+"\165\163\141\147\145\040\167\150\145\156\040\151\164\040\145\170" \
+"\151\164\163\012\012\011\055\166\011\126\145\162\142\157\163\145" \
+"\000\133\055\164\040\123\105\103\123\135\040\133\055\163\040\123" \
+"\111\107\135\040\120\122\117\107\040\101\122\107\123\012\012\122" \
+"\165\156\163\040\120\122\117\107\056\040\123\145\156\144\163\040" \
+"\123\111\107\040\164\157\040\151\164\040\151\146\040\151\164\040" \
+"\151\163\040\156\157\164\040\147\157\156\145\040\151\156\040\123" \
+"\105\103\123\040\163\145\143\157\156\144\163\056\012\104\145\146" \
+"\141\165\154\164\163\072\040\123\105\103\123\072\040\061\060\054" \
+"\040\123\111\107\072\040\124\105\122\115\056\000\133\055\142\135" \
+"\040\133\055\156\103\117\125\116\124\135\040\133\055\144\123\105" \
+"\103\117\116\104\123\135\040\133\055\155\135\012\012\120\162\157" \
+"\166\151\144\145\040\141\040\166\151\145\167\040\157\146\040\160" \
+"\162\157\143\145\163\163\040\141\143\164\151\166\151\164\171\040" \
+"\151\156\040\162\145\141\154\040\164\151\155\145\056\012\122\145" \
+"\141\144\040\164\150\145\040\163\164\141\164\165\163\040\157\146" \
+"\040\141\154\154\040\160\162\157\143\145\163\163\145\163\040\146" \
+"\162\157\155\040\057\160\162\157\143\040\145\141\143\150\040\123" \
+"\105\103\117\116\104\123\012\141\156\144\040\144\151\163\160\154" \
+"\141\171\040\141\040\163\143\162\145\145\156\146\165\154\040\157" \
+"\146\040\164\150\145\155\056\012\113\145\171\163\072\012\011\116" \
+"\057\115\057\120\057\124\072\040\163\150\157\167\040\103\120\125" \
+"\040\165\163\141\147\145\054\040\163\157\162\164\040\142\171\040" \
+"\160\151\144\057\155\145\155\057\143\160\165\057\164\151\155\145" \
+"\012\011\123\072\040\163\150\157\167\040\155\145\155\157\162\171" \
+"\012\011\122\072\040\162\145\166\145\162\163\145\040\163\157\162" \
+"\164\012\011\110\072\040\164\157\147\147\154\145\040\164\150\162" \
+"\145\141\144\163\054\040\061\072\040\164\157\147\147\154\145\040" \
+"\123\115\120\012\011\121\054\136\103\072\040\145\170\151\164\012" \
+"\012\117\160\164\151\157\156\163\072\012\011\055\142\011\102\141" \
+"\164\143\150\040\155\157\144\145\012\011\055\156\040\116\011\105" \
+"\170\151\164\040\141\146\164\145\162\040\116\040\151\164\145\162" \
+"\141\164\151\157\156\163\012\011\055\144\040\116\011\104\145\154" \
+"\141\171\040\142\145\164\167\145\145\156\040\165\160\144\141\164" \
+"\145\163\012\011\055\155\011\123\141\155\145\040\141\163\040\047" \
+"\163\047\040\153\145\171\000\133\055\143\135\040\133\055\144\040" \
+"\104\101\124\105\135\040\133\055\164\040\104\101\124\105\135\040" \
+"\133\055\162\040\106\111\114\105\135\040\106\111\114\105\056\056" \
+"\056\012\012\125\160\144\141\164\145\040\164\150\145\040\154\141" \
+"\163\164\055\155\157\144\151\146\151\145\144\040\144\141\164\145" \
+"\040\157\156\040\164\150\145\040\147\151\166\145\156\040\106\111" \
+"\114\105\133\163\135\012\012\011\055\143\011\104\157\156\047\164" \
+"\040\143\162\145\141\164\145\040\146\151\154\145\163\012\011\055" \
+"\144\040\104\124\011\104\141\164\145\057\164\151\155\145\040\164" \
+"\157\040\165\163\145\012\011\055\164\040\104\124\011\104\141\164" \
+"\145\057\164\151\155\145\040\164\157\040\165\163\145\012\011\055" \
+"\162\040\106\111\114\105\011\125\163\145\040\106\111\114\105\047" \
+"\163\040\144\141\164\145\057\164\151\155\145\000\133\055\143\144" \
+"\163\135\040\123\124\122\111\116\107\061\040\133\123\124\122\111" \
+"\116\107\062\135\012\012\124\162\141\156\163\154\141\164\145\054" \
+"\040\163\161\165\145\145\172\145\054\040\157\162\040\144\145\154" \
+"\145\164\145\040\143\150\141\162\141\143\164\145\162\163\040\146" \
+"\162\157\155\040\163\164\144\151\156\054\040\167\162\151\164\151" \
+"\156\147\040\164\157\040\163\164\144\157\165\164\012\012\011\055" \
+"\143\011\124\141\153\145\040\143\157\155\160\154\145\155\145\156" \
+"\164\040\157\146\040\123\124\122\111\116\107\061\012\011\055\144" \
+"\011\104\145\154\145\164\145\040\151\156\160\165\164\040\143\150" \
+"\141\162\141\143\164\145\162\163\040\143\157\144\145\144\040\123" \
+"\124\122\111\116\107\061\012\011\055\163\011\123\161\165\145\145" \
+"\172\145\040\155\165\154\164\151\160\154\145\040\157\165\164\160" \
+"\165\164\040\143\150\141\162\141\143\164\145\162\163\040\157\146" \
+"\040\123\124\122\111\116\107\062\040\151\156\164\157\040\157\156" \
+"\145\040\143\150\141\162\141\143\164\145\162\000\133\055\106\111" \
+"\154\144\156\162\166\135\040\133\055\146\040\061\123\124\137\124" \
+"\124\114\135\040\133\055\155\040\115\101\130\124\124\114\135\040" \
+"\133\055\160\040\120\117\122\124\135\040\133\055\161\040\120\122" \
+"\117\102\105\123\135\012\011\133\055\163\040\123\122\103\137\111" \
+"\120\135\040\133\055\164\040\124\117\123\135\040\133\055\167\040" \
+"\127\101\111\124\137\123\105\103\135\040\133\055\147\040\107\101" \
+"\124\105\127\101\131\135\040\133\055\151\040\111\106\101\103\105" \
+"\135\012\011\133\055\172\040\120\101\125\123\105\137\115\123\105" \
+"\103\135\040\110\117\123\124\040\133\102\131\124\105\123\135\012" \
+"\012\124\162\141\143\145\040\164\150\145\040\162\157\165\164\145" \
+"\040\164\157\040\110\117\123\124\012\012\011\055\106\011\123\145" \
+"\164\040\164\150\145\040\144\157\156\047\164\040\146\162\141\147" \
+"\155\145\156\164\040\142\151\164\012\011\055\111\011\125\163\145" \
+"\040\111\103\115\120\040\105\103\110\117\040\151\156\163\164\145" \
+"\141\144\040\157\146\040\125\104\120\040\144\141\164\141\147\162" \
+"\141\155\163\012\011\055\154\011\104\151\163\160\154\141\171\040" \
+"\164\150\145\040\124\124\114\040\166\141\154\165\145\040\157\146" \
+"\040\164\150\145\040\162\145\164\165\162\156\145\144\040\160\141" \
+"\143\153\145\164\012\011\055\144\011\123\145\164\040\123\117\137" \
+"\104\105\102\125\107\040\157\160\164\151\157\156\163\040\164\157" \
+"\040\163\157\143\153\145\164\012\011\055\156\011\120\162\151\156" \
+"\164\040\156\165\155\145\162\151\143\040\141\144\144\162\145\163" \
+"\163\145\163\012\011\055\162\011\102\171\160\141\163\163\040\162" \
+"\157\165\164\151\156\147\040\164\141\142\154\145\163\054\040\163" \
+"\145\156\144\040\144\151\162\145\143\164\154\171\040\164\157\040" \
+"\110\117\123\124\012\011\055\166\011\126\145\162\142\157\163\145" \
+"\012\011\055\155\011\115\141\170\040\164\151\155\145\055\164\157" \
+"\055\154\151\166\145\040\050\155\141\170\040\156\165\155\142\145" \
+"\162\040\157\146\040\150\157\160\163\051\012\011\055\160\011\102" \
+"\141\163\145\040\125\104\120\040\160\157\162\164\040\156\165\155" \
+"\142\145\162\040\165\163\145\144\040\151\156\040\160\162\157\142" \
+"\145\163\012\011\011\050\144\145\146\141\165\154\164\040\063\063" \
+"\064\063\064\051\012\011\055\161\011\116\165\155\142\145\162\040" \
+"\157\146\040\160\162\157\142\145\163\040\160\145\162\040\124\124" \
+"\114\040\050\144\145\146\141\165\154\164\040\063\051\012\011\055" \
+"\163\011\111\120\040\141\144\144\162\145\163\163\040\164\157\040" \
+"\165\163\145\040\141\163\040\164\150\145\040\163\157\165\162\143" \
+"\145\040\141\144\144\162\145\163\163\012\011\055\164\011\124\171" \
+"\160\145\055\157\146\055\163\145\162\166\151\143\145\040\151\156" \
+"\040\160\162\157\142\145\040\160\141\143\153\145\164\163\040\050" \
+"\144\145\146\141\165\154\164\040\060\051\012\011\055\167\011\124" \
+"\151\155\145\040\151\156\040\163\145\143\157\156\144\163\040\164" \
+"\157\040\167\141\151\164\040\146\157\162\040\141\040\162\145\163" \
+"\160\157\156\163\145\040\050\144\145\146\141\165\154\164\040\063" \
+"\051\012\011\055\147\011\114\157\157\163\145\040\163\157\165\162" \
+"\143\145\040\162\157\165\164\145\040\147\141\164\145\167\141\171" \
+"\040\050\070\040\155\141\170\051\000\012\012\122\145\164\165\162" \
+"\156\040\141\156\040\145\170\151\164\040\143\157\144\145\040\157" \
+"\146\040\124\122\125\105\040\050\060\051\000\133\167\135\040\133" \
+"\150\135\012\012\120\162\151\156\164\040\144\151\155\145\156\163" \
+"\151\157\156\050\163\051\040\157\146\040\163\164\144\151\156\047" \
+"\163\040\164\145\162\155\151\156\141\154\054\040\157\156\040\145" \
+"\162\162\157\162\040\162\145\164\165\162\156\040\070\060\170\062" \
+"\065\000\133\055\143\040\115\101\130\137\115\117\125\116\124\137" \
+"\103\117\125\116\124\135\040\133\055\151\040\104\101\131\123\135" \
+"\040\133\055\103\040\115\117\125\116\124\137\103\117\125\116\124" \
+"\135\040\133\055\114\040\114\101\102\105\114\135\040\102\114\117" \
+"\103\113\104\105\126\012\012\101\144\152\165\163\164\040\146\151" \
+"\154\145\163\171\163\164\145\155\040\157\160\164\151\157\156\163" \
+"\040\157\156\040\145\170\164\133\062\063\135\040\146\151\154\145" \
+"\163\171\163\164\145\155\163\000\133\117\120\124\111\117\116\123" \
+"\135\040\106\111\114\105\123\131\123\124\105\115\174\104\111\122" \
+"\105\103\124\117\122\131\012\012\125\156\155\157\165\156\164\040" \
+"\146\151\154\145\040\163\171\163\164\145\155\163\012\012\011\055" \
+"\141\011\125\156\155\157\165\156\164\040\141\154\154\040\146\151" \
+"\154\145\040\163\171\163\164\145\155\163\012\011\055\162\011\124" \
+"\162\171\040\164\157\040\162\145\155\157\165\156\164\040\144\145" \
+"\166\151\143\145\163\040\141\163\040\162\145\141\144\055\157\156" \
+"\154\171\040\151\146\040\155\157\165\156\164\040\151\163\040\142" \
+"\165\163\171\012\011\055\154\011\114\141\172\171\040\165\155\157" \
+"\165\156\164\040\050\144\145\164\141\143\150\040\146\151\154\145" \
+"\163\171\163\164\145\155\051\012\011\055\146\011\106\157\162\143" \
+"\145\040\165\155\157\165\156\164\040\050\151\056\145\056\054\040" \
+"\165\156\162\145\141\143\150\141\142\154\145\040\116\106\123\040" \
+"\163\145\162\166\145\162\051\012\011\055\144\011\106\162\145\145" \
+"\040\154\157\157\160\040\144\145\166\151\143\145\040\145\166\145" \
+"\156\040\151\146\040\151\164\040\150\141\163\040\142\145\145\156" \
+"\040\165\163\145\144\000\133\055\141\155\156\162\163\160\166\135" \
+"\012\012\120\162\151\156\164\040\163\171\163\164\145\155\040\151" \
+"\156\146\157\162\155\141\164\151\157\156\012\012\011\055\141\011" \
+"\120\162\151\156\164\040\141\154\154\012\011\055\155\011\124\150" \
+"\145\040\155\141\143\150\151\156\145\040\050\150\141\162\144\167" \
+"\141\162\145\051\040\164\171\160\145\012\011\055\156\011\110\157" \
+"\163\164\156\141\155\145\012\011\055\162\011\117\123\040\162\145" \
+"\154\145\141\163\145\012\011\055\163\011\117\123\040\156\141\155" \
+"\145\040\050\144\145\146\141\165\154\164\051\012\011\055\160\011" \
+"\120\162\157\143\145\163\163\157\162\040\164\171\160\145\012\011" \
+"\055\166\011\117\123\040\166\145\162\163\151\157\156\000\133\055" \
+"\143\146\135\040\133\106\111\114\105\135\056\056\056\012\012\104" \
+"\145\143\157\155\160\162\145\163\163\040\056\132\040\146\151\154" \
+"\145\133\163\135\012\012\011\055\143\011\127\162\151\164\145\040" \
+"\164\157\040\163\164\144\157\165\164\012\011\055\146\011\117\166" \
+"\145\162\167\162\151\164\145\000\133\055\146\141\135\133\055\164" \
+"\040\116\135\040\133\106\111\114\105\135\056\056\056\012\012\103" \
+"\157\156\166\145\162\164\040\163\160\141\143\145\163\040\164\157" \
+"\040\164\141\142\163\054\040\167\162\151\164\151\156\147\040\164" \
+"\157\040\163\164\144\157\165\164\012\012\011\055\141\054\055\055" \
+"\141\154\154\011\103\157\156\166\145\162\164\040\141\154\154\040" \
+"\142\154\141\156\153\163\012\011\055\146\054\055\055\146\151\162" \
+"\163\164\055\157\156\154\171\011\103\157\156\166\145\162\164\040" \
+"\157\156\154\171\040\154\145\141\144\151\156\147\040\142\154\141" \
+"\156\153\163\012\011\055\164\054\055\055\164\141\142\163\075\116" \
+"\011\124\141\142\163\164\157\160\163\040\145\166\145\162\171\040" \
+"\116\040\143\150\141\162\163\000\133\055\143\144\165\135\133\055" \
+"\146\054\163\054\167\040\116\135\040\133\111\116\120\125\124\040" \
+"\133\117\125\124\120\125\124\135\135\012\012\104\151\163\143\141" \
+"\162\144\040\144\165\160\154\151\143\141\164\145\040\154\151\156" \
+"\145\163\012\012\011\055\143\011\120\162\145\146\151\170\040\154" \
+"\151\156\145\163\040\142\171\040\164\150\145\040\156\165\155\142" \
+"\145\162\040\157\146\040\157\143\143\165\162\162\145\156\143\145" \
+"\163\012\011\055\144\011\117\156\154\171\040\160\162\151\156\164" \
+"\040\144\165\160\154\151\143\141\164\145\040\154\151\156\145\163" \
+"\012\011\055\165\011\117\156\154\171\040\160\162\151\156\164\040" \
+"\165\156\151\161\165\145\040\154\151\156\145\163\012\011\055\146" \
+"\040\116\011\123\153\151\160\040\146\151\162\163\164\040\116\040" \
+"\146\151\145\154\144\163\012\011\055\163\040\116\011\123\153\151" \
+"\160\040\146\151\162\163\164\040\116\040\143\150\141\162\163\040" \
+"\050\141\146\164\145\162\040\141\156\171\040\163\153\151\160\160" \
+"\145\144\040\146\151\145\154\144\163\051\012\011\055\167\040\116" \
+"\011\103\157\155\160\141\162\145\040\116\040\143\150\141\162\141" \
+"\143\164\145\162\163\040\151\156\040\154\151\156\145\000\133\055" \
+"\165\144\135\040\133\106\111\114\105\135\012\012\103\157\156\166" \
+"\145\162\164\040\106\111\114\105\040\151\156\055\160\154\141\143" \
+"\145\040\146\162\157\155\040\125\156\151\170\040\164\157\040\104" \
+"\117\123\040\146\157\162\155\141\164\056\012\127\150\145\156\040" \
+"\156\157\040\146\151\154\145\040\151\163\040\147\151\166\145\156" \
+"\054\040\165\163\145\040\163\164\144\151\156\057\163\164\144\157" \
+"\165\164\056\012\012\011\055\165\011\144\157\163\062\165\156\151" \
+"\170\012\011\055\144\011\165\156\151\170\062\144\157\163\000\133" \
+"\055\143\146\135\040\133\106\111\114\105\135\056\056\056\012\012" \
+"\104\145\143\157\155\160\162\145\163\163\040\106\111\114\105\040" \
+"\050\157\162\040\163\164\144\151\156\051\012\012\011\055\143\011" \
+"\127\162\151\164\145\040\164\157\040\163\164\144\157\165\164\012" \
+"\011\055\146\011\106\157\162\143\145\000\133\055\143\146\166\103" \
+"\106\135\040\133\106\111\114\105\135\056\056\056\012\012\011\055" \
+"\143\011\127\162\151\164\145\040\164\157\040\163\164\144\157\165" \
+"\164\012\011\055\146\011\106\157\162\143\145\012\011\055\166\011" \
+"\126\145\162\142\157\163\145\012\011\055\106\011\104\157\156\047" \
+"\164\040\163\164\157\162\145\040\157\162\040\166\145\162\151\146" \
+"\171\040\143\150\145\143\153\163\165\155\000\133\055\143\146\135" \
+"\040\133\106\111\114\105\135\056\056\056\012\012\104\145\143\157" \
+"\155\160\162\145\163\163\040\106\111\114\105\040\050\157\162\040" \
+"\163\164\144\151\156\051\012\012\011\055\143\011\127\162\151\164" \
+"\145\040\164\157\040\163\164\144\157\165\164\012\011\055\146\011" \
+"\106\157\162\143\145\000\133\055\154\156\157\160\161\135\040\106" \
+"\111\114\105\133\056\172\151\160\135\040\133\106\111\114\105\135" \
+"\056\056\056\040\133\055\170\040\106\111\114\105\056\056\056\135" \
+"\040\133\055\144\040\104\111\122\135\012\012\105\170\164\162\141" \
+"\143\164\040\106\111\114\105\163\040\146\162\157\155\040\132\111" \
+"\120\040\141\162\143\150\151\166\145\012\012\011\055\154\011\114" \
+"\151\163\164\040\143\157\156\164\145\156\164\163\040\050\167\151" \
+"\164\150\040\055\161\040\146\157\162\040\163\150\157\162\164\040" \
+"\146\157\162\155\051\012\011\055\156\011\116\145\166\145\162\040" \
+"\157\166\145\162\167\162\151\164\145\040\146\151\154\145\163\040" \
+"\050\144\145\146\141\165\154\164\072\040\141\163\153\051\012\011" \
+"\055\157\011\117\166\145\162\167\162\151\164\145\012\011\055\160" \
+"\011\120\162\151\156\164\040\164\157\040\163\164\144\157\165\164" \
+"\012\011\055\161\011\121\165\151\145\164\012\011\055\170\040\106" \
+"\111\114\105\011\105\170\143\154\165\144\145\040\106\111\114\105" \
+"\163\012\011\055\144\040\104\111\122\011\105\170\164\162\141\143" \
+"\164\040\151\156\164\157\040\104\111\122\000\012\012\104\151\163" \
+"\160\154\141\171\040\164\150\145\040\164\151\155\145\040\163\151" \
+"\156\143\145\040\164\150\145\040\154\141\163\164\040\142\157\157" \
+"\164\000\116\012\012\120\141\165\163\145\040\146\157\162\040\116" \
+"\040\155\151\143\162\157\163\145\143\157\156\144\163\000\133\055" \
+"\157\040\117\125\124\106\111\114\105\135\040\133\111\116\106\111" \
+"\114\105\135\012\012\125\165\144\145\143\157\144\145\040\141\040" \
+"\146\151\154\145\012\106\151\156\144\163\040\117\125\124\106\111" \
+"\114\105\040\151\156\040\165\165\145\156\143\157\144\145\144\040" \
+"\163\157\165\162\143\145\040\165\156\154\145\163\163\040\055\157" \
+"\040\151\163\040\147\151\166\145\156\000\133\055\155\135\040\133" \
+"\106\111\114\105\135\040\123\124\117\122\105\104\137\106\111\114" \
+"\105\116\101\115\105\012\012\125\165\145\156\143\157\144\145\040" \
+"\106\111\114\105\040\050\157\162\040\163\164\144\151\156\051\040" \
+"\164\157\040\163\164\144\157\165\164\012\012\011\055\155\011\125" \
+"\163\145\040\142\141\163\145\066\064\040\145\156\143\157\144\151" \
+"\156\147\040\160\145\162\040\122\106\103\061\065\062\061\000\133" \
+"\117\120\124\111\117\116\123\135\040\133\106\111\114\105\135\056" \
+"\056\056\012\012\105\144\151\164\040\106\111\114\105\012\012\011" \
+"\055\143\040\103\115\104\011\111\156\151\164\151\141\154\040\143" \
+"\157\155\155\141\156\144\040\164\157\040\162\165\156\040\050\044" \
+"\105\130\111\116\111\124\040\141\154\163\157\040\141\166\141\151" \
+"\154\141\142\154\145\051\012\011\055\122\011\122\145\141\144\055" \
+"\157\156\154\171\012\011\055\110\011\114\151\163\164\040\141\166" \
+"\141\151\154\141\142\154\145\040\146\145\141\164\165\162\145\163" \
+"\000\133\055\156\040\123\105\103\135\040\133\055\164\135\040\120" \
+"\122\117\107\040\101\122\107\123\012\012\122\165\156\040\120\122" \
+"\117\107\040\160\145\162\151\157\144\151\143\141\154\154\171\012" \
+"\012\011\055\156\011\114\157\157\160\040\160\145\162\151\157\144" \
+"\040\151\156\040\163\145\143\157\156\144\163\040\050\144\145\146" \
+"\141\165\154\164\040\062\051\012\011\055\164\011\104\157\156\047" \
+"\164\040\160\162\151\156\164\040\150\145\141\144\145\162\000\133" \
+"\055\143\155\154\167\114\135\040\133\106\111\114\105\135\056\056" \
+"\056\012\012\103\157\165\156\164\040\154\151\156\145\163\054\040" \
+"\167\157\162\144\163\054\040\141\156\144\040\142\171\164\145\163" \
+"\040\146\157\162\040\145\141\143\150\040\106\111\114\105\040\050" \
+"\157\162\040\163\164\144\151\156\051\012\012\011\055\143\011\103" \
+"\157\165\156\164\040\142\171\164\145\163\012\011\055\155\011\103" \
+"\157\165\156\164\040\143\150\141\162\141\143\164\145\162\163\012" \
+"\011\055\154\011\103\157\165\156\164\040\156\145\167\154\151\156" \
+"\145\163\012\011\055\167\011\103\157\165\156\164\040\167\157\162" \
+"\144\163\012\011\055\114\011\120\162\151\156\164\040\154\157\156" \
+"\147\145\163\164\040\154\151\156\145\040\154\145\156\147\164\150" \
+"\000\133\055\143\174\055\055\143\157\156\164\151\156\165\145\135" \
+"\040\133\055\163\174\055\055\163\160\151\144\145\162\135\040\133" \
+"\055\161\174\055\055\161\165\151\145\164\135\040\133\055\117\174" \
+"\055\055\157\165\164\160\165\164\055\144\157\143\165\155\145\156" \
+"\164\040\106\111\114\105\135\012\011\133\055\055\150\145\141\144" \
+"\145\162\040\047\150\145\141\144\145\162\072\040\166\141\154\165" \
+"\145\047\135\040\133\055\131\174\055\055\160\162\157\170\171\040" \
+"\157\156\057\157\146\146\135\040\133\055\120\040\104\111\122\135" \
+"\012\011\133\055\125\174\055\055\165\163\145\162\055\141\147\145" \
+"\156\164\040\101\107\105\116\124\135\040\133\055\124\040\123\105" \
+"\103\135\040\125\122\114\056\056\056\012\012\122\145\164\162\151" \
+"\145\166\145\040\146\151\154\145\163\040\166\151\141\040\110\124" \
+"\124\120\040\157\162\040\106\124\120\012\012\011\055\163\011\123" \
+"\160\151\144\145\162\040\155\157\144\145\040\055\040\157\156\154" \
+"\171\040\143\150\145\143\153\040\146\151\154\145\040\145\170\151" \
+"\163\164\145\156\143\145\012\011\055\143\011\103\157\156\164\151" \
+"\156\165\145\040\162\145\164\162\151\145\166\141\154\040\157\146" \
+"\040\141\142\157\162\164\145\144\040\164\162\141\156\163\146\145" \
+"\162\012\011\055\161\011\121\165\151\145\164\012\011\055\120\040" \
+"\104\111\122\011\123\141\166\145\040\164\157\040\104\111\122\040" \
+"\050\144\145\146\141\165\154\164\040\056\051\012\011\055\124\040" \
+"\123\105\103\011\116\145\164\167\157\162\153\040\162\145\141\144" \
+"\040\164\151\155\145\157\165\164\040\151\163\040\123\105\103\040" \
+"\163\145\143\157\156\144\163\012\011\055\117\040\106\111\114\105" \
+"\011\123\141\166\145\040\164\157\040\106\111\114\105\040\050\047" \
+"\055\047\040\146\157\162\040\163\164\144\157\165\164\051\012\011" \
+"\055\125\040\123\124\122\011\125\163\145\040\123\124\122\040\146" \
+"\157\162\040\125\163\145\162\055\101\147\145\156\164\040\150\145" \
+"\141\144\145\162\012\011\055\131\011\125\163\145\040\160\162\157" \
+"\170\171\040\050\047\157\156\047\040\157\162\040\047\157\146\146" \
+"\047\051\000\133\103\117\115\115\101\116\104\135\056\056\056\012" \
+"\012\114\157\143\141\164\145\040\141\040\103\117\115\115\101\116" \
+"\104\000\012\012\120\162\151\156\164\040\164\150\145\040\165\163" \
+"\145\162\040\156\141\155\145\040\141\163\163\157\143\151\141\164" \
+"\145\144\040\167\151\164\150\040\164\150\145\040\143\165\162\162" \
+"\145\156\164\040\145\146\146\145\143\164\151\166\145\040\165\163" \
+"\145\162\040\151\144\000\133\117\120\124\111\117\116\123\135\040" \
+"\133\120\122\117\107\040\101\122\107\123\135\012\012\122\165\156" \
+"\040\120\122\117\107\040\157\156\040\145\166\145\162\171\040\151" \
+"\164\145\155\040\147\151\166\145\156\040\142\171\040\163\164\144" \
+"\151\156\012\012\011\055\160\011\101\163\153\040\165\163\145\162" \
+"\040\167\150\145\164\150\145\162\040\164\157\040\162\165\156\040" \
+"\145\141\143\150\040\143\157\155\155\141\156\144\012\011\055\162" \
+"\011\104\157\156\047\164\040\162\165\156\040\143\157\155\155\141" \
+"\156\144\040\151\146\040\151\156\160\165\164\040\151\163\040\145" \
+"\155\160\164\171\012\011\055\060\011\111\156\160\165\164\040\151" \
+"\163\040\163\145\160\141\162\141\164\145\144\040\142\171\040\116" \
+"\125\114\040\143\150\141\162\141\143\164\145\162\163\012\011\055" \
+"\164\011\120\162\151\156\164\040\164\150\145\040\143\157\155\155" \
+"\141\156\144\040\157\156\040\163\164\144\145\162\162\040\142\145" \
+"\146\157\162\145\040\145\170\145\143\165\164\151\157\156\012\011" \
+"\055\145\133\123\124\122\135\011\123\124\122\040\163\164\157\160" \
+"\163\040\151\156\160\165\164\040\160\162\157\143\145\163\163\151" \
+"\156\147\012\011\055\156\040\116\011\120\141\163\163\040\156\157" \
+"\040\155\157\162\145\040\164\150\141\156\040\116\040\141\162\147" \
+"\163\040\164\157\040\120\122\117\107\012\011\055\163\040\116\011" \
+"\120\141\163\163\040\143\157\155\155\141\156\144\040\154\151\156" \
+"\145\040\157\146\040\156\157\040\155\157\162\145\040\164\150\141" \
+"\156\040\116\040\142\171\164\145\163\012\011\055\170\011\105\170" \
+"\151\164\040\151\146\040\163\151\172\145\040\151\163\040\145\170" \
+"\143\145\145\144\145\144\000\055\144\040\133\055\143\146\135\040" \
+"\133\106\111\114\105\135\056\056\056\012\012\104\145\143\157\155" \
+"\160\162\145\163\163\040\106\111\114\105\040\050\157\162\040\163" \
+"\164\144\151\156\051\012\012\011\055\144\011\104\145\143\157\155" \
+"\160\162\145\163\163\012\011\055\143\011\127\162\151\164\145\040" \
+"\164\157\040\163\164\144\157\165\164\012\011\055\146\011\106\157" \
+"\162\143\145\000\133\106\111\114\105\135\056\056\056\012\012\104" \
+"\145\143\157\155\160\162\145\163\163\040\164\157\040\163\164\144" \
+"\157\165\164\000\133\123\124\122\111\116\107\135\012\012\122\145" \
+"\160\145\141\164\145\144\154\171\040\157\165\164\160\165\164\040" \
+"\141\040\154\151\156\145\040\167\151\164\150\040\123\124\122\111" \
+"\116\107\054\040\157\162\040\047\171\047\000\133\106\111\114\105" \
+"\135\056\056\056\012\012\104\145\143\157\155\160\162\145\163\163" \
+"\040\164\157\040\163\164\144\157\165\164\000" \
#define PACKED_USAGE \
-0x68,0x31,0x31,0x41,0x59,0x26,0x53,0x59,0x2e,0x83,0x30,0xf7,0x00,0x1a,0xcf,0x5f, \
-0x80,0x72,0x70,0x77,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x60, \
-0x4f,0x05,0x07,0xa0,0x00,0x7d,0xf6,0x78,0xa0,0x14,0x1a,0x8e,0xe7,0x6c,0x06,0xb3, \
-0x65,0x06,0xf7,0xb7,0xbd,0x48,0xda,0xb5,0x1a,0x34,0x85,0xa6,0x47,0xd3,0x76,0x68, \
-0x1e,0xec,0x1d,0x52,0xa7,0xde,0xc0,0x0b,0xd0,0x02,0x4d,0xed,0x8f,0x7b,0xbb,0xce, \
-0xc3,0xd9,0x25,0xed,0xb0,0xfa,0xdd,0x4c,0x92,0xc5,0x29,0x5b,0x46,0xca,0xbe,0xdb, \
-0x9e,0xee,0xdd,0xdd,0x6a,0x3d,0xb4,0x44,0x87,0x4f,0x80,0x72,0xf6,0xe9,0x5b,0x5b, \
-0x21,0x7b,0x90,0xee,0x50,0x32,0xd7,0xd1,0x95,0xe8,0x5c,0x80,0x00,0xde,0xbd,0xce, \
-0xeb,0x99,0x73,0x77,0x77,0xa7,0xb8,0x7b,0x2c,0x54,0x94,0x6b,0x6a,0x52,0xcd,0xce, \
-0xe5,0x37,0x1b,0xa3,0xde,0xf7,0x1e,0xd9,0x66,0x64,0x50,0xf1,0x32,0x6b,0x95,0xd8, \
-0x6d,0xb6,0xd2,0x1a,0xd2,0xd5,0x1a,0xf6,0xeb,0x95,0x50,0xed,0x92,0x1d,0x48,0x67, \
-0x1b,0x61,0xa3,0x6f,0x4d,0x5e,0xce,0xee,0x5b,0xd5,0x01,0x37,0x89,0x3d,0x99,0xb5, \
-0xb5,0x1b,0x36,0xd6,0x64,0x63,0xbc,0x33,0xe6,0x1a,0x98,0x80,0x80,0x01,0x00,0x13, \
-0x09,0x88,0x1a,0x04,0xc4,0x1a,0x99,0x29,0xfe,0x90,0xd3,0x2a,0x7e,0x98,0x99,0x06, \
-0x29,0xa6,0x14,0xf5,0x06,0x9a,0x09,0x90,0x82,0x02,0x27,0xa4,0x60,0xa6,0x80,0xd2, \
-0x9f,0xaa,0x7a,0x26,0x02,0x34,0x69,0xb5,0x34,0xd3,0x40,0x00,0x68,0x00,0x68,0x1a, \
-0x61,0x12,0x12,0x12,0x34,0x00,0xd1,0xa6,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \
-0x00,0x49,0xa5,0x10,0x40,0x80,0x04,0xd0,0x4c,0x89,0x90,0xd1,0x27,0xb4,0x69,0x4f, \
-0xd5,0x3c,0xa3,0xd3,0xca,0x9a,0x32,0x1f,0xaa,0x7a,0x83,0xd2,0x68,0x01,0xa0,0xc8, \
-0x11,0x24,0x40,0x80,0x9a,0x69,0xa1,0xaa,0x69,0xb2,0x9a,0x6d,0x25,0x3f,0x46,0x8d, \
-0x53,0x7a,0x64,0x0a,0x7e,0x94,0xf5,0x37,0x95,0x0c,0x83,0xd4,0x3c,0xa0,0x1e,0xa1, \
-0xa1,0xa0,0x12,0x22,0x20,0x13,0x10,0x26,0x4d,0x02,0x06,0x9a,0x23,0x4c,0x10,0x04, \
-0xc5,0x47,0xea,0x9f,0xaa,0x7a,0x4f,0x4d,0x13,0xd2,0x03,0x4d,0x19,0x34,0x0d,0x27, \
-0xf9,0x9f,0xb3,0xcb,0x83,0xcc,0x5e,0x6f,0x9c,0xc1,0xfc,0xf1,0x7e,0xb9,0x0d,0x64, \
-0x50,0xf0,0x5c,0x9f,0x40,0xdf,0x73,0x10,0xff,0x97,0xa7,0x9d,0xae,0xb7,0x23,0xc3, \
-0xbf,0x26,0xa0,0x8d,0x69,0x27,0xce,0x34,0x5c,0x8c,0xec,0x73,0xdc,0x42,0x8a,0xbf, \
-0x78,0x96,0x55,0x14,0x7f,0x26,0xb1,0x6b,0x04,0xe4,0xfa,0x7d,0x12,0xb3,0x6c,0x82, \
-0x43,0x86,0xf3,0x32,0x55,0x03,0xbf,0x7d,0x1f,0x73,0x8f,0xf2,0x96,0x81,0x47,0xf5, \
-0xe5,0x71,0x04,0xc6,0x20,0x46,0x99,0xbf,0x73,0xfb,0xff,0xa2,0x6b,0x3d,0xad,0xfb, \
-0x39,0x6d,0xa3,0xc2,0xc9,0x71,0xd4,0x10,0x61,0x91,0xcd,0x88,0xd2,0x8f,0xa9,0xaa, \
-0x9c,0xc7,0x52,0xe1,0x2c,0x71,0xbe,0xf2,0xd8,0x91,0x34,0x8e,0x33,0x96,0x3a,0x7f, \
-0xa6,0x1e,0x5a,0x0e,0x65,0xfa,0x65,0x96,0x11,0xbb,0xad,0x6b,0x29,0x61,0x3b,0x5f, \
-0x4c,0x75,0xae,0x10,0xee,0x26,0x17,0x10,0x2f,0x8f,0xe6,0x36,0x16,0x33,0xdc,0x03, \
-0x42,0xb6,0xa8,0x08,0xe6,0x3f,0xfa,0x5c,0x3f,0xd3,0x11,0x4a,0x1f,0xb1,0x3b,0xfa, \
-0x20,0x63,0xd0,0x66,0xa2,0xd7,0x5b,0x07,0xc5,0x62,0x4d,0x79,0x7d,0x9f,0xc7,0xc0, \
-0xe0,0xb6,0x06,0xbb,0x44,0x40,0xf5,0xab,0x8a,0x61,0x7e,0xbd,0x43,0x27,0xf7,0xd1, \
-0x9a,0x89,0xb7,0xd5,0xfc,0xd7,0xd3,0xef,0xf1,0x5a,0x93,0x7f,0x63,0x2d,0xd8,0x7f, \
-0xab,0xbf,0x60,0xf8,0x5f,0x7e,0xae,0xdb,0x3f,0x69,0x79,0x27,0xa8,0x66,0x1c,0xf9, \
-0x1f,0x1d,0x7d,0x68,0xf4,0x0c,0xbe,0x1f,0x4c,0xf3,0x20,0x18,0x97,0xfb,0xe4,0x7b, \
-0x70,0xdb,0x93,0xaf,0x2c,0xd5,0xa5,0x8a,0xe2,0x25,0xce,0xee,0xb9,0x71,0xd0,0xed, \
-0x9b,0xf6,0x0b,0xe2,0xa0,0xc8,0xf8,0x25,0x54,0x44,0x51,0x61,0x24,0x92,0x7e,0xff, \
-0x37,0x57,0xe9,0xc3,0x2c,0xb2,0x88,0x46,0x40,0x40,0x53,0xfa,0xfe,0xaa,0xf6,0xf4, \
-0xd0,0x85,0xc9,0xc9,0xbf,0xbf,0x2e,0xaa,0x07,0xe3,0xc7,0xd2,0xc8,0xfa,0x05,0x54, \
-0x49,0x27,0x8f,0x84,0xc6,0xf2,0xd1,0xb5,0xe1,0xe9,0x84,0x74,0xdf,0x70,0xe7,0x61, \
-0x19,0x56,0xad,0xc9,0xc2,0x57,0xe5,0x3d,0xf1,0x89,0xe9,0x99,0x4a,0x62,0x97,0xef, \
-0x11,0xbe,0x26,0x36,0xe8,0xb4,0x50,0x5b,0x6d,0xe5,0x7b,0xea,0xcc,0xd1,0xc6,0xbd, \
-0xd6,0xba,0x3c,0xd4,0xb6,0xe5,0xa6,0x30,0x61,0x56,0xde,0x01,0xec,0x2b,0x18,0xc2, \
-0x4e,0x6a,0xd5,0x95,0x1c,0x0b,0x1d,0xcd,0x5c,0xee,0xaa,0xec,0xb8,0xa3,0xb4,0x95, \
-0x31,0x4d,0xbd,0xf6,0x2e,0x89,0x28,0x98,0xd4,0x17,0x3d,0x0d,0x40,0x57,0xaa,0x4b, \
-0xb3,0x2b,0xc5,0xc8,0x25,0xe3,0xbd,0x10,0x90,0xa1,0x8a,0x76,0x65,0x60,0x7a,0x2f, \
-0x96,0xe0,0x50,0x2c,0xf9,0xf7,0xe7,0x97,0x05,0x62,0x69,0x26,0xeb,0xe0,0x5d,0xec, \
-0x1c,0xc0,0x37,0x3e,0xe5,0x63,0x52,0x90,0x12,0x94,0x44,0xac,0xc3,0xe9,0xd5,0xbd, \
-0x9e,0xf4,0x30,0x5d,0x36,0x62,0xc7,0x74,0xb3,0xef,0x10,0xe1,0x29,0xf1,0x0f,0xa7, \
-0x1f,0xd1,0x0c,0xa2,0x6d,0xf8,0xb6,0x97,0x3a,0xc6,0x43,0x0e,0xa3,0xb0,0xd9,0x97, \
-0x0d,0xc9,0x6d,0xbc,0x18,0xba,0xb2,0x72,0x70,0xbf,0x88,0xf3,0x6c,0x0c,0x02,0xc9, \
-0xb7,0xed,0x58,0x90,0x53,0x52,0x60,0xcf,0xc4,0x95,0x62,0x3b,0xe7,0x5c,0x30,0x58, \
-0xd1,0xc2,0x51,0xe0,0xc9,0x38,0x7d,0x71,0xe7,0x17,0xb8,0xc1,0x05,0x82,0xb1,0x5a, \
-0x38,0x86,0xde,0x96,0x58,0x2a,0x19,0xe3,0xe9,0xbe,0x17,0x8a,0xc3,0x0c,0x61,0x87, \
-0xf2,0x3e,0x7d,0xf1,0x62,0xae,0xec,0xfa,0xfc,0xf2,0x0c,0x1d,0x15,0xd0,0xbc,0x39, \
-0x3e,0xbc,0x92,0x8a,0x6b,0xe8,0xba,0x42,0x3e,0x99,0x73,0x71,0x66,0xa3,0xbb,0x10, \
-0xd4,0x08,0x4c,0x1b,0x5a,0xa3,0x91,0x8b,0xdd,0x01,0xc1,0x23,0x07,0x28,0x83,0x4b, \
-0x39,0x0b,0x84,0xc6,0x63,0x66,0xbc,0x2d,0xd8,0xd3,0x8b,0x46,0x78,0xe7,0x66,0xc3, \
-0xc0,0xf3,0x76,0xec,0x29,0xaf,0x26,0x40,0xa7,0x10,0xc8,0xbc,0x8b,0x50,0x42,0xd5, \
-0x11,0x83,0x30,0x44,0x40,0x88,0x1a,0x12,0x5e,0xf8,0x63,0x8a,0x67,0x3b,0x81,0x62, \
-0xa8,0x2c,0x10,0xfd,0x71,0x0b,0xa2,0x64,0xe0,0xb1,0x03,0x5e,0x45,0xce,0x59,0x29, \
-0x9d,0x7e,0x66,0x08,0x7a,0x77,0x20,0xa4,0xb2,0x90,0xfd,0xf5,0x9f,0x2e,0x99,0x93, \
-0x41,0x06,0x4e,0x73,0x90,0x19,0x64,0x4e,0x5c,0x87,0x14,0xce,0x50,0xd7,0x9c,0xec, \
-0x12,0xeb,0xa9,0x30,0x39,0xa5,0x07,0x43,0x86,0x46,0xc7,0x97,0x5b,0x36,0x19,0xc3, \
-0x9b,0xa3,0x24,0x03,0xa9,0xca,0xae,0xe6,0xe0,0xbd,0xa5,0x3e,0xc9,0xaa,0xcf,0x21, \
-0x87,0xe3,0x09,0x7d,0x37,0x1e,0x55,0xb7,0x93,0x5c,0x5b,0x7f,0x4d,0xec,0x6b,0x3f, \
-0xdd,0xc3,0x1f,0x55,0xe1,0xc0,0x92,0xe2,0x2c,0xfc,0x2e,0xcc,0x3a,0xc4,0x2c,0xd7, \
-0x8e,0x0a,0x8e,0x5b,0x33,0x13,0x98,0xdc,0x23,0x85,0x3b,0xa5,0xa5,0x03,0x2d,0xa9, \
-0x6f,0x7e,0x1f,0x46,0x7f,0x5e,0xe9,0xc4,0x62,0x99,0x74,0xa8,0x1f,0x08,0x21,0x8c, \
-0x66,0xa4,0x14,0xf3,0xea,0x97,0xfe,0x5f,0x3c,0x3b,0x39,0xb2,0xed,0x7e,0xfb,0xfe, \
-0x9a,0x55,0x21,0xe2,0x72,0xfc,0x23,0xd6,0x0c,0x00,0xca,0x29,0x3f,0x85,0xa0,0x73, \
-0x30,0x17,0x08,0x88,0x07,0x03,0xd2,0xe0,0x44,0x18,0x4c,0x92,0x94,0x6a,0x21,0x58, \
-0x20,0xa5,0xc2,0xdd,0x1f,0xab,0xc2,0xcb,0xe7,0xc9,0xc3,0xe3,0x65,0xad,0xfb,0x5d, \
-0x8e,0x00,0x4d,0x1b,0xc9,0xc7,0xda,0x40,0xd6,0x87,0x9a,0x2d,0x56,0xc7,0xeb,0x73, \
-0xa0,0xba,0xd7,0xde,0xb2,0xca,0x7d,0x48,0x60,0x98,0x9a,0xea,0x40,0x39,0x6d,0x37, \
-0x17,0xb1,0xf5,0x90,0xa5,0x8f,0x4d,0xad,0x5b,0x16,0x74,0x50,0x20,0xc9,0xa9,0x84, \
-0xbb,0x85,0x16,0xc7,0xab,0xd9,0x2c,0x50,0xd8,0x5f,0xf1,0x0f,0x9c,0x78,0x3e,0x74, \
-0xa1,0xfc,0x87,0xf0,0x94,0x61,0x9c,0xf8,0x69,0xd2,0x66,0x6c,0x08,0x9b,0x3c,0x87, \
-0x83,0x00,0x61,0xdb,0x73,0x3e,0xef,0xb1,0xb3,0x36,0xf9,0x0e,0x52,0x0d,0x2a,0xc0, \
-0xb6,0x05,0x8b,0x10,0x6c,0xbb,0xe5,0x45,0x52,0xa0,0xb2,0xcb,0x24,0x78,0x2d,0x1b, \
-0x7b,0xac,0xe5,0xc0,0xf6,0x9d,0xe9,0x50,0x5c,0xd1,0x42,0x53,0xec,0xe2,0xb4,0xeb, \
-0x04,0xa1,0x28,0x88,0x21,0x67,0x41,0x04,0x85,0xf7,0x24,0xd5,0xca,0x8a,0xd8,0x32, \
-0x4f,0x5b,0xa4,0xc4,0xe8,0x24,0x04,0xf9,0xd9,0xbc,0x52,0xd5,0x4c,0xb5,0x6a,0x34, \
-0x09,0xf9,0x8b,0x36,0xc5,0xb9,0x1e,0x59,0x89,0x71,0xf6,0x91,0xa8,0x41,0x7f,0x82, \
-0x71,0x98,0x5f,0x2d,0x3d,0xb5,0x50,0xf6,0xd7,0xa5,0xfd,0x82,0xbf,0x04,0xac,0x28, \
-0x9f,0x7e,0x39,0x7b,0xdf,0x41,0xf9,0x2a,0xc3,0xba,0xea,0x75,0x99,0xcc,0x41,0x55, \
-0xdd,0x5b,0xb9,0xd4,0x35,0x9a,0x7c,0x43,0x3b,0x88,0x3c,0x7b,0xf0,0xde,0xe2,0xf2, \
-0x83,0x56,0xa3,0xe0,0x7b,0x55,0xb7,0x21,0xc9,0xe7,0xf9,0xb5,0xda,0x62,0xce,0xa1, \
-0xb5,0x57,0x03,0x90,0x61,0xc2,0xd1,0xbe,0xcc,0x35,0x1a,0xdd,0xa9,0x24,0x2c,0x3b, \
-0x1e,0x6e,0xc1,0xb3,0xb3,0x5e,0x13,0xbb,0xf7,0x64,0x30,0x8e,0xee,0xe6,0x2f,0xf5, \
-0xf0,0xed,0x81,0xa4,0x5d,0x41,0xe2,0x1d,0xdb,0x6c,0x35,0x77,0xb3,0x52,0xa8,0x28, \
-0xa0,0xd3,0x36,0x94,0x17,0xe7,0x3f,0xaa,0x45,0x8b,0x5d,0x7b,0x9e,0x44,0x17,0x5b, \
-0xb7,0x68,0x1d,0x36,0x91,0x31,0x76,0xeb,0x5e,0x4e,0xed,0x7d,0xa5,0x98,0x29,0xa6, \
-0x58,0x83,0x8e,0xb0,0x29,0xd5,0x04,0xca,0x95,0x0d,0x4f,0x1a,0x3d,0x93,0xd6,0xd6, \
-0x13,0x1d,0xbc,0x5e,0x88,0xf0,0x3c,0x21,0x67,0x15,0xf2,0xbe,0xc7,0xfb,0xcb,0x93, \
-0x83,0x24,0x86,0x1c,0xf5,0xbe,0xf1,0x16,0x5d,0x0b,0x1a,0xb4,0x10,0xf8,0x61,0xc5, \
-0x80,0x87,0xfc,0x4c,0xc2,0x11,0xcf,0x9c,0xa2,0x8b,0xfa,0x30,0x61,0xe2,0xbd,0x4e, \
-0xd6,0xc6,0x16,0x61,0xd3,0x52,0xcc,0xa8,0x15,0x88,0x97,0xc3,0xa9,0x81,0xd0,0x1c, \
-0x10,0x73,0x08,0x95,0x02,0x1c,0xd6,0x99,0x72,0x2d,0xa6,0xa0,0x85,0xe9,0x33,0x51, \
-0x4a,0xdc,0x70,0xc0,0xc9,0xfb,0xa7,0xbf,0x2c,0x65,0x5b,0x69,0xdc,0xff,0x70,0x0e, \
-0x07,0x89,0x02,0x19,0x40,0xe1,0x04,0x0c,0x2a,0x96,0x26,0x86,0x19,0xfb,0x6f,0xa1, \
-0xd6,0x3e,0x5b,0x29,0x05,0xac,0x3e,0xb6,0x91,0x3c,0x9b,0x5f,0x4f,0xbd,0xc2,0x7b, \
-0xab,0x4a,0x3e,0xbd,0x3e,0x47,0x52,0xd3,0x04,0xed,0xbc,0x12,0x1e,0xa3,0x94,0x77, \
-0x18,0x78,0x17,0xde,0xb2,0x6d,0xfd,0x33,0xd3,0xbf,0xe2,0xc2,0xde,0x67,0x96,0x5e, \
-0xe7,0x61,0x13,0xc2,0x1a,0xd4,0xbb,0xc0,0xb5,0x4f,0xed,0x94,0xec,0x09,0xf3,0x70, \
-0x9a,0x30,0x54,0x76,0x02,0xcf,0x39,0xd3,0xce,0xc9,0x6b,0xec,0x4e,0x3e,0x67,0xb9, \
-0x97,0xfc,0x9e,0xf5,0xfa,0xb4,0x5d,0xb2,0xac,0x7e,0x7e,0x47,0x68,0x71,0x66,0xbd, \
-0x9d,0x39,0x47,0x86,0xb1,0xf7,0xba,0xe9,0x2f,0xf5,0xf5,0x6b,0xe9,0x17,0x59,0x6b, \
-0x36,0x33,0xd7,0x5b,0x6d,0x70,0xb0,0xbd,0x41,0x72,0xce,0x48,0xfa,0x17,0x4e,0xcf, \
-0xa7,0x23,0x3f,0x9a,0x94,0x67,0xfe,0x2f,0xe9,0xe1,0xee,0xd1,0xc8,0x5e,0x08,0x53, \
-0xc6,0xfa,0xdc,0x4f,0x61,0x9c,0xe0,0x04,0x2d,0x7c,0xed,0x44,0xb8,0x75,0x23,0x67, \
-0x0c,0xa5,0x7f,0x01,0x0e,0x59,0x3d,0xca,0x96,0x65,0x1e,0x3d,0x99,0x3e,0x1b,0xd1, \
-0x16,0xe9,0xeb,0x6e,0xba,0x9e,0xb6,0x74,0x24,0xc5,0xed,0x61,0x57,0xa2,0x8d,0xb9, \
-0xc4,0x38,0xf3,0xba,0x1e,0x94,0xba,0x8a,0x27,0x51,0x85,0x72,0xe3,0x1b,0xd9,0x4d, \
-0x2a,0xd5,0x9b,0x5f,0x7b,0x80,0xe4,0x97,0x3b,0xdb,0x86,0x86,0xae,0x3f,0xcc,0x6b, \
-0xd3,0xdf,0xf3,0x9d,0xa8,0x43,0x66,0x40,0x11,0x84,0x14,0x5e,0xcb,0x64,0x57,0x5c, \
-0x5c,0x01,0xf4,0x21,0x37,0x42,0x06,0x18,0x2c,0x88,0x6d,0x00,0xed,0x88,0x68,0x06, \
-0x86,0x8b,0xf7,0xb3,0x19,0xdb,0x76,0xdf,0x4f,0x76,0x4b,0xeb,0xf2,0xb2,0xdb,0xab, \
-0x36,0x69,0xc4,0xce,0x95,0x6a,0x6d,0xa7,0xe5,0x5f,0xb4,0x2b,0xc7,0xf8,0x4f,0x10, \
-0xbd,0xdb,0xbc,0x74,0xad,0x93,0x99,0xf4,0xc7,0x58,0x05,0x5b,0x22,0xb4,0x13,0xdb, \
-0xd2,0x0b,0xb0,0xda,0xb7,0x31,0xe4,0xc2,0xbd,0xbf,0x33,0xc8,0x6f,0x8e,0x0d,0x54, \
-0x09,0x58,0x51,0xcb,0x3d,0x81,0xe0,0xf9,0x42,0xe1,0x51,0xb8,0x9e,0x46,0xb3,0x91, \
-0x35,0x9a,0x6e,0x5c,0x48,0x0f,0xb3,0xe9,0x50,0xc8,0x38,0xdd,0xbe,0x78,0x86,0xdb, \
-0xee,0xf3,0x6c,0x1b,0xfb,0xd2,0x58,0x89,0xfc,0x8c,0x83,0xfb,0x99,0x7b,0xcc,0x30, \
-0x9c,0xea,0x5f,0x8b,0xcc,0xf0,0x27,0xbb,0x28,0x2d,0xdd,0xf8,0xcc,0x9a,0x36,0x36, \
-0x3f,0x8b,0x81,0x37,0x30,0xfb,0x1c,0xcc,0x21,0xef,0xed,0xe8,0xa1,0x74,0x3f,0x8f, \
-0xdb,0xf1,0xf8,0x2e,0x5d,0x36,0x09,0xaf,0x98,0x55,0x0b,0x9a,0xfd,0x09,0x4f,0x67, \
-0x52,0xf8,0x63,0xe5,0xe8,0x8a,0x4c,0xbb,0x13,0x40,0xce,0xe7,0x35,0x81,0x7d,0xf0, \
-0xf9,0xb6,0x1b,0x65,0xce,0x74,0xb2,0x4c,0xf2,0x32,0x82,0x4f,0xfe,0xff,0x6a,0xbf, \
-0xaf,0x0d,0x93,0xc1,0x5d,0x52,0x27,0x24,0x98,0x75,0x32,0x5b,0x1d,0x34,0x4c,0xa8, \
-0x21,0xf1,0xba,0x70,0x4d,0x0e,0x99,0x6f,0x27,0x55,0x22,0xc3,0x47,0xbd,0xb1,0xa3, \
-0x5f,0x27,0x36,0x06,0x2d,0xd7,0xf5,0xca,0xca,0xa1,0x3d,0x76,0x44,0xc0,0x84,0xdc, \
-0x12,0xaa,0x26,0xcf,0x6d,0x08,0x1d,0x25,0xe1,0x18,0x3f,0x1b,0xc0,0x54,0xae,0x23, \
-0xaa,0x8d,0x15,0x4a,0x6e,0xa7,0x4c,0xde,0x45,0x12,0xd5,0xb1,0x44,0xa1,0x2c,0xfa, \
-0x92,0x2f,0xb6,0x79,0xda,0x7b,0x46,0x6e,0x83,0xcb,0x88,0xb2,0xe4,0x3f,0xf3,0xfe, \
-0x18,0xc7,0xf3,0xa2,0x60,0xf5,0xab,0xfe,0x7b,0x71,0x8a,0x71,0xcb,0x8b,0x79,0x63, \
-0x73,0x86,0x77,0x8d,0xb3,0x7d,0xbe,0x9c,0x1a,0xfa,0x60,0xda,0xc7,0xfd,0xe2,0xfe, \
-0x38,0xfd,0xfb,0xf6,0x79,0xb6,0x66,0x62,0xbf,0x8b,0x30,0xe9,0x52,0x85,0x5a,0x52, \
-0x2e,0xdc,0x40,0x3b,0xaf,0x47,0x09,0x28,0x37,0x30,0x21,0xa7,0x9f,0x06,0x00,0x83, \
-0xb6,0x53,0x6e,0x72,0xcc,0x3f,0x0a,0x99,0x07,0x36,0xbd,0x0b,0x4e,0x41,0x3c,0xae, \
-0xa8,0xd8,0xc0,0xe2,0x88,0xba,0xa0,0x2d,0x22,0xef,0x1a,0x92,0x38,0x70,0x9a,0xa7, \
-0xea,0x10,0x3f,0x74,0xe0,0xe8,0x1e,0x65,0xba,0x22,0x65,0xa7,0xb8,0xdb,0x8f,0x15, \
-0xd8,0xe2,0x3b,0x33,0xe9,0xb5,0x98,0x8b,0xe2,0xf7,0xe2,0x63,0xc6,0x23,0x39,0xf0, \
-0xda,0x30,0x17,0xb9,0x01,0x68,0x6d,0xc7,0xc3,0x3c,0x2f,0x09,0x1c,0xe7,0x55,0x5c, \
-0x69,0x3f,0xaa,0xa3,0x42,0x81,0xbe,0x67,0x50,0xd9,0x57,0x81,0xf5,0xf1,0x81,0x84, \
-0x44,0x82,0x05,0xe6,0xf7,0x6e,0x13,0x2e,0xf3,0x44,0x52,0x4a,0xc1,0x15,0x63,0x8c, \
-0xc3,0x3a,0xb9,0xd8,0x74,0x6b,0x95,0xf0,0xac,0x22,0xdf,0x90,0xf1,0xa9,0x86,0x3c, \
-0x33,0xe7,0xfa,0xfd,0x9e,0x39,0x57,0x96,0x78,0x23,0xf6,0x72,0xba,0xdd,0x0c,0x9d, \
-0x2c,0xcf,0xe7,0x4b,0xe9,0x0c,0xb3,0xc3,0x47,0xc0,0x8f,0x2f,0x57,0x5c,0x97,0xd6, \
-0xa7,0xf4,0x24,0xe3,0x9b,0x08,0xd1,0x5d,0x87,0xa8,0xb5,0x19,0xd0,0x93,0x03,0xd7, \
-0x4c,0x0f,0x5c,0xbf,0xcd,0x84,0xab,0xfd,0x2e,0x13,0x1c,0x39,0x65,0xd2,0x06,0x94, \
-0x37,0xea,0xdc,0xe9,0xb9,0xfe,0x59,0xfd,0xf4,0xc8,0x3c,0x70,0xa8,0x80,0x8a,0xa8, \
-0x8f,0x0c,0x46,0xa4,0xf8,0xe8,0x93,0x97,0x76,0x31,0x2c,0x92,0x2e,0xe5,0xc5,0x6d, \
-0x62,0xf4,0x3d,0x15,0x52,0x73,0x85,0xc6,0x7f,0xf9,0x25,0x58,0x09,0xa0,0x69,0x9c, \
-0xd4,0x57,0x10,0xe4,0x63,0x84,0xa7,0x33,0x03,0x6a,0xc7,0x97,0x8c,0x42,0x41,0x03, \
-0x92,0x50,0x93,0x7e,0x5f,0x2c,0xb4,0xb4,0xfe,0xff,0x2b,0xef,0x30,0x9d,0x42,0xf0, \
-0x82,0xa8,0x6c,0x6c,0x1e,0x7b,0x33,0x73,0x56,0x58,0x70,0xe4,0x07,0x57,0xd3,0xbb, \
-0x7e,0xa1,0xed,0xce,0x2f,0xdb,0x5e,0xde,0xc9,0xf0,0xd4,0x9b,0xec,0x2f,0x34,0x4b, \
-0x1d,0xd7,0xef,0x5f,0x78,0xc1,0x01,0x54,0xb4,0xd9,0x6d,0x56,0x2c,0x40,0xb9,0xe8, \
-0x38,0x12,0x9c,0x43,0x28,0xe8,0xc0,0x34,0x4d,0x71,0x17,0x2b,0x81,0x2b,0x05,0x0c, \
-0x8f,0xa6,0x8b,0x88,0x84,0xdb,0x62,0x0e,0x83,0xc5,0xaf,0x62,0xf1,0x55,0x63,0x14, \
-0x7c,0x6c,0xbe,0xb5,0x1d,0x97,0xf7,0x8c,0x03,0xcb,0x8a,0x7a,0x36,0xd1,0x30,0x5a, \
-0x9a,0x46,0xa5,0x62,0x21,0x63,0x9c,0x4b,0xe2,0x1d,0x03,0x1c,0xe5,0x86,0x2c,0x02, \
-0xea,0xeb,0xbc,0x51,0x81,0x7f,0xe0,0x59,0x55,0x36,0x18,0x2e,0x8a,0x86,0x55,0xd9, \
-0x49,0xd8,0xfa,0x8c,0xd9,0xd0,0xf8,0x16,0x4e,0x20,0x0d,0x54,0x92,0xb8,0x68,0x33, \
-0x6d,0xc5,0x61,0x18,0x99,0x9a,0x93,0x91,0x95,0x4d,0x4b,0xb4,0xdf,0x63,0x18,0x65, \
-0x2c,0x0f,0x94,0x60,0x03,0x9a,0x35,0x86,0xb7,0x48,0xcf,0x15,0x18,0x00,0x21,0xa0, \
-0x08,0x39,0xaf,0x09,0x59,0x34,0x44,0x42,0x74,0x37,0xad,0x36,0xc2,0x08,0x2a,0xcc, \
-0xd7,0xb3,0x70,0xce,0x66,0xbb,0x72,0x8f,0xae,0x95,0x8f,0x0c,0x58,0xf1,0xe9,0xd5, \
-0x9d,0xec,0x04,0x7d,0x6c,0x32,0x1e,0xd3,0x79,0x08,0x96,0x0b,0x8e,0x50,0x86,0xf0, \
-0x45,0xbc,0x02,0x49,0x85,0x6d,0x27,0xec,0x2c,0x7b,0xcf,0x25,0xfe,0x69,0xeb,0xb5, \
-0x7a,0xc8,0x9b,0x62,0x65,0x1c,0x20,0x01,0x50,0xe2,0x9f,0x6e,0xd6,0x65,0x3e,0xe8, \
-0x38,0x61,0xd7,0xad,0xc6,0x85,0x2c,0x70,0xd5,0x66,0xf9,0x2c,0xf8,0x79,0x42,0x3f, \
-0xb1,0xf2,0x1a,0x0a,0xe7,0x04,0x6d,0x5e,0x13,0x34,0x8a,0x77,0xf0,0x39,0xfe,0x09, \
-0xfb,0x3b,0x20,0x07,0x8f,0x67,0x82,0x80,0xef,0x74,0x91,0xb7,0x8a,0xbf,0x9e,0x87, \
-0x40,0xc6,0xd7,0x1a,0xdc,0xc7,0x9b,0x31,0x2c,0x2f,0x92,0x6e,0x29,0x6e,0x01,0x31, \
-0xa9,0xd2,0xfa,0x3b,0x3e,0x10,0x42,0x11,0x2d,0x63,0xbd,0xeb,0x52,0x91,0x6e,0x20, \
-0x3b,0x92,0x49,0xe5,0xc3,0x2b,0xd9,0x33,0x87,0xde,0xf3,0x11,0x76,0xf5,0xa1,0x04, \
-0xe1,0x2a,0x6a,0x07,0xc5,0x13,0x87,0xdd,0x2b,0x10,0xe3,0xb8,0x3a,0x06,0x8d,0x36, \
-0x1a,0xb5,0x15,0x85,0x24,0xb2,0x8e,0x9d,0xcb,0xa6,0x2d,0x68,0x7b,0x70,0x3c,0x3a, \
-0x8b,0x81,0xf5,0x18,0x70,0xae,0x25,0x19,0x44,0xd1,0x39,0xa6,0x75,0xdc,0x81,0x7c, \
-0xd2,0x23,0xa7,0x8d,0x01,0x00,0x93,0x92,0x0d,0xfa,0x5b,0xa6,0x46,0xde,0xcd,0xf6, \
-0x8b,0x84,0x77,0x9c,0x96,0x3c,0x0e,0xfa,0xe7,0x46,0xe8,0x31,0x6d,0x46,0xc6,0x40, \
-0xc6,0x67,0xa4,0xd0,0xb9,0x98,0x5c,0x8f,0x50,0x37,0x4f,0xc5,0x9a,0x57,0xca,0x03, \
-0xa4,0x95,0x2b,0x45,0x09,0xd5,0xed,0xf2,0x36,0xd8,0xb1,0xe5,0x6d,0xc8,0x47,0x25, \
-0x33,0x57,0xf3,0xf2,0x8d,0xfe,0x95,0xc9,0xe4,0x54,0x89,0x3f,0x73,0x3e,0x9f,0x2a, \
-0x87,0x11,0x85,0x43,0x2d,0xe9,0xbf,0x45,0x94,0x77,0x0a,0x9e,0x7d,0xda,0xb7,0xb7, \
-0x36,0xcd,0xac,0x95,0x88,0x1d,0x38,0x28,0xa5,0x8c,0x06,0xbc,0x25,0xc0,0xd5,0x99, \
-0x58,0x5c,0x05,0x59,0x21,0x85,0xba,0xdb,0xbf,0xb9,0x40,0xfd,0x30,0xb5,0xf4,0xb5, \
-0x1d,0x75,0xcc,0xf2,0xdb,0x07,0x73,0xba,0xe9,0x06,0xc2,0x95,0xc2,0x64,0x1e,0x82, \
-0xd8,0x9b,0xab,0x5b,0xff,0xba,0x49,0x77,0x97,0x7b,0xfb,0x7e,0x79,0xe9,0xaf,0x1d, \
-0x08,0xe9,0x89,0x23,0x63,0x2a,0xf5,0xca,0x80,0x42,0x43,0x54,0xbb,0x96,0x12,0xb7, \
-0x22,0x34,0xd7,0x10,0x5e,0x51,0x0e,0x03,0x02,0x97,0x4b,0x35,0xdc,0x9f,0x28,0xa4, \
-0xe2,0x92,0xc8,0x70,0x4b,0x1b,0x19,0x7f,0x5d,0x40,0xef,0xf0,0xe5,0x27,0x16,0x37, \
-0xa7,0xc7,0x08,0xcb,0x3a,0xc5,0xb4,0x85,0x7a,0x2a,0x1c,0x11,0x67,0xb7,0x7e,0xe3, \
-0xfc,0x6b,0xd3,0x85,0xf7,0x74,0xc9,0x0c,0x58,0x12,0xf4,0xb7,0xe7,0xbc,0xb5,0x30, \
-0x15,0xe7,0x98,0x2e,0x45,0xcd,0x11,0x05,0xdc,0xa6,0xf1,0xca,0xeb,0x2b,0xb9,0x2e, \
-0x27,0x54,0x36,0x23,0xf4,0xcb,0x52,0x61,0x9e,0x21,0xd5,0xf1,0x7f,0x86,0xa2,0xcf, \
-0xd1,0x9e,0xc3,0xa9,0x85,0xad,0x3c,0xbc,0xac,0x32,0x41,0x11,0xdf,0xab,0x0d,0x44, \
-0x28,0xef,0x55,0x19,0x04,0x38,0x54,0x4c,0xe6,0x25,0x46,0xe1,0x36,0xa4,0xa6,0xd1, \
-0x0b,0x6b,0x75,0x0d,0x9b,0x07,0x7c,0x4b,0x7d,0x69,0x44,0x8a,0xdb,0x1b,0x22,0xaa, \
-0x0f,0xe9,0xcb,0x1e,0x06,0x2d,0x44,0xba,0xa3,0x4c,0xc0,0x96,0x17,0xaa,0x01,0xb5, \
-0x3f,0xe7,0xce,0xe3,0x19,0xd2,0xdb,0x47,0x67,0x55,0x0c,0x1d,0x41,0xc4,0x3f,0x7e, \
-0xf3,0x75,0x90,0x19,0x2a,0x98,0x61,0xfe,0xb1,0x03,0x56,0x50,0x4f,0xf0,0x56,0xa8, \
-0xe6,0xb5,0x1d,0x71,0xcd,0x7e,0xa9,0x14,0xcb,0x2a,0xcd,0xde,0xf3,0x50,0x34,0x1b, \
-0xaa,0x8d,0x7e,0xed,0xde,0x23,0xca,0xd3,0x61,0x7f,0x8d,0x97,0x40,0x8f,0x94,0xbf, \
-0xeb,0x0d,0x04,0xa1,0xce,0x37,0x0c,0x3c,0x74,0x56,0x5b,0x06,0x83,0x4e,0x5e,0x93, \
-0xf4,0xc1,0xdd,0x92,0xec,0xae,0x6e,0x6d,0x65,0xdb,0x02,0x30,0x31,0x34,0xb4,0x2c, \
-0x6c,0x81,0xfa,0x3f,0x4e,0x35,0xf1,0x55,0x0b,0x7b,0x7b,0xf3,0x74,0xb1,0xe7,0xde, \
-0xf9,0xab,0xed,0xd8,0xd5,0xd1,0x4f,0xaf,0x21,0x3a,0xe7,0x97,0x6c,0x73,0x16,0x16, \
-0x3b,0xfb,0xe4,0xc6,0x64,0xc4,0xac,0x91,0xd7,0xd4,0x56,0xd0,0x2e,0x1a,0x5b,0xd8, \
-0x75,0x71,0xca,0xfa,0x43,0xb6,0x12,0x99,0x34,0xe3,0xa8,0xcd,0x7f,0xe5,0x83,0xe2, \
-0x2c,0x7d,0x1d,0x38,0x70,0xc3,0x61,0xdb,0x84,0x3d,0xe3,0x46,0x03,0xb0,0xa2,0x29, \
-0xb6,0x7e,0x65,0x3e,0x70,0x5e,0x29,0x75,0xb4,0x6f,0xa0,0xd3,0xf0,0x4a,0xd1,0xbe, \
-0xdc,0x2e,0xf6,0x1c,0x03,0xad,0x4c,0x14,0x86,0xb9,0x1f,0x43,0x80,0xe6,0x96,0x76, \
-0xd0,0xee,0x87,0x1a,0xd4,0x7d,0x43,0xa3,0x00,0x5c,0x21,0x2c,0x4f,0xc6,0xd5,0xd2, \
-0x7e,0x97,0xbf,0xd0,0xb8,0xd5,0x68,0xc0,0xa0,0xe9,0x30,0xce,0xfc,0xd6,0x98,0x7b, \
-0xfe,0x3f,0x1e,0x48,0x22,0x36,0xc8,0xaf,0x71,0x86,0x33,0x6f,0x3f,0xd1,0x11,0x95, \
-0x48,0x92,0xa0,0x6a,0x7f,0x4b,0x28,0xed,0x0d,0x7b,0x2f,0x98,0x2a,0xea,0x39,0x0d, \
-0xeb,0x67,0x4f,0x6d,0xc4,0x4b,0x2d,0x91,0x80,0xf7,0x2a,0x5d,0xd6,0x45,0xec,0xbc, \
-0xeb,0x0e,0x26,0x66,0xac,0xe9,0x27,0x82,0x50,0x43,0xd4,0x82,0x37,0x62,0xa6,0x65, \
-0x4c,0x33,0x35,0x1d,0xa9,0x32,0xeb,0xe2,0x7a,0xe7,0x7f,0xc9,0xf0,0xa8,0xd6,0x1a, \
-0xb9,0x11,0x05,0x07,0x67,0x72,0xf8,0x1c,0xa1,0xf9,0x87,0x2d,0x14,0x37,0x27,0x26, \
-0x58,0xda,0x21,0x6b,0x43,0xd6,0x52,0x02,0x35,0x00,0x94,0x4f,0x8d,0x88,0xb1,0x32, \
-0x62,0x72,0x97,0x9c,0xc8,0x58,0xb5,0x87,0x7b,0xb9,0x24,0x6f,0xe1,0x2b,0x88,0x84, \
-0xb2,0x5a,0x5b,0x55,0x21,0xe4,0x4b,0x83,0xb3,0x12,0xe3,0xcb,0x52,0xc3,0x38,0xeb, \
-0x5f,0x39,0x0e,0x02,0x17,0x8a,0x7e,0xb8,0x38,0x2c,0x72,0x78,0xf2,0x62,0x6e,0x41, \
-0x29,0xd9,0x38,0x33,0xbc,0x01,0x45,0x8f,0x61,0xe2,0xe2,0xf1,0xbe,0x0f,0x32,0xc1, \
-0x11,0x1f,0xbd,0x67,0xe3,0x55,0x07,0xc3,0x22,0xd8,0xf1,0x80,0xe4,0x7c,0xc6,0x49, \
-0x1d,0xca,0x8b,0xc8,0xc7,0xd4,0xba,0xf6,0xbf,0x1f,0x25,0x29,0xe7,0x1b,0x4c,0x67, \
-0xbe,0x01,0x51,0xd4,0xab,0x0f,0x6f,0xbe,0x2c,0xf7,0x3c,0xbb,0xbd,0xce,0xe9,0x61, \
-0x62,0x75,0xc6,0x30,0x73,0x96,0x72,0x67,0x69,0x0f,0x35,0xb6,0xca,0x18,0x1a,0xe6, \
-0xe8,0x35,0xe1,0xae,0x27,0x2c,0xe4,0x0d,0x35,0x5d,0x35,0x35,0xee,0x70,0x1a,0xb8, \
-0x7b,0xd0,0x6a,0x97,0xe1,0xb8,0x20,0x5e,0x97,0x07,0xbf,0xa0,0xa7,0x2f,0xbd,0x83, \
-0xae,0xda,0x47,0xcc,0x9b,0xf3,0xe3,0x22,0x90,0x4d,0xe2,0xba,0x46,0xf6,0xe0,0xf5, \
-0x6c,0x15,0x32,0x79,0xa6,0x1b,0x12,0xa6,0x13,0x12,0x15,0x61,0xbc,0x8f,0x5c,0x4c, \
-0x62,0x18,0x79,0x83,0x63,0xd8,0x72,0x06,0x33,0xdc,0xca,0x14,0xde,0x11,0x6c,0xcc, \
-0xcb,0x74,0x8f,0xb3,0x19,0x9b,0x6f,0xd9,0x25,0x86,0x0f,0x09,0x57,0x4d,0x42,0x60, \
-0xd2,0x35,0xad,0xc2,0x08,0x20,0x16,0xcb,0x0a,0xc9,0xce,0x2a,0xae,0x11,0xb9,0x82, \
-0xda,0x0d,0xf8,0xfa,0xd1,0xf8,0x8d,0x50,0x9a,0x34,0xf4,0xd3,0x56,0xb3,0x2f,0x12, \
-0x8a,0x53,0x7d,0x79,0x27,0x18,0x07,0x29,0x6e,0x5c,0xee,0x2e,0x4e,0xf9,0x85,0xbd, \
-0xd7,0xcd,0x2e,0x34,0x7d,0x48,0xb8,0xd2,0x34,0x1a,0x07,0x0d,0xa7,0x84,0x8c,0xc0, \
-0xd2,0xfb,0x56,0xdd,0x0b,0x10,0xcc,0x32,0x58,0x06,0x5c,0x66,0x0e,0x82,0x34,0x1d, \
-0x91,0x40,0x5d,0x95,0x54,0x6a,0xcc,0x48,0xcf,0xd6,0x1e,0xf0,0x92,0x64,0x73,0x50, \
-0x8e,0x49,0xd8,0x71,0xc3,0xb8,0xb2,0x95,0xc3,0x21,0x70,0x26,0x04,0xc5,0xcd,0xe0, \
-0x62,0xb1,0xd0,0x2f,0x78,0x20,0xb3,0x1a,0x0d,0x24,0xc4,0x33,0x41,0x2e,0xa5,0xf2, \
-0xcb,0x03,0x72,0x06,0xcf,0x34,0xae,0xaa,0x1c,0xa6,0x02,0xc1,0xa3,0x68,0x2c,0xae, \
-0x47,0x1e,0x01,0x74,0x0b,0x65,0x0d,0x28,0x9e,0xd3,0x5c,0xb9,0xfd,0x6e,0xf2,0x8b, \
-0x4d,0x41,0xba,0x4b,0xe0,0x2e,0x5b,0x15,0x3b,0x83,0x70,0x42,0x16,0xe1,0x6a,0x04, \
-0x7e,0x2e,0x57,0x60,0xa8,0x49,0x1f,0x67,0x7d,0xf0,0x39,0x9a,0xf5,0x2e,0x89,0x25, \
-0x39,0xa5,0xba,0xb1,0x35,0x8b,0xab,0x31,0xaa,0x32,0x96,0x19,0xbb,0xfc,0x57,0xe0, \
-0xf3,0xc4,0x38,0xf4,0x5b,0x3d,0xb3,0x98,0x54,0x21,0x39,0x18,0x7a,0xc5,0x02,0x83, \
-0xa0,0xf3,0xa1,0x15,0xe7,0x62,0xfe,0xaa,0x45,0x79,0x72,0xe5,0x1e,0xab,0x0e,0x9d, \
-0xd9,0x58,0x3e,0x5d,0x78,0x9e,0x18,0x64,0x8d,0xf8,0xf8,0x58,0xbe,0xca,0xe0,0xb6, \
-0xea,0xb2,0xaa,0x0d,0xd5,0x81,0x6f,0x2f,0xd5,0x21,0xf6,0xf6,0x8d,0xfd,0x38,0xac, \
-0x1b,0xae,0x0e,0x80,0xfc,0x39,0x78,0x7b,0xf7,0xda,0xda,0x10,0xa4,0xf4,0xce,0x03, \
-0xb8,0x98,0xbe,0x40,0x7b,0xfa,0xdf,0x97,0xc9,0xc9,0xaf,0x8d,0x78,0x72,0xc8,0x5e, \
-0xfc,0x50,0xf7,0x97,0x1e,0xab,0x71,0xd8,0x66,0xfe,0x69,0x2d,0x5a,0xf6,0xb5,0x71, \
-0x6d,0x8a,0x41,0x60,0x7a,0x98,0xd1,0xe3,0x66,0x78,0x5f,0x84,0x9d,0x07,0x81,0xc5, \
-0x5d,0xc2,0xb6,0x2c,0x81,0xcc,0x60,0x4b,0x8c,0x91,0xac,0xac,0x43,0x85,0xb7,0x16, \
-0xa8,0x7d,0x6d,0x91,0xb3,0xd7,0xb2,0xfb,0x8f,0xb0,0x6d,0xb4,0xdf,0x0b,0x32,0x6e, \
-0xe5,0x63,0xdc,0xd2,0x04,0x99,0x4c,0xeb,0x81,0x71,0x69,0xfa,0xe2,0x47,0xdb,0xa2, \
-0xe8,0x2d,0x96,0xb0,0x34,0x98,0xe4,0xa1,0xa5,0xe5,0xa4,0x77,0xde,0xd2,0x38,0x9b, \
-0x0f,0x88,0x8a,0x51,0x70,0x33,0xb8,0xbd,0x37,0x08,0xd7,0x11,0x75,0x0e,0x52,0x4a, \
-0x47,0x4c,0xf7,0xee,0x38,0xe2,0x44,0x3f,0x06,0xd4,0x7d,0x02,0xcb,0xbb,0xec,0x4f, \
-0x77,0x4e,0x13,0xf5,0x6a,0xbe,0xbe,0x4c,0x1a,0xd7,0x5e,0xe1,0xe9,0x9e,0x3d,0x66, \
-0x55,0x74,0x5a,0x59,0xde,0xc2,0x23,0xae,0xc1,0x5b,0xc8,0x03,0x7f,0x2e,0x90,0x69, \
-0x03,0xd2,0x68,0x90,0xaa,0xcd,0xab,0x46,0xd7,0xf6,0x03,0xbb,0xa2,0x7b,0x1c,0x50, \
-0x67,0x38,0x1b,0xde,0xb7,0xe8,0xda,0xf3,0x1c,0xb7,0x7c,0x70,0x4e,0xab,0xb4,0x05, \
-0x15,0xdf,0xf1,0xe3,0x6d,0xc9,0xa4,0x1c,0xb8,0xdc,0x94,0x27,0x89,0x19,0xf8,0x59, \
-0x84,0xd2,0xf3,0xe9,0x9a,0x1f,0x47,0x19,0xcd,0x7a,0x7a,0x0d,0x10,0x36,0xfa,0xf6, \
-0xd9,0xd5,0x5b,0xdf,0xc2,0x40,0xdd,0xd8,0xd8,0x81,0xa2,0x43,0x0a,0x8e,0xdb,0x9f, \
-0x5d,0xeb,0xe7,0x33,0xb9,0xdc,0xbe,0x16,0x63,0x6d,0x6c,0x29,0x57,0xed,0xdc,0x29, \
-0xed,0x8d,0x6b,0xb9,0xaf,0x9f,0xef,0x7e,0x68,0xca,0xc2,0xea,0x78,0x36,0x63,0xa6, \
-0xf3,0xa5,0xa9,0x99,0x22,0xd2,0x11,0x43,0x06,0x4a,0x13,0xe3,0xd5,0x2f,0x22,0xc2, \
-0x0a,0x8b,0xbe,0x7c,0x70,0xa1,0x45,0xb3,0x34,0xd7,0x6f,0xcf,0x75,0x9d,0x81,0x87, \
-0xef,0x46,0x8d,0xbe,0xfa,0xe8,0xdb,0x2d,0x69,0xf9,0xb5,0xc2,0x4a,0x74,0x2c,0xd7, \
-0x04,0x82,0xca,0x45,0xdb,0xc6,0xd8,0x25,0xc4,0xc9,0x10,0x6c,0x1d,0x50,0x9e,0xd0, \
-0x64,0xd3,0x88,0x49,0xed,0x4c,0xf7,0xd1,0xb0,0xec,0x39,0xb0,0x71,0x95,0x05,0xb0, \
-0xbc,0xda,0x99,0x5a,0x03,0x8b,0x28,0xa3,0x21,0x7a,0xdc,0x6f,0x89,0xd9,0xaf,0x21, \
-0xef,0x69,0x88,0xa3,0x68,0xe2,0xc2,0x1c,0xec,0x21,0x82,0xeb,0x7d,0x35,0x5c,0xa6, \
-0xd8,0xe5,0xb2,0xe8,0xc9,0xad,0x95,0xc6,0xb2,0xd6,0x15,0x19,0xae,0xab,0xc3,0x3a, \
-0xe7,0xc6,0x9c,0x8f,0x2f,0x79,0x5b,0x64,0x3e,0x14,0x0c,0xda,0xed,0x27,0xe1,0xec, \
-0x5e,0xae,0xd8,0x5d,0x1b,0x46,0x32,0x6e,0xd5,0x2d,0xa6,0xb9,0x96,0x01,0xe3,0xb1, \
-0x2c,0x2e,0x52,0x54,0x08,0x04,0xba,0x24,0x7d,0x4d,0x9e,0x36,0x86,0x34,0x72,0x46, \
-0xc7,0x03,0x8b,0x62,0x7c,0xe3,0xd9,0x3c,0x7a,0xd8,0x44,0xcb,0x49,0x4e,0x7b,0xaa, \
-0x7b,0x08,0xca,0x20,0xc8,0xed,0x02,0xc4,0x70,0xb7,0x62,0xa1,0x91,0x6d,0x23,0xc5, \
-0xf8,0xcc,0x30,0x2b,0x40,0x23,0x6b,0x6a,0x44,0xc8,0xc6,0x12,0x0f,0x66,0xc4,0x6a, \
-0xca,0x16,0xda,0xc9,0xac,0x6d,0x6f,0x35,0x4e,0xb5,0x86,0xb2,0xd6,0xc9,0x0e,0x5d, \
-0x46,0x15,0x84,0x9f,0x36,0x83,0x1c,0xa3,0x31,0xa3,0x25,0xb8,0x9c,0xe8,0xff,0x9f, \
-0xb9,0x36,0xc4,0xb7,0xa0,0x6d,0x86,0x77,0xba,0x64,0xaf,0x3b,0xc1,0x71,0xb6,0xde, \
-0x74,0xda,0x91,0x07,0x1b,0x06,0xb9,0x1c,0x50,0xa7,0xc9,0xdf,0xa3,0xeb,0x08,0xc4, \
-0x82,0x76,0x4f,0x4d,0x75,0xd4,0x58,0xb6,0x39,0xe6,0x3a,0x83,0xfe,0xf6,0xbb,0x14, \
-0x25,0x2f,0xdb,0xc1,0xb9,0xa4,0x8a,0xda,0x6f,0x94,0x8a,0xaf,0x25,0x37,0xc0,0x58, \
-0x8a,0x79,0xd1,0xe6,0x72,0xe1,0x2d,0x80,0x96,0xd8,0xa1,0xe9,0x1d,0xf6,0x8f,0x52, \
-0xec,0xa4,0x10,0x39,0x69,0x96,0xc0,0xd9,0x75,0xaa,0xa5,0xb7,0x88,0xe1,0xec,0xe9, \
-0x60,0x24,0x1c,0xae,0x61,0x1b,0x86,0xcd,0x7b,0xf8,0x11,0x1d,0x53,0x1d,0xba,0xe4, \
-0xba,0xa9,0x47,0x1d,0xa3,0x08,0xff,0x65,0x39,0x57,0xf1,0xf9,0x73,0x77,0xcc,0xb5, \
-0x81,0xe8,0xec,0x06,0x3f,0xc2,0x40,0x80,0xbf,0x12,0x40,0x64,0xac,0x5c,0xf5,0x7b, \
-0x0f,0x36,0xbd,0x1d,0x1c,0x37,0xde,0x87,0x90,0x66,0x16,0x8e,0x75,0x71,0x1b,0x9f, \
-0xa3,0x99,0x57,0xc1,0x0c,0x35,0xb8,0x7c,0x2d,0x01,0x00,0x1a,0xe3,0xbb,0x9f,0x85, \
-0x96,0xa2,0x61,0xb8,0xf3,0xe3,0xab,0x7f,0x47,0x45,0xcc,0xca,0x45,0x21,0xa7,0xfe, \
-0x94,0x83,0x8c,0x3e,0xad,0x2d,0x64,0xd0,0x06,0x2c,0x8a,0x75,0xb2,0x54,0x20,0xb2, \
-0x05,0x2d,0x20,0x28,0x48,0xa6,0x77,0x60,0x5c,0x69,0x14,0x81,0xa1,0x4e,0x20,0x14, \
-0x21,0x08,0xa4,0xcd,0x82,0x49,0x5c,0x88,0x64,0xef,0x62,0x03,0xcd,0xd4,0x93,0x17, \
-0x86,0x73,0xc7,0x3f,0x7f,0x6f,0x8b,0x51,0xe2,0x85,0xee,0x92,0xd3,0x1f,0x4f,0xe9, \
-0xd7,0xaf,0xa3,0xc0,0x5c,0xe1,0xf5,0x89,0x64,0x9e,0xe2,0xd0,0x5c,0x52,0xde,0x47, \
-0x95,0x11,0x18,0x73,0x67,0xdf,0x8d,0xb1,0x3a,0xf4,0x69,0x26,0x67,0x70,0x49,0x37, \
-0x88,0x47,0xc7,0x24,0x5d,0x46,0xb9,0x0e,0x94,0x31,0x2e,0x8a,0xf3,0x85,0x02,0x89, \
-0xee,0x2d,0x27,0x59,0x58,0x5b,0x4b,0x0f,0x64,0xb0,0x6c,0x73,0x70,0x3d,0x05,0x3f, \
-0xdc,0x17,0x08,0xf2,0x20,0x14,0x7e,0xfe,0x04,0x22,0x52,0x12,0xd9,0xb9,0x2d,0xfc, \
-0x36,0xab,0x26,0x1c,0x3f,0x8b,0x2e,0x60,0x8e,0xd4,0x7a,0x88,0x66,0x92,0x44,0x98, \
-0x86,0x78,0xd2,0x0a,0xc9,0x7d,0x00,0x4e,0x01,0xd5,0xcf,0xc7,0x8f,0x78,0x3e,0x32, \
-0x00,0x19,0x11,0x0e,0x6f,0x99,0xa7,0x2f,0x3a,0x7f,0x30,0x03,0xb0,0x0d,0xdc,0xe0, \
-0x61,0xff,0x35,0x8c,0xeb,0xb0,0xb8,0xaa,0xee,0xcf,0x5d,0xe1,0x83,0x8e,0x38,0xa6, \
-0xf8,0x24,0x4d,0xb4,0xbb,0x39,0x4f,0xf4,0xac,0x09,0x0a,0x6e,0x02,0x34,0xdb,0xb7, \
-0x56,0xcf,0x75,0xed,0xa4,0x76,0x43,0xa6,0x83,0x0b,0x8a,0xb1,0x25,0xa6,0x30,0x5d, \
-0xc6,0xbf,0x21,0xcb,0x1b,0xe5,0x25,0x86,0x86,0x2b,0x6b,0x06,0xd8,0x9c,0xa4,0x9f, \
-0x3b,0xd6,0x3b,0x05,0xe8,0xc6,0x7d,0xb0,0x12,0xdb,0x51,0xa8,0x20,0x3f,0x8b,0x29, \
-0x91,0x9e,0x4c,0xf9,0xac,0x83,0x06,0x8a,0xea,0xce,0xb6,0x3e,0x61,0x39,0x9b,0x31, \
-0x08,0x4c,0x12,0x10,0x39,0x96,0xb5,0xd5,0x37,0xb9,0x49,0x5a,0x83,0x01,0xe8,0xee, \
-0xe7,0xe8,0x93,0x36,0x81,0x92,0xa3,0x89,0x46,0x67,0x6d,0xe1,0xd0,0xf8,0xf4,0xd0, \
-0x29,0x19,0xe2,0xf1,0x0b,0x07,0xb0,0x6a,0xfe,0x71,0xe0,0xd2,0x2a,0x0e,0xa8,0x65, \
-0xf5,0x01,0xc8,0xae,0x21,0x63,0x37,0x57,0x10,0xae,0xed,0xe3,0x52,0xfe,0x12,0xd8, \
-0xca,0xeb,0x85,0x5c,0xd8,0x5a,0x94,0x12,0x17,0x57,0x4e,0x92,0x22,0x50,0x1b,0x00, \
-0x3d,0xb3,0x98,0xdf,0xf5,0x1f,0xbf,0x16,0xa5,0x58,0x61,0xa0,0x60,0x41,0x45,0x2b, \
-0x18,0xd6,0x0a,0x49,0x09,0x0a,0x32,0x07,0xbf,0xfb,0xa3,0xc9,0x9f,0xad,0xa7,0xbb, \
-0xf8,0xfd,0x78,0x16,0x2d,0x8c,0xc4,0xdf,0x05,0x1c,0xb4,0x34,0xf7,0xc4,0xca,0xfe, \
-0x16,0x86,0x12,0x0a,0xb7,0x52,0xe2,0x8c,0xa4,0x15,0x07,0x14,0xa5,0x65,0x15,0x08, \
-0x83,0x1b,0x7f,0x77,0xf6,0xd9,0x63,0xf7,0x26,0x8c,0x3a,0x6b,0x71,0xdc,0x5a,0x8a, \
-0x41,0xc5,0x0b,0x04,0x15,0x54,0xc5,0x94,0x55,0x15,0x62,0xbb,0x77,0xd0,0x31,0x08, \
-0x68,0xd6,0x9b,0xda,0x26,0x20,0x73,0x74,0x19,0x88,0x44,0x46,0x54,0xe5,0xf2,0xfb, \
-0x3f,0x30,0xbf,0x77,0xf4,0x6f,0x20,0x1b,0x44,0xe2,0x55,0xa2,0x82,0x04,0xe1,0x12, \
-0xc2,0x46,0x0a,0xe0,0x60,0xf3,0x29,0x80,0xcd,0xfd,0x18,0x9f,0x56,0xb4,0xcc,0x05, \
-0xed,0x6b,0x81,0xce,0x9c,0xb4,0x32,0x40,0x34,0xa5,0x86,0xb6,0x51,0x63,0x8b,0x6b, \
-0x0c,0xef,0x7f,0x6a,0x70,0x54,0xd6,0xb2,0x55,0xd5,0xc4,0x31,0x23,0xf8,0xd0,0x99, \
-0x72,0x2c,0x06,0x54,0xef,0xc5,0x7b,0x75,0xc2,0x60,0xa8,0xa9,0x11,0x24,0x34,0x41, \
-0x8c,0x65,0x87,0xd9,0x9b,0x9e,0xcb,0x87,0x04,0x14,0x18,0xa8,0x88,0xf8,0x3d,0x5b, \
-0x67,0xc9,0xd5,0xec,0x40,0x0c,0xeb,0x5f,0xec,0x4a,0x0a,0xa0,0xac,0x31,0x74,0xc5, \
-0xda,0xd8,0x19,0x96,0xab,0xf7,0xa5,0x15,0xc1,0xe6,0x60,0xb8,0xee,0xdb,0x8f,0x1f, \
-0x9c,0x38,0xe7,0x0e,0xf2,0x4e,0xc4,0xe1,0xc0,0xa2,0x31,0x8b,0x27,0x09,0x52,0xaa, \
-0xab,0x25,0xaa,0x48,0x9e,0xb8,0xdb,0x48,0x48,0x2c,0x2b,0x10,0x12,0x9c,0x20,0xb9, \
-0xb6,0x91,0x0e,0x90,0x16,0xef,0xb2,0xac,0x31,0xac,0x96,0xb4,0x25,0x05,0xa7,0x09, \
-0x44,0x83,0x1a,0x6f,0xd1,0x6a,0x27,0xe5,0x05,0x09,0x24,0x44,0x45,0x51,0x75,0x29, \
-0xd3,0x06,0x62,0x76,0x73,0xba,0x40,0x35,0x6c,0x42,0xd0,0xd3,0x0f,0x5b,0x2c,0x84, \
-0xe2,0xe5,0x8e,0x8c,0x99,0x8e,0x08,0x1e,0x6c,0x2c,0xcb,0x3a,0x62,0x43,0xdb,0x9b, \
-0x9c,0x5a,0x82,0x0b,0x2b,0x2b,0xd2,0xde,0xaf,0x12,0x1c,0x10,0x8b,0x5d,0xa6,0xf2, \
-0xb8,0x15,0x00,0x86,0xa2,0x00,0x28,0x08,0x56,0x51,0x6b,0xb8,0xd0,0xd7,0xda,0xb3, \
-0x47,0x80,0xd2,0xf6,0xdc,0xcb,0x80,0xf2,0xaa,0x46,0x3b,0xa6,0xfb,0x25,0xfe,0x3e, \
-0xfe,0x7c,0x70,0x83,0x52,0x9c,0x81,0x1e,0x0d,0xb0,0x67,0x20,0x00,0x47,0xf1,0x93, \
-0xf6,0x8c,0x0f,0xf8,0xb0,0x2a,0x28,0x11,0xb7,0xfc,0x78,0xb3,0xea,0xad,0x9f,0xb9, \
-0xc2,0x0a,0xaa,0x39,0xc9,0x40,0x68,0xcc,0xc3,0x0d,0x6f,0xbe,0x3c,0x60,0x82,0xa9, \
-0x51,0x0c,0xb3,0x77,0x12,0x28,0x69,0xed,0xc5,0xc1,0x87,0xb0,0x5c,0xad,0x4a,0x1f, \
-0x58,0x80,0x1b,0x46,0xc0,0x0f,0x9e,0xe9,0xb5,0x79,0xeb,0x57,0x3f,0xd9,0xe4,0xf9, \
-0xe1,0x57,0x5c,0x5f,0x68,0xc3,0x50,0xe0,0xf2,0x79,0xa7,0xc5,0xcd,0x62,0x83,0xaf, \
-0xa8,0xd5,0x85,0x86,0x39,0x82,0x72,0xf6,0xe5,0x48,0x80,0xbd,0xea,0x77,0x71,0x31, \
-0xa0,0x1c,0x07,0x0c,0x4d,0xf2,0x87,0x18,0xe9,0x84,0x70,0x0e,0x9b,0xec,0x21,0xae, \
-0xa8,0x85,0x22,0x7d,0xb4,0xe6,0x21,0x36,0x91,0x5a,0xb4,0x7a,0xca,0xfb,0x08,0x66, \
-0x54,0xe5,0x6f,0xcf,0x4f,0xd3,0x08,0x95,0x2a,0xe9,0x99,0x03,0xef,0xc0,0x0b,0xff, \
-0x8c,0x7c,0xf0,0x7e,0xd2,0x19,0x87,0xc3,0x5a,0x68,0x79,0x6a,0x64,0x31,0x7a,0x58, \
-0xa4,0x87,0x07,0xb7,0x67,0xcd,0x57,0xf8,0x55,0x6c,0xba,0x97,0x14,0xff,0x3e,0x27, \
-0xf2,0xca,0xd1,0x9e,0xb8,0x3f,0x92,0x65,0x61,0xc9,0x0b,0xdd,0x27,0xae,0xd8,0x98, \
-0xfb,0xec,0xeb,0x4f,0xff,0x3e,0xac,0x38,0x3f,0xa9,0x9b,0xa7,0x43,0x34,0xeb,0x9d, \
-0xa5,0xa6,0xd4,0xa8,0x90,0x28,0x5e,0x40,0x1a,0x01,0xd8,0xa7,0x78,0x0c,0xa1,0xd7, \
-0x29,0xd2,0x0b,0x1e,0xaf,0x72,0xcb,0xc6,0xe5,0x92,0xc5,0xb8,0x82,0xc6,0x03,0xf0, \
-0x02,0x10,0x8b,0xb7,0xb6,0xc9,0xcc,0x59,0x13,0x96,0x1e,0x47,0x4f,0x90,0x4e,0xf4, \
-0x2f,0xd4,0x2f,0x77,0x4e,0xbc,0x7f,0x9e,0x21,0x1e,0xe7,0xc9,0x0b,0xca,0xa2,0xc8, \
-0x80,0xde,0xfa,0xb3,0x24,0xaf,0x34,0x64,0xf8,0xc2,0xe2,0xf3,0xeb,0xd5,0x91,0xbd, \
-0x74,0xdf,0x9a,0x6f,0xc7,0xa5,0x62,0xe1,0x34,0xc6,0x9a,0x4e,0x80,0xdd,0xae,0xd3, \
-0xb2,0x75,0xa9,0x6f,0x92,0x8c,0x93,0x0c,0xd8,0x58,0xfa,0xb5,0x83,0xfb,0xff,0x8f, \
-0xcb,0x96,0x98,0x5e,0xf5,0xdb,0x81,0x93,0x37,0xa9,0x99,0x24,0x48,0x6d,0x63,0x68, \
-0xd8,0x16,0x3a,0x88,0x55,0xe9,0xc6,0x05,0x9e,0x07,0xe9,0x08,0x79,0xfa,0x0f,0x39, \
-0x71,0x93,0x0b,0x21,0x2b,0x95,0x0f,0x20,0xdc,0x40,0xec,0x04,0x6a,0xd4,0xc3,0x2e, \
-0x49,0xbb,0xba,0xa6,0xcc,0x73,0xc9,0xd0,0xaf,0x36,0x3f,0x53,0x64,0xed,0x29,0x7c, \
-0xb3,0xd6,0x5d,0xb6,0x0f,0x17,0x93,0x9f,0x53,0x1d,0xb1,0xfe,0xbf,0x6a,0xa9,0x7a, \
-0xa3,0xfd,0x94,0xa6,0xcf,0x4d,0x98,0xfd,0x55,0xfe,0x63,0xae,0xa1,0x3d,0x51,0xa4, \
-0xf3,0x09,0xc9,0x5d,0x05,0xe1,0xf4,0xfe,0x79,0x96,0x35,0x89,0xfe,0xcf,0xbb,0x84, \
-0x0c,0x16,0xfa,0x29,0x31,0xe7,0xb0,0xd4,0x64,0x64,0x10,0x16,0x1c,0x1c,0x3e,0xbb, \
-0x7d,0xbe,0x50,0x3e,0xe0,0x50,0xcc,0xf8,0x3b,0x7d,0xc2,0xe6,0x95,0xdf,0x7f,0x87, \
-0xe9,0xde,0xec,0xa4,0x01,0xf3,0x11,0x8e,0x50,0x21,0x5a,0x9d,0x1f,0xf6,0x02,0xc6, \
-0x64,0x5d,0xd0,0x3d,0x1f,0xb8,0xbf,0xe3,0x74,0xc0,0x8b,0xc0,0x86,0x38,0xfb,0x4f, \
-0xd9,0xf5,0xc3,0xc3,0xd5,0x91,0x34,0x86,0x55,0x0b,0x2d,0xb4,0x84,0x2e,0xe6,0x99, \
-0x22,0xd5,0x5f,0x66,0x27,0xda,0x48,0x62,0x68,0x0a,0x18,0xdb,0x00,0x94,0xc4,0x48, \
-0x36,0x36,0xca,0xa6,0x58,0x7e,0xfa,0x47,0xd8,0x97,0x96,0x22,0x31,0x38,0x10,0x6a, \
-0x4c,0x87,0xe0,0xff,0xa8,0x93,0x51,0x82,0x18,0x93,0x75,0x17,0x3a,0xb1,0x7b,0x3d, \
-0x3e,0x2e,0xa3,0xf2,0x88,0x48,0xde,0x28,0x54,0xaf,0xe9,0x81,0xf4,0x7b,0x3f,0xb5, \
-0xc0,0x87,0xd4,0xbf,0x33,0xad,0x29,0xe6,0x2f,0x77,0x0b,0xf0,0xb8,0x05,0xa7,0x38, \
-0xff,0x82,0x5b,0x51,0xbc,0x9e,0x8f,0xe2,0xb5,0x90,0xe8,0x33,0x5c,0x40,0x43,0x0f, \
-0x08,0x46,0xdf,0x34,0x63,0x5e,0xca,0x3f,0xec,0xe1,0x5a,0xfa,0xf8,0x1c,0x0f,0x10, \
-0x3b,0x98,0x42,0x84,0x38,0x80,0x99,0x90,0x98,0xfe,0x7e,0xf2,0xe1,0x69,0x79,0x7d, \
-0xd7,0x82,0x75,0x40,0xc6,0x8f,0x2e,0x3f,0xcc,0xb4,0x22,0x97,0x0f,0xb7,0xfd,0x6e, \
-0x85,0x30,0xaa,0x4f,0x84,0xe3,0x46,0x6e,0xf8,0x44,0x36,0xc2,0x91,0xc4,0x9d,0x51, \
-0x31,0xe1,0xd6,0x9e,0xde,0xd5,0xa2,0x04,0x19,0x95,0x2a,0x31,0x41,0x11,0x18,0xc1, \
-0x8c,0x12,0x22,0xc5,0x91,0x04,0x44,0xfc,0x77,0xec,0xbb,0x82,0x27,0xb9,0xc2,0x87, \
-0x63,0x3a,0x34,0x7d,0x94,0xf5,0xbb,0x2d,0x8d,0xe8,0x7e,0x36,0xef,0x72,0x39,0x61, \
-0x19,0x85,0xbf,0xee,0xde,0x09,0xf9,0x61,0xc8,0x7b,0x72,0x76,0x11,0x3e,0x30,0xf3, \
-0x91,0x69,0xb9,0xe3,0x94,0x42,0x1e,0x26,0x17,0xc8,0x4d,0xa8,0x16,0x21,0xed,0x61, \
-0xba,0x4a,0xc3,0x54,0x9c,0xe3,0x37,0x4f,0xd3,0x3b,0x02,0x1c,0xf4,0x45,0xc9,0xc0, \
-0x9c,0x43,0xa5,0xcb,0x75,0xee,0x87,0xba,0x77,0xf9,0x87,0xb4,0xf5,0x0a,0x4f,0x6c, \
-0x23,0x21,0xb3,0x88,0x93,0x0a,0x8a,0x23,0x11,0x18,0xab,0x19,0x08,0x2c,0x38,0x07, \
-0x9a,0x1f,0xd3,0x8c,0xb8,0x87,0xb7,0xa1,0xd3,0xea,0x9f,0xdb,0xee,0x29,0x71,0x0a, \
-0x7d,0x98,0x97,0xa7,0x8e,0x71,0xa3,0xd1,0x3d,0x89,0xa9,0xa6,0x4c,0x06,0x34,0xa0, \
-0x77,0xa5,0xe0,0x17,0x51,0x1c,0x52,0x53,0x4a,0xda,0x46,0xb6,0xe9,0xa8,0x6a,0xab, \
-0xbd,0xd3,0xc0,0x81,0xe2,0xe0,0x82,0xa3,0x08,0x86,0x52,0x54,0x5a,0xdc,0x85,0xc8, \
-0xe7,0x04,0xe3,0xa5,0x30,0x30,0xca,0x53,0x14,0xc3,0x39,0x24,0xa9,0x91,0xa5,0xa1, \
-0x37,0xbf,0xa8,0xff,0x86,0xfc,0xc1,0xc3,0xb4,0xa5,0xfd,0xe4,0x0f,0x04,0x2f,0x49, \
-0x5f,0x49,0x66,0x9d,0x50,0x34,0xbf,0xd3,0xa3,0x6a,0x1b,0x5d,0xdc,0xb8,0xf9,0x20, \
-0xda,0x5b,0x03,0x6e,0x92,0xb5,0xd2,0xdc,0xc2,0xf5,0x87,0x6c,0xa8,0x71,0x4e,0x32, \
-0xb5,0x09,0x49,0x1a,0xd8,0xe0,0xa2,0x2a,0xd5,0x23,0x8d,0xdb,0xe4,0xa9,0xb7,0x20, \
-0xe5,0x36,0x1d,0x19,0x0e,0x56,0xd1,0x37,0xbb,0xe8,0xc9,0x1b,0x91,0x43,0x1c,0x4f, \
-0x66,0x41,0xa0,0x7a,0x43,0xb2,0x3b,0xa7,0xd1,0x3c,0x78,0x63,0x92,0xda,0xc3,0x66, \
-0x90,0x4a,0x64,0x35,0x41,0xae,0xb6,0x8b,0x02,0x08,0xec,0x82,0xd2,0x7e,0xf9,0x8b, \
-0xad,0x81,0x25,0xa5,0xf0,0x70,0x62,0x0a,0xd6,0x14,0x4a,0xb9,0xbd,0xf5,0x0d,0xa7, \
-0x78,0xda,0xd1,0xbb,0x80,0xe0,0xc2,0x64,0xc8,0x0a,0xb7,0xe5,0xea,0x7c,0xdd,0x94, \
-0x9f,0x3b,0x50,0x14,0x31,0x27,0xaf,0x18,0x89,0xfd,0x78,0xd9,0xf5,0x3b,0x0c,0x13, \
-0x49,0xfb,0x15,0x3e,0x96,0x4e,0x88,0x15,0x0f,0x50,0x6d,0x78,0xe0,0x03,0xc5,0xfd, \
-0x36,0xc7,0x42,0x9c,0x59,0x63,0x48,0x25,0x89,0x76,0x38,0x99,0x9e,0x2d,0x40,0x6d, \
-0x79,0xb9,0xab,0x71,0x84,0xad,0x19,0x65,0xfb,0x0b,0x12,0x15,0xac,0x41,0x57,0xe7, \
-0x80,0x25,0x82,0x97,0xc6,0xdf,0x30,0xdf,0x0a,0x1f,0x68,0xf4,0x61,0xbc,0xd2,0xd4, \
-0x4c,0xdb,0x0b,0xac,0xeb,0x86,0x9e,0xb3,0xc4,0xd3,0xdd,0x64,0xaf,0x45,0x1e,0x83, \
-0x09,0x29,0xdf,0x6a,0x73,0x31,0x9e,0x63,0x8a,0x89,0xad,0x33,0x89,0x0a,0x0c,0xac, \
-0xf3,0x79,0x66,0x99,0xff,0x3c,0xc6,0x1e,0xeb,0x93,0x02,0x11,0x64,0x05,0x1d,0x36, \
-0x3c,0xa0,0x1d,0x2a,0xb6,0x84,0x5b,0xdb,0x69,0x6c,0x90,0x9c,0x36,0xb8,0xb2,0xd4, \
-0x95,0xe1,0x41,0xd4,0x22,0x49,0x66,0x7a,0x30,0x28,0xf5,0xf4,0x07,0x38,0xc8,0xb1, \
-0x23,0x2f,0xc8,0x3a,0x87,0x59,0xc2,0xd6,0xf4,0xcb,0x87,0x64,0x24,0x5d,0xe5,0xbb, \
-0x9f,0x86,0xe0,0x6a,0x0d,0xce,0xbf,0xd7,0xb6,0x98,0x7a,0xe0,0x1c,0x72,0x3f,0x77, \
-0x4b,0xe7,0x40,0xd4,0x5c,0xf0,0x92,0x13,0xea,0x25,0x11,0x8c,0x09,0x30,0x40,0xfb, \
-0x46,0x82,0xd3,0xbb,0x7c,0xae,0x44,0x6e,0x07,0x8c,0xe7,0x49,0x73,0x3f,0x1d,0x2f, \
-0x2f,0x89,0x01,0x0b,0xcb,0x30,0x56,0xe5,0xde,0xe1,0x75,0xf5,0x83,0xc5,0x20,0xb1, \
-0xba,0x7f,0x9d,0x48,0x0b,0x4b,0x07,0xe1,0x74,0xab,0xae,0x1b,0x36,0x24,0x8b,0x01, \
-0x09,0x54,0x71,0xcc,0xe7,0xe7,0xa3,0xd5,0x89,0xf1,0x58,0xc7,0xa9,0x07,0x83,0x10, \
-0xb3,0xbc,0x3a,0xb2,0xf8,0xf1,0xdb,0x02,0x03,0xf0,0xed,0x3b,0xf4,0xaa,0x60,0xbe, \
-0xfc,0x68,0x42,0xd3,0xe8,0x33,0x36,0x3f,0xf5,0x7d,0x35,0x73,0x87,0xb5,0x84,0xdd, \
-0x4b,0x8a,0x28,0x0b,0x91,0x1a,0x4d,0x03,0xbf,0x70,0x61,0xa3,0x2f,0x9e,0x4f,0x53, \
-0x60,0x36,0x76,0xed,0x86,0xd4,0x95,0xab,0x1c,0xa1,0x73,0xbb,0x19,0x86,0x15,0xcb, \
-0xa3,0x7a,0x1d,0xc9,0x93,0x43,0xe4,0x05,0xc6,0x08,0xc8,0xa4,0x88,0x6b,0x8b,0xaa, \
-0x20,0xf3,0xf4,0x62,0xd9,0x81,0xde,0x53,0x44,0x41,0x71,0x80,0xe5,0x14,0x6a,0x7c, \
-0x07,0xaf,0xe9,0x31,0x03,0x00,0xc3,0x16,0x5a,0xc2,0x9c,0xea,0x0a,0x11,0x8d,0x11, \
-0x62,0x28,0xe3,0x69,0x1f,0x0d,0xd4,0x54,0xe2,0x7b,0xda,0x2f,0x67,0x26,0x22,0x42, \
-0x44,0x92,0x40,0xff,0x3a,0xa2,0x10,0x4f,0xd7,0xd3,0xa3,0x0e,0xdc,0xbf,0xa9,0xe6, \
-0xfc,0x9d,0xf7,0x2d,0x6f,0x2d,0x5b,0xd7,0x57,0x4f,0x1c,0x86,0xff,0xb2,0xe1,0x34, \
-0x04,0xf4,0xf9,0xce,0xc6,0x18,0xde,0x9e,0x1e,0xc0,0x58,0x80,0x83,0x3c,0xda,0xc7, \
-0xd9,0xaa,0xcb,0xf0,0xf3,0x22,0x61,0x88,0xfd,0x73,0x84,0xcb,0xc8,0x3c,0xde,0xac, \
-0x8e,0xda,0xa3,0x65,0x7c,0x95,0xa9,0x7c,0x47,0x14,0xae,0xbb,0x57,0x68,0x98,0xc0, \
-0x35,0xfc,0x68,0x60,0x4f,0x69,0xaf,0x6c,0x7b,0xd4,0x36,0x8b,0x7c,0x8a,0x1e,0x2e, \
-0x1c,0x47,0x0c,0xaf,0x8b,0x14,0x34,0x2d,0xc0,0x8c,0xd7,0xa9,0xc0,0x20,0xec,0x93, \
-0xe9,0xb4,0x0d,0x11,0x89,0x0e,0x46,0x94,0xe0,0xca,0xfd,0x57,0x84,0xf6,0x4b,0x5d, \
-0x8e,0x98,0xfd,0x27,0x17,0x7a,0x78,0x4a,0xf8,0x52,0xf9,0xde,0x61,0xe0,0x27,0x20, \
-0xb3,0xf3,0x18,0x2f,0xc3,0x02,0xd6,0x8a,0x1a,0x31,0x7f,0x1b,0x05,0x0c,0xca,0x9c, \
-0x0f,0x41,0x79,0x40,0x84,0xe7,0x91,0x85,0x12,0x46,0x9b,0xfa,0x8a,0xa6,0x27,0xa5, \
-0xc0,0xb8,0x75,0x70,0x25,0x7a,0xfc,0x63,0x06,0x5c,0xed,0xb5,0x36,0x6e,0xa1,0xd4, \
-0x21,0xb5,0x6d,0x90,0x65,0xfe,0x19,0xcb,0x47,0x1e,0x47,0x67,0x97,0xa4,0xfc,0x7c, \
-0xd8,0x6f,0xc8,0xf2,0x21,0x82,0x8b,0x83,0x73,0x13,0x06,0x8d,0x64,0xdc,0xd2,0xb1, \
-0x21,0xc5,0x89,0xdf,0xb8,0xf9,0x79,0xa7,0x00,0x74,0x94,0x30,0x84,0x10,0x35,0x4c, \
-0xcc,0xcc,0xba,0xcd,0x4f,0x8f,0x77,0x60,0x07,0x98,0x69,0x2d,0x2a,0x5e,0xcd,0x7f, \
-0x21,0xe1,0x66,0x53,0xe9,0x0a,0x06,0xe4,0x93,0x40,0xce,0xfe,0xb1,0xb8,0xdd,0xcd, \
-0x01,0x5e,0x07,0x13,0x8c,0xc1,0x21,0x41,0xd6,0xbb,0xcd,0xd0,0xdc,0x7b,0x6f,0xab, \
-0x60,0x9e,0x8e,0x54,0x4c,0xaa,0xa2,0x3e,0x2f,0x4f,0x3a,0x1a,0xd1,0xb3,0xab,0xfa, \
-0x8e,0x22,0x51,0xc3,0x28,0x80,0x2d,0x36,0xe6,0xb5,0x60,0xe2,0xd0,0xbc,0x55,0xc7, \
-0x2f,0x1b,0x0e,0xee,0x9c,0x10,0x92,0x51,0x0d,0x06,0xbe,0x23,0xb4,0xd7,0xe8,0x5c, \
-0x4a,0x23,0xc8,0x94,0x42,0x5c,0xef,0x8e,0xf6,0x94,0x93,0x6a,0x37,0xee,0xaa,0x3f, \
-0x76,0xea,0x42,0xed,0xfd,0x28,0xe0,0x5f,0x90,0x36,0x13,0x59,0x1b,0x04,0x47,0xbf, \
-0x75,0xac,0x63,0xd0,0x71,0x20,0x21,0x68,0x3d,0x64,0xf0,0x3a,0xac,0xeb,0xd7,0xcf, \
-0xda,0x7b,0x3b,0x67,0xab,0x0e,0x4d,0x15,0x9e,0xc6,0x4a,0xc1,0x45,0x22,0x22,0x20, \
-0x88,0x0a,0x24,0x55,0x50,0x12,0x0b,0xb4,0xdb,0x38,0xa6,0x6c,0x86,0x71,0x9a,0x7e, \
-0x5f,0x6e,0x73,0x24,0x4c,0x47,0xcd,0x2b,0xe2,0xb8,0xcd,0x74,0x8a,0x5a,0x11,0x90, \
-0xd1,0x83,0x35,0x29,0x3c,0x20,0x81,0xd3,0x57,0xb9,0xaf,0x0b,0x98,0x2a,0x6c,0x15, \
-0xe0,0xfb,0x6e,0x41,0x8f,0x62,0xb4,0x37,0x3e,0x3e,0x6c,0x1c,0x9a,0x96,0x02,0x69, \
-0x63,0x26,0xc3,0x7b,0x10,0x07,0x82,0x06,0xbe,0x90,0x4c,0xdd,0x85,0xb7,0xe8,0x1a, \
-0x59,0x29,0x31,0x88,0xe2,0x20,0x7c,0xc4,0xe0,0x9a,0x8c,0xab,0x4f,0x10,0x51,0xf5, \
-0xd4,0x65,0x54,0x34,0x06,0xce,0xa9,0x50,0x1c,0xe9,0xdd,0xb4,0x6a,0x2e,0xc1,0x12, \
-0xc3,0x24,0x7e,0x17,0x71,0x75,0x12,0x6b,0xe0,0x1e,0x48,0x28,0x20,0x90,0x55,0x11, \
-0x22,0x2a,0x0a,0x33,0x88,0x30,0x85,0x23,0x08,0x49,0xa7,0xca,0x7a,0xa2,0xe2,0x64, \
-0x89,0x9e,0x0f,0x2b,0x7c,0xdd,0x73,0xe6,0xb7,0x6a,0x26,0x9f,0x9b,0xbb,0x73,0x0d, \
-0x98,0x6b,0xb9,0x99,0xb2,0x8e,0xbc,0xcc,0x33,0xb9,0xf9,0x5f,0x0d,0xd9,0xfc,0x5d, \
-0x3e,0x53,0xe8,0x3c,0x59,0xf9,0xfa,0xd5,0xf6,0x45,0xe5,0x3b,0xc8,0x9d,0xcb,0xbc, \
-0x93,0xcd,0x22,0xe0,0x88,0x22,0xb0,0xc3,0xd2,0xc3,0xe7,0xd4,0x10,0xf9,0x82,0xdf, \
-0xca,0x86,0x03,0x4c,0x1e,0xf3,0xbd,0x82,0x85,0xa9,0x38,0xbe,0x56,0xf5,0x68,0x30, \
-0x9a,0x18,0xa0,0x77,0x75,0x70,0x7f,0x8e,0xa1,0x83,0x49,0xb5,0x2a,0x72,0x61,0x10, \
-0x4c,0x77,0x14,0x45,0xf8,0xb1,0xbf,0x0d,0x90,0x4b,0x25,0xa0,0xd8,0xb7,0x67,0x9d, \
-0xdf,0x66,0x9a,0x9f,0xbd,0xd7,0x9f,0xd7,0x1a,0x15,0x4d,0x4f,0x97,0x2b,0x2c,0xad, \
-0xe9,0x80,0xac,0x3a,0x20,0x76,0x77,0x7c,0x57,0x1f,0x37,0x65,0x84,0xe2,0x3b,0xde, \
-0x20,0x98,0xee,0x81,0xf3,0x8c,0xeb,0x6a,0x2a,0x09,0x59,0x25,0x61,0x3f,0xee,0xc8, \
-0x54,0x52,0x28,0x45,0x98,0x18,0x15,0x91,0x49,0xfe,0xc6,0x15,0x8b,0x11,0xc3,0x58, \
-0x17,0x6e,0x1b,0xf0,0x78,0xfd,0x5d,0x39,0xe7,0xdf,0xed,0xbd,0x67,0x3b,0x60,0xf7, \
-0x61,0x22,0x1b,0xe9,0x71,0x62,0x90,0x42,0x5f,0xdb,0x98,0xbc,0x1a,0x30,0xc9,0xe0, \
-0x41,0xd5,0x7d,0xc6,0xdb,0x56,0x5c,0x97,0x6c,0x62,0x39,0xa9,0x65,0x8b,0x1e,0x35, \
-0xba,0xd0,0x32,0x2f,0xfa,0x37,0x0d,0x99,0xd2,0x0d,0x72,0x11,0x21,0x26,0xf7,0xcf, \
-0x33,0x0c,0xb4,0xa8,0x7a,0x10,0x29,0xe9,0x03,0x80,0x77,0x9d,0x0f,0x2f,0x25,0x5c, \
-0xba,0xa5,0xde,0x13,0x9f,0x03,0x01,0xdb,0xcd,0x14,0x00,0x82,0x40,0xf9,0xe6,0x8c, \
-0xae,0x3b,0xe6,0xe4,0x29,0xe2,0x65,0x4b,0xa6,0x73,0xa2,0x48,0xc6,0xc8,0xf5,0x92, \
-0xb2,0x10,0x6d,0x2a,0x70,0x66,0x56,0x47,0x5f,0xd1,0x1c,0x70,0x90,0xe9,0x8f,0x5a, \
-0xcd,0x0d,0x37,0x55,0xce,0x86,0x95,0x0d,0x2d,0x76,0x66,0x96,0x03,0x4e,0x18,0x40, \
-0x17,0xf7,0x7f,0x6c,0x85,0xdd,0xb8,0xb1,0x90,0xd4,0xdb,0x99,0x1e,0x37,0xff,0xe2, \
-0x16,0x21,0xe5,0x66,0x98,0x2e,0xd0,0x6a,0xa7,0x44,0x83,0x40,0x3f,0x3f,0xbc,0xb3, \
-0xbb,0xed,0x9d,0x86,0x35,0x96,0xba,0x5e,0xc3,0xb2,0xda,0xac,0x49,0x0a,0x8a,0x53, \
-0xb7,0x43,0xd6,0x43,0x44,0xff,0x6f,0xe7,0xf0,0x37,0xbc,0x1d,0x4a,0xe4,0xd4,0x4a, \
-0xd8,0x07,0xde,0x9a,0xc2,0x1c,0x44,0x38,0x9e,0xd3,0x6d,0x33,0xbe,0x3d,0xe9,0xd7, \
-0xd4,0x6a,0x6d,0x0d,0x80,0xe0,0x24,0x41,0x3f,0x8d,0xab,0x16,0x11,0x7e,0x13,0x7b, \
-0xcb,0xe6,0xc5,0xf7,0x97,0xb1,0x80,0x4b,0x31,0xb4,0x53,0xec,0xfe,0x57,0x5a,0x59, \
-0xcb,0xef,0xf2,0x31,0xe0,0x83,0x0f,0x12,0xcf,0x10,0x2e,0x81,0xf8,0x20,0xb8,0x35, \
-0xea,0xfd,0x7f,0xfd,0x11,0xbe,0xd0,0xb0,0x36,0x61,0xbb,0x50,0x59,0xec,0xc8,0xc6, \
-0x70,0xb5,0xe3,0x25,0x7e,0xe2,0x06,0x36,0xd0,0xda,0x69,0xa0,0xd6,0x45,0x8a,0xc1, \
-0x81,0x59,0xac,0x8e,0x05,0x20,0xc5,0x44,0x56,0x45,0x50,0x11,0x01,0x63,0x15,0x3f, \
-0xad,0x96,0x2c,0x9a,0x21,0x62,0xaa,0x2c,0x16,0x08,0xa0,0x88,0xa2,0x8a,0x30,0x55, \
-0x05,0x06,0x20,0xa2,0x81,0x9b,0x28,0xa8,0x8a,0xc6,0x4d,0x06,0xb3,0x2d,0x48,0xb0, \
-0x62,0xf9,0x03,0x1a,0x14,0x5c,0xdf,0xab,0xf6,0x7d,0x99,0x6a,0xd8,0x62,0x63,0xcb, \
-0x16,0x70,0xf9,0x70,0x17,0x5c,0x24,0x13,0xc2,0x2b,0x44,0x11,0x91,0x91,0x3f,0x39, \
-0x50,0x43,0xad,0xa1,0x16,0x0b,0x08,0x82,0x84,0xea,0x7e,0xf7,0xbd,0xcf,0xba,0xc2, \
-0xf7,0x5a,0xeb,0xb1,0x4a,0xc5,0x3a,0x63,0x06,0x17,0xf1,0xfc,0xd6,0x7a,0x66,0x8b, \
-0xb6,0x61,0x4c,0x3f,0xd9,0x68,0x91,0x3c,0x46,0x82,0x1e,0x3c,0xf1,0x8f,0xf7,0x28, \
-0x10,0x06,0x1e,0xa3,0x94,0x95,0x9b,0x0f,0xf5,0xa3,0xdf,0x94,0x68,0xb0,0x0a,0xf1, \
-0x75,0xa4,0x5a,0xc8,0x76,0x0a,0xdb,0x9c,0xd2,0xdb,0xc6,0x6b,0xc4,0x6b,0xb9,0x61, \
-0x1a,0xd0,0x7b,0xd2,0x49,0xdb,0x62,0xbd,0xcf,0xb6,0x77,0x88,0xca,0x39,0xbc,0xe5, \
-0x32,0xee,0x4a,0xc4,0xab,0x20,0xe9,0xc8,0xd3,0xf1,0x6d,0xb6,0x31,0x2d,0x2f,0x63, \
-0xe2,0x84,0x48,0xe5,0x48,0x4e,0x60,0xbe,0x94,0xae,0xb7,0x06,0xaa,0x8f,0x44,0x7c, \
-0x8a,0x16,0x34,0x7d,0xfe,0xee,0xe0,0xad,0xb3,0x7b,0x5d,0x5a,0x0f,0x6a,0x5c,0x91, \
-0x14,0x93,0xf2,0xfb,0x57,0x90,0xa7,0x2c,0x24,0xaf,0xac,0x1e,0x97,0x42,0x34,0x5a, \
-0xc8,0x1e,0xec,0x31,0x62,0x1b,0xde,0x79,0xdf,0x4c,0x08,0xe7,0x47,0x4f,0xd6,0x92, \
-0x92,0xa4,0xd7,0xeb,0x82,0xcb,0xdb,0x5f,0x95,0x6b,0xee,0x1d,0x9a,0x55,0xed,0x9f, \
-0x0c,0x25,0xcc,0xc8,0xa5,0xbc,0x52,0x44,0x52,0x7a,0xa2,0x65,0xa1,0xfd,0x37,0x5e, \
-0x1c,0x91,0x99,0x7a,0xf1,0x4b,0x7f,0x4b,0x35,0xae,0x45,0x57,0x8d,0xcd,0x1d,0xcd, \
-0x03,0x59,0x2b,0xbe,0xfb,0x5f,0xe7,0x62,0xab,0xd7,0x38,0xb2,0xad,0xd2,0xab,0x26, \
-0x2b,0x21,0xa7,0x8a,0x0d,0x4f,0x9e,0x2b,0xa9,0xf0,0xee,0xbe,0xc9,0x2b,0x6c,0x94, \
-0x70,0x63,0x14,0x39,0xf1,0x71,0x45,0xb2,0x4b,0xe9,0x3f,0x15,0xe8,0x61,0x8f,0xc3, \
-0x4c,0xc5,0xa7,0x2e,0x05,0xf4,0x4a,0x6b,0x7e,0xf1,0x10,0x64,0xaa,0xb1,0xfa,0x95, \
-0xe9,0x84,0x8d,0x8d,0x05,0x98,0x63,0xdc,0x15,0x39,0xe8,0x6b,0xb9,0x50,0xc6,0x05, \
-0x02,0x67,0x6f,0xfa,0xdc,0xd8,0xac,0x89,0xf2,0xf1,0x1e,0x67,0x71,0x5f,0x58,0xe9, \
-0x5e,0x74,0xee,0x38,0xc5,0x06,0xb6,0x5e,0x97,0x77,0x0f,0xed,0x95,0x66,0x78,0x44, \
-0xfd,0x6e,0x5f,0xa3,0xdd,0x86,0xba,0x98,0x22,0xff,0x1b,0xd3,0x62,0x17,0xb6,0x60, \
-0x37,0x6e,0xcb,0xdf,0x4f,0x06,0x05,0xbb,0xa0,0xb6,0x21,0x12,0xc3,0x99,0xc4,0x89, \
-0x75,0xeb,0xca,0xee,0x7f,0x52,0xdd,0xe3,0xbe,0x79,0x9a,0x9b,0xbe,0xed,0x9a,0x36, \
-0xdc,0x86,0xbe,0xdc,0x7a,0x21,0x75,0x3b,0x1e,0x21,0xcb,0xb5,0x11,0x01,0x15,0xc9, \
-0xdb,0xf8,0xb1,0xa4,0xd3,0x05,0x58,0x44,0xf2,0x0f,0xa8,0xf8,0x18,0xf3,0x82,0x50, \
-0x1f,0x5c,0xf6,0x8e,0xe9,0xd4,0x3e,0x8e,0x2e,0x54,0xb1,0x58,0x03,0xb8,0xfb,0x1f, \
-0xad,0x87,0xcb,0x0e,0x2f,0x7b,0xcc,0xc8,0x16,0x11,0x24,0xfc,0x47,0xa9,0xe9,0xdb, \
-0xe9,0xed,0x1e,0x56,0x73,0xf0,0x26,0x67,0xf8,0x3f,0xfb,0x7f,0x3a,0x9d,0x81,0xcd, \
-0xb6,0x80,0x82,0xee,0x7f,0x6b,0x54,0x22,0x03,0xe6,0xdc,0x95,0x90,0x6d,0x25,0x08, \
-0x46,0xd2,0x06,0x18,0x14,0x6a,0x60,0xe2,0xf5,0xa7,0xf2,0xd7,0x43,0x1f,0xce,0x87, \
-0xed,0x5f,0xe9,0x34,0x81,0xa6,0x77,0xc3,0xa3,0x5e,0xab,0x36,0xec,0x84,0x44,0xf0, \
-0x25,0xfa,0xec,0x92,0xa1,0x64,0xcd,0x3d,0xf6,0x52,0x94,0x06,0x62,0x03,0x01,0x9d, \
-0x66,0x34,0x34,0xa0,0xba,0x8d,0x58,0xee,0x6d,0x3f,0x54,0xcb,0x0e,0x68,0x3b,0x1a, \
-0x31,0x62,0xf9,0xbe,0x5f,0x8d,0x2e,0x88,0xb5,0x1f,0xce,0x25,0x19,0x0e,0x48,0xa0, \
-0x0c,0x3d,0x6d,0x3f,0x78,0x70,0xf6,0x83,0x11,0x35,0xfd,0x36,0x61,0x02,0x29,0x46, \
-0x22,0xe9,0xb3,0xb1,0xab,0xca,0x78,0x4a,0x0f,0xef,0x2b,0x11,0x85,0xb7,0x08,0x31, \
-0xa9,0xdd,0xe7,0x82,0x82,0xed,0x3d,0x32,0x55,0x9e,0x61,0x80,0x7f,0xc7,0x7a,0xa2, \
-0x74,0xea,0xab,0xe1,0xb1,0xf1,0x60,0xb1,0xb2,0xa9,0xe7,0x39,0xb5,0x9e,0xe9,0xfb, \
-0x3d,0x6d,0xf9,0x44,0x78,0xfe,0x54,0x2b,0x48,0x5d,0x94,0x9d,0xfe,0xeb,0xd1,0xf9, \
-0x49,0xeb,0xfc,0x91,0x45,0x32,0x79,0xf6,0xbb,0x4c,0x7d,0x16,0x54,0xde,0xf7,0xfd, \
-0x38,0xeb,0x98,0x27,0x5f,0xcf,0xc1,0xd4,0xd5,0x12,0xa4,0x95,0xb1,0x69,0x87,0x02, \
-0x59,0xec,0x3f,0x0d,0xa6,0x16,0x40,0x34,0xa2,0x19,0x26,0x5c,0xb0,0xae,0xca,0x3b, \
-0xc0,0x3d,0x20,0x00,0xab,0x48,0xa3,0x85,0xeb,0x8a,0xff,0x92,0xd6,0x31,0xc0,0x2d, \
-0x92,0xc5,0x29,0xaf,0xc4,0xc3,0x66,0x68,0xfc,0x9a,0x03,0xd1,0xa4,0xdd,0x61,0xcd, \
-0x21,0xfe,0x02,0x32,0xb3,0xf7,0x20,0x19,0x6b,0x24,0x2c,0x1f,0x53,0xe9,0xe5,0xd0, \
-0xf8,0x9a,0x92,0xf4,0xeb,0xf8,0x40,0xc0,0xc4,0xb2,0xf9,0xe0,0x98,0x66,0x89,0x91, \
-0xee,0x97,0x37,0xd3,0xd3,0x4c,0x24,0x9f,0x88,0x9e,0xc7,0x0b,0x10,0xd3,0x68,0x4d, \
-0xf9,0xdc,0x5f,0x07,0x95,0x90,0x2b,0x79,0xd8,0x1c,0x32,0x12,0xc7,0xcc,0x2f,0xad, \
-0x5d,0x66,0x28,0xf0,0xd4,0x9b,0xab,0x0d,0xb1,0x50,0xab,0xd4,0x22,0x64,0x19,0xb7, \
-0xd7,0x9c,0x1f,0x47,0x6e,0x09,0x2d,0xe1,0xf4,0x34,0x54,0x2e,0x57,0xe2,0xd9,0x66, \
-0x1f,0x44,0x4f,0x8c,0x70,0x77,0x85,0xd7,0x35,0x0d,0x22,0x1c,0x28,0x95,0x02,0x93, \
-0x60,0x31,0x19,0x12,0x46,0x99,0x6e,0x29,0xe2,0x8b,0xcf,0x56,0x0b,0x04,0xaa,0x34, \
-0x7a,0x5c,0x31,0x83,0xe5,0xe1,0xc6,0x72,0x9d,0x82,0x57,0x30,0x6c,0x17,0x56,0xed, \
-0x1a,0xfa,0x5f,0x28,0x6f,0xa1,0x4c,0x27,0x71,0xc6,0x1b,0xdf,0x49,0xd7,0x7a,0xf3, \
-0x0c,0x99,0x0c,0xbc,0x69,0xc5,0x2a,0x5f,0x89,0xb8,0x6c,0x8a,0x60,0x51,0xb6,0xd6, \
-0xa6,0x9b,0x1c,0xd7,0xe6,0x8d,0x69,0x07,0xc4,0xee,0xaa,0x52,0x36,0x89,0xdb,0x87, \
-0x0d,0x4e,0xd8,0x74,0x8e,0x36,0x60,0x0a,0x85,0x01,0x52,0x3a,0x31,0x70,0xea,0xa2, \
-0x4f,0x80,0x30,0xf4,0xda,0x8b,0xd4,0x2a,0xdc,0x48,0x51,0x2a,0x92,0x82,0xb2,0x00, \
-0xa0,0x47,0x5d,0x25,0xfb,0xf8,0x01,0xfa,0x20,0x39,0x52,0x72,0xcc,0x06,0x55,0x29, \
-0xc3,0x32,0x9d,0x75,0x58,0x01,0xb1,0x67,0x09,0x53,0x21,0xd6,0x75,0x49,0x5a,0xd6, \
-0xfa,0xb4,0x03,0xaf,0x92,0x89,0xa5,0x66,0xe5,0xfa,0x44,0xfb,0x23,0x87,0x61,0x0f, \
-0x90,0xd6,0xbe,0x9f,0x35,0x6c,0xdd,0xcc,0x92,0x06,0x4b,0xdd,0x10,0xa4,0x8a,0x3f, \
-0x37,0x3a,0xb8,0x7a,0xb4,0x0f,0x34,0x1f,0xb8,0x3e,0x33,0xa1,0xb2,0x16,0x3c,0xd1, \
-0xe5,0x87,0x1d,0xde,0xee,0xcc,0x2f,0x8b,0x6c,0x73,0x34,0x53,0xb7,0xf3,0xa7,0xe9, \
-0xbd,0x4f,0x0f,0x9f,0xc9,0x71,0x37,0xc1,0x1d,0x69,0xd6,0xa3,0x63,0xfd,0x2d,0x74, \
-0xbf,0xc7,0x5e,0x58,0x48,0x54,0x7e,0x78,0x18,0x25,0xa2,0xad,0x25,0xa0,0x07,0x10, \
-0xfd,0xad,0x09,0xd6,0xce,0xe0,0x14,0x9e,0x32,0x95,0x9d,0xbd,0xb5,0x5d,0xec,0xd9, \
-0x60,0xb6,0x76,0x6b,0x23,0xdd,0x4e,0x14,0x0e,0x41,0x79,0xf9,0x59,0xc4,0xec,0x67, \
-0xce,0xc3,0x70,0x10,0x81,0xb9,0xfc,0x59,0x50,0x43,0x87,0xca,0x93,0x9b,0x09,0xe3, \
-0xe7,0x4d,0x67,0x87,0x2b,0xf2,0x60,0x76,0xa6,0x6d,0x28,0x93,0xb1,0x09,0x67,0x2a, \
-0x6d,0xd2,0xf8,0x0f,0x04,0x98,0x4a,0xd4,0x4e,0x6c,0xbd,0xce,0x18,0x47,0x7f,0x7d, \
-0xb4,0x16,0xce,0x9b,0x3c,0x07,0x72,0x30,0xd2,0x11,0x8f,0xd3,0xae,0x36,0x0d,0xb6, \
-0x0e,0x08,0xf1,0x6a,0x03,0x8f,0xd3,0xa8,0x18,0x3b,0x04,0xee,0xd7,0x71,0x9c,0xad, \
-0xa5,0xa2,0xf9,0xf4,0x61,0xfb,0xa8,0x51,0xcf,0x54,0xd3,0xe0,0x66,0x96,0x0d,0x2e, \
-0xc9,0x44,0x31,0x0a,0xd9,0x71,0x6a,0xe0,0x46,0x46,0xd3,0x13,0x18,0x07,0x10,0x7c, \
-0x61,0xfa,0xfe,0xbb,0xd5,0x34,0xd4,0xc6,0x7a,0x64,0xdc,0xde,0x85,0x6d,0x6b,0xc7, \
-0x48,0x20,0xb2,0x20,0x83,0xad,0x81,0x58,0x71,0x21,0xe2,0x4d,0x08,0x2b,0x13,0x55, \
-0xb4,0xe0,0x32,0x9b,0xe2,0x85,0x4c,0xa8,0x86,0x45,0xe0,0x48,0x28,0x41,0xa7,0x11, \
-0xd5,0xc2,0x14,0x38,0xc3,0x60,0x4e,0x00,0xc0,0x2e,0xb7,0x1a,0xa2,0x96,0x0d,0x65, \
-0x0b,0x6b,0x22,0x4b,0x77,0xf0,0xa6,0x19,0x06,0x0c,0x01,0x53,0x32,0x31,0xd2,0xd1, \
-0x3c,0x0e,0x8d,0x37,0x24,0x26,0xdc,0x1b,0x66,0xd1,0x50,0x61,0x4e,0xac,0xcc,0x30, \
-0x1b,0xe1,0x42,0x1c,0x22,0x96,0x49,0x14,0xf8,0x02,0xa9,0x4f,0x7b,0x59,0x44,0x3f, \
-0x5c,0x47,0x32,0x19,0x3f,0x14,0xa5,0xe3,0x3b,0xe1,0x6b,0xd3,0x5d,0x7e,0xdc,0x4e, \
-0xf8,0x08,0x75,0x49,0xf9,0xfa,0x4e,0xf8,0xaf,0xa5,0x28,0x2a,0x75,0x05,0x25,0x92, \
-0x6b,0x6a,0xd9,0x04,0x05,0x60,0x85,0x6b,0x08,0x01,0x1f,0x1f,0x1b,0xb5,0xbc,0x02, \
-0xa9,0x27,0xf4,0x74,0x09,0x46,0xbc,0x4a,0x9a,0xc1,0x93,0x93,0x38,0xbd,0x4e,0x74, \
-0xf5,0x4c,0xb9,0x48,0x77,0xa6,0x50,0x9a,0x69,0xa6,0x47,0x6c,0xb6,0xb1,0x70,0x85, \
-0x58,0x23,0xb5,0xae,0x50,0x31,0xe4,0x75,0xcc,0x05,0x98,0xef,0xbc,0xe2,0x1a,0x16, \
-0x44,0x37,0x0a,0x21,0x24,0xc2,0x13,0x70,0xab,0x39,0x2a,0x8d,0x99,0x18,0x56,0x89, \
-0x63,0xa5,0xbc,0xe9,0x96,0x2c,0x93,0x0c,0x16,0x23,0xae,0x71,0x84,0x30,0xd3,0x25, \
-0xa2,0xc1,0xc5,0xc3,0x87,0xb6,0x97,0x0d,0xca,0x41,0xbc,0xb0,0xda,0x6c,0xcd,0x22, \
-0x81,0xcd,0x21,0x93,0x00,0xcd,0x6e,0x98,0xca,0x2e,0x18,0x82,0xca,0xdf,0x7d,0xa7, \
-0x0d,0xf0,0x73,0x77,0xd0,0x86,0xcb,0xe2,0x29,0x71,0x0d,0xcd,0x65,0xb9,0x52,0xd0, \
-0xc7,0x4a,0x84,0x87,0x86,0x38,0xcd,0x89,0xac,0x8f,0x4d,0xe1,0x73,0xad,0x71,0xa4, \
-0x85,0x34,0x38,0x77,0x5f,0x57,0x9b,0x35,0x36,0xd3,0x51,0x3b,0xd1,0xbc,0x81,0xc3, \
-0x17,0x46,0x5b,0xfd,0x70,0x2b,0x22,0x2a,0xc7,0xb7,0x06,0xbf,0xcd,0xeb,0x55,0x04, \
-0x91,0x19,0x39,0x1d,0x9e,0x01,0x44,0x8a,0x2d,0x11,0x17,0x78,0xe6,0x51,0x11,0x00, \
-0x48,0xd7,0xca,0xb8,0x1d,0x4e,0xcb,0x0b,0x36,0xd9,0xa9,0x36,0xda,0xd0,0x36,0x9b, \
-0x10,0xbe,0x7d,0x27,0xdb,0xed,0x59,0x3f,0xd8,0xca,0x16,0xbd,0x7d,0x13,0xbb,0xb5, \
-0x8d,0x6a,0x36,0x24,0x9e,0x4c,0xc8,0xb1,0xee,0x46,0x01,0xc6,0x1c,0x0f,0x20,0x78, \
-0x94,0x63,0xdd,0x87,0x60,0x51,0x7d,0x0c,0x42,0xb8,0xf5,0xe4,0x89,0xf8,0xdf,0x53, \
-0xba,0x82,0x94,0x74,0x8d,0x00,0x0a,0xf5,0xea,0x88,0x56,0x46,0xd7,0x62,0xd9,0xa5, \
-0xb2,0x09,0x6e,0x68,0x3e,0x0d,0x01,0xf9,0x83,0xf6,0xdc,0x77,0xa7,0xb7,0x66,0x44, \
-0x98,0x33,0x05,0xd5,0x78,0x45,0xbd,0x52,0x34,0xc7,0xcb,0xde,0x76,0x1b,0xc1,0x07, \
-0x67,0x85,0xec,0xc7,0x91,0x83,0x49,0x63,0xa5,0x34,0x83,0x31,0xa7,0x10,0x94,0xb9, \
-0x71,0x3a,0x4c,0xb3,0xd5,0xe1,0x8d,0xd3,0xcc,0x56,0x98,0x9d,0xcd,0x59,0x81,0x87, \
-0x3d,0x97,0xec,0x67,0x93,0xf5,0x33,0x49,0xf9,0x76,0x50,0xb1,0xf0,0x88,0x1d,0x5b, \
-0xef,0x91,0x46,0x4c,0x7d,0x3d,0x61,0xd8,0xa5,0xd6,0xc9,0xb8,0x17,0x29,0x45,0x72, \
-0x8d,0x90,0xa6,0x92,0x9c,0x5f,0x05,0xe2,0xd0,0xc4,0x3e,0x4a,0xc4,0x25,0x1a,0xe0, \
-0xec,0x30,0x44,0xef,0x74,0x1f,0x35,0xd8,0x82,0xed,0x29,0x22,0xd0,0x05,0xef,0x93, \
-0x64,0x48,0x6d,0x97,0x65,0x11,0xb1,0x19,0x63,0x2e,0x35,0xb1,0xe9,0x14,0x0f,0x4e, \
-0x8c,0xdd,0x57,0x05,0x91,0xc9,0xec,0xf8,0xf1,0x62,0x77,0xd6,0xe1,0x58,0x2b,0xca, \
-0x96,0xa3,0x19,0x46,0xa2,0x07,0xbc,0x44,0x5d,0x45,0x44,0x86,0xa3,0xbb,0xc2,0x30, \
-0xb6,0x6b,0x71,0x49,0x6d,0x6e,0x61,0xe8,0x9c,0x67,0x30,0x1a,0xe1,0x80,0xf7,0x99, \
-0x35,0xc0,0x8d,0xd8,0x71,0x10,0xaf,0x7d,0x57,0x01,0xf6,0x17,0x0c,0xe1,0xc5,0x5d, \
-0x69,0xf8,0x5d,0xdc,0xb8,0xa5,0xdb,0x59,0x7d,0x06,0x34,0x28,0xb3,0x2b,0x76,0x17, \
-0x4a,0x57,0x07,0x85,0xf2,0xd6,0xdb,0x74,0xdf,0x0e,0xb2,0xa8,0xb8,0x2a,0x94,0xfc, \
-0x6b,0x8f,0x17,0xb0,0x8c,0x8c,0x38,0xc0,0x84,0x63,0xc2,0x96,0x6c,0xa6,0xd0,0xbb, \
-0x04,0xa3,0xa6,0xe3,0x05,0x22,0x23,0x4a,0xb8,0x27,0x8e,0x1a,0x42,0x2b,0xd1,0x1b, \
-0xb3,0x88,0x68,0x5b,0xa8,0xb6,0xee,0x9a,0x14,0x21,0xb4,0x30,0xf6,0x2c,0x15,0x48, \
-0x9b,0xe2,0x9c,0x40,0xc3,0x0d,0x19,0x14,0x15,0xbe,0x9b,0xea,0xa2,0x5f,0x5b,0x85, \
-0x7a,0x60,0xcf,0x3a,0xc2,0x1a,0x85,0xab,0x2c,0x23,0x02,0x92,0x1c,0x46,0x9c,0x73, \
-0x0e,0x20,0x8c,0x62,0x0e,0x1c,0x35,0xd8,0xa0,0x66,0x0d,0x8d,0x73,0x85,0xab,0x41, \
-0x9a,0x65,0x34,0x64,0x59,0xd5,0xa7,0x89,0x72,0x45,0x21,0x02,0x05,0x0b,0x38,0x0a, \
-0x17,0x7b,0xe1,0xc7,0x16,0x49,0x63,0x52,0x74,0xd7,0x76,0xe2,0x2a,0x97,0x0a,0x90, \
-0x5c,0x9c,0xcd,0xf5,0xb8,0x1b,0xca,0x89,0xb2,0x2b,0x22,0xbc,0xc8,0x70,0xc2,0xfc, \
-0x6a,0x08,0xd5,0xf6,0x41,0x1b,0xa9,0x55,0x77,0x25,0xc1,0xb0,0x75,0x6a,0x15,0x59, \
-0x30,0x2e,0xb5,0xc6,0xcf,0x6b,0x08,0x4c,0x3d,0x45,0x68,0xab,0x64,0x7d,0xaa,0xb5, \
-0xbf,0x0b,0x07,0xad,0x9d,0xb3,0x7c,0x10,0x49,0xad,0xa6,0xfa,0x98,0x35,0x70,0xa3, \
-0x41,0x90,0xaf,0x04,0xf0,0x38,0x41,0x8a,0x51,0x71,0xb2,0x4a,0x51,0x20,0x09,0x36, \
-0x2c,0x2e,0x16,0x24,0x6a,0xf1,0xaa,0x32,0x8b,0xec,0xa2,0x85,0x06,0x2a,0x30,0x12, \
-0xad,0x82,0xa0,0x2a,0xb7,0x0d,0x2f,0x55,0x8a,0x37,0xdc,0x1e,0x2f,0x42,0x40,0xe1, \
-0x36,0x44,0x0e,0x4a,0x54,0x6c,0x40,0xd5,0x5d,0xd8,0x6b,0x4e,0x2c,0xf6,0x0a,0xb5, \
-0x2c,0xc1,0x40,0x94,0x70,0xf7,0x15,0x62,0xc8,0x26,0x66,0xe3,0x43,0xa5,0x93,0x4d, \
-0x1f,0x2e,0xc5,0xd6,0x71,0x3f,0x20,0x0b,0x78,0xad,0x83,0x63,0x81,0x39,0xe3,0xc2, \
-0xc6,0x6d,0x57,0x0f,0xa6,0xaf,0x72,0x38,0x13,0xf2,0x8f,0x34,0x74,0xba,0x67,0x61, \
-0xb6,0xea,0xd6,0x85,0xe6,0xd6,0x67,0x6c,0x70,0xb7,0xdb,0x65,0x8c,0xb6,0x39,0xa4, \
-0x1a,0x98,0x7d,0x68,0x81,0xc2,0x11,0x10,0x9b,0x1b,0x51,0x3a,0xd4,0xd1,0x68,0x2a, \
-0x0d,0x7a,0xe1,0xfc,0x2e,0x99,0xd9,0xc0,0x43,0xa8,0x89,0xb3,0x76,0xa9,0xf0,0xb7, \
-0x4b,0x4d,0xb9,0xf9,0xc2,0xe4,0x96,0xd0,0xae,0x69,0x25,0x07,0x49,0x2e,0xdf,0x20, \
-0x19,0x8b,0x41,0xfc,0x1e,0x4b,0x53,0x52,0xf9,0x22,0x54,0x6e,0x54,0xc1,0x9d,0x19, \
-0x06,0x08,0x43,0x07,0x12,0x16,0x1d,0x90,0xe9,0xd3,0x5e,0x17,0x4e,0x0e,0x96,0x68, \
-0x9e,0x2f,0x75,0xf7,0x30,0xf4,0x92,0x05,0x18,0x9b,0x91,0x6d,0x70,0xcd,0x43,0xc2, \
-0x98,0x3e,0x9b,0x02,0x19,0x1b,0x2a,0x81,0x52,0x00,0x5e,0x66,0x9d,0x5c,0x95,0x85, \
-0x76,0x93,0x79,0x77,0xee,0xb3,0x6e,0x2f,0xab,0xe0,0x31,0x8c,0x78,0xba,0x59,0xd4, \
-0x58,0x70,0xb5,0x6c,0x05,0x03,0xc6,0x5b,0x63,0x47,0x8c,0x08,0x4d,0xd9,0x49,0xa1, \
-0x67,0xd4,0x1d,0x74,0xf0,0xe6,0x70,0x11,0x3b,0x0b,0x9c,0xcf,0x82,0x96,0xf9,0x09, \
-0xc0,0x9f,0xbc,0xdb,0x09,0x52,0x21,0x65,0xe0,0x68,0x69,0xb8,0xb6,0x59,0xe0,0x31, \
-0xe3,0x21,0x0d,0x3b,0x89,0xcd,0x0c,0xea,0x14,0xef,0x35,0xbc,0x31,0x71,0x84,0x1c, \
-0xfa,0x97,0x71,0xcb,0x59,0xc4,0x7b,0xa9,0x32,0xc1,0x4c,0x60,0x54,0x6a,0x24,0x67, \
-0x18,0x65,0x4f,0x49,0xf2,0x94,0x31,0xd6,0xa8,0x09,0xa1,0xc7,0xc9,0x06,0xc0,0xef, \
-0x5e,0x48,0x87,0x07,0xcf,0x93,0x68,0xda,0xba,0x60,0x29,0x58,0xca,0x3a,0x18,0x4c, \
-0x06,0xbf,0x5c,0xe3,0xbc,0x9b,0x4e,0x30,0xed,0xe4,0xae,0x3b,0xb9,0xf7,0x93,0xca, \
-0xcc,0x43,0x76,0x50,0x88,0x3e,0x37,0xda,0x50,0x2b,0x6f,0xee,0x75,0x9a,0xab,0x7e, \
-0x2c,0x6e,0xec,0x5e,0xfb,0x87,0x9c,0x42,0xb9,0xa9,0x4a,0x5c,0xc9,0x49,0x8a,0x8e, \
-0x14,0xb2,0x5c,0xb3,0xad,0x96,0x4c,0xb3,0x7e,0x81,0x7d,0x8e,0x00,0x82,0xe0,0xaf, \
-0x37,0x09,0xe6,0x09,0xe7,0xd7,0xc4,0x36,0x3b,0xdc,0xcb,0x46,0x0c,0xdb,0xa3,0x98, \
-0x74,0xe1,0xa1,0xab,0x3d,0x75,0x5d,0x7a,0x16,0xc7,0x81,0xe8,0x15,0x94,0x3f,0x89, \
-0x83,0x68,0x1d,0x9a,0x22,0x41,0x6e,0xa2,0x91,0xf8,0x19,0x22,0x0b,0x91,0x0e,0x8f, \
-0x65,0xe3,0xbc,0x43,0xe2,0xc2,0x5b,0x21,0x04,0x23,0x32,0xad,0x1b,0xd9,0x40,0x68, \
-0x15,0x7a,0x65,0x5b,0x5f,0x96,0x2e,0x4a,0x17,0x4f,0xc3,0x02,0x85,0x28,0xc4,0x99, \
-0x18,0x83,0x1c,0x35,0xf9,0x06,0x09,0x80,0x3b,0xcb,0xc3,0x3d,0x75,0xd4,0xc9,0xa3, \
-0x00,0xc3,0x86,0x89,0x86,0x2a,0xb7,0x03,0x04,0x24,0x4c,0x02,0x7c,0x40,0x6b,0xf2, \
-0xfe,0x24,0x2e,0xba,0x9f,0x97,0xad,0x65,0x8e,0xbd,0x74,0x52,0x4c,0x08,0x25,0xb0, \
-0x50,0x59,0x7d,0x71,0x8c,0x79,0xdf,0x2e,0xb0,0xa9,0x0f,0x23,0x52,0xc9,0xd8,0x84, \
-0xf4,0x74,0x0e,0xd9,0x20,0xe0,0x03,0x04,0x4f,0x11,0x71,0x69,0x37,0x4a,0xe8,0xb0, \
-0x4e,0x73,0x03,0x46,0xcb,0x05,0x4a,0xd2,0x5b,0xa0,0xb8,0x10,0xed,0x97,0xec,0xc3, \
-0x6d,0x10,0x4a,0x9c,0xec,0x6f,0x15,0xd8,0x4d,0x5e,0x6f,0x62,0x70,0xb3,0x8d,0x8e, \
-0xb4,0xaf,0x5b,0xba,0x37,0x1e,0x70,0xda,0xc2,0x8d,0x60,0x1b,0xaf,0x5c,0xa4,0x0a, \
-0xcd,0x8b,0x25,0x99,0x5d,0x14,0xba,0x35,0x21,0x67,0xcb,0xb3,0x89,0x55,0xb7,0x40, \
-0x25,0xf4,0x31,0x71,0x2c,0xc0,0x54,0xd0,0x10,0x90,0xaa,0x45,0x30,0x90,0xc6,0xfb, \
-0xda,0x13,0x6b,0x5e,0x70,0x2d,0xaa,0xca,0x30,0x2b,0x8c,0xdc,0x49,0x8d,0xcc,0xca, \
-0x62,0xc8,0xb4,0xf3,0x8f,0x45,0x37,0x56,0x84,0xfa,0x99,0x49,0xac,0xf9,0x1c,0x83, \
-0xd5,0xc0,0x37,0x6d,0x16,0xd0,0xe9,0x29,0x38,0x8c,0xe8,0xc8,0xc1,0x5e,0x2c,0x0b, \
-0x18,0x31,0x8b,0x68,0x5a,0x16,0xc8,0xc5,0x56,0x46,0x3a,0x5a,0xac,0x87,0x5c,0xa2, \
-0x59,0xa7,0x7f,0xf0,0x3b,0xaf,0xb8,0xe6,0x69,0xe5,0x78,0x72,0x02,0x78,0xce,0x49, \
-0xe6,0x33,0x8e,0x17,0xe6,0xd5,0x2b,0x47,0xe4,0x9e,0x43,0x4d,0x1a,0x69,0x36,0xa1, \
-0x75,0xb4,0x6b,0x32,0x8e,0xb7,0x28,0xc5,0xd2,0xc3,0x18,0xd8,0x5b,0x4a,0x9c,0x3b, \
-0x2d,0x8f,0x07,0xc0,0x3e,0x89,0xb4,0x39,0x93,0x51,0x39,0x9b,0xc2,0xb2,0x32,0xea, \
-0x65,0xf7,0x66,0xe1,0xa9,0x85,0xf3,0xea,0xbd,0xdd,0xcd,0x11,0x0a,0x29,0xd4,0xd2, \
-0x5f,0x08,0x31,0xf0,0xd0,0x2f,0x0f,0x5b,0x6c,0xe0,0x66,0x2d,0x7d,0xef,0x14,0xb4, \
-0x56,0x85,0xb8,0x18,0x8d,0xb7,0x40,0xb8,0x49,0x4d,0x2d,0x4f,0xe7,0xc6,0x04,0x68, \
-0x16,0x0f,0x6e,0xeb,0xc1,0xbe,0x8d,0x47,0xbb,0x74,0xa3,0x46,0x20,0xfb,0x58,0x5c, \
-0x3c,0x50,0xc0,0xe2,0xae,0x1b,0xf7,0x51,0x21,0x27,0x94,0xcc,0xc7,0xc3,0x50,0x8e, \
-0xc8,0xbd,0x7d,0x35,0xe6,0x7b,0x2d,0x56,0x9f,0xdc,0x4b,0x05,0xa9,0x62,0x48,0xab, \
-0x31,0x70,0xd6,0x18,0x66,0x18,0x0b,0xb2,0x4c,0xb0,0x98,0x12,0x2c,0x60,0xc1,0x56, \
-0x8d,0xad,0x83,0x8a,0x15,0x92,0x28,0x44,0x4f,0x0b,0x4c,0x3c,0x33,0xa9,0xd6,0xe7, \
-0x9e,0x6e,0xc8,0xfe,0x1a,0x6e,0x87,0x9d,0xf9,0x13,0xe3,0x9c,0x83,0xc4,0xf8,0x21, \
-0xca,0x42,0x17,0x19,0xe7,0xb6,0x35,0xde,0x0f,0xc2,0xaa,0x30,0xdc,0x61,0xb0,0x7d, \
-0x87,0xa6,0xe6,0xee,0x91,0x81,0x2d,0x16,0xd6,0xfb,0xf1,0x4a,0x50,0xd0,0x67,0x04, \
-0xa0,0x13,0xaa,0x28,0xfa,0x8c,0xe8,0x80,0x1d,0xa2,0x48,0x7b,0xf0,0x59,0xaf,0x55, \
-0x21,0x8b,0xc8,0x11,0x10,0x70,0x18,0x2a,0x5f,0x6d,0x5d,0x43,0x4f,0x3d,0x22,0xe2, \
-0x24,0x5e,0x30,0x4c,0x80,0x8b,0x9e,0x54,0x1e,0xd8,0xa0,0x74,0x46,0xeb,0x3d,0xdf, \
-0x5f,0x42,0x72,0xdc,0x8f,0x5a,0xeb,0x7a,0xf3,0x30,0x3f,0x1c,0x83,0x0d,0xab,0x14, \
-0xe4,0xc2,0x98,0x81,0xbe,0x24,0xc8,0xac,0x99,0x45,0x93,0x1c,0x6c,0x00,0xc0,0x83, \
-0x18,0x68,0xcd,0x19,0x3e,0xe8,0xf5,0xf4,0xbd,0xba,0xbb,0xc8,0xce,0x74,0x99,0x47, \
-0xc2,0xda,0x94,0x62,0x0b,0x3c,0x47,0xd3,0x3a,0xe8,0x7c,0x9d,0x32,0x59,0xd5,0xbb, \
-0xc3,0xfb,0xb0,0x55,0x88,0xe6,0xbb,0xb7,0xbb,0x9a,0x28,0x33,0xd7,0x96,0x39,0xab, \
-0x7b,0x9a,0xf2,0x17,0x27,0xc6,0xa5,0x46,0x62,0xe9,0x32,0xef,0x9a,0x9d,0x1d,0xd0, \
-0xd1,0x63,0xc4,0x3e,0x38,0x3a,0x24,0xfe,0x6e,0x1b,0x1d,0x54,0x52,0xa4,0xa0,0x73, \
-0xae,0x9e,0x66,0xd3,0xdc,0xcf,0x39,0x85,0x88,0xc9,0x10,0x15,0x14,0x58,0xab,0x04, \
-0x62,0x7a,0x5a,0x20,0xd1,0x28,0xce,0xe8,0xd1,0x88,0x0a,0x8c,0x42,0xb5,0x15,0x23, \
-0x01,0x7d,0xdf,0x44,0xc7,0xf4,0x7e,0x63,0xf1,0xa6,0xb6,0xfb,0x2d,0x00,0xfd,0x40, \
-0x94,0x67,0x58,0x96,0x85,0x2b,0x0c,0xbe,0xa7,0x45,0x42,0xd0,0xf6,0x45,0x26,0x8c, \
-0x10,0xbe,0x0c,0x14,0x84,0x33,0x3b,0x13,0xea,0x43,0xe3,0xa9,0x39,0x10,0x62,0xc8, \
-0x6e,0xc1,0x0d,0xb4,0xb4,0x9f,0x98,0x60,0x7b,0x89,0x40,0x75,0x44,0xa3,0x5c,0xa4, \
-0xc9,0x94,0xe4,0x6a,0xb3,0xaf,0x95,0xfe,0x7f,0x57,0xb3,0xf9,0x37,0x7c,0x5c,0xb6, \
-0x26,0x77,0x48,0x46,0xc9,0x61,0x90,0xa0,0x19,0x9b,0xa1,0x40,0x80,0xfe,0x1c,0xfc, \
-0x27,0xb6,0xa8,0xb1,0x17,0xd2,0x6f,0xe6,0x8a,0xd4,0x9d,0xf6,0x05,0x38,0x23,0x21, \
-0x22,0x31,0x3c,0x96,0x32,0x63,0x8b,0xbb,0xe8,0xc7,0xc7,0xfd,0xfc,0x3e,0xef,0x67, \
-0x33,0x9c,0x05,0xe2,0xc7,0xbc,0xf9,0x6b,0xc9,0xe9,0xd5,0x0f,0xa0,0x7a,0xca,0x36, \
-0x6f,0x20,0xf6,0x04,0x05,0x29,0x86,0xdc,0xb6,0xdc,0x07,0xc6,0xc8,0x4d,0xbf,0x1b, \
-0x3d,0x94,0xf4,0x2b,0xe7,0x4a,0xda,0x6c,0x53,0x78,0xf2,0x12,0x2c,0xed,0x82,0xac, \
-0x0b,0x91,0x6f,0x7e,0x47,0xed,0x21,0xe8,0xed,0xfa,0x7a,0x1d,0xda,0xd1,0x72,0xa6, \
-0x7b,0x0a,0xf9,0x3c,0xdb,0xe6,0x27,0x24,0xf7,0xd1,0x6e,0x43,0xc6,0x2c,0x88,0x46, \
-0x4c,0x04,0x87,0x45,0x25,0x43,0x78,0x30,0xfb,0xcc,0xb4,0x5d,0x56,0x40,0x77,0x34, \
-0x07,0x4e,0x95,0x17,0x63,0x4d,0x0f,0xa4,0x26,0xc2,0x36,0xa3,0x15,0xb3,0x30,0xfc, \
-0x28,0x70,0x17,0xa8,0x63,0x6b,0x96,0xca,0xd9,0x7e,0x87,0xe8,0xf0,0x3c,0x06,0xd1, \
-0xdc,0x71,0xb5,0x20,0x3e,0xf1,0xa0,0x6c,0x4f,0x37,0x00,0x32,0x0e,0x04,0x5d,0xa5, \
-0x52,0x09,0x68,0x12,0x0b,0x46,0xbc,0xdf,0x17,0xdb,0x0f,0x53,0x82,0x6b,0x72,0xde, \
-0x71,0x0c,0xe1,0x27,0xd6,0x82,0x84,0xed,0xb6,0x1d,0xe7,0x77,0x71,0xb7,0xa2,0xab, \
-0x0f,0x21,0xe5,0xc0,0xb4,0xb1,0x28,0x0f,0x3a,0x13,0xe8,0x40,0xb9,0xb2,0xb0,0x06, \
-0xd4,0x90,0x63,0x3a,0x1a,0x13,0xcb,0xba,0x9d,0x35,0xf0,0x4c,0xfe,0xfd,0xaf,0x11, \
-0x96,0xe6,0x74,0xb4,0xac,0x82,0xe4,0xc4,0x06,0xd6,0x80,0xa1,0xb5,0xaf,0x06,0x83, \
-0xa2,0xcf,0xb5,0x9a,0x32,0xfa,0x4f,0xc1,0xf9,0x06,0xf9,0xbd,0xa1,0xfb,0xfd,0xb6, \
-0x14,0x1c,0xca,0xb6,0xc5,0x6c,0x6d,0x67,0x5f,0x57,0x9c,0xf6,0x66,0xc5,0x95,0xe0, \
-0x2d,0x7b,0xa7,0x2c,0xf6,0x7b,0x81,0x84,0xa3,0x23,0x22,0x8d,0x91,0xfa,0xc5,0xf6, \
-0xbc,0x59,0x11,0xd6,0x83,0x9b,0xa0,0x25,0xe4,0xbb,0xd8,0x8f,0x9a,0xfe,0xd1,0xd8, \
-0xe2,0xcf,0x14,0xd4,0xa0,0x58,0xc0,0x97,0x82,0x42,0xb7,0xde,0xe6,0x2b,0x17,0xae, \
-0x2b,0xa7,0x81,0x12,0x11,0x20,0x16,0x48,0x83,0x0b,0x79,0x43,0x73,0xf0,0xf6,0x7c, \
-0xda,0x1d,0x7a,0xd3,0xb2,0xc1,0x41,0x51,0x82,0xb1,0x82,0x24,0x88,0x2a,0x45,0x84, \
-0x2c,0x0d,0xbd,0x9d,0xc7,0xf3,0xe7,0xd1,0x4f,0xd8,0xd4,0x72,0xe4,0xc0,0xce,0x3a, \
-0x93,0x4e,0x77,0xcb,0x27,0x98,0x76,0xa6,0x21,0x10,0x0f,0x2b,0xa6,0xc4,0xf7,0x7e, \
-0xaf,0xa7,0xc4,0xbe,0x48,0x1d,0xa9,0xb6,0x09,0x11,0x00,0x7f,0x44,0xac,0x39,0x2f, \
-0x83,0x59,0xf1,0x0e,0xb3,0xbb,0x04,0xed,0xea,0xa4,0xd6,0x28,0xb2,0x2c,0x8a,0x44, \
-0xdb,0xed,0xf6,0x40,0x3e,0x02,0xc1,0x88,0x30,0x51,0xf9,0xef,0xaf,0x90,0x62,0x65, \
-0x9f,0x37,0xd3,0x7b,0x16,0xd1,0x87,0x5f,0x61,0xcc,0x85,0x41,0x0c,0xb2,0xd6,0x47, \
-0x60,0xff,0xda,0xa9,0x13,0x02,0xc9,0x52,0xbc,0x50,0xdf,0x82,0x04,0x01,0xae,0x24, \
-0x52,0x29,0xbc,0xde,0x8f,0x72,0x60,0x86,0x30,0x0f,0x12,0x81,0x12,0x3b,0x89,0x46, \
-0x81,0xaa,0x9c,0x8d,0x91,0x11,0x84,0x58,0xb1,0xe1,0x0a,0xc6,0xa1,0x9d,0x9b,0x60, \
-0xc3,0x32,0xd8,0x59,0xce,0x52,0xa1,0xc2,0x3d,0x49,0x2b,0x64,0xb7,0x9e,0x23,0x0a, \
-0x44,0x21,0x89,0x85,0xea,0xd1,0x4b,0x6d,0x11,0x58,0x41,0x29,0xfb,0x53,0x3d,0x99, \
-0x3f,0xfa,0x71,0x36,0xfd,0xf9,0x43,0x0b,0x30,0xed,0xbc,0x92,0x5e,0x4e,0x2d,0x35, \
-0x98,0xa6,0x29,0x49,0xbb,0x75,0x28,0x1f,0x95,0xab,0x1d,0x06,0xb0,0xce,0xcd,0x86, \
-0x4a,0x2a,0x9a,0x95,0x8c,0x3d,0xf5,0xc4,0xd2,0xfc,0xeb,0xd2,0x1f,0x3d,0xf7,0x39, \
-0x01,0x23,0xa5,0xb1,0x02,0xd4,0x01,0x48,0x29,0xfa,0x31,0xd2,0x77,0x13,0xa0,0x7d, \
-0xbb,0x9b,0x8c,0x14,0x58,0x2a,0x31,0x45,0x90,0x60,0x61,0x20,0x76,0x33,0xb3,0xa7, \
-0x5c,0xcb,0xc7,0x27,0x83,0x2a,0x13,0xc1,0x86,0x4c,0x66,0x96,0x2c,0x97,0x1f,0x0c, \
-0xdc,0x88,0x3d,0x8e,0x4d,0x32,0x86,0x17,0x66,0xc5,0x42,0xa5,0x22,0x08,0xa0,0xba, \
-0xcb,0x28,0x8b,0xa3,0x41,0x05,0xe5,0xc0,0xe5,0x09,0x6c,0x31,0x08,0x10,0x84,0x49, \
-0xaa,0xb0,0xd8,0x03,0x2e,0xdd,0x11,0x69,0x13,0x65,0x10,0x9c,0xf7,0xa1,0x6a,0xb7, \
-0x79,0x94,0x71,0x7d,0xbd,0x33,0x02,0x4a,0x48,0x3c,0xc0,0xc2,0x7d,0x28,0x3b,0x00, \
-0x7c,0x82,0x30,0xe6,0x37,0xf8,0xda,0x96,0x34,0xf5,0xed,0x26,0x94,0x57,0x8a,0x8d, \
-0x03,0x60,0xc1,0x80,0x36,0x3c,0xaf,0xb2,0x4d,0x4f,0x9c,0x06,0x5a,0x65,0x2a,0xa8, \
-0x8b,0xee,0xb4,0x8b,0x22,0x3f,0x0a,0xa5,0x88,0xc5,0x72,0xc9,0x4c,0xda,0x1b,0x33, \
-0x2a,0xa2,0x4e,0x16,0xcc,0xa3,0xad,0xac,0x8b,0x26,0x19,0x44,0x66,0x6f,0x29,0x3a, \
-0xba,0x8e,0x38,0x18,0x78,0x68,0x6d,0xb4,0xce,0x24,0xe9,0xa9,0xe7,0xdd,0x93,0x79, \
-0x69,0xd1,0x93,0x83,0x51,0x61,0x16,0x42,0xda,0x70,0xe5,0xbf,0x40,0xb8,0x0e,0xb4, \
-0x28,0x4f,0x46,0x46,0xc6,0x66,0x54,0x6f,0x0d,0xc7,0x65,0x06,0x57,0x61,0xee,0x29, \
-0x3c,0x06,0x0d,0x89,0x52,0x9f,0x7c,0xa1,0x51,0x82,0x31,0x30,0x35,0x9f,0x3b,0x18, \
-0xd6,0x8f,0xe1,0x2b,0x57,0x2c,0x5b,0x9a,0x87,0x27,0x3a,0x48,0xc7,0x86,0x59,0xd9, \
-0x05,0x27,0x14,0x50,0xa2,0x74,0x1c,0x62,0x95,0x86,0x19,0x3f,0xc8,0x92,0x63,0x19, \
-0xc4,0xf2,0x70,0x25,0x9a,0x0b,0x69,0x19,0x69,0x8c,0x40,0xe9,0x4d,0xbd,0xb8,0x3a, \
-0xb9,0x28,0x9c,0xb8,0xbf,0x45,0xd6,0x49,0xd4,0xcb,0x1b,0xf9,0xcf,0xe2,0xf9,0x0c, \
-0x91,0x95,0xef,0x21,0x25,0x3d,0xe1,0x41,0x19,0xbe,0xc6,0xbc,0x77,0x2e,0xec,0x0a, \
-0x93,0x6a,0x87,0xdd,0x0e,0x1d,0xbc,0x9e,0x99,0x68,0x68,0x53,0x85,0xc0,0xfe,0x63, \
-0x07,0xb3,0x4e,0xd4,0x6d,0x24,0x51,0x90,0x91,0xa0,0x29,0x53,0x34,0x33,0xfd,0x5c, \
-0xf0,0xbb,0xae,0x3f,0x06,0x8e,0x79,0xf9,0x79,0xb5,0x04,0xe4,0x6f,0x29,0xbb,0x24, \
-0xa8,0x4f,0x8c,0x13,0x0c,0x5e,0x2c,0xc8,0xcc,0x52,0xbd,0x96,0xa6,0xa9,0xa9,0x90, \
-0xdb,0xc7,0xcb,0x19,0xed,0x30,0x78,0x20,0x5c,0x75,0xe8,0x5f,0xd1,0x41,0x36,0x32, \
-0x13,0x3a,0x90,0xa8,0x26,0x89,0x85,0x35,0x98,0x5c,0x54,0xea,0xc1,0x59,0x28,0x64, \
-0xc1,0x12,0xd3,0x13,0x53,0x11,0x43,0xba,0x23,0x9f,0x9e,0x6e,0x62,0xb2,0xe9,0xcb, \
-0x7a,0x3b,0x03,0xf4,0xa2,0xb4,0xfb,0x33,0xf5,0xdc,0x52,0x51,0x06,0xc6,0xdb,0xfa, \
-0x78,0x28,0xc8,0x32,0x04,0x58,0x0c,0xea,0x51,0x34,0x11,0x02,0xe0,0xfc,0x5a,0x36, \
-0x3d,0x9a,0x49,0x2f,0x73,0xbe,0x86,0x30,0x1b,0xc0,0x9d,0x0f,0x0e,0xf0,0x7a,0xc8, \
-0x91,0x00,0x41,0x14,0x45,0x90,0xe3,0x6a,0xc5,0x66,0x80,0xd8,0xad,0xb4,0x11,0x15, \
-0x18,0xc8,0xb5,0x1e,0xed,0xbe,0x84,0x9a,0x79,0x9a,0x2b,0xf9,0x69,0xc7,0x14,0xa3, \
-0x32,0x73,0xa1,0xc0,0x0c,0x31,0x60,0xb2,0x6c,0x30,0xf4,0xfa,0xf3,0xf6,0x52,0xa4, \
-0x90,0xb1,0xed,0x35,0x38,0xef,0x03,0x2d,0xae,0xc2,0xf3,0x85,0x6a,0xff,0x65,0x8c, \
-0xb3,0x3e,0x09,0x23,0xc3,0xcb,0xde,0xa9,0x60,0x23,0xbc,0xe9,0x77,0x31,0xda,0x87, \
-0x49,0x0f,0xd6,0xcd,0x52,0x78,0xf6,0xda,0x3d,0xa3,0x25,0x04,0x44,0xd4,0xbe,0x4b, \
-0x8d,0xc4,0x9e,0xb9,0x95,0x93,0xd7,0x52,0x37,0x9c,0x86,0xaf,0x3b,0x4b,0x1c,0x24, \
-0x25,0x83,0x0b,0x26,0x10,0x51,0x1d,0x21,0x58,0x34,0xd6,0x72,0xde,0x7a,0x60,0xf9, \
-0x5b,0xc0,0xe9,0xe7,0x82,0xbd,0x9e,0x9c,0xce,0x47,0x41,0xaa,0xf3,0x87,0x34,0x84, \
-0xe9,0xc8,0xd4,0x71,0x68,0x93,0x5a,0x5c,0xb3,0x0c,0xc2,0x45,0x5d,0x73,0x96,0x4f, \
-0x3d,0x75,0x97,0x56,0x22,0xb2,0x2f,0x21,0x42,0x88,0x62,0xc5,0x06,0x20,0x40,0xd4, \
-0x42,0x23,0x75,0x42,0xe1,0x0c,0xe5,0x18,0x45,0x99,0x05,0x26,0xe9,0x82,0x16,0x22, \
-0x45,0xaa,0x4e,0xc3,0x92,0x84,0x2d,0x52,0x12,0x47,0x46,0xa1,0xa8,0x43,0x31,0xc1, \
-0x0a,0xab,0xb4,0xcd,0x10,0x41,0x56,0x0d,0xbf,0x16,0xd8,0x26,0x9e,0x06,0xd9,0x34, \
-0x41,0x9a,0x18,0x71,0x79,0xb9,0x44,0xcc,0x6e,0x58,0x69,0x4a,0xa8,0x2d,0xb6,0xd1, \
-0x6e,0x1a,0x8e,0x30,0x17,0x19,0x12,0xa4,0x90,0x42,0x1a,0xe6,0x5d,0xf3,0x0b,0x34, \
-0xa4,0xb1,0xdf,0x3a,0x7e,0xbf,0x7e,0xfc,0xf5,0xdc,0xfa,0x8d,0xc2,0x4f,0xe9,0x86, \
-0x07,0xb1,0xe5,0x70,0x79,0x96,0x71,0x0a,0xc6,0x88,0x80,0x85,0x75,0x0b,0xf7,0x75, \
-0x34,0x5b,0x37,0xd4,0xa2,0x80,0x62,0x19,0x3c,0x7b,0x28,0x2a,0x30,0x38,0xb0,0xe2, \
-0x33,0xba,0xfd,0x96,0x10,0xb0,0x74,0xc9,0x89,0xd4,0xaa,0x74,0x85,0x9d,0x0f,0xcb, \
-0xa8,0x69,0xf9,0x0d,0x42,0xa6,0x34,0xc6,0xb6,0x2e,0x6c,0x50,0x55,0x31,0x41,0xbd, \
-0xbf,0xd5,0x93,0x06,0x89,0x44,0xca,0x14,0x64,0x1d,0x28,0x54,0x59,0x33,0x82,0x93, \
-0x0c,0xad,0x60,0xb8,0x1a,0x83,0x5a,0x64,0x36,0x4d,0x68,0x86,0x04,0xdc,0x06,0xd3, \
-0x09,0x0a,0x40,0xbb,0x35,0x41,0x97,0x46,0x8f,0x59,0x04,0x55,0x58,0x88,0xa6,0x6c, \
-0xae,0x0e,0xda,0x74,0xf7,0xc8,0x7a,0x1d,0x66,0x01,0x03,0xbf,0x7c,0xf2,0x04,0xda, \
-0x40,0x30,0xf1,0x94,0x6d,0x23,0x93,0x98,0xd7,0xaa,0x93,0x5c,0x1d,0x40,0x5c,0x4d, \
-0x4c,0x15,0x2a,0x21,0x20,0x04,0x62,0xa1,0xb9,0x09,0x54,0xc9,0x55,0x12,0xc3,0x6b, \
-0x17,0xdc,0x60,0x1b,0x4c,0x71,0xbb,0x75,0xd5,0x95,0xb0,0x9e,0x90,0x4c,0x1e,0x93, \
-0x5d,0x22,0xc9,0x91,0x0a,0xa8,0x89,0x03,0xcb,0x01,0xd9,0xb4,0xd8,0x92,0x76,0x91, \
-0x5a,0x22,0x97,0x32,0xd8,0x27,0x7f,0xa7,0x80,0xeb,0xbc,0xda,0xff,0x2f,0x76,0x38, \
-0x1d,0x31,0x34,0x21,0xd5,0x33,0x38,0x00,0x51,0x67,0x9f,0xdd,0x2b,0x8b,0x4a,0x5b, \
-0x1a,0x2e,0xae,0x26,0xab,0x0b,0xbd,0x76,0xf9,0x17,0x6e,0xb7,0x66,0xac,0x06,0xd7, \
-0xa2,0x90,0x3f,0x56,0xda,0x59,0x0d,0x32,0x5d,0x10,0xa8,0x0e,0x2c,0x9e,0xcb,0x37, \
-0x0a,0x0e,0x26,0x09,0x26,0x07,0x4c,0xe0,0xae,0x16,0xcb,0x45,0x8a,0x51,0x04,0x6d, \
-0x94,0xc0,0xd7,0x11,0x51,0x12,0xd2,0x8a,0x0a,0x05,0xa5,0x06,0xd8,0x36,0xc6,0x50, \
-0xb2,0x5a,0x32,0x8c,0xb4,0xb6,0xc8,0x51,0x8d,0x6a,0x46,0x99,0x85,0x1c,0x1f,0x0c, \
-0x86,0x4c,0xc9,0xc2,0x82,0xb1,0x02,0xc5,0xc4,0xb2,0xc3,0x40,0x28,0x6d,0x43,0x64, \
-0x88,0x5a,0x0e,0x34,0x9a,0xd4,0x6a,0x38,0x58,0x30,0x4d,0xb0,0xca,0x03,0x92,0x65, \
-0x56,0x82,0x4e,0xd5,0x92,0x06,0x7a,0x24,0x9d,0x9d,0xa7,0xcb,0xaa,0x96,0x14,0x8a, \
-0x93,0x79,0xbe,0xb2,0x81,0xb4,0x55,0xa4,0x32,0x7f,0xd8,0x6c,0x63,0x11,0xd9,0x22, \
-0x9a,0xed,0xf5,0xe2,0x41,0x72,0xc3,0xdc,0x87,0x36,0x7e,0x0c,0x32,0x7c,0x6f,0x08, \
-0xf4,0xc2,0xa0,0xde,0x04,0x2f,0x58,0x7d,0xcb,0x46,0x50,0xc2,0x28,0xbe,0x37,0x7e, \
-0xbb,0x0c,0x8e,0x81,0xa3,0x58,0xdb,0x04,0x50,0xc3,0x64,0x8a,0x97,0xde,0x97,0xdb, \
-0x74,0x7c,0x77,0xca,0xf6,0x7a,0x2b,0x25,0x84,0x0d,0x87,0x49,0x12,0x5a,0x04,0xa4, \
-0x51,0x02,0xfe,0xa6,0x05,0x20,0x72,0x0d,0x67,0xcf,0xe3,0xd7,0xf0,0x9f,0xc1,0xfb, \
-0x25,0xa5,0x9d,0xc2,0xa5,0x56,0x14,0xb2,0x07,0x17,0x15,0x90,0xad,0x60,0x55,0x2e, \
-0x04,0x1d,0x8c,0x49,0xb4,0x84,0xae,0xe3,0x1b,0x76,0xf5,0xc9,0xe8,0x82,0x2b,0xfb, \
-0x91,0xaa,0x37,0xa1,0xea,0x30,0xcd,0x70,0x49,0xb3,0x3f,0x87,0xd6,0x8e,0x5f,0xa5, \
-0x96,0x37,0xd6,0xc7,0x89,0xcf,0xcc,0x36,0x37,0x4e,0xdf,0x92,0x04,0xdb,0xee,0x77, \
-0x3f,0x00,0xb0,0xdc,0x9b,0x00,0x1d,0x98,0x2f,0x1a,0x40,0xd9,0x10,0x41,0x64,0x04, \
-0x60,0x26,0x21,0xee,0x26,0x58,0x1d,0x48,0x7b,0x50,0xc0,0x31,0x16,0x0f,0x5b,0xdb, \
-0x88,0x4b,0x18,0x82,0xa3,0x06,0x26,0x53,0xcf,0xe5,0x0f,0x6b,0x15,0x04,0x58,0x2c, \
-0x82,0xc0,0xc6,0xb3,0xd1,0x2c,0xd8,0x40,0xe4,0x5e,0x72,0x1b,0x50,0xf8,0xbf,0x33, \
-0xb5,0xa1,0x7a,0x6b,0x36,0x11,0xf4,0xf6,0x28,0xcd,0x0e,0xa9,0xcf,0x79,0x09,0x04, \
-0x24,0x91,0xd2,0x21,0xd0,0x9a,0x3a,0x10,0x69,0xcb,0x6a,0xf4,0xc5,0x76,0x18,0x38, \
-0x24,0x53,0x8b,0xb4,0x51,0x50,0x10,0x15,0x36,0xf6,0xf7,0x9c,0x7a,0x72,0x61,0xd4, \
-0x78,0xf2,0x8f,0x84,0x36,0x53,0xa2,0x6f,0x0f,0xd1,0xd8,0x89,0xa6,0x30,0x1d,0x6d, \
-0x57,0x73,0x5e,0x0d,0x1c,0x27,0xbc,0xdb,0xb9,0x36,0x1a,0x5d,0x97,0x4d,0xd2,0xb0, \
-0x90,0x68,0x88,0xaa,0x74,0x49,0x7b,0xe8,0x51,0x51,0x91,0xf2,0x4a,0xc1,0x44,0x11, \
-0xc9,0x9c,0x18,0x0f,0x98,0x1b,0x1c,0x1b,0xd3,0x67,0x20,0x28,0xaa,0xe0,0xb2,0x98, \
-0x77,0xde,0x40,0xb0,0xcb,0x82,0xd4,0x3b,0x3e,0xda,0x4d,0x87,0xf2,0x37,0x17,0xf2, \
-0xa7,0x0e,0xf4,0x83,0xd4,0x05,0xcb,0x7c,0x2d,0xa0,0x66,0x74,0x20,0x8b,0xa4,0x88, \
-0x4d,0x43,0x4c,0x2c,0x9a,0x6f,0xad,0x30,0x31,0x53,0x0e,0xc7,0xc4,0x86,0x81,0xf8, \
-0x46,0x43,0x10,0x33,0x08,0x39,0x91,0x03,0x37,0x34,0xc6,0xff,0x43,0x76,0xae,0xb0, \
-0x10,0x7a,0xc6,0x33,0x37,0x23,0x4d,0xc4,0xcb,0xac,0x04,0x84,0xc7,0x7b,0x0b,0x0e, \
-0x8c,0xc9,0x15,0x84,0x74,0xef,0x21,0xbe,0x8c,0x95,0x38,0x6a,0x9d,0xf6,0xac,0x58, \
-0xea,0x38,0x9a,0x8f,0x76,0x67,0x0d,0x20,0xc6,0x86,0xd2,0x63,0x32,0x55,0xfa,0x8f, \
-0x6b,0x32,0x39,0x16,0x30,0xec,0x8a,0x66,0x41,0xef,0x85,0x8b,0x0b,0x77,0x2c,0x11, \
-0xf4,0x31,0xf9,0xd4,0x26,0x3d,0x5c,0xb2,0x65,0xb2,0x13,0x76,0x08,0xb9,0x71,0x47, \
-0x75,0xd8,0x7e,0xb9,0x72,0x66,0x7c,0x90,0x95,0x4d,0x1e,0xdf,0x7c,0xa1,0xcc,0xcd, \
-0x17,0x9f,0xe2,0x40,0x74,0xd4,0x3f,0x76,0x5b,0xe4,0xc1,0x26,0xfe,0xee,0x09,0x10, \
-0x2a,0x11,0x99,0x95,0xcd,0x24,0x60,0xaa,0x0a,0xb0,0x19,0x10,0x42,0xdb,0x7d,0xf4, \
-0xa7,0x1d,0xa1,0xf5,0xef,0xb4,0x3a,0xa9,0xb7,0xbb,0x0e,0xed,0x81,0xe4,0xd2,0x38, \
-0x1e,0x55,0xe3,0x31,0x1e,0x51,0x15,0xb9,0x8a,0x0a,0x83,0x70,0x91,0x10,0xc9,0xb8, \
-0xf9,0x0c,0xa0,0xe4,0x16,0x21,0x78,0x15,0x73,0x26,0x1a,0xc4,0x44,0x2c,0x29,0x9e, \
-0x03,0x0a,0x1b,0xbd,0x96,0xc3,0x68,0x49,0xda,0xe0,0x69,0xf4,0x3f,0xbb,0x5d,0x13, \
-0x63,0x86,0x33,0x03,0x9c,0x3c,0x10,0xe6,0x87,0x42,0x70,0x92,0x87,0x06,0x88,0x1e, \
-0xfc,0x16,0x0e,0xed,0x0d,0xf3,0x08,0xd2,0x68,0x3f,0x5e,0xb0,0xcd,0xcd,0x84,0x92, \
-0x68,0x60,0xaf,0x67,0x4e,0x9d,0xbc,0x64,0xbe,0x30,0x23,0x74,0xce,0x62,0x25,0x8c, \
-0x3a,0x53,0x5d,0xd1,0x0f,0xbf,0xc0,0xc6,0x43,0xf2,0xf2,0xb3,0x91,0x1f,0x93,0x0e, \
-0x1c,0xd1,0xed,0xd6,0x08,0x33,0x82,0xd6,0x1a,0x27,0x03,0x2b,0x4f,0x66,0x05,0xb6, \
-0x9b,0x6e,0xc3,0x76,0xd8,0xfc,0xec,0xca,0xe2,0x84,0x3c,0x8d,0x84,0x43,0x19,0xfb, \
-0x72,0x85,0x86,0x3e,0x56,0x1a,0xfe,0x81,0xbd,0x16,0xe9,0x9c,0x9f,0xe1,0x08,0x26, \
-0xd4,0x19,0xa4,0xb0,0x13,0x06,0xc1,0xb5,0x92,0x98,0xea,0x64,0x16,0x09,0xeb,0x62, \
-0x9d,0x5c,0xa8,0x1d,0xa8,0x7e,0x41,0x02,0x6a,0xd4,0x98,0x43,0x78,0x2a,0x86,0x0a, \
-0xcd,0x20,0xcb,0xb9,0x5b,0x2c,0x24,0x82,0xa8,0x65,0x5f,0x63,0x01,0xb2,0x25,0xc1, \
-0x51,0x5c,0xf9,0xc1,0xf1,0xd3,0xa4,0x3a,0x98,0x31,0x08,0xc5,0x54,0x41,0x05,0x81, \
-0xe5,0xbc,0x0e,0x9c,0xd0,0x87,0x60,0xea,0xed,0xee,0x85,0xf4,0xe9,0x8a,0xe9,0x8c, \
-0xe6,0xc7,0x6d,0xaa,0x57,0x9e,0x98,0x33,0x65,0x6a,0xaf,0x6a,0x79,0x6c,0x92,0xaa, \
-0x8c,0x40,0xe1,0x31,0x0c,0x35,0x14,0x32,0xca,0xb0,0x58,0xa4,0x3c,0x2f,0xce,0x62, \
-0xea,0x36,0xa1,0x50,0x45,0x18,0x3d,0xad,0x46,0x08,0xc1,0x9b,0x52,0x55,0xde,0x85, \
-0x60,0x88,0x2a,0x85,0x42,0xee,0xd5,0x44,0x14,0x18,0xaa,0x8b,0x16,0x22,0x8a,0x41, \
-0x51,0x05,0x56,0x55,0x6a,0xb1,0x56,0x48,0x3d,0xb1,0x25,0x06,0x2b,0x11,0x8c,0x44, \
-0x30,0xd0,0x32,0x51,0x15,0x61,0x43,0x21,0x04,0xbd,0xfd,0xff,0xa5,0xf5,0x15,0x27, \
-0xa9,0xea,0x03,0x7e,0x0d,0x80,0x19,0x44,0x46,0xe1,0x7f,0x84,0x23,0x8a,0xf9,0x2b, \
-0x3d,0x17,0x22,0x45,0x2e,0xc2,0xf5,0xeb,0x9c,0x2f,0x2d,0xb5,0xb3,0x6c,0x81,0x29, \
-0x97,0x5c,0x31,0x8f,0x6c,0x80,0xad,0x93,0xb9,0x20,0x8a,0xb4,0xd4,0x9f,0x14,0xcc, \
-0x51,0x8a,0x08,0xa0,0x8c,0x4c,0xa1,0x96,0xa6,0x0c,0x14,0xa4,0xdc,0xc5,0xc0,0xa2, \
-0x2d,0x65,0x8c,0x82,0xa3,0x8b,0x41,0x16,0x57,0x1b,0x70,0x55,0x6b,0x31,0x91,0xbe, \
-0x1f,0xab,0xfd,0x9c,0xa8,0x7e,0xda,0x9a,0xfc,0x00,0xe4,0x36,0xd6,0xf4,0xe3,0xc0, \
-0xf9,0x8e,0xe6,0xcd,0xc8,0x03,0xd7,0xd0,0x37,0xf0,0x7b,0x87,0x0c,0x6f,0x25,0xd7, \
-0xd0,0x71,0x90,0xb8,0xdb,0x90,0x6c,0x1e,0xca,0x31,0x5e,0xbd,0x50,0x77,0xba,0x3b, \
-0x4f,0x83,0xd0,0xa4,0xa9,0x44,0x04,0xe1,0x95,0x87,0x37,0xad,0x36,0xf5,0xed,0x9a, \
-0x99,0x11,0xfa,0x52,0x7b,0xfa,0xe0,0x8a,0xc0,0x5f,0x16,0xb1,0x51,0x05,0x50,0x45, \
-0x54,0xc3,0x22,0x4d,0xd2,0xed,0xd0,0x32,0xf3,0x22,0x84,0x67,0x74,0x04,0x3d,0x21, \
-0xdd,0x86,0x2c,0x11,0x10,0xc4,0xb6,0x6e,0x63,0x4c,0x10,0xdc,0xe6,0x0b,0x14,0x11, \
-0x8a,0x0c,0x18,0x8c,0x92,0x22,0xc2,0x64,0xb4,0x0c,0x43,0x8b,0x87,0xad,0x7b,0xe0, \
-0x42,0x30,0x92,0x11,0x5d,0x1b,0x58,0x6b,0x74,0x03,0x23,0xe3,0xc2,0xca,0x67,0x5a, \
-0x91,0x31,0x2a,0x15,0x24,0x94,0x87,0x6c,0x30,0x44,0xa0,0xc5,0x60,0x89,0x0c,0x9c, \
-0xca,0x78,0xf5,0x68,0x26,0xe2,0x0c,0x82,0xc2,0x01,0x31,0x4e,0xc0,0x02,0xc5,0xa3, \
-0xc1,0x3b,0x9e,0x01,0xf0,0x6b,0xe3,0x31,0x4e,0xd1,0x36,0x98,0xb6,0xd3,0x37,0xa5, \
-0x3f,0x6c,0x24,0x4c,0xc7,0x0c,0x2d,0x47,0x02,0xb8,0x68,0xbb,0x48,0xd2,0x04,0x0f, \
-0x73,0x26,0x34,0x2f,0x7a,0x8c,0x88,0x82,0xc6,0xda,0x32,0x0b,0x34,0x62,0x87,0x53, \
-0x44,0x40,0x60,0x44,0x9f,0x2d,0x42,0x79,0x6a,0x6c,0xc5,0xd5,0x11,0x2d,0x88,0xb6, \
-0x02,0x80,0xdb,0x52,0xd1,0x28,0xa5,0x04,0x6d,0x92,0xb5,0xa4,0x47,0xbf,0x5e,0x84, \
-0x96,0x73,0xa7,0x6c,0xce,0xd2,0x13,0xd9,0xae,0x9f,0x79,0xc0,0xd0,0x93,0x14,0xcf, \
-0x0b,0x50,0xcc,0x43,0x02,0xfc,0xcd,0x30,0x95,0xbf,0x64,0x29,0x73,0x49,0x1d,0xac, \
-0xc7,0xdb,0xda,0xe6,0xae,0xfd,0x84,0x2b,0x29,0x64,0xfc,0xe9,0x64,0xfc,0x6f,0x3e, \
-0xf9,0xc1,0xea,0xef,0xe2,0x23,0xb9,0x97,0xb4,0xa8,0xd2,0x3c,0x35,0xa5,0x06,0x99, \
-0x94,0x3e,0x73,0x0d,0x19,0xa6,0x47,0x3a,0xe6,0xca,0x47,0x74,0x2d,0xcd,0x5b,0xb1, \
-0x10,0x17,0xba,0x79,0x45,0x5a,0xac,0xb2,0x8e,0x0a,0x48,0xd0,0xe8,0x1b,0x21,0xb0, \
-0x40,0xe0,0xf3,0x8e,0x58,0xbe,0x29,0x49,0x30,0x42,0xe5,0x54,0x56,0x63,0x44,0x10, \
-0x05,0x76,0xe9,0xed,0xd7,0x02,0xfb,0xb0,0xa6,0xcf,0xe4,0xb0,0x74,0x72,0x96,0x40, \
-0x74,0x69,0x61,0x04,0x47,0x25,0x02,0x8e,0x2d,0x66,0x5c,0x10,0xb4,0x39,0x0e,0xb4, \
-0x13,0x10,0x1e,0xb1,0x1b,0xf1,0xb6,0xbd,0xf7,0x61,0x19,0x56,0x23,0x38,0x0a,0x7d, \
-0x9e,0xe3,0x67,0x3d,0x04,0x31,0x6e,0x9d,0x99,0x45,0x70,0x39,0x78,0xc8,0x98,0xd7, \
-0x4d,0xf3,0xb8,0xf1,0xb6,0xb8,0xf4,0x0c,0x43,0x28,0x53,0xaa,0x97,0x7d,0xa9,0x60, \
-0xf1,0x8c,0xdc,0xa2,0x5a,0x2e,0x25,0xa6,0x9d,0xb7,0xf9,0xf5,0x44,0x15,0xae,0x37, \
-0xd0,0x36,0x0d,0x43,0xcb,0xc3,0x48,0x24,0x4f,0x05,0xcc,0x29,0x23,0x45,0x5c,0x82, \
-0x8c,0x26,0x7a,0x3c,0x02,0x35,0xe6,0x82,0xaa,0x60,0x5b,0xb9,0x57,0xfd,0x61,0x60, \
-0xb8,0x1e,0x61,0x5c,0xb8,0xea,0xcc,0x38,0x58,0x5d,0x82,0x85,0x27,0x8a,0x8e,0x9b, \
-0xbd,0xac,0x9b,0x94,0xac,0x1c,0x5d,0x1c,0x55,0xba,0xbf,0x02,0x18,0xe0,0x81,0xe0, \
-0x46,0xda,0x28,0x9e,0xaa,0xa0,0x80,0x5b,0x0d,0xc7,0x9e,0xc9,0xb8,0x71,0x90,0xd1, \
-0x6d,0x9e,0xcc,0x20,0x85,0xb6,0x60,0xe7,0x99,0x70,0x82,0x41,0x03,0x44,0x07,0x42, \
-0x6e,0xb8,0x80,0x38,0xf4,0x76,0xe7,0xc1,0xa4,0x6e,0xa9,0x2e,0x35,0x2d,0x1b,0xad, \
-0x8d,0x6e,0xb0,0x3a,0x55,0xbc,0xfd,0x61,0xb6,0x87,0x42,0xdd,0xc3,0x59,0x76,0x1b, \
-0x87,0xba,0xf3,0x38,0x15,0xeb,0x34,0x88,0xce,0x14,0x5b,0x90,0x88,0x29,0xdd,0x2c, \
-0xca,0x0a,0x29,0xe6,0x46,0xd4,0xe2,0x0b,0xa0,0xd4,0x28,0x4b,0x97,0x8c,0x86,0x0b, \
-0xd3,0x4b,0x1a,0x48,0x9a,0xbb,0x07,0x1f,0x2d,0xb7,0x58,0xe4,0xed,0x44,0x0c,0x96, \
-0xa0,0xa1,0x6d,0x28,0xcf,0x6d,0x4f,0xb4,0xf1,0x74,0xe9,0x43,0x0d,0x1d,0xfa,0x37, \
-0x33,0xd8,0x11,0xdd,0xf6,0xdb,0xa9,0xac,0xaf,0x2d,0x29,0x57,0x46,0xb1,0x1b,0x03, \
-0xd2,0x0a,0xe6,0xd6,0x67,0x55,0x8e,0x50,0x91,0xb0,0x00,0xfe,0x3c,0x03,0xda,0x3d, \
-0x70,0xfd,0x2d,0xc0,0xad,0xe6,0x02,0xc4,0xe1,0x46,0xbe,0xea,0x7a,0x95,0x20,0xa8, \
-0x30,0x6a,0x48,0x62,0x81,0xe9,0xad,0xee,0x22,0xb0,0x63,0xe5,0x65,0x82,0xf0,0xc5, \
-0xac,0xdb,0x39,0xc1,0xdd,0x47,0xee,0xef,0x36,0xc3,0xb5,0xb7,0x21,0x50,0x0b,0x2b, \
-0x40,0xad,0x40,0x32,0x9f,0x06,0xc6,0x5d,0x3a,0xc6,0x20,0x30,0xc7,0xa3,0x70,0x14, \
-0x23,0x00,0xed,0x9a,0x26,0xe5,0xe2,0xaa,0xbe,0xa8,0x7d,0x09,0xc0,0x53,0xa2,0x58, \
-0xcd,0x93,0xf2,0x78,0xf1,0xd0,0x88,0xf7,0x30,0xd3,0x9a,0xa4,0x53,0xbb,0x06,0x0c, \
-0x1c,0x4e,0xc2,0x64,0xa9,0x45,0x13,0xc5,0x39,0x90,0x43,0xbd,0x0f,0x8b,0xaa,0x58, \
-0xdb,0x52,0xdd,0x8c,0xd8,0x43,0x43,0x22,0x51,0xa9,0xb0,0x2f,0xc3,0x43,0xdd,0x64, \
-0xf0,0x85,0x7b,0xfd,0x9a,0xc5,0xd3,0x88,0x53,0x09,0x0e,0x1e,0x47,0x71,0x82,0x4c, \
-0x70,0x86,0xad,0x4e,0x99,0xc9,0xbb,0xd3,0x5a,0x85,0x68,0x8d,0x34,0xd7,0x10,0xf0, \
-0xb4,0x0c,0x4c,0xa1,0x1a,0xb3,0x16,0xb1,0x5a,0x03,0x1f,0xc5,0xe9,0xd5,0xc2,0xcb, \
-0x31,0x34,0xdd,0x43,0x70,0x6a,0xbc,0xd3,0xc7,0xac,0x39,0x05,0x84,0xcd,0xed,0xe9, \
-0x4d,0x97,0xe5,0x8b,0x6b,0x23,0x7f,0x08,0x52,0x1c,0x22,0x72,0x80,0xcc,0x11,0x0e, \
-0x18,0x1b,0xe9,0xed,0xc1,0xe4,0xc2,0x78,0xa0,0xa4,0x8b,0x01,0x64,0x50,0x91,0x7f, \
-0x0f,0xb2,0x5a,0x92,0x7a,0xb0,0x38,0xe8,0x16,0x5f,0x66,0x09,0x8c,0x51,0xe3,0xa7, \
-0xdb,0xe5,0xae,0xba,0x69,0x4a,0xb2,0xb7,0x55,0x26,0x85,0xb2,0xab,0x1e,0xf1,0x1e, \
-0x11,0x13,0x75,0x4a,0x50,0x57,0x15,0x05,0x2c,0x81,0x25,0x65,0xcb,0x2a,0xcf,0x53, \
-0xa0,0x76,0x9d,0x5e,0x18,0xaa,0xa9,0x62,0x12,0xe6,0x32,0x44,0x8e,0xb4,0x01,0x92, \
-0x09,0x2e,0x20,0x30,0x68,0xca,0x87,0x31,0xaa,0x35,0xd5,0x30,0x91,0x89,0xd7,0x81, \
-0x89,0x63,0xe5,0xe8,0xac,0xa2,0x3c,0xe0,0x1e,0x2f,0x85,0xa2,0x2d,0x9a,0xa4,0x83, \
-0xc7,0xcc,0x6a,0xee,0x4b,0xae,0x21,0xdd,0xb7,0x59,0xd5,0x86,0x3f,0x75,0x00,0xec, \
-0xfa,0x3b,0x6c,0xcb,0x53,0xef,0x9d,0xb0,0x39,0x10,0x8c,0x60,0x48,0x89,0x8c,0xef, \
-0xea,0x3e,0xac,0xf3,0xe6,0xcd,0xd6,0xf3,0x72,0x74,0xea,0x6e,0x38,0x3a,0x71,0x8a, \
-0x9c,0xf0,0x43,0x6b,0x93,0x45,0xd4,0xed,0x30,0xbc,0xcd,0x84,0x8a,0x03,0x54,0x2f, \
-0x9f,0x8d,0xb9,0xd9,0x2f,0x0e,0x22,0x31,0x1d,0xb4,0x9a,0x82,0xc8,0x88,0x62,0x4c, \
-0x68,0xc9,0x40,0xf4,0xa0,0xc0,0x33,0x6d,0x5a,0x03,0x58,0x13,0x70,0xd8,0xd4,0x0b, \
-0x5c,0x15,0xe8,0x85,0x30,0x41,0xa1,0x1a,0x8b,0xb8,0x5b,0x99,0xcf,0xbe,0xb0,0x62, \
-0x98,0xf0,0xe9,0x00,0x2c,0x60,0xb0,0x5d,0xbd,0x1c,0x68,0x22,0x09,0x59,0x57,0x94, \
-0x83,0x11,0x94,0x17,0x07,0xe6,0xd4,0xd8,0x67,0x29,0x9a,0x0e,0x44,0x9c,0x00,0x4f, \
-0xda,0xee,0x31,0x94,0x49,0x16,0x23,0x17,0x61,0x91,0x7d,0x00,0x1e,0x5a,0x0a,0xad, \
-0x56,0x0e,0x19,0xa2,0x40,0xba,0xb1,0x28,0x6d,0x83,0x10,0x3b,0x25,0x0e,0x4c,0x55, \
-0x74,0x70,0x1c,0x28,0xe5,0x1c,0x37,0xc2,0xc3,0x74,0x6b,0x59,0x23,0xd4,0x4c,0x5d, \
-0x04,0x50,0x56,0xd9,0xa0,0xc0,0x65,0xa1,0xb3,0xda,0x3c,0x57,0x29,0xe9,0xe8,0x52, \
-0x9b,0x71,0x63,0x7a,0x1b,0x50,0xc1,0xad,0xc9,0x2f,0x67,0xcd,0x9a,0xc0,0x95,0x24, \
-0x08,0xd3,0xb7,0x5d,0x50,0x78,0xdf,0x57,0x1d,0x0d,0x02,0xaa,0xc6,0xe6,0x4b,0x76, \
-0x27,0x24,0x38,0xc8,0xf0,0x16,0x40,0x2c,0xa6,0x51,0xda,0xc3,0xe0,0xe4,0x17,0x89, \
-0x14,0x10,0xa7,0x8a,0xe6,0xf4,0x2c,0x69,0x04,0x02,0xb1,0xa7,0x2f,0x2e,0x88,0x17, \
-0xb5,0x85,0x1b,0xa8,0x70,0x69,0x21,0x78,0x90,0xc2,0xa0,0xe6,0xd4,0x7c,0x6e,0x6d, \
-0xd6,0x85,0xd8,0xe0,0x3a,0x2f,0x68,0x23,0xa1,0xb1,0xde,0xd9,0x60,0x9e,0x6b,0x40, \
-0x61,0x95,0xd1,0xac,0x3b,0x45,0x58,0x30,0x40,0x77,0x02,0xc2,0xc6,0x89,0x11,0x78, \
-0xb0,0x18,0xa8,0x29,0x45,0xa0,0x45,0x29,0x39,0x18,0x02,0x5d,0x0b,0x86,0x52,0x89, \
-0x92,0xcc,0xa0,0xbd,0x07,0x2d,0x42,0x86,0x73,0x74,0x88,0x48,0x0a,0x34,0x04,0x2d, \
-0x0e,0x01,0x72,0x88,0x38,0x07,0x0d,0xff,0x7f,0x8f,0x59,0xcc,0x0f,0x2f,0x56,0xbe, \
-0xca,0x99,0x6b,0x98,0x8d,0x95,0x67,0x36,0x3e,0xd6,0x58,0xcc,0xe9,0x33,0x11,0x00, \
-0x60,0x5f,0x6a,0x6d,0xdd,0x48,0x59,0xf3,0xba,0x9b,0xbb,0xe2,0x3b,0x98,0x82,0x72, \
-0x05,0x14,0x43,0x45,0x42,0x3b,0xce,0x4c,0x9c,0x60,0x07,0x10,0xb0,0xd2,0x48,0x07, \
-0x4c,0xb0,0x56,0x18,0x4e,0x29,0x70,0x53,0x0c,0xc3,0x88,0x2a,0x1f,0x20,0xc6,0x16, \
-0xb8,0x56,0x6d,0x8c,0xe4,0x99,0x71,0x18,0x66,0x96,0x61,0x9a,0x5c,0xa1,0x13,0x15, \
-0x26,0x35,0x24,0x35,0x2b,0x6d,0x2c,0x22,0x6e,0x28,0xb1,0x5d,0x10,0xe6,0xd7,0x49, \
-0xb2,0x14,0x39,0x32,0x2f,0x41,0x80,0xd2,0x5e,0x13,0x08,0x2f,0x62,0xb0,0x6f,0x81, \
-0x0c,0x76,0xa4,0xcb,0xb1,0x2f,0x37,0x0a,0x46,0x2b,0x55,0x48,0x9b,0x2a,0x30,0xbc, \
-0x0f,0x2c,0x11,0xca,0x90,0x35,0x9c,0x45,0xcd,0x91,0x29,0xae,0x43,0xb3,0xb1,0x27, \
-0x36,0x0d,0x97,0x8a,0x4a,0xa8,0x89,0x81,0x1b,0x54,0x70,0x77,0xf2,0xd3,0x53,0x65, \
-0xde,0xb4,0x3e,0x2b,0xfa,0x3d,0x5d,0x35,0xbc,0x3d,0x12,0x1a,0x1e,0x36,0x51,0xd0, \
-0xd2,0x96,0xa1,0x23,0x7f,0xba,0x90,0xbc,0x02,0xe4,0x2b,0x40,0x4b,0x45,0x50,0xd2, \
-0x28,0x6a,0x8b,0x30,0xb6,0x1b,0x71,0x52,0x67,0xf2,0x88,0x0a,0x86,0x82,0x6a,0xc0, \
-0xb3,0x48,0x09,0x46,0xe8,0xe4,0xea,0x5c,0xdd,0x2b,0xc4,0x1d,0xfa,0xab,0xd7,0x9e, \
-0x97,0x27,0xc7,0xe0,0x4c,0xd1,0xc3,0x96,0x05,0xf1,0x09,0xa6,0xbd,0x15,0x2a,0x4a, \
-0x0f,0xab,0x1c,0xf3,0xcb,0x99,0x4a,0x18,0xea,0xc0,0x5e,0xa9,0xa8,0x6b,0xa8,0xe6, \
-0x1e,0x9c,0x61,0xaa,0xa1,0xab,0x3c,0x97,0xb0,0xa0,0x8e,0x23,0x30,0xb0,0xc5,0xd5, \
-0x2c,0x5c,0x2c,0x55,0xa9,0xd9,0x90,0xc0,0x70,0x07,0x53,0x5a,0xd4,0x37,0xd2,0x82, \
-0x3d,0xa1,0xbf,0x7e,0xd8,0xb8,0x44,0x91,0x00,0x24,0x52,0x40,0x7a,0x22,0x09,0x78, \
-0x5a,0x25,0xa0,0xe5,0x73,0x61,0xa0,0xd5,0x06,0xd7,0x69,0x71,0x73,0x0b,0xd6,0x4b, \
-0x26,0x65,0xa4,0x55,0x12,0x01,0x0c,0x11,0x72,0xbe,0x9d,0x0c,0xe2,0x69,0x5b,0xf0, \
-0x54,0x30,0xc7,0xc4,0xbe,0x6a,0x0b,0x40,0xee,0x67,0x50,0x19,0xe8,0x30,0xc1,0x37, \
-0xc0,0x20,0x7d,0xd8,0x33,0x0d,0x7b,0x57,0x18,0x11,0xed,0xeb,0xc1,0x81,0x17,0x74, \
-0x2d,0xcc,0xc0,0xe3,0xb5,0xc6,0x29,0x8b,0x66,0x1d,0x09,0xac,0xd9,0xb7,0x89,0x4b, \
-0x8b,0x8d,0xad,0x55,0x17,0x34,0x40,0x36,0x34,0xbd,0x5c,0x6d,0xe2,0xdf,0x3c,0x6c, \
-0xb4,0x6c,0x46,0x8d,0x03,0x6b,0xb2,0x19,0x88,0x1f,0x1e,0x27,0x33,0xbe,0xd5,0x41, \
-0x45,0x2b,0x6d,0xb4,0xd2,0x6c,0xc9,0xd5,0x6c,0xae,0x74,0x80,0x0a,0xb3,0x7b,0x0b, \
-0x5f,0xd2,0xef,0xf6,0xd9,0xe7,0xe3,0xf9,0x69,0xf9,0xe0,0x43,0x7d,0x1a,0x16,0xec, \
-0x4e,0x60,0x7c,0x75,0xda,0xf1,0xb7,0x75,0x92,0xf2,0x60,0x41,0x04,0x1d,0x26,0x09, \
-0x29,0x77,0x49,0x3f,0xe7,0x54,0x10,0x17,0x77,0x2f,0xcd,0xa8,0x49,0xe1,0xc9,0x65, \
-0x4b,0x8b,0x58,0x9b,0x76,0x35,0x07,0x67,0x98,0x1e,0xbb,0xfb,0x70,0xea,0x16,0x47, \
-0x9e,0x0b,0x8d,0xeb,0x8a,0x04,0x60,0x99,0x98,0xbb,0x6d,0x49,0xd9,0x2b,0xdd,0xed, \
-0x78,0xe6,0x07,0x9e,0x48,0x0c,0x9d,0x61,0x93,0xe7,0xe1,0x16,0xe1,0xaa,0xf8,0x26, \
-0x46,0xe7,0xd8,0xdc,0x86,0xa7,0x6c,0x3f,0x04,0x56,0x03,0x11,0xf9,0xfe,0x83,0x7c, \
-0x1e,0xbd,0xf7,0xc8,0x0b,0x93,0x1d,0xf4,0x9f,0xd4,0x7c,0x4a,0xbf,0x6a,0x68,0x3e, \
-0xd7,0x9f,0x00,0x02,0xc5,0xf7,0xc3,0xc3,0x18,0xf6,0x58,0xb7,0xf5,0x50,0x5b,0x7d, \
-0x95,0x43,0xc6,0x33,0xcf,0x8b,0x02,0xec,0x8d,0xf7,0x81,0xca,0x98,0xa4,0x4b,0x1f, \
-0x34,0x03,0x18,0x04,0x43,0x49,0xd9,0x78,0xb5,0x68,0xe0,0x46,0x41,0x3b,0x20,0x74, \
-0xc4,0x81,0xa8,0xc2,0xcb,0x59,0x3a,0x72,0x3f,0x6f,0x8e,0xa3,0x8f,0x69,0x8b,0xdd, \
-0x18,0x11,0x45,0x44,0x58,0x0c,0x58,0x22,0x45,0x59,0x2f,0xdf,0x66,0xe1,0x9a,0x91, \
-0x0f,0x14,0x2a,0x48,0x32,0x41,0x91,0x2c,0x67,0xb2,0xda,0xe3,0x73,0x34,0xdb,0x08, \
-0x4d,0xda,0xdc,0x1c,0x71,0xba,0xd8,0x4f,0x4b,0x10,0x98,0x31,0x36,0xab,0xb6,0xef, \
-0x1c,0x13,0x69,0x23,0xb1,0x86,0x5e,0xef,0x6c,0xad,0x96,0x06,0xd5,0x72,0x3d,0x35, \
-0x2e,0xca,0x03,0x6d,0x7a,0x4f,0x26,0x67,0x8e,0xd5,0x40,0xc8,0xd4,0x47,0xc9,0x34, \
-0x1c,0xd9,0xa9,0xfd,0x31,0xd5,0xce,0x98,0x46,0x03,0x25,0x8d,0xb1,0x70,0xe1,0x78, \
-0xa6,0x47,0x94,0xd3,0x44,0xc2,0x66,0x61,0x1d,0x24,0xa4,0x8c,0x49,0xd5,0xa1,0x0c, \
-0x02,0x3d,0x53,0x90,0x53,0x61,0x23,0x0b,0x34,0x46,0x13,0xc0,0xdd,0x45,0x9a,0x07, \
-0xec,0xd0,0x2c,0x26,0xec,0x06,0xc1,0xb0,0xa1,0x2e,0x2c,0x45,0xea,0xff,0x87,0x87, \
-0x9f,0x8e,0x97,0x9f,0x9b,0x2d,0xc8,0x68,0x0e,0xb8,0x99,0xd9,0xb2,0x46,0x49,0xf9, \
-0xcc,0x09,0x88,0xee,0x69,0x14,0x60,0x37,0xb9,0xa4,0xa9,0x69,0xd5,0x3a,0xf0,0xaf, \
-0x3f,0x64,0x5d,0xe8,0xd5,0x17,0x65,0x9a,0x87,0xf7,0x72,0x8a,0xa5,0x99,0xc7,0x57, \
-0x4a,0xce,0x60,0xd6,0x61,0x7c,0x55,0x9b,0x21,0x2f,0xb5,0x88,0x6c,0x0a,0xb8,0x65, \
-0x4c,0xf0,0x09,0x4e,0x10,0x10,0x99,0x86,0x08,0x64,0x7a,0x9f,0xab,0x70,0x47,0x26, \
-0xeb,0x26,0x6b,0x41,0x21,0x3d,0x9b,0x2a,0xc9,0xe3,0xd0,0x7d,0x57,0xeb,0xc5,0xed, \
-0x80,0x50,0xcd,0xf5,0x4e,0xe4,0xca,0xac,0x5a,0x37,0x09,0xed,0x33,0xa6,0xf7,0xaa, \
-0xa9,0xd0,0x0f,0xf9,0x5c,0xa7,0xeb,0xfc,0x21,0xe5,0xc5,0x32,0xfc,0x0a,0x48,0x79, \
-0xec,0x6c,0xbb,0x78,0x9a,0x3c,0xaa,0xa2,0x96,0x8b,0x22,0x74,0x82,0x8b,0x1d,0x32, \
-0xe0,0x23,0x84,0x3f,0x55,0x71,0x15,0xcc,0x45,0x27,0x62,0x48,0xe8,0xb9,0xf8,0x3e, \
-0xce,0x96,0x21,0x44,0x95,0x7c,0x2a,0x37,0x15,0xa1,0x04,0x28,0x85,0x0a,0x65,0x0f, \
-0x32,0x0f,0x12,0xc6,0xd8,0x97,0x84,0xd5,0xa2,0x69,0x40,0x82,0x24,0x39,0x6a,0xca, \
-0x37,0xd0,0x83,0xdb,0xab,0xc6,0xfa,0xca,0x0c,0xbb,0x88,0x8e,0xde,0x96,0xed,0x0b, \
-0x4c,0x5c,0x50,0xed,0x4a,0xe4,0xb7,0x41,0xd3,0x09,0xc6,0x40,0x35,0x00,0x51,0x02, \
-0x8a,0x63,0x4c,0x40,0x79,0x1d,0x3e,0x58,0xa2,0x1a,0xa4,0x1d,0x14,0x16,0xa5,0x0d, \
-0x95,0xbb,0xc6,0xb5,0x33,0x55,0x61,0xd8,0x61,0x9c,0x53,0xe3,0x21,0x59,0xae,0xb1, \
-0x1a,0x24,0x8c,0xb5,0xe3,0x6d,0xb4,0x60,0xd8,0x27,0xd1,0x49,0xb3,0x7f,0x4e,0x9d, \
-0xda,0x17,0x05,0xe1,0x11,0xc0,0x3e,0xcd,0x43,0xe4,0x89,0x9e,0x90,0x66,0x3e,0x04, \
-0x13,0xd5,0x04,0x78,0x28,0x19,0xc0,0xe2,0x38,0x87,0xc9,0x87,0x6c,0xed,0x7b,0x6a, \
-0xb6,0x77,0xd7,0x8d,0xbc,0x44,0x79,0x28,0x88,0x08,0x50,0x0c,0x2b,0xa2,0x41,0xf6, \
-0x5d,0x53,0x47,0xe5,0x29,0x8f,0x39,0x0a,0x7a,0x7d,0x48,0x00,0x59,0x00,0x3f,0xc8, \
-0xf0,0xf5,0xe8,0xf8,0xf5,0xdb,0xf6,0x79,0x85,0x5e,0x4b,0xd6,0xf6,0x86,0x8f,0xbb, \
-0xd6,0x3d,0xa5,0xcb,0x10,0x58,0x2f,0x08,0xf6,0x51,0x56,0x39,0xf9,0xbb,0x17,0xc9, \
-0x16,0x01,0xf9,0xee,0x4d,0x45,0x83,0x42,0x37,0x8e,0x34,0xe1,0x5f,0x19,0x7f,0xe2, \
-0xee,0x48,0xa7,0x0a,0x12,0x05,0xd0,0x66,0x1e,0xe0, \
+0150,0061,0061,0101,0131,0046,0123,0131,0353,0003,0246,0026,0000,0032,0337,0137, \
+0200,0160,0160,0167,0377,0377,0377,0377,0377,0377,0377,0377,0377,0377,0377,0140, \
+0117,0104,0330,0364,0000,0017,0276,0317,0200,0371,0024,0027,0274,0136,0166,0317, \
+0102,0233,0147,0103,0167,0226,0352,0106,0306,0274,0301,0245,0110,0121,0216,0347, \
+0050,0246,0270,0200,0352,0175,0366,0000,0137,0100,0012,0057,0155,0304,0134,0207, \
+0270,0257,0267,0335,0255,0271,0270,0056,0262,0133,0146,0225,0244,0106,0044,0335, \
+0306,0175,0354,0351,0314,0032,0250,0007,0335,0003,0257,0257,0162,0136,0275,0363, \
+0334,0115,0310,0167,0050,0012,0256,0215,0043,0257,0276,0371,0005,0005,0037,0171, \
+0272,0373,0274,0275,0274,0346,0367,0217,0173,0325,0075,0141,0251,0050,0324,0006, \
+0145,0313,0051,0357,0060,0244,0235,0151,0146,0325,0263,0154,0071,0071,0012,0166, \
+0301,0111,0120,0051,0051,0125,0172,0157,0275,0272,0202,0212,0003,0041,0257,0175, \
+0156,0356,0066,0315,0335,0065,0054,0363,0273,0217,0165,0201,0267,0031,0021,0041, \
+0047,0226,0246,0331,0063,0067,0205,0327,0301,0251,0220,0004,0000,0023,0100,0321, \
+0061,0060,0043,0040,0103,0124,0360,0106,0230,0231,0117,0124,0367,0251,0240,0322, \
+0170,0251,0345,0075,0032,0236,0203,0115,0002,0004,0004,0023,0104,0300,0024,0323, \
+0010,0325,0075,0065,0064,0323,0311,0033,0123,0107,0250,0304,0064,0032,0150,0320, \
+0001,0246,0201,0246,0042,0010,0042,0032,0236,0112,0171,0117,0124,0172,0232,0064, \
+0362,0047,0352,0217,0123,0100,0321,0352,0031,0075,0103,0103,0115,0001,0220,0014, \
+0200,0002,0115,0050,0202,0002,0004,0302,0011,0202,0232,0064,0323,0104,0236,0065, \
+0117,0152,0233,0051,0351,0351,0064,0201,0230,0221,0223,0106,0200,0000,0021,0050, \
+0200,0111,0264,0010,0311,0241,0115,0250,0332,0151,0061,0023,0365,0031,0117,0011, \
+0066,0120,0315,0115,0064,0000,0320,0014,0217,0120,0000,0221,0020,0200,0214,0201, \
+0000,0004,0144,0046,0232,0062,0142,0002,0247,0352,0172,0064,0123,0324,0365,0075, \
+0106,0172,0123,0322,0000,0075,0100,0045,0357,0077,0363,0364,0273,0314,0136,0157, \
+0244,0201,0174,0241,0373,0144,0065,0021,0077,0356,0127,0326,0062,0147,0342,0264, \
+0237,0362,0344,0372,0130,0326,0170,0044,0303,0332,0230,0175,0036,0225,0101,0176, \
+0046,0271,0244,0045,0237,0347,0013,0226,0164,0024,0177,0253,0127,0042,0326,0011, \
+0352,0372,0375,0123,0111,0262,0121,0051,0303,0211,0231,0042,0041,0347,0236,0067, \
+0324,0337,0366,0121,0240,0124,0377,0236,0026,0361,0371,0314,0342,0104,0347,0225, \
+0375,0357,0353,0372,0151,0134,0272,0247,0367,0161,0323,0047,0205,0241,0161,0374, \
+0375,0024,0112,0225,0327,0275,0133,0174,0325,0074,0216,0377,0357,0155,0062,0307, \
+0036,0307,0206,0306,0326,0270,0263,0306,0153,0264,0151,0377,0220,0276,0133,0256, \
+0317,0371,0265,0326,0332,0337,0356,0114,0235,0363,0327,0154,0165,0152,0361,0217, \
+0111,0223,0342,0017,0311,0361,0307,0207,0324,0002,0204,0173,0160,0006,0332,0257, \
+0360,0174,0377,0352,0134,0100,0376,0144,0337,0366,0100,0307,0250,0315,0005,0370, \
+0154,0251,0203,0364,0130,0223,0136,0137,0017,0343,0363,0067,0251,0154,0056,0150, \
+0007,0352,0105,0035,0023,0213,0264,0217,0371,0333,0174,0322,0365,0321,0374,0323, \
+0335,0307,0311,0132,0144,0377,0202,0272,0212,0357,0367,0134,0073,0203,0341,0153, \
+0377,0307,0171,0327,0376,0245,0233,0242,0221,0224,0165,0163,0271,0365,0370,0222, \
+0364,0205,0334,0035,0104,0322,0244,0014,0152,0371,0345,0163,0055,0263,0057,0165, \
+0362,0324,0232,0321,0274,0246,0157,0164,0231,0047,0146,0276,0132,0305,0302,0132, \
+0103,0043,0346,0122,0040,0104,0113,0011,0044,0223,0375,0366,0362,0375,0273,0057, \
+0276,0370,0204,0144,0101,0005,0047,0352,0364,0127,0331,0266,0202,0026,0023,0231, \
+0234,0172,0065,0116,0075,0374,0072,0327,0027,0120,0246,0170,0343,0357,0326,0143, \
+0221,0150,0332,0340,0344,0342,0035,0167,0064,0165,0054,0214,0252,0106,0344,0353, \
+0053,0244,0076,0121,0011,0250,0225,0010,0132,0025,0361,0021,0071,0260,0143,0155, \
+0206,0211,0313,0155,0235,0056,0165,0071,0230,0070,0053,0165,0215,0213,0065,0054, \
+0265,0111,0310,0014,0042,0332,0300,0160,0135,0153,0131,0161,0251,0027,0265,0240, \
+0262,0132,0305,0114,0332,0155,0277,0034,0126,0022,0045,0051,0171,0072,0265,0117, \
+0034,0362,0232,0002,0246,0235,0211,0005,0202,0224,0333,0231,0035,0335,0002,0116, \
+0030,0040,0003,0261,0314,0253,0326,0032,0225,0164,0332,0045,0072,0013,0076,0176, \
+0131,0345,0303,0130,0232,0111,0273,0171,0225,0203,0017,0024,0136,0131,0367,0043, \
+0052,0021,0000,0101,0003,0070,0372,0366,0362,0137,0305,0046,0013,0262,0314,0267, \
+0340,0222,0176,0101,0364,0024,0330,0307,0327,0207,0325,0046,0120,0145,0320,0332, \
+0135,0112,0031,0114,0066,0177,0031,0256,0374,0126,0246,0313,0071,0261,0366,0345, \
+0350,0330,0356,0007,0233,0140,0130,0025,0313,0313,0152,0204,0142,0212,0123,0207, \
+0077,0004,0323,0214,0356,0072,0237,0206,0266,0015,0145,0026,0034,0263,0007,0125, \
+0026,0161,0203,0240,0020,0120,0052,0321,0243,0170,0333,0330,0272,0305,0043,0074, \
+0135,0227,0005,0143,0254,0302,0326,0150,0167,0103,0246,0351,0206,0072,0255,0317, \
+0317,0351,0214,0141,0353,0252,0165,0142,0313,0377,0275,0022,0012,0052,0353,0266, \
+0062,0076,0311,0063,0157,0315,0074,0370,0206,0220,0102,0120,0305,0042,0021,0055, \
+0133,0134,0063,0304,0261,0320,0037,0133,0117,0061,0004,0216,0363,0061,0263,0237, \
+0023,0026,0011,0374,0331,0241,0052,0365,0235,0316,0066,0356,0302,0235,0131,0062, \
+0004,0064,0206,0105,0144,0122,0002,0113,0114,0014,0031,0202,0042,0004,0100,0322, \
+0111,0267,0362,0307,0011,0132,0334,0352,0024,0277,0231,0140,0307,0355,0214,0140, \
+0211,0163,0202,0306,0015,0131,0125,0071,0145,0246,0165,0175,0253,0017,0366,0155, \
+0110,0244,0257,0055,0345,0363,0326,0175,0032,0246,0117,0111,0005,0316,0163,0220, \
+0031,0344,0115,0344,0371,0130,0201,0257,0230,0353,0021,0353,0245,0054,0131,0071, \
+0216,0331,0023,0041,0233,0132,0366,0345,0112,0141,0307,0257,0054,0003,0250,0275, \
+0035,0354,0272,0335,0051,0364,0313,0126,0170,0314,0073,0030,0112,0256,0126,0363, \
+0312,0266,0364,0363,0303,0167,0313,0222,0330,0277,0357,0253,0170,0277,0266,0341, \
+0245,0071,0046,0321,0257,0070,0356,0016,0263,0136,0127,0042,0022,0131,0234,0232, \
+0266,0144,0033,0023,0337,0044,0351,0013,0266,0205,0064,0143,0373,0171,0276,0033, \
+0146,0020,0024,0107,0251,0000,0370,0301,0014,0143,0036,0203,0051,0350,0321,0057, \
+0374,0076,0214,0172,0272,0031,0176,0277,0176,0036,0352,0125,0041,0344,0163,0176, \
+0021,0353,0004,0000,0312,0051,0077,0155,0260,0071,0230,0013,0204,0106,0001,0300, \
+0364,0270,0021,0006,0021,0104,0204,0032,0010,0124,0010,0041,0117,0263,0117,0354, \
+0340,0242,0372,0164,0354,0363,0056,0306,0172,0233,0221,0340,0113,0023,0211,0247, \
+0336,0100,0324,0223,0315,0015,0126,0105,0376,0132,0327,0252,0245,0171,0143,0131, \
+0336,0175,0311,0063,0040,0154,0116,0301,0112,0100,0343,0143,0123,0377,0216,0206, \
+0023,0245,0217,0116,0326,0251,0152,0075,0367,0027,0144,0320,0302,0131,0302,0211, \
+0307,0234,0301,0111,0050,0144,0133,0354,0037,0070,0355,0174,0145,0121,0372,0017, \
+0330,0121,0206,0006,0073,0162,0347,0112,0122,0101,0024,0227,0240,0061,0020,0005, \
+0341,0265,0064,0357,0374,0015,0212,0117,0241,0302,0101,0252,0254,0011,0270,0222, \
+0304,0031,0135,0160,0242,0265,0120,0206,0212,0217,0332,0264,0065,0357,0227,0056, \
+0007,0161,0326,0252,0202,0306,0245,0011,0117,0253,0165,0253,0254,0041,0004,0202, \
+0100,0363,0273,0135,0327,0256,0133,0116,0064,0141,0356,0047,0303,0116,0064,0277, \
+0155,0054,0326,0032,0171,0307,0324,0066,0224,0321,0323,0305,0130,0067,0326,0131, \
+0264,0060,0374,0355,0303,0024,0264,0217,0274,0214,0302,0014,0174,0123,0172,0102, \
+0370,0151,0333,0132,0303,0316,0234,0255,0326,0053,0370,0250,0260,0243,0326,0374, \
+0175,0161,0220,0374,0165,0221,0322,0312,0163,0245,0061,0020,0125,0165,0126,0350, \
+0352,0032,0132,0235,0341,0235,0304,0035,0372,0135,0273,0213,0321,0006,0154,0247, \
+0330,0145,0264,0041,0211,0341,0371,0161,0235,0042,0135,0103,0141,0134,0015,0303, \
+0015,0146,0063,0325,0207,0170,0337,0057,0021,0160,0252,0131,0345,0054,0075,0170, \
+0074,0324,0164,0373,0367,0240,0144,0056,0235,0031,0237,0027,0335,0221,0255,0141, \
+0003,0324,0046,0136,0367,0175,0175,0255,0341,0040,0141,0003,0206,0366,0300,0136, \
+0143,0360,0334,0130,0274,0256,0223,0161,0106,0126,0137,0165,0016,0132,0120,0122, \
+0024,0163,0247,0206,0035,0255,0245,0031,0202,0232,0262,0274,0134,0363,0312,0154, \
+0352,0202,0265,0122,0241,0254,0361,0057,0051,0347,0062,0051,0035,0235,0357,0122, \
+0075,0207,0150,0132,0123,0346,0155,0017,0353,0056,0115,0214,0222,0030,0161,0313, \
+0115,0142,0045,0162,0054,0153,0060,0103,0273,0015,0330,0010,0307,0330,0314,0041, \
+0034,0370,0325,0024,0133,0311,0203,0016,0365,0346,0164,0233,0335,0151,0016,0231, \
+0226,0152,0002,0144,0317,0233,0331,0241,0174,0217,0143,0067,0243,0110,0144,0217, \
+0107,0064,0176,0254,0335,0100,0147,0340,0112,0016,0366,0360,0323,0272,0265,0373, \
+0163,0353,0317,0006,0272,0145,0324,0377,0200,0015,0216,0344,0010,0145,0003,0150, \
+0040,0135,0124,0261,0065,0027,0147,0354,0327,0043,0234,0174,0322,0247,0241,0127, \
+0240,0372,0032,0242,0274,0133,0117,0057,0303,0275,0072,0126,0231,0047,0237,0077, \
+0107,0122,0324,0202,0164,0326,0011,0017,0130,0343,0035,0014,0074,0013,0153,0134, \
+0031,0376,0332,0163,0353,0371,0064,0370,0236,0030,0367,0105,0316,0242,0153,0274, \
+0065,0054,0273,0100,0232,0376,0072,0375,0105,0073,0201,0076,0220,0023,0106,0012, \
+0216,0300,0121,0353,0031,0147,0351,0104,0245,0266,0046,0236,0347,0022,0331,0374, \
+0313,0163,0235,0225,0217,0317,0276,0213,0234,0300,0243,0132,0216,0233,0307,0263, \
+0073,0317,0034,0250,0377,0036,0055,0154,0253,0145,0253,0113,0137,0034,0143,0112, \
+0205,0165,0342,0013,0226,0162,0107,0232,0353,0353,0116,0275,0206,0376,0244,0020, \
+0061,0362,0257,0034,0372,0364,0144,0005,0222,0002,0034,0327,0064,0343,0264,0114, \
+0260,0041,0023,0321,0103,0031,0201,0110,0146,0332,0023,0016,0076,0154,0243,0225, \
+0325,0012,0323,0007,0137,0104,0257,0243,0113,0332,0267,0205,0170,0346,0370,0326, \
+0221,0130,0275,0254,0052,0363,0121,0267,0070,0207,0016,0127,0103,0335,0113,0250, \
+0242,0164,0060,0256,0134,0143,0173,0051,0245,0132,0263,0153,0372,0234,0007,0044, \
+0271,0336,0334,0064,0065,0161,0375,0106,0275,0076,0217,0231,0332,0204,0066,0144, \
+0001,0030,0101,0105,0355,0264,0007,0134,0134,0004,0066,0102,0005,0140,0262,0101, \
+0264,0003,0264,0103,0100,0064,0064,0137,0271,0230,0316,0276,0235,0336,0236,0334, \
+0327,0313,0327,0153,0257,0254,0333,0221,0262,0151,0131,0333,0077,0353,0127,0200, \
+0107,0370,0367,0113,0001,0203,0311,0310,0166,0051,0163,0031,0302,0200,0013,0022, \
+0237,0130,0046,0263,0254,0027,0214,0330,0246,0255,0304,0262,0267,0225,0356,0041, \
+0306,0047,0261,0017,0044,0141,0113,0124,0174,0341,0302,0123,0344,0256,0235,0132, \
+0015,0322,0126,0161,0024,0144,0152,0071,0323,0316,0151,0332,0251,0222,0027,0273, \
+0350,0101,0300,0347,0227,0347,0252,0175,0135,0175,0036,0207,0076,0314,0135,0221, \
+0177,0113,0201,0362,0064,0173,0325,0061,0175,0167,0063,0327,0067,0273,0126,0175, \
+0071,0301,0166,0377,0306,0144,0321,0061,0267,0357,0210,0023,0163,0017,0271,0314, \
+0302,0037,0005,0320,0164,0236,0337,0015,0014,0052,0060,0210,0224,0372,0263,0106, \
+0251,0073,0272,0225,0246,0075,0345,0344,0212,0114,0134,0351,0274,0144,0167,0046, \
+0054,0052,0177,0074,0137,0107,0072,0034,0363,0145,0072,0226,0314,0262,0056,0222, \
+0122,0277,0377,0373,0253,0026,0214,0226,0075,0023,0165,0310,0166,0107,0217,0202, \
+0344,0255,0262,0301,0164,0204,0236,0326,0314,0011,0201,0262,0251,0304,0332,0243, \
+0120,0221,0372,0247,0015,0065,0313,0273,0262,0036,0235,0176,0231,0307,0013,0153, \
+0307,0225,0340,0061,0236,0314,0322,0363,0257,0075,0230,0123,0056,0203,0001,0176, \
+0312,0200,0211,0032,0107,0114,0372,0051,0220,0333,0106,0231,0173,0320,0112,0107, \
+0371,0101,0040,0131,0054,0372,0225,0027,0252,0171,0330,0176,0161,0233,0221,0337, \
+0031,0136,0137,0327,0356,0143,0037,0322,0151,0003,0124,0217,0337,0303,0030,0237, \
+0036,0214,0174,0113,0043,0132,0063,0270,0155,0227,0325,0354,0303,0317,0336,0366, \
+0124,0077,0373,0177,0361,0303,0362,0345,0263,0317,0263,0062,0321,0374,0127,0213, \
+0112,0020,0051,0322,0230,0043,0020,0014,0355,0346,0347,0044,0005,0336,0010,0150, \
+0345,0165,0301,0043,0307,0031,0263,0061,0136,0075,0324,0055,0355,0145,0074,0312, \
+0117,0001,0064,0215,0244,0326,0260,0322,0201,0166,0074,0172,0110,0275,0003,0122, \
+0142,0176,0263,0104,0335,0241,0347,0361,0230,0034,0343,0316,0246,0300,0227,0141, \
+0356,0066,0337,0165,0320,0336,0073,0062,0170,0322,0124,0213,0136,0326,0334,0307, \
+0174,0106,0057,0354,0322,0056,0027,0251,0001,0150,0155,0107,0307,0033,0072,0142, \
+0143,0246,0236,0011,0233,0337,0111,0244,0250,0062,0164,0255,0235,0222,0053,0013, \
+0152,0340,0006,0041,0004,0207,0227,0267,0343,0270,0112,0254,0014,0020,0216,0105, \
+0210,0054,0354,0111,0220,0266,0346,0014,0104,0214,0017,0064,0060,0033,0172,0301, \
+0104,0261,0010,0253,0226,0357,0263,0273,0236,0065,0340,0226,0010,0037,0161,0045, \
+0030,0111,0106,0156,0226,0333,0361,0246,0024,0206,0133,0277,0107,0304,0364,0372, \
+0337,0115,0114,0053,0123,0366,0044,0345,0265,0204,0150,0257,0307,0310,0213,0221, \
+0265,0111,0060,0074,0362,0270,0363,0303,0373,0156,0070,0233,0137,0337,0001,0061, \
+0277,0034,0235,0040,0147,0135,0271,0362,0252,0362,0374,0223,0367,0046,0001,0341, \
+0145,0102,0101,0025,0120,0074,0120,0122,0120,0257,0327,0104,0175,0073,0260,0011, \
+0043,0202,0255,0205,0225,0014,0017,0232,0100,0156,0142,0175,0157,0236,0342,0150, \
+0032,0046,0064,0025,0204,0070,0056,0322,0306,0163,0054,0062,0225,0345,0336,0044, \
+0214,0100,0343,0220,0046,0137,0307,0345,0226,0206,0037,0273,0312,0354,0013,0046, \
+0316,0254,0040,0251,0034,0015,0204,0337,0271,0276,0111,0267,0110,0111,0002,0124, \
+0364,0343,0314,0072,0345,0130,0370,0066,0357,0365,0257,0337,0261,0071,0334,0147, \
+0003,0303,0245,0326,0334,0321,0205,0256,0246,0072,0060,0331,0105,0152,0020,0056, \
+0250,0033,0311,0015,0041,0170,0353,0302,0064,0113,0141,0027,0113,0101,0042,0351, \
+0327,0027,0144,0366,0221,0011,0166,0300,0065,0356,0026,0071,0152,0305,0115,0153, \
+0101,0360,0135,0312,0101,0327,0167,0041,0204,0171,0261,0315,0076,0331,0345,0012, \
+0103,0010,0320,0214,0144,0053,0153,0111,0133,0307,0130,0311,0061,0142,0206,0021, \
+0155,0125,0140,0050,0200,0273,0363,0041,0172,0045,0304,0371,0351,0027,0246,0272, \
+0016,0266,0322,0146,0276,0267,0074,0262,0357,0000,0321,0101,0043,0134,0306,0154, \
+0264,0253,0043,0022,0257,0122,0172,0027,0114,0264,0067,0115,0313,0132,0314,0244, \
+0171,0364,0214,0040,0161,0211,0102,0147,0324,0171,0137,0156,0300,0010,0364,0002, \
+0324,0232,0206,0342,0144,0134,0215,0131,0152,0355,0357,0370,0101,0275,0340,0161, \
+0362,0255,0042,0203,0154,0315,0167,0147,0037,0052,0126,0074,0062,0143,0313,0253, \
+0233,0156,0017,0106,0041,0017,0345,0001,0260,0173,0216,0004,0042,0130,0054,0330, \
+0114,0062,0022,0141,0001,0134,0336,0203,0376,0263,0007,0365,0037,0054,0376,0107, \
+0355,0305,0373,0106,0034,0330,0154,0315,0020,0002,0241,0305,0076,0335,0254,0312, \
+0177,0262,0016,0030,0175,0032,0334,0150,0131,0143,0206,0253,0067,0311,0127,0167, \
+0256,0021,0367,0276,0201,0240,0256,0330,0043,0162,0357,0231,0244,0123,0277,0211, \
+0323,0370,0047,0354,0354,0200,0036,0136,0011,0207,0173,0226,0031,0367,0253,0371, \
+0140,0340,0061,0237,0021,0235,0214,0171,0063,0022,0302,0330,0046,0302,0267,0153, \
+0200,0114,0347,0225,0345,0231,0356,0200,0367,0301,0112,0036,0207,0051,0010,0112, \
+0232,0100,0167,0246,0071,0244,0305,0043,0227,0053,0107,0336,0343,0020,0362,0167, \
+0044,0202,0171,0312,0212,0101,0357,0205,0007,0326,0126,0041,0307,0120,0164,0015, \
+0031,0150,0063,0152,0225,0205,0044,0262,0247,0056,0245,0312,0363,0060,0363,0261, \
+0333,0230,0260,0033,0214,0064,0125,0004,0031,0101,0202,0143,0116,0165,0132,0220, \
+0256,0061,0245,0263,0104,0220,0100,0046,0142,0110,0345,0245,0232,0143,0146,0014, \
+0336,0241,0150,0213,0003,0123,0133,0200,0364,0125,0062,0131,0241,0051,0026,0122, \
+0151,0133,0314,0146,0162,0145,0175,0253,0304,0324,0271,0000,0333,0066,0374,0322, \
+0072,0100,0033,0036,0155,0134,0224,0047,0067,0237,0106,0322,0362,0170,0116,0244, \
+0043,0222,0230,0255,0274,0174,0043,0137,0172,0340,0360,0052,0105,0017,0340,0307, \
+0227,0314,0241,0304,0135,0120,0321,0274,0265,0344,0264,0107,0160,0251,0343,0325, \
+0233,0166,0342,0161,0062,0225,0274,0016,0133,0050,0252,0305,0303,0132,0022,0300, \
+0146,0314,0266,0000,0275,0010,0141,0074,0347,0247,0122,0201,0371,0342,0276,0365, \
+0251,0317,0074,0127,0206,0227,0072,0235,0127,0050,0062,0052,0246,0023,0040,0364, \
+0027,0104,0337,0132,0341,0375,0144,0227,0201,0177,0327,0331,0361,0333,0246,0274, \
+0264,0043,0253,0042,0106,0306,0125,0353,0041,0004,0146,0211,0067,0050,0046,0246, \
+0045,0054,0065,0074,0052,0361,0077,0061,0300,0221,0103,0244,0226,0336,0217,0224, \
+0122,0157,0222,0267,0363,0111,0022,0327,0167,0075,0100,0137,0232,0244,0213,0010, \
+0021,0115,0325,0003,0216,0125,0233,0124,0150,0172,0002,0300,0255,0001,0233,0252, \
+0244,0176,0353,0305,0133,0335,0212,0064,0002,0010,0302,0234,0022,0135,0066,0005, \
+0041,0140,0260,0070,0320,0135,0012,0226,0004,0025,0152,0031,0302,0106,0327,0125, \
+0251,0264,0251,0166,0304,0273,0114,0224,0247,0024,0320,0026,0053,0026,0370,0346, \
+0045,0371,0063,0310,0346,0141,0153,0227,0207,0204,0214,0020,0104,0164,0315,0206, \
+0142,0024,0164,0125,0030,0004,0070,0126,0154,0346,0044,0113,0061,0033,0023,0041, \
+0260,0076,0312,0233,0073,0045,0303,0350,0202,0235,0122,0147,0215,0033,0142,0134, \
+0051,0173,0273,0057,0302,0243,0111,0235,0062,0107,0025,0013,0261,0234,0140,0007, \
+0271,0376,0274,0262,0064,0327,0153,0160,0256,0351,0110,0061,0050,0035,0052,0173, \
+0170,0337,0052,0340,0070,0306,0030,0322,0174,0105,0015,0332,0004,0373,0370,0336, \
+0044,0343,0161,0317,0116,0113,0333,0270,0303,0127,0115,0366,0315,0361,0103,0141, \
+0305,0041,0277,0330,0263,0307,0204,0122,0005,0276,0126,0134,0202,0076,0022,0337, \
+0350,0032,0000,0070,0276,0241,0207,0177,0142,0266,0164,0015,0042,0316,0116,0317, \
+0364,0050,0357,0315,0057,0032,0026,0241,0025,0351,0240,0015,0317,0041,0230,0336, \
+0310,0052,0110,0120,0175,0076,0356,0221,0355,0110,0002,0235,0307,0303,0147,0111, \
+0074,0373,0037,0024,0266,0272,0232,0331,0024,0371,0361,0024,0317,0034,0075,0227, \
+0342,0044,0111,0327,0326,0206,0061,0103,0024,0132,0021,0325,0346,0053,0244,0013, \
+0006,0243,0166,0034,0334,0160,0266,0120,0355,0164,0253,0046,0133,0346,0051,0373, \
+0140,0065,0262,0223,0330,0351,0266,0327,0153,0273,0155,0017,0150,0311,0200,0354, \
+0025,0042,0255,0243,0361,0051,0363,0202,0361,0125,0316,0143,0134,0206,0137,0212, \
+0213,0123,0155,0066,0263,0310,0330,0072,0270,0330,0055,0211,0154,0314,0003,0214, \
+0162,0262,0146,0365,0264,0324,0216,0321,0327,0204,0045,0357,0222,0031,0026,0231, \
+0317,0330,0326,0375,0252,0202,0053,0022,0207,0005,0042,0220,0316,0374,0126,0254, \
+0075,0176,0137,0056,0010,0042,0064,0300,0257,0151,0020,0306,0223,0375,0036,0121, \
+0030,0136,0242,0046,0245,0100,0320,0251,0035,0152,0307,0274,0025,0205,0034,0047, \
+0066,0117,0146,0133,0121,0226,0121,0200,0361,0124,0263,0255,0005,0245,0170,0326, \
+0364,0061,0341,0305,0167,0065,0004,0200,0223,0322,0221,0023,0161,0321,0052,0045, \
+0027,0261,0055,0322,0233,0365,0053,0163,0227,0063,0276,0117,0155,0046,0240,0305, \
+0106,0224,0211,0316,0277,0042,0271,0250,0203,0365,0212,0073,0040,0367,0267,0321, \
+0341,0211,0026,0347,0042,0256,0162,0005,0120,0006,0333,0136,0350,0147,0032,0067, \
+0155,0021,0374,0224,0216,0112,0120,0157,0307,0204,0154,0373,0344,0151,0020,0222, \
+0073,0013,0152,0043,0074,0251,0264,0067,0061,0052,0053,0351,0120,0136,0372,0225, \
+0310,0207,0061,0014,0005,0067,0153,0332,0024,0065,0367,0345,0306,0314,0242,0103, \
+0256,0140,0147,0200,0002,0206,0115,0207,0217,0167,0173,0236,0343,0054,0060,0043, \
+0374,0224,0175,0346,0140,0261,0104,0031,0176,0370,0016,0107,0264,0320,0221,0324, \
+0250,0274,0014,0174,0027,0076,0313,0157,0340,0245,0037,0071,0173,0365,0100,0052, \
+0071,0244,0051,0333,0344,0263,0364,0234,0167,0175,0046,0254,0100,0224,0071,0116, \
+0115,0202,0317,0233,0017,0112,0005,0072,0046,0362,0342,0343,0155,0013,0214,0366, \
+0316,0364,0303,0071,0003,0054,0335,0262,0314,0327,0271,0320,0064,0155,0352,0203, \
+0072,0133,0146,0032,0205,0002,0366,0131,0075,0071,0012,0071,0175,0144,0072,0351, \
+0224,0173,0123,0136,0073,0320,0125,0005,0055,0025,0345,0032,0316,0317,0131,0271, \
+0123,0103,0305,0056,0327,0242,0230,0002,0364,0012,0342,0176,0227,0052,0013,0132, \
+0114,0070,0301,0255,0313,0070,0302,0327,0361,0234,0005,0353,0026,0112,0373,0355, \
+0236,0107,0327,0220,0315,0267,0127,0043,0214,0036,0042,0253,0176,0003,0101,0045, \
+0135,0350,0054,0302,0301,0343,0221,0345,0252,0337,0207,0120,0305,0040,0163,0331, \
+0153,0335,0370,0132,0275,0252,0226,0323,0015,0214,0226,0031,0166,0050,0245,0064, \
+0313,0164,0332,0001,0272,0116,0374,0054,0054,0116,0230,0205,0265,0227,0301,0054, \
+0062,0174,0313,0165,0255,0306,0157,0230,0314,0070,0154,0373,0050,0062,0254,0214, \
+0327,0132,0353,0310,0261,0014,0330,0054,0003,0055,0361,0007,0041,0031,0016,0304, \
+0120,0027,0125,0110,0156,0331,0043,0137,0021,0071,0250,0271,0270,0344,0204,0111, \
+0047,0200,0354,0322,0144,0131,0025,0243,0203,0061,0261,0305,0205,0135,0127,0232, \
+0312,0207,0001,0131,0221,0042,0214,0264,0032,0111,0211,0063,0160,0227,0052,0326, \
+0324,0006,0110,0030,0172,0341,0112,0102,0114,0150,0025,0034,0033,0121,0152,0110, \
+0353,0352,0013,0141,0116,0314,0115,0342,0073,0315,0273,0071,0170,0314,0336,0025, \
+0363,0171,0047,0033,0251,0211,0031,0116,0067,0335,0240,0360,0030,0231,0072,0332, \
+0361,0237,0166,0374,0044,0204,0333,0075,0374,0370,0142,0124,0125,0151,0124,0361, \
+0310,0162,0310,0126,0324,0045,0255,0164,0336,0150,0210,0244,0175,0376,0176,0353, \
+0233,0214,0160,0346,0262,0153,0045,0060,0211,0235,0061,0030,0162,0202,0200,0120, \
+0045,0002,0225,0100,0327,0163,0021,0355,0125,0211,0146,0014,0012,0075,0054,0030, \
+0262,0306,0300,0130,0060,0304,0063,0102,0064,0012,0263,0055,0035,0257,0142,0332, \
+0252,0312,0250,0065,0126,0005,0274,0077,0105,0003,0347,0332,0064,0362,0331,0165, \
+0225,0272,0340,0346,0017,0303,0177,0147,0256,0332,0316,0144,0051,0071,0142,0341, \
+0334,0122,0055,0200,0036,0336,0166,0341,0351,0301,0255,0174,0366,0341,0200,0275, \
+0127,0250,0365,0056,0074,0326,0303,0260,0142,0336,0050,0324,0324,0255,0214,0124, \
+0066,0102,0061,0130,0160,0013,0140,0357,0136,0167,0334,0370,0372,0317,0013,0112, \
+0253,0105,0113,0121,0003,0224,0300,0223,0041,0045,0221,0304,0103,0205,0235,0331, \
+0163,0174,0015,0036,0172,0351,0250,0372,0206,0171,0322,0327,0132,0120,0331,0312, \
+0307,0163,0120,0012,0032,0146,0062,0067,0026,0023,0117,0214,0120,0177,0066,0113, \
+0224,0341,0244,0125,0057,0301,0134,0232,0075,0032,0203,0245,0246,0203,0163,0043, \
+0351,0021,0125,0026,0003,0032,0213,0125,0266,0214,0357,0026,0120,0345,0050,0122, \
+0007,0052,0362,0313,0246,0303,0206,0126,0020,0373,0265,0107,0270,0112,0354,0372, \
+0223,0225,0163,0267,0164,0207,0315,0172,0102,0130,0363,0264,0147,0212,0213,0032, \
+0323,0070,0315,0306,0331,0230,0026,0273,0045,0006,0233,0300,0047,0324,0242,0274, \
+0071,0003,0325,0062,0111,0125,0146,0315,0243,0113,0165,0203,0253,0242,0165,0270, \
+0250,0147,0067,0032,0332,0272,0362,0154,0370,0216,0032,0275,0367,0116,0153,0244, \
+0005,0025,0351,0365,0157,0072,0223,0124,0034,0067,0261,0043,0162,0061,0361,0226, \
+0024,0257,0036,0130,0250,0332,0057,0137,0037,0036,0047,0044,0017,0246,0315,0320, \
+0266,0303,0216,0030,0244,0027,0273,0213,0204,0025,0142,0045,0266,0073,0257,0075, \
+0261,0246,0305,0113,0315,0355,0361,0124,0305,0042,0103,0301,0370,0160,0010,0335, \
+0253,0264,0161,0051,0373,0377,0175,0264,0101,0224,0212,0277,0201,0043,0032,0361, \
+0034,0305,0020,0344,0202,0201,0102,0014,0070,0300,0277,0207,0070,0315,0305,0205, \
+0024,0063,0072,0370,0150,0202,0026,0326,0370,0171,0176,0254,0253,0360,0006,0247, \
+0266,0035,0160,0373,0153,0140,0370,0054,0155,0357,0357,0244,0136,0074,0205,0274, \
+0202,0101,0150,0214,0272,0311,0054,0132,0304,0170,0033,0011,0120,0117,0165,0135, \
+0142,0105,0105,0373,0260,0347,0073,0075,0045,0216,0114,0110,0325,0002,0364,0134, \
+0236,0032,0165,0043,0027,0141,0115,0002,0327,0113,0112,0322,0003,0122,0046,0043, \
+0231,0230,0335,0204,0071,0314,0103,0005,0312,0330,0311,0160,0231,0337,0206,0213, \
+0223,0046,0162,0256,0063,0243,0110,0254,0142,0274,0327,0167,0306,0170,0375,0347, \
+0162,0074,0075,0112,0316,0003,0335,0100,0304,0331,0250,0176,0044,0162,0150,0257, \
+0073,0310,0356,0063,0357,0107,0225,0174,0334,0057,0167,0026,0342,0176,0105,0054, \
+0100,0156,0167,0152,0357,0072,0342,0104,0110,0372,0161,0024,0006,0363,0172,0170, \
+0307,0106,0033,0362,0120,0363,0152,0075,0012,0161,0325,0123,0241,0030,0104,0024, \
+0035,0160,0044,0215,0247,0254,0250,0144,0131,0312,0275,0060,0242,0002,0172,0002, \
+0263,0074,0031,0273,0242,0013,0017,0353,0367,0064,0271,0347,0315,0364,0345,0034, \
+0150,0251,0253,0270,0236,0161,0102,0030,0321,0106,0312,0302,0207,0303,0017,0046, \
+0170,0116,0121,0054,0223,0271,0306,0117,0374,0275,0111,0245,0350,0336,0041,0264, \
+0030,0326,0311,0202,0274,0155,0005,0306,0232,0172,0125,0263,0042,0015,0364,0015, \
+0142,0067,0102,0236,0235,0062,0174,0341,0030,0220,0116,0211,0345,0236,0102,0014, \
+0137,0131,0016,0220,0337,0153,0033,0215,0361,0227,0317,0356,0146,0150,0341,0144, \
+0367,0024,0150,0247,0055,0027,0000,0241,0011,0246,0113,0234,0162,0142,0063,0330, \
+0011,0215,0170,0362,0176,0330,0247,0231,0166,0122,0012,0016,0031,0342,0343,0130, \
+0322,0265,0252,0317,0170,0327,0257,0224,0201,0100,0160,0270,0204,0155,0275,0336, \
+0321,0365,0163,0045,0055,0245,0155,0335,0152,0155,0246,0101,0302,0301,0210,0177, \
+0162,0034,0212,0375,0176,0134,0175,0022,0251,0100,0175,0276,0060,0143,0372,0044, \
+0204,0202,0367,0222,0101,0222,0072,0250,0311,0360,0116,0156,0175,0035,0172,0356, \
+0172,0117,0050,0314,0054,0035,0110,0336,0155,0166,0216,0050,0270,0020,0304,0301, \
+0130,0025,0200,0040,0110,0222,0356,0312,0255,0042,0133,0244,0370,0156,0307,0075, \
+0132,0254,0060,0050,0212,0103,0037,0372,0120,0127,0317,0215,0026,0300,0043,0044, \
+0212,0165,0144,0250,0101,0144,0012,0065,0040,0050,0110,0246,0066,0167,0177,0046, \
+0070,0163,0065,0010,0151,0041,0002,0047,0302,0073,0356,0216,0106,0245,0046,0115, \
+0060,0131,0172,0323,0041,0172,0257,0074,0122,0371,0274,0135,0272,0017,0023,0355, \
+0352,0056,0150,0272,0277,0156,0315,0074,0275,0102,0326,0207,0244,0217,0360,0054, \
+0345,0262,0073,0123,0373,0224,0360,0060,0326,0115,0323,0370,0062,0015,0301,0022, \
+0143,0314,0336,0150,0345,0356,0021,0157,0216,0035,0206,0250,0316,0024,0051,0042, \
+0115,0025,0147,0010,0005,0023,0332,0132,0116,0242,0254,0266,0226,0057,0024,0217, \
+0144,0122,0363,0071,0042,0227,0045,0320,0310,0220,0046,0371,0372,0210,0075,0011, \
+0045,0054,0352,0366,0353,0105,0330,0023,0111,0207,0120,0226,0040,0206,0115,0320, \
+0110,0214,0257,0367,0045,0350,0307,0152,0100,0116,0161,0327,0313,0176,0056,0040, \
+0367,0220,0000,0310,0210,0175,0010,0370,0162,0117,0362,0340,0017,0270,0044,0206, \
+0276,0040,0141,0376,0264,0213,0352,0136,0312,0074,0171,0273,0160,0014,0073,0242, \
+0204,0277,0212,0140,0313,0013,0305,0300,0377,0112,0200,0214,0245,0346,0043,0116, \
+0316,0072,0266,0170,0172,0172,0067,0236,0045,0133,0027,0145,0046,0025,0035,0202, \
+0134,0006,0061,0335,0322,0257,0241,0311,0023,0244,0045,0006,0005,0243,0172,0306, \
+0370,0065,0011,0233,0103,0224,0074,0143,0014,0103,0106,0367,0211,0055,0244,0320, \
+0022,0017,0363,0135,0021,0371,0164,0163,0126,0347,0215,0125,0123,0241,0113,0164, \
+0242,0143,0065,0343,0022,0203,0163,0216,0125,0051,0124,0313,0370,0241,0065,0040, \
+0054,0036,0256,0376,0316,0330,0363,0152,0031,0150,0070,0040,0314,0353,0300,0073, \
+0135,0027,0074,0342,0201,0236,0036,0061,0130,0370,0015,0137,0316,0074,0072,0105, \
+0041,0264,0214,0276,0340,0070,0243,0241,0365,0351,0156,0352,0343,0025,0340,0352, \
+0032,0225,0371,0115,0142,0353,0225,0365,0165,0143,0142,0150,0044,0227,0213,0267, \
+0121,0021,0004,0015,0300,0033,0124,0244,0021,0373,0207,0225,0046,0155,0305,0253, \
+0012,0330,0333,0014,0010,0050,0246,0027,0024,0261,0302,0027,0027,0011,0050,0110, \
+0121,0220,0076,0037,0264,0173,0037,0351,0167,0325,0374,0276,0130,0226,0133,0031, \
+0221,0302,0012,0071,0150,0151,0360,0211,0225,0366,0304,0116,0056,0122,0012,0270, \
+0330,0270,0243,0054,0202,0240,0342,0312,0126,0121,0120,0210,0061,0264,0375,0177, \
+0367,0262,0307,0356,0315,0064,0141,0266,0056,0073,0313,0121,0110,0070,0241,0140, \
+0202,0252,0230,0262,0212,0242,0254,0127,0157,0013,0003,0020,0206,0203,0132,0157, \
+0150,0230,0201,0315,0320,0146,0041,0021,0031,0123,0227,0317,0364,0175,0142,0375, \
+0337,0277,0171,0000,0332,0047,0022,0255,0024,0020,0047,0010,0226,0022,0060,0127, \
+0003,0007,0231,0114,0006,0157,0345,0304,0374,0132,0323,0044,0027,0271,0256,0007, \
+0072,0162,0322,0216,0166,0030,0001,0251,0202,0303,0153,0050,0261,0305,0265,0015, \
+0167,0277,0251,0066,0124,0357,0277,0357,0336,0114,0256,0356,0141,0211,0037,0327, \
+0102,0145,0310,0260,0031,0123,0134,0127,0277,0134,0046,0012,0212,0221,0030,0103, \
+0104,0251,0106,0062,0303,0364,0346,0346,0235,0332,0147,0016,0110,0050,0061,0121, \
+0021,0361,0173,0064,0317,0233,0253,0334,0200,0031,0115,0127,0242,0120,0125,0005, \
+0141,0213,0246,0056,0326,0300,0314,0265,0137,0275,0050,0256,0017,0063,0005,0307, \
+0176,0334,0016,0057,0314,0070,0347,0016,0361,0055,0131,0206,0004,0014,0151,0246, \
+0311,0306,0124,0252,0252,0311,0162,0222,0047,0246,0067,0122,0022,0013,0025,0210, \
+0014,0106,0300,0335,0122,0025,0063,0103,0157,0015,0164,0111,0313,0114,0033,0060, \
+0222,0233,0036,0254,0103,0000,0214,0137,0236,0320,0307,0351,0246,0114,0102,0042, \
+0042,0250,0272,0224,0351,0203,0060,0173,0171,0335,0040,0032,0266,0041,0150,0151, \
+0207,0261,0226,0102,0161,0162,0307,0106,0114,0307,0004,0017,0066,0026,0145,0255, \
+0222,0221,0327,0110,0244,0304,0060,0146,0021,0335,0363,0343,0345,0164,0375,0323, \
+0030,0113,0176,0174,0243,0067,0314,0075,0303,0074,0230,0042,0001,0156,0046,0376, \
+0336,0246,0057,0366,0302,0265,0100,0152,0074,0352,0150,0340,0075,0025,0110,0277, \
+0012,0133,0104,0267,0313,0327,0216,0367,0101,0321,0235,0342,0173,0061,0324,0306, \
+0120,0201,0037,0353,0223,0365,0014,0017,0360,0141,0052,0050,0021,0267,0355,0305, \
+0136,0250,0160,0277,0007,0054,0033,0155,0263,0340,0320,0172,0073,0353,0005,0255, \
+0375,0173,0363,0355,0032,0133,0323,0073,0364,0374,0034,0243,0117,0223,0046,0214, \
+0176,0061,0201,0032,0203,0211,0037,0130,0000,0066,0215,0200,0037,0126,0006,0363, \
+0375,0225,0043,0253,0323,0345,0371,0343,0107,0164,0075,0103,0025,0043,0107,0227, \
+0317,0066,0076,0125,0240,0066,0344,0032,0061,0054,0307,0040,0236,0076,0113,0323, \
+0000,0060,0173,0233,0336,0113,0140,0006,0361,0262,0014,0363,0006,0230,0355,0174, \
+0117,0015,0227,0322,0103,0236,0230,0012,0003,0346,0333,0106,0151,0164,0212,0221, \
+0243,0270,0037,0220,0020,0160,0062,0261,0077,0224,0076,0153,0044,0003,0043,0122, \
+0003,0201,0003,0363,0250,0123,0375,0357,0330,0305,0370,0227,0207,0277,0131,0320, \
+0365,0352,0146,0061,0172,0130,0244,0207,0007,0321,0263,0344,0253,0366,0125,0154, \
+0276,0227,0224,0376,0374,0214,0254,0063,0316,0017,0352,0312,0067,0375,0014,0231, \
+0073,0322,0352,0276,0124,0376,0220,0264,0147,0377,0237,0123,0106,0014,0056,0146, \
+0044,0301,0265,0152,0161,0213,0116,0347,0042,0071,0244,0054,0021,0301,0135,0374, \
+0116,0322,0356,0112,0354,0325,0313,0366,0047,0361,0142,0211,0042,0254,0101,0102, \
+0354,0040,0055,0004,0056,0136,0046,0042,0240,0304,0042,0230,0051,0242,0275,0001, \
+0255,0016,0260,0037,0145,0166,0116,0245,0041,0250,0173,0321,0344,0262,0031,0020, \
+0336,0260,0251,0053,0270,0144,0372,0177,0112,0336,0324,0363,0344,0310,0336,0171, \
+0153,0331,0304,0154,0274,0253,0173,0004,0312,0371,0116,0015,0066,0337,0265,0234, \
+0153,0357,0105,0302,0020,0063,0040,0101,0352,0325,0107,0354,0374,0337,0135,0106, \
+0232,0320,0134,0215,0321,0231,0202,0101,0055,0166,0154,0011,0035,0244,0047,0366, \
+0144,0002,0237,0131,0373,0002,0117,0077,0141,0347,0056,0004,0262,0310,0110,0351, \
+0111,0343,0033,0210,0035,0100,0215,0032,0226,0145,0321,0057,0177,0164,0270,0316, \
+0150,0373,0021,0347,0317,0357,0144,0176,0102,0223,0315,0065,0105,0337,0130,0361, \
+0171,0172,0264,0255,0274,0035,0360,0360,0105,0016,0104,0137,0351,0010,0144,0324, \
+0127,0223,0337,0127,0346,0073,0151,0023,0123,0022,0146,0224,0114,0103,0221,0172, \
+0377,0217,0347,0212,0207,0070,0233,0323,0355,0326,0006,0033,0075,0124,0030,0373, \
+0053,0064,0031,0031,0004,0202,0305,0207,0137,0302,0317,0017,0050,0036,0320,0101, \
+0371,0234,0366,0362,0264,0132,0055,0373,0375,0177,0057,0271,0227,0220,0007,0304, \
+0214,0164,0200,0372,0220,0214,0137,0271,0012,0230,0021,0164,0300,0370,0275,0315, \
+0237,0256,0304,0264,0213,0254,0205,0327,0172,0317,0257,0323,0017,0007,0226,0362, \
+0143,0014,0352,0026,0272,0343,0266,0120,0233,0114,0221,0152,0260,0266,0107,0332, \
+0110,0144,0150,0012,0030,0333,0000,0224,0304,0110,0066,0066,0312,0246,0130,0376, \
+0032,0107,0315,0057,0136,0102,0062,0070,0220,0152,0114,0207,0340,0377,0324,0111, \
+0250,0230,0202,0303,0317,0154,0225,0070,0334,0271,0376,0276,0276,0047,0373,0232, \
+0006,0325,0032,0101,0016,0077,0243,0017,0253,0347,0373,0052,0220,0364,0057,0221, \
+0320,0224,0165,0213,0336,0331,0146,0313,0000,0053,0070,0307,0370,0245,0162,0065, \
+0023,0342,0371,0353,0124,0065,0230,0047,0020,0210,0153,0276,0021,0273,0302,0062, \
+0257,0135,0037,0373,0170,0326,0276,0256,0047,0023,0315,0264,0035,0254,0041,0102, \
+0034,0100,0066,0300,0153,0342,0364,0014,0010,0343,0221,0234,0144,0010,0065,0000, \
+0020,0140,0171,0371,0376,0221,0160,0024,0340,0037,0017,0121,0221,0071,0132,0223, \
+0250,0335,0103,0007,0124,0042,0032,0141,0104,0156,0047,0054,0113,0266,0157,0117, \
+0137,0072,0320,0201,0005,0332,0225,0030,0240,0210,0212,0214,0030,0301,0042,0054, \
+0131,0020,0104,0147,0372,0357,0353,0277,0212,0047,0265,0302,0207,0146,0165,0064, \
+0174,0351,0133,0106,0364,0374,0255,0275,0310,0375,0121,0111,0010,0332,0027,0377, \
+0075,0310,0237,0145,0274,0303,0317,0173,0244,0211,0337,0017,0024,0132,0066,0007, \
+0275,0050,0102,0035,0054,0054,0266,0361,0064,0240,0120,0107,0133,0105,0030,0241, \
+0242,0314,0131,0246,0257,0147,0271,0152,0204,0147,0126,0067,0103,0001,0142,0035, \
+0056,0133,0257,0204,0236,0351,0352,0363,0017,0151,0354,0012,0117,0154,0043,0041, \
+0263,0210,0303,0012,0212,0042,0302,0021,0222,0106,0050,0222,0046,0041,0302,0007, \
+0325,0145,0205,0123,0247,0111,0247,0302,0173,0272,0212,0024,0252,0020,0367,0034, \
+0055,0371,0313,0243,0271,0035,0304,0130,0124,0206,0003,0244,0031,0211,0040,0162, \
+0042,0162,0002,0220,0101,0206,0202,0026,0115,0244,0143,0035,0212,0114,0104,0175, \
+0053,0273,0004,0016,0225,0042,0104,0113,0010,0206,0122,0120,0342,0360,0113,0311, \
+0316,0011,0307,0112,0140,0141,0224,0246,0051,0206,0162,0111,0123,0043,0113,0102, \
+0137,0036,0363,0374,0357,0314,0025,0172,0010,0113,0377,0143,0017,0044,0024,0204, \
+0107,0304,0225,0013,0026,0030,0123,0343,0202,0230,0024,0321,0155,0112,0336,0054, \
+0155,0055,0201,0273,0111,0015,0164,0273,0150,0140,0261,0354,0225,0016,0051,0312, \
+0126,0241,0051,0043,0133,0070,0050,0212,0265,0106,0255,0105,0113,0222,0106,0313, \
+0203,0223,0314,0326,0341,0135,0070,0043,0105,0244,0027,0002,0240,0304,0213,0130, \
+0371,0334,0032,0007,0244,0072,0343,0266,0175,0023,0313,0216,0131,0255,0314,0066, \
+0151,0004,0246,0107,0341,0012,0243,0135,0114,0045,0334,0022,0107,0144,0027,0223, \
+0367,0314,0141,0174,0010,0015,0161,0203,0223,0020,0126,0260,0242,0125,0355,0361, \
+0250,0167,0237,0001,0147,0152,0356,0007,0006,0023,0046,0140,0052,0337,0237,0264, \
+0370,0366,0322,0176,0006,0240,0050,0124,0016,0234,0230,0103,0354,0255,0363,0244, \
+0326,0124,0155,0076,0374,0220,0360,0305,0323,0020,0244,0111,0323,0062,0250,0007, \
+0213,0371,0255,0216,0205,0074,0123,0126,0100,0302,0111,0356,0156,0061,0217,0026, \
+0120,0356,0172,0270,0321,0157,0034,0115,0031,0154,0066,0026,0111,0053,0230,0202, \
+0257,0321,0000,0113,0005,0057,0225,0336,0043,0174,0150,0175,0303,0321,0207,0003, \
+0113,0221,0063,0164,0056,0223,0104,0127,0251,0162,0053,0331,0011,0103,0330,0330, \
+0366,0014,0022,0203,0204,0103,0051,0235,0035,0171,0215,0250,0211,0213,0041,0101, \
+0225,0236,0157,0054,0323,0077,0350,0230,0303,0337,0162,0140,0102,0054,0200,0243, \
+0246,0347,0224,0003,0331,0244,0356,0013,0267,0273,0143,0154,0026,0065,0031,0342, \
+0233,0111,0070,0006,0107,0100,0211,0045,0233,0164,0140,0101,0363,0325,0035,0055, \
+0066,0223,0103,0116,0234,0203,0210,0262,0067,0114,0333,0337,0025,0016,0020,0221, \
+0165,0025,0357,0075,0126,0041,0240,0063,0171,0076,0215,0024,0141,0347,0200,0156, \
+0274,0367,0155,0174,0152,0031,0026,0037,0112,0243,0367,0015,0030,0304,0027,0110, \
+0007,0353,0045,0014,0076,0376,0306,0370,0214,0314,0017,0240,0365,0330,0120,0277, \
+0266,0022,0345,0340,0200,0102,0366,0155,0005,0166,0175,0316,0027,0117,0110,0074, \
+0222,0013,0067,0117,0357,0122,0002,0342,0303,0357,0276,0125,0367,0215,0231,0241, \
+0264,0230,0040,0161,0007,0013,0316,0237,0144,0174,0154,0170,0115,0270,0240,0133, \
+0223,0102,0256,0240,0345,0277,0277,0166,0230,0020,0036,0255,0046,0023,0255,0202, \
+0373,0156,0240,0205,0147,0161,0201,0310,0377,0233,0061,0313,0245,0237,0232,0143, \
+0333,0013,0222,0050,0013,0234,0215,0046,0201,0334,0157,0014,0164,0146,0023,0316, \
+0365,0066,0003,0147,0146,0350,0155,0111,0132,0261,0312,0012,0035,0326,0165,0254, \
+0127,0226,0272,0040,0356,0105,0352,0005,0342,0011,0134,0304,0206,0324,0221,0015, \
+0021,0164,0104,0036,0077,0025,0315,0130,0235,0145,0032,0021,0025,0272,0003,0174, \
+0121,0207,0324,0174,0376,0105,0200,0250,0143,0223,0056,0141,0116,0212,0202,0200, \
+0356,0316,0250,0271,0025,0161,0300,0217,0177,0037,0256,0253,0117,0063,0014,0070, \
+0247,0242,0101,0105,0202,0250,0177,0215,0242,0044,0077,0247,0303,0204,0341,0117, \
+0137,0360,0236,0311,0217,0253,0302,0011,0237,0050,0237,0234,0121,0034,0324,0300, \
+0170,0174,0146,0224,0054,0014,0351,0364,0245,0005,0360,0154,0352,0006,0323,0001, \
+0203,0134,0356,0032,0175,0066,0131,0376,0076,0050,0230,0142,0077,0166,0310,0114, \
+0300,0203,0307,0317,0063,0262,0250,0331,0137,0142,0271,0117,0316,0067,0072,0166, \
+0373,0247,0270,0210,0300,0065,0376,0312,0030,0023,0310,0327,0272,0076,0012,0033, \
+0105,0276,0105,0017,0027,0016,0043,0206,0127,0305,0212,0032,0026,0340,0106,0153, \
+0325,0300,0040,0354,0223,0361,0132,0006,0210,0306,0103,0224,0322,0234,0022,0277, \
+0125,0341,0075,0162,0327,0143,0246,0077,0051,0305,0336,0236,0251,0137,0125,0057, \
+0235,0346,0034,0106,0144,0020,0276,0202,0112,0156,0251,0062,0322,0014,0023,0113, \
+0374,0144,0040,0116,0350,0125,0075,0305,0034,0002,0007,0323,0161,0130,0033,0152, \
+0234,0071,0212,0246,0047,0245,0351,0153,0331,0015,0361,0174,0271,0371,0211,0127, \
+0372,0274,0347,0143,0050,0356,0271,0066,0162,0241,0320,0041,0260,0272,0320,0177, \
+0323,0164,0064,0164,0150,0166,0172,0375,0047,0345,0343,0317,0303,0063,0326,0103, \
+0005,0027,0206,0330,0060,0042,0153,0251,0266,0055,0312,0067,0060,0175,0374,0317, \
+0037,0112,0154,0007,0031,0101,0204,0040,0201,0224,0300,0300,0277,0171,0223,0327, \
+0237,0000,0016,0044,0127,0125,0246,0060,0327,0353,0046,0127,0162,0127,0300,0026, \
+0006,0325,0142,0020,0353,0342,0111,0115,0274,0350,0026,0354,0067,0033,0245,0251, \
+0012,0006,0365,0324,0147,0014,0317,0145,0231,0162,0010,0372,0171,0100,0356,0210, \
+0150,0135,0176,0376,0230,0024,0147,0071,0154,0247,0240,0334,0134,0250,0114,0025, \
+0013,0135,0156,0021,0175,0212,0024,0173,0242,0115,0375,0270,0034,0334,0165,0115, \
+0266,0221,0240,0327,0324,0073,0215,0175,0253,0221,0104,0173,0011,0104,0045,0321, \
+0204,0167,0105,0251,0133,0323,0166,0333,0123,0352,0222,0322,0213,0247,0356,0241, \
+0260,0263,0230,0032,0211,0240,0215,0102,0043,0327,0231,0132,0227,0153,0067,0020, \
+0020,0254,0035,0343,0312,0147,0107,0125,0334,0072,0116,0073,0036,0210,0232,0045, \
+0011,0043,0306,0062,0260,0121,0144,0104,0104,0021,0001,0104,0212,0252,0002,0101, \
+0166,0057,0055,0011,0121,0002,0134,0241,0355,0172,0363,0061,0022,0230,0227,0264, \
+0307,0303,0122,0314,0161,0051,0134,0113,0041,0243,0045,0251,0165,0124,0322,0314, \
+0141,0276,0053,0203,0372,0030,0363,0012,0233,0005,0200,0076,0313,0320,0147,0326, \
+0256,0015,0357,0227,0206,0056,0115,0113,0002,0151,0145,0046,0303,0203,0020,0007, \
+0222,0003,0055,0340,0213,0326,0144,0351,0200,0141,0050,0204,0131,0241,0131,0040, \
+0076,0221,0356,0106,0045,0321,0164,0332,0010,0244,0352,0235,0022,0243,0101,0174, \
+0245,0010,0072,0134,0151,0246,0053,0063,0174,0053,0212,0341,0117,0361,0322,0342, \
+0352,0044,0327,0324,0036,0110,0050,0040,0220,0125,0021,0042,0052,0012,0063,0210, \
+0062,0254,0300,0205,0221,0217,0236,0074,0256,0346,0030,0053,0067,0043,0225,0074, \
+0273,0033,0312,0233,0240,0147,0374,0206,0274,0010,0031,0106,0034,0124,0144,0243, \
+0252,0242,0052,0343,0365,0074,0151,0137,0056,0035,0207,0161,0323,0207,0213,0172, \
+0276,0170,0274,0323,0254,0211,0336,0135,0305,0117,0176,0243,0312,0224,0051,0155, \
+0040,0166,0100,0363,0157,0012,0372,0004,0360,0363,0311,0304,0142,0017,0201,0357, \
+0101,0102,0324,0234,0137,0053,0172,0350,0060,0232,0030,0240,0167,0365,0340,0377, \
+0035,0103,0006,0223,0152,0124,0344,0302,0323,0027,0350,0063,0016,0034,0221,0176, \
+0035,0051,0204,0303,0101,0261,0157,0333,0266,0377,0236,0232,0237,0351,0277,0003, \
+0370,0306,0205,0123,0154,0361,0312,0024,0050,0161,0262,0102,0032,0026,0273,0374, \
+0033,0217,0207,0145,0204,0340,0167,0135,0361,0304,0023,0035,0360,0076,0143,0073, \
+0032,0212,0202,0124,0002,0241,0077,0352,0310,0124,0130,0050,0105,0014,0014,0012, \
+0310,0244,0376,0111,0053,0026,0043,0202,0244,0040,0132,0136,0266,0070,0371,0364, \
+0311,0373,0373,0127,0141,0222,0310,0173,0060,0240,0206,0367,0270,0222,0220,0102, \
+0133,0267,0021,0150,0065,0060,0311,0354,0040,0346,0275,0306,0164,0256,0034,0227, \
+0153,0340,0026,0201,0062,0230,0345,0025,0240,0003,0041,0157,0217,0000,0110,0333, \
+0110,0065,0314,0104,0204,0234,0037,0106,0323,0034,0364,0250,0164,0010,0040,0350, \
+0101,0200,0160,0066,0034,0334,0315,0267,0107,0146,0105,0350,0131,0340,0110,0156, \
+0315,0215,0200,0020,0110,0037,0035,0250,0316,0363,0272,0157,0102,0236,0106,0164, \
+0276,0147,0155,0022,0106,0126,0217,0121,0053,0061,0006,0342,0247,0026,0147,0150, \
+0351,0366,0307,0054,0144,0072,0262,0351,0133,0120,0323,0165,0135,0024,0064,0250, \
+0151,0163,0266,0321,0142,0061,0303,0010,0003,0016,0337,0361,0220,0277,0263,0046, \
+0062,0032,0233,0266,0221,0347,0207,0375,0241,0144,0036,0273,0151,0212,0354,0006, \
+0245,0124,0352,0110,0040,0017,0243,0264,0205,0277,0344,0265,0046,0312,0041,0326, \
+0065,0073,0155,0252,0304,0220,0250,0245,0073,0264,0075,0204,0064,0117,0355,0372, \
+0375,0106,0367,0203,0251,0134,0232,0211,0016,0022,0017,0321,0226,0022,0061,0030, \
+0106,0047,0132,0272,0151,0174,0366,0263,0103,0151,0142,0344,0134,0006,0003,0042, \
+0011,0374,0155,0130,0242,0204,0367,0315,0357,0057,0206,0057,0320,0160,0104,0003, \
+0011,0313,0142,0143,0361,0377,0136,0373,0026,0347,0373,0375,0146,0134,0120,0143, \
+0346,0133,0314,0013,0340,0175,0350,0057,0015,0171,0277,0077,0376,0304,0160,0270, \
+0054,0033,0061,0337,0250,0056,0275,0071,0234,0260,0161,0331,0345,0211,0243,0076, \
+0341,0021,0130,0054,0143,0101,0243,0042,0305,0140,0300,0250,0153,0046,0045,0110, \
+0061,0121,0025,0221,0124,0004,0100,0130,0305,0117,0357,0145,0213,0046,0214,0261, \
+0125,0026,0013,0004,0120,0142,0050,0242,0214,0025,0101,0101,0210,0050,0240,0146, \
+0312,0052,0042,0261,0223,0101,0254,0313,0131,0006,0057,0220,0061,0241,0105,0315, \
+0374,0137,0247,0363,0355,0307,0231,0251,0257,0216,0261,0356,0372,0364,0044,0344, \
+0212,0103,0351,0144,0224,0102,0040,0222,0054,0130,0177,0173,0122,0007,0143,0102, \
+0054,0026,0021,0200,0165,0176,0367,0301,0317,0272,0302,0367,0332,0353,0261,0112, \
+0305,0072,0143,0006,0027,0373,0077,0035,0236,0231,0242,0355,0231,0051,0207,0374, \
+0055,0022,0047,0210,0320,0103,0307,0236,0061,0376,0330,0041,0115,0345,0350,0317, \
+0207,0263,0377,0137,0077,0356,0274,0150,0255,0002,0254,0175,0311,0020,0347,0041, \
+0343,0025,0063,0071,0246,0314,0006,0152,0306,0152,0265,0101,0054,0140,0076,0111, \
+0216,0146,0126,0217,0213,0254,0231,0303,0007,0032,0176,0123,0243,0365,0067,0021, \
+0233,0221,0115,0112,0267,0365,0117,0076,0120,0334,0317,0351,0255,0355,0166,0242, \
+0144,0151,0003,0255,0267,0176,0064,0014,0104,0377,0157,0102,0005,0153,0037,0177, \
+0307,0274,0041,0321,0370,0067,0202,0107,0202,0155,0114,0012,0267,0164,0370,0053, \
+0051,0112,0130,0211,0037,0273,0335,0143,0342,0142,0224,0100,0367,0141,0206,0041, \
+0103,0217,0063,0250,0171,0034,0311,0154,0335,0311,0220,0225,0312,0375,0352,0023, \
+0153,0370,0106,0242,0360,0267,0314,0245,0167,0217,0036,0244,0170,0115,0225,0362, \
+0147,0134,0044,0304,0121,0300,0243,0367,0302,0340,0356,0314,0070,0207,0114,0014, \
+0276,0027,0307,0101,0053,0131,0304,0212,0157,0312,0301,0336,0300,0065,0222,0075, \
+0013,0201,0073,0354,0132,0051,0331,0050,0252,0215,0362,0043,0046,0055,0057,0347, \
+0340,0366,0047,0353,0175,0264,0172,0365,0334,0270,0352,0144,0163,0363,0144,0023, \
+0265,0320,0341,0015,0221,0334,0231,0270,0140,0176,0050,0275,0172,0145,0055,0067, \
+0341,0127,0134,0206,0247,0162,0020,0013,0221,0025,0273,0122,0075,0217,0215,0221, \
+0044,0127,0212,0055,0301,0023,0036,0206,0067,0212,0114,0141,0100,0045,0371,0077, \
+0266,0146,0307,0134,0035,0046,0363,0314,0335,0367,0050,0063,0251,0171,0325,0336, \
+0161,0011,0315,0113,0301,0045,0065,0376,0011,0103,0046,0201,0247,0264,0222,0375, \
+0036,0354,0167,0152,0142,0214,0017,0074,0023,0142,0113,0350,0230,0015,0373,0363, \
+0372,0351,0336,0300,0273,0174,0027,0104,0042,0130,0164,0013,0001,0244,0227,0206, \
+0067,0141,0351,0263,0342,0142,0275,0166,0047,0010,0244,0127,0344,0232,0202,0042, \
+0044,0201,0116,0370,0261,0240,0052,0266,0337,0070,0343,0271,0055,0202,0173,0137, \
+0336,0370,0252,0306,0310,0036,0101,0277,0300,0076,0141,0361,0241,0352,0006,0000, \
+0371,0275,0216,0143,0323,0306,0043,0332,0353,0222,0213,0051,0140,0132,0127,0052, \
+0306,0016,0160,0265,0007,0275,0355,0153,0100,0140,0133,0110,0270,0215,0005,0136, \
+0035,0330,0127,0173,0024,0135,0101,0051,0117,0234,0276,0177,0307,0103,0332,0036, \
+0212,0300,0051,0275,0373,0275,0162,0226,0207,0332,0270,0064,0300,0054,0222,0241, \
+0033,0104,0022,0320,0100,0341,0222,0142,0364,0147,0366,0265,0111,0375,0030,0175, \
+0255,0377,0043,0205,0220,0132,0270,0145,0324,0327,0225,0215,0373,0140,0042,0171, \
+0022,0353,0005,0002,0263,0076,0257,0175,0251,0112,0003,0062,0001,0200,0316,0223, \
+0052,0032,0320,0134,0347,0162,0073,0254,0176,0234,0141,0017,0134,0017,0152,0034, \
+0222,0175,0257,0247,0354,0316,0366,0355,0017,0343,0161,0014,0207,0044,0120,0006, \
+0036,0333,0117,0330,0034,0075,0300,0304,0115,0177,0055,0230,0100,0212,0121,0220, \
+0337,0032,0373,0225,0201,0110,0101,0377,0042,0221,0030,0132,0341,0006,0065,0073, \
+0074,0140,0240,0272,0317,0114,0225,0147,0200,0300,0376,0374,0320,0227,0016,0112, \
+0275,0232,0036,0346,0013,0032,0052,0236,0024,0304,0274,0305,0223,0367,0171,0123, \
+0356,0021,0335,0367,0041,0132,0241,0166,0122,0153,0366,0056,0147,0311,0026,0317, \
+0077,0354,0306,0306,0312,0234,0372,0273,0324,0372,0141,0103,0060,0216,0036,0163, \
+0252,0221,0153,0350,0301,0330,0263,0056,0206,0332,0261,0167,0251,0002,0356,0154, \
+0075,0333,0136,0225,0300,0070,0102,0234,0136,0362,0130,0307,0162,0035,0240,0036, \
+0152,0000,0002,0330,0245,0222,0217,0206,0226,0373,0235,0164,0321,0220,0137,0122, \
+0346,0254,0176,0163,0055,0071,0247,0256,0040,0167,0365,0070,0110,0234,0220,0116, \
+0341,0215,0043,0363,0105,0154,0224,0212,0224,0111,0322,0166,0350,0322,0173,0345, \
+0301,0115,0072,0272,0320,0250,0304,0262,0371,0340,0230,0146,0211,0221,0357,0227, \
+0067,0323,0323,0114,0044,0237,0300,0117,0133,0205,0010,0305,0022,0157,0265,0306, \
+0020,0172,0355,0002,0273,0242,0301,0307,0061,0054,0274,0005,0362,0127,0333,0044, \
+0167,0352,0115,0365,0206,0330,0250,0252,0365,0010,0231,0006,0156,0365,0155,0203, \
+0333,0331,0212,0113,0200,0173,0132,0052,0027,0254,0062,0154,0266,0076,0330,0237, \
+0070,0342,0360,0013,0357,0152,0032,0104,0070,0121,0052,0005,0046,0300,0142,0063, \
+0044,0215,0063,0336,0123,0315,0030,0036,0130,0254,0111,0242,0260,0374,0015,0104, \
+0074,0376,0036,0071,0347,0216,0204,0233,0240,0241,0074,0273,0373,0031,0366,0076, \
+0165,0276,0205,0060,0235,0347,0020,0336,0372,0116,0313,0331,0230,0144,0310,0145, \
+0343,0116,0054,0251,0176,0046,0341,0262,0060,0320,0247,0112,0326,0215,0032,0234, \
+0127,0311,0032,0143,0007,0245,0316,0224,0122,0065,0211,0317,0156,0314,0235,0060, \
+0332,0130,0147,0120,0210,0040,0024,0127,0221,0231,0022,0220,0271,0357,0006,0247, \
+0017,0161,0234,0122,0131,0027,0010,0135,0105,0340,0143,0120,0006,0001,0034,0366, \
+0274,0366,0365,0001,0371,0250,0111,0104,0352,0330,0032,0250,0304,0206,0321,0337, \
+0165,0100,0075,0034,0121,0106,0343,0240,0345,0222,0232,0026,0314,0261,0103,0171, \
+0314,0242,0143,0203,0177,0335,0023,0325,0033,0070,0020,0360,0232,0027,0273,0266, \
+0234,0231,0361,0044,0201,0172,0367,0242,0024,0110,0243,0344,0343,0113,0003,0313, \
+0210,0166,0301,0374,0011,0337,0065,0265,0102,0247,0154,0167,0333,0273,0077,0157, \
+0013,0154,0271,0255,0330,0030,0251,0317,0374,0050,0371,0254,0244,0360,0174,0177, \
+0005,0202,0152,0212,0232,0023,0170,0215,0117,0266,0266,0045,0235,0372,0166,0102, \
+0102,0221,0370,0340,0132,0225,0202,0264,0112,0300,0015,0303,0355,0274,0053,0255, \
+0273,0100,0122,0171,0312,0126,0354,0354,0252,0356,0146,0313,0013,0147,0136,0262, \
+0075,0364,0343,0100,0347,0014,0017,0312,0026,0046,0255,0174,0330,0156,0003,0040, \
+0033,0237,0311,0225,0004,0070,0174,0254,0234,0330,0117,0037,0072,0153,0075,0134, \
+0257,0311,0201,0334,0231,0264,0242,0116,0324,0045,0234,0251,0267,0113,0352,0036, \
+0011,0060,0225,0242,0074,0323,0203,0216,0074,0143,0273,0272,0352,0013,0147,0126, \
+0316,0361,0336,0214,0164,0204,0145,0364,0353,0225,0206,0333,0007,0004,0171,0265, \
+0001,0217,0235,0200,0223,0264,0116,0375,0167,0031,0312,0332,0132,0057,0237,0106, \
+0037,0317,0102,0216,0172,0315,0060,0236,0371,0050,0354,0224,0103,0001,0133,0056, \
+0032,0340,0106,0106,0323,0023,0030,0007,0000,0370,0303,0364,0176,0113,0326,0151, \
+0251,0215,0064,0351,0241,0271,0275,0012,0332,0327,0216,0220,0101,0144,0101,0007, \
+0153,0002,0260,0342,0103,0304,0232,0020,0126,0046,0253,0157,0021,0224,0337,0024, \
+0052,0145,0104,0062,0057,0002,0101,0102,0015,0071,0016,0256,0020,0241,0306,0033, \
+0002,0160,0004,0222,0353,0161,0252,0051,0140,0326,0120,0266,0262,0044,0267,0177, \
+0125,0060,0310,0060,0140,0012,0231,0222,0063,0206,0030,0175,0047,0157,0016,0260, \
+0107,0246,0223,0033,0312,0124,0211,0103,0216,0346,0232,0023,0072,0131,0003,0271, \
+0220,0304,0026,0103,0250,0042,0022,0077,0212,0213,0230,0037,0275,0241,0136,0062, \
+0345,0340,0310,0113,0203,0357,0144,0322,0013,0133,0345,0053,0200,0104,0072,0311, \
+0365,0364,0074,0042,0276,0224,0260,0124,0352,0024,0226,0111,0255,0253,0255,0050, \
+0151,0112,0256,0141,0000,0043,0341,0347,0176,0270,0000,0125,0044,0375,0275,0101, \
+0042,0327,0221,0123,0130,0050,0144,0326,0057,0153,0246,0236,0304,0313,0224,0207, \
+0202,0145,0011,0246,0232,0144,0166,0313,0153,0027,0011,0134,0011,0351,0071,0144, \
+0301,0350,0352,0140,0052,0123,0364,0164,0223,0003,0004,0111,0251,0052,0120,0155, \
+0020,0362,0024,0072,0010,0220,0124,0110,0060,0255,0022,0307,0113,0171,0323,0054, \
+0131,0046,0030,0054,0107,0134,0343,0010,0141,0271,0055,0026,0016,0056,0034,0075, \
+0324,0270,0156,0131,0006,0362,0303,0151,0263,0064,0212,0007,0064,0206,0114,0002, \
+0032,0335,0061,0224,0134,0061,0202,0312,0337,0242,0323,0206,0370,0071,0273,0350, \
+0125,0070,0133,0235,0312,0271,0254,0267,0052,0132,0030,0351,0120,0220,0357,0313, \
+0051,0262,0153,0063,0323,0200,0136,0351,0224,0330,0051,0241,0307,0267,0015,0036, \
+0251,0332,0167,0075,0244,0323,0204,0074,0012,0065,0047,0261,0066,0376,0024,0232, \
+0333,0126,0075,0330,0065,0374,0336,0312,0250,0060,0210,0311,0304,0355,0365,0005, \
+0022,0050,0264,0104,0137,0001,0306,0041,0155,0003,0003,0137,0145,0161,0071,0235, \
+0254,0133,0165,0265,0046,0353,0232,0006,0323,0142,0027,0307,0252,0172,0372,0342, \
+0347,0375,0246,0010,0277,0307,0301,0163,0164,0331,0337,0263,0153,0155,0267,0276, \
+0145,0105,0173,0024,0205,0014,0150,0035,0303,0334,0324,0236,0354,0172,0302,0213, \
+0332,0300,0127,0236,0254,0321,0077,0014,0052,0166,0320,0122,0216,0250,0320,0000, \
+0257,0116,0250,0205,0150,0334,0354,0266,0151,0164,0202,0133,0332,0037,0044,0100, \
+0366,0004,0361,0340,0167,0231,0263,0117,0041,0123,0050,0144,0357,0304,0051,0176, \
+0372,0221,0204,0341,0334,0164,0233,0201,0007,0137,0176,0014,0313,0237,0026,0222, \
+0313,0112,0151,0006,0321,0247,0020,0224,0271,0161,0072,0114,0263,0313,0277,0053, \
+0347,0240,0103,0104,0103,0051,0041,0220,0020,0272,0107,0310,0066,0036,0242,0023, \
+0047,0257,0032,0203,0012,0263,0060,0116,0147,0161,0007,0054,0033,0111,0233,0154, \
+0143,0261,0113,0054,0246,0240,0134,0245,0114,0266,0021,0356,0245,0322,0256,0055, \
+0162,0361,0060,0305,0260,0260,0034,0225,0051,0163,0201,0141,0051,0326,0120,0173, \
+0125,0011,0025,0233,0067,0125,0053,0000,0027,0141,0151,0070,0004,0066,0313,0242, \
+0210,0301,0026,0241,0152,0226,0260,0170,0224,0017,0144,0031,0312,0215,0013,0043, \
+0127,0207,0247,0215,0137,0216,0371,0114,0051,0272,0055,0123,0030,0106,0251,0003, \
+0324,0104,0131,0105,0142,0201,0252,0165,0170,0106,0023,0212,0352,0052,0223,0235, \
+0214,0075,0111,0276,0061,0001,0254,0030,0017,0123,0103,0121,0276,0352,0066,0160, \
+0342,0025,0355,0232,0334,0076,0202,0301,0234,0070,0255,0226,0257,0263,0061,0141, \
+0105,0323,0066,0310,0133,0005,0026,0145,0152,0302,0251,0145,0160,0166,0266,0155, \
+0072,0152,0232,0335,0326,0212,0026,0345,0122,0257,0275,0167,0335,0344,0106,0005, \
+0334,0134,0102,0061,0330,0125,0151,0052,0146,0027,0100,0225,0071,0152,0056,0122, \
+0042,0062,0255,0201,0073,0335,0250,0021,0136,0244,0152,0316,0041,0241,0154,0242, \
+0165,0164,0310,0241,0015,0221,0207,0222,0301,0124,0212,0132,0365,0161,0103,0106, \
+0066,0141,0002,0266,0343,0272,0026,0276,0333,0240,0247,0014,0071,0276,0365,0007, \
+0024,0261,0145,0120,0301,0213,0211,0021,0226,0370,0207,0020,0105,0357,0006,0356, \
+0032,0314,0120,0063,0006,0276,0170,0272,0326,0140,0322,0254,0246,0246,0202,0135, \
+0132,0233,0227,0044,0125,0010,0020,0052,0045,0300,0120,0272,0332,0356,0067,0144, \
+0243,0032,0320,0345,0236,0255,0272,0126,0253,0165,0110,0056,0116,0051,0154,0354, \
+0006,0264,0121,0111,0105,0144,0311,0242,0265,0020,0030,0137,0173,0101,0025,0175, \
+0020,0106,0252,0125,0135,0311,0160,0144,0072,0265,0105,0153,0203,0011,0145,0256, \
+0362,0363,0042,0022,0357,0110,0071,0052,0302,0133,0112,0327,0073,0155,0041,0353, \
+0243,0266,0055,0160,0115,0153,0103,0221,0163,0112,0205,0030,0027,0012,0360,0116, \
+0306,0310,0065,0252,0213,0015,0022,0211,0122,0104,0136,0311,0214,0205,0127,0033, \
+0315,0157,0015,0014,0360,0103,0003,0001,0224,0064,0021,0213,0150,0124,0044,0372, \
+0266,0316,0061,0245,0115,0265,0007,0167,0132,0212,0001,0265,0035,0020,0070,0025, \
+0215,0010,0031,0253,0273,0014,0352,0342,0136,0102,0255,0150,0314,0024,0012,0043, \
+0207,0260,0250,0124,0024,0231,0260,0310,0345,0051,0226,0117,0167,0142,0353,0113, \
+0323,0320,0005,0264,0127,0100,0327,0330,0235,0365,0203,0061,0112,0207,0306,0117, \
+0231,0033,0023,0363,0017,0024,0164,0262,0143,0101,0247,0010,0207,0026,0033,0221, \
+0245,0027,0225,0047,0341,0115,0223,0027,0320,0201,0332,0161,0373,0141,0106,0302, \
+0026,0305,0026,0060,0362,0220,0341,0045,0012,0222,0076,0114,0367,0254,0057,0225, \
+0121,0007,0021,0243,0075,0270,0276,0305,0104,0113,0331,0177,0210,0136,0013,0160, \
+0127,0152,0111,0101,0325,0045,0357,0204,0200,0155,0026,0203,0367,0274,0315,0115, \
+0113,0345,0104,0250,0336,0333,0044,0245,0132,0103,0103,0001,0003,0013,0204,0012, \
+0203,0140,0231,0347,0066,0130,0261,0205,0110,0051,0277,0162,0217,0051,0042,0207, \
+0245,0054,0104,0347,0166,0154,0016,0374,0061,0073,0160,0004,0070,0172,0250,0012, \
+0052,0027,0043,0211,0122,0112,0245,0056,0347,0155,0061,0125,0322,0357,0210,0323, \
+0107,0300,0143,0030,0357,0164,0227,0121,0043,0151,0256,0240,0124,0035,0350,0332, \
+0013,0047,0022,0200,0203,0245,0011,0260,0144,0372,0301,0276,0216,0316,0046,0301, \
+0023,0201,0141,0304,0350,0242,0331,0170,0233,0012,0372,0215,0224,0131,0036,0116, \
+0263,0121,0253,0151,0215,0131,0336,0061,0345,0041,0015,0073,0311,0332,0206,0163, \
+0012,0170,0031,0055,0326,0126,0143,0025,0374,0122,0332,0162,0310,0340,0117,0175, \
+0206,0332,0020,0325,0012,0312,0301,0217,0202,0155,0117,0111,0362,0224,0061,0330, \
+0250,0011,0241,0307,0311,0006,0300,0360,0136,0110,0207,0007,0317,0223,0151,0125, \
+0323,0001,0112,0306,0121,0320,0302,0110,0133,0332,0261,0275,0053,0226,0050,0335, \
+0223,0156,0167,0347,0300,0134,0321,0061,0015,0332,0204,0107,0303,0013,0212,0005, \
+0156,0376,0047,0110,0352,0213,0373,0204,0023,0215,0117,0054,0003,0301,0050,0301, \
+0207,0020,0313,0142,0132,0240,0124,0062,0031,0144,0167,0021,0256,0060,0236,0035, \
+0201,0303,0126,0201,0115,0303,0117,0106,0307,0060,0117,0076,0316,0041,0261,0340, \
+0346,0132,0060,0105,0063,0071,0302,0003,0150,0022,0123,0331,0044,0316,0141,0124, \
+0003,0141,0346,0025,0224,0077,0171,0203,0060,0073,0032,0042,0200,0267,0061,0124, \
+0175,0215,0010,0202,0344,0103,0243,0312,0357,0254,0103,0336,0105,0033,0001,0004, \
+0043,0062,0255,0115,0245,0100,0152,0227,0341,0174,0304,0133,0015,0370,0340,0332, \
+0164,0137,0165,0113,0313,0340,0306,0343,0063,0040,0143,0206,0277,0040,0305,0060, \
+0007,0201,0200,0155,0327,0135,0114,0332,0061,0014,0170,0350,0230,0144,0253,0100, \
+0052,0201,0264,0124,0037,0200,0031,0174,0317,0355,0023,0062,0161,0237,0137,0303, \
+0316,0050,0134,0236,0174,0351,0140,0352,0042,0133,0005,0222,0373,0161,0214,0172, \
+0123,0206,0261,0244,0123,0201,0161,0100,0341,0015,0260,0036,0062,0340,0334,0251, \
+0264,0052,0257,0170,0310,0272,0371,0224,0143,0242,0242,0166,0332,0206,0357,0126, \
+0024,0143,0153,0276,0203,0061,0122,0365,0236,0366,0061,0162,0011,0220,0316,0354, \
+0146,0125,0120,0115,0125,0263,0102,0164,0126,0323,0006,0367,0125,0174,0270,0065, \
+0041,0333,0106,0326,0210,0157,0100,0345,0166,0353,0024,0061,0255,0213,0213,0065, \
+0060,0214,0303,0304,0027,0072,0313,0221,0164,0255,0320,0013,0316,0306,0262,0056, \
+0330,0030,0276,0000,0204,0205,0122,0052,0302,0202,0256,0266,0326,0222,0232,0115, \
+0351,0201,0071,0255,0021,0201,0134,0145,0120,0303,0025,0043,0046,0131,0133,0217, \
+0021,0350,0246,0372,0320,0237,0046,0122,0153,0076,0263,0240,0074,0270,0206,0375, \
+0302,0334,0035,0212,0021,0210,0326,0306,0223,0202,0274,0130,0026,0060,0143,0026, \
+0320,0264,0055,0221,0212,0254,0214,0164,0055,0133,0110,0321,0100,0310,0125,0047, \
+0204,0176,0173,0347,0270,0314,0257,0063,0213,0262,0001,0162,0131,0063,0234,0153, \
+0031,0157,0302,0314,0255,0037,0232,0171,0015,0064,0151,0244,0332,0205,0326,0321, \
+0254,0312,0072,0334,0243,0027,0112,0023,0067,0015,0304,0020,0314,0065,0210,0117, \
+0007,0304,0074,0225,0310,0314,0126,0031,0231,0172,0042,0342,0356,0051,0323,0113, \
+0325,0161,0145,0057,0343,0112,0055,0252,0006,0202,0010,0130,0250,0025,0052,0304, \
+0327,0206,0001,0200,0172,0233,0147,0023,0061,0327,0335,0064,0056,0246,0360,0277, \
+0047,0103,0044,0222,0304,0300,0026,0227,0226,0311,0346,0346,0240,0232,0202,0342, \
+0156,0337,0200,0066,0165,0065,0036,0355,0362,0055,0030,0203,0355,0222,0027,0173, \
+0060,0036,0150,0314,0200,0071,0226,0043,0177,0255,0024,0137,0244,0344,0155,0370, \
+0171,0020,0235,0131,0074,0374,0057,0342,0236,0227,0030,0257,0367,0016,0003,0026, \
+0106,0013,0042,0306,0270,0141,0206,0141,0120,0027,0146,0114,0241,0060,0044,0130, \
+0301,0202,0255,0033,0133,0007,0024,0053,0044,0120,0210,0235,0226,0230,0170,0147, \
+0123,0261,0317,0074,0335,0221,0375,0332,0156,0317,0113,0363,0047,0313,0071,0007, \
+0211,0360,0103,0224,0204,0056,0063,0317,0154,0153,0274,0037,0205,0124,0141,0270, \
+0303,0220,0174,0347,0165,0206,0173,0106,0004,0254,0132,0327,0331,0162,0120,0003, \
+0021,0233,0022,0200,0047,0054,0021,0366,0214,0350,0200,0035,0302,0110,0173,0360, \
+0131,0257,0133,0003,0027,0220,0042,0040,0340,0060,0124,0263,0115,0054,0120,0307, \
+0252,0212,0067,0011,0027,0164,0022,0360,0042,0341,0175,0003,0327,0004,0015,0161, \
+0261,0147,0323,0351,0326,0234,0331,0243,0275,0164,0073,0360,0055,0077,0145,0341, \
+0246,0350,0261,0116,0146,0024,0140,0006,0250,0223,0042,0262,0145,0026,0114,0161, \
+0260,0003,0002,0014,0141,0243,0064,0144,0373,0243,0331,0322,0367,0152,0357,0043, \
+0071,0322,0145,0037,0125,0265,0050,0304,0026,0170,0217,0246,0165,0320,0371,0072, \
+0144,0265,0072,0356,0360,0377,0222,0204,0160,0134,0365,0071,0264,0050,0030,0150, \
+0277,0021,0153,0123,0053,0205,0270,0075,0345,0051,0031,0163,0204,0277,0341,0065, \
+0072,0157,0146,0213,0036,0101,0361,0301,0321,0047,0346,0341,0261,0326,0212,0124, \
+0224,0016,0165,0323,0314,0332,0173,0231,0347,0060,0261,0020,0004,0005,0105,0026, \
+0052,0202,0061,0075,0055,0020,0150,0321,0235,0361,0252,0214,0005,0106,0041,0132, \
+0212,0301,0200,0276,0357,0301,0061,0373,0377,0031,0370,0323,0133,0275,0227,0000, \
+0176,0200,0112,0066,0326,0045,0241,0112,0307,0077,0251,0321,0120,0270,0075,0221, \
+0111,0243,0020,0057,0173,0005,0222,0006,0147,0152,0176,0044,0076,0072,0223,0221, \
+0006,0054,0206,0354,0020,0333,0113,0111,0370,0305,0207,0352,0070,0003,0213,0104, \
+0031,0070,0105,0311,0302,0270,0306,0126,0134,0251,0356,0373,0076,0177,0273,0157, \
+0207,0054,0321,0175,0020,0310,0331,0054,0063,0024,0003,0066,0272,0024,0010,0017, \
+0364,0164,0167,0317,0145,0121,0144,0141,0111,0303,0241,0025,0251,0074,0054,0020, \
+0124,0023,0143,0030,0015,0211,0243,0306,0113,0223,0126,0133,0176,0253,0166,0353, \
+0370,0374,0272,0016,0206,0011,0157,0115,0167,0036,0310,0365,0075,0274,0241,0364, \
+0207,0231,0106,0315,0344,0036,0260,0200,0245,0061,0327,0075,0157,0003,0337,0150, \
+0115,0277,0053,0172,0351,0342,0260,0235,0053,0161,0261,0116,0003,0314,0021,0146, \
+0121,0201,0162,0055,0333,0221,0373,0344,0074,0172,0275,0275,0047,0136,0224,0134, \
+0324,0357,0330,0127,0303,0313,0107,0143,0222,0077,0130,0047,0220,0160,0142,0155, \
+0003,0115,0324,0103,0065,0204,0103,0064,0004,0317,0310,0317,0105,0315,0150,0107, \
+0153,0100,0165,0165,0124,0135,0155,0064,0372,0240,0154,0043,0162,0062,0133,0066, \
+0207,0337,0103,0210,0366,0020,0221,0341,0246,0333,0261,0324,0173,0046,0107,0131, \
+0042,0173,0307,0065,0352,0007,0244,0210,0110,0063,0071,0100,0041,0022,0322,0056, \
+0222,0224,0101,0053,0002,0101,0150,0150,0301,0351,0365,0103,0345,0155,0115,0015, \
+0372,0215,0301,0274,0044,0372,0320,0120,0235,0311,0074,0016,0376,0363,0157,0105, \
+0126,0036,0103,0313,0162,0322,0304,0240,0074,0350,0117,0300,0201,0163,0145,0140, \
+0015,0251,0040,0306,0164,0064,0047,0227,0175,0072,0153,0352,0114,0377,0076,0324, \
+0346,0041,0176,0147,0105,0345,0265,0007,0204,0104,0066,0104,0013,0015,0221,0353, \
+0210,0164,0071,0365,0103,0124,0306,0130,0337,0006,0340,0033,0333,0332,0037,0247, \
+0154,0212,0245,0041,0264,0053,0046,0145,0327,0315,0351,0216,0306,0153,0312,0274, \
+0005,0257,0165,0060,0317,0057,0140,0056,0225,0064,0030,0025,0062,0217,0316,0055, \
+0245,0242,0121,0035,0152,0034,0331,0001,0057,0102,0357,0044,0173,0155,0332,0073, \
+0006,0346,0164,0314,0224,0012,0226,0222,0310,0044,0051,0132,0226,0254,0135,0361, \
+0134,0074,0004,0110,0105,0100,0262,0104,0030,0133,0306,0033,0037,0177,0257,0341, \
+0241,0327,0132,0166,0130,0054,0125,0202,0261,0202,0062,0012,0010,0052,0105,0044, \
+0054,0015,0275,0175,0307,0355,0317,0242,0237,0241,0250,0345,0311,0201,0233,0162, \
+0114,0170,0331,0175,0343,0316,0034,0036,0130,0136,0021,0000,0354,0162,0322,0237, \
+0107,0311,0345,0350,0137,0202,0074,0123,0070,0102,0042,0000,0375,0222,0241,0311, \
+0174,0132,0317,0210,0166,0236,0030,0047,0177,0132,0115,0142,0213,0042,0310,0244, \
+0115,0277,0117,0277,0333,0000,0105,0203,0020,0142,0212,0077,0073,0355,0362,0014, \
+0114,0263,0317,0360,0336,0242,0122,0032,0112,0365,0216,0267,0012,0005,0065,0167, \
+0150,0227,0044,0374,0152,0052,0364,0055,0030,0272,0353,0202,0206,0172,0240,0040, \
+0246,0027,0024,0212,0160,0070,0043,0334,0230,0041,0214,0003,0310,0240,0104,0216, \
+0362,0121,0240,0152,0247,0043,0144,0104,0143,0012,0313,0056,0060,0254,0324,0063, \
+0257,0164,0030,0355,0056,0205,0266,0163,0225,0016,0021,0346,0045,0164,0227,0164, \
+0144,0041,0233,0140,0221,0016,0023,0142,0142,0053,0013,0245,0201,0201,0372,0342, \
+0176,0076,0157,0374,0174,0116,0357,0273,0235,0103,0137,0166,0345,0045,0343,0312, \
+0347,0032,0340,0114,0123,0024,0244,0335,0272,0024,0017,0251,0253,0035,0006,0260, \
+0316,0315,0206,0113,0154,0255,0325,0077,0175,0360,0070,0147,0327,0177,0230,0237, \
+0227,0075,0146,0300,0054,0341,0215,0100,0305,0000,0260,0024,0373,0061,0322,0167, \
+0223,0240,0175,0273,0233,0211,0024,0120,0124,0142,0213,0040,0320,0113,0020,0152, \
+0326,0273,0064,0124,0170,0320,0342,0324,0060,0134,0130,0120,0232,0101,0011,0264, \
+0242,0173,0263,0162,0060,0173,0134,0232,0145,0014,0056,0315,0212,0203,0151,0110, \
+0202,0050,0056,0262,0312,0042,0350,0321,0034,0153,0246,0114,0146,0031,0323,0006, \
+0014,0241,0224,0252,0311,0241,0214,0001,0232,0102,0152,0221,0015,0326,0013,0056, \
+0032,0136,0132,0373,0163,0273,0225,0014,0066,0370,0145,0124,0130,0174,0003,0025, \
+0354,0107,0110,0076,0341,0111,0300,0341,0347,0160,0030,0323,0325,0270,0232,0121, \
+0140,0052,0064,0015,0203,0006,0000,0330,0363,0302,0322,0166,0037,0246,0207,0063, \
+0114,0245,0125,0105,0367,0132,0105,0221,0037,0175,0122,0304,0101,0313,0045,0063, \
+0150,0154,0314,0252,0211,0070,0133,0062,0216,0266,0262,0054,0230,0145,0026,0146, \
+0362,0216,0171,0231,0124,0211,0272,0322,0373,0333,0052,0272,0156,0070,0155,0260, \
+0301,0245,0015,0061,0161,0224,0204,0210,0310,0245,0264,0341,0352,0354,0340,0031, \
+0002,0162,0201,0110,0175,0233,0034,0343,0271,0131,0224,0352,0171,0320,0333,0061, \
+0077,0244,0204,0171,0014,0033,0000,0245,0076,0351,0022,0243,0004,0144,0142,0153, \
+0076,0054,0143,0132,0077,0174,0206,0256,0130,0167,0262,0262,0163,0306,0044,0026, \
+0130,0360,0303,0073,0140,0244,0342,0305,0012,0047,0101,0306,0051,0130,0141,0223, \
+0366,0062,0032,0063,0071,0323,0023,0311,0300,0226,0152,0055,0244,0145,0246,0061, \
+0003,0245,0056,0353,0223,0156,0115,0214,0313,0027,0355,0276,0322,0163,0062,0315, \
+0374,0147,0360,0174,0343,0044,0145,0173,0210,0111,0117,0160,0120,0114,0347,0114, \
+0016,0335,0257,0275,0221,0153,0064,0250,0174,0320,0331,0317,0314,0355,0225,0206, \
+0045,0033,0154,0003,0362,0026,0274,0061,0347,0106,0262,0105,0031,0011,0032,0001, \
+0105,0114,0020,0303,0345,0343,0155,0206,0210,0364,0142,0341,0207,0203,0213,0111, \
+0041,0342,0166,0026,0146,0053,0122,0174,0140,0230,0142,0361,0146,0106,0142,0225, \
+0355,0265,0065,0115,0112,0005,0334,0271,0246,0233,0211,0070,0260,0042,0164,0251, \
+0037,0114,0003,0056,0050,0205,0113,0010,0206,0014,0253,0045,0115,0146,0027,0025, \
+0072,0342,0142,0011,0151,0160,0304,0031,0213,0162,0175,0026,0372,0174,0261,0272, \
+0115,0167,0306,0174,0021,0326,0217,0315,0321,0134,0174,0366,0372,0257,0051,0050, \
+0203,0143,0155,0375,0074,0124,0146,0031,0241,0026,0006,0163,0050,0240,0220,0171, \
+0147,0154,0115,0063,0135,0252,0323,0154,0276,0322,0265,0014,0100,0164,0234,0273, \
+0202,0152,0030,0060,0001,0004,0121,0026,0103,0215,0253,0025,0232,0003,0142,0133, \
+0101,0021,0121,0214,0213,0121,0360,0333,0360,0044,0323,0314,0321,0137,0252,0234, \
+0161,0112,0063,0047,0072,0034,0000,0303,0026,0015,0245,0162,0150,0350,0366,0323, \
+0347,0112,0222,0102,0313,0260,0324,0345,0300,0014,0367,0073,0030,0034,0153,0127, \
+0373,0326,0122,0315,0274,0122,0235,0177,0017,0163,0145,0310,0233,0215,0064,0300, \
+0256,0310,0032,0124,0362,0306,0350,0074,0333,0051,0102,0154,0042,0320,0040,0211, \
+0251,0174,0227,0033,0211,0075,0231,0225,0223,0331,0251,0033,0316,0103,0127,0235, \
+0245,0216,0022,0022,0301,0205,0220,0302,0056,0220,0254,0032,0153,0071,0157,0075, \
+0060,0174,0255,0340,0164,0363,0301,0136,0337,0116,0147,0043,0240,0325,0171,0303, \
+0232,0102,0164,0344,0151,0251,0163,0150,0301,0034,0246,0131,0204,0212,0272,0347, \
+0051,0064,0037,0073,0254,0272,0340,0315,0321,0064,0327,0055,0042,0140,0320,0206, \
+0014,0224,0146,0151,0222,0272,0110,0025,0044,0063,0150,0062,0105,0031,0221,0011, \
+0270,0140,0205,0144,0110,0245,0011,0320,0163,0042,0044,0264,0020,0231,0227,0006, \
+0044,0304,0220,0314,0271,0022,0124,0125,0046,0140,0202,0012,0240,0151,0370,0323, \
+0004,0306,0065,0061,0214,0054,0106,0150,0141,0301,0171,0271,0104,0314,0156,0130, \
+0151,0112,0250,0051,0155,0264,0133,0206,0243,0214,0141,0230,0271,0022,0244,0220, \
+0102,0032,0346,0135,0363,0045,0232,0131,0052,0167,0322,0277,0147,0155,0371,0332, \
+0363,0324,0136,0022,0176,0330,0342,0173,0036,0167,0207,0202,0333,0020,0254,0321, \
+0020,0020,0257,0241,0206,0376,0146,0213,0247,0012,0224,0120,0015,0003,0047,0227, \
+0135,0005,0106,0007,0046,0034,0206,0166,0341,0262,0304,0054,0135,0063,0110,0350, \
+0151,0034,0331,0327,0047,0325,0250,0151,0364,0232,0205,0114,0151,0215,0154,0134, \
+0330,0240,0252,0142,0203,0173,0277,0323,0223,0006,0211,0104,0312,0024,0102,0072, \
+0120,0250,0240,0147,0005,0046,0031,0132,0301,0160,0060,0270,0152,0143,0013,0066, \
+0114,0006,0170,0006,0061,0160,0132,0112,0070,0321,0220,0303,0210,0203,0362,0245, \
+0125,0130,0304,0123,0066,0127,0007,0165,0072,0175,0022,0036,0207,0141,0200,0100, \
+0341,0175,0062,0006,0134,0010,0053,0332,0101,0260,0152,0345,0170,0243,0354,0204, \
+0144,0300,0304,0012,0010,0306,0060,0220,0254,0005,0000,0143,0044,0016,0260,0033, \
+0142,0332,0303,0004,0306,0014,0365,0064,0016,0206,0272,0346,0146,0116,0073,0143, \
+0011,0351,0004,0364,0312,0246,0272,0105,0223,0043,0012,0250,0214,0003,0175,0103, \
+0135,0355,0352,0273,0010,0255,0010,0245,0205,0374,0202,0165,0367,0154,0035,0026, \
+0115,0057,0267,0275,0165,0246,0326,0054,0006,0161,0167,0233,0200,0040,0267,0217, \
+0272,0127,0046,0051,0154,0150,0276,0271,0032,0254,0157,0365,0135,0353,0057,0337, \
+0166,0316,0324,0005,0237,0074,0321,0076,0236,0354,0352,0115,0062,0135,0020,0250, \
+0013,0047,0257,0063,0160,0240,0342,0140,0222,0140,0164,0316,0012,0341,0154,0264, \
+0130,0245,0030,0043,0154,0246,0006,0270,0212,0210,0226,0224,0120,0120,0055,0050, \
+0066,0301,0266,0062,0205,0222,0321,0224,0145,0245,0264,0045,0030,0326,0244,0151, \
+0230,0121,0301,0357,0310,0144,0314,0234,0050,0053,0020,0054,0134,0113,0054,0064, \
+0002,0223,0024,0230,0203,0003,0011,0065,0260,0345,0041,0053,0064,0300,0124,0133, \
+0031,0163,0005,0162,0056,0253,0101,0047,0142,0315,0003,0136,0211,0047,0147,0141, \
+0366,0163,0122,0305,0042,0244,0340,0170,0151,0210,0013,0015,0031,0004,0237,0310, \
+0154,0143,0021,0331,0042,0232,0355,0371,0061,0001,0162,0303,0334,0207,0066,0176, \
+0341,0206,0117,0215,0340,0316,0364,0251,0062,0202,0146,0351,0372,0344,0246,0311, \
+0242,0022,0056,0325,0246,0122,0046,0326,0001,0202,0213,0135,0004,0120,0307,0144, \
+0212,0230,0140,0227,0333,0174,0174,0070,0112,0366,0172,0053,0045,0210,0033,0016, \
+0251,0022,0132,0004,0244,0121,0201,0036,0366,0202,0004,0031,0005,0227,0243,0226, \
+0235,0313,0363,0177,0005,0020,0131,0336,0052,0125,0141,0113,0050,0335,0315,0060, \
+0032,0151,0111,0241,0274,0040,0173,0130,0020,0067,0345,0033,0267,0164,0311,0350, \
+0202,0053,0374,0010,0325,0034,0020,0365,0030,0155,0016,0050,0154,0333,0357,0371, \
+0043,0237,0374,0055,0146,0372,0130,0362,0075,0076,0042,0213,0237,0167,0350,0200, \
+0233,0175,0316,0347,0356,0013,0015,0341,0261,0044,0355,0301,0170,0331,0003,0144, \
+0101,0005,0220,0021,0200,0230,0207,0270,0231,0144,0352,0207,0265,0014,0002,0052, \
+0054,0036,0307,0273,0020,0365,0040,0142,0061,0202,0242,0106,0046,0226,0236,0177, \
+0050,0173,0130,0250,0042,0301,0144,0026,0006,0066,0075,0005,0145,0232,0210,0034, \
+0313,0322,0103,0152,0037,0027,0340,0355,0150,0136,0272,0315,0204,0175,0176,0305, \
+0031,0241,0326,0163,0335,0105,0220,0025,0147,0006,0007,0164,0070,0034,0042,0113, \
+0066,0350,0007,0203,0044,0346,0151,0064,0203,0041,0305,0332,0050,0254,0004,0005, \
+0115,0275,0276,0243,0035,0231,0061,0155,0071,0262,0117,0220,0256,0154,0330,0313, \
+0321,0376,0016,0310,0232,0145,0001,0324,0353,0275,0256,0366,0056,0063,0334,0167, \
+0167,0305,0016,0315,0371,0236,0336,0374,0116,0070,0006,0026,0325,0072,0060,0276, \
+0026,0121,0121,0221,0362,0112,0310,0202,0071,0063,0203,0001,0360,0006,0314,0033, \
+0340,0331,0314,0060,0312,0212,0255,0262,0230,0167,0336,0220,0102,0050,0344,0210, \
+0141,0257,0333,0111,0261,0374,0315,0346,0034,0356,0234,0173,0304,0036,0100,0136, \
+0034,0041,0156,0003,0151,0324,0101,0027,0311,0020,0232,0206,0230,0112,0061,0322, \
+0060,0251,0144,0212,0363,0256,0264,0030,0007,0350,0322,0232,0201,0270,0044,0334, \
+0140,0033,0316,0261,0027,0372,0016,0376,0327,0112,0024,0374,0102,0047,0127,0002, \
+0233,0211,0227,0130,0011,0011,0216,0346,0254,0153,0170,0332,0111,0215,0141,0336, \
+0063,0110,0056,0111,0033,0261,0175,0363,0026,0114,0061,0070,0030,0237,0255,0346, \
+0354,0030,0233,0006,0322,0143,0063,0125,0372,0217,0241,0231,0234,0345,0230,0165, \
+0334,0365,0051,0374,0326,0162,0103,0156,0371,0306,0037,0221,0037,0224,0261,0036, \
+0327,0011,0214,0051,0142,0352,0103,0171,0311,0035,0267,0343,0372,0147,0316,0315, \
+0274,0350,0017,0255,0202,0261,0253,0337,0010,0244,0314,0321,0170,0374,0010,0016, \
+0255,0103,0370,0062,0357,0251,0220,0213,0367,0172,0244,0051,0062,0136,0247,0075, \
+0322,0043,0005,0130,0252,0101,0122,0040,0302,0040,0210,0355,0202,0014,0156,0107, \
+0266,0373,0221,0266,0013,0273,0061,0355,0330,0036,0266,0221,0304,0365,0327,0224, \
+0304,0172,0342,0026,0233,0244,0246,0064,0012,0342,0101,0246,0167,0237,0240,0114, \
+0227,0064,0152,0136,0326,0345,0331,0323,0032,0244,0027,0203,0115,0205,0324,0067, \
+0106,0131,0032,0102,0123,0113,0001,0227,0271,0373,0246,0010,0240,0263,0072,0001, \
+0222,0016,0105,0006,0104,0072,0023,0204,0224,0070,0064,0100,0372,0060,0130,0073, \
+0264,0073,0035,0031,0141,0300,0237,0167,0040,0336,0157,0021,0127,0201,0240,0117, \
+0076,0376,0036,0236,0013,0235,0120,0146,0141,0234,0304,0113,0030,0164,0246,0273, \
+0242,0037,0247,0022,0150,0036,0274,0241,0144,0047,0342,0321,0206,0154,0173,0254, \
+0204,0033,0140,0271,0206,0211,0300,0312,0323,0331,0210,0153,0105,0016,0205,0064, \
+0037,0235,0221,0270,0050,0031,0106,0044,0006,0144,0010,0172,0260,0030,0204,0133, \
+0030,0047,0364,0001,0122,0003,0146,0225,0043,0355,0242,0025,0275,0014,0325,0310, \
+0140,0110,0022,0074,0213,0134,0342,0222,0014,0072,0050,0310,0147,0242,0000,0334, \
+0303,0310,0140,0053,0070,0141,0054,0057,0103,0124,0061,0126,0322,0014,0373,0125, \
+0323,0130,0012,0324,0304,0062,0141,0366,0260,0024,0263,0015,0064,0046,0357,0245, \
+0077,0076,0235,0041,0325,0203,0031,0006,0052,0261,0203,0006,0320,0163,0136,0203, \
+0146,0154,0021,0250,0354,0367,0166,0302,0372,0164,0311,0165,0145,0073,0130,0356, \
+0271,0112,0371,0147,0212,0164,0323,0111,0301,0230,0363,0351,0203,0111,0224,0131, \
+0045,0254,0104,0060,0324,0120,0313,0052,0301,0142,0220,0365,0137,0231,0213,0250, \
+0332,0312,0304,0121,0203,0334,0324,0140,0214,0031,0265,0045,0067,0241,0130,0042, \
+0012,0241,0120,0273,0265,0121,0212,0014,0125,0105,0005,0210,0243,0212,0102,0250, \
+0202,0252,0141,0132,0254,0125,0222,0017,0164,0111,0101,0212,0304,0143,0021,0014, \
+0064,0035,0206,0113,0164,0246,0042,0056,0171,0036,0237,0345,0102,0353,0076,0117, \
+0220,0117,0335,0260,0014,0122,0123,0255,0376,0332,0252,0027,0375,0212,0336,0213, \
+0321,0041,0056,0306,0013,0325,0074,0170,0033,0154,0247,0156,0000,0304,0115,0367, \
+0021,0037,0126,0000,0233,0111,0336,0300,0105,0132,0152,0117,0212,0146,0050,0305, \
+0004,0130,0043,0023,0050,0145,0251,0203,0005,0051,0067,0061,0160,0050,0213,0131, \
+0143,0040,0250,0342,0320,0105,0225,0276,0034,0146,0214,0352,0045,0360,0257,0323, \
+0375,0134,0364,0077,0135,0115,0175,0340,0163,0215,0265,0301,0070,0357,0076,0043, \
+0275,0263,0115,0350,0003,0325,0324,0034,0070,0276,0003,0206,0057,0111,0353,0366, \
+0106,0364,0047,0226,0335,0003,0250,0365,0312,0116,0023,0351,0247,0275,0313,0264, \
+0367,0275,0012,0112,0224,0100,0116,0031,0120,0346,0366,0046,0336,0316,0351,0251, \
+0221,0077,0015,0047,0321,0331,0004,0126,0002,0371,0065,0212,0210,0052,0202,0052, \
+0246,0006,0104,0233,0210,0335,0272,0006,0036,0144,0120,0214,0357,0200,0207,0256, \
+0035,0370,0142,0301,0021,0014,0113,0146,0346,0064,0301,0015,0316,0140,0240,0240, \
+0214,0120,0140,0304,0102,0105,0210,0260,0231,0055,0003,0020,0360,0046,0237,0154, \
+0237,0004,0021,0210,0250,0311,0070,0114,0140,0227,0252,0006,0307,0317,0114,0110, \
+0157,0170,0301,0061,0052,0025,0044,0224,0207,0164,0060,0104,0240,0305,0140,0211, \
+0014,0234,0352,0236,0075,0170,0020,0352,0044,0220,0130,0101,0227,0047,0001,0132, \
+0225,0216,0304,0353,0166,0007,0116,0215,0322,0344,0347,0007,0111,0163,0134,0160, \
+0166,0247,0327,0011,0023,0001,0266,0332,0320,0330,0123,0146,0053,0244,0215,0020, \
+0042,0175,0060,0012,0332,0123,0164,0203,0042,0040,0261,0266,0211,0005,0232,0061, \
+0103,0253,0106,0040,0062,0021,0047,0321,0254,0207,0226,0246,0310,0152,0210,0226, \
+0304,0133,0001,0100,0113,0152,0132,0045,0024,0240,0215,0262,0126,0322,0123,0303, \
+0136,0204,0226,0163,0247,0164,0316,0322,0023,0327,0256,0237,0171,0271,0241,0046, \
+0051,0236,0026,0241,0230,0206,0005,0370,0064,0302,0133,0137,0317,0012,0134,0322, \
+0137,0162,0162,0366,0375,0170,0321,0341,0260,0205,0152,0132,0176,0064,0264,0374, \
+0060,0076,0371,0305,0352,0360,0344,0043,0265,0230,0064,0250,0322,0073,0365,0245, \
+0006,0231,0234,0067,0323,0030,0141,0324,0022,0372,0151,0325,0063,0176,0216,0374, \
+0105,0233,0164,0205,0325,0070,0072,0175,0127,0126,0335,0361,0116,0332,0110,0310, \
+0344,0032,0301,0256,0100,0331,0351,0176,0027,0265,0352,0212,0111,0202,0027,0012, \
+0242,0257,0222,0007,0002,0235,0234,0273,0162,0310,0343,0305,0214,0061,0351,0240, \
+0341,0230,0250,0007,0126,0204,0221,0075,0210,0015,0316,0231,0263,0247,0241,0017, \
+0035,0203,0236,0102,0136,0003,0305,0255,0072,0357,0114,0372,0135,0204,0131,0130, \
+0214,0033,0202,0172,0373,0214,0271,0344,0041,0213,0162,0331,0310,0044,0340,0162, \
+0361,0221,0061,0256,0233,0347,0161,0343,0155,0161,0350,0030,0206,0120,0247,0132, \
+0135,0366,0246,0243,0312,0365,0162,0211,0150,0274,0226,0232,0167,0141,0343,0252, \
+0040,0255,0162,0302,0201,0260,0152,0036,0175,0372,0101,0045,0332,0306,0125,0202, \
+0106,0311,0152,0014,0061,0173,0371,0046,0201,0033,0362,0201,0214,0136,0205,0272, \
+0045,0362,0322,0243,0040,0171,0102,0223,0043,0233,0141,0264,0213,0060,0120,0244, \
+0356,0243,0226,0257,0062,0232,0224,0255,0315,0354,0216,0053,0074,0337,0142,0030, \
+0334,0201,0354,0043,0114,0224,0123,0232,0250,0040,0026,0273,0157,0307,0104,0324, \
+0070,0303,0104,0350,0362,0302,0010,0131,0304,0034,0161,0056,0020,0120,0020,0062, \
+0100,0162,0044,0330,0336,0000,0337,0223,0267,0035,0232,0203,0125,0112,0070,0314, \
+0264,0152,0262,0153,0252,0300,0060,0244,0256,0175,0110,0272,0246,0302,0042,0360, \
+0262,0213,0207,0022,0367,0306,0143,0303,0102,0251,0215,0141,0044,0221,0033,0312, \
+0325,0256,0227,0155,0003,0010,0362,0043,0206,0044,0121,0230,0033,0204,0043,0046, \
+0153,0120,0302,0036,0115,0206,0042,0155,0214,0261,0043,0346,0235,0126,0070,0073, \
+0124,0201,0162,0325,0012,0026,0150,0214,0363,0231,0355,0073,0272,0162,0250,0273, \
+0107,0114,0233,0211,0354,0004,0165,0175,0363,0310,0327,0013,0303,0052,0252,0344, \
+0322,0106,0200,0363,0202,0270,0231,0147,0125,0216,0020,0221,0240,0000,0375,0267, \
+0003,0340,0016,0327,0376,0113,0261,0053,0201,0212,0062,0070,0321,0247,0367,0123, \
+0311,0114,0025,0006,0015,0111,0015,0050,0032,0323,0134,0032,0143,0150,0261,0217, \
+0225,0226,0013,0303,0026,0263,0154,0347,0007,0175,0037,0273,0300,0333,0016,0326, \
+0334,0205,0100,0320,0253,0202,0257,0040,0130,0121,0235,0015,0204,0324,0070,0263, \
+0222,0101,0223,0056,0346,0244,0024,0045,0200,0161,0155,0023,0163,0114,0161,0125, \
+0137,0142,0037,0201,0070,0012,0164,0113,0031,0272,0175,0076,0074,0264,0042,0075, \
+0354,0064,0350,0251,0024,0357,0301,0203,0007,0023,0264,0231,0052,0121,0104,0361, \
+0116,0144,0020,0360,0103,0342,0352,0313,0066,0324,0267,0146,0154,0041,0241,0221, \
+0050,0325,0154,0014,0061,0320,0367,0132,0170,0302,0301,0376,0255,0144,0351,0304, \
+0051,0206,0103,0207,0221,0336,0140,0223,0034,0041,0253,0123,0246,0162,0157,0323, \
+0134,0040,0333,0104,0151,0246,0270,0107,0175,0300,0144,0147,0010,0325,0231,0065, \
+0222,0320,0031,0360,0215,0071,0270,0332,0331,0032,0157,0241,0274,0065,0136,0023, \
+0313,0244,0071,0004,0210,0275,0164,0157,0014,0351,0312,0312,0145,0012,0236,0114, \
+0204,0033,0232,0071,0064,0016,0250,0101,0272,0246,0372,0173,0160,0171,0060,0236, \
+0050,0051,0042,0300,0131,0024,0044,0137,0277,0363,0313,0131,0047,0261,0201,0245, \
+0000,0241,0167,0061,0014,0062,0120,0072,0127,0332,0351,0141,0152,0245,0010,0004, \
+0225,0221,0021,0101,0050,0104,0230,0074,0204,0273,0021,0046,0041,0125,0100,0152, \
+0224,0005,0064,0100,0231,0213,0124,0321,0125,0115,0370,0160,0035,0276,0135,0032, \
+0055,0140,0213,0316,0102,0242,0234,0120,0014,0120,0251,0201,0100,0306,0047,0045, \
+0207,0071,0033,0043,0276,0264,0110,0304,0337,0151,0161,0123,0307,0256,0227,0304, \
+0170,0300,0072,0172,0232,0021,0152,0322,0211,0007,0167,0151,0217,0162,0075,0325, \
+0112,0340,0357,0333,0231,0312,0267,0176,0060,0002,0331,0207,0104,0247,0060,0277, \
+0203,0350,0141,0310,0143,0115,0060,0130,0104,0117,0177,0221,0371,0272,0365,0364, \
+0116,0375,0275,0034,0036,0315,0274,0253,0217,0123,0247,0211,0164,0257,0247,0040, \
+0131,0346,0301,0211,0360,0032,0344,0133,0042,0147,0056,0201,0210,0026,0326,0161, \
+0275,0027,0142,0321,0026,0107,0026,0115,0110,0242,0045,0013,0244,0305,0315,0314, \
+0011,0302,0006,0201,0255,0324,0207,0100,0322,0310,0235,0067,0002,0366,0005,0171, \
+0040,0306,0304,0034,0012,0334,0146,0102,0311,0235,0363,0173,0013,0051,0263,0261, \
+0272,0003,0102,0005,0205,0305,0201,0166,0170,0067,0150,0042,0011,0053,0051,0022, \
+0212,0030,0214,0040,0270,0076,0334,0314,0214,0260,0227,0250,0162,0224,0067,0000, \
+0237,0275,0334,0137,0010,0256,0054,0314,0160,0223,0042,0273,0003,0053,0211,0125, \
+0205,0143,0031,0151,0260,0252,0251,0104,0137,0142,0320,0073,0341,0134,0313,0312, \
+0244,0041,0220,0144,0251,0224,0062,0142,0353,0046,0020,0245,0045,0355,0017,0130, \
+0126,0022,0201,0112,0205,0146,0314,0006,0003,0214,0254,0361,0016,0325,0061,0174, \
+0074,0010,0123,0246,0265,0032,0100,0304,0013,0013,0344,0222,0360,0367,0265,0354, \
+0022,0204,0201,0027,0164,0343,0312,0016,0231,0027,0251,0160,0056,0012,0212,0031, \
+0063,0064,0350,0116,0250,0151,0151,0166,0005,0220,0013,0051,0224,0160,0350,0116, \
+0206,0324,0055,0144,0212,0010,0103,0262,0251,0314,0012,0027,0101,0000,0250,0135, \
+0315,0132,0240,0201,0130,0240,0245,0270,0223,0141,0164,0205,0131,0041,0142,0244, \
+0157,0171,0172,0144,0323,0213,0212,0241,0240,0160,0136,0044,0113,0201,0203,0232, \
+0145,0301,0073,0122,0002,0306,0142,0374,0161,0162,0345,0105,0205,0204,0203,0220, \
+0051,0126,0321,0125,0232,0260,0032,0142,0214,0140,0272,0025,0204,0116,0100,0263, \
+0202,0303,0106,0026,0056,0146,0007,0113,0212,0071,0270,0270,0307,0034,0025,0152, \
+0136,0073,0022,0146,0062,0060,0066,0221,0222,0106,0245,0006,0375,0277,0156,0224, \
+0276,0122,0247,0303,0315,0357,0020,0062,0323,0100,0203,0070,0043,0254,0203,0334, \
+0144,0246,0216,0314,0252,0240,0013,0213,0122,0053,0276,0154,0353,0351,0276,0173, \
+0374,0042,0073,0230,0203,0310,0026,0050,0315,0025,0204,0167,0234,0231,0070,0300, \
+0016,0041,0141,0244,0220,0016,0231,0140,0254,0060,0047,0024,0270,0051,0204,0054, \
+0025,0017,0220,0147,0013,0134,0053,0066,0306,0162,0114,0270,0214,0321,0064,0301, \
+0146,0130,0341,0010,0226,0242,0245,0204,0213,0020,0356,0245,0210,0233,0312,0054, \
+0227,0122,0034,0334,0351,0066,0205,0016,0114,0314,0020,0142,0322,0135,0363,0010, \
+0060,0142,0260,0337,0022,0030,0356,0111,0227,0344,0140,0157,0024,0214,0127,0052, \
+0221,0066,0250,0303,0200,0037,0127,0030,0171,0346,0006,0263,0210,0271,0262,0045, \
+0065,0310,0166,0366,0244,0346,0301,0245,0136,0051,0052,0242,0046,0004,0155,0121, \
+0301,0340,0153,0312,0353,0261,0225,0336,0264,0076,0053,0366,0173,0135,0065,0274, \
+0075,0022,0032,0057,0215,0224,0164,0064,0244,0250,0263,0057,0353,0140,0145,0223, \
+0042,0136,0001,0014,0061,0010,0060,0142,0014,0132,0116,0267,0103,0156,0052,0114, \
+0376,0121,0001,0120,0320,0115,0130,0055,0244,0004,0243,0174,0163,0272,0227,0267, \
+0112,0362,0007,0206,0253,0005,0343,0113,0323,0345,0357,0046,0150,0341,0313,0003, \
+0010,0204,0323,0136,0212,0225,0044,0107,0325,0226,0335,0271,0364,0024,0244,0355, \
+0220,0215,0252,0301,0153,0016,0210,0347,0304,0126,0141,0146,0271,0233,0324,0241, \
+0232,0134,0306,0145,0141,0213,0165,0246,0042,0341,0126,0055,0116,0334,0206,0003, \
+0200,0072,0232,0326,0241,0224,0021,0356,0016,0316,0316,0214,0232,0060,0131,0044, \
+0213,0040,0244,0235,0254,0010,0121,0222,0302,0130,0266,0120,0330,0150,0065,0101, \
+0265,0330,0136,0136,0303,0014,0326,0154,0317,0110,0252,0044,0002,0030,0042,0365, \
+0205,0072,0213,0332,0060,0215,0052,0044,0025,0267,0132,0136,0160,0022,0303,0271, \
+0076,0040,0137,0200,0231,0124,0150,0300,0141,0367,0111,0104,0133,0163,0163,0043, \
+0036,0355,0044,0235,0316,0014,0042,0024,0262,0046,0252,0107,0064,0163,0060,0114, \
+0102,0227,0244,0252,0315,0267,0162,0051,0171,0171,0271,0252,0242,0366,0210,0006, \
+0306,0227,0227,0055,0274,0127,0323,0226,0273,0105,0041,0330,0330,0033,0135,0220, \
+0310,0201,0361,0342,0163,0074,0055,0124,0024,0122,0266,0333,0115,0046,0314,0236, \
+0133,0142,0172,0146,0222,0150,0207,0202,0033,0077,0143,0303,0353,0327,0345,0343, \
+0373,0073,0077,0157,0022,0257,0123,0102,0337,0220,0372,0000,0370,0153,0271,0345, \
+0166,0373,0113,0315,0201,0004,0020,0165,0114,0022,0122,0376,0251,0077,0316,0250, \
+0040,0057,0355,0137,0233,0120,0223,0307,0235,0147,0113,0313,0230,0233,0166,0152, \
+0016,0277,0000,0173,0270,0166,0143,0314,0054,0317,0030,0057,0067,0074,0310,0046, \
+0114,0063,0036,0172,0321,0070,0112,0175,0076,0266,0360,0074,0122,0104,0167,0205, \
+0317,0213,0134,0133,0003,0033,0055,0115,0346,0157,0235,0260,0113,0215,0211,0370, \
+0341,0044,0102,0060,0235,0376,0303,0012,0235,0033,0251,0274,0013,0010,0341,0002, \
+0376,0107,0201,0015,0374,0231,0121,0365,0263,0073,0300,0010,0115,0366,0243,0214, \
+0317,0112,0200,0217,0174,0003,0166,0372,0352,0207,0214,0147,0237,0212,0006,0374, \
+0317,0016,0000,0171,0347,0224,0206,0021,0364,0200,0042,0001,0153,0001,0333,0001, \
+0152,0321,0304,0365,0302,0206,0043,0241,0207,0006,0206,0031,0026,0224,0242,0365, \
+0217,0061,0374,0373,0241,0315,0175,0146,0263,0340,0304,0020,0212,0210,0260,0030, \
+0260,0104,0212,0244,0277,0175,0233,0203,0222,0041,0344,0205,0105,0042,0244,0130, \
+0140,0337,0236,0071,0063,0046,0360,0350,0210,0365,0345,0055,0155,0052,0264,0023, \
+0271,0200,0300,0203,0043,0146,0333,0374,0071,0062,0052,0165,0100,0344,0370,0374, \
+0225,0163,0270,0067,0027,0213,0312,0245,0371,0300,0156,0257,0134,0364,0063,0156, \
+0133,0225,0003,0063,0121,0037,0142,0150,0072,0031,0251,0376,0131,0152,0347,0263, \
+0215,0342,0046,0021,0121,0160,0341,0170,0246,0107,0224,0323,0104,0302,0146,0141, \
+0035,0044,0260,0214,0111,0327,0102,0030,0004,0172,0316,0101,0146,0303,0042,0013, \
+0115,0021,0204,0365,0033,0250,0262,0250,0370,0324,0041,0042,0366,0201,0260,0154, \
+0050,0113,0213,0043,0005,0207,0277,0303,0321,0313,0114,0017,0315,0335,0230,0310, \
+0151,0056,0231,0215,0224,0066,0022,0176,0163,0002,0142,0047,0266,0022,0041,0200, \
+0336,0366,0001,0113,0216,0151,0065,0343,0157,0077,0216,0230,0166,0153,0114,0046, \
+0155,0047,0247,0205,0054,0073,0142,0146,0157,0327,0055,0272,0271,0204,0163,0014, \
+0251,0154,0064,0321,0175,0020,0111,0020,0220,0260,0317,0040,0252,0154,0200,0204, \
+0274,0055,0103,0003,0314,0372,0063,0010,0336,0330,0305,0336,0112,0012,0077,0127, \
+0073,0210,0173,0370,0023,0364,0147,0313,0131,0353,0100,0244,0173,0055,0235,0141, \
+0265,0301,0206,0144,0037,0363,0233,0331,0234,0333,0136,0320,0377,0206,0112,0175, \
+0337,0172,0175,0072,0303,0157,0274,0244,0117,0257,0007,0074,0314,0244,0301,0162, \
+0210,0151,0022,0322,0143,0101,0274,0152,0053,0307,0052,0011,0120,0117,0333,0176, \
+0342,0376,0007,0115,0260,0010,0147,0221,0153,0343,0074,0046,0054,0102,0202,0364, \
+0120,0336,0002,0244,0044,0111,0010,0205,0045,0062,0207,0331,0221,0343,0103,0026, \
+0113,0333,0152,0221,0060,0244,0040,0211,0016,0151,0121,0106,0270,0040,0361,0345, \
+0323,0067,0264,0006,0135,0112,0043,0276,0026,0132,0024,0230,0251,0122,0161,0012, \
+0246,0151,0300,0141,0204,0345,0220,0014,0110,0012,0120,0050,0246,0056,0304,0203, \
+0251,0273,0326,0312,0124,0136,0020,0160,0120,0127,0230,0030,0124,0352,0315,0136, \
+0155,0170,0240,0350,0061,0056,0321,0117,0350,0310,0253,0136,0206,0134,0333,0056, \
+0312,0323,0262,0012,0251,0007,0365,0302,0063,0323,0176,0035,0330,0024,0004,0267, \
+0104,0155,0017,0126,0103,0360,0104,0303,0030,0062,0357,0204,0202,0166,0301,0035, \
+0200,0206,0020,0067,0015,0301,0352,0257,0103,0350,0135,0021,0031,0367,0307,0152, \
+0243,0111,0027,0264,0332,0302,0232,0222,0057,0263,0063,0364,0346,0337,0145,0376, \
+0133,0040,0375,0314,0335,0361,0367,0244,0000,0242,0000,0177,0121,0142,0356,0321, \
+0372,0167,0133,0351,0363,0212,0174,0267,0131,0344,0014,0036,0337,0200,0360,0056, \
+0235,0361,0005,0202,0365,0307,0266,0212,0262,0317,0307,0306,0256,0230,0142,0037, \
+0236,0364,0353,0057,0014,0172,0224,0336,0230,0323,0265,0135,0045,0377,0105,0334, \
+0221,0116,0024,0044,0072,0300,0351,0205,0200, \
diff --git a/include-minimal/applet_tables.h b/include-minimal/applet_tables.h
index 2e9b5e7..a082ee1 100644
--- a/include-minimal/applet_tables.h
+++ b/include-minimal/applet_tables.h
@@ -520,5 +520,3 @@ const uint16_t applet_nameofs[] ALIGN2 = {
0x0412,
};
-
-#define MAX_APPLET_NAME_LEN 11
diff --git a/include-minimal/applets.h b/include-minimal/applets.h
index 7b47429..f24268a 100644
--- a/include-minimal/applets.h
+++ b/include-minimal/applets.h
@@ -53,6 +53,12 @@ s - suid type:
# define APPLET_NOEXEC(name,main,l,s,name2) LINK l name
# define APPLET_NOFORK(name,main,l,s,name2) LINK l name
+#elif defined(MAKE_SUID)
+# define APPLET(name,l,s) SUID s l name
+# define APPLET_ODDNAME(name,main,l,s,name2) SUID s l name
+# define APPLET_NOEXEC(name,main,l,s,name2) SUID s l name
+# define APPLET_NOFORK(name,main,l,s,name2) SUID s l name
+
#else
static struct bb_applet applets[] = { /* name, main, location, need_suid */
# define APPLET(name,l,s) { #name, #name, l, s },
@@ -67,8 +73,30 @@ s - suid type:
#endif
+IF_AR(APPLET(ar, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_UNCOMPRESS(APPLET(uncompress, BB_DIR_BIN, BB_SUID_DROP))
+IF_GUNZIP(APPLET(gunzip, BB_DIR_BIN, BB_SUID_DROP))
+IF_GUNZIP(APPLET_ODDNAME(zcat, gunzip, BB_DIR_BIN, BB_SUID_DROP, zcat))
IF_BUNZIP2(APPLET(bunzip2, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_BUNZIP2(APPLET_ODDNAME(bzcat, bunzip2, BB_DIR_USR_BIN, BB_SUID_DROP, bzcat))
+IF_UNLZMA(APPLET(unlzma, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_UNLZMA(APPLET_ODDNAME(lzcat, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzcat))
+IF_LZMA(APPLET_ODDNAME(lzma, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzma))
+IF_UNXZ(APPLET(unxz, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_UNXZ(APPLET_ODDNAME(xzcat, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xzcat))
+IF_XZ(APPLET_ODDNAME(xz, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xz))
+IF_BZIP2(APPLET(bzip2, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_CPIO(APPLET(cpio, BB_DIR_BIN, BB_SUID_DROP))
+IF_DPKG(APPLET(dpkg, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_DPKG_DEB(APPLET_ODDNAME(dpkg-deb, dpkg_deb, BB_DIR_USR_BIN, BB_SUID_DROP, dpkg_deb))
+IF_GZIP(APPLET(gzip, BB_DIR_BIN, BB_SUID_DROP))
+IF_LZOP(APPLET(lzop, BB_DIR_BIN, BB_SUID_DROP))
+IF_LZOP(APPLET_ODDNAME(lzopcat, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, lzopcat))
+IF_LZOP(APPLET_ODDNAME(unlzop, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, unlzop))
+IF_RPM2CPIO(APPLET(rpm2cpio, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_RPM(APPLET(rpm, BB_DIR_BIN, BB_SUID_DROP))
+IF_TAR(APPLET(tar, BB_DIR_BIN, BB_SUID_DROP))
+IF_UNZIP(APPLET(unzip, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_DATE(APPLET(date, BB_DIR_BIN, BB_SUID_DROP))
IF_HOSTID(APPLET_NOFORK(hostid, hostid, BB_DIR_USR_BIN, BB_SUID_DROP, hostid))
IF_GROUPS(APPLET_NOEXEC(groups, id, BB_DIR_USR_BIN, BB_SUID_DROP, groups))
@@ -77,7 +105,12 @@ IF_TOUCH(APPLET_NOFORK(touch, touch, BB_DIR_BIN, BB_SUID_DROP, touch))
IF_BASE64(APPLET(base64, BB_DIR_BIN, BB_SUID_DROP))
IF_USERS(APPLET_ODDNAME(users, who, BB_DIR_USR_BIN, BB_SUID_DROP, users))
IF_WHO( APPLET( who, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_AWK(APPLET_NOEXEC(awk, awk, BB_DIR_USR_BIN, BB_SUID_DROP, awk))
+IF_CMP(APPLET(cmp, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_DIFF(APPLET(diff, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_ED(APPLET(ed, BB_DIR_BIN, BB_SUID_DROP))
IF_PATCH(APPLET(patch, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_SED(APPLET(sed, BB_DIR_BIN, BB_SUID_DROP))
IF_VI(APPLET(vi, BB_DIR_BIN, BB_SUID_DROP))
IF_FIND(APPLET_NOEXEC(find, find, BB_DIR_USR_BIN, BB_SUID_DROP, find))
IF_GREP(APPLET(grep, BB_DIR_BIN, BB_SUID_DROP))
@@ -95,7 +128,8 @@ IF_ADD_SHELL( APPLET_ODDNAME(add-shell , add_remove_shell, BB_DIR_USR_SBIN,
IF_REMOVE_SHELL(APPLET_ODDNAME(remove-shell, add_remove_shell, BB_DIR_USR_SBIN, BB_SUID_DROP, remove_shell))
IF_CONSPY(APPLET(conspy, BB_DIR_BIN, BB_SUID_DROP))
IF_NANDWRITE(APPLET(nandwrite, BB_DIR_USR_SBIN, BB_SUID_DROP))
-IF_NANDWRITE(APPLET_ODDNAME(nanddump, nandwrite, BB_DIR_USR_SBIN, BB_SUID_DROP, nanddump))
+IF_NANDDUMP(APPLET_ODDNAME(nanddump, nandwrite, BB_DIR_USR_SBIN, BB_SUID_DROP, nanddump))
+IF_RFKILL(APPLET(rfkill, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_SETSERIAL(APPLET(setserial, BB_DIR_BIN, BB_SUID_DROP))
IF_UBIATTACH(APPLET_ODDNAME(ubiattach, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubiattach))
IF_UBIDETACH(APPLET_ODDNAME(ubidetach, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubidetach))
@@ -103,16 +137,17 @@ IF_UBIMKVOL(APPLET_ODDNAME(ubimkvol, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, u
IF_UBIRMVOL(APPLET_ODDNAME(ubirmvol, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubirmvol))
IF_UBIRSVOL(APPLET_ODDNAME(ubirsvol, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubirsvol))
IF_UBIUPDATEVOL(APPLET_ODDNAME(ubiupdatevol, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubiupdatevol))
+IF_WALL(APPLET(wall, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
IF_DEPMOD(APPLET(depmod, BB_DIR_SBIN, BB_SUID_DROP))
IF_INSMOD(APPLET(insmod, BB_DIR_SBIN, BB_SUID_DROP))
IF_LSMOD(APPLET(lsmod, BB_DIR_SBIN, BB_SUID_DROP))
IF_MODINFO(APPLET(modinfo, BB_DIR_SBIN, BB_SUID_DROP))
+IF_MODPROBE(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP))
IF_MODPROBE_SMALL(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP))
IF_MODPROBE_SMALL(APPLET_ODDNAME(depmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe))
IF_MODPROBE_SMALL(APPLET_ODDNAME(insmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe))
IF_MODPROBE_SMALL(APPLET_ODDNAME(lsmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe))
IF_MODPROBE_SMALL(APPLET_ODDNAME(rmmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe))
-IF_MODPROBE(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP))
IF_RMMOD(APPLET(rmmod, BB_DIR_SBIN, BB_SUID_DROP))
IF_NBDCLIENT(APPLET_ODDNAME(nbd-client, nbdclient, BB_DIR_USR_SBIN, BB_SUID_DROP, nbdclient))
IF_PING(APPLET(ping, BB_DIR_BIN, BB_SUID_MAYBE))
@@ -146,16 +181,13 @@ IF_ACPID(APPLET(acpid, BB_DIR_SBIN, BB_SUID_DROP))
IF_ADDGROUP(APPLET(addgroup, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_ADDUSER(APPLET(adduser, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_ADJTIMEX(APPLET(adjtimex, BB_DIR_SBIN, BB_SUID_DROP))
-IF_AR(APPLET(ar, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_ARP(APPLET(arp, BB_DIR_SBIN, BB_SUID_DROP))
IF_ARPING(APPLET(arping, BB_DIR_USR_SBIN, BB_SUID_DROP))
-IF_AWK(APPLET_NOEXEC(awk, awk, BB_DIR_USR_BIN, BB_SUID_DROP, awk))
IF_BASENAME(APPLET_NOFORK(basename, basename, BB_DIR_USR_BIN, BB_SUID_DROP, basename))
IF_BBCONFIG(APPLET(bbconfig, BB_DIR_BIN, BB_SUID_DROP))
IF_BEEP(APPLET(beep, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_BLKID(APPLET(blkid, BB_DIR_SBIN, BB_SUID_DROP))
IF_BRCTL(APPLET(brctl, BB_DIR_USR_SBIN, BB_SUID_DROP))
-IF_BZIP2(APPLET(bzip2, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_CAL(APPLET(cal, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_CAT(APPLET_NOFORK(cat, cat, BB_DIR_BIN, BB_SUID_DROP, cat))
IF_CATV(APPLET(catv, BB_DIR_BIN, BB_SUID_DROP))
@@ -172,10 +204,8 @@ IF_CHRT(APPLET(chrt, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_CHVT(APPLET(chvt, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_CKSUM(APPLET_NOEXEC(cksum, cksum, BB_DIR_USR_BIN, BB_SUID_DROP, cksum))
IF_CLEAR(APPLET(clear, BB_DIR_USR_BIN, BB_SUID_DROP))
-IF_CMP(APPLET(cmp, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_COMM(APPLET(comm, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_CP(APPLET_NOEXEC(cp, cp, BB_DIR_BIN, BB_SUID_DROP, cp))
-IF_CPIO(APPLET(cpio, BB_DIR_BIN, BB_SUID_DROP))
IF_CROND(APPLET(crond, BB_DIR_USR_SBIN, BB_SUID_DROP))
/* Needs to be run by root or be suid root - needs to change /var/spool/cron* files: */
IF_CRONTAB(APPLET(crontab, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
@@ -190,21 +220,17 @@ IF_DEVFSD(APPLET(devfsd, BB_DIR_SBIN, BB_SUID_DROP))
IF_DEVMEM(APPLET(devmem, BB_DIR_SBIN, BB_SUID_DROP))
IF_DF(APPLET(df, BB_DIR_BIN, BB_SUID_DROP))
IF_DHCPRELAY(APPLET(dhcprelay, BB_DIR_USR_SBIN, BB_SUID_DROP))
-IF_DIFF(APPLET(diff, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_DIRNAME(APPLET_NOFORK(dirname, dirname, BB_DIR_USR_BIN, BB_SUID_DROP, dirname))
IF_DMESG(APPLET(dmesg, BB_DIR_BIN, BB_SUID_DROP))
IF_DNSD(APPLET(dnsd, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_HOSTNAME(APPLET_ODDNAME(dnsdomainname, hostname, BB_DIR_BIN, BB_SUID_DROP, dnsdomainname))
IF_DOS2UNIX(APPLET_NOEXEC(dos2unix, dos2unix, BB_DIR_USR_BIN, BB_SUID_DROP, dos2unix))
-IF_DPKG(APPLET(dpkg, BB_DIR_USR_BIN, BB_SUID_DROP))
-IF_DPKG_DEB(APPLET_ODDNAME(dpkg-deb, dpkg_deb, BB_DIR_USR_BIN, BB_SUID_DROP, dpkg_deb))
IF_DU(APPLET(du, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_DUMPKMAP(APPLET(dumpkmap, BB_DIR_BIN, BB_SUID_DROP))
IF_DUMPLEASES(APPLET(dumpleases, BB_DIR_USR_BIN, BB_SUID_DROP))
//IF_E2FSCK(APPLET(e2fsck, BB_DIR_SBIN, BB_SUID_DROP))
//IF_E2LABEL(APPLET_ODDNAME(e2label, tune2fs, BB_DIR_SBIN, BB_SUID_DROP, e2label))
IF_ECHO(APPLET_NOFORK(echo, echo, BB_DIR_BIN, BB_SUID_DROP, echo))
-IF_ED(APPLET(ed, BB_DIR_BIN, BB_SUID_DROP))
IF_EJECT(APPLET(eject, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_ENV(APPLET_NOEXEC(env, env, BB_DIR_USR_BIN, BB_SUID_DROP, env))
IF_ENVDIR(APPLET_ODDNAME(envdir, chpst, BB_DIR_USR_BIN, BB_SUID_DROP, envdir))
@@ -243,8 +269,6 @@ IF_GETENFORCE(APPLET(getenforce, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_GETOPT(APPLET(getopt, BB_DIR_BIN, BB_SUID_DROP))
IF_GETSEBOOL(APPLET(getsebool, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_GETTY(APPLET(getty, BB_DIR_SBIN, BB_SUID_DROP))
-IF_GUNZIP(APPLET(gunzip, BB_DIR_BIN, BB_SUID_DROP))
-IF_GZIP(APPLET(gzip, BB_DIR_BIN, BB_SUID_DROP))
IF_HD(APPLET_NOEXEC(hd, hexdump, BB_DIR_USR_BIN, BB_SUID_DROP, hd))
IF_HDPARM(APPLET(hdparm, BB_DIR_SBIN, BB_SUID_DROP))
IF_HEAD(APPLET_NOEXEC(head, head, BB_DIR_USR_BIN, BB_SUID_DROP, head))
@@ -303,13 +327,9 @@ IF_LS(APPLET_NOEXEC(ls, ls, BB_DIR_BIN, BB_SUID_DROP, ls))
IF_LSATTR(APPLET(lsattr, BB_DIR_BIN, BB_SUID_DROP))
IF_LSPCI(APPLET(lspci, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_LSUSB(APPLET(lsusb, BB_DIR_USR_BIN, BB_SUID_DROP))
-IF_UNLZMA(APPLET_ODDNAME(lzcat, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzcat))
-IF_LZMA(APPLET_ODDNAME(lzma, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzma))
-IF_LZOP(APPLET(lzop, BB_DIR_BIN, BB_SUID_DROP))
-IF_LZOP(APPLET_ODDNAME(lzopcat, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, lzopcat))
IF_MAKEDEVS(APPLET(makedevs, BB_DIR_SBIN, BB_SUID_DROP))
IF_MAKEMIME(APPLET(makemime, BB_DIR_BIN, BB_SUID_DROP))
-IF_MAN(APPLET(man, BB_DIR_SBIN, BB_SUID_DROP))
+IF_MAN(APPLET(man, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_MATCHPATHCON(APPLET(matchpathcon, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_MD5SUM(APPLET_NOEXEC(md5sum, md5_sha1_sum, BB_DIR_USR_BIN, BB_SUID_DROP, md5sum))
IF_MICROCOM(APPLET(microcom, BB_DIR_USR_BIN, BB_SUID_DROP))
@@ -370,12 +390,9 @@ IF_RENICE(APPLET(renice, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_RESET(APPLET(reset, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_RESIZE(APPLET(resize, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_RESTORECON(APPLET_ODDNAME(restorecon, setfiles, BB_DIR_SBIN, BB_SUID_DROP, restorecon))
-IF_RFKILL(APPLET(rfkill, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_RM(APPLET_NOFORK(rm, rm, BB_DIR_BIN, BB_SUID_DROP, rm))
IF_RMDIR(APPLET_NOFORK(rmdir, rmdir, BB_DIR_BIN, BB_SUID_DROP, rmdir))
IF_ROUTE(APPLET(route, BB_DIR_SBIN, BB_SUID_DROP))
-IF_RPM(APPLET(rpm, BB_DIR_BIN, BB_SUID_DROP))
-IF_RPM2CPIO(APPLET(rpm2cpio, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_RTCWAKE(APPLET(rtcwake, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_RUN_PARTS(APPLET_ODDNAME(run-parts, run_parts, BB_DIR_BIN, BB_SUID_DROP, run_parts))
IF_RUNCON(APPLET(runcon, BB_DIR_USR_BIN, BB_SUID_DROP))
@@ -385,7 +402,6 @@ IF_RUNSVDIR(APPLET(runsvdir, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_RX(APPLET(rx, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_SCRIPT(APPLET(script, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_SCRIPTREPLAY(APPLET(scriptreplay, BB_DIR_BIN, BB_SUID_DROP))
-IF_SED(APPLET(sed, BB_DIR_BIN, BB_SUID_DROP))
IF_SELINUXENABLED(APPLET(selinuxenabled, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_SENDMAIL(APPLET(sendmail, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_SEQ(APPLET_NOFORK(seq, seq, BB_DIR_USR_BIN, BB_SUID_DROP, seq))
@@ -429,7 +445,6 @@ IF_BB_SYSCTL(APPLET(sysctl, BB_DIR_SBIN, BB_SUID_DROP))
IF_SYSLOGD(APPLET(syslogd, BB_DIR_SBIN, BB_SUID_DROP))
IF_TAC(APPLET_NOEXEC(tac, tac, BB_DIR_USR_BIN, BB_SUID_DROP, tac))
IF_TAIL(APPLET(tail, BB_DIR_USR_BIN, BB_SUID_DROP))
-IF_TAR(APPLET(tar, BB_DIR_BIN, BB_SUID_DROP))
IF_TASKSET(APPLET(taskset, BB_DIR_USR_BIN, BB_SUID_DROP))
/* IF_TC(APPLET(tc, BB_DIR_SBIN, BB_SUID_DROP)) */
IF_TCPSVD(APPLET_ODDNAME(tcpsvd, tcpudpsvd, BB_DIR_USR_BIN, BB_SUID_DROP, tcpsvd))
@@ -458,14 +473,9 @@ IF_UDHCPD(APPLET(udhcpd, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_UDPSVD(APPLET_ODDNAME(udpsvd, tcpudpsvd, BB_DIR_USR_BIN, BB_SUID_DROP, udpsvd))
IF_UMOUNT(APPLET(umount, BB_DIR_BIN, BB_SUID_DROP))
IF_UNAME(APPLET(uname, BB_DIR_BIN, BB_SUID_DROP))
-IF_UNCOMPRESS(APPLET(uncompress, BB_DIR_BIN, BB_SUID_DROP))
IF_UNEXPAND(APPLET_ODDNAME(unexpand, expand, BB_DIR_USR_BIN, BB_SUID_DROP, unexpand))
IF_UNIQ(APPLET(uniq, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_UNIX2DOS(APPLET_NOEXEC(unix2dos, dos2unix, BB_DIR_USR_BIN, BB_SUID_DROP, unix2dos))
-IF_UNXZ(APPLET(unxz, BB_DIR_USR_BIN, BB_SUID_DROP))
-IF_UNLZMA(APPLET(unlzma, BB_DIR_USR_BIN, BB_SUID_DROP))
-IF_LZOP(APPLET_ODDNAME(unlzop, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, unlzop))
-IF_UNZIP(APPLET(unzip, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_UPTIME(APPLET(uptime, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_USLEEP(APPLET_NOFORK(usleep, usleep, BB_DIR_BIN, BB_SUID_DROP, usleep))
IF_UUDECODE(APPLET(uudecode, BB_DIR_USR_BIN, BB_SUID_DROP))
@@ -474,21 +484,17 @@ IF_VCONFIG(APPLET(vconfig, BB_DIR_SBIN, BB_SUID_DROP))
/* Needs to be run by root or be suid root - needs to change uid and gid: */
IF_VLOCK(APPLET(vlock, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
IF_VOLNAME(APPLET(volname, BB_DIR_USR_BIN, BB_SUID_DROP))
-/* Needs to be run by root or be suid root - needs to write to /dev/TTY: */
-IF_WALL(APPLET(wall, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
IF_WATCH(APPLET(watch, BB_DIR_BIN, BB_SUID_DROP))
IF_WATCHDOG(APPLET(watchdog, BB_DIR_SBIN, BB_SUID_DROP))
IF_WC(APPLET(wc, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_WGET(APPLET(wget, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_WHICH(APPLET(which, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_WHOAMI(APPLET_NOFORK(whoami, whoami, BB_DIR_USR_BIN, BB_SUID_DROP, whoami))
-IF_UNXZ(APPLET_ODDNAME(xzcat, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xzcat))
-IF_XZ(APPLET_ODDNAME(xz, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xz))
IF_YES(APPLET_NOFORK(yes, yes, BB_DIR_USR_BIN, BB_SUID_DROP, yes))
-IF_GUNZIP(APPLET_ODDNAME(zcat, gunzip, BB_DIR_BIN, BB_SUID_DROP, zcat))
IF_ZCIP(APPLET(zcip, BB_DIR_SBIN, BB_SUID_DROP))
-#if !defined(PROTOTYPES) && !defined(NAME_MAIN_CNAME) && !defined(MAKE_USAGE)
+#if !defined(PROTOTYPES) && !defined(NAME_MAIN_CNAME) && !defined(MAKE_USAGE) \
+ && !defined(MAKE_LINKS) && !defined(MAKE_SUID)
};
#endif
diff --git a/include-minimal/autoconf.h b/include-minimal/autoconf.h
index 63d7e72..f9477fb 100644
--- a/include-minimal/autoconf.h
+++ b/include-minimal/autoconf.h
@@ -1,12 +1,16 @@
/*
* Automatically generated C config: don't edit
- * Busybox version: 1.21.1-kk
+ * Busybox version: 1.22.1
*/
-#define AUTOCONF_TIMESTAMP "2013-11-24 11:52 +0100"
+#define AUTOCONF_TIMESTAMP "2014-04-04 19:53 +0100"
#define CONFIG_HAVE_DOT_CONFIG 1
#define ENABLE_HAVE_DOT_CONFIG 1
-#define IF_HAVE_DOT_CONFIG(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_HAVE_DOT_CONFIG(...) __VA_ARGS__ "CONFIG_HAVE_DOT_CONFIG"
+#else
+# define IF_HAVE_DOT_CONFIG(...) __VA_ARGS__
+#endif
#define IF_NOT_HAVE_DOT_CONFIG(...)
/*
@@ -34,11 +38,19 @@
#define IF_NOT_USE_PORTABLE_CODE(...) __VA_ARGS__
#define CONFIG_PLATFORM_LINUX 1
#define ENABLE_PLATFORM_LINUX 1
-#define IF_PLATFORM_LINUX(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PLATFORM_LINUX(...) __VA_ARGS__ "CONFIG_PLATFORM_LINUX"
+#else
+# define IF_PLATFORM_LINUX(...) __VA_ARGS__
+#endif
#define IF_NOT_PLATFORM_LINUX(...)
#define CONFIG_FEATURE_BUFFERS_USE_MALLOC 1
#define ENABLE_FEATURE_BUFFERS_USE_MALLOC 1
-#define IF_FEATURE_BUFFERS_USE_MALLOC(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_BUFFERS_USE_MALLOC(...) __VA_ARGS__ "CONFIG_FEATURE_BUFFERS_USE_MALLOC"
+#else
+# define IF_FEATURE_BUFFERS_USE_MALLOC(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_BUFFERS_USE_MALLOC(...)
#undef CONFIG_FEATURE_BUFFERS_GO_ON_STACK
#define ENABLE_FEATURE_BUFFERS_GO_ON_STACK 0
@@ -50,15 +62,27 @@
#define IF_NOT_FEATURE_BUFFERS_GO_IN_BSS(...) __VA_ARGS__
#define CONFIG_SHOW_USAGE 1
#define ENABLE_SHOW_USAGE 1
-#define IF_SHOW_USAGE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SHOW_USAGE(...) __VA_ARGS__ "CONFIG_SHOW_USAGE"
+#else
+# define IF_SHOW_USAGE(...) __VA_ARGS__
+#endif
#define IF_NOT_SHOW_USAGE(...)
#define CONFIG_FEATURE_VERBOSE_USAGE 1
#define ENABLE_FEATURE_VERBOSE_USAGE 1
-#define IF_FEATURE_VERBOSE_USAGE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_VERBOSE_USAGE(...) __VA_ARGS__ "CONFIG_FEATURE_VERBOSE_USAGE"
+#else
+# define IF_FEATURE_VERBOSE_USAGE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_VERBOSE_USAGE(...)
#define CONFIG_FEATURE_COMPRESS_USAGE 1
#define ENABLE_FEATURE_COMPRESS_USAGE 1
-#define IF_FEATURE_COMPRESS_USAGE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_COMPRESS_USAGE(...) __VA_ARGS__ "CONFIG_FEATURE_COMPRESS_USAGE"
+#else
+# define IF_FEATURE_COMPRESS_USAGE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_COMPRESS_USAGE(...)
#undef CONFIG_FEATURE_INSTALLER
#define ENABLE_FEATURE_INSTALLER 0
@@ -66,7 +90,11 @@
#define IF_NOT_FEATURE_INSTALLER(...) __VA_ARGS__
#define CONFIG_INSTALL_NO_USR 1
#define ENABLE_INSTALL_NO_USR 1
-#define IF_INSTALL_NO_USR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_INSTALL_NO_USR(...) __VA_ARGS__ "CONFIG_INSTALL_NO_USR"
+#else
+# define IF_INSTALL_NO_USR(...) __VA_ARGS__
+#endif
#define IF_NOT_INSTALL_NO_USR(...)
#undef CONFIG_LOCALE_SUPPORT
#define ENABLE_LOCALE_SUPPORT 0
@@ -74,7 +102,11 @@
#define IF_NOT_LOCALE_SUPPORT(...) __VA_ARGS__
#define CONFIG_UNICODE_SUPPORT 1
#define ENABLE_UNICODE_SUPPORT 1
-#define IF_UNICODE_SUPPORT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UNICODE_SUPPORT(...) __VA_ARGS__ "CONFIG_UNICODE_SUPPORT"
+#else
+# define IF_UNICODE_SUPPORT(...) __VA_ARGS__
+#endif
#define IF_NOT_UNICODE_SUPPORT(...)
#undef CONFIG_UNICODE_USING_LOCALE
#define ENABLE_UNICODE_USING_LOCALE 0
@@ -86,11 +118,19 @@
#define IF_NOT_FEATURE_CHECK_UNICODE_IN_ENV(...) __VA_ARGS__
#define CONFIG_SUBST_WCHAR 63
#define ENABLE_SUBST_WCHAR 1
-#define IF_SUBST_WCHAR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SUBST_WCHAR(...) __VA_ARGS__ "CONFIG_SUBST_WCHAR"
+#else
+# define IF_SUBST_WCHAR(...) __VA_ARGS__
+#endif
#define IF_NOT_SUBST_WCHAR(...)
#define CONFIG_LAST_SUPPORTED_WCHAR 0
#define ENABLE_LAST_SUPPORTED_WCHAR 1
-#define IF_LAST_SUPPORTED_WCHAR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LAST_SUPPORTED_WCHAR(...) __VA_ARGS__ "CONFIG_LAST_SUPPORTED_WCHAR"
+#else
+# define IF_LAST_SUPPORTED_WCHAR(...) __VA_ARGS__
+#endif
#define IF_NOT_LAST_SUPPORTED_WCHAR(...)
#undef CONFIG_UNICODE_COMBINING_WCHARS
#define ENABLE_UNICODE_COMBINING_WCHARS 0
@@ -98,7 +138,11 @@
#define IF_NOT_UNICODE_COMBINING_WCHARS(...) __VA_ARGS__
#define CONFIG_UNICODE_WIDE_WCHARS 1
#define ENABLE_UNICODE_WIDE_WCHARS 1
-#define IF_UNICODE_WIDE_WCHARS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UNICODE_WIDE_WCHARS(...) __VA_ARGS__ "CONFIG_UNICODE_WIDE_WCHARS"
+#else
+# define IF_UNICODE_WIDE_WCHARS(...) __VA_ARGS__
+#endif
#define IF_NOT_UNICODE_WIDE_WCHARS(...)
#undef CONFIG_UNICODE_BIDI_SUPPORT
#define ENABLE_UNICODE_BIDI_SUPPORT 0
@@ -110,11 +154,19 @@
#define IF_NOT_UNICODE_NEUTRAL_TABLE(...) __VA_ARGS__
#define CONFIG_UNICODE_PRESERVE_BROKEN 1
#define ENABLE_UNICODE_PRESERVE_BROKEN 1
-#define IF_UNICODE_PRESERVE_BROKEN(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UNICODE_PRESERVE_BROKEN(...) __VA_ARGS__ "CONFIG_UNICODE_PRESERVE_BROKEN"
+#else
+# define IF_UNICODE_PRESERVE_BROKEN(...) __VA_ARGS__
+#endif
#define IF_NOT_UNICODE_PRESERVE_BROKEN(...)
#define CONFIG_LONG_OPTS 1
#define ENABLE_LONG_OPTS 1
-#define IF_LONG_OPTS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LONG_OPTS(...) __VA_ARGS__ "CONFIG_LONG_OPTS"
+#else
+# define IF_LONG_OPTS(...) __VA_ARGS__
+#endif
#define IF_NOT_LONG_OPTS(...)
#undef CONFIG_FEATURE_DEVPTS
#define ENABLE_FEATURE_DEVPTS 0
@@ -138,11 +190,19 @@
#define IF_NOT_FEATURE_PIDFILE(...) __VA_ARGS__
#define CONFIG_PID_FILE_PATH ""
#define ENABLE_PID_FILE_PATH 1
-#define IF_PID_FILE_PATH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PID_FILE_PATH(...) __VA_ARGS__ "CONFIG_PID_FILE_PATH"
+#else
+# define IF_PID_FILE_PATH(...) __VA_ARGS__
+#endif
#define IF_NOT_PID_FILE_PATH(...)
#define CONFIG_FEATURE_SUID 1
#define ENABLE_FEATURE_SUID 1
-#define IF_FEATURE_SUID(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_SUID(...) __VA_ARGS__ "CONFIG_FEATURE_SUID"
+#else
+# define IF_FEATURE_SUID(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_SUID(...)
#undef CONFIG_FEATURE_SUID_CONFIG
#define ENABLE_FEATURE_SUID_CONFIG 0
@@ -162,7 +222,11 @@
#define IF_NOT_FEATURE_PREFER_APPLETS(...) __VA_ARGS__
#define CONFIG_BUSYBOX_EXEC_PATH "/proc/self/exe"
#define ENABLE_BUSYBOX_EXEC_PATH 1
-#define IF_BUSYBOX_EXEC_PATH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_BUSYBOX_EXEC_PATH(...) __VA_ARGS__ "CONFIG_BUSYBOX_EXEC_PATH"
+#else
+# define IF_BUSYBOX_EXEC_PATH(...) __VA_ARGS__
+#endif
#define IF_NOT_BUSYBOX_EXEC_PATH(...)
#undef CONFIG_FEATURE_SYSLOG
#define ENABLE_FEATURE_SYSLOG 0
@@ -206,23 +270,43 @@
#define IF_NOT_LFS(...) __VA_ARGS__
#define CONFIG_CROSS_COMPILER_PREFIX "arm-eabi-"
#define ENABLE_CROSS_COMPILER_PREFIX 1
-#define IF_CROSS_COMPILER_PREFIX(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CROSS_COMPILER_PREFIX(...) __VA_ARGS__ "CONFIG_CROSS_COMPILER_PREFIX"
+#else
+# define IF_CROSS_COMPILER_PREFIX(...) __VA_ARGS__
+#endif
#define IF_NOT_CROSS_COMPILER_PREFIX(...)
#define CONFIG_SYSROOT ""
#define ENABLE_SYSROOT 1
-#define IF_SYSROOT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SYSROOT(...) __VA_ARGS__ "CONFIG_SYSROOT"
+#else
+# define IF_SYSROOT(...) __VA_ARGS__
+#endif
#define IF_NOT_SYSROOT(...)
#define CONFIG_EXTRA_CFLAGS "-Os -fno-short-enums -fgcse-after-reload -frerun-cse-after-loop -frename-registers"
#define ENABLE_EXTRA_CFLAGS 1
-#define IF_EXTRA_CFLAGS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_EXTRA_CFLAGS(...) __VA_ARGS__ "CONFIG_EXTRA_CFLAGS"
+#else
+# define IF_EXTRA_CFLAGS(...) __VA_ARGS__
+#endif
#define IF_NOT_EXTRA_CFLAGS(...)
#define CONFIG_EXTRA_LDFLAGS ""
#define ENABLE_EXTRA_LDFLAGS 1
-#define IF_EXTRA_LDFLAGS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_EXTRA_LDFLAGS(...) __VA_ARGS__ "CONFIG_EXTRA_LDFLAGS"
+#else
+# define IF_EXTRA_LDFLAGS(...) __VA_ARGS__
+#endif
#define IF_NOT_EXTRA_LDFLAGS(...)
#define CONFIG_EXTRA_LDLIBS ""
#define ENABLE_EXTRA_LDLIBS 1
-#define IF_EXTRA_LDLIBS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_EXTRA_LDLIBS(...) __VA_ARGS__ "CONFIG_EXTRA_LDLIBS"
+#else
+# define IF_EXTRA_LDLIBS(...) __VA_ARGS__
+#endif
#define IF_NOT_EXTRA_LDLIBS(...)
/*
@@ -242,7 +326,11 @@
#define IF_NOT_WERROR(...) __VA_ARGS__
#define CONFIG_NO_DEBUG_LIB 1
#define ENABLE_NO_DEBUG_LIB 1
-#define IF_NO_DEBUG_LIB(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_NO_DEBUG_LIB(...) __VA_ARGS__ "CONFIG_NO_DEBUG_LIB"
+#else
+# define IF_NO_DEBUG_LIB(...) __VA_ARGS__
+#endif
#define IF_NOT_NO_DEBUG_LIB(...)
#undef CONFIG_DMALLOC
#define ENABLE_DMALLOC 0
@@ -258,7 +346,11 @@
*/
#define CONFIG_INSTALL_APPLET_SYMLINKS 1
#define ENABLE_INSTALL_APPLET_SYMLINKS 1
-#define IF_INSTALL_APPLET_SYMLINKS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_INSTALL_APPLET_SYMLINKS(...) __VA_ARGS__ "CONFIG_INSTALL_APPLET_SYMLINKS"
+#else
+# define IF_INSTALL_APPLET_SYMLINKS(...) __VA_ARGS__
+#endif
#define IF_NOT_INSTALL_APPLET_SYMLINKS(...)
#undef CONFIG_INSTALL_APPLET_HARDLINKS
#define ENABLE_INSTALL_APPLET_HARDLINKS 0
@@ -286,7 +378,11 @@
#define IF_NOT_INSTALL_SH_APPLET_SCRIPT_WRAPPER(...) __VA_ARGS__
#define CONFIG_PREFIX "/system/xbin/bb"
#define ENABLE_PREFIX 1
-#define IF_PREFIX(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PREFIX(...) __VA_ARGS__ "CONFIG_PREFIX"
+#else
+# define IF_PREFIX(...) __VA_ARGS__
+#endif
#define IF_NOT_PREFIX(...)
/*
@@ -302,19 +398,35 @@
#define IF_NOT_FEATURE_RTMINMAX(...) __VA_ARGS__
#define CONFIG_PASSWORD_MINLEN 6
#define ENABLE_PASSWORD_MINLEN 1
-#define IF_PASSWORD_MINLEN(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PASSWORD_MINLEN(...) __VA_ARGS__ "CONFIG_PASSWORD_MINLEN"
+#else
+# define IF_PASSWORD_MINLEN(...) __VA_ARGS__
+#endif
#define IF_NOT_PASSWORD_MINLEN(...)
#define CONFIG_MD5_SMALL 0
#define ENABLE_MD5_SMALL 1
-#define IF_MD5_SMALL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MD5_SMALL(...) __VA_ARGS__ "CONFIG_MD5_SMALL"
+#else
+# define IF_MD5_SMALL(...) __VA_ARGS__
+#endif
#define IF_NOT_MD5_SMALL(...)
#define CONFIG_SHA3_SMALL 1
#define ENABLE_SHA3_SMALL 1
-#define IF_SHA3_SMALL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SHA3_SMALL(...) __VA_ARGS__ "CONFIG_SHA3_SMALL"
+#else
+# define IF_SHA3_SMALL(...) __VA_ARGS__
+#endif
#define IF_NOT_SHA3_SMALL(...)
#define CONFIG_FEATURE_FAST_TOP 1
#define ENABLE_FEATURE_FAST_TOP 1
-#define IF_FEATURE_FAST_TOP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FAST_TOP(...) __VA_ARGS__ "CONFIG_FEATURE_FAST_TOP"
+#else
+# define IF_FEATURE_FAST_TOP(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FAST_TOP(...)
#undef CONFIG_FEATURE_ETC_NETWORKS
#define ENABLE_FEATURE_ETC_NETWORKS 0
@@ -322,39 +434,75 @@
#define IF_NOT_FEATURE_ETC_NETWORKS(...) __VA_ARGS__
#define CONFIG_FEATURE_USE_TERMIOS 1
#define ENABLE_FEATURE_USE_TERMIOS 1
-#define IF_FEATURE_USE_TERMIOS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_USE_TERMIOS(...) __VA_ARGS__ "CONFIG_FEATURE_USE_TERMIOS"
+#else
+# define IF_FEATURE_USE_TERMIOS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_USE_TERMIOS(...)
#define CONFIG_FEATURE_EDITING 1
#define ENABLE_FEATURE_EDITING 1
-#define IF_FEATURE_EDITING(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_EDITING(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING"
+#else
+# define IF_FEATURE_EDITING(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_EDITING(...)
#define CONFIG_FEATURE_EDITING_MAX_LEN 1024
#define ENABLE_FEATURE_EDITING_MAX_LEN 1
-#define IF_FEATURE_EDITING_MAX_LEN(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_EDITING_MAX_LEN(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_MAX_LEN"
+#else
+# define IF_FEATURE_EDITING_MAX_LEN(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_EDITING_MAX_LEN(...)
#define CONFIG_FEATURE_EDITING_VI 1
#define ENABLE_FEATURE_EDITING_VI 1
-#define IF_FEATURE_EDITING_VI(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_EDITING_VI(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_VI"
+#else
+# define IF_FEATURE_EDITING_VI(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_EDITING_VI(...)
#define CONFIG_FEATURE_EDITING_HISTORY 256
#define ENABLE_FEATURE_EDITING_HISTORY 1
-#define IF_FEATURE_EDITING_HISTORY(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_EDITING_HISTORY(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_HISTORY"
+#else
+# define IF_FEATURE_EDITING_HISTORY(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_EDITING_HISTORY(...)
#define CONFIG_FEATURE_EDITING_SAVEHISTORY 1
#define ENABLE_FEATURE_EDITING_SAVEHISTORY 1
-#define IF_FEATURE_EDITING_SAVEHISTORY(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_EDITING_SAVEHISTORY(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_SAVEHISTORY"
+#else
+# define IF_FEATURE_EDITING_SAVEHISTORY(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_EDITING_SAVEHISTORY(...)
#define CONFIG_FEATURE_EDITING_SAVE_ON_EXIT 1
#define ENABLE_FEATURE_EDITING_SAVE_ON_EXIT 1
-#define IF_FEATURE_EDITING_SAVE_ON_EXIT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_EDITING_SAVE_ON_EXIT(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_SAVE_ON_EXIT"
+#else
+# define IF_FEATURE_EDITING_SAVE_ON_EXIT(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_EDITING_SAVE_ON_EXIT(...)
#define CONFIG_FEATURE_REVERSE_SEARCH 1
#define ENABLE_FEATURE_REVERSE_SEARCH 1
-#define IF_FEATURE_REVERSE_SEARCH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_REVERSE_SEARCH(...) __VA_ARGS__ "CONFIG_FEATURE_REVERSE_SEARCH"
+#else
+# define IF_FEATURE_REVERSE_SEARCH(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_REVERSE_SEARCH(...)
#define CONFIG_FEATURE_TAB_COMPLETION 1
#define ENABLE_FEATURE_TAB_COMPLETION 1
-#define IF_FEATURE_TAB_COMPLETION(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TAB_COMPLETION(...) __VA_ARGS__ "CONFIG_FEATURE_TAB_COMPLETION"
+#else
+# define IF_FEATURE_TAB_COMPLETION(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TAB_COMPLETION(...)
#undef CONFIG_FEATURE_USERNAME_COMPLETION
#define ENABLE_FEATURE_USERNAME_COMPLETION 0
@@ -362,7 +510,11 @@
#define IF_NOT_FEATURE_USERNAME_COMPLETION(...) __VA_ARGS__
#define CONFIG_FEATURE_EDITING_FANCY_PROMPT 1
#define ENABLE_FEATURE_EDITING_FANCY_PROMPT 1
-#define IF_FEATURE_EDITING_FANCY_PROMPT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_EDITING_FANCY_PROMPT(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_FANCY_PROMPT"
+#else
+# define IF_FEATURE_EDITING_FANCY_PROMPT(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_EDITING_FANCY_PROMPT(...)
#undef CONFIG_FEATURE_EDITING_ASK_TERMINAL
#define ENABLE_FEATURE_EDITING_ASK_TERMINAL 0
@@ -370,7 +522,11 @@
#define IF_NOT_FEATURE_EDITING_ASK_TERMINAL(...) __VA_ARGS__
#define CONFIG_FEATURE_NON_POSIX_CP 1
#define ENABLE_FEATURE_NON_POSIX_CP 1
-#define IF_FEATURE_NON_POSIX_CP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_NON_POSIX_CP(...) __VA_ARGS__ "CONFIG_FEATURE_NON_POSIX_CP"
+#else
+# define IF_FEATURE_NON_POSIX_CP(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_NON_POSIX_CP(...)
#undef CONFIG_FEATURE_VERBOSE_CP_MESSAGE
#define ENABLE_FEATURE_VERBOSE_CP_MESSAGE 0
@@ -378,19 +534,35 @@
#define IF_NOT_FEATURE_VERBOSE_CP_MESSAGE(...) __VA_ARGS__
#define CONFIG_FEATURE_COPYBUF_KB 4
#define ENABLE_FEATURE_COPYBUF_KB 1
-#define IF_FEATURE_COPYBUF_KB(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_COPYBUF_KB(...) __VA_ARGS__ "CONFIG_FEATURE_COPYBUF_KB"
+#else
+# define IF_FEATURE_COPYBUF_KB(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_COPYBUF_KB(...)
#define CONFIG_FEATURE_SKIP_ROOTFS 1
#define ENABLE_FEATURE_SKIP_ROOTFS 1
-#define IF_FEATURE_SKIP_ROOTFS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_SKIP_ROOTFS(...) __VA_ARGS__ "CONFIG_FEATURE_SKIP_ROOTFS"
+#else
+# define IF_FEATURE_SKIP_ROOTFS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_SKIP_ROOTFS(...)
#define CONFIG_MONOTONIC_SYSCALL 1
#define ENABLE_MONOTONIC_SYSCALL 1
-#define IF_MONOTONIC_SYSCALL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MONOTONIC_SYSCALL(...) __VA_ARGS__ "CONFIG_MONOTONIC_SYSCALL"
+#else
+# define IF_MONOTONIC_SYSCALL(...) __VA_ARGS__
+#endif
#define IF_NOT_MONOTONIC_SYSCALL(...)
#define CONFIG_IOCTL_HEX2STR_ERROR 1
#define ENABLE_IOCTL_HEX2STR_ERROR 1
-#define IF_IOCTL_HEX2STR_ERROR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_IOCTL_HEX2STR_ERROR(...) __VA_ARGS__ "CONFIG_IOCTL_HEX2STR_ERROR"
+#else
+# define IF_IOCTL_HEX2STR_ERROR(...) __VA_ARGS__
+#endif
#define IF_NOT_IOCTL_HEX2STR_ERROR(...)
#undef CONFIG_FEATURE_HWIB
#define ENABLE_FEATURE_HWIB 0
@@ -414,11 +586,19 @@
#define IF_NOT_FEATURE_SEAMLESS_LZMA(...) __VA_ARGS__
#define CONFIG_FEATURE_SEAMLESS_BZ2 1
#define ENABLE_FEATURE_SEAMLESS_BZ2 1
-#define IF_FEATURE_SEAMLESS_BZ2(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_SEAMLESS_BZ2(...) __VA_ARGS__ "CONFIG_FEATURE_SEAMLESS_BZ2"
+#else
+# define IF_FEATURE_SEAMLESS_BZ2(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_SEAMLESS_BZ2(...)
#define CONFIG_FEATURE_SEAMLESS_GZ 1
#define ENABLE_FEATURE_SEAMLESS_GZ 1
-#define IF_FEATURE_SEAMLESS_GZ(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_SEAMLESS_GZ(...) __VA_ARGS__ "CONFIG_FEATURE_SEAMLESS_GZ"
+#else
+# define IF_FEATURE_SEAMLESS_GZ(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_SEAMLESS_GZ(...)
#undef CONFIG_FEATURE_SEAMLESS_Z
#define ENABLE_FEATURE_SEAMLESS_Z 0
@@ -436,21 +616,77 @@
#define ENABLE_FEATURE_AR_CREATE 0
#define IF_FEATURE_AR_CREATE(...)
#define IF_NOT_FEATURE_AR_CREATE(...) __VA_ARGS__
+#undef CONFIG_UNCOMPRESS
+#define ENABLE_UNCOMPRESS 0
+#define IF_UNCOMPRESS(...)
+#define IF_NOT_UNCOMPRESS(...) __VA_ARGS__
+#define CONFIG_GUNZIP 1
+#define ENABLE_GUNZIP 1
+#ifdef MAKE_SUID
+# define IF_GUNZIP(...) __VA_ARGS__ "CONFIG_GUNZIP"
+#else
+# define IF_GUNZIP(...) __VA_ARGS__
+#endif
+#define IF_NOT_GUNZIP(...)
#define CONFIG_BUNZIP2 1
#define ENABLE_BUNZIP2 1
-#define IF_BUNZIP2(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_BUNZIP2(...) __VA_ARGS__ "CONFIG_BUNZIP2"
+#else
+# define IF_BUNZIP2(...) __VA_ARGS__
+#endif
#define IF_NOT_BUNZIP2(...)
+#define CONFIG_UNLZMA 1
+#define ENABLE_UNLZMA 1
+#ifdef MAKE_SUID
+# define IF_UNLZMA(...) __VA_ARGS__ "CONFIG_UNLZMA"
+#else
+# define IF_UNLZMA(...) __VA_ARGS__
+#endif
+#define IF_NOT_UNLZMA(...)
+#undef CONFIG_FEATURE_LZMA_FAST
+#define ENABLE_FEATURE_LZMA_FAST 0
+#define IF_FEATURE_LZMA_FAST(...)
+#define IF_NOT_FEATURE_LZMA_FAST(...) __VA_ARGS__
+#undef CONFIG_LZMA
+#define ENABLE_LZMA 0
+#define IF_LZMA(...)
+#define IF_NOT_LZMA(...) __VA_ARGS__
+#define CONFIG_UNXZ 1
+#define ENABLE_UNXZ 1
+#ifdef MAKE_SUID
+# define IF_UNXZ(...) __VA_ARGS__ "CONFIG_UNXZ"
+#else
+# define IF_UNXZ(...) __VA_ARGS__
+#endif
+#define IF_NOT_UNXZ(...)
+#undef CONFIG_XZ
+#define ENABLE_XZ 0
+#define IF_XZ(...)
+#define IF_NOT_XZ(...) __VA_ARGS__
#define CONFIG_BZIP2 1
#define ENABLE_BZIP2 1
-#define IF_BZIP2(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_BZIP2(...) __VA_ARGS__ "CONFIG_BZIP2"
+#else
+# define IF_BZIP2(...) __VA_ARGS__
+#endif
#define IF_NOT_BZIP2(...)
#define CONFIG_CPIO 1
#define ENABLE_CPIO 1
-#define IF_CPIO(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CPIO(...) __VA_ARGS__ "CONFIG_CPIO"
+#else
+# define IF_CPIO(...) __VA_ARGS__
+#endif
#define IF_NOT_CPIO(...)
#define CONFIG_FEATURE_CPIO_O 1
#define ENABLE_FEATURE_CPIO_O 1
-#define IF_FEATURE_CPIO_O(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_CPIO_O(...) __VA_ARGS__ "CONFIG_FEATURE_CPIO_O"
+#else
+# define IF_FEATURE_CPIO_O(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_CPIO_O(...)
#undef CONFIG_FEATURE_CPIO_P
#define ENABLE_FEATURE_CPIO_P 0
@@ -468,25 +704,37 @@
#define ENABLE_FEATURE_DPKG_DEB_EXTRACT_ONLY 0
#define IF_FEATURE_DPKG_DEB_EXTRACT_ONLY(...)
#define IF_NOT_FEATURE_DPKG_DEB_EXTRACT_ONLY(...) __VA_ARGS__
-#define CONFIG_GUNZIP 1
-#define ENABLE_GUNZIP 1
-#define IF_GUNZIP(...) __VA_ARGS__
-#define IF_NOT_GUNZIP(...)
#define CONFIG_GZIP 1
#define ENABLE_GZIP 1
-#define IF_GZIP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_GZIP(...) __VA_ARGS__ "CONFIG_GZIP"
+#else
+# define IF_GZIP(...) __VA_ARGS__
+#endif
#define IF_NOT_GZIP(...)
#define CONFIG_FEATURE_GZIP_LONG_OPTIONS 1
#define ENABLE_FEATURE_GZIP_LONG_OPTIONS 1
-#define IF_FEATURE_GZIP_LONG_OPTIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_GZIP_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_GZIP_LONG_OPTIONS"
+#else
+# define IF_FEATURE_GZIP_LONG_OPTIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_GZIP_LONG_OPTIONS(...)
#define CONFIG_GZIP_FAST 2
#define ENABLE_GZIP_FAST 1
-#define IF_GZIP_FAST(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_GZIP_FAST(...) __VA_ARGS__ "CONFIG_GZIP_FAST"
+#else
+# define IF_GZIP_FAST(...) __VA_ARGS__
+#endif
#define IF_NOT_GZIP_FAST(...)
#define CONFIG_LZOP 1
#define ENABLE_LZOP 1
-#define IF_LZOP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LZOP(...) __VA_ARGS__ "CONFIG_LZOP"
+#else
+# define IF_LZOP(...) __VA_ARGS__
+#endif
#define IF_NOT_LZOP(...)
#undef CONFIG_LZOP_COMPR_HIGH
#define ENABLE_LZOP_COMPR_HIGH 0
@@ -502,11 +750,19 @@
#define IF_NOT_RPM(...) __VA_ARGS__
#define CONFIG_TAR 1
#define ENABLE_TAR 1
-#define IF_TAR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TAR(...) __VA_ARGS__ "CONFIG_TAR"
+#else
+# define IF_TAR(...) __VA_ARGS__
+#endif
#define IF_NOT_TAR(...)
#define CONFIG_FEATURE_TAR_CREATE 1
#define ENABLE_FEATURE_TAR_CREATE 1
-#define IF_FEATURE_TAR_CREATE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TAR_CREATE(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_CREATE"
+#else
+# define IF_FEATURE_TAR_CREATE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TAR_CREATE(...)
#undef CONFIG_FEATURE_TAR_AUTODETECT
#define ENABLE_FEATURE_TAR_AUTODETECT 0
@@ -514,7 +770,11 @@
#define IF_NOT_FEATURE_TAR_AUTODETECT(...) __VA_ARGS__
#define CONFIG_FEATURE_TAR_FROM 1
#define ENABLE_FEATURE_TAR_FROM 1
-#define IF_FEATURE_TAR_FROM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TAR_FROM(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_FROM"
+#else
+# define IF_FEATURE_TAR_FROM(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TAR_FROM(...)
#undef CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY
#define ENABLE_FEATURE_TAR_OLDGNU_COMPATIBILITY 0
@@ -526,11 +786,19 @@
#define IF_NOT_FEATURE_TAR_OLDSUN_COMPATIBILITY(...) __VA_ARGS__
#define CONFIG_FEATURE_TAR_GNU_EXTENSIONS 1
#define ENABLE_FEATURE_TAR_GNU_EXTENSIONS 1
-#define IF_FEATURE_TAR_GNU_EXTENSIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TAR_GNU_EXTENSIONS(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_GNU_EXTENSIONS"
+#else
+# define IF_FEATURE_TAR_GNU_EXTENSIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TAR_GNU_EXTENSIONS(...)
#define CONFIG_FEATURE_TAR_LONG_OPTIONS 1
#define ENABLE_FEATURE_TAR_LONG_OPTIONS 1
-#define IF_FEATURE_TAR_LONG_OPTIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TAR_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_LONG_OPTIONS"
+#else
+# define IF_FEATURE_TAR_LONG_OPTIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TAR_LONG_OPTIONS(...)
#undef CONFIG_FEATURE_TAR_TO_COMMAND
#define ENABLE_FEATURE_TAR_TO_COMMAND 0
@@ -542,39 +810,23 @@
#define IF_NOT_FEATURE_TAR_UNAME_GNAME(...) __VA_ARGS__
#define CONFIG_FEATURE_TAR_NOPRESERVE_TIME 1
#define ENABLE_FEATURE_TAR_NOPRESERVE_TIME 1
-#define IF_FEATURE_TAR_NOPRESERVE_TIME(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TAR_NOPRESERVE_TIME(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_NOPRESERVE_TIME"
+#else
+# define IF_FEATURE_TAR_NOPRESERVE_TIME(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TAR_NOPRESERVE_TIME(...)
#undef CONFIG_FEATURE_TAR_SELINUX
#define ENABLE_FEATURE_TAR_SELINUX 0
#define IF_FEATURE_TAR_SELINUX(...)
#define IF_NOT_FEATURE_TAR_SELINUX(...) __VA_ARGS__
-#undef CONFIG_UNCOMPRESS
-#define ENABLE_UNCOMPRESS 0
-#define IF_UNCOMPRESS(...)
-#define IF_NOT_UNCOMPRESS(...) __VA_ARGS__
-#define CONFIG_UNLZMA 1
-#define ENABLE_UNLZMA 1
-#define IF_UNLZMA(...) __VA_ARGS__
-#define IF_NOT_UNLZMA(...)
-#undef CONFIG_FEATURE_LZMA_FAST
-#define ENABLE_FEATURE_LZMA_FAST 0
-#define IF_FEATURE_LZMA_FAST(...)
-#define IF_NOT_FEATURE_LZMA_FAST(...) __VA_ARGS__
-#undef CONFIG_LZMA
-#define ENABLE_LZMA 0
-#define IF_LZMA(...)
-#define IF_NOT_LZMA(...) __VA_ARGS__
-#define CONFIG_UNXZ 1
-#define ENABLE_UNXZ 1
-#define IF_UNXZ(...) __VA_ARGS__
-#define IF_NOT_UNXZ(...)
-#undef CONFIG_XZ
-#define ENABLE_XZ 0
-#define IF_XZ(...)
-#define IF_NOT_XZ(...) __VA_ARGS__
#define CONFIG_UNZIP 1
#define ENABLE_UNZIP 1
-#define IF_UNZIP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UNZIP(...) __VA_ARGS__ "CONFIG_UNZIP"
+#else
+# define IF_UNZIP(...) __VA_ARGS__
+#endif
#define IF_NOT_UNZIP(...)
/*
@@ -582,19 +834,35 @@
*/
#define CONFIG_BASENAME 1
#define ENABLE_BASENAME 1
-#define IF_BASENAME(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_BASENAME(...) __VA_ARGS__ "CONFIG_BASENAME"
+#else
+# define IF_BASENAME(...) __VA_ARGS__
+#endif
#define IF_NOT_BASENAME(...)
#define CONFIG_CAT 1
#define ENABLE_CAT 1
-#define IF_CAT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CAT(...) __VA_ARGS__ "CONFIG_CAT"
+#else
+# define IF_CAT(...) __VA_ARGS__
+#endif
#define IF_NOT_CAT(...)
#define CONFIG_DATE 1
#define ENABLE_DATE 1
-#define IF_DATE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DATE(...) __VA_ARGS__ "CONFIG_DATE"
+#else
+# define IF_DATE(...) __VA_ARGS__
+#endif
#define IF_NOT_DATE(...)
#define CONFIG_FEATURE_DATE_ISOFMT 1
#define ENABLE_FEATURE_DATE_ISOFMT 1
-#define IF_FEATURE_DATE_ISOFMT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_DATE_ISOFMT(...) __VA_ARGS__ "CONFIG_FEATURE_DATE_ISOFMT"
+#else
+# define IF_FEATURE_DATE_ISOFMT(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_DATE_ISOFMT(...)
#undef CONFIG_FEATURE_DATE_NANO
#define ENABLE_FEATURE_DATE_NANO 0
@@ -602,7 +870,11 @@
#define IF_NOT_FEATURE_DATE_NANO(...) __VA_ARGS__
#define CONFIG_FEATURE_DATE_COMPAT 1
#define ENABLE_FEATURE_DATE_COMPAT 1
-#define IF_FEATURE_DATE_COMPAT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_DATE_COMPAT(...) __VA_ARGS__ "CONFIG_FEATURE_DATE_COMPAT"
+#else
+# define IF_FEATURE_DATE_COMPAT(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_DATE_COMPAT(...)
#undef CONFIG_HOSTID
#define ENABLE_HOSTID 0
@@ -610,15 +882,27 @@
#define IF_NOT_HOSTID(...) __VA_ARGS__
#define CONFIG_ID 1
#define ENABLE_ID 1
-#define IF_ID(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ID(...) __VA_ARGS__ "CONFIG_ID"
+#else
+# define IF_ID(...) __VA_ARGS__
+#endif
#define IF_NOT_ID(...)
#define CONFIG_GROUPS 1
#define ENABLE_GROUPS 1
-#define IF_GROUPS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_GROUPS(...) __VA_ARGS__ "CONFIG_GROUPS"
+#else
+# define IF_GROUPS(...) __VA_ARGS__
+#endif
#define IF_NOT_GROUPS(...)
#define CONFIG_TEST 1
#define ENABLE_TEST 1
-#define IF_TEST(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TEST(...) __VA_ARGS__ "CONFIG_TEST"
+#else
+# define IF_TEST(...) __VA_ARGS__
+#endif
#define IF_NOT_TEST(...)
#undef CONFIG_FEATURE_TEST_64
#define ENABLE_FEATURE_TEST_64 0
@@ -626,19 +910,35 @@
#define IF_NOT_FEATURE_TEST_64(...) __VA_ARGS__
#define CONFIG_TOUCH 1
#define ENABLE_TOUCH 1
-#define IF_TOUCH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TOUCH(...) __VA_ARGS__ "CONFIG_TOUCH"
+#else
+# define IF_TOUCH(...) __VA_ARGS__
+#endif
#define IF_NOT_TOUCH(...)
+#undef CONFIG_FEATURE_TOUCH_NODEREF
+#define ENABLE_FEATURE_TOUCH_NODEREF 0
+#define IF_FEATURE_TOUCH_NODEREF(...)
+#define IF_NOT_FEATURE_TOUCH_NODEREF(...) __VA_ARGS__
#undef CONFIG_FEATURE_TOUCH_SUSV3
#define ENABLE_FEATURE_TOUCH_SUSV3 0
#define IF_FEATURE_TOUCH_SUSV3(...)
#define IF_NOT_FEATURE_TOUCH_SUSV3(...) __VA_ARGS__
#define CONFIG_TR 1
#define ENABLE_TR 1
-#define IF_TR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TR(...) __VA_ARGS__ "CONFIG_TR"
+#else
+# define IF_TR(...) __VA_ARGS__
+#endif
#define IF_NOT_TR(...)
#define CONFIG_FEATURE_TR_CLASSES 1
#define ENABLE_FEATURE_TR_CLASSES 1
-#define IF_FEATURE_TR_CLASSES(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TR_CLASSES(...) __VA_ARGS__ "CONFIG_FEATURE_TR_CLASSES"
+#else
+# define IF_FEATURE_TR_CLASSES(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TR_CLASSES(...)
#undef CONFIG_FEATURE_TR_EQUIV
#define ENABLE_FEATURE_TR_EQUIV 0
@@ -646,7 +946,11 @@
#define IF_NOT_FEATURE_TR_EQUIV(...) __VA_ARGS__
#define CONFIG_BASE64 1
#define ENABLE_BASE64 1
-#define IF_BASE64(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_BASE64(...) __VA_ARGS__ "CONFIG_BASE64"
+#else
+# define IF_BASE64(...) __VA_ARGS__
+#endif
#define IF_NOT_BASE64(...)
#undef CONFIG_WHO
#define ENABLE_WHO 0
@@ -658,31 +962,59 @@
#define IF_NOT_USERS(...) __VA_ARGS__
#define CONFIG_CAL 1
#define ENABLE_CAL 1
-#define IF_CAL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CAL(...) __VA_ARGS__ "CONFIG_CAL"
+#else
+# define IF_CAL(...) __VA_ARGS__
+#endif
#define IF_NOT_CAL(...)
#define CONFIG_CATV 1
#define ENABLE_CATV 1
-#define IF_CATV(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CATV(...) __VA_ARGS__ "CONFIG_CATV"
+#else
+# define IF_CATV(...) __VA_ARGS__
+#endif
#define IF_NOT_CATV(...)
#define CONFIG_CHGRP 1
#define ENABLE_CHGRP 1
-#define IF_CHGRP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CHGRP(...) __VA_ARGS__ "CONFIG_CHGRP"
+#else
+# define IF_CHGRP(...) __VA_ARGS__
+#endif
#define IF_NOT_CHGRP(...)
#define CONFIG_CHMOD 1
#define ENABLE_CHMOD 1
-#define IF_CHMOD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CHMOD(...) __VA_ARGS__ "CONFIG_CHMOD"
+#else
+# define IF_CHMOD(...) __VA_ARGS__
+#endif
#define IF_NOT_CHMOD(...)
#define CONFIG_CHOWN 1
#define ENABLE_CHOWN 1
-#define IF_CHOWN(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CHOWN(...) __VA_ARGS__ "CONFIG_CHOWN"
+#else
+# define IF_CHOWN(...) __VA_ARGS__
+#endif
#define IF_NOT_CHOWN(...)
#define CONFIG_FEATURE_CHOWN_LONG_OPTIONS 1
#define ENABLE_FEATURE_CHOWN_LONG_OPTIONS 1
-#define IF_FEATURE_CHOWN_LONG_OPTIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_CHOWN_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_CHOWN_LONG_OPTIONS"
+#else
+# define IF_FEATURE_CHOWN_LONG_OPTIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_CHOWN_LONG_OPTIONS(...)
#define CONFIG_CHROOT 1
#define ENABLE_CHROOT 1
-#define IF_CHROOT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CHROOT(...) __VA_ARGS__ "CONFIG_CHROOT"
+#else
+# define IF_CHROOT(...) __VA_ARGS__
+#endif
#define IF_NOT_CHROOT(...)
#undef CONFIG_CKSUM
#define ENABLE_CKSUM 0
@@ -694,71 +1026,139 @@
#define IF_NOT_COMM(...) __VA_ARGS__
#define CONFIG_CP 1
#define ENABLE_CP 1
-#define IF_CP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CP(...) __VA_ARGS__ "CONFIG_CP"
+#else
+# define IF_CP(...) __VA_ARGS__
+#endif
#define IF_NOT_CP(...)
#define CONFIG_FEATURE_CP_LONG_OPTIONS 1
#define ENABLE_FEATURE_CP_LONG_OPTIONS 1
-#define IF_FEATURE_CP_LONG_OPTIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_CP_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_CP_LONG_OPTIONS"
+#else
+# define IF_FEATURE_CP_LONG_OPTIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_CP_LONG_OPTIONS(...)
#define CONFIG_CUT 1
#define ENABLE_CUT 1
-#define IF_CUT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CUT(...) __VA_ARGS__ "CONFIG_CUT"
+#else
+# define IF_CUT(...) __VA_ARGS__
+#endif
#define IF_NOT_CUT(...)
#define CONFIG_DD 1
#define ENABLE_DD 1
-#define IF_DD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DD(...) __VA_ARGS__ "CONFIG_DD"
+#else
+# define IF_DD(...) __VA_ARGS__
+#endif
#define IF_NOT_DD(...)
#define CONFIG_FEATURE_DD_SIGNAL_HANDLING 1
#define ENABLE_FEATURE_DD_SIGNAL_HANDLING 1
-#define IF_FEATURE_DD_SIGNAL_HANDLING(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_DD_SIGNAL_HANDLING(...) __VA_ARGS__ "CONFIG_FEATURE_DD_SIGNAL_HANDLING"
+#else
+# define IF_FEATURE_DD_SIGNAL_HANDLING(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_DD_SIGNAL_HANDLING(...)
#define CONFIG_FEATURE_DD_THIRD_STATUS_LINE 1
#define ENABLE_FEATURE_DD_THIRD_STATUS_LINE 1
-#define IF_FEATURE_DD_THIRD_STATUS_LINE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_DD_THIRD_STATUS_LINE(...) __VA_ARGS__ "CONFIG_FEATURE_DD_THIRD_STATUS_LINE"
+#else
+# define IF_FEATURE_DD_THIRD_STATUS_LINE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_DD_THIRD_STATUS_LINE(...)
#define CONFIG_FEATURE_DD_IBS_OBS 1
#define ENABLE_FEATURE_DD_IBS_OBS 1
-#define IF_FEATURE_DD_IBS_OBS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_DD_IBS_OBS(...) __VA_ARGS__ "CONFIG_FEATURE_DD_IBS_OBS"
+#else
+# define IF_FEATURE_DD_IBS_OBS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_DD_IBS_OBS(...)
#define CONFIG_DF 1
#define ENABLE_DF 1
-#define IF_DF(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DF(...) __VA_ARGS__ "CONFIG_DF"
+#else
+# define IF_DF(...) __VA_ARGS__
+#endif
#define IF_NOT_DF(...)
#define CONFIG_FEATURE_DF_FANCY 1
#define ENABLE_FEATURE_DF_FANCY 1
-#define IF_FEATURE_DF_FANCY(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_DF_FANCY(...) __VA_ARGS__ "CONFIG_FEATURE_DF_FANCY"
+#else
+# define IF_FEATURE_DF_FANCY(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_DF_FANCY(...)
#define CONFIG_DIRNAME 1
#define ENABLE_DIRNAME 1
-#define IF_DIRNAME(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DIRNAME(...) __VA_ARGS__ "CONFIG_DIRNAME"
+#else
+# define IF_DIRNAME(...) __VA_ARGS__
+#endif
#define IF_NOT_DIRNAME(...)
#define CONFIG_DOS2UNIX 1
#define ENABLE_DOS2UNIX 1
-#define IF_DOS2UNIX(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DOS2UNIX(...) __VA_ARGS__ "CONFIG_DOS2UNIX"
+#else
+# define IF_DOS2UNIX(...) __VA_ARGS__
+#endif
#define IF_NOT_DOS2UNIX(...)
#define CONFIG_UNIX2DOS 1
#define ENABLE_UNIX2DOS 1
-#define IF_UNIX2DOS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UNIX2DOS(...) __VA_ARGS__ "CONFIG_UNIX2DOS"
+#else
+# define IF_UNIX2DOS(...) __VA_ARGS__
+#endif
#define IF_NOT_UNIX2DOS(...)
#define CONFIG_DU 1
#define ENABLE_DU 1
-#define IF_DU(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DU(...) __VA_ARGS__ "CONFIG_DU"
+#else
+# define IF_DU(...) __VA_ARGS__
+#endif
#define IF_NOT_DU(...)
#define CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K 1
#define ENABLE_FEATURE_DU_DEFAULT_BLOCKSIZE_1K 1
-#define IF_FEATURE_DU_DEFAULT_BLOCKSIZE_1K(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_DU_DEFAULT_BLOCKSIZE_1K(...) __VA_ARGS__ "CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K"
+#else
+# define IF_FEATURE_DU_DEFAULT_BLOCKSIZE_1K(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_DU_DEFAULT_BLOCKSIZE_1K(...)
#define CONFIG_ECHO 1
#define ENABLE_ECHO 1
-#define IF_ECHO(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ECHO(...) __VA_ARGS__ "CONFIG_ECHO"
+#else
+# define IF_ECHO(...) __VA_ARGS__
+#endif
#define IF_NOT_ECHO(...)
#define CONFIG_FEATURE_FANCY_ECHO 1
#define ENABLE_FEATURE_FANCY_ECHO 1
-#define IF_FEATURE_FANCY_ECHO(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FANCY_ECHO(...) __VA_ARGS__ "CONFIG_FEATURE_FANCY_ECHO"
+#else
+# define IF_FEATURE_FANCY_ECHO(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FANCY_ECHO(...)
#define CONFIG_ENV 1
#define ENABLE_ENV 1
-#define IF_ENV(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ENV(...) __VA_ARGS__ "CONFIG_ENV"
+#else
+# define IF_ENV(...) __VA_ARGS__
+#endif
#define IF_NOT_ENV(...)
#undef CONFIG_FEATURE_ENV_LONG_OPTIONS
#define ENABLE_FEATURE_ENV_LONG_OPTIONS 0
@@ -766,7 +1166,11 @@
#define IF_NOT_FEATURE_ENV_LONG_OPTIONS(...) __VA_ARGS__
#define CONFIG_EXPAND 1
#define ENABLE_EXPAND 1
-#define IF_EXPAND(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_EXPAND(...) __VA_ARGS__ "CONFIG_EXPAND"
+#else
+# define IF_EXPAND(...) __VA_ARGS__
+#endif
#define IF_NOT_EXPAND(...)
#undef CONFIG_FEATURE_EXPAND_LONG_OPTIONS
#define ENABLE_FEATURE_EXPAND_LONG_OPTIONS 0
@@ -774,19 +1178,35 @@
#define IF_NOT_FEATURE_EXPAND_LONG_OPTIONS(...) __VA_ARGS__
#define CONFIG_EXPR 1
#define ENABLE_EXPR 1
-#define IF_EXPR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_EXPR(...) __VA_ARGS__ "CONFIG_EXPR"
+#else
+# define IF_EXPR(...) __VA_ARGS__
+#endif
#define IF_NOT_EXPR(...)
#define CONFIG_EXPR_MATH_SUPPORT_64 1
#define ENABLE_EXPR_MATH_SUPPORT_64 1
-#define IF_EXPR_MATH_SUPPORT_64(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_EXPR_MATH_SUPPORT_64(...) __VA_ARGS__ "CONFIG_EXPR_MATH_SUPPORT_64"
+#else
+# define IF_EXPR_MATH_SUPPORT_64(...) __VA_ARGS__
+#endif
#define IF_NOT_EXPR_MATH_SUPPORT_64(...)
#define CONFIG_FALSE 1
#define ENABLE_FALSE 1
-#define IF_FALSE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FALSE(...) __VA_ARGS__ "CONFIG_FALSE"
+#else
+# define IF_FALSE(...) __VA_ARGS__
+#endif
#define IF_NOT_FALSE(...)
#define CONFIG_FOLD 1
#define ENABLE_FOLD 1
-#define IF_FOLD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FOLD(...) __VA_ARGS__ "CONFIG_FOLD"
+#else
+# define IF_FOLD(...) __VA_ARGS__
+#endif
#define IF_NOT_FOLD(...)
#undef CONFIG_FSYNC
#define ENABLE_FSYNC 0
@@ -794,7 +1214,11 @@
#define IF_NOT_FSYNC(...) __VA_ARGS__
#define CONFIG_HEAD 1
#define ENABLE_HEAD 1
-#define IF_HEAD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_HEAD(...) __VA_ARGS__ "CONFIG_HEAD"
+#else
+# define IF_HEAD(...) __VA_ARGS__
+#endif
#define IF_NOT_HEAD(...)
#undef CONFIG_FEATURE_FANCY_HEAD
#define ENABLE_FEATURE_FANCY_HEAD 0
@@ -802,7 +1226,11 @@
#define IF_NOT_FEATURE_FANCY_HEAD(...) __VA_ARGS__
#define CONFIG_INSTALL 1
#define ENABLE_INSTALL 1
-#define IF_INSTALL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_INSTALL(...) __VA_ARGS__ "CONFIG_INSTALL"
+#else
+# define IF_INSTALL(...) __VA_ARGS__
+#endif
#define IF_NOT_INSTALL(...)
#undef CONFIG_FEATURE_INSTALL_LONG_OPTIONS
#define ENABLE_FEATURE_INSTALL_LONG_OPTIONS 0
@@ -810,7 +1238,11 @@
#define IF_NOT_FEATURE_INSTALL_LONG_OPTIONS(...) __VA_ARGS__
#define CONFIG_LN 1
#define ENABLE_LN 1
-#define IF_LN(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LN(...) __VA_ARGS__ "CONFIG_LN"
+#else
+# define IF_LN(...) __VA_ARGS__
+#endif
#define IF_NOT_LN(...)
#undef CONFIG_LOGNAME
#define ENABLE_LOGNAME 0
@@ -818,35 +1250,67 @@
#define IF_NOT_LOGNAME(...) __VA_ARGS__
#define CONFIG_LS 1
#define ENABLE_LS 1
-#define IF_LS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LS(...) __VA_ARGS__ "CONFIG_LS"
+#else
+# define IF_LS(...) __VA_ARGS__
+#endif
#define IF_NOT_LS(...)
#define CONFIG_FEATURE_LS_FILETYPES 1
#define ENABLE_FEATURE_LS_FILETYPES 1
-#define IF_FEATURE_LS_FILETYPES(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LS_FILETYPES(...) __VA_ARGS__ "CONFIG_FEATURE_LS_FILETYPES"
+#else
+# define IF_FEATURE_LS_FILETYPES(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LS_FILETYPES(...)
#define CONFIG_FEATURE_LS_FOLLOWLINKS 1
#define ENABLE_FEATURE_LS_FOLLOWLINKS 1
-#define IF_FEATURE_LS_FOLLOWLINKS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LS_FOLLOWLINKS(...) __VA_ARGS__ "CONFIG_FEATURE_LS_FOLLOWLINKS"
+#else
+# define IF_FEATURE_LS_FOLLOWLINKS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LS_FOLLOWLINKS(...)
#define CONFIG_FEATURE_LS_RECURSIVE 1
#define ENABLE_FEATURE_LS_RECURSIVE 1
-#define IF_FEATURE_LS_RECURSIVE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LS_RECURSIVE(...) __VA_ARGS__ "CONFIG_FEATURE_LS_RECURSIVE"
+#else
+# define IF_FEATURE_LS_RECURSIVE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LS_RECURSIVE(...)
#define CONFIG_FEATURE_LS_SORTFILES 1
#define ENABLE_FEATURE_LS_SORTFILES 1
-#define IF_FEATURE_LS_SORTFILES(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LS_SORTFILES(...) __VA_ARGS__ "CONFIG_FEATURE_LS_SORTFILES"
+#else
+# define IF_FEATURE_LS_SORTFILES(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LS_SORTFILES(...)
#define CONFIG_FEATURE_LS_TIMESTAMPS 1
#define ENABLE_FEATURE_LS_TIMESTAMPS 1
-#define IF_FEATURE_LS_TIMESTAMPS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LS_TIMESTAMPS(...) __VA_ARGS__ "CONFIG_FEATURE_LS_TIMESTAMPS"
+#else
+# define IF_FEATURE_LS_TIMESTAMPS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LS_TIMESTAMPS(...)
#define CONFIG_FEATURE_LS_USERNAME 1
#define ENABLE_FEATURE_LS_USERNAME 1
-#define IF_FEATURE_LS_USERNAME(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LS_USERNAME(...) __VA_ARGS__ "CONFIG_FEATURE_LS_USERNAME"
+#else
+# define IF_FEATURE_LS_USERNAME(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LS_USERNAME(...)
#define CONFIG_FEATURE_LS_COLOR 1
#define ENABLE_FEATURE_LS_COLOR 1
-#define IF_FEATURE_LS_COLOR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LS_COLOR(...) __VA_ARGS__ "CONFIG_FEATURE_LS_COLOR"
+#else
+# define IF_FEATURE_LS_COLOR(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LS_COLOR(...)
#undef CONFIG_FEATURE_LS_COLOR_IS_DEFAULT
#define ENABLE_FEATURE_LS_COLOR_IS_DEFAULT 0
@@ -854,11 +1318,19 @@
#define IF_NOT_FEATURE_LS_COLOR_IS_DEFAULT(...) __VA_ARGS__
#define CONFIG_MD5SUM 1
#define ENABLE_MD5SUM 1
-#define IF_MD5SUM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MD5SUM(...) __VA_ARGS__ "CONFIG_MD5SUM"
+#else
+# define IF_MD5SUM(...) __VA_ARGS__
+#endif
#define IF_NOT_MD5SUM(...)
#define CONFIG_MKDIR 1
#define ENABLE_MKDIR 1
-#define IF_MKDIR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MKDIR(...) __VA_ARGS__ "CONFIG_MKDIR"
+#else
+# define IF_MKDIR(...) __VA_ARGS__
+#endif
#define IF_NOT_MKDIR(...)
#undef CONFIG_FEATURE_MKDIR_LONG_OPTIONS
#define ENABLE_FEATURE_MKDIR_LONG_OPTIONS 0
@@ -866,15 +1338,27 @@
#define IF_NOT_FEATURE_MKDIR_LONG_OPTIONS(...) __VA_ARGS__
#define CONFIG_MKFIFO 1
#define ENABLE_MKFIFO 1
-#define IF_MKFIFO(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MKFIFO(...) __VA_ARGS__ "CONFIG_MKFIFO"
+#else
+# define IF_MKFIFO(...) __VA_ARGS__
+#endif
#define IF_NOT_MKFIFO(...)
#define CONFIG_MKNOD 1
#define ENABLE_MKNOD 1
-#define IF_MKNOD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MKNOD(...) __VA_ARGS__ "CONFIG_MKNOD"
+#else
+# define IF_MKNOD(...) __VA_ARGS__
+#endif
#define IF_NOT_MKNOD(...)
#define CONFIG_MV 1
#define ENABLE_MV 1
-#define IF_MV(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MV(...) __VA_ARGS__ "CONFIG_MV"
+#else
+# define IF_MV(...) __VA_ARGS__
+#endif
#define IF_NOT_MV(...)
#undef CONFIG_FEATURE_MV_LONG_OPTIONS
#define ENABLE_FEATURE_MV_LONG_OPTIONS 0
@@ -882,67 +1366,131 @@
#define IF_NOT_FEATURE_MV_LONG_OPTIONS(...) __VA_ARGS__
#define CONFIG_NICE 1
#define ENABLE_NICE 1
-#define IF_NICE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_NICE(...) __VA_ARGS__ "CONFIG_NICE"
+#else
+# define IF_NICE(...) __VA_ARGS__
+#endif
#define IF_NOT_NICE(...)
#define CONFIG_NOHUP 1
#define ENABLE_NOHUP 1
-#define IF_NOHUP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_NOHUP(...) __VA_ARGS__ "CONFIG_NOHUP"
+#else
+# define IF_NOHUP(...) __VA_ARGS__
+#endif
#define IF_NOT_NOHUP(...)
#define CONFIG_OD 1
#define ENABLE_OD 1
-#define IF_OD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_OD(...) __VA_ARGS__ "CONFIG_OD"
+#else
+# define IF_OD(...) __VA_ARGS__
+#endif
#define IF_NOT_OD(...)
#define CONFIG_PRINTENV 1
#define ENABLE_PRINTENV 1
-#define IF_PRINTENV(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PRINTENV(...) __VA_ARGS__ "CONFIG_PRINTENV"
+#else
+# define IF_PRINTENV(...) __VA_ARGS__
+#endif
#define IF_NOT_PRINTENV(...)
#define CONFIG_PRINTF 1
#define ENABLE_PRINTF 1
-#define IF_PRINTF(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PRINTF(...) __VA_ARGS__ "CONFIG_PRINTF"
+#else
+# define IF_PRINTF(...) __VA_ARGS__
+#endif
#define IF_NOT_PRINTF(...)
#define CONFIG_PWD 1
#define ENABLE_PWD 1
-#define IF_PWD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PWD(...) __VA_ARGS__ "CONFIG_PWD"
+#else
+# define IF_PWD(...) __VA_ARGS__
+#endif
#define IF_NOT_PWD(...)
#define CONFIG_READLINK 1
#define ENABLE_READLINK 1
-#define IF_READLINK(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_READLINK(...) __VA_ARGS__ "CONFIG_READLINK"
+#else
+# define IF_READLINK(...) __VA_ARGS__
+#endif
#define IF_NOT_READLINK(...)
#define CONFIG_FEATURE_READLINK_FOLLOW 1
#define ENABLE_FEATURE_READLINK_FOLLOW 1
-#define IF_FEATURE_READLINK_FOLLOW(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_READLINK_FOLLOW(...) __VA_ARGS__ "CONFIG_FEATURE_READLINK_FOLLOW"
+#else
+# define IF_FEATURE_READLINK_FOLLOW(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_READLINK_FOLLOW(...)
#define CONFIG_REALPATH 1
#define ENABLE_REALPATH 1
-#define IF_REALPATH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_REALPATH(...) __VA_ARGS__ "CONFIG_REALPATH"
+#else
+# define IF_REALPATH(...) __VA_ARGS__
+#endif
#define IF_NOT_REALPATH(...)
#define CONFIG_RM 1
#define ENABLE_RM 1
-#define IF_RM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_RM(...) __VA_ARGS__ "CONFIG_RM"
+#else
+# define IF_RM(...) __VA_ARGS__
+#endif
#define IF_NOT_RM(...)
#define CONFIG_RMDIR 1
#define ENABLE_RMDIR 1
-#define IF_RMDIR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_RMDIR(...) __VA_ARGS__ "CONFIG_RMDIR"
+#else
+# define IF_RMDIR(...) __VA_ARGS__
+#endif
#define IF_NOT_RMDIR(...)
#define CONFIG_FEATURE_RMDIR_LONG_OPTIONS 1
#define ENABLE_FEATURE_RMDIR_LONG_OPTIONS 1
-#define IF_FEATURE_RMDIR_LONG_OPTIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_RMDIR_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_RMDIR_LONG_OPTIONS"
+#else
+# define IF_FEATURE_RMDIR_LONG_OPTIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_RMDIR_LONG_OPTIONS(...)
#define CONFIG_SEQ 1
#define ENABLE_SEQ 1
-#define IF_SEQ(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SEQ(...) __VA_ARGS__ "CONFIG_SEQ"
+#else
+# define IF_SEQ(...) __VA_ARGS__
+#endif
#define IF_NOT_SEQ(...)
#define CONFIG_SHA1SUM 1
#define ENABLE_SHA1SUM 1
-#define IF_SHA1SUM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SHA1SUM(...) __VA_ARGS__ "CONFIG_SHA1SUM"
+#else
+# define IF_SHA1SUM(...) __VA_ARGS__
+#endif
#define IF_NOT_SHA1SUM(...)
#define CONFIG_SHA256SUM 1
#define ENABLE_SHA256SUM 1
-#define IF_SHA256SUM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SHA256SUM(...) __VA_ARGS__ "CONFIG_SHA256SUM"
+#else
+# define IF_SHA256SUM(...) __VA_ARGS__
+#endif
#define IF_NOT_SHA256SUM(...)
#define CONFIG_SHA512SUM 1
#define ENABLE_SHA512SUM 1
-#define IF_SHA512SUM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SHA512SUM(...) __VA_ARGS__ "CONFIG_SHA512SUM"
+#else
+# define IF_SHA512SUM(...) __VA_ARGS__
+#endif
#define IF_NOT_SHA512SUM(...)
#undef CONFIG_SHA3SUM
#define ENABLE_SHA3SUM 0
@@ -950,19 +1498,35 @@
#define IF_NOT_SHA3SUM(...) __VA_ARGS__
#define CONFIG_SLEEP 1
#define ENABLE_SLEEP 1
-#define IF_SLEEP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SLEEP(...) __VA_ARGS__ "CONFIG_SLEEP"
+#else
+# define IF_SLEEP(...) __VA_ARGS__
+#endif
#define IF_NOT_SLEEP(...)
#define CONFIG_FEATURE_FANCY_SLEEP 1
#define ENABLE_FEATURE_FANCY_SLEEP 1
-#define IF_FEATURE_FANCY_SLEEP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FANCY_SLEEP(...) __VA_ARGS__ "CONFIG_FEATURE_FANCY_SLEEP"
+#else
+# define IF_FEATURE_FANCY_SLEEP(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FANCY_SLEEP(...)
#define CONFIG_FEATURE_FLOAT_SLEEP 1
#define ENABLE_FEATURE_FLOAT_SLEEP 1
-#define IF_FEATURE_FLOAT_SLEEP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FLOAT_SLEEP(...) __VA_ARGS__ "CONFIG_FEATURE_FLOAT_SLEEP"
+#else
+# define IF_FEATURE_FLOAT_SLEEP(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FLOAT_SLEEP(...)
#define CONFIG_SORT 1
#define ENABLE_SORT 1
-#define IF_SORT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SORT(...) __VA_ARGS__ "CONFIG_SORT"
+#else
+# define IF_SORT(...) __VA_ARGS__
+#endif
#define IF_NOT_SORT(...)
#undef CONFIG_FEATURE_SORT_BIG
#define ENABLE_FEATURE_SORT_BIG 0
@@ -970,7 +1534,11 @@
#define IF_NOT_FEATURE_SORT_BIG(...) __VA_ARGS__
#define CONFIG_SPLIT 1
#define ENABLE_SPLIT 1
-#define IF_SPLIT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SPLIT(...) __VA_ARGS__ "CONFIG_SPLIT"
+#else
+# define IF_SPLIT(...) __VA_ARGS__
+#endif
#define IF_NOT_SPLIT(...)
#undef CONFIG_FEATURE_SPLIT_FANCY
#define ENABLE_FEATURE_SPLIT_FANCY 0
@@ -978,7 +1546,11 @@
#define IF_NOT_FEATURE_SPLIT_FANCY(...) __VA_ARGS__
#define CONFIG_STAT 1
#define ENABLE_STAT 1
-#define IF_STAT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_STAT(...) __VA_ARGS__ "CONFIG_STAT"
+#else
+# define IF_STAT(...) __VA_ARGS__
+#endif
#define IF_NOT_STAT(...)
#undef CONFIG_FEATURE_STAT_FORMAT
#define ENABLE_FEATURE_STAT_FORMAT 0
@@ -986,7 +1558,11 @@
#define IF_NOT_FEATURE_STAT_FORMAT(...) __VA_ARGS__
#define CONFIG_STTY 1
#define ENABLE_STTY 1
-#define IF_STTY(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_STTY(...) __VA_ARGS__ "CONFIG_STTY"
+#else
+# define IF_STTY(...) __VA_ARGS__
+#endif
#define IF_NOT_STTY(...)
#undef CONFIG_SUM
#define ENABLE_SUM 0
@@ -994,23 +1570,43 @@
#define IF_NOT_SUM(...) __VA_ARGS__
#define CONFIG_SYNC 1
#define ENABLE_SYNC 1
-#define IF_SYNC(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SYNC(...) __VA_ARGS__ "CONFIG_SYNC"
+#else
+# define IF_SYNC(...) __VA_ARGS__
+#endif
#define IF_NOT_SYNC(...)
#define CONFIG_TAC 1
#define ENABLE_TAC 1
-#define IF_TAC(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TAC(...) __VA_ARGS__ "CONFIG_TAC"
+#else
+# define IF_TAC(...) __VA_ARGS__
+#endif
#define IF_NOT_TAC(...)
#define CONFIG_TAIL 1
#define ENABLE_TAIL 1
-#define IF_TAIL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TAIL(...) __VA_ARGS__ "CONFIG_TAIL"
+#else
+# define IF_TAIL(...) __VA_ARGS__
+#endif
#define IF_NOT_TAIL(...)
#define CONFIG_FEATURE_FANCY_TAIL 1
#define ENABLE_FEATURE_FANCY_TAIL 1
-#define IF_FEATURE_FANCY_TAIL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FANCY_TAIL(...) __VA_ARGS__ "CONFIG_FEATURE_FANCY_TAIL"
+#else
+# define IF_FEATURE_FANCY_TAIL(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FANCY_TAIL(...)
#define CONFIG_TEE 1
#define ENABLE_TEE 1
-#define IF_TEE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TEE(...) __VA_ARGS__ "CONFIG_TEE"
+#else
+# define IF_TEE(...) __VA_ARGS__
+#endif
#define IF_NOT_TEE(...)
#undef CONFIG_FEATURE_TEE_USE_BLOCK_IO
#define ENABLE_FEATURE_TEE_USE_BLOCK_IO 0
@@ -1018,7 +1614,11 @@
#define IF_NOT_FEATURE_TEE_USE_BLOCK_IO(...) __VA_ARGS__
#define CONFIG_TRUE 1
#define ENABLE_TRUE 1
-#define IF_TRUE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TRUE(...) __VA_ARGS__ "CONFIG_TRUE"
+#else
+# define IF_TRUE(...) __VA_ARGS__
+#endif
#define IF_NOT_TRUE(...)
#undef CONFIG_TTY
#define ENABLE_TTY 0
@@ -1026,35 +1626,67 @@
#define IF_NOT_TTY(...) __VA_ARGS__
#define CONFIG_UNAME 1
#define ENABLE_UNAME 1
-#define IF_UNAME(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UNAME(...) __VA_ARGS__ "CONFIG_UNAME"
+#else
+# define IF_UNAME(...) __VA_ARGS__
+#endif
#define IF_NOT_UNAME(...)
#define CONFIG_UNEXPAND 1
#define ENABLE_UNEXPAND 1
-#define IF_UNEXPAND(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UNEXPAND(...) __VA_ARGS__ "CONFIG_UNEXPAND"
+#else
+# define IF_UNEXPAND(...) __VA_ARGS__
+#endif
#define IF_NOT_UNEXPAND(...)
#define CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS 1
#define ENABLE_FEATURE_UNEXPAND_LONG_OPTIONS 1
-#define IF_FEATURE_UNEXPAND_LONG_OPTIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_UNEXPAND_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS"
+#else
+# define IF_FEATURE_UNEXPAND_LONG_OPTIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_UNEXPAND_LONG_OPTIONS(...)
#define CONFIG_UNIQ 1
#define ENABLE_UNIQ 1
-#define IF_UNIQ(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UNIQ(...) __VA_ARGS__ "CONFIG_UNIQ"
+#else
+# define IF_UNIQ(...) __VA_ARGS__
+#endif
#define IF_NOT_UNIQ(...)
#define CONFIG_USLEEP 1
#define ENABLE_USLEEP 1
-#define IF_USLEEP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_USLEEP(...) __VA_ARGS__ "CONFIG_USLEEP"
+#else
+# define IF_USLEEP(...) __VA_ARGS__
+#endif
#define IF_NOT_USLEEP(...)
#define CONFIG_UUDECODE 1
#define ENABLE_UUDECODE 1
-#define IF_UUDECODE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UUDECODE(...) __VA_ARGS__ "CONFIG_UUDECODE"
+#else
+# define IF_UUDECODE(...) __VA_ARGS__
+#endif
#define IF_NOT_UUDECODE(...)
#define CONFIG_UUENCODE 1
#define ENABLE_UUENCODE 1
-#define IF_UUENCODE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UUENCODE(...) __VA_ARGS__ "CONFIG_UUENCODE"
+#else
+# define IF_UUENCODE(...) __VA_ARGS__
+#endif
#define IF_NOT_UUENCODE(...)
#define CONFIG_WC 1
#define ENABLE_WC 1
-#define IF_WC(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_WC(...) __VA_ARGS__ "CONFIG_WC"
+#else
+# define IF_WC(...) __VA_ARGS__
+#endif
#define IF_NOT_WC(...)
#undef CONFIG_FEATURE_WC_LARGE
#define ENABLE_FEATURE_WC_LARGE 0
@@ -1062,11 +1694,19 @@
#define IF_NOT_FEATURE_WC_LARGE(...) __VA_ARGS__
#define CONFIG_WHOAMI 1
#define ENABLE_WHOAMI 1
-#define IF_WHOAMI(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_WHOAMI(...) __VA_ARGS__ "CONFIG_WHOAMI"
+#else
+# define IF_WHOAMI(...) __VA_ARGS__
+#endif
#define IF_NOT_WHOAMI(...)
#define CONFIG_YES 1
#define ENABLE_YES 1
-#define IF_YES(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_YES(...) __VA_ARGS__ "CONFIG_YES"
+#else
+# define IF_YES(...) __VA_ARGS__
+#endif
#define IF_NOT_YES(...)
/*
@@ -1074,7 +1714,11 @@
*/
#define CONFIG_FEATURE_PRESERVE_HARDLINKS 1
#define ENABLE_FEATURE_PRESERVE_HARDLINKS 1
-#define IF_FEATURE_PRESERVE_HARDLINKS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_PRESERVE_HARDLINKS(...) __VA_ARGS__ "CONFIG_FEATURE_PRESERVE_HARDLINKS"
+#else
+# define IF_FEATURE_PRESERVE_HARDLINKS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_PRESERVE_HARDLINKS(...)
/*
@@ -1082,7 +1726,11 @@
*/
#define CONFIG_FEATURE_AUTOWIDTH 1
#define ENABLE_FEATURE_AUTOWIDTH 1
-#define IF_FEATURE_AUTOWIDTH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_AUTOWIDTH(...) __VA_ARGS__ "CONFIG_FEATURE_AUTOWIDTH"
+#else
+# define IF_FEATURE_AUTOWIDTH(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_AUTOWIDTH(...)
/*
@@ -1090,7 +1738,11 @@
*/
#define CONFIG_FEATURE_HUMAN_READABLE 1
#define ENABLE_FEATURE_HUMAN_READABLE 1
-#define IF_FEATURE_HUMAN_READABLE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_HUMAN_READABLE(...) __VA_ARGS__ "CONFIG_FEATURE_HUMAN_READABLE"
+#else
+# define IF_FEATURE_HUMAN_READABLE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_HUMAN_READABLE(...)
/*
@@ -1098,7 +1750,11 @@
*/
#define CONFIG_FEATURE_MD5_SHA1_SUM_CHECK 1
#define ENABLE_FEATURE_MD5_SHA1_SUM_CHECK 1
-#define IF_FEATURE_MD5_SHA1_SUM_CHECK(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MD5_SHA1_SUM_CHECK(...) __VA_ARGS__ "CONFIG_FEATURE_MD5_SHA1_SUM_CHECK"
+#else
+# define IF_FEATURE_MD5_SHA1_SUM_CHECK(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MD5_SHA1_SUM_CHECK(...)
/*
@@ -1114,7 +1770,11 @@
#define IF_NOT_FGCONSOLE(...) __VA_ARGS__
#define CONFIG_CLEAR 1
#define ENABLE_CLEAR 1
-#define IF_CLEAR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CLEAR(...) __VA_ARGS__ "CONFIG_CLEAR"
+#else
+# define IF_CLEAR(...) __VA_ARGS__
+#endif
#define IF_NOT_CLEAR(...)
#undef CONFIG_DEALLOCVT
#define ENABLE_DEALLOCVT 0
@@ -1142,11 +1802,19 @@
#define IF_NOT_OPENVT(...) __VA_ARGS__
#define CONFIG_RESET 1
#define ENABLE_RESET 1
-#define IF_RESET(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_RESET(...) __VA_ARGS__ "CONFIG_RESET"
+#else
+# define IF_RESET(...) __VA_ARGS__
+#endif
#define IF_NOT_RESET(...)
#define CONFIG_RESIZE 1
#define ENABLE_RESIZE 1
-#define IF_RESIZE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_RESIZE(...) __VA_ARGS__ "CONFIG_RESIZE"
+#else
+# define IF_RESIZE(...) __VA_ARGS__
+#endif
#define IF_NOT_RESIZE(...)
#undef CONFIG_FEATURE_RESIZE_PRINT
#define ENABLE_FEATURE_RESIZE_PRINT 0
@@ -1154,7 +1822,11 @@
#define IF_NOT_FEATURE_RESIZE_PRINT(...) __VA_ARGS__
#define CONFIG_SETCONSOLE 1
#define ENABLE_SETCONSOLE 1
-#define IF_SETCONSOLE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SETCONSOLE(...) __VA_ARGS__ "CONFIG_SETCONSOLE"
+#else
+# define IF_SETCONSOLE(...) __VA_ARGS__
+#endif
#define IF_NOT_SETCONSOLE(...)
#undef CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS
#define ENABLE_FEATURE_SETCONSOLE_LONG_OPTIONS 0
@@ -1170,7 +1842,11 @@
#define IF_NOT_FEATURE_SETFONT_TEXTUAL_MAP(...) __VA_ARGS__
#define CONFIG_DEFAULT_SETFONT_DIR ""
#define ENABLE_DEFAULT_SETFONT_DIR 1
-#define IF_DEFAULT_SETFONT_DIR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DEFAULT_SETFONT_DIR(...) __VA_ARGS__ "CONFIG_DEFAULT_SETFONT_DIR"
+#else
+# define IF_DEFAULT_SETFONT_DIR(...) __VA_ARGS__
+#endif
#define IF_NOT_DEFAULT_SETFONT_DIR(...)
#undef CONFIG_SETKEYCODES
#define ENABLE_SETKEYCODES 0
@@ -1198,7 +1874,11 @@
*/
#define CONFIG_MKTEMP 1
#define ENABLE_MKTEMP 1
-#define IF_MKTEMP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MKTEMP(...) __VA_ARGS__ "CONFIG_MKTEMP"
+#else
+# define IF_MKTEMP(...) __VA_ARGS__
+#endif
#define IF_NOT_MKTEMP(...)
#undef CONFIG_PIPE_PROGRESS
#define ENABLE_PIPE_PROGRESS 0
@@ -1206,7 +1886,11 @@
#define IF_NOT_PIPE_PROGRESS(...) __VA_ARGS__
#define CONFIG_RUN_PARTS 1
#define ENABLE_RUN_PARTS 1
-#define IF_RUN_PARTS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_RUN_PARTS(...) __VA_ARGS__ "CONFIG_RUN_PARTS"
+#else
+# define IF_RUN_PARTS(...) __VA_ARGS__
+#endif
#define IF_NOT_RUN_PARTS(...)
#undef CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS
#define ENABLE_FEATURE_RUN_PARTS_LONG_OPTIONS 0
@@ -1214,7 +1898,11 @@
#define IF_NOT_FEATURE_RUN_PARTS_LONG_OPTIONS(...) __VA_ARGS__
#define CONFIG_FEATURE_RUN_PARTS_FANCY 1
#define ENABLE_FEATURE_RUN_PARTS_FANCY 1
-#define IF_FEATURE_RUN_PARTS_FANCY(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_RUN_PARTS_FANCY(...) __VA_ARGS__ "CONFIG_FEATURE_RUN_PARTS_FANCY"
+#else
+# define IF_FEATURE_RUN_PARTS_FANCY(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_RUN_PARTS_FANCY(...)
#undef CONFIG_START_STOP_DAEMON
#define ENABLE_START_STOP_DAEMON 0
@@ -1230,23 +1918,99 @@
#define IF_NOT_FEATURE_START_STOP_DAEMON_LONG_OPTIONS(...) __VA_ARGS__
#define CONFIG_WHICH 1
#define ENABLE_WHICH 1
-#define IF_WHICH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_WHICH(...) __VA_ARGS__ "CONFIG_WHICH"
+#else
+# define IF_WHICH(...) __VA_ARGS__
+#endif
#define IF_NOT_WHICH(...)
/*
* Editors
*/
+#define CONFIG_AWK 1
+#define ENABLE_AWK 1
+#ifdef MAKE_SUID
+# define IF_AWK(...) __VA_ARGS__ "CONFIG_AWK"
+#else
+# define IF_AWK(...) __VA_ARGS__
+#endif
+#define IF_NOT_AWK(...)
+#undef CONFIG_FEATURE_AWK_LIBM
+#define ENABLE_FEATURE_AWK_LIBM 0
+#define IF_FEATURE_AWK_LIBM(...)
+#define IF_NOT_FEATURE_AWK_LIBM(...) __VA_ARGS__
+#define CONFIG_FEATURE_AWK_GNU_EXTENSIONS 1
+#define ENABLE_FEATURE_AWK_GNU_EXTENSIONS 1
+#ifdef MAKE_SUID
+# define IF_FEATURE_AWK_GNU_EXTENSIONS(...) __VA_ARGS__ "CONFIG_FEATURE_AWK_GNU_EXTENSIONS"
+#else
+# define IF_FEATURE_AWK_GNU_EXTENSIONS(...) __VA_ARGS__
+#endif
+#define IF_NOT_FEATURE_AWK_GNU_EXTENSIONS(...)
+#define CONFIG_CMP 1
+#define ENABLE_CMP 1
+#ifdef MAKE_SUID
+# define IF_CMP(...) __VA_ARGS__ "CONFIG_CMP"
+#else
+# define IF_CMP(...) __VA_ARGS__
+#endif
+#define IF_NOT_CMP(...)
+#define CONFIG_DIFF 1
+#define ENABLE_DIFF 1
+#ifdef MAKE_SUID
+# define IF_DIFF(...) __VA_ARGS__ "CONFIG_DIFF"
+#else
+# define IF_DIFF(...) __VA_ARGS__
+#endif
+#define IF_NOT_DIFF(...)
+#define CONFIG_FEATURE_DIFF_LONG_OPTIONS 1
+#define ENABLE_FEATURE_DIFF_LONG_OPTIONS 1
+#ifdef MAKE_SUID
+# define IF_FEATURE_DIFF_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_DIFF_LONG_OPTIONS"
+#else
+# define IF_FEATURE_DIFF_LONG_OPTIONS(...) __VA_ARGS__
+#endif
+#define IF_NOT_FEATURE_DIFF_LONG_OPTIONS(...)
+#define CONFIG_FEATURE_DIFF_DIR 1
+#define ENABLE_FEATURE_DIFF_DIR 1
+#ifdef MAKE_SUID
+# define IF_FEATURE_DIFF_DIR(...) __VA_ARGS__ "CONFIG_FEATURE_DIFF_DIR"
+#else
+# define IF_FEATURE_DIFF_DIR(...) __VA_ARGS__
+#endif
+#define IF_NOT_FEATURE_DIFF_DIR(...)
+#undef CONFIG_ED
+#define ENABLE_ED 0
+#define IF_ED(...)
+#define IF_NOT_ED(...) __VA_ARGS__
#define CONFIG_PATCH 1
#define ENABLE_PATCH 1
-#define IF_PATCH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PATCH(...) __VA_ARGS__ "CONFIG_PATCH"
+#else
+# define IF_PATCH(...) __VA_ARGS__
+#endif
#define IF_NOT_PATCH(...)
+#define CONFIG_SED 1
+#define ENABLE_SED 1
+#ifdef MAKE_SUID
+# define IF_SED(...) __VA_ARGS__ "CONFIG_SED"
+#else
+# define IF_SED(...) __VA_ARGS__
+#endif
+#define IF_NOT_SED(...)
#undef CONFIG_VI
#define ENABLE_VI 0
#define IF_VI(...)
#define IF_NOT_VI(...) __VA_ARGS__
#define CONFIG_FEATURE_VI_MAX_LEN 0
#define ENABLE_FEATURE_VI_MAX_LEN 1
-#define IF_FEATURE_VI_MAX_LEN(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_VI_MAX_LEN(...) __VA_ARGS__ "CONFIG_FEATURE_VI_MAX_LEN"
+#else
+# define IF_FEATURE_VI_MAX_LEN(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_VI_MAX_LEN(...)
#undef CONFIG_FEATURE_VI_8BIT
#define ENABLE_FEATURE_VI_8BIT 0
@@ -1296,41 +2060,13 @@
#define ENABLE_FEATURE_VI_ASK_TERMINAL 0
#define IF_FEATURE_VI_ASK_TERMINAL(...)
#define IF_NOT_FEATURE_VI_ASK_TERMINAL(...) __VA_ARGS__
-#define CONFIG_AWK 1
-#define ENABLE_AWK 1
-#define IF_AWK(...) __VA_ARGS__
-#define IF_NOT_AWK(...)
-#undef CONFIG_FEATURE_AWK_LIBM
-#define ENABLE_FEATURE_AWK_LIBM 0
-#define IF_FEATURE_AWK_LIBM(...)
-#define IF_NOT_FEATURE_AWK_LIBM(...) __VA_ARGS__
-#define CONFIG_CMP 1
-#define ENABLE_CMP 1
-#define IF_CMP(...) __VA_ARGS__
-#define IF_NOT_CMP(...)
-#define CONFIG_DIFF 1
-#define ENABLE_DIFF 1
-#define IF_DIFF(...) __VA_ARGS__
-#define IF_NOT_DIFF(...)
-#define CONFIG_FEATURE_DIFF_LONG_OPTIONS 1
-#define ENABLE_FEATURE_DIFF_LONG_OPTIONS 1
-#define IF_FEATURE_DIFF_LONG_OPTIONS(...) __VA_ARGS__
-#define IF_NOT_FEATURE_DIFF_LONG_OPTIONS(...)
-#define CONFIG_FEATURE_DIFF_DIR 1
-#define ENABLE_FEATURE_DIFF_DIR 1
-#define IF_FEATURE_DIFF_DIR(...) __VA_ARGS__
-#define IF_NOT_FEATURE_DIFF_DIR(...)
-#undef CONFIG_ED
-#define ENABLE_ED 0
-#define IF_ED(...)
-#define IF_NOT_ED(...) __VA_ARGS__
-#define CONFIG_SED 1
-#define ENABLE_SED 1
-#define IF_SED(...) __VA_ARGS__
-#define IF_NOT_SED(...)
#define CONFIG_FEATURE_ALLOW_EXEC 1
#define ENABLE_FEATURE_ALLOW_EXEC 1
-#define IF_FEATURE_ALLOW_EXEC(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_ALLOW_EXEC(...) __VA_ARGS__ "CONFIG_FEATURE_ALLOW_EXEC"
+#else
+# define IF_FEATURE_ALLOW_EXEC(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_ALLOW_EXEC(...)
/*
@@ -1338,39 +2074,75 @@
*/
#define CONFIG_FIND 1
#define ENABLE_FIND 1
-#define IF_FIND(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FIND(...) __VA_ARGS__ "CONFIG_FIND"
+#else
+# define IF_FIND(...) __VA_ARGS__
+#endif
#define IF_NOT_FIND(...)
#define CONFIG_FEATURE_FIND_PRINT0 1
#define ENABLE_FEATURE_FIND_PRINT0 1
-#define IF_FEATURE_FIND_PRINT0(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_PRINT0(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_PRINT0"
+#else
+# define IF_FEATURE_FIND_PRINT0(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_PRINT0(...)
#define CONFIG_FEATURE_FIND_MTIME 1
#define ENABLE_FEATURE_FIND_MTIME 1
-#define IF_FEATURE_FIND_MTIME(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_MTIME(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_MTIME"
+#else
+# define IF_FEATURE_FIND_MTIME(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_MTIME(...)
#define CONFIG_FEATURE_FIND_MMIN 1
#define ENABLE_FEATURE_FIND_MMIN 1
-#define IF_FEATURE_FIND_MMIN(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_MMIN(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_MMIN"
+#else
+# define IF_FEATURE_FIND_MMIN(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_MMIN(...)
#define CONFIG_FEATURE_FIND_PERM 1
#define ENABLE_FEATURE_FIND_PERM 1
-#define IF_FEATURE_FIND_PERM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_PERM(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_PERM"
+#else
+# define IF_FEATURE_FIND_PERM(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_PERM(...)
#define CONFIG_FEATURE_FIND_TYPE 1
#define ENABLE_FEATURE_FIND_TYPE 1
-#define IF_FEATURE_FIND_TYPE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_TYPE(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_TYPE"
+#else
+# define IF_FEATURE_FIND_TYPE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_TYPE(...)
#define CONFIG_FEATURE_FIND_XDEV 1
#define ENABLE_FEATURE_FIND_XDEV 1
-#define IF_FEATURE_FIND_XDEV(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_XDEV(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_XDEV"
+#else
+# define IF_FEATURE_FIND_XDEV(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_XDEV(...)
#define CONFIG_FEATURE_FIND_MAXDEPTH 1
#define ENABLE_FEATURE_FIND_MAXDEPTH 1
-#define IF_FEATURE_FIND_MAXDEPTH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_MAXDEPTH(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_MAXDEPTH"
+#else
+# define IF_FEATURE_FIND_MAXDEPTH(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_MAXDEPTH(...)
#define CONFIG_FEATURE_FIND_NEWER 1
#define ENABLE_FEATURE_FIND_NEWER 1
-#define IF_FEATURE_FIND_NEWER(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_NEWER(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_NEWER"
+#else
+# define IF_FEATURE_FIND_NEWER(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_NEWER(...)
#undef CONFIG_FEATURE_FIND_INUM
#define ENABLE_FEATURE_FIND_INUM 0
@@ -1378,35 +2150,67 @@
#define IF_NOT_FEATURE_FIND_INUM(...) __VA_ARGS__
#define CONFIG_FEATURE_FIND_EXEC 1
#define ENABLE_FEATURE_FIND_EXEC 1
-#define IF_FEATURE_FIND_EXEC(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_EXEC(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_EXEC"
+#else
+# define IF_FEATURE_FIND_EXEC(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_EXEC(...)
#define CONFIG_FEATURE_FIND_USER 1
#define ENABLE_FEATURE_FIND_USER 1
-#define IF_FEATURE_FIND_USER(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_USER(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_USER"
+#else
+# define IF_FEATURE_FIND_USER(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_USER(...)
#define CONFIG_FEATURE_FIND_GROUP 1
#define ENABLE_FEATURE_FIND_GROUP 1
-#define IF_FEATURE_FIND_GROUP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_GROUP(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_GROUP"
+#else
+# define IF_FEATURE_FIND_GROUP(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_GROUP(...)
#define CONFIG_FEATURE_FIND_NOT 1
#define ENABLE_FEATURE_FIND_NOT 1
-#define IF_FEATURE_FIND_NOT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_NOT(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_NOT"
+#else
+# define IF_FEATURE_FIND_NOT(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_NOT(...)
#define CONFIG_FEATURE_FIND_DEPTH 1
#define ENABLE_FEATURE_FIND_DEPTH 1
-#define IF_FEATURE_FIND_DEPTH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_DEPTH(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_DEPTH"
+#else
+# define IF_FEATURE_FIND_DEPTH(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_DEPTH(...)
#define CONFIG_FEATURE_FIND_PAREN 1
#define ENABLE_FEATURE_FIND_PAREN 1
-#define IF_FEATURE_FIND_PAREN(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_PAREN(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_PAREN"
+#else
+# define IF_FEATURE_FIND_PAREN(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_PAREN(...)
#define CONFIG_FEATURE_FIND_SIZE 1
#define ENABLE_FEATURE_FIND_SIZE 1
-#define IF_FEATURE_FIND_SIZE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_SIZE(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_SIZE"
+#else
+# define IF_FEATURE_FIND_SIZE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_SIZE(...)
#define CONFIG_FEATURE_FIND_PRUNE 1
#define ENABLE_FEATURE_FIND_PRUNE 1
-#define IF_FEATURE_FIND_PRUNE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_PRUNE(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_PRUNE"
+#else
+# define IF_FEATURE_FIND_PRUNE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_PRUNE(...)
#undef CONFIG_FEATURE_FIND_DELETE
#define ENABLE_FEATURE_FIND_DELETE 0
@@ -1414,11 +2218,19 @@
#define IF_NOT_FEATURE_FIND_DELETE(...) __VA_ARGS__
#define CONFIG_FEATURE_FIND_PATH 1
#define ENABLE_FEATURE_FIND_PATH 1
-#define IF_FEATURE_FIND_PATH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_PATH(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_PATH"
+#else
+# define IF_FEATURE_FIND_PATH(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_PATH(...)
#define CONFIG_FEATURE_FIND_REGEX 1
#define ENABLE_FEATURE_FIND_REGEX 1
-#define IF_FEATURE_FIND_REGEX(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FIND_REGEX(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_REGEX"
+#else
+# define IF_FEATURE_FIND_REGEX(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FIND_REGEX(...)
#undef CONFIG_FEATURE_FIND_CONTEXT
#define ENABLE_FEATURE_FIND_CONTEXT 0
@@ -1430,31 +2242,59 @@
#define IF_NOT_FEATURE_FIND_LINKS(...) __VA_ARGS__
#define CONFIG_GREP 1
#define ENABLE_GREP 1
-#define IF_GREP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_GREP(...) __VA_ARGS__ "CONFIG_GREP"
+#else
+# define IF_GREP(...) __VA_ARGS__
+#endif
#define IF_NOT_GREP(...)
#define CONFIG_FEATURE_GREP_EGREP_ALIAS 1
#define ENABLE_FEATURE_GREP_EGREP_ALIAS 1
-#define IF_FEATURE_GREP_EGREP_ALIAS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_GREP_EGREP_ALIAS(...) __VA_ARGS__ "CONFIG_FEATURE_GREP_EGREP_ALIAS"
+#else
+# define IF_FEATURE_GREP_EGREP_ALIAS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_GREP_EGREP_ALIAS(...)
#define CONFIG_FEATURE_GREP_FGREP_ALIAS 1
#define ENABLE_FEATURE_GREP_FGREP_ALIAS 1
-#define IF_FEATURE_GREP_FGREP_ALIAS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_GREP_FGREP_ALIAS(...) __VA_ARGS__ "CONFIG_FEATURE_GREP_FGREP_ALIAS"
+#else
+# define IF_FEATURE_GREP_FGREP_ALIAS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_GREP_FGREP_ALIAS(...)
#define CONFIG_FEATURE_GREP_CONTEXT 1
#define ENABLE_FEATURE_GREP_CONTEXT 1
-#define IF_FEATURE_GREP_CONTEXT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_GREP_CONTEXT(...) __VA_ARGS__ "CONFIG_FEATURE_GREP_CONTEXT"
+#else
+# define IF_FEATURE_GREP_CONTEXT(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_GREP_CONTEXT(...)
#define CONFIG_XARGS 1
#define ENABLE_XARGS 1
-#define IF_XARGS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_XARGS(...) __VA_ARGS__ "CONFIG_XARGS"
+#else
+# define IF_XARGS(...) __VA_ARGS__
+#endif
#define IF_NOT_XARGS(...)
#define CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION 1
#define ENABLE_FEATURE_XARGS_SUPPORT_CONFIRMATION 1
-#define IF_FEATURE_XARGS_SUPPORT_CONFIRMATION(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_XARGS_SUPPORT_CONFIRMATION(...) __VA_ARGS__ "CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION"
+#else
+# define IF_FEATURE_XARGS_SUPPORT_CONFIRMATION(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_XARGS_SUPPORT_CONFIRMATION(...)
#define CONFIG_FEATURE_XARGS_SUPPORT_QUOTES 1
#define ENABLE_FEATURE_XARGS_SUPPORT_QUOTES 1
-#define IF_FEATURE_XARGS_SUPPORT_QUOTES(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_XARGS_SUPPORT_QUOTES(...) __VA_ARGS__ "CONFIG_FEATURE_XARGS_SUPPORT_QUOTES"
+#else
+# define IF_FEATURE_XARGS_SUPPORT_QUOTES(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_XARGS_SUPPORT_QUOTES(...)
#undef CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT
#define ENABLE_FEATURE_XARGS_SUPPORT_TERMOPT 0
@@ -1462,7 +2302,11 @@
#define IF_NOT_FEATURE_XARGS_SUPPORT_TERMOPT(...) __VA_ARGS__
#define CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM 1
#define ENABLE_FEATURE_XARGS_SUPPORT_ZERO_TERM 1
-#define IF_FEATURE_XARGS_SUPPORT_ZERO_TERM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_XARGS_SUPPORT_ZERO_TERM(...) __VA_ARGS__ "CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM"
+#else
+# define IF_FEATURE_XARGS_SUPPORT_ZERO_TERM(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_XARGS_SUPPORT_ZERO_TERM(...)
/*
@@ -1490,7 +2334,11 @@
#define IF_NOT_FEATURE_CALL_TELINIT(...) __VA_ARGS__
#define CONFIG_TELINIT_PATH ""
#define ENABLE_TELINIT_PATH 1
-#define IF_TELINIT_PATH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TELINIT_PATH(...) __VA_ARGS__ "CONFIG_TELINIT_PATH"
+#else
+# define IF_TELINIT_PATH(...) __VA_ARGS__
+#endif
#define IF_NOT_TELINIT_PATH(...)
#undef CONFIG_INIT
#define ENABLE_INIT 0
@@ -1506,7 +2354,11 @@
#define IF_NOT_FEATURE_KILL_REMOVED(...) __VA_ARGS__
#define CONFIG_FEATURE_KILL_DELAY 0
#define ENABLE_FEATURE_KILL_DELAY 1
-#define IF_FEATURE_KILL_DELAY(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_KILL_DELAY(...) __VA_ARGS__ "CONFIG_FEATURE_KILL_DELAY"
+#else
+# define IF_FEATURE_KILL_DELAY(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_KILL_DELAY(...)
#undef CONFIG_FEATURE_INIT_SCTTY
#define ENABLE_FEATURE_INIT_SCTTY 0
@@ -1530,7 +2382,11 @@
#define IF_NOT_FEATURE_INITRD(...) __VA_ARGS__
#define CONFIG_INIT_TERMINAL_TYPE ""
#define ENABLE_INIT_TERMINAL_TYPE 1
-#define IF_INIT_TERMINAL_TYPE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_INIT_TERMINAL_TYPE(...) __VA_ARGS__ "CONFIG_INIT_TERMINAL_TYPE"
+#else
+# define IF_INIT_TERMINAL_TYPE(...) __VA_ARGS__
+#endif
#define IF_NOT_INIT_TERMINAL_TYPE(...)
#undef CONFIG_MESG
#define ENABLE_MESG 0
@@ -1566,7 +2422,11 @@
#define IF_NOT_USE_BB_SHADOW(...) __VA_ARGS__
#define CONFIG_USE_BB_CRYPT 1
#define ENABLE_USE_BB_CRYPT 1
-#define IF_USE_BB_CRYPT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_USE_BB_CRYPT(...) __VA_ARGS__ "CONFIG_USE_BB_CRYPT"
+#else
+# define IF_USE_BB_CRYPT(...) __VA_ARGS__
+#endif
#define IF_NOT_USE_BB_CRYPT(...)
#undef CONFIG_USE_BB_CRYPT_SHA
#define ENABLE_USE_BB_CRYPT_SHA 0
@@ -1586,11 +2446,19 @@
#define IF_NOT_FEATURE_CHECK_NAMES(...) __VA_ARGS__
#define CONFIG_FIRST_SYSTEM_ID 0
#define ENABLE_FIRST_SYSTEM_ID 1
-#define IF_FIRST_SYSTEM_ID(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FIRST_SYSTEM_ID(...) __VA_ARGS__ "CONFIG_FIRST_SYSTEM_ID"
+#else
+# define IF_FIRST_SYSTEM_ID(...) __VA_ARGS__
+#endif
#define IF_NOT_FIRST_SYSTEM_ID(...)
#define CONFIG_LAST_SYSTEM_ID 0
#define ENABLE_LAST_SYSTEM_ID 1
-#define IF_LAST_SYSTEM_ID(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LAST_SYSTEM_ID(...) __VA_ARGS__ "CONFIG_LAST_SYSTEM_ID"
+#else
+# define IF_LAST_SYSTEM_ID(...) __VA_ARGS__
+#endif
#define IF_NOT_LAST_SYSTEM_ID(...)
#undef CONFIG_ADDGROUP
#define ENABLE_ADDGROUP 0
@@ -1662,7 +2530,11 @@
#define IF_NOT_CHPASSWD(...) __VA_ARGS__
#define CONFIG_FEATURE_DEFAULT_PASSWD_ALGO ""
#define ENABLE_FEATURE_DEFAULT_PASSWD_ALGO 1
-#define IF_FEATURE_DEFAULT_PASSWD_ALGO(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_DEFAULT_PASSWD_ALGO(...) __VA_ARGS__ "CONFIG_FEATURE_DEFAULT_PASSWD_ALGO"
+#else
+# define IF_FEATURE_DEFAULT_PASSWD_ALGO(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_DEFAULT_PASSWD_ALGO(...)
#undef CONFIG_SU
#define ENABLE_SU 0
@@ -1690,7 +2562,11 @@
*/
#define CONFIG_CHATTR 1
#define ENABLE_CHATTR 1
-#define IF_CHATTR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_CHATTR(...) __VA_ARGS__ "CONFIG_CHATTR"
+#else
+# define IF_CHATTR(...) __VA_ARGS__
+#endif
#define IF_NOT_CHATTR(...)
#undef CONFIG_FSCK
#define ENABLE_FSCK 0
@@ -1698,11 +2574,19 @@
#define IF_NOT_FSCK(...) __VA_ARGS__
#define CONFIG_LSATTR 1
#define ENABLE_LSATTR 1
-#define IF_LSATTR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LSATTR(...) __VA_ARGS__ "CONFIG_LSATTR"
+#else
+# define IF_LSATTR(...) __VA_ARGS__
+#endif
#define IF_NOT_LSATTR(...)
#define CONFIG_TUNE2FS 1
#define ENABLE_TUNE2FS 1
-#define IF_TUNE2FS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TUNE2FS(...) __VA_ARGS__ "CONFIG_TUNE2FS"
+#else
+# define IF_TUNE2FS(...) __VA_ARGS__
+#endif
#define IF_NOT_TUNE2FS(...)
/*
@@ -1710,15 +2594,27 @@
*/
#define CONFIG_MODINFO 1
#define ENABLE_MODINFO 1
-#define IF_MODINFO(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MODINFO(...) __VA_ARGS__ "CONFIG_MODINFO"
+#else
+# define IF_MODINFO(...) __VA_ARGS__
+#endif
#define IF_NOT_MODINFO(...)
#define CONFIG_MODPROBE_SMALL 1
#define ENABLE_MODPROBE_SMALL 1
-#define IF_MODPROBE_SMALL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MODPROBE_SMALL(...) __VA_ARGS__ "CONFIG_MODPROBE_SMALL"
+#else
+# define IF_MODPROBE_SMALL(...) __VA_ARGS__
+#endif
#define IF_NOT_MODPROBE_SMALL(...)
#define CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE 1
#define ENABLE_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE 1
-#define IF_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE(...) __VA_ARGS__ "CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE"
+#else
+# define IF_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE(...)
#undef CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED
#define ENABLE_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED 0
@@ -1762,7 +2658,11 @@
#define IF_NOT_FEATURE_2_4_MODULES(...) __VA_ARGS__
#define CONFIG_FEATURE_INSMOD_TRY_MMAP 1
#define ENABLE_FEATURE_INSMOD_TRY_MMAP 1
-#define IF_FEATURE_INSMOD_TRY_MMAP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_INSMOD_TRY_MMAP(...) __VA_ARGS__ "CONFIG_FEATURE_INSMOD_TRY_MMAP"
+#else
+# define IF_FEATURE_INSMOD_TRY_MMAP(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_INSMOD_TRY_MMAP(...)
#undef CONFIG_FEATURE_INSMOD_VERSION_CHECKING
#define ENABLE_FEATURE_INSMOD_VERSION_CHECKING 0
@@ -1798,7 +2698,11 @@
#define IF_NOT_FEATURE_MODUTILS_SYMBOLS(...) __VA_ARGS__
#define CONFIG_DEFAULT_DEPMOD_FILE "modules.dep"
#define ENABLE_DEFAULT_DEPMOD_FILE 1
-#define IF_DEFAULT_DEPMOD_FILE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DEFAULT_DEPMOD_FILE(...) __VA_ARGS__ "CONFIG_DEFAULT_DEPMOD_FILE"
+#else
+# define IF_DEFAULT_DEPMOD_FILE(...) __VA_ARGS__
+#endif
#define IF_NOT_DEFAULT_DEPMOD_FILE(...)
/*
@@ -1806,11 +2710,19 @@
*/
#define CONFIG_BLOCKDEV 1
#define ENABLE_BLOCKDEV 1
-#define IF_BLOCKDEV(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_BLOCKDEV(...) __VA_ARGS__ "CONFIG_BLOCKDEV"
+#else
+# define IF_BLOCKDEV(...) __VA_ARGS__
+#endif
#define IF_NOT_BLOCKDEV(...)
#define CONFIG_FSTRIM 1
#define ENABLE_FSTRIM 1
-#define IF_FSTRIM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FSTRIM(...) __VA_ARGS__ "CONFIG_FSTRIM"
+#else
+# define IF_FSTRIM(...) __VA_ARGS__
+#endif
#define IF_NOT_FSTRIM(...)
#undef CONFIG_MDEV
#define ENABLE_MDEV 0
@@ -1838,7 +2750,11 @@
#define IF_NOT_FEATURE_MDEV_LOAD_FIRMWARE(...) __VA_ARGS__
#define CONFIG_REV 1
#define ENABLE_REV 1
-#define IF_REV(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_REV(...) __VA_ARGS__ "CONFIG_REV"
+#else
+# define IF_REV(...) __VA_ARGS__
+#endif
#define IF_NOT_REV(...)
#undef CONFIG_ACPID
#define ENABLE_ACPID 0
@@ -1850,15 +2766,27 @@
#define IF_NOT_FEATURE_ACPID_COMPAT(...) __VA_ARGS__
#define CONFIG_BLKID 1
#define ENABLE_BLKID 1
-#define IF_BLKID(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_BLKID(...) __VA_ARGS__ "CONFIG_BLKID"
+#else
+# define IF_BLKID(...) __VA_ARGS__
+#endif
#define IF_NOT_BLKID(...)
#define CONFIG_FEATURE_BLKID_TYPE 1
#define ENABLE_FEATURE_BLKID_TYPE 1
-#define IF_FEATURE_BLKID_TYPE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_BLKID_TYPE(...) __VA_ARGS__ "CONFIG_FEATURE_BLKID_TYPE"
+#else
+# define IF_FEATURE_BLKID_TYPE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_BLKID_TYPE(...)
#define CONFIG_DMESG 1
#define ENABLE_DMESG 1
-#define IF_DMESG(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DMESG(...) __VA_ARGS__ "CONFIG_DMESG"
+#else
+# define IF_DMESG(...) __VA_ARGS__
+#endif
#define IF_NOT_DMESG(...)
#undef CONFIG_FEATURE_DMESG_PRETTY
#define ENABLE_FEATURE_DMESG_PRETTY 0
@@ -1886,15 +2814,27 @@
#define IF_NOT_FDFORMAT(...) __VA_ARGS__
#define CONFIG_FDISK 1
#define ENABLE_FDISK 1
-#define IF_FDISK(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FDISK(...) __VA_ARGS__ "CONFIG_FDISK"
+#else
+# define IF_FDISK(...) __VA_ARGS__
+#endif
#define IF_NOT_FDISK(...)
#define CONFIG_FDISK_SUPPORT_LARGE_DISKS 1
#define ENABLE_FDISK_SUPPORT_LARGE_DISKS 1
-#define IF_FDISK_SUPPORT_LARGE_DISKS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FDISK_SUPPORT_LARGE_DISKS(...) __VA_ARGS__ "CONFIG_FDISK_SUPPORT_LARGE_DISKS"
+#else
+# define IF_FDISK_SUPPORT_LARGE_DISKS(...) __VA_ARGS__
+#endif
#define IF_NOT_FDISK_SUPPORT_LARGE_DISKS(...)
#define CONFIG_FEATURE_FDISK_WRITABLE 1
#define ENABLE_FEATURE_FDISK_WRITABLE 1
-#define IF_FEATURE_FDISK_WRITABLE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_FDISK_WRITABLE(...) __VA_ARGS__ "CONFIG_FEATURE_FDISK_WRITABLE"
+#else
+# define IF_FEATURE_FDISK_WRITABLE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_FDISK_WRITABLE(...)
#undef CONFIG_FEATURE_AIX_LABEL
#define ENABLE_FEATURE_AIX_LABEL 0
@@ -1930,7 +2870,11 @@
#define IF_NOT_FLOCK(...) __VA_ARGS__
#define CONFIG_FREERAMDISK 1
#define ENABLE_FREERAMDISK 1
-#define IF_FREERAMDISK(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FREERAMDISK(...) __VA_ARGS__ "CONFIG_FREERAMDISK"
+#else
+# define IF_FREERAMDISK(...) __VA_ARGS__
+#endif
#define IF_NOT_FREERAMDISK(...)
#undef CONFIG_FSCK_MINIX
#define ENABLE_FSCK_MINIX 0
@@ -1938,7 +2882,11 @@
#define IF_NOT_FSCK_MINIX(...) __VA_ARGS__
#define CONFIG_MKFS_EXT2 1
#define ENABLE_MKFS_EXT2 1
-#define IF_MKFS_EXT2(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MKFS_EXT2(...) __VA_ARGS__ "CONFIG_MKFS_EXT2"
+#else
+# define IF_MKFS_EXT2(...) __VA_ARGS__
+#endif
#define IF_NOT_MKFS_EXT2(...)
#undef CONFIG_MKFS_MINIX
#define ENABLE_MKFS_MINIX 0
@@ -1954,11 +2902,19 @@
#define IF_NOT_MKFS_REISER(...) __VA_ARGS__
#define CONFIG_MKFS_VFAT 1
#define ENABLE_MKFS_VFAT 1
-#define IF_MKFS_VFAT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MKFS_VFAT(...) __VA_ARGS__ "CONFIG_MKFS_VFAT"
+#else
+# define IF_MKFS_VFAT(...) __VA_ARGS__
+#endif
#define IF_NOT_MKFS_VFAT(...)
#define CONFIG_GETOPT 1
#define ENABLE_GETOPT 1
-#define IF_GETOPT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_GETOPT(...) __VA_ARGS__ "CONFIG_GETOPT"
+#else
+# define IF_GETOPT(...) __VA_ARGS__
+#endif
#define IF_NOT_GETOPT(...)
#undef CONFIG_FEATURE_GETOPT_LONG
#define ENABLE_FEATURE_GETOPT_LONG 0
@@ -1966,7 +2922,11 @@
#define IF_NOT_FEATURE_GETOPT_LONG(...) __VA_ARGS__
#define CONFIG_HEXDUMP 1
#define ENABLE_HEXDUMP 1
-#define IF_HEXDUMP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_HEXDUMP(...) __VA_ARGS__ "CONFIG_HEXDUMP"
+#else
+# define IF_HEXDUMP(...) __VA_ARGS__
+#endif
#define IF_NOT_HEXDUMP(...)
#undef CONFIG_FEATURE_HEXDUMP_REVERSE
#define ENABLE_FEATURE_HEXDUMP_REVERSE 0
@@ -1998,19 +2958,35 @@
#define IF_NOT_IPCS(...) __VA_ARGS__
#define CONFIG_LOSETUP 1
#define ENABLE_LOSETUP 1
-#define IF_LOSETUP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LOSETUP(...) __VA_ARGS__ "CONFIG_LOSETUP"
+#else
+# define IF_LOSETUP(...) __VA_ARGS__
+#endif
#define IF_NOT_LOSETUP(...)
#define CONFIG_LSPCI 1
#define ENABLE_LSPCI 1
-#define IF_LSPCI(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LSPCI(...) __VA_ARGS__ "CONFIG_LSPCI"
+#else
+# define IF_LSPCI(...) __VA_ARGS__
+#endif
#define IF_NOT_LSPCI(...)
#define CONFIG_LSUSB 1
#define ENABLE_LSUSB 1
-#define IF_LSUSB(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LSUSB(...) __VA_ARGS__ "CONFIG_LSUSB"
+#else
+# define IF_LSUSB(...) __VA_ARGS__
+#endif
#define IF_NOT_LSUSB(...)
#define CONFIG_MKSWAP 1
#define ENABLE_MKSWAP 1
-#define IF_MKSWAP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MKSWAP(...) __VA_ARGS__ "CONFIG_MKSWAP"
+#else
+# define IF_MKSWAP(...) __VA_ARGS__
+#endif
#define IF_NOT_MKSWAP(...)
#undef CONFIG_FEATURE_MKSWAP_UUID
#define ENABLE_FEATURE_MKSWAP_UUID 0
@@ -2018,11 +2994,19 @@
#define IF_NOT_FEATURE_MKSWAP_UUID(...) __VA_ARGS__
#define CONFIG_MORE 1
#define ENABLE_MORE 1
-#define IF_MORE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MORE(...) __VA_ARGS__ "CONFIG_MORE"
+#else
+# define IF_MORE(...) __VA_ARGS__
+#endif
#define IF_NOT_MORE(...)
#define CONFIG_MOUNT 1
#define ENABLE_MOUNT 1
-#define IF_MOUNT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MOUNT(...) __VA_ARGS__ "CONFIG_MOUNT"
+#else
+# define IF_MOUNT(...) __VA_ARGS__
+#endif
#define IF_NOT_MOUNT(...)
#undef CONFIG_FEATURE_MOUNT_FAKE
#define ENABLE_FEATURE_MOUNT_FAKE 0
@@ -2038,7 +3022,11 @@
#define IF_NOT_FEATURE_MOUNT_HELPERS(...) __VA_ARGS__
#define CONFIG_FEATURE_MOUNT_LABEL 1
#define ENABLE_FEATURE_MOUNT_LABEL 1
-#define IF_FEATURE_MOUNT_LABEL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MOUNT_LABEL(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_LABEL"
+#else
+# define IF_FEATURE_MOUNT_LABEL(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MOUNT_LABEL(...)
#undef CONFIG_FEATURE_MOUNT_NFS
#define ENABLE_FEATURE_MOUNT_NFS 0
@@ -2046,15 +3034,27 @@
#define IF_NOT_FEATURE_MOUNT_NFS(...) __VA_ARGS__
#define CONFIG_FEATURE_MOUNT_CIFS 1
#define ENABLE_FEATURE_MOUNT_CIFS 1
-#define IF_FEATURE_MOUNT_CIFS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MOUNT_CIFS(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_CIFS"
+#else
+# define IF_FEATURE_MOUNT_CIFS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MOUNT_CIFS(...)
#define CONFIG_FEATURE_MOUNT_FLAGS 1
#define ENABLE_FEATURE_MOUNT_FLAGS 1
-#define IF_FEATURE_MOUNT_FLAGS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MOUNT_FLAGS(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_FLAGS"
+#else
+# define IF_FEATURE_MOUNT_FLAGS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MOUNT_FLAGS(...)
#define CONFIG_FEATURE_MOUNT_FSTAB 1
#define ENABLE_FEATURE_MOUNT_FSTAB 1
-#define IF_FEATURE_MOUNT_FSTAB(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MOUNT_FSTAB(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_FSTAB"
+#else
+# define IF_FEATURE_MOUNT_FSTAB(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MOUNT_FSTAB(...)
#undef CONFIG_PIVOT_ROOT
#define ENABLE_PIVOT_ROOT 0
@@ -2066,7 +3066,11 @@
#define IF_NOT_RDATE(...) __VA_ARGS__
#define CONFIG_RDEV 1
#define ENABLE_RDEV 1
-#define IF_RDEV(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_RDEV(...) __VA_ARGS__ "CONFIG_RDEV"
+#else
+# define IF_RDEV(...) __VA_ARGS__
+#endif
#define IF_NOT_RDEV(...)
#undef CONFIG_READPROFILE
#define ENABLE_READPROFILE 0
@@ -2090,7 +3094,11 @@
#define IF_NOT_SETARCH(...) __VA_ARGS__
#define CONFIG_SWAPONOFF 1
#define ENABLE_SWAPONOFF 1
-#define IF_SWAPONOFF(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SWAPONOFF(...) __VA_ARGS__ "CONFIG_SWAPONOFF"
+#else
+# define IF_SWAPONOFF(...) __VA_ARGS__
+#endif
#define IF_NOT_SWAPONOFF(...)
#undef CONFIG_FEATURE_SWAPON_PRI
#define ENABLE_FEATURE_SWAPON_PRI 0
@@ -2102,7 +3110,11 @@
#define IF_NOT_SWITCH_ROOT(...) __VA_ARGS__
#define CONFIG_UMOUNT 1
#define ENABLE_UMOUNT 1
-#define IF_UMOUNT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UMOUNT(...) __VA_ARGS__ "CONFIG_UMOUNT"
+#else
+# define IF_UMOUNT(...) __VA_ARGS__
+#endif
#define IF_NOT_UMOUNT(...)
#undef CONFIG_FEATURE_UMOUNT_ALL
#define ENABLE_FEATURE_UMOUNT_ALL 0
@@ -2114,7 +3126,11 @@
*/
#define CONFIG_FEATURE_MOUNT_LOOP 1
#define ENABLE_FEATURE_MOUNT_LOOP 1
-#define IF_FEATURE_MOUNT_LOOP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MOUNT_LOOP(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_LOOP"
+#else
+# define IF_FEATURE_MOUNT_LOOP(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MOUNT_LOOP(...)
#undef CONFIG_FEATURE_MOUNT_LOOP_CREATE
#define ENABLE_FEATURE_MOUNT_LOOP_CREATE 0
@@ -2126,92 +3142,132 @@
#define IF_NOT_FEATURE_MTAB_SUPPORT(...) __VA_ARGS__
#define CONFIG_VOLUMEID 1
#define ENABLE_VOLUMEID 1
-#define IF_VOLUMEID(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_VOLUMEID(...) __VA_ARGS__ "CONFIG_VOLUMEID"
+#else
+# define IF_VOLUMEID(...) __VA_ARGS__
+#endif
#define IF_NOT_VOLUMEID(...)
/*
* Filesystem/Volume identification
*/
-#define CONFIG_FEATURE_VOLUMEID_EXT 1
-#define ENABLE_FEATURE_VOLUMEID_EXT 1
-#define IF_FEATURE_VOLUMEID_EXT(...) __VA_ARGS__
-#define IF_NOT_FEATURE_VOLUMEID_EXT(...)
#undef CONFIG_FEATURE_VOLUMEID_BTRFS
#define ENABLE_FEATURE_VOLUMEID_BTRFS 0
#define IF_FEATURE_VOLUMEID_BTRFS(...)
#define IF_NOT_FEATURE_VOLUMEID_BTRFS(...) __VA_ARGS__
-#undef CONFIG_FEATURE_VOLUMEID_REISERFS
-#define ENABLE_FEATURE_VOLUMEID_REISERFS 0
-#define IF_FEATURE_VOLUMEID_REISERFS(...)
-#define IF_NOT_FEATURE_VOLUMEID_REISERFS(...) __VA_ARGS__
-#define CONFIG_FEATURE_VOLUMEID_FAT 1
-#define ENABLE_FEATURE_VOLUMEID_FAT 1
-#define IF_FEATURE_VOLUMEID_FAT(...) __VA_ARGS__
-#define IF_NOT_FEATURE_VOLUMEID_FAT(...)
+#undef CONFIG_FEATURE_VOLUMEID_CRAMFS
+#define ENABLE_FEATURE_VOLUMEID_CRAMFS 0
+#define IF_FEATURE_VOLUMEID_CRAMFS(...)
+#define IF_NOT_FEATURE_VOLUMEID_CRAMFS(...) __VA_ARGS__
#define CONFIG_FEATURE_VOLUMEID_EXFAT 1
#define ENABLE_FEATURE_VOLUMEID_EXFAT 1
-#define IF_FEATURE_VOLUMEID_EXFAT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_VOLUMEID_EXFAT(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_EXFAT"
+#else
+# define IF_FEATURE_VOLUMEID_EXFAT(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_VOLUMEID_EXFAT(...)
+#define CONFIG_FEATURE_VOLUMEID_EXT 1
+#define ENABLE_FEATURE_VOLUMEID_EXT 1
+#ifdef MAKE_SUID
+# define IF_FEATURE_VOLUMEID_EXT(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_EXT"
+#else
+# define IF_FEATURE_VOLUMEID_EXT(...) __VA_ARGS__
+#endif
+#define IF_NOT_FEATURE_VOLUMEID_EXT(...)
+#define CONFIG_FEATURE_VOLUMEID_F2FS 1
+#define ENABLE_FEATURE_VOLUMEID_F2FS 1
+#ifdef MAKE_SUID
+# define IF_FEATURE_VOLUMEID_F2FS(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_F2FS"
+#else
+# define IF_FEATURE_VOLUMEID_F2FS(...) __VA_ARGS__
+#endif
+#define IF_NOT_FEATURE_VOLUMEID_F2FS(...)
+#define CONFIG_FEATURE_VOLUMEID_FAT 1
+#define ENABLE_FEATURE_VOLUMEID_FAT 1
+#ifdef MAKE_SUID
+# define IF_FEATURE_VOLUMEID_FAT(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_FAT"
+#else
+# define IF_FEATURE_VOLUMEID_FAT(...) __VA_ARGS__
+#endif
+#define IF_NOT_FEATURE_VOLUMEID_FAT(...)
#undef CONFIG_FEATURE_VOLUMEID_HFS
#define ENABLE_FEATURE_VOLUMEID_HFS 0
#define IF_FEATURE_VOLUMEID_HFS(...)
#define IF_NOT_FEATURE_VOLUMEID_HFS(...) __VA_ARGS__
+#define CONFIG_FEATURE_VOLUMEID_ISO9660 1
+#define ENABLE_FEATURE_VOLUMEID_ISO9660 1
+#ifdef MAKE_SUID
+# define IF_FEATURE_VOLUMEID_ISO9660(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_ISO9660"
+#else
+# define IF_FEATURE_VOLUMEID_ISO9660(...) __VA_ARGS__
+#endif
+#define IF_NOT_FEATURE_VOLUMEID_ISO9660(...)
#undef CONFIG_FEATURE_VOLUMEID_JFS
#define ENABLE_FEATURE_VOLUMEID_JFS 0
#define IF_FEATURE_VOLUMEID_JFS(...)
#define IF_NOT_FEATURE_VOLUMEID_JFS(...) __VA_ARGS__
-#undef CONFIG_FEATURE_VOLUMEID_XFS
-#define ENABLE_FEATURE_VOLUMEID_XFS 0
-#define IF_FEATURE_VOLUMEID_XFS(...)
-#define IF_NOT_FEATURE_VOLUMEID_XFS(...) __VA_ARGS__
+#undef CONFIG_FEATURE_VOLUMEID_LINUXRAID
+#define ENABLE_FEATURE_VOLUMEID_LINUXRAID 0
+#define IF_FEATURE_VOLUMEID_LINUXRAID(...)
+#define IF_NOT_FEATURE_VOLUMEID_LINUXRAID(...) __VA_ARGS__
+#define CONFIG_FEATURE_VOLUMEID_LINUXSWAP 1
+#define ENABLE_FEATURE_VOLUMEID_LINUXSWAP 1
+#ifdef MAKE_SUID
+# define IF_FEATURE_VOLUMEID_LINUXSWAP(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_LINUXSWAP"
+#else
+# define IF_FEATURE_VOLUMEID_LINUXSWAP(...) __VA_ARGS__
+#endif
+#define IF_NOT_FEATURE_VOLUMEID_LINUXSWAP(...)
+#undef CONFIG_FEATURE_VOLUMEID_LUKS
+#define ENABLE_FEATURE_VOLUMEID_LUKS 0
+#define IF_FEATURE_VOLUMEID_LUKS(...)
+#define IF_NOT_FEATURE_VOLUMEID_LUKS(...) __VA_ARGS__
#undef CONFIG_FEATURE_VOLUMEID_NILFS
#define ENABLE_FEATURE_VOLUMEID_NILFS 0
#define IF_FEATURE_VOLUMEID_NILFS(...)
#define IF_NOT_FEATURE_VOLUMEID_NILFS(...) __VA_ARGS__
#define CONFIG_FEATURE_VOLUMEID_NTFS 1
#define ENABLE_FEATURE_VOLUMEID_NTFS 1
-#define IF_FEATURE_VOLUMEID_NTFS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_VOLUMEID_NTFS(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_NTFS"
+#else
+# define IF_FEATURE_VOLUMEID_NTFS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_VOLUMEID_NTFS(...)
-#define CONFIG_FEATURE_VOLUMEID_ISO9660 1
-#define ENABLE_FEATURE_VOLUMEID_ISO9660 1
-#define IF_FEATURE_VOLUMEID_ISO9660(...) __VA_ARGS__
-#define IF_NOT_FEATURE_VOLUMEID_ISO9660(...)
-#undef CONFIG_FEATURE_VOLUMEID_UDF
-#define ENABLE_FEATURE_VOLUMEID_UDF 0
-#define IF_FEATURE_VOLUMEID_UDF(...)
-#define IF_NOT_FEATURE_VOLUMEID_UDF(...) __VA_ARGS__
-#undef CONFIG_FEATURE_VOLUMEID_LUKS
-#define ENABLE_FEATURE_VOLUMEID_LUKS 0
-#define IF_FEATURE_VOLUMEID_LUKS(...)
-#define IF_NOT_FEATURE_VOLUMEID_LUKS(...) __VA_ARGS__
-#define CONFIG_FEATURE_VOLUMEID_LINUXSWAP 1
-#define ENABLE_FEATURE_VOLUMEID_LINUXSWAP 1
-#define IF_FEATURE_VOLUMEID_LINUXSWAP(...) __VA_ARGS__
-#define IF_NOT_FEATURE_VOLUMEID_LINUXSWAP(...)
-#undef CONFIG_FEATURE_VOLUMEID_CRAMFS
-#define ENABLE_FEATURE_VOLUMEID_CRAMFS 0
-#define IF_FEATURE_VOLUMEID_CRAMFS(...)
-#define IF_NOT_FEATURE_VOLUMEID_CRAMFS(...) __VA_ARGS__
+#undef CONFIG_FEATURE_VOLUMEID_OCFS2
+#define ENABLE_FEATURE_VOLUMEID_OCFS2 0
+#define IF_FEATURE_VOLUMEID_OCFS2(...)
+#define IF_NOT_FEATURE_VOLUMEID_OCFS2(...) __VA_ARGS__
+#undef CONFIG_FEATURE_VOLUMEID_REISERFS
+#define ENABLE_FEATURE_VOLUMEID_REISERFS 0
+#define IF_FEATURE_VOLUMEID_REISERFS(...)
+#define IF_NOT_FEATURE_VOLUMEID_REISERFS(...) __VA_ARGS__
#undef CONFIG_FEATURE_VOLUMEID_ROMFS
#define ENABLE_FEATURE_VOLUMEID_ROMFS 0
#define IF_FEATURE_VOLUMEID_ROMFS(...)
#define IF_NOT_FEATURE_VOLUMEID_ROMFS(...) __VA_ARGS__
#define CONFIG_FEATURE_VOLUMEID_SQUASHFS 1
#define ENABLE_FEATURE_VOLUMEID_SQUASHFS 1
-#define IF_FEATURE_VOLUMEID_SQUASHFS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_VOLUMEID_SQUASHFS(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_SQUASHFS"
+#else
+# define IF_FEATURE_VOLUMEID_SQUASHFS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_VOLUMEID_SQUASHFS(...)
#undef CONFIG_FEATURE_VOLUMEID_SYSV
#define ENABLE_FEATURE_VOLUMEID_SYSV 0
#define IF_FEATURE_VOLUMEID_SYSV(...)
#define IF_NOT_FEATURE_VOLUMEID_SYSV(...) __VA_ARGS__
-#undef CONFIG_FEATURE_VOLUMEID_OCFS2
-#define ENABLE_FEATURE_VOLUMEID_OCFS2 0
-#define IF_FEATURE_VOLUMEID_OCFS2(...)
-#define IF_NOT_FEATURE_VOLUMEID_OCFS2(...) __VA_ARGS__
-#undef CONFIG_FEATURE_VOLUMEID_LINUXRAID
-#define ENABLE_FEATURE_VOLUMEID_LINUXRAID 0
-#define IF_FEATURE_VOLUMEID_LINUXRAID(...)
-#define IF_NOT_FEATURE_VOLUMEID_LINUXRAID(...) __VA_ARGS__
+#undef CONFIG_FEATURE_VOLUMEID_UDF
+#define ENABLE_FEATURE_VOLUMEID_UDF 0
+#define IF_FEATURE_VOLUMEID_UDF(...)
+#define IF_NOT_FEATURE_VOLUMEID_UDF(...) __VA_ARGS__
+#undef CONFIG_FEATURE_VOLUMEID_XFS
+#define ENABLE_FEATURE_VOLUMEID_XFS 0
+#define IF_FEATURE_VOLUMEID_XFS(...)
+#define IF_NOT_FEATURE_VOLUMEID_XFS(...) __VA_ARGS__
/*
* Miscellaneous Utilities
@@ -2222,11 +3278,19 @@
#define IF_NOT_CONSPY(...) __VA_ARGS__
#define CONFIG_LESS 1
#define ENABLE_LESS 1
-#define IF_LESS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LESS(...) __VA_ARGS__ "CONFIG_LESS"
+#else
+# define IF_LESS(...) __VA_ARGS__
+#endif
#define IF_NOT_LESS(...)
#define CONFIG_FEATURE_LESS_MAXLINES 65536
#define ENABLE_FEATURE_LESS_MAXLINES 1
-#define IF_FEATURE_LESS_MAXLINES(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LESS_MAXLINES(...) __VA_ARGS__ "CONFIG_FEATURE_LESS_MAXLINES"
+#else
+# define IF_FEATURE_LESS_MAXLINES(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LESS_MAXLINES(...)
#undef CONFIG_FEATURE_LESS_BRACKETS
#define ENABLE_FEATURE_LESS_BRACKETS 0
@@ -2238,15 +3302,27 @@
#define IF_NOT_FEATURE_LESS_FLAGS(...) __VA_ARGS__
#define CONFIG_FEATURE_LESS_MARKS 1
#define ENABLE_FEATURE_LESS_MARKS 1
-#define IF_FEATURE_LESS_MARKS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LESS_MARKS(...) __VA_ARGS__ "CONFIG_FEATURE_LESS_MARKS"
+#else
+# define IF_FEATURE_LESS_MARKS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LESS_MARKS(...)
#define CONFIG_FEATURE_LESS_REGEXP 1
#define ENABLE_FEATURE_LESS_REGEXP 1
-#define IF_FEATURE_LESS_REGEXP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LESS_REGEXP(...) __VA_ARGS__ "CONFIG_FEATURE_LESS_REGEXP"
+#else
+# define IF_FEATURE_LESS_REGEXP(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LESS_REGEXP(...)
#define CONFIG_FEATURE_LESS_WINCH 1
#define ENABLE_FEATURE_LESS_WINCH 1
-#define IF_FEATURE_LESS_WINCH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_LESS_WINCH(...) __VA_ARGS__ "CONFIG_FEATURE_LESS_WINCH"
+#else
+# define IF_FEATURE_LESS_WINCH(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_LESS_WINCH(...)
#undef CONFIG_FEATURE_LESS_ASK_TERMINAL
#define ENABLE_FEATURE_LESS_ASK_TERMINAL 0
@@ -2262,15 +3338,31 @@
#define IF_NOT_FEATURE_LESS_LINENUMS(...) __VA_ARGS__
#define CONFIG_NANDWRITE 1
#define ENABLE_NANDWRITE 1
-#define IF_NANDWRITE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_NANDWRITE(...) __VA_ARGS__ "CONFIG_NANDWRITE"
+#else
+# define IF_NANDWRITE(...) __VA_ARGS__
+#endif
#define IF_NOT_NANDWRITE(...)
#define CONFIG_NANDDUMP 1
#define ENABLE_NANDDUMP 1
-#define IF_NANDDUMP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_NANDDUMP(...) __VA_ARGS__ "CONFIG_NANDDUMP"
+#else
+# define IF_NANDDUMP(...) __VA_ARGS__
+#endif
#define IF_NOT_NANDDUMP(...)
+#undef CONFIG_RFKILL
+#define ENABLE_RFKILL 0
+#define IF_RFKILL(...)
+#define IF_NOT_RFKILL(...) __VA_ARGS__
#define CONFIG_SETSERIAL 1
#define ENABLE_SETSERIAL 1
-#define IF_SETSERIAL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SETSERIAL(...) __VA_ARGS__ "CONFIG_SETSERIAL"
+#else
+# define IF_SETSERIAL(...) __VA_ARGS__
+#endif
#define IF_NOT_SETSERIAL(...)
#undef CONFIG_UBIATTACH
#define ENABLE_UBIATTACH 0
@@ -2296,17 +3388,29 @@
#define ENABLE_UBIUPDATEVOL 0
#define IF_UBIUPDATEVOL(...)
#define IF_NOT_UBIUPDATEVOL(...) __VA_ARGS__
+#undef CONFIG_WALL
+#define ENABLE_WALL 0
+#define IF_WALL(...)
+#define IF_NOT_WALL(...) __VA_ARGS__
#undef CONFIG_ADJTIMEX
#define ENABLE_ADJTIMEX 0
#define IF_ADJTIMEX(...)
#define IF_NOT_ADJTIMEX(...) __VA_ARGS__
#define CONFIG_BBCONFIG 1
#define ENABLE_BBCONFIG 1
-#define IF_BBCONFIG(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_BBCONFIG(...) __VA_ARGS__ "CONFIG_BBCONFIG"
+#else
+# define IF_BBCONFIG(...) __VA_ARGS__
+#endif
#define IF_NOT_BBCONFIG(...)
#define CONFIG_FEATURE_COMPRESS_BBCONFIG 1
#define ENABLE_FEATURE_COMPRESS_BBCONFIG 1
-#define IF_FEATURE_COMPRESS_BBCONFIG(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_COMPRESS_BBCONFIG(...) __VA_ARGS__ "CONFIG_FEATURE_COMPRESS_BBCONFIG"
+#else
+# define IF_FEATURE_COMPRESS_BBCONFIG(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_COMPRESS_BBCONFIG(...)
#undef CONFIG_BEEP
#define ENABLE_BEEP 0
@@ -2314,11 +3418,19 @@
#define IF_NOT_BEEP(...) __VA_ARGS__
#define CONFIG_FEATURE_BEEP_FREQ 0
#define ENABLE_FEATURE_BEEP_FREQ 1
-#define IF_FEATURE_BEEP_FREQ(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_BEEP_FREQ(...) __VA_ARGS__ "CONFIG_FEATURE_BEEP_FREQ"
+#else
+# define IF_FEATURE_BEEP_FREQ(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_BEEP_FREQ(...)
#define CONFIG_FEATURE_BEEP_LENGTH_MS 0
#define ENABLE_FEATURE_BEEP_LENGTH_MS 1
-#define IF_FEATURE_BEEP_LENGTH_MS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_BEEP_LENGTH_MS(...) __VA_ARGS__ "CONFIG_FEATURE_BEEP_LENGTH_MS"
+#else
+# define IF_FEATURE_BEEP_LENGTH_MS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_BEEP_LENGTH_MS(...)
#undef CONFIG_CHAT
#define ENABLE_CHAT 0
@@ -2370,7 +3482,11 @@
#define IF_NOT_FEATURE_CROND_CALL_SENDMAIL(...) __VA_ARGS__
#define CONFIG_FEATURE_CROND_DIR ""
#define ENABLE_FEATURE_CROND_DIR 1
-#define IF_FEATURE_CROND_DIR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_CROND_DIR(...) __VA_ARGS__ "CONFIG_FEATURE_CROND_DIR"
+#else
+# define IF_FEATURE_CROND_DIR(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_CROND_DIR(...)
#undef CONFIG_CRONTAB
#define ENABLE_CRONTAB 0
@@ -2378,7 +3494,11 @@
#define IF_NOT_CRONTAB(...) __VA_ARGS__
#define CONFIG_DC 1
#define ENABLE_DC 1
-#define IF_DC(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DC(...) __VA_ARGS__ "CONFIG_DC"
+#else
+# define IF_DC(...) __VA_ARGS__
+#endif
#define IF_NOT_DC(...)
#undef CONFIG_FEATURE_DC_LIBM
#define ENABLE_FEATURE_DC_LIBM 0
@@ -2406,7 +3526,11 @@
#define IF_NOT_FEATURE_DEVFS(...) __VA_ARGS__
#define CONFIG_DEVMEM 1
#define ENABLE_DEVMEM 1
-#define IF_DEVMEM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DEVMEM(...) __VA_ARGS__ "CONFIG_DEVMEM"
+#else
+# define IF_DEVMEM(...) __VA_ARGS__
+#endif
#define IF_NOT_DEVMEM(...)
#undef CONFIG_EJECT
#define ENABLE_EJECT 0
@@ -2486,7 +3610,11 @@
#define IF_NOT_FEATURE_HDPARM_HDIO_GETSET_DMA(...) __VA_ARGS__
#define CONFIG_MAKEDEVS 1
#define ENABLE_MAKEDEVS 1
-#define IF_MAKEDEVS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MAKEDEVS(...) __VA_ARGS__ "CONFIG_MAKEDEVS"
+#else
+# define IF_MAKEDEVS(...) __VA_ARGS__
+#endif
#define IF_NOT_MAKEDEVS(...)
#undef CONFIG_FEATURE_MAKEDEVS_LEAF
#define ENABLE_FEATURE_MAKEDEVS_LEAF 0
@@ -2494,7 +3622,11 @@
#define IF_NOT_FEATURE_MAKEDEVS_LEAF(...) __VA_ARGS__
#define CONFIG_FEATURE_MAKEDEVS_TABLE 1
#define ENABLE_FEATURE_MAKEDEVS_TABLE 1
-#define IF_FEATURE_MAKEDEVS_TABLE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MAKEDEVS_TABLE(...) __VA_ARGS__ "CONFIG_FEATURE_MAKEDEVS_TABLE"
+#else
+# define IF_FEATURE_MAKEDEVS_TABLE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MAKEDEVS_TABLE(...)
#undef CONFIG_MAN
#define ENABLE_MAN 0
@@ -2506,7 +3638,11 @@
#define IF_NOT_MICROCOM(...) __VA_ARGS__
#define CONFIG_MOUNTPOINT 1
#define ENABLE_MOUNTPOINT 1
-#define IF_MOUNTPOINT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_MOUNTPOINT(...) __VA_ARGS__ "CONFIG_MOUNTPOINT"
+#else
+# define IF_MOUNTPOINT(...) __VA_ARGS__
+#endif
#define IF_NOT_MOUNTPOINT(...)
#undef CONFIG_MT
#define ENABLE_MT 0
@@ -2520,10 +3656,6 @@
#define ENABLE_READAHEAD 0
#define IF_READAHEAD(...)
#define IF_NOT_READAHEAD(...) __VA_ARGS__
-#undef CONFIG_RFKILL
-#define ENABLE_RFKILL 0
-#define IF_RFKILL(...)
-#define IF_NOT_RFKILL(...) __VA_ARGS__
#undef CONFIG_RUNLEVEL
#define ENABLE_RUNLEVEL 0
#define IF_RUNLEVEL(...)
@@ -2534,11 +3666,19 @@
#define IF_NOT_RX(...) __VA_ARGS__
#define CONFIG_SETSID 1
#define ENABLE_SETSID 1
-#define IF_SETSID(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SETSID(...) __VA_ARGS__ "CONFIG_SETSID"
+#else
+# define IF_SETSID(...) __VA_ARGS__
+#endif
#define IF_NOT_SETSID(...)
#define CONFIG_STRINGS 1
#define ENABLE_STRINGS 1
-#define IF_STRINGS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_STRINGS(...) __VA_ARGS__ "CONFIG_STRINGS"
+#else
+# define IF_STRINGS(...) __VA_ARGS__
+#endif
#define IF_NOT_STRINGS(...)
#undef CONFIG_TASKSET
#define ENABLE_TASKSET 0
@@ -2550,7 +3690,11 @@
#define IF_NOT_FEATURE_TASKSET_FANCY(...) __VA_ARGS__
#define CONFIG_TIME 1
#define ENABLE_TIME 1
-#define IF_TIME(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TIME(...) __VA_ARGS__ "CONFIG_TIME"
+#else
+# define IF_TIME(...) __VA_ARGS__
+#endif
#define IF_NOT_TIME(...)
#undef CONFIG_TIMEOUT
#define ENABLE_TIMEOUT 0
@@ -2558,16 +3702,16 @@
#define IF_NOT_TIMEOUT(...) __VA_ARGS__
#define CONFIG_TTYSIZE 1
#define ENABLE_TTYSIZE 1
-#define IF_TTYSIZE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TTYSIZE(...) __VA_ARGS__ "CONFIG_TTYSIZE"
+#else
+# define IF_TTYSIZE(...) __VA_ARGS__
+#endif
#define IF_NOT_TTYSIZE(...)
#undef CONFIG_VOLNAME
#define ENABLE_VOLNAME 0
#define IF_VOLNAME(...)
#define IF_NOT_VOLNAME(...) __VA_ARGS__
-#undef CONFIG_WALL
-#define ENABLE_WALL 0
-#define IF_WALL(...)
-#define IF_NOT_WALL(...) __VA_ARGS__
#undef CONFIG_WATCHDOG
#define ENABLE_WATCHDOG 0
#define IF_WATCHDOG(...)
@@ -2786,7 +3930,11 @@
#define IF_NOT_IFUPDOWN(...) __VA_ARGS__
#define CONFIG_IFUPDOWN_IFSTATE_PATH ""
#define ENABLE_IFUPDOWN_IFSTATE_PATH 1
-#define IF_IFUPDOWN_IFSTATE_PATH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_IFUPDOWN_IFSTATE_PATH(...) __VA_ARGS__ "CONFIG_IFUPDOWN_IFSTATE_PATH"
+#else
+# define IF_IFUPDOWN_IFSTATE_PATH(...) __VA_ARGS__
+#endif
#define IF_NOT_IFUPDOWN_IFSTATE_PATH(...)
#undef CONFIG_FEATURE_IFUPDOWN_IP
#define ENABLE_FEATURE_IFUPDOWN_IP 0
@@ -3054,7 +4202,11 @@
#define IF_NOT_FEATURE_UDHCPD_BASE_IP_ON_MAC(...) __VA_ARGS__
#define CONFIG_DHCPD_LEASES_FILE ""
#define ENABLE_DHCPD_LEASES_FILE 1
-#define IF_DHCPD_LEASES_FILE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_DHCPD_LEASES_FILE(...) __VA_ARGS__ "CONFIG_DHCPD_LEASES_FILE"
+#else
+# define IF_DHCPD_LEASES_FILE(...) __VA_ARGS__
+#endif
#define IF_NOT_DHCPD_LEASES_FILE(...)
#undef CONFIG_UDHCPC
#define ENABLE_UDHCPC 0
@@ -3070,7 +4222,11 @@
#define IF_NOT_FEATURE_UDHCP_PORT(...) __VA_ARGS__
#define CONFIG_UDHCP_DEBUG 0
#define ENABLE_UDHCP_DEBUG 1
-#define IF_UDHCP_DEBUG(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UDHCP_DEBUG(...) __VA_ARGS__ "CONFIG_UDHCP_DEBUG"
+#else
+# define IF_UDHCP_DEBUG(...) __VA_ARGS__
+#endif
#define IF_NOT_UDHCP_DEBUG(...)
#undef CONFIG_FEATURE_UDHCP_RFC3397
#define ENABLE_FEATURE_UDHCP_RFC3397 0
@@ -3082,15 +4238,27 @@
#define IF_NOT_FEATURE_UDHCP_8021Q(...) __VA_ARGS__
#define CONFIG_UDHCPC_DEFAULT_SCRIPT ""
#define ENABLE_UDHCPC_DEFAULT_SCRIPT 1
-#define IF_UDHCPC_DEFAULT_SCRIPT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UDHCPC_DEFAULT_SCRIPT(...) __VA_ARGS__ "CONFIG_UDHCPC_DEFAULT_SCRIPT"
+#else
+# define IF_UDHCPC_DEFAULT_SCRIPT(...) __VA_ARGS__
+#endif
#define IF_NOT_UDHCPC_DEFAULT_SCRIPT(...)
#define CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS 0
#define ENABLE_UDHCPC_SLACK_FOR_BUGGY_SERVERS 1
-#define IF_UDHCPC_SLACK_FOR_BUGGY_SERVERS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UDHCPC_SLACK_FOR_BUGGY_SERVERS(...) __VA_ARGS__ "CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS"
+#else
+# define IF_UDHCPC_SLACK_FOR_BUGGY_SERVERS(...) __VA_ARGS__
+#endif
#define IF_NOT_UDHCPC_SLACK_FOR_BUGGY_SERVERS(...)
#define CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS ""
#define ENABLE_IFUPDOWN_UDHCPC_CMD_OPTIONS 1
-#define IF_IFUPDOWN_UDHCPC_CMD_OPTIONS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_IFUPDOWN_UDHCPC_CMD_OPTIONS(...) __VA_ARGS__ "CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS"
+#else
+# define IF_IFUPDOWN_UDHCPC_CMD_OPTIONS(...) __VA_ARGS__
+#endif
#define IF_NOT_IFUPDOWN_UDHCPC_CMD_OPTIONS(...)
#undef CONFIG_UDPSVD
#define ENABLE_UDPSVD 0
@@ -3150,7 +4318,11 @@
#define IF_NOT_MAKEMIME(...) __VA_ARGS__
#define CONFIG_FEATURE_MIME_CHARSET ""
#define ENABLE_FEATURE_MIME_CHARSET 1
-#define IF_FEATURE_MIME_CHARSET(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_MIME_CHARSET(...) __VA_ARGS__ "CONFIG_FEATURE_MIME_CHARSET"
+#else
+# define IF_FEATURE_MIME_CHARSET(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_MIME_CHARSET(...)
#undef CONFIG_POPMAILDIR
#define ENABLE_POPMAILDIR 0
@@ -3182,7 +4354,11 @@
#define IF_NOT_IOSTAT(...) __VA_ARGS__
#define CONFIG_LSOF 1
#define ENABLE_LSOF 1
-#define IF_LSOF(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_LSOF(...) __VA_ARGS__ "CONFIG_LSOF"
+#else
+# define IF_LSOF(...) __VA_ARGS__
+#endif
#define IF_NOT_LSOF(...)
#undef CONFIG_MPSTAT
#define ENABLE_MPSTAT 0
@@ -3202,7 +4378,11 @@
#define IF_NOT_POWERTOP(...) __VA_ARGS__
#define CONFIG_PSTREE 1
#define ENABLE_PSTREE 1
-#define IF_PSTREE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PSTREE(...) __VA_ARGS__ "CONFIG_PSTREE"
+#else
+# define IF_PSTREE(...) __VA_ARGS__
+#endif
#define IF_NOT_PSTREE(...)
#undef CONFIG_PWDX
#define ENABLE_PWDX 0
@@ -3214,15 +4394,27 @@
#define IF_NOT_SMEMCAP(...) __VA_ARGS__
#define CONFIG_TOP 1
#define ENABLE_TOP 1
-#define IF_TOP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_TOP(...) __VA_ARGS__ "CONFIG_TOP"
+#else
+# define IF_TOP(...) __VA_ARGS__
+#endif
#define IF_NOT_TOP(...)
#define CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE 1
#define ENABLE_FEATURE_TOP_CPU_USAGE_PERCENTAGE 1
-#define IF_FEATURE_TOP_CPU_USAGE_PERCENTAGE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TOP_CPU_USAGE_PERCENTAGE(...) __VA_ARGS__ "CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE"
+#else
+# define IF_FEATURE_TOP_CPU_USAGE_PERCENTAGE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TOP_CPU_USAGE_PERCENTAGE(...)
#define CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS 1
#define ENABLE_FEATURE_TOP_CPU_GLOBAL_PERCENTS 1
-#define IF_FEATURE_TOP_CPU_GLOBAL_PERCENTS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TOP_CPU_GLOBAL_PERCENTS(...) __VA_ARGS__ "CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS"
+#else
+# define IF_FEATURE_TOP_CPU_GLOBAL_PERCENTS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TOP_CPU_GLOBAL_PERCENTS(...)
#undef CONFIG_FEATURE_TOP_SMP_CPU
#define ENABLE_FEATURE_TOP_SMP_CPU 0
@@ -3230,7 +4422,11 @@
#define IF_NOT_FEATURE_TOP_SMP_CPU(...) __VA_ARGS__
#define CONFIG_FEATURE_TOP_DECIMALS 1
#define ENABLE_FEATURE_TOP_DECIMALS 1
-#define IF_FEATURE_TOP_DECIMALS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TOP_DECIMALS(...) __VA_ARGS__ "CONFIG_FEATURE_TOP_DECIMALS"
+#else
+# define IF_FEATURE_TOP_DECIMALS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TOP_DECIMALS(...)
#undef CONFIG_FEATURE_TOP_SMP_PROCESS
#define ENABLE_FEATURE_TOP_SMP_PROCESS 0
@@ -3238,11 +4434,19 @@
#define IF_NOT_FEATURE_TOP_SMP_PROCESS(...) __VA_ARGS__
#define CONFIG_FEATURE_TOPMEM 1
#define ENABLE_FEATURE_TOPMEM 1
-#define IF_FEATURE_TOPMEM(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_TOPMEM(...) __VA_ARGS__ "CONFIG_FEATURE_TOPMEM"
+#else
+# define IF_FEATURE_TOPMEM(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_TOPMEM(...)
#define CONFIG_UPTIME 1
#define ENABLE_UPTIME 1
-#define IF_UPTIME(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_UPTIME(...) __VA_ARGS__ "CONFIG_UPTIME"
+#else
+# define IF_UPTIME(...) __VA_ARGS__
+#endif
#define IF_NOT_UPTIME(...)
#undef CONFIG_FEATURE_UPTIME_UTMP_SUPPORT
#define ENABLE_FEATURE_UPTIME_UTMP_SUPPORT 0
@@ -3250,55 +4454,107 @@
#define IF_NOT_FEATURE_UPTIME_UTMP_SUPPORT(...) __VA_ARGS__
#define CONFIG_FREE 1
#define ENABLE_FREE 1
-#define IF_FREE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FREE(...) __VA_ARGS__ "CONFIG_FREE"
+#else
+# define IF_FREE(...) __VA_ARGS__
+#endif
#define IF_NOT_FREE(...)
#define CONFIG_FUSER 1
#define ENABLE_FUSER 1
-#define IF_FUSER(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FUSER(...) __VA_ARGS__ "CONFIG_FUSER"
+#else
+# define IF_FUSER(...) __VA_ARGS__
+#endif
#define IF_NOT_FUSER(...)
#define CONFIG_KILL 1
#define ENABLE_KILL 1
-#define IF_KILL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_KILL(...) __VA_ARGS__ "CONFIG_KILL"
+#else
+# define IF_KILL(...) __VA_ARGS__
+#endif
#define IF_NOT_KILL(...)
#define CONFIG_KILLALL 1
#define ENABLE_KILLALL 1
-#define IF_KILLALL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_KILLALL(...) __VA_ARGS__ "CONFIG_KILLALL"
+#else
+# define IF_KILLALL(...) __VA_ARGS__
+#endif
#define IF_NOT_KILLALL(...)
#define CONFIG_KILLALL5 1
#define ENABLE_KILLALL5 1
-#define IF_KILLALL5(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_KILLALL5(...) __VA_ARGS__ "CONFIG_KILLALL5"
+#else
+# define IF_KILLALL5(...) __VA_ARGS__
+#endif
#define IF_NOT_KILLALL5(...)
#define CONFIG_PGREP 1
#define ENABLE_PGREP 1
-#define IF_PGREP(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PGREP(...) __VA_ARGS__ "CONFIG_PGREP"
+#else
+# define IF_PGREP(...) __VA_ARGS__
+#endif
#define IF_NOT_PGREP(...)
#define CONFIG_PIDOF 1
#define ENABLE_PIDOF 1
-#define IF_PIDOF(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PIDOF(...) __VA_ARGS__ "CONFIG_PIDOF"
+#else
+# define IF_PIDOF(...) __VA_ARGS__
+#endif
#define IF_NOT_PIDOF(...)
#define CONFIG_FEATURE_PIDOF_SINGLE 1
#define ENABLE_FEATURE_PIDOF_SINGLE 1
-#define IF_FEATURE_PIDOF_SINGLE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_PIDOF_SINGLE(...) __VA_ARGS__ "CONFIG_FEATURE_PIDOF_SINGLE"
+#else
+# define IF_FEATURE_PIDOF_SINGLE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_PIDOF_SINGLE(...)
#define CONFIG_FEATURE_PIDOF_OMIT 1
#define ENABLE_FEATURE_PIDOF_OMIT 1
-#define IF_FEATURE_PIDOF_OMIT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_PIDOF_OMIT(...) __VA_ARGS__ "CONFIG_FEATURE_PIDOF_OMIT"
+#else
+# define IF_FEATURE_PIDOF_OMIT(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_PIDOF_OMIT(...)
#define CONFIG_PKILL 1
#define ENABLE_PKILL 1
-#define IF_PKILL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PKILL(...) __VA_ARGS__ "CONFIG_PKILL"
+#else
+# define IF_PKILL(...) __VA_ARGS__
+#endif
#define IF_NOT_PKILL(...)
#define CONFIG_PS 1
#define ENABLE_PS 1
-#define IF_PS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_PS(...) __VA_ARGS__ "CONFIG_PS"
+#else
+# define IF_PS(...) __VA_ARGS__
+#endif
#define IF_NOT_PS(...)
#define CONFIG_FEATURE_PS_WIDE 1
#define ENABLE_FEATURE_PS_WIDE 1
-#define IF_FEATURE_PS_WIDE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_PS_WIDE(...) __VA_ARGS__ "CONFIG_FEATURE_PS_WIDE"
+#else
+# define IF_FEATURE_PS_WIDE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_PS_WIDE(...)
#define CONFIG_FEATURE_PS_LONG 1
#define ENABLE_FEATURE_PS_LONG 1
-#define IF_FEATURE_PS_LONG(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_PS_LONG(...) __VA_ARGS__ "CONFIG_FEATURE_PS_LONG"
+#else
+# define IF_FEATURE_PS_LONG(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_PS_LONG(...)
#undef CONFIG_FEATURE_PS_TIME
#define ENABLE_FEATURE_PS_TIME 0
@@ -3314,19 +4570,35 @@
#define IF_NOT_FEATURE_PS_UNUSUAL_SYSTEMS(...) __VA_ARGS__
#define CONFIG_RENICE 1
#define ENABLE_RENICE 1
-#define IF_RENICE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_RENICE(...) __VA_ARGS__ "CONFIG_RENICE"
+#else
+# define IF_RENICE(...) __VA_ARGS__
+#endif
#define IF_NOT_RENICE(...)
#define CONFIG_BB_SYSCTL 1
#define ENABLE_BB_SYSCTL 1
-#define IF_BB_SYSCTL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_BB_SYSCTL(...) __VA_ARGS__ "CONFIG_BB_SYSCTL"
+#else
+# define IF_BB_SYSCTL(...) __VA_ARGS__
+#endif
#define IF_NOT_BB_SYSCTL(...)
#define CONFIG_FEATURE_SHOW_THREADS 1
#define ENABLE_FEATURE_SHOW_THREADS 1
-#define IF_FEATURE_SHOW_THREADS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_SHOW_THREADS(...) __VA_ARGS__ "CONFIG_FEATURE_SHOW_THREADS"
+#else
+# define IF_FEATURE_SHOW_THREADS(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_SHOW_THREADS(...)
#define CONFIG_WATCH 1
#define ENABLE_WATCH 1
-#define IF_WATCH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_WATCH(...) __VA_ARGS__ "CONFIG_WATCH"
+#else
+# define IF_WATCH(...) __VA_ARGS__
+#endif
#define IF_NOT_WATCH(...)
/*
@@ -3350,7 +4622,11 @@
#define IF_NOT_SV(...) __VA_ARGS__
#define CONFIG_SV_DEFAULT_SERVICE_DIR ""
#define ENABLE_SV_DEFAULT_SERVICE_DIR 1
-#define IF_SV_DEFAULT_SERVICE_DIR(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SV_DEFAULT_SERVICE_DIR(...) __VA_ARGS__ "CONFIG_SV_DEFAULT_SERVICE_DIR"
+#else
+# define IF_SV_DEFAULT_SERVICE_DIR(...) __VA_ARGS__
+#endif
#define IF_NOT_SV_DEFAULT_SERVICE_DIR(...)
#undef CONFIG_SVLOGD
#define ENABLE_SVLOGD 0
@@ -3442,11 +4718,19 @@
*/
#define CONFIG_ASH 1
#define ENABLE_ASH 1
-#define IF_ASH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ASH(...) __VA_ARGS__ "CONFIG_ASH"
+#else
+# define IF_ASH(...) __VA_ARGS__
+#endif
#define IF_NOT_ASH(...)
#define CONFIG_ASH_BASH_COMPAT 1
#define ENABLE_ASH_BASH_COMPAT 1
-#define IF_ASH_BASH_COMPAT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ASH_BASH_COMPAT(...) __VA_ARGS__ "CONFIG_ASH_BASH_COMPAT"
+#else
+# define IF_ASH_BASH_COMPAT(...) __VA_ARGS__
+#endif
#define IF_NOT_ASH_BASH_COMPAT(...)
#undef CONFIG_ASH_IDLE_TIMEOUT
#define ENABLE_ASH_IDLE_TIMEOUT 0
@@ -3454,31 +4738,59 @@
#define IF_NOT_ASH_IDLE_TIMEOUT(...) __VA_ARGS__
#define CONFIG_ASH_JOB_CONTROL 1
#define ENABLE_ASH_JOB_CONTROL 1
-#define IF_ASH_JOB_CONTROL(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ASH_JOB_CONTROL(...) __VA_ARGS__ "CONFIG_ASH_JOB_CONTROL"
+#else
+# define IF_ASH_JOB_CONTROL(...) __VA_ARGS__
+#endif
#define IF_NOT_ASH_JOB_CONTROL(...)
#define CONFIG_ASH_ALIAS 1
#define ENABLE_ASH_ALIAS 1
-#define IF_ASH_ALIAS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ASH_ALIAS(...) __VA_ARGS__ "CONFIG_ASH_ALIAS"
+#else
+# define IF_ASH_ALIAS(...) __VA_ARGS__
+#endif
#define IF_NOT_ASH_ALIAS(...)
#define CONFIG_ASH_GETOPTS 1
#define ENABLE_ASH_GETOPTS 1
-#define IF_ASH_GETOPTS(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ASH_GETOPTS(...) __VA_ARGS__ "CONFIG_ASH_GETOPTS"
+#else
+# define IF_ASH_GETOPTS(...) __VA_ARGS__
+#endif
#define IF_NOT_ASH_GETOPTS(...)
#define CONFIG_ASH_BUILTIN_ECHO 1
#define ENABLE_ASH_BUILTIN_ECHO 1
-#define IF_ASH_BUILTIN_ECHO(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ASH_BUILTIN_ECHO(...) __VA_ARGS__ "CONFIG_ASH_BUILTIN_ECHO"
+#else
+# define IF_ASH_BUILTIN_ECHO(...) __VA_ARGS__
+#endif
#define IF_NOT_ASH_BUILTIN_ECHO(...)
#define CONFIG_ASH_BUILTIN_PRINTF 1
#define ENABLE_ASH_BUILTIN_PRINTF 1
-#define IF_ASH_BUILTIN_PRINTF(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ASH_BUILTIN_PRINTF(...) __VA_ARGS__ "CONFIG_ASH_BUILTIN_PRINTF"
+#else
+# define IF_ASH_BUILTIN_PRINTF(...) __VA_ARGS__
+#endif
#define IF_NOT_ASH_BUILTIN_PRINTF(...)
#define CONFIG_ASH_BUILTIN_TEST 1
#define ENABLE_ASH_BUILTIN_TEST 1
-#define IF_ASH_BUILTIN_TEST(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ASH_BUILTIN_TEST(...) __VA_ARGS__ "CONFIG_ASH_BUILTIN_TEST"
+#else
+# define IF_ASH_BUILTIN_TEST(...) __VA_ARGS__
+#endif
#define IF_NOT_ASH_BUILTIN_TEST(...)
#define CONFIG_ASH_CMDCMD 1
#define ENABLE_ASH_CMDCMD 1
-#define IF_ASH_CMDCMD(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ASH_CMDCMD(...) __VA_ARGS__ "CONFIG_ASH_CMDCMD"
+#else
+# define IF_ASH_CMDCMD(...) __VA_ARGS__
+#endif
#define IF_NOT_ASH_CMDCMD(...)
#undef CONFIG_ASH_MAIL
#define ENABLE_ASH_MAIL 0
@@ -3486,7 +4798,11 @@
#define IF_NOT_ASH_MAIL(...) __VA_ARGS__
#define CONFIG_ASH_OPTIMIZE_FOR_SIZE 1
#define ENABLE_ASH_OPTIMIZE_FOR_SIZE 1
-#define IF_ASH_OPTIMIZE_FOR_SIZE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ASH_OPTIMIZE_FOR_SIZE(...) __VA_ARGS__ "CONFIG_ASH_OPTIMIZE_FOR_SIZE"
+#else
+# define IF_ASH_OPTIMIZE_FOR_SIZE(...) __VA_ARGS__
+#endif
#define IF_NOT_ASH_OPTIMIZE_FOR_SIZE(...)
#undef CONFIG_ASH_RANDOM_SUPPORT
#define ENABLE_ASH_RANDOM_SUPPORT 0
@@ -3494,7 +4810,11 @@
#define IF_NOT_ASH_RANDOM_SUPPORT(...) __VA_ARGS__
#define CONFIG_ASH_EXPAND_PRMT 1
#define ENABLE_ASH_EXPAND_PRMT 1
-#define IF_ASH_EXPAND_PRMT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_ASH_EXPAND_PRMT(...) __VA_ARGS__ "CONFIG_ASH_EXPAND_PRMT"
+#else
+# define IF_ASH_EXPAND_PRMT(...) __VA_ARGS__
+#endif
#define IF_NOT_ASH_EXPAND_PRMT(...)
#undef CONFIG_CTTYHACK
#define ENABLE_CTTYHACK 0
@@ -3570,7 +4890,11 @@
#define IF_NOT_MSH(...) __VA_ARGS__
#define CONFIG_FEATURE_SH_IS_ASH 1
#define ENABLE_FEATURE_SH_IS_ASH 1
-#define IF_FEATURE_SH_IS_ASH(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_SH_IS_ASH(...) __VA_ARGS__ "CONFIG_FEATURE_SH_IS_ASH"
+#else
+# define IF_FEATURE_SH_IS_ASH(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_SH_IS_ASH(...)
#undef CONFIG_FEATURE_SH_IS_HUSH
#define ENABLE_FEATURE_SH_IS_HUSH 0
@@ -3590,19 +4914,35 @@
#define IF_NOT_FEATURE_BASH_IS_HUSH(...) __VA_ARGS__
#define CONFIG_FEATURE_BASH_IS_NONE 1
#define ENABLE_FEATURE_BASH_IS_NONE 1
-#define IF_FEATURE_BASH_IS_NONE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_BASH_IS_NONE(...) __VA_ARGS__ "CONFIG_FEATURE_BASH_IS_NONE"
+#else
+# define IF_FEATURE_BASH_IS_NONE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_BASH_IS_NONE(...)
#define CONFIG_SH_MATH_SUPPORT 1
#define ENABLE_SH_MATH_SUPPORT 1
-#define IF_SH_MATH_SUPPORT(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SH_MATH_SUPPORT(...) __VA_ARGS__ "CONFIG_SH_MATH_SUPPORT"
+#else
+# define IF_SH_MATH_SUPPORT(...) __VA_ARGS__
+#endif
#define IF_NOT_SH_MATH_SUPPORT(...)
#define CONFIG_SH_MATH_SUPPORT_64 1
#define ENABLE_SH_MATH_SUPPORT_64 1
-#define IF_SH_MATH_SUPPORT_64(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_SH_MATH_SUPPORT_64(...) __VA_ARGS__ "CONFIG_SH_MATH_SUPPORT_64"
+#else
+# define IF_SH_MATH_SUPPORT_64(...) __VA_ARGS__
+#endif
#define IF_NOT_SH_MATH_SUPPORT_64(...)
#define CONFIG_FEATURE_SH_EXTRA_QUIET 1
#define ENABLE_FEATURE_SH_EXTRA_QUIET 1
-#define IF_FEATURE_SH_EXTRA_QUIET(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_SH_EXTRA_QUIET(...) __VA_ARGS__ "CONFIG_FEATURE_SH_EXTRA_QUIET"
+#else
+# define IF_FEATURE_SH_EXTRA_QUIET(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_SH_EXTRA_QUIET(...)
#undef CONFIG_FEATURE_SH_STANDALONE
#define ENABLE_FEATURE_SH_STANDALONE 0
@@ -3642,7 +4982,11 @@
#define IF_NOT_FEATURE_SYSLOGD_CFG(...) __VA_ARGS__
#define CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE 0
#define ENABLE_FEATURE_SYSLOGD_READ_BUFFER_SIZE 1
-#define IF_FEATURE_SYSLOGD_READ_BUFFER_SIZE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_SYSLOGD_READ_BUFFER_SIZE(...) __VA_ARGS__ "CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE"
+#else
+# define IF_FEATURE_SYSLOGD_READ_BUFFER_SIZE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_SYSLOGD_READ_BUFFER_SIZE(...)
#undef CONFIG_FEATURE_IPC_SYSLOG
#define ENABLE_FEATURE_IPC_SYSLOG 0
@@ -3650,7 +4994,11 @@
#define IF_NOT_FEATURE_IPC_SYSLOG(...) __VA_ARGS__
#define CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE 0
#define ENABLE_FEATURE_IPC_SYSLOG_BUFFER_SIZE 1
-#define IF_FEATURE_IPC_SYSLOG_BUFFER_SIZE(...) __VA_ARGS__
+#ifdef MAKE_SUID
+# define IF_FEATURE_IPC_SYSLOG_BUFFER_SIZE(...) __VA_ARGS__ "CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE"
+#else
+# define IF_FEATURE_IPC_SYSLOG_BUFFER_SIZE(...) __VA_ARGS__
+#endif
#define IF_NOT_FEATURE_IPC_SYSLOG_BUFFER_SIZE(...)
#undef CONFIG_LOGREAD
#define ENABLE_LOGREAD 0
diff --git a/include-minimal/bbconfigopts.h b/include-minimal/bbconfigopts.h
index 9eebcdd..d716789 100644
--- a/include-minimal/bbconfigopts.h
+++ b/include-minimal/bbconfigopts.h
@@ -109,7 +109,14 @@ static const char bbconfig_config[] ALIGN1 =
"# CONFIG_AR is not set\n"
"# CONFIG_FEATURE_AR_LONG_FILENAMES is not set\n"
"# CONFIG_FEATURE_AR_CREATE is not set\n"
+"# CONFIG_UNCOMPRESS is not set\n"
+"CONFIG_GUNZIP=y\n"
"CONFIG_BUNZIP2=y\n"
+"CONFIG_UNLZMA=y\n"
+"# CONFIG_FEATURE_LZMA_FAST is not set\n"
+"# CONFIG_LZMA is not set\n"
+"CONFIG_UNXZ=y\n"
+"# CONFIG_XZ is not set\n"
"CONFIG_BZIP2=y\n"
"CONFIG_CPIO=y\n"
"CONFIG_FEATURE_CPIO_O=y\n"
@@ -117,7 +124,6 @@ static const char bbconfig_config[] ALIGN1 =
"# CONFIG_DPKG is not set\n"
"# CONFIG_DPKG_DEB is not set\n"
"# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set\n"
-"CONFIG_GUNZIP=y\n"
"CONFIG_GZIP=y\n"
"CONFIG_FEATURE_GZIP_LONG_OPTIONS=y\n"
"CONFIG_GZIP_FAST=2\n"
@@ -137,12 +143,6 @@ static const char bbconfig_config[] ALIGN1 =
"# CONFIG_FEATURE_TAR_UNAME_GNAME is not set\n"
"CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y\n"
"# CONFIG_FEATURE_TAR_SELINUX is not set\n"
-"# CONFIG_UNCOMPRESS is not set\n"
-"CONFIG_UNLZMA=y\n"
-"# CONFIG_FEATURE_LZMA_FAST is not set\n"
-"# CONFIG_LZMA is not set\n"
-"CONFIG_UNXZ=y\n"
-"# CONFIG_XZ is not set\n"
"CONFIG_UNZIP=y\n"
"CONFIG_BASENAME=y\n"
"CONFIG_CAT=y\n"
@@ -156,6 +156,7 @@ static const char bbconfig_config[] ALIGN1 =
"CONFIG_TEST=y\n"
"# CONFIG_FEATURE_TEST_64 is not set\n"
"CONFIG_TOUCH=y\n"
+"# CONFIG_FEATURE_TOUCH_NODEREF is not set\n"
"# CONFIG_FEATURE_TOUCH_SUSV3 is not set\n"
"CONFIG_TR=y\n"
"CONFIG_FEATURE_TR_CLASSES=y\n"
@@ -301,7 +302,16 @@ static const char bbconfig_config[] ALIGN1 =
"# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set\n"
"# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set\n"
"CONFIG_WHICH=y\n"
+"CONFIG_AWK=y\n"
+"# CONFIG_FEATURE_AWK_LIBM is not set\n"
+"CONFIG_FEATURE_AWK_GNU_EXTENSIONS=y\n"
+"CONFIG_CMP=y\n"
+"CONFIG_DIFF=y\n"
+"CONFIG_FEATURE_DIFF_LONG_OPTIONS=y\n"
+"CONFIG_FEATURE_DIFF_DIR=y\n"
+"# CONFIG_ED is not set\n"
"CONFIG_PATCH=y\n"
+"CONFIG_SED=y\n"
"# CONFIG_VI is not set\n"
"CONFIG_FEATURE_VI_MAX_LEN=0\n"
"# CONFIG_FEATURE_VI_8BIT is not set\n"
@@ -316,14 +326,6 @@ static const char bbconfig_config[] ALIGN1 =
"# CONFIG_FEATURE_VI_SET is not set\n"
"# CONFIG_FEATURE_VI_WIN_RESIZE is not set\n"
"# CONFIG_FEATURE_VI_ASK_TERMINAL is not set\n"
-"CONFIG_AWK=y\n"
-"# CONFIG_FEATURE_AWK_LIBM is not set\n"
-"CONFIG_CMP=y\n"
-"CONFIG_DIFF=y\n"
-"CONFIG_FEATURE_DIFF_LONG_OPTIONS=y\n"
-"CONFIG_FEATURE_DIFF_DIR=y\n"
-"# CONFIG_ED is not set\n"
-"CONFIG_SED=y\n"
"CONFIG_FEATURE_ALLOW_EXEC=y\n"
"CONFIG_FIND=y\n"
"CONFIG_FEATURE_FIND_PRINT0=y\n"
@@ -516,26 +518,27 @@ static const char bbconfig_config[] ALIGN1 =
"# CONFIG_FEATURE_MOUNT_LOOP_CREATE is not set\n"
"# CONFIG_FEATURE_MTAB_SUPPORT is not set\n"
"CONFIG_VOLUMEID=y\n"
-"CONFIG_FEATURE_VOLUMEID_EXT=y\n"
"# CONFIG_FEATURE_VOLUMEID_BTRFS is not set\n"
-"# CONFIG_FEATURE_VOLUMEID_REISERFS is not set\n"
-"CONFIG_FEATURE_VOLUMEID_FAT=y\n"
+"# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set\n"
"CONFIG_FEATURE_VOLUMEID_EXFAT=y\n"
+"CONFIG_FEATURE_VOLUMEID_EXT=y\n"
+"CONFIG_FEATURE_VOLUMEID_F2FS=y\n"
+"CONFIG_FEATURE_VOLUMEID_FAT=y\n"
"# CONFIG_FEATURE_VOLUMEID_HFS is not set\n"
+"CONFIG_FEATURE_VOLUMEID_ISO9660=y\n"
"# CONFIG_FEATURE_VOLUMEID_JFS is not set\n"
-"# CONFIG_FEATURE_VOLUMEID_XFS is not set\n"
+"# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set\n"
+"CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y\n"
+"# CONFIG_FEATURE_VOLUMEID_LUKS is not set\n"
"# CONFIG_FEATURE_VOLUMEID_NILFS is not set\n"
"CONFIG_FEATURE_VOLUMEID_NTFS=y\n"
-"CONFIG_FEATURE_VOLUMEID_ISO9660=y\n"
-"# CONFIG_FEATURE_VOLUMEID_UDF is not set\n"
-"# CONFIG_FEATURE_VOLUMEID_LUKS is not set\n"
-"CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y\n"
-"# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set\n"
+"# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set\n"
+"# CONFIG_FEATURE_VOLUMEID_REISERFS is not set\n"
"# CONFIG_FEATURE_VOLUMEID_ROMFS is not set\n"
"CONFIG_FEATURE_VOLUMEID_SQUASHFS=y\n"
"# CONFIG_FEATURE_VOLUMEID_SYSV is not set\n"
-"# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set\n"
-"# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set\n"
+"# CONFIG_FEATURE_VOLUMEID_UDF is not set\n"
+"# CONFIG_FEATURE_VOLUMEID_XFS is not set\n"
"# CONFIG_CONSPY is not set\n"
"CONFIG_LESS=y\n"
"CONFIG_FEATURE_LESS_MAXLINES=65536\n"
@@ -549,6 +552,7 @@ static const char bbconfig_config[] ALIGN1 =
"# CONFIG_FEATURE_LESS_LINENUMS is not set\n"
"CONFIG_NANDWRITE=y\n"
"CONFIG_NANDDUMP=y\n"
+"# CONFIG_RFKILL is not set\n"
"CONFIG_SETSERIAL=y\n"
"# CONFIG_UBIATTACH is not set\n"
"# CONFIG_UBIDETACH is not set\n"
@@ -556,6 +560,7 @@ static const char bbconfig_config[] ALIGN1 =
"# CONFIG_UBIRMVOL is not set\n"
"# CONFIG_UBIRSVOL is not set\n"
"# CONFIG_UBIUPDATEVOL is not set\n"
+"# CONFIG_WALL is not set\n"
"# CONFIG_ADJTIMEX is not set\n"
"CONFIG_BBCONFIG=y\n"
"CONFIG_FEATURE_COMPRESS_BBCONFIG=y\n"
@@ -612,7 +617,6 @@ static const char bbconfig_config[] ALIGN1 =
"# CONFIG_MT is not set\n"
"# CONFIG_RAIDAUTORUN is not set\n"
"# CONFIG_READAHEAD is not set\n"
-"# CONFIG_RFKILL is not set\n"
"# CONFIG_RUNLEVEL is not set\n"
"# CONFIG_RX is not set\n"
"CONFIG_SETSID=y\n"
@@ -623,7 +627,6 @@ static const char bbconfig_config[] ALIGN1 =
"# CONFIG_TIMEOUT is not set\n"
"CONFIG_TTYSIZE=y\n"
"# CONFIG_VOLNAME is not set\n"
-"# CONFIG_WALL is not set\n"
"# CONFIG_WATCHDOG is not set\n"
"# CONFIG_NAMEIF is not set\n"
"# CONFIG_FEATURE_NAMEIF_EXTENDED is not set\n"
diff --git a/include-minimal/bbconfigopts_bz2.h b/include-minimal/bbconfigopts_bz2.h
index 8a80def..569d6a1 100644
--- a/include-minimal/bbconfigopts_bz2.h
+++ b/include-minimal/bbconfigopts_bz2.h
@@ -9,333 +9,334 @@
* Do not edit.
*/
static const char bbconfig_config_bz2[] ALIGN1 = {
-0x68,0x31,0x31,0x41,0x59,0x26,0x53,0x59,0x40,0x43,0xf9,0xa7,0x00,0x0b,0xbf,0xdf,
-0x80,0x00,0x10,0x58,0x03,0xff,0xe2,0x3f,0xff,0xff,0xf0,0xbf,0xe7,0xdf,0x60,0x60,
-0x1a,0xfc,0x00,0x3d,0x87,0x41,0x88,0x35,0x7d,0x47,0xd0,0x2f,0x80,0x02,0xf2,0xe3,
-0xc7,0x30,0xd5,0x00,0xd6,0x9e,0x87,0x40,0xea,0xf6,0x74,0x3a,0x1c,0x80,0x34,0x50,
-0xd9,0x61,0x6e,0x71,0xbb,0x6b,0xb5,0xb2,0x54,0x85,0xd5,0xb5,0x1d,0xdb,0x6c,0xe4,
-0x50,0x60,0x5f,0x72,0x1a,0xa7,0x81,0x32,0x08,0x35,0x0d,0x21,0x35,0x00,0x03,0x4d,
-0x1e,0x93,0x4d,0x00,0x00,0x34,0xc8,0x10,0x82,0x04,0xc8,0xa9,0xfa,0x53,0x40,0x00,
-0x00,0x68,0x0c,0x80,0x18,0x22,0x49,0xe8,0x4d,0x05,0x4c,0xf4,0xa6,0x46,0x8d,0x00,
-0x00,0x00,0x00,0x02,0x4f,0x54,0xa5,0x22,0x9e,0xa1,0xa7,0xea,0x9a,0x01,0x88,0x06,
-0x80,0x00,0x68,0x69,0x90,0x00,0x4a,0x20,0x15,0x36,0x93,0xd4,0xc4,0x1a,0x18,0x86,
-0x23,0xd4,0xc8,0xf4,0x9b,0x44,0xc9,0xea,0x30,0xd4,0xd0,0x24,0x42,0x13,0x44,0xc1,
-0x05,0x34,0x2a,0x6d,0x40,0x68,0x00,0x00,0x06,0x9a,0x34,0xff,0xde,0xef,0xf7,0x6e,
-0xd2,0xe5,0x74,0xde,0xc7,0x5d,0xd5,0xcd,0x1a,0x0b,0x62,0x36,0x35,0x89,0x24,0x18,
-0x53,0x28,0xa8,0xb6,0x36,0xe6,0xb7,0x8d,0x79,0x97,0x35,0xbb,0xea,0xf6,0xdd,0x9b,
-0x21,0x09,0x15,0x8c,0x51,0x05,0x89,0x92,0x53,0xd3,0xa7,0x5c,0x91,0x45,0x33,0x16,
-0xf4,0xee,0x49,0xdd,0xb5,0xd9,0xb2,0x1a,0x36,0x66,0xa3,0x56,0xf1,0xb9,0x6d,0x14,
-0xf3,0xb5,0xc1,0xe7,0x72,0x0d,0x52,0x72,0xe6,0x36,0x8a,0xdc,0xdc,0xa3,0x9c,0xe5,
-0xcb,0x10,0x6b,0x91,0xde,0x77,0x0d,0x05,0x04,0xb0,0xa0,0xf1,0x71,0x14,0xc2,0x18,
-0x6c,0x9d,0x9c,0xcb,0xce,0xd7,0x24,0xa3,0x45,0xe8,0xf5,0x6f,0x79,0x7a,0x36,0x2d,
-0x94,0xb4,0x04,0xca,0x93,0x3c,0xf6,0xf7,0x92,0x24,0x41,0x0c,0x81,0x30,0x4d,0x7b,
-0x55,0xd5,0xeb,0xe7,0x97,0x8a,0x5e,0xbd,0x7b,0xbc,0xec,0x8c,0x12,0x06,0x13,0x04,
-0x84,0x81,0x7a,0x39,0x08,0xd7,0xb7,0xae,0x0b,0x1c,0xdc,0xc9,0x86,0x55,0x14,0x52,
-0xc3,0x8e,0xc9,0xd0,0x10,0x40,0x2f,0xd1,0x96,0xaf,0x66,0xe3,0xa6,0x9f,0x8c,0x8c,
-0xce,0xc6,0x67,0x86,0x89,0x3a,0x10,0x1a,0xb1,0x64,0x1f,0xed,0xfa,0x5f,0x46,0xfa,
-0x97,0xd6,0x7e,0xb6,0x0d,0x6d,0x41,0x33,0x32,0x6f,0x1a,0xdb,0xd9,0x63,0xad,0x28,
-0x6c,0x47,0x53,0x91,0x64,0xf5,0xc6,0xbe,0x67,0x89,0x37,0x28,0x47,0xe3,0xed,0x14,
-0x73,0xde,0x9f,0x56,0xfe,0x9c,0x46,0xef,0x85,0x41,0x9e,0xbe,0x9d,0x17,0x71,0xd4,
-0x7c,0xcb,0xd7,0xda,0xb6,0x1e,0xdc,0x09,0xeb,0xb5,0x93,0xb5,0xbc,0x19,0x50,0x86,
-0xfd,0xec,0x3c,0x2d,0x55,0xb1,0x51,0x67,0xe7,0x31,0xda,0xd7,0xf1,0xbd,0xb8,0x31,
-0x52,0xd1,0x4a,0xe9,0x37,0x29,0xe6,0x16,0x8e,0x41,0xc6,0x5f,0xd5,0xba,0x3d,0x63,
-0x4e,0x3c,0xaa,0xf9,0xd9,0xcb,0xd5,0xb1,0xae,0xb5,0x83,0x23,0x06,0x66,0x43,0x98,
-0xcb,0xe3,0xd9,0x2f,0x15,0x93,0x7a,0xe3,0x54,0xd3,0xcf,0x31,0xe7,0xd9,0x79,0x2d,
-0xed,0x34,0xfb,0xad,0xb3,0xb4,0x19,0x89,0x0b,0x79,0x23,0x77,0x55,0x75,0x06,0x31,
-0x37,0x75,0xb4,0xf6,0xbf,0x16,0x8a,0x2a,0x55,0x51,0x14,0x54,0x35,0x06,0x55,0xcb,
-0x9d,0x68,0xed,0x39,0xaf,0x2b,0x67,0x1b,0x57,0x59,0xb4,0x8a,0x78,0xd1,0xfa,0x2d,
-0xaf,0x44,0xf8,0x27,0x7d,0xd7,0x6a,0x60,0x45,0xe8,0xed,0x0e,0x48,0x2e,0xfb,0x1c,
-0x02,0xf1,0xeb,0x64,0x6e,0xc4,0x90,0x30,0x49,0x32,0xcc,0x28,0xe6,0x9b,0x5b,0x55,
-0xd7,0xcd,0xf1,0x5a,0xd7,0x6a,0xc5,0x12,0x83,0x1a,0x2f,0x7c,0x46,0xf8,0x8c,0xe1,
-0x31,0x7b,0x15,0x84,0xb1,0x05,0x1c,0x59,0x1d,0x87,0x63,0xec,0x13,0x92,0xc1,0x74,
-0x21,0x4e,0x16,0x96,0xdf,0x6d,0xac,0xd3,0xb3,0x1f,0x75,0x31,0x00,0xb9,0xb5,0x2f,
-0xcd,0x1f,0xc4,0xbb,0x90,0x0c,0x45,0x93,0x7e,0xf9,0x9d,0x77,0x21,0x66,0x7a,0x04,
-0x89,0xc1,0x2f,0x5a,0x79,0xce,0x58,0x2b,0x48,0x3e,0xa6,0xb0,0x67,0x44,0x74,0xa6,
-0x2e,0xdc,0x8c,0xb0,0x45,0xae,0x1a,0x2f,0xbf,0x02,0x90,0x9d,0x96,0xcb,0xb8,0xaf,
-0x39,0xcf,0xc8,0x80,0x82,0x01,0xe6,0x80,0x82,0x01,0xe8,0x9b,0x76,0x30,0x0a,0x15,
-0xea,0x52,0xba,0x81,0x0a,0x50,0x10,0x40,0x3f,0x1b,0x23,0x87,0x09,0xaa,0x0b,0x1e,
-0xb6,0x5b,0x8e,0xfe,0x6d,0xeb,0x6b,0x9c,0x12,0xbd,0xba,0x7b,0x18,0xe1,0x77,0x6b,
-0x5d,0x58,0x47,0xd5,0x83,0x37,0x2a,0xc7,0xc2,0x6a,0x0c,0x7e,0xb2,0xc6,0xbd,0x13,
-0x4e,0x5c,0xcf,0xa6,0xf6,0x69,0xce,0x9b,0x90,0x88,0x2c,0xa9,0x84,0x9f,0x13,0x5b,
-0x69,0x2d,0x3f,0x75,0x76,0x2b,0xd5,0xae,0xc4,0x0f,0xf7,0x84,0x32,0x1e,0xca,0xfa,
-0x6f,0xe8,0x27,0xba,0xb9,0x23,0x29,0x31,0x99,0xf5,0x0b,0xba,0xfd,0xc9,0xc7,0xe0,
-0x73,0xe8,0xf4,0xea,0x1e,0xd3,0xef,0x48,0xa7,0x67,0x8a,0xdb,0xc7,0xdc,0xc2,0x16,
-0xa6,0xce,0xfd,0xf8,0x83,0xb4,0xa5,0xbc,0xee,0x38,0xad,0xdd,0x8c,0x93,0x7c,0xaf,
-0x95,0x8d,0xde,0x87,0x4a,0xd9,0xa9,0xe6,0x75,0x80,0x2f,0xf1,0x2f,0x05,0x42,0x63,
-0x0e,0x46,0x9d,0x2e,0x84,0x4b,0xf0,0xf0,0x7b,0x74,0xbb,0xaa,0xc4,0x4d,0xbe,0x0c,
-0x43,0x76,0x7e,0x36,0x8e,0x45,0xd8,0x74,0x39,0x0e,0xbe,0xee,0x8e,0xaf,0xdf,0x10,
-0x98,0x9d,0x4a,0x30,0xbc,0x3b,0x95,0x01,0x2e,0x20,0x26,0x6d,0x9d,0x92,0xac,0x5d,
-0xfa,0x73,0x33,0x63,0x0e,0xbb,0xc1,0x7b,0xcf,0xde,0xba,0xcc,0xe5,0xf7,0xdf,0x38,
-0xf0,0xeb,0x05,0xbe,0xec,0x89,0xcf,0x82,0xbd,0x89,0x34,0x82,0x74,0xc4,0x83,0xba,
-0x0b,0xba,0x47,0xdb,0x9e,0x7d,0x5f,0xad,0x45,0xe3,0x4f,0xcb,0xe5,0x48,0xe7,0x89,
-0xea,0x6a,0xb1,0x7b,0x49,0x09,0x5e,0xbb,0xe7,0xc2,0x0c,0xad,0x52,0x14,0xd7,0xe1,
-0x3c,0x36,0xb8,0xe8,0x9e,0xf6,0x8c,0x5a,0x7c,0xd0,0x5d,0xd6,0x32,0x2d,0x19,0xa1,
-0xf9,0x4d,0x66,0x64,0xeb,0xbe,0xf9,0xc3,0x20,0xc6,0x1b,0x41,0x8b,0x6f,0xe1,0x1f,
-0xbc,0x10,0x92,0xac,0x32,0x02,0xd5,0x88,0x08,0x78,0xd0,0x63,0x2b,0xc3,0x21,0x83,
-0x96,0x10,0x38,0x0b,0x8c,0x96,0x48,0x3d,0x53,0xf0,0xb2,0xf0,0xf2,0x16,0xc9,0xde,
-0xcb,0x00,0x83,0xdb,0x63,0x06,0x19,0x1d,0x71,0xdb,0xe8,0x50,0xea,0x83,0x61,0x85,
-0x56,0x1f,0x78,0x1a,0x34,0xee,0xe2,0xa6,0xa0,0x08,0x21,0xde,0x13,0xf0,0x5e,0xf9,
-0xbe,0xdd,0x4a,0xf1,0xf1,0xf1,0x3d,0x44,0x00,0x3e,0xf5,0x46,0xfa,0xef,0xef,0xc2,
-0x4a,0x72,0x58,0xcf,0x8d,0x48,0xa5,0x1f,0x99,0x9c,0xe3,0x56,0x88,0x7d,0x10,0xcc,
-0x13,0xc8,0x0e,0x63,0x93,0x53,0x1b,0x31,0xbd,0x25,0x5d,0xe7,0x3d,0xcb,0xf8,0x8d,
-0x8d,0x2e,0x96,0xca,0xe2,0x85,0xa8,0x72,0xe9,0xa6,0xd2,0xf4,0x1e,0x37,0xf0,0xf2,
-0x9d,0xfc,0x33,0xd4,0x7a,0x91,0x51,0x2c,0xb2,0x9a,0x29,0xe4,0x43,0x36,0x05,0x77,
-0x0b,0x54,0x5d,0x73,0xc6,0x02,0x47,0x86,0x9b,0xb7,0xa3,0x1d,0x62,0xbd,0xc7,0x86,
-0xfd,0x33,0x46,0xdb,0xdb,0x09,0x5d,0x32,0x73,0x35,0xce,0xde,0xf5,0x40,0x90,0x2c,
-0x06,0x2a,0x18,0xde,0xad,0x47,0x84,0xb7,0x47,0x87,0xae,0x4b,0xb7,0xd5,0x1e,0x11,
-0x65,0x7a,0x25,0x86,0xdf,0xa6,0xfe,0x23,0xf3,0x31,0xb5,0x3d,0x41,0x53,0x47,0x67,
-0xcc,0x5e,0x96,0x05,0x01,0xe8,0x93,0x04,0x6c,0xcf,0xd6,0xea,0xe9,0x34,0xac,0x58,
-0xd8,0x95,0x47,0x81,0x7d,0x29,0x02,0xf9,0xec,0x27,0x35,0x02,0xb6,0x8a,0x18,0xc1,
-0x6e,0xc3,0x3a,0x49,0x4c,0x97,0x3d,0x57,0xb3,0x9c,0xc6,0x27,0x69,0xc7,0x7f,0x34,
-0x2f,0x8b,0x1b,0x61,0x41,0xe6,0x46,0x74,0xc8,0xcb,0xd9,0xe3,0xa9,0x79,0x81,0xf5,
-0x27,0xcb,0x23,0x5b,0xc5,0x60,0xa7,0x04,0xa7,0x8c,0x7c,0x27,0x1c,0x18,0x63,0xa4,
-0xd2,0x1b,0x05,0xc0,0x35,0x0c,0x1d,0xf8,0x9a,0xfd,0xfc,0x46,0xbb,0x27,0x30,0x71,
-0x51,0x4d,0xb4,0x31,0x1a,0x8c,0x54,0x02,0x8f,0x1b,0x17,0xcf,0xc3,0xa4,0x72,0x86,
-0x2f,0xcd,0x40,0xb4,0x28,0xe5,0x24,0x49,0x8d,0xf4,0x39,0xed,0xf3,0xeb,0xbe,0xe7,
-0xda,0xe7,0xef,0xab,0xf9,0x6a,0x03,0x44,0xbd,0x87,0x5b,0x86,0x46,0x49,0x22,0x53,
-0x25,0x4c,0x40,0x88,0xc6,0x51,0x0a,0x4b,0x11,0x94,0xb1,0x58,0x50,0x99,0x29,0x99,
-0x22,0xcd,0x13,0x31,0x32,0x55,0x34,0xa5,0x68,0xb6,0xc5,0x8a,0x8b,0x4a,0x50,0xb2,
-0x4b,0x1a,0x21,0x13,0x51,0x49,0x82,0x4c,0x94,0x25,0xa4,0x28,0xd1,0xa8,0x1a,0x55,
-0x29,0x63,0x51,0x44,0x51,0x69,0x84,0x46,0x35,0x21,0xe9,0xdc,0x69,0x91,0x41,0x34,
-0x24,0xda,0xbc,0x72,0x93,0x11,0x93,0x15,0x99,0x30,0xb4,0x99,0x18,0x19,0x39,0x76,
-0x4d,0x1a,0x61,0x2c,0x04,0x66,0x9a,0x4c,0xa2,0x78,0xb8,0x13,0x04,0xd4,0x63,0x11,
-0x64,0x44,0x63,0xce,0xba,0x1d,0xd7,0x14,0x82,0x92,0x46,0x19,0x01,0x52,0x08,0x64,
-0x6c,0x29,0x9a,0x02,0x0f,0x3b,0x8e,0xfc,0x57,0xd9,0xba,0xbe,0x8f,0xd2,0xeb,0xa4,
-0xb5,0xf5,0xaf,0xc3,0xe1,0x96,0xcb,0x08,0x20,0x88,0xee,0x4f,0x9b,0xac,0x20,0x39,
-0xd0,0x67,0x3e,0x1e,0xd7,0x3b,0x2a,0x9c,0xb1,0xa1,0x78,0xdb,0x04,0x6a,0xb4,0xd0,
-0x54,0xc8,0x1f,0x8f,0x6e,0xc6,0xf2,0xcf,0x42,0x18,0x3b,0x5d,0x50,0x1d,0x8e,0x2f,
-0x0e,0xa4,0xb8,0x9f,0x1a,0xcb,0xea,0xcd,0x30,0xc9,0x74,0xd9,0xd3,0x97,0x94,0xda,
-0xc8,0x9c,0x8b,0x9e,0xba,0xb9,0xa6,0x00,0x30,0x5a,0xaa,0x4c,0xba,0x70,0xe0,0xc2,
-0x89,0x3a,0x6f,0xa1,0x30,0x3d,0x56,0xe8,0xda,0x17,0xe3,0x78,0x21,0x3a,0x22,0xd2,
-0x19,0xc2,0x09,0x06,0x40,0xf6,0x6a,0xe1,0x06,0xc2,0x1e,0xda,0xac,0x3a,0x8c,0x6b,
-0x7f,0xd5,0x74,0xb8,0x56,0x45,0xc5,0xab,0x34,0x64,0x5b,0x5a,0xe7,0xf1,0xe1,0x3a,
-0xb5,0x8b,0x74,0x4e,0x00,0x6d,0xb0,0x6b,0x4d,0x3d,0xa2,0xfe,0x4b,0x06,0xfe,0x22,
-0xaa,0xaa,0x9f,0x88,0x6b,0x70,0x36,0xdf,0x7d,0x93,0xd7,0x4a,0xe6,0xcc,0x7b,0xeb,
-0x43,0x52,0xf0,0xb7,0xa2,0xa8,0xfa,0x64,0x79,0x10,0xec,0x94,0xac,0x22,0x7a,0xf0,
-0xa9,0xfa,0xad,0xf6,0xb3,0xe3,0x43,0xce,0x96,0x2a,0x62,0x5a,0x02,0xbe,0x32,0xb7,
-0x45,0xbd,0x6a,0x35,0x5e,0xaa,0x45,0x15,0x08,0x81,0x0e,0x10,0x76,0xf7,0xd2,0xc4,
-0x66,0xb3,0x3b,0x6a,0x9c,0x6b,0x37,0xc4,0xc8,0x86,0xc3,0x87,0xd0,0x5d,0x8f,0xae,
-0x29,0xc5,0x12,0x3c,0x26,0xbc,0x21,0xa2,0x76,0x87,0xa1,0xbc,0xb7,0x02,0x22,0x37,
-0x2c,0x14,0x61,0x49,0x35,0xb4,0x56,0xdc,0xcd,0x5f,0x9c,0xbf,0x4d,0x65,0x72,0x0a,
-0x5d,0x1e,0x2e,0x6e,0x84,0xd8,0xcf,0xce,0x2d,0x7d,0x29,0x68,0x5e,0x01,0x55,0xe6,
-0xe9,0x66,0x69,0x29,0x33,0x6c,0x9a,0x86,0x25,0x85,0xe1,0x1f,0x0b,0x7c,0x30,0xae,
-0x84,0xce,0x48,0x8f,0x3b,0x92,0x19,0xf6,0x6b,0xa4,0x94,0xc4,0xa3,0xb1,0xed,0x51,
-0x88,0x17,0xbe,0x2d,0x7b,0xd6,0x03,0x73,0xa1,0x02,0x2d,0x00,0xae,0x6a,0xca,0x7a,
-0x05,0x1a,0xf9,0x0a,0x57,0xdd,0x02,0x40,0xad,0x61,0x8b,0xe9,0x5c,0x23,0x44,0x0e,
-0xff,0xf7,0xbb,0xc4,0xe3,0x7b,0x9a,0xf5,0xae,0x3d,0xa8,0x03,0x45,0xae,0x8d,0x41,
-0xf6,0xd0,0x19,0x13,0x94,0xaf,0x29,0x0f,0x27,0x39,0x62,0x45,0x14,0x60,0xe9,0xa7,
-0x78,0xac,0x2d,0x0d,0x94,0x70,0xa4,0x4c,0x83,0x21,0x3a,0xfd,0xd6,0x02,0x4a,0x67,
-0x8f,0x4d,0x55,0xf9,0xe2,0x76,0xb4,0x77,0xf6,0xb6,0x6e,0x0c,0xbd,0xe2,0xff,0x5e,
-0x78,0xe5,0xc7,0x9d,0x56,0x1f,0xd9,0x9c,0x74,0xbe,0xcb,0xc0,0xc7,0x90,0xcc,0x22,
-0x47,0xc6,0x19,0x6f,0x7a,0xbf,0x3d,0x67,0x7f,0x48,0x56,0xb3,0x80,0xd4,0x24,0x4a,
-0x2c,0xc8,0x6c,0xc3,0xdd,0xf1,0x6d,0x54,0x6c,0x0e,0xed,0x30,0xcc,0xee,0xa9,0x2d,
-0x41,0x1d,0xf3,0xa6,0xe5,0xed,0xc4,0x5b,0xba,0xce,0x2d,0xf9,0xdf,0xb4,0x68,0x0e,
-0x99,0x96,0xba,0x64,0xd6,0x33,0x34,0x31,0x0d,0xac,0x89,0x88,0x78,0x70,0x3c,0x1d,
-0xb7,0x44,0x3a,0x27,0x45,0xb6,0x96,0x61,0x51,0x53,0x92,0xc2,0xa4,0x21,0x04,0xb7,
-0x87,0x4e,0x37,0x85,0xac,0xb2,0x54,0xd5,0x44,0xcb,0x19,0x24,0x10,0x43,0x1c,0x9a,
-0x59,0xaa,0x82,0x05,0xab,0x41,0x59,0xe3,0x0c,0xd4,0x50,0x3a,0x6d,0xa2,0xec,0x6d,
-0x21,0xce,0xa7,0x9c,0x89,0x6c,0x0c,0xd7,0xea,0x25,0x87,0x96,0x1e,0x1a,0x16,0xf7,
-0x9d,0x5d,0x0a,0xed,0x01,0xd6,0xd1,0xa3,0x12,0x96,0x91,0x66,0x92,0x35,0x61,0x0d,
-0x14,0xc0,0x58,0xc4,0x02,0x1b,0x48,0xd1,0xa5,0x0d,0x12,0xc4,0xda,0x43,0x1e,0x58,
-0x29,0x68,0x4a,0x59,0x4d,0x55,0xa0,0xa9,0xcc,0x85,0xea,0x0b,0xbd,0x3a,0x80,0x32,
-0xf2,0xf0,0xd6,0xb3,0x02,0x25,0xb6,0x28,0x60,0x43,0xd9,0x3c,0xb0,0x36,0xd4,0x81,
-0x0a,0xcd,0x17,0xa8,0x49,0x15,0x51,0xee,0xf0,0x53,0xcc,0xc2,0x40,0x4b,0x43,0x6d,
-0x87,0x6b,0xa7,0x2f,0xeb,0x4f,0x7f,0x8d,0x2f,0x33,0x2f,0xd2,0x11,0xf7,0x7c,0x6e,
-0x94,0x07,0x8d,0x92,0x84,0x92,0x40,0xa6,0x34,0x50,0x33,0x13,0xf7,0x43,0x3b,0xb8,
-0x47,0xce,0x41,0x00,0x25,0xbf,0xcb,0x69,0x30,0xb8,0x06,0x21,0x59,0x9b,0x1e,0x22,
-0xda,0x9e,0x9a,0x1d,0x2b,0x45,0xd2,0x18,0x88,0x12,0x06,0x45,0x80,0x4c,0x41,0xcb,
-0x41,0xce,0xd5,0xcf,0x8c,0xf5,0xce,0x1d,0x1f,0x59,0xb5,0xfc,0x8b,0x03,0x50,0x74,
-0xce,0xc3,0xab,0x4b,0x60,0xd0,0xd5,0x08,0x6f,0xd3,0xe3,0xd7,0xba,0xc1,0xd5,0x66,
-0x4c,0x52,0xbc,0x49,0x2c,0x75,0x4a,0x84,0x3b,0xda,0x73,0x08,0x53,0xa2,0x26,0x48,
-0x12,0x40,0xf3,0x64,0x03,0xe5,0x56,0xdf,0x3f,0x08,0x02,0x59,0x16,0xbe,0x83,0x17,
-0xd0,0xce,0xde,0xb9,0x28,0x58,0xe3,0xc6,0xd8,0x1d,0xaf,0x1f,0x1a,0x91,0xef,0xce,
-0x65,0x50,0xcb,0xde,0x14,0x3f,0x7b,0xad,0x5f,0x08,0x8a,0xe9,0xa3,0xc0,0x91,0x2d,
-0x23,0x2c,0x10,0x76,0xc6,0xd0,0x97,0x0d,0x0a,0x9a,0x00,0xd6,0x2d,0x51,0xaa,0xaf,
-0x7d,0x5c,0xd5,0x8a,0xb5,0xea,0xae,0xab,0x2b,0xc4,0x95,0x30,0x41,0x23,0x48,0x14,
-0x34,0x20,0x21,0xa4,0xda,0x44,0x1e,0x5f,0x63,0x35,0x85,0x03,0x90,0x70,0xd3,0x80,
-0x81,0xc2,0x5f,0x96,0x6c,0x50,0xd4,0x40,0x04,0x11,0x14,0xe3,0x90,0x0a,0x14,0xb4,
-0xb8,0x6a,0x10,0x52,0x82,0xc3,0x08,0x9f,0x52,0x45,0x47,0x96,0xe4,0xa6,0x99,0x6a,
-0x19,0x23,0x1a,0xb3,0x37,0xa1,0x2e,0x58,0x82,0x58,0x16,0x49,0x05,0x9b,0x61,0x2e,
-0x1b,0x51,0x0a,0xdb,0x75,0xec,0xb7,0xda,0x7d,0x87,0xe3,0xc4,0x1a,0x82,0xd2,0xc6,
-0x33,0xa4,0xf6,0x65,0x66,0x00,0x4a,0xe1,0x37,0xc0,0xe7,0xb4,0x94,0x82,0xe7,0xa2,
-0x4c,0x6a,0x15,0x76,0x49,0x80,0x8a,0x9a,0x2f,0x37,0x9b,0x90,0x10,0xd0,0xb2,0xc8,
-0xde,0x95,0xd5,0x61,0x07,0xb5,0xd7,0xa9,0xf4,0xd2,0x39,0xbd,0x2d,0xda,0xbf,0x24,
-0x09,0x24,0x90,0xb9,0x14,0xb3,0x69,0x03,0x76,0x2e,0xf0,0x72,0x96,0xa5,0xc4,0x7a,
-0xde,0x57,0xa1,0xa0,0x63,0x3b,0xde,0x34,0xe6,0x0f,0x41,0x74,0x79,0xad,0xc6,0xc4,
-0x8d,0x02,0x00,0xf3,0xc9,0xc0,0xc2,0xb3,0xb6,0xf0,0xa1,0x87,0x3b,0xe6,0xed,0x36,
-0xbc,0x28,0x46,0xac,0x50,0x4a,0x41,0xa1,0xef,0xb8,0x91,0x8e,0xc2,0x79,0x43,0x7c,
-0x72,0x41,0xbd,0x36,0x46,0xed,0x10,0xc4,0x88,0x60,0xc7,0xac,0xec,0x58,0x6b,0x49,
-0x3f,0x3d,0xb4,0x40,0x16,0x6b,0x60,0x6d,0x31,0x4b,0x6c,0xe9,0x87,0x5a,0x20,0xf5,
-0xe7,0xcb,0x9b,0x44,0xc8,0x79,0x7e,0xc6,0x2b,0x1b,0x9b,0x77,0x90,0xa4,0xb9,0xdb,
-0x5f,0x51,0xa7,0xcc,0xe7,0xd8,0xb1,0xd9,0x80,0xa1,0xe2,0xc2,0xf0,0x90,0x1a,0xf3,
-0x3e,0x67,0x38,0xf3,0x80,0x3c,0x03,0x5c,0xa4,0xdc,0x16,0x62,0x7d,0x01,0xe5,0x8b,
-0x46,0xbd,0x1e,0x54,0x9d,0x2d,0x3c,0x10,0x10,0x98,0x77,0x9f,0xe6,0x75,0x82,0xdb,
-0x1e,0x00,0xf8,0x4e,0x9d,0xd9,0x1d,0x2e,0xc3,0xb6,0x5c,0x81,0x63,0x62,0x99,0xf9,
-0xdc,0x3e,0x17,0x3d,0xd3,0x61,0xd2,0x18,0x69,0x14,0x93,0xf0,0x9d,0xcf,0x34,0x87,
-0x24,0x0a,0x48,0xa5,0x8e,0x3d,0x1d,0x3b,0x15,0x96,0x93,0x6e,0x9c,0xaa,0xbb,0xa1,
-0x20,0x0e,0xad,0x36,0x80,0xa7,0x4a,0xaa,0xd8,0x46,0xc2,0xf7,0xa7,0x61,0x62,0x8e,
-0xe4,0x36,0x94,0x4d,0x8d,0xa1,0xea,0xb3,0xb5,0xdc,0x11,0x11,0x2f,0xa1,0x8d,0xcb,
-0xd9,0x8e,0x19,0xee,0xfa,0x99,0x82,0xb5,0x08,0x5c,0xe9,0x1b,0xc1,0xab,0x25,0x74,
-0xc6,0xdb,0x06,0x46,0xf9,0x50,0xd6,0x94,0x9b,0x92,0xe3,0x32,0x89,0x04,0x02,0x00,
-0xb1,0x4c,0x6e,0xac,0x3b,0x1c,0x04,0xba,0x41,0x04,0x43,0xc9,0x30,0x52,0x21,0xbf,
-0x73,0xc6,0xe3,0xb7,0x07,0x5c,0xcb,0x76,0x84,0x0c,0x18,0x72,0x32,0x5a,0x25,0xa6,
-0xd1,0x8a,0xa1,0x6b,0x22,0x31,0xeb,0xd7,0xa2,0x83,0xcf,0xa8,0xfb,0x5f,0x12,0xcb,
-0x37,0x7e,0x95,0x36,0xfd,0xf7,0xa3,0x94,0xdd,0x1b,0xb7,0xd4,0x22,0x67,0x92,0x52,
-0x14,0xb5,0x23,0xd0,0x39,0xb4,0xc3,0x23,0x5b,0x43,0xb3,0x8a,0x1b,0x47,0x4c,0x4d,
-0x91,0xa4,0x88,0x62,0xbf,0x76,0xb8,0x91,0x1a,0x71,0x3f,0x3a,0x57,0x1b,0x5b,0x23,
-0x66,0xf9,0x6e,0x21,0x8d,0x90,0xd5,0xa4,0x87,0x3a,0x6d,0xd5,0xe5,0xda,0x7d,0xce,
-0x88,0xdc,0x55,0xc7,0x33,0x04,0x91,0x1f,0x1e,0xc4,0x70,0x89,0xc0,0x40,0x76,0x01,
-0xd2,0x18,0x5a,0xc2,0xee,0x2d,0x41,0x0e,0xf5,0x18,0x3e,0xa0,0x35,0xf1,0xf8,0x37,
-0xf4,0xdd,0x81,0x8c,0x58,0x3a,0x93,0x72,0x18,0xc6,0xc6,0x98,0xd9,0xba,0x10,0xcd,
-0xbd,0xf1,0xce,0x70,0xae,0x47,0x4d,0xb9,0xe5,0xaa,0x6c,0x6f,0x87,0x5e,0x37,0x88,
-0xe9,0x84,0x07,0x98,0xc6,0x19,0x49,0x0f,0x08,0xe8,0xa2,0x8b,0x47,0x3b,0xef,0xab,
-0xfc,0x71,0xa2,0x15,0xa9,0x2d,0xe5,0x9a,0xeb,0x32,0x3c,0xb6,0xc4,0x41,0xb9,0xdd,
-0x4c,0x47,0x81,0x0c,0x67,0x0c,0x23,0x8c,0x4e,0xa5,0x69,0x98,0xcd,0xfb,0x70,0xeb,
-0xe4,0x1d,0x39,0x6e,0xef,0x2d,0x18,0x09,0x86,0xb6,0x0d,0xb4,0x05,0xbd,0xb1,0x4d,
-0x08,0x17,0x96,0x0b,0xf1,0x2a,0xa9,0x16,0x7c,0xa6,0x5c,0xae,0x7a,0x50,0x96,0x33,
-0xa8,0x8a,0x49,0x08,0xea,0x1e,0xd9,0x0c,0x58,0x30,0x93,0x67,0x56,0x2d,0x01,0x61,
-0x86,0xc2,0x32,0x24,0x39,0x80,0x91,0xa0,0x6c,0x52,0xac,0x41,0x1e,0xc8,0x35,0x6c,
-0x6d,0x8b,0x01,0x03,0x2c,0x58,0x48,0x01,0x2a,0xc1,0x50,0x94,0xb6,0xcc,0x32,0x99,
-0x2d,0x30,0x13,0x07,0x15,0x60,0x26,0x2a,0x58,0x26,0x9a,0x2c,0xc0,0x82,0x93,0x8a,
-0x82,0xb9,0x9b,0x34,0x16,0x88,0x56,0x85,0xc3,0x01,0x7a,0xc6,0x85,0xf0,0x95,0x81,
-0xa4,0x61,0x40,0x54,0x92,0x39,0x92,0x02,0x06,0x54,0x8c,0xaa,0x98,0x21,0x80,0xd3,
-0xa9,0x88,0x16,0xe4,0x81,0x21,0x54,0x32,0x21,0x10,0x72,0xf1,0x02,0xab,0x52,0x96,
-0xe5,0x41,0x6b,0x35,0x0c,0xa9,0xf7,0x2f,0x78,0xf3,0x9d,0x6c,0x53,0xf2,0x73,0xdd,
-0x40,0x8a,0x67,0xef,0x3a,0x45,0xe6,0x45,0x33,0x00,0xbd,0x4d,0xe7,0xb4,0x6d,0x78,
-0x3d,0x86,0x1a,0x08,0x04,0x78,0xf3,0x73,0x33,0x0e,0x4d,0x10,0xd8,0x91,0x43,0xaf,
-0x9e,0x28,0xef,0xec,0xc6,0xa3,0x9d,0xcd,0x56,0x24,0xb6,0x9b,0xee,0xbe,0xed,0xd2,
-0x11,0x18,0x79,0x6f,0x30,0x61,0x80,0x49,0xb9,0x07,0x1c,0x72,0x48,0xd1,0x60,0xbd,
-0x0e,0x84,0x80,0x12,0x84,0x85,0x5b,0x63,0x43,0x7c,0xd8,0x46,0x18,0x03,0x07,0xbd,
-0xde,0xb4,0xa0,0x28,0xc3,0x35,0x00,0xad,0x61,0x6b,0x80,0x44,0x9c,0x80,0xec,0x76,
-0x6e,0x7e,0x15,0xe0,0x2c,0xc8,0xcb,0xc8,0x0c,0xc4,0x91,0xab,0x42,0x58,0xb4,0x35,
-0xf0,0x7b,0xcd,0xb4,0xaa,0x62,0xbf,0x8f,0x09,0x72,0xc1,0xb1,0xb1,0x76,0xe5,0xa3,
-0x40,0xbe,0xb8,0x8e,0x8e,0xb0,0xac,0xd7,0x3a,0x62,0xd9,0x38,0x0e,0xaa,0x17,0xce,
-0x88,0xaa,0x7b,0x1e,0x78,0x2e,0x25,0x60,0x39,0xfb,0x28,0x41,0xbd,0x1b,0x69,0xcf,
-0x19,0xa9,0xa8,0x69,0x36,0xa0,0x83,0x93,0x47,0x6f,0x1c,0xc3,0x7f,0x21,0xb2,0xcc,
-0xaf,0xf3,0xee,0x9c,0xef,0xdc,0x97,0x3e,0x9f,0xe7,0xa8,0x07,0xd2,0xe9,0x2f,0x4a,
-0x10,0xe2,0xb6,0x7e,0xfa,0x56,0x14,0xb8,0x58,0x49,0xe2,0x94,0xd6,0x08,0x9d,0x5a,
-0x81,0x14,0x43,0xec,0x5c,0x4f,0xb4,0x98,0x77,0xf6,0x85,0x84,0x98,0xb8,0xa9,0x36,
-0xf0,0x3c,0xaf,0x6c,0x80,0x63,0xe4,0x31,0xba,0x44,0x12,0xc4,0xd8,0x9f,0xe4,0x39,
-0xf9,0xe1,0x3c,0x77,0x6a,0xce,0x84,0x68,0xc1,0xb3,0xc7,0x8c,0xb9,0x54,0x0c,0xe5,
-0x3b,0x6f,0x1d,0xca,0xc0,0x0f,0x36,0x3e,0xaf,0x93,0x82,0x1e,0x86,0xd3,0xb8,0xcd,
-0x41,0xb0,0x6c,0x47,0x96,0x43,0x64,0xa4,0x74,0x84,0x5b,0xac,0xbc,0x5c,0x39,0x66,
-0xbc,0x28,0x11,0xca,0x1b,0x61,0xcb,0x6e,0x6e,0xec,0xe7,0x56,0x77,0x31,0xa6,0x90,
-0x30,0x8f,0x26,0xad,0xf6,0xe8,0x32,0x21,0x20,0xcb,0x7e,0x4d,0x95,0x6b,0xc4,0xb8,
-0x35,0xed,0xaf,0x51,0x05,0x00,0xe1,0xf6,0x34,0xb9,0xc8,0xa5,0x0f,0xba,0x0d,0x12,
-0xa2,0x48,0xef,0x29,0xf8,0xa4,0x49,0xb9,0x0e,0x9d,0x01,0x61,0xd5,0xcf,0x7d,0xbe,
-0x9a,0x15,0xb6,0xec,0xe4,0x8c,0x1d,0xb3,0x8b,0x13,0xd5,0xe9,0xa2,0x13,0x6e,0x5d,
-0x9d,0x8a,0x70,0xab,0x35,0x31,0x52,0xe5,0x9b,0xe0,0x25,0xe3,0x67,0x36,0x87,0xc0,
-0x51,0x50,0x2c,0x1d,0x82,0x1d,0x72,0x06,0x4a,0xbc,0x06,0x71,0xab,0x7d,0xe8,0x9f,
-0x37,0x9d,0xc5,0xb9,0xb6,0x1d,0xf4,0xfb,0x1c,0x85,0x85,0xf4,0xc8,0x61,0x66,0xb4,
-0x2e,0xd1,0x7b,0x2a,0x17,0x92,0xa5,0xb2,0x5f,0x0e,0x14,0x24,0x00,0x18,0x62,0x42,
-0x08,0x31,0xcd,0xac,0x03,0x89,0x21,0x1b,0x25,0x1d,0x06,0x7c,0x61,0xb3,0x2e,0xfa,
-0x19,0xb1,0xcc,0x10,0x4a,0x21,0xc6,0xb4,0x5c,0x53,0x52,0xce,0xac,0x2c,0x35,0x06,
-0xdb,0xe6,0xa2,0xc8,0x93,0xcf,0x71,0xec,0x2a,0x2f,0xd0,0x10,0x43,0xd5,0x10,0xf7,
-0xa2,0x88,0x19,0x3e,0x18,0x6e,0xd5,0x36,0xdb,0x38,0xa2,0x15,0x6a,0xd2,0x2f,0x82,
-0xc3,0xa8,0x60,0x21,0x20,0x11,0x47,0x9d,0x66,0x30,0xd1,0x36,0x4a,0x8d,0x0d,0x4d,
-0xf7,0xd2,0xd5,0xd3,0x19,0x41,0x41,0xc2,0x1d,0x6a,0xa6,0x12,0x32,0x9a,0x21,0x10,
-0x92,0x27,0x8e,0xeb,0x05,0x24,0x17,0x17,0xac,0xf4,0xf3,0x8d,0x1c,0x64,0x51,0x38,
-0xd0,0x29,0x10,0x92,0xad,0xbd,0x54,0xe1,0xb4,0x92,0x4d,0xb1,0x16,0x9b,0x39,0x50,
-0x46,0x51,0x96,0x2c,0xa4,0x41,0xcd,0x78,0x2d,0x88,0x9c,0x50,0x92,0x9c,0x74,0x4a,
-0x8a,0x52,0xb7,0xf0,0x27,0x2c,0x2d,0x4b,0x13,0x0f,0x98,0x16,0xbd,0x10,0xcd,0x46,
-0x0e,0xd5,0x32,0xcd,0xee,0x89,0x9a,0xa8,0x81,0xcb,0xef,0x4e,0xc3,0x3e,0xd4,0x1f,
-0x7c,0x4e,0xbf,0x35,0x24,0x0b,0x38,0xd5,0xae,0x17,0x7c,0x9b,0x3b,0x81,0xd8,0xd1,
-0x0d,0x1e,0x0d,0x58,0xea,0x14,0xad,0x93,0x85,0x6d,0xe4,0x83,0xbb,0x77,0x5a,0xcc,
-0x20,0x36,0xcd,0xee,0xeb,0x28,0xb3,0x34,0x64,0x69,0x0a,0x39,0x79,0x2e,0xcf,0x56,
-0xc3,0x6c,0x88,0x28,0x43,0x1a,0x6d,0x0d,0xa9,0x86,0xd3,0x68,0x28,0xa2,0x92,0x05,
-0x02,0x4a,0x24,0x92,0x82,0x29,0x12,0x8a,0xf6,0x3b,0x40,0xdc,0xcf,0x50,0xfb,0x0d,
-0x71,0xb0,0xb2,0xbb,0x39,0x3a,0x08,0xb6,0x11,0x86,0x54,0x19,0x47,0x55,0xa0,0x22,
-0x32,0x7a,0xb2,0x12,0x0c,0x5c,0x4e,0x1d,0x18,0x57,0x50,0x53,0xc6,0x2e,0x16,0x6b,
-0x46,0x31,0x34,0x6a,0xc1,0x66,0x5b,0xe9,0xc9,0xde,0x75,0x48,0x98,0x3b,0x6b,0xad,
-0xe5,0xf3,0x84,0x2c,0xb5,0x0d,0x80,0x91,0x42,0x1a,0x5d,0x95,0xda,0xfb,0xa6,0x76,
-0x61,0xd4,0xf1,0x1c,0x96,0x1d,0x7f,0x22,0xc7,0xe2,0xfa,0x7e,0x7a,0xfa,0x62,0x47,
-0xc6,0x1e,0x7e,0x46,0xdd,0x92,0x4f,0x2c,0xdf,0xf5,0x41,0x1f,0x48,0x87,0x85,0x01,
-0x3e,0xa1,0x20,0xd3,0x5f,0x66,0x34,0x1d,0x7a,0xa8,0x40,0xab,0x4e,0x4d,0x98,0xae,
-0x0d,0xc7,0x95,0xd2,0xb0,0x7a,0x4b,0x8e,0x76,0xab,0x36,0xa9,0xe4,0x04,0x9d,0x8c,
-0xc9,0xce,0xf7,0x10,0xdb,0xed,0x21,0xee,0xf9,0xf9,0xe9,0xdb,0x28,0x5c,0xf2,0xe2,
-0x0e,0x81,0x19,0xa5,0x5a,0x36,0x22,0xd3,0x8f,0x9f,0x9e,0x31,0x17,0xac,0xc9,0x12,
-0x8b,0xd1,0x53,0x17,0xba,0x44,0x3d,0x88,0x36,0x2e,0xb5,0xbc,0xa6,0x02,0x8a,0x3c,
-0x56,0x90,0xd2,0x80,0xda,0x8c,0xb5,0xac,0x20,0xf3,0x8c,0xf9,0xd7,0x3e,0xb0,0xee,
-0xfc,0x3b,0x9a,0x5f,0x14,0xa0,0x49,0xcc,0x04,0x21,0x34,0x6a,0xd0,0x6a,0x42,0x66,
-0x64,0x4e,0x51,0x22,0xd0,0x4c,0x04,0x6d,0x44,0x02,0xe5,0x10,0xee,0xa6,0x68,0x30,
-0xc7,0x72,0xdb,0xd8,0x34,0x8c,0xb3,0x3a,0x8d,0x43,0x62,0x02,0x4d,0x98,0x4c,0x74,
-0xd2,0x31,0xac,0x20,0x2a,0x2b,0x0c,0xd7,0x00,0x70,0x0f,0x92,0x1e,0xe4,0x2f,0x1b,
-0x58,0x59,0xb6,0xba,0xe0,0xf9,0x4b,0x67,0xd3,0x0f,0xe0,0x24,0xf4,0x6c,0x03,0x03,
-0x69,0xdc,0x8a,0x91,0x7b,0x69,0x06,0xbb,0xcd,0xd8,0x7c,0x88,0x0e,0xff,0x4b,0x9d,
-0x75,0x03,0xf7,0x6e,0x56,0x80,0xcb,0xa6,0x9d,0xda,0x82,0x1a,0xc9,0xf3,0x68,0x21,
-0x02,0x2c,0x82,0x31,0x5b,0xb8,0x6b,0xab,0x3e,0x53,0x03,0x64,0x37,0x33,0x7e,0xe8,
-0x56,0x88,0x0a,0x06,0x88,0x27,0x69,0x4e,0x02,0x4c,0x74,0x7e,0x88,0x4c,0xae,0xd9,
-0x9c,0xcc,0x12,0xf6,0x82,0x03,0x31,0x71,0x24,0x81,0x3d,0xf2,0xdb,0x1b,0x02,0x59,
-0xd3,0x63,0x43,0x68,0x0b,0xbe,0x53,0x08,0xcf,0x60,0xfa,0x15,0x36,0x09,0xc4,0x27,
-0xba,0x4e,0x09,0x7c,0x41,0x84,0x14,0x74,0x81,0x06,0x78,0xce,0x33,0x13,0x47,0x03,
-0x56,0x86,0x31,0x70,0x34,0xb3,0x59,0x64,0xee,0x29,0xc1,0x8c,0xc4,0x3a,0x91,0x15,
-0x17,0x2d,0xee,0xa7,0xe8,0xde,0x7f,0x93,0x91,0x45,0x70,0x73,0xc5,0x92,0x5a,0xcf,
-0x90,0x25,0xd3,0x59,0xad,0x3f,0x13,0x06,0xaa,0xc9,0x0e,0xfa,0x6a,0xdf,0xbb,0xf0,
-0x93,0xe5,0x8b,0xde,0x04,0x8d,0xcc,0x0a,0xd6,0xd2,0x93,0x34,0xd9,0x44,0x82,0xfd,
-0x1c,0x32,0x47,0x0b,0x91,0x28,0x37,0x7f,0x9d,0x0b,0x2e,0x2e,0x1b,0x5e,0x3e,0x9e,
-0x78,0xf9,0xb8,0x8d,0x50,0x8b,0x60,0x67,0xdb,0x08,0x12,0x05,0x31,0x1d,0x39,0x0b,
-0x44,0xeb,0x58,0x61,0x03,0x05,0x39,0x10,0x42,0xeb,0x1c,0xad,0x23,0xda,0xd9,0x6c,
-0xd0,0x79,0x5b,0x0d,0xb4,0x1c,0x08,0xf5,0x70,0xdb,0x06,0xc9,0xc1,0x87,0x2a,0x5c,
-0x72,0xe8,0x40,0x10,0xfe,0x96,0xe4,0x3d,0xe0,0x5b,0x39,0xc6,0x96,0xac,0x69,0xdc,
-0x68,0x0a,0x61,0xdc,0xa4,0x9a,0xb9,0x56,0x42,0x0e,0xd8,0x27,0x14,0x3b,0x6d,0x28,
-0x12,0x2e,0xc0,0xe7,0xae,0xc1,0xe8,0x85,0x68,0x73,0xb5,0x6e,0x86,0x86,0x4e,0x43,
-0x61,0x33,0x53,0x17,0x16,0x49,0x25,0x60,0xd9,0x60,0x24,0x96,0xcb,0x14,0xb9,0x52,
-0x44,0x19,0xc3,0xa0,0x38,0x41,0x91,0xbf,0x87,0x2a,0x66,0xf9,0x74,0x62,0x20,0xa9,
-0xe0,0x8b,0x54,0x2a,0x70,0xe5,0xa4,0x48,0xc0,0x31,0x47,0x17,0x97,0x71,0xda,0x33,
-0xc0,0xfe,0x9c,0x53,0x8e,0xc8,0xda,0x61,0xc5,0xd4,0x74,0x90,0xf1,0x2e,0xe5,0x6d,
-0xcb,0x56,0x3c,0x45,0xcb,0x31,0x61,0x4c,0x82,0x20,0x01,0x85,0x8c,0x95,0xd2,0x9c,
-0x79,0x23,0x1e,0x0f,0x75,0x13,0xc0,0x86,0xd4,0xf5,0x67,0x0d,0x9a,0x8b,0x1c,0x1f,
-0x9f,0xad,0xd3,0xef,0x5d,0xce,0x35,0xd1,0xbe,0xaf,0xfa,0xea,0x86,0x7d,0x05,0x55,
-0xea,0xc6,0xd3,0x59,0xe6,0x89,0x24,0xe5,0xb9,0xa1,0x90,0xe1,0x98,0xee,0xba,0x4e,
-0xb7,0xd2,0xc5,0x1c,0x21,0x3a,0x10,0xca,0x21,0xc0,0x20,0xb4,0x94,0x61,0x6f,0x10,
-0xe4,0x55,0x3b,0x82,0x63,0x36,0xec,0x63,0x07,0x06,0x80,0xc3,0x15,0x27,0x04,0x2b,
-0x97,0x0f,0xe0,0xe6,0x60,0x16,0x62,0x78,0xf7,0x8f,0x7e,0x93,0xa2,0x2d,0x10,0x8b,
-0x0d,0x8f,0x0e,0x9c,0x6f,0x8e,0x62,0x7a,0x60,0x4a,0x2f,0x78,0xdb,0xe8,0x6d,0xd4,
-0xf5,0xbd,0x53,0xb1,0x0c,0xf9,0x46,0xe5,0xa1,0x60,0xd5,0xdd,0xbc,0x1c,0x20,0x6d,
-0x08,0x2b,0xa6,0x43,0x36,0x84,0x34,0x49,0x0b,0xb3,0x99,0x67,0x56,0xd2,0x28,0xd0,
-0xe8,0xc3,0xbd,0xe5,0xf7,0xe7,0x3b,0x6a,0xf7,0x58,0x5c,0xe9,0xc4,0x42,0x4a,0x53,
-0x20,0xf0,0xbe,0xe4,0x70,0xf0,0xe1,0x14,0x7c,0x3a,0x07,0x94,0xd6,0xfc,0x58,0xf8,
-0x91,0x00,0x03,0xd0,0xa3,0x57,0x4e,0xd1,0x7c,0x92,0xb8,0x56,0xd5,0x3d,0x5d,0x0d,
-0xd9,0xe0,0x88,0xc5,0xdb,0x6c,0xd3,0x3d,0x28,0x04,0xce,0x50,0x74,0x37,0xa1,0xe9,
-0x6a,0xc6,0x94,0x21,0xdb,0xbb,0xe7,0x4c,0x20,0x12,0x48,0x10,0x48,0x06,0x49,0x31,
-0x1b,0x6c,0x40,0x48,0x6e,0x68,0xc0,0xa4,0x3c,0xaa,0x82,0x88,0x15,0xdc,0x21,0x25,
-0xa0,0x92,0x63,0x87,0x44,0x27,0x5e,0x0f,0xbf,0x68,0xc6,0x82,0x92,0xde,0x6e,0xf7,
-0x92,0x69,0x21,0x47,0xb6,0xe1,0xdc,0x9a,0x60,0x50,0x6c,0x2a,0xda,0xae,0x2a,0x6b,
-0x57,0x20,0x4b,0x06,0xca,0x25,0x80,0x09,0xa0,0xf5,0xb5,0xa9,0x6d,0x74,0x22,0xae,
-0xc2,0x08,0x70,0x36,0x87,0x4e,0x1b,0x15,0xe2,0x10,0xd3,0x13,0x6c,0x1b,0x0b,0x55,
-0x6d,0x6e,0x2a,0xeb,0x0d,0x50,0xc6,0x30,0x8c,0xb9,0x1b,0x4a,0x31,0x1a,0x12,0xc2,
-0x59,0xd5,0xc2,0xc5,0x44,0x05,0x71,0x7e,0x3d,0x47,0x83,0x8c,0x02,0x3c,0x0e,0x8f,
-0xa9,0xc0,0xf1,0x72,0xc0,0x11,0x38,0xe7,0x02,0xa3,0xa9,0x1b,0xdf,0x63,0x91,0x0b,
-0xd2,0x0b,0x6e,0xa8,0x17,0x9e,0xc6,0x03,0x1e,0x77,0x8d,0xcf,0x11,0xb9,0xe5,0x5e,
-0xfa,0xcf,0x8c,0xc5,0x23,0xae,0xe5,0xef,0x7d,0xb8,0x29,0x9b,0x62,0xc4,0x01,0x1b,
-0x3b,0x91,0x9a,0x4e,0x09,0x33,0xb4,0xaa,0x8a,0xc1,0x88,0xef,0x30,0x70,0x41,0x60,
-0x41,0xd2,0x53,0xca,0xc5,0x43,0x49,0xbe,0xa4,0xc4,0xc3,0xa6,0xc8,0xfb,0xc1,0x20,
-0xc4,0x3a,0x64,0x54,0x46,0xf1,0x18,0x82,0x18,0x99,0xd4,0xcc,0xc2,0x2a,0x94,0x1c,
-0x85,0xbd,0x47,0x24,0x23,0x1e,0xd5,0x11,0x43,0xae,0x6e,0x8f,0x38,0xbd,0x6e,0x80,
-0x03,0x45,0x9b,0x6f,0x75,0x8f,0xab,0x1c,0x45,0xf7,0x65,0xc5,0xa0,0x51,0xe9,0x2b,
-0x4a,0x43,0x92,0x0b,0x76,0x2c,0x28,0xc1,0x8e,0x48,0xc3,0xa0,0x72,0x82,0x9a,0x98,
-0x78,0x72,0xaa,0x0d,0xa7,0x10,0x28,0xbb,0x09,0x43,0xe3,0xdd,0x19,0x5d,0x45,0xd4,
-0x40,0xc9,0x18,0x7f,0x67,0xa3,0xdd,0x29,0x45,0xe0,0xbb,0xcf,0x15,0xe4,0x18,0x38,
-0x28,0x11,0x94,0x53,0x23,0x77,0xa9,0x92,0x66,0x52,0x62,0xe9,0x16,0x24,0x83,0x04,
-0x75,0x34,0x6e,0x1c,0x09,0x61,0xb7,0xa4,0x28,0x75,0x28,0xef,0x4b,0xb6,0xfd,0xa3,
-0x69,0xd1,0x18,0x20,0x98,0x48,0x44,0x70,0x94,0xa9,0xee,0xa0,0x3b,0xd1,0xbe,0xdd,
-0x77,0xc5,0xa6,0x59,0x0c,0x23,0x7e,0x38,0x2e,0x71,0x63,0x8d,0xda,0xdf,0xd7,0x83,
-0x5b,0x04,0x37,0x81,0xac,0xf4,0xec,0xea,0x82,0x39,0x91,0x9e,0x28,0x08,0x50,0xf5,
-0xbf,0x4f,0x75,0xb4,0xee,0xb5,0xca,0x1a,0x91,0xbf,0xa1,0x19,0x67,0x63,0x84,0xd5,
-0x08,0x1f,0x6e,0x52,0xfd,0xab,0xb5,0x0b,0x6f,0x8b,0x1a,0xbe,0x55,0x63,0xbe,0xce,
-0x12,0x12,0x41,0x5b,0x2c,0x0f,0x14,0x79,0x45,0x5d,0xa4,0x81,0xa4,0x73,0xe9,0xe3,
-0x1b,0x5e,0x34,0x6e,0x47,0x01,0x4b,0xcf,0x14,0x30,0xea,0xf3,0x03,0xb4,0x93,0x5d,
-0x77,0xb1,0x01,0x48,0x56,0x59,0x65,0x20,0xa9,0x35,0xc9,0x06,0x86,0xe8,0x97,0xb3,
-0xd7,0x66,0x39,0x2b,0x11,0x6f,0xd3,0x6a,0xab,0xd9,0x00,0xcc,0x75,0xde,0x84,0xcb,
-0x0c,0x73,0xe1,0xe1,0xd0,0x8a,0x69,0x04,0x20,0xa2,0x80,0x60,0xfc,0xb8,0x0a,0x54,
-0x07,0x41,0x00,0x40,0x79,0x73,0x88,0x81,0xce,0x2e,0xc4,0x90,0x10,0xb7,0xb2,0x8d,
-0xff,0x1a,0xb2,0x9a,0x74,0x6d,0xdf,0xc3,0xfa,0x31,0xb1,0xd6,0x39,0xff,0x46,0xc8,
-0xd6,0xd5,0xfb,0x56,0xf1,0x6a,0x37,0x93,0xd0,0x10,0x40,0x2d,0xb2,0x01,0x31,0xba,
-0xed,0xf9,0x3f,0xd1,0x02,0x10,0x1d,0x7e,0xeb,0x1a,0x6d,0x19,0xf3,0x63,0xf6,0x56,
-0xd9,0x40,0x84,0x04,0x7b,0xdf,0x3d,0xc7,0xaf,0xdd,0x64,0x08,0x40,0x45,0xfb,0x67,
-0x06,0xa7,0x1f,0xb6,0xae,0xf5,0xfe,0x1e,0x10,0x21,0x01,0xbd,0x7e,0xd3,0x6e,0x50,
-0x21,0x01,0xe3,0xf7,0x62,0xa0,0x80,0x82,0x01,0x69,0x01,0x04,0x02,0x5d,0x73,0x8b,
-0x7e,0xe3,0xb0,0xca,0x56,0x02,0x02,0x04,0x7f,0xc5,0xdc,0x91,0x4e,0x14,0x24,0x10,
-0x10,0xfe,0x69,0xc0,
+0150,0061,0061,0101,0131,0046,0123,0131,0354,0323,0245,0071,0000,0013,0311,0137,
+0200,0000,0020,0130,0003,0377,0342,0077,0377,0377,0360,0277,0347,0337,0140,0140,
+0033,0034,0000,0075,0334,0120,0254,0200,0337,0133,0000,0157,0000,0006,0335,0206,
+0033,0025,0240,0012,0034,0115,0000,0105,0321,0221,0175,0200,0003,0273,0011,0330,
+0063,0255,0172,0316,0242,0310,0110,0136,0315,0166,0120,0351,0313,0245,0007,0125,
+0034,0015,0117,0102,0150,0002,0150,0206,0122,0172,0231,0110,0151,0352,0064,0033,
+0123,0365,0046,0151,0006,0040,0006,0231,0004,0010,0106,0102,0021,0252,0000,0003,
+0100,0000,0000,0003,0004,0205,0117,0117,0122,0172,0214,0241,0265,0032,0064,0000,
+0000,0006,0200,0032,0001,0047,0252,0122,0121,0020,0077,0124,0144,0000,0150,0000,
+0000,0000,0000,0002,0123,0122,0217,0123,0020,0002,0151,0220,0031,0062,0062,0155,
+0036,0244,0331,0107,0244,0320,0306,0204,0022,0041,0011,0240,0020,0044,0115,0123,
+0312,0000,0000,0000,0000,0365,0036,0247,0376,0370,0177,0335,0273,0113,0225,0323,
+0173,0235,0167,0127,0064,0150,0055,0210,0330,0326,0044,0220,0141,0114,0242,0242,
+0330,0333,0232,0336,0065,0346,0134,0326,0357,0237,0333,0166,0154,0204,0044,0126,
+0061,0104,0026,0046,0111,0117,0135,0072,0344,0212,0051,0224,0133,0327,0162,0116,
+0355,0256,0040,0104,0150,0331,0232,0215,0133,0306,0345,0264,0123,0316,0327,0007,
+0235,0310,0065,0111,0313,0230,0306,0305,0156,0156,0121,0316,0162,0345,0210,0065,
+0310,0357,0073,0206,0202,0202,0130,0100,0171,0335,0221,0100,0103,0015,0223,0263,
+0203,0171,0332,0344,0224,0150,0275,0075,0233,0346,0257,0115,0213,0145,0055,0001,
+0062,0244,0317,0075,0375,0344,0211,0020,0231,0110,0023,0010,0327,0275,0135,0136,
+0336,0171,0170,0245,0355,0327,0303,0347,0144,0140,0220,0110,0114,0022,0021,0062,
+0364,0344,0043,0136,0376,0270,0054,0163,0162,0144,0310,0111,0062,0102,0021,0111,
+0312,0213,0143,0014,0060,0030,0264,0172,0315,0252,0246,0130,0103,0343,0063,0245,
+0211,0322,0305,0262,0110,0253,0007,0067,0125,0077,0267,0362,0123,0117,0345,0217,
+0261,0175,0222,0047,0133,0203,0063,0057,0336,0374,0153,0364,0351,0146,0326,0122,
+0126,0126,0006,0227,0371,0117,0076,0251,0212,0043,0231,0253,0357,0374,0304,0235,
+0065,0057,0263,0136,0373,0317,0117,0206,0121,0307,0177,0176,0315,0241,0334,0176,
+0326,0357,0367,0065,0207,0335,0201,0116,0373,0131,0174,0133,0322,0054,0244,0153,
+0253,0017,0113,0125,0254,0144,0324,0371,0040,0361,0153,0374,0057,0155,0320,0124,
+0301,0215,0326,0227,0064,0346,0155,0047,0041,0307,0017,0361,0322,0275,0147,0015,
+0374,0325,0370,0331,0317,0307,0144,0154,0326,0150,0120,0042,0046,0220,0163,0116,
+0045,0237,0267,0065,0215,0141,0126,0270,0354,0371,0171,0355,0015,0350,0372,0357,
+0346,0152,0166,0132,0306,0240,0314,0110,0133,0111,0033,0072,0253,0124,0030,0234,
+0145,0047,0254,0167,0227,0153,0116,0114,0265,0145,0126,0025,0021,0220,0341,0234,
+0363,0231,0074,0151,0305,0171,0153,0070,0332,0271,0245,0250,0045,0360,0223,0366,
+0153,0136,0113,0355,0115,0151,0266,0226,0004,0357,0047,0214,0334,0250,0273,0354,
+0223,0077,0016,0366,0126,0360,0355,0061,0202,0264,0170,0304,0111,0321,0166,0266,
+0133,0076,0257,0212,0326,0273,0126,0162,0131,0014,0101,0272,0214,0265,0171,0361,
+0165,0275,0146,0052,0051,0022,0033,0175,0053,0171,0074,0317,0225,0350,0344,0367,
+0042,0166,0176,0036,0155,0276,0265,0050,0323,0121,0117,0106,0101,0060,0172,0264,
+0257,0324,0237,0311,0364,0043,0104,0121,0075,0041,0157,0216,0263,0156,0344,0152,
+0152,0301,0357,0215,0314,0172,0267,0332,0307,0122,0042,0143,0001,0374,0251,0272,
+0113,0253,0054,0363,0207,0350,0166,0210,0126,0257,0257,0357,0352,0076,0244,0076,
+0122,0374,0147,0206,0150,0375,0142,0002,0002,0000,0017,0220,0200,0200,0200,0003,
+0073,0156,0241,0300,0150,0117,0104,0024,0340,0304,0006,0030,0140,0077,0152,0106,
+0161,0343,0142,0140,0245,0352,0233,0061,0160,0223,0202,0257,0150,0033,0176,0355,
+0270,0135,0124,0137,0337,0052,0177,0041,0373,0174,0174,0372,0157,0037,0132,0306,
+0177,0245,0357,0035,0174,0256,0271,0146,0331,0166,0131,0257,0351,0270,0166,0136,
+0171,0000,0147,0375,0036,0161,0220,0371,0306,0024,0215,0076,0165,0330,0336,0261,
+0274,0110,0117,0312,0152,0204,0175,0265,0367,0327,0270,0247,0243,0071,0130,0261,
+0212,0042,0167,0015,0246,0371,0256,0377,0325,0051,0356,0362,0356,0036,0324,0372,
+0054,0345,0341,0347,0133,0171,0373,0342,0046,0325,0110,0273,0365,0274,0322,0324,
+0133,0172,0334,0157,0133,0274,0120,0256,0270,0157,0066,0107,0171,0044,0253,0150,
+0313,0331,0053,0060,0057,0354,0333,0231,0030,0240,0162,0213,0332,0363,0157,0251,
+0134,0156,0166,0355,0051,0063,0116,0124,0267,0266,0047,0037,0017,0272,0355,0076,
+0105,0334,0166,0112,0014,0267,0337,0331,0351,0056,0263,0105,0153,0320,0231,0141,
+0154,0343,0143,0060,0133,0023,0013,0305,0370,0331,0132,0275,0166,0346,0224,0262,
+0007,0155,0346,0176,0211,0364,0154,0322,0234,0076,0265,0306,0075,0073,0314,0353,
+0121,0125,0347,0321,0236,0304,0227,0100,0212,0220,0044,0033,0240,0116,0021,0017,
+0174,0347,0231,0163,0126,0224,0352,0271,0132,0010,0214,0341,0264,0142,0357,0151,
+0221,0072,0167,0327,0036,0223,0103,0152,0221,0057,0250,0335,0261,0176,0313,0364,
+0216,0370,0066,0365,0121,0171,0325,0372,0032,0277,0126,0137,0137,0131,0326,0152,
+0216,0274,0157,0233,0262,0014,0141,0264,0030,0266,0376,0121,0373,0201,0011,0052,
+0301,0220,0142,0060,0121,0007,0275,0104,0345,0156,0310,0140,0345,0204,0016,0002,
+0343,0045,0222,0017,0124,0367,0154,0033,0034,0001,0070,0035,0151,0254,0010,0075,
+0150,0301,0206,0107,0073,0365,0362,0120,0356,0203,0135,0205,0355,0147,0331,0306,
+0113,0252,0250,0214,0135,0200,0142,0013,0244,0015,0303,0275,0036,0332,0130,0137,
+0223,0225,0322,0040,0000,0035,0353,0001,0212,0343,0346,0351,0051,0311,0143,0073,
+0352,0105,0050,0374,0114,0347,0032,0264,0103,0354,0206,0140,0236,0200,0163,0035,
+0032,0230,0331,0215,0351,0052,0357,0071,0361,0057,0351,0033,0032,0135,0055,0225,
+0305,0013,0120,0351,0323,0115,0245,0350,0067,0343,0167,0224,0357,0273,0075,0107,
+0251,0025,0023,0012,0023,0206,0234,0144,0225,0073,0011,0371,0036,0255,0105,0161,
+0173,0215,0256,0141,0304,0132,0061,0007,0162,0355,0271,0273,0176,0231,0243,0155,
+0355,0204,0256,0231,0071,0232,0353,0157,0172,0202,0110,0026,0003,0025,0014,0157,
+0126,0243,0164,0270,0106,0357,0134,0227,0157,0272,0133,0242,0312,0364,0113,0015,
+0277,0116,0067,0217,0304,0306,0324,0365,0005,0115,0036,0017,0230,0275,0054,0012,
+0003,0321,0046,0010,0331,0237,0306,0352,0351,0064,0254,0130,0330,0225,0106,0342,
+0373,0051,0002,0371,0360,0023,0232,0201,0133,0105,0014,0140,0270,0141,0235,0044,
+0246,0113,0236,0353,0331,0326,0143,0023,0264,0343,0307,0315,0013,0342,0306,0330,
+0120,0171,0221,0235,0262,0062,0366,0170,0356,0136,0140,0175,0311,0362,0310,0326,
+0361,0130,0051,0301,0051,0343,0037,0061,0121,0311,0206,0070,0115,0041,0260,0134,
+0203,0120,0302,0360,0371,0170,0373,0227,0131,0323,0027,0103,0210,0120,0222,0042,
+0235,0027,0102,0034,0010,0156,0064,0313,0177,0145,0005,0260,0105,0117,0237,0126,
+0345,0353,0174,0241,0266,0361,0276,0016,0173,0374,0370,0337,0127,0351,0363,0365,
+0325,0373,0265,0001,0242,0136,0343,0255,0303,0043,0044,0221,0051,0222,0246,0040,
+0104,0143,0050,0205,0045,0211,0062,0226,0053,0012,0023,0045,0063,0044,0131,0242,
+0146,0046,0112,0246,0224,0255,0026,0330,0261,0121,0151,0112,0026,0111,0143,0104,
+0042,0152,0051,0060,0111,0222,0204,0264,0205,0032,0065,0003,0112,0245,0066,0065,
+0024,0105,0026,0224,0042,0061,0251,0017,0135,0306,0231,0024,0023,0102,0115,0253,
+0307,0051,0061,0031,0061,0131,0223,0013,0111,0221,0201,0223,0227,0144,0321,0246,
+0022,0300,0106,0151,0244,0312,0047,0213,0201,0060,0115,0106,0061,0026,0104,0106,
+0074,0353,0241,0335,0161,0110,0051,0044,0141,0220,0025,0040,0206,0106,0302,0231,
+0240,0040,0363,0270,0357,0273,0175,0053,0203,0072,0301,0003,0030,0217,0007,0351,
+0052,0155,0012,0006,0061,0243,0312,0136,0373,0224,0021,0075,0031,0317,0324,0155,
+0057,0311,0207,0275,0131,0225,0152,0230,0144,0263,0014,0242,0027,0323,0327,0245,
+0130,0232,0261,0033,0353,0147,0200,0264,0257,0265,0351,0213,0142,0237,0012,0321,
+0363,0030,0322,0161,0133,0256,0316,0274,0275,0027,0144,0262,0362,0056,0231,0031,
+0212,0056,0000,0100,0162,0312,0051,0154,0317,0213,0221,0046,0143,0035,0247,0142,
+0065,0173,0265,0146,0133,0353,0171,0045,0054,0065,0015,0231,0273,0033,0041,0007,
+0336,0255,0050,0126,0031,0371,0272,0271,0025,0030,0326,0377,0235,0322,0345,0131,
+0027,0026,0254,0321,0221,0155,0153,0257,0313,0164,0352,0326,0055,0331,0070,0001,
+0266,0301,0255,0064,0366,0213,0371,0054,0034,0157,0025,0125,0124,0367,0206,0270,
+0003,0156,0070,0331,0075,0164,0256,0254,0307,0306,0264,0065,0057,0013,0212,0052,
+0217,0263,0043,0310,0207,0144,0245,0141,0023,0336,0352,0017,0210,0337,0122,0170,
+0270,0352,0362,0041,0323,0264,0005,0155,0360,0266,0105,0275,0263,0031,0257,0152,
+0221,0105,0102,0040,0103,0204,0034,0017,0174,0253,0306,0053,0023,0254,0323,0214,
+0342,0333,0314,0210,0153,0270,0174,0205,0311,0366,0336,0234,0121,0043,0302,0153,
+0135,0014,0223,0250,0172,0033,0113,0156,0042,0043,0142,0301,0105,0324,0223,0132,
+0212,0327,0023,0126,0365,0207,0355,0234,0056,0001,0113,0263,0305,0246,0324,0046,
+0303,0037,0133,0331,0174,0324,0130,0374,0010,0212,0306,0317,0251,0234,0021,0205,
+0075,0104,0011,0061,0170,0345,0137,0015,0174,0104,0126,0006,0056,0125,0136,0232,
+0052,0211,0342,0067,0132,0032,0116,0212,0361,0115,0252,0061,0061,0173,0342,0327,
+0275,0146,0133,0351,0061,0264,0032,0371,0326,0325,0010,0241,0257,0220,0245,0175,
+0301,0044,0012,0326,0030,0276,0312,0341,0032,0040,0167,0377,0256,0036,0047,0034,
+0134,0327,0275,0161,0355,0100,0032,0055,0164,0152,0017,0255,0001,0221,0057,0051,
+0136,0022,0036,0116,0262,0322,0105,0024,0140,0355,0247,0170,0254,0055,0015,0224,
+0162,0244,0114,0203,0041,0072,0375,0326,0002,0106,0042,0375,0214,0031,0366,0312,
+0332,0051,0277,0061,0243,0200,0103,0272,0007,0353,0214,0354,0123,0212,0302,0107,
+0222,0063,0250,0163,0013,0206,0074,0206,0141,0022,0076,0160,0313,0173,0325,0371,
+0356,0333,0375,0101,0175,0163,0240,0256,0146,0345,0345,0245,0006,0310,0373,0076,
+0056,0325,0106,0340,0164,0323,0014,0316,0352,0222,0322,0013,0236,0327,0340,0124,
+0356,0247,0230,0305,0247,0353,0277,0054,0056,0001,0246,0145,0256,0331,0065,0214,
+0315,0014,0103,0153,0045,0252,0246,0244,0075,0075,0267,0206,0114,0067,0253,0133,
+0131,0042,0365,0173,0145,0242,0366,0040,0246,0327,0251,0211,0033,0302,0326,0131,
+0052,0152,0242,0145,0214,0222,0010,0041,0216,0115,0054,0325,0101,0002,0325,0240,
+0254,0363,0206,0152,0050,0035,0066,0321,0166,0066,0011,0316,0247,0234,0244,0266,
+0006,0153,0366,0211,0141,0345,0206,0355,0013,0213,0316,0256,0205,0166,0200,0357,
+0150,0321,0211,0113,0110,0263,0111,0032,0260,0206,0212,0140,0054,0142,0001,0015,
+0244,0150,0322,0206,0211,0142,0155,0041,0217,0054,0024,0264,0045,0054,0246,0252,
+0320,0124,0346,0102,0365,0005,0336,0235,0300,0031,0171,0170,0153,0131,0201,0022,
+0333,0024,0060,0041,0354,0236,0130,0033,0152,0100,0205,0146,0213,0324,0000,0252,
+0243,0335,0340,0247,0231,0200,0101,0055,0015,0266,0036,0027,0156,0365,0037,0155,
+0074,0173,0374,0265,0304,0314,0272,0022,0076,0374,0352,0224,0206,0373,0045,0002,
+0001,0012,0143,0105,0003,0061,0077,0164,0063,0305,0302,0076,0164,0222,0000,0113,
+0177,0123,0167,0115,0300,0004,0060,0151,0043,0103,0145,0071,0114,0312,0331,0264,
+0065,0344,0220,0134,0113,0305,0301,0222,0056,0321,0316,0177,0047,0217,0135,0355,
+0353,0355,0121,0316,0365,0277,0340,0236,0014,0203,0246,0170,0016,0355,0055,0203,
+0103,0124,0041,0277,0117,0217,0136,0353,0007,0125,0231,0061,0112,0361,0044,0263,
+0270,0213,0225,0063,0210,0227,0120,0136,0141,0226,0263,0013,0060,0371,0206,0017,
+0344,0137,0157,0307,0336,0001,0265,0015,0257,0260,0142,0372,0031,0333,0327,0105,
+0013,0034,0357,0266,0007,0153,0301,0361,0251,0037,0035,0146,0125,0014,0275,0341,
+0103,0367,0302,0325,0362,0210,0256,0332,0067,0022,0045,0244,0145,0326,0257,0211,
+0032,0333,0331,0255,0351,0132,0265,0213,0124,0152,0253,0350,0053,0232,0261,0126,
+0275,0225,0325,0145,0170,0266,0364,0255,0136,0115,0253,0163,0132,0256,0154,0155,
+0165,0361,0276,0051,0174,0276,0335,0074,0247,0043,0250,0166,0337,0141,0174,0313,
+0310,0242,0000,0040,0210,0247,0035,0000,0120,0245,0245,0313,0120,0202,0224,0026,
+0030,0104,0372,0222,0052,0074,0267,0045,0064,0313,0120,0311,0030,0325,0231,0305,
+0011,0164,0304,0022,0300,0262,0110,0054,0334,0240,0011,0104,0262,0115,0072,0357,
+0344,0117,0263,0371,0003,0351,0262,0031,0005,0264,0207,0115,0217,0123,0023,0040,
+0014,0106,0357,0261,0365,0363,0316,0143,0043,0363,0365,0071,0277,0045,0253,0251,
+0316,0204,0324,0252,0352,0363,0162,0021,0015,0013,0054,0216,0051,0135,0126,0020,
+0173,0135,0372,0237,0115,0043,0253,0322,0341,0253,0364,0102,0000,0004,0272,0024,
+0263,0151,0003,0206,0057,0030,0072,0113,0122,0342,0075,0161,0053,0320,0320,0061,
+0236,0070,0215,0072,0203,0320,0135,0036,0153,0201,0261,0043,0100,0200,0074,0364,
+0162,0060,0254,0355,0304,0050,0141,0327,0031,0273,0115,0255,0324,0043,0126,0050,
+0045,0040,0320,0367,0342,0044,0143,0260,0236,0120,0337,0075,0020,0161,0115,0221,
+0303,0104,0060,0104,0061,0260,0143,0326,0166,0054,0065,0244,0237,0217,0015,0020,
+0005,0232,0330,0033,0114,0122,0333,0073,0141,0336,0210,0075,0171,0362,0346,0321,
+0062,0036,0137,0261,0212,0307,0006,0336,0062,0024,0227,0133,0153,0352,0064,0374,
+0133,0076,0332,0173,0040,0271,0353,0004,0172,0210,0015,0176,0133,0345,0263,0247,
+0315,0003,0320,0357,0314,0102,0341,0244,0337,0320,0171,0142,0321,0257,0107,0225,
+0047,0153,0115,0310,0010,0114,0074,0147,0371,0135,0140,0266,0306,0340,0174,0047,
+0117,0026,0107,0153,0301,0343,0062,0303,0006,0316,0024,0363,0271,0067,0351,0373,
+0026,0272,0110,0135,0244,0122,0117,0272,0167,0074,0122,0340,0222,0004,0022,0304,
+0357,0307,0321,0162,0306,0350,0224,0224,0047,0210,0314,0303,0273,0010,0223,0010,
+0260,0205,0006,0042,0110,0013,0101,0274,0337,0220,0044,0100,0345,0300,0323,0260,
+0171,0032,0107,0055,0215,0121,0101,0044,0347,0270,0040,0227,0072,0040,0242,0074,
+0326,0106,0020,0214,0200,0227,0132,0107,0020,0152,0311,0135,0261,0266,0301,0221,
+0306,0124,0064,0261,0235,0335,0161,0347,0063,0072,0060,0220,0255,0045,0215,0064,
+0107,0204,0230,0133,0254,0310,0125,0116,0014,0103,0022,0065,0322,0113,0000,0307,
+0043,0072,0052,0111,0211,0204,0010,0030,0164,0062,0132,0045,0246,0321,0212,0241,
+0153,0042,0061,0353,0327,0242,0203,0317,0250,0372,0276,0045,0226,0156,0375,0252,
+0155,0373,0361,0243,0224,0335,0034,0067,0334,0042,0147,0242,0122,0024,0265,0043,
+0320,0072,0264,0303,0043,0133,0103,0263,0212,0033,0107,0154,0115,0221,0244,0210,
+0142,0277,0213,0135,0044,0106,0234,0317,0316,0325,0306,0326,0310,0321,0075,0211,
+0110,0202,0102,0055,0056,0021,0173,0353,0275,0071,0237,0061,0071,0043,0141,0126,
+0216,0046,0011,0042,0076,0074,0221,0272,0046,0341,0001,0310,0016,0220,0272,0325,
+0327,0102,0312,0010,0163,0220,0100,0075,0320,0031,0333,0350,0067,0360,0115,0201,
+0214,0130,0073,0223,0202,0030,0306,0306,0230,0331,0300,0220,0315,0275,0363,0326,
+0160,0256,0107,0155,0271,0351,0252,0154,0157,0227,0133,0361,0021,0333,0010,0017,
+0061,0214,0062,0222,0036,0021,0331,0105,0026,0216,0270,0343,0127,0371,0163,0242,
+0025,0251,0056,0045,0232,0353,0062,0074,0266,0304,0101,0301,0342,0245,0306,0342,
+0040,0147,0054,0027,0026,0174,0210,0276,0026,0053,0222,0214,0172,0103,0271,0162,
+0150,0340,0260,0240,0120,0107,0101,0044,0100,0225,0252,0246,0204,0013,0205,0313,
+0346,0225,0124,0213,0074,0046,0216,0127,0036,0050,0113,0015,0066,0010,0244,0220,
+0216,0120,0363,0240,0202,0302,0224,0225,0226,0260,0131,0205,0210,0042,0006,0246,
+0133,0034,0300,0110,0320,0066,0051,0126,0040,0217,0144,0032,0266,0066,0305,0200,
+0201,0226,0054,0201,0000,0225,0140,0250,0112,0133,0146,0031,0114,0226,0230,0011,
+0203,0212,0260,0023,0025,0054,0023,0115,0026,0140,0101,0111,0305,0101,0135,0111,
+0146,0202,0321,0012,0320,0271,0150,0027,0254,0150,0257,0204,0254,0015,0043,0012,
+0002,0244,0221,0314,0220,0020,0062,0244,0145,0124,0301,0014,0006,0235,0114,0100,
+0270,0122,0004,0205,0120,0310,0204,0101,0323,0304,0012,0255,0112,0133,0225,0005,
+0254,0324,0062,0247,0334,0276,0043,0316,0165,0261,0117,0311,0327,0212,0201,0024,
+0317,0334,0164,0213,0314,0212,0146,0001,0172,0233,0317,0204,0155,0170,0075,0251,
+0170,0150,0044,0021,0277,0233,0031,0230,0162,0150,0206,0304,0212,0035,0174,0336,
+0217,0013,0350,0043,0256,0015,0126,0044,0266,0234,0160,0276,0355,0320,0221,0030,
+0171,0157,0060,0141,0200,0111,0301,0007,0074,0364,0110,0321,0140,0275,0016,0220,
+0040,0022,0204,0205,0133,0143,0103,0214,0330,0106,0032,0001,0203,0342,0357,0132,
+0120,0024,0141,0273,0320,0343,0135,0043,0136,0006,0131,0344,0045,0075,0227,0077,
+0170,0306,0204,0146,0306,0146,0300,0223,0154,0327,0020,0131,0213,0103,0135,0317,
+0171,0266,0225,0114,0127,0337,0164,0272,0140,0330,0330,0274,0071,0150,0320,0057,
+0256,0043,0263,0274,0053,0065,0326,0230,0266,0116,0103,0272,0205,0363,0262,0052,
+0236,0307,0236,0125,0304,0254,0007,0137,0112,0020,0161,0106,0332,0165,0316,0152,
+0152,0032,0115,0250,0040,0350,0231,0215,0366,0102,0174,0041,0042,0044,0067,0341,
+0273,0025,0306,0352,0034,0164,0174,0351,0201,0345,0066,0212,0272,0062,0014,0075,
+0227,0214,0253,0005,0056,0025,0322,0161,0002,0224,0325,0310,0234,0332,0004,0064,
+0150,0110,0143,0313,0061,0003,0237,0144,0331,0146,0142,0346,0244,0333,0161,0345,
+0173,0144,0003,0037,0101,0216,0022,0040,0226,0046,0304,0377,0001,0327,0315,0323,
+0307,0213,0126,0164,0043,0106,0015,0233,0357,0227,0052,0201,0235,0047,0156,0043,
+0304,0254,0000,0363,0143,0355,0174,0234,0220,0364,0066,0236,0006,0152,0015,0203,
+0142,0074,0262,0033,0045,0043,0264,0042,0335,0345,0342,0341,0323,0065,0345,0100,
+0216,0220,0333,0016,0233,0163,0167,0147,0072,0263,0304,0306,0232,0101,0166,0264,
+0207,0150,0361,0321,0222,0122,0023,0312,0367,0111,0214,0237,0147,0227,0031,0347,
+0075,0303,0210,0001,0073,0170,0264,0316,0005,0050,0175,0220,0150,0225,0022,0107,
+0122,0237,0172,0104,0233,0110,0164,0350,0013,0007,0126,0236,0265,0363,0221,0132,
+0331,0234,0221,0163,0254,0136,0302,0173,0275,0064,0123,0073,0124,0060,0247,0003,
+0276,0227,0265,0136,0321,0023,0331,0015,0365,0262,0346,0141,0346,0012,0052,0005,
+0203,0220,0216,0362,0031,0116,0327,0041,0137,0130,0217,0064,0227,0277,0221,0057,
+0165,0150,0035,0364,0372,0067,0350,0056,0057,0263,0041,0205,0332,0311,0206,0214,
+0131,0120,0274,0221,0103,0045,0364,0341,0100,0040,0003,0014,0004,0202,0014,0146,
+0326,0001,0304,0220,0215,0222,0216,0303,0073,0341,0263,0056,0372,0031,0261,0324,
+0020,0112,0041,0306,0264,0134,0123,0122,0316,0354,0054,0065,0006,0334,0146,0242,
+0310,0223,0317,0210,0366,0025,0027,0354,0010,0041,0352,0210,0174,0121,0104,0014,
+0235,0330,0160,0325,0066,0333,0071,0242,0025,0152,0322,0057,0165,0004,0124,0251,
+0020,0330,0064,0133,0170,0303,0240,0213,0064,0263,0027,0104,0145,0247,0253,0111,
+0230,0103,0010,0050,0067,0103,0275,0124,0302,0106,0123,0104,0042,0022,0104,0357,
+0333,0247,0301,0111,0005,0305,0365,0236,0376,0257,0243,0174,0013,0076,0107,0311,
+0222,0106,0116,0266,0233,0157,0030,0120,0256,0330,0235,0251,0147,0062,0023,0341,
+0142,0323,0263,0000,0350,0255,0271,0330,0225,0022,0131,0157,0331,0152,0044,0365,
+0277,0241,0243,0274,0144,0035,0361,0172,0352,0355,0255,0254,0351,0100,0335,0153,
+0050,0365,0266,0316,0370,0210,0110,0027,0074,0337,0220,0061,0345,0101,0367,0304,
+0353,0363,0122,0100,0263,0215,0132,0345,0170,0350,0331,0334,0017,0003,0104,0064,
+0156,0152,0307,0120,0245,0264,0305,0064,0356,0341,0016,0147,0230,0313,0246,0000,
+0153,0025,0106,0060,0302,0110,0271,0012,0351,0227,0143,0201,0104,0175,0037,0167,
+0300,0056,0353,0325,0244,0306,0215,0347,0030,0323,0234,0356,0351,0320,0342,0111,
+0050,0042,0221,0050,0257,0047,0120,0066,0063,0335,0237,0103,0073,0350,0131,0217,
+0051,0337,0260,0163,0240,0350,0044,0344,0313,0132,0274,0010,0230,0113,0270,0103,
+0144,0026,0227,0022,0261,0001,0135,0301,0117,0030,0272,0054,0315,0030,0304,0321,
+0253,0005,0231,0157,0267,0047,0214,0352,0221,0060,0170,0153,0274,0146,0163,0244,
+0030,0152,0346,0301,0020,0341,0241,0025,0202,0112,0111,0352,0143,0150,0015,0034,
+0066,0114,0006,0276,0111,0077,0257,0343,0366,0067,0104,0102,0003,0301,0003,0217,
+0011,0155,0311,0047,0246,0161,0371,0301,0037,0144,0103,0302,0200,0237,0120,0220,
+0151,0257,0263,0010,0367,0356,0211,0052,0261,0365,0026,0263,0270,0107,0036,0156,
+0265,0232,0102,0216,0071,0332,0261,0216,0127,0310,0024,0113,0042,0027,0113,0311,
+0232,0027,0264,0102,0312,0131,0363,0266,0364,0101,0050,0345,0103,0032,0202,0050,
+0350,0365,0062,0015,0044,0121,0347,0316,0046,0322,0255,0050,0113,0013,0311,0227,
+0027,0272,0316,0157,0142,0043,0213,0265,0157,0105,0300,0141,0047,0235,0145,0070,
+0240,0054,0354,0325,0244,0226,0245,0051,0066,0342,0264,0355,0042,0346,0345,0315,
+0057,0212,0120,0044,0346,0002,0020,0232,0065,0150,0065,0041,0063,0066,0055,0230,
+0154,0304,0020,0202,0265,0104,0002,0345,0020,0356,0246,0150,0060,0277,0105,0266,
+0260,0042,0221,0226,0147,0121,0230,0153,0300,0111,0261,0011,0216,0132,0105,0363,
+0164,0005,0105,0135,0232,0320,0006,0340,0372,0041,0355,0041,0170,0324,0206,0304,
+0347,0066,0036,0241,0264,0173,0260,0375,0342,0117,0106,0300,0060,0066,0236,0010,
+0251,0027,0266,0220,0153,0304,0335,0207,0310,0200,0361,0372,0134,0357,0270,0037,
+0273,0164,0264,0006,0135,0064,0356,0324,0050,0153,0047,0315,0240,0204,0020,0324,
+0020,0352,0373,0310,0261,0174,0077,0220,0207,0206,0056,0155,0217,0264,0027,0325,
+0204,0121,0253,0033,0332,0321,0040,0111,0216,0317,0321,0011,0225,0341,0231,0314,
+0301,0057,0150,0040,0063,0027,0100,0010,0117,0214,0266,0306,0302,0312,0141,0151,
+0251,0265,0021,0347,0011,0204,0143,0220,0371,0025,0066,0004,0336,0023,0332,0223,
+0202,0136,0360,0141,0005,0035,0240,0101,0235,0361,0174,0104,0321,0270,0315,0220,
+0275,0355,0003,0053,0025,0206,0116,0342,0234,0030,0304,0103,0251,0021,0012,0204,
+0371,0207,0367,0033,0277,0341,0354,0024,0127,0053,0256,0154,0222,0326,0174,0201,
+0056,0232,0315,0151,0371,0114,0032,0253,0044,0073,0351,0253,0176,0357,0312,0117,
+0246,0057,0170,0111,0034,0030,0025,0255,0245,0046,0151,0262,0211,0005,0372,0070,
+0144,0216,0027,0102,0120,0160,0377,0032,0026,0134,0334,0066,0274,0175,0236,0171,
+0371,0300,0215,0120,0213,0140,0147,0326,0001,0044,0012,0142,0073,0162,0026,0211,
+0326,0260,0302,0006,0012,0162,0040,0205,0336,0072,0132,0107,0265,0262,0331,0240,
+0362,0266,0066,0324,0220,0257,0254,0122,0330,0130,0067,0042,0034,0251,0161,0303,
+0241,0000,0103,0373,0055,0210,0173,0134,0131,0234,0337,0047,0050,0133,0241,0140,
+0305,0005,0151,0111,0065,0151,0126,0041,0007,0146,0011,0275,0156,0314,0224,0111,
+0026,0140,0153,0313,0221,0056,0203,0303,0032,0346,0373,0301,0251,0227,0221,0151,
+0011,0135,0071,0060,0333,0156,0064,0170,0150,0054,0324,0102,0202,0236,0224,0306,
+0205,0074,0305,0007,0054,0204,0157,0365,0023,0131,0266,0235,0142,0112,0143,0210,
+0272,0054,0350,0124,0341,0313,0110,0220,0130,0001,0150,0034,0123,0232,0006,0126,
+0070,0007,0334,0250,0053,0220,0264,0350,0252,0121,0332,0103,0304,0273,0225,0256,
+0125,0364,0365,0130,0262,0115,0027,0120,0103,0000,0322,0064,0313,0216,0257,0047,
+0306,0151,0271,0356,0242,0171,0020,0332,0126,0324,0022,0025,0020,0226,0107,0236,
+0261,0003,0275,0160,0063,0131,0223,0247,0371,0063,0002,0072,0010,0357,0314,0205,
+0242,0364,0313,0222,0111,0303,0161,0103,0001,0303,0061,0331,0166,0234,0355,0225,
+0172,0042,0350,0116,0104,0062,0210,0160,0010,0055,0045,0030,0133,0104,0071,0025,
+0116,0340,0230,0305,0235,0214,0134,0334,0320,0027,0142,0244,0334,0205,0151,0160,
+0376,0016,0046,0001,0204,0011,0307,0115,0326,0321,0251,0022,0102,0020,0300,0130,
+0341,0121,0105,0347,0226,0216,0323,0024,0126,0352,0173,0176,0350,0351,0223,0067,
+0253,0372,0043,0257,0255,0373,0226,0073,0250,0252,0237,0212,0016,0045,0210,0212,
+0176,0204,0313,0021,0142,0110,0231,0154,0074,0266,0122,0045,0213,0100,0354,0202,
+0235,0236,0172,0335,0371,0312,0330,0321,0336,0023,0226,0004,0231,0114,0203,0302,
+0372,0106,0357,0016,0021,0107,0303,0240,0170,0115,0147,0336,0303,0342,0104,0000,
+0017,0142,0215,0132,0235,0243,0156,0214,0120,0211,0341,0376,0174,0052,0232,0271,
+0050,0155,0075,0272,0026,0353,0305,0200,0306,0057,0324,0017,0012,0327,0115,0255,
+0141,0254,0107,0256,0226,0141,0002,0001,0045,0020,0111,0000,0311,0045,0343,0155,
+0210,0011,0015,0314,0060,0051,0016,0025,0101,0325,0013,0357,0014,0131,0064,0022,
+0114,0156,0350,0204,0353,0301,0367,0346,0061,0214,0207,0242,0336,0257,0175,0244,
+0232,0110,0121,0347,0160,0356,0115,0060,0050,0065,0325,0155,0126,0212,0232,0315,
+0244,0011,0140,0330,0104,0260,0001,0064,0036,0366,0131,0023,0233,0205,0024,0101,
+0004,0070,0033,0103,0247,0015,0212,0361,0010,0151,0211,0266,0015,0205,0252,0266,
+0266,0365,0165,0206,0250,0143,0030,0106,0134,0215,0245,0030,0215,0011,0141,0054,
+0356,0341,0142,0242,0010,0305,0143,0327,0325,0172,0172,0134,0021,0340,0166,0174,
+0315,0307,0213,0113,0000,0104,0337,0213,0212,0216,0344,0155,0156,0116,0004,0057,
+0144,0026,0273,0240,0136,0171,0054,0040,0163,0166,0271,0303,0134,0345,0045,0172,
+0323,0265,0031,0320,0327,0202,0262,0275,0260,0122,0020,0261,0201,0000,0065,0225,
+0110,0305,0047,0004,0231,0324,0252,0212,0271,0210,0352,0140,0334,0202,0300,0203,
+0224,0247,0205,0150,0105,0230,0236,0356,0054,0350,0301,0041,0174,0040,0340,0020,
+0300,0301,0012,0022,0335,0053,0040,0210,0142,0073,0231,0230,0106,0234,0246,0064,
+0011,0167,0154,0220,0205,0273,0273,0063,0215,0122,0116,0163,0071,0126,0350,0000,
+0025,0060,0205,0272,0111,0373,0117,0015,0056,0040,0267,0262,0005,0036,0322,0262,
+0244,0071,0040,0267,0045,0205,0030,0061,0301,0027,0164,0016,0020,0123,0123,0017,
+0016,0125,0101,0262,0161,0002,0213,0260,0224,0076,0075,0321,0225,0334,0132,0242,
+0006,0010,0273,0371,0172,0075,0045,0050,0274,0027,0171,0336,0275,0003,0006,0345,
+0002,0060,0212,0144,0155,0154,0314,0223,0062,0223,0027,0110,0261,0044,0030,0043,
+0271,0243,0150,0160,0045,0206,0275,0220,0241,0334,0243,0265,0056,0166,0346,0065,
+0071,0042,0344,0023,0011,0007,0055,0104,0274,0077,0335,0040,0165,0015,0074,0367,
+0332,0244,0246,0114,0020,0055,0076,0334,0062,0176,0044,0161,0262,0073,0175,0352,
+0150,0320,0043,0147,0010,0351,0311,0271,0325,0004,0164,0221,0235,0150,0010,0120,
+0357,0276,0175,0353,0063,0172,0331,0242,0033,0010,0333,0332,0106,0130,0344,0335,
+0063,0001,0302,0346,0357,0077,0063,0045,0331,0045,0304,0214,0253,0304,0216,0264,
+0235,0230,0022,0101,0224,0310,0017,0150,0153,0305,0133,0244,0201,0244,0164,0347,
+0326,0371,0265,0360,0334,0216,0002,0220,0354,0105,0014,0073,0036,0220,0073,0044,
+0232,0357,0264,0207,0014,0110,0214,0046,0114,0110,0060,0121,0271,0010,0215,0213,
+0062,0322,0316,0220,0271,0220,0347,0156,0332,0252,0266,0120,0014,0307,0133,0350,
+0115,0030,0143,0217,0127,0167,0102,0051,0210,0041,0005,0024,0101,0023,0130,0003,
+0263,0241,0030,0140,0040,0045,0242,0342,0252,0032,0361,0143,0002,0310,0006,0061,
+0060,0232,0307,0303,0337,0342,0036,0357,0147,0317,0363,0372,0377,0143,0035,0125,
+0325,0126,0372,0016,0234,0175,0142,0373,0051,0373,0206,0177,0154,0010,0040,0200,
+0066,0273,0201,0221,0370,0335,0176,0101,0322,0010,0041,0001,0337,0355,0143,0115,
+0243,0076,0154,0177,0335,0155,0221,0010,0100,0107,0276,0063,0342,0075,0176,0326,
+0020,0204,0004,0137,0303,0071,0065,0071,0375,0152,0357,0137,0337,0344,0102,0020,
+0034,0127,0352,0155,0320,0204,0040,0067,0375,0261,0127,0020,0204,0006,0242,0020,
+0200,0323,0347,0043,0373,0167,0137,0236,0232,0176,0242,0100,0203,0037,0376,0056,
+0344,0212,0160,0241,0041,0331,0247,0112,0162,
};
#endif
diff --git a/include-minimal/usage_compressed.h b/include-minimal/usage_compressed.h
index 6a8d417..c800a2d 100644
--- a/include-minimal/usage_compressed.h
+++ b/include-minimal/usage_compressed.h
@@ -1,2993 +1,2948 @@
#define UNPACKED_USAGE "" \
-"\x45\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x20\x5d\x0a\x0a\x43\x68" \
-"\x65\x63\x6b\x20\x66\x69\x6c\x65\x20\x74\x79\x70\x65\x73\x2c\x20" \
-"\x63\x6f\x6d\x70\x61\x72\x65\x20\x76\x61\x6c\x75\x65\x73\x20\x65" \
-"\x74\x63\x2e\x20\x52\x65\x74\x75\x72\x6e\x20\x61\x20\x30\x2f\x31" \
-"\x20\x65\x78\x69\x74\x20\x63\x6f\x64\x65\x0a\x64\x65\x70\x65\x6e" \
-"\x64\x69\x6e\x67\x20\x6f\x6e\x20\x6c\x6f\x67\x69\x63\x61\x6c\x20" \
-"\x76\x61\x6c\x75\x65\x20\x6f\x66\x20\x45\x58\x50\x52\x45\x53\x53" \
-"\x49\x4f\x4e\x00\x45\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x20\x5d" \
-"\x0a\x0a\x43\x68\x65\x63\x6b\x20\x66\x69\x6c\x65\x20\x74\x79\x70" \
-"\x65\x73\x2c\x20\x63\x6f\x6d\x70\x61\x72\x65\x20\x76\x61\x6c\x75" \
-"\x65\x73\x20\x65\x74\x63\x2e\x20\x52\x65\x74\x75\x72\x6e\x20\x61" \
-"\x20\x30\x2f\x31\x20\x65\x78\x69\x74\x20\x63\x6f\x64\x65\x0a\x64" \
-"\x65\x70\x65\x6e\x64\x69\x6e\x67\x20\x6f\x6e\x20\x6c\x6f\x67\x69" \
-"\x63\x61\x6c\x20\x76\x61\x6c\x75\x65\x20\x6f\x66\x20\x45\x58\x50" \
-"\x52\x45\x53\x53\x49\x4f\x4e\x00\x5b\x2d\x2f\x2b\x4f\x50\x54\x49" \
-"\x4f\x4e\x53\x5d\x20\x5b\x2d\x2f\x2b\x6f\x20\x4f\x50\x54\x5d\x2e" \
-"\x2e\x2e\x20\x5b\x2d\x63\x20\x27\x53\x43\x52\x49\x50\x54\x27\x20" \
-"\x5b\x41\x52\x47\x30\x20\x5b\x41\x52\x47\x53\x5d\x5d\x20\x2f\x20" \
-"\x46\x49\x4c\x45\x20\x5b\x41\x52\x47\x53\x5d\x5d\x0a\x0a\x55\x6e" \
-"\x69\x78\x20\x73\x68\x65\x6c\x6c\x20\x69\x6e\x74\x65\x72\x70\x72" \
-"\x65\x74\x65\x72\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b" \
-"\x41\x57\x4b\x5f\x50\x52\x4f\x47\x52\x41\x4d\x5d\x20\x5b\x46\x49" \
-"\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x09\x2d\x76\x20\x56\x41\x52\x3d" \
-"\x56\x41\x4c\x09\x53\x65\x74\x20\x76\x61\x72\x69\x61\x62\x6c\x65" \
-"\x0a\x09\x2d\x46\x20\x53\x45\x50\x09\x09\x55\x73\x65\x20\x53\x45" \
-"\x50\x20\x61\x73\x20\x66\x69\x65\x6c\x64\x20\x73\x65\x70\x61\x72" \
-"\x61\x74\x6f\x72\x0a\x09\x2d\x66\x20\x46\x49\x4c\x45\x09\x09\x52" \
-"\x65\x61\x64\x20\x70\x72\x6f\x67\x72\x61\x6d\x20\x66\x72\x6f\x6d" \
-"\x20\x46\x49\x4c\x45\x00\x5b\x2d\x64\x5d\x20\x5b\x46\x49\x4c\x45" \
-"\x5d\x0a\x0a\x42\x61\x73\x65\x36\x34\x20\x65\x6e\x63\x6f\x64\x65" \
-"\x20\x6f\x72\x20\x64\x65\x63\x6f\x64\x65\x20\x46\x49\x4c\x45\x20" \
-"\x74\x6f\x20\x73\x74\x61\x6e\x64\x61\x72\x64\x20\x6f\x75\x74\x70" \
-"\x75\x74\x0a\x09\x2d\x64\x09\x44\x65\x63\x6f\x64\x65\x20\x64\x61" \
-"\x74\x61\x00\x46\x49\x4c\x45\x20\x5b\x53\x55\x46\x46\x49\x58\x5d" \
-"\x0a\x0a\x53\x74\x72\x69\x70\x20\x64\x69\x72\x65\x63\x74\x6f\x72" \
-"\x79\x20\x70\x61\x74\x68\x20\x61\x6e\x64\x20\x2e\x53\x55\x46\x46" \
-"\x49\x58\x20\x66\x72\x6f\x6d\x20\x46\x49\x4c\x45\x0a\x00\x0a\x0a" \
-"\x50\x72\x69\x6e\x74\x20\x74\x68\x65\x20\x63\x6f\x6e\x66\x69\x67" \
-"\x20\x66\x69\x6c\x65\x20\x75\x73\x65\x64\x20\x62\x79\x20\x62\x75" \
-"\x73\x79\x62\x6f\x78\x20\x62\x75\x69\x6c\x64\x00\x5b\x42\x4c\x4f" \
-"\x43\x4b\x44\x45\x56\x5d\x2e\x2e\x2e\x0a\x0a\x50\x72\x69\x6e\x74" \
-"\x20\x55\x55\x49\x44\x73\x20\x6f\x66\x20\x61\x6c\x6c\x20\x66\x69" \
-"\x6c\x65\x73\x79\x73\x74\x65\x6d\x73\x00\x4f\x50\x54\x49\x4f\x4e" \
-"\x20\x42\x4c\x4f\x43\x4b\x44\x45\x56\x0a\x0a\x09\x2d\x2d\x73\x65" \
-"\x74\x72\x6f\x09\x09\x53\x65\x74\x20\x72\x6f\x0a\x09\x2d\x2d\x73" \
-"\x65\x74\x72\x77\x09\x09\x53\x65\x74\x20\x72\x77\x0a\x09\x2d\x2d" \
-"\x67\x65\x74\x72\x6f\x09\x09\x47\x65\x74\x20\x72\x6f\x0a\x09\x2d" \
-"\x2d\x67\x65\x74\x73\x73\x09\x09\x47\x65\x74\x20\x73\x65\x63\x74" \
-"\x6f\x72\x20\x73\x69\x7a\x65\x0a\x09\x2d\x2d\x67\x65\x74\x62\x73" \
-"\x7a\x09\x47\x65\x74\x20\x62\x6c\x6f\x63\x6b\x20\x73\x69\x7a\x65" \
-"\x0a\x09\x2d\x2d\x73\x65\x74\x62\x73\x7a\x20\x42\x59\x54\x45\x53" \
-"\x09\x53\x65\x74\x20\x62\x6c\x6f\x63\x6b\x20\x73\x69\x7a\x65\x0a" \
-"\x09\x2d\x2d\x67\x65\x74\x73\x7a\x09\x09\x47\x65\x74\x20\x64\x65" \
-"\x76\x69\x63\x65\x20\x73\x69\x7a\x65\x20\x69\x6e\x20\x35\x31\x32" \
-"\x2d\x62\x79\x74\x65\x20\x73\x65\x63\x74\x6f\x72\x73\x0a\x09\x2d" \
-"\x2d\x67\x65\x74\x73\x69\x7a\x65\x36\x34\x09\x47\x65\x74\x20\x64" \
-"\x65\x76\x69\x63\x65\x20\x73\x69\x7a\x65\x20\x69\x6e\x20\x62\x79" \
-"\x74\x65\x73\x0a\x09\x2d\x2d\x66\x6c\x75\x73\x68\x62\x75\x66\x73" \
-"\x09\x46\x6c\x75\x73\x68\x20\x62\x75\x66\x66\x65\x72\x73\x0a\x09" \
-"\x2d\x2d\x72\x65\x72\x65\x61\x64\x70\x74\x09\x52\x65\x72\x65\x61" \
-"\x64\x20\x70\x61\x72\x74\x69\x74\x69\x6f\x6e\x20\x74\x61\x62\x6c" \
-"\x65\x00\x5b\x2d\x63\x66\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e" \
-"\x2e\x0a\x0a\x44\x65\x63\x6f\x6d\x70\x72\x65\x73\x73\x20\x46\x49" \
-"\x4c\x45\x73\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x0a\x0a" \
-"\x09\x2d\x63\x09\x57\x72\x69\x74\x65\x20\x74\x6f\x20\x73\x74\x64" \
-"\x6f\x75\x74\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x00\x46\x49" \
-"\x4c\x45\x0a\x0a\x44\x65\x63\x6f\x6d\x70\x72\x65\x73\x73\x20\x74" \
-"\x6f\x20\x73\x74\x64\x6f\x75\x74\x00\x5b\x4f\x50\x54\x49\x4f\x4e" \
-"\x53\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x6f" \
-"\x6d\x70\x72\x65\x73\x73\x20\x46\x49\x4c\x45\x73\x20\x28\x6f\x72" \
-"\x20\x73\x74\x64\x69\x6e\x29\x20\x77\x69\x74\x68\x20\x62\x7a\x69" \
-"\x70\x32\x20\x61\x6c\x67\x6f\x72\x69\x74\x68\x6d\x0a\x0a\x09\x2d" \
-"\x31\x2e\x2e\x39\x09\x43\x6f\x6d\x70\x72\x65\x73\x73\x69\x6f\x6e" \
-"\x20\x6c\x65\x76\x65\x6c\x0a\x09\x2d\x64\x09\x44\x65\x63\x6f\x6d" \
-"\x70\x72\x65\x73\x73\x0a\x09\x2d\x63\x09\x57\x72\x69\x74\x65\x20" \
-"\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x2d\x66\x09\x46\x6f" \
-"\x72\x63\x65\x00\x5b\x2d\x6a\x79\x5d\x20\x5b\x5b\x4d\x4f\x4e\x54" \
-"\x48\x5d\x20\x59\x45\x41\x52\x5d\x0a\x0a\x44\x69\x73\x70\x6c\x61" \
-"\x79\x20\x61\x20\x63\x61\x6c\x65\x6e\x64\x61\x72\x0a\x0a\x09\x2d" \
-"\x6a\x09\x55\x73\x65\x20\x6a\x75\x6c\x69\x61\x6e\x20\x64\x61\x74" \
-"\x65\x73\x0a\x09\x2d\x79\x09\x44\x69\x73\x70\x6c\x61\x79\x20\x74" \
-"\x68\x65\x20\x65\x6e\x74\x69\x72\x65\x20\x79\x65\x61\x72\x00\x5b" \
-"\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x6f\x6e\x63\x61\x74" \
-"\x65\x6e\x61\x74\x65\x20\x46\x49\x4c\x45\x73\x20\x61\x6e\x64\x20" \
-"\x70\x72\x69\x6e\x74\x20\x74\x68\x65\x6d\x20\x74\x6f\x20\x73\x74" \
-"\x64\x6f\x75\x74\x00\x5b\x2d\x65\x74\x76\x5d\x20\x5b\x46\x49\x4c" \
-"\x45\x5d\x2e\x2e\x2e\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x6e" \
-"\x6f\x6e\x70\x72\x69\x6e\x74\x69\x6e\x67\x20\x63\x68\x61\x72\x61" \
-"\x63\x74\x65\x72\x73\x20\x61\x73\x20\x5e\x78\x20\x6f\x72\x20\x4d" \
-"\x2d\x78\x0a\x0a\x09\x2d\x65\x09\x45\x6e\x64\x20\x65\x61\x63\x68" \
-"\x20\x6c\x69\x6e\x65\x20\x77\x69\x74\x68\x20\x24\x0a\x09\x2d\x74" \
-"\x09\x53\x68\x6f\x77\x20\x74\x61\x62\x73\x20\x61\x73\x20\x5e\x49" \
-"\x0a\x09\x2d\x76\x09\x44\x6f\x6e\x27\x74\x20\x75\x73\x65\x20\x5e" \
-"\x78\x20\x6f\x72\x20\x4d\x2d\x78\x20\x65\x73\x63\x61\x70\x65\x73" \
-"\x00\x5b\x2d\x52\x5d\x20\x5b\x2d\x2b\x3d\x41\x61\x63\x44\x64\x69" \
-"\x6a\x73\x53\x74\x54\x75\x5d\x20\x5b\x2d\x76\x20\x56\x45\x52\x53" \
-"\x49\x4f\x4e\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a" \
-"\x43\x68\x61\x6e\x67\x65\x20\x66\x69\x6c\x65\x20\x61\x74\x74\x72" \
-"\x69\x62\x75\x74\x65\x73\x20\x6f\x6e\x20\x61\x6e\x20\x65\x78\x74" \
-"\x32\x20\x66\x73\x0a\x0a\x4d\x6f\x64\x69\x66\x69\x65\x72\x73\x3a" \
-"\x0a\x09\x2d\x09\x52\x65\x6d\x6f\x76\x65\x20\x61\x74\x74\x72\x69" \
-"\x62\x75\x74\x65\x73\x0a\x09\x2b\x09\x41\x64\x64\x20\x61\x74\x74" \
-"\x72\x69\x62\x75\x74\x65\x73\x0a\x09\x3d\x09\x53\x65\x74\x20\x61" \
-"\x74\x74\x72\x69\x62\x75\x74\x65\x73\x0a\x41\x74\x74\x72\x69\x62" \
-"\x75\x74\x65\x73\x3a\x0a\x09\x41\x09\x44\x6f\x6e\x27\x74\x20\x74" \
-"\x72\x61\x63\x6b\x20\x61\x74\x69\x6d\x65\x0a\x09\x61\x09\x41\x70" \
-"\x70\x65\x6e\x64\x20\x6d\x6f\x64\x65\x20\x6f\x6e\x6c\x79\x0a\x09" \
-"\x63\x09\x45\x6e\x61\x62\x6c\x65\x20\x63\x6f\x6d\x70\x72\x65\x73" \
-"\x73\x0a\x09\x44\x09\x57\x72\x69\x74\x65\x20\x64\x69\x72\x20\x63" \
-"\x6f\x6e\x74\x65\x6e\x74\x73\x20\x73\x79\x6e\x63\x68\x72\x6f\x6e" \
-"\x6f\x75\x73\x6c\x79\x0a\x09\x64\x09\x44\x6f\x6e\x27\x74\x20\x62" \
-"\x61\x63\x6b\x75\x70\x20\x77\x69\x74\x68\x20\x64\x75\x6d\x70\x0a" \
-"\x09\x69\x09\x43\x61\x6e\x6e\x6f\x74\x20\x62\x65\x20\x6d\x6f\x64" \
-"\x69\x66\x69\x65\x64\x20\x28\x69\x6d\x6d\x75\x74\x61\x62\x6c\x65" \
-"\x29\x0a\x09\x6a\x09\x57\x72\x69\x74\x65\x20\x61\x6c\x6c\x20\x64" \
-"\x61\x74\x61\x20\x74\x6f\x20\x6a\x6f\x75\x72\x6e\x61\x6c\x20\x66" \
-"\x69\x72\x73\x74\x0a\x09\x73\x09\x5a\x65\x72\x6f\x20\x64\x69\x73" \
-"\x6b\x20\x73\x74\x6f\x72\x61\x67\x65\x20\x77\x68\x65\x6e\x20\x64" \
-"\x65\x6c\x65\x74\x65\x64\x0a\x09\x53\x09\x57\x72\x69\x74\x65\x20" \
-"\x66\x69\x6c\x65\x20\x63\x6f\x6e\x74\x65\x6e\x74\x73\x20\x73\x79" \
-"\x6e\x63\x68\x72\x6f\x6e\x6f\x75\x73\x6c\x79\x0a\x09\x74\x09\x44" \
-"\x69\x73\x61\x62\x6c\x65\x20\x74\x61\x69\x6c\x2d\x6d\x65\x72\x67" \
-"\x69\x6e\x67\x20\x6f\x66\x20\x70\x61\x72\x74\x69\x61\x6c\x20\x62" \
-"\x6c\x6f\x63\x6b\x73\x20\x77\x69\x74\x68\x20\x6f\x74\x68\x65\x72" \
-"\x20\x66\x69\x6c\x65\x73\x0a\x09\x75\x09\x41\x6c\x6c\x6f\x77\x20" \
-"\x66\x69\x6c\x65\x20\x74\x6f\x20\x62\x65\x20\x75\x6e\x64\x65\x6c" \
-"\x65\x74\x65\x64\x0a\x09\x2d\x52\x09\x52\x65\x63\x75\x72\x73\x65" \
-"\x0a\x09\x2d\x76\x09\x53\x65\x74\x20\x74\x68\x65\x20\x66\x69\x6c" \
-"\x65\x27\x73\x20\x76\x65\x72\x73\x69\x6f\x6e\x2f\x67\x65\x6e\x65" \
-"\x72\x61\x74\x69\x6f\x6e\x20\x6e\x75\x6d\x62\x65\x72\x00\x5b\x2d" \
-"\x52\x68\x4c\x48\x50\x5d\x2e\x2e\x2e\x20\x47\x52\x4f\x55\x50\x20" \
-"\x46\x49\x4c\x45\x2e\x2e\x2e\x0a\x0a\x43\x68\x61\x6e\x67\x65\x20" \
-"\x74\x68\x65\x20\x67\x72\x6f\x75\x70\x20\x6d\x65\x6d\x62\x65\x72" \
-"\x73\x68\x69\x70\x20\x6f\x66\x20\x65\x61\x63\x68\x20\x46\x49\x4c" \
-"\x45\x20\x74\x6f\x20\x47\x52\x4f\x55\x50\x0a\x0a\x09\x2d\x52\x09" \
-"\x52\x65\x63\x75\x72\x73\x65\x0a\x09\x2d\x68\x09\x41\x66\x66\x65" \
-"\x63\x74\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20\x69\x6e\x73\x74" \
-"\x65\x61\x64\x20\x6f\x66\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x20\x74" \
-"\x61\x72\x67\x65\x74\x73\x0a\x09\x2d\x4c\x09\x54\x72\x61\x76\x65" \
-"\x72\x73\x65\x20\x61\x6c\x6c\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73" \
-"\x20\x74\x6f\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x0a" \
-"\x09\x2d\x48\x09\x54\x72\x61\x76\x65\x72\x73\x65\x20\x73\x79\x6d" \
-"\x6c\x69\x6e\x6b\x73\x20\x6f\x6e\x20\x63\x6f\x6d\x6d\x61\x6e\x64" \
-"\x20\x6c\x69\x6e\x65\x20\x6f\x6e\x6c\x79\x0a\x09\x2d\x50\x09\x44" \
-"\x6f\x6e\x27\x74\x20\x74\x72\x61\x76\x65\x72\x73\x65\x20\x73\x79" \
-"\x6d\x6c\x69\x6e\x6b\x73\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29" \
-"\x00\x5b\x2d\x52\x5d\x20\x4d\x4f\x44\x45\x5b\x2c\x4d\x4f\x44\x45" \
-"\x5d\x2e\x2e\x2e\x20\x46\x49\x4c\x45\x2e\x2e\x2e\x0a\x0a\x45\x61" \
-"\x63\x68\x20\x4d\x4f\x44\x45\x20\x69\x73\x20\x6f\x6e\x65\x20\x6f" \
-"\x72\x20\x6d\x6f\x72\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x6c\x65" \
-"\x74\x74\x65\x72\x73\x20\x75\x67\x6f\x61\x2c\x20\x6f\x6e\x65\x20" \
-"\x6f\x66\x20\x74\x68\x65\x0a\x73\x79\x6d\x62\x6f\x6c\x73\x20\x2b" \
-"\x2d\x3d\x20\x61\x6e\x64\x20\x6f\x6e\x65\x20\x6f\x72\x20\x6d\x6f" \
-"\x72\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x6c\x65\x74\x74\x65\x72" \
-"\x73\x20\x72\x77\x78\x73\x74\x0a\x0a\x09\x2d\x52\x09\x52\x65\x63" \
-"\x75\x72\x73\x65\x00\x5b\x2d\x52\x68\x4c\x48\x50\x5d\x2e\x2e\x2e" \
-"\x20\x4f\x57\x4e\x45\x52\x5b\x3c\x2e\x7c\x3a\x3e\x5b\x47\x52\x4f" \
-"\x55\x50\x5d\x5d\x20\x46\x49\x4c\x45\x2e\x2e\x2e\x0a\x0a\x43\x68" \
-"\x61\x6e\x67\x65\x20\x74\x68\x65\x20\x6f\x77\x6e\x65\x72\x20\x61" \
-"\x6e\x64\x2f\x6f\x72\x20\x67\x72\x6f\x75\x70\x20\x6f\x66\x20\x65" \
-"\x61\x63\x68\x20\x46\x49\x4c\x45\x20\x74\x6f\x20\x4f\x57\x4e\x45" \
-"\x52\x20\x61\x6e\x64\x2f\x6f\x72\x20\x47\x52\x4f\x55\x50\x0a\x0a" \
-"\x09\x2d\x52\x09\x52\x65\x63\x75\x72\x73\x65\x0a\x09\x2d\x68\x09" \
-"\x41\x66\x66\x65\x63\x74\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20" \
-"\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x73\x79\x6d\x6c\x69" \
-"\x6e\x6b\x20\x74\x61\x72\x67\x65\x74\x73\x0a\x09\x2d\x4c\x09\x54" \
-"\x72\x61\x76\x65\x72\x73\x65\x20\x61\x6c\x6c\x20\x73\x79\x6d\x6c" \
-"\x69\x6e\x6b\x73\x20\x74\x6f\x20\x64\x69\x72\x65\x63\x74\x6f\x72" \
-"\x69\x65\x73\x0a\x09\x2d\x48\x09\x54\x72\x61\x76\x65\x72\x73\x65" \
-"\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20\x6f\x6e\x20\x63\x6f\x6d" \
-"\x6d\x61\x6e\x64\x20\x6c\x69\x6e\x65\x20\x6f\x6e\x6c\x79\x0a\x09" \
-"\x2d\x50\x09\x44\x6f\x6e\x27\x74\x20\x74\x72\x61\x76\x65\x72\x73" \
-"\x65\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20\x28\x64\x65\x66\x61" \
-"\x75\x6c\x74\x29\x00\x4e\x45\x57\x52\x4f\x4f\x54\x20\x5b\x50\x52" \
-"\x4f\x47\x20\x41\x52\x47\x53\x5d\x0a\x0a\x52\x75\x6e\x20\x50\x52" \
-"\x4f\x47\x20\x77\x69\x74\x68\x20\x72\x6f\x6f\x74\x20\x64\x69\x72" \
-"\x65\x63\x74\x6f\x72\x79\x20\x73\x65\x74\x20\x74\x6f\x20\x4e\x45" \
-"\x57\x52\x4f\x4f\x54\x00\x0a\x0a\x43\x6c\x65\x61\x72\x20\x73\x63" \
-"\x72\x65\x65\x6e\x00\x5b\x2d\x6c\x5d\x20\x5b\x2d\x73\x5d\x20\x46" \
-"\x49\x4c\x45\x31\x20\x5b\x46\x49\x4c\x45\x32\x5d\x0a\x0a\x43\x6f" \
-"\x6d\x70\x61\x72\x65\x20\x46\x49\x4c\x45\x31\x20\x77\x69\x74\x68" \
-"\x20\x46\x49\x4c\x45\x32\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e" \
-"\x29\x0a\x0a\x09\x2d\x6c\x09\x57\x72\x69\x74\x65\x20\x74\x68\x65" \
-"\x20\x62\x79\x74\x65\x20\x6e\x75\x6d\x62\x65\x72\x73\x20\x28\x64" \
-"\x65\x63\x69\x6d\x61\x6c\x29\x20\x61\x6e\x64\x20\x76\x61\x6c\x75" \
-"\x65\x73\x20\x28\x6f\x63\x74\x61\x6c\x29\x0a\x09\x09\x66\x6f\x72" \
-"\x20\x61\x6c\x6c\x20\x64\x69\x66\x66\x65\x72\x69\x6e\x67\x20\x62" \
-"\x79\x74\x65\x73\x0a\x09\x2d\x73\x09\x51\x75\x69\x65\x74\x00\x5b" \
-"\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x53\x4f\x55\x52\x43\x45\x2e" \
-"\x2e\x2e\x20\x44\x45\x53\x54\x0a\x0a\x43\x6f\x70\x79\x20\x53\x4f" \
-"\x55\x52\x43\x45\x28\x73\x29\x20\x74\x6f\x20\x44\x45\x53\x54\x0a" \
-"\x0a\x09\x2d\x61\x09\x53\x61\x6d\x65\x20\x61\x73\x20\x2d\x64\x70" \
-"\x52\x0a\x09\x2d\x52\x2c\x2d\x72\x09\x52\x65\x63\x75\x72\x73\x65" \
-"\x0a\x09\x2d\x64\x2c\x2d\x50\x09\x50\x72\x65\x73\x65\x72\x76\x65" \
-"\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20\x28\x64\x65\x66\x61\x75" \
-"\x6c\x74\x20\x69\x66\x20\x2d\x52\x29\x0a\x09\x2d\x4c\x09\x46\x6f" \
-"\x6c\x6c\x6f\x77\x20\x61\x6c\x6c\x20\x73\x79\x6d\x6c\x69\x6e\x6b" \
-"\x73\x0a\x09\x2d\x48\x09\x46\x6f\x6c\x6c\x6f\x77\x20\x73\x79\x6d" \
-"\x6c\x69\x6e\x6b\x73\x20\x6f\x6e\x20\x63\x6f\x6d\x6d\x61\x6e\x64" \
-"\x20\x6c\x69\x6e\x65\x0a\x09\x2d\x70\x09\x50\x72\x65\x73\x65\x72" \
-"\x76\x65\x20\x66\x69\x6c\x65\x20\x61\x74\x74\x72\x69\x62\x75\x74" \
-"\x65\x73\x20\x69\x66\x20\x70\x6f\x73\x73\x69\x62\x6c\x65\x0a\x09" \
-"\x2d\x66\x09\x4f\x76\x65\x72\x77\x72\x69\x74\x65\x0a\x09\x2d\x69" \
-"\x09\x50\x72\x6f\x6d\x70\x74\x20\x62\x65\x66\x6f\x72\x65\x20\x6f" \
-"\x76\x65\x72\x77\x72\x69\x74\x65\x0a\x09\x2d\x6c\x2c\x2d\x73\x09" \
-"\x43\x72\x65\x61\x74\x65\x20\x28\x73\x79\x6d\x29\x6c\x69\x6e\x6b" \
-"\x73\x00\x5b\x2d\x64\x6d\x76\x75\x5d\x20\x5b\x2d\x46\x20\x46\x49" \
-"\x4c\x45\x5d\x20\x5b\x2d\x48\x20\x6e\x65\x77\x63\x5d\x20\x5b\x2d" \
-"\x74\x69\x6f\x5d\x20\x5b\x45\x58\x54\x52\x5f\x46\x49\x4c\x45\x5d" \
-"\x2e\x2e\x2e\x0a\x0a\x45\x78\x74\x72\x61\x63\x74\x20\x6f\x72\x20" \
-"\x6c\x69\x73\x74\x20\x66\x69\x6c\x65\x73\x20\x66\x72\x6f\x6d\x20" \
-"\x61\x20\x63\x70\x69\x6f\x20\x61\x72\x63\x68\x69\x76\x65\x2c\x20" \
-"\x6f\x72\x0a\x63\x72\x65\x61\x74\x65\x20\x61\x6e\x20\x61\x72\x63" \
-"\x68\x69\x76\x65\x20\x75\x73\x69\x6e\x67\x20\x66\x69\x6c\x65\x20" \
-"\x6c\x69\x73\x74\x20\x6f\x6e\x20\x73\x74\x64\x69\x6e\x0a\x0a\x4d" \
-"\x61\x69\x6e\x20\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\x20\x6d\x6f" \
-"\x64\x65\x3a\x0a\x09\x2d\x74\x09\x4c\x69\x73\x74\x0a\x09\x2d\x69" \
-"\x09\x45\x78\x74\x72\x61\x63\x74\x20\x45\x58\x54\x52\x5f\x46\x49" \
-"\x4c\x45\x73\x20\x28\x6f\x72\x20\x61\x6c\x6c\x29\x0a\x09\x2d\x6f" \
-"\x09\x43\x72\x65\x61\x74\x65\x20\x28\x72\x65\x71\x75\x69\x72\x65" \
-"\x73\x20\x2d\x48\x20\x6e\x65\x77\x63\x29\x0a\x09\x2d\x64\x09\x4d" \
-"\x61\x6b\x65\x20\x6c\x65\x61\x64\x69\x6e\x67\x20\x64\x69\x72\x65" \
-"\x63\x74\x6f\x72\x69\x65\x73\x0a\x09\x2d\x6d\x09\x50\x72\x65\x73" \
-"\x65\x72\x76\x65\x20\x6d\x74\x69\x6d\x65\x0a\x09\x2d\x76\x09\x56" \
-"\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x75\x09\x4f\x76\x65\x72\x77" \
-"\x72\x69\x74\x65\x0a\x09\x2d\x46\x20\x46\x49\x4c\x45\x09\x49\x6e" \
-"\x70\x75\x74\x20\x28\x2d\x74\x2c\x2d\x69\x2c\x2d\x70\x29\x20\x6f" \
-"\x72\x20\x6f\x75\x74\x70\x75\x74\x20\x28\x2d\x6f\x29\x20\x66\x69" \
-"\x6c\x65\x0a\x09\x2d\x48\x20\x6e\x65\x77\x63\x09\x41\x72\x63\x68" \
-"\x69\x76\x65\x20\x66\x6f\x72\x6d\x61\x74\x00\x5b\x4f\x50\x54\x49" \
-"\x4f\x4e\x53\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a" \
-"\x50\x72\x69\x6e\x74\x20\x73\x65\x6c\x65\x63\x74\x65\x64\x20\x66" \
-"\x69\x65\x6c\x64\x73\x20\x66\x72\x6f\x6d\x20\x65\x61\x63\x68\x20" \
-"\x69\x6e\x70\x75\x74\x20\x46\x49\x4c\x45\x20\x74\x6f\x20\x73\x74" \
-"\x64\x6f\x75\x74\x0a\x0a\x09\x2d\x62\x20\x4c\x49\x53\x54\x09\x4f" \
-"\x75\x74\x70\x75\x74\x20\x6f\x6e\x6c\x79\x20\x62\x79\x74\x65\x73" \
-"\x20\x66\x72\x6f\x6d\x20\x4c\x49\x53\x54\x0a\x09\x2d\x63\x20\x4c" \
-"\x49\x53\x54\x09\x4f\x75\x74\x70\x75\x74\x20\x6f\x6e\x6c\x79\x20" \
-"\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x20\x66\x72\x6f\x6d\x20" \
-"\x4c\x49\x53\x54\x0a\x09\x2d\x64\x20\x43\x48\x41\x52\x09\x55\x73" \
-"\x65\x20\x43\x48\x41\x52\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f" \
-"\x66\x20\x74\x61\x62\x20\x61\x73\x20\x74\x68\x65\x20\x66\x69\x65" \
-"\x6c\x64\x20\x64\x65\x6c\x69\x6d\x69\x74\x65\x72\x0a\x09\x2d\x73" \
-"\x09\x4f\x75\x74\x70\x75\x74\x20\x6f\x6e\x6c\x79\x20\x74\x68\x65" \
-"\x20\x6c\x69\x6e\x65\x73\x20\x63\x6f\x6e\x74\x61\x69\x6e\x69\x6e" \
-"\x67\x20\x64\x65\x6c\x69\x6d\x69\x74\x65\x72\x0a\x09\x2d\x66\x20" \
-"\x4e\x09\x50\x72\x69\x6e\x74\x20\x6f\x6e\x6c\x79\x20\x74\x68\x65" \
-"\x73\x65\x20\x66\x69\x65\x6c\x64\x73\x0a\x09\x2d\x6e\x09\x49\x67" \
-"\x6e\x6f\x72\x65\x64\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20" \
-"\x5b\x2b\x46\x4d\x54\x5d\x20\x5b\x54\x49\x4d\x45\x5d\x0a\x0a\x44" \
-"\x69\x73\x70\x6c\x61\x79\x20\x74\x69\x6d\x65\x20\x28\x75\x73\x69" \
-"\x6e\x67\x20\x2b\x46\x4d\x54\x29\x2c\x20\x6f\x72\x20\x73\x65\x74" \
-"\x20\x74\x69\x6d\x65\x0a\x0a\x09\x5b\x2d\x73\x2c\x2d\x2d\x73\x65" \
-"\x74\x5d\x20\x54\x49\x4d\x45\x09\x53\x65\x74\x20\x74\x69\x6d\x65" \
-"\x20\x74\x6f\x20\x54\x49\x4d\x45\x0a\x09\x2d\x75\x2c\x2d\x2d\x75" \
-"\x74\x63\x09\x57\x6f\x72\x6b\x20\x69\x6e\x20\x55\x54\x43\x20\x28" \
-"\x64\x6f\x6e\x27\x74\x20\x63\x6f\x6e\x76\x65\x72\x74\x20\x74\x6f" \
-"\x20\x6c\x6f\x63\x61\x6c\x20\x74\x69\x6d\x65\x29\x0a\x09\x2d\x52" \
-"\x2c\x2d\x2d\x72\x66\x63\x2d\x32\x38\x32\x32\x09\x4f\x75\x74\x70" \
-"\x75\x74\x20\x52\x46\x43\x2d\x32\x38\x32\x32\x20\x63\x6f\x6d\x70" \
-"\x6c\x69\x61\x6e\x74\x20\x64\x61\x74\x65\x20\x73\x74\x72\x69\x6e" \
-"\x67\x0a\x09\x2d\x49\x5b\x53\x50\x45\x43\x5d\x09\x4f\x75\x74\x70" \
-"\x75\x74\x20\x49\x53\x4f\x2d\x38\x36\x30\x31\x20\x63\x6f\x6d\x70" \
-"\x6c\x69\x61\x6e\x74\x20\x64\x61\x74\x65\x20\x73\x74\x72\x69\x6e" \
-"\x67\x0a\x09\x09\x09\x53\x50\x45\x43\x3d\x27\x64\x61\x74\x65\x27" \
-"\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x20\x66\x6f\x72\x20\x64" \
-"\x61\x74\x65\x20\x6f\x6e\x6c\x79\x2c\x0a\x09\x09\x09\x27\x68\x6f" \
-"\x75\x72\x73\x27\x2c\x20\x27\x6d\x69\x6e\x75\x74\x65\x73\x27\x2c" \
-"\x20\x6f\x72\x20\x27\x73\x65\x63\x6f\x6e\x64\x73\x27\x20\x66\x6f" \
-"\x72\x20\x64\x61\x74\x65\x20\x61\x6e\x64\x0a\x09\x09\x09\x74\x69" \
-"\x6d\x65\x20\x74\x6f\x20\x74\x68\x65\x20\x69\x6e\x64\x69\x63\x61" \
-"\x74\x65\x64\x20\x70\x72\x65\x63\x69\x73\x69\x6f\x6e\x0a\x09\x2d" \
-"\x72\x2c\x2d\x2d\x72\x65\x66\x65\x72\x65\x6e\x63\x65\x20\x46\x49" \
-"\x4c\x45\x09\x44\x69\x73\x70\x6c\x61\x79\x20\x6c\x61\x73\x74\x20" \
-"\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x74\x69\x6d" \
-"\x65\x20\x6f\x66\x20\x46\x49\x4c\x45\x0a\x09\x2d\x64\x2c\x2d\x2d" \
-"\x64\x61\x74\x65\x20\x54\x49\x4d\x45\x09\x44\x69\x73\x70\x6c\x61" \
-"\x79\x20\x54\x49\x4d\x45\x2c\x20\x6e\x6f\x74\x20\x27\x6e\x6f\x77" \
-"\x27\x0a\x09\x2d\x44\x20\x46\x4d\x54\x09\x09\x55\x73\x65\x20\x46" \
-"\x4d\x54\x20\x66\x6f\x72\x20\x2d\x64\x20\x54\x49\x4d\x45\x20\x63" \
-"\x6f\x6e\x76\x65\x72\x73\x69\x6f\x6e\x0a\x0a\x52\x65\x63\x6f\x67" \
-"\x6e\x69\x7a\x65\x64\x20\x54\x49\x4d\x45\x20\x66\x6f\x72\x6d\x61" \
-"\x74\x73\x3a\x0a\x09\x68\x68\x3a\x6d\x6d\x5b\x3a\x73\x73\x5d\x0a" \
-"\x09\x5b\x59\x59\x59\x59\x2e\x5d\x4d\x4d\x2e\x44\x44\x2d\x68\x68" \
-"\x3a\x6d\x6d\x5b\x3a\x73\x73\x5d\x0a\x09\x59\x59\x59\x59\x2d\x4d" \
-"\x4d\x2d\x44\x44\x20\x68\x68\x3a\x6d\x6d\x5b\x3a\x73\x73\x5d\x0a" \
-"\x09\x5b\x5b\x5b\x5b\x5b\x59\x59\x5d\x59\x59\x5d\x4d\x4d\x5d\x44" \
-"\x44\x5d\x68\x68\x5d\x6d\x6d\x5b\x2e\x73\x73\x5d\x0a\x09\x27\x64" \
-"\x61\x74\x65\x20\x54\x49\x4d\x45\x27\x20\x66\x6f\x72\x6d\x20\x61" \
-"\x63\x63\x65\x70\x74\x73\x20\x4d\x4d\x44\x44\x68\x68\x6d\x6d\x5b" \
-"\x5b\x59\x59\x5d\x59\x59\x5d\x5b\x2e\x73\x73\x5d\x20\x69\x6e\x73" \
-"\x74\x65\x61\x64\x00\x45\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x2e" \
-"\x2e\x2e\x0a\x0a\x54\x69\x6e\x79\x20\x52\x50\x4e\x20\x63\x61\x6c" \
-"\x63\x75\x6c\x61\x74\x6f\x72\x2e\x20\x4f\x70\x65\x72\x61\x74\x69" \
-"\x6f\x6e\x73\x3a\x0a\x2b\x2c\x20\x61\x64\x64\x2c\x20\x2d\x2c\x20" \
-"\x73\x75\x62\x2c\x20\x2a\x2c\x20\x6d\x75\x6c\x2c\x20\x2f\x2c\x20" \
-"\x64\x69\x76\x2c\x20\x25\x2c\x20\x6d\x6f\x64\x2c\x20\x61\x6e\x64" \
-"\x2c\x20\x6f\x72\x2c\x20\x6e\x6f\x74\x2c\x20\x78\x6f\x72\x2c\x0a" \
-"\x70\x20\x2d\x20\x70\x72\x69\x6e\x74\x20\x74\x6f\x70\x20\x6f\x66" \
-"\x20\x74\x68\x65\x20\x73\x74\x61\x63\x6b\x20\x28\x77\x69\x74\x68" \
-"\x6f\x75\x74\x20\x70\x6f\x70\x70\x69\x6e\x67\x29\x2c\x0a\x66\x20" \
-"\x2d\x20\x70\x72\x69\x6e\x74\x20\x65\x6e\x74\x69\x72\x65\x20\x73" \
-"\x74\x61\x63\x6b\x2c\x0a\x6f\x20\x2d\x20\x70\x6f\x70\x20\x74\x68" \
-"\x65\x20\x76\x61\x6c\x75\x65\x20\x61\x6e\x64\x20\x73\x65\x74\x20" \
-"\x6f\x75\x74\x70\x75\x74\x20\x72\x61\x64\x69\x78\x20\x28\x6d\x75" \
-"\x73\x74\x20\x62\x65\x20\x31\x30\x2c\x20\x31\x36\x2c\x20\x38\x20" \
-"\x6f\x72\x20\x32\x29\x2e\x0a\x45\x78\x61\x6d\x70\x6c\x65\x73\x3a" \
-"\x20\x27\x64\x63\x20\x32\x20\x32\x20\x61\x64\x64\x20\x70\x27\x20" \
-"\x2d\x3e\x20\x34\x2c\x20\x27\x64\x63\x20\x38\x20\x38\x20\x6d\x75" \
-"\x6c\x20\x32\x20\x32\x20\x2b\x20\x2f\x20\x70\x27\x20\x2d\x3e\x20" \
-"\x31\x36\x00\x5b\x69\x66\x3d\x46\x49\x4c\x45\x5d\x20\x5b\x6f\x66" \
-"\x3d\x46\x49\x4c\x45\x5d\x20\x5b\x69\x62\x73\x3d\x4e\x5d\x20\x5b" \
-"\x6f\x62\x73\x3d\x4e\x5d\x20\x5b\x62\x73\x3d\x4e\x5d\x20\x5b\x63" \
-"\x6f\x75\x6e\x74\x3d\x4e\x5d\x20\x5b\x73\x6b\x69\x70\x3d\x4e\x5d" \
-"\x0a\x09\x5b\x73\x65\x65\x6b\x3d\x4e\x5d\x20\x5b\x63\x6f\x6e\x76" \
-"\x3d\x6e\x6f\x74\x72\x75\x6e\x63\x7c\x6e\x6f\x65\x72\x72\x6f\x72" \
-"\x7c\x73\x79\x6e\x63\x7c\x66\x73\x79\x6e\x63\x5d\x0a\x0a\x43\x6f" \
-"\x70\x79\x20\x61\x20\x66\x69\x6c\x65\x20\x77\x69\x74\x68\x20\x63" \
-"\x6f\x6e\x76\x65\x72\x74\x69\x6e\x67\x20\x61\x6e\x64\x20\x66\x6f" \
-"\x72\x6d\x61\x74\x74\x69\x6e\x67\x0a\x0a\x09\x69\x66\x3d\x46\x49" \
-"\x4c\x45\x09\x09\x52\x65\x61\x64\x20\x66\x72\x6f\x6d\x20\x46\x49" \
-"\x4c\x45\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x73\x74" \
-"\x64\x69\x6e\x0a\x09\x6f\x66\x3d\x46\x49\x4c\x45\x09\x09\x57\x72" \
-"\x69\x74\x65\x20\x74\x6f\x20\x46\x49\x4c\x45\x20\x69\x6e\x73\x74" \
-"\x65\x61\x64\x20\x6f\x66\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x62" \
-"\x73\x3d\x4e\x09\x09\x52\x65\x61\x64\x20\x61\x6e\x64\x20\x77\x72" \
-"\x69\x74\x65\x20\x4e\x20\x62\x79\x74\x65\x73\x20\x61\x74\x20\x61" \
-"\x20\x74\x69\x6d\x65\x0a\x09\x69\x62\x73\x3d\x4e\x09\x09\x52\x65" \
-"\x61\x64\x20\x4e\x20\x62\x79\x74\x65\x73\x20\x61\x74\x20\x61\x20" \
-"\x74\x69\x6d\x65\x0a\x09\x6f\x62\x73\x3d\x4e\x09\x09\x57\x72\x69" \
-"\x74\x65\x20\x4e\x20\x62\x79\x74\x65\x73\x20\x61\x74\x20\x61\x20" \
-"\x74\x69\x6d\x65\x0a\x09\x63\x6f\x75\x6e\x74\x3d\x4e\x09\x09\x43" \
-"\x6f\x70\x79\x20\x6f\x6e\x6c\x79\x20\x4e\x20\x69\x6e\x70\x75\x74" \
-"\x20\x62\x6c\x6f\x63\x6b\x73\x0a\x09\x73\x6b\x69\x70\x3d\x4e\x09" \
-"\x09\x53\x6b\x69\x70\x20\x4e\x20\x69\x6e\x70\x75\x74\x20\x62\x6c" \
-"\x6f\x63\x6b\x73\x0a\x09\x73\x65\x65\x6b\x3d\x4e\x09\x09\x53\x6b" \
-"\x69\x70\x20\x4e\x20\x6f\x75\x74\x70\x75\x74\x20\x62\x6c\x6f\x63" \
-"\x6b\x73\x0a\x09\x63\x6f\x6e\x76\x3d\x6e\x6f\x74\x72\x75\x6e\x63" \
-"\x09\x44\x6f\x6e\x27\x74\x20\x74\x72\x75\x6e\x63\x61\x74\x65\x20" \
-"\x6f\x75\x74\x70\x75\x74\x20\x66\x69\x6c\x65\x0a\x09\x63\x6f\x6e" \
-"\x76\x3d\x6e\x6f\x65\x72\x72\x6f\x72\x09\x43\x6f\x6e\x74\x69\x6e" \
-"\x75\x65\x20\x61\x66\x74\x65\x72\x20\x72\x65\x61\x64\x20\x65\x72" \
-"\x72\x6f\x72\x73\x0a\x09\x63\x6f\x6e\x76\x3d\x73\x79\x6e\x63\x09" \
-"\x50\x61\x64\x20\x62\x6c\x6f\x63\x6b\x73\x20\x77\x69\x74\x68\x20" \
-"\x7a\x65\x72\x6f\x73\x0a\x09\x63\x6f\x6e\x76\x3d\x66\x73\x79\x6e" \
-"\x63\x09\x50\x68\x79\x73\x69\x63\x61\x6c\x6c\x79\x20\x77\x72\x69" \
-"\x74\x65\x20\x64\x61\x74\x61\x20\x6f\x75\x74\x20\x62\x65\x66\x6f" \
-"\x72\x65\x20\x66\x69\x6e\x69\x73\x68\x69\x6e\x67\x0a\x0a\x4e\x75" \
-"\x6d\x62\x65\x72\x73\x20\x6d\x61\x79\x20\x62\x65\x20\x73\x75\x66" \
-"\x66\x69\x78\x65\x64\x20\x62\x79\x20\x63\x20\x28\x78\x31\x29\x2c" \
-"\x20\x77\x20\x28\x78\x32\x29\x2c\x20\x62\x20\x28\x78\x35\x31\x32" \
-"\x29\x2c\x20\x6b\x44\x20\x28\x78\x31\x30\x30\x30\x29\x2c\x20\x6b" \
-"\x20\x28\x78\x31\x30\x32\x34\x29\x2c\x0a\x4d\x44\x20\x28\x78\x31" \
-"\x30\x30\x30\x30\x30\x30\x29\x2c\x20\x4d\x20\x28\x78\x31\x30\x34" \
-"\x38\x35\x37\x36\x29\x2c\x20\x47\x44\x20\x28\x78\x31\x30\x30\x30" \
-"\x30\x30\x30\x30\x30\x30\x29\x20\x6f\x72\x20\x47\x20\x28\x78\x31" \
-"\x30\x37\x33\x37\x34\x31\x38\x32\x34\x29\x00\x5b\x2d\x71\x66\x77" \
-"\x72\x73\x76\x5d\x20\x4d\x4f\x44\x55\x4c\x45\x20\x5b\x73\x79\x6d" \
-"\x62\x6f\x6c\x3d\x76\x61\x6c\x75\x65\x5d\x2e\x2e\x2e\x0a\x0a\x09" \
-"\x2d\x72\x09\x52\x65\x6d\x6f\x76\x65\x20\x4d\x4f\x44\x55\x4c\x45" \
-"\x20\x28\x73\x74\x61\x63\x6b\x73\x29\x20\x6f\x72\x20\x64\x6f\x20" \
-"\x61\x75\x74\x6f\x63\x6c\x65\x61\x6e\x0a\x09\x2d\x71\x09\x51\x75" \
-"\x69\x65\x74\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73\x65\x0a" \
-"\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x0a\x09\x2d\x77\x09\x57\x61" \
-"\x69\x74\x20\x66\x6f\x72\x20\x75\x6e\x6c\x6f\x61\x64\x0a\x09\x2d" \
-"\x73\x09\x52\x65\x70\x6f\x72\x74\x20\x76\x69\x61\x20\x73\x79\x73" \
-"\x6c\x6f\x67\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x73" \
-"\x74\x64\x65\x72\x72\x00\x41\x44\x44\x52\x45\x53\x53\x20\x5b\x57" \
-"\x49\x44\x54\x48\x20\x5b\x56\x41\x4c\x55\x45\x5d\x5d\x0a\x0a\x52" \
-"\x65\x61\x64\x2f\x77\x72\x69\x74\x65\x20\x66\x72\x6f\x6d\x20\x70" \
-"\x68\x79\x73\x69\x63\x61\x6c\x20\x61\x64\x64\x72\x65\x73\x73\x0a" \
-"\x0a\x09\x41\x44\x44\x52\x45\x53\x53\x09\x41\x64\x64\x72\x65\x73" \
-"\x73\x20\x74\x6f\x20\x61\x63\x74\x20\x75\x70\x6f\x6e\x0a\x09\x57" \
-"\x49\x44\x54\x48\x09\x57\x69\x64\x74\x68\x20\x28\x38\x2f\x31\x36" \
-"\x2f\x2e\x2e\x2e\x29\x0a\x09\x56\x41\x4c\x55\x45\x09\x44\x61\x74" \
-"\x61\x20\x74\x6f\x20\x62\x65\x20\x77\x72\x69\x74\x74\x65\x6e\x00" \
-"\x5b\x2d\x50\x6b\x6d\x68\x61\x69\x5d\x20\x5b\x2d\x42\x20\x53\x49" \
-"\x5a\x45\x5d\x20\x5b\x46\x49\x4c\x45\x53\x59\x53\x54\x45\x4d\x5d" \
-"\x2e\x2e\x2e\x0a\x0a\x50\x72\x69\x6e\x74\x20\x66\x69\x6c\x65\x73" \
-"\x79\x73\x74\x65\x6d\x20\x75\x73\x61\x67\x65\x20\x73\x74\x61\x74" \
-"\x69\x73\x74\x69\x63\x73\x0a\x0a\x09\x2d\x50\x09\x50\x4f\x53\x49" \
-"\x58\x20\x6f\x75\x74\x70\x75\x74\x20\x66\x6f\x72\x6d\x61\x74\x0a" \
-"\x09\x2d\x6b\x09\x31\x30\x32\x34\x2d\x62\x79\x74\x65\x20\x62\x6c" \
-"\x6f\x63\x6b\x73\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x0a\x09" \
-"\x2d\x6d\x09\x31\x4d\x2d\x62\x79\x74\x65\x20\x62\x6c\x6f\x63\x6b" \
-"\x73\x0a\x09\x2d\x68\x09\x48\x75\x6d\x61\x6e\x20\x72\x65\x61\x64" \
-"\x61\x62\x6c\x65\x20\x28\x65\x2e\x67\x2e\x20\x31\x4b\x20\x32\x34" \
-"\x33\x4d\x20\x32\x47\x29\x0a\x09\x2d\x61\x09\x53\x68\x6f\x77\x20" \
-"\x61\x6c\x6c\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x73\x0a" \
-"\x09\x2d\x69\x09\x49\x6e\x6f\x64\x65\x73\x0a\x09\x2d\x42\x20\x53" \
-"\x49\x5a\x45\x09\x42\x6c\x6f\x63\x6b\x73\x69\x7a\x65\x00\x5b\x2d" \
-"\x61\x62\x42\x64\x69\x4e\x71\x72\x54\x73\x74\x77\x5d\x20\x5b\x2d" \
-"\x4c\x20\x4c\x41\x42\x45\x4c\x5d\x20\x5b\x2d\x53\x20\x46\x49\x4c" \
-"\x45\x5d\x20\x5b\x2d\x55\x20\x4c\x49\x4e\x45\x53\x5d\x20\x46\x49" \
-"\x4c\x45\x31\x20\x46\x49\x4c\x45\x32\x0a\x0a\x43\x6f\x6d\x70\x61" \
-"\x72\x65\x20\x66\x69\x6c\x65\x73\x20\x6c\x69\x6e\x65\x20\x62\x79" \
-"\x20\x6c\x69\x6e\x65\x20\x61\x6e\x64\x20\x6f\x75\x74\x70\x75\x74" \
-"\x20\x74\x68\x65\x20\x64\x69\x66\x66\x65\x72\x65\x6e\x63\x65\x73" \
-"\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x74\x68\x65\x6d\x2e\x0a\x54" \
-"\x68\x69\x73\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\x74\x69" \
-"\x6f\x6e\x20\x73\x75\x70\x70\x6f\x72\x74\x73\x20\x75\x6e\x69\x66" \
-"\x69\x65\x64\x20\x64\x69\x66\x66\x73\x20\x6f\x6e\x6c\x79\x2e\x0a" \
-"\x0a\x09\x2d\x61\x09\x54\x72\x65\x61\x74\x20\x61\x6c\x6c\x20\x66" \
-"\x69\x6c\x65\x73\x20\x61\x73\x20\x74\x65\x78\x74\x0a\x09\x2d\x62" \
-"\x09\x49\x67\x6e\x6f\x72\x65\x20\x63\x68\x61\x6e\x67\x65\x73\x20" \
-"\x69\x6e\x20\x74\x68\x65\x20\x61\x6d\x6f\x75\x6e\x74\x20\x6f\x66" \
-"\x20\x77\x68\x69\x74\x65\x73\x70\x61\x63\x65\x0a\x09\x2d\x42\x09" \
-"\x49\x67\x6e\x6f\x72\x65\x20\x63\x68\x61\x6e\x67\x65\x73\x20\x77" \
-"\x68\x6f\x73\x65\x20\x6c\x69\x6e\x65\x73\x20\x61\x72\x65\x20\x61" \
-"\x6c\x6c\x20\x62\x6c\x61\x6e\x6b\x0a\x09\x2d\x64\x09\x54\x72\x79" \
-"\x20\x68\x61\x72\x64\x20\x74\x6f\x20\x66\x69\x6e\x64\x20\x61\x20" \
-"\x73\x6d\x61\x6c\x6c\x65\x72\x20\x73\x65\x74\x20\x6f\x66\x20\x63" \
-"\x68\x61\x6e\x67\x65\x73\x0a\x09\x2d\x69\x09\x49\x67\x6e\x6f\x72" \
-"\x65\x20\x63\x61\x73\x65\x20\x64\x69\x66\x66\x65\x72\x65\x6e\x63" \
-"\x65\x73\x0a\x09\x2d\x4c\x09\x55\x73\x65\x20\x4c\x41\x42\x45\x4c" \
-"\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x74\x68\x65\x20" \
-"\x66\x69\x6c\x65\x6e\x61\x6d\x65\x20\x69\x6e\x20\x74\x68\x65\x20" \
-"\x75\x6e\x69\x66\x69\x65\x64\x20\x68\x65\x61\x64\x65\x72\x0a\x09" \
-"\x2d\x4e\x09\x54\x72\x65\x61\x74\x20\x61\x62\x73\x65\x6e\x74\x20" \
-"\x66\x69\x6c\x65\x73\x20\x61\x73\x20\x65\x6d\x70\x74\x79\x0a\x09" \
-"\x2d\x71\x09\x4f\x75\x74\x70\x75\x74\x20\x6f\x6e\x6c\x79\x20\x77" \
-"\x68\x65\x74\x68\x65\x72\x20\x66\x69\x6c\x65\x73\x20\x64\x69\x66" \
-"\x66\x65\x72\x0a\x09\x2d\x72\x09\x52\x65\x63\x75\x72\x73\x65\x0a" \
-"\x09\x2d\x53\x09\x53\x74\x61\x72\x74\x20\x77\x69\x74\x68\x20\x46" \
-"\x49\x4c\x45\x20\x77\x68\x65\x6e\x20\x63\x6f\x6d\x70\x61\x72\x69" \
-"\x6e\x67\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x0a\x09" \
-"\x2d\x54\x09\x4d\x61\x6b\x65\x20\x74\x61\x62\x73\x20\x6c\x69\x6e" \
-"\x65\x20\x75\x70\x20\x62\x79\x20\x70\x72\x65\x66\x69\x78\x69\x6e" \
-"\x67\x20\x61\x20\x74\x61\x62\x20\x77\x68\x65\x6e\x20\x6e\x65\x63" \
-"\x65\x73\x73\x61\x72\x79\x0a\x09\x2d\x73\x09\x52\x65\x70\x6f\x72" \
-"\x74\x20\x77\x68\x65\x6e\x20\x74\x77\x6f\x20\x66\x69\x6c\x65\x73" \
-"\x20\x61\x72\x65\x20\x74\x68\x65\x20\x73\x61\x6d\x65\x0a\x09\x2d" \
-"\x74\x09\x45\x78\x70\x61\x6e\x64\x20\x74\x61\x62\x73\x20\x74\x6f" \
-"\x20\x73\x70\x61\x63\x65\x73\x20\x69\x6e\x20\x6f\x75\x74\x70\x75" \
-"\x74\x0a\x09\x2d\x55\x09\x4f\x75\x74\x70\x75\x74\x20\x4c\x49\x4e" \
-"\x45\x53\x20\x6c\x69\x6e\x65\x73\x20\x6f\x66\x20\x63\x6f\x6e\x74" \
-"\x65\x78\x74\x0a\x09\x2d\x77\x09\x49\x67\x6e\x6f\x72\x65\x20\x61" \
-"\x6c\x6c\x20\x77\x68\x69\x74\x65\x73\x70\x61\x63\x65\x00\x46\x49" \
-"\x4c\x45\x4e\x41\x4d\x45\x0a\x0a\x53\x74\x72\x69\x70\x20\x6e\x6f" \
-"\x6e\x2d\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x73\x75\x66\x66" \
-"\x69\x78\x20\x66\x72\x6f\x6d\x20\x46\x49\x4c\x45\x4e\x41\x4d\x45" \
-"\x00\x5b\x2d\x63\x5d\x20\x5b\x2d\x6e\x20\x4c\x45\x56\x45\x4c\x5d" \
-"\x20\x5b\x2d\x72\x5d\x20\x5b\x2d\x73\x20\x53\x49\x5a\x45\x5d\x20" \
-"\x5b\x2d\x43\x5d\x0a\x0a\x50\x72\x69\x6e\x74\x20\x6f\x72\x20\x63" \
-"\x6f\x6e\x74\x72\x6f\x6c\x20\x74\x68\x65\x20\x6b\x65\x72\x6e\x65" \
-"\x6c\x20\x72\x69\x6e\x67\x20\x62\x75\x66\x66\x65\x72\x0a\x0a\x09" \
-"\x2d\x63\x09\x09\x43\x6c\x65\x61\x72\x20\x72\x69\x6e\x67\x20\x62" \
-"\x75\x66\x66\x65\x72\x20\x61\x66\x74\x65\x72\x20\x70\x72\x69\x6e" \
-"\x74\x69\x6e\x67\x0a\x09\x2d\x6e\x20\x4c\x45\x56\x45\x4c\x09\x53" \
-"\x65\x74\x20\x63\x6f\x6e\x73\x6f\x6c\x65\x20\x6c\x6f\x67\x67\x69" \
-"\x6e\x67\x20\x6c\x65\x76\x65\x6c\x0a\x09\x2d\x72\x09\x09\x53\x68" \
-"\x6f\x77\x20\x6c\x65\x76\x65\x6c\x20\x70\x72\x65\x66\x69\x78\x0a" \
-"\x09\x2d\x73\x20\x53\x49\x5a\x45\x09\x09\x42\x75\x66\x66\x65\x72" \
-"\x20\x73\x69\x7a\x65\x0a\x09\x2d\x43\x09\x09\x43\x6f\x6c\x6f\x72" \
-"\x65\x64\x20\x6f\x75\x74\x70\x75\x74\x00\x5b\x2d\x75\x64\x5d\x20" \
-"\x5b\x46\x49\x4c\x45\x5d\x0a\x0a\x43\x6f\x6e\x76\x65\x72\x74\x20" \
-"\x46\x49\x4c\x45\x20\x69\x6e\x2d\x70\x6c\x61\x63\x65\x20\x66\x72" \
-"\x6f\x6d\x20\x44\x4f\x53\x20\x74\x6f\x20\x55\x6e\x69\x78\x20\x66" \
-"\x6f\x72\x6d\x61\x74\x2e\x0a\x57\x68\x65\x6e\x20\x6e\x6f\x20\x66" \
-"\x69\x6c\x65\x20\x69\x73\x20\x67\x69\x76\x65\x6e\x2c\x20\x75\x73" \
-"\x65\x20\x73\x74\x64\x69\x6e\x2f\x73\x74\x64\x6f\x75\x74\x2e\x0a" \
-"\x0a\x09\x2d\x75\x09\x64\x6f\x73\x32\x75\x6e\x69\x78\x0a\x09\x2d" \
-"\x64\x09\x75\x6e\x69\x78\x32\x64\x6f\x73\x00\x5b\x2d\x61\x48\x4c" \
-"\x64\x63\x6c\x73\x78\x68\x6d\x6b\x5d\x20\x5b\x46\x49\x4c\x45\x5d" \
-"\x2e\x2e\x2e\x0a\x0a\x53\x75\x6d\x6d\x61\x72\x69\x7a\x65\x20\x64" \
-"\x69\x73\x6b\x20\x73\x70\x61\x63\x65\x20\x75\x73\x65\x64\x20\x66" \
-"\x6f\x72\x20\x65\x61\x63\x68\x20\x46\x49\x4c\x45\x20\x61\x6e\x64" \
-"\x2f\x6f\x72\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x0a\x0a\x09" \
-"\x2d\x61\x09\x53\x68\x6f\x77\x20\x66\x69\x6c\x65\x20\x73\x69\x7a" \
-"\x65\x73\x20\x74\x6f\x6f\x0a\x09\x2d\x4c\x09\x46\x6f\x6c\x6c\x6f" \
-"\x77\x20\x61\x6c\x6c\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x0a\x09" \
-"\x2d\x48\x09\x46\x6f\x6c\x6c\x6f\x77\x20\x73\x79\x6d\x6c\x69\x6e" \
-"\x6b\x73\x20\x6f\x6e\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6c\x69" \
-"\x6e\x65\x0a\x09\x2d\x64\x20\x4e\x09\x4c\x69\x6d\x69\x74\x20\x6f" \
-"\x75\x74\x70\x75\x74\x20\x74\x6f\x20\x64\x69\x72\x65\x63\x74\x6f" \
-"\x72\x69\x65\x73\x20\x28\x61\x6e\x64\x20\x66\x69\x6c\x65\x73\x20" \
-"\x77\x69\x74\x68\x20\x2d\x61\x29\x20\x6f\x66\x20\x64\x65\x70\x74" \
-"\x68\x20\x3c\x20\x4e\x0a\x09\x2d\x63\x09\x53\x68\x6f\x77\x20\x67" \
-"\x72\x61\x6e\x64\x20\x74\x6f\x74\x61\x6c\x0a\x09\x2d\x6c\x09\x43" \
-"\x6f\x75\x6e\x74\x20\x73\x69\x7a\x65\x73\x20\x6d\x61\x6e\x79\x20" \
-"\x74\x69\x6d\x65\x73\x20\x69\x66\x20\x68\x61\x72\x64\x20\x6c\x69" \
-"\x6e\x6b\x65\x64\x0a\x09\x2d\x73\x09\x44\x69\x73\x70\x6c\x61\x79" \
-"\x20\x6f\x6e\x6c\x79\x20\x61\x20\x74\x6f\x74\x61\x6c\x20\x66\x6f" \
-"\x72\x20\x65\x61\x63\x68\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x0a" \
-"\x09\x2d\x78\x09\x53\x6b\x69\x70\x20\x64\x69\x72\x65\x63\x74\x6f" \
-"\x72\x69\x65\x73\x20\x6f\x6e\x20\x64\x69\x66\x66\x65\x72\x65\x6e" \
-"\x74\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x73\x0a\x09\x2d" \
-"\x68\x09\x53\x69\x7a\x65\x73\x20\x69\x6e\x20\x68\x75\x6d\x61\x6e" \
-"\x20\x72\x65\x61\x64\x61\x62\x6c\x65\x20\x66\x6f\x72\x6d\x61\x74" \
-"\x20\x28\x65\x2e\x67\x2e\x2c\x20\x31\x4b\x20\x32\x34\x33\x4d\x20" \
-"\x32\x47\x29\x0a\x09\x2d\x6d\x09\x53\x69\x7a\x65\x73\x20\x69\x6e" \
-"\x20\x6d\x65\x67\x61\x62\x79\x74\x65\x73\x0a\x09\x2d\x6b\x09\x53" \
-"\x69\x7a\x65\x73\x20\x69\x6e\x20\x6b\x69\x6c\x6f\x62\x79\x74\x65" \
-"\x73\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x00\x5b\x2d\x6e\x65" \
-"\x45\x5d\x20\x5b\x41\x52\x47\x5d\x2e\x2e\x2e\x0a\x0a\x50\x72\x69" \
-"\x6e\x74\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64" \
-"\x20\x41\x52\x47\x73\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a" \
-"\x0a\x09\x2d\x6e\x09\x53\x75\x70\x70\x72\x65\x73\x73\x20\x74\x72" \
-"\x61\x69\x6c\x69\x6e\x67\x20\x6e\x65\x77\x6c\x69\x6e\x65\x0a\x09" \
-"\x2d\x65\x09\x49\x6e\x74\x65\x72\x70\x72\x65\x74\x20\x62\x61\x63" \
-"\x6b\x73\x6c\x61\x73\x68\x20\x65\x73\x63\x61\x70\x65\x73\x20\x28" \
-"\x69\x2e\x65\x2e\x2c\x20\x5c\x74\x3d\x74\x61\x62\x29\x0a\x09\x2d" \
-"\x45\x09\x44\x6f\x6e\x27\x74\x20\x69\x6e\x74\x65\x72\x70\x72\x65" \
-"\x74\x20\x62\x61\x63\x6b\x73\x6c\x61\x73\x68\x20\x65\x73\x63\x61" \
-"\x70\x65\x73\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x00\x08\x00" \
-"\x5b\x2d\x69\x75\x5d\x20\x5b\x2d\x5d\x20\x5b\x6e\x61\x6d\x65\x3d" \
-"\x76\x61\x6c\x75\x65\x5d\x2e\x2e\x2e\x20\x5b\x50\x52\x4f\x47\x20" \
-"\x41\x52\x47\x53\x5d\x0a\x0a\x50\x72\x69\x6e\x74\x20\x74\x68\x65" \
-"\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x65\x6e\x76\x69\x72\x6f\x6e" \
-"\x6d\x65\x6e\x74\x20\x6f\x72\x20\x72\x75\x6e\x20\x50\x52\x4f\x47" \
-"\x20\x61\x66\x74\x65\x72\x20\x73\x65\x74\x74\x69\x6e\x67\x20\x75" \
-"\x70\x0a\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20" \
-"\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x0a\x0a\x09\x2d\x2c" \
-"\x20\x2d\x69\x09\x53\x74\x61\x72\x74\x20\x77\x69\x74\x68\x20\x61" \
-"\x6e\x20\x65\x6d\x70\x74\x79\x20\x65\x6e\x76\x69\x72\x6f\x6e\x6d" \
-"\x65\x6e\x74\x0a\x09\x2d\x75\x09\x52\x65\x6d\x6f\x76\x65\x20\x76" \
-"\x61\x72\x69\x61\x62\x6c\x65\x20\x66\x72\x6f\x6d\x20\x74\x68\x65" \
-"\x20\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x00\x5b\x2d\x69" \
-"\x5d\x20\x5b\x2d\x74\x20\x4e\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e" \
-"\x2e\x2e\x0a\x0a\x43\x6f\x6e\x76\x65\x72\x74\x20\x74\x61\x62\x73" \
-"\x20\x74\x6f\x20\x73\x70\x61\x63\x65\x73\x2c\x20\x77\x72\x69\x74" \
-"\x69\x6e\x67\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x0a\x09" \
-"\x2d\x69\x09\x44\x6f\x6e\x27\x74\x20\x63\x6f\x6e\x76\x65\x72\x74" \
-"\x20\x74\x61\x62\x73\x20\x61\x66\x74\x65\x72\x20\x6e\x6f\x6e\x20" \
-"\x62\x6c\x61\x6e\x6b\x73\x0a\x09\x2d\x74\x09\x54\x61\x62\x73\x74" \
-"\x6f\x70\x73\x20\x65\x76\x65\x72\x79\x20\x4e\x20\x63\x68\x61\x72" \
-"\x73\x00\x45\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x0a\x0a\x50\x72" \
-"\x69\x6e\x74\x20\x74\x68\x65\x20\x76\x61\x6c\x75\x65\x20\x6f\x66" \
-"\x20\x45\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x20\x74\x6f\x20\x73" \
-"\x74\x64\x6f\x75\x74\x0a\x0a\x45\x58\x50\x52\x45\x53\x53\x49\x4f" \
-"\x4e\x20\x6d\x61\x79\x20\x62\x65\x3a\x0a\x09\x41\x52\x47\x31\x20" \
-"\x7c\x20\x41\x52\x47\x32\x09\x41\x52\x47\x31\x20\x69\x66\x20\x69" \
-"\x74\x20\x69\x73\x20\x6e\x65\x69\x74\x68\x65\x72\x20\x6e\x75\x6c" \
-"\x6c\x20\x6e\x6f\x72\x20\x30\x2c\x20\x6f\x74\x68\x65\x72\x77\x69" \
-"\x73\x65\x20\x41\x52\x47\x32\x0a\x09\x41\x52\x47\x31\x20\x26\x20" \
-"\x41\x52\x47\x32\x09\x41\x52\x47\x31\x20\x69\x66\x20\x6e\x65\x69" \
-"\x74\x68\x65\x72\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x20\x69\x73" \
-"\x20\x6e\x75\x6c\x6c\x20\x6f\x72\x20\x30\x2c\x20\x6f\x74\x68\x65" \
-"\x72\x77\x69\x73\x65\x20\x30\x0a\x09\x41\x52\x47\x31\x20\x3c\x20" \
-"\x41\x52\x47\x32\x09\x31\x20\x69\x66\x20\x41\x52\x47\x31\x20\x69" \
-"\x73\x20\x6c\x65\x73\x73\x20\x74\x68\x61\x6e\x20\x41\x52\x47\x32" \
-"\x2c\x20\x65\x6c\x73\x65\x20\x30\x2e\x20\x53\x69\x6d\x69\x6c\x61" \
-"\x72\x6c\x79\x3a\x0a\x09\x41\x52\x47\x31\x20\x3c\x3d\x20\x41\x52" \
-"\x47\x32\x0a\x09\x41\x52\x47\x31\x20\x3d\x20\x41\x52\x47\x32\x0a" \
-"\x09\x41\x52\x47\x31\x20\x21\x3d\x20\x41\x52\x47\x32\x0a\x09\x41" \
-"\x52\x47\x31\x20\x3e\x3d\x20\x41\x52\x47\x32\x0a\x09\x41\x52\x47" \
-"\x31\x20\x3e\x20\x41\x52\x47\x32\x0a\x09\x41\x52\x47\x31\x20\x2b" \
-"\x20\x41\x52\x47\x32\x09\x53\x75\x6d\x20\x6f\x66\x20\x41\x52\x47" \
-"\x31\x20\x61\x6e\x64\x20\x41\x52\x47\x32\x2e\x20\x53\x69\x6d\x69" \
-"\x6c\x61\x72\x6c\x79\x3a\x0a\x09\x41\x52\x47\x31\x20\x2d\x20\x41" \
-"\x52\x47\x32\x0a\x09\x41\x52\x47\x31\x20\x2a\x20\x41\x52\x47\x32" \
-"\x0a\x09\x41\x52\x47\x31\x20\x2f\x20\x41\x52\x47\x32\x0a\x09\x41" \
-"\x52\x47\x31\x20\x25\x20\x41\x52\x47\x32\x0a\x09\x53\x54\x52\x49" \
-"\x4e\x47\x20\x3a\x20\x52\x45\x47\x45\x58\x50\x09\x09\x41\x6e\x63" \
-"\x68\x6f\x72\x65\x64\x20\x70\x61\x74\x74\x65\x72\x6e\x20\x6d\x61" \
-"\x74\x63\x68\x20\x6f\x66\x20\x52\x45\x47\x45\x58\x50\x20\x69\x6e" \
-"\x20\x53\x54\x52\x49\x4e\x47\x0a\x09\x6d\x61\x74\x63\x68\x20\x53" \
-"\x54\x52\x49\x4e\x47\x20\x52\x45\x47\x45\x58\x50\x09\x53\x61\x6d" \
-"\x65\x20\x61\x73\x20\x53\x54\x52\x49\x4e\x47\x20\x3a\x20\x52\x45" \
-"\x47\x45\x58\x50\x0a\x09\x73\x75\x62\x73\x74\x72\x20\x53\x54\x52" \
-"\x49\x4e\x47\x20\x50\x4f\x53\x20\x4c\x45\x4e\x47\x54\x48\x20\x53" \
-"\x75\x62\x73\x74\x72\x69\x6e\x67\x20\x6f\x66\x20\x53\x54\x52\x49" \
-"\x4e\x47\x2c\x20\x50\x4f\x53\x20\x63\x6f\x75\x6e\x74\x65\x64\x20" \
-"\x66\x72\x6f\x6d\x20\x31\x0a\x09\x69\x6e\x64\x65\x78\x20\x53\x54" \
-"\x52\x49\x4e\x47\x20\x43\x48\x41\x52\x53\x09\x49\x6e\x64\x65\x78" \
-"\x20\x69\x6e\x20\x53\x54\x52\x49\x4e\x47\x20\x77\x68\x65\x72\x65" \
-"\x20\x61\x6e\x79\x20\x43\x48\x41\x52\x53\x20\x69\x73\x20\x66\x6f" \
-"\x75\x6e\x64\x2c\x20\x6f\x72\x20\x30\x0a\x09\x6c\x65\x6e\x67\x74" \
-"\x68\x20\x53\x54\x52\x49\x4e\x47\x09\x09\x4c\x65\x6e\x67\x74\x68" \
-"\x20\x6f\x66\x20\x53\x54\x52\x49\x4e\x47\x0a\x09\x71\x75\x6f\x74" \
-"\x65\x20\x54\x4f\x4b\x45\x4e\x09\x09\x49\x6e\x74\x65\x72\x70\x72" \
-"\x65\x74\x20\x54\x4f\x4b\x45\x4e\x20\x61\x73\x20\x61\x20\x73\x74" \
-"\x72\x69\x6e\x67\x2c\x20\x65\x76\x65\x6e\x20\x69\x66\x0a\x09\x09" \
-"\x09\x09\x69\x74\x20\x69\x73\x20\x61\x20\x6b\x65\x79\x77\x6f\x72" \
-"\x64\x20\x6c\x69\x6b\x65\x20\x27\x6d\x61\x74\x63\x68\x27\x20\x6f" \
-"\x72\x20\x61\x6e\x0a\x09\x09\x09\x09\x6f\x70\x65\x72\x61\x74\x6f" \
-"\x72\x20\x6c\x69\x6b\x65\x20\x27\x2f\x27\x0a\x09\x28\x45\x58\x50" \
-"\x52\x45\x53\x53\x49\x4f\x4e\x29\x09\x09\x56\x61\x6c\x75\x65\x20" \
-"\x6f\x66\x20\x45\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x0a\x0a\x42" \
-"\x65\x77\x61\x72\x65\x20\x74\x68\x61\x74\x20\x6d\x61\x6e\x79\x20" \
-"\x6f\x70\x65\x72\x61\x74\x6f\x72\x73\x20\x6e\x65\x65\x64\x20\x74" \
-"\x6f\x20\x62\x65\x20\x65\x73\x63\x61\x70\x65\x64\x20\x6f\x72\x20" \
-"\x71\x75\x6f\x74\x65\x64\x20\x66\x6f\x72\x20\x73\x68\x65\x6c\x6c" \
-"\x73\x2e\x0a\x43\x6f\x6d\x70\x61\x72\x69\x73\x6f\x6e\x73\x20\x61" \
-"\x72\x65\x20\x61\x72\x69\x74\x68\x6d\x65\x74\x69\x63\x20\x69\x66" \
-"\x20\x62\x6f\x74\x68\x20\x41\x52\x47\x73\x20\x61\x72\x65\x20\x6e" \
-"\x75\x6d\x62\x65\x72\x73\x2c\x20\x65\x6c\x73\x65\x0a\x6c\x65\x78" \
-"\x69\x63\x6f\x67\x72\x61\x70\x68\x69\x63\x61\x6c\x2e\x20\x50\x61" \
-"\x74\x74\x65\x72\x6e\x20\x6d\x61\x74\x63\x68\x65\x73\x20\x72\x65" \
-"\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x73\x74\x72\x69\x6e\x67\x20" \
-"\x6d\x61\x74\x63\x68\x65\x64\x20\x62\x65\x74\x77\x65\x65\x6e\x0a" \
-"\x5c\x28\x20\x61\x6e\x64\x20\x5c\x29\x20\x6f\x72\x20\x6e\x75\x6c" \
-"\x6c\x3b\x20\x69\x66\x20\x5c\x28\x20\x61\x6e\x64\x20\x5c\x29\x20" \
-"\x61\x72\x65\x20\x6e\x6f\x74\x20\x75\x73\x65\x64\x2c\x20\x74\x68" \
-"\x65\x79\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x6e\x75" \
-"\x6d\x62\x65\x72\x0a\x6f\x66\x20\x63\x68\x61\x72\x61\x63\x74\x65" \
-"\x72\x73\x20\x6d\x61\x74\x63\x68\x65\x64\x20\x6f\x72\x20\x30\x2e" \
-"\x00\x0a\x0a\x52\x65\x74\x75\x72\x6e\x20\x61\x6e\x20\x65\x78\x69" \
-"\x74\x20\x63\x6f\x64\x65\x20\x6f\x66\x20\x46\x41\x4c\x53\x45\x20" \
-"\x28\x31\x29\x00\x5b\x2d\x75\x6c\x5d\x20\x5b\x2d\x43\x20\x43\x59" \
-"\x4c\x49\x4e\x44\x45\x52\x53\x5d\x20\x5b\x2d\x48\x20\x48\x45\x41" \
-"\x44\x53\x5d\x20\x5b\x2d\x53\x20\x53\x45\x43\x54\x4f\x52\x53\x5d" \
-"\x20\x5b\x2d\x62\x20\x53\x53\x5a\x5d\x20\x44\x49\x53\x4b\x0a\x0a" \
-"\x43\x68\x61\x6e\x67\x65\x20\x70\x61\x72\x74\x69\x74\x69\x6f\x6e" \
-"\x20\x74\x61\x62\x6c\x65\x0a\x0a\x09\x2d\x75\x09\x09\x53\x74\x61" \
-"\x72\x74\x20\x61\x6e\x64\x20\x45\x6e\x64\x20\x61\x72\x65\x20\x69" \
-"\x6e\x20\x73\x65\x63\x74\x6f\x72\x73\x20\x28\x69\x6e\x73\x74\x65" \
-"\x61\x64\x20\x6f\x66\x20\x63\x79\x6c\x69\x6e\x64\x65\x72\x73\x29" \
-"\x0a\x09\x2d\x6c\x09\x09\x53\x68\x6f\x77\x20\x70\x61\x72\x74\x69" \
-"\x74\x69\x6f\x6e\x20\x74\x61\x62\x6c\x65\x20\x66\x6f\x72\x20\x65" \
-"\x61\x63\x68\x20\x44\x49\x53\x4b\x2c\x20\x74\x68\x65\x6e\x20\x65" \
-"\x78\x69\x74\x0a\x09\x2d\x62\x20\x32\x30\x34\x38\x09\x09\x28\x66" \
-"\x6f\x72\x20\x63\x65\x72\x74\x61\x69\x6e\x20\x4d\x4f\x20\x64\x69" \
-"\x73\x6b\x73\x29\x20\x75\x73\x65\x20\x32\x30\x34\x38\x2d\x62\x79" \
-"\x74\x65\x20\x73\x65\x63\x74\x6f\x72\x73\x0a\x09\x2d\x43\x20\x43" \
-"\x59\x4c\x49\x4e\x44\x45\x52\x53\x09\x53\x65\x74\x20\x6e\x75\x6d" \
-"\x62\x65\x72\x20\x6f\x66\x20\x63\x79\x6c\x69\x6e\x64\x65\x72\x73" \
-"\x2f\x68\x65\x61\x64\x73\x2f\x73\x65\x63\x74\x6f\x72\x73\x0a\x09" \
-"\x2d\x48\x20\x48\x45\x41\x44\x53\x0a\x09\x2d\x53\x20\x53\x45\x43" \
-"\x54\x4f\x52\x53\x00\x08\x00\x5b\x50\x41\x54\x48\x5d\x2e\x2e\x2e" \
-"\x20\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x41\x43\x54\x49" \
-"\x4f\x4e\x53\x5d\x0a\x0a\x53\x65\x61\x72\x63\x68\x20\x66\x6f\x72" \
-"\x20\x66\x69\x6c\x65\x73\x20\x61\x6e\x64\x20\x70\x65\x72\x66\x6f" \
-"\x72\x6d\x20\x61\x63\x74\x69\x6f\x6e\x73\x20\x6f\x6e\x20\x74\x68" \
-"\x65\x6d\x2e\x0a\x46\x69\x72\x73\x74\x20\x66\x61\x69\x6c\x65\x64" \
-"\x20\x61\x63\x74\x69\x6f\x6e\x20\x73\x74\x6f\x70\x73\x20\x70\x72" \
-"\x6f\x63\x65\x73\x73\x69\x6e\x67\x20\x6f\x66\x20\x63\x75\x72\x72" \
-"\x65\x6e\x74\x20\x66\x69\x6c\x65\x2e\x0a\x44\x65\x66\x61\x75\x6c" \
-"\x74\x73\x3a\x20\x50\x41\x54\x48\x20\x69\x73\x20\x63\x75\x72\x72" \
-"\x65\x6e\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x2c\x20\x61" \
-"\x63\x74\x69\x6f\x6e\x20\x69\x73\x20\x27\x2d\x70\x72\x69\x6e\x74" \
-"\x27\x0a\x0a\x09\x2d\x66\x6f\x6c\x6c\x6f\x77\x09\x09\x46\x6f\x6c" \
-"\x6c\x6f\x77\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x0a\x09\x2d\x78" \
-"\x64\x65\x76\x09\x09\x44\x6f\x6e\x27\x74\x20\x64\x65\x73\x63\x65" \
-"\x6e\x64\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x6f" \
-"\x6e\x20\x6f\x74\x68\x65\x72\x20\x66\x69\x6c\x65\x73\x79\x73\x74" \
-"\x65\x6d\x73\x0a\x09\x2d\x6d\x61\x78\x64\x65\x70\x74\x68\x20\x4e" \
-"\x09\x44\x65\x73\x63\x65\x6e\x64\x20\x61\x74\x20\x6d\x6f\x73\x74" \
-"\x20\x4e\x20\x6c\x65\x76\x65\x6c\x73\x2e\x20\x2d\x6d\x61\x78\x64" \
-"\x65\x70\x74\x68\x20\x30\x20\x61\x70\x70\x6c\x69\x65\x73\x0a\x09" \
-"\x09\x09\x61\x63\x74\x69\x6f\x6e\x73\x20\x74\x6f\x20\x63\x6f\x6d" \
-"\x6d\x61\x6e\x64\x20\x6c\x69\x6e\x65\x20\x61\x72\x67\x75\x6d\x65" \
-"\x6e\x74\x73\x20\x6f\x6e\x6c\x79\x0a\x09\x2d\x6d\x69\x6e\x64\x65" \
-"\x70\x74\x68\x20\x4e\x09\x44\x6f\x6e\x27\x74\x20\x61\x63\x74\x20" \
-"\x6f\x6e\x20\x66\x69\x72\x73\x74\x20\x4e\x20\x6c\x65\x76\x65\x6c" \
-"\x73\x0a\x09\x2d\x64\x65\x70\x74\x68\x09\x09\x41\x63\x74\x20\x6f" \
-"\x6e\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x2a\x61\x66\x74" \
-"\x65\x72\x2a\x20\x74\x72\x61\x76\x65\x72\x73\x69\x6e\x67\x20\x69" \
-"\x74\x0a\x0a\x41\x63\x74\x69\x6f\x6e\x73\x3a\x0a\x09\x28\x20\x41" \
-"\x43\x54\x49\x4f\x4e\x53\x20\x29\x09\x47\x72\x6f\x75\x70\x20\x61" \
-"\x63\x74\x69\x6f\x6e\x73\x20\x66\x6f\x72\x20\x2d\x6f\x20\x2f\x20" \
-"\x2d\x61\x0a\x09\x21\x20\x41\x43\x54\x09\x09\x49\x6e\x76\x65\x72" \
-"\x74\x20\x41\x43\x54\x27\x73\x20\x73\x75\x63\x63\x65\x73\x73\x2f" \
-"\x66\x61\x69\x6c\x75\x72\x65\x0a\x09\x41\x43\x54\x31\x20\x5b\x2d" \
-"\x61\x5d\x20\x41\x43\x54\x32\x09\x49\x66\x20\x41\x43\x54\x31\x20" \
-"\x66\x61\x69\x6c\x73\x2c\x20\x73\x74\x6f\x70\x2c\x20\x65\x6c\x73" \
-"\x65\x20\x64\x6f\x20\x41\x43\x54\x32\x0a\x09\x41\x43\x54\x31\x20" \
-"\x2d\x6f\x20\x41\x43\x54\x32\x09\x49\x66\x20\x41\x43\x54\x31\x20" \
-"\x73\x75\x63\x63\x65\x65\x64\x73\x2c\x20\x73\x74\x6f\x70\x2c\x20" \
-"\x65\x6c\x73\x65\x20\x64\x6f\x20\x41\x43\x54\x32\x0a\x09\x09\x09" \
-"\x4e\x6f\x74\x65\x3a\x20\x2d\x61\x20\x68\x61\x73\x20\x68\x69\x67" \
-"\x68\x65\x72\x20\x70\x72\x69\x6f\x72\x69\x74\x79\x20\x74\x68\x61" \
-"\x6e\x20\x2d\x6f\x0a\x09\x2d\x6e\x61\x6d\x65\x20\x50\x41\x54\x54" \
-"\x45\x52\x4e\x09\x4d\x61\x74\x63\x68\x20\x66\x69\x6c\x65\x20\x6e" \
-"\x61\x6d\x65\x20\x28\x77\x2f\x6f\x20\x64\x69\x72\x65\x63\x74\x6f" \
-"\x72\x79\x20\x6e\x61\x6d\x65\x29\x20\x74\x6f\x20\x50\x41\x54\x54" \
-"\x45\x52\x4e\x0a\x09\x2d\x69\x6e\x61\x6d\x65\x20\x50\x41\x54\x54" \
-"\x45\x52\x4e\x09\x43\x61\x73\x65\x20\x69\x6e\x73\x65\x6e\x73\x69" \
-"\x74\x69\x76\x65\x20\x2d\x6e\x61\x6d\x65\x0a\x09\x2d\x70\x61\x74" \
-"\x68\x20\x50\x41\x54\x54\x45\x52\x4e\x09\x4d\x61\x74\x63\x68\x20" \
-"\x70\x61\x74\x68\x20\x74\x6f\x20\x50\x41\x54\x54\x45\x52\x4e\x0a" \
-"\x09\x2d\x69\x70\x61\x74\x68\x20\x50\x41\x54\x54\x45\x52\x4e\x09" \
-"\x43\x61\x73\x65\x20\x69\x6e\x73\x65\x6e\x73\x69\x74\x69\x76\x65" \
-"\x20\x2d\x70\x61\x74\x68\x0a\x09\x2d\x72\x65\x67\x65\x78\x20\x50" \
-"\x41\x54\x54\x45\x52\x4e\x09\x4d\x61\x74\x63\x68\x20\x70\x61\x74" \
-"\x68\x20\x74\x6f\x20\x72\x65\x67\x65\x78\x20\x50\x41\x54\x54\x45" \
-"\x52\x4e\x0a\x09\x2d\x74\x79\x70\x65\x20\x58\x09\x09\x46\x69\x6c" \
-"\x65\x20\x74\x79\x70\x65\x20\x69\x73\x20\x58\x20\x28\x6f\x6e\x65" \
-"\x20\x6f\x66\x3a\x20\x66\x2c\x64\x2c\x6c\x2c\x62\x2c\x63\x2c\x2e" \
-"\x2e\x2e\x29\x0a\x09\x2d\x70\x65\x72\x6d\x20\x4d\x41\x53\x4b\x09" \
-"\x41\x74\x20\x6c\x65\x61\x73\x74\x20\x6f\x6e\x65\x20\x6d\x61\x73" \
-"\x6b\x20\x62\x69\x74\x20\x28\x2b\x4d\x41\x53\x4b\x29\x2c\x20\x61" \
-"\x6c\x6c\x20\x62\x69\x74\x73\x20\x28\x2d\x4d\x41\x53\x4b\x29\x2c" \
-"\x0a\x09\x09\x09\x6f\x72\x20\x65\x78\x61\x63\x74\x6c\x79\x20\x4d" \
-"\x41\x53\x4b\x20\x62\x69\x74\x73\x20\x61\x72\x65\x20\x73\x65\x74" \
-"\x20\x69\x6e\x20\x66\x69\x6c\x65\x27\x73\x20\x6d\x6f\x64\x65\x0a" \
-"\x09\x2d\x6d\x74\x69\x6d\x65\x20\x44\x41\x59\x53\x09\x6d\x74\x69" \
-"\x6d\x65\x20\x69\x73\x20\x67\x72\x65\x61\x74\x65\x72\x20\x74\x68" \
-"\x61\x6e\x20\x28\x2b\x4e\x29\x2c\x20\x6c\x65\x73\x73\x20\x74\x68" \
-"\x61\x6e\x20\x28\x2d\x4e\x29\x2c\x0a\x09\x09\x09\x6f\x72\x20\x65" \
-"\x78\x61\x63\x74\x6c\x79\x20\x4e\x20\x64\x61\x79\x73\x20\x69\x6e" \
-"\x20\x74\x68\x65\x20\x70\x61\x73\x74\x0a\x09\x2d\x6d\x6d\x69\x6e" \
-"\x20\x4d\x49\x4e\x53\x09\x6d\x74\x69\x6d\x65\x20\x69\x73\x20\x67" \
-"\x72\x65\x61\x74\x65\x72\x20\x74\x68\x61\x6e\x20\x28\x2b\x4e\x29" \
-"\x2c\x20\x6c\x65\x73\x73\x20\x74\x68\x61\x6e\x20\x28\x2d\x4e\x29" \
-"\x2c\x0a\x09\x09\x09\x6f\x72\x20\x65\x78\x61\x63\x74\x6c\x79\x20" \
-"\x4e\x20\x6d\x69\x6e\x75\x74\x65\x73\x20\x69\x6e\x20\x74\x68\x65" \
-"\x20\x70\x61\x73\x74\x0a\x09\x2d\x6e\x65\x77\x65\x72\x20\x46\x49" \
-"\x4c\x45\x09\x6d\x74\x69\x6d\x65\x20\x69\x73\x20\x6d\x6f\x72\x65" \
-"\x20\x72\x65\x63\x65\x6e\x74\x20\x74\x68\x61\x6e\x20\x46\x49\x4c" \
-"\x45\x27\x73\x0a\x09\x2d\x75\x73\x65\x72\x20\x4e\x41\x4d\x45\x2f" \
-"\x49\x44\x09\x46\x69\x6c\x65\x20\x69\x73\x20\x6f\x77\x6e\x65\x64" \
-"\x20\x62\x79\x20\x67\x69\x76\x65\x6e\x20\x75\x73\x65\x72\x0a\x09" \
-"\x2d\x67\x72\x6f\x75\x70\x20\x4e\x41\x4d\x45\x2f\x49\x44\x09\x46" \
-"\x69\x6c\x65\x20\x69\x73\x20\x6f\x77\x6e\x65\x64\x20\x62\x79\x20" \
-"\x67\x69\x76\x65\x6e\x20\x67\x72\x6f\x75\x70\x0a\x09\x2d\x73\x69" \
-"\x7a\x65\x20\x4e\x5b\x62\x63\x6b\x5d\x09\x46\x69\x6c\x65\x20\x73" \
-"\x69\x7a\x65\x20\x69\x73\x20\x4e\x20\x28\x63\x3a\x62\x79\x74\x65" \
-"\x73\x2c\x6b\x3a\x6b\x62\x79\x74\x65\x73\x2c\x62\x3a\x35\x31\x32" \
-"\x20\x62\x79\x74\x65\x73\x28\x64\x65\x66\x2e\x29\x29\x0a\x09\x09" \
-"\x09\x2b\x2f\x2d\x4e\x3a\x20\x66\x69\x6c\x65\x20\x73\x69\x7a\x65" \
-"\x20\x69\x73\x20\x62\x69\x67\x67\x65\x72\x2f\x73\x6d\x61\x6c\x6c" \
-"\x65\x72\x20\x74\x68\x61\x6e\x20\x4e\x0a\x09\x2d\x70\x72\x75\x6e" \
-"\x65\x09\x09\x49\x66\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x66\x69" \
-"\x6c\x65\x20\x69\x73\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x2c" \
-"\x20\x64\x6f\x6e\x27\x74\x20\x64\x65\x73\x63\x65\x6e\x64\x20\x69" \
-"\x6e\x74\x6f\x20\x69\x74\x0a\x49\x66\x20\x6e\x6f\x6e\x65\x20\x6f" \
-"\x66\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20" \
-"\x61\x63\x74\x69\x6f\x6e\x73\x20\x69\x73\x20\x73\x70\x65\x63\x69" \
-"\x66\x69\x65\x64\x2c\x20\x2d\x70\x72\x69\x6e\x74\x20\x69\x73\x20" \
-"\x61\x73\x73\x75\x6d\x65\x64\x0a\x09\x2d\x70\x72\x69\x6e\x74\x09" \
-"\x09\x50\x72\x69\x6e\x74\x20\x66\x69\x6c\x65\x20\x6e\x61\x6d\x65" \
-"\x0a\x09\x2d\x70\x72\x69\x6e\x74\x30\x09\x09\x50\x72\x69\x6e\x74" \
-"\x20\x66\x69\x6c\x65\x20\x6e\x61\x6d\x65\x2c\x20\x4e\x55\x4c\x20" \
-"\x74\x65\x72\x6d\x69\x6e\x61\x74\x65\x64\x0a\x09\x2d\x65\x78\x65" \
-"\x63\x20\x43\x4d\x44\x20\x41\x52\x47\x20\x3b\x09\x52\x75\x6e\x20" \
-"\x43\x4d\x44\x20\x77\x69\x74\x68\x20\x61\x6c\x6c\x20\x69\x6e\x73" \
-"\x74\x61\x6e\x63\x65\x73\x20\x6f\x66\x20\x7b\x7d\x20\x72\x65\x70" \
-"\x6c\x61\x63\x65\x64\x20\x62\x79\x0a\x09\x09\x09\x66\x69\x6c\x65" \
-"\x20\x6e\x61\x6d\x65\x2e\x20\x46\x61\x69\x6c\x73\x20\x69\x66\x20" \
-"\x43\x4d\x44\x20\x65\x78\x69\x74\x73\x20\x77\x69\x74\x68\x20\x6e" \
-"\x6f\x6e\x7a\x65\x72\x6f\x00\x5b\x2d\x62\x73\x5d\x20\x5b\x2d\x77" \
-"\x20\x57\x49\x44\x54\x48\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e" \
-"\x2e\x0a\x0a\x57\x72\x61\x70\x20\x69\x6e\x70\x75\x74\x20\x6c\x69" \
-"\x6e\x65\x73\x20\x69\x6e\x20\x65\x61\x63\x68\x20\x46\x49\x4c\x45" \
-"\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x2c\x20\x77\x72\x69" \
-"\x74\x69\x6e\x67\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x0a" \
-"\x09\x2d\x62\x09\x43\x6f\x75\x6e\x74\x20\x62\x79\x74\x65\x73\x20" \
-"\x72\x61\x74\x68\x65\x72\x20\x74\x68\x61\x6e\x20\x63\x6f\x6c\x75" \
-"\x6d\x6e\x73\x0a\x09\x2d\x73\x09\x42\x72\x65\x61\x6b\x20\x61\x74" \
-"\x20\x73\x70\x61\x63\x65\x73\x0a\x09\x2d\x77\x09\x55\x73\x65\x20" \
-"\x57\x49\x44\x54\x48\x20\x63\x6f\x6c\x75\x6d\x6e\x73\x20\x69\x6e" \
-"\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x38\x30\x00\x0a\x0a\x44\x69" \
-"\x73\x70\x6c\x61\x79\x20\x74\x68\x65\x20\x61\x6d\x6f\x75\x6e\x74" \
-"\x20\x6f\x66\x20\x66\x72\x65\x65\x20\x61\x6e\x64\x20\x75\x73\x65" \
-"\x64\x20\x73\x79\x73\x74\x65\x6d\x20\x6d\x65\x6d\x6f\x72\x79\x00" \
-"\x44\x45\x56\x49\x43\x45\x0a\x0a\x46\x72\x65\x65\x20\x61\x6c\x6c" \
-"\x20\x6d\x65\x6d\x6f\x72\x79\x20\x75\x73\x65\x64\x20\x62\x79\x20" \
-"\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x72\x61" \
-"\x6d\x64\x69\x73\x6b\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20" \
-"\x4d\x4f\x55\x4e\x54\x50\x4f\x49\x4e\x54\x0a\x0a\x09\x2d\x6f\x2c" \
-"\x2d\x2d\x6f\x66\x66\x73\x65\x74\x3d\x4f\x46\x46\x53\x45\x54\x09" \
-"\x4f\x66\x66\x73\x65\x74\x20\x69\x6e\x20\x62\x79\x74\x65\x73\x20" \
-"\x74\x6f\x20\x64\x69\x73\x63\x61\x72\x64\x20\x66\x72\x6f\x6d\x0a" \
-"\x09\x2d\x6c\x2c\x2d\x2d\x6c\x65\x6e\x67\x74\x68\x3d\x4c\x45\x4e" \
-"\x09\x09\x42\x79\x74\x65\x73\x20\x74\x6f\x20\x64\x69\x73\x63\x61" \
-"\x72\x64\x0a\x09\x2d\x6d\x2c\x2d\x2d\x6d\x69\x6e\x69\x6d\x75\x6d" \
-"\x3d\x4d\x49\x4e\x09\x4d\x69\x6e\x69\x6d\x75\x6d\x20\x65\x78\x74" \
-"\x65\x6e\x74\x20\x6c\x65\x6e\x67\x74\x68\x0a\x09\x2d\x76\x2c\x2d" \
-"\x2d\x76\x65\x72\x62\x6f\x73\x65\x09\x09\x50\x72\x69\x6e\x74\x20" \
-"\x6e\x75\x6d\x62\x65\x72\x20\x6f\x66\x20\x64\x69\x73\x63\x61\x72" \
-"\x64\x65\x64\x20\x62\x79\x74\x65\x73\x00\x5b\x4f\x50\x54\x49\x4f" \
-"\x4e\x53\x5d\x20\x46\x49\x4c\x45\x20\x6f\x72\x20\x50\x4f\x52\x54" \
-"\x2f\x50\x52\x4f\x54\x4f\x0a\x0a\x46\x69\x6e\x64\x20\x70\x72\x6f" \
-"\x63\x65\x73\x73\x65\x73\x20\x77\x68\x69\x63\x68\x20\x75\x73\x65" \
-"\x20\x46\x49\x4c\x45\x73\x20\x6f\x72\x20\x50\x4f\x52\x54\x73\x0a" \
-"\x0a\x09\x2d\x6d\x09\x46\x69\x6e\x64\x20\x70\x72\x6f\x63\x65\x73" \
-"\x73\x65\x73\x20\x77\x68\x69\x63\x68\x20\x75\x73\x65\x20\x73\x61" \
-"\x6d\x65\x20\x66\x73\x20\x61\x73\x20\x46\x49\x4c\x45\x73\x0a\x09" \
-"\x2d\x34\x2c\x2d\x36\x09\x53\x65\x61\x72\x63\x68\x20\x6f\x6e\x6c" \
-"\x79\x20\x49\x50\x76\x34\x2f\x49\x50\x76\x36\x20\x73\x70\x61\x63" \
-"\x65\x0a\x09\x2d\x73\x09\x44\x6f\x6e\x27\x74\x20\x64\x69\x73\x70" \
-"\x6c\x61\x79\x20\x50\x49\x44\x73\x0a\x09\x2d\x6b\x09\x4b\x69\x6c" \
-"\x6c\x20\x66\x6f\x75\x6e\x64\x20\x70\x72\x6f\x63\x65\x73\x73\x65" \
-"\x73\x0a\x09\x2d\x53\x49\x47\x4e\x41\x4c\x09\x53\x69\x67\x6e\x61" \
-"\x6c\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x28\x64\x65\x66\x61\x75" \
-"\x6c\x74\x3a\x20\x4b\x49\x4c\x4c\x29\x00\x5b\x4f\x50\x54\x49\x4f" \
-"\x4e\x53\x5d\x20\x5b\x2d\x2d\x5d\x20\x4f\x50\x54\x53\x54\x52\x49" \
-"\x4e\x47\x20\x50\x41\x52\x41\x4d\x53\x0a\x0a\x09\x2d\x61\x2c\x2d" \
-"\x2d\x61\x6c\x74\x65\x72\x6e\x61\x74\x69\x76\x65\x09\x09\x41\x6c" \
-"\x6c\x6f\x77\x20\x6c\x6f\x6e\x67\x20\x6f\x70\x74\x69\x6f\x6e\x73" \
-"\x20\x73\x74\x61\x72\x74\x69\x6e\x67\x20\x77\x69\x74\x68\x20\x73" \
-"\x69\x6e\x67\x6c\x65\x20\x2d\x0a\x09\x2d\x6c\x2c\x2d\x2d\x6c\x6f" \
-"\x6e\x67\x6f\x70\x74\x69\x6f\x6e\x73\x3d\x4c\x4f\x50\x54\x5b\x2c" \
-"\x2e\x2e\x2e\x5d\x09\x4c\x6f\x6e\x67\x20\x6f\x70\x74\x69\x6f\x6e" \
-"\x73\x20\x74\x6f\x20\x62\x65\x20\x72\x65\x63\x6f\x67\x6e\x69\x7a" \
-"\x65\x64\x0a\x09\x2d\x6e\x2c\x2d\x2d\x6e\x61\x6d\x65\x3d\x50\x52" \
-"\x4f\x47\x4e\x41\x4d\x45\x09\x09\x54\x68\x65\x20\x6e\x61\x6d\x65" \
-"\x20\x75\x6e\x64\x65\x72\x20\x77\x68\x69\x63\x68\x20\x65\x72\x72" \
-"\x6f\x72\x73\x20\x61\x72\x65\x20\x72\x65\x70\x6f\x72\x74\x65\x64" \
-"\x0a\x09\x2d\x6f\x2c\x2d\x2d\x6f\x70\x74\x69\x6f\x6e\x73\x3d\x4f" \
-"\x50\x54\x53\x54\x52\x49\x4e\x47\x09\x09\x53\x68\x6f\x72\x74\x20" \
-"\x6f\x70\x74\x69\x6f\x6e\x73\x20\x74\x6f\x20\x62\x65\x20\x72\x65" \
-"\x63\x6f\x67\x6e\x69\x7a\x65\x64\x0a\x09\x2d\x71\x2c\x2d\x2d\x71" \
-"\x75\x69\x65\x74\x09\x09\x09\x44\x69\x73\x61\x62\x6c\x65\x20\x65" \
-"\x72\x72\x6f\x72\x20\x72\x65\x70\x6f\x72\x74\x69\x6e\x67\x20\x62" \
-"\x79\x20\x67\x65\x74\x6f\x70\x74\x28\x33\x29\x0a\x09\x2d\x51\x2c" \
-"\x2d\x2d\x71\x75\x69\x65\x74\x2d\x6f\x75\x74\x70\x75\x74\x09\x09" \
-"\x4e\x6f\x20\x6e\x6f\x72\x6d\x61\x6c\x20\x6f\x75\x74\x70\x75\x74" \
-"\x0a\x09\x2d\x73\x2c\x2d\x2d\x73\x68\x65\x6c\x6c\x3d\x53\x48\x45" \
-"\x4c\x4c\x09\x09\x53\x65\x74\x20\x73\x68\x65\x6c\x6c\x20\x71\x75" \
-"\x6f\x74\x69\x6e\x67\x20\x63\x6f\x6e\x76\x65\x6e\x74\x69\x6f\x6e" \
-"\x73\x0a\x09\x2d\x54\x2c\x2d\x2d\x74\x65\x73\x74\x09\x09\x09\x54" \
-"\x65\x73\x74\x20\x66\x6f\x72\x20\x67\x65\x74\x6f\x70\x74\x28\x31" \
-"\x29\x20\x76\x65\x72\x73\x69\x6f\x6e\x0a\x09\x2d\x75\x2c\x2d\x2d" \
-"\x75\x6e\x71\x75\x6f\x74\x65\x64\x09\x09\x09\x44\x6f\x6e\x27\x74" \
-"\x20\x71\x75\x6f\x74\x65\x20\x74\x68\x65\x20\x6f\x75\x74\x70\x75" \
-"\x74\x0a\x0a\x45\x78\x61\x6d\x70\x6c\x65\x3a\x0a\x0a\x4f\x3d\x60" \
-"\x67\x65\x74\x6f\x70\x74\x20\x2d\x6c\x20\x62\x62\x3a\x20\x2d\x2d" \
-"\x20\x61\x62\x3a\x63\x3a\x3a\x20\x22\x24\x40\x22\x60\x20\x7c\x7c" \
-"\x20\x65\x78\x69\x74\x20\x31\x0a\x65\x76\x61\x6c\x20\x73\x65\x74" \
-"\x20\x2d\x2d\x20\x22\x24\x4f\x22\x0a\x77\x68\x69\x6c\x65\x20\x74" \
-"\x72\x75\x65\x3b\x20\x64\x6f\x0a\x09\x63\x61\x73\x65\x20\x22\x24" \
-"\x31\x22\x20\x69\x6e\x0a\x09\x2d\x61\x29\x09\x65\x63\x68\x6f\x20" \
-"\x41\x3b\x20\x73\x68\x69\x66\x74\x3b\x3b\x0a\x09\x2d\x62\x7c\x2d" \
-"\x2d\x62\x62\x29\x20\x65\x63\x68\x6f\x20\x22\x42\x3a\x27\x24\x32" \
-"\x27\x22\x3b\x20\x73\x68\x69\x66\x74\x20\x32\x3b\x3b\x0a\x09\x2d" \
-"\x63\x29\x09\x63\x61\x73\x65\x20\x22\x24\x32\x22\x20\x69\x6e\x0a" \
-"\x09\x09\x22\x22\x29\x09\x65\x63\x68\x6f\x20\x43\x3b\x20\x73\x68" \
-"\x69\x66\x74\x20\x32\x3b\x3b\x0a\x09\x09\x2a\x29\x09\x65\x63\x68" \
-"\x6f\x20\x22\x43\x3a\x27\x24\x32\x27\x22\x3b\x20\x73\x68\x69\x66" \
-"\x74\x20\x32\x3b\x3b\x0a\x09\x09\x65\x73\x61\x63\x3b\x3b\x0a\x09" \
-"\x2d\x2d\x29\x09\x73\x68\x69\x66\x74\x3b\x20\x62\x72\x65\x61\x6b" \
-"\x3b\x3b\x0a\x09\x2a\x29\x09\x65\x63\x68\x6f\x20\x45\x72\x72\x6f" \
-"\x72\x3b\x20\x65\x78\x69\x74\x20\x31\x3b\x3b\x0a\x09\x65\x73\x61" \
-"\x63\x0a\x64\x6f\x6e\x65\x00\x5b\x2d\x48\x68\x6e\x6c\x4c\x6f\x71" \
-"\x76\x73\x72\x69\x77\x46\x45\x5d\x20\x5b\x2d\x6d\x20\x4e\x5d\x20" \
-"\x5b\x2d\x41\x2f\x42\x2f\x43\x20\x4e\x5d\x20\x50\x41\x54\x54\x45" \
-"\x52\x4e\x2f\x2d\x65\x20\x50\x41\x54\x54\x45\x52\x4e\x2e\x2e\x2e" \
-"\x2f\x2d\x66\x20\x46\x49\x4c\x45\x20\x5b\x46\x49\x4c\x45\x5d\x2e" \
-"\x2e\x2e\x0a\x0a\x53\x65\x61\x72\x63\x68\x20\x66\x6f\x72\x20\x50" \
-"\x41\x54\x54\x45\x52\x4e\x20\x69\x6e\x20\x46\x49\x4c\x45\x73\x20" \
-"\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x0a\x0a\x09\x2d\x48\x09" \
-"\x41\x64\x64\x20\x27\x66\x69\x6c\x65\x6e\x61\x6d\x65\x3a\x27\x20" \
-"\x70\x72\x65\x66\x69\x78\x0a\x09\x2d\x68\x09\x44\x6f\x20\x6e\x6f" \
-"\x74\x20\x61\x64\x64\x20\x27\x66\x69\x6c\x65\x6e\x61\x6d\x65\x3a" \
-"\x27\x20\x70\x72\x65\x66\x69\x78\x0a\x09\x2d\x6e\x09\x41\x64\x64" \
-"\x20\x27\x6c\x69\x6e\x65\x5f\x6e\x6f\x3a\x27\x20\x70\x72\x65\x66" \
-"\x69\x78\x0a\x09\x2d\x6c\x09\x53\x68\x6f\x77\x20\x6f\x6e\x6c\x79" \
-"\x20\x6e\x61\x6d\x65\x73\x20\x6f\x66\x20\x66\x69\x6c\x65\x73\x20" \
-"\x74\x68\x61\x74\x20\x6d\x61\x74\x63\x68\x0a\x09\x2d\x4c\x09\x53" \
-"\x68\x6f\x77\x20\x6f\x6e\x6c\x79\x20\x6e\x61\x6d\x65\x73\x20\x6f" \
-"\x66\x20\x66\x69\x6c\x65\x73\x20\x74\x68\x61\x74\x20\x64\x6f\x6e" \
-"\x27\x74\x20\x6d\x61\x74\x63\x68\x0a\x09\x2d\x63\x09\x53\x68\x6f" \
-"\x77\x20\x6f\x6e\x6c\x79\x20\x63\x6f\x75\x6e\x74\x20\x6f\x66\x20" \
-"\x6d\x61\x74\x63\x68\x69\x6e\x67\x20\x6c\x69\x6e\x65\x73\x0a\x09" \
-"\x2d\x6f\x09\x53\x68\x6f\x77\x20\x6f\x6e\x6c\x79\x20\x74\x68\x65" \
-"\x20\x6d\x61\x74\x63\x68\x69\x6e\x67\x20\x70\x61\x72\x74\x20\x6f" \
-"\x66\x20\x6c\x69\x6e\x65\x0a\x09\x2d\x71\x09\x51\x75\x69\x65\x74" \
-"\x2e\x20\x52\x65\x74\x75\x72\x6e\x20\x30\x20\x69\x66\x20\x50\x41" \
-"\x54\x54\x45\x52\x4e\x20\x69\x73\x20\x66\x6f\x75\x6e\x64\x2c\x20" \
-"\x31\x20\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x0a\x09\x2d\x76\x09" \
-"\x53\x65\x6c\x65\x63\x74\x20\x6e\x6f\x6e\x2d\x6d\x61\x74\x63\x68" \
-"\x69\x6e\x67\x20\x6c\x69\x6e\x65\x73\x0a\x09\x2d\x73\x09\x53\x75" \
-"\x70\x70\x72\x65\x73\x73\x20\x6f\x70\x65\x6e\x20\x61\x6e\x64\x20" \
-"\x72\x65\x61\x64\x20\x65\x72\x72\x6f\x72\x73\x0a\x09\x2d\x72\x09" \
-"\x52\x65\x63\x75\x72\x73\x65\x0a\x09\x2d\x69\x09\x49\x67\x6e\x6f" \
-"\x72\x65\x20\x63\x61\x73\x65\x0a\x09\x2d\x77\x09\x4d\x61\x74\x63" \
-"\x68\x20\x77\x68\x6f\x6c\x65\x20\x77\x6f\x72\x64\x73\x20\x6f\x6e" \
-"\x6c\x79\x0a\x09\x2d\x78\x09\x4d\x61\x74\x63\x68\x20\x77\x68\x6f" \
-"\x6c\x65\x20\x6c\x69\x6e\x65\x73\x20\x6f\x6e\x6c\x79\x0a\x09\x2d" \
-"\x46\x09\x50\x41\x54\x54\x45\x52\x4e\x20\x69\x73\x20\x61\x20\x6c" \
-"\x69\x74\x65\x72\x61\x6c\x20\x28\x6e\x6f\x74\x20\x72\x65\x67\x65" \
-"\x78\x70\x29\x0a\x09\x2d\x45\x09\x50\x41\x54\x54\x45\x52\x4e\x20" \
-"\x69\x73\x20\x61\x6e\x20\x65\x78\x74\x65\x6e\x64\x65\x64\x20\x72" \
-"\x65\x67\x65\x78\x70\x0a\x09\x2d\x6d\x20\x4e\x09\x4d\x61\x74\x63" \
-"\x68\x20\x75\x70\x20\x74\x6f\x20\x4e\x20\x74\x69\x6d\x65\x73\x20" \
-"\x70\x65\x72\x20\x66\x69\x6c\x65\x0a\x09\x2d\x41\x20\x4e\x09\x50" \
-"\x72\x69\x6e\x74\x20\x4e\x20\x6c\x69\x6e\x65\x73\x20\x6f\x66\x20" \
-"\x74\x72\x61\x69\x6c\x69\x6e\x67\x20\x63\x6f\x6e\x74\x65\x78\x74" \
-"\x0a\x09\x2d\x42\x20\x4e\x09\x50\x72\x69\x6e\x74\x20\x4e\x20\x6c" \
-"\x69\x6e\x65\x73\x20\x6f\x66\x20\x6c\x65\x61\x64\x69\x6e\x67\x20" \
-"\x63\x6f\x6e\x74\x65\x78\x74\x0a\x09\x2d\x43\x20\x4e\x09\x53\x61" \
-"\x6d\x65\x20\x61\x73\x20\x27\x2d\x41\x20\x4e\x20\x2d\x42\x20\x4e" \
-"\x27\x0a\x09\x2d\x65\x20\x50\x54\x52\x4e\x09\x50\x61\x74\x74\x65" \
-"\x72\x6e\x20\x74\x6f\x20\x6d\x61\x74\x63\x68\x0a\x09\x2d\x66\x20" \
-"\x46\x49\x4c\x45\x09\x52\x65\x61\x64\x20\x70\x61\x74\x74\x65\x72" \
-"\x6e\x20\x66\x72\x6f\x6d\x20\x66\x69\x6c\x65\x00\x5b\x55\x53\x45" \
-"\x52\x5d\x0a\x0a\x50\x72\x69\x6e\x74\x20\x74\x68\x65\x20\x67\x72" \
-"\x6f\x75\x70\x20\x6d\x65\x6d\x62\x65\x72\x73\x68\x69\x70\x73\x20" \
-"\x6f\x66\x20\x55\x53\x45\x52\x20\x6f\x72\x20\x66\x6f\x72\x20\x74" \
-"\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x70\x72\x6f\x63\x65" \
-"\x73\x73\x00\x5b\x2d\x63\x66\x74\x5d\x20\x5b\x46\x49\x4c\x45\x5d" \
-"\x2e\x2e\x2e\x0a\x0a\x44\x65\x63\x6f\x6d\x70\x72\x65\x73\x73\x20" \
-"\x46\x49\x4c\x45\x73\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29" \
-"\x0a\x0a\x09\x2d\x63\x09\x57\x72\x69\x74\x65\x20\x74\x6f\x20\x73" \
-"\x74\x64\x6f\x75\x74\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x0a" \
-"\x09\x2d\x74\x09\x54\x65\x73\x74\x20\x66\x69\x6c\x65\x20\x69\x6e" \
-"\x74\x65\x67\x72\x69\x74\x79\x00\x5b\x2d\x63\x66\x64\x5d\x20\x5b" \
-"\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x6f\x6d\x70\x72\x65" \
-"\x73\x73\x20\x46\x49\x4c\x45\x73\x20\x28\x6f\x72\x20\x73\x74\x64" \
-"\x69\x6e\x29\x0a\x0a\x09\x2d\x64\x09\x44\x65\x63\x6f\x6d\x70\x72" \
-"\x65\x73\x73\x0a\x09\x2d\x63\x09\x57\x72\x69\x74\x65\x20\x74\x6f" \
-"\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63" \
-"\x65\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x46\x49\x4c" \
-"\x45\x5d\x2e\x2e\x2e\x0a\x0a\x50\x72\x69\x6e\x74\x20\x66\x69\x72" \
-"\x73\x74\x20\x31\x30\x20\x6c\x69\x6e\x65\x73\x20\x6f\x66\x20\x65" \
-"\x61\x63\x68\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20\x73\x74\x64" \
-"\x69\x6e\x29\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x2e\x0a\x57" \
-"\x69\x74\x68\x20\x6d\x6f\x72\x65\x20\x74\x68\x61\x6e\x20\x6f\x6e" \
-"\x65\x20\x46\x49\x4c\x45\x2c\x20\x70\x72\x65\x63\x65\x64\x65\x20" \
-"\x65\x61\x63\x68\x20\x77\x69\x74\x68\x20\x61\x20\x66\x69\x6c\x65" \
-"\x6e\x61\x6d\x65\x20\x68\x65\x61\x64\x65\x72\x2e\x0a\x0a\x09\x2d" \
-"\x6e\x20\x4e\x5b\x6b\x62\x6d\x5d\x09\x50\x72\x69\x6e\x74\x20\x66" \
-"\x69\x72\x73\x74\x20\x4e\x20\x6c\x69\x6e\x65\x73\x0a\x0a\x4e\x20" \
-"\x6d\x61\x79\x20\x62\x65\x20\x73\x75\x66\x66\x69\x78\x65\x64\x20" \
-"\x62\x79\x20\x6b\x20\x28\x78\x31\x30\x32\x34\x29\x2c\x20\x62\x20" \
-"\x28\x78\x35\x31\x32\x29\x2c\x20\x6f\x72\x20\x6d\x20\x28\x78\x31" \
-"\x30\x32\x34\x5e\x32\x29\x2e\x00\x5b\x2d\x62\x63\x43\x64\x65\x66" \
-"\x6e\x6f\x73\x76\x78\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e" \
-"\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x46\x49\x4c\x45\x73\x20" \
-"\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x20\x69\x6e\x20\x61\x20" \
-"\x75\x73\x65\x72\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x66" \
-"\x6f\x72\x6d\x61\x74\x0a\x0a\x09\x2d\x62\x09\x09\x4f\x6e\x65\x2d" \
-"\x62\x79\x74\x65\x20\x6f\x63\x74\x61\x6c\x20\x64\x69\x73\x70\x6c" \
-"\x61\x79\x0a\x09\x2d\x63\x09\x09\x4f\x6e\x65\x2d\x62\x79\x74\x65" \
-"\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x20\x64\x69\x73\x70\x6c" \
-"\x61\x79\x0a\x09\x2d\x43\x09\x09\x43\x61\x6e\x6f\x6e\x69\x63\x61" \
-"\x6c\x20\x68\x65\x78\x2b\x41\x53\x43\x49\x49\x2c\x20\x31\x36\x20" \
-"\x62\x79\x74\x65\x73\x20\x70\x65\x72\x20\x6c\x69\x6e\x65\x0a\x09" \
-"\x2d\x64\x09\x09\x54\x77\x6f\x2d\x62\x79\x74\x65\x20\x64\x65\x63" \
-"\x69\x6d\x61\x6c\x20\x64\x69\x73\x70\x6c\x61\x79\x0a\x09\x2d\x65" \
-"\x20\x46\x4f\x52\x4d\x41\x54\x5f\x53\x54\x52\x49\x4e\x47\x0a\x09" \
-"\x2d\x66\x20\x46\x4f\x52\x4d\x41\x54\x5f\x46\x49\x4c\x45\x0a\x09" \
-"\x2d\x6e\x20\x4c\x45\x4e\x47\x54\x48\x09\x49\x6e\x74\x65\x72\x70" \
-"\x72\x65\x74\x20\x6f\x6e\x6c\x79\x20\x4c\x45\x4e\x47\x54\x48\x20" \
-"\x62\x79\x74\x65\x73\x20\x6f\x66\x20\x69\x6e\x70\x75\x74\x0a\x09" \
-"\x2d\x6f\x09\x09\x54\x77\x6f\x2d\x62\x79\x74\x65\x20\x6f\x63\x74" \
-"\x61\x6c\x20\x64\x69\x73\x70\x6c\x61\x79\x0a\x09\x2d\x73\x20\x4f" \
-"\x46\x46\x53\x45\x54\x09\x53\x6b\x69\x70\x20\x4f\x46\x46\x53\x45" \
-"\x54\x20\x62\x79\x74\x65\x73\x0a\x09\x2d\x76\x09\x09\x44\x69\x73" \
-"\x70\x6c\x61\x79\x20\x61\x6c\x6c\x20\x69\x6e\x70\x75\x74\x20\x64" \
-"\x61\x74\x61\x0a\x09\x2d\x78\x09\x09\x54\x77\x6f\x2d\x62\x79\x74" \
-"\x65\x20\x68\x65\x78\x61\x64\x65\x63\x69\x6d\x61\x6c\x20\x64\x69" \
-"\x73\x70\x6c\x61\x79\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20" \
-"\x5b\x55\x53\x45\x52\x5d\x0a\x0a\x50\x72\x69\x6e\x74\x20\x69\x6e" \
-"\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x20\x61\x62\x6f\x75\x74\x20" \
-"\x55\x53\x45\x52\x20\x6f\x72\x20\x74\x68\x65\x20\x63\x75\x72\x72" \
-"\x65\x6e\x74\x20\x75\x73\x65\x72\x0a\x0a\x09\x2d\x75\x09\x55\x73" \
-"\x65\x72\x20\x49\x44\x0a\x09\x2d\x67\x09\x47\x72\x6f\x75\x70\x20" \
-"\x49\x44\x0a\x09\x2d\x47\x09\x53\x75\x70\x70\x6c\x65\x6d\x65\x6e" \
-"\x74\x61\x72\x79\x20\x67\x72\x6f\x75\x70\x20\x49\x44\x73\x0a\x09" \
-"\x2d\x6e\x09\x50\x72\x69\x6e\x74\x20\x6e\x61\x6d\x65\x73\x20\x69" \
-"\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x6e\x75\x6d\x62\x65\x72" \
-"\x73\x0a\x09\x2d\x72\x09\x50\x72\x69\x6e\x74\x20\x72\x65\x61\x6c" \
-"\x20\x49\x44\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x65" \
-"\x66\x66\x65\x63\x74\x69\x76\x65\x20\x49\x44\x00\x5b\x2d\x71\x66" \
-"\x77\x72\x73\x76\x5d\x20\x4d\x4f\x44\x55\x4c\x45\x20\x5b\x73\x79" \
-"\x6d\x62\x6f\x6c\x3d\x76\x61\x6c\x75\x65\x5d\x2e\x2e\x2e\x0a\x0a" \
-"\x09\x2d\x72\x09\x52\x65\x6d\x6f\x76\x65\x20\x4d\x4f\x44\x55\x4c" \
-"\x45\x20\x28\x73\x74\x61\x63\x6b\x73\x29\x20\x6f\x72\x20\x64\x6f" \
-"\x20\x61\x75\x74\x6f\x63\x6c\x65\x61\x6e\x0a\x09\x2d\x71\x09\x51" \
-"\x75\x69\x65\x74\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73\x65" \
-"\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x0a\x09\x2d\x77\x09\x57" \
-"\x61\x69\x74\x20\x66\x6f\x72\x20\x75\x6e\x6c\x6f\x61\x64\x0a\x09" \
-"\x2d\x73\x09\x52\x65\x70\x6f\x72\x74\x20\x76\x69\x61\x20\x73\x79" \
-"\x73\x6c\x6f\x67\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20" \
-"\x73\x74\x64\x65\x72\x72\x00\x5b\x2d\x63\x64\x44\x73\x70\x5d\x20" \
-"\x5b\x2d\x6f\x20\x55\x53\x45\x52\x5d\x20\x5b\x2d\x67\x20\x47\x52" \
-"\x50\x5d\x20\x5b\x2d\x6d\x20\x4d\x4f\x44\x45\x5d\x20\x5b\x53\x4f" \
-"\x55\x52\x43\x45\x5d\x2e\x2e\x2e\x20\x44\x45\x53\x54\x0a\x0a\x43" \
-"\x6f\x70\x79\x20\x66\x69\x6c\x65\x73\x20\x61\x6e\x64\x20\x73\x65" \
-"\x74\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73\x0a\x0a\x09\x2d" \
-"\x63\x09\x4a\x75\x73\x74\x20\x63\x6f\x70\x79\x20\x28\x64\x65\x66" \
-"\x61\x75\x6c\x74\x29\x0a\x09\x2d\x64\x09\x43\x72\x65\x61\x74\x65" \
-"\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x0a\x09\x2d\x44" \
-"\x09\x43\x72\x65\x61\x74\x65\x20\x6c\x65\x61\x64\x69\x6e\x67\x20" \
-"\x74\x61\x72\x67\x65\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69" \
-"\x65\x73\x0a\x09\x2d\x73\x09\x53\x74\x72\x69\x70\x20\x73\x79\x6d" \
-"\x62\x6f\x6c\x20\x74\x61\x62\x6c\x65\x0a\x09\x2d\x70\x09\x50\x72" \
-"\x65\x73\x65\x72\x76\x65\x20\x64\x61\x74\x65\x0a\x09\x2d\x6f\x20" \
-"\x55\x53\x45\x52\x09\x53\x65\x74\x20\x6f\x77\x6e\x65\x72\x73\x68" \
-"\x69\x70\x0a\x09\x2d\x67\x20\x47\x52\x50\x09\x53\x65\x74\x20\x67" \
-"\x72\x6f\x75\x70\x20\x6f\x77\x6e\x65\x72\x73\x68\x69\x70\x0a\x09" \
-"\x2d\x6d\x20\x4d\x4f\x44\x45\x09\x53\x65\x74\x20\x70\x65\x72\x6d" \
-"\x69\x73\x73\x69\x6f\x6e\x73\x00\x5b\x2d\x6c\x5d\x20\x5b\x2d\x53" \
-"\x49\x47\x5d\x20\x50\x49\x44\x2e\x2e\x2e\x0a\x0a\x53\x65\x6e\x64" \
-"\x20\x61\x20\x73\x69\x67\x6e\x61\x6c\x20\x28\x64\x65\x66\x61\x75" \
-"\x6c\x74\x3a\x20\x54\x45\x52\x4d\x29\x20\x74\x6f\x20\x67\x69\x76" \
-"\x65\x6e\x20\x50\x49\x44\x73\x0a\x0a\x09\x2d\x6c\x09\x4c\x69\x73" \
-"\x74\x20\x61\x6c\x6c\x20\x73\x69\x67\x6e\x61\x6c\x20\x6e\x61\x6d" \
-"\x65\x73\x20\x61\x6e\x64\x20\x6e\x75\x6d\x62\x65\x72\x73\x00\x5b" \
-"\x2d\x6c\x5d\x20\x5b\x2d\x71\x5d\x20\x5b\x2d\x53\x49\x47\x5d\x20" \
-"\x50\x52\x4f\x43\x45\x53\x53\x5f\x4e\x41\x4d\x45\x2e\x2e\x2e\x0a" \
-"\x0a\x53\x65\x6e\x64\x20\x61\x20\x73\x69\x67\x6e\x61\x6c\x20\x28" \
-"\x64\x65\x66\x61\x75\x6c\x74\x3a\x20\x54\x45\x52\x4d\x29\x20\x74" \
-"\x6f\x20\x67\x69\x76\x65\x6e\x20\x70\x72\x6f\x63\x65\x73\x73\x65" \
-"\x73\x0a\x0a\x09\x2d\x6c\x09\x4c\x69\x73\x74\x20\x61\x6c\x6c\x20" \
-"\x73\x69\x67\x6e\x61\x6c\x20\x6e\x61\x6d\x65\x73\x20\x61\x6e\x64" \
-"\x20\x6e\x75\x6d\x62\x65\x72\x73\x0a\x09\x2d\x71\x09\x44\x6f\x6e" \
-"\x27\x74\x20\x63\x6f\x6d\x70\x6c\x61\x69\x6e\x20\x69\x66\x20\x6e" \
-"\x6f\x20\x70\x72\x6f\x63\x65\x73\x73\x65\x73\x20\x77\x65\x72\x65" \
-"\x20\x6b\x69\x6c\x6c\x65\x64\x00\x5b\x2d\x6c\x5d\x20\x5b\x2d\x53" \
-"\x49\x47\x5d\x20\x5b\x2d\x6f\x20\x50\x49\x44\x5d\x2e\x2e\x2e\x0a" \
-"\x0a\x53\x65\x6e\x64\x20\x61\x20\x73\x69\x67\x6e\x61\x6c\x20\x28" \
-"\x64\x65\x66\x61\x75\x6c\x74\x3a\x20\x54\x45\x52\x4d\x29\x20\x74" \
-"\x6f\x20\x61\x6c\x6c\x20\x70\x72\x6f\x63\x65\x73\x73\x65\x73\x20" \
-"\x6f\x75\x74\x73\x69\x64\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20" \
-"\x73\x65\x73\x73\x69\x6f\x6e\x0a\x0a\x09\x2d\x6c\x09\x4c\x69\x73" \
-"\x74\x20\x61\x6c\x6c\x20\x73\x69\x67\x6e\x61\x6c\x20\x6e\x61\x6d" \
-"\x65\x73\x20\x61\x6e\x64\x20\x6e\x75\x6d\x62\x65\x72\x73\x0a\x09" \
-"\x2d\x6f\x20\x50\x49\x44\x09\x44\x6f\x6e\x27\x74\x20\x73\x69\x67" \
-"\x6e\x61\x6c\x20\x74\x68\x69\x73\x20\x50\x49\x44\x00\x5b\x2d\x45" \
-"\x4e\x68\x7e\x49\x3f\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e" \
-"\x0a\x0a\x56\x69\x65\x77\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20" \
-"\x73\x74\x64\x69\x6e\x29\x20\x6f\x6e\x65\x20\x73\x63\x72\x65\x65" \
-"\x6e\x66\x75\x6c\x20\x61\x74\x20\x61\x20\x74\x69\x6d\x65\x0a\x0a" \
-"\x09\x2d\x45\x09\x51\x75\x69\x74\x20\x6f\x6e\x63\x65\x20\x74\x68" \
-"\x65\x20\x65\x6e\x64\x20\x6f\x66\x20\x61\x20\x66\x69\x6c\x65\x20" \
-"\x69\x73\x20\x72\x65\x61\x63\x68\x65\x64\x0a\x09\x2d\x4e\x09\x50" \
-"\x72\x65\x66\x69\x78\x20\x6c\x69\x6e\x65\x20\x6e\x75\x6d\x62\x65" \
-"\x72\x20\x74\x6f\x20\x65\x61\x63\x68\x20\x6c\x69\x6e\x65\x0a\x09" \
-"\x2d\x49\x09\x49\x67\x6e\x6f\x72\x65\x20\x63\x61\x73\x65\x20\x69" \
-"\x6e\x20\x61\x6c\x6c\x20\x73\x65\x61\x72\x63\x68\x65\x73\x0a\x09" \
-"\x2d\x7e\x09\x53\x75\x70\x70\x72\x65\x73\x73\x20\x7e\x73\x20\x64" \
-"\x69\x73\x70\x6c\x61\x79\x65\x64\x20\x70\x61\x73\x74\x20\x45\x4f" \
-"\x46\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x54\x41\x52\x47" \
-"\x45\x54\x2e\x2e\x2e\x20\x4c\x49\x4e\x4b\x7c\x44\x49\x52\x0a\x0a" \
-"\x43\x72\x65\x61\x74\x65\x20\x61\x20\x6c\x69\x6e\x6b\x20\x4c\x49" \
-"\x4e\x4b\x20\x6f\x72\x20\x44\x49\x52\x2f\x54\x41\x52\x47\x45\x54" \
-"\x20\x74\x6f\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65" \
-"\x64\x20\x54\x41\x52\x47\x45\x54\x28\x73\x29\x0a\x0a\x09\x2d\x73" \
-"\x09\x4d\x61\x6b\x65\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20\x69" \
-"\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x68\x61\x72\x64\x6c\x69" \
-"\x6e\x6b\x73\x0a\x09\x2d\x66\x09\x52\x65\x6d\x6f\x76\x65\x20\x65" \
-"\x78\x69\x73\x74\x69\x6e\x67\x20\x64\x65\x73\x74\x69\x6e\x61\x74" \
-"\x69\x6f\x6e\x73\x0a\x09\x2d\x6e\x09\x44\x6f\x6e\x27\x74\x20\x64" \
-"\x65\x72\x65\x66\x65\x72\x65\x6e\x63\x65\x20\x73\x79\x6d\x6c\x69" \
-"\x6e\x6b\x73\x20\x2d\x20\x74\x72\x65\x61\x74\x20\x6c\x69\x6b\x65" \
-"\x20\x6e\x6f\x72\x6d\x61\x6c\x20\x66\x69\x6c\x65\x0a\x09\x2d\x62" \
-"\x09\x4d\x61\x6b\x65\x20\x61\x20\x62\x61\x63\x6b\x75\x70\x20\x6f" \
-"\x66\x20\x74\x68\x65\x20\x74\x61\x72\x67\x65\x74\x20\x28\x69\x66" \
-"\x20\x65\x78\x69\x73\x74\x73\x29\x20\x62\x65\x66\x6f\x72\x65\x20" \
-"\x6c\x69\x6e\x6b\x20\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\x0a\x09" \
-"\x2d\x53\x20\x73\x75\x66\x09\x55\x73\x65\x20\x73\x75\x66\x66\x69" \
-"\x78\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x7e\x20\x77" \
-"\x68\x65\x6e\x20\x6d\x61\x6b\x69\x6e\x67\x20\x62\x61\x63\x6b\x75" \
-"\x70\x20\x66\x69\x6c\x65\x73\x0a\x09\x2d\x54\x09\x32\x6e\x64\x20" \
-"\x61\x72\x67\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x61\x20\x44\x49" \
-"\x52\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73\x65\x00\x5b\x2d" \
-"\x72\x5d\x20\x5b\x2d\x6f\x20\x4f\x46\x53\x5d\x20\x4c\x4f\x4f\x50" \
-"\x44\x45\x56\x20\x46\x49\x4c\x45\x20\x2d\x20\x61\x73\x73\x6f\x63" \
-"\x69\x61\x74\x65\x20\x6c\x6f\x6f\x70\x20\x64\x65\x76\x69\x63\x65" \
-"\x73\x0a\x09\x6c\x6f\x73\x65\x74\x75\x70\x20\x2d\x64\x20\x4c\x4f" \
-"\x4f\x50\x44\x45\x56\x20\x2d\x20\x64\x69\x73\x61\x73\x73\x6f\x63" \
-"\x69\x61\x74\x65\x0a\x09\x6c\x6f\x73\x65\x74\x75\x70\x20\x5b\x2d" \
-"\x66\x5d\x20\x2d\x20\x73\x68\x6f\x77\x0a\x0a\x09\x2d\x6f\x20\x4f" \
-"\x46\x53\x09\x53\x74\x61\x72\x74\x20\x4f\x46\x53\x20\x62\x79\x74" \
-"\x65\x73\x20\x69\x6e\x74\x6f\x20\x46\x49\x4c\x45\x0a\x09\x2d\x72" \
-"\x09\x52\x65\x61\x64\x2d\x6f\x6e\x6c\x79\x0a\x09\x2d\x66\x09\x53" \
-"\x68\x6f\x77\x20\x66\x69\x72\x73\x74\x20\x66\x72\x65\x65\x20\x6c" \
-"\x6f\x6f\x70\x20\x64\x65\x76\x69\x63\x65\x00\x5b\x2d\x31\x41\x61" \
-"\x43\x78\x64\x4c\x48\x52\x46\x70\x6c\x69\x6e\x73\x65\x68\x72\x53" \
-"\x58\x76\x63\x74\x75\x5d\x20\x5b\x2d\x77\x20\x57\x49\x44\x54\x48" \
-"\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x4c\x69\x73" \
-"\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x63\x6f\x6e\x74" \
-"\x65\x6e\x74\x73\x0a\x0a\x09\x2d\x31\x09\x4f\x6e\x65\x20\x63\x6f" \
-"\x6c\x75\x6d\x6e\x20\x6f\x75\x74\x70\x75\x74\x0a\x09\x2d\x61\x09" \
-"\x49\x6e\x63\x6c\x75\x64\x65\x20\x65\x6e\x74\x72\x69\x65\x73\x20" \
-"\x77\x68\x69\x63\x68\x20\x73\x74\x61\x72\x74\x20\x77\x69\x74\x68" \
-"\x20\x2e\x0a\x09\x2d\x41\x09\x4c\x69\x6b\x65\x20\x2d\x61\x2c\x20" \
-"\x62\x75\x74\x20\x65\x78\x63\x6c\x75\x64\x65\x20\x2e\x20\x61\x6e" \
-"\x64\x20\x2e\x2e\x0a\x09\x2d\x43\x09\x4c\x69\x73\x74\x20\x62\x79" \
-"\x20\x63\x6f\x6c\x75\x6d\x6e\x73\x0a\x09\x2d\x78\x09\x4c\x69\x73" \
-"\x74\x20\x62\x79\x20\x6c\x69\x6e\x65\x73\x0a\x09\x2d\x64\x09\x4c" \
-"\x69\x73\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x65\x6e" \
-"\x74\x72\x69\x65\x73\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66" \
-"\x20\x63\x6f\x6e\x74\x65\x6e\x74\x73\x0a\x09\x2d\x4c\x09\x46\x6f" \
-"\x6c\x6c\x6f\x77\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x0a\x09\x2d" \
-"\x48\x09\x46\x6f\x6c\x6c\x6f\x77\x20\x73\x79\x6d\x6c\x69\x6e\x6b" \
-"\x73\x20\x6f\x6e\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6c\x69\x6e" \
-"\x65\x0a\x09\x2d\x52\x09\x52\x65\x63\x75\x72\x73\x65\x0a\x09\x2d" \
-"\x70\x09\x41\x70\x70\x65\x6e\x64\x20\x2f\x20\x74\x6f\x20\x64\x69" \
-"\x72\x20\x65\x6e\x74\x72\x69\x65\x73\x0a\x09\x2d\x46\x09\x41\x70" \
-"\x70\x65\x6e\x64\x20\x69\x6e\x64\x69\x63\x61\x74\x6f\x72\x20\x28" \
-"\x6f\x6e\x65\x20\x6f\x66\x20\x2a\x2f\x3d\x40\x7c\x29\x20\x74\x6f" \
-"\x20\x65\x6e\x74\x72\x69\x65\x73\x0a\x09\x2d\x6c\x09\x4c\x6f\x6e" \
-"\x67\x20\x6c\x69\x73\x74\x69\x6e\x67\x20\x66\x6f\x72\x6d\x61\x74" \
-"\x0a\x09\x2d\x69\x09\x4c\x69\x73\x74\x20\x69\x6e\x6f\x64\x65\x20" \
-"\x6e\x75\x6d\x62\x65\x72\x73\x0a\x09\x2d\x6e\x09\x4c\x69\x73\x74" \
-"\x20\x6e\x75\x6d\x65\x72\x69\x63\x20\x55\x49\x44\x73\x20\x61\x6e" \
-"\x64\x20\x47\x49\x44\x73\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f" \
-"\x66\x20\x6e\x61\x6d\x65\x73\x0a\x09\x2d\x73\x09\x4c\x69\x73\x74" \
-"\x20\x61\x6c\x6c\x6f\x63\x61\x74\x65\x64\x20\x62\x6c\x6f\x63\x6b" \
-"\x73\x0a\x09\x2d\x65\x09\x4c\x69\x73\x74\x20\x66\x75\x6c\x6c\x20" \
-"\x64\x61\x74\x65\x20\x61\x6e\x64\x20\x74\x69\x6d\x65\x0a\x09\x2d" \
-"\x68\x09\x4c\x69\x73\x74\x20\x73\x69\x7a\x65\x73\x20\x69\x6e\x20" \
-"\x68\x75\x6d\x61\x6e\x20\x72\x65\x61\x64\x61\x62\x6c\x65\x20\x66" \
-"\x6f\x72\x6d\x61\x74\x20\x28\x31\x4b\x20\x32\x34\x33\x4d\x20\x32" \
-"\x47\x29\x0a\x09\x2d\x72\x09\x53\x6f\x72\x74\x20\x69\x6e\x20\x72" \
-"\x65\x76\x65\x72\x73\x65\x20\x6f\x72\x64\x65\x72\x0a\x09\x2d\x53" \
-"\x09\x53\x6f\x72\x74\x20\x62\x79\x20\x73\x69\x7a\x65\x0a\x09\x2d" \
-"\x58\x09\x53\x6f\x72\x74\x20\x62\x79\x20\x65\x78\x74\x65\x6e\x73" \
-"\x69\x6f\x6e\x0a\x09\x2d\x76\x09\x53\x6f\x72\x74\x20\x62\x79\x20" \
-"\x76\x65\x72\x73\x69\x6f\x6e\x0a\x09\x2d\x63\x09\x57\x69\x74\x68" \
-"\x20\x2d\x6c\x3a\x20\x73\x6f\x72\x74\x20\x62\x79\x20\x63\x74\x69" \
-"\x6d\x65\x0a\x09\x2d\x74\x09\x57\x69\x74\x68\x20\x2d\x6c\x3a\x20" \
-"\x73\x6f\x72\x74\x20\x62\x79\x20\x6d\x74\x69\x6d\x65\x0a\x09\x2d" \
-"\x75\x09\x57\x69\x74\x68\x20\x2d\x6c\x3a\x20\x73\x6f\x72\x74\x20" \
-"\x62\x79\x20\x61\x74\x69\x6d\x65\x0a\x09\x2d\x77\x20\x4e\x09\x41" \
-"\x73\x73\x75\x6d\x65\x20\x74\x68\x65\x20\x74\x65\x72\x6d\x69\x6e" \
-"\x61\x6c\x20\x69\x73\x20\x4e\x20\x63\x6f\x6c\x75\x6d\x6e\x73\x20" \
-"\x77\x69\x64\x65\x0a\x09\x2d\x2d\x63\x6f\x6c\x6f\x72\x5b\x3d\x7b" \
-"\x61\x6c\x77\x61\x79\x73\x2c\x6e\x65\x76\x65\x72\x2c\x61\x75\x74" \
-"\x6f\x7d\x5d\x09\x43\x6f\x6e\x74\x72\x6f\x6c\x20\x63\x6f\x6c\x6f" \
-"\x72\x69\x6e\x67\x00\x5b\x2d\x52\x61\x64\x6c\x76\x5d\x20\x5b\x46" \
-"\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x4c\x69\x73\x74\x20\x66\x69" \
-"\x6c\x65\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73\x20\x6f\x6e" \
-"\x20\x61\x6e\x20\x65\x78\x74\x32\x20\x66\x73\x0a\x0a\x09\x2d\x52" \
-"\x09\x52\x65\x63\x75\x72\x73\x65\x0a\x09\x2d\x61\x09\x44\x6f\x6e" \
-"\x27\x74\x20\x68\x69\x64\x65\x20\x65\x6e\x74\x72\x69\x65\x73\x20" \
-"\x73\x74\x61\x72\x74\x69\x6e\x67\x20\x77\x69\x74\x68\x20\x2e\x0a" \
-"\x09\x2d\x64\x09\x4c\x69\x73\x74\x20\x64\x69\x72\x65\x63\x74\x6f" \
-"\x72\x79\x20\x65\x6e\x74\x72\x69\x65\x73\x20\x69\x6e\x73\x74\x65" \
-"\x61\x64\x20\x6f\x66\x20\x63\x6f\x6e\x74\x65\x6e\x74\x73\x0a\x09" \
-"\x2d\x6c\x09\x4c\x69\x73\x74\x20\x6c\x6f\x6e\x67\x20\x66\x6c\x61" \
-"\x67\x20\x6e\x61\x6d\x65\x73\x0a\x09\x2d\x76\x09\x4c\x69\x73\x74" \
-"\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x27\x73\x20\x76\x65\x72\x73" \
-"\x69\x6f\x6e\x2f\x67\x65\x6e\x65\x72\x61\x74\x69\x6f\x6e\x20\x6e" \
-"\x75\x6d\x62\x65\x72\x00\x5b\x2d\x71\x66\x77\x72\x73\x76\x5d\x20" \
-"\x4d\x4f\x44\x55\x4c\x45\x20\x5b\x73\x79\x6d\x62\x6f\x6c\x3d\x76" \
-"\x61\x6c\x75\x65\x5d\x2e\x2e\x2e\x0a\x0a\x09\x2d\x72\x09\x52\x65" \
-"\x6d\x6f\x76\x65\x20\x4d\x4f\x44\x55\x4c\x45\x20\x28\x73\x74\x61" \
-"\x63\x6b\x73\x29\x20\x6f\x72\x20\x64\x6f\x20\x61\x75\x74\x6f\x63" \
-"\x6c\x65\x61\x6e\x0a\x09\x2d\x71\x09\x51\x75\x69\x65\x74\x0a\x09" \
-"\x2d\x76\x09\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x66\x09\x46" \
-"\x6f\x72\x63\x65\x0a\x09\x2d\x77\x09\x57\x61\x69\x74\x20\x66\x6f" \
-"\x72\x20\x75\x6e\x6c\x6f\x61\x64\x0a\x09\x2d\x73\x09\x52\x65\x70" \
-"\x6f\x72\x74\x20\x76\x69\x61\x20\x73\x79\x73\x6c\x6f\x67\x20\x69" \
-"\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x73\x74\x64\x65\x72\x72" \
-"\x00\x0a\x0a\x53\x68\x6f\x77\x20\x61\x6c\x6c\x20\x6f\x70\x65\x6e" \
-"\x20\x66\x69\x6c\x65\x73\x00\x5b\x2d\x6d\x6b\x5d\x0a\x0a\x4c\x69" \
-"\x73\x74\x20\x61\x6c\x6c\x20\x50\x43\x49\x20\x64\x65\x76\x69\x63" \
-"\x65\x73\x0a\x0a\x09\x2d\x6d\x09\x50\x61\x72\x73\x61\x62\x6c\x65" \
-"\x20\x6f\x75\x74\x70\x75\x74\x0a\x09\x2d\x6b\x09\x53\x68\x6f\x77" \
-"\x20\x64\x72\x69\x76\x65\x72\x00\x08\x00\x46\x49\x4c\x45\x0a\x0a" \
-"\x44\x65\x63\x6f\x6d\x70\x72\x65\x73\x73\x20\x74\x6f\x20\x73\x74" \
-"\x64\x6f\x75\x74\x00\x5b\x2d\x63\x66\x76\x64\x31\x32\x33\x34\x35" \
-"\x36\x37\x38\x39\x43\x46\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e" \
-"\x2e\x0a\x0a\x09\x2d\x31\x2e\x2e\x39\x09\x43\x6f\x6d\x70\x72\x65" \
-"\x73\x73\x69\x6f\x6e\x20\x6c\x65\x76\x65\x6c\x0a\x09\x2d\x64\x09" \
-"\x44\x65\x63\x6f\x6d\x70\x72\x65\x73\x73\x0a\x09\x2d\x63\x09\x57" \
-"\x72\x69\x74\x65\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09" \
-"\x2d\x66\x09\x46\x6f\x72\x63\x65\x0a\x09\x2d\x76\x09\x56\x65\x72" \
-"\x62\x6f\x73\x65\x0a\x09\x2d\x46\x09\x44\x6f\x6e\x27\x74\x20\x73" \
-"\x74\x6f\x72\x65\x20\x6f\x72\x20\x76\x65\x72\x69\x66\x79\x20\x63" \
-"\x68\x65\x63\x6b\x73\x75\x6d\x0a\x09\x2d\x43\x09\x41\x6c\x73\x6f" \
-"\x20\x77\x72\x69\x74\x65\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x20" \
-"\x6f\x66\x20\x63\x6f\x6d\x70\x72\x65\x73\x73\x65\x64\x20\x62\x6c" \
-"\x6f\x63\x6b\x00\x5b\x2d\x76\x43\x46\x5d\x20\x5b\x46\x49\x4c\x45" \
-"\x5d\x2e\x2e\x2e\x0a\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73" \
-"\x65\x0a\x09\x2d\x46\x09\x44\x6f\x6e\x27\x74\x20\x73\x74\x6f\x72" \
-"\x65\x20\x6f\x72\x20\x76\x65\x72\x69\x66\x79\x20\x63\x68\x65\x63" \
-"\x6b\x73\x75\x6d\x00\x5b\x2d\x64\x20\x64\x65\x76\x69\x63\x65\x5f" \
-"\x74\x61\x62\x6c\x65\x5d\x20\x72\x6f\x6f\x74\x64\x69\x72\x0a\x0a" \
-"\x43\x72\x65\x61\x74\x65\x20\x61\x20\x72\x61\x6e\x67\x65\x20\x6f" \
-"\x66\x20\x73\x70\x65\x63\x69\x61\x6c\x20\x66\x69\x6c\x65\x73\x20" \
-"\x61\x73\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x69\x6e\x20" \
-"\x61\x20\x64\x65\x76\x69\x63\x65\x20\x74\x61\x62\x6c\x65\x2e\x0a" \
-"\x44\x65\x76\x69\x63\x65\x20\x74\x61\x62\x6c\x65\x20\x65\x6e\x74" \
-"\x72\x69\x65\x73\x20\x74\x61\x6b\x65\x20\x74\x68\x65\x20\x66\x6f" \
-"\x72\x6d\x20\x6f\x66\x3a\x0a\x3c\x6e\x61\x6d\x65\x3e\x20\x3c\x74" \
-"\x79\x70\x65\x3e\x20\x3c\x6d\x6f\x64\x65\x3e\x20\x3c\x75\x69\x64" \
-"\x3e\x20\x3c\x67\x69\x64\x3e\x20\x3c\x6d\x61\x6a\x6f\x72\x3e\x20" \
-"\x3c\x6d\x69\x6e\x6f\x72\x3e\x20\x3c\x73\x74\x61\x72\x74\x3e\x20" \
-"\x3c\x69\x6e\x63\x3e\x20\x3c\x63\x6f\x75\x6e\x74\x3e\x0a\x57\x68" \
-"\x65\x72\x65\x20\x6e\x61\x6d\x65\x20\x69\x73\x20\x74\x68\x65\x20" \
-"\x66\x69\x6c\x65\x20\x6e\x61\x6d\x65\x2c\x20\x74\x79\x70\x65\x20" \
-"\x63\x61\x6e\x20\x62\x65\x20\x6f\x6e\x65\x20\x6f\x66\x3a\x0a\x09" \
-"\x66\x09\x52\x65\x67\x75\x6c\x61\x72\x20\x66\x69\x6c\x65\x0a\x09" \
-"\x64\x09\x44\x69\x72\x65\x63\x74\x6f\x72\x79\x0a\x09\x63\x09\x43" \
-"\x68\x61\x72\x61\x63\x74\x65\x72\x20\x64\x65\x76\x69\x63\x65\x0a" \
-"\x09\x62\x09\x42\x6c\x6f\x63\x6b\x20\x64\x65\x76\x69\x63\x65\x0a" \
-"\x09\x70\x09\x46\x69\x66\x6f\x20\x28\x6e\x61\x6d\x65\x64\x20\x70" \
-"\x69\x70\x65\x29\x0a\x75\x69\x64\x20\x69\x73\x20\x74\x68\x65\x20" \
-"\x75\x73\x65\x72\x20\x69\x64\x20\x66\x6f\x72\x20\x74\x68\x65\x20" \
-"\x74\x61\x72\x67\x65\x74\x20\x66\x69\x6c\x65\x2c\x20\x67\x69\x64" \
-"\x20\x69\x73\x20\x74\x68\x65\x20\x67\x72\x6f\x75\x70\x20\x69\x64" \
-"\x20\x66\x6f\x72\x20\x74\x68\x65\x0a\x74\x61\x72\x67\x65\x74\x20" \
-"\x66\x69\x6c\x65\x2e\x20\x54\x68\x65\x20\x72\x65\x73\x74\x20\x6f" \
-"\x66\x20\x74\x68\x65\x20\x65\x6e\x74\x72\x69\x65\x73\x20\x28\x6d" \
-"\x61\x6a\x6f\x72\x2c\x20\x6d\x69\x6e\x6f\x72\x2c\x20\x65\x74\x63" \
-"\x29\x20\x61\x70\x70\x6c\x79\x20\x74\x6f\x0a\x74\x6f\x20\x64\x65" \
-"\x76\x69\x63\x65\x20\x73\x70\x65\x63\x69\x61\x6c\x20\x66\x69\x6c" \
-"\x65\x73\x2e\x20\x41\x20\x27\x2d\x27\x20\x6d\x61\x79\x20\x62\x65" \
-"\x20\x75\x73\x65\x64\x20\x66\x6f\x72\x20\x62\x6c\x61\x6e\x6b\x20" \
-"\x65\x6e\x74\x72\x69\x65\x73\x2e\x00\x5b\x2d\x63\x5b\x73\x77\x5d" \
-"\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x50\x72\x69" \
-"\x6e\x74\x20\x6f\x72\x20\x63\x68\x65\x63\x6b\x20\x4d\x44\x35\x20" \
-"\x63\x68\x65\x63\x6b\x73\x75\x6d\x73\x0a\x0a\x09\x2d\x63\x09\x43" \
-"\x68\x65\x63\x6b\x20\x73\x75\x6d\x73\x20\x61\x67\x61\x69\x6e\x73" \
-"\x74\x20\x6c\x69\x73\x74\x20\x69\x6e\x20\x46\x49\x4c\x45\x73\x0a" \
-"\x09\x2d\x73\x09\x44\x6f\x6e\x27\x74\x20\x6f\x75\x74\x70\x75\x74" \
-"\x20\x61\x6e\x79\x74\x68\x69\x6e\x67\x2c\x20\x73\x74\x61\x74\x75" \
-"\x73\x20\x63\x6f\x64\x65\x20\x73\x68\x6f\x77\x73\x20\x73\x75\x63" \
-"\x63\x65\x73\x73\x0a\x09\x2d\x77\x09\x57\x61\x72\x6e\x20\x61\x62" \
-"\x6f\x75\x74\x20\x69\x6d\x70\x72\x6f\x70\x65\x72\x6c\x79\x20\x66" \
-"\x6f\x72\x6d\x61\x74\x74\x65\x64\x20\x63\x68\x65\x63\x6b\x73\x75" \
-"\x6d\x20\x6c\x69\x6e\x65\x73\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53" \
-"\x5d\x20\x44\x49\x52\x45\x43\x54\x4f\x52\x59\x2e\x2e\x2e\x0a\x0a" \
-"\x43\x72\x65\x61\x74\x65\x20\x44\x49\x52\x45\x43\x54\x4f\x52\x59" \
-"\x0a\x0a\x09\x2d\x6d\x20\x4d\x4f\x44\x45\x09\x4d\x6f\x64\x65\x0a" \
-"\x09\x2d\x70\x09\x4e\x6f\x20\x65\x72\x72\x6f\x72\x20\x69\x66\x20" \
-"\x65\x78\x69\x73\x74\x73\x3b\x20\x6d\x61\x6b\x65\x20\x70\x61\x72" \
-"\x65\x6e\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x20" \
-"\x61\x73\x20\x6e\x65\x65\x64\x65\x64\x00\x5b\x2d\x76\x5d\x20\x5b" \
-"\x2d\x6e\x20\x4c\x41\x42\x45\x4c\x5d\x20\x42\x4c\x4f\x43\x4b\x44" \
-"\x45\x56\x20\x5b\x4b\x42\x59\x54\x45\x53\x5d\x0a\x0a\x4d\x61\x6b" \
-"\x65\x20\x61\x20\x46\x41\x54\x33\x32\x20\x66\x69\x6c\x65\x73\x79" \
-"\x73\x74\x65\x6d\x0a\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73" \
-"\x65\x0a\x09\x2d\x6e\x20\x4c\x42\x4c\x09\x56\x6f\x6c\x75\x6d\x65" \
-"\x20\x6c\x61\x62\x65\x6c\x00\x5b\x2d\x46\x6e\x5d\x20\x5b\x2d\x62" \
-"\x20\x42\x4c\x4b\x5f\x53\x49\x5a\x45\x5d\x20\x5b\x2d\x69\x20\x49" \
-"\x4e\x4f\x44\x45\x5f\x52\x41\x54\x49\x4f\x5d\x20\x5b\x2d\x49\x20" \
-"\x49\x4e\x4f\x44\x45\x5f\x53\x49\x5a\x45\x5d\x20\x5b\x2d\x6d\x20" \
-"\x52\x45\x53\x45\x52\x56\x45\x44\x5f\x50\x45\x52\x43\x45\x4e\x54" \
-"\x5d\x20\x5b\x2d\x4c\x20\x4c\x41\x42\x45\x4c\x5d\x20\x42\x4c\x4f" \
-"\x43\x4b\x44\x45\x56\x20\x5b\x4b\x42\x59\x54\x45\x53\x5d\x0a\x0a" \
-"\x09\x2d\x62\x20\x42\x4c\x4b\x5f\x53\x49\x5a\x45\x09\x42\x6c\x6f" \
-"\x63\x6b\x20\x73\x69\x7a\x65\x2c\x20\x62\x79\x74\x65\x73\x0a\x09" \
-"\x2d\x46\x09\x09\x46\x6f\x72\x63\x65\x0a\x09\x2d\x69\x20\x52\x41" \
-"\x54\x49\x4f\x09\x4d\x61\x78\x20\x6e\x75\x6d\x62\x65\x72\x20\x6f" \
-"\x66\x20\x66\x69\x6c\x65\x73\x20\x69\x73\x20\x66\x69\x6c\x65\x73" \
-"\x79\x73\x74\x65\x6d\x5f\x73\x69\x7a\x65\x20\x2f\x20\x52\x41\x54" \
-"\x49\x4f\x0a\x09\x2d\x49\x20\x42\x59\x54\x45\x53\x09\x49\x6e\x6f" \
-"\x64\x65\x20\x73\x69\x7a\x65\x20\x28\x6d\x69\x6e\x20\x31\x32\x38" \
-"\x29\x0a\x09\x2d\x4c\x20\x4c\x42\x4c\x09\x09\x56\x6f\x6c\x75\x6d" \
-"\x65\x20\x6c\x61\x62\x65\x6c\x0a\x09\x2d\x6d\x20\x50\x45\x52\x43" \
-"\x45\x4e\x54\x09\x50\x65\x72\x63\x65\x6e\x74\x20\x6f\x66\x20\x62" \
-"\x6c\x6f\x63\x6b\x73\x20\x74\x6f\x20\x72\x65\x73\x65\x72\x76\x65" \
-"\x20\x66\x6f\x72\x20\x61\x64\x6d\x69\x6e\x0a\x09\x2d\x6e\x09\x09" \
-"\x44\x72\x79\x20\x72\x75\x6e\x00\x5b\x2d\x6d\x20\x4d\x4f\x44\x45" \
-"\x5d\x20\x4e\x41\x4d\x45\x0a\x0a\x43\x72\x65\x61\x74\x65\x20\x6e" \
-"\x61\x6d\x65\x64\x20\x70\x69\x70\x65\x0a\x0a\x09\x2d\x6d\x20\x4d" \
-"\x4f\x44\x45\x09\x4d\x6f\x64\x65\x20\x28\x64\x65\x66\x61\x75\x6c" \
-"\x74\x20\x61\x3d\x72\x77\x29\x00\x5b\x2d\x46\x6e\x5d\x20\x5b\x2d" \
-"\x62\x20\x42\x4c\x4b\x5f\x53\x49\x5a\x45\x5d\x20\x5b\x2d\x69\x20" \
-"\x49\x4e\x4f\x44\x45\x5f\x52\x41\x54\x49\x4f\x5d\x20\x5b\x2d\x49" \
-"\x20\x49\x4e\x4f\x44\x45\x5f\x53\x49\x5a\x45\x5d\x20\x5b\x2d\x6d" \
-"\x20\x52\x45\x53\x45\x52\x56\x45\x44\x5f\x50\x45\x52\x43\x45\x4e" \
-"\x54\x5d\x20\x5b\x2d\x4c\x20\x4c\x41\x42\x45\x4c\x5d\x20\x42\x4c" \
-"\x4f\x43\x4b\x44\x45\x56\x20\x5b\x4b\x42\x59\x54\x45\x53\x5d\x0a" \
-"\x0a\x09\x2d\x62\x20\x42\x4c\x4b\x5f\x53\x49\x5a\x45\x09\x42\x6c" \
-"\x6f\x63\x6b\x20\x73\x69\x7a\x65\x2c\x20\x62\x79\x74\x65\x73\x0a" \
-"\x09\x2d\x46\x09\x09\x46\x6f\x72\x63\x65\x0a\x09\x2d\x69\x20\x52" \
-"\x41\x54\x49\x4f\x09\x4d\x61\x78\x20\x6e\x75\x6d\x62\x65\x72\x20" \
-"\x6f\x66\x20\x66\x69\x6c\x65\x73\x20\x69\x73\x20\x66\x69\x6c\x65" \
-"\x73\x79\x73\x74\x65\x6d\x5f\x73\x69\x7a\x65\x20\x2f\x20\x52\x41" \
-"\x54\x49\x4f\x0a\x09\x2d\x49\x20\x42\x59\x54\x45\x53\x09\x49\x6e" \
-"\x6f\x64\x65\x20\x73\x69\x7a\x65\x20\x28\x6d\x69\x6e\x20\x31\x32" \
-"\x38\x29\x0a\x09\x2d\x4c\x20\x4c\x42\x4c\x09\x09\x56\x6f\x6c\x75" \
-"\x6d\x65\x20\x6c\x61\x62\x65\x6c\x0a\x09\x2d\x6d\x20\x50\x45\x52" \
-"\x43\x45\x4e\x54\x09\x50\x65\x72\x63\x65\x6e\x74\x20\x6f\x66\x20" \
-"\x62\x6c\x6f\x63\x6b\x73\x20\x74\x6f\x20\x72\x65\x73\x65\x72\x76" \
-"\x65\x20\x66\x6f\x72\x20\x61\x64\x6d\x69\x6e\x0a\x09\x2d\x6e\x09" \
-"\x09\x44\x72\x79\x20\x72\x75\x6e\x00\x5b\x2d\x76\x5d\x20\x5b\x2d" \
-"\x6e\x20\x4c\x41\x42\x45\x4c\x5d\x20\x42\x4c\x4f\x43\x4b\x44\x45" \
-"\x56\x20\x5b\x4b\x42\x59\x54\x45\x53\x5d\x0a\x0a\x4d\x61\x6b\x65" \
-"\x20\x61\x20\x46\x41\x54\x33\x32\x20\x66\x69\x6c\x65\x73\x79\x73" \
-"\x74\x65\x6d\x0a\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73\x65" \
-"\x0a\x09\x2d\x6e\x20\x4c\x42\x4c\x09\x56\x6f\x6c\x75\x6d\x65\x20" \
-"\x6c\x61\x62\x65\x6c\x00\x5b\x2d\x6d\x20\x4d\x4f\x44\x45\x5d\x20" \
-"\x4e\x41\x4d\x45\x20\x54\x59\x50\x45\x20\x4d\x41\x4a\x4f\x52\x20" \
-"\x4d\x49\x4e\x4f\x52\x0a\x0a\x43\x72\x65\x61\x74\x65\x20\x61\x20" \
-"\x73\x70\x65\x63\x69\x61\x6c\x20\x66\x69\x6c\x65\x20\x28\x62\x6c" \
-"\x6f\x63\x6b\x2c\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x2c\x20" \
-"\x6f\x72\x20\x70\x69\x70\x65\x29\x0a\x0a\x09\x2d\x6d\x20\x4d\x4f" \
-"\x44\x45\x09\x43\x72\x65\x61\x74\x69\x6f\x6e\x20\x6d\x6f\x64\x65" \
-"\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x20\x61\x3d\x72\x77\x29\x0a" \
-"\x54\x59\x50\x45\x3a\x0a\x09\x62\x09\x42\x6c\x6f\x63\x6b\x20\x64" \
-"\x65\x76\x69\x63\x65\x0a\x09\x63\x20\x6f\x72\x20\x75\x09\x43\x68" \
-"\x61\x72\x61\x63\x74\x65\x72\x20\x64\x65\x76\x69\x63\x65\x0a\x09" \
-"\x70\x09\x4e\x61\x6d\x65\x64\x20\x70\x69\x70\x65\x20\x28\x4d\x41" \
-"\x4a\x4f\x52\x20\x61\x6e\x64\x20\x4d\x49\x4e\x4f\x52\x20\x61\x72" \
-"\x65\x20\x69\x67\x6e\x6f\x72\x65\x64\x29\x00\x5b\x2d\x4c\x20\x4c" \
-"\x42\x4c\x5d\x20\x42\x4c\x4f\x43\x4b\x44\x45\x56\x20\x5b\x4b\x42" \
-"\x59\x54\x45\x53\x5d\x0a\x0a\x50\x72\x65\x70\x61\x72\x65\x20\x42" \
-"\x4c\x4f\x43\x4b\x44\x45\x56\x20\x74\x6f\x20\x62\x65\x20\x75\x73" \
-"\x65\x64\x20\x61\x73\x20\x73\x77\x61\x70\x20\x70\x61\x72\x74\x69" \
-"\x74\x69\x6f\x6e\x0a\x0a\x09\x2d\x4c\x20\x4c\x42\x4c\x09\x4c\x61" \
-"\x62\x65\x6c\x00\x5b\x2d\x64\x74\x5d\x20\x5b\x2d\x70\x20\x44\x49" \
-"\x52\x5d\x20\x5b\x54\x45\x4d\x50\x4c\x41\x54\x45\x5d\x0a\x0a\x43" \
-"\x72\x65\x61\x74\x65\x20\x61\x20\x74\x65\x6d\x70\x6f\x72\x61\x72" \
-"\x79\x20\x66\x69\x6c\x65\x20\x77\x69\x74\x68\x20\x6e\x61\x6d\x65" \
-"\x20\x62\x61\x73\x65\x64\x20\x6f\x6e\x20\x54\x45\x4d\x50\x4c\x41" \
-"\x54\x45\x20\x61\x6e\x64\x20\x70\x72\x69\x6e\x74\x20\x69\x74\x73" \
-"\x20\x6e\x61\x6d\x65\x2e\x0a\x54\x45\x4d\x50\x4c\x41\x54\x45\x20" \
-"\x6d\x75\x73\x74\x20\x65\x6e\x64\x20\x77\x69\x74\x68\x20\x58\x58" \
-"\x58\x58\x58\x58\x20\x28\x65\x2e\x67\x2e\x20\x5b\x2f\x64\x69\x72" \
-"\x2f\x5d\x6e\x61\x6d\x65\x58\x58\x58\x58\x58\x58\x29\x2e\x0a\x57" \
-"\x69\x74\x68\x6f\x75\x74\x20\x54\x45\x4d\x50\x4c\x41\x54\x45\x2c" \
-"\x20\x2d\x74\x20\x74\x6d\x70\x2e\x58\x58\x58\x58\x58\x58\x20\x69" \
-"\x73\x20\x61\x73\x73\x75\x6d\x65\x64\x2e\x0a\x0a\x09\x2d\x64\x09" \
-"\x4d\x61\x6b\x65\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x2c\x20" \
-"\x6e\x6f\x74\x20\x66\x69\x6c\x65\x0a\x09\x2d\x71\x09\x46\x61\x69" \
-"\x6c\x20\x73\x69\x6c\x65\x6e\x74\x6c\x79\x20\x6f\x6e\x20\x65\x72" \
-"\x72\x6f\x72\x73\x0a\x09\x2d\x74\x09\x50\x72\x65\x70\x65\x6e\x64" \
-"\x20\x62\x61\x73\x65\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20" \
-"\x6e\x61\x6d\x65\x20\x74\x6f\x20\x54\x45\x4d\x50\x4c\x41\x54\x45" \
-"\x0a\x09\x2d\x70\x20\x44\x49\x52\x09\x55\x73\x65\x20\x44\x49\x52" \
-"\x20\x61\x73\x20\x61\x20\x62\x61\x73\x65\x20\x64\x69\x72\x65\x63" \
-"\x74\x6f\x72\x79\x20\x28\x69\x6d\x70\x6c\x69\x65\x73\x20\x2d\x74" \
-"\x29\x0a\x09\x2d\x75\x09\x44\x6f\x20\x6e\x6f\x74\x20\x63\x72\x65" \
-"\x61\x74\x65\x20\x61\x6e\x79\x74\x68\x69\x6e\x67\x3b\x20\x70\x72" \
-"\x69\x6e\x74\x20\x61\x20\x6e\x61\x6d\x65\x0a\x0a\x42\x61\x73\x65" \
-"\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x69\x73\x3a\x20\x2d" \
-"\x70\x20\x44\x49\x52\x2c\x20\x65\x6c\x73\x65\x20\x24\x54\x4d\x50" \
-"\x44\x49\x52\x2c\x20\x65\x6c\x73\x65\x20\x2f\x64\x61\x74\x61\x2f" \
-"\x6c\x6f\x63\x61\x6c\x2f\x74\x6d\x70\x00\x5b\x2d\x61\x64\x6c\x70" \
-"\x30\x5d\x20\x5b\x2d\x46\x20\x6b\x65\x79\x77\x6f\x72\x64\x5d\x20" \
-"\x4d\x4f\x44\x55\x4c\x45\x0a\x0a\x09\x2d\x61\x09\x09\x53\x68\x6f" \
-"\x72\x74\x63\x75\x74\x20\x66\x6f\x72\x20\x27\x2d\x46\x20\x61\x75" \
-"\x74\x68\x6f\x72\x27\x0a\x09\x2d\x64\x09\x09\x53\x68\x6f\x72\x74" \
-"\x63\x75\x74\x20\x66\x6f\x72\x20\x27\x2d\x46\x20\x64\x65\x73\x63" \
-"\x72\x69\x70\x74\x69\x6f\x6e\x27\x0a\x09\x2d\x6c\x09\x09\x53\x68" \
-"\x6f\x72\x74\x63\x75\x74\x20\x66\x6f\x72\x20\x27\x2d\x46\x20\x6c" \
-"\x69\x63\x65\x6e\x73\x65\x27\x0a\x09\x2d\x70\x09\x09\x53\x68\x6f" \
-"\x72\x74\x63\x75\x74\x20\x66\x6f\x72\x20\x27\x2d\x46\x20\x70\x61" \
-"\x72\x6d\x27\x0a\x09\x2d\x46\x20\x6b\x65\x79\x77\x6f\x72\x64\x09" \
-"\x4b\x65\x79\x77\x6f\x72\x64\x20\x74\x6f\x20\x6c\x6f\x6f\x6b\x20" \
-"\x66\x6f\x72\x0a\x09\x2d\x30\x09\x09\x53\x65\x70\x61\x72\x61\x74" \
-"\x65\x20\x6f\x75\x74\x70\x75\x74\x20\x77\x69\x74\x68\x20\x4e\x55" \
-"\x4c\x73\x00\x5b\x2d\x71\x66\x77\x72\x73\x76\x5d\x20\x4d\x4f\x44" \
-"\x55\x4c\x45\x20\x5b\x73\x79\x6d\x62\x6f\x6c\x3d\x76\x61\x6c\x75" \
-"\x65\x5d\x2e\x2e\x2e\x0a\x0a\x09\x2d\x72\x09\x52\x65\x6d\x6f\x76" \
-"\x65\x20\x4d\x4f\x44\x55\x4c\x45\x20\x28\x73\x74\x61\x63\x6b\x73" \
-"\x29\x20\x6f\x72\x20\x64\x6f\x20\x61\x75\x74\x6f\x63\x6c\x65\x61" \
-"\x6e\x0a\x09\x2d\x71\x09\x51\x75\x69\x65\x74\x0a\x09\x2d\x76\x09" \
-"\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63" \
-"\x65\x0a\x09\x2d\x77\x09\x57\x61\x69\x74\x20\x66\x6f\x72\x20\x75" \
-"\x6e\x6c\x6f\x61\x64\x0a\x09\x2d\x73\x09\x52\x65\x70\x6f\x72\x74" \
-"\x20\x76\x69\x61\x20\x73\x79\x73\x6c\x6f\x67\x20\x69\x6e\x73\x74" \
-"\x65\x61\x64\x20\x6f\x66\x20\x73\x74\x64\x65\x72\x72\x00\x5b\x46" \
-"\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x56\x69\x65\x77\x20\x46\x49" \
-"\x4c\x45\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x20\x6f\x6e" \
-"\x65\x20\x73\x63\x72\x65\x65\x6e\x66\x75\x6c\x20\x61\x74\x20\x61" \
-"\x20\x74\x69\x6d\x65\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20" \
-"\x5b\x2d\x6f\x20\x4f\x50\x54\x53\x5d\x20\x44\x45\x56\x49\x43\x45" \
-"\x20\x4e\x4f\x44\x45\x0a\x0a\x4d\x6f\x75\x6e\x74\x20\x61\x20\x66" \
-"\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x2e\x20\x46\x69\x6c\x65\x73" \
-"\x79\x73\x74\x65\x6d\x20\x61\x75\x74\x6f\x64\x65\x74\x65\x63\x74" \
-"\x69\x6f\x6e\x20\x72\x65\x71\x75\x69\x72\x65\x73\x20\x2f\x70\x72" \
-"\x6f\x63\x2e\x0a\x0a\x09\x2d\x61\x09\x09\x4d\x6f\x75\x6e\x74\x20" \
-"\x61\x6c\x6c\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x73\x20" \
-"\x69\x6e\x20\x66\x73\x74\x61\x62\x0a\x09\x2d\x72\x09\x09\x52\x65" \
-"\x61\x64\x2d\x6f\x6e\x6c\x79\x20\x6d\x6f\x75\x6e\x74\x0a\x09\x2d" \
-"\x77\x09\x09\x52\x65\x61\x64\x2d\x77\x72\x69\x74\x65\x20\x6d\x6f" \
-"\x75\x6e\x74\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x0a\x09\x2d" \
-"\x74\x20\x46\x53\x54\x59\x50\x45\x5b\x2c\x2e\x2e\x2e\x5d\x09\x46" \
-"\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x20\x74\x79\x70\x65\x28\x73" \
-"\x29\x0a\x09\x2d\x4f\x20\x4f\x50\x54\x09\x09\x4d\x6f\x75\x6e\x74" \
-"\x20\x6f\x6e\x6c\x79\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d" \
-"\x73\x20\x77\x69\x74\x68\x20\x6f\x70\x74\x69\x6f\x6e\x20\x4f\x50" \
-"\x54\x20\x28\x2d\x61\x20\x6f\x6e\x6c\x79\x29\x0a\x2d\x6f\x20\x4f" \
-"\x50\x54\x3a\x0a\x09\x6c\x6f\x6f\x70\x09\x09\x49\x67\x6e\x6f\x72" \
-"\x65\x64\x20\x28\x6c\x6f\x6f\x70\x20\x64\x65\x76\x69\x63\x65\x73" \
-"\x20\x61\x72\x65\x20\x61\x75\x74\x6f\x64\x65\x74\x65\x63\x74\x65" \
-"\x64\x29\x0a\x09\x5b\x61\x5d\x73\x79\x6e\x63\x09\x09\x57\x72\x69" \
-"\x74\x65\x73\x20\x61\x72\x65\x20\x5b\x61\x5d\x73\x79\x6e\x63\x68" \
-"\x72\x6f\x6e\x6f\x75\x73\x0a\x09\x5b\x6e\x6f\x5d\x61\x74\x69\x6d" \
-"\x65\x09\x44\x69\x73\x61\x62\x6c\x65\x2f\x65\x6e\x61\x62\x6c\x65" \
-"\x20\x75\x70\x64\x61\x74\x65\x73\x20\x74\x6f\x20\x69\x6e\x6f\x64" \
-"\x65\x20\x61\x63\x63\x65\x73\x73\x20\x74\x69\x6d\x65\x73\x0a\x09" \
-"\x5b\x6e\x6f\x5d\x64\x69\x72\x61\x74\x69\x6d\x65\x09\x44\x69\x73" \
-"\x61\x62\x6c\x65\x2f\x65\x6e\x61\x62\x6c\x65\x20\x61\x74\x69\x6d" \
-"\x65\x20\x75\x70\x64\x61\x74\x65\x73\x20\x74\x6f\x20\x64\x69\x72" \
-"\x65\x63\x74\x6f\x72\x69\x65\x73\x0a\x09\x5b\x6e\x6f\x5d\x72\x65" \
-"\x6c\x61\x74\x69\x6d\x65\x09\x44\x69\x73\x61\x62\x6c\x65\x2f\x65" \
-"\x6e\x61\x62\x6c\x65\x20\x61\x74\x69\x6d\x65\x20\x75\x70\x64\x61" \
-"\x74\x65\x73\x20\x72\x65\x6c\x61\x74\x69\x76\x65\x20\x74\x6f\x20" \
-"\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x74\x69\x6d" \
-"\x65\x0a\x09\x5b\x6e\x6f\x5d\x64\x65\x76\x09\x09\x28\x44\x69\x73" \
-"\x29\x61\x6c\x6c\x6f\x77\x20\x75\x73\x65\x20\x6f\x66\x20\x73\x70" \
-"\x65\x63\x69\x61\x6c\x20\x64\x65\x76\x69\x63\x65\x20\x66\x69\x6c" \
-"\x65\x73\x0a\x09\x5b\x6e\x6f\x5d\x65\x78\x65\x63\x09\x28\x44\x69" \
-"\x73\x29\x61\x6c\x6c\x6f\x77\x20\x75\x73\x65\x20\x6f\x66\x20\x65" \
-"\x78\x65\x63\x75\x74\x61\x62\x6c\x65\x20\x66\x69\x6c\x65\x73\x0a" \
-"\x09\x5b\x6e\x6f\x5d\x73\x75\x69\x64\x09\x28\x44\x69\x73\x29\x61" \
-"\x6c\x6c\x6f\x77\x20\x73\x65\x74\x2d\x75\x73\x65\x72\x2d\x69\x64" \
-"\x2d\x72\x6f\x6f\x74\x20\x70\x72\x6f\x67\x72\x61\x6d\x73\x0a\x09" \
-"\x5b\x72\x5d\x73\x68\x61\x72\x65\x64\x09\x43\x6f\x6e\x76\x65\x72" \
-"\x74\x20\x5b\x72\x65\x63\x75\x72\x73\x69\x76\x65\x6c\x79\x5d\x20" \
-"\x74\x6f\x20\x61\x20\x73\x68\x61\x72\x65\x64\x20\x73\x75\x62\x74" \
-"\x72\x65\x65\x0a\x09\x5b\x72\x5d\x73\x6c\x61\x76\x65\x09\x43\x6f" \
-"\x6e\x76\x65\x72\x74\x20\x5b\x72\x65\x63\x75\x72\x73\x69\x76\x65" \
-"\x6c\x79\x5d\x20\x74\x6f\x20\x61\x20\x73\x6c\x61\x76\x65\x20\x73" \
-"\x75\x62\x74\x72\x65\x65\x0a\x09\x5b\x72\x5d\x70\x72\x69\x76\x61" \
-"\x74\x65\x09\x43\x6f\x6e\x76\x65\x72\x74\x20\x5b\x72\x65\x63\x75" \
-"\x72\x73\x69\x76\x65\x6c\x79\x5d\x20\x74\x6f\x20\x61\x20\x70\x72" \
-"\x69\x76\x61\x74\x65\x20\x73\x75\x62\x74\x72\x65\x65\x0a\x09\x5b" \
-"\x75\x6e\x5d\x62\x69\x6e\x64\x61\x62\x6c\x65\x09\x4d\x61\x6b\x65" \
-"\x20\x6d\x6f\x75\x6e\x74\x20\x70\x6f\x69\x6e\x74\x20\x5b\x75\x6e" \
-"\x5d\x61\x62\x6c\x65\x20\x74\x6f\x20\x62\x65\x20\x62\x69\x6e\x64" \
-"\x20\x6d\x6f\x75\x6e\x74\x65\x64\x0a\x09\x5b\x72\x5d\x62\x69\x6e" \
-"\x64\x09\x09\x42\x69\x6e\x64\x20\x61\x20\x66\x69\x6c\x65\x20\x6f" \
-"\x72\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x5b\x72\x65\x63" \
-"\x75\x72\x73\x69\x76\x65\x6c\x79\x5d\x20\x74\x6f\x20\x61\x6e\x6f" \
-"\x74\x68\x65\x72\x20\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x0a\x09\x6d" \
-"\x6f\x76\x65\x09\x09\x52\x65\x6c\x6f\x63\x61\x74\x65\x20\x61\x6e" \
-"\x20\x65\x78\x69\x73\x74\x69\x6e\x67\x20\x6d\x6f\x75\x6e\x74\x20" \
-"\x70\x6f\x69\x6e\x74\x0a\x09\x72\x65\x6d\x6f\x75\x6e\x74\x09\x09" \
-"\x52\x65\x6d\x6f\x75\x6e\x74\x20\x61\x20\x6d\x6f\x75\x6e\x74\x65" \
-"\x64\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x2c\x20\x63\x68" \
-"\x61\x6e\x67\x69\x6e\x67\x20\x66\x6c\x61\x67\x73\x0a\x09\x72\x6f" \
-"\x2f\x72\x77\x09\x09\x53\x61\x6d\x65\x20\x61\x73\x20\x2d\x72\x2f" \
-"\x2d\x77\x0a\x0a\x54\x68\x65\x72\x65\x20\x61\x72\x65\x20\x66\x69" \
-"\x6c\x65\x73\x79\x73\x74\x65\x6d\x2d\x73\x70\x65\x63\x69\x66\x69" \
-"\x63\x20\x2d\x6f\x20\x66\x6c\x61\x67\x73\x2e\x00\x5b\x2d\x71\x5d" \
-"\x20\x3c\x5b\x2d\x64\x6e\x5d\x20\x44\x49\x52\x20\x7c\x20\x2d\x78" \
-"\x20\x44\x45\x56\x49\x43\x45\x3e\x0a\x0a\x43\x68\x65\x63\x6b\x20" \
-"\x69\x66\x20\x74\x68\x65\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79" \
-"\x20\x69\x73\x20\x61\x20\x6d\x6f\x75\x6e\x74\x70\x6f\x69\x6e\x74" \
-"\x0a\x0a\x09\x2d\x71\x09\x51\x75\x69\x65\x74\x0a\x09\x2d\x64\x09" \
-"\x50\x72\x69\x6e\x74\x20\x6d\x61\x6a\x6f\x72\x2f\x6d\x69\x6e\x6f" \
-"\x72\x20\x64\x65\x76\x69\x63\x65\x20\x6e\x75\x6d\x62\x65\x72\x20" \
-"\x6f\x66\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65" \
-"\x6d\x0a\x09\x2d\x6e\x09\x50\x72\x69\x6e\x74\x20\x64\x65\x76\x69" \
-"\x63\x65\x20\x6e\x61\x6d\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x66" \
-"\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x0a\x09\x2d\x78\x09\x50\x72" \
-"\x69\x6e\x74\x20\x6d\x61\x6a\x6f\x72\x2f\x6d\x69\x6e\x6f\x72\x20" \
-"\x64\x65\x76\x69\x63\x65\x20\x6e\x75\x6d\x62\x65\x72\x20\x6f\x66" \
-"\x20\x74\x68\x65\x20\x62\x6c\x6f\x63\x6b\x64\x65\x76\x69\x63\x65" \
-"\x00\x5b\x2d\x66\x69\x6e\x5d\x20\x53\x4f\x55\x52\x43\x45\x20\x44" \
-"\x45\x53\x54\x0a\x6f\x72\x3a\x20\x6d\x76\x20\x5b\x2d\x66\x69\x6e" \
-"\x5d\x20\x53\x4f\x55\x52\x43\x45\x2e\x2e\x2e\x20\x44\x49\x52\x45" \
-"\x43\x54\x4f\x52\x59\x0a\x0a\x52\x65\x6e\x61\x6d\x65\x20\x53\x4f" \
-"\x55\x52\x43\x45\x20\x74\x6f\x20\x44\x45\x53\x54\x2c\x20\x6f\x72" \
-"\x20\x6d\x6f\x76\x65\x20\x53\x4f\x55\x52\x43\x45\x28\x73\x29\x20" \
-"\x74\x6f\x20\x44\x49\x52\x45\x43\x54\x4f\x52\x59\x0a\x0a\x09\x2d" \
-"\x66\x09\x44\x6f\x6e\x27\x74\x20\x70\x72\x6f\x6d\x70\x74\x20\x62" \
-"\x65\x66\x6f\x72\x65\x20\x6f\x76\x65\x72\x77\x72\x69\x74\x69\x6e" \
-"\x67\x0a\x09\x2d\x69\x09\x49\x6e\x74\x65\x72\x61\x63\x74\x69\x76" \
-"\x65\x2c\x20\x70\x72\x6f\x6d\x70\x74\x20\x62\x65\x66\x6f\x72\x65" \
-"\x20\x6f\x76\x65\x72\x77\x72\x69\x74\x65\x0a\x09\x2d\x6e\x09\x44" \
-"\x6f\x6e\x27\x74\x20\x6f\x76\x65\x72\x77\x72\x69\x74\x65\x20\x61" \
-"\x6e\x20\x65\x78\x69\x73\x74\x69\x6e\x67\x20\x66\x69\x6c\x65\x00" \
-"\x5b\x2d\x6f\x5d\x20\x5b\x2d\x62\x5d\x20\x5b\x2d\x73\x20\x41\x44" \
-"\x44\x52\x5d\x20\x5b\x2d\x66\x20\x46\x49\x4c\x45\x5d\x20\x4d\x54" \
-"\x44\x5f\x44\x45\x56\x49\x43\x45\x0a\x0a\x44\x75\x6d\x70\x20\x74" \
-"\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x4d\x54\x44" \
-"\x20\x64\x65\x76\x69\x63\x65\x0a\x0a\x09\x2d\x6f\x09\x44\x75\x6d" \
-"\x70\x20\x6f\x6f\x62\x20\x64\x61\x74\x61\x0a\x09\x2d\x62\x09\x4f" \
-"\x6d\x69\x74\x20\x62\x61\x64\x20\x62\x6c\x6f\x63\x6b\x20\x66\x72" \
-"\x6f\x6d\x20\x74\x68\x65\x20\x64\x75\x6d\x70\x0a\x09\x2d\x73\x20" \
-"\x41\x44\x44\x52\x09\x53\x74\x61\x72\x74\x20\x61\x64\x64\x72\x65" \
-"\x73\x73\x0a\x09\x2d\x6c\x20\x4c\x45\x4e\x09\x4c\x65\x6e\x67\x74" \
-"\x68\x0a\x09\x2d\x66\x20\x46\x49\x4c\x45\x09\x44\x75\x6d\x70\x20" \
-"\x74\x6f\x20\x66\x69\x6c\x65\x20\x28\x27\x2d\x27\x20\x66\x6f\x72" \
-"\x20\x73\x74\x64\x6f\x75\x74\x29\x00\x5b\x2d\x70\x5d\x20\x5b\x2d" \
-"\x73\x20\x41\x44\x44\x52\x5d\x20\x4d\x54\x44\x5f\x44\x45\x56\x49" \
-"\x43\x45\x20\x5b\x46\x49\x4c\x45\x5d\x0a\x0a\x57\x72\x69\x74\x65" \
-"\x20\x74\x6f\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65" \
-"\x64\x20\x4d\x54\x44\x20\x64\x65\x76\x69\x63\x65\x0a\x0a\x09\x2d" \
-"\x70\x09\x50\x61\x64\x20\x74\x6f\x20\x70\x61\x67\x65\x20\x73\x69" \
-"\x7a\x65\x0a\x09\x2d\x73\x20\x41\x44\x44\x52\x09\x53\x74\x61\x72" \
-"\x74\x20\x61\x64\x64\x72\x65\x73\x73\x00\x5b\x2d\x6e\x20\x41\x44" \
-"\x4a\x55\x53\x54\x5d\x20\x5b\x50\x52\x4f\x47\x20\x41\x52\x47\x53" \
-"\x5d\x0a\x0a\x43\x68\x61\x6e\x67\x65\x20\x73\x63\x68\x65\x64\x75" \
-"\x6c\x69\x6e\x67\x20\x70\x72\x69\x6f\x72\x69\x74\x79\x2c\x20\x72" \
-"\x75\x6e\x20\x50\x52\x4f\x47\x0a\x0a\x09\x2d\x6e\x20\x41\x44\x4a" \
-"\x55\x53\x54\x09\x41\x64\x6a\x75\x73\x74\x20\x70\x72\x69\x6f\x72" \
-"\x69\x74\x79\x20\x62\x79\x20\x41\x44\x4a\x55\x53\x54\x00\x50\x52" \
-"\x4f\x47\x20\x41\x52\x47\x53\x0a\x0a\x52\x75\x6e\x20\x50\x52\x4f" \
-"\x47\x20\x69\x6d\x6d\x75\x6e\x65\x20\x74\x6f\x20\x68\x61\x6e\x67" \
-"\x75\x70\x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x75\x74\x70\x75\x74" \
-"\x20\x74\x6f\x20\x61\x20\x6e\x6f\x6e\x2d\x74\x74\x79\x00\x5b\x2d" \
-"\x61\x42\x62\x63\x44\x64\x65\x46\x66\x48\x68\x49\x69\x4c\x6c\x4f" \
-"\x6f\x76\x58\x78\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x0a\x0a\x50\x72" \
-"\x69\x6e\x74\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20\x73\x74\x64" \
-"\x69\x6e\x29\x20\x75\x6e\x61\x6d\x62\x69\x67\x75\x6f\x75\x73\x6c" \
-"\x79\x2c\x20\x61\x73\x20\x6f\x63\x74\x61\x6c\x20\x62\x79\x74\x65" \
-"\x73\x20\x62\x79\x20\x64\x65\x66\x61\x75\x6c\x74\x00\x5b\x4f\x50" \
-"\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x4f\x52\x49\x47\x46\x49\x4c\x45" \
-"\x20\x5b\x50\x41\x54\x43\x48\x46\x49\x4c\x45\x5d\x5d\x0a\x0a\x09" \
-"\x2d\x70\x2c\x2d\x2d\x73\x74\x72\x69\x70\x20\x4e\x09\x09\x53\x74" \
-"\x72\x69\x70\x20\x4e\x20\x6c\x65\x61\x64\x69\x6e\x67\x20\x63\x6f" \
-"\x6d\x70\x6f\x6e\x65\x6e\x74\x73\x20\x66\x72\x6f\x6d\x20\x66\x69" \
-"\x6c\x65\x20\x6e\x61\x6d\x65\x73\x0a\x09\x2d\x69\x2c\x2d\x2d\x69" \
-"\x6e\x70\x75\x74\x20\x44\x49\x46\x46\x09\x09\x52\x65\x61\x64\x20" \
-"\x44\x49\x46\x46\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20" \
-"\x73\x74\x64\x69\x6e\x0a\x09\x2d\x52\x2c\x2d\x2d\x72\x65\x76\x65" \
-"\x72\x73\x65\x09\x09\x52\x65\x76\x65\x72\x73\x65\x20\x70\x61\x74" \
-"\x63\x68\x0a\x09\x2d\x4e\x2c\x2d\x2d\x66\x6f\x72\x77\x61\x72\x64" \
-"\x09\x09\x49\x67\x6e\x6f\x72\x65\x20\x61\x6c\x72\x65\x61\x64\x79" \
-"\x20\x61\x70\x70\x6c\x69\x65\x64\x20\x70\x61\x74\x63\x68\x65\x73" \
-"\x0a\x09\x2d\x45\x2c\x2d\x2d\x72\x65\x6d\x6f\x76\x65\x2d\x65\x6d" \
-"\x70\x74\x79\x2d\x66\x69\x6c\x65\x73\x09\x52\x65\x6d\x6f\x76\x65" \
-"\x20\x6f\x75\x74\x70\x75\x74\x20\x66\x69\x6c\x65\x73\x20\x69\x66" \
-"\x20\x74\x68\x65\x79\x20\x62\x65\x63\x6f\x6d\x65\x20\x65\x6d\x70" \
-"\x74\x79\x00\x5b\x2d\x66\x6c\x6e\x6f\x76\x78\x5d\x20\x5b\x2d\x73" \
-"\x20\x53\x49\x44\x7c\x2d\x50\x20\x50\x50\x49\x44\x7c\x50\x41\x54" \
-"\x54\x45\x52\x4e\x5d\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x70" \
-"\x72\x6f\x63\x65\x73\x73\x28\x65\x73\x29\x20\x73\x65\x6c\x65\x63" \
-"\x74\x65\x64\x20\x62\x79\x20\x72\x65\x67\x65\x78\x20\x50\x41\x54" \
-"\x54\x45\x52\x4e\x0a\x0a\x09\x2d\x6c\x09\x53\x68\x6f\x77\x20\x63" \
-"\x6f\x6d\x6d\x61\x6e\x64\x20\x6e\x61\x6d\x65\x20\x74\x6f\x6f\x0a" \
-"\x09\x2d\x66\x09\x4d\x61\x74\x63\x68\x20\x61\x67\x61\x69\x6e\x73" \
-"\x74\x20\x65\x6e\x74\x69\x72\x65\x20\x63\x6f\x6d\x6d\x61\x6e\x64" \
-"\x20\x6c\x69\x6e\x65\x0a\x09\x2d\x6e\x09\x53\x68\x6f\x77\x20\x74" \
-"\x68\x65\x20\x6e\x65\x77\x65\x73\x74\x20\x70\x72\x6f\x63\x65\x73" \
-"\x73\x20\x6f\x6e\x6c\x79\x0a\x09\x2d\x6f\x09\x53\x68\x6f\x77\x20" \
-"\x74\x68\x65\x20\x6f\x6c\x64\x65\x73\x74\x20\x70\x72\x6f\x63\x65" \
-"\x73\x73\x20\x6f\x6e\x6c\x79\x0a\x09\x2d\x76\x09\x4e\x65\x67\x61" \
-"\x74\x65\x20\x74\x68\x65\x20\x6d\x61\x74\x63\x68\x0a\x09\x2d\x78" \
-"\x09\x4d\x61\x74\x63\x68\x20\x77\x68\x6f\x6c\x65\x20\x6e\x61\x6d" \
-"\x65\x20\x28\x6e\x6f\x74\x20\x73\x75\x62\x73\x74\x72\x69\x6e\x67" \
-"\x29\x0a\x09\x2d\x73\x09\x4d\x61\x74\x63\x68\x20\x73\x65\x73\x73" \
-"\x69\x6f\x6e\x20\x49\x44\x20\x28\x30\x20\x66\x6f\x72\x20\x63\x75" \
-"\x72\x72\x65\x6e\x74\x29\x0a\x09\x2d\x50\x09\x4d\x61\x74\x63\x68" \
-"\x20\x70\x61\x72\x65\x6e\x74\x20\x70\x72\x6f\x63\x65\x73\x73\x20" \
-"\x49\x44\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x4e\x41" \
-"\x4d\x45\x5d\x2e\x2e\x2e\x0a\x0a\x4c\x69\x73\x74\x20\x50\x49\x44" \
-"\x73\x20\x6f\x66\x20\x61\x6c\x6c\x20\x70\x72\x6f\x63\x65\x73\x73" \
-"\x65\x73\x20\x77\x69\x74\x68\x20\x6e\x61\x6d\x65\x73\x20\x74\x68" \
-"\x61\x74\x20\x6d\x61\x74\x63\x68\x20\x4e\x41\x4d\x45\x73\x0a\x0a" \
-"\x09\x2d\x73\x09\x53\x68\x6f\x77\x20\x6f\x6e\x6c\x79\x20\x6f\x6e" \
-"\x65\x20\x50\x49\x44\x0a\x09\x2d\x6f\x20\x50\x49\x44\x09\x4f\x6d" \
-"\x69\x74\x20\x67\x69\x76\x65\x6e\x20\x70\x69\x64\x0a\x09\x09\x55" \
-"\x73\x65\x20\x25\x50\x50\x49\x44\x20\x74\x6f\x20\x6f\x6d\x69\x74" \
-"\x20\x70\x69\x64\x20\x6f\x66\x20\x70\x69\x64\x6f\x66\x27\x73\x20" \
-"\x70\x61\x72\x65\x6e\x74\x00\x5b\x2d\x6c\x7c\x2d\x53\x49\x47\x4e" \
-"\x41\x4c\x5d\x20\x5b\x2d\x66\x6e\x6f\x76\x78\x5d\x20\x5b\x2d\x73" \
-"\x20\x53\x49\x44\x7c\x2d\x50\x20\x50\x50\x49\x44\x7c\x50\x41\x54" \
-"\x54\x45\x52\x4e\x5d\x0a\x0a\x53\x65\x6e\x64\x20\x61\x20\x73\x69" \
-"\x67\x6e\x61\x6c\x20\x74\x6f\x20\x70\x72\x6f\x63\x65\x73\x73\x28" \
-"\x65\x73\x29\x20\x73\x65\x6c\x65\x63\x74\x65\x64\x20\x62\x79\x20" \
-"\x72\x65\x67\x65\x78\x20\x50\x41\x54\x54\x45\x52\x4e\x0a\x0a\x09" \
-"\x2d\x6c\x09\x4c\x69\x73\x74\x20\x61\x6c\x6c\x20\x73\x69\x67\x6e" \
-"\x61\x6c\x73\x0a\x09\x2d\x66\x09\x4d\x61\x74\x63\x68\x20\x61\x67" \
-"\x61\x69\x6e\x73\x74\x20\x65\x6e\x74\x69\x72\x65\x20\x63\x6f\x6d" \
-"\x6d\x61\x6e\x64\x20\x6c\x69\x6e\x65\x0a\x09\x2d\x6e\x09\x53\x69" \
-"\x67\x6e\x61\x6c\x20\x74\x68\x65\x20\x6e\x65\x77\x65\x73\x74\x20" \
-"\x70\x72\x6f\x63\x65\x73\x73\x20\x6f\x6e\x6c\x79\x0a\x09\x2d\x6f" \
-"\x09\x53\x69\x67\x6e\x61\x6c\x20\x74\x68\x65\x20\x6f\x6c\x64\x65" \
-"\x73\x74\x20\x70\x72\x6f\x63\x65\x73\x73\x20\x6f\x6e\x6c\x79\x0a" \
-"\x09\x2d\x76\x09\x4e\x65\x67\x61\x74\x65\x20\x74\x68\x65\x20\x6d" \
-"\x61\x74\x63\x68\x0a\x09\x2d\x78\x09\x4d\x61\x74\x63\x68\x20\x77" \
-"\x68\x6f\x6c\x65\x20\x6e\x61\x6d\x65\x20\x28\x6e\x6f\x74\x20\x73" \
-"\x75\x62\x73\x74\x72\x69\x6e\x67\x29\x0a\x09\x2d\x73\x09\x4d\x61" \
-"\x74\x63\x68\x20\x73\x65\x73\x73\x69\x6f\x6e\x20\x49\x44\x20\x28" \
-"\x30\x20\x66\x6f\x72\x20\x63\x75\x72\x72\x65\x6e\x74\x29\x0a\x09" \
-"\x2d\x50\x09\x4d\x61\x74\x63\x68\x20\x70\x61\x72\x65\x6e\x74\x20" \
-"\x70\x72\x6f\x63\x65\x73\x73\x20\x49\x44\x00\x5b\x56\x41\x52\x49" \
-"\x41\x42\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x50\x72\x69\x6e\x74\x20" \
-"\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x20\x56\x41\x52\x49" \
-"\x41\x42\x4c\x45\x73\x2e\x0a\x49\x66\x20\x6e\x6f\x20\x56\x41\x52" \
-"\x49\x41\x42\x4c\x45\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x2c" \
-"\x20\x70\x72\x69\x6e\x74\x20\x61\x6c\x6c\x2e\x00\x46\x4f\x52\x4d" \
-"\x41\x54\x20\x5b\x41\x52\x47\x5d\x2e\x2e\x2e\x0a\x0a\x46\x6f\x72" \
-"\x6d\x61\x74\x20\x61\x6e\x64\x20\x70\x72\x69\x6e\x74\x20\x41\x52" \
-"\x47\x28\x73\x29\x20\x61\x63\x63\x6f\x72\x64\x69\x6e\x67\x20\x74" \
-"\x6f\x20\x46\x4f\x52\x4d\x41\x54\x20\x28\x61\x2d\x6c\x61\x20\x43" \
-"\x20\x70\x72\x69\x6e\x74\x66\x29\x00\x0a\x0a\x53\x68\x6f\x77\x20" \
-"\x6c\x69\x73\x74\x20\x6f\x66\x20\x70\x72\x6f\x63\x65\x73\x73\x65" \
-"\x73\x0a\x0a\x09\x77\x09\x57\x69\x64\x65\x20\x6f\x75\x74\x70\x75" \
-"\x74\x0a\x09\x6c\x09\x4c\x6f\x6e\x67\x20\x6f\x75\x74\x70\x75\x74" \
-"\x0a\x09\x54\x09\x53\x68\x6f\x77\x20\x74\x68\x72\x65\x61\x64\x73" \
-"\x00\x5b\x2d\x70\x5d\x20\x5b\x50\x49\x44\x7c\x55\x53\x45\x52\x5d" \
-"\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x70\x72\x6f\x63\x65\x73" \
-"\x73\x20\x74\x72\x65\x65\x2c\x20\x6f\x70\x74\x69\x6f\x6e\x61\x6c" \
-"\x6c\x79\x20\x73\x74\x61\x72\x74\x20\x66\x72\x6f\x6d\x20\x55\x53" \
-"\x45\x52\x20\x6f\x72\x20\x50\x49\x44\x0a\x0a\x09\x2d\x70\x09\x53" \
-"\x68\x6f\x77\x20\x70\x69\x64\x73\x00\x0a\x0a\x50\x72\x69\x6e\x74" \
-"\x20\x74\x68\x65\x20\x66\x75\x6c\x6c\x20\x66\x69\x6c\x65\x6e\x61" \
-"\x6d\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e" \
-"\x74\x20\x77\x6f\x72\x6b\x69\x6e\x67\x20\x64\x69\x72\x65\x63\x74" \
-"\x6f\x72\x79\x00\x0a\x0a\x50\x72\x69\x6e\x74\x20\x74\x68\x65\x20" \
-"\x64\x65\x76\x69\x63\x65\x20\x6e\x6f\x64\x65\x20\x61\x73\x73\x6f" \
-"\x63\x69\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20" \
-"\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x20\x6d\x6f\x75\x6e\x74" \
-"\x65\x64\x20\x61\x74\x20\x27\x2f\x27\x00\x5b\x2d\x66\x6e\x76\x5d" \
-"\x20\x46\x49\x4c\x45\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x74" \
-"\x68\x65\x20\x76\x61\x6c\x75\x65\x20\x6f\x66\x20\x61\x20\x73\x79" \
-"\x6d\x6c\x69\x6e\x6b\x0a\x0a\x09\x2d\x66\x09\x43\x61\x6e\x6f\x6e" \
-"\x69\x63\x61\x6c\x69\x7a\x65\x20\x62\x79\x20\x66\x6f\x6c\x6c\x6f" \
-"\x77\x69\x6e\x67\x20\x61\x6c\x6c\x20\x73\x79\x6d\x6c\x69\x6e\x6b" \
-"\x73\x0a\x09\x2d\x6e\x09\x44\x6f\x6e\x27\x74\x20\x61\x64\x64\x20" \
-"\x6e\x65\x77\x6c\x69\x6e\x65\x0a\x09\x2d\x76\x09\x56\x65\x72\x62" \
-"\x6f\x73\x65\x00\x46\x49\x4c\x45\x2e\x2e\x2e\x0a\x0a\x52\x65\x74" \
-"\x75\x72\x6e\x20\x74\x68\x65\x20\x61\x62\x73\x6f\x6c\x75\x74\x65" \
-"\x20\x70\x61\x74\x68\x6e\x61\x6d\x65\x73\x20\x6f\x66\x20\x67\x69" \
-"\x76\x65\x6e\x20\x46\x49\x4c\x45\x00\x7b\x7b\x2d\x6e\x20\x49\x4e" \
-"\x43\x52\x45\x4d\x45\x4e\x54\x7d\x20\x7c\x20\x50\x52\x49\x4f\x52" \
-"\x49\x54\x59\x7d\x20\x5b\x5b\x2d\x70\x20\x7c\x20\x2d\x67\x20\x7c" \
-"\x20\x2d\x75\x5d\x20\x49\x44\x2e\x2e\x2e\x5d\x0a\x0a\x43\x68\x61" \
-"\x6e\x67\x65\x20\x73\x63\x68\x65\x64\x75\x6c\x69\x6e\x67\x20\x70" \
-"\x72\x69\x6f\x72\x69\x74\x79\x20\x66\x6f\x72\x20\x61\x20\x72\x75" \
-"\x6e\x6e\x69\x6e\x67\x20\x70\x72\x6f\x63\x65\x73\x73\x0a\x0a\x09" \
-"\x2d\x6e\x09\x41\x64\x6a\x75\x73\x74\x20\x63\x75\x72\x72\x65\x6e" \
-"\x74\x20\x6e\x69\x63\x65\x20\x76\x61\x6c\x75\x65\x20\x28\x73\x6d" \
-"\x61\x6c\x6c\x65\x72\x20\x69\x73\x20\x66\x61\x73\x74\x65\x72\x29" \
-"\x0a\x09\x2d\x70\x09\x50\x72\x6f\x63\x65\x73\x73\x20\x69\x64\x28" \
-"\x73\x29\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x0a\x09\x2d\x67" \
-"\x09\x50\x72\x6f\x63\x65\x73\x73\x20\x67\x72\x6f\x75\x70\x20\x69" \
-"\x64\x28\x73\x29\x0a\x09\x2d\x75\x09\x50\x72\x6f\x63\x65\x73\x73" \
-"\x20\x75\x73\x65\x72\x20\x6e\x61\x6d\x65\x28\x73\x29\x20\x61\x6e" \
-"\x64\x2f\x6f\x72\x20\x69\x64\x28\x73\x29\x00\x0a\x0a\x52\x65\x73" \
-"\x65\x74\x20\x74\x68\x65\x20\x73\x63\x72\x65\x65\x6e\x00\x0a\x0a" \
-"\x52\x65\x73\x69\x7a\x65\x20\x74\x68\x65\x20\x73\x63\x72\x65\x65" \
-"\x6e\x00\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x52\x65\x76" \
-"\x65\x72\x73\x65\x20\x6c\x69\x6e\x65\x73\x20\x6f\x66\x20\x46\x49" \
-"\x4c\x45\x00\x5b\x2d\x69\x72\x66\x5d\x20\x46\x49\x4c\x45\x2e\x2e" \
-"\x2e\x0a\x0a\x52\x65\x6d\x6f\x76\x65\x20\x28\x75\x6e\x6c\x69\x6e" \
-"\x6b\x29\x20\x46\x49\x4c\x45\x73\x0a\x0a\x09\x2d\x69\x09\x41\x6c" \
-"\x77\x61\x79\x73\x20\x70\x72\x6f\x6d\x70\x74\x20\x62\x65\x66\x6f" \
-"\x72\x65\x20\x72\x65\x6d\x6f\x76\x69\x6e\x67\x0a\x09\x2d\x66\x09" \
-"\x4e\x65\x76\x65\x72\x20\x70\x72\x6f\x6d\x70\x74\x0a\x09\x2d\x52" \
-"\x2c\x2d\x72\x09\x52\x65\x63\x75\x72\x73\x65\x00\x5b\x4f\x50\x54" \
-"\x49\x4f\x4e\x53\x5d\x20\x44\x49\x52\x45\x43\x54\x4f\x52\x59\x2e" \
-"\x2e\x2e\x0a\x0a\x52\x65\x6d\x6f\x76\x65\x20\x44\x49\x52\x45\x43" \
-"\x54\x4f\x52\x59\x20\x69\x66\x20\x69\x74\x20\x69\x73\x20\x65\x6d" \
-"\x70\x74\x79\x0a\x0a\x09\x2d\x70\x7c\x2d\x2d\x70\x61\x72\x65\x6e" \
-"\x74\x73\x09\x49\x6e\x63\x6c\x75\x64\x65\x20\x70\x61\x72\x65\x6e" \
-"\x74\x73\x0a\x09\x2d\x2d\x69\x67\x6e\x6f\x72\x65\x2d\x66\x61\x69" \
-"\x6c\x2d\x6f\x6e\x2d\x6e\x6f\x6e\x2d\x65\x6d\x70\x74\x79\x00\x5b" \
-"\x2d\x71\x66\x77\x72\x73\x76\x5d\x20\x4d\x4f\x44\x55\x4c\x45\x20" \
-"\x5b\x73\x79\x6d\x62\x6f\x6c\x3d\x76\x61\x6c\x75\x65\x5d\x2e\x2e" \
-"\x2e\x0a\x0a\x09\x2d\x72\x09\x52\x65\x6d\x6f\x76\x65\x20\x4d\x4f" \
-"\x44\x55\x4c\x45\x20\x28\x73\x74\x61\x63\x6b\x73\x29\x20\x6f\x72" \
-"\x20\x64\x6f\x20\x61\x75\x74\x6f\x63\x6c\x65\x61\x6e\x0a\x09\x2d" \
-"\x71\x09\x51\x75\x69\x65\x74\x0a\x09\x2d\x76\x09\x56\x65\x72\x62" \
-"\x6f\x73\x65\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x0a\x09\x2d" \
-"\x77\x09\x57\x61\x69\x74\x20\x66\x6f\x72\x20\x75\x6e\x6c\x6f\x61" \
-"\x64\x0a\x09\x2d\x73\x09\x52\x65\x70\x6f\x72\x74\x20\x76\x69\x61" \
-"\x20\x73\x79\x73\x6c\x6f\x67\x20\x69\x6e\x73\x74\x65\x61\x64\x20" \
-"\x6f\x66\x20\x73\x74\x64\x65\x72\x72\x00\x5b\x2d\x74\x6c\x5d\x20" \
-"\x5b\x2d\x61\x20\x41\x52\x47\x5d\x2e\x2e\x2e\x20\x5b\x2d\x75\x20" \
-"\x4d\x41\x53\x4b\x5d\x20\x44\x49\x52\x45\x43\x54\x4f\x52\x59\x0a" \
-"\x0a\x52\x75\x6e\x20\x61\x20\x62\x75\x6e\x63\x68\x20\x6f\x66\x20" \
-"\x73\x63\x72\x69\x70\x74\x73\x20\x69\x6e\x20\x44\x49\x52\x45\x43" \
-"\x54\x4f\x52\x59\x0a\x0a\x09\x2d\x74\x09\x44\x72\x79\x20\x72\x75" \
-"\x6e\x0a\x09\x2d\x6c\x09\x50\x72\x69\x6e\x74\x20\x6e\x61\x6d\x65" \
-"\x73\x20\x6f\x66\x20\x6d\x61\x74\x63\x68\x69\x6e\x67\x20\x66\x69" \
-"\x6c\x65\x73\x20\x65\x76\x65\x6e\x20\x69\x66\x20\x74\x68\x65\x79" \
-"\x20\x61\x72\x65\x20\x6e\x6f\x74\x20\x65\x78\x65\x63\x75\x74\x61" \
-"\x62\x6c\x65\x0a\x09\x2d\x61\x20\x41\x52\x47\x09\x50\x61\x73\x73" \
-"\x20\x41\x52\x47\x20\x61\x73\x20\x61\x72\x67\x75\x6d\x65\x6e\x74" \
-"\x20\x74\x6f\x20\x70\x72\x6f\x67\x72\x61\x6d\x73\x0a\x09\x2d\x75" \
-"\x20\x4d\x41\x53\x4b\x09\x53\x65\x74\x20\x75\x6d\x61\x73\x6b\x20" \
-"\x74\x6f\x20\x4d\x41\x53\x4b\x20\x62\x65\x66\x6f\x72\x65\x20\x72" \
-"\x75\x6e\x6e\x69\x6e\x67\x20\x70\x72\x6f\x67\x72\x61\x6d\x73\x00" \
-"\x5b\x2d\x69\x6e\x72\x5d\x20\x5b\x2d\x66\x20\x46\x49\x4c\x45\x5d" \
-"\x2e\x2e\x2e\x20\x5b\x2d\x65\x20\x43\x4d\x44\x5d\x2e\x2e\x2e\x20" \
-"\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x6f\x72\x3a\x20\x73\x65" \
-"\x64\x20\x5b\x2d\x69\x6e\x72\x5d\x20\x43\x4d\x44\x20\x5b\x46\x49" \
-"\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x09\x2d\x65\x20\x43\x4d\x44\x09" \
-"\x41\x64\x64\x20\x43\x4d\x44\x20\x74\x6f\x20\x73\x65\x64\x20\x63" \
-"\x6f\x6d\x6d\x61\x6e\x64\x73\x20\x74\x6f\x20\x62\x65\x20\x65\x78" \
-"\x65\x63\x75\x74\x65\x64\x0a\x09\x2d\x66\x20\x46\x49\x4c\x45\x09" \
-"\x41\x64\x64\x20\x46\x49\x4c\x45\x20\x63\x6f\x6e\x74\x65\x6e\x74" \
-"\x73\x20\x74\x6f\x20\x73\x65\x64\x20\x63\x6f\x6d\x6d\x61\x6e\x64" \
-"\x73\x20\x74\x6f\x20\x62\x65\x20\x65\x78\x65\x63\x75\x74\x65\x64" \
-"\x0a\x09\x2d\x69\x5b\x53\x46\x58\x5d\x09\x45\x64\x69\x74\x20\x66" \
-"\x69\x6c\x65\x73\x20\x69\x6e\x2d\x70\x6c\x61\x63\x65\x20\x28\x6f" \
-"\x74\x68\x65\x72\x77\x69\x73\x65\x20\x73\x65\x6e\x64\x73\x20\x74" \
-"\x6f\x20\x73\x74\x64\x6f\x75\x74\x29\x0a\x09\x09\x4f\x70\x74\x69" \
-"\x6f\x6e\x61\x6c\x6c\x79\x20\x62\x61\x63\x6b\x20\x66\x69\x6c\x65" \
-"\x73\x20\x75\x70\x2c\x20\x61\x70\x70\x65\x6e\x64\x69\x6e\x67\x20" \
-"\x53\x46\x58\x0a\x09\x2d\x6e\x09\x53\x75\x70\x70\x72\x65\x73\x73" \
-"\x20\x61\x75\x74\x6f\x6d\x61\x74\x69\x63\x20\x70\x72\x69\x6e\x74" \
-"\x69\x6e\x67\x20\x6f\x66\x20\x70\x61\x74\x74\x65\x72\x6e\x20\x73" \
-"\x70\x61\x63\x65\x0a\x09\x2d\x72\x09\x55\x73\x65\x20\x65\x78\x74" \
-"\x65\x6e\x64\x65\x64\x20\x72\x65\x67\x65\x78\x20\x73\x79\x6e\x74" \
-"\x61\x78\x0a\x0a\x49\x66\x20\x6e\x6f\x20\x2d\x65\x20\x6f\x72\x20" \
-"\x2d\x66\x2c\x20\x74\x68\x65\x20\x66\x69\x72\x73\x74\x20\x6e\x6f" \
-"\x6e\x2d\x6f\x70\x74\x69\x6f\x6e\x20\x61\x72\x67\x75\x6d\x65\x6e" \
-"\x74\x20\x69\x73\x20\x74\x68\x65\x20\x73\x65\x64\x20\x63\x6f\x6d" \
-"\x6d\x61\x6e\x64\x20\x73\x74\x72\x69\x6e\x67\x2e\x0a\x52\x65\x6d" \
-"\x61\x69\x6e\x69\x6e\x67\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73" \
-"\x20\x61\x72\x65\x20\x69\x6e\x70\x75\x74\x20\x66\x69\x6c\x65\x73" \
-"\x20\x28\x73\x74\x64\x69\x6e\x20\x69\x66\x20\x6e\x6f\x6e\x65\x29" \
-"\x2e\x00\x5b\x2d\x77\x5d\x20\x5b\x2d\x73\x20\x53\x45\x50\x5d\x20" \
-"\x5b\x46\x49\x52\x53\x54\x20\x5b\x49\x4e\x43\x5d\x5d\x20\x4c\x41" \
-"\x53\x54\x0a\x0a\x50\x72\x69\x6e\x74\x20\x6e\x75\x6d\x62\x65\x72" \
-"\x73\x20\x66\x72\x6f\x6d\x20\x46\x49\x52\x53\x54\x20\x74\x6f\x20" \
-"\x4c\x41\x53\x54\x2c\x20\x69\x6e\x20\x73\x74\x65\x70\x73\x20\x6f" \
-"\x66\x20\x49\x4e\x43\x2e\x0a\x46\x49\x52\x53\x54\x2c\x20\x49\x4e" \
-"\x43\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x74\x6f\x20\x31\x2e\x0a" \
-"\x0a\x09\x2d\x77\x09\x50\x61\x64\x20\x74\x6f\x20\x6c\x61\x73\x74" \
-"\x20\x77\x69\x74\x68\x20\x6c\x65\x61\x64\x69\x6e\x67\x20\x7a\x65" \
-"\x72\x6f\x73\x0a\x09\x2d\x73\x20\x53\x45\x50\x09\x53\x74\x72\x69" \
-"\x6e\x67\x20\x73\x65\x70\x61\x72\x61\x74\x6f\x72\x00\x5b\x2d\x72" \
-"\x5d\x20\x5b\x44\x45\x56\x49\x43\x45\x5d\x0a\x0a\x52\x65\x64\x69" \
-"\x72\x65\x63\x74\x20\x73\x79\x73\x74\x65\x6d\x20\x63\x6f\x6e\x73" \
-"\x6f\x6c\x65\x20\x6f\x75\x74\x70\x75\x74\x20\x74\x6f\x20\x44\x45" \
-"\x56\x49\x43\x45\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x3a\x20\x2f" \
-"\x64\x65\x76\x2f\x74\x74\x79\x29\x0a\x0a\x09\x2d\x72\x09\x52\x65" \
-"\x73\x65\x74\x20\x6f\x75\x74\x70\x75\x74\x20\x74\x6f\x20\x2f\x64" \
-"\x65\x76\x2f\x63\x6f\x6e\x73\x6f\x6c\x65\x00\x5b\x2d\x67\x61\x62" \
-"\x47\x76\x7a\x56\x5d\x20\x44\x45\x56\x49\x43\x45\x20\x5b\x50\x41" \
-"\x52\x41\x4d\x45\x54\x45\x52\x20\x5b\x41\x52\x47\x5d\x5d\x2e\x2e" \
-"\x2e\x0a\x0a\x52\x65\x71\x75\x65\x73\x74\x20\x6f\x72\x20\x73\x65" \
-"\x74\x20\x4c\x69\x6e\x75\x78\x20\x73\x65\x72\x69\x61\x6c\x20\x70" \
-"\x6f\x72\x74\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x0a" \
-"\x0a\x09\x2d\x67\x09\x49\x6e\x74\x65\x72\x70\x72\x65\x74\x20\x70" \
-"\x61\x72\x61\x6d\x65\x74\x65\x72\x73\x20\x61\x73\x20\x6c\x69\x73" \
-"\x74\x20\x6f\x66\x20\x64\x65\x76\x69\x63\x65\x73\x20\x66\x6f\x72" \
-"\x20\x72\x65\x70\x6f\x72\x74\x69\x6e\x67\x0a\x09\x2d\x61\x09\x50" \
-"\x72\x69\x6e\x74\x20\x61\x6c\x6c\x20\x61\x76\x61\x69\x6c\x61\x62" \
-"\x6c\x65\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x0a\x09" \
-"\x2d\x62\x09\x50\x72\x69\x6e\x74\x20\x73\x75\x6d\x6d\x61\x72\x79" \
-"\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x0a\x09\x2d\x47" \
-"\x09\x50\x72\x69\x6e\x74\x20\x69\x6e\x20\x66\x6f\x72\x6d\x20\x77" \
-"\x68\x69\x63\x68\x20\x63\x61\x6e\x20\x62\x65\x20\x66\x65\x64\x20" \
-"\x62\x61\x63\x6b\x0a\x09\x09\x74\x6f\x20\x73\x65\x74\x73\x65\x72" \
-"\x69\x61\x6c\x20\x61\x73\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6c" \
-"\x69\x6e\x65\x20\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x73\x0a\x09" \
-"\x2d\x7a\x09\x5a\x65\x72\x6f\x20\x6f\x75\x74\x20\x73\x65\x72\x69" \
-"\x61\x6c\x20\x66\x6c\x61\x67\x73\x20\x62\x65\x66\x6f\x72\x65\x20" \
-"\x73\x65\x74\x74\x69\x6e\x67\x0a\x09\x2d\x76\x09\x56\x65\x72\x62" \
-"\x6f\x73\x65\x0a\x0a\x50\x61\x72\x61\x6d\x65\x74\x65\x72\x73\x3a" \
-"\x20\x28\x2a\x20\x3d\x20\x74\x61\x6b\x65\x73\x20\x61\x6e\x20\x61" \
-"\x72\x67\x75\x6d\x65\x6e\x74\x2c\x20\x5e\x20\x3d\x20\x63\x61\x6e" \
-"\x20\x62\x65\x20\x74\x75\x72\x6e\x65\x64\x20\x6f\x66\x66\x20\x62" \
-"\x79\x20\x70\x72\x65\x63\x65\x64\x69\x6e\x67\x20\x5e\x29\x0a\x09" \
-"\x2a\x70\x6f\x72\x74\x2c\x20\x2a\x69\x72\x71\x2c\x20\x2a\x64\x69" \
-"\x76\x69\x73\x6f\x72\x2c\x20\x2a\x75\x61\x72\x74\x2c\x20\x2a\x62" \
-"\x61\x75\x6e\x64\x5f\x62\x61\x73\x65\x2c\x20\x2a\x63\x6c\x6f\x73" \
-"\x65\x5f\x64\x65\x6c\x61\x79\x2c\x20\x2a\x63\x6c\x6f\x73\x69\x6e" \
-"\x67\x5f\x77\x61\x69\x74\x2c\x0a\x09\x5e\x66\x6f\x75\x72\x70\x6f" \
-"\x72\x74\x2c\x20\x5e\x61\x75\x74\x6f\x5f\x69\x72\x71\x2c\x20\x5e" \
-"\x73\x6b\x69\x70\x5f\x74\x65\x73\x74\x2c\x20\x5e\x73\x61\x6b\x2c" \
-"\x20\x5e\x73\x65\x73\x73\x69\x6f\x6e\x5f\x6c\x6f\x63\x6b\x6f\x75" \
-"\x74\x2c\x20\x5e\x70\x67\x72\x70\x5f\x6c\x6f\x63\x6b\x6f\x75\x74" \
-"\x2c\x0a\x09\x5e\x63\x61\x6c\x6c\x6f\x75\x74\x5f\x6e\x6f\x68\x75" \
-"\x70\x2c\x20\x5e\x73\x70\x6c\x69\x74\x5f\x74\x65\x72\x6d\x69\x6f" \
-"\x73\x2c\x20\x5e\x68\x75\x70\x5f\x6e\x6f\x74\x69\x66\x79\x2c\x20" \
-"\x5e\x6c\x6f\x77\x5f\x6c\x61\x74\x65\x6e\x63\x79\x2c\x20\x61\x75" \
-"\x74\x6f\x63\x6f\x6e\x66\x69\x67\x2c\x0a\x09\x73\x70\x64\x5f\x6e" \
-"\x6f\x72\x6d\x61\x6c\x2c\x20\x73\x70\x64\x5f\x68\x69\x2c\x20\x73" \
-"\x70\x64\x5f\x76\x68\x69\x2c\x20\x73\x70\x64\x5f\x73\x68\x69\x2c" \
-"\x20\x73\x70\x64\x5f\x77\x61\x72\x70\x2c\x20\x73\x70\x64\x5f\x63" \
-"\x75\x73\x74\x0a\x0a\x55\x41\x52\x54\x20\x74\x79\x70\x65\x73\x3a" \
-"\x0a\x09\x75\x6e\x6b\x6e\x6f\x77\x6e\x2c\x20\x38\x32\x35\x30\x2c" \
-"\x20\x31\x36\x34\x35\x30\x2c\x20\x31\x36\x35\x35\x30\x2c\x20\x31" \
-"\x36\x35\x35\x30\x41\x2c\x20\x43\x69\x72\x72\x75\x73\x2c\x20\x31" \
-"\x36\x36\x35\x30\x2c\x20\x31\x36\x36\x35\x30\x56\x32\x2c\x20\x31" \
-"\x36\x37\x35\x30\x2c\x0a\x09\x31\x36\x39\x35\x30\x2c\x20\x31\x36" \
-"\x39\x35\x34\x2c\x20\x31\x36\x36\x35\x34\x2c\x20\x31\x36\x38\x35" \
-"\x30\x2c\x20\x52\x53\x41\x2c\x20\x4e\x53\x31\x36\x35\x35\x30\x41" \
-"\x2c\x20\x58\x53\x43\x41\x4c\x45\x2c\x20\x52\x4d\x39\x30\x30\x30" \
-"\x2c\x20\x4f\x43\x54\x45\x4f\x4e\x2c\x20\x41\x52\x37\x2c\x0a\x09" \
-"\x55\x36\x5f\x31\x36\x35\x35\x30\x41\x00\x50\x52\x4f\x47\x20\x41" \
-"\x52\x47\x53\x0a\x0a\x52\x75\x6e\x20\x50\x52\x4f\x47\x20\x69\x6e" \
-"\x20\x61\x20\x6e\x65\x77\x20\x73\x65\x73\x73\x69\x6f\x6e\x2e\x20" \
-"\x50\x52\x4f\x47\x20\x77\x69\x6c\x6c\x20\x68\x61\x76\x65\x20\x6e" \
-"\x6f\x20\x63\x6f\x6e\x74\x72\x6f\x6c\x6c\x69\x6e\x67\x20\x74\x65" \
-"\x72\x6d\x69\x6e\x61\x6c\x0a\x61\x6e\x64\x20\x77\x69\x6c\x6c\x20" \
-"\x6e\x6f\x74\x20\x62\x65\x20\x61\x66\x66\x65\x63\x74\x65\x64\x20" \
-"\x62\x79\x20\x6b\x65\x79\x62\x6f\x61\x72\x64\x20\x73\x69\x67\x6e" \
-"\x61\x6c\x73\x20\x28\x43\x74\x72\x6c\x2d\x43\x20\x65\x74\x63\x29" \
-"\x2e\x0a\x53\x65\x65\x20\x73\x65\x74\x73\x69\x64\x28\x32\x29\x20" \
-"\x66\x6f\x72\x20\x64\x65\x74\x61\x69\x6c\x73\x2e\x00\x5b\x2d\x2f" \
-"\x2b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x2d\x2f\x2b\x6f\x20" \
-"\x4f\x50\x54\x5d\x2e\x2e\x2e\x20\x5b\x2d\x63\x20\x27\x53\x43\x52" \
-"\x49\x50\x54\x27\x20\x5b\x41\x52\x47\x30\x20\x5b\x41\x52\x47\x53" \
-"\x5d\x5d\x20\x2f\x20\x46\x49\x4c\x45\x20\x5b\x41\x52\x47\x53\x5d" \
-"\x5d\x0a\x0a\x55\x6e\x69\x78\x20\x73\x68\x65\x6c\x6c\x20\x69\x6e" \
-"\x74\x65\x72\x70\x72\x65\x74\x65\x72\x00\x5b\x2d\x63\x5b\x73\x77" \
-"\x5d\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x50\x72" \
-"\x69\x6e\x74\x20\x6f\x72\x20\x63\x68\x65\x63\x6b\x20\x53\x48\x41" \
-"\x31\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x73\x0a\x0a\x09\x2d\x63" \
-"\x09\x43\x68\x65\x63\x6b\x20\x73\x75\x6d\x73\x20\x61\x67\x61\x69" \
-"\x6e\x73\x74\x20\x6c\x69\x73\x74\x20\x69\x6e\x20\x46\x49\x4c\x45" \
-"\x73\x0a\x09\x2d\x73\x09\x44\x6f\x6e\x27\x74\x20\x6f\x75\x74\x70" \
-"\x75\x74\x20\x61\x6e\x79\x74\x68\x69\x6e\x67\x2c\x20\x73\x74\x61" \
-"\x74\x75\x73\x20\x63\x6f\x64\x65\x20\x73\x68\x6f\x77\x73\x20\x73" \
-"\x75\x63\x63\x65\x73\x73\x0a\x09\x2d\x77\x09\x57\x61\x72\x6e\x20" \
-"\x61\x62\x6f\x75\x74\x20\x69\x6d\x70\x72\x6f\x70\x65\x72\x6c\x79" \
-"\x20\x66\x6f\x72\x6d\x61\x74\x74\x65\x64\x20\x63\x68\x65\x63\x6b" \
-"\x73\x75\x6d\x20\x6c\x69\x6e\x65\x73\x00\x5b\x2d\x63\x5b\x73\x77" \
-"\x5d\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x50\x72" \
-"\x69\x6e\x74\x20\x6f\x72\x20\x63\x68\x65\x63\x6b\x20\x53\x48\x41" \
-"\x32\x35\x36\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x73\x0a\x0a\x09" \
-"\x2d\x63\x09\x43\x68\x65\x63\x6b\x20\x73\x75\x6d\x73\x20\x61\x67" \
-"\x61\x69\x6e\x73\x74\x20\x6c\x69\x73\x74\x20\x69\x6e\x20\x46\x49" \
-"\x4c\x45\x73\x0a\x09\x2d\x73\x09\x44\x6f\x6e\x27\x74\x20\x6f\x75" \
-"\x74\x70\x75\x74\x20\x61\x6e\x79\x74\x68\x69\x6e\x67\x2c\x20\x73" \
-"\x74\x61\x74\x75\x73\x20\x63\x6f\x64\x65\x20\x73\x68\x6f\x77\x73" \
-"\x20\x73\x75\x63\x63\x65\x73\x73\x0a\x09\x2d\x77\x09\x57\x61\x72" \
-"\x6e\x20\x61\x62\x6f\x75\x74\x20\x69\x6d\x70\x72\x6f\x70\x65\x72" \
-"\x6c\x79\x20\x66\x6f\x72\x6d\x61\x74\x74\x65\x64\x20\x63\x68\x65" \
-"\x63\x6b\x73\x75\x6d\x20\x6c\x69\x6e\x65\x73\x00\x5b\x2d\x63\x5b" \
-"\x73\x77\x5d\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a" \
-"\x50\x72\x69\x6e\x74\x20\x6f\x72\x20\x63\x68\x65\x63\x6b\x20\x53" \
-"\x48\x41\x35\x31\x32\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x73\x0a" \
-"\x0a\x09\x2d\x63\x09\x43\x68\x65\x63\x6b\x20\x73\x75\x6d\x73\x20" \
-"\x61\x67\x61\x69\x6e\x73\x74\x20\x6c\x69\x73\x74\x20\x69\x6e\x20" \
-"\x46\x49\x4c\x45\x73\x0a\x09\x2d\x73\x09\x44\x6f\x6e\x27\x74\x20" \
-"\x6f\x75\x74\x70\x75\x74\x20\x61\x6e\x79\x74\x68\x69\x6e\x67\x2c" \
-"\x20\x73\x74\x61\x74\x75\x73\x20\x63\x6f\x64\x65\x20\x73\x68\x6f" \
-"\x77\x73\x20\x73\x75\x63\x63\x65\x73\x73\x0a\x09\x2d\x77\x09\x57" \
-"\x61\x72\x6e\x20\x61\x62\x6f\x75\x74\x20\x69\x6d\x70\x72\x6f\x70" \
-"\x65\x72\x6c\x79\x20\x66\x6f\x72\x6d\x61\x74\x74\x65\x64\x20\x63" \
-"\x68\x65\x63\x6b\x73\x75\x6d\x20\x6c\x69\x6e\x65\x73\x00\x5b\x4e" \
-"\x5d\x2e\x2e\x2e\x0a\x0a\x50\x61\x75\x73\x65\x20\x66\x6f\x72\x20" \
-"\x61\x20\x74\x69\x6d\x65\x20\x65\x71\x75\x61\x6c\x20\x74\x6f\x20" \
-"\x74\x68\x65\x20\x74\x6f\x74\x61\x6c\x20\x6f\x66\x20\x74\x68\x65" \
-"\x20\x61\x72\x67\x73\x20\x67\x69\x76\x65\x6e\x2c\x20\x77\x68\x65" \
-"\x72\x65\x20\x65\x61\x63\x68\x20\x61\x72\x67\x20\x63\x61\x6e\x0a" \
-"\x68\x61\x76\x65\x20\x61\x6e\x20\x6f\x70\x74\x69\x6f\x6e\x61\x6c" \
-"\x20\x73\x75\x66\x66\x69\x78\x20\x6f\x66\x20\x28\x73\x29\x65\x63" \
-"\x6f\x6e\x64\x73\x2c\x20\x28\x6d\x29\x69\x6e\x75\x74\x65\x73\x2c" \
-"\x20\x28\x68\x29\x6f\x75\x72\x73\x2c\x20\x6f\x72\x20\x28\x64\x29" \
-"\x61\x79\x73\x00\x5b\x2d\x6e\x72\x75\x5d\x20\x5b\x46\x49\x4c\x45" \
-"\x5d\x2e\x2e\x2e\x0a\x0a\x53\x6f\x72\x74\x20\x6c\x69\x6e\x65\x73" \
-"\x20\x6f\x66\x20\x74\x65\x78\x74\x0a\x0a\x09\x2d\x6e\x09\x53\x6f" \
-"\x72\x74\x20\x6e\x75\x6d\x62\x65\x72\x73\x0a\x09\x2d\x72\x09\x52" \
-"\x65\x76\x65\x72\x73\x65\x20\x73\x6f\x72\x74\x20\x6f\x72\x64\x65" \
-"\x72\x0a\x09\x2d\x75\x09\x53\x75\x70\x70\x72\x65\x73\x73\x20\x64" \
-"\x75\x70\x6c\x69\x63\x61\x74\x65\x20\x6c\x69\x6e\x65\x73\x00\x5b" \
-"\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x49\x4e\x50\x55\x54\x20" \
-"\x5b\x50\x52\x45\x46\x49\x58\x5d\x5d\x0a\x0a\x09\x2d\x62\x20\x4e" \
-"\x5b\x6b\x7c\x6d\x5d\x09\x53\x70\x6c\x69\x74\x20\x62\x79\x20\x4e" \
-"\x20\x28\x6b\x69\x6c\x6f\x7c\x6d\x65\x67\x61\x29\x62\x79\x74\x65" \
-"\x73\x0a\x09\x2d\x6c\x20\x4e\x09\x09\x53\x70\x6c\x69\x74\x20\x62" \
-"\x79\x20\x4e\x20\x6c\x69\x6e\x65\x73\x0a\x09\x2d\x61\x20\x4e\x09" \
-"\x09\x55\x73\x65\x20\x4e\x20\x6c\x65\x74\x74\x65\x72\x73\x20\x61" \
-"\x73\x20\x73\x75\x66\x66\x69\x78\x00\x5b\x4f\x50\x54\x49\x4f\x4e" \
-"\x53\x5d\x20\x46\x49\x4c\x45\x2e\x2e\x2e\x0a\x0a\x44\x69\x73\x70" \
-"\x6c\x61\x79\x20\x66\x69\x6c\x65\x20\x28\x64\x65\x66\x61\x75\x6c" \
-"\x74\x29\x20\x6f\x72\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d" \
-"\x20\x73\x74\x61\x74\x75\x73\x0a\x0a\x09\x2d\x66\x09\x44\x69\x73" \
-"\x70\x6c\x61\x79\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x20" \
-"\x73\x74\x61\x74\x75\x73\x0a\x09\x2d\x4c\x09\x46\x6f\x6c\x6c\x6f" \
-"\x77\x20\x6c\x69\x6e\x6b\x73\x0a\x09\x2d\x74\x09\x44\x69\x73\x70" \
-"\x6c\x61\x79\x20\x69\x6e\x66\x6f\x20\x69\x6e\x20\x74\x65\x72\x73" \
-"\x65\x20\x66\x6f\x72\x6d\x00\x5b\x2d\x61\x66\x6f\x5d\x20\x5b\x2d" \
-"\x6e\x20\x4c\x45\x4e\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e" \
-"\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x70\x72\x69\x6e\x74\x61" \
-"\x62\x6c\x65\x20\x73\x74\x72\x69\x6e\x67\x73\x20\x69\x6e\x20\x61" \
-"\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x69\x6c\x65\x0a\x0a\x09\x2d" \
-"\x61\x09\x53\x63\x61\x6e\x20\x77\x68\x6f\x6c\x65\x20\x66\x69\x6c" \
-"\x65\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x0a\x09\x2d\x66\x09" \
-"\x50\x72\x65\x63\x65\x64\x65\x20\x73\x74\x72\x69\x6e\x67\x73\x20" \
-"\x77\x69\x74\x68\x20\x66\x69\x6c\x65\x6e\x61\x6d\x65\x73\x0a\x09" \
-"\x2d\x6e\x20\x4c\x45\x4e\x09\x41\x74\x20\x6c\x65\x61\x73\x74\x20" \
-"\x4c\x45\x4e\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x20\x66" \
-"\x6f\x72\x6d\x20\x61\x20\x73\x74\x72\x69\x6e\x67\x20\x28\x64\x65" \
-"\x66\x61\x75\x6c\x74\x20\x34\x29\x0a\x09\x2d\x6f\x09\x50\x72\x65" \
-"\x63\x65\x64\x65\x20\x73\x74\x72\x69\x6e\x67\x73\x20\x77\x69\x74" \
-"\x68\x20\x64\x65\x63\x69\x6d\x61\x6c\x20\x6f\x66\x66\x73\x65\x74" \
-"\x73\x00\x5b\x2d\x61\x7c\x67\x5d\x20\x5b\x2d\x46\x20\x44\x45\x56" \
-"\x49\x43\x45\x5d\x20\x5b\x53\x45\x54\x54\x49\x4e\x47\x5d\x2e\x2e" \
-"\x2e\x0a\x0a\x57\x69\x74\x68\x6f\x75\x74\x20\x61\x72\x67\x75\x6d" \
-"\x65\x6e\x74\x73\x2c\x20\x70\x72\x69\x6e\x74\x73\x20\x62\x61\x75" \
-"\x64\x20\x72\x61\x74\x65\x2c\x20\x6c\x69\x6e\x65\x20\x64\x69\x73" \
-"\x63\x69\x70\x6c\x69\x6e\x65\x2c\x0a\x61\x6e\x64\x20\x64\x65\x76" \
-"\x69\x61\x74\x69\x6f\x6e\x73\x20\x66\x72\x6f\x6d\x20\x73\x74\x74" \
-"\x79\x20\x73\x61\x6e\x65\x0a\x0a\x09\x2d\x46\x20\x44\x45\x56\x49" \
-"\x43\x45\x09\x4f\x70\x65\x6e\x20\x64\x65\x76\x69\x63\x65\x20\x69" \
-"\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x73\x74\x64\x69\x6e\x0a" \
-"\x09\x2d\x61\x09\x09\x50\x72\x69\x6e\x74\x20\x61\x6c\x6c\x20\x63" \
-"\x75\x72\x72\x65\x6e\x74\x20\x73\x65\x74\x74\x69\x6e\x67\x73\x20" \
-"\x69\x6e\x20\x68\x75\x6d\x61\x6e\x2d\x72\x65\x61\x64\x61\x62\x6c" \
-"\x65\x20\x66\x6f\x72\x6d\x0a\x09\x2d\x67\x09\x09\x50\x72\x69\x6e" \
-"\x74\x20\x69\x6e\x20\x73\x74\x74\x79\x2d\x72\x65\x61\x64\x61\x62" \
-"\x6c\x65\x20\x66\x6f\x72\x6d\x0a\x09\x5b\x53\x45\x54\x54\x49\x4e" \
-"\x47\x5d\x09\x53\x65\x65\x20\x6d\x61\x6e\x70\x61\x67\x65\x00\x5b" \
-"\x2d\x61\x5d\x20\x5b\x44\x45\x56\x49\x43\x45\x5d\x0a\x0a\x53\x74" \
-"\x6f\x70\x20\x73\x77\x61\x70\x70\x69\x6e\x67\x20\x6f\x6e\x20\x44" \
-"\x45\x56\x49\x43\x45\x0a\x0a\x09\x2d\x61\x09\x53\x74\x6f\x70\x20" \
-"\x73\x77\x61\x70\x70\x69\x6e\x67\x20\x6f\x6e\x20\x61\x6c\x6c\x20" \
-"\x73\x77\x61\x70\x20\x64\x65\x76\x69\x63\x65\x73\x00\x5b\x2d\x61" \
-"\x5d\x20\x5b\x44\x45\x56\x49\x43\x45\x5d\x0a\x0a\x53\x74\x61\x72" \
-"\x74\x20\x73\x77\x61\x70\x70\x69\x6e\x67\x20\x6f\x6e\x20\x44\x45" \
-"\x56\x49\x43\x45\x0a\x0a\x09\x2d\x61\x09\x53\x74\x61\x72\x74\x20" \
-"\x73\x77\x61\x70\x70\x69\x6e\x67\x20\x6f\x6e\x20\x61\x6c\x6c\x20" \
-"\x73\x77\x61\x70\x20\x64\x65\x76\x69\x63\x65\x73\x00\x0a\x0a\x57" \
-"\x72\x69\x74\x65\x20\x61\x6c\x6c\x20\x62\x75\x66\x66\x65\x72\x65" \
-"\x64\x20\x62\x6c\x6f\x63\x6b\x73\x20\x74\x6f\x20\x64\x69\x73\x6b" \
-"\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x4b\x45\x59\x5b" \
-"\x3d\x56\x41\x4c\x55\x45\x5d\x5d\x2e\x2e\x2e\x0a\x0a\x53\x68\x6f" \
-"\x77\x2f\x73\x65\x74\x20\x6b\x65\x72\x6e\x65\x6c\x20\x70\x61\x72" \
-"\x61\x6d\x65\x74\x65\x72\x73\x0a\x0a\x09\x2d\x65\x09\x44\x6f\x6e" \
-"\x27\x74\x20\x77\x61\x72\x6e\x20\x61\x62\x6f\x75\x74\x20\x75\x6e" \
-"\x6b\x6e\x6f\x77\x6e\x20\x6b\x65\x79\x73\x0a\x09\x2d\x6e\x09\x44" \
-"\x6f\x6e\x27\x74\x20\x73\x68\x6f\x77\x20\x6b\x65\x79\x20\x6e\x61" \
-"\x6d\x65\x73\x0a\x09\x2d\x61\x09\x53\x68\x6f\x77\x20\x61\x6c\x6c" \
-"\x20\x76\x61\x6c\x75\x65\x73\x0a\x09\x2d\x77\x09\x53\x65\x74\x20" \
-"\x76\x61\x6c\x75\x65\x73\x0a\x09\x2d\x70\x20\x46\x49\x4c\x45\x09" \
-"\x53\x65\x74\x20\x76\x61\x6c\x75\x65\x73\x20\x66\x72\x6f\x6d\x20" \
-"\x46\x49\x4c\x45\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x20\x2f\x65" \
-"\x74\x63\x2f\x73\x79\x73\x63\x74\x6c\x2e\x63\x6f\x6e\x66\x29\x0a" \
-"\x09\x2d\x71\x20\x20\x20\x20\x20\x20\x53\x65\x74\x20\x76\x61\x6c" \
-"\x75\x65\x73\x20\x73\x69\x6c\x65\x6e\x74\x6c\x79\x00\x5b\x46\x49" \
-"\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x6f\x6e\x63\x61\x74\x65\x6e" \
-"\x61\x74\x65\x20\x46\x49\x4c\x45\x73\x20\x61\x6e\x64\x20\x70\x72" \
-"\x69\x6e\x74\x20\x74\x68\x65\x6d\x20\x69\x6e\x20\x72\x65\x76\x65" \
-"\x72\x73\x65\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x46" \
-"\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x50\x72\x69\x6e\x74\x20\x6c" \
-"\x61\x73\x74\x20\x31\x30\x20\x6c\x69\x6e\x65\x73\x20\x6f\x66\x20" \
-"\x65\x61\x63\x68\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20\x73\x74" \
-"\x64\x69\x6e\x29\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x2e\x0a" \
-"\x57\x69\x74\x68\x20\x6d\x6f\x72\x65\x20\x74\x68\x61\x6e\x20\x6f" \
-"\x6e\x65\x20\x46\x49\x4c\x45\x2c\x20\x70\x72\x65\x63\x65\x64\x65" \
-"\x20\x65\x61\x63\x68\x20\x77\x69\x74\x68\x20\x61\x20\x66\x69\x6c" \
-"\x65\x6e\x61\x6d\x65\x20\x68\x65\x61\x64\x65\x72\x2e\x0a\x0a\x09" \
-"\x2d\x66\x09\x09\x50\x72\x69\x6e\x74\x20\x64\x61\x74\x61\x20\x61" \
-"\x73\x20\x66\x69\x6c\x65\x20\x67\x72\x6f\x77\x73\x0a\x09\x2d\x73" \
-"\x20\x53\x45\x43\x4f\x4e\x44\x53\x09\x57\x61\x69\x74\x20\x53\x45" \
-"\x43\x4f\x4e\x44\x53\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x72\x65" \
-"\x61\x64\x73\x20\x77\x69\x74\x68\x20\x2d\x66\x0a\x09\x2d\x6e\x20" \
-"\x4e\x5b\x6b\x62\x6d\x5d\x09\x50\x72\x69\x6e\x74\x20\x6c\x61\x73" \
-"\x74\x20\x4e\x20\x6c\x69\x6e\x65\x73\x0a\x09\x2d\x63\x20\x4e\x5b" \
-"\x6b\x62\x6d\x5d\x09\x50\x72\x69\x6e\x74\x20\x6c\x61\x73\x74\x20" \
-"\x4e\x20\x62\x79\x74\x65\x73\x0a\x09\x2d\x71\x09\x09\x4e\x65\x76" \
-"\x65\x72\x20\x70\x72\x69\x6e\x74\x20\x68\x65\x61\x64\x65\x72\x73" \
-"\x0a\x09\x2d\x76\x09\x09\x41\x6c\x77\x61\x79\x73\x20\x70\x72\x69" \
-"\x6e\x74\x20\x68\x65\x61\x64\x65\x72\x73\x0a\x0a\x4e\x20\x6d\x61" \
-"\x79\x20\x62\x65\x20\x73\x75\x66\x66\x69\x78\x65\x64\x20\x62\x79" \
-"\x20\x6b\x20\x28\x78\x31\x30\x32\x34\x29\x2c\x20\x62\x20\x28\x78" \
-"\x35\x31\x32\x29\x2c\x20\x6f\x72\x20\x6d\x20\x28\x78\x31\x30\x32" \
-"\x34\x5e\x32\x29\x2e\x0a\x49\x66\x20\x4e\x20\x73\x74\x61\x72\x74" \
-"\x73\x20\x77\x69\x74\x68\x20\x61\x20\x27\x2b\x27\x2c\x20\x6f\x75" \
-"\x74\x70\x75\x74\x20\x62\x65\x67\x69\x6e\x73\x20\x77\x69\x74\x68" \
-"\x20\x74\x68\x65\x20\x4e\x74\x68\x20\x69\x74\x65\x6d\x20\x66\x72" \
-"\x6f\x6d\x20\x74\x68\x65\x20\x73\x74\x61\x72\x74\x0a\x6f\x66\x20" \
-"\x65\x61\x63\x68\x20\x66\x69\x6c\x65\x2c\x20\x6e\x6f\x74\x20\x66" \
-"\x72\x6f\x6d\x20\x74\x68\x65\x20\x65\x6e\x64\x2e\x00\x2d\x5b\x63" \
-"\x78\x74\x7a\x6a\x68\x6d\x76\x4f\x5d\x20\x5b\x2d\x58\x20\x46\x49" \
-"\x4c\x45\x5d\x20\x5b\x2d\x54\x20\x46\x49\x4c\x45\x5d\x20\x5b\x2d" \
-"\x66\x20\x54\x41\x52\x46\x49\x4c\x45\x5d\x20\x5b\x2d\x43\x20\x44" \
-"\x49\x52\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43" \
-"\x72\x65\x61\x74\x65\x2c\x20\x65\x78\x74\x72\x61\x63\x74\x2c\x20" \
-"\x6f\x72\x20\x6c\x69\x73\x74\x20\x66\x69\x6c\x65\x73\x20\x66\x72" \
-"\x6f\x6d\x20\x61\x20\x74\x61\x72\x20\x66\x69\x6c\x65\x0a\x0a\x4f" \
-"\x70\x65\x72\x61\x74\x69\x6f\x6e\x3a\x0a\x09\x63\x09\x43\x72\x65" \
-"\x61\x74\x65\x0a\x09\x78\x09\x45\x78\x74\x72\x61\x63\x74\x0a\x09" \
-"\x74\x09\x4c\x69\x73\x74\x0a\x09\x66\x09\x4e\x61\x6d\x65\x20\x6f" \
-"\x66\x20\x54\x41\x52\x46\x49\x4c\x45\x20\x28\x27\x2d\x27\x20\x66" \
-"\x6f\x72\x20\x73\x74\x64\x69\x6e\x2f\x6f\x75\x74\x29\x0a\x09\x43" \
-"\x09\x43\x68\x61\x6e\x67\x65\x20\x74\x6f\x20\x44\x49\x52\x20\x62" \
-"\x65\x66\x6f\x72\x65\x20\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\x0a" \
-"\x09\x76\x09\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x7a\x09\x28\x44" \
-"\x65\x29\x63\x6f\x6d\x70\x72\x65\x73\x73\x20\x75\x73\x69\x6e\x67" \
-"\x20\x67\x7a\x69\x70\x0a\x09\x6a\x09\x28\x44\x65\x29\x63\x6f\x6d" \
-"\x70\x72\x65\x73\x73\x20\x75\x73\x69\x6e\x67\x20\x62\x7a\x69\x70" \
-"\x32\x0a\x09\x4f\x09\x45\x78\x74\x72\x61\x63\x74\x20\x74\x6f\x20" \
-"\x73\x74\x64\x6f\x75\x74\x0a\x09\x68\x09\x46\x6f\x6c\x6c\x6f\x77" \
-"\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x0a\x09\x6d\x09\x44\x6f\x6e" \
-"\x27\x74\x20\x72\x65\x73\x74\x6f\x72\x65\x20\x6d\x74\x69\x6d\x65" \
-"\x0a\x09\x65\x78\x63\x6c\x75\x64\x65\x09\x46\x69\x6c\x65\x20\x74" \
-"\x6f\x20\x65\x78\x63\x6c\x75\x64\x65\x0a\x09\x58\x09\x46\x69\x6c" \
-"\x65\x20\x77\x69\x74\x68\x20\x6e\x61\x6d\x65\x73\x20\x74\x6f\x20" \
-"\x65\x78\x63\x6c\x75\x64\x65\x0a\x09\x54\x09\x46\x69\x6c\x65\x20" \
-"\x77\x69\x74\x68\x20\x6e\x61\x6d\x65\x73\x20\x74\x6f\x20\x69\x6e" \
-"\x63\x6c\x75\x64\x65\x00\x5b\x2d\x61\x69\x5d\x20\x5b\x46\x49\x4c" \
-"\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x6f\x70\x79\x20\x73\x74\x64\x69" \
-"\x6e\x20\x74\x6f\x20\x65\x61\x63\x68\x20\x46\x49\x4c\x45\x2c\x20" \
-"\x61\x6e\x64\x20\x61\x6c\x73\x6f\x20\x74\x6f\x20\x73\x74\x64\x6f" \
-"\x75\x74\x0a\x0a\x09\x2d\x61\x09\x41\x70\x70\x65\x6e\x64\x20\x74" \
-"\x6f\x20\x74\x68\x65\x20\x67\x69\x76\x65\x6e\x20\x46\x49\x4c\x45" \
-"\x73\x2c\x20\x64\x6f\x6e\x27\x74\x20\x6f\x76\x65\x72\x77\x72\x69" \
-"\x74\x65\x0a\x09\x2d\x69\x09\x49\x67\x6e\x6f\x72\x65\x20\x69\x6e" \
-"\x74\x65\x72\x72\x75\x70\x74\x20\x73\x69\x67\x6e\x61\x6c\x73\x20" \
-"\x28\x53\x49\x47\x49\x4e\x54\x29\x00\x45\x58\x50\x52\x45\x53\x53" \
-"\x49\x4f\x4e\x20\x5d\x0a\x0a\x43\x68\x65\x63\x6b\x20\x66\x69\x6c" \
-"\x65\x20\x74\x79\x70\x65\x73\x2c\x20\x63\x6f\x6d\x70\x61\x72\x65" \
-"\x20\x76\x61\x6c\x75\x65\x73\x20\x65\x74\x63\x2e\x20\x52\x65\x74" \
-"\x75\x72\x6e\x20\x61\x20\x30\x2f\x31\x20\x65\x78\x69\x74\x20\x63" \
-"\x6f\x64\x65\x0a\x64\x65\x70\x65\x6e\x64\x69\x6e\x67\x20\x6f\x6e" \
-"\x20\x6c\x6f\x67\x69\x63\x61\x6c\x20\x76\x61\x6c\x75\x65\x20\x6f" \
-"\x66\x20\x45\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x00\x5b\x2d\x76" \
-"\x5d\x20\x50\x52\x4f\x47\x20\x41\x52\x47\x53\x0a\x0a\x52\x75\x6e" \
-"\x20\x50\x52\x4f\x47\x2c\x20\x64\x69\x73\x70\x6c\x61\x79\x20\x72" \
-"\x65\x73\x6f\x75\x72\x63\x65\x20\x75\x73\x61\x67\x65\x20\x77\x68" \
-"\x65\x6e\x20\x69\x74\x20\x65\x78\x69\x74\x73\x0a\x0a\x09\x2d\x76" \
-"\x09\x56\x65\x72\x62\x6f\x73\x65\x00\x5b\x2d\x62\x5d\x20\x5b\x2d" \
-"\x6e\x43\x4f\x55\x4e\x54\x5d\x20\x5b\x2d\x64\x53\x45\x43\x4f\x4e" \
-"\x44\x53\x5d\x20\x5b\x2d\x6d\x5d\x0a\x0a\x50\x72\x6f\x76\x69\x64" \
-"\x65\x20\x61\x20\x76\x69\x65\x77\x20\x6f\x66\x20\x70\x72\x6f\x63" \
-"\x65\x73\x73\x20\x61\x63\x74\x69\x76\x69\x74\x79\x20\x69\x6e\x20" \
-"\x72\x65\x61\x6c\x20\x74\x69\x6d\x65\x2e\x0a\x52\x65\x61\x64\x20" \
-"\x74\x68\x65\x20\x73\x74\x61\x74\x75\x73\x20\x6f\x66\x20\x61\x6c" \
-"\x6c\x20\x70\x72\x6f\x63\x65\x73\x73\x65\x73\x20\x66\x72\x6f\x6d" \
-"\x20\x2f\x70\x72\x6f\x63\x20\x65\x61\x63\x68\x20\x53\x45\x43\x4f" \
-"\x4e\x44\x53\x0a\x61\x6e\x64\x20\x64\x69\x73\x70\x6c\x61\x79\x20" \
-"\x61\x20\x73\x63\x72\x65\x65\x6e\x66\x75\x6c\x20\x6f\x66\x20\x74" \
-"\x68\x65\x6d\x2e\x0a\x4b\x65\x79\x73\x3a\x0a\x09\x4e\x2f\x4d\x2f" \
-"\x50\x2f\x54\x3a\x20\x73\x68\x6f\x77\x20\x43\x50\x55\x20\x75\x73" \
-"\x61\x67\x65\x2c\x20\x73\x6f\x72\x74\x20\x62\x79\x20\x70\x69\x64" \
-"\x2f\x6d\x65\x6d\x2f\x63\x70\x75\x2f\x74\x69\x6d\x65\x0a\x09\x53" \
-"\x3a\x20\x73\x68\x6f\x77\x20\x6d\x65\x6d\x6f\x72\x79\x0a\x09\x52" \
-"\x3a\x20\x72\x65\x76\x65\x72\x73\x65\x20\x73\x6f\x72\x74\x0a\x09" \
-"\x48\x3a\x20\x74\x6f\x67\x67\x6c\x65\x20\x74\x68\x72\x65\x61\x64" \
-"\x73\x0a\x09\x51\x2c\x5e\x43\x3a\x20\x65\x78\x69\x74\x0a\x0a\x4f" \
-"\x70\x74\x69\x6f\x6e\x73\x3a\x0a\x09\x2d\x62\x09\x42\x61\x74\x63" \
-"\x68\x20\x6d\x6f\x64\x65\x0a\x09\x2d\x6e\x20\x4e\x09\x45\x78\x69" \
-"\x74\x20\x61\x66\x74\x65\x72\x20\x4e\x20\x69\x74\x65\x72\x61\x74" \
-"\x69\x6f\x6e\x73\x0a\x09\x2d\x64\x20\x4e\x09\x44\x65\x6c\x61\x79" \
-"\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x75\x70\x64\x61\x74\x65\x73" \
-"\x0a\x09\x2d\x6d\x09\x53\x61\x6d\x65\x20\x61\x73\x20\x27\x73\x27" \
-"\x20\x6b\x65\x79\x00\x5b\x2d\x63\x5d\x20\x46\x49\x4c\x45\x2e\x2e" \
-"\x2e\x0a\x0a\x55\x70\x64\x61\x74\x65\x20\x74\x68\x65\x20\x6c\x61" \
-"\x73\x74\x2d\x6d\x6f\x64\x69\x66\x69\x65\x64\x20\x64\x61\x74\x65" \
-"\x20\x6f\x6e\x20\x74\x68\x65\x20\x67\x69\x76\x65\x6e\x20\x46\x49" \
-"\x4c\x45\x5b\x73\x5d\x0a\x0a\x09\x2d\x63\x09\x44\x6f\x6e\x27\x74" \
-"\x20\x63\x72\x65\x61\x74\x65\x20\x66\x69\x6c\x65\x73\x00\x5b\x2d" \
-"\x63\x64\x73\x5d\x20\x53\x54\x52\x49\x4e\x47\x31\x20\x5b\x53\x54" \
-"\x52\x49\x4e\x47\x32\x5d\x0a\x0a\x54\x72\x61\x6e\x73\x6c\x61\x74" \
-"\x65\x2c\x20\x73\x71\x75\x65\x65\x7a\x65\x2c\x20\x6f\x72\x20\x64" \
-"\x65\x6c\x65\x74\x65\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73" \
-"\x20\x66\x72\x6f\x6d\x20\x73\x74\x64\x69\x6e\x2c\x20\x77\x72\x69" \
-"\x74\x69\x6e\x67\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x0a" \
-"\x09\x2d\x63\x09\x54\x61\x6b\x65\x20\x63\x6f\x6d\x70\x6c\x65\x6d" \
-"\x65\x6e\x74\x20\x6f\x66\x20\x53\x54\x52\x49\x4e\x47\x31\x0a\x09" \
-"\x2d\x64\x09\x44\x65\x6c\x65\x74\x65\x20\x69\x6e\x70\x75\x74\x20" \
-"\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x20\x63\x6f\x64\x65\x64" \
-"\x20\x53\x54\x52\x49\x4e\x47\x31\x0a\x09\x2d\x73\x09\x53\x71\x75" \
-"\x65\x65\x7a\x65\x20\x6d\x75\x6c\x74\x69\x70\x6c\x65\x20\x6f\x75" \
-"\x74\x70\x75\x74\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x20" \
-"\x6f\x66\x20\x53\x54\x52\x49\x4e\x47\x32\x20\x69\x6e\x74\x6f\x20" \
-"\x6f\x6e\x65\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x00\x0a\x0a" \
-"\x52\x65\x74\x75\x72\x6e\x20\x61\x6e\x20\x65\x78\x69\x74\x20\x63" \
-"\x6f\x64\x65\x20\x6f\x66\x20\x54\x52\x55\x45\x20\x28\x30\x29\x00" \
-"\x5b\x77\x5d\x20\x5b\x68\x5d\x0a\x0a\x50\x72\x69\x6e\x74\x20\x64" \
-"\x69\x6d\x65\x6e\x73\x69\x6f\x6e\x28\x73\x29\x20\x6f\x66\x20\x73" \
-"\x74\x64\x69\x6e\x27\x73\x20\x74\x65\x72\x6d\x69\x6e\x61\x6c\x2c" \
-"\x20\x6f\x6e\x20\x65\x72\x72\x6f\x72\x20\x72\x65\x74\x75\x72\x6e" \
-"\x20\x38\x30\x78\x32\x35\x00\x5b\x2d\x63\x20\x4d\x41\x58\x5f\x4d" \
-"\x4f\x55\x4e\x54\x5f\x43\x4f\x55\x4e\x54\x5d\x20\x5b\x2d\x69\x20" \
-"\x44\x41\x59\x53\x5d\x20\x5b\x2d\x43\x20\x4d\x4f\x55\x4e\x54\x5f" \
-"\x43\x4f\x55\x4e\x54\x5d\x20\x5b\x2d\x4c\x20\x4c\x41\x42\x45\x4c" \
-"\x5d\x20\x42\x4c\x4f\x43\x4b\x44\x45\x56\x0a\x0a\x41\x64\x6a\x75" \
-"\x73\x74\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x20\x6f\x70" \
-"\x74\x69\x6f\x6e\x73\x20\x6f\x6e\x20\x65\x78\x74\x5b\x32\x33\x5d" \
-"\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x73\x00\x5b\x4f\x50" \
-"\x54\x49\x4f\x4e\x53\x5d\x20\x46\x49\x4c\x45\x53\x59\x53\x54\x45" \
-"\x4d\x7c\x44\x49\x52\x45\x43\x54\x4f\x52\x59\x0a\x0a\x55\x6e\x6d" \
-"\x6f\x75\x6e\x74\x20\x66\x69\x6c\x65\x20\x73\x79\x73\x74\x65\x6d" \
-"\x73\x0a\x0a\x09\x2d\x72\x09\x54\x72\x79\x20\x74\x6f\x20\x72\x65" \
-"\x6d\x6f\x75\x6e\x74\x20\x64\x65\x76\x69\x63\x65\x73\x20\x61\x73" \
-"\x20\x72\x65\x61\x64\x2d\x6f\x6e\x6c\x79\x20\x69\x66\x20\x6d\x6f" \
-"\x75\x6e\x74\x20\x69\x73\x20\x62\x75\x73\x79\x0a\x09\x2d\x6c\x09" \
-"\x4c\x61\x7a\x79\x20\x75\x6d\x6f\x75\x6e\x74\x20\x28\x64\x65\x74" \
-"\x61\x63\x68\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x29\x0a" \
-"\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x20\x75\x6d\x6f\x75\x6e\x74" \
-"\x20\x28\x69\x2e\x65\x2e\x2c\x20\x75\x6e\x72\x65\x61\x63\x68\x61" \
-"\x62\x6c\x65\x20\x4e\x46\x53\x20\x73\x65\x72\x76\x65\x72\x29\x0a" \
-"\x09\x2d\x64\x09\x46\x72\x65\x65\x20\x6c\x6f\x6f\x70\x20\x64\x65" \
-"\x76\x69\x63\x65\x20\x65\x76\x65\x6e\x20\x69\x66\x20\x69\x74\x20" \
-"\x68\x61\x73\x20\x62\x65\x65\x6e\x20\x75\x73\x65\x64\x00\x5b\x2d" \
-"\x61\x6d\x6e\x72\x73\x70\x76\x5d\x0a\x0a\x50\x72\x69\x6e\x74\x20" \
-"\x73\x79\x73\x74\x65\x6d\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69" \
-"\x6f\x6e\x0a\x0a\x09\x2d\x61\x09\x50\x72\x69\x6e\x74\x20\x61\x6c" \
-"\x6c\x0a\x09\x2d\x6d\x09\x54\x68\x65\x20\x6d\x61\x63\x68\x69\x6e" \
-"\x65\x20\x28\x68\x61\x72\x64\x77\x61\x72\x65\x29\x20\x74\x79\x70" \
-"\x65\x0a\x09\x2d\x6e\x09\x48\x6f\x73\x74\x6e\x61\x6d\x65\x0a\x09" \
-"\x2d\x72\x09\x4f\x53\x20\x72\x65\x6c\x65\x61\x73\x65\x0a\x09\x2d" \
-"\x73\x09\x4f\x53\x20\x6e\x61\x6d\x65\x20\x28\x64\x65\x66\x61\x75" \
-"\x6c\x74\x29\x0a\x09\x2d\x70\x09\x50\x72\x6f\x63\x65\x73\x73\x6f" \
-"\x72\x20\x74\x79\x70\x65\x0a\x09\x2d\x76\x09\x4f\x53\x20\x76\x65" \
-"\x72\x73\x69\x6f\x6e\x00\x5b\x2d\x66\x61\x5d\x5b\x2d\x74\x20\x4e" \
-"\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x6f\x6e" \
-"\x76\x65\x72\x74\x20\x73\x70\x61\x63\x65\x73\x20\x74\x6f\x20\x74" \
-"\x61\x62\x73\x2c\x20\x77\x72\x69\x74\x69\x6e\x67\x20\x74\x6f\x20" \
-"\x73\x74\x64\x6f\x75\x74\x0a\x0a\x09\x2d\x61\x2c\x2d\x2d\x61\x6c" \
-"\x6c\x09\x43\x6f\x6e\x76\x65\x72\x74\x20\x61\x6c\x6c\x20\x62\x6c" \
-"\x61\x6e\x6b\x73\x0a\x09\x2d\x66\x2c\x2d\x2d\x66\x69\x72\x73\x74" \
-"\x2d\x6f\x6e\x6c\x79\x09\x43\x6f\x6e\x76\x65\x72\x74\x20\x6f\x6e" \
-"\x6c\x79\x20\x6c\x65\x61\x64\x69\x6e\x67\x20\x62\x6c\x61\x6e\x6b" \
-"\x73\x0a\x09\x2d\x74\x2c\x2d\x2d\x74\x61\x62\x73\x3d\x4e\x09\x54" \
-"\x61\x62\x73\x74\x6f\x70\x73\x20\x65\x76\x65\x72\x79\x20\x4e\x20" \
-"\x63\x68\x61\x72\x73\x00\x5b\x2d\x63\x64\x75\x5d\x5b\x2d\x66\x2c" \
-"\x73\x2c\x77\x20\x4e\x5d\x20\x5b\x49\x4e\x50\x55\x54\x20\x5b\x4f" \
-"\x55\x54\x50\x55\x54\x5d\x5d\x0a\x0a\x44\x69\x73\x63\x61\x72\x64" \
-"\x20\x64\x75\x70\x6c\x69\x63\x61\x74\x65\x20\x6c\x69\x6e\x65\x73" \
-"\x0a\x0a\x09\x2d\x63\x09\x50\x72\x65\x66\x69\x78\x20\x6c\x69\x6e" \
-"\x65\x73\x20\x62\x79\x20\x74\x68\x65\x20\x6e\x75\x6d\x62\x65\x72" \
-"\x20\x6f\x66\x20\x6f\x63\x63\x75\x72\x72\x65\x6e\x63\x65\x73\x0a" \
-"\x09\x2d\x64\x09\x4f\x6e\x6c\x79\x20\x70\x72\x69\x6e\x74\x20\x64" \
-"\x75\x70\x6c\x69\x63\x61\x74\x65\x20\x6c\x69\x6e\x65\x73\x0a\x09" \
-"\x2d\x75\x09\x4f\x6e\x6c\x79\x20\x70\x72\x69\x6e\x74\x20\x75\x6e" \
-"\x69\x71\x75\x65\x20\x6c\x69\x6e\x65\x73\x0a\x09\x2d\x66\x20\x4e" \
-"\x09\x53\x6b\x69\x70\x20\x66\x69\x72\x73\x74\x20\x4e\x20\x66\x69" \
-"\x65\x6c\x64\x73\x0a\x09\x2d\x73\x20\x4e\x09\x53\x6b\x69\x70\x20" \
-"\x66\x69\x72\x73\x74\x20\x4e\x20\x63\x68\x61\x72\x73\x20\x28\x61" \
-"\x66\x74\x65\x72\x20\x61\x6e\x79\x20\x73\x6b\x69\x70\x70\x65\x64" \
-"\x20\x66\x69\x65\x6c\x64\x73\x29\x0a\x09\x2d\x77\x20\x4e\x09\x43" \
-"\x6f\x6d\x70\x61\x72\x65\x20\x4e\x20\x63\x68\x61\x72\x61\x63\x74" \
-"\x65\x72\x73\x20\x69\x6e\x20\x6c\x69\x6e\x65\x00\x5b\x2d\x75\x64" \
-"\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x0a\x0a\x43\x6f\x6e\x76\x65\x72" \
-"\x74\x20\x46\x49\x4c\x45\x20\x69\x6e\x2d\x70\x6c\x61\x63\x65\x20" \
-"\x66\x72\x6f\x6d\x20\x55\x6e\x69\x78\x20\x74\x6f\x20\x44\x4f\x53" \
-"\x20\x66\x6f\x72\x6d\x61\x74\x2e\x0a\x57\x68\x65\x6e\x20\x6e\x6f" \
-"\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x67\x69\x76\x65\x6e\x2c\x20" \
-"\x75\x73\x65\x20\x73\x74\x64\x69\x6e\x2f\x73\x74\x64\x6f\x75\x74" \
-"\x2e\x0a\x0a\x09\x2d\x75\x09\x64\x6f\x73\x32\x75\x6e\x69\x78\x0a" \
-"\x09\x2d\x64\x09\x75\x6e\x69\x78\x32\x64\x6f\x73\x00\x5b\x2d\x63" \
-"\x66\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x44\x65" \
-"\x63\x6f\x6d\x70\x72\x65\x73\x73\x20\x46\x49\x4c\x45\x20\x28\x6f" \
-"\x72\x20\x73\x74\x64\x69\x6e\x29\x0a\x0a\x09\x2d\x63\x09\x57\x72" \
-"\x69\x74\x65\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x2d" \
-"\x66\x09\x46\x6f\x72\x63\x65\x00\x5b\x2d\x63\x66\x76\x43\x46\x5d" \
-"\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x09\x2d\x63\x09" \
-"\x57\x72\x69\x74\x65\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a" \
-"\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x0a\x09\x2d\x76\x09\x56\x65" \
-"\x72\x62\x6f\x73\x65\x0a\x09\x2d\x46\x09\x44\x6f\x6e\x27\x74\x20" \
-"\x73\x74\x6f\x72\x65\x20\x6f\x72\x20\x76\x65\x72\x69\x66\x79\x20" \
-"\x63\x68\x65\x63\x6b\x73\x75\x6d\x00\x5b\x2d\x63\x66\x5d\x20\x5b" \
-"\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x44\x65\x63\x6f\x6d\x70" \
-"\x72\x65\x73\x73\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20\x73\x74" \
-"\x64\x69\x6e\x29\x0a\x0a\x09\x2d\x63\x09\x57\x72\x69\x74\x65\x20" \
-"\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x2d\x66\x09\x46\x6f" \
-"\x72\x63\x65\x00\x5b\x2d\x6c\x6e\x6f\x70\x71\x5d\x20\x46\x49\x4c" \
-"\x45\x5b\x2e\x7a\x69\x70\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e" \
-"\x2e\x20\x5b\x2d\x78\x20\x46\x49\x4c\x45\x2e\x2e\x2e\x5d\x20\x5b" \
-"\x2d\x64\x20\x44\x49\x52\x5d\x0a\x0a\x45\x78\x74\x72\x61\x63\x74" \
-"\x20\x46\x49\x4c\x45\x73\x20\x66\x72\x6f\x6d\x20\x5a\x49\x50\x20" \
-"\x61\x72\x63\x68\x69\x76\x65\x0a\x0a\x09\x2d\x6c\x09\x4c\x69\x73" \
-"\x74\x20\x63\x6f\x6e\x74\x65\x6e\x74\x73\x20\x28\x77\x69\x74\x68" \
-"\x20\x2d\x71\x20\x66\x6f\x72\x20\x73\x68\x6f\x72\x74\x20\x66\x6f" \
-"\x72\x6d\x29\x0a\x09\x2d\x6e\x09\x4e\x65\x76\x65\x72\x20\x6f\x76" \
-"\x65\x72\x77\x72\x69\x74\x65\x20\x66\x69\x6c\x65\x73\x20\x28\x64" \
-"\x65\x66\x61\x75\x6c\x74\x3a\x20\x61\x73\x6b\x29\x0a\x09\x2d\x6f" \
-"\x09\x4f\x76\x65\x72\x77\x72\x69\x74\x65\x0a\x09\x2d\x70\x09\x50" \
-"\x72\x69\x6e\x74\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09" \
-"\x2d\x71\x09\x51\x75\x69\x65\x74\x0a\x09\x2d\x78\x20\x46\x49\x4c" \
-"\x45\x09\x45\x78\x63\x6c\x75\x64\x65\x20\x46\x49\x4c\x45\x73\x0a" \
-"\x09\x2d\x64\x20\x44\x49\x52\x09\x45\x78\x74\x72\x61\x63\x74\x20" \
-"\x69\x6e\x74\x6f\x20\x44\x49\x52\x00\x0a\x0a\x44\x69\x73\x70\x6c" \
-"\x61\x79\x20\x74\x68\x65\x20\x74\x69\x6d\x65\x20\x73\x69\x6e\x63" \
-"\x65\x20\x74\x68\x65\x20\x6c\x61\x73\x74\x20\x62\x6f\x6f\x74\x00" \
-"\x4e\x0a\x0a\x50\x61\x75\x73\x65\x20\x66\x6f\x72\x20\x4e\x20\x6d" \
-"\x69\x63\x72\x6f\x73\x65\x63\x6f\x6e\x64\x73\x00\x5b\x2d\x6f\x20" \
-"\x4f\x55\x54\x46\x49\x4c\x45\x5d\x20\x5b\x49\x4e\x46\x49\x4c\x45" \
-"\x5d\x0a\x0a\x55\x75\x64\x65\x63\x6f\x64\x65\x20\x61\x20\x66\x69" \
-"\x6c\x65\x0a\x46\x69\x6e\x64\x73\x20\x4f\x55\x54\x46\x49\x4c\x45" \
-"\x20\x69\x6e\x20\x75\x75\x65\x6e\x63\x6f\x64\x65\x64\x20\x73\x6f" \
-"\x75\x72\x63\x65\x20\x75\x6e\x6c\x65\x73\x73\x20\x2d\x6f\x20\x69" \
-"\x73\x20\x67\x69\x76\x65\x6e\x00\x5b\x2d\x6d\x5d\x20\x5b\x46\x49" \
-"\x4c\x45\x5d\x20\x53\x54\x4f\x52\x45\x44\x5f\x46\x49\x4c\x45\x4e" \
-"\x41\x4d\x45\x0a\x0a\x55\x75\x65\x6e\x63\x6f\x64\x65\x20\x46\x49" \
-"\x4c\x45\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x20\x74\x6f" \
-"\x20\x73\x74\x64\x6f\x75\x74\x0a\x0a\x09\x2d\x6d\x09\x55\x73\x65" \
-"\x20\x62\x61\x73\x65\x36\x34\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67" \
-"\x20\x70\x65\x72\x20\x52\x46\x43\x31\x35\x32\x31\x00\x5b\x2d\x6e" \
-"\x20\x53\x45\x43\x5d\x20\x5b\x2d\x74\x5d\x20\x50\x52\x4f\x47\x20" \
-"\x41\x52\x47\x53\x0a\x0a\x52\x75\x6e\x20\x50\x52\x4f\x47\x20\x70" \
-"\x65\x72\x69\x6f\x64\x69\x63\x61\x6c\x6c\x79\x0a\x0a\x09\x2d\x6e" \
-"\x09\x4c\x6f\x6f\x70\x20\x70\x65\x72\x69\x6f\x64\x20\x69\x6e\x20" \
-"\x73\x65\x63\x6f\x6e\x64\x73\x20\x28\x64\x65\x66\x61\x75\x6c\x74" \
-"\x20\x32\x29\x0a\x09\x2d\x74\x09\x44\x6f\x6e\x27\x74\x20\x70\x72" \
-"\x69\x6e\x74\x20\x68\x65\x61\x64\x65\x72\x00\x5b\x2d\x63\x6d\x6c" \
-"\x77\x4c\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43" \
-"\x6f\x75\x6e\x74\x20\x6c\x69\x6e\x65\x73\x2c\x20\x77\x6f\x72\x64" \
-"\x73\x2c\x20\x61\x6e\x64\x20\x62\x79\x74\x65\x73\x20\x66\x6f\x72" \
-"\x20\x65\x61\x63\x68\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20\x73" \
-"\x74\x64\x69\x6e\x29\x0a\x0a\x09\x2d\x63\x09\x43\x6f\x75\x6e\x74" \
-"\x20\x62\x79\x74\x65\x73\x0a\x09\x2d\x6d\x09\x43\x6f\x75\x6e\x74" \
-"\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x0a\x09\x2d\x6c\x09" \
-"\x43\x6f\x75\x6e\x74\x20\x6e\x65\x77\x6c\x69\x6e\x65\x73\x0a\x09" \
-"\x2d\x77\x09\x43\x6f\x75\x6e\x74\x20\x77\x6f\x72\x64\x73\x0a\x09" \
-"\x2d\x4c\x09\x50\x72\x69\x6e\x74\x20\x6c\x6f\x6e\x67\x65\x73\x74" \
-"\x20\x6c\x69\x6e\x65\x20\x6c\x65\x6e\x67\x74\x68\x00\x5b\x43\x4f" \
-"\x4d\x4d\x41\x4e\x44\x5d\x2e\x2e\x2e\x0a\x0a\x4c\x6f\x63\x61\x74" \
-"\x65\x20\x61\x20\x43\x4f\x4d\x4d\x41\x4e\x44\x00\x0a\x0a\x50\x72" \
-"\x69\x6e\x74\x20\x74\x68\x65\x20\x75\x73\x65\x72\x20\x6e\x61\x6d" \
-"\x65\x20\x61\x73\x73\x6f\x63\x69\x61\x74\x65\x64\x20\x77\x69\x74" \
-"\x68\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x65\x66" \
-"\x66\x65\x63\x74\x69\x76\x65\x20\x75\x73\x65\x72\x20\x69\x64\x00" \
-"\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x50\x52\x4f\x47\x20" \
-"\x41\x52\x47\x53\x5d\x0a\x0a\x52\x75\x6e\x20\x50\x52\x4f\x47\x20" \
-"\x6f\x6e\x20\x65\x76\x65\x72\x79\x20\x69\x74\x65\x6d\x20\x67\x69" \
-"\x76\x65\x6e\x20\x62\x79\x20\x73\x74\x64\x69\x6e\x0a\x0a\x09\x2d" \
-"\x70\x09\x41\x73\x6b\x20\x75\x73\x65\x72\x20\x77\x68\x65\x74\x68" \
-"\x65\x72\x20\x74\x6f\x20\x72\x75\x6e\x20\x65\x61\x63\x68\x20\x63" \
-"\x6f\x6d\x6d\x61\x6e\x64\x0a\x09\x2d\x72\x09\x44\x6f\x6e\x27\x74" \
-"\x20\x72\x75\x6e\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x69\x66\x20" \
-"\x69\x6e\x70\x75\x74\x20\x69\x73\x20\x65\x6d\x70\x74\x79\x0a\x09" \
-"\x2d\x30\x09\x49\x6e\x70\x75\x74\x20\x69\x73\x20\x73\x65\x70\x61" \
-"\x72\x61\x74\x65\x64\x20\x62\x79\x20\x4e\x55\x4c\x20\x63\x68\x61" \
-"\x72\x61\x63\x74\x65\x72\x73\x0a\x09\x2d\x74\x09\x50\x72\x69\x6e" \
-"\x74\x20\x74\x68\x65\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6f\x6e" \
-"\x20\x73\x74\x64\x65\x72\x72\x20\x62\x65\x66\x6f\x72\x65\x20\x65" \
-"\x78\x65\x63\x75\x74\x69\x6f\x6e\x0a\x09\x2d\x65\x5b\x53\x54\x52" \
-"\x5d\x09\x53\x54\x52\x20\x73\x74\x6f\x70\x73\x20\x69\x6e\x70\x75" \
-"\x74\x20\x70\x72\x6f\x63\x65\x73\x73\x69\x6e\x67\x0a\x09\x2d\x6e" \
-"\x20\x4e\x09\x50\x61\x73\x73\x20\x6e\x6f\x20\x6d\x6f\x72\x65\x20" \
-"\x74\x68\x61\x6e\x20\x4e\x20\x61\x72\x67\x73\x20\x74\x6f\x20\x50" \
-"\x52\x4f\x47\x0a\x09\x2d\x73\x20\x4e\x09\x50\x61\x73\x73\x20\x63" \
-"\x6f\x6d\x6d\x61\x6e\x64\x20\x6c\x69\x6e\x65\x20\x6f\x66\x20\x6e" \
-"\x6f\x20\x6d\x6f\x72\x65\x20\x74\x68\x61\x6e\x20\x4e\x20\x62\x79" \
-"\x74\x65\x73\x00\x46\x49\x4c\x45\x0a\x0a\x44\x65\x63\x6f\x6d\x70" \
-"\x72\x65\x73\x73\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x00\x5b" \
-"\x53\x54\x52\x49\x4e\x47\x5d\x0a\x0a\x52\x65\x70\x65\x61\x74\x65" \
-"\x64\x6c\x79\x20\x6f\x75\x74\x70\x75\x74\x20\x61\x20\x6c\x69\x6e" \
-"\x65\x20\x77\x69\x74\x68\x20\x53\x54\x52\x49\x4e\x47\x2c\x20\x6f" \
-"\x72\x20\x27\x79\x27\x00\x46\x49\x4c\x45\x0a\x0a\x44\x65\x63\x6f" \
-"\x6d\x70\x72\x65\x73\x73\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74" \
-"\x00" \
+"\105\130\120\122\105\123\123\111\117\116\040\135\012\012\103\150" \
+"\145\143\153\040\146\151\154\145\040\164\171\160\145\163\054\040" \
+"\143\157\155\160\141\162\145\040\166\141\154\165\145\163\040\145" \
+"\164\143\056\040\122\145\164\165\162\156\040\141\040\060\057\061" \
+"\040\145\170\151\164\040\143\157\144\145\012\144\145\160\145\156" \
+"\144\151\156\147\040\157\156\040\154\157\147\151\143\141\154\040" \
+"\166\141\154\165\145\040\157\146\040\105\130\120\122\105\123\123" \
+"\111\117\116\000\105\130\120\122\105\123\123\111\117\116\040\135" \
+"\012\012\103\150\145\143\153\040\146\151\154\145\040\164\171\160" \
+"\145\163\054\040\143\157\155\160\141\162\145\040\166\141\154\165" \
+"\145\163\040\145\164\143\056\040\122\145\164\165\162\156\040\141" \
+"\040\060\057\061\040\145\170\151\164\040\143\157\144\145\012\144" \
+"\145\160\145\156\144\151\156\147\040\157\156\040\154\157\147\151" \
+"\143\141\154\040\166\141\154\165\145\040\157\146\040\105\130\120" \
+"\122\105\123\123\111\117\116\000\133\055\057\053\117\120\124\111" \
+"\117\116\123\135\040\133\055\057\053\157\040\117\120\124\135\056" \
+"\056\056\040\133\055\143\040\047\123\103\122\111\120\124\047\040" \
+"\133\101\122\107\060\040\133\101\122\107\123\135\135\040\057\040" \
+"\106\111\114\105\040\133\101\122\107\123\135\135\012\012\125\156" \
+"\151\170\040\163\150\145\154\154\040\151\156\164\145\162\160\162" \
+"\145\164\145\162\000\133\117\120\124\111\117\116\123\135\040\133" \
+"\101\127\113\137\120\122\117\107\122\101\115\135\040\133\106\111" \
+"\114\105\135\056\056\056\012\012\011\055\166\040\126\101\122\075" \
+"\126\101\114\011\123\145\164\040\166\141\162\151\141\142\154\145" \
+"\012\011\055\106\040\123\105\120\011\011\125\163\145\040\123\105" \
+"\120\040\141\163\040\146\151\145\154\144\040\163\145\160\141\162" \
+"\141\164\157\162\012\011\055\146\040\106\111\114\105\011\011\122" \
+"\145\141\144\040\160\162\157\147\162\141\155\040\146\162\157\155" \
+"\040\106\111\114\105\012\011\055\145\040\101\127\113\137\120\122" \
+"\117\107\122\101\115\000\133\055\144\135\040\133\106\111\114\105" \
+"\135\012\012\102\141\163\145\066\064\040\145\156\143\157\144\145" \
+"\040\157\162\040\144\145\143\157\144\145\040\106\111\114\105\040" \
+"\164\157\040\163\164\141\156\144\141\162\144\040\157\165\164\160" \
+"\165\164\012\011\055\144\011\104\145\143\157\144\145\040\144\141" \
+"\164\141\000\106\111\114\105\040\133\123\125\106\106\111\130\135" \
+"\012\012\123\164\162\151\160\040\144\151\162\145\143\164\157\162" \
+"\171\040\160\141\164\150\040\141\156\144\040\056\123\125\106\106" \
+"\111\130\040\146\162\157\155\040\106\111\114\105\012\000\012\012" \
+"\120\162\151\156\164\040\164\150\145\040\143\157\156\146\151\147" \
+"\040\146\151\154\145\040\165\163\145\144\040\142\171\040\142\165" \
+"\163\171\142\157\170\040\142\165\151\154\144\000\133\102\114\117" \
+"\103\113\104\105\126\135\056\056\056\012\012\120\162\151\156\164" \
+"\040\125\125\111\104\163\040\157\146\040\141\154\154\040\146\151" \
+"\154\145\163\171\163\164\145\155\163\000\117\120\124\111\117\116" \
+"\040\102\114\117\103\113\104\105\126\012\012\011\055\055\163\145" \
+"\164\162\157\011\011\123\145\164\040\162\157\012\011\055\055\163" \
+"\145\164\162\167\011\011\123\145\164\040\162\167\012\011\055\055" \
+"\147\145\164\162\157\011\011\107\145\164\040\162\157\012\011\055" \
+"\055\147\145\164\163\163\011\011\107\145\164\040\163\145\143\164" \
+"\157\162\040\163\151\172\145\012\011\055\055\147\145\164\142\163" \
+"\172\011\107\145\164\040\142\154\157\143\153\040\163\151\172\145" \
+"\012\011\055\055\163\145\164\142\163\172\040\102\131\124\105\123" \
+"\011\123\145\164\040\142\154\157\143\153\040\163\151\172\145\012" \
+"\011\055\055\147\145\164\163\172\011\011\107\145\164\040\144\145" \
+"\166\151\143\145\040\163\151\172\145\040\151\156\040\065\061\062" \
+"\055\142\171\164\145\040\163\145\143\164\157\162\163\012\011\055" \
+"\055\147\145\164\163\151\172\145\066\064\011\107\145\164\040\144" \
+"\145\166\151\143\145\040\163\151\172\145\040\151\156\040\142\171" \
+"\164\145\163\012\011\055\055\146\154\165\163\150\142\165\146\163" \
+"\011\106\154\165\163\150\040\142\165\146\146\145\162\163\012\011" \
+"\055\055\162\145\162\145\141\144\160\164\011\122\145\162\145\141" \
+"\144\040\160\141\162\164\151\164\151\157\156\040\164\141\142\154" \
+"\145\000\133\055\143\146\135\040\133\106\111\114\105\135\056\056" \
+"\056\012\012\104\145\143\157\155\160\162\145\163\163\040\106\111" \
+"\114\105\163\040\050\157\162\040\163\164\144\151\156\051\012\012" \
+"\011\055\143\011\127\162\151\164\145\040\164\157\040\163\164\144" \
+"\157\165\164\012\011\055\146\011\106\157\162\143\145\000\133\106" \
+"\111\114\105\135\056\056\056\012\012\104\145\143\157\155\160\162" \
+"\145\163\163\040\164\157\040\163\164\144\157\165\164\000\133\117" \
+"\120\124\111\117\116\123\135\040\133\106\111\114\105\135\056\056" \
+"\056\012\012\103\157\155\160\162\145\163\163\040\106\111\114\105" \
+"\163\040\050\157\162\040\163\164\144\151\156\051\040\167\151\164" \
+"\150\040\142\172\151\160\062\040\141\154\147\157\162\151\164\150" \
+"\155\012\012\011\055\061\056\056\071\011\103\157\155\160\162\145" \
+"\163\163\151\157\156\040\154\145\166\145\154\012\011\055\144\011" \
+"\104\145\143\157\155\160\162\145\163\163\012\011\055\143\011\127" \
+"\162\151\164\145\040\164\157\040\163\164\144\157\165\164\012\011" \
+"\055\146\011\106\157\162\143\145\000\133\055\152\171\135\040\133" \
+"\133\115\117\116\124\110\135\040\131\105\101\122\135\012\012\104" \
+"\151\163\160\154\141\171\040\141\040\143\141\154\145\156\144\141" \
+"\162\012\012\011\055\152\011\125\163\145\040\152\165\154\151\141" \
+"\156\040\144\141\164\145\163\012\011\055\171\011\104\151\163\160" \
+"\154\141\171\040\164\150\145\040\145\156\164\151\162\145\040\171" \
+"\145\141\162\000\133\106\111\114\105\135\056\056\056\012\012\103" \
+"\157\156\143\141\164\145\156\141\164\145\040\106\111\114\105\163" \
+"\040\141\156\144\040\160\162\151\156\164\040\164\150\145\155\040" \
+"\164\157\040\163\164\144\157\165\164\000\133\055\145\164\166\135" \
+"\040\133\106\111\114\105\135\056\056\056\012\012\104\151\163\160" \
+"\154\141\171\040\156\157\156\160\162\151\156\164\151\156\147\040" \
+"\143\150\141\162\141\143\164\145\162\163\040\141\163\040\136\170" \
+"\040\157\162\040\115\055\170\012\012\011\055\145\011\105\156\144" \
+"\040\145\141\143\150\040\154\151\156\145\040\167\151\164\150\040" \
+"\044\012\011\055\164\011\123\150\157\167\040\164\141\142\163\040" \
+"\141\163\040\136\111\012\011\055\166\011\104\157\156\047\164\040" \
+"\165\163\145\040\136\170\040\157\162\040\115\055\170\040\145\163" \
+"\143\141\160\145\163\000\133\055\122\135\040\133\055\053\075\101" \
+"\141\143\104\144\151\152\163\123\164\124\165\135\040\133\055\166" \
+"\040\126\105\122\123\111\117\116\135\040\133\106\111\114\105\135" \
+"\056\056\056\012\012\103\150\141\156\147\145\040\146\151\154\145" \
+"\040\141\164\164\162\151\142\165\164\145\163\040\157\156\040\141" \
+"\156\040\145\170\164\062\040\146\163\012\012\115\157\144\151\146" \
+"\151\145\162\163\072\012\011\055\011\122\145\155\157\166\145\040" \
+"\141\164\164\162\151\142\165\164\145\163\012\011\053\011\101\144" \
+"\144\040\141\164\164\162\151\142\165\164\145\163\012\011\075\011" \
+"\123\145\164\040\141\164\164\162\151\142\165\164\145\163\012\101" \
+"\164\164\162\151\142\165\164\145\163\072\012\011\101\011\104\157" \
+"\156\047\164\040\164\162\141\143\153\040\141\164\151\155\145\012" \
+"\011\141\011\101\160\160\145\156\144\040\155\157\144\145\040\157" \
+"\156\154\171\012\011\143\011\105\156\141\142\154\145\040\143\157" \
+"\155\160\162\145\163\163\012\011\104\011\127\162\151\164\145\040" \
+"\144\151\162\040\143\157\156\164\145\156\164\163\040\163\171\156" \
+"\143\150\162\157\156\157\165\163\154\171\012\011\144\011\104\157" \
+"\156\047\164\040\142\141\143\153\165\160\040\167\151\164\150\040" \
+"\144\165\155\160\012\011\151\011\103\141\156\156\157\164\040\142" \
+"\145\040\155\157\144\151\146\151\145\144\040\050\151\155\155\165" \
+"\164\141\142\154\145\051\012\011\152\011\127\162\151\164\145\040" \
+"\141\154\154\040\144\141\164\141\040\164\157\040\152\157\165\162" \
+"\156\141\154\040\146\151\162\163\164\012\011\163\011\132\145\162" \
+"\157\040\144\151\163\153\040\163\164\157\162\141\147\145\040\167" \
+"\150\145\156\040\144\145\154\145\164\145\144\012\011\123\011\127" \
+"\162\151\164\145\040\146\151\154\145\040\143\157\156\164\145\156" \
+"\164\163\040\163\171\156\143\150\162\157\156\157\165\163\154\171" \
+"\012\011\164\011\104\151\163\141\142\154\145\040\164\141\151\154" \
+"\055\155\145\162\147\151\156\147\040\157\146\040\160\141\162\164" \
+"\151\141\154\040\142\154\157\143\153\163\040\167\151\164\150\040" \
+"\157\164\150\145\162\040\146\151\154\145\163\012\011\165\011\101" \
+"\154\154\157\167\040\146\151\154\145\040\164\157\040\142\145\040" \
+"\165\156\144\145\154\145\164\145\144\012\011\055\122\011\122\145" \
+"\143\165\162\163\145\012\011\055\166\011\123\145\164\040\164\150" \
+"\145\040\146\151\154\145\047\163\040\166\145\162\163\151\157\156" \
+"\057\147\145\156\145\162\141\164\151\157\156\040\156\165\155\142" \
+"\145\162\000\133\055\122\150\114\110\120\135\056\056\056\040\107" \
+"\122\117\125\120\040\106\111\114\105\056\056\056\012\012\103\150" \
+"\141\156\147\145\040\164\150\145\040\147\162\157\165\160\040\155" \
+"\145\155\142\145\162\163\150\151\160\040\157\146\040\145\141\143" \
+"\150\040\106\111\114\105\040\164\157\040\107\122\117\125\120\012" \
+"\012\011\055\122\011\122\145\143\165\162\163\145\012\011\055\150" \
+"\011\101\146\146\145\143\164\040\163\171\155\154\151\156\153\163" \
+"\040\151\156\163\164\145\141\144\040\157\146\040\163\171\155\154" \
+"\151\156\153\040\164\141\162\147\145\164\163\012\011\055\114\011" \
+"\124\162\141\166\145\162\163\145\040\141\154\154\040\163\171\155" \
+"\154\151\156\153\163\040\164\157\040\144\151\162\145\143\164\157" \
+"\162\151\145\163\012\011\055\110\011\124\162\141\166\145\162\163" \
+"\145\040\163\171\155\154\151\156\153\163\040\157\156\040\143\157" \
+"\155\155\141\156\144\040\154\151\156\145\040\157\156\154\171\012" \
+"\011\055\120\011\104\157\156\047\164\040\164\162\141\166\145\162" \
+"\163\145\040\163\171\155\154\151\156\153\163\040\050\144\145\146" \
+"\141\165\154\164\051\000\133\055\122\135\040\115\117\104\105\133" \
+"\054\115\117\104\105\135\056\056\056\040\106\111\114\105\056\056" \
+"\056\012\012\105\141\143\150\040\115\117\104\105\040\151\163\040" \
+"\157\156\145\040\157\162\040\155\157\162\145\040\157\146\040\164" \
+"\150\145\040\154\145\164\164\145\162\163\040\165\147\157\141\054" \
+"\040\157\156\145\040\157\146\040\164\150\145\012\163\171\155\142" \
+"\157\154\163\040\053\055\075\040\141\156\144\040\157\156\145\040" \
+"\157\162\040\155\157\162\145\040\157\146\040\164\150\145\040\154" \
+"\145\164\164\145\162\163\040\162\167\170\163\164\012\012\011\055" \
+"\122\011\122\145\143\165\162\163\145\000\133\055\122\150\114\110" \
+"\120\135\056\056\056\040\117\127\116\105\122\133\074\056\174\072" \
+"\076\133\107\122\117\125\120\135\135\040\106\111\114\105\056\056" \
+"\056\012\012\103\150\141\156\147\145\040\164\150\145\040\157\167" \
+"\156\145\162\040\141\156\144\057\157\162\040\147\162\157\165\160" \
+"\040\157\146\040\145\141\143\150\040\106\111\114\105\040\164\157" \
+"\040\117\127\116\105\122\040\141\156\144\057\157\162\040\107\122" \
+"\117\125\120\012\012\011\055\122\011\122\145\143\165\162\163\145" \
+"\012\011\055\150\011\101\146\146\145\143\164\040\163\171\155\154" \
+"\151\156\153\163\040\151\156\163\164\145\141\144\040\157\146\040" \
+"\163\171\155\154\151\156\153\040\164\141\162\147\145\164\163\012" \
+"\011\055\114\011\124\162\141\166\145\162\163\145\040\141\154\154" \
+"\040\163\171\155\154\151\156\153\163\040\164\157\040\144\151\162" \
+"\145\143\164\157\162\151\145\163\012\011\055\110\011\124\162\141" \
+"\166\145\162\163\145\040\163\171\155\154\151\156\153\163\040\157" \
+"\156\040\143\157\155\155\141\156\144\040\154\151\156\145\040\157" \
+"\156\154\171\012\011\055\120\011\104\157\156\047\164\040\164\162" \
+"\141\166\145\162\163\145\040\163\171\155\154\151\156\153\163\040" \
+"\050\144\145\146\141\165\154\164\051\000\116\105\127\122\117\117" \
+"\124\040\133\120\122\117\107\040\101\122\107\123\135\012\012\122" \
+"\165\156\040\120\122\117\107\040\167\151\164\150\040\162\157\157" \
+"\164\040\144\151\162\145\143\164\157\162\171\040\163\145\164\040" \
+"\164\157\040\116\105\127\122\117\117\124\000\012\012\103\154\145" \
+"\141\162\040\163\143\162\145\145\156\000\133\055\154\135\040\133" \
+"\055\163\135\040\106\111\114\105\061\040\133\106\111\114\105\062" \
+"\135\012\012\103\157\155\160\141\162\145\040\106\111\114\105\061" \
+"\040\167\151\164\150\040\106\111\114\105\062\040\050\157\162\040" \
+"\163\164\144\151\156\051\012\012\011\055\154\011\127\162\151\164" \
+"\145\040\164\150\145\040\142\171\164\145\040\156\165\155\142\145" \
+"\162\163\040\050\144\145\143\151\155\141\154\051\040\141\156\144" \
+"\040\166\141\154\165\145\163\040\050\157\143\164\141\154\051\012" \
+"\011\011\146\157\162\040\141\154\154\040\144\151\146\146\145\162" \
+"\151\156\147\040\142\171\164\145\163\012\011\055\163\011\121\165" \
+"\151\145\164\000\133\117\120\124\111\117\116\123\135\040\123\117" \
+"\125\122\103\105\056\056\056\040\104\105\123\124\012\012\103\157" \
+"\160\171\040\123\117\125\122\103\105\050\163\051\040\164\157\040" \
+"\104\105\123\124\012\012\011\055\141\011\123\141\155\145\040\141" \
+"\163\040\055\144\160\122\012\011\055\122\054\055\162\011\122\145" \
+"\143\165\162\163\145\012\011\055\144\054\055\120\011\120\162\145" \
+"\163\145\162\166\145\040\163\171\155\154\151\156\153\163\040\050" \
+"\144\145\146\141\165\154\164\040\151\146\040\055\122\051\012\011" \
+"\055\114\011\106\157\154\154\157\167\040\141\154\154\040\163\171" \
+"\155\154\151\156\153\163\012\011\055\110\011\106\157\154\154\157" \
+"\167\040\163\171\155\154\151\156\153\163\040\157\156\040\143\157" \
+"\155\155\141\156\144\040\154\151\156\145\012\011\055\160\011\120" \
+"\162\145\163\145\162\166\145\040\146\151\154\145\040\141\164\164" \
+"\162\151\142\165\164\145\163\040\151\146\040\160\157\163\163\151" \
+"\142\154\145\012\011\055\146\011\117\166\145\162\167\162\151\164" \
+"\145\012\011\055\151\011\120\162\157\155\160\164\040\142\145\146" \
+"\157\162\145\040\157\166\145\162\167\162\151\164\145\012\011\055" \
+"\154\054\055\163\011\103\162\145\141\164\145\040\050\163\171\155" \
+"\051\154\151\156\153\163\000\133\055\144\155\166\165\135\040\133" \
+"\055\106\040\106\111\114\105\135\040\133\055\110\040\156\145\167" \
+"\143\135\040\133\055\164\151\157\135\040\133\105\130\124\122\137" \
+"\106\111\114\105\135\056\056\056\012\012\105\170\164\162\141\143" \
+"\164\040\157\162\040\154\151\163\164\040\146\151\154\145\163\040" \
+"\146\162\157\155\040\141\040\143\160\151\157\040\141\162\143\150" \
+"\151\166\145\054\040\157\162\012\143\162\145\141\164\145\040\141" \
+"\156\040\141\162\143\150\151\166\145\040\165\163\151\156\147\040" \
+"\146\151\154\145\040\154\151\163\164\040\157\156\040\163\164\144" \
+"\151\156\012\012\115\141\151\156\040\157\160\145\162\141\164\151" \
+"\157\156\040\155\157\144\145\072\012\011\055\164\011\114\151\163" \
+"\164\012\011\055\151\011\105\170\164\162\141\143\164\040\105\130" \
+"\124\122\137\106\111\114\105\163\040\050\157\162\040\141\154\154" \
+"\051\012\011\055\157\011\103\162\145\141\164\145\040\050\162\145" \
+"\161\165\151\162\145\163\040\055\110\040\156\145\167\143\051\012" \
+"\011\055\144\011\115\141\153\145\040\154\145\141\144\151\156\147" \
+"\040\144\151\162\145\143\164\157\162\151\145\163\012\011\055\155" \
+"\011\120\162\145\163\145\162\166\145\040\155\164\151\155\145\012" \
+"\011\055\166\011\126\145\162\142\157\163\145\012\011\055\165\011" \
+"\117\166\145\162\167\162\151\164\145\012\011\055\106\040\106\111" \
+"\114\105\011\111\156\160\165\164\040\050\055\164\054\055\151\054" \
+"\055\160\051\040\157\162\040\157\165\164\160\165\164\040\050\055" \
+"\157\051\040\146\151\154\145\012\011\055\110\040\156\145\167\143" \
+"\011\101\162\143\150\151\166\145\040\146\157\162\155\141\164\000" \
+"\133\117\120\124\111\117\116\123\135\040\133\106\111\114\105\135" \
+"\056\056\056\012\012\120\162\151\156\164\040\163\145\154\145\143" \
+"\164\145\144\040\146\151\145\154\144\163\040\146\162\157\155\040" \
+"\145\141\143\150\040\151\156\160\165\164\040\106\111\114\105\040" \
+"\164\157\040\163\164\144\157\165\164\012\012\011\055\142\040\114" \
+"\111\123\124\011\117\165\164\160\165\164\040\157\156\154\171\040" \
+"\142\171\164\145\163\040\146\162\157\155\040\114\111\123\124\012" \
+"\011\055\143\040\114\111\123\124\011\117\165\164\160\165\164\040" \
+"\157\156\154\171\040\143\150\141\162\141\143\164\145\162\163\040" \
+"\146\162\157\155\040\114\111\123\124\012\011\055\144\040\103\110" \
+"\101\122\011\125\163\145\040\103\110\101\122\040\151\156\163\164" \
+"\145\141\144\040\157\146\040\164\141\142\040\141\163\040\164\150" \
+"\145\040\146\151\145\154\144\040\144\145\154\151\155\151\164\145" \
+"\162\012\011\055\163\011\117\165\164\160\165\164\040\157\156\154" \
+"\171\040\164\150\145\040\154\151\156\145\163\040\143\157\156\164" \
+"\141\151\156\151\156\147\040\144\145\154\151\155\151\164\145\162" \
+"\012\011\055\146\040\116\011\120\162\151\156\164\040\157\156\154" \
+"\171\040\164\150\145\163\145\040\146\151\145\154\144\163\012\011" \
+"\055\156\011\111\147\156\157\162\145\144\000\133\117\120\124\111" \
+"\117\116\123\135\040\133\053\106\115\124\135\040\133\124\111\115" \
+"\105\135\012\012\104\151\163\160\154\141\171\040\164\151\155\145" \
+"\040\050\165\163\151\156\147\040\053\106\115\124\051\054\040\157" \
+"\162\040\163\145\164\040\164\151\155\145\012\012\011\133\055\163" \
+"\054\055\055\163\145\164\135\040\124\111\115\105\011\123\145\164" \
+"\040\164\151\155\145\040\164\157\040\124\111\115\105\012\011\055" \
+"\165\054\055\055\165\164\143\011\127\157\162\153\040\151\156\040" \
+"\125\124\103\040\050\144\157\156\047\164\040\143\157\156\166\145" \
+"\162\164\040\164\157\040\154\157\143\141\154\040\164\151\155\145" \
+"\051\012\011\055\122\054\055\055\162\146\143\055\062\070\062\062" \
+"\011\117\165\164\160\165\164\040\122\106\103\055\062\070\062\062" \
+"\040\143\157\155\160\154\151\141\156\164\040\144\141\164\145\040" \
+"\163\164\162\151\156\147\012\011\055\111\133\123\120\105\103\135" \
+"\011\117\165\164\160\165\164\040\111\123\117\055\070\066\060\061" \
+"\040\143\157\155\160\154\151\141\156\164\040\144\141\164\145\040" \
+"\163\164\162\151\156\147\012\011\011\011\123\120\105\103\075\047" \
+"\144\141\164\145\047\040\050\144\145\146\141\165\154\164\051\040" \
+"\146\157\162\040\144\141\164\145\040\157\156\154\171\054\012\011" \
+"\011\011\047\150\157\165\162\163\047\054\040\047\155\151\156\165" \
+"\164\145\163\047\054\040\157\162\040\047\163\145\143\157\156\144" \
+"\163\047\040\146\157\162\040\144\141\164\145\040\141\156\144\012" \
+"\011\011\011\164\151\155\145\040\164\157\040\164\150\145\040\151" \
+"\156\144\151\143\141\164\145\144\040\160\162\145\143\151\163\151" \
+"\157\156\012\011\055\162\054\055\055\162\145\146\145\162\145\156" \
+"\143\145\040\106\111\114\105\011\104\151\163\160\154\141\171\040" \
+"\154\141\163\164\040\155\157\144\151\146\151\143\141\164\151\157" \
+"\156\040\164\151\155\145\040\157\146\040\106\111\114\105\012\011" \
+"\055\144\054\055\055\144\141\164\145\040\124\111\115\105\011\104" \
+"\151\163\160\154\141\171\040\124\111\115\105\054\040\156\157\164" \
+"\040\047\156\157\167\047\012\011\055\104\040\106\115\124\011\011" \
+"\125\163\145\040\106\115\124\040\146\157\162\040\055\144\040\124" \
+"\111\115\105\040\143\157\156\166\145\162\163\151\157\156\012\012" \
+"\122\145\143\157\147\156\151\172\145\144\040\124\111\115\105\040" \
+"\146\157\162\155\141\164\163\072\012\011\150\150\072\155\155\133" \
+"\072\163\163\135\012\011\133\131\131\131\131\056\135\115\115\056" \
+"\104\104\055\150\150\072\155\155\133\072\163\163\135\012\011\131" \
+"\131\131\131\055\115\115\055\104\104\040\150\150\072\155\155\133" \
+"\072\163\163\135\012\011\133\133\133\133\133\131\131\135\131\131" \
+"\135\115\115\135\104\104\135\150\150\135\155\155\133\056\163\163" \
+"\135\012\011\047\144\141\164\145\040\124\111\115\105\047\040\146" \
+"\157\162\155\040\141\143\143\145\160\164\163\040\115\115\104\104" \
+"\150\150\155\155\133\133\131\131\135\131\131\135\133\056\163\163" \
+"\135\040\151\156\163\164\145\141\144\000\105\130\120\122\105\123" \
+"\123\111\117\116\056\056\056\012\012\124\151\156\171\040\122\120" \
+"\116\040\143\141\154\143\165\154\141\164\157\162\056\040\117\160" \
+"\145\162\141\164\151\157\156\163\072\012\053\054\040\141\144\144" \
+"\054\040\055\054\040\163\165\142\054\040\052\054\040\155\165\154" \
+"\054\040\057\054\040\144\151\166\054\040\045\054\040\155\157\144" \
+"\054\040\141\156\144\054\040\157\162\054\040\156\157\164\054\040" \
+"\170\157\162\054\012\160\040\055\040\160\162\151\156\164\040\164" \
+"\157\160\040\157\146\040\164\150\145\040\163\164\141\143\153\040" \
+"\050\167\151\164\150\157\165\164\040\160\157\160\160\151\156\147" \
+"\051\054\012\146\040\055\040\160\162\151\156\164\040\145\156\164" \
+"\151\162\145\040\163\164\141\143\153\054\012\157\040\055\040\160" \
+"\157\160\040\164\150\145\040\166\141\154\165\145\040\141\156\144" \
+"\040\163\145\164\040\157\165\164\160\165\164\040\162\141\144\151" \
+"\170\040\050\155\165\163\164\040\142\145\040\061\060\054\040\061" \
+"\066\054\040\070\040\157\162\040\062\051\056\012\105\170\141\155" \
+"\160\154\145\163\072\040\047\144\143\040\062\040\062\040\141\144" \
+"\144\040\160\047\040\055\076\040\064\054\040\047\144\143\040\070" \
+"\040\070\040\155\165\154\040\062\040\062\040\053\040\057\040\160" \
+"\047\040\055\076\040\061\066\000\133\151\146\075\106\111\114\105" \
+"\135\040\133\157\146\075\106\111\114\105\135\040\133\151\142\163" \
+"\075\116\135\040\133\157\142\163\075\116\135\040\133\142\163\075" \
+"\116\135\040\133\143\157\165\156\164\075\116\135\040\133\163\153" \
+"\151\160\075\116\135\012\011\133\163\145\145\153\075\116\135\040" \
+"\133\143\157\156\166\075\156\157\164\162\165\156\143\174\156\157" \
+"\145\162\162\157\162\174\163\171\156\143\174\146\163\171\156\143" \
+"\135\012\012\103\157\160\171\040\141\040\146\151\154\145\040\167" \
+"\151\164\150\040\143\157\156\166\145\162\164\151\156\147\040\141" \
+"\156\144\040\146\157\162\155\141\164\164\151\156\147\012\012\011" \
+"\151\146\075\106\111\114\105\011\011\122\145\141\144\040\146\162" \
+"\157\155\040\106\111\114\105\040\151\156\163\164\145\141\144\040" \
+"\157\146\040\163\164\144\151\156\012\011\157\146\075\106\111\114" \
+"\105\011\011\127\162\151\164\145\040\164\157\040\106\111\114\105" \
+"\040\151\156\163\164\145\141\144\040\157\146\040\163\164\144\157" \
+"\165\164\012\011\142\163\075\116\011\011\122\145\141\144\040\141" \
+"\156\144\040\167\162\151\164\145\040\116\040\142\171\164\145\163" \
+"\040\141\164\040\141\040\164\151\155\145\012\011\151\142\163\075" \
+"\116\011\011\122\145\141\144\040\116\040\142\171\164\145\163\040" \
+"\141\164\040\141\040\164\151\155\145\012\011\157\142\163\075\116" \
+"\011\011\127\162\151\164\145\040\116\040\142\171\164\145\163\040" \
+"\141\164\040\141\040\164\151\155\145\012\011\143\157\165\156\164" \
+"\075\116\011\011\103\157\160\171\040\157\156\154\171\040\116\040" \
+"\151\156\160\165\164\040\142\154\157\143\153\163\012\011\163\153" \
+"\151\160\075\116\011\011\123\153\151\160\040\116\040\151\156\160" \
+"\165\164\040\142\154\157\143\153\163\012\011\163\145\145\153\075" \
+"\116\011\011\123\153\151\160\040\116\040\157\165\164\160\165\164" \
+"\040\142\154\157\143\153\163\012\011\143\157\156\166\075\156\157" \
+"\164\162\165\156\143\011\104\157\156\047\164\040\164\162\165\156" \
+"\143\141\164\145\040\157\165\164\160\165\164\040\146\151\154\145" \
+"\012\011\143\157\156\166\075\156\157\145\162\162\157\162\011\103" \
+"\157\156\164\151\156\165\145\040\141\146\164\145\162\040\162\145" \
+"\141\144\040\145\162\162\157\162\163\012\011\143\157\156\166\075" \
+"\163\171\156\143\011\120\141\144\040\142\154\157\143\153\163\040" \
+"\167\151\164\150\040\172\145\162\157\163\012\011\143\157\156\166" \
+"\075\146\163\171\156\143\011\120\150\171\163\151\143\141\154\154" \
+"\171\040\167\162\151\164\145\040\144\141\164\141\040\157\165\164" \
+"\040\142\145\146\157\162\145\040\146\151\156\151\163\150\151\156" \
+"\147\012\011\143\157\156\166\075\163\167\141\142\011\123\167\141" \
+"\160\040\145\166\145\162\171\040\160\141\151\162\040\157\146\040" \
+"\142\171\164\145\163\012\012\116\040\155\141\171\040\142\145\040" \
+"\163\165\146\146\151\170\145\144\040\142\171\040\143\040\050\061" \
+"\051\054\040\167\040\050\062\051\054\040\142\040\050\065\061\062" \
+"\051\054\040\153\104\040\050\061\060\060\060\051\054\040\153\040" \
+"\050\061\060\062\064\051\054\040\115\104\054\040\115\054\040\107" \
+"\104\054\040\107\000\133\055\161\146\167\162\163\166\135\040\115" \
+"\117\104\125\114\105\040\133\163\171\155\142\157\154\075\166\141" \
+"\154\165\145\135\056\056\056\012\012\011\055\162\011\122\145\155" \
+"\157\166\145\040\115\117\104\125\114\105\040\050\163\164\141\143" \
+"\153\163\051\040\157\162\040\144\157\040\141\165\164\157\143\154" \
+"\145\141\156\012\011\055\161\011\121\165\151\145\164\012\011\055" \
+"\166\011\126\145\162\142\157\163\145\012\011\055\146\011\106\157" \
+"\162\143\145\012\011\055\167\011\127\141\151\164\040\146\157\162" \
+"\040\165\156\154\157\141\144\012\011\055\163\011\122\145\160\157" \
+"\162\164\040\166\151\141\040\163\171\163\154\157\147\040\151\156" \
+"\163\164\145\141\144\040\157\146\040\163\164\144\145\162\162\000" \
+"\101\104\104\122\105\123\123\040\133\127\111\104\124\110\040\133" \
+"\126\101\114\125\105\135\135\012\012\122\145\141\144\057\167\162" \
+"\151\164\145\040\146\162\157\155\040\160\150\171\163\151\143\141" \
+"\154\040\141\144\144\162\145\163\163\012\012\011\101\104\104\122" \
+"\105\123\123\011\101\144\144\162\145\163\163\040\164\157\040\141" \
+"\143\164\040\165\160\157\156\012\011\127\111\104\124\110\011\127" \
+"\151\144\164\150\040\050\070\057\061\066\057\056\056\056\051\012" \
+"\011\126\101\114\125\105\011\104\141\164\141\040\164\157\040\142" \
+"\145\040\167\162\151\164\164\145\156\000\133\055\120\153\155\150" \
+"\141\151\135\040\133\055\102\040\123\111\132\105\135\040\133\106" \
+"\111\114\105\123\131\123\124\105\115\135\056\056\056\012\012\120" \
+"\162\151\156\164\040\146\151\154\145\163\171\163\164\145\155\040" \
+"\165\163\141\147\145\040\163\164\141\164\151\163\164\151\143\163" \
+"\012\012\011\055\120\011\120\117\123\111\130\040\157\165\164\160" \
+"\165\164\040\146\157\162\155\141\164\012\011\055\153\011\061\060" \
+"\062\064\055\142\171\164\145\040\142\154\157\143\153\163\040\050" \
+"\144\145\146\141\165\154\164\051\012\011\055\155\011\061\115\055" \
+"\142\171\164\145\040\142\154\157\143\153\163\012\011\055\150\011" \
+"\110\165\155\141\156\040\162\145\141\144\141\142\154\145\040\050" \
+"\145\056\147\056\040\061\113\040\062\064\063\115\040\062\107\051" \
+"\012\011\055\141\011\123\150\157\167\040\141\154\154\040\146\151" \
+"\154\145\163\171\163\164\145\155\163\012\011\055\151\011\111\156" \
+"\157\144\145\163\012\011\055\102\040\123\111\132\105\011\102\154" \
+"\157\143\153\163\151\172\145\000\133\055\141\142\102\144\151\116" \
+"\161\162\124\163\164\167\135\040\133\055\114\040\114\101\102\105" \
+"\114\135\040\133\055\123\040\106\111\114\105\135\040\133\055\125" \
+"\040\114\111\116\105\123\135\040\106\111\114\105\061\040\106\111" \
+"\114\105\062\012\012\103\157\155\160\141\162\145\040\146\151\154" \
+"\145\163\040\154\151\156\145\040\142\171\040\154\151\156\145\040" \
+"\141\156\144\040\157\165\164\160\165\164\040\164\150\145\040\144" \
+"\151\146\146\145\162\145\156\143\145\163\040\142\145\164\167\145" \
+"\145\156\040\164\150\145\155\056\012\124\150\151\163\040\151\155" \
+"\160\154\145\155\145\156\164\141\164\151\157\156\040\163\165\160" \
+"\160\157\162\164\163\040\165\156\151\146\151\145\144\040\144\151" \
+"\146\146\163\040\157\156\154\171\056\012\012\011\055\141\011\124" \
+"\162\145\141\164\040\141\154\154\040\146\151\154\145\163\040\141" \
+"\163\040\164\145\170\164\012\011\055\142\011\111\147\156\157\162" \
+"\145\040\143\150\141\156\147\145\163\040\151\156\040\164\150\145" \
+"\040\141\155\157\165\156\164\040\157\146\040\167\150\151\164\145" \
+"\163\160\141\143\145\012\011\055\102\011\111\147\156\157\162\145" \
+"\040\143\150\141\156\147\145\163\040\167\150\157\163\145\040\154" \
+"\151\156\145\163\040\141\162\145\040\141\154\154\040\142\154\141" \
+"\156\153\012\011\055\144\011\124\162\171\040\150\141\162\144\040" \
+"\164\157\040\146\151\156\144\040\141\040\163\155\141\154\154\145" \
+"\162\040\163\145\164\040\157\146\040\143\150\141\156\147\145\163" \
+"\012\011\055\151\011\111\147\156\157\162\145\040\143\141\163\145" \
+"\040\144\151\146\146\145\162\145\156\143\145\163\012\011\055\114" \
+"\011\125\163\145\040\114\101\102\105\114\040\151\156\163\164\145" \
+"\141\144\040\157\146\040\164\150\145\040\146\151\154\145\156\141" \
+"\155\145\040\151\156\040\164\150\145\040\165\156\151\146\151\145" \
+"\144\040\150\145\141\144\145\162\012\011\055\116\011\124\162\145" \
+"\141\164\040\141\142\163\145\156\164\040\146\151\154\145\163\040" \
+"\141\163\040\145\155\160\164\171\012\011\055\161\011\117\165\164" \
+"\160\165\164\040\157\156\154\171\040\167\150\145\164\150\145\162" \
+"\040\146\151\154\145\163\040\144\151\146\146\145\162\012\011\055" \
+"\162\011\122\145\143\165\162\163\145\012\011\055\123\011\123\164" \
+"\141\162\164\040\167\151\164\150\040\106\111\114\105\040\167\150" \
+"\145\156\040\143\157\155\160\141\162\151\156\147\040\144\151\162" \
+"\145\143\164\157\162\151\145\163\012\011\055\124\011\115\141\153" \
+"\145\040\164\141\142\163\040\154\151\156\145\040\165\160\040\142" \
+"\171\040\160\162\145\146\151\170\151\156\147\040\141\040\164\141" \
+"\142\040\167\150\145\156\040\156\145\143\145\163\163\141\162\171" \
+"\012\011\055\163\011\122\145\160\157\162\164\040\167\150\145\156" \
+"\040\164\167\157\040\146\151\154\145\163\040\141\162\145\040\164" \
+"\150\145\040\163\141\155\145\012\011\055\164\011\105\170\160\141" \
+"\156\144\040\164\141\142\163\040\164\157\040\163\160\141\143\145" \
+"\163\040\151\156\040\157\165\164\160\165\164\012\011\055\125\011" \
+"\117\165\164\160\165\164\040\114\111\116\105\123\040\154\151\156" \
+"\145\163\040\157\146\040\143\157\156\164\145\170\164\012\011\055" \
+"\167\011\111\147\156\157\162\145\040\141\154\154\040\167\150\151" \
+"\164\145\163\160\141\143\145\000\106\111\114\105\116\101\115\105" \
+"\012\012\123\164\162\151\160\040\156\157\156\055\144\151\162\145" \
+"\143\164\157\162\171\040\163\165\146\146\151\170\040\146\162\157" \
+"\155\040\106\111\114\105\116\101\115\105\000\133\055\143\135\040" \
+"\133\055\156\040\114\105\126\105\114\135\040\133\055\162\135\040" \
+"\133\055\163\040\123\111\132\105\135\040\133\055\103\135\012\012" \
+"\120\162\151\156\164\040\157\162\040\143\157\156\164\162\157\154" \
+"\040\164\150\145\040\153\145\162\156\145\154\040\162\151\156\147" \
+"\040\142\165\146\146\145\162\012\012\011\055\143\011\011\103\154" \
+"\145\141\162\040\162\151\156\147\040\142\165\146\146\145\162\040" \
+"\141\146\164\145\162\040\160\162\151\156\164\151\156\147\012\011" \
+"\055\156\040\114\105\126\105\114\011\123\145\164\040\143\157\156" \
+"\163\157\154\145\040\154\157\147\147\151\156\147\040\154\145\166" \
+"\145\154\012\011\055\162\011\011\123\150\157\167\040\154\145\166" \
+"\145\154\040\160\162\145\146\151\170\012\011\055\163\040\123\111" \
+"\132\105\011\011\102\165\146\146\145\162\040\163\151\172\145\012" \
+"\011\055\103\011\011\103\157\154\157\162\145\144\040\157\165\164" \
+"\160\165\164\000\133\055\165\144\135\040\133\106\111\114\105\135" \
+"\012\012\103\157\156\166\145\162\164\040\106\111\114\105\040\151" \
+"\156\055\160\154\141\143\145\040\146\162\157\155\040\104\117\123" \
+"\040\164\157\040\125\156\151\170\040\146\157\162\155\141\164\056" \
+"\012\127\150\145\156\040\156\157\040\146\151\154\145\040\151\163" \
+"\040\147\151\166\145\156\054\040\165\163\145\040\163\164\144\151" \
+"\156\057\163\164\144\157\165\164\056\012\012\011\055\165\011\144" \
+"\157\163\062\165\156\151\170\012\011\055\144\011\165\156\151\170" \
+"\062\144\157\163\000\133\055\141\110\114\144\143\154\163\170\150" \
+"\155\153\135\040\133\106\111\114\105\135\056\056\056\012\012\123" \
+"\165\155\155\141\162\151\172\145\040\144\151\163\153\040\163\160" \
+"\141\143\145\040\165\163\145\144\040\146\157\162\040\145\141\143" \
+"\150\040\106\111\114\105\040\141\156\144\057\157\162\040\144\151" \
+"\162\145\143\164\157\162\171\012\012\011\055\141\011\123\150\157" \
+"\167\040\146\151\154\145\040\163\151\172\145\163\040\164\157\157" \
+"\012\011\055\114\011\106\157\154\154\157\167\040\141\154\154\040" \
+"\163\171\155\154\151\156\153\163\012\011\055\110\011\106\157\154" \
+"\154\157\167\040\163\171\155\154\151\156\153\163\040\157\156\040" \
+"\143\157\155\155\141\156\144\040\154\151\156\145\012\011\055\144" \
+"\040\116\011\114\151\155\151\164\040\157\165\164\160\165\164\040" \
+"\164\157\040\144\151\162\145\143\164\157\162\151\145\163\040\050" \
+"\141\156\144\040\146\151\154\145\163\040\167\151\164\150\040\055" \
+"\141\051\040\157\146\040\144\145\160\164\150\040\074\040\116\012" \
+"\011\055\143\011\123\150\157\167\040\147\162\141\156\144\040\164" \
+"\157\164\141\154\012\011\055\154\011\103\157\165\156\164\040\163" \
+"\151\172\145\163\040\155\141\156\171\040\164\151\155\145\163\040" \
+"\151\146\040\150\141\162\144\040\154\151\156\153\145\144\012\011" \
+"\055\163\011\104\151\163\160\154\141\171\040\157\156\154\171\040" \
+"\141\040\164\157\164\141\154\040\146\157\162\040\145\141\143\150" \
+"\040\141\162\147\165\155\145\156\164\012\011\055\170\011\123\153" \
+"\151\160\040\144\151\162\145\143\164\157\162\151\145\163\040\157" \
+"\156\040\144\151\146\146\145\162\145\156\164\040\146\151\154\145" \
+"\163\171\163\164\145\155\163\012\011\055\150\011\123\151\172\145" \
+"\163\040\151\156\040\150\165\155\141\156\040\162\145\141\144\141" \
+"\142\154\145\040\146\157\162\155\141\164\040\050\145\056\147\056" \
+"\054\040\061\113\040\062\064\063\115\040\062\107\051\012\011\055" \
+"\155\011\123\151\172\145\163\040\151\156\040\155\145\147\141\142" \
+"\171\164\145\163\012\011\055\153\011\123\151\172\145\163\040\151" \
+"\156\040\153\151\154\157\142\171\164\145\163\040\050\144\145\146" \
+"\141\165\154\164\051\000\133\055\156\145\105\135\040\133\101\122" \
+"\107\135\056\056\056\012\012\120\162\151\156\164\040\164\150\145" \
+"\040\163\160\145\143\151\146\151\145\144\040\101\122\107\163\040" \
+"\164\157\040\163\164\144\157\165\164\012\012\011\055\156\011\123" \
+"\165\160\160\162\145\163\163\040\164\162\141\151\154\151\156\147" \
+"\040\156\145\167\154\151\156\145\012\011\055\145\011\111\156\164" \
+"\145\162\160\162\145\164\040\142\141\143\153\163\154\141\163\150" \
+"\040\145\163\143\141\160\145\163\040\050\151\056\145\056\054\040" \
+"\134\164\075\164\141\142\051\012\011\055\105\011\104\157\156\047" \
+"\164\040\151\156\164\145\162\160\162\145\164\040\142\141\143\153" \
+"\163\154\141\163\150\040\145\163\143\141\160\145\163\040\050\144" \
+"\145\146\141\165\154\164\051\000\010\000\133\055\151\165\135\040" \
+"\133\055\135\040\133\156\141\155\145\075\166\141\154\165\145\135" \
+"\056\056\056\040\133\120\122\117\107\040\101\122\107\123\135\012" \
+"\012\120\162\151\156\164\040\164\150\145\040\143\165\162\162\145" \
+"\156\164\040\145\156\166\151\162\157\156\155\145\156\164\040\157" \
+"\162\040\162\165\156\040\120\122\117\107\040\141\146\164\145\162" \
+"\040\163\145\164\164\151\156\147\040\165\160\012\164\150\145\040" \
+"\163\160\145\143\151\146\151\145\144\040\145\156\166\151\162\157" \
+"\156\155\145\156\164\012\012\011\055\054\040\055\151\011\123\164" \
+"\141\162\164\040\167\151\164\150\040\141\156\040\145\155\160\164" \
+"\171\040\145\156\166\151\162\157\156\155\145\156\164\012\011\055" \
+"\165\011\122\145\155\157\166\145\040\166\141\162\151\141\142\154" \
+"\145\040\146\162\157\155\040\164\150\145\040\145\156\166\151\162" \
+"\157\156\155\145\156\164\000\133\055\151\135\040\133\055\164\040" \
+"\116\135\040\133\106\111\114\105\135\056\056\056\012\012\103\157" \
+"\156\166\145\162\164\040\164\141\142\163\040\164\157\040\163\160" \
+"\141\143\145\163\054\040\167\162\151\164\151\156\147\040\164\157" \
+"\040\163\164\144\157\165\164\012\012\011\055\151\011\104\157\156" \
+"\047\164\040\143\157\156\166\145\162\164\040\164\141\142\163\040" \
+"\141\146\164\145\162\040\156\157\156\040\142\154\141\156\153\163" \
+"\012\011\055\164\011\124\141\142\163\164\157\160\163\040\145\166" \
+"\145\162\171\040\116\040\143\150\141\162\163\000\105\130\120\122" \
+"\105\123\123\111\117\116\012\012\120\162\151\156\164\040\164\150" \
+"\145\040\166\141\154\165\145\040\157\146\040\105\130\120\122\105" \
+"\123\123\111\117\116\040\164\157\040\163\164\144\157\165\164\012" \
+"\012\105\130\120\122\105\123\123\111\117\116\040\155\141\171\040" \
+"\142\145\072\012\011\101\122\107\061\040\174\040\101\122\107\062" \
+"\011\101\122\107\061\040\151\146\040\151\164\040\151\163\040\156" \
+"\145\151\164\150\145\162\040\156\165\154\154\040\156\157\162\040" \
+"\060\054\040\157\164\150\145\162\167\151\163\145\040\101\122\107" \
+"\062\012\011\101\122\107\061\040\046\040\101\122\107\062\011\101" \
+"\122\107\061\040\151\146\040\156\145\151\164\150\145\162\040\141" \
+"\162\147\165\155\145\156\164\040\151\163\040\156\165\154\154\040" \
+"\157\162\040\060\054\040\157\164\150\145\162\167\151\163\145\040" \
+"\060\012\011\101\122\107\061\040\074\040\101\122\107\062\011\061" \
+"\040\151\146\040\101\122\107\061\040\151\163\040\154\145\163\163" \
+"\040\164\150\141\156\040\101\122\107\062\054\040\145\154\163\145" \
+"\040\060\056\040\123\151\155\151\154\141\162\154\171\072\012\011" \
+"\101\122\107\061\040\074\075\040\101\122\107\062\012\011\101\122" \
+"\107\061\040\075\040\101\122\107\062\012\011\101\122\107\061\040" \
+"\041\075\040\101\122\107\062\012\011\101\122\107\061\040\076\075" \
+"\040\101\122\107\062\012\011\101\122\107\061\040\076\040\101\122" \
+"\107\062\012\011\101\122\107\061\040\053\040\101\122\107\062\011" \
+"\123\165\155\040\157\146\040\101\122\107\061\040\141\156\144\040" \
+"\101\122\107\062\056\040\123\151\155\151\154\141\162\154\171\072" \
+"\012\011\101\122\107\061\040\055\040\101\122\107\062\012\011\101" \
+"\122\107\061\040\052\040\101\122\107\062\012\011\101\122\107\061" \
+"\040\057\040\101\122\107\062\012\011\101\122\107\061\040\045\040" \
+"\101\122\107\062\012\011\123\124\122\111\116\107\040\072\040\122" \
+"\105\107\105\130\120\011\011\101\156\143\150\157\162\145\144\040" \
+"\160\141\164\164\145\162\156\040\155\141\164\143\150\040\157\146" \
+"\040\122\105\107\105\130\120\040\151\156\040\123\124\122\111\116" \
+"\107\012\011\155\141\164\143\150\040\123\124\122\111\116\107\040" \
+"\122\105\107\105\130\120\011\123\141\155\145\040\141\163\040\123" \
+"\124\122\111\116\107\040\072\040\122\105\107\105\130\120\012\011" \
+"\163\165\142\163\164\162\040\123\124\122\111\116\107\040\120\117" \
+"\123\040\114\105\116\107\124\110\040\123\165\142\163\164\162\151" \
+"\156\147\040\157\146\040\123\124\122\111\116\107\054\040\120\117" \
+"\123\040\143\157\165\156\164\145\144\040\146\162\157\155\040\061" \
+"\012\011\151\156\144\145\170\040\123\124\122\111\116\107\040\103" \
+"\110\101\122\123\011\111\156\144\145\170\040\151\156\040\123\124" \
+"\122\111\116\107\040\167\150\145\162\145\040\141\156\171\040\103" \
+"\110\101\122\123\040\151\163\040\146\157\165\156\144\054\040\157" \
+"\162\040\060\012\011\154\145\156\147\164\150\040\123\124\122\111" \
+"\116\107\011\011\114\145\156\147\164\150\040\157\146\040\123\124" \
+"\122\111\116\107\012\011\161\165\157\164\145\040\124\117\113\105" \
+"\116\011\011\111\156\164\145\162\160\162\145\164\040\124\117\113" \
+"\105\116\040\141\163\040\141\040\163\164\162\151\156\147\054\040" \
+"\145\166\145\156\040\151\146\012\011\011\011\011\151\164\040\151" \
+"\163\040\141\040\153\145\171\167\157\162\144\040\154\151\153\145" \
+"\040\047\155\141\164\143\150\047\040\157\162\040\141\156\012\011" \
+"\011\011\011\157\160\145\162\141\164\157\162\040\154\151\153\145" \
+"\040\047\057\047\012\011\050\105\130\120\122\105\123\123\111\117" \
+"\116\051\011\011\126\141\154\165\145\040\157\146\040\105\130\120" \
+"\122\105\123\123\111\117\116\012\012\102\145\167\141\162\145\040" \
+"\164\150\141\164\040\155\141\156\171\040\157\160\145\162\141\164" \
+"\157\162\163\040\156\145\145\144\040\164\157\040\142\145\040\145" \
+"\163\143\141\160\145\144\040\157\162\040\161\165\157\164\145\144" \
+"\040\146\157\162\040\163\150\145\154\154\163\056\012\103\157\155" \
+"\160\141\162\151\163\157\156\163\040\141\162\145\040\141\162\151" \
+"\164\150\155\145\164\151\143\040\151\146\040\142\157\164\150\040" \
+"\101\122\107\163\040\141\162\145\040\156\165\155\142\145\162\163" \
+"\054\040\145\154\163\145\012\154\145\170\151\143\157\147\162\141" \
+"\160\150\151\143\141\154\056\040\120\141\164\164\145\162\156\040" \
+"\155\141\164\143\150\145\163\040\162\145\164\165\162\156\040\164" \
+"\150\145\040\163\164\162\151\156\147\040\155\141\164\143\150\145" \
+"\144\040\142\145\164\167\145\145\156\012\134\050\040\141\156\144" \
+"\040\134\051\040\157\162\040\156\165\154\154\073\040\151\146\040" \
+"\134\050\040\141\156\144\040\134\051\040\141\162\145\040\156\157" \
+"\164\040\165\163\145\144\054\040\164\150\145\171\040\162\145\164" \
+"\165\162\156\040\164\150\145\040\156\165\155\142\145\162\012\157" \
+"\146\040\143\150\141\162\141\143\164\145\162\163\040\155\141\164" \
+"\143\150\145\144\040\157\162\040\060\056\000\012\012\122\145\164" \
+"\165\162\156\040\141\156\040\145\170\151\164\040\143\157\144\145" \
+"\040\157\146\040\106\101\114\123\105\040\050\061\051\000\133\055" \
+"\165\154\135\040\133\055\103\040\103\131\114\111\116\104\105\122" \
+"\123\135\040\133\055\110\040\110\105\101\104\123\135\040\133\055" \
+"\123\040\123\105\103\124\117\122\123\135\040\133\055\142\040\123" \
+"\123\132\135\040\104\111\123\113\012\012\103\150\141\156\147\145" \
+"\040\160\141\162\164\151\164\151\157\156\040\164\141\142\154\145" \
+"\012\012\011\055\165\011\011\123\164\141\162\164\040\141\156\144" \
+"\040\105\156\144\040\141\162\145\040\151\156\040\163\145\143\164" \
+"\157\162\163\040\050\151\156\163\164\145\141\144\040\157\146\040" \
+"\143\171\154\151\156\144\145\162\163\051\012\011\055\154\011\011" \
+"\123\150\157\167\040\160\141\162\164\151\164\151\157\156\040\164" \
+"\141\142\154\145\040\146\157\162\040\145\141\143\150\040\104\111" \
+"\123\113\054\040\164\150\145\156\040\145\170\151\164\012\011\055" \
+"\142\040\062\060\064\070\011\011\050\146\157\162\040\143\145\162" \
+"\164\141\151\156\040\115\117\040\144\151\163\153\163\051\040\165" \
+"\163\145\040\062\060\064\070\055\142\171\164\145\040\163\145\143" \
+"\164\157\162\163\012\011\055\103\040\103\131\114\111\116\104\105" \
+"\122\123\011\123\145\164\040\156\165\155\142\145\162\040\157\146" \
+"\040\143\171\154\151\156\144\145\162\163\057\150\145\141\144\163" \
+"\057\163\145\143\164\157\162\163\012\011\055\110\040\110\105\101" \
+"\104\123\012\011\055\123\040\123\105\103\124\117\122\123\000\010" \
+"\000\133\055\110\114\135\040\133\120\101\124\110\135\056\056\056" \
+"\040\133\117\120\124\111\117\116\123\135\040\133\101\103\124\111" \
+"\117\116\123\135\012\012\123\145\141\162\143\150\040\146\157\162" \
+"\040\146\151\154\145\163\040\141\156\144\040\160\145\162\146\157" \
+"\162\155\040\141\143\164\151\157\156\163\040\157\156\040\164\150" \
+"\145\155\056\012\106\151\162\163\164\040\146\141\151\154\145\144" \
+"\040\141\143\164\151\157\156\040\163\164\157\160\163\040\160\162" \
+"\157\143\145\163\163\151\156\147\040\157\146\040\143\165\162\162" \
+"\145\156\164\040\146\151\154\145\056\012\104\145\146\141\165\154" \
+"\164\163\072\040\120\101\124\110\040\151\163\040\143\165\162\162" \
+"\145\156\164\040\144\151\162\145\143\164\157\162\171\054\040\141" \
+"\143\164\151\157\156\040\151\163\040\047\055\160\162\151\156\164" \
+"\047\012\012\011\055\114\054\055\146\157\154\154\157\167\011\106" \
+"\157\154\154\157\167\040\163\171\155\154\151\156\153\163\012\011" \
+"\055\110\011\011\056\056\056\157\156\040\143\157\155\155\141\156" \
+"\144\040\154\151\156\145\040\157\156\154\171\012\011\055\170\144" \
+"\145\166\011\011\104\157\156\047\164\040\144\145\163\143\145\156" \
+"\144\040\144\151\162\145\143\164\157\162\151\145\163\040\157\156" \
+"\040\157\164\150\145\162\040\146\151\154\145\163\171\163\164\145" \
+"\155\163\012\011\055\155\141\170\144\145\160\164\150\040\116\011" \
+"\104\145\163\143\145\156\144\040\141\164\040\155\157\163\164\040" \
+"\116\040\154\145\166\145\154\163\056\040\055\155\141\170\144\145" \
+"\160\164\150\040\060\040\141\160\160\154\151\145\163\012\011\011" \
+"\011\141\143\164\151\157\156\163\040\164\157\040\143\157\155\155" \
+"\141\156\144\040\154\151\156\145\040\141\162\147\165\155\145\156" \
+"\164\163\040\157\156\154\171\012\011\055\155\151\156\144\145\160" \
+"\164\150\040\116\011\104\157\156\047\164\040\141\143\164\040\157" \
+"\156\040\146\151\162\163\164\040\116\040\154\145\166\145\154\163" \
+"\012\011\055\144\145\160\164\150\011\011\101\143\164\040\157\156" \
+"\040\144\151\162\145\143\164\157\162\171\040\052\141\146\164\145" \
+"\162\052\040\164\162\141\166\145\162\163\151\156\147\040\151\164" \
+"\012\012\101\143\164\151\157\156\163\072\012\011\050\040\101\103" \
+"\124\111\117\116\123\040\051\011\107\162\157\165\160\040\141\143" \
+"\164\151\157\156\163\040\146\157\162\040\055\157\040\057\040\055" \
+"\141\012\011\041\040\101\103\124\011\011\111\156\166\145\162\164" \
+"\040\101\103\124\047\163\040\163\165\143\143\145\163\163\057\146" \
+"\141\151\154\165\162\145\012\011\101\103\124\061\040\133\055\141" \
+"\135\040\101\103\124\062\011\111\146\040\101\103\124\061\040\146" \
+"\141\151\154\163\054\040\163\164\157\160\054\040\145\154\163\145" \
+"\040\144\157\040\101\103\124\062\012\011\101\103\124\061\040\055" \
+"\157\040\101\103\124\062\011\111\146\040\101\103\124\061\040\163" \
+"\165\143\143\145\145\144\163\054\040\163\164\157\160\054\040\145" \
+"\154\163\145\040\144\157\040\101\103\124\062\012\011\011\011\116" \
+"\157\164\145\072\040\055\141\040\150\141\163\040\150\151\147\150" \
+"\145\162\040\160\162\151\157\162\151\164\171\040\164\150\141\156" \
+"\040\055\157\012\011\055\156\141\155\145\040\120\101\124\124\105" \
+"\122\116\011\115\141\164\143\150\040\146\151\154\145\040\156\141" \
+"\155\145\040\050\167\057\157\040\144\151\162\145\143\164\157\162" \
+"\171\040\156\141\155\145\051\040\164\157\040\120\101\124\124\105" \
+"\122\116\012\011\055\151\156\141\155\145\040\120\101\124\124\105" \
+"\122\116\011\103\141\163\145\040\151\156\163\145\156\163\151\164" \
+"\151\166\145\040\055\156\141\155\145\012\011\055\160\141\164\150" \
+"\040\120\101\124\124\105\122\116\011\115\141\164\143\150\040\160" \
+"\141\164\150\040\164\157\040\120\101\124\124\105\122\116\012\011" \
+"\055\151\160\141\164\150\040\120\101\124\124\105\122\116\011\103" \
+"\141\163\145\040\151\156\163\145\156\163\151\164\151\166\145\040" \
+"\055\160\141\164\150\012\011\055\162\145\147\145\170\040\120\101" \
+"\124\124\105\122\116\011\115\141\164\143\150\040\160\141\164\150" \
+"\040\164\157\040\162\145\147\145\170\040\120\101\124\124\105\122" \
+"\116\012\011\055\164\171\160\145\040\130\011\011\106\151\154\145" \
+"\040\164\171\160\145\040\151\163\040\130\040\050\157\156\145\040" \
+"\157\146\072\040\146\054\144\054\154\054\142\054\143\054\056\056" \
+"\056\051\012\011\055\160\145\162\155\040\115\101\123\113\011\101" \
+"\164\040\154\145\141\163\164\040\157\156\145\040\155\141\163\153" \
+"\040\142\151\164\040\050\053\115\101\123\113\051\054\040\141\154" \
+"\154\040\142\151\164\163\040\050\055\115\101\123\113\051\054\012" \
+"\011\011\011\157\162\040\145\170\141\143\164\154\171\040\115\101" \
+"\123\113\040\142\151\164\163\040\141\162\145\040\163\145\164\040" \
+"\151\156\040\146\151\154\145\047\163\040\155\157\144\145\012\011" \
+"\055\155\164\151\155\145\040\104\101\131\123\011\155\164\151\155" \
+"\145\040\151\163\040\147\162\145\141\164\145\162\040\164\150\141" \
+"\156\040\050\053\116\051\054\040\154\145\163\163\040\164\150\141" \
+"\156\040\050\055\116\051\054\012\011\011\011\157\162\040\145\170" \
+"\141\143\164\154\171\040\116\040\144\141\171\163\040\151\156\040" \
+"\164\150\145\040\160\141\163\164\012\011\055\155\155\151\156\040" \
+"\115\111\116\123\011\155\164\151\155\145\040\151\163\040\147\162" \
+"\145\141\164\145\162\040\164\150\141\156\040\050\053\116\051\054" \
+"\040\154\145\163\163\040\164\150\141\156\040\050\055\116\051\054" \
+"\012\011\011\011\157\162\040\145\170\141\143\164\154\171\040\116" \
+"\040\155\151\156\165\164\145\163\040\151\156\040\164\150\145\040" \
+"\160\141\163\164\012\011\055\156\145\167\145\162\040\106\111\114" \
+"\105\011\155\164\151\155\145\040\151\163\040\155\157\162\145\040" \
+"\162\145\143\145\156\164\040\164\150\141\156\040\106\111\114\105" \
+"\047\163\012\011\055\165\163\145\162\040\116\101\115\105\057\111" \
+"\104\011\106\151\154\145\040\151\163\040\157\167\156\145\144\040" \
+"\142\171\040\147\151\166\145\156\040\165\163\145\162\012\011\055" \
+"\147\162\157\165\160\040\116\101\115\105\057\111\104\011\106\151" \
+"\154\145\040\151\163\040\157\167\156\145\144\040\142\171\040\147" \
+"\151\166\145\156\040\147\162\157\165\160\012\011\055\163\151\172" \
+"\145\040\116\133\142\143\153\135\011\106\151\154\145\040\163\151" \
+"\172\145\040\151\163\040\116\040\050\143\072\142\171\164\145\163" \
+"\054\153\072\153\142\171\164\145\163\054\142\072\065\061\062\040" \
+"\142\171\164\145\163\050\144\145\146\056\051\051\012\011\011\011" \
+"\053\057\055\116\072\040\146\151\154\145\040\163\151\172\145\040" \
+"\151\163\040\142\151\147\147\145\162\057\163\155\141\154\154\145" \
+"\162\040\164\150\141\156\040\116\012\011\055\160\162\165\156\145" \
+"\011\011\111\146\040\143\165\162\162\145\156\164\040\146\151\154" \
+"\145\040\151\163\040\144\151\162\145\143\164\157\162\171\054\040" \
+"\144\157\156\047\164\040\144\145\163\143\145\156\144\040\151\156" \
+"\164\157\040\151\164\012\111\146\040\156\157\156\145\040\157\146" \
+"\040\164\150\145\040\146\157\154\154\157\167\151\156\147\040\141" \
+"\143\164\151\157\156\163\040\151\163\040\163\160\145\143\151\146" \
+"\151\145\144\054\040\055\160\162\151\156\164\040\151\163\040\141" \
+"\163\163\165\155\145\144\012\011\055\160\162\151\156\164\011\011" \
+"\120\162\151\156\164\040\146\151\154\145\040\156\141\155\145\012" \
+"\011\055\160\162\151\156\164\060\011\011\120\162\151\156\164\040" \
+"\146\151\154\145\040\156\141\155\145\054\040\116\125\114\040\164" \
+"\145\162\155\151\156\141\164\145\144\012\011\055\145\170\145\143" \
+"\040\103\115\104\040\101\122\107\040\073\011\122\165\156\040\103" \
+"\115\104\040\167\151\164\150\040\141\154\154\040\151\156\163\164" \
+"\141\156\143\145\163\040\157\146\040\173\175\040\162\145\160\154" \
+"\141\143\145\144\040\142\171\012\011\011\011\146\151\154\145\040" \
+"\156\141\155\145\056\040\106\141\151\154\163\040\151\146\040\103" \
+"\115\104\040\145\170\151\164\163\040\167\151\164\150\040\156\157" \
+"\156\172\145\162\157\000\133\055\142\163\135\040\133\055\167\040" \
+"\127\111\104\124\110\135\040\133\106\111\114\105\135\056\056\056" \
+"\012\012\127\162\141\160\040\151\156\160\165\164\040\154\151\156" \
+"\145\163\040\151\156\040\145\141\143\150\040\106\111\114\105\040" \
+"\050\157\162\040\163\164\144\151\156\051\054\040\167\162\151\164" \
+"\151\156\147\040\164\157\040\163\164\144\157\165\164\012\012\011" \
+"\055\142\011\103\157\165\156\164\040\142\171\164\145\163\040\162" \
+"\141\164\150\145\162\040\164\150\141\156\040\143\157\154\165\155" \
+"\156\163\012\011\055\163\011\102\162\145\141\153\040\141\164\040" \
+"\163\160\141\143\145\163\012\011\055\167\011\125\163\145\040\127" \
+"\111\104\124\110\040\143\157\154\165\155\156\163\040\151\156\163" \
+"\164\145\141\144\040\157\146\040\070\060\000\012\012\104\151\163" \
+"\160\154\141\171\040\164\150\145\040\141\155\157\165\156\164\040" \
+"\157\146\040\146\162\145\145\040\141\156\144\040\165\163\145\144" \
+"\040\163\171\163\164\145\155\040\155\145\155\157\162\171\000\104" \
+"\105\126\111\103\105\012\012\106\162\145\145\040\141\154\154\040" \
+"\155\145\155\157\162\171\040\165\163\145\144\040\142\171\040\164" \
+"\150\145\040\163\160\145\143\151\146\151\145\144\040\162\141\155" \
+"\144\151\163\153\000\133\117\120\124\111\117\116\123\135\040\115" \
+"\117\125\116\124\120\117\111\116\124\012\012\011\055\157\054\055" \
+"\055\157\146\146\163\145\164\075\117\106\106\123\105\124\011\117" \
+"\146\146\163\145\164\040\151\156\040\142\171\164\145\163\040\164" \
+"\157\040\144\151\163\143\141\162\144\040\146\162\157\155\012\011" \
+"\055\154\054\055\055\154\145\156\147\164\150\075\114\105\116\011" \
+"\011\102\171\164\145\163\040\164\157\040\144\151\163\143\141\162" \
+"\144\012\011\055\155\054\055\055\155\151\156\151\155\165\155\075" \
+"\115\111\116\011\115\151\156\151\155\165\155\040\145\170\164\145" \
+"\156\164\040\154\145\156\147\164\150\012\011\055\166\054\055\055" \
+"\166\145\162\142\157\163\145\011\011\120\162\151\156\164\040\156" \
+"\165\155\142\145\162\040\157\146\040\144\151\163\143\141\162\144" \
+"\145\144\040\142\171\164\145\163\000\133\117\120\124\111\117\116" \
+"\123\135\040\106\111\114\105\040\157\162\040\120\117\122\124\057" \
+"\120\122\117\124\117\012\012\106\151\156\144\040\160\162\157\143" \
+"\145\163\163\145\163\040\167\150\151\143\150\040\165\163\145\040" \
+"\106\111\114\105\163\040\157\162\040\120\117\122\124\163\012\012" \
+"\011\055\155\011\106\151\156\144\040\160\162\157\143\145\163\163" \
+"\145\163\040\167\150\151\143\150\040\165\163\145\040\163\141\155" \
+"\145\040\146\163\040\141\163\040\106\111\114\105\163\012\011\055" \
+"\064\054\055\066\011\123\145\141\162\143\150\040\157\156\154\171" \
+"\040\111\120\166\064\057\111\120\166\066\040\163\160\141\143\145" \
+"\012\011\055\163\011\104\157\156\047\164\040\144\151\163\160\154" \
+"\141\171\040\120\111\104\163\012\011\055\153\011\113\151\154\154" \
+"\040\146\157\165\156\144\040\160\162\157\143\145\163\163\145\163" \
+"\012\011\055\123\111\107\116\101\114\011\123\151\147\156\141\154" \
+"\040\164\157\040\163\145\156\144\040\050\144\145\146\141\165\154" \
+"\164\072\040\113\111\114\114\051\000\133\117\120\124\111\117\116" \
+"\123\135\040\133\055\055\135\040\117\120\124\123\124\122\111\116" \
+"\107\040\120\101\122\101\115\123\012\012\011\055\156\054\055\055" \
+"\156\141\155\145\075\120\122\117\107\116\101\115\105\011\011\124" \
+"\150\145\040\156\141\155\145\040\165\156\144\145\162\040\167\150" \
+"\151\143\150\040\145\162\162\157\162\163\040\141\162\145\040\162" \
+"\145\160\157\162\164\145\144\012\011\055\157\054\055\055\157\160" \
+"\164\151\157\156\163\075\117\120\124\123\124\122\111\116\107\011" \
+"\011\123\150\157\162\164\040\157\160\164\151\157\156\163\040\164" \
+"\157\040\162\145\143\157\147\156\151\172\145\012\011\055\161\054" \
+"\055\055\161\165\151\145\164\011\011\011\116\157\040\145\162\162" \
+"\157\162\040\155\145\163\163\141\147\145\163\040\157\156\040\165" \
+"\156\162\145\143\157\147\156\151\172\145\144\040\157\160\164\151" \
+"\157\156\163\012\011\055\121\054\055\055\161\165\151\145\164\055" \
+"\157\165\164\160\165\164\011\011\116\157\040\156\157\162\155\141" \
+"\154\040\157\165\164\160\165\164\012\011\055\163\054\055\055\163" \
+"\150\145\154\154\075\123\110\105\114\114\011\011\123\145\164\040" \
+"\163\150\145\154\154\040\161\165\157\164\151\156\147\040\143\157" \
+"\156\166\145\156\164\151\157\156\163\012\011\055\124\054\055\055" \
+"\164\145\163\164\011\011\011\126\145\162\163\151\157\156\040\164" \
+"\145\163\164\040\050\145\170\151\164\163\040\167\151\164\150\040" \
+"\064\051\012\011\055\165\054\055\055\165\156\161\165\157\164\145" \
+"\144\011\011\011\104\157\156\047\164\040\161\165\157\164\145\040" \
+"\157\165\164\160\165\164\000\133\055\110\150\156\154\114\157\161" \
+"\166\163\162\151\167\106\105\135\040\133\055\155\040\116\135\040" \
+"\133\055\101\057\102\057\103\040\116\135\040\120\101\124\124\105" \
+"\122\116\057\055\145\040\120\101\124\124\105\122\116\056\056\056" \
+"\057\055\146\040\106\111\114\105\040\133\106\111\114\105\135\056" \
+"\056\056\012\012\123\145\141\162\143\150\040\146\157\162\040\120" \
+"\101\124\124\105\122\116\040\151\156\040\106\111\114\105\163\040" \
+"\050\157\162\040\163\164\144\151\156\051\012\012\011\055\110\011" \
+"\101\144\144\040\047\146\151\154\145\156\141\155\145\072\047\040" \
+"\160\162\145\146\151\170\012\011\055\150\011\104\157\040\156\157" \
+"\164\040\141\144\144\040\047\146\151\154\145\156\141\155\145\072" \
+"\047\040\160\162\145\146\151\170\012\011\055\156\011\101\144\144" \
+"\040\047\154\151\156\145\137\156\157\072\047\040\160\162\145\146" \
+"\151\170\012\011\055\154\011\123\150\157\167\040\157\156\154\171" \
+"\040\156\141\155\145\163\040\157\146\040\146\151\154\145\163\040" \
+"\164\150\141\164\040\155\141\164\143\150\012\011\055\114\011\123" \
+"\150\157\167\040\157\156\154\171\040\156\141\155\145\163\040\157" \
+"\146\040\146\151\154\145\163\040\164\150\141\164\040\144\157\156" \
+"\047\164\040\155\141\164\143\150\012\011\055\143\011\123\150\157" \
+"\167\040\157\156\154\171\040\143\157\165\156\164\040\157\146\040" \
+"\155\141\164\143\150\151\156\147\040\154\151\156\145\163\012\011" \
+"\055\157\011\123\150\157\167\040\157\156\154\171\040\164\150\145" \
+"\040\155\141\164\143\150\151\156\147\040\160\141\162\164\040\157" \
+"\146\040\154\151\156\145\012\011\055\161\011\121\165\151\145\164" \
+"\056\040\122\145\164\165\162\156\040\060\040\151\146\040\120\101" \
+"\124\124\105\122\116\040\151\163\040\146\157\165\156\144\054\040" \
+"\061\040\157\164\150\145\162\167\151\163\145\012\011\055\166\011" \
+"\123\145\154\145\143\164\040\156\157\156\055\155\141\164\143\150" \
+"\151\156\147\040\154\151\156\145\163\012\011\055\163\011\123\165" \
+"\160\160\162\145\163\163\040\157\160\145\156\040\141\156\144\040" \
+"\162\145\141\144\040\145\162\162\157\162\163\012\011\055\162\011" \
+"\122\145\143\165\162\163\145\012\011\055\151\011\111\147\156\157" \
+"\162\145\040\143\141\163\145\012\011\055\167\011\115\141\164\143" \
+"\150\040\167\150\157\154\145\040\167\157\162\144\163\040\157\156" \
+"\154\171\012\011\055\170\011\115\141\164\143\150\040\167\150\157" \
+"\154\145\040\154\151\156\145\163\040\157\156\154\171\012\011\055" \
+"\106\011\120\101\124\124\105\122\116\040\151\163\040\141\040\154" \
+"\151\164\145\162\141\154\040\050\156\157\164\040\162\145\147\145" \
+"\170\160\051\012\011\055\105\011\120\101\124\124\105\122\116\040" \
+"\151\163\040\141\156\040\145\170\164\145\156\144\145\144\040\162" \
+"\145\147\145\170\160\012\011\055\155\040\116\011\115\141\164\143" \
+"\150\040\165\160\040\164\157\040\116\040\164\151\155\145\163\040" \
+"\160\145\162\040\146\151\154\145\012\011\055\101\040\116\011\120" \
+"\162\151\156\164\040\116\040\154\151\156\145\163\040\157\146\040" \
+"\164\162\141\151\154\151\156\147\040\143\157\156\164\145\170\164" \
+"\012\011\055\102\040\116\011\120\162\151\156\164\040\116\040\154" \
+"\151\156\145\163\040\157\146\040\154\145\141\144\151\156\147\040" \
+"\143\157\156\164\145\170\164\012\011\055\103\040\116\011\123\141" \
+"\155\145\040\141\163\040\047\055\101\040\116\040\055\102\040\116" \
+"\047\012\011\055\145\040\120\124\122\116\011\120\141\164\164\145" \
+"\162\156\040\164\157\040\155\141\164\143\150\012\011\055\146\040" \
+"\106\111\114\105\011\122\145\141\144\040\160\141\164\164\145\162" \
+"\156\040\146\162\157\155\040\146\151\154\145\000\133\125\123\105" \
+"\122\135\012\012\120\162\151\156\164\040\164\150\145\040\147\162" \
+"\157\165\160\040\155\145\155\142\145\162\163\150\151\160\163\040" \
+"\157\146\040\125\123\105\122\040\157\162\040\146\157\162\040\164" \
+"\150\145\040\143\165\162\162\145\156\164\040\160\162\157\143\145" \
+"\163\163\000\133\055\143\146\164\135\040\133\106\111\114\105\135" \
+"\056\056\056\012\012\104\145\143\157\155\160\162\145\163\163\040" \
+"\106\111\114\105\163\040\050\157\162\040\163\164\144\151\156\051" \
+"\012\012\011\055\143\011\127\162\151\164\145\040\164\157\040\163" \
+"\164\144\157\165\164\012\011\055\146\011\106\157\162\143\145\012" \
+"\011\055\164\011\124\145\163\164\040\146\151\154\145\040\151\156" \
+"\164\145\147\162\151\164\171\000\133\055\143\146\144\135\040\133" \
+"\106\111\114\105\135\056\056\056\012\012\103\157\155\160\162\145" \
+"\163\163\040\106\111\114\105\163\040\050\157\162\040\163\164\144" \
+"\151\156\051\012\012\011\055\144\011\104\145\143\157\155\160\162" \
+"\145\163\163\012\011\055\143\011\127\162\151\164\145\040\164\157" \
+"\040\163\164\144\157\165\164\012\011\055\146\011\106\157\162\143" \
+"\145\000\133\117\120\124\111\117\116\123\135\040\133\106\111\114" \
+"\105\135\056\056\056\012\012\120\162\151\156\164\040\146\151\162" \
+"\163\164\040\061\060\040\154\151\156\145\163\040\157\146\040\145" \
+"\141\143\150\040\106\111\114\105\040\050\157\162\040\163\164\144" \
+"\151\156\051\040\164\157\040\163\164\144\157\165\164\056\012\127" \
+"\151\164\150\040\155\157\162\145\040\164\150\141\156\040\157\156" \
+"\145\040\106\111\114\105\054\040\160\162\145\143\145\144\145\040" \
+"\145\141\143\150\040\167\151\164\150\040\141\040\146\151\154\145" \
+"\156\141\155\145\040\150\145\141\144\145\162\056\012\012\011\055" \
+"\156\040\116\133\153\142\155\135\011\120\162\151\156\164\040\146" \
+"\151\162\163\164\040\116\040\154\151\156\145\163\012\012\116\040" \
+"\155\141\171\040\142\145\040\163\165\146\146\151\170\145\144\040" \
+"\142\171\040\153\040\050\170\061\060\062\064\051\054\040\142\040" \
+"\050\170\065\061\062\051\054\040\157\162\040\155\040\050\170\061" \
+"\060\062\064\136\062\051\056\000\133\055\142\143\103\144\145\146" \
+"\156\157\163\166\170\135\040\133\106\111\114\105\135\056\056\056" \
+"\012\012\104\151\163\160\154\141\171\040\106\111\114\105\163\040" \
+"\050\157\162\040\163\164\144\151\156\051\040\151\156\040\141\040" \
+"\165\163\145\162\040\163\160\145\143\151\146\151\145\144\040\146" \
+"\157\162\155\141\164\012\012\011\055\142\011\011\117\156\145\055" \
+"\142\171\164\145\040\157\143\164\141\154\040\144\151\163\160\154" \
+"\141\171\012\011\055\143\011\011\117\156\145\055\142\171\164\145" \
+"\040\143\150\141\162\141\143\164\145\162\040\144\151\163\160\154" \
+"\141\171\012\011\055\103\011\011\103\141\156\157\156\151\143\141" \
+"\154\040\150\145\170\053\101\123\103\111\111\054\040\061\066\040" \
+"\142\171\164\145\163\040\160\145\162\040\154\151\156\145\012\011" \
+"\055\144\011\011\124\167\157\055\142\171\164\145\040\144\145\143" \
+"\151\155\141\154\040\144\151\163\160\154\141\171\012\011\055\145" \
+"\040\106\117\122\115\101\124\137\123\124\122\111\116\107\012\011" \
+"\055\146\040\106\117\122\115\101\124\137\106\111\114\105\012\011" \
+"\055\156\040\114\105\116\107\124\110\011\111\156\164\145\162\160" \
+"\162\145\164\040\157\156\154\171\040\114\105\116\107\124\110\040" \
+"\142\171\164\145\163\040\157\146\040\151\156\160\165\164\012\011" \
+"\055\157\011\011\124\167\157\055\142\171\164\145\040\157\143\164" \
+"\141\154\040\144\151\163\160\154\141\171\012\011\055\163\040\117" \
+"\106\106\123\105\124\011\123\153\151\160\040\117\106\106\123\105" \
+"\124\040\142\171\164\145\163\012\011\055\166\011\011\104\151\163" \
+"\160\154\141\171\040\141\154\154\040\151\156\160\165\164\040\144" \
+"\141\164\141\012\011\055\170\011\011\124\167\157\055\142\171\164" \
+"\145\040\150\145\170\141\144\145\143\151\155\141\154\040\144\151" \
+"\163\160\154\141\171\000\133\117\120\124\111\117\116\123\135\040" \
+"\133\125\123\105\122\135\012\012\120\162\151\156\164\040\151\156" \
+"\146\157\162\155\141\164\151\157\156\040\141\142\157\165\164\040" \
+"\125\123\105\122\040\157\162\040\164\150\145\040\143\165\162\162" \
+"\145\156\164\040\165\163\145\162\012\012\011\055\165\011\125\163" \
+"\145\162\040\111\104\012\011\055\147\011\107\162\157\165\160\040" \
+"\111\104\012\011\055\107\011\123\165\160\160\154\145\155\145\156" \
+"\164\141\162\171\040\147\162\157\165\160\040\111\104\163\012\011" \
+"\055\156\011\120\162\151\156\164\040\156\141\155\145\163\040\151" \
+"\156\163\164\145\141\144\040\157\146\040\156\165\155\142\145\162" \
+"\163\012\011\055\162\011\120\162\151\156\164\040\162\145\141\154" \
+"\040\111\104\040\151\156\163\164\145\141\144\040\157\146\040\145" \
+"\146\146\145\143\164\151\166\145\040\111\104\000\133\055\161\146" \
+"\167\162\163\166\135\040\115\117\104\125\114\105\040\133\163\171" \
+"\155\142\157\154\075\166\141\154\165\145\135\056\056\056\012\012" \
+"\011\055\162\011\122\145\155\157\166\145\040\115\117\104\125\114" \
+"\105\040\050\163\164\141\143\153\163\051\040\157\162\040\144\157" \
+"\040\141\165\164\157\143\154\145\141\156\012\011\055\161\011\121" \
+"\165\151\145\164\012\011\055\166\011\126\145\162\142\157\163\145" \
+"\012\011\055\146\011\106\157\162\143\145\012\011\055\167\011\127" \
+"\141\151\164\040\146\157\162\040\165\156\154\157\141\144\012\011" \
+"\055\163\011\122\145\160\157\162\164\040\166\151\141\040\163\171" \
+"\163\154\157\147\040\151\156\163\164\145\141\144\040\157\146\040" \
+"\163\164\144\145\162\162\000\133\055\143\144\104\163\160\135\040" \
+"\133\055\157\040\125\123\105\122\135\040\133\055\147\040\107\122" \
+"\120\135\040\133\055\155\040\115\117\104\105\135\040\133\123\117" \
+"\125\122\103\105\135\056\056\056\040\104\105\123\124\012\012\103" \
+"\157\160\171\040\146\151\154\145\163\040\141\156\144\040\163\145" \
+"\164\040\141\164\164\162\151\142\165\164\145\163\012\012\011\055" \
+"\143\011\112\165\163\164\040\143\157\160\171\040\050\144\145\146" \
+"\141\165\154\164\051\012\011\055\144\011\103\162\145\141\164\145" \
+"\040\144\151\162\145\143\164\157\162\151\145\163\012\011\055\104" \
+"\011\103\162\145\141\164\145\040\154\145\141\144\151\156\147\040" \
+"\164\141\162\147\145\164\040\144\151\162\145\143\164\157\162\151" \
+"\145\163\012\011\055\163\011\123\164\162\151\160\040\163\171\155" \
+"\142\157\154\040\164\141\142\154\145\012\011\055\160\011\120\162" \
+"\145\163\145\162\166\145\040\144\141\164\145\012\011\055\157\040" \
+"\125\123\105\122\011\123\145\164\040\157\167\156\145\162\163\150" \
+"\151\160\012\011\055\147\040\107\122\120\011\123\145\164\040\147" \
+"\162\157\165\160\040\157\167\156\145\162\163\150\151\160\012\011" \
+"\055\155\040\115\117\104\105\011\123\145\164\040\160\145\162\155" \
+"\151\163\163\151\157\156\163\000\133\055\154\135\040\133\055\123" \
+"\111\107\135\040\120\111\104\056\056\056\012\012\123\145\156\144" \
+"\040\141\040\163\151\147\156\141\154\040\050\144\145\146\141\165" \
+"\154\164\072\040\124\105\122\115\051\040\164\157\040\147\151\166" \
+"\145\156\040\120\111\104\163\012\012\011\055\154\011\114\151\163" \
+"\164\040\141\154\154\040\163\151\147\156\141\154\040\156\141\155" \
+"\145\163\040\141\156\144\040\156\165\155\142\145\162\163\000\133" \
+"\055\154\135\040\133\055\161\135\040\133\055\123\111\107\135\040" \
+"\120\122\117\103\105\123\123\137\116\101\115\105\056\056\056\012" \
+"\012\123\145\156\144\040\141\040\163\151\147\156\141\154\040\050" \
+"\144\145\146\141\165\154\164\072\040\124\105\122\115\051\040\164" \
+"\157\040\147\151\166\145\156\040\160\162\157\143\145\163\163\145" \
+"\163\012\012\011\055\154\011\114\151\163\164\040\141\154\154\040" \
+"\163\151\147\156\141\154\040\156\141\155\145\163\040\141\156\144" \
+"\040\156\165\155\142\145\162\163\012\011\055\161\011\104\157\156" \
+"\047\164\040\143\157\155\160\154\141\151\156\040\151\146\040\156" \
+"\157\040\160\162\157\143\145\163\163\145\163\040\167\145\162\145" \
+"\040\153\151\154\154\145\144\000\133\055\154\135\040\133\055\123" \
+"\111\107\135\040\133\055\157\040\120\111\104\135\056\056\056\012" \
+"\012\123\145\156\144\040\141\040\163\151\147\156\141\154\040\050" \
+"\144\145\146\141\165\154\164\072\040\124\105\122\115\051\040\164" \
+"\157\040\141\154\154\040\160\162\157\143\145\163\163\145\163\040" \
+"\157\165\164\163\151\144\145\040\143\165\162\162\145\156\164\040" \
+"\163\145\163\163\151\157\156\012\012\011\055\154\011\114\151\163" \
+"\164\040\141\154\154\040\163\151\147\156\141\154\040\156\141\155" \
+"\145\163\040\141\156\144\040\156\165\155\142\145\162\163\012\011" \
+"\055\157\040\120\111\104\011\104\157\156\047\164\040\163\151\147" \
+"\156\141\154\040\164\150\151\163\040\120\111\104\000\133\055\105" \
+"\116\150\176\111\077\135\040\133\106\111\114\105\135\056\056\056" \
+"\012\012\126\151\145\167\040\106\111\114\105\040\050\157\162\040" \
+"\163\164\144\151\156\051\040\157\156\145\040\163\143\162\145\145" \
+"\156\146\165\154\040\141\164\040\141\040\164\151\155\145\012\012" \
+"\011\055\105\011\121\165\151\164\040\157\156\143\145\040\164\150" \
+"\145\040\145\156\144\040\157\146\040\141\040\146\151\154\145\040" \
+"\151\163\040\162\145\141\143\150\145\144\012\011\055\116\011\120" \
+"\162\145\146\151\170\040\154\151\156\145\040\156\165\155\142\145" \
+"\162\040\164\157\040\145\141\143\150\040\154\151\156\145\012\011" \
+"\055\111\011\111\147\156\157\162\145\040\143\141\163\145\040\151" \
+"\156\040\141\154\154\040\163\145\141\162\143\150\145\163\012\011" \
+"\055\176\011\123\165\160\160\162\145\163\163\040\176\163\040\144" \
+"\151\163\160\154\141\171\145\144\040\160\141\163\164\040\105\117" \
+"\106\000\133\117\120\124\111\117\116\123\135\040\124\101\122\107" \
+"\105\124\056\056\056\040\114\111\116\113\174\104\111\122\012\012" \
+"\103\162\145\141\164\145\040\141\040\154\151\156\153\040\114\111" \
+"\116\113\040\157\162\040\104\111\122\057\124\101\122\107\105\124" \
+"\040\164\157\040\164\150\145\040\163\160\145\143\151\146\151\145" \
+"\144\040\124\101\122\107\105\124\050\163\051\012\012\011\055\163" \
+"\011\115\141\153\145\040\163\171\155\154\151\156\153\163\040\151" \
+"\156\163\164\145\141\144\040\157\146\040\150\141\162\144\154\151" \
+"\156\153\163\012\011\055\146\011\122\145\155\157\166\145\040\145" \
+"\170\151\163\164\151\156\147\040\144\145\163\164\151\156\141\164" \
+"\151\157\156\163\012\011\055\156\011\104\157\156\047\164\040\144" \
+"\145\162\145\146\145\162\145\156\143\145\040\163\171\155\154\151" \
+"\156\153\163\040\055\040\164\162\145\141\164\040\154\151\153\145" \
+"\040\156\157\162\155\141\154\040\146\151\154\145\012\011\055\142" \
+"\011\115\141\153\145\040\141\040\142\141\143\153\165\160\040\157" \
+"\146\040\164\150\145\040\164\141\162\147\145\164\040\050\151\146" \
+"\040\145\170\151\163\164\163\051\040\142\145\146\157\162\145\040" \
+"\154\151\156\153\040\157\160\145\162\141\164\151\157\156\012\011" \
+"\055\123\040\163\165\146\011\125\163\145\040\163\165\146\146\151" \
+"\170\040\151\156\163\164\145\141\144\040\157\146\040\176\040\167" \
+"\150\145\156\040\155\141\153\151\156\147\040\142\141\143\153\165" \
+"\160\040\146\151\154\145\163\012\011\055\124\011\062\156\144\040" \
+"\141\162\147\040\155\165\163\164\040\142\145\040\141\040\104\111" \
+"\122\012\011\055\166\011\126\145\162\142\157\163\145\000\133\055" \
+"\162\135\040\133\055\157\040\117\106\123\135\040\173\055\146\174" \
+"\114\117\117\120\104\105\126\175\040\106\111\114\105\040\055\040" \
+"\141\163\163\157\143\151\141\164\145\040\154\157\157\160\040\144" \
+"\145\166\151\143\145\163\012\011\154\157\163\145\164\165\160\040" \
+"\055\144\040\114\117\117\120\104\105\126\040\055\040\144\151\163" \
+"\141\163\163\157\143\151\141\164\145\012\011\154\157\163\145\164" \
+"\165\160\040\055\141\040\055\040\163\150\157\167\040\163\164\141" \
+"\164\165\163\012\011\154\157\163\145\164\165\160\040\055\146\040" \
+"\055\040\163\150\157\167\040\156\145\170\164\040\146\162\145\145" \
+"\040\154\157\157\160\040\144\145\166\151\143\145\012\012\011\055" \
+"\157\040\117\106\123\011\123\164\141\162\164\040\117\106\123\040" \
+"\142\171\164\145\163\040\151\156\164\157\040\106\111\114\105\012" \
+"\011\055\162\011\122\145\141\144\055\157\156\154\171\012\011\055" \
+"\146\011\123\150\157\167\057\165\163\145\040\156\145\170\164\040" \
+"\146\162\145\145\040\154\157\157\160\040\144\145\166\151\143\145" \
+"\000\133\055\061\101\141\103\170\144\114\110\122\106\160\154\151" \
+"\156\163\145\150\162\123\130\166\143\164\165\135\040\133\055\167" \
+"\040\127\111\104\124\110\135\040\133\106\111\114\105\135\056\056" \
+"\056\012\012\114\151\163\164\040\144\151\162\145\143\164\157\162" \
+"\171\040\143\157\156\164\145\156\164\163\012\012\011\055\061\011" \
+"\117\156\145\040\143\157\154\165\155\156\040\157\165\164\160\165" \
+"\164\012\011\055\141\011\111\156\143\154\165\144\145\040\145\156" \
+"\164\162\151\145\163\040\167\150\151\143\150\040\163\164\141\162" \
+"\164\040\167\151\164\150\040\056\012\011\055\101\011\114\151\153" \
+"\145\040\055\141\054\040\142\165\164\040\145\170\143\154\165\144" \
+"\145\040\056\040\141\156\144\040\056\056\012\011\055\103\011\114" \
+"\151\163\164\040\142\171\040\143\157\154\165\155\156\163\012\011" \
+"\055\170\011\114\151\163\164\040\142\171\040\154\151\156\145\163" \
+"\012\011\055\144\011\114\151\163\164\040\144\151\162\145\143\164" \
+"\157\162\171\040\145\156\164\162\151\145\163\040\151\156\163\164" \
+"\145\141\144\040\157\146\040\143\157\156\164\145\156\164\163\012" \
+"\011\055\114\011\106\157\154\154\157\167\040\163\171\155\154\151" \
+"\156\153\163\012\011\055\110\011\106\157\154\154\157\167\040\163" \
+"\171\155\154\151\156\153\163\040\157\156\040\143\157\155\155\141" \
+"\156\144\040\154\151\156\145\012\011\055\122\011\122\145\143\165" \
+"\162\163\145\012\011\055\160\011\101\160\160\145\156\144\040\057" \
+"\040\164\157\040\144\151\162\040\145\156\164\162\151\145\163\012" \
+"\011\055\106\011\101\160\160\145\156\144\040\151\156\144\151\143" \
+"\141\164\157\162\040\050\157\156\145\040\157\146\040\052\057\075" \
+"\100\174\051\040\164\157\040\145\156\164\162\151\145\163\012\011" \
+"\055\154\011\114\157\156\147\040\154\151\163\164\151\156\147\040" \
+"\146\157\162\155\141\164\012\011\055\151\011\114\151\163\164\040" \
+"\151\156\157\144\145\040\156\165\155\142\145\162\163\012\011\055" \
+"\156\011\114\151\163\164\040\156\165\155\145\162\151\143\040\125" \
+"\111\104\163\040\141\156\144\040\107\111\104\163\040\151\156\163" \
+"\164\145\141\144\040\157\146\040\156\141\155\145\163\012\011\055" \
+"\163\011\114\151\163\164\040\141\154\154\157\143\141\164\145\144" \
+"\040\142\154\157\143\153\163\012\011\055\145\011\114\151\163\164" \
+"\040\146\165\154\154\040\144\141\164\145\040\141\156\144\040\164" \
+"\151\155\145\012\011\055\150\011\114\151\163\164\040\163\151\172" \
+"\145\163\040\151\156\040\150\165\155\141\156\040\162\145\141\144" \
+"\141\142\154\145\040\146\157\162\155\141\164\040\050\061\113\040" \
+"\062\064\063\115\040\062\107\051\012\011\055\162\011\123\157\162" \
+"\164\040\151\156\040\162\145\166\145\162\163\145\040\157\162\144" \
+"\145\162\012\011\055\123\011\123\157\162\164\040\142\171\040\163" \
+"\151\172\145\012\011\055\130\011\123\157\162\164\040\142\171\040" \
+"\145\170\164\145\156\163\151\157\156\012\011\055\166\011\123\157" \
+"\162\164\040\142\171\040\166\145\162\163\151\157\156\012\011\055" \
+"\143\011\127\151\164\150\040\055\154\072\040\163\157\162\164\040" \
+"\142\171\040\143\164\151\155\145\012\011\055\164\011\127\151\164" \
+"\150\040\055\154\072\040\163\157\162\164\040\142\171\040\155\164" \
+"\151\155\145\012\011\055\165\011\127\151\164\150\040\055\154\072" \
+"\040\163\157\162\164\040\142\171\040\141\164\151\155\145\012\011" \
+"\055\167\040\116\011\101\163\163\165\155\145\040\164\150\145\040" \
+"\164\145\162\155\151\156\141\154\040\151\163\040\116\040\143\157" \
+"\154\165\155\156\163\040\167\151\144\145\012\011\055\055\143\157" \
+"\154\157\162\133\075\173\141\154\167\141\171\163\054\156\145\166" \
+"\145\162\054\141\165\164\157\175\135\011\103\157\156\164\162\157" \
+"\154\040\143\157\154\157\162\151\156\147\000\133\055\122\141\144" \
+"\154\166\135\040\133\106\111\114\105\135\056\056\056\012\012\114" \
+"\151\163\164\040\146\151\154\145\040\141\164\164\162\151\142\165" \
+"\164\145\163\040\157\156\040\141\156\040\145\170\164\062\040\146" \
+"\163\012\012\011\055\122\011\122\145\143\165\162\163\145\012\011" \
+"\055\141\011\104\157\156\047\164\040\150\151\144\145\040\145\156" \
+"\164\162\151\145\163\040\163\164\141\162\164\151\156\147\040\167" \
+"\151\164\150\040\056\012\011\055\144\011\114\151\163\164\040\144" \
+"\151\162\145\143\164\157\162\171\040\145\156\164\162\151\145\163" \
+"\040\151\156\163\164\145\141\144\040\157\146\040\143\157\156\164" \
+"\145\156\164\163\012\011\055\154\011\114\151\163\164\040\154\157" \
+"\156\147\040\146\154\141\147\040\156\141\155\145\163\012\011\055" \
+"\166\011\114\151\163\164\040\164\150\145\040\146\151\154\145\047" \
+"\163\040\166\145\162\163\151\157\156\057\147\145\156\145\162\141" \
+"\164\151\157\156\040\156\165\155\142\145\162\000\133\055\161\146" \
+"\167\162\163\166\135\040\115\117\104\125\114\105\040\133\163\171" \
+"\155\142\157\154\075\166\141\154\165\145\135\056\056\056\012\012" \
+"\011\055\162\011\122\145\155\157\166\145\040\115\117\104\125\114" \
+"\105\040\050\163\164\141\143\153\163\051\040\157\162\040\144\157" \
+"\040\141\165\164\157\143\154\145\141\156\012\011\055\161\011\121" \
+"\165\151\145\164\012\011\055\166\011\126\145\162\142\157\163\145" \
+"\012\011\055\146\011\106\157\162\143\145\012\011\055\167\011\127" \
+"\141\151\164\040\146\157\162\040\165\156\154\157\141\144\012\011" \
+"\055\163\011\122\145\160\157\162\164\040\166\151\141\040\163\171" \
+"\163\154\157\147\040\151\156\163\164\145\141\144\040\157\146\040" \
+"\163\164\144\145\162\162\000\012\012\123\150\157\167\040\141\154" \
+"\154\040\157\160\145\156\040\146\151\154\145\163\000\133\055\155" \
+"\153\135\012\012\114\151\163\164\040\141\154\154\040\120\103\111" \
+"\040\144\145\166\151\143\145\163\012\012\011\055\155\011\120\141" \
+"\162\163\141\142\154\145\040\157\165\164\160\165\164\012\011\055" \
+"\153\011\123\150\157\167\040\144\162\151\166\145\162\000\010\000" \
+"\133\106\111\114\105\135\056\056\056\012\012\104\145\143\157\155" \
+"\160\162\145\163\163\040\164\157\040\163\164\144\157\165\164\000" \
+"\133\055\143\146\166\144\061\062\063\064\065\066\067\070\071\103" \
+"\106\135\040\133\106\111\114\105\135\056\056\056\012\012\011\055" \
+"\061\056\056\071\011\103\157\155\160\162\145\163\163\151\157\156" \
+"\040\154\145\166\145\154\012\011\055\144\011\104\145\143\157\155" \
+"\160\162\145\163\163\012\011\055\143\011\127\162\151\164\145\040" \
+"\164\157\040\163\164\144\157\165\164\012\011\055\146\011\106\157" \
+"\162\143\145\012\011\055\166\011\126\145\162\142\157\163\145\012" \
+"\011\055\106\011\104\157\156\047\164\040\163\164\157\162\145\040" \
+"\157\162\040\166\145\162\151\146\171\040\143\150\145\143\153\163" \
+"\165\155\012\011\055\103\011\101\154\163\157\040\167\162\151\164" \
+"\145\040\143\150\145\143\153\163\165\155\040\157\146\040\143\157" \
+"\155\160\162\145\163\163\145\144\040\142\154\157\143\153\000\133" \
+"\055\166\103\106\135\040\133\106\111\114\105\135\056\056\056\012" \
+"\012\011\055\166\011\126\145\162\142\157\163\145\012\011\055\106" \
+"\011\104\157\156\047\164\040\163\164\157\162\145\040\157\162\040" \
+"\166\145\162\151\146\171\040\143\150\145\143\153\163\165\155\000" \
+"\133\055\144\040\144\145\166\151\143\145\137\164\141\142\154\145" \
+"\135\040\162\157\157\164\144\151\162\012\012\103\162\145\141\164" \
+"\145\040\141\040\162\141\156\147\145\040\157\146\040\163\160\145" \
+"\143\151\141\154\040\146\151\154\145\163\040\141\163\040\163\160" \
+"\145\143\151\146\151\145\144\040\151\156\040\141\040\144\145\166" \
+"\151\143\145\040\164\141\142\154\145\056\012\104\145\166\151\143" \
+"\145\040\164\141\142\154\145\040\145\156\164\162\151\145\163\040" \
+"\164\141\153\145\040\164\150\145\040\146\157\162\155\040\157\146" \
+"\072\012\074\156\141\155\145\076\040\074\164\171\160\145\076\040" \
+"\074\155\157\144\145\076\040\074\165\151\144\076\040\074\147\151" \
+"\144\076\040\074\155\141\152\157\162\076\040\074\155\151\156\157" \
+"\162\076\040\074\163\164\141\162\164\076\040\074\151\156\143\076" \
+"\040\074\143\157\165\156\164\076\012\127\150\145\162\145\040\156" \
+"\141\155\145\040\151\163\040\164\150\145\040\146\151\154\145\040" \
+"\156\141\155\145\054\040\164\171\160\145\040\143\141\156\040\142" \
+"\145\040\157\156\145\040\157\146\072\012\011\146\011\122\145\147" \
+"\165\154\141\162\040\146\151\154\145\012\011\144\011\104\151\162" \
+"\145\143\164\157\162\171\012\011\143\011\103\150\141\162\141\143" \
+"\164\145\162\040\144\145\166\151\143\145\012\011\142\011\102\154" \
+"\157\143\153\040\144\145\166\151\143\145\012\011\160\011\106\151" \
+"\146\157\040\050\156\141\155\145\144\040\160\151\160\145\051\012" \
+"\165\151\144\040\151\163\040\164\150\145\040\165\163\145\162\040" \
+"\151\144\040\146\157\162\040\164\150\145\040\164\141\162\147\145" \
+"\164\040\146\151\154\145\054\040\147\151\144\040\151\163\040\164" \
+"\150\145\040\147\162\157\165\160\040\151\144\040\146\157\162\040" \
+"\164\150\145\012\164\141\162\147\145\164\040\146\151\154\145\056" \
+"\040\124\150\145\040\162\145\163\164\040\157\146\040\164\150\145" \
+"\040\145\156\164\162\151\145\163\040\050\155\141\152\157\162\054" \
+"\040\155\151\156\157\162\054\040\145\164\143\051\040\141\160\160" \
+"\154\171\040\164\157\012\164\157\040\144\145\166\151\143\145\040" \
+"\163\160\145\143\151\141\154\040\146\151\154\145\163\056\040\101" \
+"\040\047\055\047\040\155\141\171\040\142\145\040\165\163\145\144" \
+"\040\146\157\162\040\142\154\141\156\153\040\145\156\164\162\151" \
+"\145\163\056\000\133\055\143\133\163\167\135\135\040\133\106\111" \
+"\114\105\135\056\056\056\012\012\120\162\151\156\164\040\157\162" \
+"\040\143\150\145\143\153\040\115\104\065\040\143\150\145\143\153" \
+"\163\165\155\163\012\012\011\055\143\011\103\150\145\143\153\040" \
+"\163\165\155\163\040\141\147\141\151\156\163\164\040\154\151\163" \
+"\164\040\151\156\040\106\111\114\105\163\012\011\055\163\011\104" \
+"\157\156\047\164\040\157\165\164\160\165\164\040\141\156\171\164" \
+"\150\151\156\147\054\040\163\164\141\164\165\163\040\143\157\144" \
+"\145\040\163\150\157\167\163\040\163\165\143\143\145\163\163\012" \
+"\011\055\167\011\127\141\162\156\040\141\142\157\165\164\040\151" \
+"\155\160\162\157\160\145\162\154\171\040\146\157\162\155\141\164" \
+"\164\145\144\040\143\150\145\143\153\163\165\155\040\154\151\156" \
+"\145\163\000\133\117\120\124\111\117\116\123\135\040\104\111\122" \
+"\105\103\124\117\122\131\056\056\056\012\012\103\162\145\141\164" \
+"\145\040\104\111\122\105\103\124\117\122\131\012\012\011\055\155" \
+"\040\115\117\104\105\011\115\157\144\145\012\011\055\160\011\116" \
+"\157\040\145\162\162\157\162\040\151\146\040\145\170\151\163\164" \
+"\163\073\040\155\141\153\145\040\160\141\162\145\156\164\040\144" \
+"\151\162\145\143\164\157\162\151\145\163\040\141\163\040\156\145" \
+"\145\144\145\144\000\133\055\166\135\040\133\055\156\040\114\101" \
+"\102\105\114\135\040\102\114\117\103\113\104\105\126\040\133\113" \
+"\102\131\124\105\123\135\012\012\115\141\153\145\040\141\040\106" \
+"\101\124\063\062\040\146\151\154\145\163\171\163\164\145\155\012" \
+"\012\011\055\166\011\126\145\162\142\157\163\145\012\011\055\156" \
+"\040\114\102\114\011\126\157\154\165\155\145\040\154\141\142\145" \
+"\154\000\133\055\106\156\135\040\133\055\142\040\102\114\113\137" \
+"\123\111\132\105\135\040\133\055\151\040\111\116\117\104\105\137" \
+"\122\101\124\111\117\135\040\133\055\111\040\111\116\117\104\105" \
+"\137\123\111\132\105\135\040\133\055\155\040\122\105\123\105\122" \
+"\126\105\104\137\120\105\122\103\105\116\124\135\040\133\055\114" \
+"\040\114\101\102\105\114\135\040\102\114\117\103\113\104\105\126" \
+"\040\133\113\102\131\124\105\123\135\012\012\011\055\142\040\102" \
+"\114\113\137\123\111\132\105\011\102\154\157\143\153\040\163\151" \
+"\172\145\054\040\142\171\164\145\163\012\011\055\106\011\011\106" \
+"\157\162\143\145\012\011\055\151\040\122\101\124\111\117\011\115" \
+"\141\170\040\156\165\155\142\145\162\040\157\146\040\146\151\154" \
+"\145\163\040\151\163\040\146\151\154\145\163\171\163\164\145\155" \
+"\137\163\151\172\145\040\057\040\122\101\124\111\117\012\011\055" \
+"\111\040\102\131\124\105\123\011\111\156\157\144\145\040\163\151" \
+"\172\145\040\050\155\151\156\040\061\062\070\051\012\011\055\114" \
+"\040\114\102\114\011\011\126\157\154\165\155\145\040\154\141\142" \
+"\145\154\012\011\055\155\040\120\105\122\103\105\116\124\011\120" \
+"\145\162\143\145\156\164\040\157\146\040\142\154\157\143\153\163" \
+"\040\164\157\040\162\145\163\145\162\166\145\040\146\157\162\040" \
+"\141\144\155\151\156\012\011\055\156\011\011\104\162\171\040\162" \
+"\165\156\000\133\055\155\040\115\117\104\105\135\040\116\101\115" \
+"\105\012\012\103\162\145\141\164\145\040\156\141\155\145\144\040" \
+"\160\151\160\145\012\012\011\055\155\040\115\117\104\105\011\115" \
+"\157\144\145\040\050\144\145\146\141\165\154\164\040\141\075\162" \
+"\167\051\000\133\055\106\156\135\040\133\055\142\040\102\114\113" \
+"\137\123\111\132\105\135\040\133\055\151\040\111\116\117\104\105" \
+"\137\122\101\124\111\117\135\040\133\055\111\040\111\116\117\104" \
+"\105\137\123\111\132\105\135\040\133\055\155\040\122\105\123\105" \
+"\122\126\105\104\137\120\105\122\103\105\116\124\135\040\133\055" \
+"\114\040\114\101\102\105\114\135\040\102\114\117\103\113\104\105" \
+"\126\040\133\113\102\131\124\105\123\135\012\012\011\055\142\040" \
+"\102\114\113\137\123\111\132\105\011\102\154\157\143\153\040\163" \
+"\151\172\145\054\040\142\171\164\145\163\012\011\055\106\011\011" \
+"\106\157\162\143\145\012\011\055\151\040\122\101\124\111\117\011" \
+"\115\141\170\040\156\165\155\142\145\162\040\157\146\040\146\151" \
+"\154\145\163\040\151\163\040\146\151\154\145\163\171\163\164\145" \
+"\155\137\163\151\172\145\040\057\040\122\101\124\111\117\012\011" \
+"\055\111\040\102\131\124\105\123\011\111\156\157\144\145\040\163" \
+"\151\172\145\040\050\155\151\156\040\061\062\070\051\012\011\055" \
+"\114\040\114\102\114\011\011\126\157\154\165\155\145\040\154\141" \
+"\142\145\154\012\011\055\155\040\120\105\122\103\105\116\124\011" \
+"\120\145\162\143\145\156\164\040\157\146\040\142\154\157\143\153" \
+"\163\040\164\157\040\162\145\163\145\162\166\145\040\146\157\162" \
+"\040\141\144\155\151\156\012\011\055\156\011\011\104\162\171\040" \
+"\162\165\156\000\133\055\166\135\040\133\055\156\040\114\101\102" \
+"\105\114\135\040\102\114\117\103\113\104\105\126\040\133\113\102" \
+"\131\124\105\123\135\012\012\115\141\153\145\040\141\040\106\101" \
+"\124\063\062\040\146\151\154\145\163\171\163\164\145\155\012\012" \
+"\011\055\166\011\126\145\162\142\157\163\145\012\011\055\156\040" \
+"\114\102\114\011\126\157\154\165\155\145\040\154\141\142\145\154" \
+"\000\133\055\155\040\115\117\104\105\135\040\116\101\115\105\040" \
+"\124\131\120\105\040\115\101\112\117\122\040\115\111\116\117\122" \
+"\012\012\103\162\145\141\164\145\040\141\040\163\160\145\143\151" \
+"\141\154\040\146\151\154\145\040\050\142\154\157\143\153\054\040" \
+"\143\150\141\162\141\143\164\145\162\054\040\157\162\040\160\151" \
+"\160\145\051\012\012\011\055\155\040\115\117\104\105\011\103\162" \
+"\145\141\164\151\157\156\040\155\157\144\145\040\050\144\145\146" \
+"\141\165\154\164\040\141\075\162\167\051\012\124\131\120\105\072" \
+"\012\011\142\011\102\154\157\143\153\040\144\145\166\151\143\145" \
+"\012\011\143\040\157\162\040\165\011\103\150\141\162\141\143\164" \
+"\145\162\040\144\145\166\151\143\145\012\011\160\011\116\141\155" \
+"\145\144\040\160\151\160\145\040\050\115\101\112\117\122\040\141" \
+"\156\144\040\115\111\116\117\122\040\141\162\145\040\151\147\156" \
+"\157\162\145\144\051\000\133\055\114\040\114\102\114\135\040\102" \
+"\114\117\103\113\104\105\126\040\133\113\102\131\124\105\123\135" \
+"\012\012\120\162\145\160\141\162\145\040\102\114\117\103\113\104" \
+"\105\126\040\164\157\040\142\145\040\165\163\145\144\040\141\163" \
+"\040\163\167\141\160\040\160\141\162\164\151\164\151\157\156\012" \
+"\012\011\055\114\040\114\102\114\011\114\141\142\145\154\000\133" \
+"\055\144\164\135\040\133\055\160\040\104\111\122\135\040\133\124" \
+"\105\115\120\114\101\124\105\135\012\012\103\162\145\141\164\145" \
+"\040\141\040\164\145\155\160\157\162\141\162\171\040\146\151\154" \
+"\145\040\167\151\164\150\040\156\141\155\145\040\142\141\163\145" \
+"\144\040\157\156\040\124\105\115\120\114\101\124\105\040\141\156" \
+"\144\040\160\162\151\156\164\040\151\164\163\040\156\141\155\145" \
+"\056\012\124\105\115\120\114\101\124\105\040\155\165\163\164\040" \
+"\145\156\144\040\167\151\164\150\040\130\130\130\130\130\130\040" \
+"\050\145\056\147\056\040\133\057\144\151\162\057\135\156\141\155" \
+"\145\130\130\130\130\130\130\051\056\012\127\151\164\150\157\165" \
+"\164\040\124\105\115\120\114\101\124\105\054\040\055\164\040\164" \
+"\155\160\056\130\130\130\130\130\130\040\151\163\040\141\163\163" \
+"\165\155\145\144\056\012\012\011\055\144\011\115\141\153\145\040" \
+"\144\151\162\145\143\164\157\162\171\054\040\156\157\164\040\146" \
+"\151\154\145\012\011\055\161\011\106\141\151\154\040\163\151\154" \
+"\145\156\164\154\171\040\157\156\040\145\162\162\157\162\163\012" \
+"\011\055\164\011\120\162\145\160\145\156\144\040\142\141\163\145" \
+"\040\144\151\162\145\143\164\157\162\171\040\156\141\155\145\040" \
+"\164\157\040\124\105\115\120\114\101\124\105\012\011\055\160\040" \
+"\104\111\122\011\125\163\145\040\104\111\122\040\141\163\040\141" \
+"\040\142\141\163\145\040\144\151\162\145\143\164\157\162\171\040" \
+"\050\151\155\160\154\151\145\163\040\055\164\051\012\011\055\165" \
+"\011\104\157\040\156\157\164\040\143\162\145\141\164\145\040\141" \
+"\156\171\164\150\151\156\147\073\040\160\162\151\156\164\040\141" \
+"\040\156\141\155\145\012\012\102\141\163\145\040\144\151\162\145" \
+"\143\164\157\162\171\040\151\163\072\040\055\160\040\104\111\122" \
+"\054\040\145\154\163\145\040\044\124\115\120\104\111\122\054\040" \
+"\145\154\163\145\040\057\144\141\164\141\057\154\157\143\141\154" \
+"\057\164\155\160\000\133\055\141\144\154\160\060\135\040\133\055" \
+"\106\040\153\145\171\167\157\162\144\135\040\115\117\104\125\114" \
+"\105\012\012\011\055\141\011\011\123\150\157\162\164\143\165\164" \
+"\040\146\157\162\040\047\055\106\040\141\165\164\150\157\162\047" \
+"\012\011\055\144\011\011\123\150\157\162\164\143\165\164\040\146" \
+"\157\162\040\047\055\106\040\144\145\163\143\162\151\160\164\151" \
+"\157\156\047\012\011\055\154\011\011\123\150\157\162\164\143\165" \
+"\164\040\146\157\162\040\047\055\106\040\154\151\143\145\156\163" \
+"\145\047\012\011\055\160\011\011\123\150\157\162\164\143\165\164" \
+"\040\146\157\162\040\047\055\106\040\160\141\162\155\047\012\011" \
+"\055\106\040\153\145\171\167\157\162\144\011\113\145\171\167\157" \
+"\162\144\040\164\157\040\154\157\157\153\040\146\157\162\012\011" \
+"\055\060\011\011\123\145\160\141\162\141\164\145\040\157\165\164" \
+"\160\165\164\040\167\151\164\150\040\116\125\114\163\000\133\055" \
+"\161\146\167\162\163\166\135\040\115\117\104\125\114\105\040\133" \
+"\163\171\155\142\157\154\075\166\141\154\165\145\135\056\056\056" \
+"\012\012\011\055\162\011\122\145\155\157\166\145\040\115\117\104" \
+"\125\114\105\040\050\163\164\141\143\153\163\051\040\157\162\040" \
+"\144\157\040\141\165\164\157\143\154\145\141\156\012\011\055\161" \
+"\011\121\165\151\145\164\012\011\055\166\011\126\145\162\142\157" \
+"\163\145\012\011\055\146\011\106\157\162\143\145\012\011\055\167" \
+"\011\127\141\151\164\040\146\157\162\040\165\156\154\157\141\144" \
+"\012\011\055\163\011\122\145\160\157\162\164\040\166\151\141\040" \
+"\163\171\163\154\157\147\040\151\156\163\164\145\141\144\040\157" \
+"\146\040\163\164\144\145\162\162\000\133\106\111\114\105\135\056" \
+"\056\056\012\012\126\151\145\167\040\106\111\114\105\040\050\157" \
+"\162\040\163\164\144\151\156\051\040\157\156\145\040\163\143\162" \
+"\145\145\156\146\165\154\040\141\164\040\141\040\164\151\155\145" \
+"\000\133\117\120\124\111\117\116\123\135\040\133\055\157\040\117" \
+"\120\124\123\135\040\104\105\126\111\103\105\040\116\117\104\105" \
+"\012\012\115\157\165\156\164\040\141\040\146\151\154\145\163\171" \
+"\163\164\145\155\056\040\106\151\154\145\163\171\163\164\145\155" \
+"\040\141\165\164\157\144\145\164\145\143\164\151\157\156\040\162" \
+"\145\161\165\151\162\145\163\040\057\160\162\157\143\056\012\012" \
+"\011\055\141\011\011\115\157\165\156\164\040\141\154\154\040\146" \
+"\151\154\145\163\171\163\164\145\155\163\040\151\156\040\146\163" \
+"\164\141\142\012\011\055\162\011\011\122\145\141\144\055\157\156" \
+"\154\171\040\155\157\165\156\164\012\011\055\167\011\011\122\145" \
+"\141\144\055\167\162\151\164\145\040\155\157\165\156\164\040\050" \
+"\144\145\146\141\165\154\164\051\012\011\055\164\040\106\123\124" \
+"\131\120\105\133\054\056\056\056\135\011\106\151\154\145\163\171" \
+"\163\164\145\155\040\164\171\160\145\050\163\051\012\011\055\117" \
+"\040\117\120\124\011\011\115\157\165\156\164\040\157\156\154\171" \
+"\040\146\151\154\145\163\171\163\164\145\155\163\040\167\151\164" \
+"\150\040\157\160\164\151\157\156\040\117\120\124\040\050\055\141" \
+"\040\157\156\154\171\051\012\055\157\040\117\120\124\072\012\011" \
+"\154\157\157\160\011\011\111\147\156\157\162\145\144\040\050\154" \
+"\157\157\160\040\144\145\166\151\143\145\163\040\141\162\145\040" \
+"\141\165\164\157\144\145\164\145\143\164\145\144\051\012\011\133" \
+"\141\135\163\171\156\143\011\011\127\162\151\164\145\163\040\141" \
+"\162\145\040\133\141\135\163\171\156\143\150\162\157\156\157\165" \
+"\163\012\011\133\156\157\135\141\164\151\155\145\011\104\151\163" \
+"\141\142\154\145\057\145\156\141\142\154\145\040\165\160\144\141" \
+"\164\145\163\040\164\157\040\151\156\157\144\145\040\141\143\143" \
+"\145\163\163\040\164\151\155\145\163\012\011\133\156\157\135\144" \
+"\151\162\141\164\151\155\145\011\104\151\163\141\142\154\145\057" \
+"\145\156\141\142\154\145\040\141\164\151\155\145\040\165\160\144" \
+"\141\164\145\163\040\164\157\040\144\151\162\145\143\164\157\162" \
+"\151\145\163\012\011\133\156\157\135\162\145\154\141\164\151\155" \
+"\145\011\104\151\163\141\142\154\145\057\145\156\141\142\154\145" \
+"\040\141\164\151\155\145\040\165\160\144\141\164\145\163\040\162" \
+"\145\154\141\164\151\166\145\040\164\157\040\155\157\144\151\146" \
+"\151\143\141\164\151\157\156\040\164\151\155\145\012\011\133\156" \
+"\157\135\144\145\166\011\011\050\104\151\163\051\141\154\154\157" \
+"\167\040\165\163\145\040\157\146\040\163\160\145\143\151\141\154" \
+"\040\144\145\166\151\143\145\040\146\151\154\145\163\012\011\133" \
+"\156\157\135\145\170\145\143\011\050\104\151\163\051\141\154\154" \
+"\157\167\040\165\163\145\040\157\146\040\145\170\145\143\165\164" \
+"\141\142\154\145\040\146\151\154\145\163\012\011\133\156\157\135" \
+"\163\165\151\144\011\050\104\151\163\051\141\154\154\157\167\040" \
+"\163\145\164\055\165\163\145\162\055\151\144\055\162\157\157\164" \
+"\040\160\162\157\147\162\141\155\163\012\011\133\162\135\163\150" \
+"\141\162\145\144\011\103\157\156\166\145\162\164\040\133\162\145" \
+"\143\165\162\163\151\166\145\154\171\135\040\164\157\040\141\040" \
+"\163\150\141\162\145\144\040\163\165\142\164\162\145\145\012\011" \
+"\133\162\135\163\154\141\166\145\011\103\157\156\166\145\162\164" \
+"\040\133\162\145\143\165\162\163\151\166\145\154\171\135\040\164" \
+"\157\040\141\040\163\154\141\166\145\040\163\165\142\164\162\145" \
+"\145\012\011\133\162\135\160\162\151\166\141\164\145\011\103\157" \
+"\156\166\145\162\164\040\133\162\145\143\165\162\163\151\166\145" \
+"\154\171\135\040\164\157\040\141\040\160\162\151\166\141\164\145" \
+"\040\163\165\142\164\162\145\145\012\011\133\165\156\135\142\151" \
+"\156\144\141\142\154\145\011\115\141\153\145\040\155\157\165\156" \
+"\164\040\160\157\151\156\164\040\133\165\156\135\141\142\154\145" \
+"\040\164\157\040\142\145\040\142\151\156\144\040\155\157\165\156" \
+"\164\145\144\012\011\133\162\135\142\151\156\144\011\011\102\151" \
+"\156\144\040\141\040\146\151\154\145\040\157\162\040\144\151\162" \
+"\145\143\164\157\162\171\040\133\162\145\143\165\162\163\151\166" \
+"\145\154\171\135\040\164\157\040\141\156\157\164\150\145\162\040" \
+"\154\157\143\141\164\151\157\156\012\011\155\157\166\145\011\011" \
+"\122\145\154\157\143\141\164\145\040\141\156\040\145\170\151\163" \
+"\164\151\156\147\040\155\157\165\156\164\040\160\157\151\156\164" \
+"\012\011\162\145\155\157\165\156\164\011\011\122\145\155\157\165" \
+"\156\164\040\141\040\155\157\165\156\164\145\144\040\146\151\154" \
+"\145\163\171\163\164\145\155\054\040\143\150\141\156\147\151\156" \
+"\147\040\146\154\141\147\163\012\011\162\157\057\162\167\011\011" \
+"\123\141\155\145\040\141\163\040\055\162\057\055\167\012\012\124" \
+"\150\145\162\145\040\141\162\145\040\146\151\154\145\163\171\163" \
+"\164\145\155\055\163\160\145\143\151\146\151\143\040\055\157\040" \
+"\146\154\141\147\163\056\000\133\055\161\135\040\074\133\055\144" \
+"\156\135\040\104\111\122\040\174\040\055\170\040\104\105\126\111" \
+"\103\105\076\012\012\103\150\145\143\153\040\151\146\040\164\150" \
+"\145\040\144\151\162\145\143\164\157\162\171\040\151\163\040\141" \
+"\040\155\157\165\156\164\160\157\151\156\164\012\012\011\055\161" \
+"\011\121\165\151\145\164\012\011\055\144\011\120\162\151\156\164" \
+"\040\155\141\152\157\162\057\155\151\156\157\162\040\144\145\166" \
+"\151\143\145\040\156\165\155\142\145\162\040\157\146\040\164\150" \
+"\145\040\146\151\154\145\163\171\163\164\145\155\012\011\055\156" \
+"\011\120\162\151\156\164\040\144\145\166\151\143\145\040\156\141" \
+"\155\145\040\157\146\040\164\150\145\040\146\151\154\145\163\171" \
+"\163\164\145\155\012\011\055\170\011\120\162\151\156\164\040\155" \
+"\141\152\157\162\057\155\151\156\157\162\040\144\145\166\151\143" \
+"\145\040\156\165\155\142\145\162\040\157\146\040\164\150\145\040" \
+"\142\154\157\143\153\144\145\166\151\143\145\000\133\055\146\151" \
+"\156\135\040\123\117\125\122\103\105\040\104\105\123\124\012\157" \
+"\162\072\040\155\166\040\133\055\146\151\156\135\040\123\117\125" \
+"\122\103\105\056\056\056\040\104\111\122\105\103\124\117\122\131" \
+"\012\012\122\145\156\141\155\145\040\123\117\125\122\103\105\040" \
+"\164\157\040\104\105\123\124\054\040\157\162\040\155\157\166\145" \
+"\040\123\117\125\122\103\105\050\163\051\040\164\157\040\104\111" \
+"\122\105\103\124\117\122\131\012\012\011\055\146\011\104\157\156" \
+"\047\164\040\160\162\157\155\160\164\040\142\145\146\157\162\145" \
+"\040\157\166\145\162\167\162\151\164\151\156\147\012\011\055\151" \
+"\011\111\156\164\145\162\141\143\164\151\166\145\054\040\160\162" \
+"\157\155\160\164\040\142\145\146\157\162\145\040\157\166\145\162" \
+"\167\162\151\164\145\012\011\055\156\011\104\157\156\047\164\040" \
+"\157\166\145\162\167\162\151\164\145\040\141\156\040\145\170\151" \
+"\163\164\151\156\147\040\146\151\154\145\000\133\055\157\135\040" \
+"\133\055\142\135\040\133\055\163\040\101\104\104\122\135\040\133" \
+"\055\154\040\114\105\116\135\040\133\055\146\040\106\111\114\105" \
+"\135\040\115\124\104\137\104\105\126\111\103\105\012\012\104\165" \
+"\155\160\040\115\124\104\137\104\105\126\111\103\105\012\012\011" \
+"\055\157\011\104\165\155\160\040\157\157\142\040\144\141\164\141" \
+"\012\011\055\142\011\117\155\151\164\040\142\141\144\040\142\154" \
+"\157\143\153\040\146\162\157\155\040\164\150\145\040\144\165\155" \
+"\160\012\011\055\163\040\101\104\104\122\011\123\164\141\162\164" \
+"\040\141\144\144\162\145\163\163\012\011\055\154\040\114\105\116" \
+"\011\114\145\156\147\164\150\012\011\055\146\040\106\111\114\105" \
+"\011\104\165\155\160\040\164\157\040\146\151\154\145\040\050\047" \
+"\055\047\040\146\157\162\040\163\164\144\157\165\164\051\000\133" \
+"\055\160\135\040\133\055\163\040\101\104\104\122\135\040\115\124" \
+"\104\137\104\105\126\111\103\105\040\133\106\111\114\105\135\012" \
+"\012\127\162\151\164\145\040\164\157\040\115\124\104\137\104\105" \
+"\126\111\103\105\012\012\011\055\160\011\120\141\144\040\164\157" \
+"\040\160\141\147\145\040\163\151\172\145\012\011\055\163\040\101" \
+"\104\104\122\011\123\164\141\162\164\040\141\144\144\162\145\163" \
+"\163\000\133\055\156\040\101\104\112\125\123\124\135\040\133\120" \
+"\122\117\107\040\101\122\107\123\135\012\012\103\150\141\156\147" \
+"\145\040\163\143\150\145\144\165\154\151\156\147\040\160\162\151" \
+"\157\162\151\164\171\054\040\162\165\156\040\120\122\117\107\012" \
+"\012\011\055\156\040\101\104\112\125\123\124\011\101\144\152\165" \
+"\163\164\040\160\162\151\157\162\151\164\171\040\142\171\040\101" \
+"\104\112\125\123\124\000\120\122\117\107\040\101\122\107\123\012" \
+"\012\122\165\156\040\120\122\117\107\040\151\155\155\165\156\145" \
+"\040\164\157\040\150\141\156\147\165\160\163\054\040\167\151\164" \
+"\150\040\157\165\164\160\165\164\040\164\157\040\141\040\156\157" \
+"\156\055\164\164\171\000\133\055\141\102\142\143\104\144\145\106" \
+"\146\110\150\111\151\114\154\117\157\166\130\170\135\040\133\106" \
+"\111\114\105\135\012\012\120\162\151\156\164\040\106\111\114\105" \
+"\040\050\157\162\040\163\164\144\151\156\051\040\165\156\141\155" \
+"\142\151\147\165\157\165\163\154\171\054\040\141\163\040\157\143" \
+"\164\141\154\040\142\171\164\145\163\040\142\171\040\144\145\146" \
+"\141\165\154\164\000\133\117\120\124\111\117\116\123\135\040\133" \
+"\117\122\111\107\106\111\114\105\040\133\120\101\124\103\110\106" \
+"\111\114\105\135\135\012\012\011\055\160\054\055\055\163\164\162" \
+"\151\160\040\116\011\011\123\164\162\151\160\040\116\040\154\145" \
+"\141\144\151\156\147\040\143\157\155\160\157\156\145\156\164\163" \
+"\040\146\162\157\155\040\146\151\154\145\040\156\141\155\145\163" \
+"\012\011\055\151\054\055\055\151\156\160\165\164\040\104\111\106" \
+"\106\011\011\122\145\141\144\040\104\111\106\106\040\151\156\163" \
+"\164\145\141\144\040\157\146\040\163\164\144\151\156\012\011\055" \
+"\122\054\055\055\162\145\166\145\162\163\145\011\011\122\145\166" \
+"\145\162\163\145\040\160\141\164\143\150\012\011\055\116\054\055" \
+"\055\146\157\162\167\141\162\144\011\011\111\147\156\157\162\145" \
+"\040\141\154\162\145\141\144\171\040\141\160\160\154\151\145\144" \
+"\040\160\141\164\143\150\145\163\012\011\055\105\054\055\055\162" \
+"\145\155\157\166\145\055\145\155\160\164\171\055\146\151\154\145" \
+"\163\011\122\145\155\157\166\145\040\157\165\164\160\165\164\040" \
+"\146\151\154\145\163\040\151\146\040\164\150\145\171\040\142\145" \
+"\143\157\155\145\040\145\155\160\164\171\000\133\055\146\154\156" \
+"\157\166\170\135\040\133\055\163\040\123\111\104\174\055\120\040" \
+"\120\120\111\104\174\120\101\124\124\105\122\116\135\012\012\104" \
+"\151\163\160\154\141\171\040\160\162\157\143\145\163\163\050\145" \
+"\163\051\040\163\145\154\145\143\164\145\144\040\142\171\040\162" \
+"\145\147\145\170\040\120\101\124\124\105\122\116\012\012\011\055" \
+"\154\011\123\150\157\167\040\143\157\155\155\141\156\144\040\156" \
+"\141\155\145\040\164\157\157\012\011\055\146\011\115\141\164\143" \
+"\150\040\141\147\141\151\156\163\164\040\145\156\164\151\162\145" \
+"\040\143\157\155\155\141\156\144\040\154\151\156\145\012\011\055" \
+"\156\011\123\150\157\167\040\164\150\145\040\156\145\167\145\163" \
+"\164\040\160\162\157\143\145\163\163\040\157\156\154\171\012\011" \
+"\055\157\011\123\150\157\167\040\164\150\145\040\157\154\144\145" \
+"\163\164\040\160\162\157\143\145\163\163\040\157\156\154\171\012" \
+"\011\055\166\011\116\145\147\141\164\145\040\164\150\145\040\155" \
+"\141\164\143\150\012\011\055\170\011\115\141\164\143\150\040\167" \
+"\150\157\154\145\040\156\141\155\145\040\050\156\157\164\040\163" \
+"\165\142\163\164\162\151\156\147\051\012\011\055\163\011\115\141" \
+"\164\143\150\040\163\145\163\163\151\157\156\040\111\104\040\050" \
+"\060\040\146\157\162\040\143\165\162\162\145\156\164\051\012\011" \
+"\055\120\011\115\141\164\143\150\040\160\141\162\145\156\164\040" \
+"\160\162\157\143\145\163\163\040\111\104\000\133\117\120\124\111" \
+"\117\116\123\135\040\133\116\101\115\105\135\056\056\056\012\012" \
+"\114\151\163\164\040\120\111\104\163\040\157\146\040\141\154\154" \
+"\040\160\162\157\143\145\163\163\145\163\040\167\151\164\150\040" \
+"\156\141\155\145\163\040\164\150\141\164\040\155\141\164\143\150" \
+"\040\116\101\115\105\163\012\012\011\055\163\011\123\150\157\167" \
+"\040\157\156\154\171\040\157\156\145\040\120\111\104\012\011\055" \
+"\157\040\120\111\104\011\117\155\151\164\040\147\151\166\145\156" \
+"\040\160\151\144\012\011\011\125\163\145\040\045\120\120\111\104" \
+"\040\164\157\040\157\155\151\164\040\160\151\144\040\157\146\040" \
+"\160\151\144\157\146\047\163\040\160\141\162\145\156\164\000\133" \
+"\055\154\174\055\123\111\107\116\101\114\135\040\133\055\146\156" \
+"\157\166\170\135\040\133\055\163\040\123\111\104\174\055\120\040" \
+"\120\120\111\104\174\120\101\124\124\105\122\116\135\012\012\123" \
+"\145\156\144\040\141\040\163\151\147\156\141\154\040\164\157\040" \
+"\160\162\157\143\145\163\163\050\145\163\051\040\163\145\154\145" \
+"\143\164\145\144\040\142\171\040\162\145\147\145\170\040\120\101" \
+"\124\124\105\122\116\012\012\011\055\154\011\114\151\163\164\040" \
+"\141\154\154\040\163\151\147\156\141\154\163\012\011\055\146\011" \
+"\115\141\164\143\150\040\141\147\141\151\156\163\164\040\145\156" \
+"\164\151\162\145\040\143\157\155\155\141\156\144\040\154\151\156" \
+"\145\012\011\055\156\011\123\151\147\156\141\154\040\164\150\145" \
+"\040\156\145\167\145\163\164\040\160\162\157\143\145\163\163\040" \
+"\157\156\154\171\012\011\055\157\011\123\151\147\156\141\154\040" \
+"\164\150\145\040\157\154\144\145\163\164\040\160\162\157\143\145" \
+"\163\163\040\157\156\154\171\012\011\055\166\011\116\145\147\141" \
+"\164\145\040\164\150\145\040\155\141\164\143\150\012\011\055\170" \
+"\011\115\141\164\143\150\040\167\150\157\154\145\040\156\141\155" \
+"\145\040\050\156\157\164\040\163\165\142\163\164\162\151\156\147" \
+"\051\012\011\055\163\011\115\141\164\143\150\040\163\145\163\163" \
+"\151\157\156\040\111\104\040\050\060\040\146\157\162\040\143\165" \
+"\162\162\145\156\164\051\012\011\055\120\011\115\141\164\143\150" \
+"\040\160\141\162\145\156\164\040\160\162\157\143\145\163\163\040" \
+"\111\104\000\133\126\101\122\111\101\102\114\105\135\056\056\056" \
+"\012\012\120\162\151\156\164\040\145\156\166\151\162\157\156\155" \
+"\145\156\164\040\126\101\122\111\101\102\114\105\163\056\012\111" \
+"\146\040\156\157\040\126\101\122\111\101\102\114\105\040\163\160" \
+"\145\143\151\146\151\145\144\054\040\160\162\151\156\164\040\141" \
+"\154\154\056\000\106\117\122\115\101\124\040\133\101\122\107\135" \
+"\056\056\056\012\012\106\157\162\155\141\164\040\141\156\144\040" \
+"\160\162\151\156\164\040\101\122\107\050\163\051\040\141\143\143" \
+"\157\162\144\151\156\147\040\164\157\040\106\117\122\115\101\124" \
+"\040\050\141\055\154\141\040\103\040\160\162\151\156\164\146\051" \
+"\000\012\012\123\150\157\167\040\154\151\163\164\040\157\146\040" \
+"\160\162\157\143\145\163\163\145\163\012\012\011\167\011\127\151" \
+"\144\145\040\157\165\164\160\165\164\012\011\154\011\114\157\156" \
+"\147\040\157\165\164\160\165\164\012\011\124\011\123\150\157\167" \
+"\040\164\150\162\145\141\144\163\000\133\055\160\135\040\133\120" \
+"\111\104\174\125\123\105\122\135\012\012\104\151\163\160\154\141" \
+"\171\040\160\162\157\143\145\163\163\040\164\162\145\145\054\040" \
+"\157\160\164\151\157\156\141\154\154\171\040\163\164\141\162\164" \
+"\040\146\162\157\155\040\125\123\105\122\040\157\162\040\120\111" \
+"\104\012\012\011\055\160\011\123\150\157\167\040\160\151\144\163" \
+"\000\012\012\120\162\151\156\164\040\164\150\145\040\146\165\154" \
+"\154\040\146\151\154\145\156\141\155\145\040\157\146\040\164\150" \
+"\145\040\143\165\162\162\145\156\164\040\167\157\162\153\151\156" \
+"\147\040\144\151\162\145\143\164\157\162\171\000\012\012\120\162" \
+"\151\156\164\040\164\150\145\040\144\145\166\151\143\145\040\156" \
+"\157\144\145\040\141\163\163\157\143\151\141\164\145\144\040\167" \
+"\151\164\150\040\164\150\145\040\146\151\154\145\163\171\163\164" \
+"\145\155\040\155\157\165\156\164\145\144\040\141\164\040\047\057" \
+"\047\000\133\055\146\156\166\135\040\106\111\114\105\012\012\104" \
+"\151\163\160\154\141\171\040\164\150\145\040\166\141\154\165\145" \
+"\040\157\146\040\141\040\163\171\155\154\151\156\153\012\012\011" \
+"\055\146\011\103\141\156\157\156\151\143\141\154\151\172\145\040" \
+"\142\171\040\146\157\154\154\157\167\151\156\147\040\141\154\154" \
+"\040\163\171\155\154\151\156\153\163\012\011\055\156\011\104\157" \
+"\156\047\164\040\141\144\144\040\156\145\167\154\151\156\145\012" \
+"\011\055\166\011\126\145\162\142\157\163\145\000\106\111\114\105" \
+"\056\056\056\012\012\122\145\164\165\162\156\040\164\150\145\040" \
+"\141\142\163\157\154\165\164\145\040\160\141\164\150\156\141\155" \
+"\145\163\040\157\146\040\147\151\166\145\156\040\106\111\114\105" \
+"\000\173\173\055\156\040\111\116\103\122\105\115\105\116\124\175" \
+"\040\174\040\120\122\111\117\122\111\124\131\175\040\133\133\055" \
+"\160\040\174\040\055\147\040\174\040\055\165\135\040\111\104\056" \
+"\056\056\135\012\012\103\150\141\156\147\145\040\163\143\150\145" \
+"\144\165\154\151\156\147\040\160\162\151\157\162\151\164\171\040" \
+"\146\157\162\040\141\040\162\165\156\156\151\156\147\040\160\162" \
+"\157\143\145\163\163\012\012\011\055\156\011\101\144\152\165\163" \
+"\164\040\143\165\162\162\145\156\164\040\156\151\143\145\040\166" \
+"\141\154\165\145\040\050\163\155\141\154\154\145\162\040\151\163" \
+"\040\146\141\163\164\145\162\051\012\011\055\160\011\120\162\157" \
+"\143\145\163\163\040\151\144\050\163\051\040\050\144\145\146\141" \
+"\165\154\164\051\012\011\055\147\011\120\162\157\143\145\163\163" \
+"\040\147\162\157\165\160\040\151\144\050\163\051\012\011\055\165" \
+"\011\120\162\157\143\145\163\163\040\165\163\145\162\040\156\141" \
+"\155\145\050\163\051\040\141\156\144\057\157\162\040\151\144\050" \
+"\163\051\000\012\012\122\145\163\145\164\040\164\150\145\040\163" \
+"\143\162\145\145\156\000\012\012\122\145\163\151\172\145\040\164" \
+"\150\145\040\163\143\162\145\145\156\000\133\106\111\114\105\135" \
+"\056\056\056\012\012\122\145\166\145\162\163\145\040\154\151\156" \
+"\145\163\040\157\146\040\106\111\114\105\000\133\055\151\162\146" \
+"\135\040\106\111\114\105\056\056\056\012\012\122\145\155\157\166" \
+"\145\040\050\165\156\154\151\156\153\051\040\106\111\114\105\163" \
+"\012\012\011\055\151\011\101\154\167\141\171\163\040\160\162\157" \
+"\155\160\164\040\142\145\146\157\162\145\040\162\145\155\157\166" \
+"\151\156\147\012\011\055\146\011\116\145\166\145\162\040\160\162" \
+"\157\155\160\164\012\011\055\122\054\055\162\011\122\145\143\165" \
+"\162\163\145\000\133\117\120\124\111\117\116\123\135\040\104\111" \
+"\122\105\103\124\117\122\131\056\056\056\012\012\122\145\155\157" \
+"\166\145\040\104\111\122\105\103\124\117\122\131\040\151\146\040" \
+"\151\164\040\151\163\040\145\155\160\164\171\012\012\011\055\160" \
+"\174\055\055\160\141\162\145\156\164\163\011\111\156\143\154\165" \
+"\144\145\040\160\141\162\145\156\164\163\012\011\055\055\151\147" \
+"\156\157\162\145\055\146\141\151\154\055\157\156\055\156\157\156" \
+"\055\145\155\160\164\171\000\133\055\161\146\167\162\163\166\135" \
+"\040\115\117\104\125\114\105\040\133\163\171\155\142\157\154\075" \
+"\166\141\154\165\145\135\056\056\056\012\012\011\055\162\011\122" \
+"\145\155\157\166\145\040\115\117\104\125\114\105\040\050\163\164" \
+"\141\143\153\163\051\040\157\162\040\144\157\040\141\165\164\157" \
+"\143\154\145\141\156\012\011\055\161\011\121\165\151\145\164\012" \
+"\011\055\166\011\126\145\162\142\157\163\145\012\011\055\146\011" \
+"\106\157\162\143\145\012\011\055\167\011\127\141\151\164\040\146" \
+"\157\162\040\165\156\154\157\141\144\012\011\055\163\011\122\145" \
+"\160\157\162\164\040\166\151\141\040\163\171\163\154\157\147\040" \
+"\151\156\163\164\145\141\144\040\157\146\040\163\164\144\145\162" \
+"\162\000\133\055\141\040\101\122\107\135\056\056\056\040\133\055" \
+"\165\040\125\115\101\123\113\135\040\104\111\122\105\103\124\117" \
+"\122\131\012\012\122\165\156\040\141\040\142\165\156\143\150\040" \
+"\157\146\040\163\143\162\151\160\164\163\040\151\156\040\104\111" \
+"\122\105\103\124\117\122\131\012\012\011\055\141\040\101\122\107" \
+"\011\011\120\141\163\163\040\101\122\107\040\141\163\040\141\162" \
+"\147\165\155\145\156\164\040\164\157\040\163\143\162\151\160\164" \
+"\163\012\011\055\165\040\125\115\101\123\113\011\123\145\164\040" \
+"\125\115\101\123\113\040\142\145\146\157\162\145\040\162\165\156" \
+"\156\151\156\147\040\163\143\162\151\160\164\163\000\133\055\151" \
+"\156\162\105\135\040\133\055\146\040\106\111\114\105\135\056\056" \
+"\056\040\133\055\145\040\103\115\104\135\056\056\056\040\133\106" \
+"\111\114\105\135\056\056\056\012\157\162\072\040\163\145\144\040" \
+"\133\055\151\156\162\105\135\040\103\115\104\040\133\106\111\114" \
+"\105\135\056\056\056\012\012\011\055\145\040\103\115\104\011\101" \
+"\144\144\040\103\115\104\040\164\157\040\163\145\144\040\143\157" \
+"\155\155\141\156\144\163\040\164\157\040\142\145\040\145\170\145" \
+"\143\165\164\145\144\012\011\055\146\040\106\111\114\105\011\101" \
+"\144\144\040\106\111\114\105\040\143\157\156\164\145\156\164\163" \
+"\040\164\157\040\163\145\144\040\143\157\155\155\141\156\144\163" \
+"\040\164\157\040\142\145\040\145\170\145\143\165\164\145\144\012" \
+"\011\055\151\133\123\106\130\135\011\105\144\151\164\040\146\151" \
+"\154\145\163\040\151\156\055\160\154\141\143\145\040\050\157\164" \
+"\150\145\162\167\151\163\145\040\163\145\156\144\163\040\164\157" \
+"\040\163\164\144\157\165\164\051\012\011\011\117\160\164\151\157" \
+"\156\141\154\154\171\040\142\141\143\153\040\146\151\154\145\163" \
+"\040\165\160\054\040\141\160\160\145\156\144\151\156\147\040\123" \
+"\106\130\012\011\055\156\011\123\165\160\160\162\145\163\163\040" \
+"\141\165\164\157\155\141\164\151\143\040\160\162\151\156\164\151" \
+"\156\147\040\157\146\040\160\141\164\164\145\162\156\040\163\160" \
+"\141\143\145\012\011\055\162\054\055\105\011\125\163\145\040\145" \
+"\170\164\145\156\144\145\144\040\162\145\147\145\170\040\163\171" \
+"\156\164\141\170\012\012\111\146\040\156\157\040\055\145\040\157" \
+"\162\040\055\146\054\040\164\150\145\040\146\151\162\163\164\040" \
+"\156\157\156\055\157\160\164\151\157\156\040\141\162\147\165\155" \
+"\145\156\164\040\151\163\040\164\150\145\040\163\145\144\040\143" \
+"\157\155\155\141\156\144\040\163\164\162\151\156\147\056\012\122" \
+"\145\155\141\151\156\151\156\147\040\141\162\147\165\155\145\156" \
+"\164\163\040\141\162\145\040\151\156\160\165\164\040\146\151\154" \
+"\145\163\040\050\163\164\144\151\156\040\151\146\040\156\157\156" \
+"\145\051\056\000\133\055\167\135\040\133\055\163\040\123\105\120" \
+"\135\040\133\106\111\122\123\124\040\133\111\116\103\135\135\040" \
+"\114\101\123\124\012\012\120\162\151\156\164\040\156\165\155\142" \
+"\145\162\163\040\146\162\157\155\040\106\111\122\123\124\040\164" \
+"\157\040\114\101\123\124\054\040\151\156\040\163\164\145\160\163" \
+"\040\157\146\040\111\116\103\056\012\106\111\122\123\124\054\040" \
+"\111\116\103\040\144\145\146\141\165\154\164\040\164\157\040\061" \
+"\056\012\012\011\055\167\011\120\141\144\040\164\157\040\154\141" \
+"\163\164\040\167\151\164\150\040\154\145\141\144\151\156\147\040" \
+"\172\145\162\157\163\012\011\055\163\040\123\105\120\011\123\164" \
+"\162\151\156\147\040\163\145\160\141\162\141\164\157\162\000\133" \
+"\055\162\135\040\133\104\105\126\111\103\105\135\012\012\122\145" \
+"\144\151\162\145\143\164\040\163\171\163\164\145\155\040\143\157" \
+"\156\163\157\154\145\040\157\165\164\160\165\164\040\164\157\040" \
+"\104\105\126\111\103\105\040\050\144\145\146\141\165\154\164\072" \
+"\040\057\144\145\166\057\164\164\171\051\012\012\011\055\162\011" \
+"\122\145\163\145\164\040\157\165\164\160\165\164\040\164\157\040" \
+"\057\144\145\166\057\143\157\156\163\157\154\145\000\133\055\147" \
+"\141\142\107\166\172\126\135\040\104\105\126\111\103\105\040\133" \
+"\120\101\122\101\115\105\124\105\122\040\133\101\122\107\135\135" \
+"\056\056\056\012\012\122\145\161\165\145\163\164\040\157\162\040" \
+"\163\145\164\040\114\151\156\165\170\040\163\145\162\151\141\154" \
+"\040\160\157\162\164\040\151\156\146\157\162\155\141\164\151\157" \
+"\156\012\012\011\055\147\011\111\156\164\145\162\160\162\145\164" \
+"\040\160\141\162\141\155\145\164\145\162\163\040\141\163\040\154" \
+"\151\163\164\040\157\146\040\144\145\166\151\143\145\163\040\146" \
+"\157\162\040\162\145\160\157\162\164\151\156\147\012\011\055\141" \
+"\011\120\162\151\156\164\040\141\154\154\040\141\166\141\151\154" \
+"\141\142\154\145\040\151\156\146\157\162\155\141\164\151\157\156" \
+"\012\011\055\142\011\120\162\151\156\164\040\163\165\155\155\141" \
+"\162\171\040\151\156\146\157\162\155\141\164\151\157\156\012\011" \
+"\055\107\011\120\162\151\156\164\040\151\156\040\146\157\162\155" \
+"\040\167\150\151\143\150\040\143\141\156\040\142\145\040\146\145" \
+"\144\040\142\141\143\153\012\011\011\164\157\040\163\145\164\163" \
+"\145\162\151\141\154\040\141\163\040\143\157\155\155\141\156\144" \
+"\040\154\151\156\145\040\160\141\162\141\155\145\164\145\162\163" \
+"\012\011\055\172\011\132\145\162\157\040\157\165\164\040\163\145" \
+"\162\151\141\154\040\146\154\141\147\163\040\142\145\146\157\162" \
+"\145\040\163\145\164\164\151\156\147\012\011\055\166\011\126\145" \
+"\162\142\157\163\145\012\012\120\141\162\141\155\145\164\145\162" \
+"\163\072\040\050\052\040\075\040\164\141\153\145\163\040\141\156" \
+"\040\141\162\147\165\155\145\156\164\054\040\136\040\075\040\143" \
+"\141\156\040\142\145\040\164\165\162\156\145\144\040\157\146\146" \
+"\040\142\171\040\160\162\145\143\145\144\151\156\147\040\136\051" \
+"\012\011\052\160\157\162\164\054\040\052\151\162\161\054\040\052" \
+"\144\151\166\151\163\157\162\054\040\052\165\141\162\164\054\040" \
+"\052\142\141\165\144\137\142\141\163\145\054\040\052\143\154\157" \
+"\163\145\137\144\145\154\141\171\054\040\052\143\154\157\163\151" \
+"\156\147\137\167\141\151\164\054\012\011\136\146\157\165\162\160" \
+"\157\162\164\054\040\136\141\165\164\157\137\151\162\161\054\040" \
+"\136\163\153\151\160\137\164\145\163\164\054\040\136\163\141\153" \
+"\054\040\136\163\145\163\163\151\157\156\137\154\157\143\153\157" \
+"\165\164\054\040\136\160\147\162\160\137\154\157\143\153\157\165" \
+"\164\054\012\011\136\143\141\154\154\157\165\164\137\156\157\150" \
+"\165\160\054\040\136\163\160\154\151\164\137\164\145\162\155\151" \
+"\157\163\054\040\136\150\165\160\137\156\157\164\151\146\171\054" \
+"\040\136\154\157\167\137\154\141\164\145\156\143\171\054\040\141" \
+"\165\164\157\143\157\156\146\151\147\054\012\011\163\160\144\137" \
+"\156\157\162\155\141\154\054\040\163\160\144\137\150\151\054\040" \
+"\163\160\144\137\166\150\151\054\040\163\160\144\137\163\150\151" \
+"\054\040\163\160\144\137\167\141\162\160\054\040\163\160\144\137" \
+"\143\165\163\164\012\012\125\101\122\124\040\164\171\160\145\163" \
+"\072\012\011\165\156\153\156\157\167\156\054\040\070\062\065\060" \
+"\054\040\061\066\064\065\060\054\040\061\066\065\065\060\054\040" \
+"\061\066\065\065\060\101\054\040\103\151\162\162\165\163\054\040" \
+"\061\066\066\065\060\054\040\061\066\066\065\060\126\062\054\040" \
+"\061\066\067\065\060\054\012\011\061\066\071\065\060\054\040\061" \
+"\066\071\065\064\054\040\061\066\066\065\064\054\040\061\066\070" \
+"\065\060\054\040\122\123\101\054\040\116\123\061\066\065\065\060" \
+"\101\054\040\130\123\103\101\114\105\054\040\122\115\071\060\060" \
+"\060\054\040\117\103\124\105\117\116\054\040\101\122\067\054\012" \
+"\011\125\066\137\061\066\065\065\060\101\000\120\122\117\107\040" \
+"\101\122\107\123\012\012\122\165\156\040\120\122\117\107\040\151" \
+"\156\040\141\040\156\145\167\040\163\145\163\163\151\157\156\056" \
+"\040\120\122\117\107\040\167\151\154\154\040\150\141\166\145\040" \
+"\156\157\040\143\157\156\164\162\157\154\154\151\156\147\040\164" \
+"\145\162\155\151\156\141\154\012\141\156\144\040\167\151\154\154" \
+"\040\156\157\164\040\142\145\040\141\146\146\145\143\164\145\144" \
+"\040\142\171\040\153\145\171\142\157\141\162\144\040\163\151\147" \
+"\156\141\154\163\040\050\103\164\162\154\055\103\040\145\164\143" \
+"\051\056\012\123\145\145\040\163\145\164\163\151\144\050\062\051" \
+"\040\146\157\162\040\144\145\164\141\151\154\163\056\000\133\055" \
+"\057\053\117\120\124\111\117\116\123\135\040\133\055\057\053\157" \
+"\040\117\120\124\135\056\056\056\040\133\055\143\040\047\123\103" \
+"\122\111\120\124\047\040\133\101\122\107\060\040\133\101\122\107" \
+"\123\135\135\040\057\040\106\111\114\105\040\133\101\122\107\123" \
+"\135\135\012\012\125\156\151\170\040\163\150\145\154\154\040\151" \
+"\156\164\145\162\160\162\145\164\145\162\000\133\055\143\133\163" \
+"\167\135\135\040\133\106\111\114\105\135\056\056\056\012\012\120" \
+"\162\151\156\164\040\157\162\040\143\150\145\143\153\040\123\110" \
+"\101\061\040\143\150\145\143\153\163\165\155\163\012\012\011\055" \
+"\143\011\103\150\145\143\153\040\163\165\155\163\040\141\147\141" \
+"\151\156\163\164\040\154\151\163\164\040\151\156\040\106\111\114" \
+"\105\163\012\011\055\163\011\104\157\156\047\164\040\157\165\164" \
+"\160\165\164\040\141\156\171\164\150\151\156\147\054\040\163\164" \
+"\141\164\165\163\040\143\157\144\145\040\163\150\157\167\163\040" \
+"\163\165\143\143\145\163\163\012\011\055\167\011\127\141\162\156" \
+"\040\141\142\157\165\164\040\151\155\160\162\157\160\145\162\154" \
+"\171\040\146\157\162\155\141\164\164\145\144\040\143\150\145\143" \
+"\153\163\165\155\040\154\151\156\145\163\000\133\055\143\133\163" \
+"\167\135\135\040\133\106\111\114\105\135\056\056\056\012\012\120" \
+"\162\151\156\164\040\157\162\040\143\150\145\143\153\040\123\110" \
+"\101\062\065\066\040\143\150\145\143\153\163\165\155\163\012\012" \
+"\011\055\143\011\103\150\145\143\153\040\163\165\155\163\040\141" \
+"\147\141\151\156\163\164\040\154\151\163\164\040\151\156\040\106" \
+"\111\114\105\163\012\011\055\163\011\104\157\156\047\164\040\157" \
+"\165\164\160\165\164\040\141\156\171\164\150\151\156\147\054\040" \
+"\163\164\141\164\165\163\040\143\157\144\145\040\163\150\157\167" \
+"\163\040\163\165\143\143\145\163\163\012\011\055\167\011\127\141" \
+"\162\156\040\141\142\157\165\164\040\151\155\160\162\157\160\145" \
+"\162\154\171\040\146\157\162\155\141\164\164\145\144\040\143\150" \
+"\145\143\153\163\165\155\040\154\151\156\145\163\000\133\055\143" \
+"\133\163\167\135\135\040\133\106\111\114\105\135\056\056\056\012" \
+"\012\120\162\151\156\164\040\157\162\040\143\150\145\143\153\040" \
+"\123\110\101\065\061\062\040\143\150\145\143\153\163\165\155\163" \
+"\012\012\011\055\143\011\103\150\145\143\153\040\163\165\155\163" \
+"\040\141\147\141\151\156\163\164\040\154\151\163\164\040\151\156" \
+"\040\106\111\114\105\163\012\011\055\163\011\104\157\156\047\164" \
+"\040\157\165\164\160\165\164\040\141\156\171\164\150\151\156\147" \
+"\054\040\163\164\141\164\165\163\040\143\157\144\145\040\163\150" \
+"\157\167\163\040\163\165\143\143\145\163\163\012\011\055\167\011" \
+"\127\141\162\156\040\141\142\157\165\164\040\151\155\160\162\157" \
+"\160\145\162\154\171\040\146\157\162\155\141\164\164\145\144\040" \
+"\143\150\145\143\153\163\165\155\040\154\151\156\145\163\000\133" \
+"\116\135\056\056\056\012\012\120\141\165\163\145\040\146\157\162" \
+"\040\141\040\164\151\155\145\040\145\161\165\141\154\040\164\157" \
+"\040\164\150\145\040\164\157\164\141\154\040\157\146\040\164\150" \
+"\145\040\141\162\147\163\040\147\151\166\145\156\054\040\167\150" \
+"\145\162\145\040\145\141\143\150\040\141\162\147\040\143\141\156" \
+"\012\150\141\166\145\040\141\156\040\157\160\164\151\157\156\141" \
+"\154\040\163\165\146\146\151\170\040\157\146\040\050\163\051\145" \
+"\143\157\156\144\163\054\040\050\155\051\151\156\165\164\145\163" \
+"\054\040\050\150\051\157\165\162\163\054\040\157\162\040\050\144" \
+"\051\141\171\163\000\133\055\156\162\165\135\040\133\106\111\114" \
+"\105\135\056\056\056\012\012\123\157\162\164\040\154\151\156\145" \
+"\163\040\157\146\040\164\145\170\164\012\012\011\055\156\011\123" \
+"\157\162\164\040\156\165\155\142\145\162\163\012\011\055\162\011" \
+"\122\145\166\145\162\163\145\040\163\157\162\164\040\157\162\144" \
+"\145\162\012\011\055\165\011\123\165\160\160\162\145\163\163\040" \
+"\144\165\160\154\151\143\141\164\145\040\154\151\156\145\163\000" \
+"\133\117\120\124\111\117\116\123\135\040\133\111\116\120\125\124" \
+"\040\133\120\122\105\106\111\130\135\135\012\012\011\055\142\040" \
+"\116\133\153\174\155\135\011\123\160\154\151\164\040\142\171\040" \
+"\116\040\050\153\151\154\157\174\155\145\147\141\051\142\171\164" \
+"\145\163\012\011\055\154\040\116\011\011\123\160\154\151\164\040" \
+"\142\171\040\116\040\154\151\156\145\163\012\011\055\141\040\116" \
+"\011\011\125\163\145\040\116\040\154\145\164\164\145\162\163\040" \
+"\141\163\040\163\165\146\146\151\170\000\133\117\120\124\111\117" \
+"\116\123\135\040\106\111\114\105\056\056\056\012\012\104\151\163" \
+"\160\154\141\171\040\146\151\154\145\040\050\144\145\146\141\165" \
+"\154\164\051\040\157\162\040\146\151\154\145\163\171\163\164\145" \
+"\155\040\163\164\141\164\165\163\012\012\011\055\146\011\104\151" \
+"\163\160\154\141\171\040\146\151\154\145\163\171\163\164\145\155" \
+"\040\163\164\141\164\165\163\012\011\055\114\011\106\157\154\154" \
+"\157\167\040\154\151\156\153\163\012\011\055\164\011\104\151\163" \
+"\160\154\141\171\040\151\156\146\157\040\151\156\040\164\145\162" \
+"\163\145\040\146\157\162\155\000\133\055\141\146\157\135\040\133" \
+"\055\156\040\114\105\116\135\040\133\106\111\114\105\135\056\056" \
+"\056\012\012\104\151\163\160\154\141\171\040\160\162\151\156\164" \
+"\141\142\154\145\040\163\164\162\151\156\147\163\040\151\156\040" \
+"\141\040\142\151\156\141\162\171\040\146\151\154\145\012\012\011" \
+"\055\141\011\123\143\141\156\040\167\150\157\154\145\040\146\151" \
+"\154\145\040\050\144\145\146\141\165\154\164\051\012\011\055\146" \
+"\011\120\162\145\143\145\144\145\040\163\164\162\151\156\147\163" \
+"\040\167\151\164\150\040\146\151\154\145\156\141\155\145\163\012" \
+"\011\055\156\040\114\105\116\011\101\164\040\154\145\141\163\164" \
+"\040\114\105\116\040\143\150\141\162\141\143\164\145\162\163\040" \
+"\146\157\162\155\040\141\040\163\164\162\151\156\147\040\050\144" \
+"\145\146\141\165\154\164\040\064\051\012\011\055\157\011\120\162" \
+"\145\143\145\144\145\040\163\164\162\151\156\147\163\040\167\151" \
+"\164\150\040\144\145\143\151\155\141\154\040\157\146\146\163\145" \
+"\164\163\000\133\055\141\174\147\135\040\133\055\106\040\104\105" \
+"\126\111\103\105\135\040\133\123\105\124\124\111\116\107\135\056" \
+"\056\056\012\012\127\151\164\150\157\165\164\040\141\162\147\165" \
+"\155\145\156\164\163\054\040\160\162\151\156\164\163\040\142\141" \
+"\165\144\040\162\141\164\145\054\040\154\151\156\145\040\144\151" \
+"\163\143\151\160\154\151\156\145\054\012\141\156\144\040\144\145" \
+"\166\151\141\164\151\157\156\163\040\146\162\157\155\040\163\164" \
+"\164\171\040\163\141\156\145\012\012\011\055\106\040\104\105\126" \
+"\111\103\105\011\117\160\145\156\040\144\145\166\151\143\145\040" \
+"\151\156\163\164\145\141\144\040\157\146\040\163\164\144\151\156" \
+"\012\011\055\141\011\011\120\162\151\156\164\040\141\154\154\040" \
+"\143\165\162\162\145\156\164\040\163\145\164\164\151\156\147\163" \
+"\040\151\156\040\150\165\155\141\156\055\162\145\141\144\141\142" \
+"\154\145\040\146\157\162\155\012\011\055\147\011\011\120\162\151" \
+"\156\164\040\151\156\040\163\164\164\171\055\162\145\141\144\141" \
+"\142\154\145\040\146\157\162\155\012\011\133\123\105\124\124\111" \
+"\116\107\135\011\123\145\145\040\155\141\156\160\141\147\145\000" \
+"\133\055\141\135\040\133\104\105\126\111\103\105\135\012\012\123" \
+"\164\157\160\040\163\167\141\160\160\151\156\147\040\157\156\040" \
+"\104\105\126\111\103\105\012\012\011\055\141\011\123\164\157\160" \
+"\040\163\167\141\160\160\151\156\147\040\157\156\040\141\154\154" \
+"\040\163\167\141\160\040\144\145\166\151\143\145\163\000\133\055" \
+"\141\135\040\133\104\105\126\111\103\105\135\012\012\123\164\141" \
+"\162\164\040\163\167\141\160\160\151\156\147\040\157\156\040\104" \
+"\105\126\111\103\105\012\012\011\055\141\011\123\164\141\162\164" \
+"\040\163\167\141\160\160\151\156\147\040\157\156\040\141\154\154" \
+"\040\163\167\141\160\040\144\145\166\151\143\145\163\000\012\012" \
+"\127\162\151\164\145\040\141\154\154\040\142\165\146\146\145\162" \
+"\145\144\040\142\154\157\143\153\163\040\164\157\040\144\151\163" \
+"\153\000\133\117\120\124\111\117\116\123\135\040\133\113\105\131" \
+"\133\075\126\101\114\125\105\135\135\056\056\056\012\012\123\150" \
+"\157\167\057\163\145\164\040\153\145\162\156\145\154\040\160\141" \
+"\162\141\155\145\164\145\162\163\012\012\011\055\145\011\104\157" \
+"\156\047\164\040\167\141\162\156\040\141\142\157\165\164\040\165" \
+"\156\153\156\157\167\156\040\153\145\171\163\012\011\055\156\011" \
+"\104\157\156\047\164\040\163\150\157\167\040\153\145\171\040\156" \
+"\141\155\145\163\012\011\055\141\011\123\150\157\167\040\141\154" \
+"\154\040\166\141\154\165\145\163\012\011\055\167\011\123\145\164" \
+"\040\166\141\154\165\145\163\012\011\055\160\040\106\111\114\105" \
+"\011\123\145\164\040\166\141\154\165\145\163\040\146\162\157\155" \
+"\040\106\111\114\105\040\050\144\145\146\141\165\154\164\040\057" \
+"\145\164\143\057\163\171\163\143\164\154\056\143\157\156\146\051" \
+"\012\011\055\161\040\040\040\040\040\040\123\145\164\040\166\141" \
+"\154\165\145\163\040\163\151\154\145\156\164\154\171\000\133\106" \
+"\111\114\105\135\056\056\056\012\012\103\157\156\143\141\164\145" \
+"\156\141\164\145\040\106\111\114\105\163\040\141\156\144\040\160" \
+"\162\151\156\164\040\164\150\145\155\040\151\156\040\162\145\166" \
+"\145\162\163\145\000\133\117\120\124\111\117\116\123\135\040\133" \
+"\106\111\114\105\135\056\056\056\012\012\120\162\151\156\164\040" \
+"\154\141\163\164\040\061\060\040\154\151\156\145\163\040\157\146" \
+"\040\145\141\143\150\040\106\111\114\105\040\050\157\162\040\163" \
+"\164\144\151\156\051\040\164\157\040\163\164\144\157\165\164\056" \
+"\012\127\151\164\150\040\155\157\162\145\040\164\150\141\156\040" \
+"\157\156\145\040\106\111\114\105\054\040\160\162\145\143\145\144" \
+"\145\040\145\141\143\150\040\167\151\164\150\040\141\040\146\151" \
+"\154\145\156\141\155\145\040\150\145\141\144\145\162\056\012\012" \
+"\011\055\146\011\011\120\162\151\156\164\040\144\141\164\141\040" \
+"\141\163\040\146\151\154\145\040\147\162\157\167\163\012\011\055" \
+"\163\040\123\105\103\117\116\104\123\011\127\141\151\164\040\123" \
+"\105\103\117\116\104\123\040\142\145\164\167\145\145\156\040\162" \
+"\145\141\144\163\040\167\151\164\150\040\055\146\012\011\055\156" \
+"\040\116\133\153\142\155\135\011\120\162\151\156\164\040\154\141" \
+"\163\164\040\116\040\154\151\156\145\163\012\011\055\156\040\053" \
+"\116\133\153\142\155\135\011\123\164\141\162\164\040\157\156\040" \
+"\116\164\150\040\154\151\156\145\040\141\156\144\040\160\162\151" \
+"\156\164\040\164\150\145\040\162\145\163\164\012\011\055\143\040" \
+"\133\053\135\116\133\153\142\155\135\011\120\162\151\156\164\040" \
+"\154\141\163\164\040\116\040\142\171\164\145\163\012\011\055\161" \
+"\011\011\116\145\166\145\162\040\160\162\151\156\164\040\150\145" \
+"\141\144\145\162\163\012\011\055\166\011\011\101\154\167\141\171" \
+"\163\040\160\162\151\156\164\040\150\145\141\144\145\162\163\012" \
+"\012\116\040\155\141\171\040\142\145\040\163\165\146\146\151\170" \
+"\145\144\040\142\171\040\153\040\050\170\061\060\062\064\051\054" \
+"\040\142\040\050\170\065\061\062\051\054\040\157\162\040\155\040" \
+"\050\170\061\060\062\064\136\062\051\056\000\055\133\143\170\164" \
+"\172\152\150\155\166\117\135\040\133\055\130\040\106\111\114\105" \
+"\135\040\133\055\124\040\106\111\114\105\135\040\133\055\146\040" \
+"\124\101\122\106\111\114\105\135\040\133\055\103\040\104\111\122" \
+"\135\040\133\106\111\114\105\135\056\056\056\012\012\103\162\145" \
+"\141\164\145\054\040\145\170\164\162\141\143\164\054\040\157\162" \
+"\040\154\151\163\164\040\146\151\154\145\163\040\146\162\157\155" \
+"\040\141\040\164\141\162\040\146\151\154\145\012\012\117\160\145" \
+"\162\141\164\151\157\156\072\012\011\143\011\103\162\145\141\164" \
+"\145\012\011\170\011\105\170\164\162\141\143\164\012\011\164\011" \
+"\114\151\163\164\012\011\146\011\116\141\155\145\040\157\146\040" \
+"\124\101\122\106\111\114\105\040\050\047\055\047\040\146\157\162" \
+"\040\163\164\144\151\156\057\157\165\164\051\012\011\103\011\103" \
+"\150\141\156\147\145\040\164\157\040\104\111\122\040\142\145\146" \
+"\157\162\145\040\157\160\145\162\141\164\151\157\156\012\011\166" \
+"\011\126\145\162\142\157\163\145\012\011\172\011\050\104\145\051" \
+"\143\157\155\160\162\145\163\163\040\165\163\151\156\147\040\147" \
+"\172\151\160\012\011\152\011\050\104\145\051\143\157\155\160\162" \
+"\145\163\163\040\165\163\151\156\147\040\142\172\151\160\062\012" \
+"\011\117\011\105\170\164\162\141\143\164\040\164\157\040\163\164" \
+"\144\157\165\164\012\011\150\011\106\157\154\154\157\167\040\163" \
+"\171\155\154\151\156\153\163\012\011\155\011\104\157\156\047\164" \
+"\040\162\145\163\164\157\162\145\040\155\164\151\155\145\012\011" \
+"\145\170\143\154\165\144\145\011\106\151\154\145\040\164\157\040" \
+"\145\170\143\154\165\144\145\012\011\130\011\106\151\154\145\040" \
+"\167\151\164\150\040\156\141\155\145\163\040\164\157\040\145\170" \
+"\143\154\165\144\145\012\011\124\011\106\151\154\145\040\167\151" \
+"\164\150\040\156\141\155\145\163\040\164\157\040\151\156\143\154" \
+"\165\144\145\000\133\055\141\151\135\040\133\106\111\114\105\135" \
+"\056\056\056\012\012\103\157\160\171\040\163\164\144\151\156\040" \
+"\164\157\040\145\141\143\150\040\106\111\114\105\054\040\141\156" \
+"\144\040\141\154\163\157\040\164\157\040\163\164\144\157\165\164" \
+"\012\012\011\055\141\011\101\160\160\145\156\144\040\164\157\040" \
+"\164\150\145\040\147\151\166\145\156\040\106\111\114\105\163\054" \
+"\040\144\157\156\047\164\040\157\166\145\162\167\162\151\164\145" \
+"\012\011\055\151\011\111\147\156\157\162\145\040\151\156\164\145" \
+"\162\162\165\160\164\040\163\151\147\156\141\154\163\040\050\123" \
+"\111\107\111\116\124\051\000\105\130\120\122\105\123\123\111\117" \
+"\116\040\135\012\012\103\150\145\143\153\040\146\151\154\145\040" \
+"\164\171\160\145\163\054\040\143\157\155\160\141\162\145\040\166" \
+"\141\154\165\145\163\040\145\164\143\056\040\122\145\164\165\162" \
+"\156\040\141\040\060\057\061\040\145\170\151\164\040\143\157\144" \
+"\145\012\144\145\160\145\156\144\151\156\147\040\157\156\040\154" \
+"\157\147\151\143\141\154\040\166\141\154\165\145\040\157\146\040" \
+"\105\130\120\122\105\123\123\111\117\116\000\133\055\166\135\040" \
+"\120\122\117\107\040\101\122\107\123\012\012\122\165\156\040\120" \
+"\122\117\107\054\040\144\151\163\160\154\141\171\040\162\145\163" \
+"\157\165\162\143\145\040\165\163\141\147\145\040\167\150\145\156" \
+"\040\151\164\040\145\170\151\164\163\012\012\011\055\166\011\126" \
+"\145\162\142\157\163\145\000\133\055\142\135\040\133\055\156\103" \
+"\117\125\116\124\135\040\133\055\144\123\105\103\117\116\104\123" \
+"\135\040\133\055\155\135\012\012\120\162\157\166\151\144\145\040" \
+"\141\040\166\151\145\167\040\157\146\040\160\162\157\143\145\163" \
+"\163\040\141\143\164\151\166\151\164\171\040\151\156\040\162\145" \
+"\141\154\040\164\151\155\145\056\012\122\145\141\144\040\164\150" \
+"\145\040\163\164\141\164\165\163\040\157\146\040\141\154\154\040" \
+"\160\162\157\143\145\163\163\145\163\040\146\162\157\155\040\057" \
+"\160\162\157\143\040\145\141\143\150\040\123\105\103\117\116\104" \
+"\123\012\141\156\144\040\144\151\163\160\154\141\171\040\141\040" \
+"\163\143\162\145\145\156\146\165\154\040\157\146\040\164\150\145" \
+"\155\056\012\113\145\171\163\072\012\011\116\057\115\057\120\057" \
+"\124\072\040\163\150\157\167\040\103\120\125\040\165\163\141\147" \
+"\145\054\040\163\157\162\164\040\142\171\040\160\151\144\057\155" \
+"\145\155\057\143\160\165\057\164\151\155\145\012\011\123\072\040" \
+"\163\150\157\167\040\155\145\155\157\162\171\012\011\122\072\040" \
+"\162\145\166\145\162\163\145\040\163\157\162\164\012\011\110\072" \
+"\040\164\157\147\147\154\145\040\164\150\162\145\141\144\163\012" \
+"\011\121\054\136\103\072\040\145\170\151\164\012\012\117\160\164" \
+"\151\157\156\163\072\012\011\055\142\011\102\141\164\143\150\040" \
+"\155\157\144\145\012\011\055\156\040\116\011\105\170\151\164\040" \
+"\141\146\164\145\162\040\116\040\151\164\145\162\141\164\151\157" \
+"\156\163\012\011\055\144\040\116\011\104\145\154\141\171\040\142" \
+"\145\164\167\145\145\156\040\165\160\144\141\164\145\163\012\011" \
+"\055\155\011\123\141\155\145\040\141\163\040\047\163\047\040\153" \
+"\145\171\000\133\055\143\135\040\106\111\114\105\056\056\056\012" \
+"\012\125\160\144\141\164\145\040\164\150\145\040\154\141\163\164" \
+"\055\155\157\144\151\146\151\145\144\040\144\141\164\145\040\157" \
+"\156\040\164\150\145\040\147\151\166\145\156\040\106\111\114\105" \
+"\133\163\135\012\012\011\055\143\011\104\157\156\047\164\040\143" \
+"\162\145\141\164\145\040\146\151\154\145\163\000\133\055\143\144" \
+"\163\135\040\123\124\122\111\116\107\061\040\133\123\124\122\111" \
+"\116\107\062\135\012\012\124\162\141\156\163\154\141\164\145\054" \
+"\040\163\161\165\145\145\172\145\054\040\157\162\040\144\145\154" \
+"\145\164\145\040\143\150\141\162\141\143\164\145\162\163\040\146" \
+"\162\157\155\040\163\164\144\151\156\054\040\167\162\151\164\151" \
+"\156\147\040\164\157\040\163\164\144\157\165\164\012\012\011\055" \
+"\143\011\124\141\153\145\040\143\157\155\160\154\145\155\145\156" \
+"\164\040\157\146\040\123\124\122\111\116\107\061\012\011\055\144" \
+"\011\104\145\154\145\164\145\040\151\156\160\165\164\040\143\150" \
+"\141\162\141\143\164\145\162\163\040\143\157\144\145\144\040\123" \
+"\124\122\111\116\107\061\012\011\055\163\011\123\161\165\145\145" \
+"\172\145\040\155\165\154\164\151\160\154\145\040\157\165\164\160" \
+"\165\164\040\143\150\141\162\141\143\164\145\162\163\040\157\146" \
+"\040\123\124\122\111\116\107\062\040\151\156\164\157\040\157\156" \
+"\145\040\143\150\141\162\141\143\164\145\162\000\012\012\122\145" \
+"\164\165\162\156\040\141\156\040\145\170\151\164\040\143\157\144" \
+"\145\040\157\146\040\124\122\125\105\040\050\060\051\000\133\167" \
+"\135\040\133\150\135\012\012\120\162\151\156\164\040\144\151\155" \
+"\145\156\163\151\157\156\050\163\051\040\157\146\040\163\164\144" \
+"\151\156\047\163\040\164\145\162\155\151\156\141\154\054\040\157" \
+"\156\040\145\162\162\157\162\040\162\145\164\165\162\156\040\070" \
+"\060\170\062\065\000\133\055\143\040\115\101\130\137\115\117\125" \
+"\116\124\137\103\117\125\116\124\135\040\133\055\151\040\104\101" \
+"\131\123\135\040\133\055\103\040\115\117\125\116\124\137\103\117" \
+"\125\116\124\135\040\133\055\114\040\114\101\102\105\114\135\040" \
+"\102\114\117\103\113\104\105\126\012\012\101\144\152\165\163\164" \
+"\040\146\151\154\145\163\171\163\164\145\155\040\157\160\164\151" \
+"\157\156\163\040\157\156\040\145\170\164\133\062\063\135\040\146" \
+"\151\154\145\163\171\163\164\145\155\163\000\133\117\120\124\111" \
+"\117\116\123\135\040\106\111\114\105\123\131\123\124\105\115\174" \
+"\104\111\122\105\103\124\117\122\131\012\012\125\156\155\157\165" \
+"\156\164\040\146\151\154\145\040\163\171\163\164\145\155\163\012" \
+"\012\011\055\162\011\124\162\171\040\164\157\040\162\145\155\157" \
+"\165\156\164\040\144\145\166\151\143\145\163\040\141\163\040\162" \
+"\145\141\144\055\157\156\154\171\040\151\146\040\155\157\165\156" \
+"\164\040\151\163\040\142\165\163\171\012\011\055\154\011\114\141" \
+"\172\171\040\165\155\157\165\156\164\040\050\144\145\164\141\143" \
+"\150\040\146\151\154\145\163\171\163\164\145\155\051\012\011\055" \
+"\146\011\106\157\162\143\145\040\165\155\157\165\156\164\040\050" \
+"\151\056\145\056\054\040\165\156\162\145\141\143\150\141\142\154" \
+"\145\040\116\106\123\040\163\145\162\166\145\162\051\012\011\055" \
+"\144\011\106\162\145\145\040\154\157\157\160\040\144\145\166\151" \
+"\143\145\040\145\166\145\156\040\151\146\040\151\164\040\150\141" \
+"\163\040\142\145\145\156\040\165\163\145\144\000\133\055\141\155" \
+"\156\162\163\160\166\135\012\012\120\162\151\156\164\040\163\171" \
+"\163\164\145\155\040\151\156\146\157\162\155\141\164\151\157\156" \
+"\012\012\011\055\141\011\120\162\151\156\164\040\141\154\154\012" \
+"\011\055\155\011\124\150\145\040\155\141\143\150\151\156\145\040" \
+"\050\150\141\162\144\167\141\162\145\051\040\164\171\160\145\012" \
+"\011\055\156\011\110\157\163\164\156\141\155\145\012\011\055\162" \
+"\011\117\123\040\162\145\154\145\141\163\145\012\011\055\163\011" \
+"\117\123\040\156\141\155\145\040\050\144\145\146\141\165\154\164" \
+"\051\012\011\055\160\011\120\162\157\143\145\163\163\157\162\040" \
+"\164\171\160\145\012\011\055\166\011\117\123\040\166\145\162\163" \
+"\151\157\156\000\133\055\146\141\135\133\055\164\040\116\135\040" \
+"\133\106\111\114\105\135\056\056\056\012\012\103\157\156\166\145" \
+"\162\164\040\163\160\141\143\145\163\040\164\157\040\164\141\142" \
+"\163\054\040\167\162\151\164\151\156\147\040\164\157\040\163\164" \
+"\144\157\165\164\012\012\011\055\141\054\055\055\141\154\154\011" \
+"\103\157\156\166\145\162\164\040\141\154\154\040\142\154\141\156" \
+"\153\163\012\011\055\146\054\055\055\146\151\162\163\164\055\157" \
+"\156\154\171\011\103\157\156\166\145\162\164\040\157\156\154\171" \
+"\040\154\145\141\144\151\156\147\040\142\154\141\156\153\163\012" \
+"\011\055\164\054\055\055\164\141\142\163\075\116\011\124\141\142" \
+"\163\164\157\160\163\040\145\166\145\162\171\040\116\040\143\150" \
+"\141\162\163\000\133\055\143\144\165\135\133\055\146\054\163\054" \
+"\167\040\116\135\040\133\111\116\120\125\124\040\133\117\125\124" \
+"\120\125\124\135\135\012\012\104\151\163\143\141\162\144\040\144" \
+"\165\160\154\151\143\141\164\145\040\154\151\156\145\163\012\012" \
+"\011\055\143\011\120\162\145\146\151\170\040\154\151\156\145\163" \
+"\040\142\171\040\164\150\145\040\156\165\155\142\145\162\040\157" \
+"\146\040\157\143\143\165\162\162\145\156\143\145\163\012\011\055" \
+"\144\011\117\156\154\171\040\160\162\151\156\164\040\144\165\160" \
+"\154\151\143\141\164\145\040\154\151\156\145\163\012\011\055\165" \
+"\011\117\156\154\171\040\160\162\151\156\164\040\165\156\151\161" \
+"\165\145\040\154\151\156\145\163\012\011\055\146\040\116\011\123" \
+"\153\151\160\040\146\151\162\163\164\040\116\040\146\151\145\154" \
+"\144\163\012\011\055\163\040\116\011\123\153\151\160\040\146\151" \
+"\162\163\164\040\116\040\143\150\141\162\163\040\050\141\146\164" \
+"\145\162\040\141\156\171\040\163\153\151\160\160\145\144\040\146" \
+"\151\145\154\144\163\051\012\011\055\167\040\116\011\103\157\155" \
+"\160\141\162\145\040\116\040\143\150\141\162\141\143\164\145\162" \
+"\163\040\151\156\040\154\151\156\145\000\133\055\165\144\135\040" \
+"\133\106\111\114\105\135\012\012\103\157\156\166\145\162\164\040" \
+"\106\111\114\105\040\151\156\055\160\154\141\143\145\040\146\162" \
+"\157\155\040\125\156\151\170\040\164\157\040\104\117\123\040\146" \
+"\157\162\155\141\164\056\012\127\150\145\156\040\156\157\040\146" \
+"\151\154\145\040\151\163\040\147\151\166\145\156\054\040\165\163" \
+"\145\040\163\164\144\151\156\057\163\164\144\157\165\164\056\012" \
+"\012\011\055\165\011\144\157\163\062\165\156\151\170\012\011\055" \
+"\144\011\165\156\151\170\062\144\157\163\000\133\055\143\146\135" \
+"\040\133\106\111\114\105\135\056\056\056\012\012\104\145\143\157" \
+"\155\160\162\145\163\163\040\106\111\114\105\040\050\157\162\040" \
+"\163\164\144\151\156\051\012\012\011\055\143\011\127\162\151\164" \
+"\145\040\164\157\040\163\164\144\157\165\164\012\011\055\146\011" \
+"\106\157\162\143\145\000\133\055\143\146\166\103\106\135\040\133" \
+"\106\111\114\105\135\056\056\056\012\012\011\055\143\011\127\162" \
+"\151\164\145\040\164\157\040\163\164\144\157\165\164\012\011\055" \
+"\146\011\106\157\162\143\145\012\011\055\166\011\126\145\162\142" \
+"\157\163\145\012\011\055\106\011\104\157\156\047\164\040\163\164" \
+"\157\162\145\040\157\162\040\166\145\162\151\146\171\040\143\150" \
+"\145\143\153\163\165\155\000\133\055\143\146\135\040\133\106\111" \
+"\114\105\135\056\056\056\012\012\104\145\143\157\155\160\162\145" \
+"\163\163\040\106\111\114\105\040\050\157\162\040\163\164\144\151" \
+"\156\051\012\012\011\055\143\011\127\162\151\164\145\040\164\157" \
+"\040\163\164\144\157\165\164\012\011\055\146\011\106\157\162\143" \
+"\145\000\133\055\154\156\157\160\161\135\040\106\111\114\105\133" \
+"\056\172\151\160\135\040\133\106\111\114\105\135\056\056\056\040" \
+"\133\055\170\040\106\111\114\105\056\056\056\135\040\133\055\144" \
+"\040\104\111\122\135\012\012\105\170\164\162\141\143\164\040\106" \
+"\111\114\105\163\040\146\162\157\155\040\132\111\120\040\141\162" \
+"\143\150\151\166\145\012\012\011\055\154\011\114\151\163\164\040" \
+"\143\157\156\164\145\156\164\163\040\050\167\151\164\150\040\055" \
+"\161\040\146\157\162\040\163\150\157\162\164\040\146\157\162\155" \
+"\051\012\011\055\156\011\116\145\166\145\162\040\157\166\145\162" \
+"\167\162\151\164\145\040\146\151\154\145\163\040\050\144\145\146" \
+"\141\165\154\164\072\040\141\163\153\051\012\011\055\157\011\117" \
+"\166\145\162\167\162\151\164\145\012\011\055\160\011\120\162\151" \
+"\156\164\040\164\157\040\163\164\144\157\165\164\012\011\055\161" \
+"\011\121\165\151\145\164\012\011\055\170\040\106\111\114\105\011" \
+"\105\170\143\154\165\144\145\040\106\111\114\105\163\012\011\055" \
+"\144\040\104\111\122\011\105\170\164\162\141\143\164\040\151\156" \
+"\164\157\040\104\111\122\000\012\012\104\151\163\160\154\141\171" \
+"\040\164\150\145\040\164\151\155\145\040\163\151\156\143\145\040" \
+"\164\150\145\040\154\141\163\164\040\142\157\157\164\000\116\012" \
+"\012\120\141\165\163\145\040\146\157\162\040\116\040\155\151\143" \
+"\162\157\163\145\143\157\156\144\163\000\133\055\157\040\117\125" \
+"\124\106\111\114\105\135\040\133\111\116\106\111\114\105\135\012" \
+"\012\125\165\144\145\143\157\144\145\040\141\040\146\151\154\145" \
+"\012\106\151\156\144\163\040\117\125\124\106\111\114\105\040\151" \
+"\156\040\165\165\145\156\143\157\144\145\144\040\163\157\165\162" \
+"\143\145\040\165\156\154\145\163\163\040\055\157\040\151\163\040" \
+"\147\151\166\145\156\000\133\055\155\135\040\133\106\111\114\105" \
+"\135\040\123\124\117\122\105\104\137\106\111\114\105\116\101\115" \
+"\105\012\012\125\165\145\156\143\157\144\145\040\106\111\114\105" \
+"\040\050\157\162\040\163\164\144\151\156\051\040\164\157\040\163" \
+"\164\144\157\165\164\012\012\011\055\155\011\125\163\145\040\142" \
+"\141\163\145\066\064\040\145\156\143\157\144\151\156\147\040\160" \
+"\145\162\040\122\106\103\061\065\062\061\000\133\055\156\040\123" \
+"\105\103\135\040\133\055\164\135\040\120\122\117\107\040\101\122" \
+"\107\123\012\012\122\165\156\040\120\122\117\107\040\160\145\162" \
+"\151\157\144\151\143\141\154\154\171\012\012\011\055\156\011\114" \
+"\157\157\160\040\160\145\162\151\157\144\040\151\156\040\163\145" \
+"\143\157\156\144\163\040\050\144\145\146\141\165\154\164\040\062" \
+"\051\012\011\055\164\011\104\157\156\047\164\040\160\162\151\156" \
+"\164\040\150\145\141\144\145\162\000\133\055\143\155\154\167\114" \
+"\135\040\133\106\111\114\105\135\056\056\056\012\012\103\157\165" \
+"\156\164\040\154\151\156\145\163\054\040\167\157\162\144\163\054" \
+"\040\141\156\144\040\142\171\164\145\163\040\146\157\162\040\145" \
+"\141\143\150\040\106\111\114\105\040\050\157\162\040\163\164\144" \
+"\151\156\051\012\012\011\055\143\011\103\157\165\156\164\040\142" \
+"\171\164\145\163\012\011\055\155\011\103\157\165\156\164\040\143" \
+"\150\141\162\141\143\164\145\162\163\012\011\055\154\011\103\157" \
+"\165\156\164\040\156\145\167\154\151\156\145\163\012\011\055\167" \
+"\011\103\157\165\156\164\040\167\157\162\144\163\012\011\055\114" \
+"\011\120\162\151\156\164\040\154\157\156\147\145\163\164\040\154" \
+"\151\156\145\040\154\145\156\147\164\150\000\133\103\117\115\115" \
+"\101\116\104\135\056\056\056\012\012\114\157\143\141\164\145\040" \
+"\141\040\103\117\115\115\101\116\104\000\012\012\120\162\151\156" \
+"\164\040\164\150\145\040\165\163\145\162\040\156\141\155\145\040" \
+"\141\163\163\157\143\151\141\164\145\144\040\167\151\164\150\040" \
+"\164\150\145\040\143\165\162\162\145\156\164\040\145\146\146\145" \
+"\143\164\151\166\145\040\165\163\145\162\040\151\144\000\133\117" \
+"\120\124\111\117\116\123\135\040\133\120\122\117\107\040\101\122" \
+"\107\123\135\012\012\122\165\156\040\120\122\117\107\040\157\156" \
+"\040\145\166\145\162\171\040\151\164\145\155\040\147\151\166\145" \
+"\156\040\142\171\040\163\164\144\151\156\012\012\011\055\160\011" \
+"\101\163\153\040\165\163\145\162\040\167\150\145\164\150\145\162" \
+"\040\164\157\040\162\165\156\040\145\141\143\150\040\143\157\155" \
+"\155\141\156\144\012\011\055\162\011\104\157\156\047\164\040\162" \
+"\165\156\040\143\157\155\155\141\156\144\040\151\146\040\151\156" \
+"\160\165\164\040\151\163\040\145\155\160\164\171\012\011\055\060" \
+"\011\111\156\160\165\164\040\151\163\040\163\145\160\141\162\141" \
+"\164\145\144\040\142\171\040\116\125\114\040\143\150\141\162\141" \
+"\143\164\145\162\163\012\011\055\164\011\120\162\151\156\164\040" \
+"\164\150\145\040\143\157\155\155\141\156\144\040\157\156\040\163" \
+"\164\144\145\162\162\040\142\145\146\157\162\145\040\145\170\145" \
+"\143\165\164\151\157\156\012\011\055\145\133\123\124\122\135\011" \
+"\123\124\122\040\163\164\157\160\163\040\151\156\160\165\164\040" \
+"\160\162\157\143\145\163\163\151\156\147\012\011\055\156\040\116" \
+"\011\120\141\163\163\040\156\157\040\155\157\162\145\040\164\150" \
+"\141\156\040\116\040\141\162\147\163\040\164\157\040\120\122\117" \
+"\107\012\011\055\163\040\116\011\120\141\163\163\040\143\157\155" \
+"\155\141\156\144\040\154\151\156\145\040\157\146\040\156\157\040" \
+"\155\157\162\145\040\164\150\141\156\040\116\040\142\171\164\145" \
+"\163\000\133\106\111\114\105\135\056\056\056\012\012\104\145\143" \
+"\157\155\160\162\145\163\163\040\164\157\040\163\164\144\157\165" \
+"\164\000\133\123\124\122\111\116\107\135\012\012\122\145\160\145" \
+"\141\164\145\144\154\171\040\157\165\164\160\165\164\040\141\040" \
+"\154\151\156\145\040\167\151\164\150\040\123\124\122\111\116\107" \
+"\054\040\157\162\040\047\171\047\000\133\106\111\114\105\135\056" \
+"\056\056\012\012\104\145\143\157\155\160\162\145\163\163\040\164" \
+"\157\040\163\164\144\157\165\164\000" \
#define PACKED_USAGE \
-0x68,0x31,0x31,0x41,0x59,0x26,0x53,0x59,0x37,0x29,0x0d,0x5d,0x00,0x14,0x54,0xdf, \
-0x80,0x72,0x70,0x77,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x60, \
-0x3b,0xed,0xb1,0xf4,0x00,0x9d,0xc0,0x50,0x78,0x3d,0xbb,0x68,0x91,0x4b,0xde,0xb0, \
-0x3a,0xa0,0x02,0xa4,0x0f,0x40,0x0e,0x9a,0x01,0xdd,0x00,0xf0,0x0f,0x76,0x97,0x19, \
-0x3d,0x1f,0x72,0xbc,0xa7,0xd3,0x12,0x9d,0x86,0x88,0x41,0x24,0x8a,0xfa,0x06,0x17, \
-0xc1,0x4d,0xab,0x7d,0x9d,0x13,0x7d,0xc1,0xc0,0xaa,0x2a,0x1f,0x79,0x05,0x03,0x12, \
-0x71,0x77,0x7b,0xdd,0xd5,0x8f,0x45,0x21,0x2a,0x7d,0x69,0x7d,0xf7,0x3a,0xa1,0x2a, \
-0x91,0x76,0xc9,0x49,0x73,0x62,0x54,0x85,0x4e,0xb1,0x2b,0x5a,0xae,0xd9,0x50,0x52, \
-0x8a,0xa2,0x7c,0x50,0x56,0xee,0x1e,0xdc,0xe5,0xed,0xcd,0x2d,0x71,0xa4,0x90,0x10, \
-0xa4,0x57,0x13,0xe1,0xa1,0x04,0xd0,0x01,0x31,0x1a,0x34,0x4c,0x00,0x46,0x99,0x09, \
-0x89,0x3d,0x26,0x9a,0x34,0xc9,0xea,0x36,0x40,0xa6,0xc0,0x4c,0xa6,0xd4,0x34,0x1a, \
-0x68,0x10,0x10,0x40,0x53,0x04,0xc9,0x30,0x09,0xa6,0xa9,0xe4,0x69,0xa9,0xe4,0x9e, \
-0x53,0x20,0xd0,0x34,0x68,0x1a,0x0d,0x00,0x1a,0x06,0x98,0x84,0x48,0x99,0x32,0xa7, \
-0xa9,0xb4,0xda,0xa6,0x47,0xa8,0x7a,0x4d,0x0d,0x00,0x0d,0x1a,0x1a,0x03,0x40,0x34, \
-0x06,0x80,0xd0,0x00,0x12,0x69,0x44,0x10,0x8c,0x84,0x60,0x81,0x27,0xa3,0x49,0x93, \
-0x11,0xe8,0x9a,0xa6,0xd1,0xa0,0xd3,0x53,0xf4,0x53,0x26,0x7a,0x88,0x32,0x3d,0x46, \
-0x83,0x40,0x61,0xb4,0x91,0x2a,0x7e,0x23,0x46,0xa9,0xa6,0xf4,0xd5,0x3d,0x4f,0x28, \
-0x68,0x00,0xf5,0x34,0x3d,0x40,0x03,0x26,0x8d,0x00,0x00,0x1a,0x00,0x00,0x12,0x22, \
-0x10,0x08,0x02,0x69,0xa2,0x62,0x64,0x11,0x83,0x48,0x4d,0xa6,0xaa,0x7f,0xa0,0xd0, \
-0x9a,0x6a,0x9e,0xa6,0x83,0x35,0x00,0x31,0x0f,0x51,0xb5,0x3e,0x53,0x76,0x78,0xac, \
-0xf1,0x45,0xfd,0xfd,0x38,0x3b,0xe3,0x86,0x10,0xa6,0x7e,0xab,0x35,0xbc,0xbf,0xeb, \
-0xc6,0xf7,0xae,0xda,0xbd,0x8f,0x7a,0x90,0x44,0xfb,0x99,0x47,0x4b,0x21,0x7a,0x6f, \
-0x8b,0x94,0x73,0x9e,0x9d,0xed,0xf5,0xbe,0x42,0x1d,0xff,0xd1,0x72,0x4a,0xd9,0xdf, \
-0xf4,0x16,0x94,0x34,0xed,0xb7,0x1a,0x66,0x9a,0xe4,0xaa,0xba,0xe3,0xae,0x3c,0x67, \
-0x95,0x4d,0xe3,0x96,0x5e,0xa6,0xad,0x2b,0x62,0xe3,0xe5,0xc5,0x44,0xaa,0xeb,0xab, \
-0x72,0xd6,0x26,0x05,0xd6,0x7f,0xd7,0xa6,0x99,0xc2,0xfe,0xcc,0x5e,0x0e,0x05,0xcf, \
-0xfd,0x1b,0xe7,0xf8,0x6f,0x1b,0xce,0x62,0x03,0x79,0xe9,0x14,0xf4,0x33,0xa9,0xe6, \
-0x74,0xc1,0xa4,0x53,0xed,0xf6,0x0c,0xc7,0xb1,0x34,0x93,0x41,0x67,0x02,0x29,0x50, \
-0x21,0x91,0x2b,0xfd,0xf6,0x29,0x57,0xa6,0x67,0xa5,0xd2,0x60,0xf3,0xfc,0xcd,0x1f, \
-0x78,0x1d,0xa2,0x7f,0xee,0xd1,0xf7,0xd1,0x86,0x59,0x34,0xc5,0xb3,0xf8,0xe3,0x4f, \
-0xee,0xf4,0xd7,0x3e,0xb7,0x9e,0xfb,0x36,0xdd,0xd2,0xdc,0x90,0x58,0x34,0xd6,0xc7, \
-0x1c,0x8a,0x7e,0xa4,0xf6,0xdc,0x92,0xae,0x3a,0xe2,0x49,0x0b,0xee,0x71,0x4a,0xf6, \
-0xd8,0xe9,0xbc,0xf7,0x16,0x89,0x82,0x9f,0xb2,0x17,0x19,0x98,0x06,0x0c,0xcc,0xfe, \
-0xfd,0x9a,0x56,0xb5,0x63,0x4d,0x80,0x20,0x0f,0xdb,0xdb,0x1f,0x56,0xa8,0x40,0x50, \
-0x75,0xfe,0x9e,0x6f,0x6e,0x9f,0xaf,0xc6,0x98,0x7a,0x8e,0x58,0x7a,0x9f,0xf5,0x76, \
-0xe6,0xc4,0x2e,0x2a,0xe8,0xf7,0x6a,0x78,0xc4,0xc5,0xb1,0x42,0x98,0x53,0x5b,0x84, \
-0x70,0xc8,0x60,0x30,0x2f,0xd0,0x33,0x7d,0xb5,0xe1,0x3d,0x1e,0x07,0x3f,0x3e,0x26, \
-0x0d,0x6b,0xd3,0x72,0x0c,0x55,0x54,0x6a,0x02,0x73,0x33,0x8b,0x6c,0xa4,0xc5,0x54, \
-0xb5,0x3f,0x36,0x0a,0xa0,0xc3,0x0f,0x25,0x93,0xae,0x38,0x2d,0x89,0x00,0x5c,0x72, \
-0x36,0xab,0xcc,0xb9,0x84,0xbf,0x0d,0x82,0x3d,0xf5,0xc0,0x22,0xbd,0x2d,0xaf,0x35, \
-0x55,0x37,0x8e,0x9f,0x17,0xc6,0xee,0x6a,0x04,0x50,0xc9,0xcd,0xa1,0x77,0x6c,0xdc, \
-0x03,0x71,0x6c,0x2b,0x48,0x28,0x19,0x01,0x8b,0x91,0x5d,0xc6,0x39,0xf8,0x68,0xc9, \
-0x07,0x28,0x6e,0xa3,0xb0,0x7b,0xf6,0xfb,0xd4,0xe6,0x6b,0xb9,0xbc,0x99,0x97,0xc0, \
-0x8d,0xc1,0x5d,0x0a,0xcf,0x5f,0x3d,0x9c,0xba,0x5b,0xb5,0x35,0x05,0x81,0x37,0x0d, \
-0x6a,0x80,0x49,0x2a,0xa9,0xbf,0xb5,0x59,0x4d,0x76,0x38,0x3a,0x1c,0xd9,0x44,0xbc, \
-0x60,0xc2,0xc1,0xc8,0x58,0xb6,0x05,0x60,0x15,0x0c,0x8f,0xeb,0xa0,0x4c,0xc5,0xad, \
-0x03,0x21,0xdc,0xf4,0x93,0xec,0xfc,0x5c,0x2e,0x6f,0x91,0x55,0xfc,0xf5,0x40,0x23, \
-0xdc,0xe9,0xf7,0xf0,0x86,0xcc,0xd6,0x57,0xcb,0xd5,0x7c,0xa4,0x0d,0x82,0x15,0xab, \
-0x2b,0x83,0xa0,0x60,0xda,0x29,0x16,0x98,0xaa,0x34,0x41,0xa3,0x8a,0xf3,0x72,0x35, \
-0xfc,0x58,0x65,0x97,0x51,0xde,0x3c,0xf9,0x2d,0xb4,0x01,0x81,0x51,0x00,0x87,0x09, \
-0x8e,0x64,0x06,0x66,0x0c,0xc5,0x8a,0x0a,0x21,0xde,0xa7,0x42,0x60,0xa3,0x63,0x4f, \
-0xdb,0x00,0x55,0x69,0x3d,0xfb,0x19,0x7d,0x3c,0x6f,0x68,0x67,0xf3,0xbf,0x0b,0x92, \
-0xe5,0x2d,0x27,0x93,0xc3,0x99,0x1c,0xc2,0x11,0x0b,0x79,0x52,0xee,0x56,0x1b,0x5b, \
-0x77,0x33,0x30,0xd9,0x8d,0x79,0xd1,0x1d,0xc9,0x1d,0xe7,0xc3,0xd9,0xef,0x8e,0xab, \
-0xb5,0xe2,0x8f,0x03,0xf3,0xb6,0xc0,0xaa,0xd5,0x95,0x30,0x2d,0xba,0xf5,0x41,0x95, \
-0x69,0xfe,0x65,0x16,0x51,0x6a,0x41,0x59,0xd8,0x39,0x83,0x65,0xd9,0x53,0x4a,0x03, \
-0xa4,0x1b,0x8c,0x64,0x81,0xbe,0x2c,0x94,0x3e,0xf5,0x80,0x18,0x10,0x4f,0x4e,0x22, \
-0x35,0xdd,0xb7,0x6b,0xbb,0x2f,0x1b,0xfc,0x29,0x50,0x1e,0x27,0x47,0xfa,0xa0,0x11, \
-0x2c,0x0f,0x8b,0x4b,0x22,0x02,0x25,0xa6,0x30,0x0b,0xcf,0x44,0x12,0x9a,0x54,0x68, \
-0x81,0xf1,0x1a,0x29,0xbb,0x9f,0xf8,0x5d,0xe4,0xf7,0x69,0xf7,0xd5,0x63,0x77,0xb7, \
-0x2d,0x2e,0xbf,0x87,0xd1,0xde,0xee,0x5d,0xeb,0x9d,0xd3,0xd9,0x93,0xd5,0x5e,0x63, \
-0x40,0xd3,0xf1,0x77,0x38,0xae,0xe5,0x8f,0x11,0xd3,0xf1,0xea,0x68,0xec,0xd8,0x32, \
-0xc0,0xa2,0x55,0x94,0x47,0x1f,0x17,0x90,0x90,0x3e,0xd1,0xd7,0x5b,0xc2,0x7c,0x8a, \
-0x28,0xa7,0x5d,0xe1,0xf4,0x04,0x41,0x20,0x5e,0x72,0xfa,0xfb,0x2d,0x3e,0x79,0xc0, \
-0x12,0xf6,0x72,0x15,0x97,0x42,0x2d,0x2a,0x04,0x2c,0xb2,0x74,0x34,0x8f,0x34,0x33, \
-0x81,0xd4,0xea,0x40,0x1e,0xdd,0xd6,0x48,0xb9,0x24,0x1f,0x91,0xa7,0x4c,0x69,0x8f, \
-0x55,0x4f,0xda,0xf5,0xec,0x86,0x69,0xf0,0xfd,0xc1,0x97,0x17,0xf9,0x8a,0xd4,0x2a, \
-0xaf,0x0d,0x36,0xec,0x70,0x30,0x00,0xa2,0x0c,0xf6,0xdb,0xab,0xbb,0x5f,0xb2,0xdc, \
-0xc7,0xc5,0xa0,0x63,0xcf,0xe7,0x5b,0x7d,0x33,0x81,0xca,0xaa,0x64,0x6c,0xcc,0x4e, \
-0xac,0xc8,0xda,0x76,0x89,0x87,0x27,0x8e,0x17,0xb3,0x84,0xa0,0x61,0xc9,0x72,0x58, \
-0x6f,0xf5,0xe9,0x67,0x80,0x42,0xd9,0x80,0xdc,0x28,0xd6,0x31,0xa5,0x72,0x33,0x69, \
-0x0e,0x49,0x0b,0x7c,0xb3,0x87,0xfa,0x88,0x50,0xdd,0x78,0x31,0x7f,0x66,0x9e,0x6d, \
-0x06,0x20,0x8b,0x6a,0x19,0x7a,0x5d,0xab,0xc9,0x98,0x92,0x94,0x0b,0x9a,0x2b,0xbc, \
-0xaf,0x37,0x80,0xd6,0x6e,0x08,0x30,0xf5,0xaf,0xd9,0xc9,0x5e,0xd8,0xea,0xb7,0x08, \
-0x6a,0xb1,0x7e,0xc8,0xab,0xaa,0x08,0x90,0xd4,0x78,0x41,0xc5,0x7d,0x59,0x17,0xd3, \
-0xe0,0xec,0x8e,0x6d,0xd4,0xf5,0xe9,0x9e,0x79,0x1d,0xd2,0xc5,0x2e,0x4b,0x6e,0x56, \
-0x76,0xd4,0x91,0x5b,0xb7,0xa8,0xed,0x9d,0xa2,0x52,0x0c,0xfa,0x95,0x4d,0x90,0x28, \
-0x5e,0xe5,0xe6,0xf5,0x30,0xec,0x15,0x01,0x00,0xe7,0xd2,0xd7,0xa0,0xf3,0xd4,0x38, \
-0x1e,0xe3,0xc7,0xdf,0x7c,0x2a,0x06,0x3f,0x82,0xaa,0x1c,0xcd,0x59,0xdb,0x1d,0xb6, \
-0x73,0x37,0xae,0xef,0xf0,0xce,0x8a,0x23,0x10,0x40,0xba,0xa9,0x73,0x50,0x72,0x6f, \
-0x96,0x2d,0xe5,0x45,0x20,0x86,0xf6,0xac,0xc9,0x3d,0xad,0xa7,0x83,0x69,0x3c,0x29, \
-0x7a,0x9f,0x0e,0x0c,0x48,0x59,0x72,0x46,0xbf,0x5e,0xae,0xf5,0xae,0x96,0x11,0xfe, \
-0xd3,0xcb,0xdf,0x03,0x5a,0xc5,0x0e,0x04,0xf7,0xbc,0x7b,0xab,0xa4,0x09,0x9f,0x81, \
-0x1d,0x41,0x3e,0x38,0x03,0x2c,0xa1,0xd8,0x09,0x25,0xbe,0x65,0x1f,0x06,0xfe,0x7f, \
-0x6e,0xcd,0x5b,0xab,0x1f,0x56,0xc7,0x0c,0x25,0x6b,0x0f,0xb4,0x0f,0x36,0x63,0xe8, \
-0xe3,0x86,0xf7,0xf0,0xb5,0xaa,0x83,0x38,0x27,0x35,0xd6,0x06,0x5e,0xf1,0x2e,0x7e, \
-0x6b,0xbf,0x8e,0x79,0x76,0xed,0xfc,0x78,0x28,0xcf,0xe1,0xfe,0xcb,0xf0,0xc8,0x51, \
-0x3d,0x15,0xb3,0xe8,0xe8,0xe7,0xd7,0x98,0x21,0x6a,0xc4,0xd8,0xc5,0x7a,0xf2,0xe2, \
-0xfc,0x5c,0xfa,0xee,0x59,0xe3,0x4e,0xdd,0x13,0xbb,0xe4,0xee,0xe2,0xf7,0x70,0xdc, \
-0x56,0x2f,0x44,0x2a,0xf5,0xa8,0xdb,0x9c,0x1c,0x9c,0x9d,0xf6,0xe8,0x09,0xed,0x30, \
-0xae,0x71,0x86,0x39,0x29,0x67,0x5d,0xf5,0x38,0xe4,0x9a,0xe2,0xe9,0x43,0x5c,0x75, \
-0x79,0x3f,0x21,0xd8,0x80,0x6a,0x84,0x88,0x80,0x28,0xbd,0x2d,0x15,0xe2,0xd8,0x7e, \
-0x44,0x08,0x56,0x28,0x41,0x61,0x1d,0xad,0x64,0x13,0xc5,0x94,0x3a,0x69,0xd3,0xeb, \
-0xf1,0xe3,0x3e,0xff,0x9f,0x5d,0x96,0x8c,0x8a,0xa8,0x56,0xc1,0xa3,0x54,0xbe,0xae, \
-0xd2,0xfc,0xa3,0x78,0x53,0xd0,0xe1,0xb9,0x6c,0x85,0x13,0x97,0xcb,0x7a,0x80,0x0e, \
-0x86,0xd2,0x22,0x7f,0x79,0x2d,0x18,0xd7,0x87,0x84,0x52,0x3a,0x89,0x23,0xab,0x0f, \
-0x80,0xa0,0x5d,0xa6,0xa6,0x48,0x5f,0x45,0xda,0x87,0xe6,0x80,0xa8,0x3e,0x0b,0xd8, \
-0xcb,0x7f,0x8a,0xd3,0x7f,0x04,0x99,0xf8,0x2f,0xba,0xf9,0x1d,0x31,0x8d,0x6f,0x6b, \
-0xb7,0x63,0xaf,0xc3,0x5b,0x13,0xbb,0xb2,0x86,0xd2,0x41,0x1d,0x82,0x84,0x13,0x43, \
-0xb2,0x54,0x06,0x80,0x3e,0x17,0xef,0x12,0x16,0xf1,0xf4,0xe6,0xdd,0xd6,0x5b,0x33, \
-0x53,0x25,0xd4,0x05,0x32,0xe4,0xc3,0x32,0xa7,0xe7,0xae,0x0d,0x9b,0x9f,0x86,0xdc, \
-0xf8,0xc6,0x26,0x3b,0xdc,0xcc,0xf2,0xc3,0xe7,0xa6,0x90,0xdf,0xb7,0x4d,0x1d,0x3e, \
-0x56,0xf7,0x53,0x97,0x96,0x34,0x9b,0xd9,0xd4,0xe0,0x30,0x7f,0x50,0xd2,0xdc,0x83, \
-0x8f,0xd3,0x16,0x69,0xbe,0xde,0x59,0x8d,0x73,0xb2,0x12,0xb6,0x93,0x5e,0x82,0x04, \
-0x0c,0x78,0x70,0x61,0x10,0x5d,0x09,0x83,0x45,0x28,0xc8,0xb8,0xa0,0xe9,0x25,0x96, \
-0x62,0x38,0x62,0x7f,0xba,0x2c,0x0b,0x4c,0xe5,0x65,0x27,0x63,0xe4,0x02,0x7d,0xfe, \
-0x08,0x29,0xab,0xf9,0x96,0x30,0xfa,0xcb,0xe1,0x7c,0x0d,0x33,0x09,0xb0,0x6d,0x64, \
-0x10,0x0f,0x9e,0x4f,0x8e,0x5e,0xed,0x18,0x7a,0x6f,0x5d,0x61,0x7c,0x67,0xd3,0x68, \
-0x02,0x8b,0x55,0x90,0x0d,0x77,0xc1,0x47,0xe5,0x1f,0xb3,0xad,0x73,0x20,0xc0,0x99, \
-0x5f,0xbc,0xd9,0x18,0xff,0x0e,0x91,0x89,0x7d,0xf1,0xe5,0x1c,0x13,0xd5,0x00,0x48, \
-0xc7,0x52,0xf2,0x6b,0x07,0xea,0xdb,0x2f,0x57,0xfa,0x19,0xef,0x99,0x62,0x2b,0xb5, \
-0x5b,0xb6,0xbf,0x4e,0x79,0x20,0x35,0x76,0xd0,0x42,0xe4,0x8c,0x1d,0xb6,0x5c,0xed, \
-0x46,0xb6,0x8d,0xa7,0xb0,0x73,0x18,0x61,0xb1,0xfc,0x7e,0x91,0x76,0xe1,0x02,0xd8, \
-0xc4,0x0b,0x42,0xee,0x58,0x7f,0x1c,0x0e,0x64,0x71,0x21,0xfe,0x33,0x77,0x15,0xcf, \
-0x2e,0xbe,0xae,0xc5,0xd3,0x0b,0xc0,0x76,0x1a,0x8b,0x11,0xac,0x4e,0x6b,0x8b,0x72, \
-0xae,0x3e,0x8d,0xa0,0x5e,0xc5,0x5a,0x3c,0xbf,0x08,0xf4,0x07,0x46,0x2d,0x7a,0x41, \
-0xd7,0x5a,0xe2,0x91,0x99,0x06,0x81,0x72,0x7f,0x0c,0x7d,0xc4,0xf0,0x38,0x68,0x42, \
-0x50,0x33,0x8d,0xe4,0xbc,0xfa,0x12,0xbd,0x7f,0x8d,0x5c,0x7a,0xef,0x8b,0x24,0x75, \
-0x35,0x8d,0x6d,0xee,0xa2,0x54,0x82,0x3e,0xd8,0xa6,0xbe,0x6f,0x81,0x96,0x54,0x23, \
-0xac,0x81,0x82,0xda,0xf0,0x41,0x5d,0xbb,0x76,0x86,0x3e,0x20,0x48,0x21,0x57,0xb3, \
-0xf4,0xc7,0x1b,0x13,0xc2,0xd5,0x52,0xd6,0x1d,0xbc,0x06,0x0c,0x06,0x95,0x5d,0x97, \
-0xb1,0x61,0xc3,0x90,0x1d,0x5e,0xfe,0x6d,0x39,0x07,0x9d,0xe2,0xdd,0x9d,0xb7,0x30, \
-0xfa,0xf6,0x1e,0xee,0x5c,0xf7,0x15,0x3c,0xfd,0x12,0xc8,0xd3,0xfd,0xe1,0x49,0xcc, \
-0x9a,0x62,0xd1,0xbf,0x24,0x33,0x99,0xf2,0x34,0x19,0x55,0x75,0x90,0x5b,0x40,0x89, \
-0xc1,0x8f,0x35,0x55,0xc9,0x33,0x04,0x94,0x6e,0x1f,0x83,0xef,0xb9,0x01,0x90,0xa0, \
-0xc4,0x29,0xa4,0x6f,0x14,0xc2,0x74,0x4e,0x25,0x96,0x59,0x8e,0x00,0x27,0xa5,0xba, \
-0x04,0xbc,0xac,0x98,0xf6,0xe8,0x24,0x4f,0x41,0x3c,0xe3,0x42,0xa3,0xc4,0xe6,0xfc, \
-0x2b,0xdd,0xc2,0x22,0x14,0xfc,0xd4,0x5e,0x03,0xe7,0x50,0xef,0xdb,0x4e,0x5d,0x53, \
-0x58,0x89,0x0d,0xb1,0x9a,0xfa,0x71,0xe1,0x7f,0x4d,0x6d,0x39,0xc4,0x53,0xfb,0xe2, \
-0x63,0x0f,0x01,0xef,0xea,0xdd,0xb3,0x06,0x00,0x7d,0x4c,0x35,0x0c,0x6d,0x79,0xb1, \
-0x84,0x6e,0x69,0x13,0x2c,0x47,0xf0,0x3b,0x8f,0xed,0x3e,0xec,0xfd,0x6c,0x38,0xb0, \
-0xd1,0x9f,0x6a,0x42,0x54,0x37,0x4d,0x59,0xf7,0xc1,0x30,0xe2,0x84,0x43,0x97,0x0c, \
-0xb5,0x21,0x75,0x78,0x7f,0x69,0xe0,0xc0,0xe8,0x5d,0x71,0x72,0x27,0xab,0x69,0xd1, \
-0xf7,0x27,0xe6,0xe7,0x00,0x3c,0x79,0xf9,0x14,0x20,0x65,0x19,0xee,0x57,0xbd,0xe2, \
-0x83,0x15,0x32,0xaa,0x4d,0x3c,0x03,0xf9,0x51,0xaa,0x01,0x2f,0x7a,0xdf,0x2c,0xf7, \
-0x41,0x6b,0x5d,0xdc,0x7d,0xec,0x11,0x5a,0x4f,0xd8,0xd9,0xd7,0x4f,0x1c,0xd7,0x5a, \
-0x0f,0xd1,0x45,0x1f,0x2d,0x86,0x5a,0x59,0xbe,0x1c,0x43,0x81,0x59,0x4a,0xca,0x92, \
-0x68,0xbc,0x7d,0x2b,0xca,0xd2,0xf1,0xb9,0xe3,0x40,0x08,0x71,0xb4,0x85,0x36,0x80, \
-0xbc,0x08,0x63,0xa5,0xd4,0x54,0x06,0x51,0xe0,0xfd,0xf5,0x8f,0x2f,0xce,0x37,0x1a, \
-0x3a,0x7d,0xf7,0x5a,0x77,0x28,0xc9,0x74,0xec,0xda,0xd8,0xa6,0xd1,0xc6,0x8d,0x70, \
-0x16,0x9c,0xbd,0x34,0xfa,0x74,0xb6,0x80,0x57,0x3a,0x35,0xaa,0xa0,0x71,0x79,0xf0, \
-0x6d,0x6f,0x27,0x84,0xec,0x50,0x39,0x23,0x15,0xec,0xed,0x7d,0xbf,0x22,0x8e,0x25, \
-0x35,0x3f,0x3f,0xc3,0xcb,0x21,0xc4,0x59,0x50,0xaf,0xd1,0xcc,0xc2,0x36,0xc1,0x53, \
-0xe5,0xd5,0x06,0x5b,0xd1,0x7b,0xba,0x56,0xf6,0x1c,0xb6,0x50,0x5e,0xc2,0xb5,0x84, \
-0xb8,0x1c,0xd4,0xa8,0xb2,0x2a,0x85,0x24,0x47,0x48,0xbb,0x5a,0x01,0xe6,0x62,0x43, \
-0xa1,0x4e,0x38,0xe3,0xa2,0x47,0xce,0x23,0x92,0x58,0x44,0x41,0xc8,0x68,0x46,0x99, \
-0x03,0x51,0x6a,0xef,0x68,0x66,0x0e,0x58,0xe4,0x96,0x9c,0x2e,0x02,0x92,0x08,0x73, \
-0x9b,0xba,0x05,0x64,0xcf,0xb1,0xc3,0x6b,0x46,0x69,0xf3,0xb4,0x5c,0x43,0xdb,0xe0, \
-0xa9,0xb5,0x33,0xcf,0xe1,0xfd,0xd6,0xc7,0xbe,0x1b,0x8e,0x86,0x85,0xae,0x5c,0xe6, \
-0x55,0xd2,0x82,0x83,0x07,0x17,0x63,0x92,0x08,0x5a,0x8f,0x2d,0x09,0xc0,0x30,0xa7, \
-0x01,0xba,0xa6,0x97,0xe0,0xf9,0x0a,0xc8,0x74,0xa7,0x2b,0xf3,0xd3,0x93,0xa4,0x03, \
-0xe3,0x55,0x07,0xe7,0x7d,0x93,0x9a,0x46,0x5f,0x7d,0xb9,0x37,0x23,0x1e,0x8c,0x38, \
-0xdd,0xf9,0xcf,0xbe,0xa2,0x5f,0x66,0x79,0x1b,0x9a,0xf6,0xf6,0xb0,0x6c,0x60,0x60, \
-0x3a,0x8e,0x84,0x64,0x38,0x5f,0x64,0x05,0x83,0x0b,0xc9,0x5c,0x71,0xe9,0x3a,0x46, \
-0x3e,0xd5,0x9d,0xed,0x9b,0xa7,0xad,0xe6,0x3c,0x57,0xd2,0x0f,0xd2,0x1b,0x6b,0xdb, \
-0x59,0x0a,0x3a,0x72,0xbd,0x53,0xf0,0x31,0xaf,0x3b,0x0b,0xe2,0xb2,0xf7,0x24,0x6a, \
-0x19,0x41,0xb4,0x3e,0x66,0xab,0x28,0xc9,0x4a,0x30,0xb3,0xfb,0xa0,0x61,0x94,0x9f, \
-0xbb,0x36,0x29,0x5c,0xf8,0x5c,0xfb,0x2c,0x28,0x81,0xa4,0xf8,0xbf,0x9a,0x91,0x5a, \
-0x0c,0x8d,0x95,0x46,0x9f,0x92,0xcf,0x11,0xe7,0x9a,0x48,0xf8,0x45,0xb4,0x08,0xf8, \
-0x4b,0x7e,0xb0,0xd0,0x4a,0x1c,0x5d,0x7b,0xc1,0x4e,0xd2,0xb9,0x90,0xd0,0x6a,0xe4, \
-0xec,0xde,0xf5,0x19,0xf0,0xd1,0x16,0x15,0x29,0x94,0xb0,0xb8,0xd6,0x40,0x80,0xa0, \
-0xfc,0x7f,0x2f,0x4f,0x5a,0x38,0xa7,0x8a,0xa5,0x4f,0x0e,0x9a,0xde,0x95,0xd6,0xa0, \
-0x9f,0x47,0x21,0xe7,0xb7,0x0f,0x37,0x75,0xc3,0x68,0x7c,0xb9,0xc6,0x20,0xc9,0x19, \
-0x51,0x02,0x6e,0xdd,0x4c,0xe2,0x36,0xef,0x83,0xda,0x95,0x8c,0x72,0xb0,0xa5,0xc8, \
-0x80,0xda,0x3a,0xc7,0x8a,0x8d,0x8d,0x16,0xba,0xb5,0x43,0xdd,0x80,0xec,0x14,0x23, \
-0x3c,0x68,0xe3,0xd6,0x0c,0xde,0xcb,0xa5,0x23,0x5e,0x22,0xdf,0x8e,0x8b,0x53,0x6d, \
-0x6a,0xd1,0xb0,0xdd,0x78,0x47,0x01,0x34,0x6a,0xef,0x40,0x3e,0x3a,0x46,0xf2,0xa9, \
-0xbf,0xd4,0x3e,0xcf,0x30,0x7a,0x46,0x6b,0x77,0x7f,0xd3,0x50,0xbc,0x4c,0x20,0xaa, \
-0x4c,0x2f,0x07,0x5d,0xd6,0x58,0x7a,0x3d,0xff,0x0d,0xc0,0x8d,0x70,0x3b,0x6c,0xec, \
-0x6d,0xdf,0xf9,0xdd,0xf0,0xa9,0x32,0xa0,0x68,0x54,0x8e,0x8e,0xd5,0xef,0x0b,0x2e, \
-0xbc,0x34,0xf2,0xb6,0x90,0x3b,0x2f,0x35,0x65,0x94,0xed,0x22,0xed,0x46,0x22,0xf4, \
-0x5e,0x55,0xbd,0x0d,0x96,0xd0,0x93,0xb8,0x20,0x52,0x63,0x54,0x31,0x14,0x56,0x98, \
-0x35,0x29,0x78,0xd5,0x6e,0x4d,0x0e,0x5c,0x4e,0xf5,0xba,0x63,0x50,0x65,0xd4,0x49, \
-0x3c,0x09,0x18,0x1f,0xa8,0x3b,0x30,0x1e,0xcf,0xb3,0xc2,0xd1,0xa5,0xbd,0x56,0x16, \
-0x82,0x08,0x03,0x4e,0xf6,0xa4,0x78,0x37,0x75,0x11,0xfc,0x94,0x86,0x69,0xa8,0x5a, \
-0xd0,0x41,0xe0,0xcd,0x30,0x6e,0x03,0x5d,0xf8,0x94,0x17,0xa1,0x45,0x69,0x96,0x22, \
-0x1b,0x9b,0x30,0x58,0xe9,0xe8,0xba,0xc9,0x61,0x08,0x8d,0xb9,0x9b,0x03,0x1a,0x6d, \
-0x9e,0xa3,0x4e,0xf5,0xa7,0x3a,0x20,0xc7,0x08,0x6e,0xab,0xcd,0x03,0x19,0xbc,0x28, \
-0x42,0x47,0x92,0x55,0x1c,0x54,0xba,0x5b,0xc5,0x63,0x23,0x73,0x5f,0xc0,0xc0,0x6b, \
-0x56,0xbd,0x4c,0xbf,0x6f,0xb8,0xcb,0x10,0x28,0x86,0x2c,0xab,0x7c,0xb0,0xcc,0x85, \
-0x39,0x1b,0x4b,0x8b,0x0d,0x74,0x71,0x9e,0x5b,0xde,0x98,0x67,0x20,0x67,0x45,0xce, \
-0x95,0xec,0x70,0x1e,0xbb,0xf8,0x81,0xbe,0xa2,0xeb,0xb8,0x21,0x8d,0x8d,0xcf,0x4f, \
-0x70,0x87,0x2e,0xb6,0x5c,0xf1,0xdc,0x40,0x1a,0xb4,0x62,0x9c,0xa8,0xfc,0x52,0xb4, \
-0x30,0xe9,0x00,0xb0,0xf7,0x4b,0x35,0x95,0x44,0xa8,0x57,0xb4,0x2f,0x21,0x0d,0x91, \
-0xd0,0xc7,0xa0,0x72,0xd3,0xbe,0x3a,0x93,0x5e,0xb5,0xe2,0x76,0xdb,0x4e,0x02,0x8e, \
-0x28,0x23,0xac,0xef,0xc1,0x6f,0xb7,0x21,0x8a,0x40,0xfe,0x9d,0x56,0xbd,0xbf,0x43, \
-0x57,0xb1,0x52,0xda,0xa8,0xbe,0x55,0xd9,0x46,0xe4,0x29,0xd7,0x1c,0x93,0x78,0x06, \
-0xc9,0xc6,0xa2,0x87,0x3e,0x09,0x71,0x7c,0xd8,0x50,0x3d,0x45,0x58,0x36,0x7a,0xc8, \
-0xbc,0x0c,0xe7,0x4a,0xf3,0xe2,0x58,0xb3,0x02,0x6f,0x83,0x90,0xf8,0x1d,0xc1,0x40, \
-0xd4,0x91,0x97,0x62,0x4a,0xd1,0x84,0x18,0xe8,0xa1,0x1c,0x9c,0x8d,0xd9,0x72,0x0d, \
-0xa5,0x0e,0x2e,0x43,0xa5,0xab,0xa2,0xd5,0x0d,0xe2,0xb3,0x22,0x45,0x19,0x21,0x12, \
-0xa4,0xce,0x02,0xe6,0xad,0x52,0x1c,0x01,0x62,0x05,0x5b,0x7b,0x2d,0x21,0x98,0x0b, \
-0x88,0x99,0x33,0x18,0x2b,0x0a,0x37,0xc8,0x72,0x24,0x01,0x4d,0xf8,0x7a,0xdd,0xe1, \
-0x16,0x5a,0xac,0xbc,0x45,0x2c,0xd6,0x9a,0x53,0x50,0x58,0x10,0x87,0x69,0xa8,0x23, \
-0x72,0x0a,0x12,0x47,0x28,0x9d,0xce,0xde,0xc7,0xd6,0xd7,0x5d,0x38,0x6e,0x32,0xc0, \
-0x50,0xdb,0x6e,0xdf,0xb7,0x87,0x41,0xeb,0xef,0xe1,0xe7,0xca,0x0c,0xe4,0xd4,0x25, \
-0x1d,0xd1,0xc1,0x70,0x70,0xe1,0x63,0xe7,0x94,0x62,0xfc,0x38,0x7a,0x60,0x75,0xec, \
-0xbc,0x03,0x5e,0x3c,0x94,0x77,0x75,0xc8,0x17,0xf2,0x84,0xf8,0xbd,0x8b,0x6a,0xab, \
-0xc9,0x54,0x1b,0x2b,0x02,0xdd,0xdf,0x9a,0x9b,0x46,0xb3,0x46,0xb0,0x3e,0xbd,0xbc, \
-0xb1,0x78,0xf1,0x21,0x49,0xe1,0x50,0xcc,0x26,0x96,0x0d,0x5f,0x2c,0x78,0xf3,0x5c, \
-0x5b,0x35,0x1c,0x0c,0x0f,0xac,0xef,0x3d,0x05,0x67,0xbd,0x21,0x9b,0xd7,0x0d,0x5a, \
-0xdb,0x6a,0x23,0xc0,0xfc,0x51,0xdf,0x5a,0xf1,0x73,0xdc,0xca,0x46,0xa4,0x0a,0xf9, \
-0x8e,0x38,0x46,0xc2,0x1c,0x2c,0xea,0xd5,0x87,0xbe,0x16,0x4b,0x51,0x69,0x83,0x00, \
-0xc2,0xdc,0x08,0x3d,0x12,0xd9,0x14,0x11,0x3e,0xb8,0x9f,0xbc,0xd8,0x59,0xc5,0x9e, \
-0xb0,0xd5,0x91,0xed,0xcc,0x48,0xed,0xfa,0x2a,0x9b,0x44,0x63,0x6c,0xb6,0x54,0x50, \
-0xa4,0x94,0x8e,0x18,0xd2,0xb0,0x17,0x45,0xb8,0xf9,0x84,0x2b,0x63,0x8f,0x18,0xf5, \
-0x72,0x5e,0x23,0xb7,0x4d,0xe9,0x75,0x53,0xc2,0x33,0x01,0xeb,0xc3,0x01,0x5b,0xb0, \
-0x03,0xd9,0xc1,0xcd,0x00,0xa2,0x65,0x1d,0x57,0x2d,0xbb,0x46,0xb6,0xf6,0x83,0xb3, \
-0xa2,0x30,0xa0,0x56,0xb0,0x5b,0xa7,0x45,0xc7,0x3f,0xba,0xd6,0xe0,0x4d,0x10,0x75, \
-0xb9,0xb0,0x4c,0xec,0xa7,0xd9,0x2c,0x28,0x75,0x6b,0xb1,0xe6,0xa7,0x69,0x70,0x46, \
-0x28,0xd6,0xd5,0xf0,0xe3,0x24,0x05,0x9d,0x4c,0x44,0xa8,0xc4,0x4b,0x56,0xb8,0xf4, \
-0x46,0xbd,0x69,0x51,0xb1,0x3c,0x15,0x31,0x35,0x90,0xf0,0x7d,0x9b,0x20,0xed,0x3b, \
-0x3f,0x42,0x94,0xc8,0x17,0x71,0x2f,0xe9,0x24,0x69,0xc0,0x77,0x4a,0x11,0x64,0x12, \
-0x15,0x14,0x30,0xa0,0xee,0xa2,0x09,0x1a,0xcd,0x5e,0xf5,0x2e,0x4c,0xd9,0x68,0xdc, \
-0x5a,0xff,0x96,0xcd,0xe0,0x75,0x0c,0xcd,0x1f,0x2c,0x2e,0xce,0x50,0x86,0xf3,0xc4, \
-0xf0,0x09,0x0c,0x91,0x4f,0x9b,0x18,0x32,0x2f,0x02,0x8d,0x89,0x40,0xf2,0xd1,0xc3, \
-0x59,0x14,0x1c,0x63,0xaa,0xd1,0xed,0xb5,0x1d,0xdb,0x8b,0x09,0x17,0x50,0x78,0xbd, \
-0x59,0x99,0xc3,0x83,0x43,0x55,0xe7,0x61,0x5b,0x67,0x95,0x9b,0x5b,0xcd,0x22,0xf7, \
-0xb9,0x82,0x1e,0xa7,0x47,0x60,0xb9,0xd2,0xfc,0x34,0xaa,0x81,0x6b,0x2b,0x43,0xd0, \
-0x62,0x7b,0x1d,0x48,0xf1,0xee,0x5a,0x37,0x99,0x7a,0x47,0xd7,0xe6,0xe3,0x57,0xaf, \
-0x5c,0xd8,0x76,0xcf,0xa1,0x1e,0x56,0x38,0xb8,0x0b,0xf8,0x72,0x6f,0x79,0x4a,0x94, \
-0xe7,0xdb,0x76,0xae,0xb7,0x70,0xce,0x2c,0xf5,0x35,0x8f,0xa9,0xba,0xc6,0xdd,0x2c, \
-0x33,0x45,0x92,0x38,0x11,0xde,0x45,0xc0,0x16,0x1d,0xfd,0x44,0x91,0xb4,0xf6,0x15, \
-0x07,0x5a,0x8f,0x36,0x3e,0x68,0x7c,0x4f,0x16,0x6f,0x08,0x51,0xfc,0xbe,0xa6,0x87, \
-0x3d,0x33,0xcb,0xc5,0xf9,0x14,0xd9,0xeb,0x5e,0x91,0x52,0x1c,0xb8,0x30,0x82,0xbc, \
-0x5b,0xac,0xe1,0x92,0x98,0x5f,0xd1,0x7a,0x47,0x90,0x5b,0x8a,0xd0,0x64,0x8e,0x34, \
-0x72,0xc9,0x8e,0x3e,0x2a,0xc6,0x14,0x74,0x42,0x25,0x68,0xc8,0xc8,0x77,0x4f,0x1b, \
-0xeb,0x61,0x28,0x31,0x95,0x6e,0xcb,0x0f,0xd7,0xf8,0x47,0xd1,0x4b,0xe7,0x99,0xba, \
-0x6d,0xdb,0xc3,0x90,0x0e,0x2d,0xc7,0x56,0x19,0xea,0x7d,0x85,0xe2,0x28,0x3c,0x63, \
-0x9c,0xc7,0x91,0x76,0x52,0x0a,0x70,0xc6,0x1a,0xe0,0xcc,0xca,0xbf,0x97,0x17,0x02, \
-0x09,0xa6,0x76,0xc3,0x7b,0x76,0xf8,0x7e,0xd9,0xd7,0xf5,0xff,0x6f,0xe6,0xfb,0xaa, \
-0xee,0x07,0xef,0x7e,0x30,0xa3,0xfe,0x0b,0x05,0x03,0x08,0x42,0x8d,0xa3,0x3e,0x2c, \
-0x5b,0x71,0x5d,0xc0,0x77,0x46,0xa1,0x73,0x58,0xce,0x89,0x83,0x69,0x56,0x0c,0x4e, \
-0xc1,0xe9,0xfd,0x42,0x88,0x85,0xde,0x64,0x02,0x18,0x63,0xa7,0x5e,0x9b,0x24,0xa9, \
-0x00,0x81,0xdb,0xff,0xc4,0x00,0x6d,0x7e,0x68,0x82,0x82,0x68,0x34,0x68,0x49,0x90, \
-0x80,0x81,0x05,0xbc,0x6e,0x3c,0xea,0x7e,0x10,0xd2,0x04,0x4f,0xbf,0x0b,0xea,0xbb, \
-0x02,0x17,0x97,0x17,0x47,0x8e,0xc8,0x7a,0xf9,0xf7,0xe4,0x4b,0x78,0xe2,0xdd,0xed, \
-0xdf,0x93,0x8f,0xc6,0x2e,0xbc,0x3e,0xb8,0x2d,0x56,0x89,0xf4,0xa8,0x3c,0x6c,0x54, \
-0x7e,0x0b,0x1c,0xde,0xdc,0x4e,0xe0,0x35,0xb0,0x42,0x0d,0xb8,0xa4,0xca,0x00,0x3e, \
-0x36,0x9e,0x45,0x2a,0x43,0x94,0xe7,0xd0,0x97,0x79,0xe3,0x92,0x2c,0x4d,0x41,0xf5, \
-0x42,0x0c,0x75,0xf5,0x01,0x1f,0xbb,0xb4,0xc3,0x89,0x46,0xbd,0x29,0x4f,0x97,0x40, \
-0xc1,0x7b,0xf2,0xf3,0x32,0x86,0x0d,0x68,0xf0,0x31,0xb6,0x18,0x55,0x19,0x8b,0xb0, \
-0x48,0x56,0xd6,0xd0,0xac,0x63,0x9b,0x7f,0x1e,0x6e,0x50,0x80,0x03,0x33,0x31,0xd1, \
-0xef,0x45,0x72,0x7e,0x6a,0xfa,0x38,0xba,0x80,0xd7,0xbc,0xac,0xfb,0x67,0x1c,0x4b, \
-0xb8,0x7b,0x27,0xf4,0xf1,0x5c,0xac,0x6c,0x81,0xf8,0xfb,0x94,0xfd,0xfa,0x8f,0xab, \
-0x91,0x3b,0xee,0x01,0x11,0xc9,0x8c,0xd3,0x56,0xac,0xda,0x7d,0x97,0x75,0x1a,0x52, \
-0xee,0x13,0x22,0xe0,0xb8,0x24,0xa9,0x05,0x95,0xf2,0x2f,0xb2,0x38,0x5d,0x53,0x5a, \
-0x18,0x5a,0xa5,0x1a,0xa1,0x71,0x4d,0x8d,0xca,0x1d,0x22,0xf4,0x22,0xdc,0x70,0x8a, \
-0xe4,0x01,0x17,0xee,0xf0,0xd1,0x13,0x19,0x8a,0x85,0x0c,0x93,0xcd,0x4a,0xee,0xc6, \
-0x24,0x81,0x19,0x7c,0x3f,0x18,0x53,0xef,0xc6,0x73,0xc9,0xed,0x25,0x50,0x03,0x46, \
-0x4e,0xae,0x10,0x37,0x0e,0x31,0x31,0xb8,0x91,0x12,0xe5,0x41,0xe7,0xf1,0xc7,0x20, \
-0xc2,0xff,0x48,0xc7,0xf7,0xbd,0x5e,0x21,0x28,0xae,0x6b,0xfe,0xe1,0xaf,0x4d,0xc6, \
-0x4e,0xf8,0x9f,0x9f,0x90,0xa5,0x95,0x7c,0xfe,0xaf,0x0b,0xc9,0xaf,0xc7,0xf4,0x7b, \
-0x95,0x93,0xdf,0x2f,0x2c,0xe6,0x37,0xf7,0x9f,0xab,0x14,0x54,0x8c,0x95,0x0a,0xc6, \
-0x32,0x60,0x2c,0x1e,0x7f,0xdd,0x8c,0xfe,0xef,0xcf,0xb9,0x93,0x8e,0xf4,0xc3,0x58, \
-0x31,0xe9,0x69,0xfc,0x88,0x54,0x05,0x5d,0x06,0xd1,0x2c,0x05,0xd2,0x96,0x22,0x41, \
-0x06,0x3f,0x7f,0xf9,0x60,0xa3,0xf1,0x49,0xcb,0x99,0xae,0x24,0xd9,0x0b,0x04,0x55, \
-0x31,0x65,0x14,0x57,0x6e,0x97,0x00,0x1a,0x35,0xbb,0xda,0x26,0x20,0x64,0x4a,0x41, \
-0x11,0x95,0x38,0xf9,0xfd,0x1e,0xf1,0x7e,0x3f,0xb3,0x79,0x21,0xb0,0xa8,0xc0,0x37, \
-0xa1,0x0b,0xc2,0x8d,0xa2,0x62,0xfc,0x30,0x65,0xc4,0x17,0xa3,0x87,0x3c,0x34,0xc1, \
-0x09,0x94,0x34,0xc1,0x63,0x8b,0x66,0x7e,0xca,0x6c,0xa9,0x9a,0xc2,0xe8,0xe2,0x18, \
-0x93,0xfa,0xd2,0x19,0xcc,0xb3,0xb5,0xbe,0xcd,0x70,0xe0,0xa8,0xa9,0x21,0xa3,0x19, \
-0x43,0xf3,0x66,0xae,0x61,0x18,0xa8,0x8a,0x72,0xd3,0x1d,0xee,0x9a,0x5f,0x7a,0x48, \
-0x5f,0xff,0xa5,0x05,0x50,0x53,0x6a,0x9a,0xc2,0x40,0x09,0x82,0xbb,0x44,0x20,0x49, \
-0x63,0xa4,0xc3,0xbd,0x34,0xe7,0x8d,0x25,0xd8,0x11,0x9c,0x23,0xb1,0x21,0x5a,0x49, \
-0x64,0xe3,0x9c,0x00,0x43,0xaa,0x55,0x20,0x56,0x6d,0x82,0xa5,0x15,0xb6,0x5a,0xac, \
-0x30,0x8b,0x9a,0x05,0x61,0x83,0x14,0x5c,0xc2,0xfd,0x56,0x84,0xc1,0xb9,0x7a,0xb1, \
-0x91,0x38,0x66,0x12,0xa6,0x96,0x67,0x1c,0xad,0x20,0xa5,0xb0,0x88,0x00,0xde,0xc9, \
-0x58,0xc2,0x5d,0x37,0x45,0x26,0x03,0xea,0xae,0xbf,0x2f,0xb9,0x8e,0xff,0x16,0xfc, \
-0x37,0x45,0xcf,0x90,0xd1,0xac,0x67,0xe2,0xc4,0x25,0x87,0x51,0x8f,0x9b,0x8c,0x52, \
-0x29,0xf5,0xd2,0x26,0xf0,0x9b,0xad,0x67,0x01,0x6b,0x42,0xc3,0x8e,0xbc,0x35,0x2e, \
-0xdd,0xbc,0x37,0x87,0x26,0x76,0xa7,0xcf,0x8c,0x99,0xc9,0x21,0x0f,0xef,0x90,0xf8, \
-0x88,0x1f,0xe2,0x92,0xa2,0x90,0x1b,0x6a,0x59,0x11,0x0b,0x9d,0x10,0x81,0x99,0x98, \
-0xe0,0x64,0x07,0x16,0x16,0x20,0x6b,0x5d,0x78,0x19,0x15,0xb0,0xf3,0x28,0x0d,0x75, \
-0x6f,0x13,0x16,0x32,0xf8,0x38,0x01,0x9c,0x66,0x01,0x39,0x27,0x87,0x0f,0x65,0xf2, \
-0xdb,0xd7,0xd9,0xf0,0xac,0x6f,0x82,0xbb,0x7d,0xfd,0x31,0xf5,0x6a,0xa0,0xab,0xba, \
-0x49,0xaf,0x58,0x3e,0x6e,0x47,0xc7,0x99,0x00,0x63,0x47,0x43,0xcc,0x6b,0x07,0x1f, \
-0x87,0x24,0x90,0x59,0x7c,0x6e,0xe2,0x12,0x0f,0x10,0x3e,0x80,0x7a,0x82,0x37,0xe0, \
-0xa3,0x20,0x86,0xb2,0x24,0x04,0xaf,0xb1,0x8c,0xa6,0x17,0xd6,0x32,0xc1,0xeb,0xce, \
-0x99,0x64,0x62,0x31,0x76,0x31,0x77,0xc3,0x83,0xcd,0xa7,0xb9,0x57,0xe1,0x55,0x74, \
-0xdd,0x3f,0xe7,0xb4,0xfd,0xad,0x90,0xd4,0x0a,0xf6,0x1a,0xc5,0xc2,0x87,0xdc,0xd6, \
-0x6c,0xfe,0xcf,0xfe,0x6d,0x17,0xbf,0x53,0xc5,0x99,0x53,0x45,0xac,0xdd,0x10,0x34, \
-0x1c,0x1e,0xd2,0xe0,0x15,0x50,0x6f,0xa0,0x58,0x1e,0xa4,0x9e,0x86,0x97,0x17,0x72, \
-0xcf,0xde,0xf2,0xcd,0x62,0xbb,0x02,0xf5,0x25,0x80,0x30,0x8c,0x3e,0xab,0xed,0x14, \
-0x86,0x82,0xa2,0x07,0x85,0x39,0xc4,0xb5,0x0a,0x7f,0x7b,0xa4,0x98,0x48,0xe1,0x32, \
-0x3a,0x04,0x6a,0xe2,0x79,0x09,0xb7,0xae,0x12,0x8b,0xa9,0x89,0x03,0xef,0x63,0xa9, \
-0x44,0xaf,0x65,0x77,0x13,0x6e,0xb5,0x94,0x17,0xbd,0xe3,0x73,0x8d,0xf4,0x61,0x1f, \
-0x3a,0x2d,0x90,0x80,0x24,0xa7,0xf8,0xfc,0xb8,0xf2,0x99,0x39,0xd9,0x35,0x0b,0xd1, \
-0x83,0x0b,0xa3,0x19,0x2c,0x9d,0x03,0x83,0x04,0xd7,0x8a,0x73,0xf2,0x04,0x4b,0x78, \
-0xff,0x25,0x5a,0x6c,0x35,0x60,0x41,0xe6,0x5a,0x67,0x07,0x38,0x40,0x36,0x3d,0xe0, \
-0xdf,0x80,0xe1,0xd9,0xb8,0xbe,0x71,0x73,0x9c,0x1d,0x52,0xf3,0xf9,0x8d,0x3d,0x1d, \
-0xe5,0xb8,0xae,0x7c,0x48,0xa9,0x86,0x79,0x6a,0xf3,0x4b,0xed,0x1b,0xb4,0x09,0x26, \
-0x85,0x5a,0x24,0x12,0x98,0x03,0xb4,0xcb,0x81,0xfe,0x9f,0xd7,0xdb,0x62,0xc4,0xbd, \
-0x9e,0x5c,0xa0,0x59,0x57,0xe7,0x3a,0x0f,0x15,0x28,0x10,0xd0,0xc2,0x81,0xdf,0xb3, \
-0x35,0x3d,0xdd,0x20,0x7e,0x80,0xdc,0xd2,0x0f,0x37,0x6a,0xf5,0x56,0x7d,0xa9,0x3e, \
-0x15,0x2d,0xab,0xd6,0x8f,0x5e,0xd6,0xe7,0x63,0x5a,0xca,0x5a,0x96,0xbb,0x8d,0x72, \
-0x7b,0x81,0x59,0x0a,0x94,0xc3,0x51,0xa8,0xf2,0x40,0xb7,0x1f,0x03,0xf5,0xfb,0x3c, \
-0xdf,0xe3,0x2a,0x44,0x79,0x18,0xca,0x9a,0x17,0xd7,0xf9,0x9f,0x69,0x21,0xa1,0xa0, \
-0x28,0x63,0x6c,0x02,0x53,0x02,0x44,0xdb,0x2a,0xac,0x7e,0x7a,0x7a,0x71,0x4b,0x68, \
-0xcd,0x46,0x72,0x86,0x68,0x26,0x20,0xa1,0x93,0xfe,0x27,0xbb,0x96,0xce,0x6b,0x06, \
-0xd0,0x93,0xbc,0x5a,0x34,0xe9,0x0c,0x42,0x65,0xc9,0x16,0x4a,0x0f,0x68,0xaa,0x55, \
-0xf2,0x3a,0x72,0x90,0x96,0x11,0xbc,0xad,0x19,0xf3,0x8c,0x38,0x4b,0xfd,0xf5,0xd3, \
-0x97,0x77,0x68,0xba,0x5a,0x68,0x6c,0x3d,0x50,0x11,0xfb,0x7a,0xcb,0x83,0x57,0x5d, \
-0xf7,0xa0,0xa0,0x1e,0x1c,0x43,0xfa,0xbf,0x99,0xcf,0x66,0xc7,0x99,0x0d,0xd3,0x69, \
-0x0d,0x07,0xb9,0xd7,0xd3,0x0f,0xaf,0xc0,0x96,0x20,0x86,0xad,0x55,0x04,0x44,0x46, \
-0x0c,0x15,0x8a,0x46,0x08,0x8f,0xe1,0xe7,0xaf,0xa4,0x3e,0x4e,0x34,0x35,0x49,0xf1, \
-0xcf,0xf5,0x3a,0xbe,0x03,0xef,0xb1,0x04,0x41,0x19,0x95,0xfd,0x76,0x0b,0xfe,0x15, \
-0xdc,0x2d,0x0b,0x91,0xe5,0x3a,0x46,0x28,0x5d,0x1e,0xa8,0x21,0x9c,0xd3,0x9d,0xa0, \
-0x52,0x7f,0x42,0x1b,0x24,0xa8,0x1c,0xa2,0x74,0x27,0x1c,0x22,0xf4,0x86,0xd2,0x16, \
-0xf5,0x69,0xd8,0x79,0x4f,0x4f,0x91,0xe2,0x50,0xf2,0x80,0xc7,0x5b,0x88,0xc3,0x02, \
-0xab,0x15,0x05,0x8c,0x20,0x6f,0x27,0xdb,0x70,0x5c,0x0d,0x3a,0xd1,0xff,0x10,0x88, \
-0x51,0x9f,0x2e,0x67,0x81,0x89,0x1e,0x6b,0x0d,0xca,0x81,0xb4,0xa3,0x41,0x28,0x08, \
-0x4b,0x0e,0xfd,0xd7,0x44,0x01,0xef,0x74,0xc1,0x55,0x93,0x64,0xc0,0xc3,0x6c,0x53, \
-0x2c,0x32,0xd3,0x14,0xc2,0x6e,0x92,0xb9,0x1a,0x24,0xd7,0x1f,0x59,0xfe,0xfc,0x70, \
-0x27,0xc2,0x05,0xb7,0xf3,0x8c,0x1f,0xdb,0xaa,0x4b,0x8e,0x52,0x70,0xf5,0xa2,0xc9, \
-0x88,0x65,0x19,0xf5,0x5b,0x24,0x3e,0x98,0x5a,0x04,0xa1,0x1a,0xf3,0x74,0x2a,0xc2, \
-0x8a,0x33,0x00,0xca,0xa8,0xc4,0xaa,0x2b,0x65,0xde,0xb3,0x82,0xc2,0x2c,0x34,0x95, \
-0x4a,0x86,0x41,0xdc,0x1d,0x11,0xd3,0x3d,0xb3,0xb7,0x66,0x18,0xa3,0x4d,0x23,0x52, \
-0x6a,0x83,0x3a,0x18,0x33,0xd4,0xcf,0xb1,0xcd,0x6b,0x08,0x15,0x98,0x82,0x66,0x17, \
-0x49,0x01,0xaf,0xa8,0xd1,0xba,0xa5,0x73,0x42,0xa1,0x98,0x2a,0xfb,0xbc,0x4e,0xa4, \
-0x22,0x86,0xd3,0xc0,0xfc,0x7d,0x87,0x51,0xb4,0xd2,0x7e,0x85,0x48,0x7c,0xcf,0x80, \
-0x3b,0xb2,0x4f,0x2c,0x53,0xd2,0xc8,0x15,0x93,0xc5,0xba,0xe3,0x11,0x0f,0x36,0xbb, \
-0x50,0xd7,0x73,0x24,0x86,0xac,0x03,0x2f,0xb6,0x12,0x96,0x91,0x2f,0x6e,0xc3,0xbe, \
-0x4f,0xa8,0x79,0xb3,0x51,0xa5,0x94,0xcf,0x61,0xd2,0xb8,0xd3,0xaa,0x00,0x87,0x93, \
-0x63,0xe8,0x1c,0x09,0x7b,0x9b,0xc4,0xc6,0x4b,0xc1,0x1d,0x69,0x9c,0x01,0x41,0xa8, \
-0x54,0xbf,0xd3,0x31,0x87,0x02,0x21,0x16,0x40,0x51,0xcd,0x9c,0xc3,0xc3,0x0c,0xd0, \
-0xb3,0xb1,0x34,0x09,0xac,0x34,0x94,0xa9,0xc2,0x44,0xfb,0x78,0x8b,0x23,0x4d,0xa6, \
-0x26,0x4e,0xd2,0xd4,0xab,0x51,0x1a,0x33,0x14,0xa5,0xb1,0x55,0x49,0xe9,0x69,0x53, \
-0x8b,0xeb,0x88,0xe3,0x20,0xe2,0x63,0x1f,0xd8,0x38,0x18,0xd3,0x1f,0xf6,0x44,0x10, \
-0xfc,0xbe,0x57,0x1b,0x86,0xbc,0xc6,0x12,0x2c,0xfc,0x88,0x49,0x07,0xa3,0x78,0x1e, \
-0x7c,0x97,0x3e,0x80,0x78,0x24,0x15,0x6e,0x4a,0x05,0x4a,0x8f,0xab,0x55,0x83,0x24, \
-0x36,0x93,0x48,0x4e,0xf8,0x3d,0x10,0x5f,0xb7,0x50,0x23,0x44,0xd1,0x39,0x85,0x69, \
-0x7b,0x18,0x8e,0x3c,0x8e,0xd6,0xd3,0x11,0xf3,0x62,0x5e,0xd3,0x15,0x16,0x5f,0x04, \
-0xce,0xe6,0xb7,0xa3,0x8a,0x0d,0xe4,0x6b,0xa7,0x4e,0xc0,0xd3,0x13,0x09,0xf5,0x9a, \
-0xc1,0xbe,0xfd,0x70,0xda,0x91,0x81,0xd5,0x47,0x5c,0x90,0x7a,0xa0,0x93,0xda,0x40, \
-0xcb,0x00,0x60,0x91,0x82,0x06,0xc9,0x37,0x60,0x1f,0x4e,0x92,0xc4,0x11,0x8d,0x21, \
-0x14,0x68,0x40,0xf8,0x1e,0xdf,0x69,0x50,0x28,0x19,0x5a,0x10,0x49,0x75,0xe1,0x54, \
-0x51,0xc3,0xf6,0x6b,0x3d,0x8c,0x2e,0x66,0xd1,0x80,0xd8,0xd8,0xbf,0xa4,0x40,0x7e, \
-0x3a,0xeb,0xfe,0xf5,0xd8,0xbc,0x3c,0x94,0x23,0xba,0x93,0xef,0xa1,0x01,0xd3,0xe3, \
-0x15,0x07,0xdd,0xa3,0x44,0x5a,0x37,0x1c,0x53,0x06,0x0d,0x6f,0x70,0xce,0x36,0x58, \
-0xfd,0x9e,0x52,0x61,0x88,0xff,0x8b,0x48,0xef,0x67,0xd7,0xf9,0x79,0x43,0x8f,0xcf, \
-0x34,0x06,0xe3,0x9f,0x49,0xe5,0x02,0x22,0x63,0xaa,0x3c,0xd4,0x37,0x8b,0x7b,0x4b, \
-0x0a,0xd8,0xf6,0x25,0xec,0xa4,0xd2,0xdc,0x0b,0x35,0xfb,0x9c,0x44,0x1d,0x98,0x7b, \
-0xed,0x93,0x44,0x62,0x43,0x89,0xa5,0x82,0xbb,0x1e,0x92,0xd7,0x43,0x96,0x3e,0x93, \
-0x77,0x6a,0x3d,0xa9,0xdc,0xf3,0x0e,0xc4,0xe2,0x17,0xe7,0x30,0x67,0xa5,0xac,0x81, \
-0xbc,0x61,0x58,0x1a,0xd4,0x84,0xc1,0x82,0xfa,0xcc,0x08,0x39,0x03,0xb7,0x99,0x4d, \
-0x13,0x2e,0x61,0xc7,0x9c,0x99,0x6b,0xb2,0xbb,0x67,0x10,0xe3,0xb7,0x87,0xe1,0xf4, \
-0x5d,0xab,0xd2,0x83,0x1b,0x07,0xd0,0xc4,0xc1,0xa4,0x69,0xae,0x88,0xb0,0x23,0xa7, \
-0x33,0xc8,0x6a,0x05,0x73,0x80,0x69,0x0a,0xf7,0x89,0x71,0xb8,0xc1,0x70,0xde,0x23, \
-0x98,0xd0,0xb4,0xa1,0x73,0x35,0x7f,0x61,0xea,0xb6,0x5d,0x61,0x26,0xc1,0xa0,0x67, \
-0xab,0xa0,0x6e,0x35,0x1a,0xf6,0x6d,0x4c,0x80,0xe0,0x96,0xa3,0x36,0x66,0x7c,0xb1, \
-0x03,0xce,0xfa,0x2b,0x10,0xc4,0x7f,0xef,0x97,0x31,0x46,0x53,0x1d,0x6a,0x86,0x34, \
-0xa7,0x9b,0x3c,0x5b,0x6d,0x23,0x01,0xaf,0x88,0xf6,0x9b,0x3d,0x66,0xd2,0x87,0x79, \
-0x30,0x8e,0x0d,0x0c,0xc2,0xc8,0xd9,0xd1,0x50,0xcb,0xff,0x10,0x5b,0x50,0x28,0x0e, \
-0xd1,0x92,0x0c,0x0e,0xcc,0xf6,0x6b,0x37,0x0d,0x22,0x68,0x93,0xcb,0xd6,0x75,0xf3, \
-0xf4,0xfe,0x63,0xc7,0xb6,0x79,0x21,0xc5,0xa3,0x3c,0x90,0xac,0x14,0x58,0x22,0x23, \
-0x11,0x01,0x58,0x2a,0xa8,0x09,0x1e,0xa3,0x18,0x90,0xa5,0x26,0xde,0xb3,0xe6,0xcf, \
-0xee,0x4e,0x86,0x8a,0xd2,0x92,0xb4,0x9b,0x98,0xc1,0xd2,0xf6,0xbd,0x19,0x06,0xe3, \
-0x41,0x60,0x0e,0xe4,0x18,0xf3,0xb0,0x6e,0x66,0xa2,0x41,0x41,0x89,0xb1,0xa4,0x92, \
-0xb6,0xa0,0x45,0x6e,0x27,0x15,0x74,0x04,0x22,0xad,0x0a,0xa8,0x47,0xa0,0x7a,0x22, \
-0xce,0xd7,0xd9,0xe6,0xf2,0x8e,0x72,0x9b,0xe0,0xb0,0x1b,0x8b,0x94,0xe9,0xd4,0xb7, \
-0x06,0x86,0x7a,0x13,0xb5,0x88,0x90,0x51,0x51,0x80,0x89,0x14,0x4e,0x00,0x85,0x30, \
-0x36,0x4e,0xef,0x63,0xbc,0x74,0xfc,0x8f,0x1d,0xbd,0xbe,0x18,0xf6,0xf6,0x05,0xc5, \
-0xb6,0x33,0x2a,0x61,0x43,0x1c,0xa0,0x9b,0x41,0x76,0x56,0xf2,0x6d,0xff,0xa1,0xe6, \
-0xda,0xbc,0x5a,0x5c,0xc3,0x41,0x86,0x8b,0xb4,0xa3,0x6b,0xb5,0x9e,0xbd,0x88,0xdc, \
-0x0b,0x56,0xda,0xf6,0x0c,0x60,0xf5,0x9c,0xd8,0x36,0xe0,0x58,0xee,0x7a,0x84,0xa5, \
-0xea,0x2a,0x10,0xac,0xf0,0x51,0x1c,0x8b,0x5e,0xf9,0xe3,0x04,0xb2,0x5a,0x0c,0x56, \
-0xcc,0xbf,0x09,0xfe,0x38,0x9a,0xd9,0xcd,0xa6,0xba,0x71,0x61,0x2f,0x06,0x96,0x9a, \
-0xfc,0xd7,0x10,0x9b,0x06,0xfc,0xc9,0xeb,0x11,0x50,0x40,0x3f,0xc9,0x92,0xb2,0x2c, \
-0x82,0xce,0xc1,0x84,0x86,0x1f,0xbb,0x08,0x69,0xb4,0xc7,0x2e,0x18,0xb8,0xdb,0xcb, \
-0xdd,0xdd,0xce,0x96,0x8d,0xb2,0x68,0x52,0x65,0x4b,0x0b,0x74,0xd9,0xcf,0x98,0x5e, \
-0x96,0x75,0xe1,0x51,0x86,0xbc,0xca,0x5d,0xe9,0x20,0x0b,0x8a,0xfa,0xb5,0x04,0x8c, \
-0xbd,0xc0,0x20,0x30,0xd4,0xf9,0xb2,0x2d,0x87,0x5d,0x02,0x0e,0x20,0x5f,0x89,0xc3, \
-0x8b,0x6d,0xce,0xd8,0x22,0xe4,0xb2,0xbc,0x90,0xd7,0x90,0xd0,0x28,0x3d,0x9b,0xee, \
-0x35,0x59,0x23,0x1c,0xe5,0x08,0xbe,0xb1,0xde,0x4a,0xc0,0x41,0xac,0xae,0xcb,0x79, \
-0x2d,0x82,0x27,0x74,0x98,0xd0,0xc0,0xe8,0x4b,0x0c,0x02,0x00,0xe3,0xd5,0xfb,0xca, \
-0xbb,0xa4,0xc6,0x6e,0xef,0xbd,0x9a,0x18,0xe7,0x81,0xd0,0x90,0xf7,0xa0,0x28,0x1f, \
-0x4f,0x22,0x3d,0x8b,0x42,0x2a,0xa2,0x0c,0xc6,0xcd,0x10,0x99,0xc0,0x47,0xf2,0xf3, \
-0x53,0x08,0xb1,0x0f,0x61,0x62,0x18,0x97,0xff,0x1d,0x90,0x17,0x8d,0x16,0xaa,0xe3, \
-0x91,0x62,0xa2,0x2c,0x9a,0x18,0x36,0xdb,0x42,0x6f,0xa5,0x5a,0x38,0x77,0xcc,0x73, \
-0x2e,0x00,0x96,0x58,0x51,0xe1,0xfa,0x5d,0x63,0x2e,0x5e,0x3d,0xe6,0xd4,0x18,0x76, \
-0x9e,0x55,0x75,0xc3,0xfb,0x80,0xb8,0x36,0x6f,0xfe,0x1f,0xe9,0x11,0xba,0xa1,0x86, \
-0xa1,0x19,0xe5,0x81,0x7c,0xdd,0x67,0x4f,0x88,0x8a,0x45,0x88,0x8a,0x46,0x44,0x82, \
-0x28,0x0c,0x54,0x44,0x80,0xaa,0x7e,0x2d,0x59,0xc5,0xa2,0xaa,0xb1,0x50,0x8c,0x18, \
-0x82,0xa2,0x28,0xba,0xd9,0x52,0x2a,0x4d,0x9c,0xb3,0x0b,0x14,0x11,0x7f,0xb3,0x1b, \
-0x63,0xe6,0xcc,0xed,0xeb,0xf8,0x69,0x21,0xb8,0x84,0x11,0x84,0x16,0x2c,0x3f,0x14, \
-0x87,0x27,0x01,0x16,0x41,0x05,0x27,0x27,0xf5,0x3d,0x8e,0x7c,0x68,0x55,0x74,0xd4, \
-0x83,0x28,0x92,0x7c,0xcd,0x75,0xb2,0xd2,0x11,0x41,0x31,0x83,0x0d,0x71,0x1f,0xb8, \
-0x31,0x45,0x63,0xb1,0xaf,0xeb,0xdb,0xfc,0xfb,0x8c,0x32,0x15,0x5c,0x89,0xca,0x04, \
-0xb6,0x8b,0xea,0x39,0xdf,0x5c,0x65,0xda,0xb1,0x41,0xb6,0x10,0xfa,0x92,0x37,0x12, \
-0xbc,0x8b,0x93,0x2b,0x15,0x23,0xef,0x4a,0xc2,0x81,0x42,0x68,0xda,0x14,0x3c,0xe8, \
-0x3e,0xbd,0xbc,0x01,0x71,0x41,0xe7,0xfe,0x3f,0x65,0x0f,0xda,0x84,0x80,0xe1,0xad, \
-0x2c,0x38,0xfe,0x4d,0x55,0x5f,0x8b,0xe4,0x15,0x3a,0xcc,0x63,0xaa,0xb1,0xa9,0xe9, \
-0xdc,0x6f,0x46,0xa6,0x79,0x12,0x03,0x27,0xf4,0xf9,0x5c,0xb3,0xf5,0xcd,0xe0,0x5a, \
-0xf9,0xc7,0x29,0x7e,0xf6,0xb1,0xfa,0xcd,0xe0,0xf3,0xea,0x9c,0x37,0xdb,0xa6,0x19, \
-0xb1,0x41,0x12,0x96,0xa1,0xd6,0x64,0xea,0xc3,0xf8,0x3b,0xe0,0x65,0x9e,0x7b,0x26, \
-0x91,0x4f,0x53,0xf2,0x0f,0xb6,0xf6,0xa8,0xaa,0x16,0xc9,0x39,0xbb,0x38,0x9d,0x7c, \
-0x45,0x16,0xaf,0x09,0x79,0x31,0xb2,0x04,0x12,0xd3,0x7f,0x39,0x5d,0x86,0xc7,0xb2, \
-0xa3,0xe3,0x38,0x07,0x4f,0x1f,0xf8,0xdb,0x71,0x53,0x03,0x80,0x5f,0x12,0x2c,0x4a, \
-0xa5,0x7b,0x9a,0x58,0x9b,0xa9,0x48,0x7e,0x9c,0x3d,0x37,0x05,0x54,0x21,0x82,0x3c, \
-0xcd,0x7e,0xb7,0x7b,0xa7,0xc8,0xd2,0xaf,0x18,0x2d,0x10,0x12,0xc3,0x69,0xac,0x89, \
-0x75,0xdd,0x8d,0xfe,0x9f,0x91,0x5d,0xca,0x9c,0x1f,0x84,0xea,0x02,0x3d,0x35,0x81, \
-0x2b,0x36,0x68,0xd2,0x88,0x54,0x73,0x79,0x98,0xb3,0x07,0x28,0xe8,0x1f,0x21,0xe9, \
-0x41,0xf8,0x03,0x20,0x3e,0x34,0x08,0x41,0x9e,0x41,0x4d,0x2a,0x1d,0x53,0x83,0x00, \
-0xc3,0x79,0x06,0x03,0x96,0xac,0xf5,0x33,0x63,0x56,0x7c,0xa1,0x6b,0x5a,0xfa,0x4f, \
-0xf9,0xf3,0x33,0x61,0x54,0x60,0x8a,0x9d,0xe1,0x4f,0xbe,0x85,0xc5,0x24,0xac,0x06, \
-0xd9,0x27,0xdd,0x06,0x05,0x19,0x83,0x83,0xd1,0x3f,0x1d,0x34,0x27,0xf9,0x30,0xfb, \
-0x3f,0x32,0xa1,0x5a,0x5f,0x8f,0xda,0xd5,0x75,0xe7,0x0a,0x3c,0x38,0x29,0xf7,0xb2, \
-0x81,0x5b,0x52,0x8f,0xdb,0x69,0x25,0x3c,0x84,0xe4,0x4f,0x23,0x96,0x4e,0x99,0x9d, \
-0xe1,0xc2,0x2a,0x1e,0x10,0x3c,0xd8,0x70,0x64,0xf2,0xfe,0x3c,0x7c,0x2d,0x23,0x0a, \
-0x1b,0xa3,0x60,0x0d,0x1d,0x31,0x1f,0x05,0x77,0x34,0x35,0x6f,0x54,0x21,0x26,0x31, \
-0x15,0x4a,0xb0,0x0a,0xdc,0xbc,0x2a,0x50,0x46,0xa3,0xc0,0x60,0x7d,0x26,0x40,0x53, \
-0x0a,0x1f,0x30,0xb2,0xb1,0xdd,0x73,0xe1,0xeb,0x37,0x05,0xa2,0xcc,0xde,0xe1,0x52, \
-0xaf,0x02,0xf5,0x02,0xcc,0xb0,0x28,0x90,0xe2,0x3a,0x86,0x24,0x8c,0x84,0x7a,0xa0, \
-0x6c,0xbe,0xd7,0x38,0xa3,0x68,0x92,0xa2,0xcb,0x96,0x02,0x91,0x3b,0xa4,0x0a,0xb4, \
-0x3d,0x29,0x57,0x5d,0x47,0x21,0xc5,0xef,0x84,0x20,0x94,0xe7,0xfc,0x93,0xa8,0xe6, \
-0x13,0xae,0x08,0xf8,0x30,0x0f,0xf3,0xd2,0xcd,0xad,0x8c,0x0f,0x62,0x19,0x0c,0x3e, \
-0x2c,0x40,0xda,0x02,0x81,0x7e,0x07,0x69,0x2a,0x36,0x23,0x3e,0xa1,0x12,0x42,0x8d, \
-0xd2,0x05,0x1e,0xc9,0x97,0xb7,0x15,0x21,0xf8,0x1e,0xeb,0x80,0x8c,0x52,0x0f,0xb6, \
-0xf1,0x4d,0x12,0x6b,0xa1,0xd3,0x86,0xac,0x47,0x5a,0x3e,0x0a,0xeb,0x57,0x32,0x65, \
-0xb6,0x8e,0xa2,0x8f,0x40,0x89,0x90,0x6b,0x57,0xd3,0x86,0x72,0x64,0x92,0xd4,0xbc, \
-0x18,0x48,0x5c,0xaf,0xc5,0x5b,0x0f,0x3c,0x4b,0x2e,0x56,0x06,0xd0,0x59,0xc2,0x89, \
-0x20,0x52,0x60,0x26,0x23,0xa4,0x92,0x34,0xcc,0x9e,0xd0,0xbc,0xbd,0x69,0x80,0xaa, \
-0xd1,0xe4,0x70,0xc6,0x0f,0x77,0x2d,0xb3,0x96,0x69,0x18,0x30,0x6d,0x06,0xdd,0x61, \
-0xe7,0xff,0x63,0x7b,0xcb,0x84,0xed,0x37,0x36,0xe9,0x3a,0xec,0x39,0x9a,0x3c,0x68, \
-0x29,0xf2,0xec,0x1a,0x23,0x0c,0x97,0xaa,0xb3,0x06,0x0e,0xf8,0x7c,0x52,0xee,0x93, \
-0xdf,0x3a,0xed,0x90,0x66,0x18,0x78,0x69,0xe5,0xc4,0x3d,0x26,0x0e,0xec,0x41,0xa5, \
-0x0b,0x33,0x58,0x7e,0x0a,0x16,0x7a,0x01,0xa9,0xdd,0x9c,0x33,0x91,0x48,0x52,0x17, \
-0x03,0x50,0x8b,0x3a,0xa9,0xf6,0x38,0xc0,0x96,0x72,0x94,0x65,0x17,0xcd,0x42,0xc3, \
-0x86,0x27,0x2a,0xe4,0xa8,0x70,0xe9,0x16,0x05,0x73,0x71,0x80,0x2a,0x0c,0x97,0x02, \
-0x1d,0x0a,0x7b,0x8c,0x4b,0xa4,0xf1,0xe8,0x1e,0x49,0x61,0xc0,0xc8,0xa2,0x43,0x43, \
-0x10,0x7a,0x37,0xf5,0xaf,0x77,0x82,0xf6,0x0d,0x1f,0x0d,0x14,0x01,0x1d,0xec,0xdd, \
-0xe5,0xdb,0x0e,0x55,0x4b,0x08,0xfe,0x8d,0x7b,0x66,0x1f,0x77,0xd5,0x22,0x02,0xc8, \
-0xda,0x92,0x21,0x0d,0xf6,0xb6,0xc0,0x90,0xec,0x60,0x94,0x07,0xa5,0x82,0xfc,0xd7, \
-0xe5,0x72,0x53,0xcd,0x00,0xec,0x2a,0x44,0x0a,0xed,0xdb,0xa5,0xe5,0x4d,0x28,0x1b, \
-0x83,0x98,0xd5,0xe1,0xd4,0xd1,0x60,0x18,0x01,0x64,0x36,0x0d,0x16,0xe9,0x80,0xc1, \
-0x82,0xd5,0xff,0x78,0x2c,0xbb,0xfc,0x3a,0xb5,0xd1,0x0d,0xd2,0x22,0x06,0x8d,0x4c, \
-0x0c,0x99,0x76,0x7d,0x66,0x14,0x53,0x9b,0xc1,0xce,0x38,0x1c,0xfc,0xb7,0x48,0x69, \
-0xd1,0xa6,0xae,0xb2,0x31,0x0c,0x27,0x1e,0x47,0x04,0x1e,0x85,0xf9,0x12,0x87,0xd9, \
-0xf4,0x01,0x7b,0x04,0xd4,0xd2,0x70,0xb6,0x96,0xcf,0x0e,0x48,0x2b,0x8e,0x53,0xcf, \
-0x1a,0x55,0x95,0x11,0x02,0x92,0xeb,0x4a,0x20,0x54,0x4c,0x4c,0x60,0x7d,0x10,0xf8, \
-0x72,0x99,0xd0,0xce,0x78,0xe4,0xd8,0xda,0x85,0x6d,0x4e,0x1a,0x02,0x41,0x41,0xd6, \
-0x84,0xe1,0x27,0x71,0x34,0x20,0xac,0x4d,0x96,0xd3,0x80,0xca,0x6f,0x8a,0x4c,0xa8, \
-0x86,0x45,0xe0,0x10,0x1a,0x71,0x1d,0x1c,0x21,0x43,0x84,0x36,0x04,0x38,0x03,0x24, \
-0xd5,0xba,0x94,0x1a,0x59,0x6d,0x41,0x0b,0x7b,0x12,0x4b,0x05,0x30,0x11,0x96,0x1e, \
-0xe3,0xc3,0x6f,0xae,0x09,0xd7,0xd5,0x2e,0xf2,0x95,0x82,0x59,0xd7,0x9c,0x93,0x09, \
-0x08,0xa6,0xc0,0xe6,0x44,0x07,0xe5,0x18,0xfe,0x10,0x92,0xde,0xbb,0x1c,0x0b,0x7b, \
-0x89,0xff,0x6c,0x95,0xf1,0x83,0x78,0x1a,0x1b,0x83,0x3f,0xba,0x0b,0x19,0xd4,0x16, \
-0x16,0x49,0xab,0x58,0x66,0x94,0xd5,0x96,0x40,0x3e,0xcf,0xa7,0x9e,0xd0,0x99,0x24, \
-0xfa,0x3c,0xc2,0x11,0xaf,0x85,0x46,0x61,0x45,0x7b,0xd1,0xd3,0x9f,0x12,0x94,0x81, \
-0x6f,0x1d,0x1a,0x0a,0xd6,0xa8,0xa3,0x09,0x77,0x21,0x9c,0xa6,0x28,0x83,0xae,0x33, \
-0x4c,0xe1,0xae,0x4a,0x66,0x95,0x30,0x02,0xe1,0x28,0xe6,0xd4,0xc2,0x2c,0x25,0x40, \
-0xde,0xe9,0x8a,0x6a,0xdd,0x04,0xa8,0x6c,0x37,0x37,0x2e,0x1e,0xda,0x68,0x69,0x48, \
-0x2c,0xdd,0x9a,0xac,0x99,0x49,0x35,0x30,0x33,0x4b,0xa6,0x72,0x2e,0x10,0x64,0xb7, \
-0xd5,0x8a,0x70,0xa6,0xb8,0xa8,0xe8,0xd9,0x96,0xe4,0x52,0x3b,0x82,0x0e,0xdb,0xe2, \
-0x98,0x32,0x0c,0x4e,0xfb,0xd5,0xee,0xb5,0x98,0x09,0xdd,0x26,0xee,0xab,0xf3,0x7a, \
-0x8e,0xfc,0x3e,0xb2,0x3c,0x60,0x9d,0xc4,0xf3,0x76,0xff,0x0a,0x4d,0x6b,0x58,0xd3, \
-0xea,0xf5,0x6e,0x82,0x47,0x89,0xcf,0xba,0x51,0x82,0x8d,0xc3,0x1b,0xda,0x44,0xca, \
-0x22,0x20,0x52,0x33,0xc6,0xd8,0x1c,0x5d,0xad,0x6d,0x9a,0xc8,0xb5,0x98,0x9b,0x10, \
-0x7b,0xfa,0xe6,0xad,0x76,0x2d,0xbc,0x25,0xd3,0x33,0x12,0x20,0xa7,0x90,0x50,0x49, \
-0x95,0x17,0x50,0xf3,0x72,0x7b,0x30,0xe8,0x28,0x7d,0x2d,0x02,0xbc,0xf6,0xdd,0x04, \
-0x8a,0x11,0xbe,0x33,0x42,0x54,0xdd,0xa0,0x42,0xb4,0x6a,0x75,0xb1,0x8e,0x77,0xca, \
-0x05,0xad,0x81,0xed,0x68,0x5f,0x17,0xe9,0xc3,0xa5,0x65,0x05,0xec,0xbc,0xb0,0x1d, \
-0x3b,0xe1,0x71,0xfe,0x67,0x81,0xb1,0x24,0xae,0xbf,0xc0,0x2e,0xc3,0x7d,0x33,0xe9, \
-0x22,0x48,0x98,0x4c,0x58,0xb6,0x8f,0xe8,0xb5,0x15,0xc5,0x50,0x4c,0xbf,0xac,0x8a, \
-0xaf,0xe2,0xfd,0x59,0x6c,0xc8,0x24,0x15,0x93,0xd1,0xd5,0xfd,0x70,0xca,0x76,0x59, \
-0x8e,0x31,0x92,0x30,0xb4,0x85,0xa2,0xcc,0x66,0x46,0x81,0xc9,0x61,0x84,0x4c,0x04, \
-0x46,0x4d,0x0b,0x07,0x07,0xa3,0x02,0x84,0xca,0x58,0x99,0xc0,0x6d,0x60,0x5e,0x5b, \
-0x2c,0xe5,0x0a,0x91,0x2d,0x40,0x5b,0x0e,0x80,0xf1,0xc1,0x91,0xa2,0x24,0x6a,0x2c, \
-0x2d,0x1a,0xb1,0x9b,0xd0,0x34,0x03,0x26,0xc8,0xbf,0x48,0x20,0x78,0x87,0xa1,0x80, \
-0x64,0x8b,0x68,0x18,0x5b,0x1e,0x93,0x97,0x14,0xbb,0x0b,0x54,0x61,0x3e,0x24,0x6c, \
-0x77,0x16,0x5b,0xd7,0x36,0x1a,0x0a,0xac,0x09,0x15,0xa2,0x94,0x0c,0x21,0xb3,0x8d, \
-0xb0,0x2b,0x73,0x2d,0x6b,0x23,0x6d,0x75,0x6d,0x35,0x4d,0x18,0x03,0x82,0xfb,0x52, \
-0x06,0xf5,0x0c,0x28,0x1d,0x2e,0x74,0xa2,0xd2,0x54,0xcc,0x2e,0x42,0x5f,0x61,0x62, \
-0x8f,0x78,0xc5,0x6c,0x36,0xbb,0x6b,0x54,0x0d,0x08,0x54,0x3e,0xb7,0x52,0x53,0x24, \
-0x19,0xc9,0x6c,0x95,0x0a,0xa4,0x4d,0x6e,0xc1,0xed,0x51,0x96,0x01,0x6e,0x55,0x9b, \
-0x3b,0x91,0x39,0xab,0x51,0x65,0xf8,0x69,0x00,0x1a,0xc2,0xd5,0xd0,0x82,0x28,0x28, \
-0x21,0x48,0x66,0x85,0x8b,0x5a,0x50,0x84,0x83,0xc6,0xbc,0x95,0x37,0x77,0x36,0x31, \
-0x2f,0x1b,0x4b,0x8c,0xc1,0x83,0x79,0xb6,0x02,0x1b,0x74,0xd5,0x82,0xee,0x45,0x18, \
-0xd6,0xa4,0x6e,0x22,0x16,0x8a,0x9b,0x3d,0xb5,0xae,0x6c,0x02,0xeb,0x56,0x4a,0x15, \
-0x12,0xf4,0x90,0xe1,0x85,0xb7,0xac,0x10,0xda,0x20,0x7d,0x41,0x5d,0x5c,0xee,0xb0, \
-0x0d,0x01,0x16,0x15,0xd5,0x85,0x9a,0x38,0x36,0xb0,0x1d,0x2e,0xcf,0x55,0xa6,0xaa, \
-0xb2,0x8f,0x4d,0x69,0x97,0x16,0xa5,0x30,0x08,0x72,0x5e,0x02,0x8a,0x89,0x0a,0xf1, \
-0xb9,0xa8,0x1a,0x55,0x46,0xc3,0x29,0x40,0xb5,0x44,0xa1,0x92,0xe2,0xc1,0x66,0x83, \
-0x47,0x8c,0xa3,0x28,0xb6,0x8a,0x28,0xc1,0x96,0xa9,0x74,0x15,0x88,0xba,0xb0,0x0a, \
-0xfb,0xe6,0xb5,0x89,0x70,0xe9,0xae,0x1c,0x00,0xe4,0xcc,0x64,0x81,0x75,0x77,0x6a, \
-0x30,0x86,0x85,0x2b,0x49,0x05,0x55,0x2e,0x8d,0x61,0x51,0x44,0x14,0x8c,0xdd,0xd3, \
-0x86,0x02,0xa8,0x58,0xa7,0x90,0x34,0x7d,0x05,0x6a,0x4e,0xf9,0x73,0x98,0x9a,0x87, \
-0xbd,0x43,0xa1,0xf9,0xc7,0x72,0x2a,0x5b,0x23,0x76,0xba,0x65,0x79,0xc1,0x9b,0x1d, \
-0xb4,0x71,0xc2,0xeb,0x0b,0x0b,0x6f,0xe8,0x48,0x35,0x99,0x7c,0x94,0x0e,0x04,0x88, \
-0x80,0x6d,0x34,0x71,0x16,0x02,0x80,0x86,0x88,0x47,0xd6,0xcf,0x15,0x8c,0x2a,0x08, \
-0x35,0xb5,0xe8,0x18,0xb3,0xcb,0xc8,0x15,0x49,0x6d,0x0a,0xe4,0x02,0x83,0x9c,0x9a, \
-0x6f,0x94,0x8c,0xd7,0x8e,0x9e,0xc2,0xe7,0x0b,0x69,0x05,0x68,0x90,0xc1,0xa4,0x17, \
-0x88,0x20,0x6c,0x81,0xa6,0xef,0x43,0x85,0x03,0xa9,0xea,0xbe,0x0c,0x3c,0x64,0xa5, \
-0x0c,0x5a,0xc6,0x73,0x76,0x6a,0xf5,0x56,0xcf,0x30,0x43,0x23,0x61,0x40,0x54,0xc2, \
-0x2f,0x12,0xc0,0xb1,0x22,0x5a,0xd1,0x6e,0xb2,0xbb,0x25,0x5a,0xc8,0xf5,0xf3,0xc0, \
-0x63,0x01,0xe7,0x20,0x49,0xe1,0x33,0x91,0x7a,0x5c,0x87,0xa1,0x76,0x04,0xaf,0xa8, \
-0x3a,0x21,0x73,0x35,0x24,0x2e,0x52,0x73,0x1a,0x53,0x51,0x1a,0xcf,0x81,0x44,0xa7, \
-0x5e,0xcc,0xb4,0x36,0x15,0x5d,0xa3,0x1c,0xb7,0x71,0x9e,0x5b,0x85,0x3b,0x70,0x54, \
-0xab,0x0d,0xc8,0xcb,0x03,0x58,0x98,0x68,0x05,0x12,0x2c,0x18,0xf4,0x4d,0x29,0xe3, \
-0x19,0xcb,0x0b,0x20,0x99,0xdb,0xd8,0x83,0x40,0xec,0x5e,0x08,0x87,0x83,0xc4,0xab, \
-0x42,0xc1,0x30,0x54,0xa1,0xf4,0x4e,0x1c,0xa4,0xd8,0xe3,0x0f,0x4f,0x25,0xc7,0x4e, \
-0x5d,0x81,0xe1,0x55,0x74,0x53,0x7d,0x4c,0x06,0xbf,0x90,0xeb,0x9a,0x7d,0x88,0xbb, \
-0xed,0xdb,0xb0,0xf5,0x20,0x92,0xb4,0xc5,0xb9,0x1b,0x0b,0x68,0x35,0xaf,0x20,0xb8, \
-0x68,0x28,0x58,0x2b,0xc5,0xc2,0x74,0x46,0x98,0x2b,0x6b,0x7b,0xd3,0x81,0x35,0x74, \
-0xa3,0x2b,0xab,0x53,0x5d,0xf2,0x9c,0x24,0x81,0xcf,0x51,0x34,0xe7,0x82,0xa3,0xe0, \
-0x56,0xd9,0xe9,0x18,0x95,0x14,0x37,0x36,0xc4,0xac,0xc4,0x6a,0x0d,0xa5,0x66,0xb2, \
-0xa1,0xa2,0x4b,0xde,0x92,0x85,0x98,0x72,0x71,0x64,0xb8,0x2a,0x53,0xed,0x4a,0x14, \
-0x09,0xf6,0x0b,0x26,0x87,0x6d,0xb6,0xc9,0x41,0x6d,0x5c,0x63,0xc2,0x4e,0x61,0x60, \
-0x9b,0x46,0xb2,0xd6,0xf1,0xa6,0xa4,0x15,0xa3,0x5f,0x20,0x39,0x5d,0x5c,0x40,0x9d, \
-0x0d,0x38,0x80,0x50,0x59,0x6b,0xee,0xc7,0x20,0x58,0x1e,0x93,0x42,0xc8,0x1e,0x2f, \
-0x49,0x3b,0x82,0x84,0xc6,0xbd,0x2e,0xc7,0x88,0x44,0x95,0xa3,0x1a,0x96,0x58,0x51, \
-0x7a,0x5b,0xdf,0x98,0xa3,0xd3,0x78,0xa2,0x09,0x53,0xd4,0x6c,0xcc,0x84,0xd4,0xdc, \
-0xe8,0x6a,0xb4,0x30,0x5e,0x96,0x72,0xad,0x18,0x59,0x56,0xb3,0x73,0x63,0xce,0xe8, \
-0xe2,0x95,0xbb,0x0a,0x2a,0x87,0x45,0x2e,0x1a,0xa8,0x59,0xef,0x2e,0x46,0x12,0xbe, \
-0x40,0x31,0xb2,0xab,0x41,0x86,0xe2,0xf0,0x04,0xc4,0xa4,0x46,0x18,0xb0,0xf4,0xa9, \
-0x8d,0x9a,0xac,0x68,0x2a,0x90,0x83,0x5b,0x3d,0x64,0x8b,0xb2,0xc8,0xf5,0x83,0xaa, \
-0x66,0xcc,0x2b,0x45,0x85,0xf5,0x8e,0x80,0x7a,0x38,0xa6,0xfc,0x42,0x76,0x21,0xb0, \
-0xc2,0xa0,0x82,0xbc,0x12,0x58,0x89,0x1b,0x2d,0x22,0x31,0x05,0x90,0xe7,0x28,0x97, \
-0x3f,0xac,0xec,0xd3,0xd1,0xea,0x39,0x1a,0xb9,0xe0,0x04,0xec,0x81,0xb7,0x13,0x2f, \
-0xb6,0x8f,0xfa,0xd4,0xcc,0xb9,0x8b,0x94,0xb5,0xca,0x29,0x81,0x58,0x69,0x54,0xd8, \
-0xd6,0xf6,0x43,0xdf,0xc0,0xd0,0x4e,0x07,0x88,0x76,0x8e,0xe1,0xbc,0x44,0x66,0x92, \
-0xc3,0xb7,0x56,0x26,0x78,0x75,0x86,0x01,0xeb,0xb8,0x59,0xaf,0x3a,0xe7,0x79,0x83, \
-0x6d,0xd1,0x5c,0x90,0x72,0x68,0x36,0x2b,0x7b,0xda,0x0d,0x41,0x91,0xec,0xda,0x3e, \
-0x76,0x7c,0x7b,0x2c,0x39,0xa0,0x1a,0x9e,0x10,0xa0,0x7b,0xb7,0x15,0x3f,0x62,0x2f, \
-0xd0,0x6e,0x10,0xe2,0xc5,0x3d,0x7d,0x2f,0xcc,0x77,0xe2,0xfe,0x23,0x46,0x4c,0x82, \
-0x82,0x98,0xc6,0x09,0x84,0xac,0x8f,0xc2,0x93,0x2c,0x26,0x04,0x8a,0x20,0x82,0xb4, \
-0xb6,0xb6,0x0b,0x24,0x14,0x82,0x30,0xeb,0xee,0xd4,0xd4,0xf2,0xaa,0xb3,0x1f,0xe5, \
-0x4e,0x5d,0xea,0x0b,0x8e,0xc7,0x7a,0x42,0xad,0x73,0x45,0x1a,0x28,0x34,0x61,0xf5, \
-0x1e,0xfa,0x19,0x6c,0x06,0x08,0x0f,0xf5,0xea,0x58,0x06,0xe4,0x79,0x94,0x92,0x77, \
-0x32,0x43,0xf5,0x0c,0xe8,0x80,0x44,0x48,0x3d,0x5c,0x41,0x11,0x07,0x01,0x82,0xa6, \
-0xdb,0x72,0xc6,0x92,0x4d,0xdf,0xa1,0x02,0x6c,0x41,0x87,0x46,0x43,0x68,0x31,0x59, \
-0xaf,0xbd,0xa1,0x2d,0x4d,0x64,0x0f,0xf3,0xff,0x0d,0x11,0xbb,0x52,0x58,0xab,0x12, \
-0x7f,0x72,0x2a,0x14,0xc8,0x18,0x26,0x31,0x2c,0xd8,0x29,0x68,0xda,0x86,0x94,0xdf, \
-0x08,0x02,0xad,0x55,0x8b,0xe0,0x9e,0x2f,0x5d,0x5d,0x84,0xc7,0x28,0x63,0x4d,0x71, \
-0x3b,0x24,0x30,0x0b,0x7f,0xf7,0x51,0x12,0x35,0x7a,0x59,0x66,0x36,0xab,0xf3,0xbf, \
-0x0b,0xee,0xaa,0x15,0x29,0x70,0x95,0xcb,0xac,0x08,0x63,0xdf,0x5f,0x2d,0x42,0xe6, \
-0xcb,0xd9,0x93,0x4b,0xc7,0x59,0x9d,0xe3,0x64,0x31,0x5a,0x40,0xc6,0x6d,0xd8,0x6f, \
-0x3c,0xd9,0xdf,0x30,0xa2,0x30,0x88,0x0a,0xa8,0xb1,0x56,0x08,0xc4,0xfc,0xd6,0x8c, \
-0x68,0x95,0x04,0x63,0x22,0xa3,0x10,0x51,0x58,0x30,0x17,0xd5,0xf2,0xcc,0x7f,0xb7, \
-0xe9,0x3f,0xa7,0x3a,0xfd,0x9a,0xa1,0x7c,0xd2,0x90,0xcd,0xc0,0xc1,0x42,0xc3,0x12, \
-0x54,0x95,0x0f,0x44,0x52,0x50,0x0b,0xeb,0x69,0xb1,0x0d,0xa0,0x98,0x27,0xb3,0x50, \
-0xdc,0x06,0x01,0xac,0x34,0x87,0xdc,0x2c,0xfc,0x06,0x93,0xd8,0x97,0x83,0x9c,0x06, \
-0xb1,0xc1,0x81,0x0b,0x6e,0xe9,0xf6,0x78,0xfd,0xbf,0x9e,0x9e,0x4c,0x51,0x74,0xa1, \
-0xc6,0x52,0xc3,0x24,0x40,0x3d,0x28,0x50,0x24,0xfc,0x38,0xff,0xa4,0xf3,0xaa,0x2c, \
-0x89,0x8b,0xfe,0x08,0xa7,0xb6,0xaa,0x85,0x00,0x6c,0x6c,0x13,0x0e,0xe9,0x2c,0xb3, \
-0x5d,0xfe,0xdd,0x7f,0x2f,0x87,0x2e,0x4d,0x25,0xb5,0x18,0xc2,0x35,0x78,0x15,0xa4, \
-0xce,0xc2,0x1a,0x4a,0x69,0x80,0x41,0xa8,0x90,0x05,0xdc,0x8b,0x3b,0x40,0x1b,0xcd, \
-0xc1,0x9a,0xb2,0x94,0xc9,0x22,0xe2,0x24,0x70,0xf2,0x04,0x55,0xd1,0xa5,0x64,0x76, \
-0x7a,0x71,0xe9,0xf5,0x72,0x83,0x49,0x9d,0x28,0xb7,0xcd,0x2b,0xd9,0x95,0xd9,0x79, \
-0xee,0x1e,0xc4,0x8d,0x4c,0x43,0xdb,0x20,0xb0,0x38,0xc8,0x7f,0x29,0xc3,0xae,0x4f, \
-0x24,0x93,0xbf,0xbf,0xbc,0x9e,0x0c,0x41,0xf0,0xa2,0x85,0xfb,0xfb,0x21,0x9a,0xe3, \
-0xac,0xf8,0xd3,0x78,0xbc,0xa3,0x1b,0x5c,0xb5,0x57,0x1d,0xe7,0xe0,0xfa,0xc3,0xa8, \
-0xe8,0xcc,0x05,0xac,0x68,0x1b,0x07,0xa3,0x81,0x31,0xa5,0x56,0x96,0x63,0x40,0x12, \
-0xc1,0xb1,0x29,0x3e,0x3d,0x47,0xc5,0x48,0x6f,0x0d,0xc0,0x06,0xa6,0xbb,0x8e,0x9d, \
-0x0e,0xdf,0x15,0x43,0xbc,0x76,0x1e,0xe2,0xc4,0xb2,0x3c,0x6c,0x01,0xc5,0x95,0x84, \
-0xab,0x20,0x31,0x98,0xd4,0xcb,0xae,0x8b,0x34,0xea,0xd5,0x47,0x5e,0xa8,0xb9,0x3a, \
-0xb1,0xad,0xf5,0x2a,0x89,0x02,0xbd,0x82,0x14,0x91,0x94,0xb3,0x33,0x56,0x11,0x72, \
-0xf8,0xc7,0x3f,0x30,0xbe,0x4e,0x6a,0xc0,0x93,0x84,0xf5,0x95,0x66,0x9d,0xbb,0xd3, \
-0x9d,0xb0,0x98,0xb9,0xca,0xaa,0x9e,0x70,0x32,0xae,0x77,0x18,0x17,0xcc,0xbb,0x24, \
-0xe4,0xb3,0xb0,0x37,0x79,0x15,0x67,0xed,0xb7,0x91,0xc3,0x11,0x25,0xb4,0xa0,0x3e, \
-0x4d,0x03,0x35,0x52,0x4b,0x09,0xa3,0xa5,0x88,0x30,0xf4,0x0d,0x0d,0xa1,0x25,0x08, \
-0x60,0xc1,0xe5,0x81,0xf3,0xeb,0xf6,0x6d,0xae,0xa7,0x65,0x8a,0xc6,0x08,0x20,0x8c, \
-0x22,0x0a,0xc5,0x80,0x50,0xdb,0xb4,0xfe,0x7c,0x77,0xac,0x58,0xe5,0xc9,0x23,0x7b, \
-0x6f,0x0b,0xbb,0xa9,0x75,0xc7,0x47,0x42,0x2c,0x0d,0x0b,0xc5,0xa0,0x3c,0x0c,0x7a, \
-0xd1,0xfa,0x7b,0xfe,0xbe,0xb1,0x7c,0x8c,0xf1,0x9c,0xd9,0x20,0xa4,0x9c,0xa2,0xc3, \
-0x90,0xb3,0xdc,0x1c,0xfb,0x71,0x0e,0xce,0xbb,0x0d,0x54,0x52,0x0b,0x43,0xe1,0xc8, \
-0x03,0xc8,0x36,0x0d,0x34,0xcd,0xfd,0xc4,0xb0,0xcd,0xbe,0xf8,0x3b,0x5d,0xd5,0x21, \
-0x15,0xbe,0xa8,0xac,0xff,0x7b,0x39,0x49,0x4b,0xb4,0x42,0x55,0x28,0x4c,0x4e,0xd3, \
-0x6a,0xf5,0x26,0x90,0x31,0x89,0x78,0x94,0x24,0x98,0x46,0xa0,0xec,0x35,0x6b,0x30, \
-0x8a,0x86,0xe6,0x75,0x6d,0x82,0xfc,0xda,0x6c,0x63,0xc0,0x3c,0x10,0xa9,0x5a,0x47, \
-0x2e,0x43,0x0a,0x44,0x21,0xa1,0x85,0x81,0x6c,0xac,0x01,0x44,0xfe,0x84,0xcf,0x46, \
-0x4f,0xcb,0xc4,0x36,0x7d,0xcf,0x35,0x6e,0xbb,0xc8,0x08,0xc4,0x75,0x51,0x01,0xb3, \
-0xa2,0x61,0x0f,0x82,0x75,0x62,0x86,0x44,0x29,0x63,0x74,0x7f,0x75,0xf2,0x37,0xcf, \
-0x99,0xf5,0xcf,0xdf,0x8e,0x73,0x69,0x14,0x38,0x6c,0x56,0x07,0xd3,0x7a,0xbb,0x89, \
-0xd6,0x1f,0x6e,0xc7,0x01,0x05,0x16,0x0a,0x8c,0x59,0x04,0x86,0x18,0x83,0x2d,0x16, \
-0xc3,0x83,0x11,0xc1,0x84,0x99,0x52,0x14,0x23,0xb5,0xd0,0xa4,0x12,0x44,0xb5,0x2d, \
-0xef,0x85,0x0d,0x91,0x55,0x8c,0x45,0x05,0x62,0x39,0x68,0xe8,0xb4,0x16,0xa1,0xd9, \
-0x6c,0x9a,0x16,0x42,0x06,0xdd,0x59,0x65,0xbf,0x5d,0xc5,0xab,0xc9,0xd9,0x49,0x7a, \
-0x35,0x79,0x71,0xa9,0x73,0x5b,0xc3,0x0f,0xa0,0x39,0x83,0xed,0x45,0xd4,0x3d,0x06, \
-0xb2,0x3f,0x3f,0x69,0xa6,0x0d,0xa4,0x30,0xc9,0x17,0xa6,0xd8,0x39,0x88,0x70,0xb8, \
-0x2a,0xaa,0x88,0x29,0x1f,0x63,0x2c,0x54,0xc3,0x25,0x59,0x2a,0xa8,0x92,0xeb,0x8c, \
-0x4c,0x2e,0x5b,0x22,0xc3,0x0c,0x86,0x9b,0x6a,0x8f,0x11,0x71,0x47,0xa0,0xbe,0x46, \
-0x1b,0xae,0xb9,0x34,0xb1,0xa9,0xc7,0x65,0x0b,0x26,0x84,0xad,0xbe,0xca,0x40,0x57, \
-0x84,0x20,0xf8,0xe1,0xb2,0xe4,0x51,0xa6,0xaa,0x7f,0x12,0x11,0xe6,0x60,0xda,0x15, \
-0x3e,0xd8,0x05,0x2d,0x25,0x81,0x71,0x97,0x75,0x06,0x67,0x1e,0xd9,0x5d,0xee,0x58, \
-0x06,0x30,0x21,0xa7,0xa2,0x45,0xed,0xb0,0xc0,0x66,0x83,0x99,0x88,0x66,0x10,0x0b, \
-0x71,0x89,0xe9,0x46,0x7e,0xd5,0xb4,0x88,0x99,0xa1,0xdb,0xe7,0xd7,0x0d,0xb8,0x7e, \
-0xbd,0xba,0x63,0xc7,0xed,0x18,0xa6,0xb3,0xa6,0x0a,0x33,0x8a,0x61,0x85,0xe5,0x67, \
-0x16,0xd3,0x3c,0xd3,0xc0,0x92,0x5d,0x56,0xb1,0xdf,0xbc,0xb5,0x95,0x4c,0xa2,0x61, \
-0x3d,0xf7,0xf0,0x10,0xa5,0x90,0x04,0x09,0x17,0x20,0xbb,0xdd,0xc6,0x71,0xe5,0x81, \
-0x77,0x77,0x20,0x5b,0xcd,0x50,0x48,0xdb,0x86,0x1e,0xf0,0x61,0x87,0x74,0xcb,0x3c, \
-0xda,0x9a,0xba,0x9d,0x81,0xdf,0x7b,0x4a,0x7a,0x19,0x2e,0x39,0xe8,0x5f,0xa6,0x9e, \
-0x06,0x64,0x33,0xac,0x25,0x0a,0xa6,0x4b,0xaa,0x73,0xc0,0x60,0x11,0x33,0x72,0x89, \
-0x19,0x45,0xf0,0xf7,0x63,0x64,0x56,0xdc,0x8e,0x6b,0xf1,0xa9,0x53,0x27,0x7c,0x1f, \
-0xc1,0x9d,0x26,0x4d,0xb7,0xb5,0x64,0x19,0x20,0x2a,0x98,0xe2,0x88,0x20,0x5b,0x1f, \
-0x95,0xa3,0x27,0xae,0xa9,0x12,0x4a,0x2c,0x84,0x66,0x6c,0xd8,0x93,0xcd,0x0c,0x1a, \
-0x13,0x06,0xdb,0x11,0xbd,0xa0,0xc7,0x40,0xb6,0x36,0xd1,0x11,0x58,0xa0,0x56,0x3d, \
-0x36,0xf7,0x30,0xd3,0xd0,0x68,0x89,0x84,0x41,0x03,0x58,0xbb,0xd1,0x56,0x9b,0x43, \
-0x69,0x6f,0xfa,0xef,0xa1,0xc8,0xe0,0x6e,0xd8,0x18,0x9a,0x17,0x70,0x7b,0xaa,0x7e, \
-0x86,0x3b,0x99,0x7e,0x9b,0xd2,0x47,0x67,0xe1,0xed,0x54,0xb9,0x01,0xbc,0xba,0xf2, \
-0x37,0xb0,0xd0,0x5a,0x9a,0xab,0x4b,0x82,0x6d,0x94,0x20,0xef,0xc6,0xa2,0x4f,0x1c, \
-0xc9,0x52,0x7b,0x35,0x83,0xc6,0x06,0xaf,0x1b,0x4a,0xe8,0xc8,0x14,0x18,0x50,0x30, \
-0x82,0x68,0x15,0x04,0xd6,0x70,0xde,0x59,0xb1,0xe9,0xef,0xc1,0x5e,0xbf,0x0d,0xce, \
-0x4f,0x15,0x78,0x84,0x39,0x71,0xd1,0x51,0xaa,0xc1,0x28,0x94,0x43,0x43,0x1d,0x64, \
-0x5c,0x28,0x9d,0x89,0xb5,0x8a,0xda,0x8e,0x10,0xe4,0xa8,0x89,0x18,0x98,0x21,0xcd, \
-0x00,0x1d,0x09,0x37,0x06,0x4c,0x37,0x01,0x20,0x81,0x15,0x68,0x80,0x54,0x87,0x53, \
-0x02,0x59,0x08,0x4c,0xcb,0x82,0x24,0x80,0x8c,0xb6,0xa8,0xb3,0x04,0x10,0x59,0xeb, \
-0x36,0x09,0x87,0x21,0xb0,0xe0,0x8d,0x0c,0x36,0xf2,0xc9,0x98,0xe3,0x28,0x69,0x4a, \
-0xa8,0x35,0xb6,0x8b,0x70,0x97,0x18,0x0b,0x9c,0xd6,0x08,0x1a,0x02,0xd4,0x51,0x7d, \
-0x11,0x0a,0xb0,0x10,0x9c,0xe1,0x27,0x94,0xc4,0xad,0xc7,0xf2,0x75,0xfa,0x56,0x51, \
-0x0a,0xad,0x11,0x04,0x2b,0x61,0xab,0x6b,0x45,0xa6,0xf9,0x1a,0x6d,0x88,0x64,0x7b, \
-0x38,0x74,0x57,0x7b,0x2c,0xc0,0xde,0xc2,0xf9,0x19,0xa7,0x4e,0x6c,0x97,0x1a,0x8a, \
-0x8e,0x90,0xb7,0x53,0xc2,0xca,0xbf,0x22,0xc8,0x9a,0xd2,0xc5,0x18,0xd8,0xa2,0x01, \
-0xc6,0xef,0xe5,0x42,0x45,0xc3,0x28,0x90,0x73,0x42,0xa0,0x69,0x82,0x93,0x08,0x2e, \
-0x06,0xa1,0x71,0x8c,0x26,0x30,0xb3,0x64,0xc0,0x70,0x2e,0x86,0x31,0x31,0xa2,0x43, \
-0x2e,0x23,0x1f,0x65,0x2a,0xa8,0x22,0x29,0x9b,0x2b,0x26,0xe8,0xd3,0x91,0xaa,0x01, \
-0x96,0x9c,0x06,0x54,0x12,0xf7,0x58,0x2e,0x68,0xb2,0xa0,0xac,0x98,0x08,0x86,0x93, \
-0x49,0x18,0xc2,0x4e,0x32,0x15,0xb5,0x0c,0x13,0x18,0x33,0xc4,0xd0,0x3d,0x65,0xa9, \
-0xfe,0x00,0x9e,0x53,0x6c,0x8d,0xa2,0x46,0x88,0x63,0x18,0x06,0xf9,0x4a,0xf1,0x0b, \
-0x50,0xc1,0x5d,0x25,0xb0,0x03,0xd7,0xd2,0x2c,0x25,0xed,0x5f,0xb7,0x9e,0xd5,0x36, \
-0x34,0x5e,0x33,0xe8,0x77,0x86,0xb0,0x50,0x5b,0xd5,0x0b,0x6b,0x0e,0xa4,0xcb,0xeb, \
-0x91,0xb1,0x63,0x7f,0x9f,0xd2,0x5d,0x5e,0xae,0x88,0x0a,0x76,0xa3,0xf2,0xf6,0x68, \
-0x14,0x62,0xc8,0xe6,0xc3,0xc2,0xc4,0x36,0xc4,0xc1,0x24,0xc0,0xeb,0x56,0xad,0x8c, \
-0x2b,0x44,0x15,0x8e,0x46,0xb8,0x15,0x11,0x2d,0x2a,0xc0,0xb4,0xa0,0xdb,0x06,0xd1, \
-0x94,0x29,0x2d,0x19,0x44,0xb4,0xac,0x82,0xc6,0xb5,0x8d,0x8e,0x70,0x7b,0x32,0x19, \
-0xcc,0x9b,0x95,0x8c,0xb1,0x07,0x49,0x28,0x66,0xc0,0xc4,0x64,0xc2,0x47,0xa0,0x11, \
-0x09,0x46,0x6c,0xb3,0x05,0x54,0x5f,0x56,0x04,0xf5,0x2c,0x80,0x64,0x11,0xe1,0xdf, \
-0xd4,0x63,0xee,0xe8,0xb5,0x4a,0xc5,0x88,0x99,0x14,0x0c,0x07,0xf0,0x1b,0x18,0xc4, \
-0x74,0x64,0xe5,0xac,0x29,0x0c,0x24,0xfa,0x59,0xc9,0x9f,0xb1,0x99,0x3f,0x24,0x5e, \
-0xd6,0x6c,0x86,0x95,0x0a,0xfc,0x89,0x2e,0x65,0x18,0x92,0x3d,0x85,0x95,0xea,0xb5, \
-0x9b,0xf2,0x91,0x5d,0xd9,0xd4,0x8f,0x6e,0xef,0x5f,0x7d,0x32,0x19,0xf6,0x35,0xce, \
-0x52,0x16,0xb0,0x90,0x16,0x22,0xa2,0xef,0xd3,0xb1,0x7e,0x3e,0x29,0xc4,0x2d,0x83, \
-0x6c,0x86,0x88,0x50,0xa1,0x45,0x2a,0x89,0xa5,0x45,0x14,0x2a,0x44,0x19,0x9a,0x06, \
-0xd0,0x83,0x2b,0x2d,0xb6,0x2e,0x78,0x91,0x63,0x2b,0x2d,0x07,0x8f,0xbd,0x6e,0xa6, \
-0xf6,0xd1,0x79,0xbb,0xac,0x6c,0x6e,0x9d,0x1e,0x28,0x19,0x8f,0xf0,0x77,0xfc,0xc2, \
-0x11,0x7d,0xc9,0x0b,0x54,0xe2,0xc0,0x36,0x88,0x2c,0x22,0x32,0x26,0x61,0xe1,0x03, \
-0xad,0x93,0x41,0x8a,0x83,0xce,0x84,0xb1,0x88,0x2a,0x30,0x46,0x7a,0xe1,0xe9,0x62, \
-0xc5,0x05,0x80,0x5c,0xce,0xe4,0xa0,0x6e,0x6b,0xc0,0x36,0xb0,0xf2,0x75,0x6a,0x17, \
-0x86,0x93,0xd1,0xe6,0xa2,0x64,0xe3,0xac,0x59,0x22,0xa9,0x0e,0xa0,0x31,0xc8,0x39, \
-0xb1,0x2b,0xc4,0xb3,0x1a,0x06,0x03,0x6c,0xa6,0xa2,0xec,0x05,0x8e,0xcc,0x57,0x04, \
-0x59,0xb3,0x46,0x5c,0x8f,0xc1,0xd4,0x29,0x85,0x52,0xa6,0xa6,0x2e,0xb8,0xcf,0x44, \
-0x67,0x6c,0x38,0x45,0xf0,0x0d,0x44,0x43,0x66,0x0c,0x3b,0x59,0x23,0x4d,0x1b,0xa2, \
-0x8c,0x10,0x47,0x26,0x70,0x4c,0x07,0x9c,0x68,0xe0,0xdb,0x6c,0xc8,0x67,0x05,0x94, \
-0xc6,0xd0,0x0a,0x12,0xf7,0xc4,0x21,0xae,0x9f,0xbe,0x98,0xfe,0x95,0xbe,0x0f,0x21, \
-0x8c,0x57,0xa2,0xbb,0xfa,0xc0,0x3b,0x83,0x03,0x7c,0x2b,0x92,0xd4,0x37,0x77,0x71, \
-0x10,0x32,0x18,0xd2,0x91,0x5d,0xb1,0x40,0x29,0x5f,0x99,0x2d,0x8a,0xeb,0x12,0xa4, \
-0x68,0xb1,0x88,0xa8,0xb4,0x6d,0xea,0x1d,0x96,0x33,0x37,0xb1,0x91,0x32,0x04,0x03, \
-0x0b,0x57,0x50,0xd2,0x4d,0xab,0xbb,0x06,0x69,0x07,0x62,0x02,0xfd,0x95,0x6b,0x86, \
-0xff,0xb7,0x9f,0xb9,0x82,0xc5,0x87,0x29,0x7e,0x93,0xe0,0x9c,0xbc,0x0d,0x59,0xea, \
-0xb9,0x4e,0xc9,0xc6,0x1f,0x05,0xf9,0x25,0x88,0xf9,0xb9,0x64,0x92,0xa1,0x37,0xb1, \
-0x23,0x81,0xd5,0x76,0xff,0xbf,0x15,0x97,0x14,0x0a,0x9a,0xde,0xb8,0x08,0x88,0x93, \
-0xb7,0xd8,0x40,0x72,0xaf,0xca,0x84,0x9f,0x77,0x61,0x25,0x27,0x65,0xea,0x35,0xe4, \
-0x08,0x82,0x82,0xa8,0x0c,0x88,0x25,0xb6,0x41,0x54,0x56,0x81,0x95,0x79,0x5d,0xcb, \
-0x15,0xe0,0x30,0x3a,0xcf,0x0a,0xed,0x73,0x1e,0x0e,0xa0,0xc9,0x06,0xda,0xb8,0xf5, \
-0x0c,0x61,0x90,0x43,0x21,0x02,0xcd,0x99,0x71,0x32,0xa5,0x1a,0xda,0x32,0x98,0xa1, \
-0xb5,0xdf,0x16,0x40,0xdf,0xd3,0xa6,0x6f,0x2f,0x30,0x3b,0x79,0x72,0x67,0xd5,0x0e, \
-0x44,0xa1,0xc1,0xa2,0x12,0xec,0xd9,0x36,0x27,0xdd,0xc0,0x3f,0x39,0xa8,0x82,0x3b, \
-0xd5,0x25,0xdf,0xb3,0x67,0x43,0x9a,0xb0,0x6b,0x15,0x2a,0x83,0x21,0x30,0xca,0x2c, \
-0xaf,0x0f,0x94,0x48,0xaf,0x47,0x64,0x05,0x96,0x1a,0xb2,0x48,0x59,0xc1,0x73,0x0d, \
-0x14,0x11,0x3e,0x7f,0x39,0x6a,0xe1,0xd2,0xef,0xbe,0x06,0xf0,0x17,0xcf,0x8c,0x2b, \
-0xa9,0x97,0xc4,0x35,0xa3,0xbb,0x8d,0x89,0x2e,0x90,0x38,0x90,0xda,0x20,0xa2,0xce, \
-0x12,0x74,0xc8,0x0b,0x04,0x67,0x82,0x4f,0xe4,0x7e,0x41,0xa4,0x95,0x82,0xb7,0xad, \
-0x34,0x8c,0xb9,0xda,0x58,0x4c,0x15,0x43,0x2a,0xf9,0x34,0x36,0x4c,0xd5,0x2e,0x3b, \
-0x85,0xa3,0x83,0x12,0x0c,0x55,0x46,0x20,0xb2,0x7a,0x36,0x27,0x29,0x27,0x41,0x3b, \
-0x12,0x7e,0x5e,0x5c,0xbb,0xf7,0xc6,0x82,0x7b,0x7b,0x7a,0x93,0x96,0x4e,0x42,0x29, \
-0x6f,0xa5,0xc6,0xc6,0x52,0x03,0x45,0x26,0x5e,0x38,0xac,0x01,0x45,0x15,0x41,0xeb, \
-0xa1,0x58,0xcd,0x69,0x32,0x81,0x81,0x05,0x81,0x59,0x74,0x1a,0xab,0x11,0x15,0x45, \
-0x82,0x0b,0x22,0xa8,0x2b,0x2a,0xb5,0x58,0x8c,0x80,0x82,0x08,0x90,0x45,0x8c,0x1d, \
-0x50,0xb7,0x34,0xc3,0x0f,0x93,0xf7,0xde,0x26,0xb3,0xed,0x0e,0x20,0x70,0x92,0x6f, \
-0xca,0xea,0x13,0xed,0xa5,0x42,0x02,0x3f,0x4f,0x74,0xdd,0x5a,0xb7,0xa5,0xc0,0x48, \
-0xcb,0x8b,0xc6,0x38,0x40,0x58,0x03,0x91,0x06,0x90,0xf5,0xb3,0x2c,0x50,0x45,0x8b, \
-0x1c,0xb0,0xa6,0x4a,0x58,0x6c,0x62,0xe0,0x58,0xd4,0x6c,0xb2,0x0a,0xb8,0x42,0xc2, \
-0xb7,0xaf,0x84,0xd1,0x3a,0xc4,0xbd,0x0b,0xf2,0xff,0x47,0xcf,0x83,0x99,0xcf,0xea, \
-0x03,0xd4,0x2b,0x5b,0x47,0xd4,0x7c,0xc7,0x73,0x66,0xd4,0x92,0xe2,0x1b,0x77,0x3d, \
-0x8c,0x87,0x92,0xf0,0xf5,0x8e,0x34,0x16,0xfb,0xb2,0x0c,0xc7,0x39,0x93,0xe5,0x4f, \
-0x5b,0x87,0x59,0xeb,0x7a,0xcb,0x0a,0x94,0x48,0x9b,0x99,0x0f,0xce,0xeb,0xd8,0x64, \
-0xc0,0x8f,0xcb,0xca,0x2a,0xc0,0x59,0x0a,0x32,0x21,0xa2,0x69,0x78,0x6e,0x02,0x84, \
-0x67,0x58,0x0f,0x65,0x62,0x82,0xa2,0x21,0x65,0xb3,0x53,0x19,0xc1,0x0d,0x8e,0x00, \
-0xb1,0x62,0x24,0x63,0x11,0x84,0x88,0xb1,0x14,0x18,0x4a,0x35,0x15,0xf7,0x8b,0xb1, \
-0xb1,0xa6,0x34,0xc1,0x61,0x32,0x2e,0x32,0x17,0x1a,0x77,0x5a,0x86,0x18,0x86,0x0c, \
-0x4a,0xc2,0xa0,0x4a,0x4f,0x6c,0x31,0x04,0xa0,0xc5,0x56,0x64,0xeb,0x29,0xdd,0xc2, \
-0x4e,0x63,0x43,0x68,0x4d,0x85,0x57,0x14,0x85,0x12,0xd6,0xd4,0x79,0x15,0xfb,0x9d, \
-0x03,0x80,0x8c,0x4d,0xfb,0x7f,0x76,0x36,0x2c,0x5e,0x8f,0x4d,0x64,0xea,0x12,0x52, \
-0x44,0x3f,0x9d,0x26,0x34,0x2f,0x6a,0x8c,0x15,0x62,0x95,0xa3,0x20,0xb3,0x44,0x59, \
-0x8a,0x51,0x01,0x92,0x08,0x7c,0x9a,0x10,0xef,0x86,0xba,0xeb,0x16,0x22,0xd0,0x14, \
-0x1b,0x46,0x8c,0xa4,0xa0,0x8d,0xb0,0xad,0x69,0x17,0x4e,0xee,0x92,0x33,0xa5,0x3a, \
-0x1b,0x49,0xf9,0x6b,0x4f,0x91,0x85,0x50,0xa6,0x0c,0x1a,0x24,0x61,0x0b,0xb5,0xc1, \
-0x2d,0x7c,0x13,0x28,0xd1,0xce,0x98,0xbf,0xa1,0xd1,0xe2,0xd5,0x27,0xab,0xdf,0x6d, \
-0x75,0xb5,0x7d,0xb8,0x1f,0x6d,0x15,0xce,0xbd,0x40,0x79,0x33,0x84,0xa8,0xc4,0x76, \
-0x42,0xc6,0x8f,0xa6,0x61,0xa3,0x44,0xc8,0xe9,0xae,0x48,0x70,0x35,0x23,0x08,0x52, \
-0xad,0xed,0xb1,0x2e,0x46,0x8a,0x4f,0x13,0x8b,0x2d,0x88,0x11,0x35,0xdf,0x15,0xb5, \
-0x02,0x90,0x40,0x8c,0x00,0xc0,0x47,0x67,0x1b,0x50,0x11,0x17,0xfc,0xae,0xc8,0x32, \
-0x05,0xe5,0x9c,0x87,0xb6,0xcc,0x05,0x6d,0x4a,0x3a,0xf7,0x90,0xbb,0x78,0xf3,0xa8, \
-0x0e,0x29,0x6d,0xb7,0x7e,0xa7,0x5a,0x45,0xd9,0xec,0x6c,0x7c,0xde,0x06,0x7a,0x08, \
-0x83,0xc3,0x66,0x20,0x92,0x18,0x8b,0xa2,0x19,0x98,0x9b,0xb1,0x70,0x72,0x09,0x52, \
-0xc5,0x69,0x31,0x1e,0x31,0x09,0x56,0x1a,0x69,0xd7,0xd3,0xa0,0x5f,0x5d,0x70,0x19, \
-0x8d,0x70,0x78,0xf2,0xd9,0x5b,0x1b,0xe2,0x1c,0x94,0x26,0xe0,0xa6,0x69,0x4e,0x6f, \
-0x00,0x8e,0x40,0x52,0x92,0xf0,0x4f,0xec,0x75,0x72,0xe0,0x79,0x05,0x60,0x46,0x8e, \
-0x28,0xc1,0x42,0x93,0xaa,0x8e,0x39,0x79,0x94,0xc9,0x17,0xb1,0xe7,0x64,0x7a,0xcb, \
-0x71,0x21,0x4d,0x8a,0x77,0x11,0xa6,0x14,0x74,0xe6,0xaa,0x0a,0x35,0xd7,0x8e,0xab, \
-0x61,0xdb,0x1a,0x34,0x36,0xc5,0x67,0x10,0x71,0xc8,0xb8,0x44,0xca,0x03,0x92,0x6a, \
-0xb7,0xb8,0x1c,0x39,0xaf,0x28,0x91,0xaa,0x8d,0xf4,0x2a,0xfb,0x28,0xd9,0x95,0x95, \
-0x73,0xdc,0x05,0x60,0x68,0x21,0x9b,0x08,0xc8,0xb4,0x01,0xb8,0x9d,0x45,0x93,0x61, \
-0x44,0x25,0x08,0xb7,0x11,0x20,0x75,0xa4,0x86,0x1a,0x4b,0x32,0x64,0x2a,0x0b,0x19, \
-0x8b,0x86,0x5e,0x78,0x93,0x5a,0x56,0xd5,0x0e,0x79,0x89,0x75,0x61,0x83,0xb9,0x16, \
-0x20,0x8d,0x14,0x4d,0x78,0xf5,0xc4,0xae,0x18,0x18,0x53,0x97,0x1b,0x6e,0x7c,0xc6, \
-0x74,0x7e,0x56,0x9e,0x11,0x91,0x6e,0x19,0xc6,0x83,0x93,0x18,0xbe,0xaa,0xc5,0xf8, \
-0x38,0x7d,0x51,0x0f,0xd9,0x70,0x3d,0xfb,0xe6,0x5e,0xb6,0x20,0x5c,0x71,0x4f,0xc5, \
-0xe9,0x49,0x88,0x02,0x0c,0xc1,0x52,0x57,0x9f,0x4d,0xd1,0x15,0x8c,0x60,0xc4,0x7d, \
-0x57,0x5c,0x63,0x07,0x6d,0x1f,0xd2,0xe8,0xeb,0x4c,0x23,0x00,0xd8,0x54,0x05,0x05, \
-0xa5,0x0a,0xa8,0x9c,0x39,0x04,0x1c,0x20,0x84,0xa0,0x37,0xdc,0x5e,0xa2,0x78,0x15, \
-0xe8,0x77,0xb7,0xa3,0x21,0x32,0xcc,0xf3,0x6f,0xc2,0xa8,0x66,0xd8,0x55,0x33,0x60, \
-0x71,0x93,0x58,0x9e,0x28,0x18,0x6e,0x6b,0xb9,0xe8,0xca,0x8d,0x4f,0x10,0x70,0x8d, \
-0x86,0x1a,0xcf,0x55,0x25,0xab,0x3f,0xc5,0xad,0xaf,0x87,0x00,0x84,0x1a,0xba,0x0d, \
-0x84,0x89,0x4e,0x01,0x58,0xce,0x92,0x5c,0xf7,0xd6,0x18,0x43,0x81,0x90,0x40,0x76, \
-0xd4,0x0c,0x8c,0xe0,0x36,0x33,0x26,0xb0,0x35,0xb1,0xf8,0xbd,0x7d,0x1c,0x2d,0x6c, \
-0x8d,0x37,0x53,0x72,0x37,0x2e,0xe9,0xe3,0xcc,0xe0,0x17,0xae,0x9c,0xa5,0xd9,0x2d, \
-0xde,0x66,0x42,0x0d,0x8d,0x2b,0x9a,0x15,0x00,0x8d,0xdd,0xf2,0xdb,0xa5,0x5e,0xd2, \
-0x32,0x34,0x26,0xc6,0xc0,0x5e,0x1d,0xb1,0xc0,0x2c,0xcc,0x4b,0x05,0x00,0x2e,0x08, \
-0x26,0x81,0xd5,0xeb,0xf2,0xcb,0x30,0x63,0x09,0x54,0x44,0x86,0xa1,0x03,0x07,0x90, \
-0x4b,0xc1,0x12,0x9b,0x10,0xb2,0x17,0x4c,0xd9,0x97,0x17,0x44,0x30,0x62,0xb9,0xf6, \
-0x73,0x3c,0x61,0xbd,0x0f,0xc1,0x24,0x30,0x90,0x27,0x90,0x99,0x92,0x1e,0x61,0x25, \
-0xdf,0x8f,0x14,0x3a,0xb2,0x79,0x0c,0xcb,0x2a,0x0c,0x61,0xdf,0xa1,0x4f,0xa9,0xf1, \
-0x64,0x0f,0x5f,0xb0,0x0e,0xb5,0x30,0x0d,0x1b,0x91,0x97,0x60,0x4a,0x5d,0x9c,0x4d, \
-0xf3,0x44,0x7c,0xa1,0x24,0x63,0xe3,0xc8,0x89,0x3f,0x57,0xc9,0xa3,0x82,0x1a,0x68, \
-0x06,0xce,0xce,0x26,0x7a,0x99,0xd2,0x3a,0xbe,0x5b,0x22,0x77,0xc5,0x4e,0x1c,0x90, \
-0xd9,0xea,0x61,0xd6,0x45,0x48,0xe7,0x77,0x40,0xdf,0x89,0x68,0xce,0x19,0x83,0xab, \
-0x7c,0x72,0x68,0x99,0xbf,0xa2,0xdc,0x1b,0x30,0xd9,0xce,0xf4,0x74,0x76,0xd7,0x46, \
-0x80,0xd2,0x09,0xb0,0xbe,0x93,0x60,0x57,0x9a,0x1b,0xd2,0xd3,0x96,0x70,0xed,0xa2, \
-0xc1,0xba,0xa2,0x48,0x71,0x2d,0x16,0x32,0x6c,0x55,0x32,0x19,0x92,0x30,0x1f,0xa3, \
-0x47,0x62,0xfb,0x60,0xe5,0xd9,0xc8,0x37,0x33,0x7a,0x30,0x0b,0xae,0xb1,0x79,0x5d, \
-0x00,0x6c,0x18,0x9a,0x19,0x44,0x12,0x06,0x91,0x22,0x60,0x66,0xed,0x03,0x94,0xaa, \
-0xe1,0xc1,0xa0,0x41,0x33,0x14,0xa7,0x44,0x26,0x0c,0x5d,0x62,0x53,0x42,0x40,0xc1, \
-0x2d,0x30,0xa9,0x30,0x18,0x09,0xc0,0xcb,0x6a,0xd4,0xd9,0xb8,0xcd,0xea,0x04,0x81, \
-0x22,0x2a,0x49,0x69,0xcd,0x5c,0x51,0x42,0xa9,0x14,0x29,0xe2,0x0e,0x2b,0x16,0x76, \
-0x40,0x51,0xc5,0x8b,0x16,0x03,0x47,0x97,0x65,0x98,0x69,0x32,0x81,0x90,0xb4,0x35, \
-0x91,0x56,0x91,0x4a,0x05,0x9a,0x79,0x02,0xc6,0x10,0x50,0xa8,0x62,0x6d,0xc1,0x01, \
-0xeb,0x90,0xa5,0xbb,0x04,0x87,0x24,0x26,0x38,0xae,0x75,0x69,0x51,0x91,0x2c,0x6a, \
-0x84,0x81,0x81,0x6b,0x55,0x82,0x94,0x04,0x68,0xfa,0x16,0x22,0x60,0x50,0xd8,0x08, \
-0x58,0x77,0xb3,0xc0,0x12,0x81,0xca,0x49,0xb4,0x26,0x06,0x01,0x52,0x48,0x16,0x33, \
-0x03,0xce,0xe2,0xae,0x6e,0xcb,0x2b,0xc9,0x32,0x2a,0x66,0x32,0x2f,0xd6,0x64,0x2d, \
-0x64,0x94,0xfe,0xb1,0x9f,0xba,0x98,0x9f,0x7d,0x6f,0xb6,0x40,0x1a,0x75,0x1d,0xc6, \
-0x0a,0x13,0xa2,0xaf,0xb8,0x84,0xc6,0x28,0x88,0xcb,0xad,0x18,0x70,0xe2,0x84,0x19, \
-0x0c,0x1e,0xc4,0xbd,0xa0,0xa2,0x88,0x6a,0x20,0x3b,0x9c,0x92,0x75,0xc0,0x0e,0x21, \
-0xa4,0x80,0x71,0x64,0x93,0x1c,0xe0,0xac,0x88,0x98,0x61,0x45,0x43,0xdf,0x35,0xc1, \
-0x5c,0x2a,0x5c,0x62,0x18,0x71,0x10,0xda,0x96,0x61,0x9a,0x52,0x14,0x2e,0xb2,0x43, \
-0x52,0xb8,0xd4,0xdb,0x1b,0x99,0x3a,0xa7,0xa8,0x1c,0x6c,0xe6,0x61,0xbb,0x8b,0x01, \
-0x89,0x66,0xc0,0xba,0xab,0x78,0x59,0x2a,0x5d,0x81,0x79,0xb8,0x94,0xc2,0xe2,0xb1, \
-0x36,0xa9,0x80,0x6d,0xc5,0x1d,0xfa,0x01,0xa9,0xc4,0x5c,0xd9,0x12,0xeb,0xd0,0xe8, \
-0x93,0xa9,0x8d,0x97,0x8a,0x4a,0x22,0x26,0x04,0x6d,0x51,0xc1,0xdd,0xcb,0x89,0xb2, \
-0xbf,0x5f,0x8b,0xc1,0xdb,0xc1,0x03,0x27,0x75,0x28,0xe8,0x69,0x64,0xac,0x3f,0x5a, \
-0x06,0x18,0x12,0x38,0xbd,0x24,0x23,0xa1,0x89,0x13,0x76,0xa6,0x45,0xa6,0x42,0x81, \
-0xa9,0x0e,0xa5,0x75,0x42,0x93,0x8d,0xd5,0xe1,0x7d,0x65,0x3d,0xde,0x24,0xf6,0xd2, \
-0x1c,0xb4,0x36,0xd3,0x5d,0x92,0x42,0x2e,0xc3,0x1d,0xdc,0x49,0x23,0x2a,0x84,0x54, \
-0x2b,0x51,0xc7,0x7e,0xf3,0x9a,0x6a,0x9e,0x85,0xe7,0x41,0x1c,0x44,0xc2,0xcd,0x69, \
-0x95,0xc2,0xc4,0x6a,0x78,0x64,0x31,0xc0,0x1d,0x4d,0x6a,0x1b,0xe9,0x63,0xd3,0xaf, \
-0xa9,0x26,0x18,0xb2,0x49,0xdc,0x84,0x2b,0x22,0xc8,0x74,0x41,0x06,0x88,0x1b,0x6b, \
-0x99,0x61,0x6e,0x59,0x06,0x2e,0x51,0x09,0x28,0x69,0x05,0x55,0xaf,0x60,0x82,0xb3, \
-0xcd,0x26,0x2e,0xd4,0xf7,0x01,0x64,0x15,0x46,0x2c,0x06,0x1f,0x1c,0x8a,0x2b,0x70, \
-0x6e,0x49,0x4c,0x66,0xd1,0xf0,0x70,0xc8,0x88,0x0d,0xe4,0x61,0x3a,0xf8,0x4d,0xc6, \
-0xb6,0xa8,0x16,0x68,0x80,0x6c,0x69,0x77,0x71,0xb7,0x17,0xbe,0xc0,0xb5,0x5c,0x94, \
-0x51,0x84,0xed,0xc3,0x52,0x1b,0x64,0x36,0xe2,0x24,0xc1,0xaf,0x4b,0x0e,0x13,0xc6, \
-0x60,0x4a,0xcf,0xd5,0x7f,0xd1,0x86,0xfe,0xcf,0x97,0xe1,0xac,0xe6,0xd2,0x36,0xe4, \
-0x74,0x01,0xe2,0xfa,0x5d,0xec,0x58,0xb1,0x41,0x4e,0x99,0x02,0x6f,0xeb,0x3e,0xf6, \
-0x42,0x4f,0x7c,0x76,0x72,0xfe,0xb7,0x34,0x9b,0xb4,0x11,0xdd,0xe7,0x4f,0x5f,0x87, \
-0x67,0xd7,0xd0,0x58,0xde,0xb8,0x08,0x57,0xbd,0x4a,0x18,0x71,0x71,0xf9,0xfd,0xeb, \
-0x75,0xc9,0x07,0xa5,0xf1,0x0b,0x96,0xa0,0x27,0x09,0xa2,0x2c,0x66,0x7f,0x05,0x40, \
-0x39,0xaf,0xe6,0xc6,0x93,0x3d,0xe5,0xa0,0xe8,0x7f,0x42,0xdb,0x42,0x76,0xc2,0xfd, \
-0xcf,0x81,0x57,0xee,0x61,0xa1,0xe5,0x77,0x00,0x3d,0x50,0xf4,0x5c,0x7b,0xec,0x5b, \
-0xfa,0x6c,0x16,0xdf,0x1a,0xa1,0xe8,0x8f,0x7f,0xa1,0x86,0xfc,0xb7,0x3b,0xf8,0x90, \
-0xab,0xeb,0x24,0x44,0x92,0xd4,0x99,0xdc,0x9d,0xc3,0x24,0xe6,0x91,0xd8,0xe9,0x89, \
-0xb4,0xdf,0xb8,0xfe,0x1e,0xca,0x9d,0xe6,0x93,0xe8,0x44,0x10,0x11,0x44,0x58,0x08, \
-0x08,0xc1,0x19,0x2b,0x35,0x07,0x00,0xc8,0xa2,0xc1,0x52,0x14,0xd3,0x8f,0x1c,0x1a, \
-0xc3,0xd4,0x88,0xf5,0x61,0x90,0xd9,0x23,0xf4,0x4d,0x21,0x83,0x03,0x3b,0x7a,0xf0, \
-0x1b,0x12,0x3a,0x5a,0xcb,0xe9,0x8a,0x1f,0x32,0xc8,0xef,0xa5,0xb0,0xd7,0x5e,0x48, \
-0xac,0xef,0xed,0xe9,0xcb,0x9c,0x9f,0x71,0x12,0x1c,0xcf,0xef,0xe7,0x7a,0xf6,0xb5, \
-0x15,0x25,0x7c,0x56,0x61,0xc6,0x1b,0x89,0x84,0x77,0x25,0x90,0x62,0x4e,0xb6,0xcc, \
-0xbd,0x5c,0x25,0x36,0x18,0x30,0xb3,0x54,0x61,0x3b,0xb7,0x51,0x66,0x93,0xf4,0xd5, \
-0x10,0x84,0xa6,0x1d,0x51,0x81,0xdb,0xba,0x86,0xdf,0xc6,0x33,0xd0,0x69,0x2e,0x31, \
-0x33,0x8c,0x64,0x49,0xf8,0xb2,0x50,0x12,0xd2,0x6c,0x4a,0xa7,0x5c,0x67,0xc3,0x8d, \
-0xde,0x1a,0x05,0xb6,0xc2,0x58,0x63,0xdd,0xa5,0x71,0x54,0x58,0x83,0xa3,0x1a,0x4b, \
-0xd4,0xd2,0x30,0x2f,0x08,0x5a,0x30,0x01,0xd5,0x51,0x2b,0x78,0xaf,0xb4,0x2c,0x17, \
-0x09,0xb6,0x3f,0xb3,0x5c,0x4a,0x39,0xa2,0xf4,0x4e,0xdd,0x3d,0x09,0x29,0x1f,0x3b, \
-0x67,0x54,0x35,0xb8,0x30,0xcc,0x8f,0xf3,0x1f,0x1a,0x65,0x7a,0x04,0xff,0x1c,0x16, \
-0x7d,0xe7,0xb9,0xd0,0x3f,0x21,0x83,0xf8,0xe2,0x65,0x44,0xaf,0x5c,0xe2,0x1a,0x0b, \
-0x34,0xb6,0xb2,0x3e,0x70,0x0a,0x04,0xfd,0x1b,0x8e,0x52,0xd7,0x3c,0x9e,0x5d,0x79, \
-0x99,0x82,0x0f,0x11,0x87,0x89,0x70,0x81,0x82,0x5f,0x90,0xc5,0xf4,0x5d,0xc3,0x90, \
-0x82,0x25,0xcd,0x2a,0x28,0xd1,0xf1,0x35,0x62,0x66,0x03,0x2f,0x32,0x8f,0x08,0x59, \
-0x68,0x21,0x29,0x51,0xca,0xa9,0xa4,0x02,0x8a,0x09,0xcb,0x02,0x61,0x4a,0x04,0xb1, \
-0x86,0x24,0x8b,0x5a,0x3a,0xb8,0x42,0x61,0x03,0x73,0x18,0x33,0x76,0xb1,0x35,0x81, \
-0x42,0x82,0x08,0xda,0xaf,0xee,0x75,0x93,0xf0,0xba,0x0b,0xb1,0xb4,0xea,0x82,0xaa, \
-0x57,0xa9,0x86,0x7a,0xb7,0x61,0x79,0x20,0x22,0xe4,0x89,0xab,0x07,0x3e,0xe1,0xa0, \
-0x0c,0xc0,0x0f,0xb9,0x86,0xb4,0x54,0x29,0xda,0xf7,0xbe,0x9e,0x42,0x0a,0xb4,0xd8, \
-0x5b,0x42,0x05,0xee,0xc0,0xf9,0xea,0x93,0xd3,0xbb,0xb5,0xf0,0x5e,0x4f,0xfa,0xfe, \
-0x0e,0xb1,0x76,0x2e,0xff,0xe1,0x65,0x64,0x9d,0x7b,0x15,0x86,0x4f,0xf5,0x46,0xe6, \
-0xe0,0x66,0x23,0xff,0xe2,0xee,0x48,0xa7,0x0a,0x12,0x06,0xe5,0x21,0xab,0xa0, \
+0150,0061,0061,0101,0131,0046,0123,0131,0030,0250,0262,0362,0000,0023,0352,0337, \
+0200,0160,0160,0147,0377,0377,0377,0377,0377,0377,0377,0277,0377,0377,0377,0140, \
+0073,0015,0260,0003,0350,0254,0000,0026,0361,0236,0275,0024,0050,0373,0333,0275, \
+0366,0351,0040,0245,0063,0142,0235,0165,0320,0064,0350,0067,0044,0007,0200,0172, \
+0167,0266,0362,0052,0076,0067,0045,0365,0334,0133,0115,0221,0054,0060,0111,0102, \
+0175,0214,0240,0370,0064,0337,0174,0357,0157,0060,0276,0334,0255,0300,0356,0303, \
+0123,0135,0364,0024,0015,0351,0246,0056,0357,0173,0270,0317,0172,0313,0033,0054, \
+0312,0112,0275,0163,0254,0255,0231,0062,0266,0133,0145,0102,0105,0155,0205,0114, \
+0313,0144,0333,0117,0143,0272,0214,0262,0065,0113,0333,0316,0251,0113,0043,0326, \
+0330,0363,0325,0047,0337,0074,0222,0371,0141,0265,0051,0232,0337,0033,0274,0064, \
+0040,0046,0200,0046,0043,0100,0046,0114,0010,0320,0232,0151,0220,0321,0015,0031, \
+0064,0300,0012,0173,0111,0244,0365,0075,0106,0101,0246,0201,0064,0020,0200,0204, \
+0310,0011,0204,0221,0350,0150,0106,0236,0243,0106,0100,0000,0003,0100,0000,0003, \
+0114,0102,0024,0114,0215,0050,0332,0117,0120,0323,0103,0117,0120,0323,0117,0110, \
+0064,0003,0100,0064,0000,0000,0064,0000,0004,0232,0111,0020,0040,0321,0062,0062, \
+0231,0124,0377,0051,0206,0243,0051,0352,0172,0123,0364,0325,0036,0106,0246,0236, \
+0102,0172,0040,0365,0000,0064,0000,0000,0211,0104,0004,0323,0115,0043,0115,0031, \
+0025,0074,0324,0364,0046,0051,0355,0046,0152,0062,0151,0062,0151,0351,0036,0221, \
+0265,0006,0215,0000,0000,0001,0042,0040,0201,0000,0004,0004,0321,0075,0106,0046, \
+0022,0172,0052,0173,0124,0366,0004,0236,0211,0062,0075,0036,0241,0250,0000,0321, \
+0352,0172,0166,0115,0335,0342,0277,0342,0217,0376,0177,0074,0317,0372,0142,0200, \
+0123,0074,0313,0065,0271,0177,0156,0327,0173,0175,0176,0341,0006,0261,0324,0167, \
+0331,0023,0246,0372,0076,0374,0022,0203,0217,0343,0106,0217,0044,0206,0073,0377, \
+0242,0345,0225,0307,0337,0351,0132,0241,0256,0353,0161,0254,0323,0133,0352,0273, \
+0325,0302,0271,0061,0236,0205,0067,0263,0226,0137,0031,0246,0225,0271,0161,0367, \
+0372,0250,0225,0136,0070,0375,0033,0367,0213,0106,0126,0277,0323,0307,0175,0264, \
+0277,0345,0254,0164,0347,0235,0257,0012,0030,0377,0311,0326,0377,0277,0044,0356, \
+0173,0020,0033,0235,0102,0235,0052,0065,0176,0010,0266,0013,0176,0036,0362,0337, \
+0264,0230,0013,0120,0022,0310,0200,0314,0022,0276,0376,0064,0364,0134,0277,0143, \
+0345,0307,0373,0375,0115,0032,0042,0304,0050,0302,0077,0032,0361,0135,0056,0310, \
+0367,0351,0344,0117,0274,0330,0016,0257,0265,0317,0177,0364,0356,0367,0064,0367, \
+0246,0030,0006,0257,0303,0036,0163,0252,0053,0023,0343,0064,0326,0160,0266,0104, \
+0230,0277,0007,0073,0167,0311,0136,0006,0346,0327,0125,0001,0160,0271,0141,0346, \
+0001,0221,0237,0343,0044,0254,0143,0014,0301,0231,0020,0040,0000,0007,0373,0162, \
+0253,0246,0144,0040,0002,0301,0263,0136,0236,0131,0177,0117,0012,0342,0334,0057, \
+0356,0207,0340,0361,0351,0312,0057,0052,0370,0377,0133,0034,0142,0202,0334,0241, \
+0134,0151,0265,0342,0130,0346,0060,0030,0027,0352,0032,0176,0373,0162,0036,0256, \
+0373,0342,0247,0053,0006,0325,0353,0275,0014,0266,0130,0152,0002,0223,0063,0337, \
+0071,0056,0153,0026,0250,0250,0305,0144,0062,0107,0313,0165,0053,0226,0030,0344, \
+0100,0027,0054,0315,0263,0003,0057,0144,0057,0036,0341,0057,0075,0260,0030,0047, \
+0306,0326,0052,0312,0071,0053,0362,0167,0137,0323,0120,0222,0071,0273,0332,0227, \
+0176,0356,0005,0304,0171,0267,0026,0102,0020,0006,0100,0146,0345,0127,0254,0307, \
+0117,0106,0275,0020,0346,0015,0224,0356,0037,0115,0377,0105,0075,0233,0157,0163, \
+0223,0064,0165,0043,0161,0133,0122,0270,0355,0351,0273,0233,0133,0167,0246,0300, \
+0260,0050,0350,0332,0250,0011,0247,0125,0170,0167,0250,0053,0003,0203,0241,0247, \
+0210,0115,0310,0014,0054,0034,0245,0223,0160,0126,0021,0130,0317,0026,0332,0105, \
+0014,0132,0320,0231,0037,0007,0115,0116,0357,0053,0305,0356,0171,0225,0277,0371, \
+0331,0001,0057,0007,0323,0317,0321,0035,0332,0156,0267,0232,0213,0212,0140,0330, \
+0106,0265,0161,0074,0076,0014,0033,0204,0006,0043,0025,0365,0304,0037,0077,0243, \
+0255,0253,0207,0207,0176,0275,0176,0267,0321,0371,0371,0167,0167,0001,0333,0072, \
+0004,0074,0331,0362,0201,0266,0066,0165,0222,0121,0354,0123,0343,0060,0122,0261, \
+0247,0361,0200,0125,0211,0115,0330,0031,0162,0171,0135,0306,0316,0317,0237,0106, \
+0110,0222,0273,0034,0117,0115,0006,0345,0220,0220,0157,0346,0115,0013,0066,0062, \
+0335,0054,0311,0203,0072,0370,0361,0251,0121,0162,0313,0202,0001,0374,0170,0107, \
+0135,0266,0145,0227,0024,0125,0067,0000,0122,0355,0136,0204,0302,0307,0155,0331, \
+0015,0013,0117,0363,0146,0221,0212,0366,0124,0277,0046,0021,0336,0015,0243,0165, \
+0255,0050,0035,0240,0336,0143,0104,0064,0166,0361,0127,0023,0261,0000,0001,0304, \
+0014,0053,0016,0102,0066,0337,0176,0367,0174,0376,0070,0171,0322,0240,0074,0216, \
+0277,0272,0001,0022,0322,0131,0015,0100,0320,0027,0066,0300,0242,0060,0010,0301, \
+0326,0014,0202,0251,0273,0337,0341,0311,0315,0057,0215,0205,0006,0231,0353,0307, \
+0247,0347,0373,0062,0045,0117,0326,0243,0304,0234,0212,0100,0153,0127,0303,0166, \
+0110,0376,0051,0036,0306,0206,0370,0103,0301,0326,0205,0060,0026,0112,0145,0021, \
+0333,0331,0060,0102,0100,0373,0207,0175,0361,0011,0370,0012,0050,0260,0357,0312, \
+0037,0140,0104,0111,0003,0026,0324,0157,0362,0304,0372,0346,0340,0113,0335,0310, \
+0126,0135,0210,0274,0252,0002,0107,0143,0023,0341,0114,0350,0066,0040,0017,0237, \
+0013,0006,0344,0022,0017,0340,0267,0154,0151,0276,0253,0037,0271,0353,0306,0031, \
+0247,0323,0360,0214,0270,0307,0274,0255,0005,0126,0156,0133,0157,0342,0340,0144, \
+0001,0110,0065,0345,0216,0356,0355,0217,0033,0365,0037,0143,0100,0365,0372,0366, \
+0277,0333,0071,0035,0151,0114,0216,0031,0211,0335,0231,0033,0157,0041,0060,0344, \
+0364,0312,0371,0163,0224,0014,0016,0112,0216,0063,0146,0160,0102,0331,0200,0334, \
+0050,0324,0137,0065,0324,0146,0362,0034,0222,0027,0031,0147,0017,0366,0226,0054, \
+0027,0277,0046,0057,0361,0076,0032,0030,0142,0053,0140,0313,0332,0355,0307,0106, \
+0142,0112,0130,0056,0254,0256,0362,0275,0136,0003,0135,0271,0240,0313,0321,0373, \
+0375,0160,0327,0317,0165,0300,0103,0113,0211,0361,0212,0145,0101,0022,0032,0317, \
+0010,0065,0076,0216,0047,0307,0311,0244,0217,0056,0120,0331,0267,0261,0207,0364, \
+0226,0016,0275,0164,0314,0353,0133,0303,0221,0021,0315,0123,0363,0235,0204,0247, \
+0103,0157,0202,0251,0302,0005,0013,0346,0275,0236,0214,0073,0005,0100,0100,0071, \
+0367,0266,0054,0075,0224,0031,0323,0346,0172,0175,0061,0225,0100,0307,0367,0025, \
+0120,0352,0156,0316,0327,0365,0135,0314,0342,0271,0077,0327,0255,0224,0106,0140, \
+0201,0205,0122,0346,0201,0321,0306,0230,0264,0223,0310,0250,0143,0020,0117,0213, \
+0153,0315,0265,0074,0255,0153,0247,0237,0046,0044,0054,0271,0043,0157,0307,0263, \
+0275,0126,0327,0021,0376,0323,0323,0351,0003,0172,0367,0315,0035,0013,0171,0274, \
+0374,0357,0274,0011,0376,0173,0047,0200,0047,0331,0220,0066,0145,0016,0300,0111, \
+0055,0357,0121,0365,0265,0154,0266,0272,0261,0367,0354,0160,0302,0126,0320,0373, \
+0100,0360,0317,0336,0342,0334,0264,0255,0124,0302,0021,0020,0226,0103,0070,0116, \
+0260,0243,0254,0030,0105,0343,0107,0132,0270,0124,0356,0265,0004,0006,0135,0336, \
+0204,0342,0130,0010,0014,0160,0207,0013,0317,0143,0247,0012,0040,0206,0332,0145, \
+0311,0207,0252,0222,0375,0356,0235,0261,0106,0271,0301,0272,0255,0155,0301,0355, \
+0276,0342,0261,0173,0120,0253,0321,0106,0335,0141,0311,0321,0353,0156,0300,0236, \
+0206,0053,0254,0306,0072,0051,0147,0113,0370,0071,0321,0067,0313,0265,0015,0363, \
+0345,0350,0374,0216,0364,0003,0164,0044,0106,0110,0242,0367,0333,0036,0155,0011, \
+0005,0212,0020,0130,0107,0173,0131,0004,0363,0145,0016,0357,0315,0337,0367,0173, \
+0171,0305,0261,0021,0127,0236,0245,0215,0074,0222,0176,0345,0345,0331,0271,0310, \
+0364,0117,0065,0351,0100,0073,0314,0352,0026,0077,0220,0226,0214,0153,0205,0314, \
+0163,0057,0006,0230,0274,0241,0254,0070,0106,0233,0127,0223,0236,0230,0110,0160, \
+0060,0231,0246,0124,0207,0255,0201,0010,0155,0113,0352,0111,0071,0021,0325,0343, \
+0046,0267,0314,0337,0251,0216,0253,0246,0061,0265,0357,0166,0354,0164,0165,0266, \
+0261,0074,0235,0304,0067,0301,0216,0311,0102,0011,0241,0334,0052,0003,0100,0034, \
+0005,0300,0140,0034,0171,0347,0212,0244,0005,0032,0342,0301,0225,0122,0360,0252, \
+0034,0147,0336,0212,0074,0103,0002,0231,0363,0166,0234,0366,0253,0003,0244,0142, \
+0327,0375,0310,0262,0373,0325,0322,0172,0174,0363,0251,0275,0335,0116,0003,0007, \
+0366,0215,0257,0366,0007,0037,0315,0027,0151,0307,0303,0331,0250,0337,0134,0052, \
+0067,0202,0116,0061,0160,0307,0016,0126,0021,0012,0217,0027,0025,0150,0371,0063, \
+0103,0274,0136,0322,0145,0022,0113,0017,0134,0270,0226,0235,0105,0163,0316,0350, \
+0210,0004,0377,0277,0104,0025,0374,0246,0220,0076,0322,0372,0141,0003,0135,0002, \
+0214,0135,0014,0204,0007,0363,0305,0335,0243,0370,0325,0223,0331,0202,0373,0013, \
+0272,0235,0170,0300,0025,0143,0124,0070,0200,0333,0204,0022,0277,0101,0347,0173, \
+0227,0026,0024,0320,0373,0355,0225,0217,0354,0360,0014,0213,0365,0347,0320,0072, \
+0023,0335,0000,0222,0216,0265,0361,0114,0303,0350,0236,0105,0275,0174,0260,0133, \
+0044,0225,0042,0270,0246,0365,0133,0355,0327,0124,0006,0227,0140,0164,0106,0117, \
+0034,0056,0270,0303,0034,0354,0273,0174,0307,0141,0226,0034,0037,0376,0372,0204, \
+0025,0113,0004,0121,0306,0301,0023,0022,0203,0120,0375,0230,0053,0061,0121,0205, \
+0362,0066,0013,0017,0222,0367,0207,0263,0265,0165,0306,0340,0073,0115,0105,0224, \
+0326,0051,0065,0311,0301,0127,0242,0106,0324,0062,0213,0056,0162,0374,0103,0324, \
+0037,0050,0306,0351,0207,0145,0253,0222,0146,0161,0015,0102,0365,0076,0031,0175, \
+0144,0340,0161,0324,0204,0240,0147,0053,0223,0004,0113,0121,0057,0341,0345,0263, \
+0223,0156,0021,0163,0253,0264,0155,0144,0256,0144,0077,0170,0245,0270,0336,0007, \
+0025,0150,0107,0141,0003,0005,0273,0025,0365,0013,0025,0273,0160,0222,0002,0064, \
+0216,0105,0174,0174,0331,0246,0142,0166,0065,0126,0065,0103,0005,0102,0063,0140, \
+0123,0121,0047,0114,0011,0016,0034,0200,0352,0375,0166,0352,0032,0071,0105,0171, \
+0170,0334,0303,0354,0075,0135,0072,0356,0073,0105,0162,0337,0151,0077,0313,0053, \
+0310,0244,0221,0350,0071,0263,0317,0101,0237,0043,0101,0225,0167,0062,0030,0252, \
+0022,0074,0061,0315,0125,0223,0120,0301,0065,0134,0243,0303,0024,0117,0100,0144, \
+0052,0061,0032,0152,0034,0302,0270,0316,0252,0104,0363,0317,0101,0300,0012,0153, \
+0157,0030,0237,0203,0050,0075,0334,0144,0205,0230,0316,0266,0112,0150,0062,0234, \
+0220,0245,0370,0151,0143,0030,0207,0235,0311,0110,0334,0201,0153,0271,0327,0255, \
+0051,0230,0306,0205,0116,0155,0177,0024,0172,0375,0214,0070,0256,0162,0325,0052, \
+0042,0375,0310,0244,0206,0222,0163,0165,0156,0344,0306,0147,0005,0173,0240,0150, \
+0102,0107,0124,0116,0130,0013,0130,0302,0173,0216,0123,0364,0237,0035,0236,0166, \
+0034,0230,0154,0317,0305,0041,0052,0034,0123,0166,0177,0144,0023,0034,0321,0112, \
+0343,0123,0175,0131,0364,0150,0352,0125,0146,0000,0264,0261,0043,0210,0053,0015, \
+0042,0336,0262,0075,0067,0040,0000,0341,0214,0214,0202,0040,0216,0344,0134,0121, \
+0063,0010,0215,0346,0125,0111,0267,0254,0077,0272,0315,0100,0022,0370,0254,0151, \
+0237,0010,0057,0174,0073,0205,0010,0126,0017,0353,0266,0166,0327,0340,0315,0155, \
+0201,0361,0141,0016,0235,0343,0211,0333,0175,0236,0002,0100,0315,0306,0155,0022, \
+0160,0270,0171,0053,0227,0127,0065,0310,0171,0160,0001,0022,0070,0354,0103,0306, \
+0244,0156,0144,0275,0131,0101,0200,0114,0035,0324,0355,0302,0276,0077,0274,0332, \
+0152,0242,0373,0362,0213,0366,0114,0232,0070,0135,0166,0137,0066,0342,0072,0131, \
+0260,0002,0333,0257,0302,0337,0156,0327,0330,0012,0326,0315,0142,0007,0106,0217, \
+0106,0336,0362,0171,0317,0005,0003,0222,0060,0374,0027,0056,0156,0244,0025,0031, \
+0114,0173,0367,0171,0144,0013,0014,0211,0010,0323,0205,0246,0302,0124,0341,0013, \
+0232,0322,0022,0053,0074,0040,0262,0174,0042,0035,0170,0120,0136,0342,0235,0060, \
+0007,0145,0064,0205,0202,0222,0037,0274,0170,0370,0050,0037,0305,0030,0371,0255, \
+0035,0153,0247,0052,0072,0073,0361,0221,0241,0112,0125,0012,0374,0004,0253,0264, \
+0007,0363,0374,0072,0333,0176,0270,0134,0005,0044,0020,0347,0054,0200,0252,0147, \
+0344,0341,0122,0265,0112,0156,0065,0062,0040,0305,0315,0266,0012,0051,0337,0045, \
+0355,0277,0010,0111,0262,0113,0317,0216,0245,0256,0215,0046,0126,0120,0202,0243, \
+0007,0047,0211,0351,0010,0332,0216,0132,0023,0300,0141,0122,0003,0165,0321,0077, \
+0164,0104,0055,0041,0143,0257,0102,0271,0157,0054,0230,0017,0043,0320,0217,0162, \
+0347,0052,0322,0064,0374,0270,0352,0335,0114,0173,0262,0343,0223,0366,0237,0256, \
+0204,0277,0014,0362,0071,0032,0365,0172,0230,0066,0162,0062,0035,0107,0162,0064, \
+0034,0057,0312,0002,0301,0205,0352,0256,0072,0167,0235,0243,0077,0162,0317,0053, \
+0353,0011,0361,0171,0217,0152,0374,0001,0121,0275,0353,0150,0012,0073,0164,0275, \
+0047,0355,0230,0333,0255,0306,0063,0122,0370,0044,0154,0031,0101,0274,0076,0246, \
+0226,0121,0222,0326,0141,0167,0371,0300,0313,0051,0077,0263,0253,0224,0255,0172, \
+0140,0320,0224,0013,0007,0326,0375,0346,0055,0141,0221,0272,0250,0327,0353,0135, \
+0343,0322,0055,0002,0325,0240,0215,0204,0257,0322,0032,0000,0070,0272,0371,0002, \
+0236,0005,0163,0041,0240,0123,0223,0273,0374,0324,0153,0325,0262,0054,0050,0267, \
+0175,0223,0003,0074,0130,0006,0204,0007,0273,0071,0040,0147,0112,0023,0116,0213, \
+0322,0275,0317,0225,0340,0317,0045,0103,0014,0123,0357,0272,0001,0122,0236,0112, \
+0231,0033,0015,0246,0064,0242,0004,0341,0273,0231,0314,0161,0347,0007,0311,0052, \
+0063,0326,0342,0310,0341,0166,0312,0307,0202,0216,0015,0226,0267,0152,0016,0240, \
+0170,0011,0043,0135,0045,0307,0324,0014,0336,0227,0126,0215,0272,0013,0376,0053, \
+0055,0033,0355,0115,0033,0216,0025,0371,0010,0226,0267,0022,0006,0351,0031,0073, \
+0120,0247,0346,0035,0373,0341,0156,0144,0217,0122,0275,0116,0011,0111,0310,0101, \
+0344,0326,0045,0013,0112,0021,0252,0031,0165,0354,0240,0006,0115,0221,0345,0160, \
+0354,0157,0372,0075,0156,0371,0124,0231,0120,0066,0052,0107,0165,0363,0005,0341, \
+0175,0323,0226,0036,0131,0336,0314,0262,0236,0262,0056,0326,0142,0073,0131,0172, \
+0326,0054,0143,0327,0321,0171,0320,0120,0313,0357,0154,0351,0065,0353,0040,0263, \
+0077,0275,0275,0177,0247,0345,0117,0252,0376,0312,0344,0344,0257,0107,0257,0354, \
+0215,0101,0061,0001,0347,0366,0167,0136,0272,0141,0352,0304,0306,0254,0140,0151, \
+0333,0067,0257,0164,0366,0135,0123,0306,0031,0063,0154,0010,0302,0345,0137,0157, \
+0253,0151,0156,0327,0116,0315,0044,0247,0234,0256,0346,0274,0021,0356,0266,0322, \
+0207,0331,0362,0351,0135,0231,0221,0026,0341,0243,0013,0032,0155,0246,0303,0117, \
+0142,0323,0241,0020,0146,0214,0067,0136,0006,0201,0230,0334,0052,0102,0107,0044, \
+0352,0071,0053,0174,0370,0011,0162,0071,0217,0364,0200,0135,0276,0277,0244,0137, \
+0313,0350,0145,0210,0026,0103,0027,0125,0306,0130,0173,0044,0051,0320,0342,0134, \
+0134,0157,0263,0215,0165,0345,0213,0145,0234,0201,0255,0235,0265,0265,0171,0072, \
+0007,0216,0136,0320,0071,0157,0205,0136,0101,0102,0233,0234,0036,0377,0101,0016, \
+0135,0156,0272,0351,0310,0100,0033,0264,0146,0335,0154,0375,0022,0203,0260,0016, \
+0013,0017,0244,0063,0135,0124,0112,0205,0172,0205,0353,0032,0116,0345,0363,0213, \
+0323,0142,0231,0266,0231,0307,0154,0125,0035,0024,0115,0020,0162,0303,0203,0055, \
+0155,0024,0244,0047,0274,0043,0163,0007,0256,0144,0175,0334,0212,0176,0004,0053, \
+0356,0243,0032,0127,0145,0034,0210,0123,0276,0172,0247,0050,0027,0116,0224,0054, \
+0165,0353,0114,0014,0153,0015,0335,0150,0065,0305,0330,0066,0336,0022,0063,0003, \
+0155,0267,0256,0375,0113,0025,0143,0214,0235,0007,0310,0363,0012,0007,0004,0215, \
+0073,0022,0126,0314,0040,0307,0202,0021,0044,0361,0016,0031,0162,0015,0245,0014, \
+0154,0070,0241,0066,0253,0261,0152,0207,0001,0131,0221,0042,0214,0220,0202,0162, \
+0366,0013,0322,0061,0041,0300,0027,0040,0123,0162,0272,0332,0031,0200,0300,0211, \
+0223,0061,0222,0260,0243,0226,0205,0241,0113,0201,0073,0167,0171,0322,0225,0121, \
+0151,0302,0110,0336,0137,0031,0306,0327,0276,0261,0310,0304,0315,0226,0300,0146, \
+0326,0064,0111,0035,0142,0171,0036,0076,0157,0275,0360,0273,0155,0317,0114,0005, \
+0215,0343,0325,0371,0173,0217,0227,0247,0036,0314,0240,0316,0117,0140,0226,0167, \
+0107,0006,0260,0161,0254,0043,0067,0064,0224,0153,0242,0215,0014,0026,0137,0164, \
+0032,0015,0052,0300,0230,0155,0220,0014,0313,0055,0352,0171,0252,0144,0113,0310, \
+0200,0322,0260,0055,0347,0371,0355,0276,0147,0153,0123,0140,0037,0226,0376,0355, \
+0146,0075,0244,0051,0071,0240,0314,0046,0327,0015,0136,0354,0373,0172,0256,0157, \
+0252,0034,0314,0017,0306,0171,0117,0200,0251,0364,0110,0146,0371,0103,0125,0137, \
+0213,0000,0360,0076,0330,0364,0252,0350,0347,0315,0224,0215,0310,0025,0342,0163, \
+0316,0070,0020,0341,0147,0166,0134,0145,0134,0264,0054,0144,0300,0060,0267,0002, \
+0017,0173,0214,0213,0010,0237,0224,0117,0355,0033,0335,0305,0334,0124,0065,0110, \
+0372,0152,0044,0172,0276,0375,0016,0042,0063,0306,0233,0112,0054,0122,0112,0107, \
+0073,0163,0326,0370,0260,0135,0326,0107,0300,0102,0266,0257,0322,0076,0075,0127, \
+0240,0365,0162,0233,0252,0236,0157,0230,0017,0156,0170,0012,0303,0165,0076,0042, \
+0100,0224,0346,0220,0253,0226,0341,0242,0276,0200,0354,0310,0214,0044,0053,0120, \
+0134,0047,0145,0307,0137,0330,0275,0370,0046,0310,0073,0340,0334,0015,0156,0257, \
+0347,0264,0227,0327,0302,0324,0360,0342,0356,0023,0222,0066,0065,0204,0070,0315, \
+0001,0147,0123,0041,0052,0061,0022,0325,0256,0076,0153,0307,0011,0103,0202,0171, \
+0252,0146,0152,0103,0301,0371,0360,0203,0304,0360,0375,0312,0133,0100,0141,0304, \
+0277,0300,0221,0267,0061,0320,0112,0033,0240,0220,0250,0241,0205,0207,0225,0220, \
+0110,0336,0151,0361,0105,0311,0233,0255,0233,0243,0143,0356,0273,0171,0235,0303, \
+0063,0256,0235,0241,0156,0346,0010,0160,0074,0117,0000,0220,0311,0024,0356,0313, \
+0025,0143,0252,0154,0112,0007,0232,0260,0336,0105,0006,0113,0170,0055,0236,0374, \
+0131,0335,0272,0060,0221,0205,0007,0243,0323,0063,0073,0213,0051,0064,0265,0152, \
+0351,0145,0332,0242,0142,0253,0261,0202,0036,0216,0235,0227,0072,0307,0075,0251, \
+0100,0275,0325,0241,0354,0063,0077,0133,0251,0036,0317,0065,0263,0170,0257,0170, \
+0374,0215,0316,0317,0156,0331,0221,0352,0237,0162,0074,0254,0163,0160,0277,0233, \
+0243,0175,0342,0224,0123,0257,0226,0032,0267,0303,0206,0161,0167,0243,0121,0370, \
+0233,0275,0270,0354,0243,0127,0263,0111,0034,0310,0363,0043,0000,0011,0036,0175, \
+0304,0221,0304,0370,0225,0007,0172,0360,0317,0302,0037,0063,0321,0233,0322,0024, \
+0177,0037,0305,0232,0073,0353,0257,0261,0372,0224,0341,0353,0273,0330,0206,0067, \
+0006,0020,0125,0372,0077,0205,0235,0222,0331,0137,0341,0305,0243,0332,0027,0006, \
+0027,0064,0146,0373,0321,0312,0317,0177,0224,0113,0254,0034,0223,0055,0027,0225, \
+0051,0355,0136,0071,0140,0125,0031,0147,0023,0327,0003,0347,0343,0147,0053,0242, \
+0216,0263,0201,0115,0165,0025,0000,0261,0025,0063,0050,0111,0152,0046,0243,0133, \
+0034,0062,0256,0373,0035,0230,0326,0244,0060,0145,0114,0161,0005,0061,0214,0105, \
+0346,0251,0140,0060,0316,0131,0064,0121,0042,0365,0321,0265,0223,0174,0275,0344, \
+0132,0246,0074,0327,0135,0252,0352,0255,0072,0106,0201,0056,0221,0232,0043,0237, \
+0316,0244,0374,0315,0311,0033,0376,0230,0010,0141,0206,0174,0163,0327,0045,0110, \
+0004,0016,0337,0320,0200,0107,0203,0011,0023,0101,0233,0102,0114,0160,0304,0042, \
+0154,0356,0374,0147,0014,0213,0002,0067,0143,0236,0063,0313,0050,0135,0236,0357, \
+0266,0330,0161,0067,0117,0277,0126,0034,0375,0142,0227,0012,0354,0114,0235,0031, \
+0224,0032,0154,0124,0234,0236,0127,0267,0315,0163,0365,0216,0326,0010,0336,0150, \
+0353,0246,0310,0000,0075,0155,0074,0152,0124,0307,0071,0323,0235,0067,0311,0064, \
+0174,0030,0200,0310,0055,0267,0324,0004,0177,0017,0111,0207,0022,0215,0147,0117, \
+0156,0141,0145,0212,0231,0006,0164,0140,0061,0247,0114,0112,0021,0235,0357,0054, \
+0245,0165,0155,0012,0310,0067,0356,0325,0234,0300,0033,0114,0314,0174,0115,0071, \
+0173,0025,0334,0342,0116,0160,0243,0034,0174,0205,0203,0372,0320,0062,0124,0315, \
+0124,0172,0162,0376,0126,0216,0020,0212,0137,0072,0242,0303,0141,0367,0267,0247, \
+0357,0170,0011,0016,0154,0346,0232,0377,0055,0072,0375,0236,0075,0373,0223,0012, \
+0355,0207,0105,0110,0271,0054,0024,0137,0101,0213,0007,0005,0374,0145,0215,0367, \
+0332,0320,0302,0335,0070,0335,0033,0312,0215,0017,0120,0352,0030,0143,0031,0164, \
+0106,0057,0314,0002,0057,0341,0372,0125,0042,0363,0324,0341,0246,0232,0053,0135, \
+0371,0104,0320,0106,0141,0022,0204,0173,0345,0072,0146,0367,0022,0252,0001,0243, \
+0117,0137,0114,0033,0223,0100,0234,0336,0110,0211,0125,0216,0213,0104,0263,0144, \
+0213,0300,0063,0376,0057,0333,0224,0116,0055,0242,0357,0160,0337,0266,0053,0335, \
+0256,0252,0061,0127,0203,0230,0353,0313,0135,0377,0207,0272,0366,0065,0374,0277, \
+0030,0037,0144,0347,0231,0177,0253,0021,0122,0044,0376,0164,0053,0030,0311,0201, \
+0140,0366,0377,0156,0153,0375,0137,0247,0211,0243,0227,0032,0143,0130,0061,0356, \
+0264,0375,0114,0342,0342,0002,0256,0343,0150,0224,0202,0357,0145,0210,0220,0101, \
+0213,0372,0377,0272,0224,0177,0024,0234,0073,0215,0362,0116,0010,0130,0042,0251, \
+0226,0121,0105,0170,0175,0327,0000,0066,0032,0336,0051,0162,0006,0222,0220,0104, \
+0141,0317,0350,0373,0176,0241,0177,0037,0337,0300,0220,0340,0052,0300,0070,0320, \
+0205,0345,0106,0321,0062,0374,0360,0323,0204,0136,0367,0035,0162,0333,0010,0115, \
+0010,0155,0205,0216,0132,0153,0360,0247,0005,0116,0267,0377,0333,0303,0134,0035, \
+0103,0044,0375,0151,0015,0152,0131,0273,0177,0275,0276,0070,0124,0124,0040,0263, \
+0151,0103,0357,0325,0065,0010,0305,0104,0123,0263,0154,0366,0273,0155,0176,0246, \
+0110,0136,0211,0101,0124,0025,0336,0355,0227,0011,0000,0046,0012,0366,0210,0100, \
+0222,0307,0121,0207,0172,0327,0136,0065,0056,0300,0214,0341,0035,0311,0012,0226, \
+0056,0033,0353,0100,0053,0264,0233,0024,0233,0252,0023,0132,0233,0365,0337,0144, \
+0071,0136,0014,0011,0270,0301,0212,0056,0241,0176,0373,0144,0060,0342,0136,0314, \
+0320,0362,0324,0045,0115,0254,0326,0164,0264,0204,0305,0010,0200,0016,0014,0225, \
+0224,0045,0326,0361,0111,0200,0371,0174,0166,0372,0141,0216,0377,0123,0176,0255, \
+0361,0233,0350,0064,0154,0031,0371,0020,0210,0211,0177,0061,0217,0217,0167,0057, \
+0371,0041,0132,0200,0153,0114,0225,0002,0145,0122,0375,0370,0276,0351,0355,0347, \
+0172,0101,0222,0234,0323,0347,0232,0065,0242,0022,0037,0331,0041,0370,0210,0037, \
+0354,0110,0124,0122,0003,0155,0147,0323,0154,0377,0005,0204,0066,0331,0362,0150, \
+0075,0036,0025,0213,0133,0273,0036,0301,0245,0337,0247,0327,0053,0331,0317,0352, \
+0067,0052,0171,0057,0347,0200,0036,0147,0314,0011,0313,0123,0262,0366,0342,0055, \
+0376,0036,0337,0225,0361,0317,0013,0162,0174,0174,0022,0366,0155,0250,0255,0276, \
+0111,0273,0160,0076,0367,0010,0207,0235,0000,0143,0107,0175,0314,0153,0007,0057, \
+0213,0212,0146,0302,0356,0154,0302,0121,0344,0007,0337,0007,0260,0046,0157,0222, \
+0214,0202,0032,0310,0220,0053,0355,0241,0001,0164,0206,0201,0276,0105,0107,0031, \
+0223,0027,0203,0027,0246,0034,0037,0066,0257,0212,0257,0276,0252,0363,0171,0332, \
+0123,0021,0250,0077,0211,0166,0153,0027,0012,0237,0265,0254,0331,0375,0137,0352, \
+0321,0203,0311,0231,0116,0153,0121,0266,0040,0150,0067,0275,0205,0302,0170,0026, \
+0377,0123,0241,0173,0144,0131,0177,0042,0177,0322,0264,0162,0160,0350,0123,0347, \
+0350,0025,0114,0351,0136,0266,0070,0026,0133,0262,0271,0303,0324,0161,0070,0173, \
+0223,0356,0130,0220,0236,0322,0065,0145,0062,0145,0264,0205,0027,0127,0360,0220, \
+0211,0331,0253,0121,0053,0335,0145,0327,0205,0026,0304,0342,0021,0306,0272,0116, \
+0072,0120,0113,0270,0221,0344,0140,0052,0327,0372,0173,0350,0143,0242,0314,0215, \
+0162,0110,0351,0246,0357,0254,0372,0250,0153,0352,0266,0077,0314,0210,0357,0367, \
+0176,0123,0336,0310,0145,0136,0200,0163,0004,0003,0143,0072,0171,0254,0070,0266, \
+0162,0227,0322,0116,0203,0363,0376,0335,0076,0277,0151,0162,0225,0120,0275,0372, \
+0250,0054,0300,0036,0163,0056,0007,0371,0175,0176,0332,0026,0056,0353,0374,0361, \
+0001,0077,0223,0045,0003,0262,0362,0004,0064,0060,0240,0167,0353,0311,0137,0000, \
+0074,0200,0303,0230,0101,0254,0320,0272,0205,0336,0065,0037,0023,0214,0305,0203, \
+0277,0357,0371,0166,0144,0215,0246,0025,0306,0151,0306,0136,0322,0047,0223,0103, \
+0201,0221,0120,0141,0075,0010,0102,0221,0300,0171,0067,0361,0167,0125,0257,0114, \
+0102,0102,0026,0231,0230,0133,0356,0074,0345,0103,0063,0060,0151,0011,0040,0005, \
+0130,0005,0106,0110,0132,0334,0173,0063,0361,0152,0136,0102,0033,0015,0165,0110, \
+0146,0060,0102,0303,0126,0124,0372,0117,0301,0321,0267,0266,0054,0210,0023,0235, \
+0074,0277,0112,0346,0221,0310,0034,0253,0107,0356,0113,0314,0074,0135,0325,0252, \
+0032,0231,0072,0042,0145,0302,0230,0360,0227,0375,0234,0374,0174,0000,0350,0323, \
+0103,0141,0372,0300,0107,0347,0354,0062,0015,0135,0270,0140,0202,0200,0162,0310, \
+0077,0207,0332,0365,0337,0300,0364,0041,0305,0070,0110,0154,0076,0016,0376,0310, \
+0175,0336,0144,0261,0004,0067,0152,0250,0042,0042,0060,0140,0254,0122,0060,0104, \
+0177,0167,0246,0376,0101,0361,0347,0103,0164,0237,0206,0264,0237,0055,0024,0376, \
+0016,0144,0214,0312,0376,0073,0005,0374,0253,0270,0132,0027,0107,0240,0350,0305, \
+0013,0222,0366,0101,0014,0352,0235,0053,0164,0022,0057,0271,0204,0261,0103,0003, \
+0064,0315,0202,0312,0130,0336,0304,0135,0042,0043,0112,0366,0207,0125,0307,0251, \
+0320,0200,0364,0200,0307,0173,0221,0014,0025,0130,0250,0054,0102,0007,0031,0077, \
+0116,0141,0220,0345,0365,0237,0361,0010,0205,0031,0363,0146,0171,0314,0110,0355, \
+0060,0334,0246,0140,0157,0054,0320,0011,0041,0114,0073,0361,0225,0020,0001,0363, \
+0166,0302,0253,0047,0004,0301,0207,0014,0246,0230,0151,0246,0123,0023,0212,0112, \
+0350,0151,0006,0352,0371,0217,0266,0270,0217,0211,0012,0122,0236,0162,0044,0374, \
+0367,0101,0245,0162,0134,0172,0241,0042,0352,0014,0250,0151,0333,0154,0320,0372, \
+0302,0324,0022,0204,0154,0321,0320,0253,0012,0050,0320,0003,0072,0243,0042,0250, \
+0255,0227,0245,0151,0005,0220,0130,0142,0012,0225,0014,0303,0320,0034,0343,0254, \
+0370,0316,0355,0270,0344,0215,0132,0243,0132,0147,0311,0324,0147,0106,0245,0301, \
+0355,0147,0311,0315,0255,0010,0112,0354,0101,0063,0013,0260,0200,0333,0334,0153, \
+0165,0112,0355,0012,0222,0211,0044,0353,0340,0153,0200,0310,0027,0275,0007,0277, \
+0274,0153,0057,0155,0075,0022,0105,0074,0120,0276,0053,0307,0205,0015,0354,0201, \
+0131,0075,0033,0276,0144,0103,0350,0153,0302,0206,0374,0115,0020,0233,0260,0015, \
+0077,0033,0046,0061,0022,0367,0155,0075,0122,0176,0301,0350,0315,0146,0253,0051, \
+0237,0023,0252,0345,0116,0330,0002,0036,0155,0217,0230,0320,0050,0336,0335,0163, \
+0323,0260,0362,0105,0062,0201,0101,0250,0124,0277,0302,0146,0070,0042,0021,0144, \
+0005,0035,0254,0356,0017,0156,0063,0151,0147,0124,0330,0046,0360,0332,0122,0247, \
+0051,0023,0361,0347,0017,0064,0122,0044,0154,0321,0320,0061,0051,0113,0073,0172, \
+0133,0303,0350,0263,0002,0167,0100,0277,0077,0345,0233,0360,0200,0170,0166,0063, \
+0344,0045,0006,0064,0307,0375,0121,0004,0077,0057,0047,0033,0306,0276,0143,0031, \
+0026,0235,0350,0111,0007,0321,0300,0017,0074,0327,0147,0060,0170,0244,0025,0156, \
+0112,0005,0112,0217,0267,0135,0203,0064,0066,0223,0110,0117,0010,0076,0170,0060, \
+0335,0254,0021,0233,0022,0272,0302,0333,0060,0204,0023,0177,0103,0337,0140,0237, \
+0114,0027,0342,0065,0064,0271,0371,0130,0165,0307,0162,0157,0103,0161,0115,0054, \
+0340,0155,0014,0365,0030,0327,0264,0320,0044,0354,0322,0222,0065,0040,0035,0066, \
+0113,0153,0222,0035,0051,0007,0274,0041,0154,0106,0044,0030,0220,0013,0340,0341, \
+0020,0074,0266,0264,0142,0102,0021,0122,0050,0320,0201,0361,0076,0037,0002,0240, \
+0120,0064,0264,0040,0237,0253,0020,0252,0050,0341,0373,0375,0373,0206,0302,0354, \
+0336,0060,0033,0033,0027,0353,0020,0276,0375,0270,0377,0045,0342,0260,0371,0274, \
+0040,0217,0052,0117,0312,0204,0140,0076,0277,0124,0330,0051,0344,0060,0272,0231, \
+0033,0330,0020,0043,0272,0122,0034,0156,0165,0172,0273,0012,0322,0011,0373,0042, \
+0236,0010,0174,0236,0114,0223,0127,0347,0233,0003,0163,0273,0322,0172,0100,0210, \
+0231,0331,0036,0345,0016,0061,0157,0201,0141,0133,0036,0251,0172,0322,0155,0156, \
+0013,0067,0374,0234,0210,0074,0030,0175,0126,0311,0262,0061,0041,0316,0155,0101, \
+0136,0007,0231,0153,0261,0323,0076,0343,0213,0302,0217,0202,0170,0275,0301,0325, \
+0071,0205,0374,0346,0032,0357,0265,0220,0070,0306,0025,0201,0275,0110,0114,0060, \
+0276,0343,0004,0035,0103,0332,0367,0276,0075,0112,0155,0302,0225,0324,0073,0072, \
+0311,0244,0074,0053,0031,0207,0075,0374,0275,0172,0175,0010,0060,0240,0172,0330, \
+0230,0064,0214,0365,0121,0026,0102,0072,0344,0167,0032,0002,0273,0200,0151,0013, \
+0007,0221,0163,0151,0212,0343,0270,0106,0361,0241,0152,0240,0153,0376,0243,0327, \
+0134,0373,0202,0115,0243,0100,0317,0157,0021,0270,0324,0153,0333,0271,0062,0003, \
+0202,0132,0315,0031,0241,0367,0144,0007,0314,0374,0153,0020,0304,0177,0353,0247, \
+0121,0106,0163,0035,0312,0206,0124,0247,0253,0114,0233,0155,0043,0021,0257,0140, \
+0367,0033,0175,0246,0342,0207,0244,0230,0107,0026,0206,0143,0144,0155,0347,0120, \
+0317,0376,0320,0133,0130,0050,0017,0001,0222,0014,0016,0375,0015,0273,0015,0343, \
+0110,0125,0150,0364,0367,0235,0275,0336,0137,0151,0356,0360,0236,0210,0163,0150, \
+0317,0104,0053,0005,0026,0010,0210,0304,0144,0126,0012,0252,0002,0107,0260,0314, \
+0220,0245,0047,0017,0171,0365,0353,0372,0323,0274,0331,0132,0153,0047,0154,0335, \
+0214,0035,0060,0177,0073,0036,0141,0274,0324,0054,0101,0335,0006,0135,0226,0015, \
+0354,0326,0110,0050,0062,0066,0264,0222,0126,0326,0010,0255,0311,0311,0136,0002, \
+0021,0126,0205,0121,0043,0347,0036,0244,0131,0333,0013,0072,0106,0161,0326,0223, \
+0216,0026,0003,0162,0351,0073,0373,0033,0160,0330,0327,0171,0074,0030,0211,0005, \
+0025,0024,0014,0142,0154,0146,0040,0302,0011,0034,0045,0277,0275,0342,0235,0174, \
+0236,0127,0360,0347,0076,0033,0102,0046,0333,0131,0235,0061,0241,0226,0160,0115, \
+0240,0276,0166,0357,0335,0374,0317,0075,0313,0340,0322,0354,0015,0103,0015,0113, \
+0304,0243,0153,0305,0236,0335,0250,0336,0013,0136,0352,0370,0014,0140,0366,0035, \
+0214,0033,0160,0054,0267,0275,0142,0122,0365,0225,0010,0126,0170,0250,0216,0205, \
+0260,0175,0231,0101,0054,0226,0203,0045,0267,0077,0302,0176,0374,0215,0214,0354, \
+0151,0256,0271,0060,0226,0006,0255,0235,0215,0314,0047,0147,0000,0343,0334,0117, \
+0170,0212,0202,0001,0377,0066,0112,0221,0144,0024,0072,0214,0045,0103,0370,0060, \
+0254,0130,0216,0065,0223,0317,0177,0315,0362,0371,0172,0353,0173,0341,0207,0161, \
+0254,0311,0210,0157,0351,0273,0236,0343,0026,0273,0257,0112,0031,0154,0114,0246, \
+0036,0322,0000,0300,0257,0216,0340,0221,0247,0300,0004,0006,0033,0237,0035,0013, \
+0345,0323,0300,0101,0314,0014,0062,0070,0363,0155,0271,0335,0004,0135,0054,0360, \
+0044,0066,0146,0064,0012,0017,0365,0341,0163,0135,0222,0062,0322,0120,0214,0053, \
+0036,0222,0126,0042,0015,0205,0166,0333,0277,0024,0106,0374,0014,0250,0142,0163, \
+0026,0070,0204,0001,0313,0267,0373,0145,0137,0251,0224,0337,0323,0203,0065,0031, \
+0151,0211,0315,0041,0312,0340,0200,0141,0354,0350,0107,0271,0152,0042,0252,0040, \
+0320,0123,0266,0021,0074,0240,0177,0017,0257,0134,0256,0345,0172,0233,0225,0000, \
+0377,0303,0271,0003,0210,0205,0167,0332,0171,0235,0015,0215,0210,0157,0030,0040, \
+0252,0301,0140,0172,0115,0357,0227,0323,0227,0324,0340,0001,0211,0271,0043,0325, \
+0375,0227,0261,0237,0117,0217,0244,0334,0203,0037,0023,0311,0136,0343,0373,0100, \
+0270,0155,0341,0365,0377,0110,0215,0365,0014,0165,0210,0323,0074,0116,0070,0160, \
+0023,0373,0342,0051,0026,0042,0042,0106,0106,0003,0024,0006,0052,0042,0100,0125, \
+0077,0213,0126,0163,0245,0125,0130,0250,0050,0014,0030,0202,0242,0050,0273,0131, \
+0122,0052,0115,0335,0041,0221,0101,0027,0374,0371,0303,0076,0275,0117,0016,0337, \
+0263,0151,0016,0042,0020,0106,0002,0010,0105,0213,0017,0342,0220,0350,0340,0105, \
+0220,0144,0072,0077,0261,0357,0165,0356,0241,0125,0333,0162,0235,0056,0031,0365, \
+0263,0336,0233,0344,0056,0210,0210,0041,0337,0157,0366,0202,0104,0142,0144,0062, \
+0373,0345,0364,0346,0311,0061,0131,0312,0203,0230,0011,0361,0014,0052,0072,0142, \
+0134,0245,0351,0130,0250,0333,0030,0211,0111,0053,0311,0137,0232,0346,0320,0305, \
+0115,0023,0247,0141,0101,0102,0211,0132,0024,0014,0177,0277,0117,0070,0045,0277, \
+0317,0352,0364,0050,0172,0050,0110,0037,0361,0142,0140,0071,0176,0255,0257,0311, \
+0021,0006,0314,0263,0031,0253,0260,0154,0165,0057,0067,0112,0246,0176,0151,0003, \
+0050,0265,0176,0257,0131,0373,0350,0352,0132,0372,0107,0061,0177,0030,0231,0025, \
+0246,0340,0350,0251,0015,0370,0152,0216,0167,0210,0350,0132,0202,0166,0041,0076, \
+0301,0026,0037,0157,0103,0056,0364,0135,0172,0145,0072,0317,0250,0211,0267,0154, \
+0222,0321,0216,0152,0115,0374,0142,0225,0346,0051,0066,0170,0113,0363,0302,0310, \
+0040,0236,0273,0270,0312,0374,0167,0073,0102,0104,0070,0300,0072,0371,0077,0266, \
+0343,0313,0134,0036,0004,0354,0314,0246,0012,0024,0257,0233,0227,0215,0275,0163, \
+0017,0365,0360,0375,0267,0014,0054,0245,0014,0005,0363,0065,0372,0141,0360,0236, \
+0366,0225,0171,0301,0150,0200,0226,0033,0311,0302,0050,0331,0172,0017,0327,0342, \
+0366,0030,0273,0112,0167,0241,0041,0322,0004,0333,0057,0201,0103,0067,0353,0330, \
+0210,0127,0272,0175,0014,0131,0203,0234,0165,0017,0250,0367,0040,0361,0203,0040, \
+0073,0252,0021,0200,0147,0240,0127,0132,0207,0140,0244,0030,0006,0033,0300,0143, \
+0071,0354,0325,0143,0071,0032,0263,0347,0013,0326,0265,0373,0034,0373,0147,0261, \
+0044,0243,0354,0211,0371,0120,0271,0111,0053,0001,0266,0111,0370,0301,0201,0103, \
+0017,0007,0161,0372,0152,0203,0357,0020,0075,0077,0164,0160,0260,0047,0133,0175, \
+0003,0023,0277,0162,0013,0307,0360,0041,0303,0002,0153,0267,0047,0265,0165,0052, \
+0315,0006,0054,0071,0314,0266,0325,0346,0014,0131,0040,0157,0103,0242,0006,0021, \
+0172,0075,0225,0360,0122,0203,0022,0201,0204,0044,0000,0211,0306,0224,0365,0267, \
+0364,0244,0156,0362,0121,0026,0020,0113,0126,0332,0003,0165,0374,0354,0013,0004, \
+0152,0074,0146,0007,0332,0204,0005,0100,0256,0043,0045,0225,0317,0353,0247,0057, \
+0131,0274,0055,0026,0146,0356,0173,0025,0200,0024,0236,0361,0171,0124,0067,0354, \
+0301,0167,0065,0106,0142,0103,0357,0015,0167,0375,0336,0202,0256,0320,0333,0205, \
+0147,0064,0220,0212,0024,0220,0262,0332,0036,0232,0267,0135,0144,0250,0157,0234, \
+0324,0104,0052,0312,0377,0146,0132,0112,0321,0233,0323,0327,0000,0077,0276,0166, \
+0254,0352,0201,0367,0101,0052,0037,0261,0040,0050,0006,0203,0263,0221,0361,0313, \
+0326,0035,0236,0362,0030,0131,0174,0160,0012,0075,0146,0237,0014,0251,0017,0353, \
+0076,0067,0041,0030,0262,0017,0255,0346,0233,0044,0337,0143,0277,0225,0232,0107, \
+0162,0076,0305,0173,0127,0102,0145,0266,0216,0325,0107,0250,0042,0144,0032,0327, \
+0354,0307,0111,0063,0111,0153,0136,0246,0022,0027,0130,0144,0255,0217,0234,0113, \
+0056,0254,0015,0201,0147,0012,0044,0201,0111,0210,0230,0216,0244,0221,0253,0102, \
+0174,0103,0003,0005,0253,0024,0125,0213,0275,0303,0141,0277,0246,0352,0147,0242, \
+0106,0054,0033,0101,0273,0141,0347,0375,0356,0071,0021,0054,0334,0141,0175,0213, \
+0124,0043,0131,0127,0224,0003,0147,0252,0341,0126,0064,0120,0215,0041,0251,0044, \
+0363,0207,0340,0227,0212,0117,0246,0166,0333,0040,0314,0103,0333,0267,0247,0060, \
+0362,0060,0361,0310,0064,0241,0146,0256,0006,0354,0242,0117,0304,0030,0176,0125, \
+0146,0064,0041,0104,0050,0224,0030,0011,0047,0020,0337,0253,0300,0016,0306,0225, \
+0122,0225,0071,0320,0203,0074,0342,0230,0301,0127,0016,0350,0310,0342,0334,0144, \
+0225,0300,0344,0161,0110,0125,0051,0377,0126,0203,0344,0362,0347,0046,0113,0217, \
+0061,0221,0142,0221,0040,0207,0303,0273,0251,0370,0274,0017,0151,0023,0324,0146, \
+0320,0012,0166,0103,0340,0332,0120,0260,0264,0117,0333,0037,0075,0172,0373,0254, \
+0125,0271,0066,0212,0121,0044,0357,0311,0000,0253,0367,0242,0215,0003,0350,0140, \
+0277,0060,0374,0156,0224,0365,0100,0073,0012,0214,0127,0335,0272,0136,0164,0325, \
+0100,0334,0035,0106,0261,0016,0306,0227,0001,0025,0156,0111,0002,0045,0335,0024, \
+0114,0140,0073,0077,0235,0013,0216,0317,0007,0035,0054,0111,0054,0245,0050,0012, \
+0015,0310,0101,0072,0363,0024,0341,0216,0126,0215,0350,0172,0275,0322,0300,0170, \
+0153,0336,0071,0344,0006,0042,0370,0024,0100,0075,0305,0371,0045,0017,0345,0375, \
+0000,0131,0261,0251,0306,0332,0133,0075,0274,0320,0127,0071,0313,0257,0125,0012, \
+0210,0201,0141,0167,0245,0020,0052,0046,0114,0301,0361,0207,0331,0316,0153,0143, \
+0132,0347,0243,0201,0302,0205,0155,0116,0133,0002,0101,0101,0336,0204,0345,0047, \
+0122,0154,0101,0130,0234,0026,0336,0103,0051,0307,0051,0064,0242,0032,0027,0220, \
+0100,0151,0314,0166,0161,0224,0067,0016,0101,0310,0030,0115,0333,0271,0101,0245, \
+0226,0324,0020,0267,0275,0044,0260,0123,0002,0062,0303,0342,0171,0360,0373,0340, \
+0235,0275,0222,0361,0224,0254,0022,0316,0335,0150,0230,0310,0106,0050,0036,0245, \
+0241,0376,0073,0317,0366,0331,0047,0142,0360,0144,0013,0203,0211,0377,0224,0225, \
+0370,0301,0300,0106,0243,0170,0151,0366,0301,0011,0255,0002,0021,0011,0053,0070, \
+0151,0145,0012,0027,0106,0212,0007,0237,0313,0262,0364,0154,0027,0311,0304,0050, \
+0032,0163,0132,0103,0033,0034,0046,0162,0316,0073,0315,0152,0223,0330,0072,0140, \
+0155,0266,0320,0322,0143,0302,0011,0356,0231,0104,0035,0363,0124,0326,0065,0114, \
+0321,0123,0000,0134,0112,0072,0265,0061,0026,0022,0240,0161,0273,0145,0067,0156, \
+0302,0124,0070,0015,0325,0323,0217,0205,0066,0066,0262,0013,0070,0263,0165,0223, \
+0111,0046,0346,0010,0155,0166,0326,0205,0304,0020,0055,0372,0062,0234,0251,0276, \
+0124,0166,0156,0142,0341,0060,0170,0005,0076,0074,0156,0271,0062,0014,0217,0054, \
+0026,0016,0221,0120,0235,0362,0157,0355,0303,0107,0254,0362,0176,0341,0145,0222, \
+0031,0274,0135,0216,0377,0363,0201,0132,0032,0306,0237,0311,0364,0161,0101,0043, \
+0310,0356,0361,0224,0140,0242,0324,0137,0002,0346,0102,0332,0114,0031,0361,0266, \
+0047,0047,0153,0133,0156,0302,0055,0146,0046,0304,0037,0127,0164,0325,0257,0005, \
+0273,0214,0272,0150,0144,0104,0024,0357,0024,0022,0147,0105,0332,0075,0034,0236, \
+0354,0171,0224,0075,0214,0005,0201,0357,0274,0022,0050,0107,0010,0321,0011,0123, \
+0176,0240,0243,0165,0066,0113,0156,0065,0153,0302,0250,0072,0100,0074,0361,0037, \
+0232,0170,0361,0340,0345,0103,0010,0140,0134,0274,0067,0121,0373,0017,0121,0261, \
+0044,0255,0177,0120,0133,0015,0364,0317,0241,0022,0104,0302,0227,0056,0164,0247, \
+0226,0067,0212,0030,0042,0326,0363,0250,0376,0137,0325,0246,0324,0002,0101,0135, \
+0062,0366,0125,0167,0137,0221,0341,0145,0070,0024,0105,0226,0350,0267,0132,0112, \
+0161,0160,0316,0131,0202,0046,0002,0043,0046,0205,0203,0203,0330,0300,0241,0062, \
+0226,0046,0160,0033,0313,0310,0303,0154,0263,0224,0052,0103,0262,0240,0135,0215, \
+0301,0341,0013,0213,0251,0043,0005,0202,0331,0252,0065,0213,0064,0003,0046,0350, \
+0277,0150,0043,0330,0036,0306,0001,0222,0057,0260,0141,0174,0375,0107,0116,0060, \
+0242,0366,0031,0117,0260,0216,0134,0225,0105,0055,0353,0067,0032,0024,0260,0044, \
+0125,0224,0240,0141,0015,0266,0160,0055,0163,0015,0124,0215,0275,0325,0265,0262, \
+0151,0200,0074,0027,0342,0320,0071,0120,0141,0140,0351,0203,0260,0262,0332,0124, \
+0314,0056,0202,0143,0201,0162,0217,0210,0315,0134,0161,0206,0336,0220,0064,0041, \
+0120,0373,0341,0111,0115,0020,0147,0105,0264,0124,0052,0221,0065,0206,0017,0172, \
+0032,0144,0134,0025,0155,0162,0042,0165,0115,0053,0117,0317,0150,0000,0346,0226, \
+0146,0010,0043,0003,0002,0221,0015,0241,0142,0326,0250,0102,0101,0343,0156,0112, \
+0233,0273,0233,0030,0226,0266,0345,0222,0220,0241,0232,0226,0001,0106,0367,0335, \
+0202,0362,0042,0314,0152,0210,0344,0221,0013,0145,0116,0036,0373,0326,0256,0002, \
+0357,0114,0226,0052,0063,0150,0253,0100,0141,0216,0127,0202,0033,0144,0017,0270, \
+0053,0207,0074,0226,0001,0260,0042,0342,0267,0144,0273,0107,0066,0336,0003,0246, \
+0045,0340,0256,0352,0260,0227,0266,0366,0323,0213,0332,0310,0300,0226,0160,0242, \
+0302,0002,0274,0162,0066,0003,0152,0121,0300,0312,0130,0055,0040,0264,0253,0213, \
+0205,0233,0015,0074,0156,0214,0242,0373,0050,0263,0006,0132,0114,0040,0250,0214, \
+0053,0042,0277,0055,0125,0104,0207,0016,0233,0345,0300,0016,0047,0122,0006,0025, \
+0335,0254,0302,0032,0024,0255,0244,0025,0124,0302,0065,0305,0013,0040,0264,0153, \
+0016,0234,0362,0025,0102,0305,0275,0240,0331,0366,0025,0107,0226,0234,0351,0346, \
+0212,0145,0201,0104,0376,0223,0261,0102,0307,0063,0176,0314,0360,0015,0216,0232, \
+0070,0341,0217,0021,0143,0156,0034,0304,0033,0014,0376,0345,0003,0244,0205,0240, \
+0261,0207,0231,0071,0022,0205,0102,0303,0365,0047,0351,0234,0354,0321,0003,0275, \
+0237,0140,0213,0111,0102,0332,0023,0210,0012,0016,0263,0233,0337,0051,0031,0057, \
+0216,0176,0342,0316,0026,0302,0012,0321,0041,0203,0110,0060,0020,0303,0120,0115, \
+0262,0245,0336,0160,0216,0075,0320,0170,0125,0331,0364,0307,0027,0155,0062,0231, \
+0303,0224,0116,0233,0306,0031,0033,0052,0002,0246,0121,0172,0026,0005,0211,0022, \
+0332,0304,0343,0265,0227,0204,0273,0141,0036,0376,0270,0014,0140,0074,0354,0013, \
+0075,0326,0234,0314,0000,0344,0075,0145,0361,0045,0176,0300,0347,0013,0251,0255, \
+0041,0164,0223,0250,0322,0232,0210,0330,0176,0322,0211,0154,0333,0236,0243,0151, \
+0202,0360,0030,0345,0273,0232,0147,0274,0123,0273,0025,0112,0260,0336,0214,0361, \
+0066,0011,0207,0154,0232,0110,0260,0143,0336,0233,0123,0322,0063,0246,0054,0202, \
+0153,0207,0275,0006,0201,0325,0171,0042,0036,0327,0231,0126,0313,0004,0302,0245, \
+0017,0317,0071,0164,0223,0201,0316,0036,0135,0027,0073,0372,0165,0017,0155,0125, \
+0331,0170,0356,0140,0157,0362,0073,0146,0337,0312,0213,0307,0207,0207,0001,0354, \
+0101,0045,0151,0226,0350,0154,0055,0200,0153,0146,0141,0161,0240,0241,0140,0257, \
+0047,0011,0321,0032,0261,0126,0330,0370,0047,0002,0145,0345,0031,0336,0264,0066, \
+0337,0061,0302,0110,0034,0370,0251,0247,0074,0352,0217,0055,0157,0236,0241,0211, \
+0121,0103,0221,0266,0045,0146,0043,0140,0155,0054,0232,0225,0015,0022,0137,0026, \
+0224,0054,0303,0253,0213,0246,0001,0122,0237,0162,0130,0240,0117,0312,0056,0233, \
+0036,0070,0343,0105,0014,0167,0154,0146,0115,0226,0056,0264,0221,0072,0316,0377, \
+0274,0205,0127,0021,0355,0336,0262,0274,0330,0322,0211,0055,0204,0245,0202,0311, \
+0153,0361,0316,0200,0260,0074,0215,0212,0036,0111,0047,0271,0353,0047,0260,0054, \
+0046,0165,0170,0036,0341,0244,0011,0133,0030,0332,0262,0302,0213,0325,0276,0134, \
+0212,0075,0127,0212,0040,0231,0147,0304,0154,0314,0204,0324,0334,0334,0305,0130, \
+0301,0173,0135,0313,0061,0214,0254,0253,0135,0273,0261,0357,0204,0161,0152,0303, \
+0013,0052,0207,0105,0056,0032,0221,0237,0014,0316,0054,0253,0075,0200,0266,0321, \
+0027,0026,0146,0111,0260,0016,0216,0251,0145,0022,0054,0367,0230,0115,0261,0141, \
+0201,0020,0204,0033,0341,0352,0110,0303,0054,0217,0210,0073,0246,0256,0302,0254, \
+0260,0275,0300,0367,0163,0116,0071,0204,0362,0103,0103,0012,0202,0012,0361,0111, \
+0142,0044,0154,0264,0210,0306,0165,0153,0041,0335,0050,0227,0154,0177,0157,0134, \
+0361,0372,0016,0303,0167,0134,0300,0235,0140,0160,0347,0257,0205,0150,0377,0112, \
+0232,0227,0121,0164,0226,0272,0105,0044,0155,0205,0141,0262,0345,0243,0162,0074, \
+0261,0052,0063,0023,0140,0156,0036,0030,0046,0061,0252,0250,0026,0353,0101,0207, \
+0147,0120,0142,0027,0016,0107,0201,0350,0274,0302,0111,0054,0013,0204,0071,0342, \
+0032,0067,0172,0042,0031,0205,0007,0262,0351,0373,0141,0174,0166,0100,0153,0150, \
+0135,0316,0347,0064,0144,0110,0036,0031,0066,0317,0305,0215,0375,0006,0101,0016, \
+0306,0051,0357,0353,0176,0263,0361,0271,0237,0304,0150,0311,0200,0240,0245,0244, \
+0251,0131,0037,0235,0223,0110,0114,0022,0050,0203,0025,0245,0265,0260,0131,0040, \
+0244,0026,0035,0335,0333,0232,0336,0165,0126,0143,0374,0272,0372,0225,0213,0236, \
+0057,0004,0205,0132,0350,0212,0064,0120,0150,0307,0366,0037,0125,0014,0366,0203, \
+0010,0004,0373,0056,0050,0256,0003,0066,0024,0025,0345,0202,0236,0302,0072,0105, \
+0122,0021,0011,0257,0120,0102,0020,0045,0102,0245,0041,0175,0371,0126,0325,0160, \
+0234,0042,0245,0342,0104,0322,0051,0172,0101,0272,0077,0104,0005,0331,0034,0202, \
+0176,0277,0273,0227,0065,0305,0264,0251,0372,0023,0100,0312,0330,0020,0030,0104, \
+0235,0210,0114,0103,0302,0014,0231,0306,0222,0115,0231,0262,0117,0327,0036,0157, \
+0176,0316,0344,0107,0040,0212,0153,0221,0341,0044,0263,0020,0260,0306,0254,0226, \
+0071,0015,0255,0137,0225,0361,0302,0210,0121,0141,0053,0056,0320,0041,0217,0177, \
+0242,0205,0233,0062,0146,0155,0057,0206,0243,0075,0006,0310,0142,0264,0201,0224, \
+0333,0274,0301,0165,0153,0212,0226,0210,0222,0040,0052,0242,0305,0120,0106,0047, \
+0333,0150,0306,0215,0101,0130,0105,0222,0021,0201,0043,0002,0041,0047,0036,0306, \
+0276,0377,0041,0355,0262,0356,0333,0221,0374,0113,0120,0327,0050,0100,0150,0343, \
+0250,0253,0122,0320,0361,0122,0312,0252,0235,0321,0220,0111,0005,0052,0075,0127, \
+0006,0000,0064,0005,0221,0124,0176,0301,0265,0372,0016,0005,0336,0310,0305,0322, \
+0102,0311,0311,0211,0006,0355,0363,0364,0374,0076,0317,0317,0127,0176,0110,0271, \
+0235,0032,0315,0020,0017,0125,0112,0004,0237,0177,0057,0351,0075,0226,0104,0133, \
+0017,0367,0042,0236,0352,0252,0121,0046,0310,0105,0220,0140,0165,0324,0271,0326, \
+0366,0166,0351,0363,0372,0372,0072,0042,0274,0214,0073,0307,0223,0325,0137,0034, \
+0234,0123,0306,0355,0332,0020,0172,0324,0005,0070,0151,0347,0140,0076,0057,0002, \
+0276,0277,0122,0333,0032,0351,0242,0214,0007,0232,0101,0127,0106,0225,0221,0341, \
+0364,0145,0327,0333,0322,0015,0123,0072,0250,0270,0115,0053,0341,0235,0363,0363, \
+0270,0366,0240,0326,0304,0075,0311,0015,0240,0311,0043,0367,0030,0346,0274,0042, \
+0073,0367,0357,0036,0170,0302,0163,0320,0220,0051,0362,0144,0357,0330,0173,0071, \
+0167,0017,0300,0102,0107,0243,0145,0272,0267,0037,0104,0352,0016,0223,0237,0130, \
+0016,0204,0102,0100,0204,0030,0101,0262,0056,0104,0000,0053,0001,0261,0051,0076, \
+0336,0323,0355,0122,0034,0003,0170,0001,0251,0255,0306,0275,0146,0336,0215,0260, \
+0344,0134,0334,0064,0311,0131,0252,0210,0022,0264,0151,0021,0244,0212,0021,0216, \
+0302,0307,0166,0352,0153,0356,0335,0205,0277,0066,0024,0346,0046,0033,0016,0313, \
+0225,0224,0216,0215,0011,0022,0056,0253,0116,0326,0150,0354,0351,0073,0017,0107, \
+0122,0274,0072,0326,0352,0365,0234,0334,0131,0325,0333,0276,0272,0101,0154,0027, \
+0071,0125,0123,0327,0003,0061,0203,0201,0241,0226,0315,0210,0054,0131,0260,0011, \
+0312,0242,0177,0015,0335,0016,0071,0011,0055,0305,0001,0364,0150,0031,0060,0124, \
+0115,0035,0130,0203,0017,0234,0150,0155,0012,0113,0004,0020,0171,0361,0077,0167, \
+0277,0357,0353,0266,0347,0175,0212,0214,0020,0101,0022,0013,0020,0126,0054,0222, \
+0207,0016,0247,0364,0147,0232,0305,0034,0160,0301,0172,0361,0016,0037,0055,0160, \
+0340,0036,0176,0163,0305,0057,0010,0217,0242,0040,0170,0014,0272,0223,0352,0364, \
+0374,0175,0043,0327,0016,0016,0221,0122,0101,0162,0144,0014,0210,0317,0210,0167, \
+0370,0344,0074,0073,0154,0067,0121,0110,0054,0037,0077,0100,0017,0200,0240,0306, \
+0047,0263,0344,0113,0015,0033,0364,0363,0233,0324,0204,0127,0012,0242,0263,0372, \
+0263,0244,0224,0276,0244,0045,0132,0023,0023,0270,0334,0275,0251,0244,0014,0140, \
+0276,0045,0011,0046,0021,0254,0074,0015,0173,0014,0140,0250,0157,0147,0156,0350, \
+0064,0305,0066,0061,0342,0037,0134,0046,0266,0325,0367,0173,0204,0065,0154,0030, \
+0041,0271,0052,0116,0273,0120,0060,0177,0104,0117,0237,0107,0313,0220,0155,0373, \
+0136,0212,0335,0330,0020,0021,0221,0130,0144,0100,0135,0325,0222,0303,0315,0232, \
+0114,0005,0006,0020,0120,0224,0266,0173,0270,0030,0127,0211,0332,0037,0135,0166, \
+0070,0054,0201,0215,0345,0042,0036,0132,0153,0345,0034,0303,0272,0363,0021,0202, \
+0212,0012,0214,0131,0004,0206,0044,0016,0235,0263,0251,0344,0220,0362,0146,0035, \
+0065,0145,0207,0305,0324,0325,0060,0241,0127,0331,0145,0122,0052,0261,0210,0240, \
+0254,0107,0032,0072,0267,0000,0332,0066,0314,0045,0122,0022,0040,0155,0325,0226, \
+0070,0154,0271,0152,0364,0166,0122,0140,0215,0176,0131,0125,0034,0003,0037,0130, \
+0166,0003,0361,0105,0250,0160,0054,0223,0371,0367,0025,0222,0351,0022,0322,0115, \
+0353,0274,0232,0204,0071,0134,0052,0242,0040,0244,0101,0212,0326,0112,0262,0125, \
+0121,0045,0333,0062,0142,0374,0032,0105,0206,0062,0242,0241,0314,0236,0160,0371, \
+0234,0160,0103,0303,0176,0121,0223,0236,0307,0236,0333,0013,0230,0013,0167,0055, \
+0315,0100,0160,0012,0041,0363,0143,0266,0364,0262,0061,0264,0374,0205,0023,0303, \
+0002,0105,0154,0365,0320,0032,0305,0161,0057,0062,0353,0260,0206,0272,0171,0352, \
+0035,0222,0261,0135,0124,0022,0063,0065,0060,0124,0071,0011,0332,0071,0226,0263, \
+0020,0013,0163,0047,0222,0063,0372,0132,0221,0023,0124,0074,0075,0163,0113,0361, \
+0371,0357,0322,0275,0035,0304,0141,0016,0242,0051,0116,0244,0261,0170,0100,0360, \
+0350,0365,0130,0314,0125,0366,0103,0076,0173,0365,0265,0205,0025,0150,0225,0070, \
+0141,0304,0022,0140,0110,0221,0164,0027,0370,0161,0234,0272,0142,0137,0313,0232, \
+0026,0363,0135,0060,0126,0241,0364,0203,0014,0170,0246,0231,0352,0324,0335,0334, \
+0352,0036,0267,0300,0247,0261,0222,0347,0166,0305,0373,0151,0355,0065,0041,0255, \
+0341,0050,0125,0064,0135,0323,0273,0046,0002,0046,0256,0221,0006,0100,0337,0077, \
+0031,0273,0025,0267,0243,0261,0176,0016,0245,0114,0336,0020,0175,0214,0352,0146, \
+0333,0173,0226,0141,0230,0202,0252,0022,0304,0040,0355,0237,0004,0014,0246,0226, \
+0251,0122,0251,0170,0046,0263,0156,0325,0232,0322,0004,0105,0005,0122,0034,0155, \
+0006,0073,0005,0261,0266,0210,0212,0305,0002,0261,0353,0303,0342,0242,0274,0012, \
+0261,0230,0304,0020,0065,0223,0301,0025,0151,0260,0155,0131,0207,0017,0224,0320, \
+0350,0161,0067,0355,0014,0215,0105,0370,0275,0365,0077,0171,0226,0366,0141,0253, \
+0202,0110,0360,0374,0075,0352,0227,0020,0160,0057,0201,0034,0030,0152,0026,0266, \
+0252,0311,0345,0025,0064,0123,0317,0067,0022,0173,0265,0045,0111,0360,0336,0017, \
+0062,0034,0370,0122,0273,0062,0005,0006,0210,0005,0065,0010,0140,0313,0054,0160, \
+0120,0256,0161,0345,0044,0075,0134,0360,0063,0171,0066,0362,0004,0147,0256,0152, \
+0304,0260,0241,0130,0043,0254,0206,0237,0055,0243,0206,0157,0271,0266,0372,0154, \
+0034,0066,0041,0202,0152,0046,0032,0330,0014,0330,0323,0274,0164,0314,0310,0132, \
+0121,0066,0336,0240,0335,0031,0266,0211,0254,0112,0153,0132,0310,0232,0102,0272, \
+0314,0273,0070,0304,0114,0277,0146,0140,0263,0064,0146,0031,0023,0143,0033,0172, \
+0150,0324,0163,0110,0155,0112,0250,0055,0266,0321,0156,0045,0314,0306,0115,0046, \
+0032,0020,0064,0005,0250,0243,0012,0042,0025,0140,0041,0071,0306,0117,0043,0042, \
+0267,0077,0213,0257,0261,0147,0020,0252,0321,0020,0102,0266,0072,0367,0064,0132, \
+0160,0221,0246,0330,0206,0107,0273,0217,0072,0360,0145,0230,0034,0032,0303,0004, \
+0364,0350,0225,0275,0246,0207,0126,0170,0353,0352,0336,0155,0373,0115,0341,0233, \
+0153,0163,0110,0244,0264,0033,0343,0374,0064,0140,0270,0312,0062,0016,0250,0126, \
+0006,0330,0122,0142,0013,0203,0014,0312,0231,0213,0070,0046,0007,0042,0354,0146, \
+0031,0262,0103,0116,0104,0037,0205,0052,0250,0061,0024,0325,0220,0344,0335,0032, \
+0164,0071,0100,0062,0323,0210,0312,0202,0137,0013,0005,0332,0126,0124,0025,0223, \
+0022,0010,0152,0051,0042,0204,0234,0344,0053,0103,0011,0160,0327,0063,0140,0367, \
+0226,0247,0373,0301,0075,0047,0015,0014,0112,0220,0151,0010,0105,0167,0125,0160, \
+0121,0330,0100,0157,0251,0166,0040,0171,0270,0016,0065,0234,0217,0273,0316,0325, \
+0066,0264,0140,0063,0326,0360,0015,0200,0240,0267,0266,0026,0346,0166,0246,0141, \
+0134,0315,0253,0054,0074,0376,0202,0365,0323,0143,0001,0117,0004,0117,0253,0256, \
+0320,0243,0026,0012,0036,0335,0242,0034,0062,0141,0044,0301,0336,0255,0133,0030, \
+0126,0210,0053,0035,0015,0160,0124,0104,0264,0253,0002,0322,0203,0150,0066,0214, \
+0241,0111,0150,0312,0045,0245,0102,0054,0153,0130,0330,0353,0017,0206,0203,0132, \
+0223,0211,0130,0313,0020,0166,0222,0206,0254,0014,0214,0230,0221,0357,0002,0041, \
+0202,0321,0226,0140,0252,0214,0052,0300,0236,0325,0230,0014,0202,0074,0260,0370, \
+0161,0245,0007,0363,0020,0222,0200,0376,0103,0143,0030,0216,0231,0071,0355,0012, \
+0006,0044,0373,0131,0315,0237,0274,0146,0217,0315,0170,0263,0242,0126,0112,0025, \
+0373,0211,0056,0312,0061,0044,0173,0213,0054,0025,0153,0070,0147,0042,0277,0177, \
+0142,0075,0373,0276,0237,0052,0146,0063,0353,0153,0254,0244,0055,0201,0040,0054, \
+0205,0105,0345,0253,0275,0176,0077,0024,0342,0026,0321,0266,0103,0104,0020,0101, \
+0027,0053,0100,0266,0333,0113,0305,0170,0305,0100,0341,0035,0064,0247,0064,0314, \
+0165,0307,0027,0102,0152,0364,0274,0266,0156,0221,0060,0071,0174,0204,0204,0226, \
+0163,0372,0020,0206,0257,0124,0303,0332,0024,0114,0057,0101,0331,0135,0120,0102, \
+0366,0004,0210,0301,0221,0065,0017,0150,0035,0254,0233,0010,0252,0203,0335,0141, \
+0376,0106,0114,0214,0101,0121,0042,0042,0374,0041,0346,0305,0212,0013,0000,0273, \
+0117,0142,0120,0071,0033,0363,0006,0036,0256,0315,0201,0115,0126,0074,0335,0044, \
+0260,0306,0346,0100,0011,0044,0023,0060,0053,0251,0064,0212,0140,0056,0104,0020, \
+0300,0155,0224,0330,0137,0024,0262,0335,0222,0344,0053,0066,0152,0145,0321,0370, \
+0272,0205,0061,0250,0123,0133,0103,0351,0331,0016,0233,0161,0362,0274,0050,0062, \
+0332,0247,0026,0174,0223,0006,0060,0360,0264,0140,0202,0072,0065,0204,0300,0365, \
+0215,0060,0341,0303,0002,0262,0152,0331,0114,0341,0000,0241,0217,0215,0260,0147, \
+0247,0364,0153,0237,0351,0134,0040,0357,0035,0071,0123,0177,0160,0007,0220,0140, \
+0160,0205,0164,0265,0015,0337,0320,0104,0046,0241,0246,0022,0261,0327,0025,0110, \
+0237,0056,0320,0374,0261,0305,0005,0323,0026,0215,0013,0005,0301,0066,0367,0057, \
+0301,0214,0321,0355,0144,0114,0201,0100,0215,0326,0354,0042,0262,0067,0367,0310, \
+0147,0103,0274,0201,0206,0333,0140,0143,0207,0344,0331,0337,0211,0044,0211,0322, \
+0137,0270,0371,0247,0117,0151,0273,0076,0213,0244,0353,0071,0303,0346,0277,0051, \
+0142,0076,0256,0046,0031,0054,0136,0262,0034,0116,0333,0360,0374,0062,0131,0362, \
+0100,0251,0261,0354,0200,0210,0211,0074,0175,0344,0007,0112,0236,0246,0041,0175, \
+0173,0104,0240,0135,0157,0141,0277,0110,0210,0054,0122,0012,0221,0004,0264,0262, \
+0233,0103,0155,0007,0115,0275,0334,0075,0334,0347,0324,0040,0173,0317,0253,0157, \
+0007,0057,0324,0315,0201,0065,0240,0252,0160,0237,0310,0046,0027,0050,0225,0050, \
+0130,0271,0166,0107,0054,0346,0067,0024,0254,0040,0156,0323,0252,0003,0237,0214, \
+0061,0232,0147,0100,0071,0344,0144,0247,0330,0203,0061,0100,0142,0340,0140,0242, \
+0356,0022,0270,0276,0274,0103,0342,0130,0140,0307,0205,0120,0275,0073,0166,0363, \
+0163,0126,0015,0144,0245,0120,0144,0046,0031,0305,0226,0001,0367,0304,0213,0004, \
+0170,0100,0131,0143,0257,0064,0205,0244,0135,0206,0245,0004,0117,0237,0231,0152, \
+0343,0325,0341,0204,0015,0342,0057,0337,0312,0013,0323,0077,0334,0033,0021,0277, \
+0050,0114,0121,0124,0031,0011,0173,0002,0102,0107,0025,0322,0300,0044,0030,0107, \
+0236,0017,0317,0072,0310,0213,0160,0133,0203,0237,0155,0351,0353,0274,0056,0320, \
+0321,0263,0356,0101,0151,0216,0322,0171,0370,0311,0332,0203,0030,0014,0125,0110, \
+0300,0221,0167,0136,0071,0053,0241,0015,0260,0174,0171,0145,0277,0012,0332,0103, \
+0275,0311,0256,0031,0130,0144,0111,0044,0057,0226,0147,0003,0114,0001,0242,0223, \
+0117,0074,0254,0001,0124,0125,0007,0266,0205,0143,0067,0244,0322,0006,0010,0054, \
+0012,0313,0260,0325,0121,0021,0124,0122,0040,0345,0222,0252,0012,0230,0255,0126, \
+0043,0040,0040,0202,0044,0021,0143,0007,0141,0204,0105,0040,0226,0030,0036,0217, \
+0343,0066,0137,0040,0310,0014,0122,0130,0147,0152,0023,0357,0245,0102,0010,0375, \
+0076,0023,0172,0325,0275,0127,0002,0106,0134,0300,0143,0204,0005,0200,0072,0020, \
+0125,0035,0315,0121,0246,0301,0213,0026,0072,0141,0115,0024,0260,0340,0145,0301, \
+0143,0121,0245,0220,0125,0304,0054,0051,0051,0246,0055,0260,0314,0205,0064,0051, \
+0340,0366,0320,0314,0317,0314,0007,0022,0110,0355,0047,0023,0352,0045,0362,0147, \
+0265,0127,0230,0066,0362,0115,0260,0244,0326,0366,0171,0231,0115,0203,0272,0375, \
+0141,0231,0053,0230,0366,0103,0246,0126,0134,0364,0314,0312,0045,0112,0044,0116, \
+0046,0247,0340,0357,0324,0321,0202,0077,0117,0110,0253,0001,0144,0054,0144,0103, \
+0144,0332,0362,0342,0002,0204,0147,0150,0017,0132,0305,0005,0104,0102,0313,0146, \
+0346,0153,0010,0160,0071,0002,0305,0210,0221,0214,0106,0004,0130,0212,0103,0102, \
+0031,0016,0340,0257,0324,0056,0366,0306,0230,0323,0005,0214,0310,0271,0310,0134, \
+0325,0343,0152,0030,0344,0022,0112,0206,0210,0140,0112,0117,0204,0062,0011,0101, \
+0212,0063,0107,0151,0117,0036,0122,0167,0014,0026,0021,0115,0247,0234,0005,0022, \
+0326,0344,0167,0254,0067,0272,0007,0024,0031,0034,0067,0177,0153,0033,0026,0117, \
+0143,0331,0144,0264,0030,0240,0111,0041,0164,0136,0252,0060,0125,0212,0126,0211, \
+0005,0232,0105,0231,0112,0040,0062,0101,0017,0135,0240,0171,0103,0175,0246,0354, \
+0105,0240,0050,0045,0243,0106,0122,0120,0107,0020,0210,0161,0010,0212,0352,0026, \
+0345,0256,0015,0145,0322,0363,0255,0076,0343,0012,0241,0114,0030,0264,0110,0302, \
+0043,0254,0120,0144,0023,0352,0002,0044,0300,0360,0247,0147,0102,0223,0260,0304, \
+0276,0176,0335,0161,0325,0327,0235,0241,0334,0220,0066,0032,0347,0000,0367,0363, \
+0262,0151,0041,0360,0263,0236,0237,0335,0225,0207,0150,0045,0364,0333,0261,0065, \
+0334,0305,0072,0104,0343,0237,0076,0111,0162,0066,0122,0172,0034,0335,0156,0100, \
+0211,0256,0131,0253,0331,0024,0202,0004,0144,0006,0002,0074,0272,0136,0300,0210, \
+0327,0346,0166,0101,0260,0030,0126,0041,0257,0303,0001,0276,0061,0147,0206,0364, \
+0041,0263,0355,0355,0160,0034,0125,0161,0311,0374,0016,0366,0214,0063,0342,0361, \
+0147,0116,0367,0156,0105,0152,0367,0154,0226,0066,0311,0146,0111,0073,0132,0263, \
+0174,0234,0035,0002,0124,0261,0132,0106,0001,0302,0252,0044,0051,0102,0206,0077, \
+0036,0300,0124,0160,0240,0150,0024,0354,0163,0356,0341,0133,0074,0263,0016,0112, \
+0023,0200,0326,0227,0277,0032,0124,0147,0000,0275,0355,0112,0267,0377,0172,0105, \
+0035,0027,0240,0211,0031,0252,0205,0344,0202,0033,0327,0006,0375,0074,0312,0150, \
+0214,0134,0366,0272,0075,0113,0164,0041,0115,0312,0171,0221,0266,0124,0167,0354, \
+0252,0012,0066,0027,0246,0353,0177,0124,0154,0320,0334,0025,0234,0301,0317,0122, \
+0350,0023,0110,0016,0211,0064,0161,0200,0071,0366,0136,0261,0043,0165,0034,0266, \
+0052,0374,0050,0342,0142,0142,0073,0102,0364,0064,0051,0063,0222,0225,0026,0011, \
+0336,0365,0032,0366,0027,0115,0250,0203,0035,0345,0203,0235,0356,0060,0332,0131, \
+0223,0101,0120,0134,0314,0140,0062,0366,0310,0251,0253,0330,0070,0370,0206,0060, \
+0100,0243,0144,0022,0024,0056,0310,0255,0035,0375,0025,0223,0265,0305,0337,0307, \
+0274,0364,0076,0240,0107,0207,0350,0226,0352,0271,0055,0317,0131,0330,0166,0143, \
+0030,0335,0130,0277,0067,0032,0322,0257,0355,0310,0075,0233,0164,0265,0061,0304, \
+0067,0251,0371,0172,0224,0123,0120,0060,0152,0110,0142,0206,0265,0354,0301,0214, \
+0153,0030,0301,0210,0375,0027,0174,0314,0074,0017,0311,0331,0351,0160,0254,0035, \
+0313,0270,0154,0136,0133,0033,0155,0065,0303,0065,0021,0341,0112,0152,0207,0206, \
+0363,0176,0153,0352,0317,0233,0305,0173,0122,0304,0335,0076,0277,0147,0055,0240, \
+0233,0241,0124,0321,0201,0312,0115,0202,0171,0040,0141,0275,0236,0207,0251,0225, \
+0032,0236,0100,0341,0033,0126,0073,0017,0155,0045,0253,0077,0313,0217,0020,0221, \
+0032,0271,0233,0011,0022,0234,0002,0261,0234,0027,0337,0111,0140,0342,0040,0144, \
+0020,0036,0067,0003,0043,0070,0015,0214,0315,0254,0115,0154,0370,0307,0076,0174, \
+0155,0154,0315,0133,0351,0275,0033,0327,0242,0171,0166,0034,0103,0007,0206,0125, \
+0227,0057,0057,0206,0024,0103,0154,0136,0150,0005,0252,0073,0171,0353,0365,0336, \
+0163,0300,0167,0301,0044,0143,0111,0037,0207,0360,0116,0001,0166,0264,0031,0124, \
+0043,0262,0010,0046,0007,0227,0373,0371,0326,0264,0151,0253,0304,0131,0052,0231, \
+0145,0030,0373,0015,0146,0351,0244,0227,0101,0166,0332,0315,0071,0166,0103,0014, \
+0256,0276,0035,0307,0272,0034,0153,0356,0210,0225,0202,0017,0002,0026,0052,0161, \
+0005,0246,0032,0265,0100,0327,0141,0300,0215,0221,0244,0010,0232,0071,0124,0203, \
+0351,0175,0032,0101,0335,0336,0007,0162,0230,0006,0215,0350,0317,0300,0076,0024, \
+0113,0307,0231,0306,0152,0217,0272,0022,0106,0167,0350,0104,0237,0243,0350,0321, \
+0305,0015,0064,0003,0147,0207,0043,0115,0155,0165,0035,0137,0115,0261,0074,0042, \
+0247,0036,0200,0331,0355,0141,0334,0105,0110,0354,0274,0340,0300,0214,0210,0201, \
+0254,0150,0207,0147,0035,0050,0125,0224,0135,0264,0230,0301,0201,0203,0071,0106, \
+0215,0156,0122,0035,0003,0113,0133,0230,0043,0144,0334,0354,0162,0045,0361,0052, \
+0070,0121,0026,0044,0133,0255,0033,0006,0305,0101,0010,0215,0100,0320,0075,0033, \
+0115,0214,0336,0213,0066,0130,0004,0267,0110,0056,0005,0255,0042,0204,0154,0004, \
+0205,0107,0201,0112,0101,0040,0135,0034,0072,0012,0231,0120,0151,0126,0045,0034, \
+0032,0004,0023,0061,0112,0164,0204,0301,0213,0303,0266,0204,0201,0202,0132,0141, \
+0122,0140,0060,0034,0012,0135,0202,0303,0311,0224,0276,0150,0011,0002,0104,0130, \
+0222,0323,0265,0070,0262,0205,0122,0054,0123,0332,0016,0252,0056,0356,0001,0211, \
+0032,0054,0270,0323,0313,0262,0314,0064,0231,0100,0251,0017,0106,0262,0056,0322, \
+0051,0100,0263,0117,0040,0130,0302,0012,0025,0014,0115,0270,0040,0076,0051,0012, \
+0133,0260,0110,0162,0102,0143,0165,0316,0315,0124,0120,0166,0030,0105,0120,0120, \
+0136,0364,0310,0245,0001,0033,0276,0305,0210,0230,0026,0067,0000,0273,0065,0336, \
+0100,0224,0016,0122,0115,0341,0050,0007,0012,0024,0045,0331,0101,0324,0210,0055, \
+0070,0305,0006,0030,0020,0062,0010,0132,0334,0144,0022,0005,0176,0022,0077,0013, \
+0140,0335,0267,0102,0171,0000,0022,0332,0060,0230,0014,0071,0121,0066,0030,0050, \
+0343,0161,0022,0222,0147,0050,0123,0121,0043,0271,0201,0360,0117,0000,0306,0050, \
+0233,0214,0007,0211,0321,0047,0150,0001,0314,0066,0220,0016,0154,0222,0147,0164, \
+0025,0221,0023,0030,0121,0120,0372,0146,0370,0127,0025,0056,0144,0061,0304,0312, \
+0062,0362,0102,0243,0114,0103,0012,0131,0044,0130,0207,0066,0057,0070,0024,0064, \
+0135,0240,0346,0356,0212,0134,0140,0054,0130,0226,0214,0013,0325,0160,0013,0045, \
+0113,0342,0140,0157,0045,0060,0271,0130,0233,0124,0304,0074,0071,0303,0100,0154, \
+0162,0027,0054,0211,0166,0356,0073,0222,0164,0143,0112,0274,0222,0121,0021,0060, \
+0106,0325,0034,0074,0066,0347,0314,0252,0375,0376,0217,0047,0207,0232,0006,0227, \
+0302,0224,0166,0066,0244,0250,0276,0346,0224,0261,0110,0343,0004,0201,0034,0232, \
+0021,0067,0326,0310,0264,0310,0121,0153,0103,0251,0135,0160,0244,0343,0172,0360, \
+0302,0262,0236,0377,0211,0076,0064,0207,0055,0015,0264,0327,0204,0220,0213,0343, \
+0226,0376,0104,0306,0165,0010,0250,0155,0263,0236,0174,0147,0162,0156,0236,0305, \
+0356,0240,0216,0104,0305,0015,0351,0245,0304,0126,0276,0375,0005,0161,0013,0213, \
+0253,0002,0310,0315,0063,0327,0006,0261,0221,0027,0226,0002,0122,0054,0200,0351, \
+0024,0015,0150,0111,0036,0045,0303,0210,0143,0050,0224,0126,0221,0102,0306,0333, \
+0342,0201,0155,0170,0254,0047,0306,0076,0000,0157,0003,0150,0162,0100,0103,0371, \
+0274,0315,0117,0056,0016,0036,0315,0112,0065,0360,0032,0324,0261,0001,0276,0014, \
+0147,0147,0011,0271,0261,0252,0005,0232,0040,0033,0032,0136,0216,0126,0344,0370, \
+0131,0013,0135,0300,0212,0060,0235,0330,0353,0103,0154,0206,0334,0104,0230,0265, \
+0364,0060,0343,0074,0246,0004,0254,0375,0270,0172,0361,0341,0341,0367,0176,0033, \
+0016,0306,0221,0273,0061,0363,0003,0342,0372,0274,0030,0046,0117,0131,0002,0157, \
+0334,0175,0354,0204,0237,0010,0360,0351,0377,0333,0264,0233,0264,0021,0350,0363, \
+0117,0147,0253,0303,0345,0310,0261,0275,0160,0020,0260,0172,0324,0060,0342,0343, \
+0367,0375,0352,0300,0216,0041,0125,0240,0025,0276,0266,0046,0343,0043,0324,0330, \
+0007,0023,0337,0010,0260,0364,0227,0120,0337,0074,0155,0112,0151,0107,0363,0036, \
+0022,0222,0174,0154,0066,0075,0324,0340,0000,0172,0303,0306,0347,0346,0224,0057, \
+0345,0140,0266,0371,0325,0017,0030,0371,0170,0260,0343,0323,0003,0233,0120,0224, \
+0223,0244,0130,0101,0151,0110,0266,0140,0074,0017,0055,0025,0322,0014,0300,0333, \
+0127,0007,0035,0307,0367,0174,0052,0173,0115,0277,0102,0050,0202,0002,0050,0213, \
+0001,0221,0030,0042,0112,0315,0301,0300,0144,0121,0140,0251,0013,0267,0076,0170, \
+0157,0017,0172,0043,0333,0214,0207,0011,0017,0352,0220,0110,0020,0015,0167,0171, \
+0261,0044,0024,0343,0034,0274,0264,0260,0366,0227,0017,0145,0227,0143,0245,0274, \
+0022,0327,0237,0223,0115,0222,0176,0242,0044,0073,0217,0364,0366,0366,0157,0252, \
+0212,0222,0276,0213,0061,0314,0156,0114,0107,0251,0054,0202,0044,0355,0154,0323, \
+0331,0312,0123,0200,0301,0205,0067,0106,0023,0307,0212,0213,0066,0017,0313,0150, \
+0120,0112,0141,0325,0030,0236,0215,0364,0067,0176,0072,0152,0035,0030,0227,0051, \
+0214,0251,0231,0047,0342,0311,0000,0226,0223,0151,0052,0235,0320,0151,0307,0225, \
+0376,0155,0101,0147,0271,0236,0206,0214,0263,0362,0327,0154,0325,0026,0140,0350, \
+0306,0041,0142,0134,0041,0316,0012,0313,0033,0026,0337,0103,0352,0013,0202,0361, \
+0222,0023,0263,0112,0125,0070,0246,0011,0136,0113,0167,0101,0240,0237,0144,0102, \
+0321,0026,0211,0045,0252,0017,0360,0076,0060,0121,0275,0201,0374,0344,0203,0353, \
+0074,0135,0103,0362,0140,0376,0334,0216,0232,0047,0031,0351,0153,0046,0350,0036, \
+0011,0177,0175,0044,0244,0176,0176,0047,0273,0031,0351,0321,0351,0371,0365,0255, \
+0104,0170,0214,0074,0113,0001,0003,0004,0276,0206,0057,0261,0167,0016,0102,0010, \
+0227,0064,0250,0243,0107,0255,0155,0300,0330,0136,0145,0036,0170,0131,0150,0041, \
+0051,0121,0312,0251,0244,0002,0024,0023,0226,0004,0302,0224,0011,0143,0014,0111, \
+0026,0264,0350,0134,0041,0060,0201,0271,0030,0063,0166,0261,0065,0201,0102,0202, \
+0010,0332,0257,0234,0323,0035,0334,0101,0174,0255,0072,0340,0252,0225,0355,0141, \
+0246,0275,0370,0340,0110,0010,0272,0104,0325,0203,0237,0170,0320,0006,0210,0003, \
+0345,0201,0242,0132,0026,0167,0346,0351,0303,0241,0102,0330,0310,0335,0231,0101, \
+0370,0261,0075,0273,0066,0135,0366,0374,0136,0372,0217,0371,0207,0300,0055,0207, \
+0267,0325,0211,0205,0164,0276,0015,0252,0311,0353,0370,0325,0301,0270,0352,0314, \
+0177,0374,0135,0311,0024,0341,0102,0100,0142,0242,0313,0310, \
diff --git a/include/applets.src.h b/include/applets.src.h
index 29ab167..7dbd4c7 100644
--- a/include/applets.src.h
+++ b/include/applets.src.h
@@ -52,6 +52,12 @@ s - suid type:
# define APPLET_NOEXEC(name,main,l,s,name2) LINK l name
# define APPLET_NOFORK(name,main,l,s,name2) LINK l name
+#elif defined(MAKE_SUID)
+# define APPLET(name,l,s) SUID s l name
+# define APPLET_ODDNAME(name,main,l,s,name2) SUID s l name
+# define APPLET_NOEXEC(name,main,l,s,name2) SUID s l name
+# define APPLET_NOFORK(name,main,l,s,name2) SUID s l name
+
#else
static struct bb_applet applets[] = { /* name, main, location, need_suid */
# define APPLET(name,l,s) { #name, #name, l, s },
@@ -73,16 +79,13 @@ IF_ACPID(APPLET(acpid, BB_DIR_SBIN, BB_SUID_DROP))
IF_ADDGROUP(APPLET(addgroup, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_ADDUSER(APPLET(adduser, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_ADJTIMEX(APPLET(adjtimex, BB_DIR_SBIN, BB_SUID_DROP))
-IF_AR(APPLET(ar, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_ARP(APPLET(arp, BB_DIR_SBIN, BB_SUID_DROP))
IF_ARPING(APPLET(arping, BB_DIR_USR_SBIN, BB_SUID_DROP))
-IF_AWK(APPLET_NOEXEC(awk, awk, BB_DIR_USR_BIN, BB_SUID_DROP, awk))
IF_BASENAME(APPLET_NOFORK(basename, basename, BB_DIR_USR_BIN, BB_SUID_DROP, basename))
IF_BBCONFIG(APPLET(bbconfig, BB_DIR_BIN, BB_SUID_DROP))
IF_BEEP(APPLET(beep, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_BLKID(APPLET(blkid, BB_DIR_SBIN, BB_SUID_DROP))
IF_BRCTL(APPLET(brctl, BB_DIR_USR_SBIN, BB_SUID_DROP))
-IF_BZIP2(APPLET(bzip2, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_CAL(APPLET(cal, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_CAT(APPLET_NOFORK(cat, cat, BB_DIR_BIN, BB_SUID_DROP, cat))
IF_CATV(APPLET(catv, BB_DIR_BIN, BB_SUID_DROP))
@@ -99,10 +102,8 @@ IF_CHRT(APPLET(chrt, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_CHVT(APPLET(chvt, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_CKSUM(APPLET_NOEXEC(cksum, cksum, BB_DIR_USR_BIN, BB_SUID_DROP, cksum))
IF_CLEAR(APPLET(clear, BB_DIR_USR_BIN, BB_SUID_DROP))
-IF_CMP(APPLET(cmp, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_COMM(APPLET(comm, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_CP(APPLET_NOEXEC(cp, cp, BB_DIR_BIN, BB_SUID_DROP, cp))
-IF_CPIO(APPLET(cpio, BB_DIR_BIN, BB_SUID_DROP))
IF_CROND(APPLET(crond, BB_DIR_USR_SBIN, BB_SUID_DROP))
/* Needs to be run by root or be suid root - needs to change /var/spool/cron* files: */
IF_CRONTAB(APPLET(crontab, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
@@ -117,21 +118,17 @@ IF_DEVFSD(APPLET(devfsd, BB_DIR_SBIN, BB_SUID_DROP))
IF_DEVMEM(APPLET(devmem, BB_DIR_SBIN, BB_SUID_DROP))
IF_DF(APPLET(df, BB_DIR_BIN, BB_SUID_DROP))
IF_DHCPRELAY(APPLET(dhcprelay, BB_DIR_USR_SBIN, BB_SUID_DROP))
-IF_DIFF(APPLET(diff, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_DIRNAME(APPLET_NOFORK(dirname, dirname, BB_DIR_USR_BIN, BB_SUID_DROP, dirname))
IF_DMESG(APPLET(dmesg, BB_DIR_BIN, BB_SUID_DROP))
IF_DNSD(APPLET(dnsd, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_HOSTNAME(APPLET_ODDNAME(dnsdomainname, hostname, BB_DIR_BIN, BB_SUID_DROP, dnsdomainname))
IF_DOS2UNIX(APPLET_NOEXEC(dos2unix, dos2unix, BB_DIR_USR_BIN, BB_SUID_DROP, dos2unix))
-IF_DPKG(APPLET(dpkg, BB_DIR_USR_BIN, BB_SUID_DROP))
-IF_DPKG_DEB(APPLET_ODDNAME(dpkg-deb, dpkg_deb, BB_DIR_USR_BIN, BB_SUID_DROP, dpkg_deb))
IF_DU(APPLET(du, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_DUMPKMAP(APPLET(dumpkmap, BB_DIR_BIN, BB_SUID_DROP))
IF_DUMPLEASES(APPLET(dumpleases, BB_DIR_USR_BIN, BB_SUID_DROP))
//IF_E2FSCK(APPLET(e2fsck, BB_DIR_SBIN, BB_SUID_DROP))
//IF_E2LABEL(APPLET_ODDNAME(e2label, tune2fs, BB_DIR_SBIN, BB_SUID_DROP, e2label))
IF_ECHO(APPLET_NOFORK(echo, echo, BB_DIR_BIN, BB_SUID_DROP, echo))
-IF_ED(APPLET(ed, BB_DIR_BIN, BB_SUID_DROP))
IF_EJECT(APPLET(eject, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_ENV(APPLET_NOEXEC(env, env, BB_DIR_USR_BIN, BB_SUID_DROP, env))
IF_ENVDIR(APPLET_ODDNAME(envdir, chpst, BB_DIR_USR_BIN, BB_SUID_DROP, envdir))
@@ -170,8 +167,6 @@ IF_GETENFORCE(APPLET(getenforce, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_GETOPT(APPLET(getopt, BB_DIR_BIN, BB_SUID_DROP))
IF_GETSEBOOL(APPLET(getsebool, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_GETTY(APPLET(getty, BB_DIR_SBIN, BB_SUID_DROP))
-IF_GUNZIP(APPLET(gunzip, BB_DIR_BIN, BB_SUID_DROP))
-IF_GZIP(APPLET(gzip, BB_DIR_BIN, BB_SUID_DROP))
IF_HD(APPLET_NOEXEC(hd, hexdump, BB_DIR_USR_BIN, BB_SUID_DROP, hd))
IF_HDPARM(APPLET(hdparm, BB_DIR_SBIN, BB_SUID_DROP))
IF_HEAD(APPLET_NOEXEC(head, head, BB_DIR_USR_BIN, BB_SUID_DROP, head))
@@ -230,13 +225,9 @@ IF_LS(APPLET_NOEXEC(ls, ls, BB_DIR_BIN, BB_SUID_DROP, ls))
IF_LSATTR(APPLET(lsattr, BB_DIR_BIN, BB_SUID_DROP))
IF_LSPCI(APPLET(lspci, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_LSUSB(APPLET(lsusb, BB_DIR_USR_BIN, BB_SUID_DROP))
-IF_UNLZMA(APPLET_ODDNAME(lzcat, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzcat))
-IF_LZMA(APPLET_ODDNAME(lzma, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzma))
-IF_LZOP(APPLET(lzop, BB_DIR_BIN, BB_SUID_DROP))
-IF_LZOP(APPLET_ODDNAME(lzopcat, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, lzopcat))
IF_MAKEDEVS(APPLET(makedevs, BB_DIR_SBIN, BB_SUID_DROP))
IF_MAKEMIME(APPLET(makemime, BB_DIR_BIN, BB_SUID_DROP))
-IF_MAN(APPLET(man, BB_DIR_SBIN, BB_SUID_DROP))
+IF_MAN(APPLET(man, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_MATCHPATHCON(APPLET(matchpathcon, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_MD5SUM(APPLET_NOEXEC(md5sum, md5_sha1_sum, BB_DIR_USR_BIN, BB_SUID_DROP, md5sum))
IF_MICROCOM(APPLET(microcom, BB_DIR_USR_BIN, BB_SUID_DROP))
@@ -297,12 +288,9 @@ IF_RENICE(APPLET(renice, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_RESET(APPLET(reset, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_RESIZE(APPLET(resize, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_RESTORECON(APPLET_ODDNAME(restorecon, setfiles, BB_DIR_SBIN, BB_SUID_DROP, restorecon))
-IF_RFKILL(APPLET(rfkill, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_RM(APPLET_NOFORK(rm, rm, BB_DIR_BIN, BB_SUID_DROP, rm))
IF_RMDIR(APPLET_NOFORK(rmdir, rmdir, BB_DIR_BIN, BB_SUID_DROP, rmdir))
IF_ROUTE(APPLET(route, BB_DIR_SBIN, BB_SUID_DROP))
-IF_RPM(APPLET(rpm, BB_DIR_BIN, BB_SUID_DROP))
-IF_RPM2CPIO(APPLET(rpm2cpio, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_RTCWAKE(APPLET(rtcwake, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_RUN_PARTS(APPLET_ODDNAME(run-parts, run_parts, BB_DIR_BIN, BB_SUID_DROP, run_parts))
IF_RUNCON(APPLET(runcon, BB_DIR_USR_BIN, BB_SUID_DROP))
@@ -312,7 +300,6 @@ IF_RUNSVDIR(APPLET(runsvdir, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_RX(APPLET(rx, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_SCRIPT(APPLET(script, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_SCRIPTREPLAY(APPLET(scriptreplay, BB_DIR_BIN, BB_SUID_DROP))
-IF_SED(APPLET(sed, BB_DIR_BIN, BB_SUID_DROP))
IF_SELINUXENABLED(APPLET(selinuxenabled, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_SENDMAIL(APPLET(sendmail, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_SEQ(APPLET_NOFORK(seq, seq, BB_DIR_USR_BIN, BB_SUID_DROP, seq))
@@ -356,7 +343,6 @@ IF_BB_SYSCTL(APPLET(sysctl, BB_DIR_SBIN, BB_SUID_DROP))
IF_SYSLOGD(APPLET(syslogd, BB_DIR_SBIN, BB_SUID_DROP))
IF_TAC(APPLET_NOEXEC(tac, tac, BB_DIR_USR_BIN, BB_SUID_DROP, tac))
IF_TAIL(APPLET(tail, BB_DIR_USR_BIN, BB_SUID_DROP))
-IF_TAR(APPLET(tar, BB_DIR_BIN, BB_SUID_DROP))
IF_TASKSET(APPLET(taskset, BB_DIR_USR_BIN, BB_SUID_DROP))
/* IF_TC(APPLET(tc, BB_DIR_SBIN, BB_SUID_DROP)) */
IF_TCPSVD(APPLET_ODDNAME(tcpsvd, tcpudpsvd, BB_DIR_USR_BIN, BB_SUID_DROP, tcpsvd))
@@ -385,14 +371,9 @@ IF_UDHCPD(APPLET(udhcpd, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_UDPSVD(APPLET_ODDNAME(udpsvd, tcpudpsvd, BB_DIR_USR_BIN, BB_SUID_DROP, udpsvd))
IF_UMOUNT(APPLET(umount, BB_DIR_BIN, BB_SUID_DROP))
IF_UNAME(APPLET(uname, BB_DIR_BIN, BB_SUID_DROP))
-IF_UNCOMPRESS(APPLET(uncompress, BB_DIR_BIN, BB_SUID_DROP))
IF_UNEXPAND(APPLET_ODDNAME(unexpand, expand, BB_DIR_USR_BIN, BB_SUID_DROP, unexpand))
IF_UNIQ(APPLET(uniq, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_UNIX2DOS(APPLET_NOEXEC(unix2dos, dos2unix, BB_DIR_USR_BIN, BB_SUID_DROP, unix2dos))
-IF_UNXZ(APPLET(unxz, BB_DIR_USR_BIN, BB_SUID_DROP))
-IF_UNLZMA(APPLET(unlzma, BB_DIR_USR_BIN, BB_SUID_DROP))
-IF_LZOP(APPLET_ODDNAME(unlzop, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, unlzop))
-IF_UNZIP(APPLET(unzip, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_UPTIME(APPLET(uptime, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_USLEEP(APPLET_NOFORK(usleep, usleep, BB_DIR_BIN, BB_SUID_DROP, usleep))
IF_UUDECODE(APPLET(uudecode, BB_DIR_USR_BIN, BB_SUID_DROP))
@@ -401,21 +382,17 @@ IF_VCONFIG(APPLET(vconfig, BB_DIR_SBIN, BB_SUID_DROP))
/* Needs to be run by root or be suid root - needs to change uid and gid: */
IF_VLOCK(APPLET(vlock, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
IF_VOLNAME(APPLET(volname, BB_DIR_USR_BIN, BB_SUID_DROP))
-/* Needs to be run by root or be suid root - needs to write to /dev/TTY: */
-IF_WALL(APPLET(wall, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
IF_WATCH(APPLET(watch, BB_DIR_BIN, BB_SUID_DROP))
IF_WATCHDOG(APPLET(watchdog, BB_DIR_SBIN, BB_SUID_DROP))
IF_WC(APPLET(wc, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_WGET(APPLET(wget, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_WHICH(APPLET(which, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_WHOAMI(APPLET_NOFORK(whoami, whoami, BB_DIR_USR_BIN, BB_SUID_DROP, whoami))
-IF_UNXZ(APPLET_ODDNAME(xzcat, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xzcat))
-IF_XZ(APPLET_ODDNAME(xz, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xz))
IF_YES(APPLET_NOFORK(yes, yes, BB_DIR_USR_BIN, BB_SUID_DROP, yes))
-IF_GUNZIP(APPLET_ODDNAME(zcat, gunzip, BB_DIR_BIN, BB_SUID_DROP, zcat))
IF_ZCIP(APPLET(zcip, BB_DIR_SBIN, BB_SUID_DROP))
-#if !defined(PROTOTYPES) && !defined(NAME_MAIN_CNAME) && !defined(MAKE_USAGE)
+#if !defined(PROTOTYPES) && !defined(NAME_MAIN_CNAME) && !defined(MAKE_USAGE) \
+ && !defined(MAKE_LINKS) && !defined(MAKE_SUID)
};
#endif
diff --git a/include/bb_archive.h b/include/bb_archive.h
index a7a2a11..b82cfd8 100644
--- a/include/bb_archive.h
+++ b/include/bb_archive.h
@@ -122,6 +122,9 @@ typedef struct archive_handle_t {
#define ARCHIVE_NUMERIC_OWNER (1 << 7)
#define ARCHIVE_O_TRUNC (1 << 8)
#define ARCHIVE_REMEMBER_NAMES (1 << 9)
+#if ENABLE_RPM
+#define ARCHIVE_REPLACE_VIA_RENAME (1 << 10)
+#endif
/* POSIX tar Header Block, from POSIX 1003.1-1990 */
diff --git a/include/bb_e2fs_defs.h b/include/bb_e2fs_defs.h
index b400f8c..3f5e3c4 100644
--- a/include/bb_e2fs_defs.h
+++ b/include/bb_e2fs_defs.h
@@ -442,7 +442,7 @@ struct ext2_super_block {
uint32_t s_reserved[162]; /* Padding to the end of the block */
};
struct BUG_ext2_super_block {
- char bug[sizeof(struct ext2_super_block) == 1024 ? 1 : -1];
+ char bug[sizeof(struct ext2_super_block) == 1024 ? 1 : -1];
};
/*
diff --git a/include/libbb.h b/include/libbb.h
index 18d3e29..c678d58 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -45,12 +45,12 @@
#include <stdarg.h>
#include <stddef.h>
#include <string.h>
-/* There are two incompatible basename's, let not use them! */
+/* There are two incompatible basename's, let's not use them! */
/* See the dirname/basename man page for details */
#include <libgen.h> /* dirname,basename */
#undef basename
#define basename dont_use_basename
-#include <sys/poll.h>
+#include <poll.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <sys/socket.h>
@@ -410,6 +410,7 @@ char *bb_get_last_path_component_nostrip(const char *path) FAST_FUNC;
const char *bb_basename(const char *name) FAST_FUNC;
/* NB: can violate const-ness (similarly to strchr) */
char *last_char_is(const char *s, int c) FAST_FUNC;
+const char* endofname(const char *name) FAST_FUNC;
void ndelay_on(int fd) FAST_FUNC;
void ndelay_off(int fd) FAST_FUNC;
@@ -484,6 +485,8 @@ void record_signo(int signo); /* not FAST_FUNC! */
void xsetgid(gid_t gid) FAST_FUNC;
void xsetuid(uid_t uid) FAST_FUNC;
+void xsetegid(gid_t egid) FAST_FUNC;
+void xseteuid(uid_t euid) FAST_FUNC;
void xchdir(const char *path) FAST_FUNC;
void xchroot(const char *path) FAST_FUNC;
void xsetenv(const char *key, const char *value) FAST_FUNC;
@@ -492,11 +495,12 @@ void bb_unsetenv_and_free(char *key) FAST_FUNC;
void xunlink(const char *pathname) FAST_FUNC;
void xstat(const char *pathname, struct stat *buf) FAST_FUNC;
void xfstat(int fd, struct stat *buf, const char *errmsg) FAST_FUNC;
+int open3_or_warn(const char *pathname, int flags, int mode) FAST_FUNC;
+int open_or_warn(const char *pathname, int flags) FAST_FUNC;
+int xopen3(const char *pathname, int flags, int mode) FAST_FUNC;
int xopen(const char *pathname, int flags) FAST_FUNC;
int xopen_nonblocking(const char *pathname) FAST_FUNC;
-int xopen3(const char *pathname, int flags, int mode) FAST_FUNC;
-int open_or_warn(const char *pathname, int flags) FAST_FUNC;
-int open3_or_warn(const char *pathname, int flags, int mode) FAST_FUNC;
+int xopen_as_uid_gid(const char *pathname, int flags, uid_t u, gid_t g) FAST_FUNC;
int open_or_warn_stdin(const char *pathname) FAST_FUNC;
int xopen_stdin(const char *pathname) FAST_FUNC;
void xrename(const char *oldpath, const char *newpath) FAST_FUNC;
@@ -506,9 +510,9 @@ int xmkstemp(char *template) FAST_FUNC;
off_t fdlength(int fd) FAST_FUNC;
uoff_t FAST_FUNC get_volume_size_in_bytes(int fd,
- const char *override,
- unsigned override_units,
- int extend);
+ const char *override,
+ unsigned override_units,
+ int extend);
void xpipe(int filedes[2]) FAST_FUNC;
/* In this form code with pipes is much more readable */
@@ -546,7 +550,8 @@ struct BUG_too_small {
void parse_datestr(const char *date_str, struct tm *ptm) FAST_FUNC;
time_t validate_tm_time(const char *date_str, struct tm *ptm) FAST_FUNC;
-
+char *strftime_HHMMSS(char *buf, unsigned len, time_t *tp) FAST_FUNC;
+char *strftime_YYYYMMDDHHMMSS(char *buf, unsigned len, time_t *tp) FAST_FUNC;
int xsocket(int domain, int type, int protocol) FAST_FUNC;
void xbind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen) FAST_FUNC;
@@ -700,6 +705,13 @@ const char* FAST_FUNC printable_string(uni_stat_t *stats, const char *str);
* else it is printed as-is (except for ch = 0x9b) */
enum { PRINTABLE_META = 0x100 };
void fputc_printable(int ch, FILE *file) FAST_FUNC;
+/* Return a string that is the printable representation of character ch.
+ * Buffer must hold at least four characters. */
+enum {
+ VISIBLE_ENDLINE = 1 << 0,
+ VISIBLE_SHOW_TABS = 1 << 1,
+};
+void visible(unsigned ch, char *buf, int flags) FAST_FUNC;
/* dmalloc will redefine these to it's own implementation. It is safe
* to have the prototypes here unconditionally. */
@@ -830,8 +842,8 @@ char *itoa(int n) FAST_FUNC;
char *utoa_to_buf(unsigned n, char *buf, unsigned buflen) FAST_FUNC;
char *itoa_to_buf(int n, char *buf, unsigned buflen) FAST_FUNC;
/* Intelligent formatters of bignums */
-void smart_ulltoa4(unsigned long long ul, char buf[4], const char *scale) FAST_FUNC;
-void smart_ulltoa5(unsigned long long ul, char buf[5], const char *scale) FAST_FUNC;
+char *smart_ulltoa4(unsigned long long ul, char buf[4], const char *scale) FAST_FUNC;
+char *smart_ulltoa5(unsigned long long ul, char buf[5], const char *scale) FAST_FUNC;
/* If block_size == 0, display size without fractional part,
* else display (size * block_size) with one decimal digit.
* If display_unit == 0, show value no bigger than 1024 with suffix (K,M,G...),
@@ -854,6 +866,9 @@ struct suffix_mult {
char suffix[4];
unsigned mult;
};
+extern const struct suffix_mult bkm_suffixes[];
+#define km_suffixes (bkm_suffixes + 1)
+
#include "xatonum.h"
/* Specialized: */
@@ -1131,9 +1146,6 @@ void bb_displayroutes(int noresolve, int netstatfmt) FAST_FUNC;
/* Networking */
-int create_icmp_socket(void) FAST_FUNC;
-int create_icmp6_socket(void) FAST_FUNC;
-/* interface.c */
/* This structure defines protocol families and their handlers. */
struct aftype {
const char *name;
@@ -1162,6 +1174,7 @@ struct hwtype {
};
extern smallint interface_opt_a;
int display_interfaces(char *ifname) FAST_FUNC;
+int in_ether(const char *bufp, struct sockaddr *sap) FAST_FUNC;
#if ENABLE_FEATURE_HWIB
int in_ib(const char *bufp, struct sockaddr *sap) FAST_FUNC;
#else
@@ -1311,8 +1324,10 @@ int sd_listen_fds(void);
#define SETUP_ENV_CLEARENV (1 << 1)
#define SETUP_ENV_TO_TMP (1 << 2)
#define SETUP_ENV_NO_CHDIR (1 << 4)
-extern void setup_environment(const char *shell, int flags, const struct passwd *pw) FAST_FUNC;
-extern int correct_password(const struct passwd *pw) FAST_FUNC;
+void setup_environment(const char *shell, int flags, const struct passwd *pw) FAST_FUNC;
+void nuke_str(char *str) FAST_FUNC;
+int ask_and_check_password_extended(const struct passwd *pw, int timeout, const char *prompt) FAST_FUNC;
+int ask_and_check_password(const struct passwd *pw) FAST_FUNC;
/* Returns a malloced string */
#if !ENABLE_USE_BB_CRYPT
#define pw_encrypt(clear, salt, cleanup) pw_encrypt(clear, salt)
@@ -1458,7 +1473,7 @@ void read_key_ungets(char *buffer, const char *str, unsigned len) FAST_FUNC;
/* It's NOT just ENABLEd or disabled. It's a number: */
# if defined CONFIG_FEATURE_EDITING_HISTORY && CONFIG_FEATURE_EDITING_HISTORY > 0
# define MAX_HISTORY (CONFIG_FEATURE_EDITING_HISTORY + 0)
-unsigned size_from_HISTFILESIZE(const char *hp);
+unsigned size_from_HISTFILESIZE(const char *hp) FAST_FUNC;
# else
# define MAX_HISTORY 0
# endif
@@ -1500,6 +1515,7 @@ line_input_t *new_line_input_t(int flags) FAST_FUNC;
* >0 length of input string, including terminating '\n'
*/
int read_line_input(line_input_t *st, const char *prompt, char *command, int maxsize, int timeout) FAST_FUNC;
+void show_history(const line_input_t *st) FAST_FUNC;
# if ENABLE_FEATURE_EDITING_SAVE_ON_EXIT
void save_history(line_input_t *st);
# endif
@@ -1783,6 +1799,11 @@ extern struct globals *const ptr_to_globals;
(*(struct globals**)&ptr_to_globals) = (void*)(x); \
barrier(); \
} while (0)
+#define FREE_PTR_TO_GLOBALS() do { \
+ if (ENABLE_FEATURE_CLEAN_UP) { \
+ free(ptr_to_globals); \
+ } \
+} while (0)
/* You can change LIBBB_DEFAULT_LOGIN_SHELL, but don't use it,
* use bb_default_login_shell and following defines.
@@ -1832,21 +1853,37 @@ extern const char bb_default_login_shell[] ALIGN1;
# define VC_4 "/dev/ttyv3"
# define VC_5 "/dev/ttyv4"
# define VC_FORMAT "/dev/ttyv%d"
-# define LOOP_FORMAT "/dev/loop%d"
-# define LOOP_NAMESIZE (sizeof("/dev/loop") + sizeof(int)*3 + 1)
-# define LOOP_NAME "/dev/loop"
-# define FB_0 "/dev/fb0"
-
-#else //__GNU__
-/*Linux 2.6, normal names */
+#elif defined(__GNU__)
# define CURRENT_VC CURRENT_TTY
-# define VC_1 "/dev/tty0"
-# define VC_2 "/dev/tty1"
-# define VC_3 "/dev/tty2"
-# define VC_4 "/dev/tty3"
-# define VC_5 "/dev/tty4"
+# define VC_1 "/dev/tty1"
+# define VC_2 "/dev/tty2"
+# define VC_3 "/dev/tty3"
+# define VC_4 "/dev/tty4"
+# define VC_5 "/dev/tty5"
+# define VC_FORMAT "/dev/tty%d"
+#elif ENABLE_FEATURE_DEVFS
+/*Linux, obsolete devfs names */
+# define CURRENT_VC "/dev/vc/0"
+# define VC_1 "/dev/vc/1"
+# define VC_2 "/dev/vc/2"
+# define VC_3 "/dev/vc/3"
+# define VC_4 "/dev/vc/4"
+# define VC_5 "/dev/vc/5"
+# define VC_FORMAT "/dev/vc/%d"
+# define LOOP_FORMAT "/dev/loop/%u"
+# define LOOP_NAMESIZE (sizeof("/dev/loop/") + sizeof(int)*3 + 1)
+# define LOOP_NAME "/dev/loop/"
+# define FB_0 "/dev/fb/0"
+#else
+/*Linux, normal names */
+# define CURRENT_VC "/dev/tty0"
+# define VC_1 "/dev/tty1"
+# define VC_2 "/dev/tty2"
+# define VC_3 "/dev/tty3"
+# define VC_4 "/dev/tty4"
+# define VC_5 "/dev/tty5"
# define VC_FORMAT "/dev/tty%d"
-# define LOOP_FORMAT "/dev/loop%d"
+# define LOOP_FORMAT "/dev/loop%u"
# define LOOP_NAMESIZE (sizeof("/dev/loop") + sizeof(int)*3 + 1)
# define LOOP_NAME "/dev/loop"
# define FB_0 "/dev/fb0"
diff --git a/include/liblzo_interface.h b/include/liblzo_interface.h
index 9a84c0b..b7f1b63 100644
--- a/include/liblzo_interface.h
+++ b/include/liblzo_interface.h
@@ -30,7 +30,7 @@
/*
static void die_at(int line)
{
- bb_error_msg_and_die("internal error at %d", line);
+ bb_error_msg_and_die("internal error at %d", line);
}
#define assert(v) if (!(v)) die_at(__LINE__)
*/
diff --git a/include/platform.h b/include/platform.h
index 8a5cde4..4a0560c 100644
--- a/include/platform.h
+++ b/include/platform.h
@@ -214,6 +214,7 @@ typedef int bb__aliased_int FIX_ALIASING;
typedef long bb__aliased_long FIX_ALIASING;
typedef uint16_t bb__aliased_uint16_t FIX_ALIASING;
typedef uint32_t bb__aliased_uint32_t FIX_ALIASING;
+typedef uint64_t bb__aliased_uint64_t FIX_ALIASING;
/* NB: unaligned parameter should be a pointer, aligned one -
* a lvalue. This makes it more likely to not swap them by mistake
@@ -269,6 +270,12 @@ typedef unsigned smalluint;
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
+#ifdef __UCLIBC__
+# define UCLIBC_VERSION KERNEL_VERSION(__UCLIBC_MAJOR__, __UCLIBC_MINOR__, __UCLIBC_SUBLEVEL__)
+#else
+# define UCLIBC_VERSION 0
+#endif
+
/* ---- Miscellaneous --------------------------------------- */
@@ -311,8 +318,9 @@ typedef unsigned smalluint;
* for a mmu-less system.
*/
#if ENABLE_NOMMU || \
- (defined __UCLIBC__ && __UCLIBC_MAJOR__ >= 0 && __UCLIBC_MINOR__ >= 9 && \
- __UCLIBC_SUBLEVEL__ > 28 && !defined __ARCH_USE_MMU__)
+ (defined __UCLIBC__ && \
+ UCLIBC_VERSION > KERNEL_VERSION(0, 9, 28) && \
+ !defined __ARCH_USE_MMU__)
# define BB_MMU 0
# define USE_FOR_NOMMU(...) __VA_ARGS__
# define USE_FOR_MMU(...)
@@ -379,13 +387,8 @@ typedef unsigned smalluint;
#define HAVE_NET_ETHERNET_H 1
#define HAVE_SYS_STATFS_H 1
-#if defined(__UCLIBC_MAJOR__)
-# if __UCLIBC_MAJOR__ == 0 \
- && ( __UCLIBC_MINOR__ < 9 \
- || (__UCLIBC_MINOR__ == 9 && __UCLIBC_SUBLEVEL__ < 32) \
- )
-# undef HAVE_STRVERSCMP
-# endif
+#if defined(__UCLIBC__) && UCLIBC_VERSION < KERNEL_VERSION(0, 9, 32)
+# undef HAVE_STRVERSCMP
#endif
#if defined(__dietlibc__)
@@ -437,7 +440,7 @@ typedef unsigned smalluint;
# undef HAVE_UNLOCKED_LINE_OPS
#endif
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__APPLE__)
# undef HAVE_STRCHRNUL
#endif
diff --git a/init/bootchartd.c b/init/bootchartd.c
index 9fd6233..c7388c9 100644
--- a/init/bootchartd.c
+++ b/init/bootchartd.c
@@ -60,6 +60,12 @@
# endif
#endif
+#if !ENABLE_TAR && !ENABLE_WERROR
+# warning Note: bootchartd requires tar command, but you did not select it.
+#elif !ENABLE_FEATURE_SEAMLESS_GZ && !ENABLE_WERROR
+# warning Note: bootchartd requires tar -z support, but you did not select it.
+#endif
+
#define BC_VERSION_STR "0.8"
/* For debugging, set to 0:
diff --git a/init/init.c b/init/init.c
index b84bdcc..d29328c 100644
--- a/init/init.c
+++ b/init/init.c
@@ -9,11 +9,6 @@
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
-//applet:IF_INIT(APPLET(init, BB_DIR_SBIN, BB_SUID_DROP))
-//applet:IF_FEATURE_INITRD(APPLET_ODDNAME(linuxrc, init, BB_DIR_ROOT, BB_SUID_DROP, linuxrc))
-
-//kbuild:lib-$(CONFIG_INIT) += init.o
-
//config:config INIT
//config: bool "init"
//config: default y
@@ -108,6 +103,11 @@
//config: Note that on Linux, init attempts to detect serial terminal and
//config: sets TERM to "vt102" if one is found.
+//applet:IF_INIT(APPLET(init, BB_DIR_SBIN, BB_SUID_DROP))
+//applet:IF_FEATURE_INITRD(APPLET_ODDNAME(linuxrc, init, BB_DIR_ROOT, BB_SUID_DROP, linuxrc))
+
+//kbuild:lib-$(CONFIG_INIT) += init.o
+
#define DEBUG_SEGV_HANDLER 0
#include "libbb.h"
@@ -140,12 +140,11 @@
* not fully functional init by switching it on! */
#define DEBUG_INIT 0
-#define COMMAND_SIZE 256
#define CONSOLE_NAME_SIZE 32
/* Default sysinit script. */
#ifndef INIT_SCRIPT
-#define INIT_SCRIPT "/etc/init.d/rcS"
+# define INIT_SCRIPT "/etc/init.d/rcS"
#endif
/* Each type of actions can appear many times. They will be
@@ -195,7 +194,7 @@ struct init_action {
pid_t pid;
uint8_t action_type;
char terminal[CONSOLE_NAME_SIZE];
- char command[COMMAND_SIZE];
+ char command[1];
};
static struct init_action *init_action_list = NULL;
@@ -223,8 +222,8 @@ static void message(int where, const char *fmt, ...)
msg[0] = '\r';
va_start(arguments, fmt);
l = 1 + vsnprintf(msg + 1, sizeof(msg) - 2, fmt, arguments);
- if (l > sizeof(msg) - 1)
- l = sizeof(msg) - 1;
+ if (l > sizeof(msg) - 2)
+ l = sizeof(msg) - 2;
va_end(arguments);
#if ENABLE_FEATURE_INIT_SYSLOG
@@ -398,7 +397,7 @@ static void reset_sighandlers_and_unblock_sigs(void)
}
/* Wrapper around exec:
- * Takes string (max COMMAND_SIZE chars).
+ * Takes string.
* If chars like '>' detected, execs '[-]/bin/sh -c "exec ......."'.
* Otherwise splits words on whitespace, deals with leading dash,
* and uses plain exec().
@@ -406,10 +405,15 @@ static void reset_sighandlers_and_unblock_sigs(void)
*/
static void init_exec(const char *command)
{
- char *cmd[COMMAND_SIZE / 2];
- char buf[COMMAND_SIZE + 6]; /* COMMAND_SIZE+strlen("exec ")+1 */
- int dash = (command[0] == '-' /* maybe? && command[1] == '/' */);
-
+ /* +8 allows to write VLA sizes below more efficiently: */
+ unsigned command_size = strlen(command) + 8;
+ /* strlen(command) + strlen("exec ")+1: */
+ char buf[command_size];
+ /* strlen(command) / 2 + 4: */
+ char *cmd[command_size / 2];
+ int dash;
+
+ dash = (command[0] == '-' /* maybe? && command[1] == '/' */);
command += dash;
/* See if any special /bin/sh requiring characters are present */
@@ -626,21 +630,21 @@ static void new_init_action(uint8_t action_type, const char *command, const char
nextp = &a->next;
}
- a = xzalloc(sizeof(*a));
+ a = xzalloc(sizeof(*a) + strlen(command));
/* Append to the end of the list */
append:
*nextp = a;
a->action_type = action_type;
- safe_strncpy(a->command, command, sizeof(a->command));
+ strcpy(a->command, command);
safe_strncpy(a->terminal, cons, sizeof(a->terminal));
- dbg_message(L_LOG | L_CONSOLE, "command='%s' action=%d tty='%s'\n",
+ dbg_message(L_LOG | L_CONSOLE, "command='%s' action=%x tty='%s'\n",
a->command, a->action_type, a->terminal);
}
/* NOTE that if CONFIG_FEATURE_USE_INITTAB is NOT defined,
* then parse_inittab() simply adds in some default
- * actions(i.e., runs INIT_SCRIPT and then starts a pair
+ * actions (i.e., runs INIT_SCRIPT and then starts a pair
* of "askfirst" shells). If CONFIG_FEATURE_USE_INITTAB
* _is_ defined, but /etc/inittab is missing, this
* results in the same set of default behaviors.
@@ -655,23 +659,22 @@ static void parse_inittab(void)
#endif
{
/* No inittab file - set up some default behavior */
- /* Reboot on Ctrl-Alt-Del */
- new_init_action(CTRLALTDEL, "reboot", "");
- /* Umount all filesystems on halt/reboot */
- new_init_action(SHUTDOWN, "umount -a -r", "");
- /* Swapoff on halt/reboot */
- if (ENABLE_SWAPONOFF)
- new_init_action(SHUTDOWN, "swapoff -a", "");
- /* Prepare to restart init when a QUIT is received */
- new_init_action(RESTART, "init", "");
+ /* Sysinit */
+ new_init_action(SYSINIT, INIT_SCRIPT, "");
/* Askfirst shell on tty1-4 */
new_init_action(ASKFIRST, bb_default_login_shell, "");
//TODO: VC_1 instead of ""? "" is console -> ctty problems -> angry users
new_init_action(ASKFIRST, bb_default_login_shell, VC_2);
new_init_action(ASKFIRST, bb_default_login_shell, VC_3);
new_init_action(ASKFIRST, bb_default_login_shell, VC_4);
- /* sysinit */
- new_init_action(SYSINIT, INIT_SCRIPT, "");
+ /* Reboot on Ctrl-Alt-Del */
+ new_init_action(CTRLALTDEL, "reboot", "");
+ /* Umount all filesystems on halt/reboot */
+ new_init_action(SHUTDOWN, "umount -a -r", "");
+ /* Swapoff on halt/reboot */
+ new_init_action(SHUTDOWN, "swapoff -a", "");
+ /* Restart init when a QUIT is received */
+ new_init_action(RESTART, "init", "");
return;
}
@@ -786,7 +789,7 @@ static void run_shutdown_and_kill_processes(void)
* and only one will be remembered and acted upon.
*/
-/* The SIGUSR[12]/SIGTERM handler */
+/* The SIGPWR/SIGUSR[12]/SIGTERM handler */
static void halt_reboot_pwoff(int sig) NORETURN;
static void halt_reboot_pwoff(int sig)
{
@@ -931,10 +934,17 @@ static void reload_inittab(void)
/* Remove stale entries and SYSINIT entries.
* We never rerun SYSINIT entries anyway,
- * removing them too saves a few bytes */
+ * removing them too saves a few bytes
+ */
nextp = &init_action_list;
while ((a = *nextp) != NULL) {
- if ((a->action_type & ~SYSINIT) == 0) {
+ /*
+ * Why pid == 0 check?
+ * Process can be removed from inittab and added *later*.
+ * If we delete its entry but process still runs,
+ * duplicate is spawned when the entry is re-added.
+ */
+ if ((a->action_type & ~SYSINIT) == 0 && a->pid == 0) {
*nextp = a->next;
free(a);
} else {
@@ -1058,10 +1068,13 @@ int init_main(int argc UNUSED_PARAM, char **argv)
message(L_CONSOLE | L_LOG, "init started: %s", bb_banner);
#endif
+#if 0
+/* It's 2013, does anyone really still depend on this? */
+/* If you do, consider adding swapon to sysinot actions then! */
/* struct sysinfo is linux-specific */
-#ifdef __linux__
+# ifdef __linux__
/* Make sure there is enough memory to do something useful. */
- if (ENABLE_SWAPONOFF) {
+ /*if (ENABLE_SWAPONOFF) - WRONG: we may have non-bbox swapon*/ {
struct sysinfo info;
if (sysinfo(&info) == 0
@@ -1075,6 +1088,7 @@ int init_main(int argc UNUSED_PARAM, char **argv)
run_actions(SYSINIT); /* wait and removing */
}
}
+# endif
#endif
/* Check if we are supposed to be in single user mode */
@@ -1089,8 +1103,8 @@ int init_main(int argc UNUSED_PARAM, char **argv)
/* NOTE that if CONFIG_FEATURE_USE_INITTAB is NOT defined,
* then parse_inittab() simply adds in some default
- * actions(i.e., INIT_SCRIPT and a pair
- * of "askfirst" shells */
+ * actions (i.e., INIT_SCRIPT and a pair
+ * of "askfirst" shells) */
parse_inittab();
}
@@ -1114,13 +1128,14 @@ int init_main(int argc UNUSED_PARAM, char **argv)
strncpy(argv[0], "init", strlen(argv[0]));
/* Wipe argv[1]-argv[N] so they don't clutter the ps listing */
while (*++argv)
- memset(*argv, 0, strlen(*argv));
+ nuke_str(*argv);
/* Set up signal handlers */
if (!DEBUG_INIT) {
struct sigaction sa;
bb_signals(0
+ + (1 << SIGPWR) /* halt */
+ (1 << SIGUSR1) /* halt */
+ (1 << SIGTERM) /* reboot */
+ (1 << SIGUSR2) /* poweroff */
@@ -1216,7 +1231,14 @@ int init_main(int argc UNUSED_PARAM, char **argv)
//usage:#define init_trivial_usage
//usage: ""
//usage:#define init_full_usage "\n\n"
-//usage: "Init is the parent of all processes"
+//usage: "Init is the first process started during boot. It never exits."
+//usage: IF_FEATURE_USE_INITTAB(
+//usage: "\n""It (re)spawns children according to /etc/inittab."
+//usage: )
+//usage: IF_NOT_FEATURE_USE_INITTAB(
+//usage: "\n""This version of init doesn't use /etc/inittab,"
+//usage: "\n""has fixed set of processed to run."
+//usage: )
//usage:
//usage:#define init_notes_usage
//usage: "This version of init is designed to be run only by the kernel.\n"
@@ -1234,9 +1256,6 @@ int init_main(int argc UNUSED_PARAM, char **argv)
//usage: " ::shutdown:/sbin/swapoff -a\n"
//usage: " ::shutdown:/bin/umount -a -r\n"
//usage: " ::restart:/sbin/init\n"
-//usage: "\n"
-//usage: "if it detects that /dev/console is _not_ a serial console, it will also run:\n"
-//usage: "\n"
//usage: " tty2::askfirst:/bin/sh\n"
//usage: " tty3::askfirst:/bin/sh\n"
//usage: " tty4::askfirst:/bin/sh\n"
@@ -1252,11 +1271,7 @@ int init_main(int argc UNUSED_PARAM, char **argv)
//usage: " the specified process to run on. The contents of this field are\n"
//usage: " appended to \"/dev/\" and used as-is. There is no need for this field to\n"
//usage: " be unique, although if it isn't you may have strange results. If this\n"
-//usage: " field is left blank, the controlling tty is set to the console. Also\n"
-//usage: " note that if BusyBox detects that a serial console is in use, then only\n"
-//usage: " entries whose controlling tty is either the serial console or /dev/null\n"
-//usage: " will be run. BusyBox init does nothing with utmp. We don't need no\n"
-//usage: " stinkin' utmp.\n"
+//usage: " field is left blank, then the init's stdin/out will be used.\n"
//usage: "\n"
//usage: " <runlevels>:\n"
//usage: "\n"
diff --git a/libbb/Kbuild.src b/libbb/Kbuild.src
index 61eec26..a6468f1 100644
--- a/libbb/Kbuild.src
+++ b/libbb/Kbuild.src
@@ -27,8 +27,6 @@ lib-y += concat_subpath_file.o
lib-y += copy_file.o
lib-y += copyfd.o
lib-y += crc32.o
-lib-y += create_icmp6_socket.o
-lib-y += create_icmp_socket.o
lib-y += default_error_retval.o
lib-y += device_open.o
lib-y += dump.o
@@ -146,7 +144,7 @@ lib-$(CONFIG_DELUSER) += update_passwd.o
lib-$(CONFIG_PASSWD) += pw_encrypt.o update_passwd.o obscure.o
lib-$(CONFIG_CHPASSWD) += pw_encrypt.o update_passwd.o
lib-$(CONFIG_CRYPTPW) += pw_encrypt.o
-lib-$(CONFIG_SULOGIN) += pw_encrypt.o
+lib-$(CONFIG_SULOGIN) += pw_encrypt.o correct_password.o
lib-$(CONFIG_VLOCK) += pw_encrypt.o correct_password.o
lib-$(CONFIG_SU) += pw_encrypt.o correct_password.o
lib-$(CONFIG_LOGIN) += pw_encrypt.o correct_password.o
diff --git a/libbb/appletlib.c b/libbb/appletlib.c
index fc1847a..5e4f4a9 100644
--- a/libbb/appletlib.c
+++ b/libbb/appletlib.c
@@ -29,7 +29,7 @@
#include "busybox.h"
#if !(defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) \
- || defined(__APPLE__) \
+ || defined(__APPLE__) \
)
# include <malloc.h> /* for mallopt */
#endif
@@ -750,7 +750,7 @@ void FAST_FUNC run_applet_no_and_exit(int applet_no, char **argv)
//TODO: just compare applet_no with APPLET_NO_test
if (!ENABLE_TEST || strcmp(applet_name, "test") != 0) {
/* If you want "foo --help" to return 0: */
- /*xfunc_error_retval = 0;*/
+ xfunc_error_retval = 0;
bb_show_usage();
}
}
diff --git a/libbb/bb_askpass.c b/libbb/bb_askpass.c
index fe2b506..77c1bcd 100644
--- a/libbb/bb_askpass.c
+++ b/libbb/bb_askpass.c
@@ -65,7 +65,9 @@ char* FAST_FUNC bb_ask(const int fd, int timeout, const char *prompt)
i = 0;
while (1) {
int r = read(fd, &ret[i], 1);
- if (r < 0) {
+ if ((i == 0 && r == 0) /* EOF (^D) with no password */
+ || r < 0
+ ) {
/* read is interrupted by timeout or ^C */
ret = NULL;
break;
diff --git a/libbb/bb_pwd.c b/libbb/bb_pwd.c
index 4829b72..8250cd4 100644
--- a/libbb/bb_pwd.c
+++ b/libbb/bb_pwd.c
@@ -110,3 +110,51 @@ unsigned long FAST_FUNC get_ug_id(const char *s,
return xname2id(s);
return r;
}
+
+/* Experimental "mallocing" API.
+ * The goal is nice: "we want to support a case when "guests" group is very large"
+ * but the code is butt-ugly.
+ */
+#if 0
+static char *find_latest(char last, char *cp)
+{
+ if (!cp)
+ return last;
+ cp += strlen(cp) + 1;
+ if (last < cp)
+ last = cp;
+ return last;
+}
+
+struct group* FAST_FUNC xmalloc_getgrnam(const char *name)
+{
+ struct {
+ struct group gr;
+ // May still be not enough!
+ char buf[64*1024 - sizeof(struct group) - 16];
+ } *s;
+ struct group *grp;
+ int r;
+ char *last;
+ char **gr_mem;
+
+ s = xmalloc(sizeof(*s));
+ r = getgrnam_r(name, &s->gr, s->buf, sizeof(s->buf), &grp);
+ if (!grp) {
+ free(s);
+ return grp;
+ }
+ last = find_latest(s->buf, grp->gr_name);
+ last = find_latest(last, grp->gr_passwd);
+ gr_mem = grp->gr_mem;
+ while (*gr_mem)
+ last = find_latest(last, *gr_mem++);
+ gr_mem++; /* points past NULL */
+ if (last < (char*)gr_mem)
+ last = (char*)gr_mem;
+//FIXME: what if we get not only truncated, but also moved here?
+// grp->gr_name pointer and friends are invalid now!!!
+ s = xrealloc(s, last - (char*)s);
+ return grp;
+}
+#endif
diff --git a/libbb/correct_password.c b/libbb/correct_password.c
index 7cabd33..acadf39 100644
--- a/libbb/correct_password.c
+++ b/libbb/correct_password.c
@@ -31,12 +31,15 @@
#include "libbb.h"
/* Ask the user for a password.
+ * Return 1 without asking if PW has an empty password.
+ * Return -1 on EOF, error while reading input, or timeout.
* Return 1 if the user gives the correct password for entry PW,
- * 0 if not. Return 1 without asking if PW has an empty password.
+ * 0 if not.
*
- * NULL pw means "just fake it for login with bad username" */
-
-int FAST_FUNC correct_password(const struct passwd *pw)
+ * NULL pw means "just fake it for login with bad username"
+ */
+int FAST_FUNC ask_and_check_password_extended(const struct passwd *pw,
+ int timeout, const char *prompt)
{
char *unencrypted, *encrypted;
const char *correct;
@@ -65,13 +68,19 @@ int FAST_FUNC correct_password(const struct passwd *pw)
return 1;
fake_it:
- unencrypted = bb_ask_stdin("Password: ");
+ unencrypted = bb_ask(STDIN_FILENO, timeout, prompt);
if (!unencrypted) {
- return 0;
+ /* EOF (such as ^D) or error (such as ^C) or timeout */
+ return -1;
}
encrypted = pw_encrypt(unencrypted, correct, 1);
r = (strcmp(encrypted, correct) == 0);
free(encrypted);
- memset(unencrypted, 0, strlen(unencrypted));
+ nuke_str(unencrypted);
return r;
}
+
+int FAST_FUNC ask_and_check_password(const struct passwd *pw)
+{
+ return ask_and_check_password_extended(pw, 0, "Password: ");
+}
diff --git a/libbb/create_icmp6_socket.c b/libbb/create_icmp6_socket.c
deleted file mode 100644
index bdee7a0..0000000
--- a/libbb/create_icmp6_socket.c
+++ b/dev/null
@@ -1,38 +0,0 @@
-/* vi: set sw=4 ts=4: */
-/*
- * Utility routines.
- *
- * create raw socket for icmp (IPv6 version) protocol
- * and drop root privileges if running setuid
- *
- * Licensed under GPLv2, see file LICENSE in this source tree.
- */
-
-#include "libbb.h"
-
-#if ENABLE_FEATURE_IPV6
-int FAST_FUNC create_icmp6_socket(void)
-{
- int sock;
-#if 0
- struct protoent *proto;
- proto = getprotobyname("ipv6-icmp");
- /* if getprotobyname failed, just silently force
- * proto->p_proto to have the correct value for "ipv6-icmp" */
- sock = socket(AF_INET6, SOCK_RAW,
- (proto ? proto->p_proto : IPPROTO_ICMPV6));
-#else
- sock = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6);
-#endif
- if (sock < 0) {
- if (errno == EPERM)
- bb_error_msg_and_die("%s", bb_msg_perm_denied_are_you_root);
- bb_perror_msg_and_die("%s", bb_msg_can_not_create_raw_socket);
- }
-
- /* drop root privs if running setuid */
- xsetuid(getuid());
-
- return sock;
-}
-#endif
diff --git a/libbb/create_icmp_socket.c b/libbb/create_icmp_socket.c
deleted file mode 100644
index 65eea3b..0000000
--- a/libbb/create_icmp_socket.c
+++ b/dev/null
@@ -1,36 +0,0 @@
-/* vi: set sw=4 ts=4: */
-/*
- * Utility routines.
- *
- * create raw socket for icmp protocol
- * and drop root privileges if running setuid
- *
- * Licensed under GPLv2, see file LICENSE in this source tree.
- */
-
-#include "libbb.h"
-
-int FAST_FUNC create_icmp_socket(void)
-{
- int sock;
-#if 0
- struct protoent *proto;
- proto = getprotobyname("icmp");
- /* if getprotobyname failed, just silently force
- * proto->p_proto to have the correct value for "icmp" */
- sock = socket(AF_INET, SOCK_RAW,
- (proto ? proto->p_proto : 1)); /* 1 == ICMP */
-#else
- sock = socket(AF_INET, SOCK_RAW, 1); /* 1 == ICMP */
-#endif
- if (sock < 0) {
- if (errno == EPERM)
- bb_error_msg_and_die("%s", bb_msg_perm_denied_are_you_root);
- bb_perror_msg_and_die("%s", bb_msg_can_not_create_raw_socket);
- }
-
- /* drop root privs if running setuid */
- xsetuid(getuid());
-
- return sock;
-}
diff --git a/libbb/dump.c b/libbb/dump.c
index 91efe41..b465c5d 100644
--- a/libbb/dump.c
+++ b/libbb/dump.c
@@ -333,7 +333,7 @@ static void do_skip(priv_dumper_t *dumper, const char *fname, int statok)
return;
}
}
- if (fseek(stdin, dumper->pub.dump_skip, SEEK_SET)) {
+ if (fseeko(stdin, dumper->pub.dump_skip, SEEK_SET)) {
bb_simple_perror_msg_and_die(fname);
}
dumper->address += dumper->pub.dump_skip;
diff --git a/libbb/endofname.c b/libbb/endofname.c
new file mode 100644
index 0000000..305f093
--- a/dev/null
+++ b/libbb/endofname.c
@@ -0,0 +1,26 @@
+/*
+ * Utility routines.
+ *
+ * Copyright (C) 2013 Denys Vlasenko
+ *
+ * Licensed under GPLv2, see file LICENSE in this source tree.
+ */
+
+//kbuild:lib-y += endofname.o
+
+#include "libbb.h"
+
+#define is_name(c) ((c) == '_' || isalpha((unsigned char)(c)))
+#define is_in_name(c) ((c) == '_' || isalnum((unsigned char)(c)))
+
+const char* FAST_FUNC
+endofname(const char *name)
+{
+ if (!is_name(*name))
+ return name;
+ while (*++name) {
+ if (!is_in_name(*name))
+ break;
+ }
+ return name;
+}
diff --git a/libbb/fclose_nonstdin.c b/libbb/fclose_nonstdin.c
index 5ce9d5b..1b14413 100644
--- a/libbb/fclose_nonstdin.c
+++ b/libbb/fclose_nonstdin.c
@@ -18,7 +18,8 @@ int FAST_FUNC fclose_if_not_stdin(FILE *f)
{
/* Some more paranoid applets want ferror() check too */
int r = ferror(f); /* NB: does NOT set errno! */
- if (r) errno = EIO; /* so we'll help it */
+ if (r)
+ errno = EIO; /* so we'll help it */
if (f != stdin)
return (r | fclose(f)); /* fclose does set errno on error */
return r;
diff --git a/libbb/hash_md5_sha.c b/libbb/hash_md5_sha.c
index b4d955e..3f743ac 100644
--- a/libbb/hash_md5_sha.c
+++ b/libbb/hash_md5_sha.c
@@ -84,7 +84,7 @@ static void FAST_FUNC common64_end(md5_ctx_t *ctx, int swap_needed)
if (swap_needed)
t = bb_bswap_64(t);
/* wbuffer is suitably aligned for this */
- *(uint64_t *) (&ctx->wbuffer[64 - 8]) = t;
+ *(bb__aliased_uint64_t *) (&ctx->wbuffer[64 - 8]) = t;
}
ctx->process_block(ctx);
if (remaining >= 8)
@@ -883,10 +883,10 @@ void FAST_FUNC sha512_end(sha512_ctx_t *ctx, void *resbuf)
uint64_t t;
t = ctx->total64[0] << 3;
t = SWAP_BE64(t);
- *(uint64_t *) (&ctx->wbuffer[128 - 8]) = t;
+ *(bb__aliased_uint64_t *) (&ctx->wbuffer[128 - 8]) = t;
t = (ctx->total64[1] << 3) | (ctx->total64[0] >> 61);
t = SWAP_BE64(t);
- *(uint64_t *) (&ctx->wbuffer[128 - 16]) = t;
+ *(bb__aliased_uint64_t *) (&ctx->wbuffer[128 - 16]) = t;
}
sha512_process_block128(ctx);
if (remaining >= 16)
diff --git a/libbb/human_readable.c b/libbb/human_readable.c
index 8b22b0c..0b2eb77 100644
--- a/libbb/human_readable.c
+++ b/libbb/human_readable.c
@@ -94,7 +94,7 @@ const char* FAST_FUNC make_human_readable_str(unsigned long long val,
/* Convert unsigned long long value into compact 5-char representation.
* String is not terminated (buf[5] is untouched) */
-void FAST_FUNC smart_ulltoa5(unsigned long long ul, char buf[5], const char *scale)
+char* FAST_FUNC smart_ulltoa5(unsigned long long ul, char buf[5], const char *scale)
{
const char *fmt;
char c;
@@ -145,12 +145,13 @@ void FAST_FUNC smart_ulltoa5(unsigned long long ul, char buf[5], const char *sca
buf[3] = "0123456789"[v];
buf[4] = scale[idx]; /* typically scale = " kmgt..." */
}
+ return buf + 5;
}
/* Convert unsigned long long value into compact 4-char
* representation. Examples: "1234", "1.2k", " 27M", "123T"
* String is not terminated (buf[4] is untouched) */
-void FAST_FUNC smart_ulltoa4(unsigned long long ul, char buf[4], const char *scale)
+char* FAST_FUNC smart_ulltoa4(unsigned long long ul, char buf[4], const char *scale)
{
const char *fmt;
char c;
@@ -194,4 +195,5 @@ void FAST_FUNC smart_ulltoa4(unsigned long long ul, char buf[4], const char *sca
buf[2] = "0123456789"[v];
buf[3] = scale[idx]; /* typically scale = " kmgt..." */
}
+ return buf + 4;
}
diff --git a/libbb/in_ether.c b/libbb/in_ether.c
new file mode 100644
index 0000000..1de383b
--- a/dev/null
+++ b/libbb/in_ether.c
@@ -0,0 +1,59 @@
+/* vi: set sw=4 ts=4: */
+/*
+ * Utility routines.
+ */
+
+//kbuild:lib-$(CONFIG_ARP) += in_ether.o
+//kbuild:lib-$(CONFIG_IFCONFIG) += in_ether.o
+//kbuild:lib-$(CONFIG_IFENSLAVE) += in_ether.o
+
+#include "libbb.h"
+#include <net/if_arp.h>
+#include <net/ethernet.h>
+
+/* Convert Ethernet address from "XX[:]XX[:]XX[:]XX[:]XX[:]XX" to sockaddr.
+ * Return nonzero on error.
+ */
+int FAST_FUNC in_ether(const char *bufp, struct sockaddr *sap)
+{
+ char *ptr;
+ int i, j;
+ unsigned char val;
+ unsigned char c;
+
+ sap->sa_family = ARPHRD_ETHER;
+ ptr = (char *) sap->sa_data;
+
+ i = ETH_ALEN;
+ goto first;
+ do {
+ /* We might get a semicolon here */
+ if (*bufp == ':')
+ bufp++;
+ first:
+ j = val = 0;
+ do {
+ c = *bufp;
+ if (((unsigned char)(c - '0')) <= 9) {
+ c -= '0';
+ } else if ((unsigned char)((c|0x20) - 'a') <= 5) {
+ c = (unsigned char)((c|0x20) - 'a') + 10;
+ } else {
+ if (j && (c == ':' || c == '\0'))
+ /* One-digit byte: __:X:__ */
+ break;
+ return -1;
+ }
+ ++bufp;
+ val <<= 4;
+ val += c;
+ j ^= 1;
+ } while (j);
+
+ *ptr++ = val;
+
+ } while (--i);
+
+ /* Error if we aren't at end of string */
+ return *bufp;
+}
diff --git a/libbb/inet_common.c b/libbb/inet_common.c
index 0f4fca1..b3e0802 100644
--- a/libbb/inet_common.c
+++ b/libbb/inet_common.c
@@ -175,8 +175,7 @@ int FAST_FUNC INET6_resolve(const char *name, struct sockaddr_in6 *sin6)
return -1;
}
memcpy(sin6, ai->ai_addr, sizeof(*sin6));
- if (ai)
- freeaddrinfo(ai);
+ freeaddrinfo(ai);
return 0;
}
diff --git a/libbb/lineedit.c b/libbb/lineedit.c
index 0da625f..2fd5a9a 100644
--- a/libbb/lineedit.c
+++ b/libbb/lineedit.c
@@ -38,6 +38,14 @@
* and the \] escape to signal the end of such a sequence. Example:
*
* PS1='\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] '
+ *
+ * Unicode in PS1 is not fully supported: prompt length calulation is wrong,
+ * resulting in line wrap problems with long (multi-line) input.
+ *
+ * Multi-line PS1 (e.g. PS1="\n[\w]\n$ ") has problems with history
+ * browsing: up/down arrows result in scrolling.
+ * It stems from simplistic "cmdedit_y = cmdedit_prmt_len / cmdedit_termw"
+ * calculation of how many lines the prompt takes.
*/
#include "libbb.h"
#include "unicode.h"
@@ -133,9 +141,6 @@ struct lineedit_statics {
CHAR_T *command_ps;
const char *cmdedit_prompt;
-#if ENABLE_FEATURE_EDITING_FANCY_PROMPT
- int num_ok_lines; /* = 1; */
-#endif
#if ENABLE_USERNAME_OR_HOMEDIR
char *user_buf;
@@ -172,7 +177,6 @@ extern struct lineedit_statics *const lineedit_ptr_to_statics;
#define command_len (S.command_len )
#define command_ps (S.command_ps )
#define cmdedit_prompt (S.cmdedit_prompt )
-#define num_ok_lines (S.num_ok_lines )
#define user_buf (S.user_buf )
#define home_pwd_buf (S.home_pwd_buf )
#define matches (S.matches )
@@ -185,8 +189,8 @@ extern struct lineedit_statics *const lineedit_ptr_to_statics;
(*(struct lineedit_statics**)&lineedit_ptr_to_statics) = xzalloc(sizeof(S)); \
barrier(); \
cmdedit_termw = 80; \
- IF_FEATURE_EDITING_FANCY_PROMPT(num_ok_lines = 1;) \
IF_USERNAME_OR_HOMEDIR(home_pwd_buf = (char*)null_str;) \
+ IF_FEATURE_EDITING_VI(delptr = delbuf;) \
} while (0)
static void deinit_S(void)
@@ -1251,14 +1255,16 @@ line_input_t* FAST_FUNC new_line_input_t(int flags)
{
line_input_t *n = xzalloc(sizeof(*n));
n->flags = flags;
+#if MAX_HISTORY > 0
n->max_history = MAX_HISTORY;
+#endif
return n;
}
#if MAX_HISTORY > 0
-unsigned size_from_HISTFILESIZE(const char *hp)
+unsigned FAST_FUNC size_from_HISTFILESIZE(const char *hp)
{
int size = MAX_HISTORY;
if (hp) {
@@ -1313,6 +1319,17 @@ static int get_next_history(void)
return 0;
}
+/* Lists command history. Used by shell 'history' builtins */
+void FAST_FUNC show_history(const line_input_t *st)
+{
+ int i;
+
+ if (!st)
+ return;
+ for (i = 0; i < st->cnt_history; i++)
+ printf("%4d %s\n", i, st->history[i]);
+}
+
# if ENABLE_FEATURE_EDITING_SAVEHISTORY
/* We try to ensure that concurrent additions to the history
* do not overwrite each other.
@@ -1532,7 +1549,6 @@ static void remember_in_history(char *str)
# if ENABLE_FEATURE_EDITING_SAVEHISTORY && !ENABLE_FEATURE_EDITING_SAVE_ON_EXIT
save_history(str);
# endif
- IF_FEATURE_EDITING_FANCY_PROMPT(num_ok_lines++;)
}
#else /* MAX_HISTORY == 0 */
@@ -1754,43 +1770,84 @@ static void ask_terminal(void)
#define ask_terminal() ((void)0)
#endif
+/* Called just once at read_line_input() init time */
#if !ENABLE_FEATURE_EDITING_FANCY_PROMPT
static void parse_and_put_prompt(const char *prmt_ptr)
{
+ const char *p;
cmdedit_prompt = prmt_ptr;
- cmdedit_prmt_len = strlen(prmt_ptr);
+ p = strrchr(prmt_ptr, '\n');
+ cmdedit_prmt_len = unicode_strwidth(p ? p+1 : prmt_ptr);
put_prompt();
}
#else
static void parse_and_put_prompt(const char *prmt_ptr)
{
- int prmt_len = 0;
- size_t cur_prmt_len = 0;
- char flg_not_length = '[';
+ int prmt_size = 0;
char *prmt_mem_ptr = xzalloc(1);
- char *cwd_buf = xrealloc_getcwd_or_warn(NULL);
+# if ENABLE_USERNAME_OR_HOMEDIR
+ char *cwd_buf = NULL;
+# endif
+ char flg_not_length = '[';
char cbuf[2];
- char c;
- char *pbuf;
-
- cmdedit_prmt_len = 0;
- if (!cwd_buf) {
- cwd_buf = (char *)bb_msg_unknown;
- }
+ /*cmdedit_prmt_len = 0; - already is */
cbuf[1] = '\0'; /* never changes */
while (*prmt_ptr) {
+ char timebuf[sizeof("HH:MM:SS")];
char *free_me = NULL;
+ char *pbuf;
+ char c;
pbuf = cbuf;
c = *prmt_ptr++;
if (c == '\\') {
- const char *cp = prmt_ptr;
+ const char *cp;
int l;
-
- c = bb_process_escape_sequence(&prmt_ptr);
+/*
+ * Supported via bb_process_escape_sequence:
+ * \a ASCII bell character (07)
+ * \e ASCII escape character (033)
+ * \n newline
+ * \r carriage return
+ * \\ backslash
+ * \nnn char with octal code nnn
+ * Supported:
+ * \$ if the effective UID is 0, a #, otherwise a $
+ * \w current working directory, with $HOME abbreviated with a tilde
+ * Note: we do not support $PROMPT_DIRTRIM=n feature
+ * \W basename of the current working directory, with $HOME abbreviated with a tilde
+ * \h hostname up to the first '.'
+ * \H hostname
+ * \u username
+ * \[ begin a sequence of non-printing characters
+ * \] end a sequence of non-printing characters
+ * \T current time in 12-hour HH:MM:SS format
+ * \@ current time in 12-hour am/pm format
+ * \A current time in 24-hour HH:MM format
+ * \t current time in 24-hour HH:MM:SS format
+ * (all of the above work as \A)
+ * Not supported:
+ * \! history number of this command
+ * \# command number of this command
+ * \j number of jobs currently managed by the shell
+ * \l basename of the shell's terminal device name
+ * \s name of the shell, the basename of $0 (the portion following the final slash)
+ * \V release of bash, version + patch level (e.g., 2.00.0)
+ * \d date in "Weekday Month Date" format (e.g., "Tue May 26")
+ * \D{format}
+ * format is passed to strftime(3).
+ * An empty format results in a locale-specific time representation.
+ * The braces are required.
+ * Mishandled by bb_process_escape_sequence:
+ * \v version of bash (e.g., 2.00)
+ */
+ cp = prmt_ptr;
+ c = *cp;
+ if (c != 't') /* don't treat \t as tab */
+ c = bb_process_escape_sequence(&prmt_ptr);
if (prmt_ptr == cp) {
if (*cp == '\0')
break;
@@ -1802,39 +1859,54 @@ static void parse_and_put_prompt(const char *prmt_ptr)
pbuf = user_buf ? user_buf : (char*)"";
break;
# endif
+ case 'H':
case 'h':
pbuf = free_me = safe_gethostname();
- *strchrnul(pbuf, '.') = '\0';
+ if (c == 'h')
+ strchrnul(pbuf, '.')[0] = '\0';
break;
case '$':
c = (geteuid() == 0 ? '#' : '$');
break;
+ case 'T': /* 12-hour HH:MM:SS format */
+ case '@': /* 12-hour am/pm format */
+ case 'A': /* 24-hour HH:MM format */
+ case 't': /* 24-hour HH:MM:SS format */
+ /* We show all of them as 24-hour HH:MM */
+ strftime_HHMMSS(timebuf, sizeof(timebuf), NULL)[-3] = '\0';
+ pbuf = timebuf;
+ break;
# if ENABLE_USERNAME_OR_HOMEDIR
- case 'w':
- /* /home/user[/something] -> ~[/something] */
- pbuf = cwd_buf;
- l = strlen(home_pwd_buf);
- if (l != 0
- && strncmp(home_pwd_buf, cwd_buf, l) == 0
- && (cwd_buf[l]=='/' || cwd_buf[l]=='\0')
- && strlen(cwd_buf + l) < PATH_MAX
- ) {
- pbuf = free_me = xasprintf("~%s", cwd_buf + l);
+ case 'w': /* current dir */
+ case 'W': /* basename of cur dir */
+ if (!cwd_buf) {
+ cwd_buf = xrealloc_getcwd_or_warn(NULL);
+ if (!cwd_buf)
+ cwd_buf = (char *)bb_msg_unknown;
+ else {
+ /* /home/user[/something] -> ~[/something] */
+ l = strlen(home_pwd_buf);
+ if (l != 0
+ && strncmp(home_pwd_buf, cwd_buf, l) == 0
+ && (cwd_buf[l] == '/' || cwd_buf[l] == '\0')
+ ) {
+ cwd_buf[0] = '~';
+ overlapping_strcpy(cwd_buf + 1, cwd_buf + l);
+ }
+ }
}
- break;
-# endif
- case 'W':
pbuf = cwd_buf;
+ if (c == 'w')
+ break;
cp = strrchr(pbuf, '/');
- if (cp != NULL && cp != pbuf)
- pbuf += (cp-pbuf) + 1;
- break;
- case '!':
- pbuf = free_me = xasprintf("%d", num_ok_lines);
- break;
- case 'e': case 'E': /* \e \E = \033 */
- c = '\033';
+ if (cp)
+ pbuf = (char*)cp + 1;
break;
+# endif
+// bb_process_escape_sequence does this now:
+// case 'e': case 'E': /* \e \E = \033 */
+// c = '\033';
+// break;
case 'x': case 'X': {
char buf2[4];
for (l = 0; l < 3;) {
@@ -1856,7 +1928,8 @@ static void parse_and_put_prompt(const char *prmt_ptr)
}
case '[': case ']':
if (c == flg_not_length) {
- flg_not_length = (flg_not_length == '[' ? ']' : '[');
+ /* Toggle '['/']' hex 5b/5d */
+ flg_not_length ^= 6;
continue;
}
break;
@@ -1864,16 +1937,29 @@ static void parse_and_put_prompt(const char *prmt_ptr)
} /* if */
} /* if */
cbuf[0] = c;
- cur_prmt_len = strlen(pbuf);
- prmt_len += cur_prmt_len;
- if (flg_not_length != ']')
- cmdedit_prmt_len += cur_prmt_len;
- prmt_mem_ptr = strcat(xrealloc(prmt_mem_ptr, prmt_len+1), pbuf);
+ {
+ int n = strlen(pbuf);
+ prmt_size += n;
+ if (c == '\n')
+ cmdedit_prmt_len = 0;
+ else if (flg_not_length != ']') {
+#if 0 /*ENABLE_UNICODE_SUPPORT*/
+/* Won't work, pbuf is one BYTE string here instead of an one Unicode char string. */
+/* FIXME */
+ cmdedit_prmt_len += unicode_strwidth(pbuf);
+#else
+ cmdedit_prmt_len += n;
+#endif
+ }
+ }
+ prmt_mem_ptr = strcat(xrealloc(prmt_mem_ptr, prmt_size+1), pbuf);
free(free_me);
} /* while */
+# if ENABLE_USERNAME_OR_HOMEDIR
if (cwd_buf != (char *)bb_msg_unknown)
free(cwd_buf);
+# endif
cmdedit_prompt = prmt_mem_ptr;
put_prompt();
}
@@ -1935,7 +2021,15 @@ static int lineedit_read_key(char *read_key_buffer, int timeout)
S.sent_ESC_br6n = 0;
if (cursor == 0) { /* otherwise it may be bogus */
int col = ((ic >> 32) & 0x7fff) - 1;
- if (col > (int) cmdedit_prmt_len) {
+ /*
+ * Is col > cmdedit_prmt_len?
+ * If yes (terminal says cursor is farther to the right
+ * of where we think it should be),
+ * the prompt wasn't printed starting at col 1,
+ * there was additional text before it.
+ */
+ if ((int)(col - cmdedit_prmt_len) > 0) {
+ /* Fix our understanding of current x position */
cmdedit_x += (col - cmdedit_prmt_len);
while (cmdedit_x >= cmdedit_termw) {
cmdedit_x -= cmdedit_termw;
@@ -2026,6 +2120,7 @@ static int32_t reverse_i_search(void)
char read_key_buffer[KEYCODE_BUFFER_SIZE];
const char *matched_history_line;
const char *saved_prompt;
+ unsigned saved_prmt_len;
int32_t ic;
matched_history_line = NULL;
@@ -2034,6 +2129,7 @@ static int32_t reverse_i_search(void)
/* Save and replace the prompt */
saved_prompt = cmdedit_prompt;
+ saved_prmt_len = cmdedit_prmt_len;
goto set_prompt;
while (1) {
@@ -2109,7 +2205,7 @@ static int32_t reverse_i_search(void)
free((char*)cmdedit_prompt);
set_prompt:
cmdedit_prompt = xasprintf("(reverse-i-search)'%s': ", match_buf);
- cmdedit_prmt_len = strlen(cmdedit_prompt);
+ cmdedit_prmt_len = unicode_strwidth(cmdedit_prompt);
goto do_redraw;
}
}
@@ -2131,7 +2227,7 @@ static int32_t reverse_i_search(void)
free((char*)cmdedit_prompt);
cmdedit_prompt = saved_prompt;
- cmdedit_prmt_len = strlen(cmdedit_prompt);
+ cmdedit_prmt_len = saved_prmt_len;
redraw(cmdedit_y, command_len - cursor);
return ic;
@@ -2699,8 +2795,9 @@ int FAST_FUNC read_line_input(line_input_t *st, const char *prompt, char *comman
free(command_ps);
#endif
- if (command_len > 0)
+ if (command_len > 0) {
remember_in_history(command);
+ }
if (break_out > 0) {
command[command_len++] = '\n';
diff --git a/libbb/login.c b/libbb/login.c
index 8a82c6a..8f080b7 100644
--- a/libbb/login.c
+++ b/libbb/login.c
@@ -16,7 +16,6 @@
#define LOGIN " login: "
static const char fmtstr_d[] ALIGN1 = "%A, %d %B %Y";
-static const char fmtstr_t[] ALIGN1 = "%H:%M:%S";
void FAST_FUNC print_login_issue(const char *issue_file, const char *tty)
{
@@ -73,7 +72,7 @@ void FAST_FUNC print_login_issue(const char *issue_file, const char *tty)
strftime(buf, sizeof(buf), fmtstr_d, localtime(&t));
break;
case 't':
- strftime(buf, sizeof(buf), fmtstr_t, localtime(&t));
+ strftime_HHMMSS(buf, sizeof(buf), &t);
break;
case 'l':
outbuf = tty;
diff --git a/libbb/nuke_str.c b/libbb/nuke_str.c
new file mode 100644
index 0000000..56b808b
--- a/dev/null
+++ b/libbb/nuke_str.c
@@ -0,0 +1,21 @@
+/* vi: set sw=4 ts=4: */
+/*
+ * Utility routines.
+ *
+ * Copyright (C) 2008 Denys Vlasenko
+ *
+ * Licensed under GPLv2, see file LICENSE in this source tree.
+ */
+
+//kbuild:lib-y += nuke_str.o
+
+#include "libbb.h"
+
+void FAST_FUNC nuke_str(char *str)
+{
+ if (str) {
+ while (*str)
+ *str++ = 0;
+ /* or: memset(str, 0, strlen(str)); - not as small as above */
+ }
+}
diff --git a/libbb/platform.c b/libbb/platform.c
index 2bf34f5..1973451 100644
--- a/libbb/platform.c
+++ b/libbb/platform.c
@@ -28,14 +28,16 @@ int FAST_FUNC vasprintf(char **string_ptr, const char *format, va_list p)
r = vsnprintf(buf, 128, format, p);
va_end(p);
+ /* Note: can't use xstrdup/xmalloc, they call vasprintf (us) on failure! */
+
if (r < 128) {
va_end(p2);
- *string_ptr = xstrdup(buf);
- return r;
+ *string_ptr = strdup(buf);
+ return (*string_ptr ? r : -1);
}
- *string_ptr = xmalloc(r+1);
- r = vsnprintf(*string_ptr, r+1, format, p2);
+ *string_ptr = malloc(r+1);
+ r = (*string_ptr ? vsnprintf(*string_ptr, r+1, format, p2) : -1);
va_end(p2);
return r;
diff --git a/libbb/printable.c b/libbb/printable.c
index f6ada49..9a42343 100644
--- a/libbb/printable.c
+++ b/libbb/printable.c
@@ -32,3 +32,27 @@ void FAST_FUNC fputc_printable(int ch, FILE *file)
}
fputc(ch, file);
}
+
+void FAST_FUNC visible(unsigned ch, char *buf, int flags)
+{
+ if (ch == '\t' && !(flags & VISIBLE_SHOW_TABS)) {
+ goto raw;
+ }
+ if (ch == '\n') {
+ if (flags & VISIBLE_ENDLINE)
+ *buf++ = '$';
+ } else {
+ if (ch >= 128) {
+ ch -= 128;
+ *buf++ = 'M';
+ *buf++ = '-';
+ }
+ if (ch < 32 || ch == 127) {
+ *buf++ = '^';
+ ch ^= 0x40;
+ }
+ }
+ raw:
+ *buf++ = ch;
+ *buf = '\0';
+}
diff --git a/libbb/pw_encrypt_md5.c b/libbb/pw_encrypt_md5.c
index 889e09c..1e52eca 100644
--- a/libbb/pw_encrypt_md5.c
+++ b/libbb/pw_encrypt_md5.c
@@ -86,7 +86,7 @@ md5_crypt(char result[MD5_OUT_BUFSIZE], const unsigned char *pw, const unsigned
/* Get the length of the salt including "$1$" */
sl = 3;
- while (salt[sl] && salt[sl] != '$' && sl < (3 + 8))
+ while (sl < (3 + 8) && salt[sl] && salt[sl] != '$')
sl++;
/* Hash. the password first, since that is what is most unknown */
diff --git a/libbb/time.c b/libbb/time.c
index 3778a2d..4a5b306 100644
--- a/libbb/time.c
+++ b/libbb/time.c
@@ -23,14 +23,16 @@ void FAST_FUNC parse_datestr(const char *date_str, struct tm *ptm)
if (sscanf(date_str, "%u:%u%c",
&ptm->tm_hour,
&ptm->tm_min,
- &end) >= 2) {
+ &end) >= 2
+ ) {
/* no adjustments needed */
} else
/* mm.dd-HH:MM */
if (sscanf(date_str, "%u.%u-%u:%u%c",
&ptm->tm_mon, &ptm->tm_mday,
&ptm->tm_hour, &ptm->tm_min,
- &end) >= 4) {
+ &end) >= 4
+ ) {
/* Adjust month from 1-12 to 0-11 */
ptm->tm_mon -= 1;
} else
@@ -38,15 +40,13 @@ void FAST_FUNC parse_datestr(const char *date_str, struct tm *ptm)
if (sscanf(date_str, "%u.%u.%u-%u:%u%c", &ptm->tm_year,
&ptm->tm_mon, &ptm->tm_mday,
&ptm->tm_hour, &ptm->tm_min,
- &end) >= 5) {
- ptm->tm_year -= 1900; /* Adjust years */
- ptm->tm_mon -= 1; /* Adjust month from 1-12 to 0-11 */
- } else
+ &end) >= 5
/* yyyy-mm-dd HH:MM */
- if (sscanf(date_str, "%u-%u-%u %u:%u%c", &ptm->tm_year,
+ || sscanf(date_str, "%u-%u-%u %u:%u%c", &ptm->tm_year,
&ptm->tm_mon, &ptm->tm_mday,
&ptm->tm_hour, &ptm->tm_min,
- &end) >= 5) {
+ &end) >= 5
+ ) {
ptm->tm_year -= 1900; /* Adjust years */
ptm->tm_mon -= 1; /* Adjust month from 1-12 to 0-11 */
} else
@@ -58,7 +58,6 @@ void FAST_FUNC parse_datestr(const char *date_str, struct tm *ptm)
return; /* don't fall through to end == ":" check */
} else
#endif
-//TODO: coreutils 6.9 also accepts "yyyy-mm-dd HH" (no minutes)
{
bb_error_msg_and_die(bb_msg_invalid_date, date_str);
}
@@ -68,7 +67,21 @@ void FAST_FUNC parse_datestr(const char *date_str, struct tm *ptm)
end = '\0';
/* else end != NUL and we error out */
}
- } else if (date_str[0] == '@') {
+ } else
+ /* yyyy-mm-dd HH */
+ if (sscanf(date_str, "%u-%u-%u %u%c", &ptm->tm_year,
+ &ptm->tm_mon, &ptm->tm_mday,
+ &ptm->tm_hour,
+ &end) >= 4
+ /* yyyy-mm-dd */
+ || sscanf(date_str, "%u-%u-%u%c", &ptm->tm_year,
+ &ptm->tm_mon, &ptm->tm_mday,
+ &end) >= 3
+ ) {
+ ptm->tm_year -= 1900; /* Adjust years */
+ ptm->tm_mon -= 1; /* Adjust month from 1-12 to 0-11 */
+ } else
+ if (date_str[0] == '@') {
time_t t = bb_strtol(date_str + 1, NULL, 10);
if (!errno) {
struct tm *lt = localtime(&t);
@@ -187,6 +200,27 @@ time_t FAST_FUNC validate_tm_time(const char *date_str, struct tm *ptm)
return t;
}
+static char* strftime_fmt(char *buf, unsigned len, time_t *tp, const char *fmt)
+{
+ time_t t;
+ if (!tp) {
+ tp = &t;
+ time(tp);
+ }
+ /* Returns pointer to NUL */
+ return buf + strftime(buf, len, fmt, localtime(tp));
+}
+
+char* FAST_FUNC strftime_HHMMSS(char *buf, unsigned len, time_t *tp)
+{
+ return strftime_fmt(buf, len, tp, "%H:%M:%S");
+}
+
+char* FAST_FUNC strftime_YYYYMMDDHHMMSS(char *buf, unsigned len, time_t *tp)
+{
+ return strftime_fmt(buf, len, tp, "%Y-%m-%d %H:%M:%S");
+}
+
#if ENABLE_MONOTONIC_SYSCALL
#include <sys/syscall.h>
diff --git a/libbb/unicode.c b/libbb/unicode.c
index 96eb646..6bdb666 100644
--- a/libbb/unicode.c
+++ b/libbb/unicode.c
@@ -34,19 +34,37 @@ void FAST_FUNC reinit_unicode(const char *LANG)
static const char unicode_0x394[] = { 0xce, 0x94, 0 };
size_t width;
+ /* We pass "" instead of "C" because some libc's have
+ * non-ASCII default locale for setlocale("") call
+ * (this allows users of such libc to have Unicoded
+ * system without having to mess with env).
+ *
+ * We set LC_CTYPE because (a) we may be called with $LC_CTYPE
+ * value in LANG, not with $LC_ALL, (b) internationalized
+ * LC_NUMERIC and LC_TIME are more PITA than benefit
+ * (for one, some utilities have hard time with comma
+ * used as a fractional separator).
+ */
//TODO: avoid repeated calls by caching last string?
- setlocale(LC_ALL, (LANG && LANG[0]) ? LANG : "C");
+ setlocale(LC_CTYPE, LANG ? LANG : "");
/* In unicode, this is a one character string */
-// can use unicode_strlen(string) too, but otherwise unicode_strlen() is unused
- width = mbstowcs(NULL, unicode_0x394, INT_MAX);
+ width = unicode_strlen(unicode_0x394);
unicode_status = (width == 1 ? UNICODE_ON : UNICODE_OFF);
}
void FAST_FUNC init_unicode(VOID)
{
- if (unicode_status == UNICODE_UNKNOWN)
- reinit_unicode(getenv("LANG"));
+ /* Some people set only $LC_CTYPE, not $LC_ALL, because they want
+ * only Unicode to be activated on their system, not the whole
+ * shebang of wrong decimal points, strange date formats and so on.
+ */
+ if (unicode_status == UNICODE_UNKNOWN) {
+ char *s = getenv("LC_ALL");
+ if (!s) s = getenv("LC_CTYPE");
+ if (!s) s = getenv("LANG");
+ reinit_unicode(s);
+ }
}
#else
@@ -64,8 +82,12 @@ void FAST_FUNC reinit_unicode(const char *LANG)
void FAST_FUNC init_unicode(VOID)
{
- if (unicode_status == UNICODE_UNKNOWN)
- reinit_unicode(getenv("LANG"));
+ if (unicode_status == UNICODE_UNKNOWN) {
+ char *s = getenv("LC_ALL");
+ if (!s) s = getenv("LC_CTYPE");
+ if (!s) s = getenv("LANG");
+ reinit_unicode(s);
+ }
}
# endif
@@ -971,7 +993,6 @@ int FAST_FUNC unicode_bidi_is_neutral_wchar(wint_t wc)
/* The rest is mostly same for libc and for "homegrown" support */
-#if 0 // UNUSED
size_t FAST_FUNC unicode_strlen(const char *string)
{
size_t width = mbstowcs(NULL, string, INT_MAX);
@@ -979,7 +1000,6 @@ size_t FAST_FUNC unicode_strlen(const char *string)
return strlen(string);
return width;
}
-#endif
size_t FAST_FUNC unicode_strwidth(const char *string)
{
diff --git a/libbb/xatonum.c b/libbb/xatonum.c
index 62bbe53..6f4e023 100644
--- a/libbb/xatonum.c
+++ b/libbb/xatonum.c
@@ -68,3 +68,10 @@ uint16_t FAST_FUNC xatou16(const char *numstr)
{
return xatou_range(numstr, 0, 0xffff);
}
+
+const struct suffix_mult bkm_suffixes[] = {
+ { "b", 512 },
+ { "k", 1024 },
+ { "m", 1024*1024 },
+ { "", 0 }
+};
diff --git a/libbb/xfuncs_printf.c b/libbb/xfuncs_printf.c
index 29c963f..7a9581d 100644
--- a/libbb/xfuncs_printf.c
+++ b/libbb/xfuncs_printf.c
@@ -140,15 +140,6 @@ int FAST_FUNC xopen(const char *pathname, int flags)
return xopen3(pathname, flags, 0666);
}
-/* Die if we can't open an existing file readonly with O_NONBLOCK
- * and return the fd.
- * Note that for ioctl O_RDONLY is sufficient.
- */
-int FAST_FUNC xopen_nonblocking(const char *pathname)
-{
- return xopen(pathname, O_RDONLY | O_NONBLOCK);
-}
-
// Warn if we can't open a file and return a fd.
int FAST_FUNC open3_or_warn(const char *pathname, int flags, int mode)
{
@@ -167,6 +158,32 @@ int FAST_FUNC open_or_warn(const char *pathname, int flags)
return open3_or_warn(pathname, flags, 0666);
}
+/* Die if we can't open an existing file readonly with O_NONBLOCK
+ * and return the fd.
+ * Note that for ioctl O_RDONLY is sufficient.
+ */
+int FAST_FUNC xopen_nonblocking(const char *pathname)
+{
+ return xopen(pathname, O_RDONLY | O_NONBLOCK);
+}
+
+int FAST_FUNC xopen_as_uid_gid(const char *pathname, int flags, uid_t u, gid_t g)
+{
+ int fd;
+ uid_t old_euid = geteuid();
+ gid_t old_egid = getegid();
+
+ xsetegid(g);
+ xseteuid(u);
+
+ fd = xopen(pathname, flags);
+
+ xseteuid(old_euid);
+ xsetegid(old_egid);
+
+ return fd;
+}
+
void FAST_FUNC xunlink(const char *pathname)
{
if (unlink(pathname))
@@ -351,6 +368,16 @@ void FAST_FUNC xsetuid(uid_t uid)
if (setuid(uid)) bb_perror_msg_and_die("setuid");
}
+void FAST_FUNC xsetegid(gid_t egid)
+{
+ if (setegid(egid)) bb_perror_msg_and_die("setegid");
+}
+
+void FAST_FUNC xseteuid(uid_t euid)
+{
+ if (seteuid(euid)) bb_perror_msg_and_die("seteuid");
+}
+
// Die if we can't chdir to a new path.
void FAST_FUNC xchdir(const char *path)
{
@@ -541,13 +568,11 @@ int FAST_FUNC bb_xioctl(int fd, unsigned request, void *argp)
char* FAST_FUNC xmalloc_ttyname(int fd)
{
- char *buf = xzalloc(128);
- int r = ttyname_r(fd, buf, 127);
- if (r) {
- free(buf);
- buf = NULL;
- }
- return buf;
+ char buf[128];
+ int r = ttyname_r(fd, buf, sizeof(buf) - 1);
+ if (r)
+ return NULL;
+ return xstrdup(buf);
}
void FAST_FUNC generate_uuid(uint8_t *buf)
diff --git a/libbb/xreadlink.c b/libbb/xreadlink.c
index ec95af2..bb63da0 100644
--- a/libbb/xreadlink.c
+++ b/libbb/xreadlink.c
@@ -8,6 +8,12 @@
#include "libbb.h"
+/* some systems (eg Hurd) does not have MAXSYMLINKS definition,
+ * set it to some reasonable value if it isn't defined */
+#ifndef MAXSYMLINKS
+# define MAXSYMLINKS 20
+#endif
+
/*
* NOTE: This function returns a malloced char* that you will have to free
* yourself.
@@ -102,7 +108,8 @@ char* FAST_FUNC xmalloc_readlink_or_warn(const char *path)
char* FAST_FUNC xmalloc_realpath(const char *path)
{
-#if defined(__GLIBC__) && !defined(__UCLIBC__)
+#if defined(__GLIBC__) || \
+ (defined(__UCLIBC__) && UCLIBC_VERSION >= KERNEL_VERSION(0, 9, 31))
/* glibc provides a non-standard extension */
/* new: POSIX.1-2008 specifies this behavior as well */
return realpath(path, NULL);
diff --git a/loginutils/adduser.c b/loginutils/adduser.c
index 5dd2de1..79b9501 100644
--- a/loginutils/adduser.c
+++ b/loginutils/adduser.c
@@ -162,9 +162,9 @@ int adduser_main(int argc UNUSED_PARAM, char **argv)
pw.pw_shell = (char *)get_shell_name();
pw.pw_dir = NULL;
- /* at most two non-option args */
+ /* at least one and at most two non-option args */
/* disable interactive passwd for system accounts */
- opt_complementary = "?2:SD:u+";
+ opt_complementary = "-1:?2:SD:u+";
if (sizeof(pw.pw_uid) == sizeof(int)) {
opts = getopt32(argv, "h:g:s:G:DSHu:", &pw.pw_dir, &pw.pw_gecos, &pw.pw_shell, &usegroup, &pw.pw_uid);
} else {
diff --git a/loginutils/cryptpw.c b/loginutils/cryptpw.c
index a36f920..29f0fbe 100644
--- a/loginutils/cryptpw.c
+++ b/loginutils/cryptpw.c
@@ -92,6 +92,7 @@ int cryptpw_main(int argc UNUSED_PARAM, char **argv)
{
char salt[MAX_PW_SALT_LEN];
char *salt_ptr;
+ char *password;
const char *opt_m, *opt_S;
int fd;
@@ -123,15 +124,19 @@ int cryptpw_main(int argc UNUSED_PARAM, char **argv)
xmove_fd(fd, STDIN_FILENO);
- puts(pw_encrypt(
- argv[0] ? argv[0] : (
- /* Only mkpasswd, and only from tty, prompts.
- * Otherwise it is a plain read. */
- (isatty(STDIN_FILENO) && applet_name[0] == 'm')
+ password = argv[0];
+ if (!password) {
+ /* Only mkpasswd, and only from tty, prompts.
+ * Otherwise it is a plain read. */
+ password = (isatty(STDIN_FILENO) && applet_name[0] == 'm')
? bb_ask_stdin("Password: ")
: xmalloc_fgetline(stdin)
- ),
- salt, 1));
+ ;
+ /* may still be NULL on EOF/error */
+ }
+
+ if (password)
+ puts(pw_encrypt(password, salt, 1));
return EXIT_SUCCESS;
}
diff --git a/loginutils/getty.c b/loginutils/getty.c
index e5d13be..0f060ae 100644
--- a/loginutils/getty.c
+++ b/loginutils/getty.c
@@ -695,6 +695,6 @@ int getty_main(int argc UNUSED_PARAM, char **argv)
/* We use PATH because we trust that root doesn't set "bad" PATH,
* and getty is not suid-root applet */
/* With -n, logname == NULL, and login will ask for username instead */
- BB_EXECLP(G.login, G.login, "--", logname, NULL);
+ BB_EXECLP(G.login, G.login, "--", logname, (char *)0);
bb_error_msg_and_die("can't execute '%s'", G.login);
}
diff --git a/loginutils/login.c b/loginutils/login.c
index 6ec8dc4..a4b19cc 100644
--- a/loginutils/login.c
+++ b/loginutils/login.c
@@ -420,7 +420,7 @@ int login_main(int argc UNUSED_PARAM, char **argv)
* Note that reads (in no-echo mode) trash tty attributes.
* If we get interrupted by SIGALRM, we need to restore attrs.
*/
- if (correct_password(pw))
+ if (ask_and_check_password(pw) > 0)
break;
#endif /* ENABLE_PAM */
auth_failed:
diff --git a/loginutils/passwd.c b/loginutils/passwd.c
index a7006f0..1509089 100644
--- a/loginutils/passwd.c
+++ b/loginutils/passwd.c
@@ -17,11 +17,6 @@
#include <syslog.h>
#include <sys/resource.h> /* setrlimit */
-static void nuke_str(char *str)
-{
- if (str) memset(str, 0, strlen(str));
-}
-
static char* new_password(const struct passwd *pw, uid_t myuid, const char *algo)
{
char salt[MAX_PW_SALT_LEN];
diff --git a/loginutils/su.c b/loginutils/su.c
index 2ec05e1..c51f26f 100644
--- a/loginutils/su.c
+++ b/loginutils/su.c
@@ -93,7 +93,7 @@ int su_main(int argc UNUSED_PARAM, char **argv)
pw = xgetpwnam(opt_username);
- if (cur_uid == 0 || correct_password(pw)) {
+ if (cur_uid == 0 || ask_and_check_password(pw) > 0) {
if (ENABLE_FEATURE_SU_SYSLOG)
syslog(LOG_NOTICE, "%c %s %s:%s",
'+', tty, old_user, opt_username);
diff --git a/loginutils/sulogin.c b/loginutils/sulogin.c
index bd2b09e..2a29099 100644
--- a/loginutils/sulogin.c
+++ b/loginutils/sulogin.c
@@ -14,24 +14,12 @@
#include "libbb.h"
#include <syslog.h>
-//static void catchalarm(int UNUSED_PARAM junk)
-//{
-// exit(EXIT_FAILURE);
-//}
-
-
int sulogin_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int sulogin_main(int argc UNUSED_PARAM, char **argv)
{
- char *cp;
int timeout = 0;
struct passwd *pwd;
const char *shell;
-#if ENABLE_FEATURE_SHADOWPASSWDS
- /* Using _r function to avoid pulling in static buffers */
- char buffer[256];
- struct spwd spw;
-#endif
logmode = LOGMODE_BOTH;
openlog(applet_name, 0, LOG_AUTH);
@@ -62,43 +50,24 @@ int sulogin_main(int argc UNUSED_PARAM, char **argv)
goto auth_error;
}
-#if ENABLE_FEATURE_SHADOWPASSWDS
- {
- /* getspnam_r may return 0 yet set result to NULL.
- * At least glibc 2.4 does this. Be extra paranoid here. */
- struct spwd *result = NULL;
- int r = getspnam_r(pwd->pw_name, &spw, buffer, sizeof(buffer), &result);
- if (r || !result) {
- goto auth_error;
- }
- pwd->pw_passwd = result->sp_pwdp;
- }
-#endif
-
while (1) {
- char *encrypted;
int r;
- /* cp points to a static buffer that is zeroed every time */
- cp = bb_ask(STDIN_FILENO, timeout,
- "Give root password for system maintenance\n"
- "(or type Control-D for normal startup):");
-
- if (!cp || !*cp) {
+ r = ask_and_check_password_extended(pwd, timeout,
+ "Give root password for system maintenance\n"
+ "(or type Control-D for normal startup):"
+ );
+ if (r < 0) {
+ /* ^D, ^C, timeout, or read error */
bb_info_msg("Normal startup");
return 0;
}
- encrypted = pw_encrypt(cp, pwd->pw_passwd, 1);
- r = strcmp(encrypted, pwd->pw_passwd);
- free(encrypted);
- if (r == 0) {
+ if (r > 0) {
break;
}
bb_do_delay(LOGIN_FAIL_DELAY);
bb_info_msg("Login incorrect");
}
- memset(cp, 0, strlen(cp));
-// signal(SIGALRM, SIG_DFL);
bb_info_msg("System Maintenance Mode");
diff --git a/loginutils/vlock.c b/loginutils/vlock.c
index 75af939..44b14e6 100644
--- a/loginutils/vlock.c
+++ b/loginutils/vlock.c
@@ -104,7 +104,7 @@ int vlock_main(int argc UNUSED_PARAM, char **argv)
/* "s" if -a, else "": */ "s" + !option_mask32,
pw->pw_name
);
- if (correct_password(pw)) {
+ if (ask_and_check_password(pw) > 0) {
break;
}
bb_do_delay(LOGIN_FAIL_DELAY);
diff --git a/mailutils/sendmail.c b/mailutils/sendmail.c
index c426e9d..b5aa1d1 100644
--- a/mailutils/sendmail.c
+++ b/mailutils/sendmail.c
@@ -92,25 +92,73 @@ static int smtp_check(const char *fmt, int code)
// strip argument of bad chars
static char *sane_address(char *str)
{
- char *s = str;
- char *p = s;
+ char *s;
+
+ trim(str);
+ s = str;
while (*s) {
- if (isalnum(*s) || '_' == *s || '-' == *s || '.' == *s || '@' == *s) {
- *p++ = *s;
+ if (!isalnum(*s) && !strchr("_-.@", *s)) {
+ bb_error_msg("bad address '%s'", str);
+ /* returning "": */
+ str[0] = '\0';
+ return str;
}
s++;
}
- *p = '\0';
return str;
}
+// check for an address inside angle brackets, if not found fall back to normal
+static char *angle_address(char *str)
+{
+ char *s, *e;
+
+ trim(str);
+ e = last_char_is(str, '>');
+ if (e) {
+ s = strrchr(str, '<');
+ if (s) {
+ *e = '\0';
+ str = s + 1;
+ }
+ }
+ return sane_address(str);
+}
+
static void rcptto(const char *s)
{
+ if (!*s)
+ return;
// N.B. we don't die if recipient is rejected, for the other recipients may be accepted
if (250 != smtp_checkp("RCPT TO:<%s>", s, -1))
bb_error_msg("Bad recipient: <%s>", s);
}
+// send to a list of comma separated addresses
+static void rcptto_list(const char *list)
+{
+ char *str = xstrdup(list);
+ char *s = str;
+ char prev = 0;
+ int in_quote = 0;
+
+ while (*s) {
+ char ch = *s++;
+
+ if (ch == '"' && prev != '\\') {
+ in_quote = !in_quote;
+ } else if (!in_quote && ch == ',') {
+ s[-1] = '\0';
+ rcptto(angle_address(str));
+ str = s;
+ }
+ prev = ch;
+ }
+ if (prev != ',')
+ rcptto(angle_address(str));
+ free(str);
+}
+
int sendmail_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int sendmail_main(int argc UNUSED_PARAM, char **argv)
{
@@ -121,6 +169,13 @@ int sendmail_main(int argc UNUSED_PARAM, char **argv)
char *host = sane_address(safe_gethostname());
unsigned nheaders = 0;
int code;
+ enum {
+ HDR_OTHER = 0,
+ HDR_TOCC,
+ HDR_BCC,
+ } last_hdr = 0;
+ int check_hdr;
+ int has_to = 0;
enum {
//--- standard options
@@ -282,23 +337,36 @@ int sendmail_main(int argc UNUSED_PARAM, char **argv)
// analyze headers
// To: or Cc: headers add recipients
+ check_hdr = (0 == strncasecmp("To:", s, 3));
+ has_to |= check_hdr;
if (opts & OPT_t) {
- if (0 == strncasecmp("To:", s, 3) || 0 == strncasecmp("Bcc:" + 1, s, 3)) {
- rcptto(sane_address(s+3));
+ if (check_hdr || 0 == strncasecmp("Bcc:" + 1, s, 3)) {
+ rcptto_list(s+3);
+ last_hdr = HDR_TOCC;
goto addheader;
}
// Bcc: header adds blind copy (hidden) recipient
if (0 == strncasecmp("Bcc:", s, 4)) {
- rcptto(sane_address(s+4));
+ rcptto_list(s+4);
free(s);
+ last_hdr = HDR_BCC;
continue; // N.B. Bcc: vanishes from headers!
}
}
- if (strchr(s, ':') || (list && isspace(s[0]))) {
+ check_hdr = (list && isspace(s[0]));
+ if (strchr(s, ':') || check_hdr) {
// other headers go verbatim
// N.B. RFC2822 2.2.3 "Long Header Fields" allows for headers to occupy several lines.
// Continuation is denoted by prefixing additional lines with whitespace(s).
// Thanks (stefan.seyfried at googlemail.com) for pointing this out.
+ if (check_hdr && last_hdr != HDR_OTHER) {
+ rcptto_list(s+1);
+ if (last_hdr == HDR_BCC)
+ continue;
+ // N.B. Bcc: vanishes from headers!
+ } else {
+ last_hdr = HDR_OTHER;
+ }
addheader:
// N.B. we allow MAX_HEADERS generic headers at most to prevent attacks
if (MAX_HEADERS && ++nheaders >= MAX_HEADERS)
@@ -309,12 +377,27 @@ int sendmail_main(int argc UNUSED_PARAM, char **argv)
// so stop "analyze headers" mode
reenter:
// put recipients specified on cmdline
+ check_hdr = 1;
while (*argv) {
char *t = sane_address(*argv);
rcptto(t);
//if (MAX_HEADERS && ++nheaders >= MAX_HEADERS)
// goto bail;
- llist_add_to_end(&list, xasprintf("To: %s", t));
+ if (!has_to) {
+ const char *hdr;
+
+ if (check_hdr && argv[1])
+ hdr = "To: %s,";
+ else if (check_hdr)
+ hdr = "To: %s";
+ else if (argv[1])
+ hdr = "To: %s," + 3;
+ else
+ hdr = "To: %s" + 3;
+ llist_add_to_end(&list,
+ xasprintf(hdr, t));
+ check_hdr = 0;
+ }
argv++;
}
// enter "put message" mode
diff --git a/miscutils/Config.src b/miscutils/Config.src
index b9fc196..1da9800 100644
--- a/miscutils/Config.src
+++ b/miscutils/Config.src
@@ -503,18 +503,6 @@ config READAHEAD
As readahead(2) blocks until each file has been read, it is best to
run this applet as a background job.
-config RFKILL
- bool "rfkill"
- default n # doesn't build on Ubuntu 9.04
- select PLATFORM_LINUX
- help
- Enable/disable wireless devices.
-
- rfkill list : list all wireless devices
- rfkill list bluetooth : list all bluetooth devices
- rfkill list 1 : list device corresponding to the given index
- rfkill block|unblock wlan : block/unblock all wlan(wifi) devices
-
config RUNLEVEL
bool "runlevel"
default y
@@ -591,13 +579,6 @@ config VOLNAME
help
Prints a CD-ROM volume name.
-config WALL
- bool "wall"
- default y
- depends on FEATURE_UTMP
- help
- Write a message to all users that are logged in.
-
config WATCHDOG
bool "watchdog"
default y
diff --git a/miscutils/Kbuild.src b/miscutils/Kbuild.src
index 8c49864..9e164f1 100644
--- a/miscutils/Kbuild.src
+++ b/miscutils/Kbuild.src
@@ -36,7 +36,6 @@ lib-$(CONFIG_MOUNTPOINT) += mountpoint.o
lib-$(CONFIG_MT) += mt.o
lib-$(CONFIG_RAIDAUTORUN) += raidautorun.o
lib-$(CONFIG_READAHEAD) += readahead.o
-lib-$(CONFIG_RFKILL) += rfkill.o
lib-$(CONFIG_RUNLEVEL) += runlevel.o
lib-$(CONFIG_RX) += rx.o
lib-$(CONFIG_SETSID) += setsid.o
@@ -46,5 +45,4 @@ lib-$(CONFIG_TIME) += time.o
lib-$(CONFIG_TIMEOUT) += timeout.o
lib-$(CONFIG_TTYSIZE) += ttysize.o
lib-$(CONFIG_VOLNAME) += volname.o
-lib-$(CONFIG_WALL) += wall.o
lib-$(CONFIG_WATCHDOG) += watchdog.o
diff --git a/miscutils/chat.c b/miscutils/chat.c
index ce994f8..bd2abc2 100644
--- a/miscutils/chat.c
+++ b/miscutils/chat.c
@@ -296,7 +296,7 @@ int chat_main(int argc UNUSED_PARAM, char **argv)
full_write(record_fd, buf+buf_len, 1);
}
// dump device input if ECHO ON
- if (echo > 0) {
+ if (echo) {
// if (buf[buf_len] < ' ') {
// full_write(STDERR_FILENO, "^", 1);
// buf[buf_len] += '@';
diff --git a/miscutils/chrt.c b/miscutils/chrt.c
index 91b5397..f2f559f 100644
--- a/miscutils/chrt.c
+++ b/miscutils/chrt.c
@@ -23,9 +23,6 @@
#include <sched.h>
#include "libbb.h"
-#ifndef _POSIX_PRIORITY_SCHEDULING
-#warning your system may be foobared
-#endif
static const struct {
int policy;
diff --git a/miscutils/crontab.c b/miscutils/crontab.c
index 49d1da7..94659bd 100644
--- a/miscutils/crontab.c
+++ b/miscutils/crontab.c
@@ -55,28 +55,6 @@ static void edit_file(const struct passwd *pas, const char *file)
bb_perror_msg_and_die("can't execute '%s'", ptr);
}
-static int open_as_user(const struct passwd *pas, const char *file)
-{
- pid_t pid;
- char c;
-
- pid = xvfork();
- if (pid) { /* PARENT */
- if (wait4pid(pid) == 0) {
- /* exitcode 0: child says it can read */
- return open(file, O_RDONLY);
- }
- return -1;
- }
-
- /* CHILD */
- /* initgroups, setgid, setuid */
- change_identity(pas);
- /* We just try to read one byte. If it works, file is readable
- * under this user. We signal that by exiting with 0. */
- _exit(safe_read(xopen(file, O_RDONLY), &c, 1) < 0);
-}
-
int crontab_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int crontab_main(int argc UNUSED_PARAM, char **argv)
{
@@ -137,10 +115,7 @@ int crontab_main(int argc UNUSED_PARAM, char **argv)
if (!argv[0])
bb_show_usage();
if (NOT_LONE_DASH(argv[0])) {
- src_fd = open_as_user(pas, argv[0]);
- if (src_fd < 0)
- bb_error_msg_and_die("user %s cannot read %s",
- pas->pw_name, argv[0]);
+ src_fd = xopen_as_uid_gid(argv[0], O_RDONLY, pas->pw_uid, pas->pw_gid);
}
}
diff --git a/miscutils/devfsd.c b/miscutils/devfsd.c
index 24c953b..96ffe07 100644
--- a/miscutils/devfsd.c
+++ b/miscutils/devfsd.c
@@ -1083,21 +1083,23 @@ static int get_uid_gid(int flag, const char *string)
{
struct passwd *pw_ent;
struct group *grp_ent;
- static const char *msg;
+ const char *msg;
- if (ENABLE_DEVFSD_VERBOSE)
- msg = "user";
-
- if (isdigit(string[0]) ||((string[0] == '-') && isdigit(string[1])))
+ if (isdigit(string[0]) || ((string[0] == '-') && isdigit(string[1])))
return atoi(string);
if (flag == UID && (pw_ent = getpwnam(string)) != NULL)
return pw_ent->pw_uid;
- if (flag == GID && (grp_ent = getgrnam(string)) != NULL)
- return grp_ent->gr_gid;
- else if (ENABLE_DEVFSD_VERBOSE)
- msg = "group";
+ if (ENABLE_DEVFSD_VERBOSE)
+ msg = "user";
+
+ if (flag == GID) {
+ if ((grp_ent = getgrnam(string)) != NULL)
+ return grp_ent->gr_gid;
+ if (ENABLE_DEVFSD_VERBOSE)
+ msg = "group";
+ }
if (ENABLE_DEVFSD_VERBOSE)
msg_logger(LOG_ERR, "unknown %s: %s, defaulting to %cid=0", msg, string, msg[0]);
diff --git a/miscutils/flash_eraseall.c b/miscutils/flash_eraseall.c
index 0598371..bf9b739 100644
--- a/miscutils/flash_eraseall.c
+++ b/miscutils/flash_eraseall.c
@@ -11,10 +11,11 @@
*/
//usage:#define flash_eraseall_trivial_usage
-//usage: "[-jq] MTD_DEVICE"
+//usage: "[-jNq] MTD_DEVICE"
//usage:#define flash_eraseall_full_usage "\n\n"
//usage: "Erase an MTD device\n"
//usage: "\n -j Format the device for jffs2"
+//usage: "\n -N Don't skip bad blocks"
//usage: "\n -q Don't display progress messages"
#include "libbb.h"
@@ -22,9 +23,9 @@
#include <linux/jffs2.h>
#define OPTION_J (1 << 0)
-#define OPTION_Q (1 << 1)
-#define IS_NAND (1 << 2)
-#define BBTEST (1 << 3)
+#define OPTION_N (1 << 1)
+#define OPTION_Q (1 << 2)
+#define IS_NAND (1 << 3)
/* mtd/jffs2-user.h used to have this atrocity:
extern int target_endian;
@@ -71,7 +72,7 @@ int flash_eraseall_main(int argc UNUSED_PARAM, char **argv)
char *mtd_name;
opt_complementary = "=1";
- flags = BBTEST | getopt32(argv, "jq");
+ flags = getopt32(argv, "jNq");
mtd_name = argv[optind];
fd = xopen(mtd_name, O_RDWR);
@@ -139,7 +140,7 @@ int flash_eraseall_main(int argc UNUSED_PARAM, char **argv)
for (erase.start = 0; erase.start < meminfo.size;
erase.start += meminfo.erasesize) {
- if (flags & BBTEST) {
+ if (!(flags & OPTION_N)) {
int ret;
loff_t offset = erase.start;
@@ -154,7 +155,7 @@ int flash_eraseall_main(int argc UNUSED_PARAM, char **argv)
* types e.g. NOR
*/
if (errno == EOPNOTSUPP) {
- flags &= ~BBTEST;
+ flags |= OPTION_N;
if (flags & IS_NAND)
bb_error_msg_and_die("bad block check not available");
} else {
diff --git a/miscutils/flashcp.c b/miscutils/flashcp.c
index 1704479..a834a7f 100644
--- a/miscutils/flashcp.c
+++ b/miscutils/flashcp.c
@@ -16,6 +16,7 @@
#include "libbb.h"
#include <mtd/mtd-user.h>
+/* If 1, simulates "flashing" by writing to existing regular file */
#define MTD_DEBUG 0
#define OPT_v (1 << 0)
@@ -32,7 +33,7 @@ static void progress(int mode, uoff_t count, uoff_t total)
if (total)
percent = (unsigned) (percent / total);
printf("\r%s: %"OFF_FMT"u/%"OFF_FMT"u (%u%%) ",
- (mode == 0) ? "Erasing block" : ((mode == 1) ? "Writing kb" : "Verifying kb"),
+ (mode < 0) ? "Erasing block" : ((mode == 0) ? "Writing kb" : "Verifying kb"),
count, total, (unsigned)percent);
fflush_all();
}
@@ -97,8 +98,7 @@ int flashcp_main(int argc UNUSED_PARAM, char **argv)
#endif
e.start = 0;
for (i = 1; i <= erase_count; i++) {
- progress(0, i, erase_count);
- errno = 0;
+ progress(-1, i, erase_count);
#if !MTD_DEBUG
if (ioctl(fd_d, MEMERASE, &e) < 0) {
bb_perror_msg_and_die("erase error at 0x%llx on %s",
@@ -113,7 +113,7 @@ int flashcp_main(int argc UNUSED_PARAM, char **argv)
/* doing this outer loop gives significantly smaller code
* than doing two separate loops for writing and verifying */
- for (i = 1; i <= 2; i++) {
+ for (i = 0; i <= 1; i++) {
uoff_t done;
unsigned count;
@@ -122,25 +122,29 @@ int flashcp_main(int argc UNUSED_PARAM, char **argv)
done = 0;
count = BUFSIZE;
while (1) {
- uoff_t rem = statb.st_size - done;
+ uoff_t rem;
+
+ progress(i, done / 1024, (uoff_t)statb.st_size / 1024);
+ rem = statb.st_size - done;
if (rem == 0)
break;
if (rem < BUFSIZE)
count = rem;
- progress(i, done / 1024, (uoff_t)statb.st_size / 1024);
xread(fd_f, buf, count);
- if (i == 1) {
+ if (i == 0) {
int ret;
+ if (count < BUFSIZE)
+ memset((char*)buf + count, 0, BUFSIZE - count);
errno = 0;
- ret = full_write(fd_d, buf, count);
- if (ret != (int) count) {
+ ret = full_write(fd_d, buf, BUFSIZE);
+ if (ret != BUFSIZE) {
bb_perror_msg_and_die("write error at 0x%"OFF_FMT"x on %s, "
"write returned %d",
done, devicename, ret);
}
- } else { /* i == 2 */
+ } else { /* i == 1 */
xread(fd_d, buf2, count);
- if (memcmp(buf, buf2, count)) {
+ if (memcmp(buf, buf2, count) != 0) {
bb_error_msg_and_die("verification mismatch at 0x%"OFF_FMT"x", done);
}
}
diff --git a/miscutils/hdparm.c b/miscutils/hdparm.c
index 69726ae..f0e9c9d 100644
--- a/miscutils/hdparm.c
+++ b/miscutils/hdparm.c
@@ -465,14 +465,14 @@ static void on_off(int value)
static void print_flag_on_off(int get_arg, const char *s, unsigned long arg)
{
if (get_arg) {
- printf(" setting %s to %ld", s, arg);
+ printf(" setting %s to %lu", s, arg);
on_off(arg);
}
}
static void print_value_on_off(const char *str, unsigned long argp)
{
- printf(" %s\t= %2ld", str, argp);
+ printf(" %s\t= %2lu", str, argp);
on_off(argp != 0);
}
@@ -1509,7 +1509,7 @@ static void bus_state_value(unsigned value)
else if (value == BUSSTATE_TRISTATE)
printf(" (tristate)\n");
else
- printf(" (unknown: %d)\n", value);
+ printf(" (unknown: %u)\n", value);
}
#endif
@@ -1589,7 +1589,7 @@ static void interpret_xfermode(unsigned xfermode)
static void print_flag(int flag, const char *s, unsigned long value)
{
if (flag)
- printf(" setting %s to %ld\n", s, value);
+ printf(" setting %s to %lu\n", s, value);
}
static void process_dev(char *devname)
diff --git a/miscutils/less.c b/miscutils/less.c
index 622969f..599e65c 100644
--- a/miscutils/less.c
+++ b/miscutils/less.c
@@ -1608,6 +1608,9 @@ static void sigwinch_handler(int sig UNUSED_PARAM)
int less_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int less_main(int argc, char **argv)
{
+ char *tty_name;
+ int tty_fd;
+
INIT_G();
/* TODO: -x: do not interpret backspace, -xx: tab also */
@@ -1637,10 +1640,28 @@ int less_main(int argc, char **argv)
if (option_mask32 & FLAG_TILDE)
empty_line_marker = "";
- kbd_fd = open(CURRENT_TTY, O_RDONLY);
- if (kbd_fd < 0)
- return bb_cat(argv);
- ndelay_on(kbd_fd);
+ /* Some versions of less can survive w/o controlling tty,
+ * try to do the same. This also allows to specify an alternative
+ * tty via "less 1<>TTY".
+ * We don't try to use STDOUT_FILENO directly,
+ * since we want to set this fd to non-blocking mode,
+ * and not bother with restoring it on exit.
+ */
+ tty_name = xmalloc_ttyname(STDOUT_FILENO);
+ if (tty_name) {
+ tty_fd = open(tty_name, O_RDONLY);
+ free(tty_name);
+ if (tty_fd < 0)
+ goto try_ctty;
+ } else {
+ /* Try controlling tty */
+ try_ctty:
+ tty_fd = open(CURRENT_TTY, O_RDONLY);
+ if (tty_fd < 0)
+ return bb_cat(argv);
+ }
+ ndelay_on(tty_fd);
+ kbd_fd = tty_fd; /* save in a global */
tcgetattr(kbd_fd, &term_orig);
term_less = term_orig;
diff --git a/miscutils/man.c b/miscutils/man.c
index e380fda..d3e832b 100644
--- a/miscutils/man.c
+++ b/miscutils/man.c
@@ -162,7 +162,7 @@ int man_main(int argc UNUSED_PARAM, char **argv)
opt = getopt32(argv, "+aw");
argv += optind;
- sec_list = xstrdup("1:2:3:4:5:6:7:8:9");
+ sec_list = xstrdup("0p:1:1p:2:3:3p:4:5:6:7:8:9");
/* Last valid man_path_list[] is [0x10] */
count_mp = 0;
man_path_list = xzalloc(0x11 * sizeof(man_path_list[0]));
diff --git a/miscutils/nandwrite.c b/miscutils/nandwrite.c
index 5dc1373..d5ae1e7 100644
--- a/miscutils/nandwrite.c
+++ b/miscutils/nandwrite.c
@@ -23,7 +23,7 @@
//config: Dump the content of raw NAND chip
//applet:IF_NANDWRITE(APPLET(nandwrite, BB_DIR_USR_SBIN, BB_SUID_DROP))
-//applet:IF_NANDWRITE(APPLET_ODDNAME(nanddump, nandwrite, BB_DIR_USR_SBIN, BB_SUID_DROP, nanddump))
+//applet:IF_NANDDUMP(APPLET_ODDNAME(nanddump, nandwrite, BB_DIR_USR_SBIN, BB_SUID_DROP, nanddump))
//kbuild:lib-$(CONFIG_NANDWRITE) += nandwrite.o
//kbuild:lib-$(CONFIG_NANDDUMP) += nandwrite.o
@@ -31,14 +31,14 @@
//usage:#define nandwrite_trivial_usage
//usage: "[-p] [-s ADDR] MTD_DEVICE [FILE]"
//usage:#define nandwrite_full_usage "\n\n"
-//usage: "Write to the specified MTD device\n"
+//usage: "Write to MTD_DEVICE\n"
//usage: "\n -p Pad to page size"
//usage: "\n -s ADDR Start address"
//usage:#define nanddump_trivial_usage
-//usage: "[-o] [-b] [-s ADDR] [-f FILE] MTD_DEVICE"
+//usage: "[-o] [-b] [-s ADDR] [-l LEN] [-f FILE] MTD_DEVICE"
//usage:#define nanddump_full_usage "\n\n"
-//usage: "Dump the specified MTD device\n"
+//usage: "Dump MTD_DEVICE\n"
//usage: "\n -o Dump oob data"
//usage: "\n -b Omit bad block from the dump"
//usage: "\n -s ADDR Start address"
diff --git a/miscutils/rfkill.c b/miscutils/rfkill.c
index 4671973..7411b6f 100644
--- a/miscutils/rfkill.c
+++ b/miscutils/rfkill.c
@@ -7,6 +7,23 @@
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
+//config:config RFKILL
+//config: bool "rfkill"
+//config: default n # doesn't build on Ubuntu 9.04
+//config: select PLATFORM_LINUX
+//config: help
+//config: Enable/disable wireless devices.
+//config:
+//config: rfkill list : list all wireless devices
+//config: rfkill list bluetooth : list all bluetooth devices
+//config: rfkill list 1 : list device corresponding to the given index
+//config: rfkill block|unblock wlan : block/unblock all wlan(wifi) devices
+//config:
+
+//applet:IF_RFKILL(APPLET(rfkill, BB_DIR_USR_SBIN, BB_SUID_DROP))
+
+//kbuild:lib-$(CONFIG_RFKILL) += rfkill.o
+
//usage:#define rfkill_trivial_usage
//usage: "COMMAND [INDEX|TYPE]"
//usage:#define rfkill_full_usage "\n\n"
diff --git a/miscutils/setserial.c b/miscutils/setserial.c
index 2a034e3..dfed330 100644
--- a/miscutils/setserial.c
+++ b/miscutils/setserial.c
@@ -223,7 +223,7 @@ struct serial_struct {
//usage: " -v Verbose\n"
//usage: "\n"
//usage: "Parameters: (* = takes an argument, ^ = can be turned off by preceding ^)\n"
-//usage: " *port, *irq, *divisor, *uart, *baund_base, *close_delay, *closing_wait,\n"
+//usage: " *port, *irq, *divisor, *uart, *baud_base, *close_delay, *closing_wait,\n"
//usage: " ^fourport, ^auto_irq, ^skip_test, ^sak, ^session_lockout, ^pgrp_lockout,\n"
//usage: " ^callout_nohup, ^split_termios, ^hup_notify, ^low_latency, autoconfig,\n"
//usage: " spd_normal, spd_hi, spd_vhi, spd_shi, spd_warp, spd_cust\n"
@@ -311,7 +311,7 @@ static const char commands[] =
"irq\0"
"divisor\0"
"uart\0"
- "baund_base\0"
+ "baud_base\0"
"close_delay\0"
"closing_wait\0"
diff --git a/miscutils/setsid.c b/miscutils/setsid.c
index ad2c8a4..637081b 100644
--- a/miscutils/setsid.c
+++ b/miscutils/setsid.c
@@ -31,7 +31,17 @@ int setsid_main(int argc UNUSED_PARAM, char **argv)
/* setsid() is allowed only when we are not a process group leader.
* Otherwise our PID serves as PGID of some existing process group
- * and cannot be used as PGID of a new process group. */
+ * and cannot be used as PGID of a new process group.
+ *
+ * Example: setsid() below fails when run alone in interactive shell:
+ * $ setsid PROG
+ * because shell's child (setsid) is put in a new process group.
+ * But doesn't fail if shell is not interactive
+ * (and therefore doesn't create process groups for pipes),
+ * or if setsid is not the first process in the process group:
+ * $ true | setsid PROG
+ * or if setsid is executed in backquotes (`setsid PROG`)...
+ */
if (setsid() < 0) {
pid_t pid = fork_or_rexec(argv);
if (pid != 0) {
@@ -43,7 +53,7 @@ int setsid_main(int argc UNUSED_PARAM, char **argv)
* However, the code is larger and upstream
* does not do such trick.
*/
- exit(EXIT_SUCCESS);
+ return EXIT_SUCCESS;
}
/* child */
diff --git a/miscutils/ubi_tools.c b/miscutils/ubi_tools.c
index dd99a44..b713935 100644
--- a/miscutils/ubi_tools.c
+++ b/miscutils/ubi_tools.c
@@ -66,14 +66,6 @@
#endif
#include <mtd/ubi-user.h>
-#define OPTION_M (1 << 0)
-#define OPTION_D (1 << 1)
-#define OPTION_n (1 << 2)
-#define OPTION_N (1 << 3)
-#define OPTION_s (1 << 4)
-#define OPTION_a (1 << 5)
-#define OPTION_t (1 << 6)
-
#define do_attach (ENABLE_UBIATTACH && applet_name[3] == 'a')
#define do_detach (ENABLE_UBIDETACH && applet_name[3] == 'd')
#define do_mkvol (ENABLE_UBIMKVOL && applet_name[3] == 'm')
@@ -81,191 +73,250 @@
#define do_rsvol (ENABLE_UBIRSVOL && applet_name[4] == 's')
#define do_update (ENABLE_UBIUPDATEVOL && applet_name[3] == 'u')
-//usage:#define ubiattach_trivial_usage
-//usage: "-m MTD_NUM [-d UBI_NUM] UBI_CTRL_DEV"
-//usage:#define ubiattach_full_usage "\n\n"
-//usage: "Attach MTD device to UBI\n"
-//usage: "\n -m MTD_NUM MTD device number to attach"
-//usage: "\n -d UBI_NUM UBI device number to assign"
-//usage:
-//usage:#define ubidetach_trivial_usage
-//usage: "-d UBI_NUM UBI_CTRL_DEV"
-//usage:#define ubidetach_full_usage "\n\n"
-//usage: "Detach MTD device from UBI\n"
-//usage: "\n -d UBI_NUM UBI device number"
-//usage:
-//usage:#define ubimkvol_trivial_usage
-//usage: "UBI_DEVICE -N NAME -s SIZE"
-//usage:#define ubimkvol_full_usage "\n\n"
-//usage: "Create UBI volume\n"
-//usage: "\n -a ALIGNMENT Volume alignment (default 1)"
-//usage: "\n -n VOLID Volume ID, if not specified, it"
-//usage: "\n will be assigned automatically"
-//usage: "\n -N NAME Volume name"
-//usage: "\n -s SIZE Size in bytes"
-//usage: "\n -t TYPE Volume type (static|dynamic)"
-//usage:
-//usage:#define ubirmvol_trivial_usage
-//usage: "UBI_DEVICE -n VOLID"
-//usage:#define ubirmvol_full_usage "\n\n"
-//usage: "Remove UBI volume\n"
-//usage: "\n -n VOLID Volume ID"
-//usage:
-//usage:#define ubirsvol_trivial_usage
-//usage: "UBI_DEVICE -n VOLID -s SIZE"
-//usage:#define ubirsvol_full_usage "\n\n"
-//usage: "Resize UBI volume\n"
-//usage: "\n -n VOLID Volume ID to resize"
-//usage: "\n -s SIZE Size in bytes"
-//usage:
-//usage:#define ubiupdatevol_trivial_usage
-//usage: "UBI_DEVICE [IMG_FILE]"
-//usage:#define ubiupdatevol_full_usage "\n\n"
-//usage: "Update UBI volume\n"
-//usage: "\n -t Truncate UBI volume"
-//usage: "\n -s SIZE Bytes in input (if reading stdin)"
+static unsigned get_num_from_file(const char *path, unsigned max, const char *errmsg)
+{
+ char buf[sizeof(long long)*3];
+ unsigned long long num;
+
+ if (open_read_close(path, buf, sizeof(buf)) < 0)
+ bb_perror_msg_and_die(errmsg, path);
+ /* It can be \n terminated, xatoull won't work well */
+ if (sscanf(buf, "%llu", &num) != 1 || num > max)
+ bb_error_msg_and_die(errmsg, path);
+ return num;
+}
+/* To prevent malloc(1G) accidents */
+#define MAX_SANE_ERASEBLOCK (16*1024*1024)
int ubi_tools_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int ubi_tools_main(int argc UNUSED_PARAM, char **argv)
{
+ static const struct suffix_mult size_suffixes[] = {
+ { "KiB", 1024 },
+ { "MiB", 1024*1024 },
+ { "GiB", 1024*1024*1024 },
+ { "", 0 }
+ };
+
unsigned opts;
char *ubi_ctrl;
- //struct stat st;
int fd;
int mtd_num;
int dev_num = UBI_DEV_NUM_AUTO;
int vol_id = UBI_VOL_NUM_AUTO;
- char *vol_name = NULL;
- int size_bytes;
+ char *vol_name;
+ unsigned long long size_bytes = size_bytes; /* for compiler */
+ char *size_bytes_str;
int alignment = 1;
- char *type = NULL;
+ char *type;
+ union {
+ struct ubi_attach_req attach_req;
+ struct ubi_mkvol_req mkvol_req;
+ struct ubi_rsvol_req rsvol_req;
+ } req_structs;
+#define attach_req req_structs.attach_req
+#define mkvol_req req_structs.mkvol_req
+#define rsvol_req req_structs.rsvol_req
+ char path[sizeof("/sys/class/ubi/ubi%d_%d/usable_eb_size")
+ + 2 * sizeof(int)*3 + /*just in case:*/ 16];
+#define path_sys_class_ubi_ubi (path + sizeof("/sys/class/ubi/ubi")-1)
+
+ strcpy(path, "/sys/class/ubi/ubi");
+ memset(&req_structs, 0, sizeof(req_structs));
+
+ if (do_mkvol) {
+ opt_complementary = "-1:d+:n+:a+";
+ opts = getopt32(argv, "md:n:N:s:a:t:",
+ &dev_num, &vol_id,
+ &vol_name, &size_bytes_str, &alignment, &type
+ );
+ } else {
+ opt_complementary = "-1:m+:d+:n+:a+";
+ opts = getopt32(argv, "m:d:n:N:s:a:t:",
+ &mtd_num, &dev_num, &vol_id,
+ &vol_name, &size_bytes_str, &alignment, &type
+ );
+ }
+#define OPTION_m (1 << 0)
+#define OPTION_d (1 << 1)
+#define OPTION_n (1 << 2)
+#define OPTION_N (1 << 3)
+#define OPTION_s (1 << 4)
+#define OPTION_a (1 << 5)
+#define OPTION_t (1 << 6)
- opt_complementary = "-1:m+:d+:n+:s+:a+";
- opts = getopt32(argv, "m:d:n:N:s:a:t::",
- &mtd_num, &dev_num, &vol_id,
- &vol_name, &size_bytes, &alignment, &type
- );
- ubi_ctrl = argv[optind];
+ if (opts & OPTION_s)
+ size_bytes = xatoull_sfx(size_bytes_str, size_suffixes);
+ argv += optind;
+ ubi_ctrl = *argv++;
fd = xopen(ubi_ctrl, O_RDWR);
//xfstat(fd, &st, ubi_ctrl);
//if (!S_ISCHR(st.st_mode))
// bb_error_msg_and_die("%s: not a char device", ubi_ctrl);
+//usage:#define ubiattach_trivial_usage
+//usage: "-m MTD_NUM [-d UBI_NUM] UBI_CTRL_DEV"
+//usage:#define ubiattach_full_usage "\n\n"
+//usage: "Attach MTD device to UBI\n"
+//usage: "\n -m MTD_NUM MTD device number to attach"
+//usage: "\n -d UBI_NUM UBI device number to assign"
if (do_attach) {
- struct ubi_attach_req req;
- if (!(opts & OPTION_M))
+ if (!(opts & OPTION_m))
bb_error_msg_and_die("%s device not specified", "MTD");
- memset(&req, 0, sizeof(req));
- req.mtd_num = mtd_num;
- req.ubi_num = dev_num;
+ attach_req.mtd_num = mtd_num;
+ attach_req.ubi_num = dev_num;
- xioctl(fd, UBI_IOCATT, &req);
+ xioctl(fd, UBI_IOCATT, &attach_req);
} else
+
+//usage:#define ubidetach_trivial_usage
+//usage: "-d UBI_NUM UBI_CTRL_DEV"
+//usage:#define ubidetach_full_usage "\n\n"
+//usage: "Detach MTD device from UBI\n"
+//usage: "\n -d UBI_NUM UBI device number"
if (do_detach) {
- if (!(opts & OPTION_D))
+ if (!(opts & OPTION_d))
bb_error_msg_and_die("%s device not specified", "UBI");
+ /* FIXME? kernel expects int32_t* here: */
xioctl(fd, UBI_IOCDET, &dev_num);
} else
+
+//usage:#define ubimkvol_trivial_usage
+//usage: "UBI_DEVICE -N NAME [-s SIZE | -m]"
+//usage:#define ubimkvol_full_usage "\n\n"
+//usage: "Create UBI volume\n"
+//usage: "\n -a ALIGNMENT Volume alignment (default 1)"
+//usage: "\n -m Set volume size to maximum available"
+//usage: "\n -n VOLID Volume ID. If not specified,"
+//usage: "\n assigned automatically"
+//usage: "\n -N NAME Volume name"
+//usage: "\n -s SIZE Size in bytes"
+//usage: "\n -t TYPE Volume type (static|dynamic)"
if (do_mkvol) {
- struct ubi_mkvol_req req;
- int vol_name_len;
+ if (opts & OPTION_m) {
+ unsigned leb_avail;
+ unsigned leb_size;
+ unsigned num;
+ char *p;
+
+ if (sscanf(ubi_ctrl, "/dev/ubi%u", &num) != 1)
+ bb_error_msg_and_die("wrong format of UBI device name");
+
+ p = path_sys_class_ubi_ubi + sprintf(path_sys_class_ubi_ubi, "%u/", num);
+
+ strcpy(p, "avail_eraseblocks");
+ leb_avail = get_num_from_file(path, UINT_MAX, "Can't get available eraseblocks from '%s'");
+
+ strcpy(p, "eraseblock_size");
+ leb_size = get_num_from_file(path, MAX_SANE_ERASEBLOCK, "Can't get eraseblock size from '%s'");
+
+ size_bytes = leb_avail * (unsigned long long)leb_size;
+ //if (size_bytes <= 0)
+ // bb_error_msg_and_die("%s invalid maximum size calculated", "UBI");
+ } else
if (!(opts & OPTION_s))
- bb_error_msg_and_die("%s size not specified", "UBI");
+ bb_error_msg_and_die("size not specified");
+
if (!(opts & OPTION_N))
- bb_error_msg_and_die("%s name not specified", "UBI");
- vol_name_len = strlen(vol_name);
- if (vol_name_len > UBI_MAX_VOLUME_NAME)
- bb_error_msg_and_die("%s volume name too long", "UBI");
-
- memset(&req, 0, sizeof(req));
- req.vol_id = vol_id;
- if ((opts & OPTION_t) && type) {
- if (type[0] == 's')
- req.vol_type = UBI_STATIC_VOLUME;
- else
- req.vol_type = UBI_DYNAMIC_VOLUME;
- } else {
- req.vol_type = UBI_DYNAMIC_VOLUME;
- }
- req.alignment = alignment;
- req.bytes = size_bytes;
- strncpy(req.name, vol_name, UBI_MAX_VOLUME_NAME);
- req.name_len = vol_name_len;
+ bb_error_msg_and_die("name not specified");
+
+ mkvol_req.vol_id = vol_id;
+ mkvol_req.vol_type = UBI_DYNAMIC_VOLUME;
+ if ((opts & OPTION_t) && type[0] == 's')
+ mkvol_req.vol_type = UBI_STATIC_VOLUME;
+ mkvol_req.alignment = alignment;
+ mkvol_req.bytes = size_bytes; /* signed int64_t */
+ strncpy(mkvol_req.name, vol_name, UBI_MAX_VOLUME_NAME);
+ mkvol_req.name_len = strlen(vol_name);
+ if (mkvol_req.name_len > UBI_MAX_VOLUME_NAME)
+ bb_error_msg_and_die("volume name too long: '%s'", vol_name);
- xioctl(fd, UBI_IOCMKVOL, &req);
+ xioctl(fd, UBI_IOCMKVOL, &mkvol_req);
} else
+
+//usage:#define ubirmvol_trivial_usage
+//usage: "UBI_DEVICE -n VOLID"
+//usage:#define ubirmvol_full_usage "\n\n"
+//usage: "Remove UBI volume\n"
+//usage: "\n -n VOLID Volume ID"
if (do_rmvol) {
if (!(opts & OPTION_n))
- bb_error_msg_and_die("%s volume id not specified", "UBI");
+ bb_error_msg_and_die("volume id not specified");
+ /* FIXME? kernel expects int32_t* here: */
xioctl(fd, UBI_IOCRMVOL, &vol_id);
} else
+
+//usage:#define ubirsvol_trivial_usage
+//usage: "UBI_DEVICE -n VOLID -s SIZE"
+//usage:#define ubirsvol_full_usage "\n\n"
+//usage: "Resize UBI volume\n"
+//usage: "\n -n VOLID Volume ID"
+//usage: "\n -s SIZE Size in bytes"
if (do_rsvol) {
- struct ubi_rsvol_req req;
if (!(opts & OPTION_s))
- bb_error_msg_and_die("%s size not specified", "UBI");
+ bb_error_msg_and_die("size not specified");
if (!(opts & OPTION_n))
- bb_error_msg_and_die("%s volume id not specified", "UBI");
+ bb_error_msg_and_die("volume id not specified");
- memset(&req, 0, sizeof(req));
- req.bytes = size_bytes;
- req.vol_id = vol_id;
+ rsvol_req.bytes = size_bytes; /* signed int64_t */
+ rsvol_req.vol_id = vol_id;
- xioctl(fd, UBI_IOCRSVOL, &req);
+ xioctl(fd, UBI_IOCRSVOL, &rsvol_req);
} else
+
+//usage:#define ubiupdatevol_trivial_usage
+//usage: "UBI_DEVICE [-t | [-s SIZE] IMG_FILE]"
+//usage:#define ubiupdatevol_full_usage "\n\n"
+//usage: "Update UBI volume\n"
+//usage: "\n -t Truncate to zero size"
+//usage: "\n -s SIZE Size in bytes to resize to"
if (do_update) {
- long long bytes;
+ int64_t bytes64;
if (opts & OPTION_t) {
- // truncate the volume by starting an update for size 0
- bytes = 0;
- xioctl(fd, UBI_IOCVOLUP, &bytes);
+ /* truncate the volume by starting an update for size 0 */
+ bytes64 = 0;
+ /* this ioctl expects int64_t* parameter */
+ xioctl(fd, UBI_IOCVOLUP, &bytes64);
}
else {
struct stat st;
- char buf[sizeof("/sys/class/ubi/ubi%d_%d/usable_eb_size") + 2 * sizeof(int)*3];
- int input_fd;
unsigned ubinum, volnum;
unsigned leb_size;
ssize_t len;
char *input_data;
- // Make assumption that device not is in normal format.
- // Removes need for scanning sysfs tree as full libubi does
+ /* Assume that device is in normal format. */
+ /* Removes need for scanning sysfs tree as full libubi does. */
if (sscanf(ubi_ctrl, "/dev/ubi%u_%u", &ubinum, &volnum) != 2)
- bb_error_msg_and_die("%s volume node not in correct format", "UBI");
-
- sprintf(buf, "/sys/class/ubi/ubi%u_%u/usable_eb_size", ubinum, volnum);
- if (open_read_close(buf, buf, sizeof(buf)) <= 0)
- bb_error_msg_and_die("%s could not get LEB size", "UBI");
- if (sscanf(buf, "%u", &leb_size) != 1)
- bb_error_msg_and_die("%s could not get LEB size", "UBI");
-
- if (opts & OPTION_s) {
- input_fd = 0;
- } else {
- if (!argv[optind+1])
+ bb_error_msg_and_die("wrong format of UBI device name");
+
+ sprintf(path_sys_class_ubi_ubi, "%u_%u/usable_eb_size", ubinum, volnum);
+ leb_size = get_num_from_file(path, MAX_SANE_ERASEBLOCK, "Can't get usable eraseblock size from '%s'");
+
+ if (!(opts & OPTION_s)) {
+ if (!*argv)
bb_show_usage();
- xstat(argv[optind+1], &st);
+ xstat(*argv, &st);
size_bytes = st.st_size;
- input_fd = xopen(argv[optind+1], O_RDONLY);
+ xmove_fd(xopen(*argv, O_RDONLY), STDIN_FILENO);
}
- bytes = size_bytes;
- xioctl(fd, UBI_IOCVOLUP, &bytes);
+ bytes64 = size_bytes;
+ /* this ioctl expects signed int64_t* parameter */
+ xioctl(fd, UBI_IOCVOLUP, &bytes64);
input_data = xmalloc(leb_size);
- while ((len = full_read(input_fd, input_data, leb_size)) > 0) {
+ while ((len = full_read(STDIN_FILENO, input_data, leb_size)) > 0) {
xwrite(fd, input_data, len);
}
if (len < 0)
- bb_error_msg_and_die("%s volume update failed", "UBI");
- if (ENABLE_FEATURE_CLEAN_UP)
- close(input_fd);
+ bb_perror_msg_and_die("UBI volume update failed");
}
}
diff --git a/miscutils/wall.c b/miscutils/wall.c
index 762f53b..bb709ee 100644
--- a/miscutils/wall.c
+++ b/miscutils/wall.c
@@ -6,6 +6,18 @@
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
+//config:config WALL
+//config: bool "wall"
+//config: default y
+//config: depends on FEATURE_UTMP
+//config: help
+//config: Write a message to all users that are logged in.
+
+/* Needs to be run by root or be suid root - needs to write to /dev/TTY: */
+//applet:IF_WALL(APPLET(wall, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
+
+//kbuild:lib-$(CONFIG_WALL) += wall.o
+
//usage:#define wall_trivial_usage
//usage: "[FILE]"
//usage:#define wall_full_usage "\n\n"
@@ -22,8 +34,15 @@ int wall_main(int argc UNUSED_PARAM, char **argv)
{
struct utmp *ut;
char *msg;
- int fd = argv[1] ? xopen(argv[1], O_RDONLY) : STDIN_FILENO;
+ int fd;
+ fd = STDIN_FILENO;
+ if (argv[1]) {
+ /* The applet is setuid.
+ * Access to the file must be under user's uid/gid.
+ */
+ fd = xopen_as_uid_gid(argv[1], O_RDONLY, getuid(), getgid());
+ }
msg = xmalloc_read(fd, NULL);
if (ENABLE_FEATURE_CLEAN_UP && argv[1])
close(fd);
diff --git a/modutils/modprobe.c b/modutils/modprobe.c
index 7ea5a11..f6f45f3 100644
--- a/modutils/modprobe.c
+++ b/modutils/modprobe.c
@@ -175,7 +175,7 @@ struct globals {
} FIX_ALIASING;
#define G (*ptr_to_globals)
#define INIT_G() do { \
- SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \
+ SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \
} while (0)
diff --git a/networking/Config.src b/networking/Config.src
index e1ae0c9..ca0ddcd 100644
--- a/networking/Config.src
+++ b/networking/Config.src
@@ -970,16 +970,18 @@ config FEATURE_WGET_LONG_OPTIONS
Support long options for the wget applet.
config FEATURE_WGET_TIMEOUT
- bool "Enable read timeout option -T SEC"
+ bool "Enable timeout option -T SEC"
default y
depends on WGET
help
- Supports network read timeout for wget, so that wget will give
- up and timeout when reading network data, through the -T command
- line option. Currently only network data read timeout is
- supported (i.e., timeout is not applied to the DNS nor TCP
- connection initialization). When FEATURE_WGET_LONG_OPTIONS is
- also enabled, the --timeout option will work in addition to -T.
+ Supports network read and connect timeouts for wget,
+ so that wget will give up and timeout, through the -T
+ command line option.
+
+ Currently only connect and network data read timeout are
+ supported (i.e., timeout is not applied to the DNS query). When
+ FEATURE_WGET_LONG_OPTIONS is also enabled, the --timeout option
+ will work in addition to -T.
config ZCIP
bool "zcip"
diff --git a/networking/arp.c b/networking/arp.c
index 1c99987..e79b1b6 100644
--- a/networking/arp.c
+++ b/networking/arp.c
@@ -22,12 +22,12 @@
//usage:#define arp_full_usage "\n\n"
//usage: "Manipulate ARP cache\n"
//usage: "\n -a Display (all) hosts"
-//usage: "\n -s Set new ARP entry"
-//usage: "\n -d Delete a specified entry"
+//usage: "\n -d Delete ARP entry"
+//usage: "\n -s Set new entry"
//usage: "\n -v Verbose"
//usage: "\n -n Don't resolve names"
//usage: "\n -i IF Network interface"
-//usage: "\n -D Read <hwaddr> from given device"
+//usage: "\n -D Read HWADDR from IFACE"
//usage: "\n -A,-p AF Protocol family"
//usage: "\n -H HWTYPE Hardware address type"
@@ -213,16 +213,15 @@ static int arp_del(char **args)
}
/* Get the hardware address to a specified interface name */
-static void arp_getdevhw(char *ifname, struct sockaddr *sa,
- const struct hwtype *hwt)
+static void arp_getdevhw(char *ifname, struct sockaddr *sa)
{
struct ifreq ifr;
const struct hwtype *xhw;
strcpy(ifr.ifr_name, ifname);
ioctl_or_perror_and_die(sockfd, SIOCGIFHWADDR, &ifr,
- "cant get HW-Address for '%s'", ifname);
- if (hwt && (ifr.ifr_hwaddr.sa_family != hw->type)) {
+ "can't get HW-Address for '%s'", ifname);
+ if (hw_set && (ifr.ifr_hwaddr.sa_family != hw->type)) {
bb_error_msg_and_die("protocol type mismatch");
}
memcpy(sa, &(ifr.ifr_hwaddr), sizeof(struct sockaddr));
@@ -233,8 +232,8 @@ static void arp_getdevhw(char *ifname, struct sockaddr *sa,
xhw = get_hwntype(-1);
}
bb_error_msg("device '%s' has HW address %s '%s'",
- ifname, xhw->name,
- xhw->print((unsigned char *) &ifr.ifr_hwaddr.sa_data));
+ ifname, xhw->name,
+ xhw->print((unsigned char *) &ifr.ifr_hwaddr.sa_data));
}
}
@@ -261,7 +260,7 @@ static int arp_set(char **args)
bb_error_msg_and_die("need hardware address");
}
if (option_mask32 & ARP_OPT_D) {
- arp_getdevhw(*args++, &req.arp_ha, hw_set ? hw : NULL);
+ arp_getdevhw(*args++, &req.arp_ha);
} else {
if (hw->input(*args++, &req.arp_ha) < 0) {
bb_error_msg_and_die("invalid hardware address");
@@ -460,12 +459,12 @@ static int arp_show(char *name)
arp_disp(hostname, ip, type, flags, hwa, mask, dev);
}
if (option_mask32 & ARP_OPT_v)
- printf("Entries: %d\tSkipped: %d\tFound: %d\n",
+ printf("Entries: %u\tSkipped: %u\tFound: %u\n",
entries, entries - shown, shown);
if (!shown) {
if (hw_set || host || device[0])
- printf("No match found in %d entries\n", entries);
+ printf("No match found in %u entries\n", entries);
}
if (ENABLE_FEATURE_CLEAN_UP) {
free((char*)host);
@@ -477,28 +476,33 @@ static int arp_show(char *name)
int arp_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int arp_main(int argc UNUSED_PARAM, char **argv)
{
- const char *hw_type = "ether";
+ const char *hw_type;
const char *protocol;
unsigned opts;
INIT_G();
xmove_fd(xsocket(AF_INET, SOCK_DGRAM, 0), sockfd);
+
ap = get_aftype(DFLT_AF);
- if (!ap)
- bb_error_msg_and_die("%s: %s not supported", DFLT_AF, "address family");
+ /* Defaults are always supported */
+ //if (!ap)
+ // bb_error_msg_and_die("%s: %s not supported", DFLT_AF, "address family");
+ hw = get_hwtype(DFLT_HW);
+ //if (!hw)
+ // bb_error_msg_and_die("%s: %s not supported", DFLT_HW, "hardware type");
opts = getopt32(argv, "A:p:H:t:i:adnDsv", &protocol, &protocol,
&hw_type, &hw_type, &device);
argv += optind;
if (opts & (ARP_OPT_A | ARP_OPT_p)) {
ap = get_aftype(protocol);
- if (ap == NULL)
+ if (!ap)
bb_error_msg_and_die("%s: unknown %s", protocol, "address family");
}
- if (opts & (ARP_OPT_A | ARP_OPT_p)) {
+ if (opts & (ARP_OPT_H | ARP_OPT_t)) {
hw = get_hwtype(hw_type);
- if (hw == NULL)
+ if (!hw)
bb_error_msg_and_die("%s: unknown %s", hw_type, "hardware type");
hw_set = 1;
}
@@ -507,14 +511,6 @@ int arp_main(int argc UNUSED_PARAM, char **argv)
if (ap->af != AF_INET) {
bb_error_msg_and_die("%s: kernel only supports 'inet'", ap->name);
}
-
- /* If no hw type specified get default */
- if (!hw) {
- hw = get_hwtype(DFLT_HW);
- if (!hw)
- bb_error_msg_and_die("%s: %s not supported", DFLT_HW, "hardware type");
- }
-
if (hw->alen <= 0) {
bb_error_msg_and_die("%s: %s without ARP support",
hw->name, "hardware type");
@@ -528,6 +524,7 @@ int arp_main(int argc UNUSED_PARAM, char **argv)
return arp_set(argv);
return arp_del(argv);
}
+
//if (opts & ARP_OPT_a) - default
return arp_show(argv[0]);
}
diff --git a/networking/ether-wake.c b/networking/ether-wake.c
index bf09cd5..c38547d 100644
--- a/networking/ether-wake.c
+++ b/networking/ether-wake.c
@@ -62,17 +62,17 @@
* An alternative to needing 'root' is using a UDP broadcast socket, however
* doing so only works with adapters configured for unicast+broadcast Rx
* filter. That configuration consumes more power.
-*/
+ */
//usage:#define ether_wake_trivial_usage
-//usage: "[-b] [-i iface] [-p aa:bb:cc:dd[:ee:ff]] MAC"
+//usage: "[-b] [-i IFACE] [-p aa:bb:cc:dd[:ee:ff]/a.b.c.d] MAC"
//usage:#define ether_wake_full_usage "\n\n"
//usage: "Send a magic packet to wake up sleeping machines.\n"
//usage: "MAC must be a station address (00:11:22:33:44:55) or\n"
//usage: "a hostname with a known 'ethers' entry.\n"
-//usage: "\n -b Send wake-up packet to the broadcast address"
-//usage: "\n -i iface Interface to use (default eth0)"
-//usage: "\n -p pass Append four or six byte password PW to the packet"
+//usage: "\n -b Broadcast the packet"
+//usage: "\n -i IFACE Interface to use (default eth0)"
+//usage: "\n -p PASSWORD Append four or six byte PASSWORD to the packet"
#include "libbb.h"
#include <netpacket/packet.h>
@@ -121,10 +121,7 @@ static void get_dest_addr(const char *hostid, struct ether_addr *eaddr)
eap = ether_aton_r(hostid, eaddr);
if (eap) {
bb_debug_msg("The target station address is %s\n\n", ether_ntoa(eap));
-#if !defined(__UCLIBC_MAJOR__) \
- || __UCLIBC_MAJOR__ > 0 \
- || __UCLIBC_MINOR__ > 9 \
- || (__UCLIBC_MINOR__ == 9 && __UCLIBC_SUBLEVEL__ >= 30)
+#if !defined(__UCLIBC__) || UCLIBC_VERSION >= KERNEL_VERSION(0, 9, 30)
} else if (ether_hostton(hostid, eaddr) == 0) {
bb_debug_msg("Station address for hostname %s is %s\n\n", hostid, ether_ntoa(eaddr));
#endif
@@ -133,7 +130,8 @@ static void get_dest_addr(const char *hostid, struct ether_addr *eaddr)
}
}
-static int get_fill(unsigned char *pkt, struct ether_addr *eaddr, int broadcast)
+#define PKT_HEADER_SIZE (20 + 16*6)
+static int fill_pkt_header(unsigned char *pkt, struct ether_addr *eaddr, int broadcast)
{
int i;
unsigned char *station_addr = eaddr->ether_addr_octet;
@@ -156,7 +154,7 @@ static int get_fill(unsigned char *pkt, struct ether_addr *eaddr, int broadcast)
memcpy(pkt, station_addr, 6); /* 20,26,32,... */
}
- return 20 + 16*6; /* length of packet */
+ return PKT_HEADER_SIZE; /* length of packet */
}
static int get_wol_pw(const char *ethoptarg, unsigned char *wol_passwd)
@@ -198,7 +196,7 @@ int ether_wake_main(int argc UNUSED_PARAM, char **argv)
int wol_passwd_sz = 0;
int s; /* Raw socket */
int pktsize;
- unsigned char outpack[1000];
+ unsigned char outpack[PKT_HEADER_SIZE + 6 /* max passwd size */ + 16 /* paranoia */];
struct ether_addr eaddr;
struct whereto_t whereto; /* who to wake up */
@@ -220,7 +218,7 @@ int ether_wake_main(int argc UNUSED_PARAM, char **argv)
get_dest_addr(argv[optind], &eaddr);
/* fill out the header of the packet */
- pktsize = get_fill(outpack, &eaddr, flags /* & 1 OPT_BROADCAST */);
+ pktsize = fill_pkt_header(outpack, &eaddr, flags /* & 1 OPT_BROADCAST */);
bb_debug_dump_packet(outpack, pktsize);
diff --git a/networking/hostname.c b/networking/hostname.c
index 5209bc8..4da5b40 100644
--- a/networking/hostname.c
+++ b/networking/hostname.c
@@ -106,7 +106,7 @@ int hostname_main(int argc UNUSED_PARAM, char **argv)
OPT_i = 0x4,
OPT_s = 0x8,
OPT_F = 0x10,
- OPT_dfis = 0xf,
+ OPT_dfi = 0x7,
};
unsigned opts;
@@ -134,7 +134,7 @@ int hostname_main(int argc UNUSED_PARAM, char **argv)
if (applet_name[0] == 'd') /* dnsdomainname? */
opts = OPT_d;
- if (opts & OPT_dfis) {
+ if (opts & OPT_dfi) {
/* Cases when we need full hostname (or its part) */
struct hostent *hp;
char *p;
@@ -159,6 +159,9 @@ int hostname_main(int argc UNUSED_PARAM, char **argv)
bb_putchar('\n');
}
}
+ } else if (opts & OPT_s) {
+ strchrnul(buf, '.')[0] = '\0';
+ puts(buf);
} else if (opts & OPT_F) {
/* Set the hostname */
do_sethostname(hostname_str, 1);
diff --git a/networking/httpd.c b/networking/httpd.c
index 1934bb2..621d9cd 100644
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -1104,18 +1104,31 @@ static NOINLINE void cgi_io_loop_and_exit(int fromCgi_rd, int toCgi_wr, int post
/* NB: breaking out of this loop jumps to log_and_exit() */
out_cnt = 0;
+ pfd[FROM_CGI].fd = fromCgi_rd;
+ pfd[FROM_CGI].events = POLLIN;
+ pfd[TO_CGI].fd = toCgi_wr;
while (1) {
- memset(pfd, 0, sizeof(pfd));
-
- pfd[FROM_CGI].fd = fromCgi_rd;
- pfd[FROM_CGI].events = POLLIN;
-
- if (toCgi_wr) {
- pfd[TO_CGI].fd = toCgi_wr;
- if (hdr_cnt > 0) {
- pfd[TO_CGI].events = POLLOUT;
- } else if (post_len > 0) {
- pfd[0].events = POLLIN;
+ /* Note: even pfd[0].events == 0 won't prevent
+ * revents == POLLHUP|POLLERR reports from closed stdin.
+ * Setting fd to -1 works: */
+ pfd[0].fd = -1;
+ pfd[0].events = POLLIN;
+ pfd[0].revents = 0; /* probably not needed, paranoia */
+
+ /* We always poll this fd, thus kernel always sets revents: */
+ /*pfd[FROM_CGI].events = POLLIN; - moved out of loop */
+ /*pfd[FROM_CGI].revents = 0; - not needed */
+
+ /* gcc-4.8.0 still doesnt fill two shorts with one insn :( */
+ /* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47059 */
+ /* hopefully one day it will... */
+ pfd[TO_CGI].events = POLLOUT;
+ pfd[TO_CGI].revents = 0; /* needed! */
+
+ if (toCgi_wr && hdr_cnt <= 0) {
+ if (post_len > 0) {
+ /* Expect more POST data from network */
+ pfd[0].fd = 0;
} else {
/* post_len <= 0 && hdr_cnt <= 0:
* no more POST data to CGI,
@@ -1127,7 +1140,7 @@ static NOINLINE void cgi_io_loop_and_exit(int fromCgi_rd, int toCgi_wr, int post
}
/* Now wait on the set of sockets */
- count = safe_poll(pfd, toCgi_wr ? TO_CGI+1 : FROM_CGI+1, -1);
+ count = safe_poll(pfd, hdr_cnt > 0 ? TO_CGI+1 : FROM_CGI+1, -1);
if (count <= 0) {
#if 0
if (safe_waitpid(pid, &status, WNOHANG) <= 0) {
@@ -1144,7 +1157,7 @@ static NOINLINE void cgi_io_loop_and_exit(int fromCgi_rd, int toCgi_wr, int post
}
if (pfd[TO_CGI].revents) {
- /* hdr_cnt > 0 here due to the way pfd[TO_CGI].events set */
+ /* hdr_cnt > 0 here due to the way poll() called */
/* Have data from peer and can write to CGI */
count = safe_write(toCgi_wr, hdr_ptr, hdr_cnt);
/* Doesn't happen, we dont use nonblocking IO here
@@ -1709,8 +1722,8 @@ static int pam_talker(int num_msg,
s = userinfo->pw;
break;
case PAM_ERROR_MSG:
- case PAM_TEXT_INFO:
- s = "";
+ case PAM_TEXT_INFO:
+ s = "";
break;
default:
free(response);
@@ -1964,7 +1977,9 @@ static void handle_incoming_and_exit(const len_and_sockaddr *fromAddr)
send_headers_and_exit(HTTP_BAD_REQUEST);
/* Determine type of request (GET/POST) */
- urlp = strpbrk(iobuf, " \t");
+ // rfc2616: method and URI is separated by exactly one space
+ //urlp = strpbrk(iobuf, " \t"); - no, tab isn't allowed
+ urlp = strchr(iobuf, ' ');
if (urlp == NULL)
send_headers_and_exit(HTTP_BAD_REQUEST);
*urlp++ = '\0';
@@ -1982,7 +1997,8 @@ static void handle_incoming_and_exit(const len_and_sockaddr *fromAddr)
if (strcasecmp(iobuf, request_GET) != 0)
send_headers_and_exit(HTTP_NOT_IMPLEMENTED);
#endif
- urlp = skip_whitespace(urlp);
+ // rfc2616: method and URI is separated by exactly one space
+ //urlp = skip_whitespace(urlp); - should not be necessary
if (urlp[0] != '/')
send_headers_and_exit(HTTP_BAD_REQUEST);
diff --git a/networking/ifconfig.c b/networking/ifconfig.c
index 5a934fa..dcbb552 100644
--- a/networking/ifconfig.c
+++ b/networking/ifconfig.c
@@ -56,7 +56,7 @@
#endif
#if ENABLE_FEATURE_IFCONFIG_SLIP
-# include <net/if_slip.h>
+# include <linux/if_slip.h>
#endif
/* I don't know if this is needed for busybox or not. Anyone? */
@@ -265,49 +265,6 @@ static const struct options OptArray[] = {
{ NULL, 0, ARG_HOSTNAME, (IFF_UP | IFF_RUNNING) }
};
-#if ENABLE_FEATURE_IFCONFIG_HW
-/* Input an Ethernet address and convert to binary. */
-static int in_ether(const char *bufp, struct sockaddr *sap)
-{
- char *ptr;
- int i, j;
- unsigned char val;
- unsigned char c;
-
- sap->sa_family = ARPHRD_ETHER;
- ptr = (char *) sap->sa_data;
-
- i = 0;
- do {
- j = val = 0;
-
- /* We might get a semicolon here - not required. */
- if (i && (*bufp == ':')) {
- bufp++;
- }
-
- do {
- c = *bufp;
- if (((unsigned char)(c - '0')) <= 9) {
- c -= '0';
- } else if ((unsigned char)((c|0x20) - 'a') <= 5) {
- c = (unsigned char)((c|0x20) - 'a') + 10;
- } else if (j && (c == ':' || c == 0)) {
- break;
- } else {
- return -1;
- }
- ++bufp;
- val <<= 4;
- val += c;
- } while (++j < 2);
- *ptr++ = val;
- } while (++i < ETH_ALEN);
-
- return *bufp; /* Error if we don't end at end of string. */
-}
-#endif
-
int ifconfig_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int ifconfig_main(int argc UNUSED_PARAM, char **argv)
{
diff --git a/networking/ifplugd.c b/networking/ifplugd.c
index 86586f0..b578f4c 100644
--- a/networking/ifplugd.c
+++ b/networking/ifplugd.c
@@ -451,20 +451,24 @@ static smallint detect_link(void)
static NOINLINE int check_existence_through_netlink(void)
{
int iface_len;
- char replybuf[1024];
+ /* Buffer was 1K, but on linux-3.9.9 it was reported to be too small.
+ * netlink.h: "limit to 8K to avoid MSG_TRUNC when PAGE_SIZE is very large".
+ * Note: on error returns (-1) we exit, no need to free replybuf.
+ */
+ enum { BUF_SIZE = 8 * 1024 };
+ char *replybuf = xmalloc(BUF_SIZE);
iface_len = strlen(G.iface);
while (1) {
struct nlmsghdr *mhdr;
ssize_t bytes;
- bytes = recv(netlink_fd, &replybuf, sizeof(replybuf), MSG_DONTWAIT);
+ bytes = recv(netlink_fd, replybuf, BUF_SIZE, MSG_DONTWAIT);
if (bytes < 0) {
if (errno == EAGAIN)
- return G.iface_exists;
+ goto ret;
if (errno == EINTR)
continue;
-
bb_perror_msg("netlink: recv");
return -1;
}
@@ -507,6 +511,8 @@ static NOINLINE int check_existence_through_netlink(void)
}
}
+ ret:
+ free(replybuf);
return G.iface_exists;
}
@@ -556,7 +562,8 @@ int ifplugd_main(int argc UNUSED_PARAM, char **argv)
if (opts & FLAG_KILL) {
if (pid_from_pidfile > 0)
- kill(pid_from_pidfile, SIGQUIT);
+ /* Upstream tool use SIGINT for -k */
+ kill(pid_from_pidfile, SIGINT);
return EXIT_SUCCESS;
}
diff --git a/networking/ifupdown.c b/networking/ifupdown.c
index 8180482..0f0857c 100644
--- a/networking/ifupdown.c
+++ b/networking/ifupdown.c
@@ -743,7 +743,7 @@ static const struct method_t *get_method(const struct address_family_t *af, char
return NULL;
}
-static struct interfaces_file_t *read_interfaces(const char *filename)
+static struct interfaces_file_t *read_interfaces(const char *filename, struct interfaces_file_t *defn)
{
/* Let's try to be compatible.
*
@@ -758,19 +758,25 @@ static struct interfaces_file_t *read_interfaces(const char *filename)
* be ignored. Blank lines are ignored. Lines may be indented freely.
* A "\" character at the very end of the line indicates the next line
* should be treated as a continuation of the current one.
+ *
+ * Lines beginning with "source" are used to include stanzas from
+ * other files, so configuration can be split into many files.
+ * The word "source" is followed by the path of file to be sourced.
*/
#if ENABLE_FEATURE_IFUPDOWN_MAPPING
struct mapping_defn_t *currmap = NULL;
#endif
struct interface_defn_t *currif = NULL;
- struct interfaces_file_t *defn;
FILE *f;
char *buf;
char *first_word;
char *rest_of_line;
enum { NONE, IFACE, MAPPING } currently_processing = NONE;
- defn = xzalloc(sizeof(*defn));
+ if (!defn)
+ defn = xzalloc(sizeof(*defn));
+
+ debug_noise("reading %s file:\n", filename);
f = xfopen_for_read(filename);
while ((buf = xmalloc_fgetline(f)) != NULL) {
@@ -881,6 +887,8 @@ static struct interfaces_file_t *read_interfaces(const char *filename)
debug_noise("\nauto %s\n", first_word);
}
currently_processing = NONE;
+ } else if (strcmp(first_word, "source") == 0) {
+ read_interfaces(next_word(&rest_of_line), defn);
} else {
switch (currently_processing) {
case IFACE:
@@ -934,6 +942,7 @@ static struct interfaces_file_t *read_interfaces(const char *filename)
bb_error_msg_and_die("%s: I/O error", filename);
}
fclose(f);
+ debug_noise("\ndone reading %s\n\n", filename);
return defn;
}
@@ -1199,9 +1208,7 @@ int ifupdown_main(int argc UNUSED_PARAM, char **argv)
if (!DO_ALL) bb_show_usage();
}
- debug_noise("reading %s file:\n", interfaces);
- defn = read_interfaces(interfaces);
- debug_noise("\ndone reading %s\n\n", interfaces);
+ defn = read_interfaces(interfaces, NULL);
/* Create a list of interfaces to work on */
if (DO_ALL) {
diff --git a/networking/interface.c b/networking/interface.c
index 9ae8b3f..bf7d2b1 100644
--- a/networking/interface.c
+++ b/networking/interface.c
@@ -722,68 +722,15 @@ static char* FAST_FUNC ether_print(unsigned char *ptr)
return buff;
}
-static int FAST_FUNC ether_input(const char *bufp, struct sockaddr *sap);
-
static const struct hwtype ether_hwtype = {
.name = "ether",
.title = "Ethernet",
.type = ARPHRD_ETHER,
.alen = ETH_ALEN,
.print = ether_print,
- .input = ether_input
+ .input = in_ether
};
-static unsigned hexchar2int(char c)
-{
- if (isdigit(c))
- return c - '0';
- c &= ~0x20; /* a -> A */
- if ((unsigned)(c - 'A') <= 5)
- return c - ('A' - 10);
- return ~0U;
-}
-
-/* Input an Ethernet address and convert to binary. */
-static int FAST_FUNC ether_input(const char *bufp, struct sockaddr *sap)
-{
- unsigned char *ptr;
- char c;
- int i;
- unsigned val;
-
- sap->sa_family = ether_hwtype.type;
- ptr = (unsigned char*) sap->sa_data;
-
- i = 0;
- while ((*bufp != '\0') && (i < ETH_ALEN)) {
- val = hexchar2int(*bufp++) * 0x10;
- if (val > 0xff) {
- errno = EINVAL;
- return -1;
- }
- c = *bufp;
- if (c == ':' || c == 0)
- val >>= 4;
- else {
- val |= hexchar2int(c);
- if (val > 0xff) {
- errno = EINVAL;
- return -1;
- }
- }
- if (c != 0)
- bufp++;
- *ptr++ = (unsigned char) val;
- i++;
-
- /* We might get a semicolon here - not required. */
- if (*bufp == ':') {
- bufp++;
- }
- }
- return 0;
-}
-
static const struct hwtype ppp_hwtype = {
.name = "ppp",
.title = "Point-to-Point Protocol",
@@ -927,7 +874,7 @@ static void print_bytes_scaled(unsigned long long ull, const char *end)
static void ife_print6(struct interface *ptr)
{
FILE *f;
- char addr6[40], devname[20];
+ char addr6[40], devname[21];
struct sockaddr_in6 sap;
int plen, scope, dad_status, if_idx;
char addr6p[8][5];
diff --git a/networking/libiproute/ipaddress.c b/networking/libiproute/ipaddress.c
index da76bbe..1058b5a 100644
--- a/networking/libiproute/ipaddress.c
+++ b/networking/libiproute/ipaddress.c
@@ -627,10 +627,12 @@ static int ipaddr_modify(int cmd, char **argv)
req.ifa.ifa_family = preferred_family;
while (*argv) {
- const smalluint arg = index_in_strings(option, *argv);
- if (arg <= 1) { /* peer, remote */
+ unsigned arg = index_in_strings(option, *argv);
+ /* if search fails, "local" is assumed */
+ if ((int)arg >= 0)
NEXT_ARG();
+ if (arg <= 1) { /* peer, remote */
if (peer_len) {
duparg("peer", *argv);
}
@@ -643,7 +645,6 @@ static int ipaddr_modify(int cmd, char **argv)
req.ifa.ifa_prefixlen = peer.bitlen;
} else if (arg <= 3) { /* broadcast, brd */
inet_prefix addr;
- NEXT_ARG();
if (brd_len) {
duparg("broadcast", *argv);
}
@@ -660,7 +661,6 @@ static int ipaddr_modify(int cmd, char **argv)
}
} else if (arg == 4) { /* anycast */
inet_prefix addr;
- NEXT_ARG();
if (any_len) {
duparg("anycast", *argv);
}
@@ -672,22 +672,18 @@ static int ipaddr_modify(int cmd, char **argv)
any_len = addr.bytelen;
} else if (arg == 5) { /* scope */
uint32_t scope = 0;
- NEXT_ARG();
if (rtnl_rtscope_a2n(&scope, *argv)) {
invarg(*argv, "scope");
}
req.ifa.ifa_scope = scope;
scoped = 1;
} else if (arg == 6) { /* dev */
- NEXT_ARG();
d = *argv;
} else if (arg == 7) { /* label */
- NEXT_ARG();
l = *argv;
addattr_l(&req.n, sizeof(req), IFA_LABEL, l, strlen(l) + 1);
} else {
- if (arg == 8) /* local */
- NEXT_ARG();
+ /* local (specified or assumed) */
if (local_len) {
duparg2("local", *argv);
}
@@ -724,7 +720,7 @@ static int ipaddr_modify(int cmd, char **argv)
}
brd = peer;
if (brd.bitlen <= 30) {
- for (i=31; i>=brd.bitlen; i--) {
+ for (i = 31; i >= brd.bitlen; i--) {
if (brd_len == -1)
brd.data[0] |= htonl(1<<(31-i));
else
@@ -754,11 +750,11 @@ int FAST_FUNC do_ipaddr(char **argv)
{
static const char commands[] ALIGN1 =
"add\0""delete\0""list\0""show\0""lst\0""flush\0";
- smalluint cmd = 2;
+ int cmd = 2;
if (*argv) {
cmd = index_in_substrings(commands, *argv);
- if (cmd > 5)
- bb_error_msg_and_die(bb_msg_invalid_arg, *argv, applet_name);
+ if (cmd < 0)
+ invarg(*argv, applet_name);
argv++;
if (cmd <= 1)
return ipaddr_modify((cmd == 0) ? RTM_NEWADDR : RTM_DELADDR, argv);
diff --git a/networking/libiproute/iplink.c b/networking/libiproute/iplink.c
index 8e9f1bd..286e59e 100644
--- a/networking/libiproute/iplink.c
+++ b/networking/libiproute/iplink.c
@@ -1,18 +1,33 @@
/* vi: set sw=4 ts=4: */
/*
* Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
+ * Patrick McHardy <kaber@trash.net>
*
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
#include <net/if.h>
-#include <net/if_packet.h>
+/*#include <net/if_packet.h> - not needed? */
#include <netpacket/packet.h>
#include <netinet/if_ether.h>
+#include <linux/if_vlan.h>
#include "ip_common.h" /* #include "libbb.h" is inside */
#include "rt_names.h"
#include "utils.h"
+#undef ETH_P_8021AD
+#define ETH_P_8021AD 0x88A8
+#undef VLAN_FLAG_REORDER_HDR
+#define VLAN_FLAG_REORDER_HDR 0x1
+#undef VLAN_FLAG_GVRP
+#define VLAN_FLAG_GVRP 0x2
+#undef VLAN_FLAG_LOOSE_BINDING
+#define VLAN_FLAG_LOOSE_BINDING 0x4
+#undef VLAN_FLAG_MVRP
+#define VLAN_FLAG_MVRP 0x8
+#undef IFLA_VLAN_PROTOCOL
+#define IFLA_VLAN_PROTOCOL 5
+
#ifndef IFLA_LINKINFO
# define IFLA_LINKINFO 18
# define IFLA_INFO_KIND 1
@@ -277,12 +292,103 @@ static int ipaddr_list_link(char **argv)
return ipaddr_list_or_flush(argv, 0);
}
+static void vlan_parse_opt(char **argv, struct nlmsghdr *n, unsigned int size)
+{
+ static const char keywords[] ALIGN1 =
+ "id\0"
+ "protocol\0"
+ "reorder_hdr\0"
+ "gvrp\0"
+ "mvrp\0"
+ "loose_binding\0"
+ ;
+ static const char protocols[] ALIGN1 =
+ "802.1q\0"
+ "802.1ad\0"
+ ;
+ static const char str_on_off[] ALIGN1 =
+ "on\0"
+ "off\0"
+ ;
+ enum {
+ ARG_id = 0,
+ ARG_reorder_hdr,
+ ARG_gvrp,
+ ARG_mvrp,
+ ARG_loose_binding,
+ ARG_protocol,
+ };
+ enum {
+ PROTO_8021Q = 0,
+ PROTO_8021AD,
+ };
+ enum {
+ PARM_on = 0,
+ PARM_off
+ };
+ int arg;
+ uint16_t id, proto;
+ struct ifla_vlan_flags flags = {};
+
+ while (*argv) {
+ arg = index_in_substrings(keywords, *argv);
+ if (arg < 0)
+ invarg(*argv, "type vlan");
+
+ NEXT_ARG();
+ if (arg == ARG_id) {
+ id = get_u16(*argv, "id");
+ addattr_l(n, size, IFLA_VLAN_ID, &id, sizeof(id));
+ } else if (arg == ARG_protocol) {
+ arg = index_in_substrings(protocols, *argv);
+ if (arg == PROTO_8021Q)
+ proto = ETH_P_8021Q;
+ else if (arg == PROTO_8021AD)
+ proto = ETH_P_8021AD;
+ else
+ bb_error_msg_and_die("unknown VLAN encapsulation protocol '%s'",
+ *argv);
+ addattr_l(n, size, IFLA_VLAN_PROTOCOL, &proto, sizeof(proto));
+ } else {
+ int param = index_in_strings(str_on_off, *argv);
+ if (param < 0)
+ die_must_be_on_off(nth_string(keywords, arg));
+
+ if (arg == ARG_reorder_hdr) {
+ flags.mask |= VLAN_FLAG_REORDER_HDR;
+ flags.flags &= ~VLAN_FLAG_REORDER_HDR;
+ if (param == PARM_on)
+ flags.flags |= VLAN_FLAG_REORDER_HDR;
+ } else if (arg == ARG_gvrp) {
+ flags.mask |= VLAN_FLAG_GVRP;
+ flags.flags &= ~VLAN_FLAG_GVRP;
+ if (param == PARM_on)
+ flags.flags |= VLAN_FLAG_GVRP;
+ } else if (arg == ARG_mvrp) {
+ flags.mask |= VLAN_FLAG_MVRP;
+ flags.flags &= ~VLAN_FLAG_MVRP;
+ if (param == PARM_on)
+ flags.flags |= VLAN_FLAG_MVRP;
+ } else { /*if (arg == ARG_loose_binding) */
+ flags.mask |= VLAN_FLAG_LOOSE_BINDING;
+ flags.flags &= ~VLAN_FLAG_LOOSE_BINDING;
+ if (param == PARM_on)
+ flags.flags |= VLAN_FLAG_LOOSE_BINDING;
+ }
+ }
+ argv++;
+ }
+
+ if (flags.mask)
+ addattr_l(n, size, IFLA_VLAN_FLAGS, &flags, sizeof(flags));
+}
+
#ifndef NLMSG_TAIL
#define NLMSG_TAIL(nmsg) \
- ((struct rtattr *) ((size_t)((void *) (nmsg)) + (size_t) NLMSG_ALIGN((nmsg)->nlmsg_len)))
+ ((struct rtattr *) (((void *) (nmsg)) + NLMSG_ALIGN((nmsg)->nlmsg_len)))
#endif
/* Return value becomes exitcode. It's okay to not return at all */
-static int do_change(char **argv, const unsigned rtm)
+static int do_add_or_delete(char **argv, const unsigned rtm)
{
static const char keywords[] ALIGN1 =
"link\0""name\0""type\0""dev\0";
@@ -312,15 +418,17 @@ static int do_change(char **argv, const unsigned rtm)
while (*argv) {
arg = index_in_substrings(keywords, *argv);
+ if (arg == ARG_type) {
+ NEXT_ARG();
+ type_str = *argv++;
+ break;
+ }
if (arg == ARG_link) {
NEXT_ARG();
link_str = *argv;
} else if (arg == ARG_name) {
NEXT_ARG();
name_str = *argv;
- } else if (arg == ARG_type) {
- NEXT_ARG();
- type_str = *argv;
} else {
if (arg == ARG_dev) {
if (dev_str)
@@ -339,7 +447,18 @@ static int do_change(char **argv, const unsigned rtm)
addattr_l(&req.n, sizeof(req), IFLA_LINKINFO, NULL, 0);
addattr_l(&req.n, sizeof(req), IFLA_INFO_KIND, type_str,
strlen(type_str));
- linkinfo->rta_len = (size_t) NLMSG_TAIL(&req.n) - (size_t) linkinfo;
+
+ if (*argv) {
+ struct rtattr *data = NLMSG_TAIL(&req.n);
+ addattr_l(&req.n, sizeof(req), IFLA_INFO_DATA, NULL, 0);
+
+ if (strcmp(type_str, "vlan") == 0)
+ vlan_parse_opt(argv, &req.n, sizeof(req));
+
+ data->rta_len = (void *)NLMSG_TAIL(&req.n) - (void *)data;
+ }
+
+ linkinfo->rta_len = (void *)NLMSG_TAIL(&req.n) - (void *)linkinfo;
}
if (rtm != RTM_NEWLINK) {
if (!dev_str)
@@ -370,13 +489,13 @@ int FAST_FUNC do_iplink(char **argv)
static const char keywords[] ALIGN1 =
"add\0""delete\0""set\0""show\0""lst\0""list\0";
if (*argv) {
- smalluint key = index_in_substrings(keywords, *argv);
- if (key > 5) /* invalid argument */
- bb_error_msg_and_die(bb_msg_invalid_arg, *argv, applet_name);
+ int key = index_in_substrings(keywords, *argv);
+ if (key < 0) /* invalid argument */
+ invarg(*argv, applet_name);
argv++;
if (key <= 1) /* add/delete */
- return do_change(argv, key ? RTM_DELLINK : RTM_NEWLINK);
- else if (key == 2) /* set */
+ return do_add_or_delete(argv, key ? RTM_DELLINK : RTM_NEWLINK);
+ if (key == 2) /* set */
return do_set(argv);
}
/* show, lst, list */
diff --git a/networking/libiproute/iprule.c b/networking/libiproute/iprule.c
index 241a6bf..8dbe6bd 100644
--- a/networking/libiproute/iprule.c
+++ b/networking/libiproute/iprule.c
@@ -215,7 +215,7 @@ static int iprule_modify(int cmd, char **argv)
while (*argv) {
key = index_in_substrings(keywords, *argv) + 1;
if (key == 0) /* no match found in keywords array, bail out. */
- bb_error_msg_and_die(bb_msg_invalid_arg, *argv, applet_name);
+ invarg(*argv, applet_name);
if (key == ARG_from) {
inet_prefix dst;
NEXT_ARG();
@@ -308,9 +308,9 @@ int FAST_FUNC do_iprule(char **argv)
static const char ip_rule_commands[] ALIGN1 =
"add\0""delete\0""list\0""show\0";
if (*argv) {
- smalluint cmd = index_in_substrings(ip_rule_commands, *argv);
- if (cmd > 3)
- bb_error_msg_and_die(bb_msg_invalid_arg, *argv, applet_name);
+ int cmd = index_in_substrings(ip_rule_commands, *argv);
+ if (cmd < 0)
+ invarg(*argv, applet_name);
argv++;
if (cmd < 2)
return iprule_modify((cmd == 0) ? RTM_NEWRULE : RTM_DELRULE, argv);
diff --git a/networking/libiproute/iptunnel.c b/networking/libiproute/iptunnel.c
index 2b651b9..b54c3c5 100644
--- a/networking/libiproute/iptunnel.c
+++ b/networking/libiproute/iptunnel.c
@@ -561,9 +561,9 @@ int FAST_FUNC do_iptunnel(char **argv)
enum { ARG_add = 0, ARG_change, ARG_del, ARG_show, ARG_list, ARG_lst };
if (*argv) {
- smalluint key = index_in_substrings(keywords, *argv);
- if (key > 5)
- bb_error_msg_and_die(bb_msg_invalid_arg, *argv, applet_name);
+ int key = index_in_substrings(keywords, *argv);
+ if (key < 0)
+ invarg(*argv, applet_name);
argv++;
if (key == ARG_add)
return do_add(SIOCADDTUNNEL, argv);
diff --git a/networking/nameif.c b/networking/nameif.c
index 5d7e8f9..9a8846d 100644
--- a/networking/nameif.c
+++ b/networking/nameif.c
@@ -292,12 +292,11 @@ int nameif_main(int argc UNUSED_PARAM, char **argv)
if (ch->mac && memcmp(ch->mac, ifr.ifr_hwaddr.sa_data, ETH_ALEN) != 0)
continue;
/* if we came here, all selectors have matched */
- break;
+ goto found;
}
/* Nothing found for current interface */
- if (!ch)
- continue;
-
+ continue;
+ found:
if (strcmp(ifr.ifr_name, ch->ifname) != 0) {
strcpy(ifr.ifr_newname, ch->ifname);
ioctl_or_perror_and_die(ctl_sk, SIOCSIFNAME, &ifr,
@@ -313,10 +312,14 @@ int nameif_main(int argc UNUSED_PARAM, char **argv)
ch->next->prev = ch->prev;
if (ENABLE_FEATURE_CLEAN_UP)
delete_eth_table(ch);
- }
+ } /* while */
+
if (ENABLE_FEATURE_CLEAN_UP) {
- for (ch = clist; ch; ch = ch->next)
+ ethtable_t *next;
+ for (ch = clist; ch; ch = next) {
+ next = ch->next;
delete_eth_table(ch);
+ }
config_close(parser);
};
diff --git a/networking/nc.c b/networking/nc.c
index 3ae73c4..6105db1 100644
--- a/networking/nc.c
+++ b/networking/nc.c
@@ -24,7 +24,7 @@
//config: Allow netcat to act as a server.
//config:
//config:config NC_EXTRA
-//config: bool "Netcat extensions (-eiw and filename)"
+//config: bool "Netcat extensions (-eiw and -f FILE)"
//config: default y
//config: depends on NC
//config: help
@@ -40,7 +40,7 @@
//config: This option makes nc closely follow original nc-1.10.
//config: The code is about 2.5k bigger. It enables
//config: -s ADDR, -n, -u, -v, -o FILE, -z options, but loses
-//config: busybox-specific extensions: -f FILE and -ll.
+//config: busybox-specific extensions: -f FILE.
#if ENABLE_NC_110_COMPAT
# include "nc_bloaty.c"
@@ -60,17 +60,18 @@
//usage:#define nc_full_usage "\n\n"
//usage: "Open a pipe to IP:PORT" IF_NC_EXTRA(" or FILE")
//usage: NC_OPTIONS_STR
-//usage: IF_NC_EXTRA(
-//usage: "\n -e PROG Run PROG after connect"
//usage: IF_NC_SERVER(
//usage: "\n -l Listen mode, for inbound connects"
//usage: IF_NC_EXTRA(
-//usage: "\n (use -l twice with -e for persistent server)")
+//usage: "\n (use -ll with -e for persistent server)"
+//usage: )
//usage: "\n -p PORT Local port"
//usage: )
-//usage: "\n -w SEC Timeout for connect"
+//usage: IF_NC_EXTRA(
+//usage: "\n -w SEC Connect timeout"
//usage: "\n -i SEC Delay interval for lines sent"
//usage: "\n -f FILE Use file (ala /dev/ttyS0) instead of network"
+//usage: "\n -e PROG Run PROG after connect"
//usage: )
//usage:
//usage:#define nc_notes_usage ""
@@ -147,7 +148,7 @@ int nc_main(int argc, char **argv)
*p++ = argv[optind++];
}
)
- /* optind points to argv[arvc] (NULL) now.
+ /* optind points to argv[argc] (NULL) now.
** FIXME: we assume that getopt will not count options
** possibly present on "-e PROG ARGS" and will not
** include them into final value of optind
@@ -226,10 +227,9 @@ int nc_main(int argc, char **argv)
/* child, or main thread if only one -l */
xmove_fd(cfd, 0);
xdup2(0, 1);
- xdup2(0, 2);
+ /*xdup2(0, 2); - original nc 1.10 does this, we don't */
IF_NC_EXTRA(BB_EXECVP(execparam[0], execparam);)
- /* Don't print stuff or it will go over the wire... */
- _exit(127);
+ IF_NC_EXTRA(bb_perror_msg_and_die("can't execute '%s'", execparam[0]);)
}
/* Select loop copying stdin to cfd, and cfd to stdout */
@@ -261,7 +261,7 @@ int nc_main(int argc, char **argv)
if (nread < 1) {
/* Close outgoing half-connection so they get EOF,
* but leave incoming alone so we can see response */
- shutdown(cfd, 1);
+ shutdown(cfd, SHUT_WR);
FD_CLR(STDIN_FILENO, &readfds);
}
ofd = cfd;
diff --git a/networking/nc_bloaty.c b/networking/nc_bloaty.c
index 62a0251..b9eff3d 100644
--- a/networking/nc_bloaty.c
+++ b/networking/nc_bloaty.c
@@ -48,6 +48,12 @@
* - TCP connects from wrong ip/ports (if peer ip:port is specified
* on the command line, but accept() says that it came from different addr)
* are closed, but we don't exit - we continue to listen/accept.
+ * Since bbox 1.22:
+ * - nc exits when _both_ stdin and network are closed.
+ * This makes these two commands:
+ * echo "Yes" | nc 127.0.0.1 1234
+ * echo "no" | nc -lp 1234
+ * exchange their data _and exit_ instead of being stuck.
*/
/* done in nc.c: #include "libbb.h" */
@@ -63,6 +69,12 @@
//usage: " -e PROG Run PROG after connect (must be last)"
//usage: IF_NC_SERVER(
//usage: "\n -l Listen mode, for inbound connects"
+//usage: "\n -lk With -e, provides persistent server"
+/* -ll does the same as -lk, but its our extension, while -k is BSD'd,
+ * presumably more widely known. Therefore we advertise it, not -ll.
+ * I would like to drop -ll support, but our "small" nc supports it,
+ * and Rob uses it.
+ */
//usage: )
//usage: "\n -p PORT Local port"
//usage: "\n -s ADDR Local address"
@@ -128,8 +140,6 @@ struct globals {
jmp_buf jbuf; /* timer crud */
- fd_set ding1; /* for select loop */
- fd_set ding2;
char bigbuf_in[BIGSIZ]; /* data buffers */
char bigbuf_net[BIGSIZ];
};
@@ -141,8 +151,6 @@ struct globals {
#define themaddr (G.themaddr )
#define remend (G.remend )
#define jbuf (G.jbuf )
-#define ding1 (G.ding1 )
-#define ding2 (G.ding2 )
#define bigbuf_in (G.bigbuf_in )
#define bigbuf_net (G.bigbuf_net)
#define o_verbose (G.o_verbose )
@@ -166,18 +174,14 @@ enum {
OPT_v = (1 << 4),
OPT_w = (1 << 5),
OPT_l = (1 << 6) * ENABLE_NC_SERVER,
- OPT_i = (1 << (6+ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA,
- OPT_o = (1 << (7+ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA,
- OPT_z = (1 << (8+ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA,
+ OPT_k = (1 << 7) * ENABLE_NC_SERVER,
+ OPT_i = (1 << (7+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA,
+ OPT_o = (1 << (8+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA,
+ OPT_z = (1 << (9+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA,
};
#define o_nflag (option_mask32 & OPT_n)
#define o_udpmode (option_mask32 & OPT_u)
-#if ENABLE_NC_SERVER
-#define o_listen (option_mask32 & OPT_l)
-#else
-#define o_listen 0
-#endif
#if ENABLE_NC_EXTRA
#define o_ofile (option_mask32 & OPT_o)
#define o_zero (option_mask32 & OPT_z)
@@ -298,7 +302,7 @@ static int connect_w_timeout(int fd)
incoming and returns an open connection *from* someplace. If we were
given host/port args, any connections from elsewhere are rejected. This
in conjunction with local-address binding should limit things nicely... */
-static void dolisten(void)
+static void dolisten(int is_persistent, char **proggie)
{
int rr;
@@ -371,6 +375,7 @@ create new one, and bind() it. TODO */
xconnect(netfd, &remend.u.sa, ouraddr->len);
} else {
/* TCP */
+ another:
arm(o_wait); /* wrap this in a timer, too; 0 = forever */
if (setjmp(jbuf) == 0) {
again:
@@ -405,6 +410,19 @@ create new one, and bind() it. TODO */
unarm();
} else
bb_error_msg_and_die("timeout");
+
+ if (is_persistent && proggie) {
+ /* -l -k -e PROG */
+ signal(SIGCHLD, SIG_IGN); /* no zombies please */
+ if (xvfork() != 0) {
+ /* parent: go back and accept more connections */
+ close(rr);
+ goto another;
+ }
+ /* child */
+ signal(SIGCHLD, SIG_DFL);
+ }
+
xmove_fd(rr, netfd); /* dump the old socket, here's our new one */
/* find out what address the connection was *to* on our end, in case we're
doing a listen-on-any on a multihomed machine. This allows one to
@@ -454,6 +472,9 @@ create new one, and bind() it. TODO */
if (!o_nflag)
free(remhostname);
}
+
+ if (proggie)
+ doexec(proggie);
}
/* udptest:
@@ -571,26 +592,27 @@ static int readwrite(void)
unsigned rzleft;
unsigned rnleft;
unsigned netretry; /* net-read retry counter */
- unsigned wretry; /* net-write sanity counter */
- unsigned wfirst; /* one-shot flag to skip first net read */
+ unsigned fds_open;
/* if you don't have all this FD_* macro hair in sys/types.h, you'll have to
either find it or do your own bit-bashing: *ding1 |= (1 << fd), etc... */
- FD_SET(netfd, &ding1); /* global: the net is open */
+ fd_set ding1; /* for select loop */
+ fd_set ding2;
+ FD_ZERO(&ding1);
+ FD_SET(netfd, &ding1);
+ FD_SET(STDIN_FILENO, &ding1);
+ fds_open = 2;
+
netretry = 2;
- wfirst = 0;
rzleft = rnleft = 0;
if (o_interval)
sleep(o_interval); /* pause *before* sending stuff, too */
- errno = 0; /* clear from sleep, close, whatever */
/* and now the big ol' select shoveling loop ... */
- while (FD_ISSET(netfd, &ding1)) { /* i.e. till the *net* closes! */
- wretry = 8200; /* more than we'll ever hafta write */
- if (wfirst) { /* any saved stdin buffer? */
- wfirst = 0; /* clear flag for the duration */
- goto shovel; /* and go handle it first */
- }
+ /* nc 1.10 has "while (FD_ISSET(netfd)" here */
+ while (fds_open) {
+ unsigned wretry = 8200; /* net-write sanity counter */
+
ding2 = ding1; /* FD_COPY ain't portable... */
/* some systems, notably linux, crap into their select timers on return, so
we create a expendable copy and give *that* to select. */
@@ -610,13 +632,14 @@ static int readwrite(void)
/* if we have a timeout AND stdin is closed AND we haven't heard anything
from the net during that time, assume it's dead and close it too. */
if (rr == 0) {
- if (!FD_ISSET(STDIN_FILENO, &ding1))
+ if (!FD_ISSET(STDIN_FILENO, &ding1)) {
netretry--; /* we actually try a coupla times. */
- if (!netretry) {
- if (o_verbose > 1) /* normally we don't care */
- fprintf(stderr, "net timeout\n");
- close(netfd);
- return 0; /* not an error! */
+ if (!netretry) {
+ if (o_verbose > 1) /* normally we don't care */
+ fprintf(stderr, "net timeout\n");
+ /*close(netfd); - redundant, exit will do it */
+ return 0; /* not an error! */
+ }
}
} /* select timeout */
/* xxx: should we check the exception fds too? The read fds seem to give
@@ -630,7 +653,8 @@ static int readwrite(void)
/* nc 1.10 doesn't do this */
bb_perror_msg("net read");
}
- FD_CLR(netfd, &ding1); /* net closed, we'll finish up... */
+ FD_CLR(netfd, &ding1); /* net closed */
+ fds_open--;
rzleft = 0; /* can't write anymore: broken pipe */
} else {
rnleft = rr;
@@ -650,11 +674,12 @@ Debug("got %d from the net, errno %d", rr, errno);
/* Considered making reads here smaller for UDP mode, but 8192-byte
mobygrams are kinda fun and exercise the reassembler. */
if (rr <= 0) { /* at end, or fukt, or ... */
- FD_CLR(STDIN_FILENO, &ding1); /* disable and close stdin */
- close(STDIN_FILENO);
-// Does it make sense to shutdown(net_fd, SHUT_WR)
-// to let other side know that we won't write anything anymore?
-// (and what about keeping compat if we do that?)
+ FD_CLR(STDIN_FILENO, &ding1); /* disable stdin */
+ /*close(STDIN_FILENO); - not really necessary */
+ /* Let peer know we have no more data */
+ /* nc 1.10 doesn't do this: */
+ shutdown(netfd, SHUT_WR);
+ fds_open--;
} else {
rzleft = rr;
zp = bigbuf_in;
@@ -665,24 +690,14 @@ Debug("got %d from the net, errno %d", rr, errno);
Geez, why does this look an awful lot like the big loop in "rsh"? ...
not sure if the order of this matters, but write net -> stdout first. */
- /* sanity check. Works because they're both unsigned... */
- if ((rzleft > 8200) || (rnleft > 8200)) {
- holler_error("bogus buffers: %u, %u", rzleft, rnleft);
- rzleft = rnleft = 0;
- }
- /* net write retries sometimes happen on UDP connections */
- if (!wretry) { /* is something hung? */
- holler_error("too many output retries");
- return 1;
- }
if (rnleft) {
rr = write(STDOUT_FILENO, np, rnleft);
if (rr > 0) {
if (o_ofile) /* log the stdout */
oprint('<', (unsigned char *)np, rr);
- np += rr; /* fix up ptrs and whatnot */
- rnleft -= rr; /* will get sanity-checked above */
- wrote_out += rr; /* global count */
+ np += rr;
+ rnleft -= rr;
+ wrote_out += rr; /* global count */
}
Debug("wrote %d to stdout, errno %d", rr, errno);
} /* rnleft */
@@ -697,20 +712,24 @@ Debug("wrote %d to stdout, errno %d", rr, errno);
oprint('>', (unsigned char *)zp, rr);
zp += rr;
rzleft -= rr;
- wrote_net += rr; /* global count */
+ wrote_net += rr; /* global count */
}
Debug("wrote %d to net, errno %d", rr, errno);
} /* rzleft */
if (o_interval) { /* cycle between slow lines, or ... */
sleep(o_interval);
- errno = 0; /* clear from sleep */
continue; /* ...with hairy select loop... */
}
- if ((rzleft) || (rnleft)) { /* shovel that shit till they ain't */
+ if (rzleft || rnleft) { /* shovel that shit till they ain't */
wretry--; /* none left, and get another load */
+ /* net write retries sometimes happen on UDP connections */
+ if (!wretry) { /* is something hung? */
+ holler_error("too many output retries");
+ return 1;
+ }
goto shovel;
}
- } /* while ding1:netfd is open */
+ } /* while (fds_open) */
/* XXX: maybe want a more graceful shutdown() here, or screw around with
linger times?? I suspect that I don't need to since I'm always doing
@@ -730,6 +749,7 @@ int nc_main(int argc UNUSED_PARAM, char **argv)
char *themdotted = themdotted; /* for compiler */
char **proggie;
int x;
+ unsigned cnt_l = 0;
unsigned o_lport = 0;
INIT_G();
@@ -760,7 +780,7 @@ int nc_main(int argc UNUSED_PARAM, char **argv)
if (proggie[0][0] == '-') {
char *optpos = *proggie + 1;
/* Skip all valid opts w/o params */
- optpos = optpos + strspn(optpos, "nuv"IF_NC_SERVER("l")IF_NC_EXTRA("z"));
+ optpos = optpos + strspn(optpos, "nuv"IF_NC_SERVER("lk")IF_NC_EXTRA("z"));
if (*optpos == 'e' && !optpos[1]) {
*optpos = '\0';
proggie++;
@@ -774,17 +794,21 @@ int nc_main(int argc UNUSED_PARAM, char **argv)
e_found:
// -g -G -t -r deleted, unimplemented -a deleted too
- opt_complementary = "?2:vv:w+"; /* max 2 params; -v is a counter; -w N */
- getopt32(argv, "np:s:uvw:" IF_NC_SERVER("l")
+ opt_complementary = "?2:vv:ll:w+"; /* max 2 params; -v and -l are counters; -w N */
+ getopt32(argv, "np:s:uvw:" IF_NC_SERVER("lk")
IF_NC_EXTRA("i:o:z"),
&str_p, &str_s, &o_wait
- IF_NC_EXTRA(, &str_i, &str_o), &o_verbose);
+ IF_NC_EXTRA(, &str_i, &str_o), &o_verbose IF_NC_SERVER(, &cnt_l));
argv += optind;
#if ENABLE_NC_EXTRA
if (option_mask32 & OPT_i) /* line-interval time */
o_interval = xatou_range(str_i, 1, 0xffff);
#endif
+#if ENABLE_NC_SERVER
//if (option_mask32 & OPT_l) /* listen mode */
+ if (option_mask32 & OPT_k) /* persistent server mode */
+ cnt_l = 2;
+#endif
//if (option_mask32 & OPT_n) /* numeric-only, no DNS lookups */
//if (option_mask32 & OPT_o) /* hexdump log */
if (option_mask32 & OPT_p) { /* local source port */
@@ -833,7 +857,7 @@ int nc_main(int argc UNUSED_PARAM, char **argv)
if (o_udpmode)
socket_want_pktinfo(netfd);
if (!ENABLE_FEATURE_UNIX_LOCAL
- || o_listen
+ || cnt_l != 0 /* listen */
|| ouraddr->u.sa.sa_family != AF_UNIX
) {
xbind(netfd, &ouraddr->u.sa, ouraddr->len);
@@ -852,9 +876,8 @@ int nc_main(int argc UNUSED_PARAM, char **argv)
}
#endif
- FD_SET(STDIN_FILENO, &ding1); /* stdin *is* initially open */
if (proggie) {
- close(0); /* won't need stdin */
+ close(STDIN_FILENO); /* won't need stdin */
option_mask32 &= ~OPT_o; /* -o with -e is meaningless! */
}
#if ENABLE_NC_EXTRA
@@ -862,11 +885,9 @@ int nc_main(int argc UNUSED_PARAM, char **argv)
xmove_fd(xopen(str_o, O_WRONLY|O_CREAT|O_TRUNC), ofd);
#endif
- if (o_listen) {
- dolisten();
+ if (cnt_l != 0) {
+ dolisten((cnt_l - 1), proggie);
/* dolisten does its own connect reporting */
- if (proggie) /* -e given? */
- doexec(proggie);
x = readwrite(); /* it even works with UDP! */
} else {
/* Outbound connects. Now we're more picky about args... */
diff --git a/networking/netstat.c b/networking/netstat.c
index c0c6ba5..f80b845 100644
--- a/networking/netstat.c
+++ b/networking/netstat.c
@@ -125,10 +125,10 @@ typedef enum {
*/
#define ADDR_WIDE 51 /* INET6_ADDRSTRLEN + 5 for the port number */
#if ENABLE_FEATURE_NETSTAT_WIDE
-# define FMT_NET_CONN_DATA "%s %6ld %6ld %-*s %-*s %-12s"
+# define FMT_NET_CONN_DATA "%s %6lu %6lu %-*s %-*s %-12s"
# define FMT_NET_CONN_HEADER "\nProto Recv-Q Send-Q %-*s %-*s State %s\n"
#else
-# define FMT_NET_CONN_DATA "%s %6ld %6ld %-23s %-23s %-12s"
+# define FMT_NET_CONN_DATA "%s %6lu %6lu %-23s %-23s %-12s"
# define FMT_NET_CONN_HEADER "\nProto Recv-Q Send-Q %-23s %-23s State %s\n"
#endif
@@ -403,7 +403,7 @@ static int scan_inet_proc_line(struct inet_params *param, char *line)
"%*d: %32[0-9A-Fa-f]:%X "
"%32[0-9A-Fa-f]:%X %X "
"%lX:%lX %*X:%*X "
- "%*X %d %*d %ld ",
+ "%*X %d %*d %lu ",
local_addr, &param->local_port,
rem_addr, &param->rem_port, &param->state,
&param->txq, &param->rxq,
@@ -611,7 +611,7 @@ static int FAST_FUNC unix_do_one(char *line)
strcat(ss_flags, "N ");
strcat(ss_flags, "]");
- printf("%-5s %-6ld %-11s %-10s %-13s %6lu ",
+ printf("%-5s %-6lu %-11s %-10s %-13s %6lu ",
ss_proto, refcnt, ss_flags, ss_type, ss_state, inode
);
diff --git a/networking/nslookup.c b/networking/nslookup.c
index 62e2c6e..77337cf 100644
--- a/networking/nslookup.c
+++ b/networking/nslookup.c
@@ -150,6 +150,9 @@ static void set_default_dns(const char *server)
{
len_and_sockaddr *lsa;
+ if (!server)
+ return;
+
/* NB: this works even with, say, "[::1]:5353"! :) */
lsa = xhost2sockaddr(server, 53);
@@ -193,9 +196,17 @@ int nslookup_main(int argc, char **argv)
/* (but it also says "may be enabled in /etc/resolv.conf") */
/*_res.options |= RES_USE_INET6;*/
- if (argv[2])
- set_default_dns(argv[2]);
+ set_default_dns(argv[2]);
server_print();
+
+ /* getaddrinfo and friends are free to request a resolver
+ * reinitialization. Just in case, set_default_dns() again
+ * after getaddrinfo (in server_print). This reportedly helps
+ * with bug 675 "nslookup does not properly use second argument"
+ * at least on Debian Wheezy and Openwrt AA (eglibc based).
+ */
+ set_default_dns(argv[2]);
+
return print_host(argv[1], "Name:");
}
diff --git a/networking/ntpd.c b/networking/ntpd.c
index 447a464..1c1c38f 100644
--- a/networking/ntpd.c
+++ b/networking/ntpd.c
@@ -63,10 +63,10 @@ extern int adjtimex (struct timex *);
/* Verbosity control (max level of -dddd options accepted).
- * max 5 is very talkative (and bloated). 2 is non-bloated,
+ * max 6 is very talkative (and bloated). 3 is non-bloated,
* production level setting.
*/
-#define MAX_VERBOSE 2
+#define MAX_VERBOSE 3
/* High-level description of the algorithm:
@@ -96,11 +96,24 @@ extern int adjtimex (struct timex *);
* was hibernated, someone set totally wrong date, etc),
* then the time is stepped, all datapoints are discarded,
* and we go back to steady state.
+ *
+ * Made some changes to speed up re-syncing after our clock goes bad
+ * (tested with suspending my laptop):
+ * - if largish offset (>= STEP_THRESHOLD * 8 == 1 sec) is seen
+ * from a peer, schedule next query for this peer soon
+ * without drastically lowering poll interval for everybody.
+ * This makes us collect enough data for step much faster:
+ * e.g. at poll = 10 (1024 secs), step was done within 5 minutes
+ * after first reply which indicated that our clock is 14 seconds off.
+ * - on step, do not discard d_dispersion data of the existing datapoints,
+ * do not clear reachable_bits. This prevents discarding first ~8
+ * datapoints after the step.
*/
-#define RETRY_INTERVAL 5 /* on error, retry in N secs */
+#define RETRY_INTERVAL 5 /* on error, retry in N secs */
#define RESPONSE_INTERVAL 15 /* wait for reply up to N secs */
-#define INITIAL_SAMPLES 4 /* how many samples do we want for init */
+#define INITIAL_SAMPLES 4 /* how many samples do we want for init */
+#define BAD_DELAY_GROWTH 4 /* drop packet if its delay grew by more than this */
/* Clock discipline parameters and constants */
@@ -114,6 +127,10 @@ extern int adjtimex (struct timex *);
#define FREQ_TOLERANCE 0.000015 /* frequency tolerance (15 PPM) */
#define BURSTPOLL 0 /* initial poll */
#define MINPOLL 5 /* minimum poll interval. std ntpd uses 6 (6: 64 sec) */
+/* If we got largish offset from a peer, cap next query interval
+ * for this peer by this many seconds:
+ */
+#define BIGOFF_INTERVAL (1 << 6)
/* If offset > discipline_jitter * POLLADJ_GATE, and poll interval is >= 2^BIGPOLL,
* then it is decreased _at once_. (If < 2^BIGPOLL, it will be decreased _eventually_).
*/
@@ -233,8 +250,8 @@ typedef struct {
uint8_t lastpkt_status;
uint8_t lastpkt_stratum;
uint8_t reachable_bits;
- /* when to send new query (if p_fd == -1)
- * or when receive times out (if p_fd >= 0): */
+ /* when to send new query (if p_fd == -1)
+ * or when receive times out (if p_fd >= 0): */
double next_action_time;
double p_xmttime;
double lastpkt_recv_time;
@@ -339,7 +356,7 @@ struct globals {
#define STATE_NSET 0 /* initial state, "nothing is set" */
//#define STATE_FSET 1 /* frequency set from file */
-#define STATE_SPIK 2 /* spike detected */
+//#define STATE_SPIK 2 /* spike detected */
//#define STATE_FREQ 3 /* initial frequency */
#define STATE_SYNC 4 /* clock synchronized (normal operation) */
uint8_t discipline_state; // doc calls it c.state
@@ -372,6 +389,7 @@ static const int const_IPTOS_LOWDELAY = IPTOS_LOWDELAY;
#define VERB3 if (MAX_VERBOSE >= 3 && G.verbose >= 3)
#define VERB4 if (MAX_VERBOSE >= 4 && G.verbose >= 4)
#define VERB5 if (MAX_VERBOSE >= 5 && G.verbose >= 5)
+#define VERB6 if (MAX_VERBOSE >= 6 && G.verbose >= 6)
static double LOG2D(int a)
@@ -573,7 +591,7 @@ filter_datapoints(peer_t *p)
got_newest = 0;
sum = 0;
for (i = 0; i < NUM_DATAPOINTS; i++) {
- VERB4 {
+ VERB5 {
bb_error_msg("datapoint[%d]: off:%f disp:%f(%f) age:%f%s",
i,
fdp[idx].d_offset,
@@ -670,7 +688,7 @@ filter_datapoints(peer_t *p)
sum = SQRT(sum / NUM_DATAPOINTS);
p->filter_jitter = sum > G_precision_sec ? sum : G_precision_sec;
- VERB3 bb_error_msg("filter offset:%+f disp:%f jitter:%f",
+ VERB4 bb_error_msg("filter offset:%+f disp:%f jitter:%f",
p->filter_offset,
p->filter_dispersion,
p->filter_jitter);
@@ -682,6 +700,18 @@ reset_peer_stats(peer_t *p, double offset)
int i;
bool small_ofs = fabs(offset) < 16 * STEP_THRESHOLD;
+ /* Used to set p->filter_datapoint[i].d_dispersion = MAXDISP
+ * and clear reachable bits, but this proved to be too agressive:
+ * after step (tested with suspinding laptop for ~30 secs),
+ * this caused all previous data to be considered invalid,
+ * making us needing to collect full ~8 datapoins per peer
+ * after step in order to start trusting them.
+ * In turn, this was making poll interval decrease even after
+ * step was done. (Poll interval decreases already before step
+ * in this scenario, because we see large offsets and end up with
+ * no good peer to select).
+ */
+
for (i = 0; i < NUM_DATAPOINTS; i++) {
if (small_ofs) {
p->filter_datapoint[i].d_recv_time += offset;
@@ -695,17 +725,17 @@ reset_peer_stats(peer_t *p, double offset)
} else {
p->filter_datapoint[i].d_recv_time = G.cur_time;
p->filter_datapoint[i].d_offset = 0;
- p->filter_datapoint[i].d_dispersion = MAXDISP;
+ /*p->filter_datapoint[i].d_dispersion = MAXDISP;*/
}
}
if (small_ofs) {
p->lastpkt_recv_time += offset;
} else {
- p->reachable_bits = 0;
+ /*p->reachable_bits = 0;*/
p->lastpkt_recv_time = G.cur_time;
}
filter_datapoints(p); /* recalc p->filter_xxx */
- VERB5 bb_error_msg("%s->lastpkt_recv_time=%f", p->p_dotted, p->lastpkt_recv_time);
+ VERB6 bb_error_msg("%s->lastpkt_recv_time=%f", p->p_dotted, p->lastpkt_recv_time);
}
static void
@@ -810,22 +840,34 @@ send_query_to_peer(peer_t *p)
p->p_xmt_msg.m_xmttime.fractionl = random();
p->p_xmttime = gettime1900d();
+ /* Were doing it only if sendto worked, but
+ * loss of sync detection needs reachable_bits updated
+ * even if sending fails *locally*:
+ * "network is unreachable" because cable was pulled?
+ * We still need to declare "unsync" if this condition persists.
+ */
+ p->reachable_bits <<= 1;
+
if (do_sendto(p->p_fd, /*from:*/ NULL, /*to:*/ &p->p_lsa->u.sa, /*addrlen:*/ p->p_lsa->len,
&p->p_xmt_msg, NTP_MSGSIZE_NOAUTH) == -1
) {
close(p->p_fd);
p->p_fd = -1;
+ /*
+ * We know that we sent nothing.
+ * We can retry *soon* without fearing
+ * that we are flooding the peer.
+ */
set_next(p, RETRY_INTERVAL);
return;
}
- p->reachable_bits <<= 1;
set_next(p, RESPONSE_INTERVAL);
}
/* Note that there is no provision to prevent several run_scripts
- * to be done in quick succession. In fact, it happens rather often
+ * to be started in quick succession. In fact, it happens rather often
* if initial syncronization results in a step.
* You will see "step" and then "stratum" script runs, sometimes
* as close as only 0.002 seconds apart.
@@ -836,6 +878,8 @@ static void run_script(const char *action, double offset)
char *argv[3];
char *env1, *env2, *env3, *env4;
+ G.last_script_run = G.cur_time;
+
if (!G.script_name)
return;
@@ -872,8 +916,6 @@ static void run_script(const char *action, double offset)
free(env2);
free(env3);
free(env4);
-
- G.last_script_run = G.cur_time;
}
static NOINLINE void
@@ -893,11 +935,11 @@ step_time(double offset)
VERB2 {
tval = tvc.tv_sec;
- strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", localtime(&tval));
+ strftime_YYYYMMDDHHMMSS(buf, sizeof(buf), &tval);
bb_error_msg("current time is %s.%06u", buf, (unsigned)tvc.tv_usec);
}
tval = tvn.tv_sec;
- strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", localtime(&tval));
+ strftime_YYYYMMDDHHMMSS(buf, sizeof(buf), &tval);
bb_error_msg("setting time to %s.%06u (offset %+fs)", buf, (unsigned)tvn.tv_usec, offset);
/* Correct various fields which contain time-relative values: */
@@ -965,20 +1007,20 @@ fit(peer_t *p, double rd)
{
if ((p->reachable_bits & (p->reachable_bits-1)) == 0) {
/* One or zero bits in reachable_bits */
- VERB3 bb_error_msg("peer %s unfit for selection: unreachable", p->p_dotted);
+ VERB4 bb_error_msg("peer %s unfit for selection: unreachable", p->p_dotted);
return 0;
}
#if 0 /* we filter out such packets earlier */
if ((p->lastpkt_status & LI_ALARM) == LI_ALARM
|| p->lastpkt_stratum >= MAXSTRAT
) {
- VERB3 bb_error_msg("peer %s unfit for selection: bad status/stratum", p->p_dotted);
+ VERB4 bb_error_msg("peer %s unfit for selection: bad status/stratum", p->p_dotted);
return 0;
}
#endif
/* rd is root_distance(p) */
if (rd > MAXDIST + FREQ_TOLERANCE * (1 << G.poll_exp)) {
- VERB3 bb_error_msg("peer %s unfit for selection: root distance too high", p->p_dotted);
+ VERB4 bb_error_msg("peer %s unfit for selection: root distance too high", p->p_dotted);
return 0;
}
//TODO
@@ -1018,7 +1060,7 @@ select_and_cluster(void)
continue;
}
- VERB4 bb_error_msg("interval: [%f %f %f] %s",
+ VERB5 bb_error_msg("interval: [%f %f %f] %s",
offset - rd,
offset,
offset + rd,
@@ -1043,7 +1085,7 @@ select_and_cluster(void)
}
num_candidates = num_points / 3;
if (num_candidates == 0) {
- VERB3 bb_error_msg("no valid datapoints, no peer selected");
+ VERB3 bb_error_msg("no valid datapoints%s", ", no peer selected");
return NULL;
}
//TODO: sorting does not seem to be done in reference code
@@ -1101,12 +1143,13 @@ select_and_cluster(void)
break;
num_falsetickers++;
if (num_falsetickers * 2 >= num_candidates) {
- VERB3 bb_error_msg("too many falsetickers:%d (candidates:%d), no peer selected",
- num_falsetickers, num_candidates);
+ VERB3 bb_error_msg("falsetickers:%d, candidates:%d%s",
+ num_falsetickers, num_candidates,
+ ", no peer selected");
return NULL;
}
}
- VERB3 bb_error_msg("selected interval: [%f, %f]; candidates:%d falsetickers:%d",
+ VERB4 bb_error_msg("selected interval: [%f, %f]; candidates:%d falsetickers:%d",
low, high, num_candidates, num_falsetickers);
/* Clustering */
@@ -1124,7 +1167,7 @@ select_and_cluster(void)
survivor[num_survivors].p = p;
/* x.opt_rd == root_distance(p); */
survivor[num_survivors].metric = MAXDIST * p->lastpkt_stratum + point[i].opt_rd;
- VERB4 bb_error_msg("survivor[%d] metric:%f peer:%s",
+ VERB5 bb_error_msg("survivor[%d] metric:%f peer:%s",
num_survivors, survivor[num_survivors].metric, p->p_dotted);
num_survivors++;
}
@@ -1134,8 +1177,9 @@ select_and_cluster(void)
* is acceptable.
*/
if (num_survivors < MIN_SELECTED) {
- VERB3 bb_error_msg("num_survivors %d < %d, no peer selected",
- num_survivors, MIN_SELECTED);
+ VERB3 bb_error_msg("survivors:%d%s",
+ num_survivors,
+ ", no peer selected");
return NULL;
}
@@ -1155,7 +1199,7 @@ select_and_cluster(void)
double min_jitter = min_jitter;
if (num_survivors <= MIN_CLUSTERED) {
- VERB3 bb_error_msg("num_survivors %d <= %d, not discarding more",
+ VERB4 bb_error_msg("num_survivors %d <= %d, not discarding more",
num_survivors, MIN_CLUSTERED);
break;
}
@@ -1181,11 +1225,11 @@ select_and_cluster(void)
max_selection_jitter = selection_jitter_sq;
max_idx = i;
}
- VERB5 bb_error_msg("survivor %d selection_jitter^2:%f",
+ VERB6 bb_error_msg("survivor %d selection_jitter^2:%f",
i, selection_jitter_sq);
}
max_selection_jitter = SQRT(max_selection_jitter / num_survivors);
- VERB4 bb_error_msg("max_selection_jitter (at %d):%f min_jitter:%f",
+ VERB5 bb_error_msg("max_selection_jitter (at %d):%f min_jitter:%f",
max_idx, max_selection_jitter, min_jitter);
/* If the maximum selection jitter is less than the
@@ -1194,7 +1238,7 @@ select_and_cluster(void)
* as well stop.
*/
if (max_selection_jitter < min_jitter) {
- VERB3 bb_error_msg("max_selection_jitter:%f < min_jitter:%f, num_survivors:%d, not discarding more",
+ VERB4 bb_error_msg("max_selection_jitter:%f < min_jitter:%f, num_survivors:%d, not discarding more",
max_selection_jitter, min_jitter, num_survivors);
break;
}
@@ -1202,7 +1246,7 @@ select_and_cluster(void)
/* Delete survivor[max_idx] from the list
* and go around again.
*/
- VERB5 bb_error_msg("dropping survivor %d", max_idx);
+ VERB6 bb_error_msg("dropping survivor %d", max_idx);
num_survivors--;
while (max_idx < num_survivors) {
survivor[max_idx] = survivor[max_idx + 1];
@@ -1244,7 +1288,7 @@ select_and_cluster(void)
/* Starting from 1 is ok here */
for (i = 1; i < num_survivors; i++) {
if (G.last_update_peer == survivor[i].p) {
- VERB4 bb_error_msg("keeping old synced peer");
+ VERB5 bb_error_msg("keeping old synced peer");
p = G.last_update_peer;
goto keep_old;
}
@@ -1252,7 +1296,7 @@ select_and_cluster(void)
}
G.last_update_peer = p;
keep_old:
- VERB3 bb_error_msg("selected peer %s filter_offset:%+f age:%f",
+ VERB4 bb_error_msg("selected peer %s filter_offset:%+f age:%f",
p->p_dotted,
p->filter_offset,
G.cur_time - p->lastpkt_recv_time
@@ -1271,7 +1315,7 @@ set_new_values(int disc_state, double offset, double recv_time)
* of the last clock filter sample, which must be earlier than
* the current time.
*/
- VERB3 bb_error_msg("disc_state=%d last update offset=%f recv_time=%f",
+ VERB4 bb_error_msg("disc_state=%d last update offset=%f recv_time=%f",
disc_state, offset, recv_time);
G.discipline_state = disc_state;
G.last_update_offset = offset;
@@ -1309,8 +1353,8 @@ update_local_clock(peer_t *p)
* an old sample or the same sample twice.
*/
if (recv_time <= G.last_update_recv_time) {
- VERB3 bb_error_msg("same or older datapoint: %f >= %f, not using it",
- G.last_update_recv_time, recv_time);
+ VERB3 bb_error_msg("update from %s: same or older datapoint, not using it",
+ p->p_dotted);
return 0; /* "leave poll interval as is" */
}
@@ -1326,7 +1370,7 @@ update_local_clock(peer_t *p)
if (G.discipline_state == STATE_FREQ) {
/* Ignore updates until the stepout threshold */
if (since_last_update < WATCH_THRESHOLD) {
- VERB3 bb_error_msg("measuring drift, datapoint ignored, %f sec remains",
+ VERB4 bb_error_msg("measuring drift, datapoint ignored, %f sec remains",
WATCH_THRESHOLD - since_last_update);
return 0; /* "leave poll interval as is" */
}
@@ -1340,10 +1384,21 @@ update_local_clock(peer_t *p)
* offset exceeds the step threshold and when it does not.
*/
if (abs_offset > STEP_THRESHOLD) {
+#if 0
+ double remains;
+
+// This "spike state" seems to be useless, peer selection already drops
+// occassional "bad" datapoints. If we are here, there were _many_
+// large offsets. When a few first large offsets are seen,
+// we end up in "no valid datapoints, no peer selected" state.
+// Only when enough of them are seen (which means it's not a fluke),
+// we end up here. Looks like _our_ clock is off.
switch (G.discipline_state) {
case STATE_SYNC:
/* The first outlyer: ignore it, switch to SPIK state */
- VERB3 bb_error_msg("offset:%+f - spike detected", offset);
+ VERB3 bb_error_msg("update from %s: offset:%+f, spike%s",
+ p->p_dotted, offset,
+ "");
G.discipline_state = STATE_SPIK;
return -1; /* "decrease poll interval" */
@@ -1351,13 +1406,16 @@ update_local_clock(peer_t *p)
/* Ignore succeeding outlyers until either an inlyer
* is found or the stepout threshold is exceeded.
*/
- if (since_last_update < WATCH_THRESHOLD) {
- VERB3 bb_error_msg("spike detected, datapoint ignored, %f sec remains",
- WATCH_THRESHOLD - since_last_update);
+ remains = WATCH_THRESHOLD - since_last_update;
+ if (remains > 0) {
+ VERB3 bb_error_msg("update from %s: offset:%+f, spike%s",
+ p->p_dotted, offset,
+ ", datapoint ignored");
return -1; /* "decrease poll interval" */
}
/* fall through: we need to step */
} /* switch */
+#endif
/* Step the time and clamp down the poll interval.
*
@@ -1380,7 +1438,7 @@ update_local_clock(peer_t *p)
* is always suppressed, even at the longer poll
* intervals.
*/
- VERB3 bb_error_msg("stepping time by %+f; poll_exp=MINPOLL", offset);
+ VERB4 bb_error_msg("stepping time by %+f; poll_exp=MINPOLL", offset);
step_time(offset);
if (option_mask32 & OPT_q) {
/* We were only asked to set time once. Done. */
@@ -1393,6 +1451,8 @@ update_local_clock(peer_t *p)
run_script("step", offset);
+ recv_time += offset;
+
#if USING_INITIAL_FREQ_ESTIMATION
if (G.discipline_state == STATE_NSET) {
set_new_values(STATE_FREQ, /*offset:*/ 0, recv_time);
@@ -1405,7 +1465,7 @@ update_local_clock(peer_t *p)
} else { /* abs_offset <= STEP_THRESHOLD */
if (G.poll_exp < MINPOLL && G.initial_poll_complete) {
- VERB3 bb_error_msg("small offset:%+f, disabling burst mode", offset);
+ VERB4 bb_error_msg("small offset:%+f, disabling burst mode", offset);
G.polladj_count = 0;
G.poll_exp = MINPOLL;
}
@@ -1434,7 +1494,7 @@ update_local_clock(peer_t *p)
#else
set_new_values(STATE_SYNC, offset, recv_time);
#endif
- VERB3 bb_error_msg("transitioning to FREQ, datapoint ignored");
+ VERB4 bb_error_msg("transitioning to FREQ, datapoint ignored");
return 0; /* "leave poll interval as is" */
#if 0 /* this is dead code for now */
@@ -1503,7 +1563,7 @@ update_local_clock(peer_t *p)
dtemp = p->filter_jitter; // SQRT(SQUARE(p->filter_jitter) + SQUARE(G.cluster_jitter));
dtemp += MAXD(p->filter_dispersion + FREQ_TOLERANCE * (G.cur_time - p->lastpkt_recv_time) + abs_offset, MINDISP);
G.rootdisp = p->lastpkt_rootdisp + dtemp;
- VERB3 bb_error_msg("updating leap/refid/reftime/rootdisp from peer %s", p->p_dotted);
+ VERB4 bb_error_msg("updating leap/refid/reftime/rootdisp from peer %s", p->p_dotted);
/* We are in STATE_SYNC now, but did not do adjtimex yet.
* (Any other state does not reach this, they all return earlier)
@@ -1523,13 +1583,13 @@ update_local_clock(peer_t *p)
dtemp = SQUARE(dtemp);
G.discipline_wander = SQRT(etemp + (dtemp - etemp) / AVG);
- VERB3 bb_error_msg("discipline freq_drift=%.9f(int:%ld corr:%e) wander=%f",
+ VERB4 bb_error_msg("discipline freq_drift=%.9f(int:%ld corr:%e) wander=%f",
G.discipline_freq_drift,
(long)(G.discipline_freq_drift * 65536e6),
freq_drift,
G.discipline_wander);
#endif
- VERB3 {
+ VERB4 {
memset(&tmx, 0, sizeof(tmx));
if (adjtimex(&tmx) < 0)
bb_perror_msg_and_die("adjtimex");
@@ -1577,7 +1637,7 @@ update_local_clock(peer_t *p)
/* NB: here kernel returns constant == G.poll_exp, not == G.poll_exp - 4.
* Not sure why. Perhaps it is normal.
*/
- VERB3 bb_error_msg("adjtimex:%d freq:%ld offset:%+ld status:0x%x",
+ VERB4 bb_error_msg("adjtimex:%d freq:%ld offset:%+ld status:0x%x",
rc, tmx.freq, tmx.offset, tmx.status);
G.kernel_freq_drift = tmx.freq / 65536;
VERB2 bb_error_msg("update from:%s offset:%+f jitter:%f clock drift:%+.3fppm tc:%d",
@@ -1599,7 +1659,7 @@ retry_interval(void)
interval = RETRY_INTERVAL;
r = random();
interval += r % (unsigned)(RETRY_INTERVAL / 4);
- VERB3 bb_error_msg("chose retry interval:%u", interval);
+ VERB4 bb_error_msg("chose retry interval:%u", interval);
return interval;
}
static unsigned
@@ -1612,7 +1672,7 @@ poll_interval(int exponent)
interval = 1 << exponent;
r = random();
interval += ((r & (interval-1)) >> 4) + ((r >> 8) & 1); /* + 1/16 of interval, max */
- VERB3 bb_error_msg("chose poll interval:%u (poll_exp:%d exp:%d)", interval, G.poll_exp, exponent);
+ VERB4 bb_error_msg("chose poll interval:%u (poll_exp:%d exp:%d)", interval, G.poll_exp, exponent);
return interval;
}
static NOINLINE void
@@ -1622,10 +1682,13 @@ recv_and_process_peer_pkt(peer_t *p)
ssize_t size;
msg_t msg;
double T1, T2, T3, T4;
+ double dv, offset;
unsigned interval;
datapoint_t *datapoint;
peer_t *q;
+ offset = 0;
+
/* We can recvfrom here and check from.IP, but some multihomed
* ntp servers reply from their *other IP*.
* TODO: maybe we should check at least what we can: from.port == 123?
@@ -1671,9 +1734,8 @@ recv_and_process_peer_pkt(peer_t *p)
// TODO: stratum 0 responses may have commands in 32-bit m_refid field:
// "DENY", "RSTR" - peer does not like us at all
// "RATE" - peer is overloaded, reduce polling freq
- interval = poll_interval(0);
- bb_error_msg("reply from %s: peer is unsynced, next query in %us", p->p_dotted, interval);
- goto set_next_and_ret;
+ bb_error_msg("reply from %s: peer is unsynced", p->p_dotted);
+ goto pick_normal_interval;
}
// /* Verify valid root distance */
@@ -1706,27 +1768,37 @@ recv_and_process_peer_pkt(peer_t *p)
T4 = G.cur_time;
p->lastpkt_recv_time = T4;
+ VERB6 bb_error_msg("%s->lastpkt_recv_time=%f", p->p_dotted, p->lastpkt_recv_time);
- VERB5 bb_error_msg("%s->lastpkt_recv_time=%f", p->p_dotted, p->lastpkt_recv_time);
- p->datapoint_idx = p->reachable_bits ? (p->datapoint_idx + 1) % NUM_DATAPOINTS : 0;
- datapoint = &p->filter_datapoint[p->datapoint_idx];
- datapoint->d_recv_time = T4;
- datapoint->d_offset = ((T2 - T1) + (T3 - T4)) / 2;
/* The delay calculation is a special case. In cases where the
* server and client clocks are running at different rates and
* with very fast networks, the delay can appear negative. In
* order to avoid violating the Principle of Least Astonishment,
* the delay is clamped not less than the system precision.
*/
+ dv = p->lastpkt_delay;
p->lastpkt_delay = (T4 - T1) - (T3 - T2);
if (p->lastpkt_delay < G_precision_sec)
p->lastpkt_delay = G_precision_sec;
+ /*
+ * If this packet's delay is much bigger than the last one,
+ * it's better to just ignore it than use its much less precise value.
+ */
+ if (p->reachable_bits && p->lastpkt_delay > dv * BAD_DELAY_GROWTH) {
+ bb_error_msg("reply from %s: delay %f is too high, ignoring", p->p_dotted, p->lastpkt_delay);
+ goto pick_normal_interval;
+ }
+
+ p->datapoint_idx = p->reachable_bits ? (p->datapoint_idx + 1) % NUM_DATAPOINTS : 0;
+ datapoint = &p->filter_datapoint[p->datapoint_idx];
+ datapoint->d_recv_time = T4;
+ datapoint->d_offset = offset = ((T2 - T1) + (T3 - T4)) / 2;
datapoint->d_dispersion = LOG2D(msg.m_precision_exp) + G_precision_sec;
if (!p->reachable_bits) {
/* 1st datapoint ever - replicate offset in every element */
int i;
for (i = 0; i < NUM_DATAPOINTS; i++) {
- p->filter_datapoint[i].d_offset = datapoint->d_offset;
+ p->filter_datapoint[i].d_offset = offset;
}
}
@@ -1734,7 +1806,7 @@ recv_and_process_peer_pkt(peer_t *p)
if ((MAX_VERBOSE && G.verbose) || (option_mask32 & OPT_w)) {
bb_error_msg("reply from %s: offset:%+f delay:%f status:0x%02x strat:%d refid:0x%08x rootdelay:%f reach:0x%02x",
p->p_dotted,
- datapoint->d_offset,
+ offset,
p->lastpkt_delay,
p->lastpkt_status,
p->lastpkt_stratum,
@@ -1759,7 +1831,7 @@ recv_and_process_peer_pkt(peer_t *p)
* drop poll interval one step down.
*/
if (fabs(q->filter_offset) >= POLLDOWN_OFFSET) {
- VERB3 bb_error_msg("offset:%+f > POLLDOWN_OFFSET", q->filter_offset);
+ VERB4 bb_error_msg("offset:%+f > POLLDOWN_OFFSET", q->filter_offset);
goto poll_down;
}
}
@@ -1781,11 +1853,11 @@ recv_and_process_peer_pkt(peer_t *p)
G.polladj_count = 0;
if (G.poll_exp < MAXPOLL) {
G.poll_exp++;
- VERB3 bb_error_msg("polladj: discipline_jitter:%f ++poll_exp=%d",
+ VERB4 bb_error_msg("polladj: discipline_jitter:%f ++poll_exp=%d",
G.discipline_jitter, G.poll_exp);
}
} else {
- VERB3 bb_error_msg("polladj: incr:%d", G.polladj_count);
+ VERB4 bb_error_msg("polladj: incr:%d", G.polladj_count);
}
} else {
G.polladj_count -= G.poll_exp * 2;
@@ -1807,17 +1879,32 @@ recv_and_process_peer_pkt(peer_t *p)
if (pp->p_fd < 0)
pp->next_action_time -= (1 << G.poll_exp);
}
- VERB3 bb_error_msg("polladj: discipline_jitter:%f --poll_exp=%d",
+ VERB4 bb_error_msg("polladj: discipline_jitter:%f --poll_exp=%d",
G.discipline_jitter, G.poll_exp);
}
} else {
- VERB3 bb_error_msg("polladj: decr:%d", G.polladj_count);
+ VERB4 bb_error_msg("polladj: decr:%d", G.polladj_count);
}
}
}
/* Decide when to send new query for this peer */
+ pick_normal_interval:
interval = poll_interval(0);
+ if (fabs(offset) >= STEP_THRESHOLD * 8 && interval > BIGOFF_INTERVAL) {
+ /* If we are synced, offsets are less than STEP_THRESHOLD,
+ * or at the very least not much larger than it.
+ * Now we see a largish one.
+ * Either this peer is feeling bad, or packet got corrupted,
+ * or _our_ clock is wrong now and _all_ peers will show similar
+ * largish offsets too.
+ * I observed this with laptop suspend stopping clock.
+ * In any case, it makes sense to make next request soonish:
+ * cases 1 and 2: get a better datapoint,
+ * case 3: allows to resync faster.
+ */
+ interval = BIGOFF_INTERVAL;
+ }
set_next_and_ret:
set_next(p, interval);
@@ -2165,12 +2252,14 @@ int ntpd_main(int argc UNUSED_PARAM, char **argv)
did_poll:
gettime1900d(); /* sets G.cur_time */
if (nfds <= 0) {
- if (G.script_name && G.cur_time - G.last_script_run > 11*60) {
+ if (!bb_got_signal /* poll wasn't interrupted by a signal */
+ && G.cur_time - G.last_script_run > 11*60
+ ) {
/* Useful for updating battery-backed RTC and such */
run_script("periodic", G.last_update_offset);
gettime1900d(); /* sets G.cur_time */
}
- continue;
+ goto check_unsync;
}
/* Process any received packets */
@@ -2201,6 +2290,21 @@ int ntpd_main(int argc UNUSED_PARAM, char **argv)
gettime1900d(); /* sets G.cur_time */
}
}
+
+ check_unsync:
+ if (G.ntp_peers && G.stratum != MAXSTRAT) {
+ for (item = G.ntp_peers; item != NULL; item = item->link) {
+ peer_t *p = (peer_t *) item->data;
+ if (p->reachable_bits)
+ goto have_reachable_peer;
+ }
+ /* No peer responded for last 8 packets, panic */
+ G.polladj_count = 0;
+ G.poll_exp = MINPOLL;
+ G.stratum = MAXSTRAT;
+ run_script("unsync", 0.0);
+ have_reachable_peer: ;
+ }
} /* while (!bb_got_signal) */
remove_pidfile(CONFIG_PID_FILE_PATH "/ntpd.pid");
diff --git a/networking/ntpd_simple.c b/networking/ntpd_simple.c
index 55bded8..3e7fc47 100644
--- a/networking/ntpd_simple.c
+++ b/networking/ntpd_simple.c
@@ -378,7 +378,7 @@ step_time_once(double offset)
bb_perror_msg_and_die("settimeofday");
tval = tv.tv_sec;
- strftime(buf, sizeof(buf), "%a %b %e %H:%M:%S %Z %Y", localtime(&tval));
+ strftime_YYYYMMDDHHMMSS(buf, sizeof(buf), &tval);
bb_error_msg("setting clock to %s (offset %fs)", buf, offset);
diff --git a/networking/ping.c b/networking/ping.c
index ac67d46..b207442 100644
--- a/networking/ping.c
+++ b/networking/ping.c
@@ -89,7 +89,9 @@
//usage: "[OPTIONS] HOST"
//usage:# define ping_full_usage "\n\n"
//usage: "Send ICMP ECHO_REQUEST packets to network hosts\n"
+//usage: IF_PING6(
//usage: "\n -4,-6 Force IP or IPv6 name resolution"
+//usage: )
//usage: "\n -c CNT Send only CNT pings"
//usage: "\n -s SIZE Send SIZE data bytes in packets (default:56)"
//usage: "\n -t TTL Set TTL"
@@ -147,8 +149,46 @@ enum {
MAX_DUP_CHK = (8 * 128),
MAXWAIT = 10,
PINGINTERVAL = 1, /* 1 second */
+ pingsock = 0,
};
+static void
+#if ENABLE_PING6
+create_icmp_socket(len_and_sockaddr *lsa)
+#else
+create_icmp_socket(void)
+#define create_icmp_socket(lsa) create_icmp_socket()
+#endif
+{
+ int sock;
+#if ENABLE_PING6
+ if (lsa->u.sa.sa_family == AF_INET6)
+ sock = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6);
+ else
+#endif
+ sock = socket(AF_INET, SOCK_RAW, 1); /* 1 == ICMP */
+ if (sock < 0) {
+ if (errno != EPERM)
+ bb_perror_msg_and_die("%s", bb_msg_can_not_create_raw_socket);
+#if defined(__linux__) || defined(__APPLE__)
+ /* We don't have root privileges. Try SOCK_DGRAM instead.
+ * Linux needs net.ipv4.ping_group_range for this to work.
+ * MacOSX allows ICMP_ECHO, ICMP_TSTAMP or ICMP_MASKREQ
+ */
+#if ENABLE_PING6
+ if (lsa->u.sa.sa_family == AF_INET6)
+ sock = socket(AF_INET6, SOCK_DGRAM, IPPROTO_ICMPV6);
+ else
+#endif
+ sock = socket(AF_INET, SOCK_DGRAM, 1); /* 1 == ICMP */
+ if (sock < 0)
+#endif
+ bb_error_msg_and_die("%s", bb_msg_perm_denied_are_you_root);
+ }
+
+ xmove_fd(sock, pingsock);
+}
+
#if !ENABLE_FEATURE_FANCY_PING
/* Simple version */
@@ -169,12 +209,10 @@ static void noresp(int ign UNUSED_PARAM)
static void ping4(len_and_sockaddr *lsa)
{
struct icmp *pkt;
- int pingsock, c;
-
- pingsock = create_icmp_socket();
+ int c;
pkt = (struct icmp *) G.packet;
- memset(pkt, 0, sizeof(G.packet));
+ /*memset(pkt, 0, sizeof(G.packet)); already is */
pkt->icmp_type = ICMP_ECHO;
pkt->icmp_cksum = inet_cksum((uint16_t *) pkt, sizeof(G.packet));
@@ -182,11 +220,15 @@ static void ping4(len_and_sockaddr *lsa)
/* listen for replies */
while (1) {
+#if 0
struct sockaddr_in from;
socklen_t fromlen = sizeof(from);
c = recvfrom(pingsock, G.packet, sizeof(G.packet), 0,
(struct sockaddr *) &from, &fromlen);
+#else
+ c = recv(pingsock, G.packet, sizeof(G.packet), 0);
+#endif
if (c < 0) {
if (errno != EINTR)
bb_perror_msg("recvfrom");
@@ -208,13 +250,11 @@ static void ping4(len_and_sockaddr *lsa)
static void ping6(len_and_sockaddr *lsa)
{
struct icmp6_hdr *pkt;
- int pingsock, c;
+ int c;
int sockopt;
- pingsock = create_icmp6_socket();
-
pkt = (struct icmp6_hdr *) G.packet;
- memset(pkt, 0, sizeof(G.packet));
+ /*memset(pkt, 0, sizeof(G.packet)); already is */
pkt->icmp6_type = ICMP6_ECHO_REQUEST;
sockopt = offsetof(struct icmp6_hdr, icmp6_cksum);
@@ -224,18 +264,21 @@ static void ping6(len_and_sockaddr *lsa)
/* listen for replies */
while (1) {
+#if 0
struct sockaddr_in6 from;
socklen_t fromlen = sizeof(from);
c = recvfrom(pingsock, G.packet, sizeof(G.packet), 0,
(struct sockaddr *) &from, &fromlen);
+#else
+ c = recv(pingsock, G.packet, sizeof(G.packet), 0);
+#endif
if (c < 0) {
if (errno != EINTR)
bb_perror_msg("recvfrom");
continue;
}
- if (c >= ICMP_MINLEN) { /* icmp6_hdr */
- pkt = (struct icmp6_hdr *) G.packet;
+ if (c >= ICMP_MINLEN) { /* icmp6_hdr */
if (pkt->icmp6_type == ICMP6_ECHO_REPLY)
break;
}
@@ -283,6 +326,7 @@ static int common_ping_main(sa_family_t af, char **argv)
signal(SIGALRM, noresp);
alarm(5); /* give the host 5000ms to respond */
+ create_icmp_socket(lsa);
#if ENABLE_PING6
if (lsa->u.sa.sa_family == AF_INET6)
ping6(lsa);
@@ -299,7 +343,7 @@ static int common_ping_main(sa_family_t af, char **argv)
/* Full(er) version */
-#define OPT_STRING ("qvc:s:t:w:W:I:4" IF_PING6("6"))
+#define OPT_STRING ("qvc:s:t:w:W:I:n4" IF_PING6("6"))
enum {
OPT_QUIET = 1 << 0,
OPT_VERBOSE = 1 << 1,
@@ -309,13 +353,13 @@ enum {
OPT_w = 1 << 5,
OPT_W = 1 << 6,
OPT_I = 1 << 7,
- OPT_IPV4 = 1 << 8,
- OPT_IPV6 = (1 << 9) * ENABLE_PING6,
+ /*OPT_n = 1 << 8, - ignored */
+ OPT_IPV4 = 1 << 9,
+ OPT_IPV6 = (1 << 10) * ENABLE_PING6,
};
struct globals {
- int pingsock;
int if_index;
char *str_I;
len_and_sockaddr *source_lsa;
@@ -341,17 +385,13 @@ struct globals {
struct sockaddr_in6 sin6;
#endif
} pingaddr;
- char rcvd_tbl[MAX_DUP_CHK / 8];
+ unsigned char rcvd_tbl[MAX_DUP_CHK / 8];
} FIX_ALIASING;
#define G (*(struct globals*)&bb_common_bufsiz1)
-#define pingsock (G.pingsock )
#define if_index (G.if_index )
#define source_lsa (G.source_lsa )
#define str_I (G.str_I )
#define datalen (G.datalen )
-#define ntransmitted (G.ntransmitted)
-#define nreceived (G.nreceived )
-#define nrepeats (G.nrepeats )
#define pingcount (G.pingcount )
#define opt_ttl (G.opt_ttl )
#define myid (G.myid )
@@ -369,51 +409,55 @@ void BUG_ping_globals_too_big(void);
#define INIT_G() do { \
if (sizeof(G) > COMMON_BUFSIZE) \
BUG_ping_globals_too_big(); \
- pingsock = -1; \
datalen = DEFDATALEN; \
timeout = MAXWAIT; \
tmin = UINT_MAX; \
} while (0)
-#define A(bit) rcvd_tbl[(bit)>>3] /* identify byte in array */
-#define B(bit) (1 << ((bit) & 0x07)) /* identify bit in byte */
-#define SET(bit) (A(bit) |= B(bit))
-#define CLR(bit) (A(bit) &= (~B(bit)))
-#define TST(bit) (A(bit) & B(bit))
-
-/**************************************************************************/
+#define BYTE(bit) rcvd_tbl[(bit)>>3]
+#define MASK(bit) (1 << ((bit) & 7))
+#define SET(bit) (BYTE(bit) |= MASK(bit))
+#define CLR(bit) (BYTE(bit) &= (~MASK(bit)))
+#define TST(bit) (BYTE(bit) & MASK(bit))
static void print_stats_and_exit(int junk) NORETURN;
static void print_stats_and_exit(int junk UNUSED_PARAM)
{
+ unsigned long ul;
+ unsigned long nrecv;
+
signal(SIGINT, SIG_IGN);
- printf("\n--- %s ping statistics ---\n", hostname);
- printf("%lu packets transmitted, ", ntransmitted);
- printf("%lu packets received, ", nreceived);
- if (nrepeats)
- printf("%lu duplicates, ", nrepeats);
- if (ntransmitted)
- ntransmitted = (ntransmitted - nreceived) * 100 / ntransmitted;
- printf("%lu%% packet loss\n", ntransmitted);
+ nrecv = G.nreceived;
+ printf("\n--- %s ping statistics ---\n"
+ "%lu packets transmitted, "
+ "%lu packets received, ",
+ hostname, G.ntransmitted, nrecv
+ );
+ if (G.nrepeats)
+ printf("%lu duplicates, ", G.nrepeats);
+ ul = G.ntransmitted;
+ if (ul != 0)
+ ul = (ul - nrecv) * 100 / ul;
+ printf("%lu%% packet loss\n", ul);
if (tmin != UINT_MAX) {
- unsigned tavg = tsum / (nreceived + nrepeats);
+ unsigned tavg = tsum / (nrecv + G.nrepeats);
printf("round-trip min/avg/max = %u.%03u/%u.%03u/%u.%03u ms\n",
tmin / 1000, tmin % 1000,
tavg / 1000, tavg % 1000,
tmax / 1000, tmax % 1000);
}
/* if condition is true, exit with 1 -- 'failure' */
- exit(nreceived == 0 || (deadline && nreceived < pingcount));
+ exit(nrecv == 0 || (deadline && nrecv < pingcount));
}
static void sendping_tail(void (*sp)(int), int size_pkt)
{
int sz;
- CLR((uint16_t)ntransmitted % MAX_DUP_CHK);
- ntransmitted++;
+ CLR((uint16_t)G.ntransmitted % MAX_DUP_CHK);
+ G.ntransmitted++;
size_pkt += datalen;
@@ -423,7 +467,7 @@ static void sendping_tail(void (*sp)(int), int size_pkt)
if (sz != size_pkt)
bb_error_msg_and_die("%s", bb_msg_write_error);
- if (pingcount == 0 || deadline || ntransmitted < pingcount) {
+ if (pingcount == 0 || deadline || G.ntransmitted < pingcount) {
/* Didn't send all pings yet - schedule next in 1s */
signal(SIGALRM, sp);
if (deadline) {
@@ -439,7 +483,7 @@ static void sendping_tail(void (*sp)(int), int size_pkt)
* otherwise ping waits for two RTTs. */
unsigned expire = timeout;
- if (nreceived) {
+ if (G.nreceived) {
/* approx. 2*tmax, in seconds (2 RTT) */
expire = tmax / (512*1024);
if (expire == 0)
@@ -458,7 +502,7 @@ static void sendping4(int junk UNUSED_PARAM)
pkt->icmp_type = ICMP_ECHO;
/*pkt->icmp_code = 0;*/
pkt->icmp_cksum = 0; /* cksum is calculated with this field set to 0 */
- pkt->icmp_seq = htons(ntransmitted); /* don't ++ here, it can be a macro */
+ pkt->icmp_seq = htons(G.ntransmitted); /* don't ++ here, it can be a macro */
pkt->icmp_id = myid;
/* If datalen < 4, we store timestamp _past_ the packet,
@@ -481,11 +525,11 @@ static void sendping6(int junk UNUSED_PARAM)
pkt->icmp6_type = ICMP6_ECHO_REQUEST;
/*pkt->icmp6_code = 0;*/
/*pkt->icmp6_cksum = 0;*/
- pkt->icmp6_seq = htons(ntransmitted); /* don't ++ here, it can be a macro */
+ pkt->icmp6_seq = htons(G.ntransmitted); /* don't ++ here, it can be a macro */
pkt->icmp6_id = myid;
/*if (datalen >= 4)*/
- *(uint32_t*)(&pkt->icmp6_data8[4]) = monotonic_us();
+ *(bb__aliased_uint32_t*)(&pkt->icmp6_data8[4]) = monotonic_us();
//TODO? pkt->icmp_cksum = inet_cksum(...);
@@ -545,11 +589,10 @@ static void unpack_tail(int sz, uint32_t *tp,
const char *from_str,
uint16_t recv_seq, int ttl)
{
+ unsigned char *b, m;
const char *dupmsg = " (DUP!)";
unsigned triptime = 0;
- ++nreceived;
-
if (tp) {
/* (int32_t) cast is for hypothetical 64-bit unsigned */
/* (doesn't hurt 32-bit real-world anyway) */
@@ -561,11 +604,15 @@ static void unpack_tail(int sz, uint32_t *tp,
tmax = triptime;
}
- if (TST(recv_seq % MAX_DUP_CHK)) {
- ++nrepeats;
- --nreceived;
+ b = &BYTE(recv_seq % MAX_DUP_CHK);
+ m = MASK(recv_seq % MAX_DUP_CHK);
+ /*if TST(recv_seq % MAX_DUP_CHK):*/
+ if (*b & m) {
+ ++G.nrepeats;
} else {
- SET(recv_seq % MAX_DUP_CHK);
+ /*SET(recv_seq % MAX_DUP_CHK):*/
+ *b |= m;
+ ++G.nreceived;
dupmsg += 7;
}
@@ -648,7 +695,6 @@ static void ping4(len_and_sockaddr *lsa)
{
int sockopt;
- pingsock = create_icmp_socket();
pingaddr.sin = lsa->u.sin;
if (source_lsa) {
if (setsockopt(pingsock, IPPROTO_IP, IP_MULTICAST_IF,
@@ -656,8 +702,6 @@ static void ping4(len_and_sockaddr *lsa)
bb_error_msg_and_die("can't set multicast source interface");
xbind(pingsock, &source_lsa->u.sa, source_lsa->len);
}
- if (str_I)
- setsockopt_bindtodevice(pingsock, str_I);
/* enable broadcast pings */
setsockopt_broadcast(pingsock);
@@ -692,7 +736,7 @@ static void ping4(len_and_sockaddr *lsa)
continue;
}
unpack4(G.rcv_packet, c, &from);
- if (pingcount && nreceived >= pingcount)
+ if (pingcount && G.nreceived >= pingcount)
break;
}
}
@@ -706,13 +750,9 @@ static void ping6(len_and_sockaddr *lsa)
struct iovec iov;
char control_buf[CMSG_SPACE(36)];
- pingsock = create_icmp6_socket();
pingaddr.sin6 = lsa->u.sin6;
- /* untested whether "-I addr" really works for IPv6: */
if (source_lsa)
xbind(pingsock, &source_lsa->u.sa, source_lsa->len);
- if (str_I)
- setsockopt_bindtodevice(pingsock, str_I);
#ifdef ICMP6_FILTER
{
@@ -784,7 +824,7 @@ static void ping6(len_and_sockaddr *lsa)
}
}
unpack6(G.rcv_packet, c, &from, hoplimit);
- if (pingcount && nreceived >= pingcount)
+ if (pingcount && G.nreceived >= pingcount)
break;
}
}
@@ -799,6 +839,11 @@ static void ping(len_and_sockaddr *lsa)
}
printf(": %d data bytes\n", datalen);
+ create_icmp_socket(lsa);
+ /* untested whether "-I addr" really works for IPv6: */
+ if (str_I)
+ setsockopt_bindtodevice(pingsock, str_I);
+
G.sizeof_rcv_packet = datalen + MAXIPLEN + MAXICMPLEN;
G.rcv_packet = xzalloc(G.sizeof_rcv_packet);
#if ENABLE_PING6
diff --git a/networking/pscan.c b/networking/pscan.c
index 28005ad..72ed8cd 100644
--- a/networking/pscan.c
+++ b/networking/pscan.c
@@ -157,7 +157,7 @@ int pscan_main(int argc UNUSED_PARAM, char **argv)
}
if (ENABLE_FEATURE_CLEAN_UP) free(lsap);
- printf("%d closed, %d open, %d timed out (or blocked) ports\n",
+ printf("%u closed, %u open, %u timed out (or blocked) ports\n",
closed_ports,
open_ports,
nports - (closed_ports + open_ports));
diff --git a/networking/tc.c b/networking/tc.c
index f968707..533f7c0 100644
--- a/networking/tc.c
+++ b/networking/tc.c
@@ -65,7 +65,7 @@ struct globals {
} FIX_ALIASING;
#define G (*(struct globals*)&bb_common_bufsiz1)
struct BUG_G_too_big {
- char BUG_G_too_big[sizeof(G) <= COMMON_BUFSIZE ? 1 : -1];
+ char BUG_G_too_big[sizeof(G) <= COMMON_BUFSIZE ? 1 : -1];
};
#define filter_ifindex (G.filter_ifindex)
#define filter_qdisc (G.filter_qdisc)
@@ -418,9 +418,6 @@ static int print_class(const struct sockaddr_nl *who UNUSED_PARAM,
static int print_filter(const struct sockaddr_nl *who UNUSED_PARAM,
struct nlmsghdr *hdr, void *arg UNUSED_PARAM)
{
- struct tcmsg *msg = NLMSG_DATA(hdr);
- int len = hdr->nlmsg_len;
- struct rtattr * tb[TCA_MAX+1];
return 0;
}
diff --git a/networking/telnet.c b/networking/telnet.c
index 58a6919..a255797 100644
--- a/networking/telnet.c
+++ b/networking/telnet.c
@@ -125,12 +125,10 @@ static void subneg(byte c);
static void iac_flush(void)
{
- write(netfd, G.iacbuf, G.iaclen);
+ full_write(netfd, G.iacbuf, G.iaclen);
G.iaclen = 0;
}
-#define write_str(fd, str) write(fd, str, sizeof(str) - 1)
-
static void doexit(int ev) NORETURN;
static void doexit(int ev)
{
@@ -145,7 +143,7 @@ static void con_escape(void)
if (bb_got_signal) /* came from line mode... go raw */
rawmode();
- write_str(1, "\r\nConsole escape. Commands are:\r\n\n"
+ full_write1_str("\r\nConsole escape. Commands are:\r\n\n"
" l go to line mode\r\n"
" c go to character mode\r\n"
" z suspend telnet\r\n"
@@ -176,7 +174,7 @@ static void con_escape(void)
doexit(EXIT_SUCCESS);
}
- write_str(1, "continuing...\r\n");
+ full_write1_str("continuing...\r\n");
if (bb_got_signal)
cookmode();
@@ -383,10 +381,11 @@ static void put_iac_naws(byte c, int x, int y)
put_iac(SB);
put_iac(c);
- put_iac((x >> 8) & 0xff);
- put_iac(x & 0xff);
- put_iac((y >> 8) & 0xff);
- put_iac(y & 0xff);
+ /* "... & 0xff" implicitly done below */
+ put_iac(x >> 8);
+ put_iac(x);
+ put_iac(y >> 8);
+ put_iac(y);
put_iac(IAC);
put_iac(SE);
diff --git a/networking/traceroute.c b/networking/traceroute.c
index eaefac6..c3b9b71 100644
--- a/networking/traceroute.c
+++ b/networking/traceroute.c
@@ -796,7 +796,9 @@ static int
common_traceroute_main(int op, char **argv)
{
int minpacket;
+#ifdef IP_TOS
int tos = 0;
+#endif
int max_ttl = 30;
int nprobes = 3;
int first_ttl = 1;
@@ -810,6 +812,7 @@ common_traceroute_main(int op, char **argv)
char *waittime_str;
char *pausemsecs_str;
char *first_ttl_str;
+ char *dest_str;
#if ENABLE_FEATURE_TRACEROUTE_SOURCE_ROUTE
llist_t *source_route_list = NULL;
int lsrr = 0;
@@ -842,8 +845,10 @@ common_traceroute_main(int op, char **argv)
if (op & OPT_IP_CHKSUM)
bb_error_msg("warning: ip checksums disabled");
#endif
+#ifdef IP_TOS
if (op & OPT_TOS)
tos = xatou_range(tos_str, 0, 255);
+#endif
if (op & OPT_MAX_TTL)
max_ttl = xatou_range(max_ttl_str, 1, 255);
if (op & OPT_PORT)
@@ -1064,8 +1069,12 @@ common_traceroute_main(int op, char **argv)
xsetgid(getgid());
xsetuid(getuid());
- printf("traceroute to %s (%s)", argv[0],
- xmalloc_sockaddr2dotted_noport(&dest_lsa->u.sa));
+ dest_str = xmalloc_sockaddr2dotted_noport(&dest_lsa->u.sa);
+ printf("traceroute to %s (%s)", argv[0], dest_str);
+ if (ENABLE_FEATURE_CLEAN_UP) {
+ free(dest_str);
+ }
+
if (op & OPT_SOURCE)
printf(" from %s", source);
printf(", %d hops max, %d byte packets\n", max_ttl, packlen);
@@ -1221,6 +1230,12 @@ common_traceroute_main(int op, char **argv)
}
}
+ if (ENABLE_FEATURE_CLEAN_UP) {
+ free(to);
+ free(lastaddr);
+ free(from_lsa);
+ }
+
return 0;
}
diff --git a/networking/udhcp/common.c b/networking/udhcp/common.c
index ae0e0d3..fe322db 100644
--- a/networking/udhcp/common.c
+++ b/networking/udhcp/common.c
@@ -62,6 +62,7 @@ const struct dhcp_optflag dhcp_optflags[] = {
{ OPTION_U16 , 0x84 }, /* DHCP_VLAN_ID */
{ OPTION_U8 , 0x85 }, /* DHCP_VLAN_PRIORITY */
#endif
+ { OPTION_STRING , 0xd1 }, /* DHCP_PXE_CONF_FILE */
{ OPTION_6RD , 0xd4 }, /* DHCP_6RD */
{ OPTION_STATIC_ROUTES | OPTION_LIST , 0xf9 }, /* DHCP_MS_STATIC_ROUTES */
{ OPTION_STRING , 0xfc }, /* DHCP_WPAD */
@@ -128,6 +129,7 @@ const char dhcp_option_strings[] ALIGN1 =
"vlanid" "\0" /* DHCP_VLAN_ID */
"vlanpriority" "\0"/* DHCP_VLAN_PRIORITY */
#endif
+ "pxeconffile" "\0" /* DHCP_PXE_CONF_FILE */
"ip6rd" "\0" /* DHCP_6RD */
"msstaticroutes""\0"/* DHCP_MS_STATIC_ROUTES */
"wpad" "\0" /* DHCP_WPAD */
@@ -371,20 +373,23 @@ static NOINLINE void attach_option(
char *buffer,
int length)
{
- struct option_set *existing, *new, **curr;
- char *allocated = NULL;
+ struct option_set *existing;
+ char *allocated;
- existing = udhcp_find_option(*opt_list, optflag->code);
- if (!existing) {
- log2("Attaching option %02x to list", optflag->code);
- allocated = allocate_tempopt_if_needed(optflag, buffer, &length);
+ allocated = allocate_tempopt_if_needed(optflag, buffer, &length);
#if ENABLE_FEATURE_UDHCP_RFC3397
- if ((optflag->flags & OPTION_TYPE_MASK) == OPTION_DNS_STRING) {
- /* reuse buffer and length for RFC1035-formatted string */
- allocated = buffer = (char *)dname_enc(NULL, 0, buffer, &length);
- }
+ if ((optflag->flags & OPTION_TYPE_MASK) == OPTION_DNS_STRING) {
+ /* reuse buffer and length for RFC1035-formatted string */
+ allocated = buffer = (char *)dname_enc(NULL, 0, buffer, &length);
+ }
#endif
+
+ existing = udhcp_find_option(*opt_list, optflag->code);
+ if (!existing) {
+ struct option_set *new, **curr;
+
/* make a new option */
+ log2("Attaching option %02x to list", optflag->code);
new = xmalloc(sizeof(*new));
new->data = xmalloc(length + OPT_DATA);
new->data[OPT_CODE] = optflag->code;
@@ -405,14 +410,7 @@ static NOINLINE void attach_option(
/* add it to an existing option */
log2("Attaching option %02x to existing member of list", optflag->code);
- allocated = allocate_tempopt_if_needed(optflag, buffer, &length);
old_len = existing->data[OPT_LEN];
-#if ENABLE_FEATURE_UDHCP_RFC3397
- if ((optflag->flags & OPTION_TYPE_MASK) == OPTION_DNS_STRING) {
- /* reuse buffer and length for RFC1035-formatted string */
- allocated = buffer = (char *)dname_enc(existing->data + OPT_DATA, old_len, buffer, &length);
- }
-#endif
if (old_len + length < 255) {
/* actually 255 is ok too, but adding a space can overlow it */
@@ -424,7 +422,7 @@ static NOINLINE void attach_option(
existing->data[OPT_DATA + old_len] = ' ';
old_len++;
}
- memcpy(existing->data + OPT_DATA + old_len, buffer, length);
+ memcpy(existing->data + OPT_DATA + old_len, (allocated ? allocated : buffer), length);
existing->data[OPT_LEN] = old_len + length;
} /* else, ignore the data, we could put this in a second option in the future */
} /* else, ignore the new data */
diff --git a/networking/udhcp/common.h b/networking/udhcp/common.h
index 0e8e45f..5e70d60 100644
--- a/networking/udhcp/common.h
+++ b/networking/udhcp/common.h
@@ -149,8 +149,9 @@ enum {
//#define DHCP_DOMAIN_SEARCH 0x77 /* RFC 3397. set of ASCIZ string, DNS-style compressed */
//#define DHCP_SIP_SERVERS 0x78 /* RFC 3361. flag byte, then: 0: domain names, 1: IP addrs */
//#define DHCP_STATIC_ROUTES 0x79 /* RFC 3442. (mask,ip,router) tuples */
-#define DHCP_VLAN_ID 0x84 /* 802.1P VLAN ID */
-#define DHCP_VLAN_PRIORITY 0x85 /* 802.1Q VLAN priority */
+//#define DHCP_VLAN_ID 0x84 /* 802.1P VLAN ID */
+//#define DHCP_VLAN_PRIORITY 0x85 /* 802.1Q VLAN priority */
+//#define DHCP_PXE_CONF_FILE 0xd1 /* RFC 5071 Configuration File */
//#define DHCP_MS_STATIC_ROUTES 0xf9 /* Microsoft's pre-RFC 3442 code for 0x79? */
//#define DHCP_WPAD 0xfc /* MSIE's Web Proxy Autodiscovery Protocol */
#define DHCP_END 0xff
diff --git a/networking/udhcp/d6_dhcpc.c b/networking/udhcp/d6_dhcpc.c
index c44220b..b0f0798 100644
--- a/networking/udhcp/d6_dhcpc.c
+++ b/networking/udhcp/d6_dhcpc.c
@@ -311,8 +311,8 @@ static int d6_mcast_from_client_config_ifindex(struct d6_packet *packet, uint8_t
return d6_send_raw_packet(
packet, (end - (uint8_t*) packet),
- /*src*/ NULL, CLIENT_PORT,
- /*dst*/ (struct in6_addr*)FF02__1_2, SERVER_PORT, MAC_BCAST_ADDR,
+ /*src*/ NULL, CLIENT_PORT6,
+ /*dst*/ (struct in6_addr*)FF02__1_2, SERVER_PORT6, MAC_BCAST_ADDR,
client_config.ifindex
);
}
@@ -554,8 +554,8 @@ static NOINLINE int send_d6_renew(uint32_t xid, struct in6_addr *server_ipv6, st
if (server_ipv6)
return d6_send_kernel_packet(
&packet, (opt_ptr - (uint8_t*) &packet),
- our_cur_ipv6, CLIENT_PORT,
- server_ipv6, SERVER_PORT
+ our_cur_ipv6, CLIENT_PORT6,
+ server_ipv6, SERVER_PORT6
);
return d6_mcast_from_client_config_ifindex(&packet, opt_ptr);
}
@@ -576,8 +576,8 @@ static int send_d6_release(struct in6_addr *server_ipv6, struct in6_addr *our_cu
bb_info_msg("Sending release...");
return d6_send_kernel_packet(
&packet, (opt_ptr - (uint8_t*) &packet),
- our_cur_ipv6, CLIENT_PORT,
- server_ipv6, SERVER_PORT
+ our_cur_ipv6, CLIENT_PORT6,
+ server_ipv6, SERVER_PORT6
);
}
@@ -614,7 +614,7 @@ static NOINLINE int d6_recv_raw_packet(struct in6_addr *peer_ipv6
/* make sure its the right packet for us, and that it passes sanity checks */
if (packet.ip6.ip6_nxt != IPPROTO_UDP
|| (packet.ip6.ip6_vfc >> 4) != 6
- || packet.udp.dest != htons(CLIENT_PORT)
+ || packet.udp.dest != htons(CLIENT_PORT6)
/* || bytes > (int) sizeof(packet) - can't happen */
|| packet.udp.len != packet.ip6.ip6_plen
) {
@@ -708,7 +708,7 @@ static int d6_raw_socket(int ifindex)
BPF_STMT(BPF_LDX|BPF_B|BPF_MSH, 0),
/* load udp destination port from halfword[header_len + 2] */
BPF_STMT(BPF_LD|BPF_H|BPF_IND, 2),
- /* jump to L3 if udp dport is CLIENT_PORT, else to L4 */
+ /* jump to L3 if udp dport is CLIENT_PORT6, else to L4 */
BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, 68, 0, 1),
/* L3: accept packet */
BPF_STMT(BPF_RET|BPF_K, 0xffffffff),
@@ -733,7 +733,7 @@ static int d6_raw_socket(int ifindex)
xbind(fd, (struct sockaddr *) &sock, sizeof(sock));
#if 0
- if (CLIENT_PORT == 68) {
+ if (CLIENT_PORT6 == 546) {
/* Use only if standard port is in use */
/* Ignoring error (kernel may lack support for this) */
if (setsockopt(fd, SOL_SOCKET, SO_ATTACH_FILTER, &filter_prog,
@@ -761,7 +761,7 @@ static void change_listen_mode(int new_mode)
sockfd = -1;
}
if (new_mode == LISTEN_KERNEL)
- sockfd = udhcp_listen_socket(/*INADDR_ANY,*/ CLIENT_PORT, client_config.interface);
+ sockfd = udhcp_listen_socket(/*INADDR_ANY,*/ CLIENT_PORT6, client_config.interface);
else if (new_mode != LISTEN_NONE)
sockfd = d6_raw_socket(client_config.ifindex);
/* else LISTEN_NONE: sockfd stays closed */
@@ -931,8 +931,8 @@ int udhcpc6_main(int argc UNUSED_PARAM, char **argv)
fd_set rfds;
/* Default options */
- IF_FEATURE_UDHCP_PORT(SERVER_PORT = 547;)
- IF_FEATURE_UDHCP_PORT(CLIENT_PORT = 546;)
+ IF_FEATURE_UDHCP_PORT(SERVER_PORT6 = 547;)
+ IF_FEATURE_UDHCP_PORT(CLIENT_PORT6 = 546;)
client_config.interface = "eth0";
client_config.script = CONFIG_UDHCPC_DEFAULT_SCRIPT;
@@ -961,8 +961,8 @@ int udhcpc6_main(int argc UNUSED_PARAM, char **argv)
}
#if ENABLE_FEATURE_UDHCP_PORT
if (opt & OPT_P) {
- CLIENT_PORT = xatou16(str_P);
- SERVER_PORT = CLIENT_PORT - 1;
+ CLIENT_PORT6 = xatou16(str_P);
+ SERVER_PORT6 = CLIENT_PORT6 + 1;
}
#endif
while (list_O) {
diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c
index 0862288..8dee916 100644
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -667,6 +667,15 @@ static int raw_bcast_from_client_config_ifindex(struct dhcp_packet *packet)
client_config.ifindex);
}
+static int bcast_or_ucast(struct dhcp_packet *packet, uint32_t ciaddr, uint32_t server)
+{
+ if (server)
+ return udhcp_send_kernel_packet(packet,
+ ciaddr, CLIENT_PORT,
+ server, SERVER_PORT);
+ return raw_bcast_from_client_config_ifindex(packet);
+}
+
/* Broadcast a DHCP discover packet to the network, with an optionally requested IP */
/* NOINLINE: limit stack usage in caller */
static NOINLINE int send_discover(uint32_t xid, uint32_t requested)
@@ -773,11 +782,7 @@ static NOINLINE int send_renew(uint32_t xid, uint32_t server, uint32_t ciaddr)
add_client_options(&packet);
bb_info_msg("Sending renew...");
- if (server)
- return udhcp_send_kernel_packet(&packet,
- ciaddr, CLIENT_PORT,
- server, SERVER_PORT);
- return raw_bcast_from_client_config_ifindex(&packet);
+ return bcast_or_ucast(&packet, ciaddr, server);
}
#if ENABLE_FEATURE_UDHCPC_ARPING
@@ -826,7 +831,11 @@ static int send_release(uint32_t server, uint32_t ciaddr)
udhcp_add_simple_option(&packet, DHCP_SERVER_ID, server);
bb_info_msg("Sending release...");
- return udhcp_send_kernel_packet(&packet, ciaddr, CLIENT_PORT, server, SERVER_PORT);
+ /* Note: normally we unicast here since "server" is not zero.
+ * However, there _are_ people who run "address-less" DHCP servers,
+ * and reportedly ISC dhcp client and Windows allow that.
+ */
+ return bcast_or_ucast(&packet, ciaddr, server);
}
/* Returns -1 on errors that are fatal for the socket, -2 for those that aren't */
@@ -1135,34 +1144,35 @@ static void client_background(void)
//usage:# define IF_UDHCP_VERBOSE(...)
//usage:#endif
//usage:#define udhcpc_trivial_usage
-//usage: "[-fbnq"IF_UDHCP_VERBOSE("v")"oCRB] [-i IFACE] [-r IP] [-s PROG] [-p PIDFILE]\n"
-//usage: " [-V VENDOR] [-x OPT:VAL]... [-O OPT]..." IF_FEATURE_UDHCP_PORT(" [-P N]")
+//usage: "[-fbq"IF_UDHCP_VERBOSE("v")IF_FEATURE_UDHCPC_ARPING("a")"RB] [-t N] [-T SEC] [-A SEC/-n]\n"
+//usage: " [-i IFACE]"IF_FEATURE_UDHCP_PORT(" [-P PORT]")" [-s PROG] [-p PIDFILE]\n"
+//usage: " [-oC] [-r IP] [-V VENDOR] [-F NAME] [-x OPT:VAL]... [-O OPT]..."
//usage:#define udhcpc_full_usage "\n"
//usage: IF_LONG_OPTS(
//usage: "\n -i,--interface IFACE Interface to use (default eth0)"
-//usage: "\n -p,--pidfile FILE Create pidfile"
+//usage: IF_FEATURE_UDHCP_PORT(
+//usage: "\n -P,--client-port PORT Use PORT (default 68)"
+//usage: )
//usage: "\n -s,--script PROG Run PROG at DHCP events (default "CONFIG_UDHCPC_DEFAULT_SCRIPT")"
+//usage: "\n -p,--pidfile FILE Create pidfile"
//usage: "\n -B,--broadcast Request broadcast replies"
-//usage: "\n -t,--retries N Send up to N discover packets"
-//usage: "\n -T,--timeout N Pause between packets (default 3 seconds)"
-//usage: "\n -A,--tryagain N Wait N seconds after failure (default 20)"
+//usage: "\n -t,--retries N Send up to N discover packets (default 3)"
+//usage: "\n -T,--timeout SEC Pause between packets (default 3)"
+//usage: "\n -A,--tryagain SEC Wait if lease is not obtained (default 20)"
+//usage: "\n -n,--now Exit if lease is not obtained"
+//usage: "\n -q,--quit Exit after obtaining lease"
+//usage: "\n -R,--release Release IP on exit"
//usage: "\n -f,--foreground Run in foreground"
//usage: USE_FOR_MMU(
//usage: "\n -b,--background Background if lease is not obtained"
//usage: )
-//usage: "\n -n,--now Exit if lease is not obtained"
-//usage: "\n -q,--quit Exit after obtaining lease"
-//usage: "\n -R,--release Release IP on exit"
//usage: "\n -S,--syslog Log to syslog too"
-//usage: IF_FEATURE_UDHCP_PORT(
-//usage: "\n -P,--client-port N Use port N (default 68)"
-//usage: )
//usage: IF_FEATURE_UDHCPC_ARPING(
//usage: "\n -a,--arping Use arping to validate offered address"
//usage: )
-//usage: "\n -O,--request-option OPT Request option OPT from server (cumulative)"
-//usage: "\n -o,--no-default-options Don't request any options (unless -O is given)"
//usage: "\n -r,--request IP Request this IP address"
+//usage: "\n -o,--no-default-options Don't request any options (unless -O is given)"
+//usage: "\n -O,--request-option OPT Request option OPT from server (cumulative)"
//usage: "\n -x OPT:VAL Include option OPT in sent packets (cumulative)"
//usage: "\n Examples of string, numeric, and hex byte opts:"
//usage: "\n -x hostname:bbox - option 12"
@@ -1177,29 +1187,29 @@ static void client_background(void)
//usage: )
//usage: IF_NOT_LONG_OPTS(
//usage: "\n -i IFACE Interface to use (default eth0)"
-//usage: "\n -p FILE Create pidfile"
+//usage: IF_FEATURE_UDHCP_PORT(
+//usage: "\n -P PORT Use PORT (default 68)"
+//usage: )
//usage: "\n -s PROG Run PROG at DHCP events (default "CONFIG_UDHCPC_DEFAULT_SCRIPT")"
+//usage: "\n -p FILE Create pidfile"
//usage: "\n -B Request broadcast replies"
-//usage: "\n -t N Send up to N discover packets"
-//usage: "\n -T N Pause between packets (default 3 seconds)"
-//usage: "\n -A N Wait N seconds (default 20) after failure"
+//usage: "\n -t N Send up to N discover packets (default 3)"
+//usage: "\n -T SEC Pause between packets (default 3)"
+//usage: "\n -A SEC Wait if lease is not obtained (default 20)"
+//usage: "\n -n Exit if lease is not obtained"
+//usage: "\n -q Exit after obtaining lease"
+//usage: "\n -R Release IP on exit"
//usage: "\n -f Run in foreground"
//usage: USE_FOR_MMU(
//usage: "\n -b Background if lease is not obtained"
//usage: )
-//usage: "\n -n Exit if lease is not obtained"
-//usage: "\n -q Exit after obtaining lease"
-//usage: "\n -R Release IP on exit"
//usage: "\n -S Log to syslog too"
-//usage: IF_FEATURE_UDHCP_PORT(
-//usage: "\n -P N Use port N (default 68)"
-//usage: )
//usage: IF_FEATURE_UDHCPC_ARPING(
//usage: "\n -a Use arping to validate offered address"
//usage: )
-//usage: "\n -O OPT Request option OPT from server (cumulative)"
-//usage: "\n -o Don't request any options (unless -O is given)"
//usage: "\n -r IP Request this IP address"
+//usage: "\n -o Don't request any options (unless -O is given)"
+//usage: "\n -O OPT Request option OPT from server (cumulative)"
//usage: "\n -x OPT:VAL Include option OPT in sent packets (cumulative)"
//usage: "\n Examples of string, numeric, and hex byte opts:"
//usage: "\n -x hostname:bbox - option 12"
@@ -1647,14 +1657,19 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
* might work too.
* "Next server" and router are definitely wrong ones to use, though...
*/
+/* We used to ignore pcakets without DHCP_SERVER_ID.
+ * I've got user reports from people who run "address-less" servers.
+ * They either supply DHCP_SERVER_ID of 0.0.0.0 or don't supply it at all.
+ * They say ISC DHCP client supports this case.
+ */
+ server_addr = 0;
temp = udhcp_get_option(&packet, DHCP_SERVER_ID);
if (!temp) {
- bb_error_msg("no server ID, ignoring packet");
- continue;
- /* still selecting - this server looks bad */
+ bb_error_msg("no server ID, using 0.0.0.0");
+ } else {
+ /* it IS unaligned sometimes, don't "optimize" */
+ move_from_unaligned32(server_addr, temp);
}
- /* it IS unaligned sometimes, don't "optimize" */
- move_from_unaligned32(server_addr, temp);
/*xid = packet.xid; - already is */
requested_ip = packet.yiaddr;
diff --git a/networking/udhcp/dhcpc.h b/networking/udhcp/dhcpc.h
index 2859a07..9f423a5 100644
--- a/networking/udhcp/dhcpc.h
+++ b/networking/udhcp/dhcpc.h
@@ -29,9 +29,11 @@ struct client_config_t {
#define client_config (*(struct client_config_t*)(&bb_common_bufsiz1[COMMON_BUFSIZE / 2]))
#if ENABLE_FEATURE_UDHCP_PORT
-#define CLIENT_PORT (client_config.port)
+#define CLIENT_PORT (client_config.port)
+#define CLIENT_PORT6 (client_config.port)
#else
-#define CLIENT_PORT 68
+#define CLIENT_PORT 68
+#define CLIENT_PORT6 546
#endif
POP_SAVED_FUNCTION_VISIBILITY
diff --git a/networking/udhcp/dhcpd.c b/networking/udhcp/dhcpd.c
index 9ad9595..a1a7f6b 100644
--- a/networking/udhcp/dhcpd.c
+++ b/networking/udhcp/dhcpd.c
@@ -22,11 +22,12 @@
*/
//usage:#define udhcpd_trivial_usage
-//usage: "[-fS]" IF_FEATURE_UDHCP_PORT(" [-P N]") " [CONFFILE]"
+//usage: "[-fS] [-I ADDR]" IF_FEATURE_UDHCP_PORT(" [-P N]") " [CONFFILE]"
//usage:#define udhcpd_full_usage "\n\n"
//usage: "DHCP server\n"
//usage: "\n -f Run in foreground"
//usage: "\n -S Log to syslog too"
+//usage: "\n -I ADDR Local address"
//usage: IF_FEATURE_UDHCP_PORT(
//usage: "\n -P N Use port N (default 67)"
//usage: )
@@ -302,6 +303,7 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv)
unsigned num_ips;
unsigned opt;
struct option_set *option;
+ char *str_I = str_I;
IF_FEATURE_UDHCP_PORT(char *str_P;)
#if ENABLE_FEATURE_UDHCP_PORT
@@ -312,8 +314,10 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv)
#if defined CONFIG_UDHCP_DEBUG && CONFIG_UDHCP_DEBUG >= 1
opt_complementary = "vv";
#endif
- opt = getopt32(argv, "fSv"
- IF_FEATURE_UDHCP_PORT("P:", &str_P)
+ opt = getopt32(argv, "fSI:v"
+ IF_FEATURE_UDHCP_PORT("P:")
+ , &str_I
+ IF_FEATURE_UDHCP_PORT(, &str_P)
IF_UDHCP_VERBOSE(, &dhcp_verbose)
);
if (!(opt & 1)) { /* no -f */
@@ -326,8 +330,13 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv)
openlog(applet_name, LOG_PID, LOG_DAEMON);
logmode |= LOGMODE_SYSLOG;
}
+ if (opt & 4) { /* -I */
+ len_and_sockaddr *lsa = xhost_and_af2sockaddr(str_I, 0, AF_INET);
+ server_config.server_nip = lsa->u.sin.sin_addr.s_addr;
+ free(lsa);
+ }
#if ENABLE_FEATURE_UDHCP_PORT
- if (opt & 8) { /* -P */
+ if (opt & 16) { /* -P */
SERVER_PORT = xatou16(str_P);
CLIENT_PORT = SERVER_PORT + 1;
}
@@ -367,7 +376,7 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv)
if (udhcp_read_interface(server_config.interface,
&server_config.ifindex,
- &server_config.server_nip,
+ (server_config.server_nip == 0 ? &server_config.server_nip : NULL),
server_config.server_mac)
) {
retval = 1;
diff --git a/networking/udhcp/dhcpd.h b/networking/udhcp/dhcpd.h
index 7c801bf..a77724f 100644
--- a/networking/udhcp/dhcpd.h
+++ b/networking/udhcp/dhcpd.h
@@ -61,9 +61,11 @@ struct server_config_t {
/* client_config sits in 2nd half of bb_common_bufsiz1 */
#if ENABLE_FEATURE_UDHCP_PORT
-#define SERVER_PORT (server_config.port)
+#define SERVER_PORT (server_config.port)
+#define SERVER_PORT6 (server_config.port)
#else
-#define SERVER_PORT 67
+#define SERVER_PORT 67
+#define SERVER_PORT6 547
#endif
diff --git a/networking/udhcp/packet.c b/networking/udhcp/packet.c
index 33c9585..148f525 100644
--- a/networking/udhcp/packet.c
+++ b/networking/udhcp/packet.c
@@ -143,8 +143,15 @@ int FAST_FUNC udhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt,
*
* In order to work with those buggy servers,
* we truncate packets after end option byte.
+ *
+ * However, RFC 1542 says "The IP Total Length and UDP Length
+ * must be large enough to contain the minimal BOOTP header of 300 octets".
+ * Thus, we retain enough padding to not go below 300 BOOTP bytes.
+ * Some devices have filters which drop DHCP packets shorter than that.
*/
padding = DHCP_OPTIONS_BUFSIZE - 1 - udhcp_end_option(packet.data.options);
+ if (padding > DHCP_SIZE - 300)
+ padding = DHCP_SIZE - 300;
packet.ip.protocol = IPPROTO_UDP;
packet.ip.saddr = source_nip;
@@ -215,6 +222,8 @@ int FAST_FUNC udhcp_send_kernel_packet(struct dhcp_packet *dhcp_pkt,
udhcp_dump_packet(dhcp_pkt);
padding = DHCP_OPTIONS_BUFSIZE - 1 - udhcp_end_option(dhcp_pkt->options);
+ if (padding > DHCP_SIZE - 300)
+ padding = DHCP_SIZE - 300;
result = safe_write(fd, dhcp_pkt, DHCP_SIZE - padding);
msg = "write";
ret_close:
diff --git a/networking/wget.c b/networking/wget.c
index 071cd94..e15f68d 100644
--- a/networking/wget.c
+++ b/networking/wget.c
@@ -62,16 +62,17 @@ struct globals {
const char *curfile; /* Name of current file being transferred */
bb_progress_t pmt;
#endif
- char *dir_prefix;
+ char *dir_prefix;
#if ENABLE_FEATURE_WGET_LONG_OPTIONS
- char *post_data;
- char *extra_headers;
+ char *post_data;
+ char *extra_headers;
#endif
- char *fname_out; /* where to direct output (-O) */
- const char *proxy_flag; /* Use proxies if env vars are set */
- const char *user_agent; /* "User-Agent" header field */
+ char *fname_out; /* where to direct output (-O) */
+ const char *proxy_flag; /* Use proxies if env vars are set */
+ const char *user_agent; /* "User-Agent" header field */
#if ENABLE_FEATURE_WGET_TIMEOUT
unsigned timeout_seconds;
+ bool connecting;
#endif
int output_fd;
int o_flags;
@@ -86,8 +87,10 @@ struct globals {
} FIX_ALIASING;
#define G (*ptr_to_globals)
#define INIT_G() do { \
- SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \
- IF_FEATURE_WGET_TIMEOUT(G.timeout_seconds = 900;) \
+ SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \
+} while (0)
+#define FINI_G() do { \
+ FREE_PTR_TO_GLOBALS(); \
} while (0)
@@ -195,13 +198,27 @@ static char* sanitize_string(char *s)
return s;
}
+#if ENABLE_FEATURE_WGET_TIMEOUT
+static void alarm_handler(int sig UNUSED_PARAM)
+{
+ /* This is theoretically unsafe (uses stdio and malloc in signal handler) */
+ if (G.connecting)
+ bb_error_msg_and_die("download timed out");
+}
+#endif
+
static FILE *open_socket(len_and_sockaddr *lsa)
{
+ int fd;
FILE *fp;
+ IF_FEATURE_WGET_TIMEOUT(alarm(G.timeout_seconds); G.connecting = 1;)
+ fd = xconnect_stream(lsa);
+ IF_FEATURE_WGET_TIMEOUT(G.connecting = 0;)
+
/* glibc 2.4 seems to try seeking on it - ??! */
/* hopefully it understands what ESPIPE means... */
- fp = fdopen(xconnect_stream(lsa), "r+");
+ fp = fdopen(fd, "r+");
if (fp == NULL)
bb_perror_msg_and_die("%s", bb_msg_memory_exhausted);
@@ -209,6 +226,7 @@ static FILE *open_socket(len_and_sockaddr *lsa)
}
/* Returns '\n' if it was seen, else '\0'. Trims at first '\r' or '\n' */
+/* FIXME: does not respect FEATURE_WGET_TIMEOUT and -T N: */
static char fgets_and_trim(FILE *fp)
{
char c;
@@ -256,15 +274,22 @@ static void parse_url(const char *src_url, struct host_info *h)
free(h->allocated);
h->allocated = url = xstrdup(src_url);
- if (strncmp(url, "http://", 7) == 0) {
- h->port = bb_lookup_port("http", "tcp", 80);
- h->host = url + 7;
- h->is_ftp = 0;
- } else if (strncmp(url, "ftp://", 6) == 0) {
+ if (strncmp(url, "ftp://", 6) == 0) {
h->port = bb_lookup_port("ftp", "tcp", 21);
h->host = url + 6;
h->is_ftp = 1;
} else
+ if (strncmp(url, "http://", 7) == 0) {
+ h->host = url + 7;
+ http:
+ h->port = bb_lookup_port("http", "tcp", 80);
+ h->is_ftp = 0;
+ } else
+ if (!strstr(url, "//")) {
+ // GNU wget is user-friendly and falls back to http://
+ h->host = url;
+ goto http;
+ } else
bb_error_msg_and_die("not an http or ftp url: %s", sanitize_string(url));
// FYI:
@@ -328,8 +353,16 @@ static char *gethdr(FILE *fp)
return NULL;
/* convert the header name to lower case */
- for (s = G.wget_buf; isalnum(*s) || *s == '-' || *s == '.'; ++s) {
- /* tolower for "A-Z", no-op for "0-9a-z-." */
+ for (s = G.wget_buf; isalnum(*s) || *s == '-' || *s == '.' || *s == '_'; ++s) {
+ /*
+ * No-op for 20-3f and 60-7f. "0-9a-z-." are in these ranges.
+ * 40-5f range ("@A-Z[\]^_") maps to 60-7f.
+ * "A-Z" maps to "a-z".
+ * "@[\]" can't occur in header names.
+ * "^_" maps to "~,DEL" (which is wrong).
+ * "^" was never seen yet, "_" was seen from web.archive.org
+ * (x-archive-orig-x_commoncrawl_Signature: HEXSTRING).
+ */
*s |= 0x20;
}
@@ -936,7 +969,10 @@ int wget_main(int argc UNUSED_PARAM, char **argv)
INIT_G();
- IF_FEATURE_WGET_TIMEOUT(G.timeout_seconds = 900;)
+#if ENABLE_FEATURE_WGET_TIMEOUT
+ G.timeout_seconds = 900;
+ signal(SIGALRM, alarm_handler);
+#endif
G.proxy_flag = "on"; /* use proxies if env vars are set */
G.user_agent = "Wget"; /* "User-Agent" header field */
@@ -987,5 +1023,10 @@ int wget_main(int argc UNUSED_PARAM, char **argv)
if (G.output_fd >= 0)
xclose(G.output_fd);
+#if ENABLE_FEATURE_CLEAN_UP && ENABLE_FEATURE_WGET_LONG_OPTIONS
+ free(G.extra_headers);
+#endif
+ FINI_G();
+
return EXIT_SUCCESS;
}
diff --git a/procps/kill.c b/procps/kill.c
index cb129ac..f4637c4 100644
--- a/procps/kill.c
+++ b/procps/kill.c
@@ -60,7 +60,7 @@
* This is needed to avoid collision with kill -9 ... syntax
*/
-int kill_main(int argc, char **argv)
+int kill_main(int argc UNUSED_PARAM, char **argv)
{
char *arg;
pid_t pid;
@@ -79,10 +79,9 @@ int kill_main(int argc, char **argv)
#endif
/* Parse any options */
- argc--;
arg = *++argv;
- if (argc < 1 || arg[0] != '-') {
+ if (!arg || arg[0] != '-') {
goto do_it_now;
}
@@ -91,13 +90,14 @@ int kill_main(int argc, char **argv)
* echo "Died of SIG`kill -l $?`"
* We try to mimic what kill from coreutils-6.8 does */
if (arg[1] == 'l' && arg[2] == '\0') {
- if (argc == 1) {
+ arg = *++argv;
+ if (!arg) {
/* Print the whole signal list */
print_signames();
return 0;
}
/* -l <sig list> */
- while ((arg = *++argv)) {
+ do {
if (isdigit(arg[0])) {
signo = bb_strtou(arg, NULL, 10);
if (errno) {
@@ -118,8 +118,8 @@ int kill_main(int argc, char **argv)
}
printf("%d\n", signo);
}
- }
- /* If they specified -l, we are all done */
+ arg = *++argv;
+ } while (arg);
return EXIT_SUCCESS;
}
@@ -127,8 +127,7 @@ int kill_main(int argc, char **argv)
if (killall && arg[1] == 'q' && arg[2] == '\0') {
quiet = 1;
arg = *++argv;
- argc--;
- if (argc < 1)
+ if (!arg)
bb_show_usage();
if (arg[0] != '-')
goto do_it_now;
@@ -140,8 +139,7 @@ int kill_main(int argc, char **argv)
if (killall5 && arg[0] == 'o')
goto do_it_now;
- if (argc > 1 && arg[0] == 's' && arg[1] == '\0') { /* -s SIG? */
- argc--;
+ if (argv[1] && arg[0] == 's' && arg[1] == '\0') { /* -s SIG? */
arg = *++argv;
} /* else it must be -SIG */
signo = get_signum(arg);
@@ -150,7 +148,6 @@ int kill_main(int argc, char **argv)
return EXIT_FAILURE;
}
arg = *++argv;
- argc--;
do_it_now:
pid = getpid();
@@ -158,7 +155,8 @@ int kill_main(int argc, char **argv)
if (killall5) {
pid_t sid;
procps_status_t* p = NULL;
- int ret = 0;
+ /* compat: exitcode 2 is "no one was signaled" */
+ int ret = 2;
/* Find out our session id */
sid = getsid(pid);
@@ -167,9 +165,10 @@ int kill_main(int argc, char **argv)
kill(-1, SIGSTOP);
/* Signal all processes except those in our session */
while ((p = procps_scan(p, PSSCAN_PID|PSSCAN_SID)) != NULL) {
- int i;
+ char **args;
if (p->sid == (unsigned)sid
+ || p->sid == 0 /* compat: kernel thread, don't signal it */
|| p->pid == (unsigned)pid
|| p->pid == 1
) {
@@ -178,18 +177,19 @@ int kill_main(int argc, char **argv)
/* All remaining args must be -o PID options.
* Check p->pid against them. */
- for (i = 0; i < argc; i++) {
+ args = argv;
+ while (*args) {
pid_t omit;
- arg = argv[i];
+ arg = *args++;
if (arg[0] != '-' || arg[1] != 'o') {
bb_error_msg("bad option '%s'", arg);
ret = 1;
goto resume;
}
arg += 2;
- if (!arg[0] && argv[++i])
- arg = argv[i];
+ if (!arg[0] && *args)
+ arg = *args++;
omit = bb_strtoi(arg, NULL, 10);
if (errno) {
bb_error_msg("invalid number '%s'", arg);
@@ -200,6 +200,7 @@ int kill_main(int argc, char **argv)
goto dont_kill;
}
kill(p->pid, signo);
+ ret = 0;
dont_kill: ;
}
resume:
@@ -210,14 +211,14 @@ int kill_main(int argc, char **argv)
}
/* Pid or name is required for kill/killall */
- if (argc < 1) {
+ if (!arg) {
bb_error_msg("you need to specify whom to kill");
return EXIT_FAILURE;
}
if (killall) {
/* Looks like they want to do a killall. Do that */
- while (arg) {
+ do {
pid_t* pidList;
pidList = find_pid_by_name(arg);
@@ -240,7 +241,7 @@ int kill_main(int argc, char **argv)
}
free(pidList);
arg = *++argv;
- }
+ } while (arg);
return errors;
}
diff --git a/procps/lsof.c b/procps/lsof.c
index ee39ddb..281a55c 100644
--- a/procps/lsof.c
+++ b/procps/lsof.c
@@ -61,9 +61,12 @@ int lsof_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
d_fd = opendir(name);
if (d_fd) {
while ((entry = readdir(d_fd)) != NULL) {
- if (entry->d_type == DT_LNK) {
- safe_strncpy(name + baseofs, entry->d_name, 10);
- fdlink = xmalloc_readlink(name);
+ /* Skip entries '.' and '..' (and any hidden file) */
+ if (entry->d_name[0] == '.')
+ continue;
+
+ safe_strncpy(name + baseofs, entry->d_name, 10);
+ if ((fdlink = xmalloc_readlink(name)) != NULL) {
printf("%d\t%s\t%s\n", proc->pid, proc->exe, fdlink);
free(fdlink);
}
diff --git a/procps/nmeter.c b/procps/nmeter.c
index 6a3b327..5d5b83b 100644
--- a/procps/nmeter.c
+++ b/procps/nmeter.c
@@ -333,8 +333,7 @@ static void scale(ullong ul)
char buf[5];
/* see http://en.wikipedia.org/wiki/Tera */
- smart_ulltoa4(ul, buf, " kmgtpezy");
- buf[4] = '\0';
+ smart_ulltoa4(ul, buf, " kmgtpezy")[0] = '\0';
put(buf);
}
diff --git a/procps/pgrep.c b/procps/pgrep.c
index 044f553..4ab458b 100644
--- a/procps/pgrep.c
+++ b/procps/pgrep.c
@@ -65,9 +65,9 @@ static void act(unsigned pid, char *cmd, int signo)
{
if (pgrep) {
if (option_mask32 & (1 << OPTBIT_L)) /* OPT_LIST */
- printf("%d %s\n", pid, cmd);
+ printf("%u %s\n", pid, cmd);
else
- printf("%d\n", pid);
+ printf("%u\n", pid);
} else
kill(pid, signo);
}
@@ -128,7 +128,7 @@ int pgrep_main(int argc UNUSED_PARAM, char **argv)
bb_show_usage();
if (argv[0])
- xregcomp(&re_buffer, argv[0], REG_EXTENDED | REG_NOSUB);
+ xregcomp(&re_buffer, argv[0], OPT_ANCHOR ? REG_EXTENDED : (REG_EXTENDED|REG_NOSUB));
matched_pid = 0;
cmd_last = NULL;
diff --git a/procps/powertop.c b/procps/powertop.c
index 71988a2..e3c29d1 100644
--- a/procps/powertop.c
+++ b/procps/powertop.c
@@ -627,7 +627,6 @@ static void show_timerstats(void)
int i, n = 0;
char strbuf6[6];
- strbuf6[5] = '\0';
puts("\nTop causes for wakeups:");
for (i = 0; i < G.lines_cnt; i++) {
if ((G.lines[i].count > 0 /*|| G.lines[i].disk_count > 0*/)
@@ -639,7 +638,7 @@ static void show_timerstats(void)
/*char c = ' ';
if (G.lines[i].disk_count)
c = 'D';*/
- smart_ulltoa5(G.lines[i].count, strbuf6, " KMGTPEZY");
+ smart_ulltoa5(G.lines[i].count, strbuf6, " KMGTPEZY")[0] = '\0';
printf(/*" %5.1f%% (%s)%c %s\n"*/
" %5.1f%% (%s) %s\n",
G.lines[i].count * 100.0 / G.lines_cumulative_count,
diff --git a/procps/ps.c b/procps/ps.c
index 0df20b7..c65fa01 100644
--- a/procps/ps.c
+++ b/procps/ps.c
@@ -70,7 +70,7 @@
enum { MAX_WIDTH = 2*1024 };
#if ENABLE_FEATURE_PS_TIME || ENABLE_FEATURE_PS_LONG
-static long get_uptime(void)
+static unsigned long get_uptime(void)
{
#ifdef __linux__
struct sysinfo info;
@@ -78,12 +78,15 @@ static long get_uptime(void)
return 0;
return info.uptime;
#elif 1
- char buf[64];
- long uptime;
+ unsigned long uptime;
+ char buf[sizeof(uptime)*3 + 2];
+ /* /proc/uptime is "UPTIME_SEC.NN IDLE_SEC.NN\n"
+ * (where IDLE is cumulative over all CPUs)
+ */
if (open_read_close("/proc/uptime", buf, sizeof(buf)) <= 0)
- bb_perror_msg_and_die("can't read %s", "/proc/uptime");
+ bb_perror_msg_and_die("can't read '%s'", "/proc/uptime");
buf[sizeof(buf)-1] = '\0';
- sscanf(buf, "%l", &uptime);
+ sscanf(buf, "%lu", &uptime);
return uptime;
#else
struct timespec ts;
@@ -138,7 +141,7 @@ struct globals {
unsigned terminal_width;
#if ENABLE_FEATURE_PS_TIME
unsigned kernel_HZ;
- unsigned long long seconds_since_boot;
+ unsigned long seconds_since_boot;
#endif
} FIX_ALIASING;
#define G (*(struct globals*)&bb_common_bufsiz1)
@@ -149,14 +152,13 @@ struct globals {
#define buffer (G.buffer )
#define terminal_width (G.terminal_width )
#define kernel_HZ (G.kernel_HZ )
-#define seconds_since_boot (G.seconds_since_boot)
#define INIT_G() do { } while (0)
#if ENABLE_FEATURE_PS_TIME
/* for ELF executables, notes are pushed before environment and args */
-static ptrdiff_t find_elf_note(ptrdiff_t findme)
+static uintptr_t find_elf_note(uintptr_t findme)
{
- ptrdiff_t *ep = (ptrdiff_t *) environ;
+ uintptr_t *ep = (uintptr_t *) environ;
while (*ep++)
continue;
@@ -222,7 +224,6 @@ static inline unsigned get_HZ_by_waiting(void)
static unsigned get_kernel_HZ(void)
{
-
if (kernel_HZ)
return kernel_HZ;
@@ -231,7 +232,7 @@ static unsigned get_kernel_HZ(void)
if (kernel_HZ == (unsigned)-1)
kernel_HZ = get_HZ_by_waiting();
- seconds_since_boot = get_uptime();
+ G.seconds_since_boot = get_uptime();
return kernel_HZ;
}
@@ -298,8 +299,7 @@ static void put_lu(char *buf, int size, unsigned long u)
char buf4[5];
/* see http://en.wikipedia.org/wiki/Tera */
- smart_ulltoa4(u, buf4, " mgtpezy");
- buf4[4] = '\0';
+ smart_ulltoa4(u, buf4, " mgtpezy")[0] = '\0';
sprintf(buf, "%.*s", size, buf4);
}
@@ -350,7 +350,7 @@ static void func_etime(char *buf, int size, const procps_status_t *ps)
mm = ps->start_time / get_kernel_HZ();
/* must be after get_kernel_HZ()! */
- mm = seconds_since_boot - mm;
+ mm = G.seconds_since_boot - mm;
ss = mm % 60;
mm /= 60;
snprintf(buf, size+1, "%3lu:%02u", mm, ss);
@@ -588,7 +588,7 @@ int ps_main(int argc UNUSED_PARAM, char **argv)
// -o col1,col2,col3=header
// Select which columns to display
/* We allow (and ignore) most of the above. FIXME.
- * -T is picked for threads (POSIX hasn't it standardized).
+ * -T is picked for threads (POSIX hasn't standardized it).
* procps v3.2.7 supports -T and shows tids as SPID column,
* it also supports -L where it shows tids as LWP column.
*/
@@ -599,7 +599,9 @@ int ps_main(int argc UNUSED_PARAM, char **argv)
parse_o(llist_pop(&opt_o));
} while (opt_o);
} else {
- /* Below: parse_o() needs char*, NOT const char*, can't give it default_o */
+ /* Below: parse_o() needs char*, NOT const char*,
+ * can't pass it constant string. Need to make a copy first.
+ */
#if ENABLE_SELINUX
if (!(opt & OPT_Z) || !is_selinux_enabled()) {
/* no -Z or no SELinux: do not show LABEL */
@@ -652,8 +654,8 @@ int ps_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
OPT_l = (1 << ENABLE_SELINUX) * (1 << ENABLE_FEATURE_SHOW_THREADS) * ENABLE_FEATURE_PS_LONG,
};
#if ENABLE_FEATURE_PS_LONG
- time_t now = 0;
- long uptime = 0;
+ time_t now = now;
+ unsigned long uptime;
#endif
/* If we support any options, parse argv */
#if ENABLE_SELINUX || ENABLE_FEATURE_SHOW_THREADS || ENABLE_FEATURE_PS_WIDE || ENABLE_FEATURE_PS_LONG
@@ -737,8 +739,7 @@ int ps_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
#endif
{
char buf6[6];
- smart_ulltoa5(p->vsz, buf6, " mgtpezy");
- buf6[5] = '\0';
+ smart_ulltoa5(p->vsz, buf6, " mgtpezy")[0] = '\0';
#if ENABLE_FEATURE_PS_LONG
if (opts & OPT_l) {
char bufr[6], stime_str[6];
@@ -749,8 +750,7 @@ int ps_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
time_t start = now - elapsed;
struct tm *tm = localtime(&start);
- smart_ulltoa5(p->rss, bufr, " mgtpezy");
- bufr[5] = '\0';
+ smart_ulltoa5(p->rss, bufr, " mgtpezy")[0] = '\0';
if (p->tty_major == 136)
/* It should be pts/N, not ptsN, but N > 9
diff --git a/procps/pstree.c b/procps/pstree.c
index 45fce3a..2ff5ccb 100644
--- a/procps/pstree.c
+++ b/procps/pstree.c
@@ -34,8 +34,15 @@
struct child;
+#ifdef ENABLE_FEATURE_SHOW_THREADS
+/* For threads, we add {...} around the comm, so we need two extra bytes */
+# define COMM_DISP_LEN (COMM_LEN + 2)
+#else
+# define COMM_DISP_LEN COMM_LEN
+#endif
+
typedef struct proc {
- char comm[COMM_LEN + 1];
+ char comm[COMM_DISP_LEN + 1];
// char flags; - unused, delete?
pid_t pid;
uid_t uid;
@@ -341,8 +348,8 @@ static void dump_by_user(PROC *current, uid_t uid)
#if ENABLE_FEATURE_SHOW_THREADS
static void handle_thread(const char *comm, pid_t pid, pid_t ppid, uid_t uid)
{
- char threadname[COMM_LEN + 2];
- sprintf(threadname, "{%.*s}", COMM_LEN - 2, comm);
+ char threadname[COMM_DISP_LEN + 1];
+ sprintf(threadname, "{%.*s}", (int)sizeof(threadname) - 3, comm);
add_proc(threadname, pid, ppid, uid/*, 1*/);
}
#endif
diff --git a/procps/top.c b/procps/top.c
index 2908bd3..51f1c1a 100644
--- a/procps/top.c
+++ b/procps/top.c
@@ -294,7 +294,7 @@ static void get_jiffy_counts(void)
* they are used to calculate per process CPU% */
prev_jif = cur_jif;
if (read_cpu_jiffy(fp, &cur_jif) < 4)
- bb_error_msg_and_die("can't read /proc/stat");
+ bb_error_msg_and_die("can't read '%s'", "/proc/stat");
#if !ENABLE_FEATURE_TOP_SMP_CPU
fclose(fp);
@@ -677,7 +677,7 @@ static NOINLINE void display_process_list(int lines_rem, int scr_width)
if (s->vsz >= 100000)
sprintf(vsz_str_buf, "%6ldm", s->vsz/1024);
else
- sprintf(vsz_str_buf, "%7ld", s->vsz);
+ sprintf(vsz_str_buf, "%7lu", s->vsz);
/* PID PPID USER STAT VSZ %VSZ [%CPU] COMMAND */
col = snprintf(line_buf, scr_width,
"\n" "%5u%6u %-8.8s %s%s" FMT
@@ -847,8 +847,7 @@ static void display_topmem_header(int scr_width, int *lines_rem_p)
static void ulltoa6_and_space(unsigned long long ul, char buf[6])
{
/* see http://en.wikipedia.org/wiki/Tera */
- smart_ulltoa5(ul, buf, " mgtpezy");
- buf[5] = ' ';
+ smart_ulltoa5(ul, buf, " mgtpezy")[0] = ' ';
}
static NOINLINE void display_topmem_process_list(int lines_rem, int scr_width)
diff --git a/procps/watch.c b/procps/watch.c
index 36af1cc..0397f21 100644
--- a/procps/watch.c
+++ b/procps/watch.c
@@ -69,7 +69,6 @@ int watch_main(int argc UNUSED_PARAM, char **argv)
printf("\033[H""\033[J");
if (!(opt & 0x2)) { // no -t
const unsigned time_len = sizeof("1234-67-90 23:56:89");
- time_t t;
// STDERR_FILENO is procps3 compat:
// "watch ls 2>/dev/null" does not detect tty size
@@ -79,10 +78,13 @@ int watch_main(int argc UNUSED_PARAM, char **argv)
free(header);
header = xasprintf("Every %us: %-*s", period, (int)width, cmd);
}
- time(&t);
- if (time_len < width)
- strftime(header + width - time_len, time_len,
- "%Y-%m-%d %H:%M:%S", localtime(&t));
+ if (time_len < width) {
+ strftime_YYYYMMDDHHMMSS(
+ header + width - time_len,
+ time_len,
+ /*time_t*:*/ NULL
+ );
+ }
// compat: empty line between header and cmd output
printf("%s\n\n", header);
diff --git a/runit/chpst.c b/runit/chpst.c
index ed72c8b..71af29f 100644
--- a/runit/chpst.c
+++ b/runit/chpst.c
@@ -236,7 +236,6 @@ int chpst_main(int argc UNUSED_PARAM, char **argv)
{
struct bb_uidgid_t ugid;
char *set_user = set_user; /* for compiler */
- char *env_user = env_user;
char *env_dir = env_dir;
char *root;
char *nicestr;
@@ -264,7 +263,7 @@ int chpst_main(int argc UNUSED_PARAM, char **argv)
IF_CHPST("/:n:vP012"),
&limita, &limitc, &limitd, &limitf, &limitl,
&limitm, &limito, &limitp, &limitr, &limits, &limitt,
- &set_user, &env_user, &env_dir
+ &set_user, &set_user, &env_dir
IF_CHPST(, &root, &nicestr));
argv += optind;
if (opt & OPT_m) { // -m means -asld
@@ -292,7 +291,7 @@ int chpst_main(int argc UNUSED_PARAM, char **argv)
// envuidgid?
if (ENABLE_ENVUIDGID && applet_name[0] == 'e' && applet_name[3] == 'u') {
- env_user = *argv++;
+ set_user = *argv++;
opt |= OPT_U;
}
diff --git a/runit/runsv.c b/runit/runsv.c
index 3e1a3c8..d941e89 100644
--- a/runit/runsv.c
+++ b/runit/runsv.c
@@ -33,7 +33,6 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//usage:#define runsv_full_usage "\n\n"
//usage: "Start and monitor a service and optionally an appendant log service"
-#include <sys/poll.h>
#include <sys/file.h>
#include "libbb.h"
#include "runit_lib.h"
diff --git a/runit/runsvdir.c b/runit/runsvdir.c
index 32526cf..af7e75b 100644
--- a/runit/runsvdir.c
+++ b/runit/runsvdir.c
@@ -35,7 +35,6 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//usage: "\n -P Put each runsv in a new session"
//usage: "\n -s SCRIPT Run SCRIPT <signo> after signal is processed"
-#include <sys/poll.h>
#include <sys/file.h>
#include "libbb.h"
#include "runit_lib.h"
diff --git a/runit/sv.c b/runit/sv.c
index 5b01c87..825e9d4 100644
--- a/runit/sv.c
+++ b/runit/sv.c
@@ -169,7 +169,6 @@ Exit Codes
//usage: "pause, cont, hup, alarm, interrupt, quit, 1, 2, term, kill: send\n"
//usage: "STOP, CONT, HUP, ALRM, INT, QUIT, USR1, USR2, TERM, KILL signal to service"
-#include <sys/poll.h>
#include <sys/file.h>
#include "libbb.h"
#include "runit_lib.h"
diff --git a/runit/svlogd.c b/runit/svlogd.c
index b7a0a6e..c080b9a 100644
--- a/runit/svlogd.c
+++ b/runit/svlogd.c
@@ -142,7 +142,6 @@ log message, you can use a pattern like this instead
//usage: "\n""+,-PATTERN - (de)select line for logging"
//usage: "\n""E,ePATTERN - (de)select line for stderr"
-#include <sys/poll.h>
#include <sys/file.h>
#include "libbb.h"
#include "runit_lib.h"
@@ -745,11 +744,6 @@ static NOINLINE unsigned logdir_open(struct logdir *ld, const char *fn)
ld->inst = new;
break;
case 's': {
- static const struct suffix_mult km_suffixes[] = {
- { "k", 1024 },
- { "m", 1024*1024 },
- { "", 0 }
- };
ld->sizemax = xatou_sfx(&s[1], km_suffixes);
break;
}
diff --git a/scripts/bloat-o-meter b/scripts/bloat-o-meter
index 6db2a5e..cb861b8 100755
--- a/scripts/bloat-o-meter
+++ b/scripts/bloat-o-meter
@@ -7,11 +7,14 @@
# This software may be used and distributed according to the terms
# of the GNU General Public License, incorporated herein by reference.
-import sys, os#, re
+import sys, os
def usage():
- sys.stderr.write("usage: %s [-t] file1 file2\n" % sys.argv[0])
- sys.exit(-1)
+ sys.stderr.write("usage: %s [-t] file1 file2 [-- <readelf options>]\n"
+ % sys.argv[0])
+ sys.stderr.write("\t-t\tShow time spent on parsing/processing\n")
+ sys.stderr.write("\t--\tPass additional parameters to readelf\n")
+ sys.exit(1)
f1, f2 = (None, None)
flag_timing, dashes = (False, False)
@@ -31,6 +34,8 @@ for f in sys.argv[1:]:
f1 = f
elif f2 is None:
f2 = f
+ else:
+ usage()
if flag_timing:
import time
if f1 is None or f2 is None:
diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
index 1651390..38bae80 100644
--- a/scripts/kconfig/Makefile
+++ b/scripts/kconfig/Makefile
@@ -150,7 +150,7 @@ HOSTCFLAGS_zconf.tab.o := -I$(src)
HOSTLOADLIBES_qconf = $(KC_QT_LIBS) -ldl
HOSTCXXFLAGS_qconf.o = $(KC_QT_CFLAGS) -D LKC_DIRECT_LINK
-HOSTLOADLIBES_gconf = `pkg-config --libs gtk+-2.0 gmodule-2.0 libglade-2.0`
+HOSTLOADLIBES_gconf = `pkg-config --libs gtk+-2.0 gmodule-2.0 libglade-2.0` -ldl
HOSTCFLAGS_gconf.o = `pkg-config --cflags gtk+-2.0 gmodule-2.0 libglade-2.0` \
-D LKC_DIRECT_LINK
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
index fe6d2db..d21d06e 100644
--- a/scripts/kconfig/confdata.c
+++ b/scripts/kconfig/confdata.c
@@ -474,7 +474,11 @@ int conf_write(const char *name)
fprintf(out_h, "#define CONFIG_%s 1\n", sym->name);
/* bbox */
fprintf(out_h, "#define ENABLE_%s 1\n", sym->name);
- fprintf(out_h, "#define IF_%s(...) __VA_ARGS__\n", sym->name);
+ fprintf(out_h, "#ifdef MAKE_SUID\n");
+ fprintf(out_h, "# define IF_%s(...) __VA_ARGS__ \"CONFIG_%s\"\n", sym->name, sym->name);
+ fprintf(out_h, "#else\n");
+ fprintf(out_h, "# define IF_%s(...) __VA_ARGS__\n", sym->name);
+ fprintf(out_h, "#endif\n");
fprintf(out_h, "#define IF_NOT_%s(...)\n", sym->name);
}
break;
@@ -506,7 +510,11 @@ int conf_write(const char *name)
fputs("\"\n", out_h);
/* bbox */
fprintf(out_h, "#define ENABLE_%s 1\n", sym->name);
- fprintf(out_h, "#define IF_%s(...) __VA_ARGS__\n", sym->name);
+ fprintf(out_h, "#ifdef MAKE_SUID\n");
+ fprintf(out_h, "# define IF_%s(...) __VA_ARGS__ \"CONFIG_%s\"\n", sym->name, sym->name);
+ fprintf(out_h, "#else\n");
+ fprintf(out_h, "# define IF_%s(...) __VA_ARGS__\n", sym->name);
+ fprintf(out_h, "#endif\n");
fprintf(out_h, "#define IF_NOT_%s(...)\n", sym->name);
}
break;
@@ -518,7 +526,11 @@ int conf_write(const char *name)
fprintf(out_h, "#define CONFIG_%s 0x%s\n", sym->name, str);
/* bbox */
fprintf(out_h, "#define ENABLE_%s 1\n", sym->name);
- fprintf(out_h, "#define IF_%s(...) __VA_ARGS__\n", sym->name);
+ fprintf(out_h, "#ifdef MAKE_SUID\n");
+ fprintf(out_h, "# define IF_%s(...) __VA_ARGS__ \"CONFIG_%s\"\n", sym->name, sym->name);
+ fprintf(out_h, "#else\n");
+ fprintf(out_h, "# define IF_%s(...) __VA_ARGS__\n", sym->name);
+ fprintf(out_h, "#endif\n");
fprintf(out_h, "#define IF_NOT_%s(...)\n", sym->name);
}
break;
@@ -532,7 +544,11 @@ int conf_write(const char *name)
fprintf(out_h, "#define CONFIG_%s %s\n", sym->name, str);
/* bbox */
fprintf(out_h, "#define ENABLE_%s 1\n", sym->name);
- fprintf(out_h, "#define IF_%s(...) __VA_ARGS__\n", sym->name);
+ fprintf(out_h, "#ifdef MAKE_SUID\n");
+ fprintf(out_h, "# define IF_%s(...) __VA_ARGS__ \"CONFIG_%s\"\n", sym->name, sym->name);
+ fprintf(out_h, "#else\n");
+ fprintf(out_h, "# define IF_%s(...) __VA_ARGS__\n", sym->name);
+ fprintf(out_h, "#endif\n");
fprintf(out_h, "#define IF_NOT_%s(...)\n", sym->name);
}
break;
diff --git a/scripts/mkconfigs b/scripts/mkconfigs
index db94fcc..6a26fe1 100755
--- a/scripts/mkconfigs
+++ b/scripts/mkconfigs
@@ -65,11 +65,11 @@ static const char bbconfig_config_bz2[] ALIGN1 = {"
grep -e '^# CONFIG_' -e '^CONFIG_' "$config" \
| bzip2 -1 | dd bs=2 skip=1 2>/dev/null \
-| od -v -t x1 \
+| od -v -b \
| sed -e 's/^[^ ]*//' \
-e 's/ //g' \
-e '/^$/d' \
- -e 's/\(..\)/0x\1,/g'
+ -e 's/\(...\)/0\1,/g'
echo "};"
echo "#endif"
diff --git a/scripts/randomtest b/scripts/randomtest
index a102593..d2b26bc 100755
--- a/scripts/randomtest
+++ b/scripts/randomtest
@@ -65,6 +65,7 @@ if test x"$LIBC" = x"uclibc"; then
| grep -v CONFIG_BUILD_LIBBUSYBOX \
| grep -v CONFIG_PIE \
\
+ | grep -v CONFIG_FEATURE_TOUCH_NODEREF \
| grep -v CONFIG_FEATURE_2_4_MODULES \
>.config.new
mv .config.new .config
@@ -72,6 +73,7 @@ if test x"$LIBC" = x"uclibc"; then
echo '# CONFIG_BUILD_LIBBUSYBOX is not set' >>.config
echo '# CONFIG_PIE is not set' >>.config
echo '# CONFIG_FEATURE_2_4_MODULES is not set' >>.config
+ echo '# CONFIG_FEATURE_TOUCH_NODEREF is not set' >>.config
fi
# If STATIC, remove some things.
diff --git a/scripts/trylink b/scripts/trylink
index a8b0b2e..e471699 100755
--- a/scripts/trylink
+++ b/scripts/trylink
@@ -117,7 +117,7 @@ LDLIBS=`echo "$LDLIBS" | xargs -n1 | sort | uniq | xargs`
# First link with all libs. If it fails, bail out
echo "Trying libraries: $LDLIBS"
# "lib1 lib2 lib3" -> "-llib1 -llib2 -llib3"
-l_list=`echo "$LDLIBS" | sed -e 's/ / -l/g' -e 's/^/-l/' -e 's/^-l$//'`
+l_list=`echo " $LDLIBS " | sed -e 's: \([^- ][^ ]*\): -l\1:g'`
test "x$l_list" != "x" && l_list="$START_GROUP $l_list $END_GROUP"
try $CC $CFLAGS $LDFLAGS \
-o $EXE \
@@ -141,7 +141,7 @@ while test "$LDLIBS"; do
for one in $LDLIBS; do
without_one=`echo " $LDLIBS " | sed "s/ $one / /g" | xargs`
# "lib1 lib2 lib3" -> "-llib1 -llib2 -llib3"
- l_list=`echo "$without_one" | sed -e 's/ / -l/g' -e 's/^/-l/' -e 's/^-l$//'`
+ l_list=`echo " $without_one " | sed -e 's: \([^- ][^ ]*\): -l\1:g'`
test x"$l_list" != x"" && l_list="$START_GROUP $l_list $END_GROUP"
$debug && echo "Trying -l options: '$l_list'"
try $CC $CFLAGS $LDFLAGS \
@@ -172,7 +172,7 @@ done
# Make the binary with final, minimal list of libs
echo "Final link with: ${LDLIBS:-<none>}"
-l_list=`echo "$LDLIBS" | sed -e 's/ / -l/g' -e 's/^/-l/' -e 's/^-l$//'`
+l_list=`echo " $LDLIBS " | sed -e 's: \([^- ][^ ]*\): -l\1:g'`
test "x$l_list" != "x" && l_list="$START_GROUP $l_list $END_GROUP"
# --verbose gives us gobs of info to stdout (e.g. linker script used)
if ! test -f busybox_ldscript; then
diff --git a/shell/ash.c b/shell/ash.c
index e731345..f3feffe 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -385,6 +385,9 @@ static void trace_vprintf(const char *fmt, va_list va);
/* ============ Utility functions */
#define xbarrier() do { __asm__ __volatile__ ("": : :"memory"); } while (0)
+#define is_name(c) ((c) == '_' || isalpha((unsigned char)(c)))
+#define is_in_name(c) ((c) == '_' || isalnum((unsigned char)(c)))
+
static int isdigit_str9(const char *str)
{
int maxlen = 9 + 1; /* max 9 digits: 999999999 */
@@ -2008,27 +2011,6 @@ getoptsreset(const char *value)
}
#endif
-/* math.h has these, otherwise define our private copies */
-#if !ENABLE_SH_MATH_SUPPORT
-#define is_name(c) ((c) == '_' || isalpha((unsigned char)(c)))
-#define is_in_name(c) ((c) == '_' || isalnum((unsigned char)(c)))
-/*
- * Return the pointer to the first char which is not part of a legal variable name
- * (a letter or underscore followed by letters, underscores, and digits).
- */
-static const char*
-endofname(const char *name)
-{
- if (!is_name(*name))
- return name;
- while (*++name) {
- if (!is_in_name(*name))
- break;
- }
- return name;
-}
-#endif
-
/*
* Compares two strings up to the first = or '\0'. The first
* string must be terminated by '='; the second may be terminated by
@@ -2304,7 +2286,7 @@ unsetvar(const char *s)
free(vp);
INT_ON;
} else {
- setvar(s, 0, 0);
+ setvar2(s, 0);
vp->flags &= ~VEXPORT;
}
ok:
@@ -6357,7 +6339,7 @@ subevalvar(char *p, char *varname, int strloc, int subtype,
switch (subtype) {
case VSASSIGN:
- setvar(varname, startp, 0);
+ setvar2(varname, startp);
amount = startp - expdest;
STADJUST(amount, expdest);
return startp;
@@ -8572,7 +8554,7 @@ evalfor(union node *n, int flags)
loopnest++;
flags &= EV_TESTED;
for (sp = arglist.list; sp; sp = sp->next) {
- setvar(n->nfor.var, sp->text, 0);
+ setvar2(n->nfor.var, sp->text);
evaltree(n->nfor.body, flags);
if (evalskip) {
if (evalskip == SKIPCONT && --skipcount <= 0) {
@@ -9051,6 +9033,9 @@ static int getoptscmd(int, char **) FAST_FUNC;
#if !ENABLE_FEATURE_SH_EXTRA_QUIET
static int helpcmd(int, char **) FAST_FUNC;
#endif
+#if MAX_HISTORY
+static int historycmd(int, char **) FAST_FUNC;
+#endif
#if ENABLE_SH_MATH_SUPPORT
static int letcmd(int, char **) FAST_FUNC;
#endif
@@ -9124,6 +9109,9 @@ static const struct builtincmd builtintab[] = {
#if !ENABLE_FEATURE_SH_EXTRA_QUIET
{ BUILTIN_NOSPEC "help" , helpcmd },
#endif
+#if MAX_HISTORY
+ { BUILTIN_NOSPEC "history" , historycmd },
+#endif
#if JOBS
{ BUILTIN_REGULAR "jobs" , jobscmd },
{ BUILTIN_REGULAR "kill" , killcmd },
@@ -9463,7 +9451,7 @@ evalcommand(union node *cmd, int flags)
* '_' in 'vi' command mode during line editing...
* However I implemented that within libedit itself.
*/
- setvar("_", lastarg, 0);
+ setvar2("_", lastarg);
}
popstackmark(&smark);
}
@@ -9669,7 +9657,12 @@ preadfd(void)
* _during_ shell execution, not only if it was set when
* shell was started. Therefore, re-check LANG every time:
*/
- reinit_unicode(lookupvar("LANG"));
+ {
+ const char *s = lookupvar("LC_ALL");
+ if (!s) s = lookupvar("LC_CTYPE");
+ if (!s) s = lookupvar("LANG");
+ reinit_unicode(s);
+ }
nr = read_line_input(line_input_state, cmdedit_prompt, buf, IBUFSIZ, timeout);
if (nr == 0) {
/* Ctrl+C pressed */
@@ -12276,8 +12269,10 @@ dotcmd(int argc, char **argv)
/* "false; . empty_file; echo $?" should print 0, not 1: */
exitstatus = 0;
+ /* This aborts if file isn't found, which is POSIXly correct.
+ * bash returns exitcode 1 instead.
+ */
fullname = find_dot_file(argv[1]);
-
argv += 2;
argc -= 2;
if (argc) { /* argc > 0, argv[0] != NULL */
@@ -12287,6 +12282,9 @@ dotcmd(int argc, char **argv)
shellparam.p = argv;
};
+ /* This aborts if file can't be opened, which is POSIXly correct.
+ * bash returns exitcode 1 instead.
+ */
setinputfile(fullname, INPUT_PUSH_FILE);
commandname = fullname;
cmdloop(0);
@@ -12633,6 +12631,15 @@ helpcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
}
#endif /* FEATURE_SH_EXTRA_QUIET */
+#if MAX_HISTORY
+static int FAST_FUNC
+historycmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
+{
+ show_history(line_input_state);
+ return EXIT_SUCCESS;
+}
+#endif
+
/*
* The export and readonly commands.
*/
@@ -13004,8 +13011,11 @@ init(void)
}
}
- setvar("PPID", utoa(getppid()), 0);
-
+ setvar2("PPID", utoa(getppid()));
+#if ENABLE_ASH_BASH_COMPAT
+ p = lookupvar("SHLVL");
+ setvar2("SHLVL", utoa(p ? atoi(p) + 1 : 1));
+#endif
p = lookupvar("PWD");
if (p) {
if (*p != '/' || stat(p, &st1) || stat(".", &st2)
@@ -13209,27 +13219,21 @@ int ash_main(int argc UNUSED_PARAM, char **argv)
setstackmark(&smark);
procargs(argv);
-#if ENABLE_FEATURE_EDITING_SAVEHISTORY
- if (iflag) {
- const char *hp = lookupvar("HISTFILE");
- if (!hp) {
- hp = lookupvar("HOME");
- if (hp) {
- char *defhp = concat_path_file(hp, ".ash_history");
- setvar("HISTFILE", defhp, 0);
- free(defhp);
- }
- }
- }
-#endif
if (argv[0] && argv[0][0] == '-')
isloginsh = 1;
if (isloginsh) {
+ const char *hp;
+
state = 1;
read_profile("/etc/profile");
state1:
state = 2;
- read_profile(".profile");
+ hp = lookupvar("HOME");
+ if (hp) {
+ hp = concat_path_file(hp, ".profile");
+ read_profile(hp);
+ free((char*)hp);
+ }
}
state2:
state = 3;
@@ -13261,6 +13265,15 @@ int ash_main(int argc UNUSED_PARAM, char **argv)
#if MAX_HISTORY > 0 && ENABLE_FEATURE_EDITING_SAVEHISTORY
if (iflag) {
const char *hp = lookupvar("HISTFILE");
+ if (!hp) {
+ hp = lookupvar("HOME");
+ if (hp) {
+ hp = concat_path_file(hp, ".ash_history");
+ setvar2("HISTFILE", hp);
+ free((char*)hp);
+ hp = lookupvar("HISTFILE");
+ }
+ }
if (hp)
line_input_state->hist_file = hp;
# if ENABLE_FEATURE_SH_HISTFILESIZE
diff --git a/shell/hush.c b/shell/hush.c
index 2f1d51a..8a4215d 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -850,6 +850,9 @@ static int builtin_jobs(char **argv) FAST_FUNC;
#if ENABLE_HUSH_HELP
static int builtin_help(char **argv) FAST_FUNC;
#endif
+#if MAX_HISTORY && ENABLE_FEATURE_EDITING
+static int builtin_history(char **argv) FAST_FUNC;
+#endif
#if ENABLE_HUSH_LOCAL
static int builtin_local(char **argv) FAST_FUNC;
#endif
@@ -919,6 +922,9 @@ static const struct built_in_command bltins1[] = {
#if ENABLE_HUSH_HELP
BLTIN("help" , builtin_help , NULL),
#endif
+#if MAX_HISTORY && ENABLE_FEATURE_EDITING
+ BLTIN("history" , builtin_history , "Show command history"),
+#endif
#if ENABLE_HUSH_JOB
BLTIN("jobs" , builtin_jobs , "List jobs"),
#endif
@@ -1304,7 +1310,7 @@ static void restore_G_args(save_arg_t *sv, char **argv)
* backgrounds (i.e. stops) or kills all members of currently running
* pipe.
*
- * Wait builtin in interruptible by signals for which user trap is set
+ * Wait builtin is interruptible by signals for which user trap is set
* or by SIGINT in interactive shell.
*
* Trap handlers will execute even within trap handlers. (right?)
@@ -1383,7 +1389,7 @@ static void restore_G_args(save_arg_t *sv, char **argv)
* are set to '' (ignore) are NOT reset to defaults. We do the same.
*
* Problem: the above approach makes it unwieldy to catch signals while
- * we are in read builtin, of while we read commands from stdin:
+ * we are in read builtin, or while we read commands from stdin:
* masked signals are not visible!
*
* New implementation
@@ -1392,7 +1398,7 @@ static void restore_G_args(save_arg_t *sv, char **argv)
* for them - a bit like emulating kernel pending signal mask in userspace.
* We are interested in: signals which need to have special handling
* as described above, and all signals which have traps set.
- * Signals are rocorded in pending_set.
+ * Signals are recorded in pending_set.
* After each pipe execution, we extract any pending signals
* and act on them.
*
@@ -2038,7 +2044,10 @@ static void get_user_input(struct in_str *i)
* _during_ shell execution, not only if it was set when
* shell was started. Therefore, re-check LANG every time:
*/
- reinit_unicode(get_local_var_value("LANG"));
+ const char *s = get_local_var_value("LC_ALL");
+ if (!s) s = get_local_var_value("LC_CTYPE");
+ if (!s) s = get_local_var_value("LANG");
+ reinit_unicode(s);
G.flag_SIGINT = 0;
/* buglet: SIGINT will not make new prompt to appear _at once_,
@@ -7354,7 +7363,7 @@ static int run_list(struct pipe *pi)
* and we should not execute CMD */
debug_printf_exec("skipped cmd because of || or &&\n");
last_followup = pi->followup;
- continue;
+ goto dont_check_jobs_but_continue;
}
}
last_followup = pi->followup;
@@ -7493,8 +7502,10 @@ static int run_list(struct pipe *pi)
G.flag_break_continue = 0;
/* else: e.g. "continue 2" should *break* once, *then* continue */
} /* else: "while... do... { we are here (innermost list is not a loop!) };...done" */
- if (G.depth_break_continue != 0 || fbc == BC_BREAK)
- goto check_jobs_and_break;
+ if (G.depth_break_continue != 0 || fbc == BC_BREAK) {
+ checkjobs(NULL);
+ break;
+ }
/* "continue": simulate end of loop */
rword = RES_DONE;
continue;
@@ -7502,7 +7513,6 @@ static int run_list(struct pipe *pi)
#endif
#if ENABLE_HUSH_FUNCTIONS
if (G.flag_return_in_progress == 1) {
- /* same as "goto check_jobs_and_break" */
checkjobs(NULL);
break;
}
@@ -7544,6 +7554,9 @@ static int run_list(struct pipe *pi)
if (rword == RES_IF || rword == RES_ELIF)
cond_code = rcode;
#endif
+ check_jobs_and_continue:
+ checkjobs(NULL);
+ dont_check_jobs_but_continue: ;
#if ENABLE_HUSH_LOOPS
/* Beware of "while false; true; do ..."! */
if (pi->next
@@ -7555,22 +7568,17 @@ static int run_list(struct pipe *pi)
/* "while false; do...done" - exitcode 0 */
G.last_exitcode = rcode = EXIT_SUCCESS;
debug_printf_exec(": while expr is false: breaking (exitcode:EXIT_SUCCESS)\n");
- goto check_jobs_and_break;
+ break;
}
}
if (rword == RES_UNTIL) {
if (!rcode) {
debug_printf_exec(": until expr is true: breaking\n");
- check_jobs_and_break:
- checkjobs(NULL);
break;
}
}
}
#endif
-
- check_jobs_and_continue:
- checkjobs(NULL);
} /* for (pi) */
#if ENABLE_HUSH_JOB
@@ -8628,6 +8636,14 @@ static int FAST_FUNC builtin_help(char **argv UNUSED_PARAM)
}
#endif
+#if MAX_HISTORY && ENABLE_FEATURE_EDITING
+static int FAST_FUNC builtin_history(char **argv UNUSED_PARAM)
+{
+ show_history(G.line_input_state);
+ return EXIT_SUCCESS;
+}
+#endif
+
#if ENABLE_HUSH_JOB
static int FAST_FUNC builtin_jobs(char **argv UNUSED_PARAM)
{
@@ -8880,6 +8896,9 @@ static int FAST_FUNC builtin_source(char **argv)
free(arg_path);
if (!input) {
/* bb_perror_msg("%s", *argv); - done by fopen_or_warn */
+ /* POSIX: non-interactive shell should abort here,
+ * not merely fail. So far no one complained :)
+ */
return EXIT_FAILURE;
}
close_on_exec_on(fileno(input));
@@ -8889,12 +8908,14 @@ static int FAST_FUNC builtin_source(char **argv)
/* "we are inside sourced file, ok to use return" */
G.flag_return_in_progress = -1;
#endif
- save_and_replace_G_args(&sv, argv);
+ if (argv[1])
+ save_and_replace_G_args(&sv, argv);
parse_and_run_file(input);
fclose(input);
- restore_G_args(&sv, argv);
+ if (argv[1])
+ restore_G_args(&sv, argv);
#if ENABLE_HUSH_FUNCTIONS
G.flag_return_in_progress = sv_flg;
#endif
diff --git a/shell/hush_test/hush-misc/source2.right b/shell/hush_test/hush-misc/source2.right
new file mode 100644
index 0000000..0587bad
--- a/dev/null
+++ b/shell/hush_test/hush-misc/source2.right
@@ -0,0 +1,4 @@
+0:arg0 1:arg1 2:arg2
+Ok1:0
+0:arg0 1:q 2:w
+Ok2:0
diff --git a/shell/hush_test/hush-misc/source2.tests b/shell/hush_test/hush-misc/source2.tests
new file mode 100755
index 0000000..40b6b83
--- a/dev/null
+++ b/shell/hush_test/hush-misc/source2.tests
@@ -0,0 +1,8 @@
+echo 'echo "0:$0 1:$1 2:$2"' >sourced1
+set -- 1 2 3
+"$THIS_SH" -c '. ./sourced1' arg0 arg1 arg2
+echo Ok1:$?
+"$THIS_SH" -c '. ./sourced1 q w e' arg0 arg1 arg2
+echo Ok2:$?
+
+rm sourced1
diff --git a/shell/hush_test/hush-misc/while4.right b/shell/hush_test/hush-misc/while4.right
new file mode 100644
index 0000000..7b24a35
--- a/dev/null
+++ b/shell/hush_test/hush-misc/while4.right
@@ -0,0 +1 @@
+Ok:0
diff --git a/shell/hush_test/hush-misc/while4.tests b/shell/hush_test/hush-misc/while4.tests
new file mode 100755
index 0000000..ba80e60
--- a/dev/null
+++ b/shell/hush_test/hush-misc/while4.tests
@@ -0,0 +1,6 @@
+false
+while false && echo Not reached; do
+ echo BUG
+ break
+done
+echo Ok:$?
diff --git a/shell/math.c b/shell/math.c
index 15c0039..3da1511 100644
--- a/shell/math.c
+++ b/shell/math.c
@@ -494,18 +494,6 @@ static const char op_tokens[] ALIGN1 = {
};
#define ptr_to_rparen (&op_tokens[sizeof(op_tokens)-7])
-const char* FAST_FUNC
-endofname(const char *name)
-{
- if (!is_name(*name))
- return name;
- while (*++name) {
- if (!is_in_name(*name))
- break;
- }
- return name;
-}
-
static arith_t FAST_FUNC
evaluate_string(arith_state_t *math_state, const char *expr)
{
diff --git a/shell/math.h b/shell/math.h
index 2d305eb..864bee6 100644
--- a/shell/math.h
+++ b/shell/math.h
@@ -73,11 +73,6 @@ typedef long arith_t;
#define strto_arith_t strtoul
#endif
-/* ash's and hush's endofname is the same, so... */
-# define is_name(c) ((c) == '_' || isalpha((unsigned char)(c)))
-# define is_in_name(c) ((c) == '_' || isalnum((unsigned char)(c)))
-const char* FAST_FUNC endofname(const char *name);
-
typedef const char* FAST_FUNC (*arith_var_lookup_t)(const char *name);
typedef void FAST_FUNC (*arith_var_set_t)(const char *name, const char *val);
//typedef const char* FAST_FUNC (*arith_var_endofname_t)(const char *name);
diff --git a/shell/shell_common.c b/shell/shell_common.c
index 0051f21..5729715 100644
--- a/shell/shell_common.c
+++ b/shell/shell_common.c
@@ -37,7 +37,7 @@ int FAST_FUNC is_well_formed_var_name(const char *s, char terminator)
/* read builtin */
-/* Needs to be interruptible: shell mush handle traps and shell-special signals
+/* Needs to be interruptible: shell must handle traps and shell-special signals
* while inside read. To implement this, be sure to not loop on EINTR
* and return errno == EINTR reliably.
*/
diff --git a/sysklogd/logread.c b/sysklogd/logread.c
index 9939569..bea73d9 100644
--- a/sysklogd/logread.c
+++ b/sysklogd/logread.c
@@ -49,13 +49,18 @@ struct globals {
memcpy(SMrup, init_sem, sizeof(init_sem)); \
} while (0)
+#if 0
static void error_exit(const char *str) NORETURN;
static void error_exit(const char *str)
{
- //release all acquired resources
+ /* Release all acquired resources */
shmdt(shbuf);
bb_perror_msg_and_die(str);
}
+#else
+/* On Linux, shmdt is not mandatory on exit */
+# define error_exit(str) bb_perror_msg_and_die(str)
+#endif
/*
* sem_up - up()'s a semaphore.
@@ -66,11 +71,10 @@ static void sem_up(int semid)
error_exit("semop[SMrup]");
}
-static void interrupted(int sig UNUSED_PARAM)
+static void interrupted(int sig)
{
- signal(SIGINT, SIG_IGN);
- shmdt(shbuf);
- exit(EXIT_SUCCESS);
+ /* shmdt(shbuf); - on Linux, shmdt is not mandatory on exit */
+ kill_myself_with_sig(sig);
}
int logread_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
@@ -85,18 +89,18 @@ int logread_main(int argc UNUSED_PARAM, char **argv)
log_shmid = shmget(KEY_ID, 0, 0);
if (log_shmid == -1)
- bb_perror_msg_and_die("can't find syslogd buffer");
+ bb_perror_msg_and_die("can't %s syslogd buffer", "find");
/* Attach shared memory to our char* */
shbuf = shmat(log_shmid, NULL, SHM_RDONLY);
if (shbuf == NULL)
- bb_perror_msg_and_die("can't access syslogd buffer");
+ bb_perror_msg_and_die("can't %s syslogd buffer", "access");
log_semid = semget(KEY_ID, 0, 0);
if (log_semid == -1)
error_exit("can't get access to semaphores for syslogd buffer");
- signal(SIGINT, interrupted);
+ bb_signals(BB_FATAL_SIGS, interrupted);
/* Suppose atomic memory read */
/* Max possible value for tail is shbuf->size - 1 */
@@ -122,7 +126,7 @@ int logread_main(int argc UNUSED_PARAM, char **argv)
shbuf_data = shbuf->data; /* pointer! */
if (DEBUG)
- printf("cur:%d tail:%i size:%i\n",
+ printf("cur:%u tail:%u size:%u\n",
cur, shbuf_tail, shbuf_size);
if (!follow) {
@@ -183,9 +187,10 @@ int logread_main(int argc UNUSED_PARAM, char **argv)
}
free(copy);
#endif
+ fflush_all();
} while (follow);
- shmdt(shbuf);
+ /* shmdt(shbuf); - on Linux, shmdt is not mandatory on exit */
fflush_stdout_and_exit(EXIT_SUCCESS);
}
diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c
index 3fe3f53..a6a4ff2 100644
--- a/sysklogd/syslogd.c
+++ b/sysklogd/syslogd.c
@@ -29,7 +29,7 @@
//usage: "\n -b N N rotated logs to keep (default:1, max=99, 0=purge)"
//usage: )
//usage: IF_FEATURE_REMOTE_LOG(
-//usage: "\n -R HOST[:PORT] Log to IP or hostname on PORT (default PORT=514/UDP)"
+//usage: "\n -R HOST[:PORT] Log to HOST:PORT (default PORT:514)"
//usage: "\n -L Log locally and via network (default is network only if -R)"
//usage: )
//usage: IF_FEATURE_SYSLOGD_DUP(
@@ -58,6 +58,9 @@
#define SYSLOG_NAMES_CONST
#include <syslog.h>
*/
+#ifndef _PATH_LOG
+#define _PATH_LOG "/dev/log"
+#endif
#include <sys/un.h>
#include <sys/uio.h>
@@ -824,8 +827,8 @@ static NOINLINE int create_socket(void)
/* Unlink old /dev/log or object it points to. */
/* (if it exists, bind will fail) */
- strcpy(sunx.sun_path, "/dev/log");
- dev_log_name = xmalloc_follow_symlinks("/dev/log");
+ strcpy(sunx.sun_path, _PATH_LOG);
+ dev_log_name = xmalloc_follow_symlinks(_PATH_LOG);
if (dev_log_name) {
safe_strncpy(sunx.sun_path, dev_log_name, sizeof(sunx.sun_path));
free(dev_log_name);
@@ -834,7 +837,7 @@ static NOINLINE int create_socket(void)
sock_fd = xsocket(AF_UNIX, SOCK_DGRAM, 0);
xbind(sock_fd, (struct sockaddr *) &sunx, sizeof(sunx));
- chmod("/dev/log", 0666);
+ chmod(_PATH_LOG, 0666);
return sock_fd;
}
@@ -905,7 +908,7 @@ static void do_syslogd(void)
sz = read(sock_fd, recvbuf, MAX_READ - 1);
if (sz < 0) {
if (!bb_got_signal)
- bb_perror_msg("read from /dev/log");
+ bb_perror_msg("read from %s", _PATH_LOG);
break;
}
diff --git a/testsuite/awk.tests b/testsuite/awk.tests
index f9c3b6b..132afc6 100755
--- a/testsuite/awk.tests
+++ b/testsuite/awk.tests
@@ -24,10 +24,57 @@ testing "awk if operator < " "awk 'BEGIN{if(2 < 13) print \"foo\"}'" "foo\n" "
testing "awk if string == " "awk 'BEGIN{if(\"a\"==\"ab\") print \"bar\"}'" "" "" ""
# 4294967295 = 0xffffffff
-testing "awk bitwise op" "awk '{ print or(4294967295,1) }'" "4.29497e+09\n" "" "\n"
+testing "awk bitwise op" "awk '{ print or(4294967295,1) }'" "4294967295\n" "" "\n"
+
+# we were testing for a non-empty body when deciding if a function was
+# defined or not. The testcase below caused:
+# awk: cmd. line:8: Call to undefined function
+prg='
+function empty_fun(count) {
+ # empty
+}
+END {
+ i=1
+ print "L" i "\n"
+ empty_fun(i + i + ++i)
+ print "L" i "\n"
+}'
+testing "awk handles empty function f(arg){}" \
+ "awk '$prg'" \
+ "L1\n\nL2\n\n" \
+ "" ""
+
+prg='
+function outer_fun() {
+ return 1
+}
+END {
+ i=1
+ print "L" i "\n"
+ i += outer_fun()
+ print "L" i "\n"
+}'
+testing "awk properly handles function from other scope" \
+ "awk '$prg'" \
+ "L1\n\nL2\n\n" \
+ "" ""
+
+prg='
+END {
+ i=1
+ print "L" i "\n"
+ i + trigger_error_fun()
+ print "L" i "\n"
+}'
+testing "awk properly handles undefined function" \
+ "awk '$prg' 2>&1" \
+ "L1\n\nawk: cmd. line:5: Call to undefined function\n" \
+ "" ""
+
+
optional DESKTOP
-testing "awk hex const 1" "awk '{ print or(0xffffffff,1) }'" "4.29497e+09\n" "" "\n"
-testing "awk hex const 2" "awk '{ print or(0x80000000,1) }'" "2.14748e+09\n" "" "\n"
+testing "awk hex const 1" "awk '{ print or(0xffffffff,1) }'" "4294967295\n" "" "\n"
+testing "awk hex const 2" "awk '{ print or(0x80000000,1) }'" "2147483649\n" "" "\n"
testing "awk oct const" "awk '{ print or(01234,1) }'" "669\n" "" "\n"
SKIP=
@@ -222,6 +269,32 @@ testing "awk FS assignment" "awk '{FS=\":\"; print \$1}'" \
"" \
"a:b c:d\ne:f g:h"
+optional FEATURE_AWK_LIBM
+testing "awk large integer" \
+ "awk 'BEGIN{n=(2^31)-1; print n, int(n), n%1, ++n, int(n), n%1}'" \
+ "2147483647 2147483647 0 2147483648 2147483648 0\n" \
+ "" ""
+SKIP=
+
+testing "awk length(array)" \
+ "awk 'BEGIN{ A[1]=2; A[\"qwe\"]=\"asd\"; print length(A)}'" \
+ "2\n" \
+ "" ""
+
+testing "awk -f and ARGC" \
+ "awk -f - input" \
+ "re\n2\n" \
+ "do re mi\n" \
+ '{print $2; print ARGC;}' \
+
+optional FEATURE_AWK_GNU_EXTENSIONS
+testing "awk -e and ARGC" \
+ "awk -e '{print \$2; print ARGC;}' input" \
+ "re\n2\n" \
+ "do re mi\n" \
+ ""
+SKIP=
+
# testing "description" "command" "result" "infile" "stdin"
exit $FAILCOUNT
diff --git a/testsuite/date/date-works b/testsuite/date/date-works
index 901c485..35c2468 100644
--- a/testsuite/date/date-works
+++ b/testsuite/date/date-works
@@ -31,9 +31,11 @@ dt=`busybox date -d '1999-1-2 3:4:5'`
dt=`echo "$dt" | cut -b1-19`
test x"$dt" = x"Sat Jan 2 03:04:05"
-dt=`busybox date -d 01231133`
-dt=`echo "$dt" | cut -b5-19`
-test x"$dt" = x"Jan 23 11:33:00"
+# date (GNU coreutils) 8.17 doesn't accept 01231133 either:
+# date: invalid date '01231133'
+#dt=`busybox date -d 01231133`
+#dt=`echo "$dt" | cut -b5-19`
+#test x"$dt" = x"Jan 23 11:33:00"
dt=`busybox date -d 200001231133`
dt=`echo "$dt" | cut -b1-19`
diff --git a/testsuite/date/date-works-1 b/testsuite/date/date-works-1
index 12018fe..6b2421e 100644
--- a/testsuite/date/date-works-1
+++ b/testsuite/date/date-works-1
@@ -41,9 +41,9 @@ test x"$hdt" = x"$dt"
# Avoiding using week day in this evaluation, as it's mostly different every year
# date (GNU coreutils) 6.10 reports:
# date: invalid date '01231133'
-dt=`busybox date -d 01231133 +%c`
-dt=`echo "$dt" | cut -b5-19`
-test x"$dt" = x"Jan 23 11:33:00"
+#dt=`busybox date -d 01231133 +%c`
+#dt=`echo "$dt" | cut -b5-19`
+#test x"$dt" = x"Jan 23 11:33:00"
# date (GNU coreutils) 6.10 reports:
# date: invalid date '012311332000'
diff --git a/testsuite/du/du-k-works b/testsuite/du/du-k-works
index 36dcaa8..213e9ba 100644
--- a/testsuite/du/du-k-works
+++ b/testsuite/du/du-k-works
@@ -2,6 +2,12 @@ mkdir du.testdir
cd du.testdir
dd if=/dev/zero of=file1 bs=1k count=64 2>/dev/null
dd if=/dev/zero of=file2 bs=1k count=16 2>/dev/null
+# ext4 on images <512M gives 81kb
+# ext3 on images <512M gives 83kb
+# a bsd system reportedly gives 82kb
test x"`busybox du -k .`" = x"80 ." \
+ -o x"`busybox du -k .`" = x"81 ." \
+ -o x"`busybox du -k .`" = x"82 ." \
+ -o x"`busybox du -k .`" = x"83 ." \
-o x"`busybox du -k .`" = x"84 ." \
-o x"`busybox du -k .`" = x"88 ."
diff --git a/testsuite/du/du-l-works b/testsuite/du/du-l-works
index 426ee89..af87345 100644
--- a/testsuite/du/du-l-works
+++ b/testsuite/du/du-l-works
@@ -6,6 +6,7 @@ dd if=/dev/zero of=file1 bs=1k count=64 2>/dev/null
ln file1 file1.1
dd if=/dev/zero of=file2 bs=1k count=16 2>/dev/null
test x"`busybox du -l .`" = x"144 ." \
+ -o x"`busybox du -l .`" = x"146 ." \
-o x"`busybox du -l .`" = x"148 ." \
-o x"`busybox du -l .`" = x"152 ." \
-o x"`busybox du -l .`" = x"156 ."
diff --git a/testsuite/grep.tests b/testsuite/grep.tests
index 4781f22..412efff 100755
--- a/testsuite/grep.tests
+++ b/testsuite/grep.tests
@@ -82,6 +82,20 @@ testing "grep -F handles -i" "grep -F -i foo input ; echo \$?" \
testing "grep can read regexps from stdin" "grep -f - input ; echo \$?" \
"two\nthree\n0\n" "tw\ntwo\nthree\n" "tw.\nthr\n"
+# -x (whole line match)
+testing "grep -x (full match)" "grep -x foo input ; echo \$?" \
+ "foo\n0\n" "foo\n" ""
+testing "grep -x (partial match 1)" "grep -x foo input ; echo \$?" \
+ "1\n" "foo bar\n" ""
+testing "grep -x (partial match 2)" "grep -x foo input ; echo \$?" \
+ "1\n" "bar foo\n" ""
+testing "grep -x -F (full match)" "grep -x -F foo input ; echo \$?" \
+ "foo\n0\n" "foo\n" ""
+testing "grep -x -F (partial match 1)" "grep -x -F foo input ; echo \$?" \
+ "1\n" "foo bar\n" ""
+testing "grep -x -F (partial match 2)" "grep -x -F foo input ; echo \$?" \
+ "1\n" "bar foo\n" ""
+
optional FEATURE_GREP_EGREP_ALIAS
testing "grep -E supports extended regexps" "grep -E fo+" "foo\n" "" \
"b\ar\nfoo\nbaz"
@@ -127,6 +141,24 @@ testing "grep -Fw doesn't stop on 1st mismatch" \
"foop foo\n" \
""
+testing "grep -w doesn't stop on 1st mismatch" \
+ "grep -w foo input" \
+ "foop foo\n" \
+ "foop foo\n" \
+ ""
+
+testing "grep -w ^str doesn't match str not at the beginning" \
+ "grep -w ^str input" \
+ "" \
+ "strstr\n" \
+ ""
+
+testing "grep -w ^ doesn't hang" \
+ "grep -w ^ input" \
+ "" \
+ "anything\n" \
+ ""
+
# testing "test name" "commands" "expected result" "file input" "stdin"
# file input will be file called "input"
# test can create a file "actual" instead of writing to stdout
diff --git a/testsuite/hostid/hostid-works b/testsuite/hostid/hostid-works
index bcfd717..8c20bdf 100644
--- a/testsuite/hostid/hostid-works
+++ b/testsuite/hostid/hostid-works
@@ -1,8 +1,6 @@
h=x$(busybox hostid)
# Is $h a sequence of hex numbers?
-x="${h//[0123456789abcdef]/x}"
-x="${x//xxx/x}"
-x="${x//xxx/x}"
-x="${x//xxx/x}"
-x="${x//xx/x}"
-test x"$x" = x"x"
+case "$h" in
+ x*[!0-9a-f]*) false;;
+ *) true;;
+esac
diff --git a/testsuite/md5sum.tests b/testsuite/md5sum.tests
index 1068b08..6c75b6d 100755
--- a/testsuite/md5sum.tests
+++ b/testsuite/md5sum.tests
@@ -30,13 +30,13 @@ result=`(
n=0
while test $n -le 999; do
echo "$text" | head -c $n | "$sum"
- : $((n++))
+ n=$(($n+1))
done | "$sum"
)`
if test x"$result" = x"$expected -"; then
- echo "PASS: $sum"
- exit 0
+ echo "PASS: $sum"
+ exit 0
fi
echo "FAIL: $sum (r:$result exp:$expected)"
diff --git a/testsuite/sed.tests b/testsuite/sed.tests
index 468565f..9494ac2 100755
--- a/testsuite/sed.tests
+++ b/testsuite/sed.tests
@@ -154,11 +154,9 @@ testing "sed selective matches insert newline" \
testing "sed selective matches noinsert newline" \
"sed -ne 's/woo/bang/p' input -" "a bang\nb bang" "a woo\nb woo" \
"c no\nd no"
-test x"$SKIP_KNOWN_BUGS" = x"" && {
testing "sed clusternewline" \
"sed -e '/one/a 111' -e '/two/i 222' -e p input -" \
"one\none\n111\n222\ntwo\ntwo" "one" "two"
-}
testing "sed subst+write" \
"sed -e 's/i/z/' -e 'woutputw' input -; $ECHO -n X; cat outputw" \
"thzngy\nagaznXthzngy\nagazn" "thingy" "again"
@@ -310,6 +308,27 @@ testing "sed zero chars match/replace logic must not falsely trigger here 2" \
"sed 's/ *$/_/g'" \
"qwerty_\n" "" "qwerty\n"
+testing "sed /\$_in_regex/ should not match newlines, only end-of-line" \
+ "sed ': testcont; /\\\\$/{ =; N; b testcont }'" \
+ "\
+this is a regular line
+2
+line with \\
+continuation
+more regular lines
+5
+line with \\
+continuation
+" \
+ "" "\
+this is a regular line
+line with \\
+continuation
+more regular lines
+line with \\
+continuation
+"
+
# testing "description" "commands" "result" "infile" "stdin"
exit $FAILCOUNT
diff --git a/testsuite/tar.tests b/testsuite/tar.tests
index 7927020..4929f4e 100755
--- a/testsuite/tar.tests
+++ b/testsuite/tar.tests
@@ -15,6 +15,44 @@ mkdir tar.tempdir && cd tar.tempdir || exit 1
# testing "test name" "script" "expected result" "file input" "stdin"
+testing "Empty file is not a tarball" '\
+tar xvf - 2>&1; echo $?
+' "\
+tar: short read
+1
+" \
+"" ""
+SKIP=
+
+optional FEATURE_SEAMLESS_GZ
+# In NOMMU case, "invalid magic" message comes from gunzip child process.
+# Otherwise, it comes from tar.
+# Need to fix output up to avoid false positive.
+testing "Empty file is not a tarball.tar.gz" '\
+{ tar xvzf - 2>&1; echo $?; } | grep -Fv "invalid magic"
+' "\
+tar: short read
+1
+" \
+"" ""
+SKIP=
+
+testing "Two zeroed blocks is a ('truncated') empty tarball" '\
+dd if=/dev/zero bs=512 count=2 2>/dev/null | tar xvf - 2>&1; echo $?
+' "\
+0
+" \
+"" ""
+SKIP=
+
+testing "Twenty zeroed blocks is an empty tarball" '\
+dd if=/dev/zero bs=512 count=20 2>/dev/null | tar xvf - 2>&1; echo $?
+' "\
+0
+" \
+"" ""
+SKIP=
+
optional FEATURE_TAR_CREATE FEATURE_LS_SORTFILES
testing "tar hardlinks and repeated files" '\
rm -rf input_* test.tar 2>/dev/null
diff --git a/testsuite/testing.sh b/testsuite/testing.sh
index 9ce9844..ccfebc8 100644
--- a/testsuite/testing.sh
+++ b/testsuite/testing.sh
@@ -63,10 +63,10 @@ optional()
{
SKIP=
while test "$1"; do
- if test x"${OPTIONFLAGS/*:$1:*/y}" != x"y"; then
- SKIP=1
- return
- fi
+ case "${OPTIONFLAGS}" in
+ *:$1:*) ;;
+ *) SKIP=1; return ;;
+ esac
shift
done
}
diff --git a/testsuite/which/which-uses-default-path b/testsuite/which/which-uses-default-path
index 63ceb9f..349583d 100644
--- a/testsuite/which/which-uses-default-path
+++ b/testsuite/which/which-uses-default-path
@@ -1,4 +1,4 @@
-BUSYBOX=$(type -p busybox)
+BUSYBOX=$(command -pv busybox)
SAVED_PATH=$PATH
unset PATH
$BUSYBOX which ls
diff --git a/util-linux/Config.src b/util-linux/Config.src
index 93b84ad..8c5343b 100644
--- a/util-linux/Config.src
+++ b/util-linux/Config.src
@@ -699,250 +699,6 @@ config FEATURE_MTAB_SUPPORT
About the only reason to use this is if you've removed /proc from
your kernel.
-config VOLUMEID
- bool #No description makes it a hidden option
- default n
-
-menu "Filesystem/Volume identification"
- depends on VOLUMEID
-
-config FEATURE_VOLUMEID_EXT
- bool "Ext filesystem"
- default y
- depends on VOLUMEID
- help
- TODO
-
-config FEATURE_VOLUMEID_BTRFS
- bool "btrfs filesystem"
- default y
- depends on VOLUMEID
- help
- TODO
-
-config FEATURE_VOLUMEID_REISERFS
- bool "Reiser filesystem"
- default y
- depends on VOLUMEID
- help
- TODO
-
-config FEATURE_VOLUMEID_FAT
- bool "fat filesystem"
- default y
- depends on VOLUMEID
- help
- TODO
-
-config FEATURE_VOLUMEID_EXFAT
- bool "exFAT filesystem"
- default y
- depends on VOLUMEID
- help
- exFAT (extended FAT) is a proprietary file system designed especially
- for flash drives. It has many features from NTFS, but with less
- overhead. exFAT is used on most SDXC cards for consumer electronics.
-
-config FEATURE_VOLUMEID_HFS
- bool "hfs filesystem"
- default y
- depends on VOLUMEID
- help
- TODO
-
-config FEATURE_VOLUMEID_JFS
- bool "jfs filesystem"
- default y
- depends on VOLUMEID
- help
- TODO
-
-### config FEATURE_VOLUMEID_UFS
-### bool "ufs filesystem"
-### default y
-### depends on VOLUMEID
-### help
-### TODO
-
-config FEATURE_VOLUMEID_XFS
- bool "xfs filesystem"
- default y
- depends on VOLUMEID
- help
- TODO
-
-config FEATURE_VOLUMEID_NILFS
- bool "nilfs filesystem"
- default y
- depends on VOLUMEID
- help
- TODO
-
-config FEATURE_VOLUMEID_NTFS
- bool "ntfs filesystem"
- default y
- depends on VOLUMEID
- help
- TODO
-
-config FEATURE_VOLUMEID_ISO9660
- bool "iso9660 filesystem"
- default y
- depends on VOLUMEID
- help
- TODO
-
-config FEATURE_VOLUMEID_UDF
- bool "udf filesystem"
- default y
- depends on VOLUMEID
- help
- TODO
-
-config FEATURE_VOLUMEID_LUKS
- bool "luks filesystem"
- default y
- depends on VOLUMEID
- help
- TODO
-
-config FEATURE_VOLUMEID_LINUXSWAP
- bool "linux swap filesystem"
- default y
- depends on VOLUMEID
- help
- TODO
-
-### config FEATURE_VOLUMEID_LVM
-### bool "lvm"
-### default y
-### depends on VOLUMEID
-### help
-### TODO
-
-config FEATURE_VOLUMEID_CRAMFS
- bool "cramfs filesystem"
- default y
- depends on VOLUMEID
- help
- TODO
-
-### config FEATURE_VOLUMEID_HPFS
-### bool "hpfs filesystem"
-### default y
-### depends on VOLUMEID
-### help
-### TODO
-
-config FEATURE_VOLUMEID_ROMFS
- bool "romfs filesystem"
- default y
- depends on VOLUMEID
- help
- TODO
-
-config FEATURE_VOLUMEID_SQUASHFS
- bool "SquashFS filesystem"
- default y
- depends on VOLUMEID && FEATURE_BLKID_TYPE
- help
- Squashfs is a compressed read-only filesystem for Linux. Squashfs is
- intended for general read-only filesystem use and in constrained block
- device/memory systems (e.g. embedded systems) where low overhead is
- needed.
-
-config FEATURE_VOLUMEID_SYSV
- bool "sysv filesystem"
- default y
- depends on VOLUMEID
- help
- TODO
-
-### config FEATURE_VOLUMEID_MINIX
-### bool "minix filesystem"
-### default y
-### depends on VOLUMEID
-### help
-### TODO
-
-### These only detect partition tables - not used (yet?)
-### config FEATURE_VOLUMEID_MAC
-### bool "mac filesystem"
-### default y
-### depends on VOLUMEID
-### help
-### TODO
-###
-### config FEATURE_VOLUMEID_MSDOS
-### bool "msdos filesystem"
-### default y
-### depends on VOLUMEID
-### help
-### TODO
-
-config FEATURE_VOLUMEID_OCFS2
- bool "ocfs2 filesystem"
- default y
- depends on VOLUMEID
- help
- TODO
-
-### config FEATURE_VOLUMEID_HIGHPOINTRAID
-### bool "highpoint raid"
-### default y
-### depends on VOLUMEID
-### help
-### TODO
-
-### config FEATURE_VOLUMEID_ISWRAID
-### bool "intel raid"
-### default y
-### depends on VOLUMEID
-### help
-### TODO
-
-### config FEATURE_VOLUMEID_LSIRAID
-### bool "lsi raid"
-### default y
-### depends on VOLUMEID
-### help
-### TODO
-
-### config FEATURE_VOLUMEID_VIARAID
-### bool "via raid"
-### default y
-### depends on VOLUMEID
-### help
-### TODO
-
-### config FEATURE_VOLUMEID_SILICONRAID
-### bool "silicon raid"
-### default y
-### depends on VOLUMEID
-### help
-### TODO
-
-### config FEATURE_VOLUMEID_NVIDIARAID
-### bool "nvidia raid"
-### default y
-### depends on VOLUMEID
-### help
-### TODO
-
-### config FEATURE_VOLUMEID_PROMISERAID
-### bool "promise raid"
-### default y
-### depends on VOLUMEID
-### help
-### TODO
-
-config FEATURE_VOLUMEID_LINUXRAID
- bool "linuxraid"
- default y
- depends on VOLUMEID
- help
- TODO
-
-endmenu
+source util-linux/volume_id/Config.in
endmenu
diff --git a/util-linux/fdformat.c b/util-linux/fdformat.c
index b3e918f..6f49cec 100644
--- a/util-linux/fdformat.c
+++ b/util-linux/fdformat.c
@@ -72,7 +72,7 @@ int fdformat_main(int argc UNUSED_PARAM, char **argv)
/* original message was: "Could not determine current format type" */
xioctl(fd, FDGETPRM, &param);
- printf("%s-sided, %d tracks, %d sec/track. Total capacity %d kB\n",
+ printf("%s-sided, %u tracks, %u sec/track. Total capacity %d kB\n",
(param.head == 2) ? "Double" : "Single",
param.track, param.sect, param.size >> 1);
diff --git a/util-linux/fdisk_gpt.c b/util-linux/fdisk_gpt.c
index d43d9c7..5786d5f 100644
--- a/util-linux/fdisk_gpt.c
+++ b/util-linux/fdisk_gpt.c
@@ -93,9 +93,7 @@ gpt_list_table(int xtra UNUSED_PARAM)
int i;
char numstr6[6];
- numstr6[5] = '\0';
-
- smart_ulltoa5(total_number_of_sectors, numstr6, " KMGTPEZY");
+ smart_ulltoa5(total_number_of_sectors * sector_size, numstr6, " KMGTPEZY")[0] = '\0';
printf("Disk %s: %llu sectors, %s\n", disk_device,
(unsigned long long)total_number_of_sectors,
numstr6);
@@ -112,8 +110,8 @@ gpt_list_table(int xtra UNUSED_PARAM)
for (i = 0; i < n_parts; i++) {
gpt_partition *p = gpt_part(i);
if (p->lba_start) {
- smart_ulltoa5(1 + SWAP_LE64(p->lba_end) - SWAP_LE64(p->lba_start),
- numstr6, " KMGTPEZY");
+ smart_ulltoa5((1 + SWAP_LE64(p->lba_end) - SWAP_LE64(p->lba_start)) * sector_size,
+ numstr6, " KMGTPEZY")[0] = '\0';
printf("%4u %15llu %15llu %11s %04x ",
i + 1,
(unsigned long long)SWAP_LE64(p->lba_start),
diff --git a/util-linux/fdisk_sun.c b/util-linux/fdisk_sun.c
index e7fcc06..e32740d 100644
--- a/util-linux/fdisk_sun.c
+++ b/util-linux/fdisk_sun.c
@@ -348,6 +348,7 @@ create_sunlabel(void)
set_all_unchanged();
set_changed(0);
+ check_sun_label();
get_boot(CREATE_EMPTY_SUN);
}
@@ -497,11 +498,14 @@ add_sun_partition(int n, int sys)
else
first = read_int(scround(start), scround(stop)+1,
scround(stop), 0, mesg);
- if (display_in_cyl_units)
+ if (display_in_cyl_units) {
first *= units_per_sector;
- else
+ } else {
/* Starting sector has to be properly aligned */
- first = (first + g_heads * g_sectors - 1) / (g_heads * g_sectors);
+ first = (first + g_heads * g_sectors - 1) /
+ (g_heads * g_sectors);
+ first *= g_heads * g_sectors;
+ }
if (n == 2 && first != 0)
printf("\
It is highly recommended that the third partition covers the whole disk\n\
diff --git a/util-linux/fsck_minix.c b/util-linux/fsck_minix.c
index c1d1b2c..33767a1 100644
--- a/util-linux/fsck_minix.c
+++ b/util-linux/fsck_minix.c
@@ -686,7 +686,7 @@ static void get_inode_common(unsigned nr, uint16_t i_mode)
total++;
if (!inode_count[nr]) {
if (!inode_in_use(nr)) {
- printf("Inode %d is marked as 'unused', but it is used "
+ printf("Inode %u is marked as 'unused', but it is used "
"for file '%s'\n", nr, current_name);
if (OPT_repair) {
if (ask("Mark as 'in use'", 1))
diff --git a/util-linux/getopt.c b/util-linux/getopt.c
index 1ae0c59..58df1c8 100644
--- a/util-linux/getopt.c
+++ b/util-linux/getopt.c
@@ -35,27 +35,32 @@
//usage: "[OPTIONS] [--] OPTSTRING PARAMS"
//usage:#define getopt_full_usage "\n\n"
//usage: IF_LONG_OPTS(
-//usage: " -a,--alternative Allow long options starting with single -"
-//usage: "\n -l,--longoptions=LOPT[,...] Long options to be recognized"
-//usage: "\n -n,--name=PROGNAME The name under which errors are reported"
-//usage: "\n -o,--options=OPTSTRING Short options to be recognized"
-//usage: "\n -q,--quiet Disable error reporting by getopt(3)"
+//usage: IF_FEATURE_GETOPT_LONG(
+//usage: " -a,--alternative Allow long options starting with single -\n"
+//usage: " -l,--longoptions=LOPT[,...] Long options to recognize\n"
+//usage: )
+//usage: " -n,--name=PROGNAME The name under which errors are reported"
+//usage: "\n -o,--options=OPTSTRING Short options to recognize"
+//usage: "\n -q,--quiet No error messages on unrecognized options"
//usage: "\n -Q,--quiet-output No normal output"
//usage: "\n -s,--shell=SHELL Set shell quoting conventions"
-//usage: "\n -T,--test Test for getopt(1) version"
-//usage: "\n -u,--unquoted Don't quote the output"
+//usage: "\n -T,--test Version test (exits with 4)"
+//usage: "\n -u,--unquoted Don't quote output"
//usage: )
//usage: IF_NOT_LONG_OPTS(
-//usage: " -a Allow long options starting with single -"
-//usage: "\n -l LOPT[,...] Long options to be recognized"
-//usage: "\n -n PROGNAME The name under which errors are reported"
-//usage: "\n -o OPTSTRING Short options to be recognized"
-//usage: "\n -q Disable error reporting by getopt(3)"
+//usage: IF_FEATURE_GETOPT_LONG(
+//usage: " -a Allow long options starting with single -\n"
+//usage: " -l LOPT[,...] Long options to recognize\n"
+//usage: )
+//usage: " -n PROGNAME The name under which errors are reported"
+//usage: "\n -o OPTSTRING Short options to recognize"
+//usage: "\n -q No error messages on unrecognized options"
//usage: "\n -Q No normal output"
//usage: "\n -s SHELL Set shell quoting conventions"
-//usage: "\n -T Test for getopt(1) version"
-//usage: "\n -u Don't quote the output"
+//usage: "\n -T Version test (exits with 4)"
+//usage: "\n -u Don't quote output"
//usage: )
+//usage: IF_FEATURE_GETOPT_LONG( /* example uses -l, needs FEATURE_GETOPT_LONG */
//usage: "\n"
//usage: "\nExample:"
//usage: "\n"
@@ -73,6 +78,7 @@
//usage: "\n *) echo Error; exit 1;;"
//usage: "\n esac"
//usage: "\ndone"
+//usage: )
//usage:
//usage:#define getopt_example_usage
//usage: "$ cat getopt.test\n"
@@ -214,11 +220,6 @@ static const char *normalize(const char *arg)
static int generate_output(char **argv, int argc, const char *optstr, const struct option *longopts)
{
int exit_code = 0; /* We assume everything will be OK */
- int opt;
-#if ENABLE_FEATURE_GETOPT_LONG
- int longindex;
-#endif
- const char *charptr;
if (quiet_errors) /* No error reporting from getopt(3) */
opterr = 0;
@@ -233,13 +234,14 @@ static int generate_output(char **argv, int argc, const char *optstr, const stru
#endif
while (1) {
- opt =
#if ENABLE_FEATURE_GETOPT_LONG
- alternative ?
- getopt_long_only(argc, argv, optstr, longopts, &longindex) :
- getopt_long(argc, argv, optstr, longopts, &longindex);
+ int longindex;
+ int opt = alternative
+ ? getopt_long_only(argc, argv, optstr, longopts, &longindex)
+ : getopt_long(argc, argv, optstr, longopts, &longindex)
+ ;
#else
- getopt(argc, argv, optstr);
+ int opt = getopt(argc, argv, optstr);
#endif
if (opt == -1)
break;
@@ -257,9 +259,10 @@ static int generate_output(char **argv, int argc, const char *optstr, const stru
if (opt == NON_OPT)
printf(" %s", normalize(optarg));
else {
+ const char *charptr;
printf(" -%c", opt);
charptr = strchr(optstr, opt);
- if (charptr != NULL && *++charptr == ':')
+ if (charptr && *++charptr == ':')
printf(" %s",
normalize(optarg ? optarg : ""));
}
@@ -267,9 +270,11 @@ static int generate_output(char **argv, int argc, const char *optstr, const stru
}
if (!quiet_output) {
+ unsigned idx;
printf(" --");
- while (optind < argc)
- printf(" %s", normalize(argv[optind++]));
+ idx = optind;
+ while (argv[idx])
+ printf(" %s", normalize(argv[idx++]));
bb_putchar('\n');
}
return exit_code;
diff --git a/util-linux/hexdump.c b/util-linux/hexdump.c
index 9a312f9..ac7e24f 100644
--- a/util-linux/hexdump.c
+++ b/util-linux/hexdump.c
@@ -66,13 +66,6 @@ static const char add_first[] ALIGN1 = "\"%07.7_Ax\n\"";
static const char hexdump_opts[] ALIGN1 = "bcdoxCe:f:n:s:v" IF_FEATURE_HEXDUMP_REVERSE("R");
-static const struct suffix_mult suffixes[] = {
- { "b", 512 },
- { "k", 1024 },
- { "m", 1024*1024 },
- { "", 0 }
-};
-
int hexdump_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int hexdump_main(int argc, char **argv)
{
@@ -116,7 +109,12 @@ int hexdump_main(int argc, char **argv)
dumper->dump_length = xatoi_positive(optarg);
} /* else */
if (ch == 's') { /* compat: -s accepts hex numbers too */
- dumper->dump_skip = xstrtoul_range_sfx(optarg, /*base:*/ 0, /*lo:*/ 0, /*hi:*/ LONG_MAX, suffixes);
+ dumper->dump_skip = xstrtoull_range_sfx(
+ optarg,
+ /*base:*/ 0,
+ /*lo:*/ 0, /*hi:*/ OFF_T_MAX,
+ bkm_suffixes
+ );
} /* else */
if (ch == 'v') {
dumper->dump_vflag = ALL;
diff --git a/util-linux/ipcs.c b/util-linux/ipcs.c
index 2668caf..67a25a8 100644
--- a/util-linux/ipcs.c
+++ b/util-linux/ipcs.c
@@ -166,10 +166,10 @@ static NOINLINE void do_shm(void)
case STATUS:
printf("------ Shared Memory %s --------\n", "Status");
printf("segments allocated %d\n"
- "pages allocated %ld\n"
- "pages resident %ld\n"
- "pages swapped %ld\n"
- "Swap performance: %ld attempts\t%ld successes\n",
+ "pages allocated %lu\n"
+ "pages resident %lu\n"
+ "pages swapped %lu\n"
+ "Swap performance: %lu attempts\t%lu successes\n",
shm_info.used_ids,
shm_info.shm_tot,
shm_info.shm_rss,
@@ -569,7 +569,7 @@ static void print_sem(int semid)
if (val < 0 || ncnt < 0 || zcnt < 0 || pid < 0) {
bb_perror_msg_and_die("semctl");
}
- printf("%-10d %-10d %-10d %-10d %-10d\n", i, val, ncnt, zcnt, pid);
+ printf("%-10u %-10d %-10d %-10d %-10d\n", i, val, ncnt, zcnt, pid);
}
bb_putchar('\n');
}
diff --git a/util-linux/losetup.c b/util-linux/losetup.c
index 21108d0..d450b5a 100644
--- a/util-linux/losetup.c
+++ b/util-linux/losetup.c
@@ -8,16 +8,16 @@
*/
//usage:#define losetup_trivial_usage
-//usage: "[-r] [-o OFS] LOOPDEV FILE - associate loop devices\n"
+//usage: "[-r] [-o OFS] {-f|LOOPDEV} FILE - associate loop devices\n"
//usage: " losetup -d LOOPDEV - disassociate\n"
-//usage: " losetup [-f] - show"
+//usage: " losetup -a - show status\n"
+//usage: " losetup -f - show next free loop device"
//usage:#define losetup_full_usage "\n\n"
//usage: " -o OFS Start OFS bytes into FILE"
//usage: "\n -r Read-only"
-//usage: "\n -f Show first free loop device"
+//usage: "\n -f Show/use next free loop device"
//usage:
//usage:#define losetup_notes_usage
-//usage: "No arguments will display all current associations.\n"
//usage: "One argument (losetup /dev/loop1) will display the current association\n"
//usage: "(if any), or disassociate it (with -d). The display shows the offset\n"
//usage: "and filename of the file the loop device is currently bound to.\n\n"
@@ -27,50 +27,32 @@
#include "libbb.h"
+/* 1048575 is a max possible minor number in Linux circa 2010 */
+/* for now use something less extreme */
+#define MAX_LOOP_NUM 1023
+
int losetup_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int losetup_main(int argc UNUSED_PARAM, char **argv)
{
unsigned opt;
- int n;
char *opt_o;
- unsigned long long offset = 0;
+ char dev[LOOP_NAMESIZE];
enum {
OPT_d = (1 << 0),
OPT_o = (1 << 1),
OPT_f = (1 << 2),
- OPT_r = (1 << 3), /* must be last */
+ OPT_a = (1 << 3),
+ OPT_r = (1 << 4), /* must be last */
};
- /* max 2 args, -d,-o,-f opts are mutually exclusive */
- opt_complementary = "?2:d--of:o--df:f--do";
- opt = getopt32(argv, "do:fr", &opt_o);
+ opt_complementary = "?2:d--ofar:a--ofr";
+ opt = getopt32(argv, "do:far", &opt_o);
argv += optind;
- if (opt == OPT_o)
- offset = xatoull(opt_o);
-
- if (opt == OPT_d) {
- /* -d BLOCKDEV */
- if (!argv[0] || argv[1])
- bb_show_usage();
- if (del_loop(argv[0]))
- bb_simple_perror_msg_and_die(argv[0]);
- return EXIT_SUCCESS;
- }
-
- if (argv[0]) {
+ /* LOOPDEV */
+ if (!opt && argv[0] && !argv[1]) {
char *s;
- if (opt == OPT_f) /* -f should not have arguments */
- bb_show_usage();
-
- if (argv[1]) {
- /* [-r] [-o OFS] BLOCKDEV FILE */
- if (set_loop(&argv[0], argv[1], offset, (opt / OPT_r)) < 0)
- bb_simple_perror_msg_and_die(argv[0]);
- return EXIT_SUCCESS;
- }
- /* [-r] [-o OFS] BLOCKDEV */
s = query_loop(argv[0]);
if (!s)
bb_simple_perror_msg_and_die(argv[0]);
@@ -80,28 +62,65 @@ int losetup_main(int argc UNUSED_PARAM, char **argv)
return EXIT_SUCCESS;
}
- /* [-r] [-o OFS|-f] with no params */
- n = 0;
- while (1) {
- char *s;
- char dev[LOOP_NAMESIZE];
-
- sprintf(dev, LOOP_FORMAT, n);
- s = query_loop(dev);
- n++;
- if (!s) {
- if (n > 9 && errno && errno != ENXIO)
- return EXIT_SUCCESS;
- if (opt == OPT_f) {
- puts(dev);
- return EXIT_SUCCESS;
- }
- } else {
- if (opt != OPT_f)
+ /* -d LOOPDEV */
+ if (opt == OPT_d && argv[0]) {
+ if (del_loop(argv[0]))
+ bb_simple_perror_msg_and_die(argv[0]);
+ return EXIT_SUCCESS;
+ }
+
+ /* -a */
+ if (opt == OPT_a) {
+ int n;
+ for (n = 0; n < MAX_LOOP_NUM; n++) {
+ char *s;
+
+ sprintf(dev, LOOP_FORMAT, n);
+ s = query_loop(dev);
+ if (s) {
printf("%s: %s\n", dev, s);
- if (ENABLE_FEATURE_CLEAN_UP)
free(s);
+ }
+ }
+ return EXIT_SUCCESS;
+ }
+
+ /* contains -f */
+ if (opt & OPT_f) {
+ char *s;
+ int n = 0;
+
+ do {
+ if (n > MAX_LOOP_NUM)
+ bb_error_msg_and_die("no free loop devices");
+ sprintf(dev, LOOP_FORMAT, n++);
+ s = query_loop(dev);
+ free(s);
+ } while (s);
+ /* now: dev is next free "/dev/loopN" */
+ if ((opt == OPT_f) && !argv[0]) {
+ puts(dev);
+ return EXIT_SUCCESS;
}
}
- return EXIT_SUCCESS;
+
+ /* [-r] [-o OFS] {-f|LOOPDEV} FILE */
+ if (argv[0] && ((opt & OPT_f) || argv[1])) {
+ unsigned long long offset = 0;
+ char *d = dev;
+
+ if (opt & OPT_o)
+ offset = xatoull(opt_o);
+ if (!(opt & OPT_f))
+ d = *argv++;
+
+ if (argv[0]) {
+ if (set_loop(&d, argv[0], offset, (opt & OPT_r)) < 0)
+ bb_simple_perror_msg_and_die(argv[0]);
+ return EXIT_SUCCESS;
+ }
+ }
+
+ bb_show_usage(); /* does not return */
+ /*return EXIT_FAILURE;*/
}
diff --git a/util-linux/mdev.c b/util-linux/mdev.c
index 3d4e135..e80b58f 100644
--- a/util-linux/mdev.c
+++ b/util-linux/mdev.c
@@ -325,23 +325,6 @@ static void clean_up_cur_rule(void)
make_default_cur_rule();
}
-/* In later versions, endofname is in libbb */
-#define endofname mdev_endofname
-static
-const char* FAST_FUNC
-endofname(const char *name)
-{
-#define is_name(c) ((c) == '_' || isalpha((unsigned char)(c)))
-#define is_in_name(c) ((c) == '_' || isalnum((unsigned char)(c)))
- if (!is_name(*name))
- return name;
- while (*++name) {
- if (!is_in_name(*name))
- break;
- }
- return name;
-}
-
static char *parse_envmatch_pfx(char *val)
{
struct envmatch **nextp = &G.cur_rule.envmatch;
@@ -1100,15 +1083,15 @@ int mdev_main(int argc UNUSED_PARAM, char **argv)
* ACTION can be "add", "remove", "change"
* DEVPATH is like "/block/sda" or "/class/input/mice"
*/
- action = getenv("ACTION");
- op = index_in_strings(keywords, action);
env_devname = getenv("DEVNAME"); /* can be NULL */
- env_devpath = getenv("DEVPATH");
G.subsystem = getenv("SUBSYSTEM");
+ action = getenv("ACTION");
+ env_devpath = getenv("DEVPATH");
if (!action || !env_devpath /*|| !G.subsystem*/)
bb_show_usage();
fw = getenv("FIRMWARE");
seq = getenv("SEQNUM");
+ op = index_in_strings(keywords, action);
my_pid = getpid();
open_mdev_log(seq, my_pid);
diff --git a/util-linux/mkfs_minix.c b/util-linux/mkfs_minix.c
index 59d7d23..d65a516 100644
--- a/util-linux/mkfs_minix.c
+++ b/util-linux/mkfs_minix.c
@@ -196,54 +196,6 @@ static void minix_clrbit(char *a, unsigned i)
# define BLKGETSIZE _IO(0x12,96) /* return device size */
#endif
-
-static long valid_offset(int fd, int offset)
-{
- char ch;
-
- if (lseek(fd, offset, SEEK_SET) < 0)
- return 0;
- if (read(fd, &ch, 1) < 1)
- return 0;
- return 1;
-}
-
-static int count_blocks(int fd)
-{
- int high, low;
-
- low = 0;
- for (high = 1; valid_offset(fd, high); high *= 2)
- low = high;
-
- while (low < high - 1) {
- const int mid = (low + high) / 2;
-
- if (valid_offset(fd, mid))
- low = mid;
- else
- high = mid;
- }
- valid_offset(fd, 0);
- return (low + 1);
-}
-
-static int get_size(const char *file)
-{
- int fd;
- long size;
-
- fd = xopen(file, O_RDWR);
- if (ioctl(fd, BLKGETSIZE, &size) >= 0) {
- close(fd);
- return (size * 512);
- }
-
- size = count_blocks(fd);
- close(fd);
- return size;
-}
-
static void write_tables(void)
{
/* Mark the superblock valid. */
@@ -553,7 +505,7 @@ static void get_list_blocks(char *filename)
listfile = xfopen_for_read(filename);
while (!feof(listfile)) {
- fscanf(listfile, "%ld\n", &blockno);
+ fscanf(listfile, "%lu\n", &blockno);
mark_zone(blockno);
G.badblocks++;
}
@@ -636,7 +588,6 @@ int mkfs_minix_main(int argc UNUSED_PARAM, char **argv)
{
unsigned opt;
char *tmp;
- struct stat statbuf;
char *str_i;
char *listfile = NULL;
@@ -673,13 +624,17 @@ int mkfs_minix_main(int argc UNUSED_PARAM, char **argv)
#endif
}
- G.device_name = *argv++;
+ G.device_name = argv[0];
if (!G.device_name)
bb_show_usage();
- if (*argv)
- G.total_blocks = xatou32(*argv);
- else
- G.total_blocks = get_size(G.device_name) / 1024;
+
+ /* Check if it is mounted */
+ if (find_mount_point(G.device_name, 0))
+ bb_error_msg_and_die("can't format mounted filesystem");
+
+ xmove_fd(xopen(G.device_name, O_RDWR), dev_fd);
+
+ G.total_blocks = get_volume_size_in_bytes(dev_fd, argv[1], 1024, /*extend:*/ 1) / 1024;
if (G.total_blocks < 10)
bb_error_msg_and_die("must have at least 10 blocks");
@@ -690,25 +645,21 @@ int mkfs_minix_main(int argc UNUSED_PARAM, char **argv)
G.magic = MINIX2_SUPER_MAGIC;
} else if (G.total_blocks > 65535)
G.total_blocks = 65535;
-
- /* Check if it is mounted */
- if (find_mount_point(G.device_name, 0))
- bb_error_msg_and_die("can't format mounted filesystem");
-
- xmove_fd(xopen(G.device_name, O_RDWR), dev_fd);
+#if 0
+ struct stat statbuf;
xfstat(dev_fd, &statbuf, G.device_name);
+/* why? */
if (!S_ISBLK(statbuf.st_mode))
opt &= ~1; // clear -c (check)
-
+#if 0
/* I don't know why someone has special code to prevent mkfs.minix
* on IDE devices. Why IDE but not SCSI, etc?... */
-#if 0
else if (statbuf.st_rdev == 0x0300 || statbuf.st_rdev == 0x0340)
/* what is this? */
bb_error_msg_and_die("will not try "
"to make filesystem on '%s'", G.device_name);
#endif
-
+#endif
tmp = G.root_block;
*(short *) tmp = 1;
strcpy(tmp + 2, ".");
diff --git a/util-linux/mount.c b/util-linux/mount.c
index 7e547fe..16b58a0 100644
--- a/util-linux/mount.c
+++ b/util-linux/mount.c
@@ -1856,8 +1856,8 @@ static int singlemount(struct mntent *mp, int ignore_busy)
len, share,
share + len + 1 /* "dir1/dir2" */
);
- parse_mount_options(unc, &filteropts);
- if (ENABLE_FEATURE_CLEAN_UP) free(unc);
+ parse_mount_options(unc, &filteropts);
+ if (ENABLE_FEATURE_CLEAN_UP) free(unc);
}
lsa = host2sockaddr(hostname, 0);
diff --git a/util-linux/readprofile.c b/util-linux/readprofile.c
index 974fe89..a645404 100644
--- a/util-linux/readprofile.c
+++ b/util-linux/readprofile.c
@@ -152,7 +152,7 @@ int readprofile_main(int argc UNUSED_PARAM, char **argv)
step = buf[0];
if (optInfo) {
- printf("Sampling_step: %i\n", step);
+ printf("Sampling_step: %u\n", step);
return EXIT_SUCCESS;
}
@@ -219,10 +219,10 @@ int readprofile_main(int argc UNUSED_PARAM, char **argv)
&& (fn_len = next_add-fn_add) != 0
) {
if (optVerbose)
- printf("%016llx %-40s %6i %8.4f\n", fn_add,
+ printf("%016llx %-40s %6u %8.4f\n", fn_add,
fn_name, this, this/(double)fn_len);
else
- printf("%6i %-40s %8.4f\n",
+ printf("%6u %-40s %8.4f\n",
this, fn_name, this/(double)fn_len);
if (optSub) {
unsigned long long scan;
@@ -246,14 +246,14 @@ int readprofile_main(int argc UNUSED_PARAM, char **argv)
}
/* clock ticks, out of kernel text - probably modules */
- printf("%6i %s\n", buf[len/sizeof(*buf)-1], "*unknown*");
+ printf("%6u %s\n", buf[len/sizeof(*buf)-1], "*unknown*");
/* trailer */
if (optVerbose)
- printf("%016x %-40s %6i %8.4f\n",
+ printf("%016x %-40s %6u %8.4f\n",
0, "total", total, total/(double)(fn_add-add0));
else
- printf("%6i %-40s %8.4f\n",
+ printf("%6u %-40s %8.4f\n",
total, "total", total/(double)(fn_add-add0));
fclose(map);
diff --git a/util-linux/swaponoff.c b/util-linux/swaponoff.c
index 54867ec..3f22334 100644
--- a/util-linux/swaponoff.c
+++ b/util-linux/swaponoff.c
@@ -95,6 +95,20 @@ static int do_em_all(void)
if (applet_name[5] != 'n'
|| hasmntopt(m, MNTOPT_NOAUTO) == NULL
) {
+#if ENABLE_FEATURE_SWAPON_PRI
+ char *p;
+ g_flags = 0; /* each swap space might have different flags */
+ p = hasmntopt(m, "pri");
+ if (p) {
+ /* Max allowed 32767 (==SWAP_FLAG_PRIO_MASK) */
+ unsigned int swap_prio = MIN(bb_strtou(p + 4 , NULL, 10), SWAP_FLAG_PRIO_MASK);
+ /* We want to allow "NNNN,foo", thus errno == EINVAL is allowed too */
+ if (errno != ERANGE) {
+ g_flags = SWAP_FLAG_PREFER |
+ (swap_prio << SWAP_FLAG_PRIO_SHIFT);
+ }
+ }
+#endif
err += swap_enable_disable(m->mnt_fsname);
}
}
diff --git a/util-linux/volume_id/Config.src b/util-linux/volume_id/Config.src
new file mode 100644
index 0000000..ac208c9
--- a/dev/null
+++ b/util-linux/volume_id/Config.src
@@ -0,0 +1,15 @@
+#
+# For a description of the syntax of this configuration file,
+# see scripts/kbuild/config-language.txt.
+#
+
+config VOLUMEID
+ bool #No description makes it a hidden option
+ default n
+
+menu "Filesystem/Volume identification"
+ depends on VOLUMEID
+
+INSERT
+
+endmenu
diff --git a/util-linux/volume_id/Kbuild.src b/util-linux/volume_id/Kbuild.src
index 759fdaa..6b4fb74 100644
--- a/util-linux/volume_id/Kbuild.src
+++ b/util-linux/volume_id/Kbuild.src
@@ -7,41 +7,3 @@
lib-y:=
INSERT
-
-lib-$(CONFIG_BLKID) += get_devname.o
-lib-$(CONFIG_FINDFS) += get_devname.o
-lib-$(CONFIG_FEATURE_MOUNT_LABEL) += get_devname.o
-
-lib-$(CONFIG_VOLUMEID) += volume_id.o util.o
-lib-$(CONFIG_FEATURE_VOLUMEID_BTRFS) += btrfs.o
-lib-$(CONFIG_FEATURE_VOLUMEID_EXT) += ext.o
-lib-$(CONFIG_FEATURE_VOLUMEID_FAT) += fat.o
-lib-$(CONFIG_FEATURE_VOLUMEID_HFS) += hfs.o
-### lib-$(CONFIG_FEATURE_VOLUMEID_HIGHPOINTRAID) += highpoint.o
-### lib-$(CONFIG_FEATURE_VOLUMEID_ISWRAID) += isw_raid.o
-### lib-$(CONFIG_FEATURE_VOLUMEID_LSIRAID) += lsi_raid.o
-### lib-$(CONFIG_FEATURE_VOLUMEID_VIARAID) += via_raid.o
-### lib-$(CONFIG_FEATURE_VOLUMEID_SILICONRAID) += silicon_raid.o
-### lib-$(CONFIG_FEATURE_VOLUMEID_NVIDIARAID) += nvidia_raid.o
-### lib-$(CONFIG_FEATURE_VOLUMEID_PROMISERAID) += promise_raid.o
-lib-$(CONFIG_FEATURE_VOLUMEID_ISO9660) += iso9660.o
-lib-$(CONFIG_FEATURE_VOLUMEID_JFS) += jfs.o
-lib-$(CONFIG_FEATURE_VOLUMEID_LINUXRAID) += linux_raid.o
-lib-$(CONFIG_FEATURE_VOLUMEID_LINUXSWAP) += linux_swap.o
-### lib-$(CONFIG_FEATURE_VOLUMEID_LVM) += lvm.o
-### lib-$(CONFIG_FEATURE_VOLUMEID_MAC) += mac.o
-### lib-$(CONFIG_FEATURE_VOLUMEID_MSDOS) += msdos.o
-lib-$(CONFIG_FEATURE_VOLUMEID_NILFS) += nilfs.o
-lib-$(CONFIG_FEATURE_VOLUMEID_NTFS) += ntfs.o
-lib-$(CONFIG_FEATURE_VOLUMEID_EXFAT) += exfat.o
-lib-$(CONFIG_FEATURE_VOLUMEID_REISERFS) += reiserfs.o
-lib-$(CONFIG_FEATURE_VOLUMEID_UDF) += udf.o
-### lib-$(CONFIG_FEATURE_VOLUMEID_UFS) += ufs.o
-lib-$(CONFIG_FEATURE_VOLUMEID_XFS) += xfs.o
-lib-$(CONFIG_FEATURE_VOLUMEID_CRAMFS) += cramfs.o
-### lib-$(CONFIG_FEATURE_VOLUMEID_HPFS) += hpfs.o
-lib-$(CONFIG_FEATURE_VOLUMEID_ROMFS) += romfs.o
-lib-$(CONFIG_FEATURE_VOLUMEID_SYSV) += sysv.o
-### lib-$(CONFIG_FEATURE_VOLUMEID_MINIX) += minix.o
-lib-$(CONFIG_FEATURE_VOLUMEID_LUKS) += luks.o
-lib-$(CONFIG_FEATURE_VOLUMEID_OCFS2) += ocfs2.o
diff --git a/util-linux/volume_id/btrfs.c b/util-linux/volume_id/btrfs.c
index ee71d2e..e4dddf2 100644
--- a/util-linux/volume_id/btrfs.c
+++ b/util-linux/volume_id/btrfs.c
@@ -19,6 +19,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_BTRFS) += btrfs.o
+
+//config:
+//config:config FEATURE_VOLUMEID_BTRFS
+//config: bool "btrfs filesystem"
+//config: default y
+//config: depends on VOLUMEID
+//config: help
+//config: TODO
+//config:
+
#include "volume_id_internal.h"
#define BTRFS_UUID_SIZE 16
diff --git a/util-linux/volume_id/cramfs.c b/util-linux/volume_id/cramfs.c
index 28e9970..aeb7f20 100644
--- a/util-linux/volume_id/cramfs.c
+++ b/util-linux/volume_id/cramfs.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_CRAMFS) += cramfs.o
+
+//config:
+//config:config FEATURE_VOLUMEID_CRAMFS
+//config: bool "cramfs filesystem"
+//config: default y
+//config: depends on VOLUMEID
+//config: help
+//config: TODO
+//config:
+
#include "volume_id_internal.h"
struct cramfs_super {
diff --git a/util-linux/volume_id/exfat.c b/util-linux/volume_id/exfat.c
index a38a891..c3aa368 100644
--- a/util-linux/volume_id/exfat.c
+++ b/util-linux/volume_id/exfat.c
@@ -18,6 +18,19 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_EXFAT) += exfat.o
+
+//config:
+//config:config FEATURE_VOLUMEID_EXFAT
+//config: bool "exFAT filesystem"
+//config: default y
+//config: depends on VOLUMEID
+//config: help
+//config: exFAT (extended FAT) is a proprietary file system designed especially
+//config: for flash drives. It has many features from NTFS, but with less
+//config: overhead. exFAT is used on most SDXC cards for consumer electronics.
+//config:
+
#include "volume_id_internal.h"
#define EXFAT_SB_OFFSET 0
diff --git a/util-linux/volume_id/ext.c b/util-linux/volume_id/ext.c
index 9745106..df39d93 100644
--- a/util-linux/volume_id/ext.c
+++ b/util-linux/volume_id/ext.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_EXT) += ext.o
+
+//config:
+//config:config FEATURE_VOLUMEID_EXT
+//config: bool "Ext filesystem"
+//config: default y
+//config: depends on VOLUMEID
+//config: help
+//config: TODO
+//config:
+
#include "volume_id_internal.h"
#include "bb_e2fs_defs.h"
diff --git a/util-linux/volume_id/f2fs.c b/util-linux/volume_id/f2fs.c
new file mode 100644
index 0000000..bf0b662
--- a/dev/null
+++ b/util-linux/volume_id/f2fs.c
@@ -0,0 +1,95 @@
+/*
+ * volume_id - reads filesystem label and uuid
+ *
+ * Copyright (C) 2012 S-G Bergh <sgb@systemasis.org>
+ *
+ * Licensed under GPLv2, see file LICENSE in this source tree.
+ */
+
+//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_F2FS) += f2fs.o
+
+//config:
+//config:config FEATURE_VOLUMEID_F2FS
+//config: bool "f2fs filesystem"
+//config: default y
+//config: depends on VOLUMEID
+//config: help
+//config: F2FS (aka Flash-Friendly File System) is a log-structured file system,
+//config: which is adapted to newer forms of storage. F2FS also remedies some
+//config: known issues of the older log structured file systems, such as high
+//config: cleaning overhead.
+//config:
+
+#include "volume_id_internal.h"
+
+#define F2FS_MAGIC 0xF2F52010 // F2FS Magic Number
+#define F2FS_UUID_SIZE 16
+#define F2FS_LABEL_SIZE 512
+#define F2FS_LABEL_BYTES 1024
+#define F2FS_SB1_OFFSET 0x400 // offset for 1:st super block
+/*
+#define F2FS_SB2_OFFSET 0x1400 // offset for 2:nd super block
+*/
+
+struct f2fs_super_block { // According to version 1.1
+/* 0x00 */ uint32_t magic; // Magic Number
+/* 0x04 */ uint16_t major_ver; // Major Version
+/* 0x06 */ uint16_t minor_ver; // Minor Version
+/* 0x08 */ uint32_t log_sectorsize; // log2 sector size in bytes
+/* 0x0C */ uint32_t log_sectors_per_block; // log2 # of sectors per block
+/* 0x10 */ uint32_t log_blocksize; // log2 block size in bytes
+/* 0x14 */ uint32_t log_blocks_per_seg; // log2 # of blocks per segment
+/* 0x18 */ uint32_t segs_per_sec; // # of segments per section
+/* 0x1C */ uint32_t secs_per_zone; // # of sections per zone
+/* 0x20 */ uint32_t checksum_offset; // checksum offset inside super block
+/* 0x24 */ uint64_t block_count; // total # of user blocks
+/* 0x2C */ uint32_t section_count; // total # of sections
+/* 0x30 */ uint32_t segment_count; // total # of segments
+/* 0x34 */ uint32_t segment_count_ckpt; // # of segments for checkpoint
+/* 0x38 */ uint32_t segment_count_sit; // # of segments for SIT
+/* 0x3C */ uint32_t segment_count_nat; // # of segments for NAT
+/* 0x40 */ uint32_t segment_count_ssa; // # of segments for SSA
+/* 0x44 */ uint32_t segment_count_main; // # of segments for main area
+/* 0x48 */ uint32_t segment0_blkaddr; // start block address of segment 0
+/* 0x4C */ uint32_t cp_blkaddr; // start block address of checkpoint
+/* 0x50 */ uint32_t sit_blkaddr; // start block address of SIT
+/* 0x54 */ uint32_t nat_blkaddr; // start block address of NAT
+/* 0x58 */ uint32_t ssa_blkaddr; // start block address of SSA
+/* 0x5C */ uint32_t main_blkaddr; // start block address of main area
+/* 0x60 */ uint32_t root_ino; // root inode number
+/* 0x64 */ uint32_t node_ino; // node inode number
+/* 0x68 */ uint32_t meta_ino; // meta inode number
+/* 0x6C */ uint8_t uuid[F2FS_UUID_SIZE]; // 128-bit uuid for volume
+/* 0x7C */ uint16_t volume_name[F2FS_LABEL_SIZE]; // volume name
+// /* 0x47C */ uint32_t extension_count; // # of extensions below
+// /* 0x480 */ uint8_t extension_list[64][8]; // extension array
+} PACKED;
+
+
+int FAST_FUNC volume_id_probe_f2fs(struct volume_id *id /*,uint64_t off*/)
+{
+ struct f2fs_super_block *sb;
+
+ // Go for primary super block (ignore second sb)
+ dbg("f2fs: probing at offset 0x%x", F2FS_SB1_OFFSET);
+ sb = volume_id_get_buffer(id, F2FS_SB1_OFFSET, sizeof(*sb));
+
+ if (!sb)
+ return -1;
+
+ if (sb->magic != cpu_to_le32(F2FS_MAGIC))
+ return -1;
+
+ IF_FEATURE_BLKID_TYPE(id->type = "f2fs");
+
+ // For version 1.0 we don't know sb structure and can't set label/uuid
+ if (sb->major_ver == cpu_to_le16(1) && sb->minor_ver == cpu_to_le16(0))
+ return 0;
+
+ volume_id_set_label_unicode16(id, (uint8_t *)sb->volume_name,
+ LE, MIN(F2FS_LABEL_BYTES, VOLUME_ID_LABEL_SIZE));
+
+ volume_id_set_uuid(id, sb->uuid, UUID_DCE);
+
+ return 0;
+}
diff --git a/util-linux/volume_id/fat.c b/util-linux/volume_id/fat.c
index 904fbb2..476d500 100644
--- a/util-linux/volume_id/fat.c
+++ b/util-linux/volume_id/fat.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_FAT) += fat.o
+
+//config:
+//config:config FEATURE_VOLUMEID_FAT
+//config: bool "fat filesystem"
+//config: default y
+//config: depends on VOLUMEID
+//config: help
+//config: TODO
+//config:
+
#include "volume_id_internal.h"
/* linux/msdos_fs.h says: */
diff --git a/util-linux/volume_id/get_devname.c b/util-linux/volume_id/get_devname.c
index 665cb9b..0c6bdfd 100644
--- a/util-linux/volume_id/get_devname.c
+++ b/util-linux/volume_id/get_devname.c
@@ -7,6 +7,11 @@
*
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
+
+//kbuild:lib-$(CONFIG_BLKID) += get_devname.o
+//kbuild:lib-$(CONFIG_FINDFS) += get_devname.o
+//kbuild:lib-$(CONFIG_FEATURE_MOUNT_LABEL) += get_devname.o
+
#include <sys/mount.h> /* BLKGETSIZE64 */
#if !defined(BLKGETSIZE64)
# define BLKGETSIZE64 _IOR(0x12,114,size_t)
diff --git a/util-linux/volume_id/hfs.c b/util-linux/volume_id/hfs.c
index 3d9704d..8d34aaf 100644
--- a/util-linux/volume_id/hfs.c
+++ b/util-linux/volume_id/hfs.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_HFS) += hfs.o
+
+//config:
+//config:config FEATURE_VOLUMEID_HFS
+//config: bool "hfs filesystem"
+//config: default y
+//config: depends on VOLUMEID
+//config: help
+//config: TODO
+//config:
+
#include "volume_id_internal.h"
struct hfs_finder_info{
diff --git a/util-linux/volume_id/iso9660.c b/util-linux/volume_id/iso9660.c
index 1d7693a..3848de4 100644
--- a/util-linux/volume_id/iso9660.c
+++ b/util-linux/volume_id/iso9660.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_ISO9660) += iso9660.o
+
+//config:
+//config:config FEATURE_VOLUMEID_ISO9660
+//config: bool "iso9660 filesystem"
+//config: default y
+//config: depends on VOLUMEID
+//config: help
+//config: TODO
+//config:
+
#include "volume_id_internal.h"
#define ISO_SUPERBLOCK_OFFSET 0x8000
diff --git a/util-linux/volume_id/jfs.c b/util-linux/volume_id/jfs.c
index 5333af2..a6eaff4 100644
--- a/util-linux/volume_id/jfs.c
+++ b/util-linux/volume_id/jfs.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_JFS) += jfs.o
+
+//config:
+//config:config FEATURE_VOLUMEID_JFS
+//config: bool "jfs filesystem"
+//config: default y
+//config: depends on VOLUMEID
+//config: help
+//config: TODO
+//config:
+
#include "volume_id_internal.h"
struct jfs_super_block {
diff --git a/util-linux/volume_id/linux_raid.c b/util-linux/volume_id/linux_raid.c
index 209eaab..f20823a 100644
--- a/util-linux/volume_id/linux_raid.c
+++ b/util-linux/volume_id/linux_raid.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_LINUXRAID) += linux_raid.o
+
+//config:
+//config:config FEATURE_VOLUMEID_LINUXRAID
+//config: bool "linuxraid"
+//config: default y
+//config: depends on VOLUMEID
+//config: help
+//config: TODO
+//config:
+
#include "volume_id_internal.h"
struct mdp_super_block {
diff --git a/util-linux/volume_id/linux_swap.c b/util-linux/volume_id/linux_swap.c
index 1ee534a..39470d4 100644
--- a/util-linux/volume_id/linux_swap.c
+++ b/util-linux/volume_id/linux_swap.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_LINUXSWAP) += linux_swap.o
+
+//config:
+//config:config FEATURE_VOLUMEID_LINUXSWAP
+//config: bool "linux swap filesystem"
+//config: default y
+//config: depends on VOLUMEID
+//config: help
+//config: TODO
+//config:
+
#include "volume_id_internal.h"
struct swap_header_v1_2 {
diff --git a/util-linux/volume_id/luks.c b/util-linux/volume_id/luks.c
index f9b3766..42bf876 100644
--- a/util-linux/volume_id/luks.c
+++ b/util-linux/volume_id/luks.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_LUKS) += luks.o
+
+//config:
+//config:config FEATURE_VOLUMEID_LUKS
+//config: bool "luks filesystem"
+//config: default y
+//config: depends on VOLUMEID
+//config: help
+//config: TODO
+//config:
+
#include "volume_id_internal.h"
#define LUKS_MAGIC_L 6
diff --git a/util-linux/volume_id/nilfs.c b/util-linux/volume_id/nilfs.c
index b88a9e4..f3a9ef5 100644
--- a/util-linux/volume_id/nilfs.c
+++ b/util-linux/volume_id/nilfs.c
@@ -19,6 +19,26 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_NILFS) += nilfs.o
+
+//config:
+//config:config FEATURE_VOLUMEID_NILFS
+//config: bool "nilfs filesystem"
+//config: default y
+//config: depends on VOLUMEID
+//config: help
+//config: NILFS is a New Implementation of a Log-Structured File System (LFS)
+//config: that supports continuous snapshots. This provides features like
+//config: versioning of the entire filesystem, restoration of files that
+//config: were deleted a few minutes ago. NILFS keeps consistency like
+//config: conventional LFS, so it provides quick recovery after system crashes.
+//config:
+//config: The possible use of NILFS includes versioning, tamper detection,
+//config: SOX compliance logging, and so forth. It can serve as an alternative
+//config: filesystem for Linux desktop environment, or as a basis of advanced
+//config: storage appliances.
+//config:
+
#include "volume_id_internal.h"
#define NILFS_UUID_SIZE 16
diff --git a/util-linux/volume_id/ntfs.c b/util-linux/volume_id/ntfs.c
index 0444e54..46f687a 100644
--- a/util-linux/volume_id/ntfs.c
+++ b/util-linux/volume_id/ntfs.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_NTFS) += ntfs.o
+
+//config:
+//config:config FEATURE_VOLUMEID_NTFS
+//config: bool "ntfs filesystem"
+//config: default y
+//config: depends on VOLUMEID
+//config: help
+//config: TODO
+//config:
+
#include "volume_id_internal.h"
struct ntfs_super_block {
diff --git a/util-linux/volume_id/ocfs2.c b/util-linux/volume_id/ocfs2.c
index fcdb151..415e0bf 100644
--- a/util-linux/volume_id/ocfs2.c
+++ b/util-linux/volume_id/ocfs2.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_OCFS2) += ocfs2.o
+
+//config:
+//config:config FEATURE_VOLUMEID_OCFS2
+//config: bool "ocfs2 filesystem"
+//config: default y
+//config: depends on VOLUMEID
+//config: help
+//config: TODO
+//config:
+
#include "volume_id_internal.h"
/* All these values are taken from ocfs2-tools's ocfs2_fs.h */
diff --git a/util-linux/volume_id/reiserfs.c b/util-linux/volume_id/reiserfs.c
index 67b4a18..24979fb 100644
--- a/util-linux/volume_id/reiserfs.c
+++ b/util-linux/volume_id/reiserfs.c
@@ -19,6 +19,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_REISERFS) += reiserfs.o
+
+//config:
+//config:config FEATURE_VOLUMEID_REISERFS
+//config: bool "Reiser filesystem"
+//config: default y
+//config: depends on VOLUMEID
+//config: help
+//config: TODO
+//config:
+
#include "volume_id_internal.h"
struct reiserfs_super_block {
diff --git a/util-linux/volume_id/romfs.c b/util-linux/volume_id/romfs.c
index 15653be..4754fdb 100644
--- a/util-linux/volume_id/romfs.c
+++ b/util-linux/volume_id/romfs.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_ROMFS) += romfs.o
+
+//config:
+//config:config FEATURE_VOLUMEID_ROMFS
+//config: bool "romfs filesystem"
+//config: default y
+//config: depends on VOLUMEID
+//config: help
+//config: TODO
+//config:
+
#include "volume_id_internal.h"
struct romfs_super {
diff --git a/util-linux/volume_id/squashfs.c b/util-linux/volume_id/squashfs.c
index c5b4f9c..079b6cc 100644
--- a/util-linux/volume_id/squashfs.c
+++ b/util-linux/volume_id/squashfs.c
@@ -8,6 +8,18 @@
//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_SQUASHFS) += squashfs.o
+//config:
+//config:config FEATURE_VOLUMEID_SQUASHFS
+//config: bool "SquashFS filesystem"
+//config: default y
+//config: depends on VOLUMEID && FEATURE_BLKID_TYPE
+//config: help
+//config: Squashfs is a compressed read-only filesystem for Linux. Squashfs is
+//config: intended for general read-only filesystem use and in constrained block
+//config: device/memory systems (e.g. embedded systems) where low overhead is
+//config: needed.
+//config:
+
#include "volume_id_internal.h"
struct squashfs_superblock {
diff --git a/util-linux/volume_id/sysv.c b/util-linux/volume_id/sysv.c
index 6eb9646..7b4b536 100644
--- a/util-linux/volume_id/sysv.c
+++ b/util-linux/volume_id/sysv.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_SYSV) += sysv.o
+
+//config:
+//config:config FEATURE_VOLUMEID_SYSV
+//config: bool "sysv filesystem"
+//config: default y
+//config: depends on VOLUMEID
+//config: help
+//config: TODO
+//config:
+
#include "volume_id_internal.h"
#define SYSV_NICINOD 100
diff --git a/util-linux/volume_id/udf.c b/util-linux/volume_id/udf.c
index d3747fb..9214545 100644
--- a/util-linux/volume_id/udf.c
+++ b/util-linux/volume_id/udf.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_UDF) += udf.o
+
+//config:
+//config:config FEATURE_VOLUMEID_UDF
+//config: bool "udf filesystem"
+//config: default y
+//config: depends on VOLUMEID
+//config: help
+//config: TODO
+//config:
+
#include "volume_id_internal.h"
struct volume_descriptor {
diff --git a/util-linux/volume_id/unused_highpoint.c b/util-linux/volume_id/unused_highpoint.c
index 17b7b32..7231a1d 100644
--- a/util-linux/volume_id/unused_highpoint.c
+++ b/util-linux/volume_id/unused_highpoint.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_HIGHPOINTRAID) += highpoint.o
+
+//config:
+//config:### config FEATURE_VOLUMEID_HIGHPOINTRAID
+//config:### bool "highpoint raid"
+//config:### default y
+//config:### depends on VOLUMEID
+//config:### help
+//config:### TODO
+//config:
+
#include "volume_id_internal.h"
struct hpt37x_meta {
diff --git a/util-linux/volume_id/unused_hpfs.c b/util-linux/volume_id/unused_hpfs.c
index 4429524..a87c89f 100644
--- a/util-linux/volume_id/unused_hpfs.c
+++ b/util-linux/volume_id/unused_hpfs.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_HPFS) += hpfs.o
+
+//config:
+//config:### config FEATURE_VOLUMEID_HPFS
+//config:### bool "hpfs filesystem"
+//config:### default y
+//config:### depends on VOLUMEID
+//config:### help
+//config:### TODO
+//config:
+
#include "volume_id_internal.h"
struct hpfs_super {
diff --git a/util-linux/volume_id/unused_isw_raid.c b/util-linux/volume_id/unused_isw_raid.c
index 7ab47b3..851bd2f 100644
--- a/util-linux/volume_id/unused_isw_raid.c
+++ b/util-linux/volume_id/unused_isw_raid.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_ISWRAID) += isw_raid.o
+
+//config:
+//config:### config FEATURE_VOLUMEID_ISWRAID
+//config:### bool "intel raid"
+//config:### default y
+//config:### depends on VOLUMEID
+//config:### help
+//config:### TODO
+//config:
+
#include "volume_id_internal.h"
struct isw_meta {
diff --git a/util-linux/volume_id/unused_lsi_raid.c b/util-linux/volume_id/unused_lsi_raid.c
index e6cc8ed..52d68de 100644
--- a/util-linux/volume_id/unused_lsi_raid.c
+++ b/util-linux/volume_id/unused_lsi_raid.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_LSIRAID) += lsi_raid.o
+
+//config:
+//config:### config FEATURE_VOLUMEID_LSIRAID
+//config:### bool "lsi raid"
+//config:### default y
+//config:### depends on VOLUMEID
+//config:### help
+//config:### TODO
+//config:
+
#include "volume_id_internal.h"
struct lsi_meta {
diff --git a/util-linux/volume_id/unused_lvm.c b/util-linux/volume_id/unused_lvm.c
index 2206498..08fa052 100644
--- a/util-linux/volume_id/unused_lvm.c
+++ b/util-linux/volume_id/unused_lvm.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_LVM) += lvm.o
+
+//config:
+//config:### config FEATURE_VOLUMEID_LVM
+//config:### bool "lvm"
+//config:### default y
+//config:### depends on VOLUMEID
+//config:### help
+//config:### TODO
+//config:
+
#include "volume_id_internal.h"
struct lvm1_super_block {
diff --git a/util-linux/volume_id/unused_mac.c b/util-linux/volume_id/unused_mac.c
index e8deb97..a1a53d1 100644
--- a/util-linux/volume_id/unused_mac.c
+++ b/util-linux/volume_id/unused_mac.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_MAC) += mac.o
+
+//config:
+//config:### config FEATURE_VOLUMEID_MAC
+//config:### bool "mac filesystem"
+//config:### default y
+//config:### depends on VOLUMEID
+//config:### help
+//config:### TODO
+//config:
+
#include "volume_id_internal.h"
struct mac_driver_desc {
diff --git a/util-linux/volume_id/unused_minix.c b/util-linux/volume_id/unused_minix.c
index a3e1077..50afd5c 100644
--- a/util-linux/volume_id/unused_minix.c
+++ b/util-linux/volume_id/unused_minix.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_MINIX) += minix.o
+
+//config:
+//config:### config FEATURE_VOLUMEID_MINIX
+//config:### bool "minix filesystem"
+//config:### default y
+//config:### depends on VOLUMEID
+//config:### help
+//config:### TODO
+//config:
+
#include "volume_id_internal.h"
struct minix_super_block {
diff --git a/util-linux/volume_id/unused_msdos.c b/util-linux/volume_id/unused_msdos.c
index 2e8cb19..5ebaa3e 100644
--- a/util-linux/volume_id/unused_msdos.c
+++ b/util-linux/volume_id/unused_msdos.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_MSDOS) += msdos.o
+
+//config:
+//config:### config FEATURE_VOLUMEID_MSDOS
+//config:### bool "msdos filesystem"
+//config:### default y
+//config:### depends on VOLUMEID
+//config:### help
+//config:### TODO
+//config:
+
#include "volume_id_internal.h"
struct msdos_partition_entry {
@@ -165,7 +176,7 @@ int FAST_FUNC volume_id_probe_msdos_part_table(struct volume_id *id, uint64_t of
if (id->partition_count < 4)
id->partition_count = 4;
- p = &id->partitions[id->partition_count];
+// p = &id->partitions[id->partition_count];
// if (is_raid(part[i].sys_ind))
// volume_id_set_usage_part(p, VOLUME_ID_RAID);
diff --git a/util-linux/volume_id/unused_nvidia_raid.c b/util-linux/volume_id/unused_nvidia_raid.c
index 9e84729..d99a108 100644
--- a/util-linux/volume_id/unused_nvidia_raid.c
+++ b/util-linux/volume_id/unused_nvidia_raid.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_NVIDIARAID) += nvidia_raid.o
+
+//config:
+//config:### config FEATURE_VOLUMEID_NVIDIARAID
+//config:### bool "nvidia raid"
+//config:### default y
+//config:### depends on VOLUMEID
+//config:### help
+//config:### TODO
+//config:
+
#include "volume_id_internal.h"
struct nvidia_meta {
diff --git a/util-linux/volume_id/unused_promise_raid.c b/util-linux/volume_id/unused_promise_raid.c
index 0b0d006..cebebe3 100644
--- a/util-linux/volume_id/unused_promise_raid.c
+++ b/util-linux/volume_id/unused_promise_raid.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_PROMISERAID) += promise_raid.o
+
+//config:
+//config:### config FEATURE_VOLUMEID_PROMISERAID
+//config:### bool "promise raid"
+//config:### default y
+//config:### depends on VOLUMEID
+//config:### help
+//config:### TODO
+//config:
+
#include "volume_id_internal.h"
struct promise_meta {
diff --git a/util-linux/volume_id/unused_silicon_raid.c b/util-linux/volume_id/unused_silicon_raid.c
index 878b881..40c8faa 100644
--- a/util-linux/volume_id/unused_silicon_raid.c
+++ b/util-linux/volume_id/unused_silicon_raid.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_SILICONRAID) += silicon_raid.o
+
+//config:
+//config:### config FEATURE_VOLUMEID_SILICONRAID
+//config:### bool "silicon raid"
+//config:### default y
+//config:### depends on VOLUMEID
+//config:### help
+//config:### TODO
+//config:
+
#include "volume_id_internal.h"
struct silicon_meta {
diff --git a/util-linux/volume_id/unused_ufs.c b/util-linux/volume_id/unused_ufs.c
index 9f925d9..d33c10f 100644
--- a/util-linux/volume_id/unused_ufs.c
+++ b/util-linux/volume_id/unused_ufs.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_UFS) += ufs.o
+
+//config:
+//config:### config FEATURE_VOLUMEID_UFS
+//config:### bool "ufs filesystem"
+//config:### default y
+//config:### depends on VOLUMEID
+//config:### help
+//config:### TODO
+//config:
+
#include "volume_id_internal.h"
struct ufs_super_block {
diff --git a/util-linux/volume_id/unused_via_raid.c b/util-linux/volume_id/unused_via_raid.c
index a11eec1..258f93a 100644
--- a/util-linux/volume_id/unused_via_raid.c
+++ b/util-linux/volume_id/unused_via_raid.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_VIARAID) += via_raid.o
+
+//config:
+//config:### config FEATURE_VOLUMEID_VIARAID
+//config:### bool "via raid"
+//config:### default y
+//config:### depends on VOLUMEID
+//config:### help
+//config:### TODO
+//config:
+
#include "volume_id_internal.h"
struct via_meta {
diff --git a/util-linux/volume_id/volume_id.c b/util-linux/volume_id/volume_id.c
index e928af5..66690c2 100644
--- a/util-linux/volume_id/volume_id.c
+++ b/util-linux/volume_id/volume_id.c
@@ -18,6 +18,8 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:lib-$(CONFIG_VOLUMEID) += volume_id.o util.o
+
#include "volume_id_internal.h"
@@ -136,6 +138,9 @@ static const probe_fptr fs2[] = {
#if ENABLE_FEATURE_VOLUMEID_UFS
volume_id_probe_ufs,
#endif
+#if ENABLE_FEATURE_VOLUMEID_F2FS
+ volume_id_probe_f2fs,
+#endif
#if ENABLE_FEATURE_VOLUMEID_NILFS
volume_id_probe_nilfs,
#endif
diff --git a/util-linux/volume_id/volume_id_internal.h b/util-linux/volume_id/volume_id_internal.h
index 3f02bd5..6e2dbd7 100644
--- a/util-linux/volume_id/volume_id_internal.h
+++ b/util-linux/volume_id/volume_id_internal.h
@@ -96,44 +96,24 @@ void FAST_FUNC free_volume_id(struct volume_id *id);
/* size of seek buffer, FAT cluster is 32k max */
#define SEEK_BUFFER_SIZE 0x10000
-#define bswap16(x) (uint16_t) ( \
- (((uint16_t)(x) & 0x00ffu) << 8) | \
- (((uint16_t)(x) & 0xff00u) >> 8))
-
-#define bswap32(x) (uint32_t) ( \
- (((uint32_t)(x) & 0xff000000u) >> 24) | \
- (((uint32_t)(x) & 0x00ff0000u) >> 8) | \
- (((uint32_t)(x) & 0x0000ff00u) << 8) | \
- (((uint32_t)(x) & 0x000000ffu) << 24))
-
-#define bswap64(x) (uint64_t) ( \
- (((uint64_t)(x) & 0xff00000000000000ull) >> 56) | \
- (((uint64_t)(x) & 0x00ff000000000000ull) >> 40) | \
- (((uint64_t)(x) & 0x0000ff0000000000ull) >> 24) | \
- (((uint64_t)(x) & 0x000000ff00000000ull) >> 8) | \
- (((uint64_t)(x) & 0x00000000ff000000ull) << 8) | \
- (((uint64_t)(x) & 0x0000000000ff0000ull) << 24) | \
- (((uint64_t)(x) & 0x000000000000ff00ull) << 40) | \
- (((uint64_t)(x) & 0x00000000000000ffull) << 56))
-
#if BB_LITTLE_ENDIAN
-#define le16_to_cpu(x) (x)
-#define le32_to_cpu(x) (x)
-#define le64_to_cpu(x) (x)
-#define be16_to_cpu(x) bswap16(x)
-#define be32_to_cpu(x) bswap32(x)
-#define cpu_to_le16(x) (x)
-#define cpu_to_le32(x) (x)
-#define cpu_to_be32(x) bswap32(x)
+# define le16_to_cpu(x) (uint16_t)(x)
+# define le32_to_cpu(x) (uint32_t)(x)
+# define le64_to_cpu(x) (uint64_t)(x)
+# define be16_to_cpu(x) (uint16_t)(bswap_16(x))
+# define be32_to_cpu(x) (uint32_t)(bswap_32(x))
+# define cpu_to_le16(x) (uint16_t)(x)
+# define cpu_to_le32(x) (uint32_t)(x)
+# define cpu_to_be32(x) (uint32_t)(bswap_32(x))
#else
-#define le16_to_cpu(x) bswap16(x)
-#define le32_to_cpu(x) bswap32(x)
-#define le64_to_cpu(x) bswap64(x)
-#define be16_to_cpu(x) (x)
-#define be32_to_cpu(x) (x)
-#define cpu_to_le16(x) bswap16(x)
-#define cpu_to_le32(x) bswap32(x)
-#define cpu_to_be32(x) (x)
+# define le16_to_cpu(x) (uint16_t)(bswap_16(x))
+# define le32_to_cpu(x) (uint32_t)(bswap_32(x))
+# define le64_to_cpu(x) (uint64_t)(bb_bswap_64(x))
+# define be16_to_cpu(x) (uint16_t)(x)
+# define be32_to_cpu(x) (uint32_t)(x)
+# define cpu_to_le16(x) (uint16_t)(bswap_16(x))
+# define cpu_to_le32(x) (uint32_t)(bswap_32(x))
+# define cpu_to_be32(x) (uint32_t)(x)
#endif
/* volume_id_set_uuid(id,buf,fmt) assumes size of uuid buf
@@ -215,6 +195,8 @@ int FAST_FUNC volume_id_probe_luks(struct volume_id *id /*,uint64_t off*/);
//int FAST_FUNC volume_id_probe_msdos_part_table(struct volume_id *id /*,uint64_t off*/);
+int FAST_FUNC volume_id_probe_f2fs(struct volume_id *id /*,uint64_t off*/);
+
int FAST_FUNC volume_id_probe_nilfs(struct volume_id *id /*,uint64_t off*/);
int FAST_FUNC volume_id_probe_ntfs(struct volume_id *id /*,uint64_t off*/);
diff --git a/util-linux/volume_id/xfs.c b/util-linux/volume_id/xfs.c
index 8474602..5eefc20 100644
--- a/util-linux/volume_id/xfs.c
+++ b/util-linux/volume_id/xfs.c
@@ -18,6 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_XFS) += xfs.o
+
+//config:
+//config:config FEATURE_VOLUMEID_XFS
+//config: bool "xfs filesystem"
+//config: default y
+//config: depends on VOLUMEID
+//config: help
+//config: TODO
+//config:
+
#include "volume_id_internal.h"
struct xfs_super_block {