View Issue Details

IDProjectCategoryView StatusLast Update
0000624LDMud 3.3Portabilitypublic2009-05-06 14:25
Reporterwedsall Assigned Tozesstra  
PrioritylowSeveritycrashReproducibilityalways
Status resolvedResolutionfixed 
Platformx86_64OSGNU/LinuxOS Version2.6.22.5
Product Version3.3.718 
Target Version3.3.719Fixed in Version3.3.719 
Summary0000624: Crash in included crypt() implementation on platforms with sizeof(long)==8 (e.g. x86_64)
DescriptionHello!
 Well, there isn't much information to go by but I'm trying to compile on 64 bit suse 10.3 and not having luck.

 I was able to get the bare bones dev version of the game to start up and I could connect, but it disconnects as I enter my password. There is a small bit of debug information after this password is entered, it is pasted below in additional information.

 As always, thank you all for the hard work.
Additional InformationLinux df 2.6.22.5-31-default 0000001 SMP 2007/09/21 22:29:00 UTC x86_64 x86_64 x86_64 GNU/Linux

Apr 13 23:06:01 df kernel: ldmud[8496]: segfault at 00002b4d97045874 rip 00000000004930c8 rsp 00007fff14b71860 error 4

df:/home/dragonfire/logs # more 04-13-2009-22\:36\:01.DF.err
2009.04.13 22:35:02 [xerq] XERQ Apr 13 2009: Path 'erq', debuglevel 0
2009.04.13 22:35:02 [xerq] Demon started
[xerq] read: No such device or address
2009.04.13 22:35:02 [xerq] Demon exiting.

df:/home/dragonfire/logs # more 04-13-2009-22\:36\:01.debug.log
2009.04.13 22:35:02 LDMud 3.3.718 (Build 2483) (stable)
2009.04.13 22:35:02 mySQL 5.0.45
2009.04.13 22:35:02 Attempting to start erq '/home/dragonfire/bin/erq'.
2009.04.13 22:35:02 Hostname 'df' address '127.0.0.1'
2009.04.13 22:35:02 UDP recv-socket requested for port: 2000

Here's what i'm using for a configuration file. I tried the cflags settings listed in the INSTALL file but this produced the same results.

#!/bin/sh
#
# Settings for a compat-mode driver for Dragonfire mud.
# by Nostradamus
# configure will strip this part from the script.
# --with-malloc=ptmalloc \
# --enable-share-variables=yes \
# --enable-use-pthreads=yes \
# export CFLAGS="-m64 -mtune=core2"
# export LDFLAGS="-m64 -mtune=core2"
# export EXTRA_CFLAGS=$CFLAGS

#--enable-use-mysql=/usr/lib/mysql \

./configure \
--prefix=/home/dragonfire \
--bindir=/home/dragonfire/bin \
--libdir=/home/dragonfire/lib \
--libexec=/home/dragonfire/libexec \
--enable-compat-mode \
--enable-erq=xerq \
--enable-lpc-nosave \
--enable-dynamic-costs \
--enable-opcprof \
--enable-verbose-opcprof \
--enable-use-structs \
--enable-use-new-inlines=yes \
--enable-use-system-crypt=no \
--enable-use-deprecated=no \
--enable-malloc-trace=yes \
--enable-use-pcre=yes \
--enable-use-alists=yes \
--enable-use-pgsql=no \
--enable-use-mccp=yes \
--enable-share-variables=no \
--enable-filename-spaces=yes \
--enable-malloc-lpc-trace=yes \
--with-read-file-max-size=200000 \
--with-max-byte-transfer=200000 \
--without-wizlist-file \
--with-optimize=no \
--with-master-name=secure/master \
--with-time-to-reset=900 \
--with-portno=1998 \
--with-udp-port=2000 \
--with-max-cost=2100000 \
--with-max-malloced=0 \
--with-min-malloced=0x80000 \
--with-min-small-malloced=0x80000 \
--with-otable-size=8192 \
--with-htable-size=32768 \
--with-apply-cache-bits=14 \
--with-time-to-swap=0 \
--with-time-to-swap-variables=0 \
--with-max_net_connects=100 \
--enable-debug \
--with-erq-debug \
--with-swap-file=DF_SWAP



This is written to the debug log after entering password info:
2009.04.13 23:10:34 Error in master_ob->preload()
2009.04.13 23:10:34 LDMud ready for users.
2009.04.13 23:10:43 New player at socket 7.
2009.04.13 23:10:43 Dont END OF RECORD
2009.04.13 23:10:43 Do STATUS
2009.04.13 23:10:43 Wont ENVIRON
2009.04.13 23:10:43 Will NAWS
2009.04.13 23:10:43 Will NEWENV
2009.04.13 23:10:43 Dont MUD COMPRESS2
2009.04.13 23:10:43 Will TERMINAL TYPE
2009.04.13 23:10:43 Will TSPEED
2009.04.13 23:10:43 Wont XDISPLOC
2009.04.13 23:10:43 Dont MUD EXTENSION
2009.04.13 23:10:43 Do SUPPRESS GO AHEAD
2009.04.13 23:10:43 Will LINEMODE
2009.04.13 23:10:43 Will BINARY
2009.04.13 23:10:44 Do ECHO

TagsNo tags attached.
Attached Files
bt.full (11,051 bytes)
bt.full-dev (3,919 bytes)
0001-Removed-support-for-obsolete-platforms-in-hosts.patch (254,566 bytes)   
From 53e7e56e2777e488e567269575ba1a426ff56571 Mon Sep 17 00:00:00 2001
From: zesstra <zesstra@zesstra.de>
Date: Tue, 14 Apr 2009 21:13:54 +0200
Subject: [PATCH 01/12] Removed support for obsolete platforms in hosts/

The code in hosts/ was not maintained for a long time.
Probably some parts don't even compile on current releases of the target
platform or have runtime issues (see also
http://mantis.bearnip.com/view.php?id=624).
Anyway, we developers don't have any of the platforms available for
development.

Signed-off-by: zesstra <zesstra@zesstra.de>
---
 src/Makefile.in                   |  138 +++-----
 src/autoconf/configure.in         |    4 -
 src/config.h.in                   |   10 -
 src/hosts/GnuWin32/GnuWin32.h     |   35 --
 src/hosts/GnuWin32/socket.c       |   50 ---
 src/hosts/GnuWin32/socket.h       |   50 ---
 src/hosts/README                  |    4 -
 src/hosts/amiga/README            |   15 -
 src/hosts/amiga/README.Amiga      |  151 -------
 src/hosts/amiga/README.Amiga.info |  Bin 482 -> 0 bytes
 src/hosts/amiga/StartMUD          |   80 ----
 src/hosts/amiga/StartMUD.info     |  Bin 1780 -> 0 bytes
 src/hosts/amiga/config.h          |  547 --------------------------
 src/hosts/amiga/ldmud.info        |  Bin 628 -> 0 bytes
 src/hosts/amiga/machine.h         |  265 -------------
 src/hosts/be/Makefile             |  775 -------------------------------------
 src/hosts/be/be.h                 |   26 --
 src/hosts/be/beyacc               |   10 -
 src/hosts/be/config.h             |  540 --------------------------
 src/hosts/be/driver.r             |   10 -
 src/hosts/be/driver.rsrc          |  Bin 3368 -> 0 bytes
 src/hosts/be/icon-16x16.raw       |  Bin 256 -> 0 bytes
 src/hosts/be/icon-32x32.raw       |  Bin 1024 -> 0 bytes
 src/hosts/be/machine.h            |  305 ---------------
 src/hosts/be/set-version          |   68 ----
 src/hosts/be/socketinc.h          |   24 --
 src/hosts/crypt.c                 |  618 -----------------------------
 src/hosts/defines.txt             |   66 ----
 src/hosts/unix.h                  |   42 --
 src/hosts/win32/Makefile          |  410 --------------------
 src/hosts/win32/Readme.rtf        |  Bin 3660 -> 0 bytes
 src/hosts/win32/config.h          |  548 --------------------------
 src/hosts/win32/machine.h         |  270 -------------
 src/hosts/win32/tubmud.bmp        |  Bin 101470 -> 0 bytes
 src/machine.h.in                  |   12 +-
 src/port.c                        |   13 -
 src/port.h                        |   16 +-
 src/settings/default              |   10 -
 38 files changed, 55 insertions(+), 5057 deletions(-)
 delete mode 100644 src/hosts/GnuWin32/GnuWin32.h
 delete mode 100644 src/hosts/GnuWin32/socket.c
 delete mode 100644 src/hosts/GnuWin32/socket.h
 delete mode 100644 src/hosts/README
 delete mode 100644 src/hosts/amiga/README
 delete mode 100644 src/hosts/amiga/README.Amiga
 delete mode 100644 src/hosts/amiga/README.Amiga.info
 delete mode 100644 src/hosts/amiga/StartMUD
 delete mode 100644 src/hosts/amiga/StartMUD.info
 delete mode 100644 src/hosts/amiga/config.h
 delete mode 100644 src/hosts/amiga/ldmud.info
 delete mode 100644 src/hosts/amiga/machine.h
 delete mode 100644 src/hosts/be/Makefile
 delete mode 100644 src/hosts/be/be.h
 delete mode 100755 src/hosts/be/beyacc
 delete mode 100644 src/hosts/be/config.h
 delete mode 100644 src/hosts/be/driver.r
 delete mode 100644 src/hosts/be/driver.rsrc
 delete mode 100644 src/hosts/be/icon-16x16.raw
 delete mode 100644 src/hosts/be/icon-32x32.raw
 delete mode 100644 src/hosts/be/machine.h
 delete mode 100755 src/hosts/be/set-version
 delete mode 100644 src/hosts/be/socketinc.h
 delete mode 100644 src/hosts/crypt.c
 delete mode 100644 src/hosts/defines.txt
 delete mode 100644 src/hosts/unix.h
 delete mode 100644 src/hosts/win32/Makefile
 delete mode 100644 src/hosts/win32/Readme.rtf
 delete mode 100644 src/hosts/win32/config.h
 delete mode 100644 src/hosts/win32/machine.h
 delete mode 100644 src/hosts/win32/tubmud.bmp

diff --git a/src/Makefile.in b/src/Makefile.in
index 38c9faf..2ff8bb0 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -242,17 +242,7 @@ depend: $(SRC) $(GENSRC)
           echo mkdepend utility not available.; \
         fi"
 
-.PHONY dependall: depend depend-generic
-
-depend-generic: $(SRC) $(GENSRC)
-	@$(SHELL) -ec "if type mkdepend > /dev/null 2>&1; then \
-          echo Updating dependencies in hosts/be/Makefile.; \
-          mkdepend $(SKELETON) -I. -Ipcre -Iptmalloc $(EXCEPT) -m -p .c:$$\(OBJ\)/%n.o -fhosts/be/Makefile; \
-          mkdepend $(SKELETON) -I. -Ipcre -Iptmalloc $(EXCEPT) $(SELECT) -m -p .c:$$\(OBJ\)/%n.o -fhosts/be/Makefile; \
-        else\
-          echo mkdepend utility not available.; \
-        fi"
-
+.PHONY dependall: depend
 
 #--------------------------------------------------------
 # Dependencies, manual and automatic.
@@ -260,20 +250,18 @@ depend-generic: $(SRC) $(GENSRC)
 # --- DO NOT MODIFY THIS LINE -- AUTO-DEPENDS FOLLOW ---
 access_check.o : xalloc.h filestat.h comm.h access_check.h driver.h \
     svalue.h strfuns.h pkg-tls.h simulate.h typedefs.h config.h port.h \
-    sent.h bytecode.h hosts/unix.h hosts/be/be.h machine.h
+    sent.h bytecode.h machine.h
 
 actions.o : ../mudlib/sys/driver_hook.h ../mudlib/sys/commands.h xalloc.h \
     wiz_list.h svalue.h simulate.h sent.h stdstrings.h object.h mstrings.h \
     mapping.h interpret.h efuns.h dumpstat.h comm.h closure.h backend.h \
     array.h actions.h my-alloca.h typedefs.h driver.h strfuns.h bytecode.h \
-    hash.h pkg-tls.h main.h port.h config.h hosts/unix.h hosts/be/be.h \
-    machine.h
+    hash.h pkg-tls.h main.h port.h config.h machine.h
 
 array.o : i-svalue_cmp.h xalloc.h wiz_list.h swap.h svalue.h simulate.h \
     stdstrings.h object.h mstrings.h mempools.h mapping.h main.h \
     interpret.h closure.h backend.h array.h my-alloca.h typedefs.h driver.h \
-    strfuns.h sent.h bytecode.h hash.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
+    strfuns.h sent.h bytecode.h hash.h port.h config.h machine.h
 
 backend.o : ../mudlib/sys/debug_message.h ../mudlib/sys/driver_hook.h \
     i-eval_cost.h xalloc.h wiz_list.h swap.h svalue.h stdstrings.h \
@@ -281,23 +269,23 @@ backend.o : ../mudlib/sys/debug_message.h ../mudlib/sys/driver_hook.h \
     main.h lex.h interpret.h heartbeat.h gcollect.h filestat.h exec.h ed.h \
     comm.h closure.h call_out.h array.h actions.h backend.h my-alloca.h \
     typedefs.h driver.h strfuns.h sent.h bytecode.h hash.h pkg-tls.h port.h \
-    config.h hosts/unix.h hosts/be/be.h machine.h
+    config.h machine.h
 
 bitstrings.o : xalloc.h svalue.h simulate.h mstrings.h interpret.h \
     bitstrings.h typedefs.h driver.h strfuns.h sent.h bytecode.h hash.h \
-    backend.h port.h config.h main.h hosts/unix.h hosts/be/be.h machine.h
+    backend.h port.h config.h main.h machine.h
 
 call_out.o : ../mudlib/sys/debug_info.h i-eval_cost.h xalloc.h wiz_list.h \
     swap.h svalue.h strfuns.h stdstrings.h simulate.h object.h mstrings.h \
     main.h interpret.h gcollect.h exec.h comm.h closure.h backend.h array.h \
     actions.h call_out.h typedefs.h driver.h sent.h bytecode.h hash.h \
-    pkg-tls.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
+    pkg-tls.h port.h config.h machine.h
 
 closure.o : i-svalue_cmp.h xalloc.h switch.h swap.h svalue.h structs.h \
     stdstrings.h simul_efun.h simulate.h prolang.h object.h mstrings.h \
     main.h lex.h interpret.h instrs.h exec.h backend.h array.h closure.h \
     my-alloca.h typedefs.h driver.h strfuns.h hash.h ptrtable.h sent.h \
-    bytecode.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
+    bytecode.h port.h config.h machine.h
 
 comm.o : util/erq/erq.h ../mudlib/sys/input_to.h \
     ../mudlib/sys/driver_hook.h ../mudlib/sys/comm.h i-eval_cost.h xalloc.h \
@@ -306,18 +294,17 @@ comm.o : util/erq/erq.h ../mudlib/sys/input_to.h \
     gcollect.h filestat.h exec.h ed.h closure.h array.h actions.h \
     access_check.h comm.h ../mudlib/sys/telnet.h my-alloca.h typedefs.h \
     driver.h strfuns.h bytecode.h hash.h backend.h config.h port.h \
-    hosts/unix.h hosts/be/be.h machine.h
+    machine.h
 
 dumpstat.o : xalloc.h svalue.h structs.h stdstrings.h simulate.h ptrtable.h \
     object.h mstrings.h mapping.h instrs.h filestat.h exec.h closure.h \
     array.h dumpstat.h typedefs.h driver.h strfuns.h hash.h sent.h \
-    bytecode.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
+    bytecode.h port.h config.h machine.h
 
 ed.o : ../mudlib/sys/regexp.h xalloc.h svalue.h stdstrings.h simulate.h \
     object.h mstrings.h mregex.h main.h lex.h interpret.h gcollect.h \
     filestat.h comm.h actions.h ed.h typedefs.h driver.h strfuns.h sent.h \
-    bytecode.h hash.h backend.h pkg-tls.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
+    bytecode.h hash.h backend.h pkg-tls.h port.h config.h machine.h
 
 efuns.o : ../mudlib/sys/time.h ../mudlib/sys/strings.h \
     ../mudlib/sys/regexp.h ../mudlib/sys/objectinfo.h \
@@ -328,13 +315,12 @@ efuns.o : ../mudlib/sys/time.h ../mudlib/sys/strings.h \
     heartbeat.h exec.h dumpstat.h comm.h closure.h call_out.h backend.h \
     array.h actions.h efuns.h my-rusage.h my-alloca.h typedefs.h driver.h \
     hash.h sent.h bytecode.h my-stdint.h pkg-tls.h port.h config.h \
-    hosts/unix.h hosts/be/be.h machine.h
+    machine.h
 
 files.o : ../mudlib/sys/files.h xalloc.h svalue.h stdstrings.h simulate.h \
     mstrings.h mempools.h main.h lex.h interpret.h filestat.h comm.h \
     array.h files.h my-alloca.h typedefs.h driver.h strfuns.h sent.h \
-    bytecode.h hash.h backend.h pkg-tls.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
+    bytecode.h hash.h backend.h pkg-tls.h port.h config.h machine.h
 
 gcollect.o : ../mudlib/sys/driver_hook.h i-eval_cost.h xalloc.h wiz_list.h \
     swap.h structs.h stdstrings.h simul_efun.h simulate.h sent.h random.h \
@@ -342,8 +328,7 @@ gcollect.o : ../mudlib/sys/driver_hook.h i-eval_cost.h xalloc.h wiz_list.h \
     mregex.h mempools.h mapping.h main.h lex.h instrs.h interpret.h \
     heartbeat.h filestat.h ed.h comm.h closure.h call_out.h backend.h \
     array.h actions.h gcollect.h typedefs.h driver.h svalue.h strfuns.h \
-    hash.h exec.h bytecode.h pkg-tls.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
+    hash.h exec.h bytecode.h pkg-tls.h port.h config.h machine.h
 
 hash.o : hash.h
 
@@ -351,7 +336,7 @@ heartbeat.o : ../mudlib/sys/debug_info.h i-eval_cost.h xalloc.h wiz_list.h \
     svalue.h strfuns.h simulate.h sent.h object.h mstrings.h interpret.h \
     gcollect.h exec.h comm.h backend.h array.h actions.h heartbeat.h \
     typedefs.h driver.h bytecode.h hash.h pkg-tls.h main.h port.h config.h \
-    hosts/unix.h hosts/be/be.h machine.h
+    machine.h
 
 interpret.o : ../mudlib/sys/debug_info.h ../mudlib/sys/driver_hook.h \
     i-eval_cost.h xalloc.h wiz_list.h switch.h swap.h svalue.h structs.h \
@@ -360,52 +345,45 @@ interpret.o : ../mudlib/sys/debug_info.h ../mudlib/sys/driver_hook.h \
     filestat.h exec.h efuns.h ed.h comm.h closure.h call_out.h backend.h \
     array.h actions.h interpret.h my-alloca.h typedefs.h driver.h strfuns.h \
     hash.h ptrtable.h sent.h bytecode.h pkg-tls.h main.h port.h config.h \
-    hosts/unix.h hosts/be/be.h machine.h
+    machine.h
 
 lex.o : efun_defs.c ../mudlib/sys/driver_hook.h i-eval_cost.h xalloc.h \
     wiz_list.h svalue.h strfuns.h stdstrings.h simul_efun.h simulate.h \
     prolang.h patchlevel.h object.h mstrings.h mempools.h main.h lang.h \
     interpret.h instrs.h hash.h gcollect.h filestat.h exec.h comm.h \
     closure.h backend.h array.h lex.h my-alloca.h typedefs.h driver.h \
-    ptrtable.h sent.h bytecode.h pkg-tls.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
+    ptrtable.h sent.h bytecode.h pkg-tls.h port.h config.h machine.h
 
 main.o : ../mudlib/sys/regexp.h i-eval_cost.h pkg-mysql.h xalloc.h \
     wiz_list.h swap.h svalue.h stdstrings.h simul_efun.h simulate.h \
     random.h pkg-tls.h patchlevel.h otable.h object.h mstrings.h mregex.h \
     mempools.h mapping.h lex.h interpret.h gcollect.h filestat.h comm.h \
     array.h backend.h main.h my-alloca.h typedefs.h driver.h strfuns.h \
-    ptrtable.h exec.h sent.h bytecode.h hash.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
+    ptrtable.h exec.h sent.h bytecode.h hash.h port.h config.h machine.h
 
 mapping.o : i-svalue_cmp.h xalloc.h wiz_list.h svalue.h structs.h \
     simulate.h object.h mstrings.h main.h interpret.h gcollect.h closure.h \
     backend.h array.h mapping.h my-alloca.h typedefs.h driver.h strfuns.h \
-    hash.h exec.h sent.h bytecode.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
+    hash.h exec.h sent.h bytecode.h port.h config.h machine.h
 
-md5.o : strfuns.h md5.h machine.h typedefs.h driver.h port.h config.h \
-    hosts/unix.h hosts/be/be.h
+md5.o : strfuns.h md5.h machine.h typedefs.h driver.h port.h config.h
 
 mempools.o : ../mudlib/sys/debug_info.h xalloc.h svalue.h strfuns.h \
     simulate.h gcollect.h mempools.h driver.h typedefs.h sent.h bytecode.h \
-    port.h config.h hosts/unix.h hosts/be/be.h machine.h
+    port.h config.h machine.h
 
 mkfunc.o : make_func.c ../mudlib/sys/driver_hook.h hash.h exec.h \
-    my-alloca.h driver.h bytecode.h typedefs.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
+    my-alloca.h driver.h bytecode.h typedefs.h port.h config.h machine.h
 
 mregex.o : ../mudlib/sys/regexp.h ../mudlib/sys/driver_hook.h \
     ../mudlib/sys/debug_info.h xalloc.h svalue.h strfuns.h simulate.h \
     regexp.h pkg-pcre.h mstrings.h main.h interpret.h hash.h gcollect.h \
     comm.h mregex.h driver.h typedefs.h sent.h bytecode.h pcre/pcre.h \
-    backend.h pkg-tls.h port.h config.h hosts/unix.h hosts/be/be.h \
-    machine.h
+    backend.h pkg-tls.h port.h config.h machine.h
 
 mstrings.o : ../mudlib/sys/debug_info.h xalloc.h svalue.h strfuns.h \
     stdstrings.h simulate.h main.h hash.h gcollect.h mstrings.h driver.h \
-    typedefs.h sent.h bytecode.h port.h config.h hosts/unix.h hosts/be/be.h \
-    machine.h
+    typedefs.h sent.h bytecode.h port.h config.h machine.h
 
 object.o : ../mudlib/sys/inherit_list.h ../mudlib/sys/include_list.h \
     ../mudlib/sys/functionlist.h ../mudlib/sys/driver_hook.h xalloc.h \
@@ -414,98 +392,88 @@ object.o : ../mudlib/sys/inherit_list.h ../mudlib/sys/include_list.h \
     mstrings.h mempools.h mapping.h main.h lex.h instrs.h interpret.h \
     filestat.h comm.h closure.h backend.h array.h actions.h object.h \
     my-alloca.h typedefs.h driver.h ../mudlib/sys/lpctypes.h hash.h exec.h \
-    bytecode.h pkg-tls.h port.h config.h hosts/unix.h hosts/be/be.h \
-    machine.h
+    bytecode.h pkg-tls.h port.h config.h machine.h
 
 otable.o : ../mudlib/sys/debug_info.h xalloc.h svalue.h simulate.h \
     strfuns.h object.h mstrings.h hash.h gcollect.h backend.h otable.h \
     typedefs.h driver.h sent.h bytecode.h main.h port.h config.h \
-    hosts/unix.h hosts/be/be.h machine.h
+    machine.h
 
 parse.o : xalloc.h wiz_list.h svalue.h stdstrings.h simulate.h object.h \
     mstrings.h main.h lex.h interpret.h gcollect.h array.h actions.h \
     parse.h typedefs.h driver.h strfuns.h sent.h bytecode.h hash.h \
-    backend.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
+    backend.h port.h config.h machine.h
 
 parser.o : lang.c ../mudlib/sys/driver_hook.h i-eval_cost.h xalloc.h \
     wiz_list.h switch.h swap.h svalue.h structs.h stdstrings.h simul_efun.h \
     simulate.h object.h mstrings.h mapping.h main.h lex.h instrs.h \
     interpret.h gcollect.h exec.h closure.h backend.h array.h prolang.h \
     my-alloca.h typedefs.h driver.h strfuns.h hash.h ptrtable.h sent.h \
-    bytecode.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
+    bytecode.h port.h config.h machine.h
 
 dftables.o : pcre/maketables.c pcre/internal.h pcre/pcre.h pcre/config.h
 
 pkg-alists.o : i-svalue_cmp.h xalloc.h svalue.h simulate.h mstrings.h \
     main.h interpret.h array.h my-alloca.h pkg-alists.h typedefs.h driver.h \
     closure.h strfuns.h sent.h bytecode.h hash.h backend.h port.h config.h \
-    hosts/unix.h hosts/be/be.h machine.h
+    machine.h
 
 pkg-idna.o : ../mudlib/sys/idn.h xalloc.h simulate.h mstrings.h interpret.h \
     typedefs.h pkg-idna.h driver.h svalue.h strfuns.h sent.h bytecode.h \
-    hash.h backend.h port.h config.h main.h hosts/unix.h hosts/be/be.h \
-    machine.h
+    hash.h backend.h port.h config.h main.h machine.h
 
 pkg-mccp.o : ../mudlib/sys/telnet.h xalloc.h svalue.h object.h mstrings.h \
     comm.h array.h pkg-mccp.h typedefs.h driver.h strfuns.h sent.h hash.h \
-    pkg-tls.h simulate.h port.h config.h bytecode.h hosts/unix.h \
-    hosts/be/be.h machine.h
+    pkg-tls.h simulate.h port.h config.h bytecode.h machine.h
 
 pkg-mysql.o : xalloc.h svalue.h stdstrings.h simulate.h mstrings.h main.h \
     instrs.h interpret.h array.h pkg-mysql.h my-alloca.h typedefs.h \
     driver.h strfuns.h sent.h bytecode.h hash.h exec.h backend.h port.h \
-    config.h hosts/unix.h hosts/be/be.h machine.h
+    config.h machine.h
 
 pkg-pcre.o : pcre/study.c pcre/maketables.c pcre/get.c pcre/pcre.c \
     simulate.h interpret.h pkg-pcre.h driver.h pcre/internal.h \
     pcre/chartables.c svalue.h strfuns.h sent.h bytecode.h typedefs.h \
-    backend.h pcre/pcre.h port.h config.h pcre/config.h main.h hosts/unix.h \
-    hosts/be/be.h machine.h
+    backend.h pcre/pcre.h port.h config.h pcre/config.h main.h machine.h
 
 pkg-pgsql.o : ../mudlib/sys/pgsql.h xalloc.h stdstrings.h simulate.h \
     mstrings.h mapping.h main.h interpret.h instrs.h gcollect.h array.h \
     actions.h pkg-pgsql.h my-alloca.h typedefs.h driver.h svalue.h \
     strfuns.h sent.h bytecode.h hash.h backend.h exec.h port.h config.h \
-    hosts/unix.h hosts/be/be.h machine.h
+    machine.h
 
 pkg-sqlite.o : xalloc.h stdstrings.h object.h svalue.h simulate.h \
     mstrings.h interpret.h array.h my-alloca.h typedefs.h driver.h \
     strfuns.h sent.h bytecode.h hash.h backend.h port.h config.h main.h \
-    hosts/unix.h hosts/be/be.h machine.h
+    machine.h
 
 pkg-tls.o : ../mudlib/sys/tls.h xalloc.h svalue.h sha1.h object.h \
     mstrings.h main.h interpret.h comm.h array.h actions.h pkg-tls.h \
     machine.h driver.h strfuns.h typedefs.h my-stdint.h sent.h hash.h \
-    bytecode.h backend.h simulate.h port.h config.h hosts/unix.h \
-    hosts/be/be.h
+    bytecode.h backend.h simulate.h port.h config.h
 
-port.o : hosts/crypt.c main.h backend.h my-rusage.h driver.h machine.h \
-    typedefs.h port.h config.h hosts/unix.h hosts/be/be.h
+port.o : main.h backend.h my-rusage.h driver.h machine.h \
+    typedefs.h port.h config.h
 
 ptmalloc.o : ptmalloc/malloc.c machine.h config.h ptmalloc/hooks.c \
     ptmalloc/arena.c ptmalloc/thread-m.h ptmalloc/malloc.h \
     ptmalloc/config.h
 
 ptrtable.o : simulate.h mempools.h ptrtable.h driver.h svalue.h strfuns.h \
-    sent.h bytecode.h typedefs.h port.h config.h hosts/unix.h hosts/be/be.h \
-    machine.h
+    sent.h bytecode.h typedefs.h port.h config.h machine.h
 
-random.o : random.h driver.h port.h config.h hosts/unix.h hosts/be/be.h \
-    machine.h
+random.o : random.h driver.h port.h config.h machine.h
 
 regexp.o : i-eval_cost.h main.h xalloc.h simulate.h regexp.h driver.h \
     interpret.h typedefs.h svalue.h strfuns.h sent.h bytecode.h pkg-pcre.h \
-    port.h config.h backend.h pcre/pcre.h hosts/unix.h hosts/be/be.h \
-    machine.h
+    port.h config.h backend.h pcre/pcre.h machine.h
 
-sha1.o : sha1.h my-stdint.h driver.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
+sha1.o : sha1.h my-stdint.h driver.h port.h config.h machine.h
 
 simul_efun.o : xalloc.h swap.h svalue.h stdstrings.h simulate.h prolang.h \
     ptrtable.h object.h mstrings.h lex.h interpret.h gcollect.h exec.h \
     array.h simul_efun.h my-alloca.h typedefs.h driver.h strfuns.h sent.h \
-    bytecode.h hash.h backend.h port.h config.h main.h hosts/unix.h \
-    hosts/be/be.h machine.h
+    bytecode.h hash.h backend.h port.h config.h main.h machine.h
 
 simulate.o : ../mudlib/sys/rtlimits.h ../mudlib/sys/regexp.h \
     ../mudlib/sys/files.h ../mudlib/sys/driver_hook.h \
@@ -515,49 +483,45 @@ simulate.o : ../mudlib/sys/rtlimits.h ../mudlib/sys/regexp.h \
     mapping.h main.h lex.h heartbeat.h gcollect.h filestat.h ed.h comm.h \
     closure.h call_out.h backend.h array.h actions.h simulate.h my-alloca.h \
     typedefs.h driver.h interpret.h hash.h exec.h ptrtable.h bytecode.h \
-    port.h config.h hosts/unix.h hosts/be/be.h machine.h
+    port.h config.h machine.h
 
 sprintf.o : xalloc.h swap.h svalue.h structs.h stdstrings.h simul_efun.h \
     simulate.h sent.h random.h ptrtable.h object.h mstrings.h mapping.h \
     main.h interpret.h comm.h closure.h array.h actions.h sprintf.h \
     my-alloca.h typedefs.h driver.h strfuns.h hash.h exec.h bytecode.h \
-    backend.h pkg-tls.h port.h config.h hosts/unix.h hosts/be/be.h \
-    machine.h
+    backend.h pkg-tls.h port.h config.h machine.h
 
 stdstrings.o : mstrings.h stdstrings.h typedefs.h driver.h hash.h port.h \
-    config.h hosts/unix.h hosts/be/be.h machine.h
+    config.h machine.h
 
 strfuns.o : xalloc.h svalue.h stdstrings.h simulate.h object.h mstrings.h \
     mapping.h main.h interpret.h comm.h strfuns.h my-alloca.h typedefs.h \
     driver.h sent.h bytecode.h hash.h backend.h pkg-tls.h port.h config.h \
-    hosts/unix.h hosts/be/be.h machine.h
+    machine.h
 
 structs.o : ../mudlib/sys/struct_info.h ../mudlib/sys/debug_info.h xalloc.h \
     wiz_list.h stdstrings.h simulate.h object.h mstrings.h mapping.h main.h \
     interpret.h gcollect.h exec.h array.h structs.h driver.h \
     ../mudlib/sys/lpctypes.h svalue.h strfuns.h typedefs.h sent.h \
-    bytecode.h hash.h backend.h port.h config.h hosts/unix.h hosts/be/be.h \
-    machine.h
+    bytecode.h hash.h backend.h port.h config.h machine.h
 
 swap.o : ../mudlib/sys/debug_info.h xalloc.h wiz_list.h svalue.h structs.h \
     strfuns.h stdstrings.h simul_efun.h simulate.h random.h prolang.h \
     otable.h object.h mstrings.h mempools.h mapping.h main.h interpret.h \
     gcollect.h comm.h closure.h backend.h array.h swap.h typedefs.h \
     driver.h hash.h exec.h ptrtable.h sent.h bytecode.h pkg-tls.h port.h \
-    config.h hosts/unix.h hosts/be/be.h machine.h
+    config.h machine.h
 
 wiz_list.o : xalloc.h svalue.h stdstrings.h simulate.h object.h mstrings.h \
     mapping.h main.h interpret.h gcollect.h backend.h array.h \
     ../mudlib/sys/wizlist.h wiz_list.h my-alloca.h typedefs.h driver.h \
-    strfuns.h sent.h bytecode.h hash.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
+    strfuns.h sent.h bytecode.h hash.h port.h config.h machine.h
 
 xalloc.o : xptmalloc.c sysmalloc.c slaballoc.c smalloc.c mstrings.h \
     object.h exec.h simulate.h interpret.h gcollect.h backend.h xalloc.h \
     driver.h ../mudlib/sys/debug_info.h ptmalloc/malloc.h svalue.h \
     stdstrings.h sysmalloc.h array.h slaballoc.h typedefs.h smalloc.h \
-    hash.h sent.h bytecode.h strfuns.h main.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
+    hash.h sent.h bytecode.h strfuns.h main.h port.h config.h machine.h
 
 # --- DO NOT MODIFY THIS LINE -- AUTO-DEPENDS PRECEDE ---
 # --- DO NOT MODIFY THIS LINE -- SELECTED AUTO-DEPENDS FOLLOW ---
diff --git a/src/autoconf/configure.in b/src/autoconf/configure.in
index dbc41b2..9f369a7 100644
--- a/src/autoconf/configure.in
+++ b/src/autoconf/configure.in
@@ -2675,10 +2675,6 @@ AC_DEFINE_UNQUOTED(EXTERN_MALLOC_OVERHEAD,$lp_cv_sys_malloc_overhead,
 if test -z "${CONFIG_SHELL}"; then
   CONFIG_SHELL='/bin/sh'
 fi
-if test "${OSTYPE}" = 'win32'; then
-  EXEEXT='.exe'
-  AC_DEFINE(HOST_INCLUDE,"hosts/GnuWin32/GnuWin32.h",[define the host-specific include file])
-fi
 
 
 dnl
diff --git a/src/config.h.in b/src/config.h.in
index e21df4d..0a8b88f 100644
--- a/src/config.h.in
+++ b/src/config.h.in
@@ -325,16 +325,6 @@
  */
 @cdef_use_process_string@ USE_PROCESS_STRING
 
-/* Define USE_SYSTEM_CRYPT if you want crypt() to be implemented by your
- * operating system (assuming it offers this function). This makes your
- * programm smaller and may even let you take advantage of improvements
- * of your OS, but may also prohibit transporting encrypted date like
- * passwords between different systems.
- * Undefine USE_SYSTEM_CRYPT if you want to use the driver's portable
- * crypt() implementation.
- */
-@cdef_use_system_crypt@ USE_SYSTEM_CRYPT
-
 /* Define this if you want MCCP (Mud Control Compression Protocol).
  */
 @cdef_use_mccp@ USE_MCCP
diff --git a/src/hosts/GnuWin32/GnuWin32.h b/src/hosts/GnuWin32/GnuWin32.h
deleted file mode 100644
index 7f22900..0000000
--- a/src/hosts/GnuWin32/GnuWin32.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#include <windows.h>
-
-#define SOCKET_HEADER "hosts/GnuWin32/socket.h"
-#define SOCKET_INC "hosts/GnuWin32/socket.c"
-
-#undef HOST_DEPENDENT_INIT
-#define HOST_DEPENDENT_INIT \
-  win32osi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); \
-  GetVersionEx(&win32osi); \
-  GetSystemInfo(&win32si); \
-
-extern OSVERSIONINFO win32osi;
-extern SYSTEM_INFO win32si;
-
-#define alarm(n)
-
-#undef ALARM_HANDLER
-#define ALARM_HANDLER(name, body)				\
-VOID CALLBACK catch_alarm(UINT uID,   UINT uMsg, DWORD dwUser,	\
-			  DWORD dw1, DWORD dw2) {		\
-    WSACancelBlockingCall();					\
-    {body}                                                      \
-}
-
-#undef ALARM_HANDLER_FIRST_CALL
-#define ALARM_HANDLER_FIRST_CALL(name) {			\
-    VOID CALLBACK name(UINT uID,   UINT uMsg,			\
-		       DWORD dwUser, DWORD dw1, DWORD dw2);	\
-								\
-    if(!timeSetEvent(2000,0,name,NULL,TIME_PERIODIC)) {		\
-	perror("SetTimer()"); 					\
-	return;		/* Abort */				\
-    }								\
-    name(0,0,0,0,0);						\
-}
diff --git a/src/hosts/GnuWin32/socket.c b/src/hosts/GnuWin32/socket.c
deleted file mode 100644
index fb91d8f..0000000
--- a/src/hosts/GnuWin32/socket.c
+++ /dev/null
@@ -1,50 +0,0 @@
-#include <errno.h>
-#include <winsock.h>
-#include <windows.h>
-
-void set_socket_errno()
-{
-    switch(WSAGetLastError())
-      {
-	case WSAEWOULDBLOCK:		errno = EWOULDBLOCK; return;
-	case WSAEINPROGRESS:		errno = EINPROGRESS; return;
-	case WSAEALREADY:		errno = EALREADY; return;
-	case WSAENOTSOCK:		errno = ENOTSOCK; return;
-	case WSAEDESTADDRREQ:		errno = EDESTADDRREQ; return;
-	case WSAEMSGSIZE:		errno = EMSGSIZE; return;
-	case WSAEPROTOTYPE:		errno = EPROTOTYPE; return;
-	case WSAENOPROTOOPT:		errno = ENOPROTOOPT; return;
-	case WSAEPROTONOSUPPORT:	errno = EPROTONOSUPPORT; return;
-	case WSAESOCKTNOSUPPORT:	errno = ESOCKTNOSUPPORT; return;
-	case WSAEOPNOTSUPP:		errno = EOPNOTSUPP; return;
-	case WSAEPFNOSUPPORT:		errno = EPFNOSUPPORT; return;
-	case WSAEAFNOSUPPORT:		errno = EAFNOSUPPORT; return;
-	case WSAEADDRINUSE:		errno = EADDRINUSE; return;
-	case WSAEADDRNOTAVAIL:		errno = EADDRNOTAVAIL; return;
-	case WSAENETDOWN:		errno = ENETDOWN; return;
-	case WSAENETUNREACH:		errno = ENETUNREACH; return;
-	case WSAENETRESET:		errno = ENETRESET; return;
-	case WSAECONNABORTED:		errno = ECONNABORTED; return;
-	case WSAECONNRESET:		errno = ECONNRESET; return;
-	case WSAENOBUFS:		errno = ENOBUFS; return;
-	case WSAEISCONN:		errno = EISCONN; return;
-	case WSAENOTCONN:		errno = ENOTCONN; return;
-	case WSAESHUTDOWN:		errno = ESHUTDOWN; return;
-	case WSAETOOMANYREFS:		errno = ETOOMANYREFS; return;
-	case WSAETIMEDOUT:		errno = ETIMEDOUT; return;
-	case WSAECONNREFUSED:		errno = ECONNREFUSED; return;
-	case WSAELOOP:			errno = ELOOP; return;
-	case WSAENAMETOOLONG:		errno = ENAMETOOLONG; return;
-	case WSAEHOSTDOWN:		errno = EHOSTDOWN; return;
-	case WSAEHOSTUNREACH:		errno = EHOSTUNREACH; return;
-	case WSAENOTEMPTY:		errno = ENOTEMPTY; return;
-	case WSAEPROCLIM:		errno = EPROCLIM; return;
-	case WSAEUSERS:			errno = EUSERS; return;
-	case WSAEDQUOT:			errno = EDQUOT; return;
-	case WSAESTALE:			errno = ESTALE; return;
-	case WSAEREMOTE:		errno = EREMOTE; return;
-      }
-}
-
-OSVERSIONINFO win32osi;
-SYSTEM_INFO win32si;
diff --git a/src/hosts/GnuWin32/socket.h b/src/hosts/GnuWin32/socket.h
deleted file mode 100644
index e2d5b0b..0000000
--- a/src/hosts/GnuWin32/socket.h
+++ /dev/null
@@ -1,50 +0,0 @@
-#include <winsock.h>
-
-#include <winbase.h>
-
-extern void set_socket_errno();
-
-#define SOCKET_T int
-#define socket_number(s) (s) \
-  socket_select(a,b,c,d,e) ({	\
-  int tmp=select(a,b,c,d,e);	\
-  if (tmp < 0)			\
-    set_socket_errno();		\
-  tmp;				\
-})
-
-#define socket_read(a,b,c) ({	\
-  int tmp = recv(a,b,c,0);	\
-  if (tmp < 0)			\
-    set_socket_errno();		\
-  tmp;				\
-})
-
-#define socket_write(a,b,c) ({	\
-  int tmp = send(a,b,c,0)	\
-  if (tmp < 0)			\
-    set_socket_errno();		\
-  tmp;				\
-})
-
-#define socket_ioctl(a,b,c)	\
-  int tmp = ioctlsocket(a,b,c);	\
-  if (tmp < 0)			\
-    set_socket_errno();		\
-  tmp;				\
-})
-
-#define socket_close(s)  {					\
-  int tmp = 0;							\
-  struct linger ling = { 1, 5 };				\
-  socket_ioctl(s, FIONBIO, &tmp);				\
-  setsockopt (s,SOL_SOCKET,SO_LINGER,&ling,sizeof(struct linger));\
-  closesocket(s);						\
-}
-
-#define       SIGURG  NSIG+1  /* urgent condition on IO channel */
-
-#define shutdown(s, i) 0
-
-extern OSVERSIONINFO win32osi;
-extern SYSTEM_INFO win32si;
diff --git a/src/hosts/README b/src/hosts/README
deleted file mode 100644
index f34b4c0..0000000
--- a/src/hosts/README
+++ /dev/null
@@ -1,4 +0,0 @@
-This directory holds the host dependent parts and emulations of the driver.
-
-Don't assume just because a system is listed here it means that the driver
-still runs on that system.
diff --git a/src/hosts/amiga/README b/src/hosts/amiga/README
deleted file mode 100644
index ccfd26e..0000000
--- a/src/hosts/amiga/README
+++ /dev/null
@@ -1,15 +0,0 @@
- hosts/amiga/README
-
-This directory contains all specials needed for LDMud to compile on Amiga.
-For detailed information, see README.Amiga.
-
-You'll find here:
-
-  README       : this file.
-  README.Amiga : A general description of the port.
-  config.h     : a 'standard' config.h
-  machine.h    : a 'standard' machine.h to compile the driver.
-  StartMUD     : a script to (re)start the mud.
-
-All machine.h and config.h are the Amiga-Replacements for the
-corresponding Unix files in the top directory.
diff --git a/src/hosts/amiga/README.Amiga b/src/hosts/amiga/README.Amiga
deleted file mode 100644
index f05b64c..0000000
--- a/src/hosts/amiga/README.Amiga
+++ /dev/null
@@ -1,151 +0,0 @@
-Short:    LDMud Driver (Source)
-Author:   Lars Pensj�, J�rn Rennecke, Lars D�ning, ported by Mariko@Wunderland
-Uploader: "Mariko@Wunderland" <mud@wl.mud.de>
-Version:  3.3
-Type:     game/role
-Requires: ixemul.library (V48.0+), ixnet.library (V48.0+), TCP/IP stack, OS2.0+
-Long:
-
-The Amiga version of LDMud requires the gcc/ixemul package for compilation,
-and the above mentioned libraries to run. Older compilers are no longer
-supported.
-
-The basic compilation procedure is like for Unix. However, the configuration
-script fails sometimes - for this case you can use the files
-hosts/amiga/config.h and .../machine.h in order to compile the driver.
-
-Alternatively, you can get a precompiled driver from AmiNet.
-
------------------------------------------------------------------------------
-Short:    LDMud Driver (Binary)
-Author:   Lars Pensj�, J�rn Rennecke, Lars D�ning, ported by Mariko@Wunderland
-Uploader: "Mariko@Wunderland" <mud@wl.mud.de>
-Version:  3.3
-Type:     game/role
-Requires: ixemul.library (V48.0+), ixnet.library (V48.0+), TCP/IP stack, OS2.0+
-Long:
-
-So what's this? Well, since you're reading this, i guess you already know what
-a MUD is. If not, it's the acronym for Multi User Dungeon and simply means a
-role playing game for many users at the same time who can interact with each
-other. Obviously, this is realised over a TCP/IP link and ldmuds (before Lars
-D�ning took over development, they were called lpmud (the original author's
-name is Lars Pensj�)) are purely text-based.
-
-So what does this driver do? Well, ldmuds/lpmuds are written in a special
-language called LPC (Lars Pensj� C) and the driver does all the necessary
-things like pre-compiling your sources, running and interpreting them and
-providing you with basic functions for your coding pleasure (there's a vast
-range of functions the driver supplies). It's quite similar to a java
-environment, with the difference that the compiler and interpreter are combined
-in one single program.
-
-So what does this archive contain? It contains the driver binaries, the
-original programming docs, some little utility packages, a test mudlib and last
-but not least a start script for easy launching of the driver. The basic code
-from which your mud is made up is called mudlib, but this archive does not
-contain a real mudlib. You either have to create one yourself (hehe ;) or you
-grab one from your favourite mud (nearly every mud supplies a cut down version
-of its mudlib in a publicly open ftp directory).
-
-For further information see section below the German installation instructions.
--------------------------------------------------------------------------------
-
-
- How to install the ldmud driver version:
- ========================================
-
-0. Make sure you have ixemul.library and ixnet.library installed, and if not,
-   get them from http://us.aminet.net/aminet/ or http://www.ninemoons.com/GG/
-
-   Make sure you have a TCP/IP stack that's compatible with ixnet.library
-   installed (such as AmiTCP, Genesis or Miami).
-
-1. Extract the archive if you haven't already done it:
-    lha -a x ldmud-328-BIN-AMIGA.lha YourVol:YourDir/YourSubDir/
-
-   Alternatively, if it's already extracted but not yet at the place you want
-   it to be, copy or move the whole ldmud/ directory with all its subdirs to
-   your desired location.
-
-2. Grab a mudlib and place it into ldmud/lib/
-
-
- How to run the ldmud driver version:
- ====================================
-
-1. Simply start the StartMUD script by double clicking its icon on the
-   Workbench or executing it from CLI/SHELL.
-
-2. Connect to the driver on port 4444 via a telnet client:
-    telnet localhost 4444
-
-3. Have fun! ;-)
-
-
--------------------------------------------------------------------------------
-
-
- Installieren des ldmud Drivers Version:
- =======================================
-
-0. Stellen Sie sicher, da� Sie die ixemul.library und ixnet.library installiert
-   haben, und falls nicht, k�nnen Sie sie von http://us.aminet.net/aminet/ oder
-   http://www.ninemoons.com/GG/ bekommen.
-
-   Stellen Sie sicher, da� Sie einen TCP/IP-Stack der kompatibel mit der
-   ixnet.library ist installiert haben (wie z.B. AmiTCP, Genesis oder Miami).
-
-1. Entpacken Sie das Archiv, falls Sie das noch nicht getan haben:
-    lha -a x ldmud-328-BIN-AMIGA.lha IhreVol:IhreDir/IhreSubDir/
-
-   Alternativ, falls es schon entpackt vorliegt, jedoch nicht dort, wo Sie es
-   gern h�tten, kopieren oder verschieben Sie das ganze ldmud/ Verzeichnis
-   mitsamt seiner Unterverzeichnisse an die gew�nschte Stelle.
-
-2. Schnappen Sie sich eine mudlib und legen Sie sie in ldmud/lib/ ab.
-
-
- Starten des ldmud Drivers Version:
- ==================================
-
-1. Starten Sie einfach das StartMUD Skript indem Sie es auf der Workbench
-   doppelklicken oder es im CLI oder in der SHELL ausf�hren.
-
-2. Connecten Sie zum Driver auf Port 4444 mit einem Telnet Client:
-    telnet localhost 4444
-
-3. Viel Spa�! ;-)
-
-
--------------------------------------------------------------------------------
-
-
-This is version 3.2.8 of the ldmud driver.
-
-It has been compiled with egcs 2.91.66 on an A600/030/30/882/30.
-
-It has been configured for native mode with strict euids. For all configuration
-details see config.h (feel free to contact me if some of the options seem
-inappropriate).
-
-It has been compiled WITHOUT erq support, since the erq code uses fork() which
-is inavailable on AmigaOS (if you really need erq, feel free to ask me to
-rewrite the erq code, but if i'm actually going to do it heavily depends on how
-many people request it). See machine.h for further platform and compiler
-dependant implementational details.
-
-I wasn't able to compile a 060 version with FPU instructions. The compiler
-exited with an illegal instruction while trying to compile a certain file.
-
-
--------------------------------------------------------------------------------
-
-
-Contact me at the following email address, if you dare ;-)
- "Mariko@Wunderland" <mud@wl.mud.de>
-(the part in double quotes is *required*)
-
-Or directly visit Wunderland (it's a German MUD). #8-D
-
-But remember, i'm only responsible for the port, not for the ldmud code itself.
diff --git a/src/hosts/amiga/README.Amiga.info b/src/hosts/amiga/README.Amiga.info
deleted file mode 100644
index b0b85663871e3b0af1953e4ed0f5b1cc0b4cbf4c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 482
zcmZ9Iu}T9$5QhJ8<3(^y0)nIn$qPu-LJ2l!V<`s12<dDr4(v>A?ge}St9t@#JM#!O
zsXg!oQd$JonVp452KK)F=bzab?xzES#ygI2fg|jSCK|nsVs`sOjf{q$6%Ai2vG(Ph
zZAv<J)mL^v{mN~uM!MQ85mzaZdax(Dmg50h8Qq7m*)z6U#$MByhjPA>`avjTpJZRO
zKStyrthe;Sr^y~R*~3=zprElv#4oU9iTgw@@ht}P1HNQK=CN>Lq}u3CjairGL45Cx
z-OQK=LR<S_T1Zl-?`plwtKlLglXO1DIdjwpiB9*D`Tyc@GM!xVtavJB#pCnI&F$T_
Iy82HEe`FJ6fB*mh

diff --git a/src/hosts/amiga/StartMUD b/src/hosts/amiga/StartMUD
deleted file mode 100644
index 3c86742..0000000
--- a/src/hosts/amiga/StartMUD
+++ /dev/null
@@ -1,80 +0,0 @@
-.key OPT/F
-
-;*************************************
-;*                                   *
-;*  StartMUD - ldmud startup script  *
-;*     (C)2001 Mariko@Wunderland     *
-;*                                   *
-;*    change whatever you like :)    *
-;*                                   *
-;*************************************
-
-FailAt 21
-
-Version >NIL: bsdsocket.library
-IF FAIL
- Echo Please start your TCP/IP stack first!
- Quit 20
-ENDIF
-
-Assign >NIL: mud: EXISTS
-IF WARN
- Assign mud: ""
- Set �ldmud�mud�remove 1
-ENDIF
-
-Assign >NIL: tmp: EXISTS
-IF WARN
- Assign tmp: mud:tmp
- Set �ldmud�tmp�remove 1
-ENDIF
-Delete >NIL: tmp:_ldmud.swap#? QUIET FORCE
-
-CPU >NIL: CHECK 68040
-IF NOT WARN
- Set �ldmud�cpu 040
- Skip GOON
-ENDIF
-CPU >NIL: CHECK 68030
-IF NOT WARN
- CPU >NIL: CHECK 68881
- IF NOT WARN
-  Set �ldmud�cpu 030881
-  Skip GOON
- ENDIF
-ENDIF
-CPU >NIL: CHECK 68020
-IF NOT WARN
- Set �ldmud�cpu 020
- Skip GOON
-ENDIF
-Set �ldmud�cpu 000
-Lab GOON
-
-IF EXISTS mud:lib/secure/master.c
- Set �ldmud�opt -m /mud/lib -M /secure/master
-ELSE
- IF EXISTS mud:lib/test_master.c
-  Set �ldmud�opt -m /mud/lib -M /test_master
- ELSE
-  Set �ldmud�opt ""
- ENDIF
-ENDIF
-
-Stack 262144
-mud:bin/driver.$�ldmud�cpu $�ldmud�opt <OPT>
-Stack 4096
-
-Unset �ldmud�opt
-Unset �ldmud�cpu
-
-Delete >NIL: tmp:_ldmud.swap#? QUIET FORCE
-IF $�ldmud�tmp�remove EQ 1
- Assign tmp:
- Unset �ldmud�tmp�remove
-ENDIF
-
-IF $�ldmud�mud�remove EQ 1
- Assign mud:
- Unset �ldmud�mud�remove
-ENDIF
diff --git a/src/hosts/amiga/StartMUD.info b/src/hosts/amiga/StartMUD.info
deleted file mode 100644
index 46e66816825966da1eff697cdfc7ada3fcf1b95b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1780
zcmbV~ZEV}d8ONU!DUz0Ci*g;0bFz?}z2*fmOeJmL28&5iv1+?XETm2oWJMy)j+gE&
zcIPZvU4)b^TlwH3Dv+WzW^^**bZxP`45*uIFffV1vH~*-uNdYJeUs647SN#~w$@P`
z@wjtRY`{K_#NGeyf6w#W;lb|{9uTa3S6~}R<fq9Vq2}W!?z{gxA(}xg8(&8)-;~Hv
zJsI?WL-+^FwJIJ!Kg?49IpTnaAlMLeiP{fFb$c8F?F&#-<nL>6NQ0W8JlO*T3N&Ax
zCtBp0nt?jTKM>ytiJm$rWC2prQ5xhgJfJ^?veACZ9L=(k_19|>)LVhj<lCH=pW(f~
z6ciL9_fzJwyX=-+)-3`1NfFrhiC!f7cnO&EMevFx@Tf(giE^8Yz@ILG^y?zDFP31$
zEF$)7$-}%|q!BK1%wLPV*R&=7QCqA2!Uo?{HmvWrVMo@6;p;`9W>cxV*Qw8xORRHG
z+~kCf^A*Y^kKm%aI(tw4^e|bHMgVL-)VY68_o3a<?)|%zmhhuW%g#rLDmz<#-1n1H
zea(H(KJ)YA&o-YtH8gN)s3mf+r+Y1vJrwEe+5PC+5<#r{z&-%)Bb}s1ED~)eCL@Yu
zZtdI`c^trFz(XE{ydE9Gm@PkFz@h@_V}-k{t;IyeL#MZ#jjk%-jFwfCuJR@E%U>D=
zBpAT(pqf;b?_|ND>7)aaHpJSHl=qd@oH?Q9X|Bd}%tX`H*!1OO;&6RB2_7n^YD|^y
zrOn2ls}qNB5sM^!3MqN-)g||8S>DFQc(WADqY?d5m-tWXmHP0spbZ%$W?J5R+z8Oy
zF!w#3{}%F3@s3&7wB^FprLoH?e*>|CpPSSQXxY~e+3sS6@26QUx_aAoOsQ#WPx!J?
zU=rGp*S+HL-&_GD`vw+QU7e$HvU7UDFuB@wTh|=RN97uWpQp@abUSDxU7zg2!gCf0
z6B5hlUG`sjssi!s!wr8J-#{)s5#w*v45&vzEE?$(O9#dkv*d3Gjl<8(@*hb7)q2=`
zy_dA&w<*qITg8aOmfQJIn$`4tI!R5jbLuq+mXH<CNxRxCPWfHIIRi!x#04YGPe=Z;
z!Y9Yx4N$ALVj+jMBfdV`NYw~WgN24IK~r-sC+}4*+R{b8X}i&i#5-%{o(wel)RBO4
zBY4KhF(mFi4DqgHx>1N5Sy$Vjn8zimEd5>3AZ--tM?YZa<TS-G2Vnm%CREeq=0;hP
z+b1w6Faxjl1>f<^2)pycH@6rpK9;8g?`Rd+pbVRLGONcV9K6vMby{+OT@3g%4&j4%
z5B@g(5TA2hVTU`vV}24Q`=Nga%+I@%lWu?i<m8+4B=Sx8n!^`i-F*)CLF@m^A<k5a
z5y8+nUY08$bUb-BSdsozWrZ?jNO@|-YXN#J{<ob<vtKVxNT8)NB`C-}v*+)oF8hxV
zi{rBulW*Gcaz$NX=%o|7lIA+jLZEit6NlYb>K10Na2CC(tV-T0UvEn}A)mDM5BO9S
zcht`OV~x;RH_-e7cce%xgCKFuLyv8DGdQ1}Y9_TaU%5;7Alq?pTW_yt;4Mjy1{YHd
zx<{UR&<Hvy^q56A$&T@W#wW0NPqln>6QQwS-WlN^(D)-P40}kJ@clcf+w7O{HH|Kz
zQI-c{{9N#inz&EnGw8@IB~|5rIy5c~7pl5Q0YYQ;H@)O3v(tpeIWY-pNwqd-CnR03
zPd9QKZ5=u1z|fj%$7E0KLsOeL>rQ3`5GG~>hib<*cXU5C)#(37AZ~IZx{9t%eP_F_
zy!r#qvYBu|;%~`>@JLs3OvbHB>>DEppD$~TtKtHceoctgxwMcxBZIpq5I$$TQGwir
zn_Nt}B+B?)YcKzvNeG`;OvJe(&BAwiGb)USt2e{+I>A6V^c<s*+=XyJZ-}Gz4l(PE
zherz>a{&h()#MtosWP<ovZPgCwM8o8!1I~aUuk%eK-o>OY{nZfcy2G(;aQw;7uWk2
hXZ$mRFxUodewdkA92{J1Ya1LKnfdtl?Id9Y{tcmpcz*x@

diff --git a/src/hosts/amiga/config.h b/src/hosts/amiga/config.h
deleted file mode 100644
index 7c7881f..0000000
--- a/src/hosts/amiga/config.h
+++ /dev/null
@@ -1,547 +0,0 @@
-/* DO NOT EDIT!
- *
- * This file is created automatically by configure from the template
- * in config.h.in.
- */
-
-#ifndef CONFIG_H__
-#define CONFIG_H__ 1
-
-/* Should code for the external request demon be included?
- */
-#undef ERQ_DEMON
-
-/* Maximum sizes for an erq send or reply.
- */
-#define ERQ_MAX_REPLY 1024
-#define ERQ_MAX_SEND  1024
-
-/* #define ACCESS_CONTROL if you want the driver to do any access control.
- * TODO: Make this a runtime option.
- */
-#undef ACCESS_CONTROL
-
-/* file for access permissions data */
-/* TODO: Make this a runtime option */
-#define ACCESS_FILE               "ACCESS.ALLOW"
-
-/* logfile to show valid and rejected connections
- * simple not define this for NO logs
- * TODO: Make this a runtime option.
- */
-#undef ACCESS_LOG /* "access.allow.log" */
-
-/*
- * Max size of a file allowed to be read by 'read_file()'.
- */
-#define READ_FILE_MAX_SIZE        65536
-
-/* If an object is left alone for a certain time, then the
- * function clean_up will be called. This function can do anything,
- * like destructing the object. If the function isn't defined by the
- * object, then nothing will happen.
- *
- * This time should be substantially longer than the swapping time.
- */
-#define TIME_TO_CLEAN_UP          3600
-
-/*
- * How long time until an unused object is swapped out.
- * Machine with too many players and too little memory: 900 (15 minutes)
- * Machine with few players and lot of memory: 10000
- * Machine with infinite memory: 0 (never swap).
- */
-#define TIME_TO_SWAP              300
-#define TIME_TO_SWAP_VARIABLES    900
-
-/*
- * How many seconds until an object is reset again.
- * Set this value high if big system, otherwise low.
- * No castles:         1800        (30 minutes)
- * >100 castles:10000        (almost 3 hours).
- */
-#define TIME_TO_RESET             1800
-
-/*
- * Define the maximum stack size of the stack machine. This stack will also
- * contain all local variables and arguments.
- */
-#define EVALUATOR_STACK_SIZE      1024
-
-/*
- * Define the maximum call depth for functions.
- * MAX_USER_TRACE is used for for normal program execution, the full
- * MAX_TRACE is only available in error handling.
- */
-#define MAX_USER_TRACE              64
-#define MAX_TRACE                   72
-
-/*
- * Define the size of the compiler stack. This defines how complex
- * expressions the compiler can parse. The value should be big enough.
- */
-#define COMPILER_STACK_SIZE        256
-
-/*
- * Maximum number of bits in a bit field. They are stored in printable
- * strings, 6 bits per byte.
- * The limit is more based on considerations of speed than memory
- * consumption.
- */
-#define MAX_BITS                  6144
-
-/*
- * Define what port number the game is to use.
- */
-#define PORTNO                    4444
-
-/* Maximum numbers of ports the GD accepts connections to.
- */
-#define MAXNUMPORTS                 16
-
-/*
- * Max number of local variables in a function.
- */
-#define MAX_LOCAL                   32
-
-/* Maximum number of evaluated nodes/loop.
- * If this is exceeded, the current function is halted.
- * ls() can take about 30000 for large directories.
- */
-#define MAX_COST               1048576
-
-/* Define ALLOW_FILENAME_SPACES if the driver should accept space characters
- * in filenames. If it is not defined, a hardcoded test for space characters
- * is activated.
- */
-#undef ALLOW_FILENAME_SPACES
-
-
-/* Define SHARE_VARIABLES if a clone's variables are to be assigned
- * from the current blueprint's variables. Undefine it if clones
- * should be initialized by __INIT().
- */
-#undef SHARE_VARIABLES
-
-/* CATCH_RESERVED_COST is added to the eval cost for the time executing code
- * guarded by a catch() statement, so that an eval_cost-too-big error can
- * still be caught and handled.
- *
- * To catch an eval_cost too big error in an object that called recursive
- * master functions, CATCH_RESERVED_COST should be greater than
- * MASTER_RESERVED_COST * 2.
- * TODO: Check that at runtime.
- */
-#define CATCH_RESERVED_COST       4096
-
-/* MASTER_RESERVED_COST is the total reserve available for master applies.
- * It is halved for every recursion into another master apply.
- */
-#define MASTER_RESERVED_COST    1024 /* must be power of 2 */
-/* TODO: Check that at runtime */
-
-/* Where to save the WIZLIST information.
- * If not defined, and neither given on the commandline, the driver will
- * not create the WIZLIST file.
- */
-#define WIZLIST_FILE              "WIZLIST"
-
-/*
- * Where to swap out objects. This file is not used if TIME_TO_SWAP is 0.
- * If the mudlib is mounted via nfs but your /tmp isn't, and isn't purged
- * periodically either, it's a good idea to place the swap file there.
- * The hostname will be appended to the filename defined here.
- */
-#define SWAP_FILE                 "/tmp/_ldmud.swap"
-
-/* Where to save the WIZLIST information.
- * If not defined, and neither given on the commandline, the driver will
- * not read the WIZLIST file.
- */
-#define WIZLIST_FILE              "WIZLIST"
-
-/* This is the maximum array size allowed for one single array.
- * If 0, any size is allowed.
- */
-#define MAX_ARRAY_SIZE            4096
-
-/* This is the maximum size (number keys and values) allowed for one
- * single mapping.
- * If 0, any size is allowed.
- */
-#define MAX_MAPPING_SIZE            15000
-
-/* This is the maximum number of callouts allowed at one time.
- * If 0, any number is allowed.
- */
-#define MAX_CALLOUTS              0
-
-/*
- * If this is defined, expensive operations like string additions
- * receive additional evalcosts depending on the amount of data handled.
- */
-
-#undef DYNAMIC_COSTS
-
-/*
- * Maximum number of players in the game.
- */
-#define MAX_PLAYERS                4
-
-/*
- * When uploading files, we want fast response; however, normal players
- * shouldn't be able to hog the system in this way.  Define ALLOWED_ED_CMDS
- * to be the ratio of the no of ed cmds executed per player cmd, and
- * MAX_CMDS_PER_BEAT to be the max no of buffered player commands the
- * system will accept in each heartbeat interval.
- */
-
-#define ALLOWED_ED_CMDS           16
-/* TODO: ALLOWED_ED_CMDS: make this a runtime option */
-
-#define MAX_CMDS_PER_BEAT            4 /* TODO: not implemented yet :-( */
-
-/*
- * Reserve an extra memory area from malloc(), to free when we run out
- * of memory to get some warning and start Armageddon.
- * If this value is 0, no area will be reserved.
- */
-#define RESERVED_USER_SIZE      65536
-#define RESERVED_MASTER_SIZE    4096
-#define RESERVED_SYSTEM_SIZE    16384
-
-/* Define the size of the shared string hash table.  This number needn't
- * be prime, probably between 1000 and 30000; if you set it to about 1/5
- * of the number of distinct strings you have, you will get a hit ratio
- * (number of comparisons to find a string) very close to 1, as found strings
- * are automatically moved to the head of a hash chain.  You will never
- * need more, and you will still get good results with a smaller table.
- * If the size is a power of two, hashing will be faster.
- */
-
-#define HTABLE_SIZE               16384
-
-/* Define the size of the table of defines, reserved words, identifiers
- * and efun names. Should be either several times smaller than HTABLE_SIZE
- * or identical with it.
- */
-#define ITABLE_SIZE               256
-
-/* Object hash table size.
- * Define this like you did with the strings; probably set to about 1/4 of
- * the number of objects in a game, as the distribution of accesses to
- * objects is somewhat more uniform than that of strings.
- */
-
-#define OTABLE_SIZE               1024
-
-/* Maximum size of an expanded preprocessor definition.
- */
-
-#define DEFMAX                   16384
-
-/* the number of apply_low cache entries will be 2^APPLY_CACHE_BITS.
- */
-#define APPLY_CACHE_BITS            12
-
-/* The parameters of the regular expression/result cache.
- * The expression cache uses a hashtable of RXCACHE_TABLE entries.
- * Undefine RXCACHE_TABLE to disable the all regexp caching.
- */
-
-#define RXCACHE_TABLE 8192  /* Length of the expression hash table */
-
-/* Define COMPAT_MODE if you are using the 2.4.5 mudlib or one of its
- * derivatives.
- */
-#undef COMPAT_MODE
-
-/* Define STRICT_EUIDS if the driver is to enforce the use of euids,
- * ie. load_object() and clone_object() require the current object to
- * have a non-zero euid.
- */
-#define STRICT_EUIDS
-
-/* Define USE_PARSE_COMMAND if you want the efun parse_command().
- */
-#define USE_PARSE_COMMAND
-
-/* Define USE_SET_LIGHT if you want the efun set_light() and the
- * simple 2.4.5 light system.
- */
-#define USE_SET_LIGHT
-
-/* Define USE_SET_IS_WIZARD if you want the efun set_is_wizard().
- */
-#define USE_SET_IS_WIZARD
-
-/* Define USE_PROCESS_STRING if you want the efun process_string().
- */
-#define USE_PROCESS_STRING
-
-/* Define INITIALIZATION_BY___INIT if you want all initializations of variables
- * to be suspended till the object is created ( as supposed to initialization
- * at compile time; the latter is more memory efficient for loading and faster
- * at cloning, while the former allows to use efuns, e.g. shutdown().
- */
-#define INITIALIZATION_BY___INIT
-
-/* Define USE_SYSTEM_CRYPT if you want crypt() to be implemented by your
- * operating system (assuming it offers this function). This makes your
- * programm smaller and may even let you take advantage of improvements
- * of your OS, but may also prohibit transporting encrypted date like
- * passwords between different systems.
- * Undefine USE_SYSTEM_CRYPT if you want to use the driver's portable
- * crypt() implementation.
- */
-#define USE_SYSTEM_CRYPT
-
-/* The name of the master object.
- */
-#define MASTER_NAME              "secure/master"
-
-/* The input escape character.
- */
-#define INPUT_ESCAPE             "!"
-
-/*
- * Define MAX_BYTE_TRANSFER to the number of bytes you allow to be read
- * and written with read_bytes and write_bytes
- */
-
-#define MAX_BYTE_TRANSFER        65536
-
-/* Define this to the port on which the driver can receive UDP message.
- * If set to -1, the port will not be opened unless the mud is given a valid
- * port number on startup with the -u commandline option.
- */
-#define UDP_PORT                 -1
-
-/* Define this if you want IPv6 support (assuming that your host
- * actually offers this.
- */
-#undef USE_IPV6
-
-/* Maximum size of a socket send buffer.
- */
-#define SET_BUFFER_SIZE_MAX      32767
-
-/* Define this if you want alist support.
- */
-
-#define USE_ALISTS
-
-/* Define this if you want to allow call_other()s on arrays of objects.
- */
-#define USE_ARRAY_CALLS
-
-/* Define this if you want PCRE instead of traditional regexps.
- */
-
-#define USE_PCRE
-
-/* Define this if you want to use builtin PCRE (ignored when PCRE
- * is disabled as a whole).
- */
-#undef USE_BUILTIN_PCRE
-
-/* Define this if you want MCCP (Mud Control Compression Protocol).
- */
-#define USE_MCCP
-
-/* Define this if you want TLS (Transport Layer Security) over Telnet.
- */
-#undef USE_TLS
-
-/* Define this if you want mySQL support (assuming that your host
- * actually offers this.
- */
-#undef USE_MYSQL
-
-/* Define this if you want the obsolete and deprecated efuns.
- */
-#define USE_DEPRECATED
-
-/* Runtime statistics:
- *  COMM_STAT: count number and size of outgoing packets.
- *  APPLY_CACHE_STAT: count number of hits and misses in the apply cache.
- */
-#undef COMM_STAT
-#undef APPLY_CACHE_STAT
-
-/* Which memory manager to use. Possible defines are
- *   MALLOC_smalloc:   Satoria's malloc. Fastest, uses the least memory,
- *                     supports garbage collection.
- *   MALLOC_sysmalloc: the normal system malloc()
- *   MALLOC_ptmalloc:  ptmalloc from www.malloc.de - threadsafe.
- */
-
-#define MALLOC_smalloc
-
-/* If  MIN_MALLOCED is defined,
- * the gamedriver will reserve this amount of memory on startup for
- * large blocks, thus reducing the large block fragmentation. The value
- * therefore should be a significantly large multiple of the large
- * chunk size.
- */
-#define MIN_MALLOCED  0x100000
-
-/* These two values give the upper limits for
- * large and small block allocation (useful for systems with no
- * functioning process limit).
- */
-#define MAX_MALLOCED         0x1000000
-
-/* Define this to let the memory allocator request memory from the system
- * directly using sbrk() (assuming the system supports it).
- * If not defined, the memory allocator will use malloc().
- * Supported by: MALLOC_smalloc
- */
-#define MALLOC_SBRK
-
-/* Define this to annotate all allocations with a magic word to find
- * simple misuses of memory (like multiple frees).
- * Supported by: MALLOC_smalloc
- */
-#define MALLOC_CHECK
-
-/* Define this to annotate all allocations with file:line of the driver
- * source responsible for it.
- * Supported by: MALLOC_smalloc
- */
-#undef MALLOC_TRACE
-
-/* Define this to annotate all allocations with file:line of the lpc program
- * responsible for it.
- * Supported by: MALLOC_smalloc
- */
-#undef MALLOC_LPC_TRACE
-
-/* Define this to log all calls to esbrk() (the system memory allocator).
- * Works best if MALLOC_TRACE, or also MALLOC_LPC_TRACE, are defined.
- * Supported by: MALLOC_smalloc
- */
-#undef MALLOC_SBRK_TRACE
-
-/* Trace the most recently executed bytecode instructions?
- */
-#define TRACE_CODE
-
-/* If using TRACE_CODE , how many instructions should be kept? */
-#define TOTAL_TRACE_LENGTH      1024
-
-/* If you want to use threads to write the data to the sockets 
- * define USE_PTHREADS. To limit the memory usage of each thread
- * define PTHREAD_WRITE_MAX_SIZE to a value greater than zero.
- * The implementation will discard the oldest not yet written 
- * data blocks to keep memoty usage under the limit.
- */
-#undef USE_PTHREADS
-#define PTHREAD_WRITE_MAX_SIZE 100000
-
-/*----------------------------------------------------------------*/
-/* The following macros activate various debugging and profiling
- * code segments.
- */
-
-/* Enable basic run time sanity checks. This will use more time
- * and space, but nevertheless you are strongly encouraged to keep
- * it defined.
- * The check for __DRIVER_SOURCE__ is necessary as config.h is
- * also included by the erqs.
- */
-#define DEBUG
-
-/* The DEBUG level for the ERQ daemon: 0 means 'no debug', 1 means
- * 'standard debug', 2 means 'verbose debug'.
- */
-#define ERQ_DEBUG 0
-
-/* Enable debug output from the LPC compiler.
- */
-/* #define YYDEBUG 1 */
-
-/* Disable inlining.
- */
-/* #define NO_INLINES */
-
-/* Enable the shared string checking (enables commandline option
- * --check-strings).
- */
-#define CHECK_STRINGS
-
-/* Shared strings are never really freed.
- */
-/* #define KEEP_STRINGS */
-
-/* Activate debug prints in the telnet machine.
- */
-/* #define DEBUG_TELNET */
-
-/* Activate allocation debug prints in the smalloc module.
- */
-/* #define DEBUG_SMALLOC_ALLOCS */
-
-/* Trace changes to the tot_alloc_object and tot_alloc_object_size
- * statistics, in order to find the status bugs (enables commandline
- * option --check-object-stat). Will produce a decent amount of
- * output on stderr.
- */
-#define CHECK_OBJECT_STAT
-
-/* Activate total mapping size consistency check code. It has a small
- * impact on the execution speed. This define was used to find
- * the inaccuracy in the mapping statistic.
- */
-/* #define CHECK_MAPPING_TOTAL */
-
-/* Activate object refcount check code. It will produce a decent
- * amount of log output. It will also fatal() the driver as soon
- * as it detects an inconsistency in the list of destructed objects.
- */
-/* #define CHECK_OBJECT_REF */
-
-/* Activate object referencing checking code during the GC. It will
- * print error messages to gcout when an object or program is
- * referenced as something else. No penalty for using.
- * Requires MALLOC_TRACE to work. Incompatible with DUMP_GC_REFS.
- */
-#ifdef MALLOC_TRACE
-#    define CHECK_OBJECT_GC_REF
-#endif
-
-/* Enable the automatic data cleanup from the backend.
- * TODO: Remove this macro once it is proven stable.
- */
-#define NEW_CLEANUP
-
-/* Sometimes the GC stumbles over invalid references to memory
- * blocks (namely 'Program referenced as something else'). Define
- * this macro to get a detailed dump of all found references
- * (Warning: LOTS of output!). Incompatible with CHECK_OBJECT_GC_REF.
- */
-/* #define DUMP_GC_REFS */
-
-/* Enable usage statistics of VM instructions.
- * For profiling of the VM instructions themselves, see the Profiling
- * Options in the Makefile.
- */
-/* #define OPCPROF */
-
-#ifdef OPCPROF
-/* With OPCPROF, the dump of the statistics include the names
- * of the instructions.
- */
-/* #define VERBOSE_OPCPROF */
-#endif
-
-/* Define this if you want structs supported.
- */
-#define USE_STRUCTS
-
-/* Define this if you want the new inline closure syntax supported.
- * (f-020528)
- */
-#undef USE_NEW_INLINES
-
-#endif /* CONFIG_H__ */
diff --git a/src/hosts/amiga/ldmud.info b/src/hosts/amiga/ldmud.info
deleted file mode 100644
index 3cdf82b809dbb3976175ec37a07f78d04239f394..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 628
zcmZvaze)o^5XQef<9UMr5CpLjlS&d0#00BLrHzG+jram~d4uc&h_#O(X|)h5UqVQy
zpl=|=D}w8M-`<fcZeZuP-`vbBGu+n}9B3O@$Eo?$v~%6pk?ZY@^rh}xa#2Zd7arGd
ze;UlJRfby&`VgoSY>!>9eb2k=KHZVBYvjQU&fE`=qI^ApJ9}9w(;_yR8ose6*+M3E
zjH_WE;(KI<$d&M>I1@XT73)=o7Gl47lr^6#ufUOFyErcOK%8O_X7~u=VdQU!ENmRc
zX;bve`dqrGz0hziXFh*uo_TLVd&bEX?FM7@oMWg~t&*vcyAW*`sUO;QBDo7{TIyr{
rpHI|x;&b&|%zU8uBbN2vrK;$vyal-n&ONhTklY1X9X4*9-TtnBMsdHP

diff --git a/src/hosts/amiga/machine.h b/src/hosts/amiga/machine.h
deleted file mode 100644
index 5a8382e..0000000
--- a/src/hosts/amiga/machine.h
+++ /dev/null
@@ -1,265 +0,0 @@
-/* machine.h.in.  Generated automatically from configure.in by autoheader.  */
-
-#ifndef MACHINE_H
-#define MACHINE_H
-
-#undef AMIGA
-#define AMIGA 1
-
-/* Define if using alloca.c.  */
-#undef C_ALLOCA
-
-/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
-   This function is required for alloca.c support on those systems.  */
-#undef CRAY_STACKSEG_END
-
-/* Define if you have alloca, as a function or macro.  */
-#define HAVE_ALLOCA 1
-
-/* Define if you have <alloca.h> and it should be used (not on Ultrix).  */
-#undef HAVE_ALLOCA_H
-
-/* Define as __inline if that's what the C compiler calls it.  */
-/* #undef inline */
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-/* #undef pid_t */
-
-/* Define as the return type of signal handlers (int or void).  */
-#define RETSIGTYPE void
-
-/* Set in response to the signal handler return type, since not all
- * compilers understand direct definition comparisons
- */
-#define RETSIGTYPE_VOID 1
-
-/* Define to `unsigned' if <sys/types.h> doesn't define.  */
-/* #undef size_t */
-
-/* If using the C implementation of alloca, define if you know the
-   direction of stack growth for your system; otherwise it will be
-   automatically deduced at run-time.
- STACK_DIRECTION > 0 => grows toward higher addresses
- STACK_DIRECTION < 0 => grows toward lower addresses
- STACK_DIRECTION = 0 => direction of growth unknown
- */
-#define STACK_DIRECTION -1
-
-/* Define if you have the ANSI C header files.  */
-#define STDC_HEADERS 1
-
-/* does the compiler provide inline functions? */
-#define HAS_INLINE 1
-
-/* Is the library function inet_ntoa() compatible with the compiler?
- * TODO: Is there any platform where this is not the case?
- */
-#define INET_NTOA_OK 1
-
-/* A mask that allows to extract an unsigned char from a signed */
-#define CHARBIT_MASK 0xff
-
-#define RENAME_HANDLES_DIRECTORIES 1
-
-/* Does the system have a getrusage call?  */
-#define HAVE_GETRUSAGE 1
-/* If so, is it restricted to user and system time? */
-#undef GETRUSAGE_RESTRICTED
-/* Is it available as a subfunction of syscall() ? */
-#undef GETRUSAGE_VIA_SYSCALL
-/* Can ru_utime / ru_stime be accessed as a timeval with tv_sec and tv_usec ? */
-#define RUSAGE_USEC 1
-
-/* the atari strtol() used to consider characters '9' < c < 'A' to be numeric */
-#undef STRTOL_BROKEN
-
-/* needs the first argument of strtol be declared as const ? */
-#undef STRTOL_CONST_CHARP
-
-/* Define if you have bcopy, and it handles overlapping ranges correctly. */
-#define OVERLAPPING_BCOPY 1
-
-#define MALLOC_ALIGN 4
-
-/* does the compiler know of a 'ssize_t' type? */
-#define HAVE_SSIZE_T 1
-
-/* does the compiler know of a 'long long' type? */
-#define HAVE_LONG_LONG 1
-
-/* does the compiler know of a 'bool' type? */
-#undef HAVE_BOOL
-
-/* what kind of pointer is used by malloc() et al */
-#define POINTER void *
-#define FREE_RETURNS_VOID 1
-
-/* can we define our own malloc() safely? */
-#undef SBRK_OK
-
-/* The following is needed for smalloc without SBRK_OK to use memory
- * efficiently. smalloc will malloc blocks that are a large power of
- * two, minus EXTERN_MALLOC_OVERHEAD. If you have no idea what number to
- * choose, compile & run util/overhead.c
- */
-#define EXTERN_MALLOC_OVERHEAD 0
-
-/* How to set a socket non-blocking */
-#define USE_IOCTL_FIONBIO 1
-#undef USE_FCNTL_O_NDELAY
-#undef USE_FCNTL_FNDELAY
-
-/* Can F_SETOWN be used on a socket? */
-#undef USE_FCNTL_SETOWN
-
-/* Can SO_OOBINLINE be used on a socket? */
-#define USE_OOBINLINE 1
-
-/* Does the machine offer IPv6? */
-#undef HAS_IPV6
-
-/* define the erq include file. */
-#undef ERQ_INCLUDE
-
-/* define the host-specific include file */
-#undef HOST_INCLUDE
-
-/* The number of bytes in a char *.  */
-#define SIZEOF_CHAR_P 4
-
-/* The number of bytes in a int.  */
-#define SIZEOF_INT 4
-
-/* The number of bytes in a long.  */
-#define SIZEOF_LONG 4
-
-/* The number of bytes in a long long.  */
-#define SIZEOF_LONG_LONG 8
-
-/* The number of bytes in a short.  */
-#define SIZEOF_SHORT 2
-
-/* Define if you have the _crypt function.  */
-#undef HAVE__CRYPT
-
-/* Define if you have the bzero function.  */
-#define HAVE_BZERO 1
-
-/* Define if you have the crypt function.  */
-#define HAVE_CRYPT 1
-
-/* Define if you have the fchmod function.  */
-#define HAVE_FCHMOD 1
-
-/* Define if you have the fcntl function.  */
-#define HAVE_FCNTL 1
-
-/* Define if you have the getcwd function.  */
-#define HAVE_GETCWD 1
-
-/* Define if you have the getdomainname function.  */
-#define HAVE_GETDOMAINNAME 1
-
-/* Define if you have the getrusage function.  */
-#define HAVE_GETRUSAGE 1
-
-/* Define if you have the gettimeofday function.  */
-#define HAVE_GETTIMEOFDAY 1
-
-/* Define if you have the memcpy function.  */
-#define HAVE_MEMCPY 1
-
-/* Define if you have the memmem function.  */
-#undef HAVE_MEMMEM
-
-/* Define if you have the memmove function.  */
-#define HAVE_MEMMOVE 1
-
-/* Define if you have the memset function.  */
-#define HAVE_MEMSET 1
-
-/* Define if you have the strchr function.  */
-#define HAVE_STRCHR 1
-
-/* Define if you have the strcspn function.  */
-#define HAVE_STRCSPN 1
-
-/* Define if you have the strdup function.  */
-#define HAVE_STRDUP 1
-
-/* Define if you have the strrchr function.  */
-#define HAVE_STRRCHR 1
-
-/* Define if you have the sysconf function.  */
-#define HAVE_SYSCONF 1
-
-/* Define if you have the wait3 function.  */
-#define HAVE_WAIT3 1
-
-/* Define if you have the waitpid function.  */
-#define HAVE_WAITPID 1
-
-/* Define if you have the <bstring.h> header file.  */
-#define HAVE_BSTRING_H 1
-
-/* Define if you have the <crypt.h> header file.  */
-#undef HAVE_CRYPT_H
-
-/* Define if you have the <dirent.h> header file.  */
-#define HAVE_DIRENT_H 1
-
-/* Define if you have the <libc.h> header file.  */
-#undef HAVE_LIBC_H
-
-/* Define if you have the <limits.h> header file.  */
-#define HAVE_LIMITS_H 1
-
-/* Define if you have the <memory.h> header file.  */
-#define HAVE_MEMORY_H 1
-
-/* Define if you have the <ndir.h> header file.  */
-#define HAVE_NDIR_H 1
-
-/* Define if you have the <netdb.h> header file.  */
-#define HAVE_NETDB_H 1
-
-/* Define if you have the <stdlib.h> header file.  */
-#define HAVE_STDLIB_H 1
-
-/* Define if you have the <string.h> header file.  */
-#define HAVE_STRING_H 1
-
-/* Define if you have the <sys/dir.h> header file.  */
-#define HAVE_SYS_DIR_H 1
-
-/* Define if you have the <sys/ndir.h> header file.  */
-#undef HAVE_SYS_NDIR_H
-
-/* Define if you have the <sys/param.h> header file.  */
-#define HAVE_SYS_PARAM_H 1
-
-/* Define if you have the <sys/rusage.h> header file.  */
-#undef HAVE_SYS_RUSAGE_H
-
-/* Define if you have the <sys/termios.h> header file.  */
-#define HAVE_SYS_TERMIOS_H 1
-
-/* Define if you have the <sys/time.h> header file.  */
-#define HAVE_SYS_TIME_H 1
-
-/* Define if you have the <unistd.h> header file.  */
-#define HAVE_UNISTD_H 1
-
-/* Define if you have the <values.h> header file.  */
-#define HAVE_VALUES_H 1
-
-/* Define if you have the m library (-lm).  */
-#define HAVE_LIBM 1
-
-/* Define if you have the nsl library (-lnsl).  */
-#undef HAVE_LIBNSL
-
-/* Define if you have the socket library (-lsocket).  */
-#undef HAVE_LIBSOCKET
-
-#endif
diff --git a/src/hosts/be/Makefile b/src/hosts/be/Makefile
deleted file mode 100644
index 5d6a46b..0000000
--- a/src/hosts/be/Makefile
+++ /dev/null
@@ -1,775 +0,0 @@
-#-------------------------------------------------------
-# LDMud - Makefile for BeOS
-#-------------------------------------------------------
-#
-# Usage: make [CPU=ppc|x86] [O=<opt-spec>]
-#             [W=few|norm|all]
-#             [S=yes|no]
-#             [D=<flags>]
-#             [<target>]
-#
-# The variable CPU determines the platform for which
-# the program is compiled. If left unspecified, the
-# executing platform is targeted. The created objects
-# and binaries are located in subdirectories name
-# 'obj.<CPU>'.
-#
-# The variable O determines the optimization, the value
-# <opt-spec> is passed directly to the compiler. If the
-# variable is not specified, '1' is used as opt-spec.
-#
-# The variable W determines the amount of warning.
-# 'few' (the default) limits the warnings to those the
-# yet unmodified source can pass. 'norm' are full warnings,
-# except for those parts surrounded by pragmas. 'all' warnings
-# are full warnings.
-#
-# If S is given and set to 'yes', the compiler runs in strict
-# ansi mode, which also turns off inlines.
-#
-# If D is given, the <flags> are passed to the compiler on the
-# commandline.
-#
-# <target> is one of the following targets:
-#
-#  ldmud:      create executable for the selected platform
-#  all:        create executables for all platforms
-#  clean:      delete all object files of the selected platform
-#                and all unmodified source files.
-#  cleanall:   delete all object files and all unmodified
-#                source files.
-#  clobber:    delete the object/binary subdirectory
-#                for the selected platform
-#  clobberall: delete all object/binary subdirectories.
-#  depend:     update the dependency information in this file
-#  dependall:  update the dependency in all known Makefiles.
-#
-# If no <target> is given, 'ldmud' is assumed.
-#--------------------------------------------------------
-
-#--------------------------------------------------------
-# Application Specific Information
-#--------------------------------------------------------
-
-# The name of the application.
-    IMG_NAME = ldmud
-
-# General mud directory, by default containing all other directories.
-    prefix= /boot/home/mud
-
-# The directory the mudlib usually is in.
-    MUDLIB = ${prefix}/lib
-
-# The directory where the executables are installed. The default
-# erq path starts there.
-    BINDIR = ${prefix}/bin
-
-# The directory containing all executables which can be executed
-# by the erq. Only safe programs belong here!
-    ERQDIR = ${prefix}/erq
-
-# Debugging options:
-#   Debugging options should be set in config.h to guarantee a clean
-#   recompile.
-    DEBUG = 
-
-# Typical profiling, warning and optimizing options.
-#   -p -DMARK: together they enable the profiling of VM instructions.
-#   Additional profiling can be activated in config.h .
-#
-# Typical gcc optimisation settings.
-#   OPTIMIZE = -O4 -fomit-frame-pointer -funroll-all-loops  -g -fstrength-reduce -fno-force-mem -fno-force-addr -fno-inline-functions
-#   OPTIMIZE = -O2 -g -fstrength-reduce -fno-force-mem -fno-force-addr -fno-inline-functions
-#   OPTIMIZE = -O -g 
-#   OPTIMIZE = -g
-
-    PROFIL =
-    WARN =
-ifndef O
-    OPTIMIZE = -O1
-else
-    OPTIMIZE = -O${O}
-endif
-
-# The yacc used and the typically generated parser files
-    YACC = hosts/be/beyacc
-    YACCTAB = y.tab.
-
-# The C source files.
-    SRCS = access_check.c actions.c array.c backend.c bitstrings.c \
-           call_out.c closure.c \
-           comm.c dumpstat.c ed.c efuns.c files.c gcollect.c hash.c \
-           heartbeat.c \
-           interpret.c lex.c main.c mapping.c md5.c mempools.c mregex.c \
-           mstrings.c \
-           object.c otable.c parser.c parse.c \
-           pkg-alists.c pkg-mccp.c pkg-mysql.c pkg-pcre.c pkg-pgsql.c \
-           pkg-sqlite.c pkg-tls.c ptmalloc.c port.c ptrtable.c random.c \
-           regexp.c sha1.c simulate.c simul_efun.c stdstrings.c \
-           strfuns.c structs.c sprintf.c swap.c wiz_list.c xalloc.c
-
-# Generated source files (overlaps with of SRCS) which need to be
-# present for mkdepend to work.
-    GENSRCS = make_func.c stdstrings.c lang.c instrs.h pcre/chartables.c
-
-# Macros for MkDepend:
-    SKELETON = $(SRCS) mkfunc.c pcre/dftables.c
-    EXCEPT = -x efun_defs.c
-    SELECT = -S instrs.h -S stdstrings.h -S make_func.c -S lang.c -S lang.h -S efun_defs.c
-
-# Initialize the CFLAGS with the values above
-    CFLAGS += $(OPTIMIZE) $(DEBUG) $(WARN) $(PROFIL)
-    CFLAGS += -DMUD_LIB='"$(MUDLIB)"' -DBINDIR='"$(BINDIR)"'
-    CFLAGS += -DERQ_DIR='"$(ERQDIR)"'
-
-# Linker flags
-    LDFLAGS += -lz
-
-# Add additional flags if given
-
-ifdef D
-    CFLAGS += ${D}
-endif
-
-#--------------------------------------------------------
-# Application Independent Information
-#--------------------------------------------------------
-
-# determine the CPU if not specified on the command line
-# set MACHINE to the host machine
-# set NATIVE to the host cpu
-# set CROSS to the non-host cpu
-    MACHINE =$(shell uname -m)
-ifndef CPU
-ifeq ($(MACHINE), BePC)
-    CPU = x86
-else
-    CPU = ppc
-endif
-endif
-ifeq ($(MACHINE), BePC)
-    NATIVE = x86
-    CROSS = ppc
-else
-    NATIVE = ppc
-    CROSS = x86
-endif
-
-# set the object directory
-    OBJ	    := obj.$(CPU)
-    OBJ_NATIVE := obj.$(NATIVE)
-    OBJ_CROSS := obj.$(CROSS)
-
-# specify where to create the application binary
-    TARGET :=$(OBJ)/$(IMG_NAME)
-
-# The resource file, with and without path
-    RSRC      = $(IMG_NAME).rsrc
-    RSRC_FULL = hosts/be/$(RSRC)
-
-# The targets 'BEOS:TYPE' resource - empty as default for native compiles
-    MIMS      =
-
-# Tools
-    MIMESET = mimeset
-    MWBRES  = mwbres
-    XRES    = xres
-
-# platform specific settings
-ifeq ($(CPU), x86)
-ifeq ($(NATIVE), x86)
-    CC = gcc
-    LD = gcc
-else
-    CC = /boot/develop/tools/gnupro/bin/i586-beos-gcc
-    LD = /boot/develop/tools/gnupro/bin/i586-beos-gcc
-    MIMS = -a MIMS:2:BEOS:TYPE -s 'application/x-vnd.Be-elfexecutable'
-endif
-
-    CFLAGS += -g -Wall -Wshadow -Wno-parentheses -Winline
-
-ifeq ($(S), yes)
-    CFLAGS += -ansi -DNO_INLINES
-    # *sigh* -pedantic chokes on Be's include files
-endif
-
-    LDFLAGS += -Xlinker -soname=_APP_
-endif
-
-ifeq ($(CPU), ppc)
-ifeq ($(NATIVE), ppc)
-    CC = mwcc$(CPU)
-    LD = mwld$(CPU)
-else
-    CC = /boot/develop_ppc/bin/mwccppc
-    LD = /boot/develop_ppc/bin/mwldppc
-
-    CFLAGS += -I. -Ipcre
-    LDFLAGS += /boot/develop_ppc/lib/ppc/start_dyn.o \
-               /boot/develop_ppc/lib/ppc/glue-noinit.a \
-               /boot/develop_ppc/lib/ppc/init_term_dyn.o \
-               -L/boot/develop_ppc/lib/ppc \
-               -lroot -lnet
-
-    MIMS = -a MIMS:2:BEOS:TYPE -s 'application/x-be-executable'
-endif
-
-    # generate mapfiles for metrowerks.
-    MAP_FILE	:= $(TARGET).xMAP
-    SYMBOL_FILE	:= $(TARGET).xSYM
-
-    CFLAGS += -g -r
-
-ifndef W
-    CFLAGS += -w8
-else
-ifeq ($(W), few)
-    CFLAGS += -w8
-else
-ifeq ($(W), all)
-    CFLAGS += -DWARN_ALL -w9 -w=notinlined
-else
-    CFLAGS += -w9 -w=nonotinlined
-endif
-endif
-endif
-
-ifeq ($(S), yes)
-    CFLAGS += -ansi strict -DNO_INLINES
-endif
-
-    LDFLAGS += -sym full -map $(MAP_FILE) -export pragma \
-               -init _init_routine_ -term _term_routine_ 
-
-endif
-
-
-# pseudo-function for converting a list of source files in SRCS variable
-# to a corresponding list of object files in $(OBJ)/xxx.o
-# The "function" strips off the src file suffix (.ccp or .c or whatever)
-# and then strips of the directory name, leaving just the root file name.
-# It then appends the .o suffix and prepends the $(OBJ)/ path
-define SRCS_LIST_TO_OBJS
-	$(addprefix $(OBJ)/, $(addsuffix .o, $(foreach file, $(SRCS), $(basename $(notdir $(file))))))
-endef
-
-# specify the list of objects
-    OBJS := $(SRCS_LIST_TO_OBJS)
-
-#-------------------------------------------------------
-# Targets and their rules
-#-------------------------------------------------------
-
-# define the actual work to be done	
-default: $(TARGET)
-$(IMG_NAME): $(TARGET)
-
-all: $(TARGET)
-	@make CPU=$(CROSS) $(IMG_NAME)
-
-$(TARGET): $(OBJ) depend $(OBJS) $(RSRC_FULL)
-	$(LD) -o $@ $(OBJS) $(LDFLAGS)
-	$(XRES) -o $@ $(MIMS) $(RSRC_FULL)
-	$(MIMESET) -f $@
-	hosts/be/set-version $@
-ifneq ($(CPU), $(NATIVE))
-	[ -f $(OBJ_NATIVE)/$(IMG_NAME) ] && copyattr -n 'BEOS:M:STD_ICON' $(OBJ_NATIVE)/$(IMG_NAME) $@
-	[ -f $(OBJ_NATIVE)/$(IMG_NAME) ] && copyattr -n 'BEOS:L:STD_ICON' $(OBJ_NATIVE)/$(IMG_NAME) $@
-endif
-
-clean :: FORCE
-	-rm -f $(YACCTAB)h $(YACCTAB)c make_func.c $(OBJ)/mkfunc
-	-rm -f $(OBJ)/dftables pcre/chartables.c
-	-rm -f *~ efun_defs.c instrs.h lang.y lang.h lang.c y.output tags TAGS
-	-rm -f stdstrings.c stdstrings.h
-	-rm -f hosts/*~ hosts/*/*~ bugs/*~ done/*~ $(OBJ)/*.o
-	-rm -f pcre/*~ wk/*~ settings/*~
-
-cleanall :: clean
-	-rm -f $(OBJ_CROSS)/*.o
-
-clobber :: clean FORCE
-	-rm -rf $(OBJ) config.cache config.status config.log
-
-clobberall :: clobber cleanall
-	-rm -rf $(OBJ_CROSS)
-
-depend: $(SRCS) $(GENSRCS) $(OBJ)
-	@$(SHELL) -ec "if type mkdepend > /dev/null 2>&1; then \
-          echo Updating dependencies.; \
-          mkdepend $(SKELETON) -I. $(EXCEPT) -m -p .c:$$\(OBJ\)/%n.o -fMakefile; \
-          mkdepend $(SKELETON) -I. $(EXCEPT) $(SELECT) -m -p .c:$$\(OBJ\)/%n.o -fMakefile; \
-          mkdepend $(SKELETON) -I. $(EXCEPT) -m -p .c:$$\(OBJ\)/%n.o -fhosts/be/Makefile; \
-          mkdepend $(SKELETON) -I. $(EXCEPT) $(SELECT) -m -p .c:$$\(OBJ\)/%n.o -fhosts/be/Makefile; \
-        else\
-          echo mkdepend utility not available.; \
-        fi"
-
-.PHONY dependall: depend depend-generic
-
-depend-generic: $(SRCS) $(GENSRCS) $(OBJ)
-	@$(SHELL) -ec "if type mkdepend > /dev/null 2>&1; then \
-          echo Updating dependencies in Makefile.in.; \
-          mkdepend $(SKELETON) -I. $(EXCEPT) -m -p .c:%n.o -fMakefile.in; \
-          mkdepend $(SKELETON) $(SELECT) -I. $(EXCEPT) -m -p .c:%n.o -fMakefile.in; \
-        else\
-          echo mkdepend utility not available.; \
-        fi"
-
-AMIGASRCS:= 
-
-# Special rules for making mkfunc and dftables, depending on whether we're
-# crosscompiling or not.
-
-make_func.c : make_func.y
-	$(YACC) make_func.y
-	mv $(YACCTAB)c make_func.c
-
-$(OBJ)/mkfunc.o : mkfunc.c make_func.c driver.h config.h machine.h port.h
-	$(CC) $(INCLUDES) $(CFLAGS) -DYACC='"$(YACC)"' -c $< -o $@
-
-$(OBJ)/mkfunc : $(OBJ)/mkfunc.o $(OBJ)/hash.o
-	$(LD) -o $@ $^ $(LDFLAGS)
-	$(MIMESET) -f $@
-
-ifneq ($(CPU), $(NATIVE))
-$(OBJ_NATIVE)/mkfunc :
-	@[ -d $(OBJ_NATIVE) ] || mkdir $(OBJ_NATIVE) > /dev/null 2>&1
-	make CPU=$(NATIVE) $@
-endif
-
-$(OBJ)/dftables.o : pcre/dftables.c pcre/maketables.c pcre/config.h
-	$(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@
-
-$(OBJ)/dftables : $(OBJ)/dftables.o
-	$(LD) -o $@ $^ $(LDFLAGS)
-	$(MIMESET) -f $@
-
-ifneq ($(CPU), $(NATIVE))
-$(OBJ_NATIVE)/dftables :
-	@[ -d $(OBJ_NATIVE) ] || mkdir $(OBJ_NATIVE) > /dev/null 2>&1
-	make CPU=$(NATIVE) $@
-endif
-
-# The making of the compiler and associated files.
-
-efun_defs.c instrs.h : func_spec config.h $(OBJ_NATIVE)/mkfunc
-	-rm -f efun_defs.c instrs.h
-	$(OBJ_NATIVE)/mkfunc instrs
-
-stdstrings.c stdstrings.h: string_spec $(OBJ_NATIVE)/mkfunc config.h
-	rm -f stdstrings.c stdstrings.h
-	$(OBJ_NATIVE)/mkfunc strings
-
-lang.y : prolang.y config.h $(OBJ_NATIVE)/mkfunc
-	-rm -f lang.y
-	$(OBJ_NATIVE)/mkfunc lang
-
-lang.c lang.h : lang.y
-	$(YACC) -d -v lang.y
-	mv $(YACCTAB)c lang.c
-	mv $(YACCTAB)h lang.h
-
-pcre/chartables.c : $(OBJ_NATIVE)/dftables
-	$(OBJ_NATIVE)/dftables > pcre/chartables.c
-
-# Be Resource Mangling
-
-$(RSRC_FULL) : hosts/be/driver.r hosts/be/icon-32x32.raw hosts/be/icon-16x16.raw
-	cd hosts/be; $(MWBRES) -o $(RSRC) driver.r
-
-#--------------------------------------------------------
-#	Rules for the whole system
-#--------------------------------------------------------
-
-# rule to create the object file directory if needed
-$(OBJ)::
-	@[ -d $(OBJ) ] || mkdir $(OBJ) > /dev/null 2>&1
-
-# Don't stumble over non-existing include files.
-%.h :
-	@echo "Warning: Can't find $@."
-
-# default rule for xxx.c files to compile into $(OBJ)/xxx.o
-$(OBJ)/%.o : %.c
-	$(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@
-
-# empty rule. Things that depend on this rule will always get triggered
-FORCE:
-
-# remove just the application from the object folder
-rmapp ::
-	-rm -f $(TARGET)
-
-#--------------------------------------------------------
-# Dependencies, manual and automatic.
-
-# --- DO NOT MODIFY THIS LINE -- AUTO-DEPENDS FOLLOW ---
-$(OBJ)/access_check.o : xalloc.h filestat.h comm.h access_check.h driver.h \
-    svalue.h strfuns.h pkg-tls.h simulate.h typedefs.h config.h port.h \
-    sent.h bytecode.h hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/actions.o : ../mudlib/sys/driver_hook.h ../mudlib/sys/commands.h \
-    xalloc.h wiz_list.h svalue.h simulate.h sent.h stdstrings.h object.h \
-    mstrings.h mapping.h interpret.h efuns.h dumpstat.h comm.h closure.h \
-    backend.h array.h actions.h my-alloca.h typedefs.h driver.h strfuns.h \
-    bytecode.h hash.h pkg-tls.h main.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
-
-$(OBJ)/array.o : i-svalue_cmp.h xalloc.h wiz_list.h swap.h svalue.h \
-    simulate.h stdstrings.h object.h mstrings.h mempools.h mapping.h main.h \
-    interpret.h closure.h backend.h array.h my-alloca.h typedefs.h driver.h \
-    strfuns.h sent.h bytecode.h hash.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
-
-$(OBJ)/backend.o : ../mudlib/sys/debug_message.h \
-    ../mudlib/sys/driver_hook.h i-eval_cost.h xalloc.h wiz_list.h swap.h \
-    svalue.h stdstrings.h simulate.h random.h otable.h object.h mstrings.h \
-    mregex.h mapping.h main.h lex.h interpret.h heartbeat.h gcollect.h \
-    filestat.h exec.h ed.h comm.h closure.h call_out.h array.h actions.h \
-    backend.h my-alloca.h typedefs.h driver.h strfuns.h sent.h bytecode.h \
-    hash.h pkg-tls.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/bitstrings.o : xalloc.h svalue.h simulate.h mstrings.h interpret.h \
-    bitstrings.h typedefs.h driver.h strfuns.h sent.h bytecode.h hash.h \
-    backend.h port.h config.h main.h hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/call_out.o : ../mudlib/sys/debug_info.h i-eval_cost.h xalloc.h \
-    wiz_list.h swap.h svalue.h strfuns.h stdstrings.h simulate.h object.h \
-    mstrings.h main.h interpret.h gcollect.h exec.h comm.h closure.h \
-    backend.h array.h actions.h call_out.h typedefs.h driver.h sent.h \
-    bytecode.h hash.h pkg-tls.h port.h config.h hosts/unix.h hosts/be/be.h \
-    machine.h
-
-$(OBJ)/closure.o : i-svalue_cmp.h xalloc.h switch.h swap.h svalue.h \
-    structs.h stdstrings.h simul_efun.h simulate.h prolang.h object.h \
-    mstrings.h main.h lex.h interpret.h instrs.h exec.h backend.h array.h \
-    closure.h my-alloca.h typedefs.h driver.h strfuns.h hash.h ptrtable.h \
-    sent.h bytecode.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/comm.o : util/erq/erq.h ../mudlib/sys/input_to.h \
-    ../mudlib/sys/driver_hook.h ../mudlib/sys/comm.h i-eval_cost.h xalloc.h \
-    wiz_list.h swap.h svalue.h stdstrings.h simulate.h sent.h pkg-tls.h \
-    pkg-pgsql.h pkg-mccp.h object.h mstrings.h main.h interpret.h \
-    gcollect.h filestat.h exec.h ed.h closure.h array.h actions.h \
-    access_check.h comm.h ../mudlib/sys/telnet.h my-alloca.h typedefs.h \
-    driver.h strfuns.h bytecode.h hash.h backend.h config.h port.h \
-    hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/dumpstat.o : xalloc.h svalue.h structs.h stdstrings.h simulate.h \
-    ptrtable.h object.h mstrings.h mapping.h instrs.h filestat.h exec.h \
-    closure.h array.h dumpstat.h typedefs.h driver.h strfuns.h hash.h \
-    sent.h bytecode.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/ed.o : ../mudlib/sys/regexp.h xalloc.h svalue.h stdstrings.h \
-    simulate.h object.h mstrings.h mregex.h main.h lex.h interpret.h \
-    gcollect.h filestat.h comm.h actions.h ed.h typedefs.h driver.h \
-    strfuns.h sent.h bytecode.h hash.h backend.h pkg-tls.h port.h config.h \
-    hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/efuns.o : ../mudlib/sys/time.h ../mudlib/sys/strings.h \
-    ../mudlib/sys/regexp.h ../mudlib/sys/objectinfo.h \
-    ../mudlib/sys/driver_hook.h ../mudlib/sys/debug_info.h i-eval_cost.h \
-    xalloc.h wiz_list.h svalue.h swap.h structs.h strfuns.h simulate.h \
-    stdstrings.h sha1.h random.h ptrtable.h otable.h object.h mstrings.h \
-    mregex.h md5.h mempools.h mapping.h main.h lex.h interpret.h \
-    heartbeat.h exec.h dumpstat.h comm.h closure.h call_out.h backend.h \
-    array.h actions.h efuns.h my-rusage.h my-alloca.h typedefs.h driver.h \
-    hash.h sent.h bytecode.h my-stdint.h pkg-tls.h port.h config.h \
-    hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/files.o : ../mudlib/sys/files.h xalloc.h svalue.h stdstrings.h \
-    simulate.h mstrings.h mempools.h main.h lex.h interpret.h filestat.h \
-    comm.h array.h files.h my-alloca.h typedefs.h driver.h strfuns.h sent.h \
-    bytecode.h hash.h backend.h pkg-tls.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
-
-$(OBJ)/gcollect.o : ../mudlib/sys/driver_hook.h i-eval_cost.h xalloc.h \
-    wiz_list.h swap.h structs.h stdstrings.h simul_efun.h simulate.h sent.h \
-    random.h ptrtable.h prolang.h pkg-pgsql.h parse.h otable.h object.h \
-    mstrings.h mregex.h mempools.h mapping.h main.h lex.h instrs.h \
-    interpret.h heartbeat.h filestat.h ed.h comm.h closure.h call_out.h \
-    backend.h array.h actions.h gcollect.h typedefs.h driver.h svalue.h \
-    strfuns.h hash.h exec.h bytecode.h pkg-tls.h port.h config.h \
-    hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/hash.o : hash.h
-
-$(OBJ)/heartbeat.o : ../mudlib/sys/debug_info.h i-eval_cost.h xalloc.h \
-    wiz_list.h svalue.h strfuns.h simulate.h sent.h object.h mstrings.h \
-    interpret.h gcollect.h exec.h comm.h backend.h array.h actions.h \
-    heartbeat.h typedefs.h driver.h bytecode.h hash.h pkg-tls.h main.h \
-    port.h config.h hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/interpret.o : ../mudlib/sys/debug_info.h ../mudlib/sys/driver_hook.h \
-    i-eval_cost.h xalloc.h wiz_list.h switch.h swap.h svalue.h structs.h \
-    stdstrings.h simul_efun.h simulate.h prolang.h parse.h otable.h \
-    object.h mstrings.h mapping.h lex.h instrs.h heartbeat.h gcollect.h \
-    filestat.h exec.h efuns.h ed.h comm.h closure.h call_out.h backend.h \
-    array.h actions.h interpret.h my-alloca.h typedefs.h driver.h strfuns.h \
-    hash.h ptrtable.h sent.h bytecode.h pkg-tls.h main.h port.h config.h \
-    hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/lex.o : efun_defs.c ../mudlib/sys/driver_hook.h i-eval_cost.h \
-    xalloc.h wiz_list.h svalue.h strfuns.h stdstrings.h simul_efun.h \
-    simulate.h prolang.h patchlevel.h object.h mstrings.h mempools.h main.h \
-    lang.h interpret.h instrs.h hash.h gcollect.h filestat.h exec.h comm.h \
-    closure.h backend.h array.h lex.h my-alloca.h typedefs.h driver.h \
-    ptrtable.h sent.h bytecode.h pkg-tls.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
-
-$(OBJ)/main.o : ../mudlib/sys/regexp.h i-eval_cost.h pkg-mysql.h xalloc.h \
-    wiz_list.h swap.h svalue.h stdstrings.h simul_efun.h simulate.h \
-    random.h pkg-tls.h patchlevel.h otable.h object.h mstrings.h mregex.h \
-    mempools.h mapping.h lex.h interpret.h gcollect.h filestat.h comm.h \
-    array.h backend.h main.h my-alloca.h typedefs.h driver.h strfuns.h \
-    ptrtable.h exec.h sent.h bytecode.h hash.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
-
-$(OBJ)/mapping.o : i-svalue_cmp.h xalloc.h wiz_list.h svalue.h structs.h \
-    simulate.h object.h mstrings.h main.h interpret.h gcollect.h closure.h \
-    backend.h array.h mapping.h my-alloca.h typedefs.h driver.h strfuns.h \
-    hash.h exec.h sent.h bytecode.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
-
-$(OBJ)/md5.o : strfuns.h md5.h machine.h typedefs.h driver.h port.h \
-    config.h hosts/unix.h hosts/be/be.h
-
-$(OBJ)/mempools.o : ../mudlib/sys/debug_info.h xalloc.h svalue.h strfuns.h \
-    simulate.h gcollect.h mempools.h driver.h typedefs.h sent.h bytecode.h \
-    port.h config.h hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/mkfunc.o : make_func.c ../mudlib/sys/driver_hook.h hash.h exec.h \
-    my-alloca.h driver.h bytecode.h typedefs.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
-
-$(OBJ)/mregex.o : ../mudlib/sys/regexp.h ../mudlib/sys/driver_hook.h \
-    ../mudlib/sys/debug_info.h xalloc.h svalue.h strfuns.h simulate.h \
-    regexp.h pkg-pcre.h mstrings.h main.h interpret.h hash.h gcollect.h \
-    comm.h mregex.h driver.h typedefs.h sent.h bytecode.h pcre/pcre.h \
-    backend.h pkg-tls.h port.h config.h hosts/unix.h hosts/be/be.h \
-    machine.h
-
-$(OBJ)/mstrings.o : ../mudlib/sys/debug_info.h xalloc.h svalue.h strfuns.h \
-    stdstrings.h simulate.h main.h hash.h gcollect.h mstrings.h driver.h \
-    typedefs.h sent.h bytecode.h port.h config.h hosts/unix.h hosts/be/be.h \
-    machine.h
-
-$(OBJ)/object.o : ../mudlib/sys/inherit_list.h ../mudlib/sys/include_list.h \
-    ../mudlib/sys/functionlist.h ../mudlib/sys/driver_hook.h xalloc.h \
-    wiz_list.h svalue.h swap.h structs.h strfuns.h stdstrings.h \
-    simul_efun.h simulate.h sent.h random.h ptrtable.h prolang.h otable.h \
-    mstrings.h mempools.h mapping.h main.h lex.h instrs.h interpret.h \
-    filestat.h comm.h closure.h backend.h array.h actions.h object.h \
-    my-alloca.h typedefs.h driver.h ../mudlib/sys/lpctypes.h hash.h exec.h \
-    bytecode.h pkg-tls.h port.h config.h hosts/unix.h hosts/be/be.h \
-    machine.h
-
-$(OBJ)/otable.o : ../mudlib/sys/debug_info.h xalloc.h svalue.h simulate.h \
-    strfuns.h object.h mstrings.h hash.h gcollect.h backend.h otable.h \
-    typedefs.h driver.h sent.h bytecode.h main.h port.h config.h \
-    hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/parse.o : xalloc.h wiz_list.h svalue.h stdstrings.h simulate.h \
-    object.h mstrings.h main.h lex.h interpret.h gcollect.h array.h \
-    actions.h parse.h typedefs.h driver.h strfuns.h sent.h bytecode.h \
-    hash.h backend.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/parser.o : lang.c ../mudlib/sys/driver_hook.h i-eval_cost.h xalloc.h \
-    wiz_list.h switch.h swap.h svalue.h structs.h stdstrings.h simul_efun.h \
-    simulate.h object.h mstrings.h mapping.h main.h lex.h instrs.h \
-    interpret.h gcollect.h exec.h closure.h backend.h array.h prolang.h \
-    my-alloca.h typedefs.h driver.h strfuns.h hash.h ptrtable.h sent.h \
-    bytecode.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/dftables.o : pcre/maketables.c pcre/internal.h pcre/pcre.h \
-    pcre/config.h
-
-$(OBJ)/pkg-alists.o : i-svalue_cmp.h xalloc.h svalue.h simulate.h \
-    mstrings.h main.h interpret.h array.h my-alloca.h pkg-alists.h \
-    typedefs.h driver.h closure.h strfuns.h sent.h bytecode.h hash.h \
-    backend.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/pkg-idna.o : ../mudlib/sys/idn.h xalloc.h simulate.h mstrings.h \
-    interpret.h typedefs.h pkg-idna.h driver.h svalue.h strfuns.h sent.h \
-    bytecode.h hash.h backend.h port.h config.h main.h hosts/unix.h \
-    hosts/be/be.h machine.h
-
-$(OBJ)/pkg-mccp.o : ../mudlib/sys/telnet.h xalloc.h svalue.h object.h \
-    mstrings.h comm.h array.h pkg-mccp.h typedefs.h driver.h strfuns.h \
-    sent.h hash.h pkg-tls.h simulate.h port.h config.h bytecode.h \
-    hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/pkg-mysql.o : xalloc.h svalue.h stdstrings.h simulate.h mstrings.h \
-    main.h instrs.h interpret.h array.h pkg-mysql.h my-alloca.h typedefs.h \
-    driver.h strfuns.h sent.h bytecode.h hash.h exec.h backend.h port.h \
-    config.h hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/pkg-pcre.o : pcre/study.c pcre/maketables.c pcre/get.c pcre/pcre.c \
-    simulate.h interpret.h pkg-pcre.h driver.h pcre/internal.h \
-    pcre/chartables.c svalue.h strfuns.h sent.h bytecode.h typedefs.h \
-    backend.h pcre/pcre.h port.h config.h pcre/config.h main.h hosts/unix.h \
-    hosts/be/be.h machine.h
-
-$(OBJ)/pkg-pgsql.o : ../mudlib/sys/pgsql.h xalloc.h stdstrings.h simulate.h \
-    mstrings.h mapping.h main.h interpret.h instrs.h gcollect.h array.h \
-    actions.h pkg-pgsql.h my-alloca.h typedefs.h driver.h svalue.h \
-    strfuns.h sent.h bytecode.h hash.h backend.h exec.h port.h config.h \
-    hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/pkg-sqlite.o : xalloc.h stdstrings.h object.h svalue.h simulate.h \
-    mstrings.h interpret.h array.h my-alloca.h typedefs.h driver.h \
-    strfuns.h sent.h bytecode.h hash.h backend.h port.h config.h main.h \
-    hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/pkg-tls.o : ../mudlib/sys/tls.h xalloc.h svalue.h sha1.h object.h \
-    mstrings.h main.h interpret.h comm.h array.h actions.h pkg-tls.h \
-    machine.h driver.h strfuns.h typedefs.h my-stdint.h sent.h hash.h \
-    bytecode.h backend.h simulate.h port.h config.h hosts/unix.h \
-    hosts/be/be.h
-
-$(OBJ)/port.o : hosts/crypt.c main.h backend.h my-rusage.h driver.h \
-    machine.h typedefs.h port.h config.h hosts/unix.h hosts/be/be.h
-
-$(OBJ)/ptmalloc.o : ptmalloc/malloc.c machine.h config.h ptmalloc/hooks.c \
-    ptmalloc/arena.c ptmalloc/thread-m.h ptmalloc/malloc.h \
-    ptmalloc/config.h
-
-$(OBJ)/ptrtable.o : simulate.h mempools.h ptrtable.h driver.h svalue.h \
-    strfuns.h sent.h bytecode.h typedefs.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
-
-$(OBJ)/random.o : random.h driver.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
-
-$(OBJ)/regexp.o : i-eval_cost.h main.h xalloc.h simulate.h regexp.h \
-    driver.h interpret.h typedefs.h svalue.h strfuns.h sent.h bytecode.h \
-    pkg-pcre.h port.h config.h backend.h pcre/pcre.h hosts/unix.h \
-    hosts/be/be.h machine.h
-
-$(OBJ)/sha1.o : sha1.h my-stdint.h driver.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
-
-$(OBJ)/simul_efun.o : xalloc.h swap.h svalue.h stdstrings.h simulate.h \
-    prolang.h ptrtable.h object.h mstrings.h lex.h interpret.h gcollect.h \
-    exec.h array.h simul_efun.h my-alloca.h typedefs.h driver.h strfuns.h \
-    sent.h bytecode.h hash.h backend.h port.h config.h main.h hosts/unix.h \
-    hosts/be/be.h machine.h
-
-$(OBJ)/simulate.o : ../mudlib/sys/rtlimits.h ../mudlib/sys/regexp.h \
-    ../mudlib/sys/files.h ../mudlib/sys/driver_hook.h \
-    ../mudlib/sys/debug_info.h i-eval_cost.h xalloc.h wiz_list.h svalue.h \
-    swap.h structs.h strfuns.h stdstrings.h simul_efun.h sent.h prolang.h \
-    pkg-sqlite.h pkg-tls.h otable.h object.h mstrings.h mregex.h mempools.h \
-    mapping.h main.h lex.h heartbeat.h gcollect.h filestat.h ed.h comm.h \
-    closure.h call_out.h backend.h array.h actions.h simulate.h my-alloca.h \
-    typedefs.h driver.h interpret.h hash.h exec.h ptrtable.h bytecode.h \
-    port.h config.h hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/sprintf.o : xalloc.h swap.h svalue.h structs.h stdstrings.h \
-    simul_efun.h simulate.h sent.h random.h ptrtable.h object.h mstrings.h \
-    mapping.h main.h interpret.h comm.h closure.h array.h actions.h \
-    sprintf.h my-alloca.h typedefs.h driver.h strfuns.h hash.h exec.h \
-    bytecode.h backend.h pkg-tls.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
-
-$(OBJ)/stdstrings.o : mstrings.h stdstrings.h typedefs.h driver.h hash.h \
-    port.h config.h hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/strfuns.o : xalloc.h svalue.h stdstrings.h simulate.h object.h \
-    mstrings.h mapping.h main.h interpret.h comm.h strfuns.h my-alloca.h \
-    typedefs.h driver.h sent.h bytecode.h hash.h backend.h pkg-tls.h port.h \
-    config.h hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/structs.o : ../mudlib/sys/struct_info.h ../mudlib/sys/debug_info.h \
-    xalloc.h wiz_list.h stdstrings.h simulate.h object.h mstrings.h \
-    mapping.h main.h interpret.h gcollect.h exec.h array.h structs.h \
-    driver.h ../mudlib/sys/lpctypes.h svalue.h strfuns.h typedefs.h sent.h \
-    bytecode.h hash.h backend.h port.h config.h hosts/unix.h hosts/be/be.h \
-    machine.h
-
-$(OBJ)/swap.o : ../mudlib/sys/debug_info.h xalloc.h wiz_list.h svalue.h \
-    structs.h strfuns.h stdstrings.h simul_efun.h simulate.h random.h \
-    prolang.h otable.h object.h mstrings.h mempools.h mapping.h main.h \
-    interpret.h gcollect.h comm.h closure.h backend.h array.h swap.h \
-    typedefs.h driver.h hash.h exec.h ptrtable.h sent.h bytecode.h \
-    pkg-tls.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
-
-$(OBJ)/wiz_list.o : xalloc.h svalue.h stdstrings.h simulate.h object.h \
-    mstrings.h mapping.h main.h interpret.h gcollect.h backend.h array.h \
-    ../mudlib/sys/wizlist.h wiz_list.h my-alloca.h typedefs.h driver.h \
-    strfuns.h sent.h bytecode.h hash.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
-
-$(OBJ)/xalloc.o : xptmalloc.c sysmalloc.c slaballoc.c smalloc.c mstrings.h \
-    object.h exec.h simulate.h interpret.h gcollect.h backend.h xalloc.h \
-    driver.h ../mudlib/sys/debug_info.h ptmalloc/malloc.h svalue.h \
-    stdstrings.h sysmalloc.h array.h slaballoc.h typedefs.h smalloc.h \
-    hash.h sent.h bytecode.h strfuns.h main.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
-
-# --- DO NOT MODIFY THIS LINE -- AUTO-DEPENDS PRECEDE ---
-# --- DO NOT MODIFY THIS LINE -- SELECTED AUTO-DEPENDS FOLLOW ---
-$(OBJ)/actions.o : stdstrings.h
-
-$(OBJ)/array.o : stdstrings.h
-
-$(OBJ)/backend.o : stdstrings.h
-
-$(OBJ)/call_out.o : stdstrings.h
-
-$(OBJ)/closure.o : stdstrings.h instrs.h
-
-$(OBJ)/comm.o : stdstrings.h
-
-$(OBJ)/dumpstat.o : stdstrings.h instrs.h
-
-$(OBJ)/ed.o : stdstrings.h
-
-$(OBJ)/efuns.o : stdstrings.h
-
-$(OBJ)/files.o : stdstrings.h
-
-$(OBJ)/gcollect.o : stdstrings.h instrs.h
-
-$(OBJ)/interpret.o : stdstrings.h instrs.h
-
-$(OBJ)/lex.o : efun_defs.c stdstrings.h lang.h instrs.h
-
-$(OBJ)/main.o : stdstrings.h
-
-$(OBJ)/mkfunc.o : make_func.c
-
-$(OBJ)/mstrings.o : stdstrings.h
-
-$(OBJ)/object.o : stdstrings.h instrs.h
-
-$(OBJ)/parse.o : stdstrings.h
-
-$(OBJ)/parser.o : lang.c stdstrings.h instrs.h
-
-$(OBJ)/pkg-mysql.o : stdstrings.h instrs.h
-
-$(OBJ)/pkg-pgsql.o : stdstrings.h instrs.h
-
-$(OBJ)/pkg-sqlite.o : stdstrings.h
-
-$(OBJ)/simul_efun.o : stdstrings.h
-
-$(OBJ)/simulate.o : stdstrings.h
-
-$(OBJ)/sprintf.o : stdstrings.h
-
-$(OBJ)/stdstrings.o : stdstrings.h
-
-$(OBJ)/strfuns.o : stdstrings.h
-
-$(OBJ)/structs.o : stdstrings.h
-
-$(OBJ)/swap.o : stdstrings.h
-
-$(OBJ)/wiz_list.o : stdstrings.h
-
-$(OBJ)/xalloc.o : stdstrings.h
-
-# --- DO NOT MODIFY THIS LINE -- SELECTED AUTO-DEPENDS PRECEDE ---
diff --git a/src/hosts/be/be.h b/src/hosts/be/be.h
deleted file mode 100644
index e2925bd..0000000
--- a/src/hosts/be/be.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef HOSTS_BE_H
-#define HOSTS_BE_H
-
-#include <BeBuild.h>
-
-#define SOCKET_HEADER "hosts/be/socketinc.h"
-#define SOCKET_LIB 1
-
-#undef HOST_DEPENDENT_INIT
-#define HOST_DEPENDENT_INIT \
-    { no_erq_demon++; /* Be's fork() does not cover sockets, thus no auto-erq */\
-    }
-
-
-#ifdef __MWERKS__
-#    if !defined(B_BEOS_VERSION_5)
-#        define isascii(c) !((unsigned long)c & 0xFFFFFF80)
-#    endif
-#    ifndef EMSGSIZE
-#        define EMSGSIZE 42
-#    endif
-#endif
-
-#define FNDELAY O_NONBLOCK
-
-#endif
diff --git a/src/hosts/be/beyacc b/src/hosts/be/beyacc
deleted file mode 100755
index 60a2d45..0000000
--- a/src/hosts/be/beyacc
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-#
-# Wrapper to call the proper parser generator: byacc if it is installed,
-# otherwise bison.
-
-if [ $(type -p byacc) ]; then
-    exec byacc $*
-else
-    exec bison -y $*
-fi
diff --git a/src/hosts/be/config.h b/src/hosts/be/config.h
deleted file mode 100644
index 1be77b5..0000000
--- a/src/hosts/be/config.h
+++ /dev/null
@@ -1,540 +0,0 @@
-#ifndef CONFIG_H__
-#define CONFIG_H__ 1
-
-/* Should code for the external request demon be included?
- */
-#define ERQ_DEMON
-
-/* Maximum sizes for an erq send or reply.
- */
-#define ERQ_MAX_REPLY 1024
-#define ERQ_MAX_SEND  1024
-
-/* #define ACCESS_CONTROL if you want the driver to do any access control.
- * TODO: ACCESS_CONTROL should be a runtime option
- */
-#define ACCESS_CONTROL
-
-/* file for access permissions data */
-#define ACCESS_FILE "ACCESS.ALLOW"
-
-/* logfile to show valid and rejected connections
- * simple not define this for NO logs
- */
-/* #define ACCESS_LOG "access.allow.log" */
-
-/*
- * Max size of a file allowed to be read by 'read_file()'.
- */
-#define READ_FILE_MAX_SIZE        50000
-
-/*
- * If an object is left alone for a certain time, then the
- * function clean_up will be called. This function can do anything,
- * like destructing the object. If the function isn't defined by the
- * object, then nothing will happen.
- *
- * This time should be substantially longer than the swapping time.
- */
-#define TIME_TO_CLEAN_UP          3600
-
-/*
- * How long time until an unused object is swapped out.
- * Machine with too many players and too little memory: 900 (15 minutes)
- * Machine with few players and lot of memory: 10000
- * Machine with infinite memory: 0 (never swap).
- */
-#define TIME_TO_SWAP               900
-#define TIME_TO_SWAP_VARIABLES    1800
-
-/*
- * How many seconds until an object is reset again.
- * Set this value high if big system, otherwise low.
- * No castles:         1800        (30 minutes)
- * >100 castles:10000        (almost 3 hours).
- */
-#define TIME_TO_RESET             1800 /* 3600 */        /* one hour */
-
-/*
- * Define the maximum stack size of the stack machine. This stack will also
- * contain all local variables and arguments.
- */
-#define EVALUATOR_STACK_SIZE      2000
-
-/*
- * Define the maximum call depth for functions.
- * MAX_USER_TRACE is used for for normal program execution, the full
- * MAX_TRACE is only available in error handling.
- */
-#define MAX_USER_TRACE              60
-#define MAX_TRACE                   65
-
-/*
- * Define the size of the compiler stack. This defines how complex
- * expressions the compiler can parse. The value should be big enough.
- */
-#define COMPILER_STACK_SIZE        400
-
-/*
- * Maximum number of bits in a bit field. They are stored in printable
- * strings, 6 bits per byte.
- * The limit is more based on considerations of speed than memory
- * consumption.
- */
-#define MAX_BITS                  6144        /* 1 KByte */
-
-/*
- * Define what port number the game is to use.
- */
-#define PORTNO                    4242
-
-/* Maximum numbers of ports the GD accepts connections to.
- */
-#define MAXNUMPORTS                 20
-
-/*
- * Max number of local variables in a function.
- */
-#define MAX_LOCAL                   50
-
-/* Maximum number of evaluated nodes/loop.
- * If this is exceeded, the current function is halted.
- * ls() can take about 30000 for large directories.
- */
-#define MAX_COST               1000000
-
-/* Define ALLOW_FILENAME_SPACES if the driver should accept space characters
- * in filenames. If it is not defined, a hardcoded test for space characters
- * is activated.
- */
-#undef ALLOW_FILENAME_SPACES
-
-
-/* Define SHARE_VARIABLES if a clone's variables are to be assigned
- * from the current blueprint's variables. Undefine it if clones
- * should be initialized by __INIT().
- */
-#undef SHARE_VARIABLES
-
-/* CATCH_RESERVED_COST is added to the eval cost for the time executing code
- * guarded by a catch() statement, so that an eval_cost-too-big error can
- * still be caught and handled.
- *
- * To catch an eval_cost too big error in an object that called recursive
- * master functions, CATCH_RESERVED_COST should be greater than
- * MASTER_RESERVED_COST * 2.
- * TODO: Check that at runtime.
- */
-#define CATCH_RESERVED_COST       2000
-
-/* MASTER_RESERVED_COST is the total reserve available for master applies.
- * It is halved for every recursion into another master apply.
- */
-#define MASTER_RESERVED_COST     0x200 /* must be power of 2 */
-/* TODO: Check that at runtime */
-
-/*
- * Where to swap out objects. This file is not used if TIME_TO_SWAP is 0.
- * If the mudlib is mounted via nfs but your /tmp isn't, and isn't purged
- * periodically either, it's a good idea to place the swap file there.
- * The hostname will be appended to the filename defined here.
- */
-#define SWAP_FILE           "LP_SWAP.3"
-
-/* Where to save the WIZLIST information.
- * If not defined, and neither given on the commandline, the driver will
- * not read the WIZLIST file.
- */
-#define WIZLIST_FILE              "WIZLIST"
-
-/* This is the maximum array size allowed for one single array.
- * If 0, any size is allowed.
- */
-#define MAX_ARRAY_SIZE            3000
-
-/* This is the maximum size (number keys and values) allowed for one
- * single mapping.
- * If 0, any size is allowed.
- */
-#define MAX_MAPPING_SIZE            15000
-
-/* This is the maximum number of callouts allowed at one time.
- * If 0, any number is allowed.
- */
-#define MAX_CALLOUTS              0
-
-/*
- * If this is defined, expensive operations like string additions
- * receive additional evalcosts depending on the amount of data handled.
- */
-
-#define DYNAMIC_COSTS
-
-/*
- * Maximum number of players in the game.
- */
-#define MAX_PLAYERS                 50
-
-/*
- * When uploading files, we want fast response; however, normal players
- * shouldn't be able to hog the system in this way.  Define ALLOWED_ED_CMDS
- * to be the ratio of the no of ed cmds executed per player cmd, and
- * MAX_CMDS_PER_BEAT to be the max no of buffered player commands the
- * system will accept in each heartbeat interval.
- */
-
-#define ALLOWED_ED_CMDS             20
-#define MAX_CMDS_PER_BEAT            5 /* not implemented yet :-( */
-
-/*
- * Reserve an extra memory area from malloc(), to free when we run out
- * of memory to get some warning and start Armageddon.
- * If this value is 0, no area will be reserved.
- */
-#define RESERVED_USER_SIZE      700000
-#define RESERVED_MASTER_SIZE    100000
-#define RESERVED_SYSTEM_SIZE    200000
-
-/* Define the size of the shared string hash table.  This number needn't
- * be prime, probably between 1000 and 30000; if you set it to about 1/5
- * of the number of distinct strings you have, you will get a hit ratio
- * (number of comparisons to find a string) very close to 1, as found strings
- * are automatically moved to the head of a hash chain.  You will never
- * need more, and you will still get good results with a smaller table.
- * If the size is a power of two, hashing will be faster.
- */
-
-#define HTABLE_SIZE               4096
-
-/* Define the size of the table of defines, reserved words, identifiers
- * and efun names. Should be either several times smaller than HTABLE_SIZE
- * or identical with it.
- */
-#define ITABLE_SIZE                256   /* 256 is probably fastest */
-
-/* Object hash table size.
- * Define this like you did with the strings; probably set to about 1/4 of
- * the number of objects in a game, as the distribution of accesses to
- * objects is somewhat more uniform than that of strings.
- */
-
-#define OTABLE_SIZE               1024
-
-/* Maximum size of an expanded preprocessor definition.
- */
-
-#define DEFMAX                   65000
-
-/* the number of apply_low cache entries will be 2^APPLY_CACHE_BITS.
- */
-#define APPLY_CACHE_BITS            12
-
-/* The parameters of the regular expression/result cache.
- * The expression cache uses a hashtable of RXCACHE_TABLE entries.
- * Undefine RXCACHE_TABLE to disable the all regexp caching.
- */
-
-#define RXCACHE_TABLE            8192
-
-/* Define COMPAT_MODE if you are using the 2.4.5 mudlib or one of its
- * derivatives.
- */
-#undef COMPAT_MODE
-
-/* Define STRICT_EUIDS if the driver is to enforce the use of euids,
- * ie. load_object() and clone_object() require the current object to
- * have a non-zero euid.
- */
-#undef STRICT_EUIDS
-
-/* Define USE_PARSE_COMMAND if you want the efun parse_command().
- */
-#define USE_PARSE_COMMAND
-
-/* Define USE_SET_LIGHT if you want the efun set_light() and the
- * simple 2.4.5 light system.
- */
-#define USE_SET_LIGHT
-
-/* Define USE_SET_IS_WIZARD if you want the efun set_is_wizard().
- */
-#define USE_SET_IS_WIZARD
-
-/* Define USE_PROCESS_STRING if you want the efun process_string().
- */
-#define USE_PROCESS_STRING
-
-/* Define INITIALIZATION_BY___INIT if you want all initializations of variables
- * to be suspended till the object is created ( as supposed to initialization
- * at compile time; the latter is more memory efficient for loading and faster
- * at cloning, while the former allows to use efuns, e.g. shutdown().
- */
-
-#define INITIALIZATION_BY___INIT
-
-/* Define USE_SYSTEM_CRYPT if you want crypt() to be implemented by your
- * operating system (assuming it offers this function). This makes your
- * programm smaller and may even let you take advantage of improvements
- * of your OS, but may also prohibit transporting encrypted date like
- * passwords between different systems.
- * Undefine USE_SYSTEM_CRYPT if you want to use the driver's portable
- * crypt() implementation.
- */
-#define USE_SYSTEM_CRYPT
-
-/* Define MASTER_NAME if you want something different from "obj/master" resp.
- * "secure/master" as default.
- */
-/* #define MASTER_NAME "kernel/master" */
-
-/* The input escape character.
- */
-#define INPUT_ESCAPE             "!"
-
-/*
- * Define MAX_BYTE_TRANSFER to the number of bytes you allow to be read
- * and written with read_bytes and write_bytes
- */
-
-#define MAX_BYTE_TRANSFER        50000
-
-/* Define this to the port on which the driver can receive UDP message.
- * If set to -1, the port will not be opened unless the mud is given a valid
- * port number on startup with the -u commandline option.
- */
-#define UDP_PORT                 4246
-
-/* Maximum size of a socket send buffer.
- */
-#define SET_BUFFER_SIZE_MAX      65536
-
-/* Define this if you want IPv6 support (assuming that your host
- * actually offers this.
- */
-#undef USE_IPV6
-
-/* Define this if you want alist support.
- */
-#undef USE_ALISTS
-
-/* Define this if you want to allow call_other()s on arrays of objects.
- */
-#define USE_ARRAY_CALLS
-
-/* Define this if you want PCRE instead of traditional regexps.
- */
-#define USE_PCRE
-
-/* Define this if you want to use builtin PCRE (ignored when PCRE
- * is disabled as a whole).
- */
-#undef USE_BUILTIN_PCRE
-
-/* Define this if you want MCCP (Mud Control Compression Protocol).
- */
-#define USE_MCCP
-
-/* Define this if you want TLS (Transport Layer Security) over Telnet.
- */
-#undef USE_TLS
-
-/* Define this if you want mySQL support (assuming that your host
- * actually offers this.
- */
-#undef USE_MYSQL
-
-/* Define this if you want the obsolete and deprecated efuns.
- */
-#define USE_DEPRECATED
-
-/* Runtime statistics:
- *  COMM_STAT: count number and size of outgoing packets.
- *  APPLY_CACHE_STAT: count number of hits and misses in the apply cache.
- */
-#define COMM_STAT
-#define APPLY_CACHE_STAT
-
-/* Which memory manager to use. Possible defines are
- *   MALLOC_smalloc:   Satoria's malloc. Fastest, uses the least memory,
- *                     supports garbage collection.
- *   MALLOC_sysmalloc: the normal system malloc()
- *   MALLOC_ptmalloc:  ptmalloc from www.malloc.de - threadsafe.
- */
-
-#define MALLOC_smalloc
-
-/* If MIN_MALLOCED is > 0, the gamedriver will reserve this amount of
- * memory on startup for large blocks, thus reducing the large block
- * fragmentation. The value therefore should be a significantly large
- * multiple of the large chunk size.
- * As a rule of thumb, reserve enough memory to cover the first couple
- * of days of uptime.
- */
-#define MIN_MALLOCED         0
-
-/* If MIN_SMALL_MALLOCED is > 0, the gamedriver will reserve this
- * amount of memory on startup for small blocks, thus reducing the small block
- * fragmentation. The value therefore should be a significantly large
- * multiple of the small chunk size.
- * As a rule of thumb, reserve enough memory to cover the first couple
- * of days of uptime.
- */
-#define MIN_SMALL_MALLOCED  0
-
-/* This value gives the upper limit for the total allocated memory
- * (useful for systems with no functioning process limit).
- * A value of 0 means 'unlimited'.
- */
-#define MAX_MALLOCED         0x4000000
-
-/* Define this to let the memory allocator request memory from the system
- * directly using sbrk() (assuming the system supports it).
- * If not defined, the memory allocator will use malloc().
- * Supported by: MALLOC_smalloc
- */
-#define MALLOC_SBRK
-
-/* Define this to annotate all allocations with a magic word to find
- * simple misuses of memory (like multiple frees).
- * Supported by: MALLOC_smalloc
- */
-#define MALLOC_CHECK
-
-/* Define this to annotate all allocations with file:line of the driver
- * source responsible for it.
- * Supported by: MALLOC_smalloc
- */
-#undef MALLOC_TRACE
-
-/* Define this to annotate all allocations with file:line of the lpc program
- * responsible for it.
- * Supported by: MALLOC_smalloc
- */
-#undef MALLOC_LPC_TRACE
-
-/* Define this to log all calls to esbrk() (the system memory allocator).
- * Works best if MALLOC_TRACE, or also MALLOC_LPC_TRACE, are defined.
- * Supported by: MALLOC_smalloc
- */
-#undef MALLOC_SBRK_TRACE
-
-/* Trace the most recently executed bytecode instructions?
- */
-#define TRACE_CODE
-
-/* If using TRACE_CODE , how many instructions should be kept? */
-#define TOTAL_TRACE_LENGTH      0x1000
-
-/* If you want to use threads to write the data to the sockets 
- * define USE_PTHREADS. To limit the memory usage of each thread
- * define PTHREAD_WRITE_MAX_SIZE to a value greater than zero.
- * The implementation will discard the oldest not yet written 
- * data blocks to keep memoty usage under the limit.
- */
-#undef USE_PTHREADS
-#define PTHREAD_WRITE_MAX_SIZE 100000
-
-/*----------------------------------------------------------------*/
-/* The following macros activate various debugging and profiling
- * code segments.
- */
-
-/* Enable basic run time sanity checks. This will use more time
- * and space, but nevertheless you are strongly encouraged to keep
- * it defined.
- */
-#define DEBUG
-
-/* The DEBUG level for the ERQ daemon: 0 means 'no debug', 1 means
- * 'standard debug', 2 means 'verbose debug'.
- */
-#define ERQ_DEBUG 0
-
-/* Enable debug output from the LPC compiler.
- */
-/* #define YYDEBUG 1 */
-
-/* Disable inlining.
- */
-/* #define NO_INLINES */
-
-/* Enable the shared string checking (enables commandline option
- * --check-strings).
- */
-#define CHECK_STRINGS
-
-/* Shared strings are never really freed.
- */
-/* #define KEEP_STRINGS */
-
-/* Activate debug prints in the telnet machine.
- */
-/* #define DEBUG_TELNET */
-
-/* Activate allocation debug prints in the smalloc module.
- */
-/* #define DEBUG_SMALLOC_ALLOCS */
-
-/* Trace changes to the tot_alloc_object and tot_alloc_object_size
- * statistics, in order to find the status bugs (enables commandline
- * option --check-object-stat). Will produce a decent amount of
- * output on stderr.
- */
-#define CHECK_OBJECT_STAT
-
-/* Enable the automatic data cleanup from the backend.
- * TODO: Remove this macro once it is proven stable.
- */
-#define NEW_CLEANUP
-
-/* Activate total mapping size consistency check code. It has a small
- * impact on the execution speed. This define was used to find
- * the inaccuracy in the mapping statistic.
- */
-/* #define CHECK_MAPPING_TOTAL */
-
-/* Activate object refcount check code. It will produce a decent
- * amount of log output. It will also fatal() the driver as soon
- * as it detects an inconsistency in the list of destructed objects.
- */
-/* #define CHECK_OBJECT_REF */
-
-/* Activate object referencing checking code during the GC. It will
- * print error messages to gcout when an object or program is
- * referenced as something else. No penalty for using.
- * Requires MALLOC_TRACE to work. Incompatible with DUMP_GC_REFS.
- */
-#ifdef MALLOC_TRACE
-#    define CHECK_OBJECT_GC_REF
-#endif
-
-/* Sometimes the GC stumbles over invalid references to memory
- * blocks (namely 'Program referenced as something else'). Define
- * this macro to get a detailed dump of all found references
- * (Warning: LOTS of output!). Incompatible with CHECK_OBJECT_GC_REF.
- */
-/* #define DUMP_GC_REFS */
-
-/* Enable usage statistics of VM instructions.
- * For profiling of the VM instructions themselves, see the Profiling
- * Options in the Makefile.
- */
-/* #define OPCPROF */
-
-#ifdef OPCPROF
-/* With OPCPROF, the dump of the statistics include the names
- * of the instructions.
- */
-/* #define VERBOSE_OPCPROF */
-#endif
-
-/* Define this if you want structs supported.
- */
-#define USE_STRUCTS
-
-/* Define this if you want the new inline closure syntax supported.
- * (f-020528)
- */
-#define USE_NEW_INLINES
-
-#endif /* CONFIG_H__ */
diff --git a/src/hosts/be/driver.r b/src/hosts/be/driver.r
deleted file mode 100644
index 64616c8..0000000
--- a/src/hosts/be/driver.r
+++ /dev/null
@@ -1,10 +0,0 @@
-// BeOS Resource Specifications
-
-// --- Icons ---
-resource('ICON', 101, "BEOS:L:STD_ICON") {
-	read("icon-32x32.raw")
-}
-
-resource('MICN', 101, "BEOS:M:STD_ICON") {
-	read("icon-16x16.raw")
-}
diff --git a/src/hosts/be/driver.rsrc b/src/hosts/be/driver.rsrc
deleted file mode 100644
index 2388ae69c490ede61b353d3d154499c12be33fce..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3368
zcmeHJyKWOf6umoHZ&oX`8y6OmT>)kOAk9j|6hR~|k|G`31koWuMM3H1V~qA+((wuK
z2eDi%=bV{+L`WbZxj^zw)}A}(p8N70k6(ZI{Osf1r+4-jS*}iK;qWZY5<LGT<brtg
z)BA|t`?XmM+28ufHw3-${*SSaLh>orabL)ObJ%x{2mkw<pF?jCy*<ppVFvz>8E6aM
zWDwn|crW6tD2g<SxQERmIieVJTS(tdw)O?O&B-Z}phK-jxYUt8x0;t{um@UKRb6-b
z9M^1>P<O}M2~dkFZ_o7{@gRvchMeZu;jP?ouWcPIC=FrYw6{cTn(Lvia>!6+VWG9Q
z`j-LmTb9#F5G-A<1U$>q6#Ehf2{?2aSeC{vg$V2UR+b|?VD#bnRxYN0zz4X6|DC&a
z>$Pq0cQ5`37XCnd0{m3?7$zP+ApUxS;HUcC*2iW6^#7Poc+?W`<6G9f!S21uxm8tX
zA^*e?-w<Ey3exrIar^-u@E!6)eTE2xF*;!56YcuDWBSBL&Z#K{<sa%J+ZpL4{yA@|
zFGhXH&$FF19@ab(w;26JePpwL=Gh&Nb3wjf^|z7puan^4riT0lZ`5DHK0TFSFz_%t
zh!tSWYm+w|Xe5xrKy4w3>08a%Jx&9CBpuvf-eJ)3&C-}50=*;vc)&5B2+_efXANdP
zoG-=)><tjStUV4Nd7djhz=i^+3%S4x`NBcQuVzlP=E|BxeAE_jTP$Ybz!(l%z;iC4
z=lIT<WoiN&G2lFsKKLvf@V4g*Bjq^^`R)aZ#3#<Z%Zu|XY~A6B?BwOE)%Drs+4arx
Z?Zx@(s%J{^RxVh*`Q7Tri|<eA{ujF{(pCTf

diff --git a/src/hosts/be/icon-16x16.raw b/src/hosts/be/icon-16x16.raw
deleted file mode 100644
index ec5dccec5bd1f17b1ab7a6a500ad4196dcef33e3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 256
zcmYk1F%H8p3<K%3QHn0w)z9f8UHzQ=&y!0kE)W8Sbs_~@)8{3u+n;ZDf3-#in{E#Y
zWPFOpKJX<YG~>3Im^Z)h#(@rM<>~g!-v1nENE2_z*y*C>l~)~nk20L#pMo963DlgM
W64EJ~zVfh|R=ke5*3m?5wu&Ef@>5Fy

diff --git a/src/hosts/be/icon-32x32.raw b/src/hosts/be/icon-32x32.raw
deleted file mode 100644
index 7a374e7ccd5c7fce90be3aac93f6bc47b6aaa125..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1024
zcmaKrJ&wXK5QU$t5Jf30QKU+@Er-Z8D03OIhl%97a2q5F?|U;g4(w_NBy4~4<_|mP
z4CFWawU1~=T!v5oaU2Gon+00o+*@3XLl*{`v6mjpa^Qt2hU>A+=YM#^nem_D8g4i2
z{M=1{z{VfqC-RH&BNp!-%zryE`9=BP@E>}Wb{Glu-Bo?>JiWUb>smc5zBu!P`Axmj
z>YU#5H{AG>^|3!NgYahR?Z8#O_#wD<R)XeJ`;$7bwsl?j-7G|_&(#6RabGz)&X@g3
zt@**#m173y>)7U-Eco}S=y3+~n|inT3VV6h0_fma6Xc4x-;iQT&IdZ!SR_*U*p&Ol
zK?nOwDo!A0grWzAPAQ6f5g=}y7nCU~?g@D3llHp7R0pc%z~sy3oH1gI6@v|)XDMXT
z8`taN^ccqO6;f|{_EtFNc`6SE;Gy%VCHFC7o<=J|g*2`w>B*<D@%+*oljMtz`gP;R
I%nR4q59`Zk=l}o!

diff --git a/src/hosts/be/machine.h b/src/hosts/be/machine.h
deleted file mode 100644
index 9570c62..0000000
--- a/src/hosts/be/machine.h
+++ /dev/null
@@ -1,305 +0,0 @@
-/* machine.h for BeOS.
- *
- * Handcrafted to support cross compilation.
- */
-
-#ifndef MACHINE_H
-#define MACHINE_H
-
-#include <BeBuild.h>
-
-/* Define if using alloca.c.  */
-/* #undef C_ALLOCA */
-
-/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
-   This function is required for alloca.c support on those systems.  */
-/* #undef CRAY_STACKSEG_END */
-
-/* Define if you have alloca, as a function or macro.  */
-#define HAVE_ALLOCA 1
-
-/* Define if you have <alloca.h> and it should be used (not on Ultrix).  */
-#define HAVE_ALLOCA_H 1
-
-/* Define as __inline if that's what the C compiler calls it.  */
-/* #undef inline */
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-/* #undef pid_t */
-
-/* Define as the return type of signal handlers (int or void).  */
-#define RETSIGTYPE void
-
-/* Set in response to the signal handler return type, since not all
- * compilers understand direct definition comparisons
- */
-#define RETSIGTYPE_VOID 1
-
-/* Define to `unsigned' if <sys/types.h> doesn't define.  */
-/* #undef size_t */
-
-/* If using the C implementation of alloca, define if you know the
-   direction of stack growth for your system; otherwise it will be
-   automatically deduced at run-time.
- STACK_DIRECTION > 0 => grows toward higher addresses
- STACK_DIRECTION < 0 => grows toward lower addresses
- STACK_DIRECTION = 0 => direction of growth unknown
- */
-/* #undef STACK_DIRECTION */
-
-/* Define if you have the ANSI C header files.  */
-#define STDC_HEADERS 1
-
-/* does the compiler provide inline functions?
- * With Metrowerks, WARN_ALL implies '-ansi strict' which makes
- * inlines illegal.
- */
-
-#if !defined(__MWERKS__) || !defined(WARN_ALL)
-#    define HAS_INLINE 1
-#endif
-
-/* A mask that allows to extract an unsigned char from a signed */
-#define CHARBIT_MASK 0xff
-
-#define RENAME_HANDLES_DIRECTORIES 1
-
-#if B_BEOS_VERSION > B_BEOS_VERSION_4
-
-/* Does the system have a getrusage call?  */
-#    define HAVE_GETRUSAGE 1
-/* If so, is it restricted to user and system time? */
-#    define GETRUSAGE_RESTRICTED 1
-/* Is it available as a subfunction of syscall() ? */
-/* #undef GETRUSAGE_VIA_SYSCALL */
-
-#endif /* BeOS version >= 4.5 */
-
-/* Can ru_utime / ru_stime be accessed as a timeval with tv_sec and tv_usec ? */
-#if defined(__MWERKS__) || defined(B_BEOS_VERSION_5)
-#    define RUSAGE_USEC 1
-#endif
-
-/* the atari strtol() used to consider characters '9' < c < 'A' to be numeric */
-/* #undef STRTOL_BROKEN */
-
-/* needs the first argument of strtol be declared as const ? */
-#ifndef __MWERKS__
-#    undef STRTOL_CONST_CHARP
-#endif
-
-/* Define if you have bcopy, and it handles overlapping ranges correctly. */
-#ifndef __MWERKS__
-#    define OVERLAPPING_BCOPY
-#endif
-
-#ifdef __INTEL__
-#    define MALLOC_ALIGN 4
-#else
-#    define MALLOC_ALIGN 8
-#endif
-
-/* does the compiler know of a 'ssize_t' type? */
-#define HAVE_SSIZE_T 1
-
-/* does the compiler know of a 'long long' type? */
-#define HAVE_LONG_LONG 1
-
-/* does the compiler know of a 'bool' type? */
-/* #undef HAVE_BOOL */
-
-/* what kind of pointer is used by malloc() et al */
-#define POINTER void *
-#define FREE_RETURNS_VOID 1
-
-/* can we define our own malloc() safely? */
-/* #undef SBRK_OK */
-
-/* The following is needed for smalloc without SBRK_OK to use memory
- * efficiently. smalloc will malloc blocks that are a large power of
- * two, minus EXTERN_MALLOC_OVERHEAD. If you have no idea what number to
- * choose, compile & run util/overhead.c
- */
-#define EXTERN_MALLOC_OVERHEAD 0
-
-/* How to set a socket non-blocking */
-/* #undef USE_IOCTL_FIONBIO */
-/* #undef USE_FCNTL_O_NDELAY */
-/* #undef USE_FCNTL_FNDELAY */
-
-/* Can F_SETOWN be used on a socket? */
-/* TODO: DOes it? */
-#define USE_FCNTL_SETOWN 1
-
-/* Can SO_OOBINLINE be used on a socket? */
-/* TODO: Can it? */
-#define USE_OOBINLINE 1
-
-/* Does the machine offer IPv6? */
-/* #undef HAS_IPV6 */
-
-/* Does the machine offer mySQL? */
-/* #undef HAS_MYSQL */
-
-/* Does the machine offer PostgreSQL? */
-/* #undef HAS_PGSQL */
-
-/* Does the machine offer GnuTLS? */
-/* #undef HAS_GNUTLS */
-
-/* Does the machine offer OpenSSL/SSL? */
-/* #undef HAS_OPENSSL */
-
-/* Does the machine offer pthread library? */
-/* #undef HAS_PTHREADS */
-
-/* Does the machine offer pthread_atfork()? */
-/* #undef HAS_PTHREAD_ATFORK */
-
-/* Does the machine offer pcre library? */
-/* #undef HAS_PCRE */
-
-/* define the erq include file. */
-#define ERQ_INCLUDE "util/erq/erq.h"
-
-/* define the host-specific include file */
-/* #undef HOST_INCLUDE */
-
-/* The number of bytes in a char *.  */
-#define SIZEOF_CHAR_P 4
-
-/* The number of bytes in a int.  */
-#define SIZEOF_INT 4
-
-/* The number of bytes in a long.  */
-#define SIZEOF_LONG 4
-
-/* The number of bytes in a long long.  */
-#define SIZEOF_LONG_LONG 8
-
-/* The number of bytes in a short.  */
-#define SIZEOF_SHORT 2
-
-/* Define if you have the _crypt function.  */
-/* #undef HAVE__CRYPT */
-
-/* Define if you have the bzero function.  */
-/* #undef HAVE_BZERO */
-
-/* Define if you have the crypt function.  */
-#define HAVE_CRYPT 1
-
-/* Define if you have the fchmod function.  */
-/* #undef HAVE_FCHMOD */
-
-/* Define if you have the fcntl function.  */
-#define HAVE_FCNTL 1
-
-/* Define if you have the getcwd function.  */
-#define HAVE_GETCWD 1
-
-/* Define if you have the getdomainname function.  */
-/* #undef HAVE_GETDOMAINNAME */
-
-/* Define if you have the gettimeofday function.  */
-#define HAVE_GETTIMEOFDAY 1
-
-/* Define if you have the memcpy function.  */
-#define HAVE_MEMCPY 1
-
-/* Define if you have the memmem function.  */
-/* #undef HAVE_MEMMEM */
-
-/* Define if you have the memmove function.  */
-#define HAVE_MEMMOVE 1
-
-/* Define if you have the memset function.  */
-#define HAVE_MEMSET 1
-
-/* Define if you have the strchr function.  */
-#define HAVE_STRCHR 1
-
-/* Define if you have the strcspn function.  */
-#define HAVE_STRCSPN 1
-
-/* Define if you have the strdup function.  */
-#define HAVE_STRDUP 1
-
-/* Define if you have the strrchr function.  */
-#define HAVE_STRRCHR 1
-
-/* Define if you have the sysconf function.  */
-#define HAVE_SYSCONF 1
-
-/* Define if you have the wait3 function.  */
-/* #undef HAVE_WAIT3 */
-
-/* Define if you have the waitpid function.  */
-#define HAVE_WAITPID 1
-
-/* Define if you have the <bstring.h> header file.  */
-/* #undef HAVE_BSTRING_H */
-
-/* Define if you have the <crypt.h> header file.  */
-/* #undef HAVE_CRYPT_H */
-
-/* Define if you have the <dirent.h> header file.  */
-#define HAVE_DIRENT_H 1
-
-/* Define if you have the <libc.h> header file.  */
-/* #undef HAVE_LIBC_H */
-
-/* Define if you have the <limits.h> header file.  */
-#define HAVE_LIMITS_H 1
-
-/* Define if you have the <memory.h> header file.  */
-#define HAVE_MEMORY_H 1
-
-/* Define if you have the <ndir.h> header file.  */
-/* #undef HAVE_NDIR_H */
-
-/* Define if you have the <netdb.h> header file.  */
-#define HAVE_NETDB_H 1
-
-/* Define if you have the <stdlib.h> header file.  */
-#define HAVE_STDLIB_H 1
-
-/* Define if you have the <string.h> header file.  */
-#define HAVE_STRING_H 1
-
-/* Define if you have the <sys/dir.h> header file.  */
-/* #undef HAVE_SYS_DIR_H */
-
-/* Define if you have the <sys/ndir.h> header file.  */
-/* #undef HAVE_SYS_NDIR_H */
-
-/* Define if you have the <sys/param.h> header file.  */
-#define HAVE_SYS_PARAM_H 1
-
-/* Define if you have the <sys/rusage.h> header file.  */
-/* #undef HAVE_SYS_RUSAGE_H */
-
-/* Define if you have the <sys/termios.h> header file.  */
-/* #undef HAVE_SYS_TERMIOS_H */
-
-/* Define if you have the <sys/time.h> header file.  */
-#define HAVE_SYS_TIME_H 1
-
-/* Define if you have the <unistd.h> header file.  */
-#define HAVE_UNISTD_H 1
-
-/* Define if you have the <values.h> header file.  */
-#if !defined(__MWERKS__) && !defined(B_BEOS_VERSION_5)
-#    define HAVE_VALUES_H 1
-#endif
-
-/* Define if you have the m library (-lm).  */
-/* #undef HAVE_LIBM */
-
-/* Define if you have the nsl library (-lnsl).  */
-/* #undef HAVE_LIBNSL */
-
-/* Define if you have the socket library (-lsocket).  */
-/* #undef HAVE_LIBSOCKET */
-
-#endif
diff --git a/src/hosts/be/set-version b/src/hosts/be/set-version
deleted file mode 100755
index 22c66f1..0000000
--- a/src/hosts/be/set-version
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/bin/sh
-#
-# Usage: set-version <executable>
-# Read the version information from ./patchlevel.h and set the BeOS
-# versionflags of <executable> accordingly.
-
-#--------------------------------------------------------------------------
-#                         ---------- MAIN ----------
-
-if [ $# -ne 1 ]; then
-    cat << __USAGE__
-Usage: set-version <executable>
-  Read the version information from ./patchlevel.h and set the BeOS
-  versionflags of <executable> accordingly.
-__USAGE__
-    exit 1;
-fi
-
-# Determine the version variables
-reldate=$(sed -e 's/#define RELEASE_DATE ".*, \(..\) \(...\) \(....\) .*/\1. \2 \3/p' -e D patchlevel.h)
-reldatedash=$(sed -e 's/#define RELEASE_DATE ".*, \(..\) \(...\) \(....\) .*/\1-\2-\3/p' -e D patchlevel.h)
-projversion=$(sed -e 's/#define PROJ_VERSION "\(.*\)"/\1/p' -e D patchlevel.h)
-version_major=$(sed -e 's/#define VERSION_MAJOR "\(.*\)"/\1/p' -e D patchlevel.h)
-version_minor=$(sed -e 's/#define VERSION_MINOR "\(.*\)"/\1/p' -e D patchlevel.h)
-version_micro=$(sed -e 's/#define VERSION_MICRO "\(.*\)"/\1/p' -e D patchlevel.h)
-version_patch=$(sed -e 's/#define VERSION_PATCH "\(.*\)"/\1/p' -e D patchlevel.h)
-release_type=$(sed -e 's/#define RELEASE_TYPE "\(.*\)"/\1/p' -e D patchlevel.h)
-
-if [ $((${version_minor} % 2)) -eq 0 ]; then
-
-    # --- Stable versions ---
-
-    setverflags="-app $version_major $version_minor $version_micro"
-
-    if [ "${release_type}" = "rel" ]; then
-        #  --- Stable version ---
-          setverflags="${setverflags} f"
-          vstring="${version_major}.${version_minor}.${version_micro}"
-    fi 
-
-    if [ "${release_type}" = "pre" ]; then
-        #  --- Pre-release version ---
-          setverflags="${setverflags} d ${version_patch}"
-          vstring="${version_major}.${version_minor}.${version_micro}-pre.${version_patch}"
-    fi 
-
-    if [ "${release_type}" = "dev" ]; then
-        #  --- Current version ---
-          setverflags="${setverflags} d ${version_patch}"
-          vstring="${version_major}.${version_minor}.${version_micro}-dev.${version_patch}"
-    fi 
-
-else
-
-    # --- Development Versions ---
-
-    setverflags="-app ${version_major} ${version_minor} ${version_patch}"
-    setverflags="${setverflags} f"
-    vstring="${version_major}.${version_minor}.${version_patch}"
-
-fi
-
-# Do it
-
-echo "setversion $1 ${setverflags} -short \"${vstring}\" -long \"LDMud ${vstring} - a LPMud Gamedriver\""
-setversion $1 ${setverflags} -short "${vstring}" -long "LDMud ${vstring} - a LPMud Gamedriver"
-
-exit 0
diff --git a/src/hosts/be/socketinc.h b/src/hosts/be/socketinc.h
deleted file mode 100644
index 36eb8ad..0000000
--- a/src/hosts/be/socketinc.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef BE_SOCKETINC_H
-#define BE_SOCKETINC_H
-
-#include <sys/socket.h>
-#include <netinet/in.h>
-
-#define SOCKET_T int
-#define socket_number(s) (s)
-#define socket_ioctl  ioctl
-#define socket_select select
-#define socket_read(fd,pt,l)   recv(fd,pt,l,0)
-#define socket_write(fd,pt,l)  (send(fd,pt,l,0) >= 0 ? l : -1)
-#define socket_close  closesocket
-#define socketpair(a,b,c,d) (-1)
-
-#if defined(NEED_SWAP16) && defined(__INTEL__)
-/* This function is missing from libroot.so.LIB :-( */
-INLINE static uint16 _imp____swap_int16(uint16 uarg)
-{
-  return ((uarg & 0xff00) >> 16) | ((uarg & 0x00ff) << 16);
-}
-#endif
-
-#endif /* BE_SOCKETINC_H */
diff --git a/src/hosts/crypt.c b/src/hosts/crypt.c
deleted file mode 100644
index a88a3c6..0000000
--- a/src/hosts/crypt.c
+++ /dev/null
@@ -1,618 +0,0 @@
-/*------------------------------------------------------------------
- * Portable crypt() Implementation.
- *
- * Copyright 1990,1991 Eric Young. All Rights Reserved.
- * This version of crypt has been developed from my MIT compatable
- * DES library.
- * The library is available at pub/DES at ftp.psy.uq.oz.au
- * eay@psych.psy.uq.oz.au
- *------------------------------------------------------------------
- */
-
-#include "../machine.h"
-#include <stdio.h>
-
-/*--------------------------------------------------------------------*/
-
-typedef unsigned char des_cblock[8];
-
-typedef struct des_ks_struct
-{
-    des_cblock _;
-} des_key_schedule[16];
-
-#define DES_KEY_SZ     (sizeof(des_cblock))
-#define DES_ENCRYPT    1
-#define DES_DECRYPT    0
-
-typedef unsigned char   crypt_uchar;
-
-#if SIZEOF_SHORT == 2
-typedef unsigned short  crypt_ushort;
-#else
-#  error "Unsupported size of short."
-#endif
-
-#if SIZEOF_INT == 4
-typedef unsigned int    crypt_uint;
-#else
-#  error "Unsupported size of int."
-#endif
-
-#if SIZEOF_LONG == 4
-typedef unsigned long   crypt_ulong;
-#elif SIZEOF_INT == 4
-typedef unsigned int    crypt_ulong;
-#else
-#  error "Unsupported size of long."
-#endif
-
-static void body(crypt_ulong *out0, crypt_ulong *out1, des_key_schedule *ks, crypt_ulong Eswap0, crypt_ulong Eswap1);
-
-#define ITERATIONS 16
-#define HALF_ITERATIONS 8
-
-#define c2l(c,l) (l =((crypt_ulong)(*((c)++)))    , \
-                  l|=((crypt_ulong)(*((c)++)))<< 8, \
-                  l|=((crypt_ulong)(*((c)++)))<<16, \
-                  l|=((crypt_ulong)(*((c)++)))<<24)
-
-#define l2c(l,c) (*((c)++)=(crypt_uchar)(((l)    )&0xff), \
-                  *((c)++)=(crypt_uchar)(((l)>> 8)&0xff), \
-                  *((c)++)=(crypt_uchar)(((l)>>16)&0xff), \
-                  *((c)++)=(crypt_uchar)(((l)>>24)&0xff))
-
-/*--------------------------------------------------------------------*/
-static unsigned long SPtrans[8][64]={
-{
-/* nibble 0 */
-0x00410100, 0x00010000, 0x40400000, 0x40410100,
-0x00400000, 0x40010100, 0x40010000, 0x40400000,
-0x40010100, 0x00410100, 0x00410000, 0x40000100,
-0x40400100, 0x00400000, 0x00000000, 0x40010000,
-0x00010000, 0x40000000, 0x00400100, 0x00010100,
-0x40410100, 0x00410000, 0x40000100, 0x00400100,
-0x40000000, 0x00000100, 0x00010100, 0x40410000,
-0x00000100, 0x40400100, 0x40410000, 0x00000000,
-0x00000000, 0x40410100, 0x00400100, 0x40010000,
-0x00410100, 0x00010000, 0x40000100, 0x00400100,
-0x40410000, 0x00000100, 0x00010100, 0x40400000,
-0x40010100, 0x40000000, 0x40400000, 0x00410000,
-0x40410100, 0x00010100, 0x00410000, 0x40400100,
-0x00400000, 0x40000100, 0x40010000, 0x00000000,
-0x00010000, 0x00400000, 0x40400100, 0x00410100,
-0x40000000, 0x40410000, 0x00000100, 0x40010100,
-},
-{
-/* nibble 1 */
-0x08021002, 0x00000000, 0x00021000, 0x08020000,
-0x08000002, 0x00001002, 0x08001000, 0x00021000,
-0x00001000, 0x08020002, 0x00000002, 0x08001000,
-0x00020002, 0x08021000, 0x08020000, 0x00000002,
-0x00020000, 0x08001002, 0x08020002, 0x00001000,
-0x00021002, 0x08000000, 0x00000000, 0x00020002,
-0x08001002, 0x00021002, 0x08021000, 0x08000002,
-0x08000000, 0x00020000, 0x00001002, 0x08021002,
-0x00020002, 0x08021000, 0x08001000, 0x00021002,
-0x08021002, 0x00020002, 0x08000002, 0x00000000,
-0x08000000, 0x00001002, 0x00020000, 0x08020002,
-0x00001000, 0x08000000, 0x00021002, 0x08001002,
-0x08021000, 0x00001000, 0x00000000, 0x08000002,
-0x00000002, 0x08021002, 0x00021000, 0x08020000,
-0x08020002, 0x00020000, 0x00001002, 0x08001000,
-0x08001002, 0x00000002, 0x08020000, 0x00021000,
-},
-{
-/* nibble 2 */
-0x20800000, 0x00808020, 0x00000020, 0x20800020,
-0x20008000, 0x00800000, 0x20800020, 0x00008020,
-0x00800020, 0x00008000, 0x00808000, 0x20000000,
-0x20808020, 0x20000020, 0x20000000, 0x20808000,
-0x00000000, 0x20008000, 0x00808020, 0x00000020,
-0x20000020, 0x20808020, 0x00008000, 0x20800000,
-0x20808000, 0x00800020, 0x20008020, 0x00808000,
-0x00008020, 0x00000000, 0x00800000, 0x20008020,
-0x00808020, 0x00000020, 0x20000000, 0x00008000,
-0x20000020, 0x20008000, 0x00808000, 0x20800020,
-0x00000000, 0x00808020, 0x00008020, 0x20808000,
-0x20008000, 0x00800000, 0x20808020, 0x20000000,
-0x20008020, 0x20800000, 0x00800000, 0x20808020,
-0x00008000, 0x00800020, 0x20800020, 0x00008020,
-0x00800020, 0x00000000, 0x20808000, 0x20000020,
-0x20800000, 0x20008020, 0x00000020, 0x00808000,
-},
-{
-/* nibble 3 */
-0x00080201, 0x02000200, 0x00000001, 0x02080201,
-0x00000000, 0x02080000, 0x02000201, 0x00080001,
-0x02080200, 0x02000001, 0x02000000, 0x00000201,
-0x02000001, 0x00080201, 0x00080000, 0x02000000,
-0x02080001, 0x00080200, 0x00000200, 0x00000001,
-0x00080200, 0x02000201, 0x02080000, 0x00000200,
-0x00000201, 0x00000000, 0x00080001, 0x02080200,
-0x02000200, 0x02080001, 0x02080201, 0x00080000,
-0x02080001, 0x00000201, 0x00080000, 0x02000001,
-0x00080200, 0x02000200, 0x00000001, 0x02080000,
-0x02000201, 0x00000000, 0x00000200, 0x00080001,
-0x00000000, 0x02080001, 0x02080200, 0x00000200,
-0x02000000, 0x02080201, 0x00080201, 0x00080000,
-0x02080201, 0x00000001, 0x02000200, 0x00080201,
-0x00080001, 0x00080200, 0x02080000, 0x02000201,
-0x00000201, 0x02000000, 0x02000001, 0x02080200,
-},
-{
-/* nibble 4 */
-0x01000000, 0x00002000, 0x00000080, 0x01002084,
-0x01002004, 0x01000080, 0x00002084, 0x01002000,
-0x00002000, 0x00000004, 0x01000004, 0x00002080,
-0x01000084, 0x01002004, 0x01002080, 0x00000000,
-0x00002080, 0x01000000, 0x00002004, 0x00000084,
-0x01000080, 0x00002084, 0x00000000, 0x01000004,
-0x00000004, 0x01000084, 0x01002084, 0x00002004,
-0x01002000, 0x00000080, 0x00000084, 0x01002080,
-0x01002080, 0x01000084, 0x00002004, 0x01002000,
-0x00002000, 0x00000004, 0x01000004, 0x01000080,
-0x01000000, 0x00002080, 0x01002084, 0x00000000,
-0x00002084, 0x01000000, 0x00000080, 0x00002004,
-0x01000084, 0x00000080, 0x00000000, 0x01002084,
-0x01002004, 0x01002080, 0x00000084, 0x00002000,
-0x00002080, 0x01002004, 0x01000080, 0x00000084,
-0x00000004, 0x00002084, 0x01002000, 0x01000004,
-},
-{
-/* nibble 5 */
-0x10000008, 0x00040008, 0x00000000, 0x10040400,
-0x00040008, 0x00000400, 0x10000408, 0x00040000,
-0x00000408, 0x10040408, 0x00040400, 0x10000000,
-0x10000400, 0x10000008, 0x10040000, 0x00040408,
-0x00040000, 0x10000408, 0x10040008, 0x00000000,
-0x00000400, 0x00000008, 0x10040400, 0x10040008,
-0x10040408, 0x10040000, 0x10000000, 0x00000408,
-0x00000008, 0x00040400, 0x00040408, 0x10000400,
-0x00000408, 0x10000000, 0x10000400, 0x00040408,
-0x10040400, 0x00040008, 0x00000000, 0x10000400,
-0x10000000, 0x00000400, 0x10040008, 0x00040000,
-0x00040008, 0x10040408, 0x00040400, 0x00000008,
-0x10040408, 0x00040400, 0x00040000, 0x10000408,
-0x10000008, 0x10040000, 0x00040408, 0x00000000,
-0x00000400, 0x10000008, 0x10000408, 0x10040400,
-0x10040000, 0x00000408, 0x00000008, 0x10040008,
-},
-{
-/* nibble 6 */
-0x00000800, 0x00000040, 0x00200040, 0x80200000,
-0x80200840, 0x80000800, 0x00000840, 0x00000000,
-0x00200000, 0x80200040, 0x80000040, 0x00200800,
-0x80000000, 0x00200840, 0x00200800, 0x80000040,
-0x80200040, 0x00000800, 0x80000800, 0x80200840,
-0x00000000, 0x00200040, 0x80200000, 0x00000840,
-0x80200800, 0x80000840, 0x00200840, 0x80000000,
-0x80000840, 0x80200800, 0x00000040, 0x00200000,
-0x80000840, 0x00200800, 0x80200800, 0x80000040,
-0x00000800, 0x00000040, 0x00200000, 0x80200800,
-0x80200040, 0x80000840, 0x00000840, 0x00000000,
-0x00000040, 0x80200000, 0x80000000, 0x00200040,
-0x00000000, 0x80200040, 0x00200040, 0x00000840,
-0x80000040, 0x00000800, 0x80200840, 0x00200000,
-0x00200840, 0x80000000, 0x80000800, 0x80200840,
-0x80200000, 0x00200840, 0x00200800, 0x80000800,
-},
-{
-/* nibble 7 */
-0x04100010, 0x04104000, 0x00004010, 0x00000000,
-0x04004000, 0x00100010, 0x04100000, 0x04104010,
-0x00000010, 0x04000000, 0x00104000, 0x00004010,
-0x00104010, 0x04004010, 0x04000010, 0x04100000,
-0x00004000, 0x00104010, 0x00100010, 0x04004000,
-0x04104010, 0x04000010, 0x00000000, 0x00104000,
-0x04000000, 0x00100000, 0x04004010, 0x04100010,
-0x00100000, 0x00004000, 0x04104000, 0x00000010,
-0x00100000, 0x00004000, 0x04000010, 0x04104010,
-0x00004010, 0x04000000, 0x00000000, 0x00104000,
-0x04100010, 0x04004010, 0x04004000, 0x00100010,
-0x04104000, 0x00000010, 0x00100010, 0x04004000,
-0x04104010, 0x00100000, 0x04100000, 0x04000010,
-0x00104000, 0x00004010, 0x04004010, 0x04100000,
-0x00000010, 0x04104000, 0x00104010, 0x00000000,
-0x04000000, 0x04100010, 0x00004000, 0x00104010}};
-static crypt_ulong skb[8][64]={
-{
-/* for C bits (numbered as per FIPS 46) 1 2 3 4 5 6 */
-0x00000000,0x00000010,0x20000000,0x20000010,
-0x00010000,0x00010010,0x20010000,0x20010010,
-0x00000800,0x00000810,0x20000800,0x20000810,
-0x00010800,0x00010810,0x20010800,0x20010810,
-0x00000020,0x00000030,0x20000020,0x20000030,
-0x00010020,0x00010030,0x20010020,0x20010030,
-0x00000820,0x00000830,0x20000820,0x20000830,
-0x00010820,0x00010830,0x20010820,0x20010830,
-0x00080000,0x00080010,0x20080000,0x20080010,
-0x00090000,0x00090010,0x20090000,0x20090010,
-0x00080800,0x00080810,0x20080800,0x20080810,
-0x00090800,0x00090810,0x20090800,0x20090810,
-0x00080020,0x00080030,0x20080020,0x20080030,
-0x00090020,0x00090030,0x20090020,0x20090030,
-0x00080820,0x00080830,0x20080820,0x20080830,
-0x00090820,0x00090830,0x20090820,0x20090830,
-},
-{/* for C bits (numbered as per FIPS 46) 7 8 10 11 12 13 */
-0x00000000,0x02000000,0x00002000,0x02002000,
-0x00200000,0x02200000,0x00202000,0x02202000,
-0x00000004,0x02000004,0x00002004,0x02002004,
-0x00200004,0x02200004,0x00202004,0x02202004,
-0x00000400,0x02000400,0x00002400,0x02002400,
-0x00200400,0x02200400,0x00202400,0x02202400,
-0x00000404,0x02000404,0x00002404,0x02002404,
-0x00200404,0x02200404,0x00202404,0x02202404,
-0x10000000,0x12000000,0x10002000,0x12002000,
-0x10200000,0x12200000,0x10202000,0x12202000,
-0x10000004,0x12000004,0x10002004,0x12002004,
-0x10200004,0x12200004,0x10202004,0x12202004,
-0x10000400,0x12000400,0x10002400,0x12002400,
-0x10200400,0x12200400,0x10202400,0x12202400,
-0x10000404,0x12000404,0x10002404,0x12002404,
-0x10200404,0x12200404,0x10202404,0x12202404,
-},
-{/* for C bits (numbered as per FIPS 46) 14 15 16 17 19 20 */
-0x00000000,0x00000001,0x00040000,0x00040001,
-0x01000000,0x01000001,0x01040000,0x01040001,
-0x00000002,0x00000003,0x00040002,0x00040003,
-0x01000002,0x01000003,0x01040002,0x01040003,
-0x00000200,0x00000201,0x00040200,0x00040201,
-0x01000200,0x01000201,0x01040200,0x01040201,
-0x00000202,0x00000203,0x00040202,0x00040203,
-0x01000202,0x01000203,0x01040202,0x01040203,
-0x08000000,0x08000001,0x08040000,0x08040001,
-0x09000000,0x09000001,0x09040000,0x09040001,
-0x08000002,0x08000003,0x08040002,0x08040003,
-0x09000002,0x09000003,0x09040002,0x09040003,
-0x08000200,0x08000201,0x08040200,0x08040201,
-0x09000200,0x09000201,0x09040200,0x09040201,
-0x08000202,0x08000203,0x08040202,0x08040203,
-0x09000202,0x09000203,0x09040202,0x09040203,
-},
-{/* for C bits (numbered as per FIPS 46) 21 23 24 26 27 28 */
-0x00000000,0x00100000,0x00000100,0x00100100,
-0x00000008,0x00100008,0x00000108,0x00100108,
-0x00001000,0x00101000,0x00001100,0x00101100,
-0x00001008,0x00101008,0x00001108,0x00101108,
-0x04000000,0x04100000,0x04000100,0x04100100,
-0x04000008,0x04100008,0x04000108,0x04100108,
-0x04001000,0x04101000,0x04001100,0x04101100,
-0x04001008,0x04101008,0x04001108,0x04101108,
-0x00020000,0x00120000,0x00020100,0x00120100,
-0x00020008,0x00120008,0x00020108,0x00120108,
-0x00021000,0x00121000,0x00021100,0x00121100,
-0x00021008,0x00121008,0x00021108,0x00121108,
-0x04020000,0x04120000,0x04020100,0x04120100,
-0x04020008,0x04120008,0x04020108,0x04120108,
-0x04021000,0x04121000,0x04021100,0x04121100,
-0x04021008,0x04121008,0x04021108,0x04121108,
-},
-{/* for D bits (numbered as per FIPS 46) 1 2 3 4 5 6 */
-0x00000000,0x10000000,0x00010000,0x10010000,
-0x00000004,0x10000004,0x00010004,0x10010004,
-0x20000000,0x30000000,0x20010000,0x30010000,
-0x20000004,0x30000004,0x20010004,0x30010004,
-0x00100000,0x10100000,0x00110000,0x10110000,
-0x00100004,0x10100004,0x00110004,0x10110004,
-0x20100000,0x30100000,0x20110000,0x30110000,
-0x20100004,0x30100004,0x20110004,0x30110004,
-0x00001000,0x10001000,0x00011000,0x10011000,
-0x00001004,0x10001004,0x00011004,0x10011004,
-0x20001000,0x30001000,0x20011000,0x30011000,
-0x20001004,0x30001004,0x20011004,0x30011004,
-0x00101000,0x10101000,0x00111000,0x10111000,
-0x00101004,0x10101004,0x00111004,0x10111004,
-0x20101000,0x30101000,0x20111000,0x30111000,
-0x20101004,0x30101004,0x20111004,0x30111004,
-},
-{/* for D bits (numbered as per FIPS 46) 8 9 11 12 13 14 */
-0x00000000,0x08000000,0x00000008,0x08000008,
-0x00000400,0x08000400,0x00000408,0x08000408,
-0x00020000,0x08020000,0x00020008,0x08020008,
-0x00020400,0x08020400,0x00020408,0x08020408,
-0x00000001,0x08000001,0x00000009,0x08000009,
-0x00000401,0x08000401,0x00000409,0x08000409,
-0x00020001,0x08020001,0x00020009,0x08020009,
-0x00020401,0x08020401,0x00020409,0x08020409,
-0x02000000,0x0A000000,0x02000008,0x0A000008,
-0x02000400,0x0A000400,0x02000408,0x0A000408,
-0x02020000,0x0A020000,0x02020008,0x0A020008,
-0x02020400,0x0A020400,0x02020408,0x0A020408,
-0x02000001,0x0A000001,0x02000009,0x0A000009,
-0x02000401,0x0A000401,0x02000409,0x0A000409,
-0x02020001,0x0A020001,0x02020009,0x0A020009,
-0x02020401,0x0A020401,0x02020409,0x0A020409,
-},
-{/* for D bits (numbered as per FIPS 46) 16 17 18 19 20 21 */
-0x00000000,0x00000100,0x00080000,0x00080100,
-0x01000000,0x01000100,0x01080000,0x01080100,
-0x00000010,0x00000110,0x00080010,0x00080110,
-0x01000010,0x01000110,0x01080010,0x01080110,
-0x00200000,0x00200100,0x00280000,0x00280100,
-0x01200000,0x01200100,0x01280000,0x01280100,
-0x00200010,0x00200110,0x00280010,0x00280110,
-0x01200010,0x01200110,0x01280010,0x01280110,
-0x00000200,0x00000300,0x00080200,0x00080300,
-0x01000200,0x01000300,0x01080200,0x01080300,
-0x00000210,0x00000310,0x00080210,0x00080310,
-0x01000210,0x01000310,0x01080210,0x01080310,
-0x00200200,0x00200300,0x00280200,0x00280300,
-0x01200200,0x01200300,0x01280200,0x01280300,
-0x00200210,0x00200310,0x00280210,0x00280310,
-0x01200210,0x01200310,0x01280210,0x01280310,
-},
-{/* for D bits (numbered as per FIPS 46) 22 23 24 25 27 28 */
-0x00000000,0x04000000,0x00040000,0x04040000,
-0x00000002,0x04000002,0x00040002,0x04040002,
-0x00002000,0x04002000,0x00042000,0x04042000,
-0x00002002,0x04002002,0x00042002,0x04042002,
-0x00000020,0x04000020,0x00040020,0x04040020,
-0x00000022,0x04000022,0x00040022,0x04040022,
-0x00002020,0x04002020,0x00042020,0x04042020,
-0x00002022,0x04002022,0x00042022,0x04042022,
-0x00000800,0x04000800,0x00040800,0x04040800,
-0x00000802,0x04000802,0x00040802,0x04040802,
-0x00002800,0x04002800,0x00042800,0x04042800,
-0x00002802,0x04002802,0x00042802,0x04042802,
-0x00000820,0x04000820,0x00040820,0x04040820,
-0x00000822,0x04000822,0x00040822,0x04040822,
-0x00002820,0x04002820,0x00042820,0x04042820,
-0x00002822,0x04002822,0x00042822,0x04042822,
-}};
-
-/*--------------------------------------------------------------------*/
-
-/* See ecb_encrypt.c for a pseudo description of these macros.
- */
-
-#define PERM_OP(a,b,t,n,m) ((t)=((((a)>>(n))^(b))&(m)),\
-        (b)^=(t),\
-        (a)^=((t)<<(n)))
-
-#define HPERM_OP(a,t,n,m) ((t)=((((a)<<(16-(n)))^(a))&(m)),\
-        (a)=(a)^(t)^(t>>(16-(n))))\
-
-static char shifts2[16]={0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0};
-
-/*--------------------------------------------------------------------*/
-static void
-des_set_key (des_cblock *key, des_key_schedule schedule)
-
-{
-    register unsigned long c, d, t, s;
-    register unsigned char *in;
-    unsigned long *k;
-    register int i;
-
-    k = (unsigned long *)schedule;
-    in = (crypt_uchar *)key;
-
-    c2l(in,c);
-    c2l(in,d);
-
-    /* do PC1 in 60 simple operations */
-    PERM_OP(d,c,t,4,0x0f0f0f0f);
-    HPERM_OP(c,t,-2, 0xcccc0000);
-    HPERM_OP(c,t,-1, 0xaaaa0000);
-    HPERM_OP(c,t, 8, 0x00ff0000);
-    HPERM_OP(c,t,-1, 0xaaaa0000);
-    HPERM_OP(d,t,-8, 0xff000000);
-    HPERM_OP(d,t, 8, 0x00ff0000);
-    HPERM_OP(d,t, 2, 0x33330000);
-    d = ((d&0x00aa00aa)<<7)|((d&0x55005500)>>7)|(d&0xaa55aa55);
-    d = (d>>8)|((c&0xf0000000)>>4);
-    c &= 0x0fffffff;
-
-    for (i = 0; i < ITERATIONS; i++)
-    {
-        if (shifts2[i])
-        {
-            c = ((c>>2)|(c<<26));
-            d = ((d>>2)|(d<<26));
-        }
-        else
-        {
-            c = ((c>>1)|(c<<27));
-            d = ((d>>1)|(d<<27));
-        }
-        c &= 0x0fffffff;
-        d &= 0x0fffffff;
-
-        /* could be a few less shifts but I am to lazy at this
-         * point in time to investigate
-         */
-        s = skb[0][ (c    )&0x3f                ]|
-            skb[1][((c>> 6)&0x03)|((c>> 7)&0x3c)]|
-            skb[2][((c>>13)&0x0f)|((c>>14)&0x30)]|
-            skb[3][((c>>20)&0x01)|((c>>21)&0x06) |
-                                              ((c>>22)&0x38)];
-        t = skb[4][ (d    )&0x3f                ]|
-            skb[5][((d>> 7)&0x03)|((d>> 8)&0x3c)]|
-            skb[6][ (d>>15)&0x3f                ]|
-            skb[7][((d>>21)&0x0f)|((d>>22)&0x30)];
-
-        /* table contained 0213 4657 */
-        *(k++) = ((t<<16)|(s&0x0000ffff));
-        s      = ((s>>16)|(t&0xffff0000));
-
-        s = (s<<4)|(s>>28);
-        *(k++) = s;
-    }
-}
-
-/*--------------------------------------------------------------------*/
-/******************************************************************
- * modified stuff for crypt.
- ******************************************************************/
-
-#define D_ENCRYPT(L,R,S)        \
-        t=(R<<1)|(R>>31); \
-        v=(t^(t>>16)); \
-        u=(v&E0); \
-        v=(v&E1); \
-        u=(u^(u<<16))^t^s[S  ]; \
-        t=(v^(v<<16))^t^s[S+1]; \
-        t=(t>>4)|(t<<28); \
-        L^=        SPtrans[1][(t    )&0x3f]| \
-                SPtrans[3][(t>> 8)&0x3f]| \
-                SPtrans[5][(t>>16)&0x3f]| \
-                SPtrans[7][(t>>24)&0x3f]| \
-                SPtrans[0][(u    )&0x3f]| \
-                SPtrans[2][(u>> 8)&0x3f]| \
-                SPtrans[4][(u>>16)&0x3f]| \
-                SPtrans[6][(u>>24)&0x3f];
-
-#define PERM_OP(a,b,t,n,m) ((t)=((((a)>>(n))^(b))&(m)),\
-        (b)^=(t),\
-        (a)^=((t)<<(n)))
-
-/*--------------------------------------------------------------------*/
-static crypt_uchar con_salt[128]={
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
-0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
-0x0A,0x0B,0x05,0x06,0x07,0x08,0x09,0x0A,
-0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,
-0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,
-0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,
-0x23,0x24,0x25,0x20,0x21,0x22,0x23,0x24,
-0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,
-0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,
-0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
-0x3D,0x3E,0x3F,0x00,0x00,0x00,0x00,0x00,
-};
-
-static crypt_uchar cov_2char[64]={
-0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,
-0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,
-0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,
-0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,
-0x55,0x56,0x57,0x58,0x59,0x5A,0x61,0x62,
-0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,
-0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,
-0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A
-};
-
-/*--------------------------------------------------------------------*/
-char *
-crypt (const char *buf, const char *salt)
-
-/* Encrypt string <buf> using the first two characters of <salt> as
- * seed for the algorithm. The result is the encrypted string, stored
- * in a static buffer, whose first two characters are copies of <salt>.
- */
-
-{
-    static crypt_uchar buff[20];
-
-    unsigned int i, j, x, y;
-    crypt_ulong Eswap0 = 0;
-    crypt_ulong Eswap1 = 0;
-    crypt_ulong out[2], ll;
-    des_cblock key;
-    des_key_schedule ks;
-    crypt_uchar bb[9];
-    crypt_uchar *b = bb;
-    crypt_uchar c, u;
-
-    x = buff[0] = salt[0];
-    Eswap0 = con_salt[x];
-    x = buff[1] = salt[1];
-    Eswap1 = con_salt[x] << 4;
-
-    for (i = 0; i < 8; i++)
-    {
-        c = *(buf++);
-       if (!c)
-           break;
-       key[i] = (c << 1);
-    }
-
-    for (; i < 8; i++)
-        key[i] = 0;
-
-    des_set_key((des_cblock *)(key), ks);
-    body(&out[0], &out[1], &ks, Eswap0, Eswap1);
-
-    ll = out[0]; l2c(ll,b);
-    ll = out[1]; l2c(ll,b);
-
-    y = 0;
-    u = 0x80;
-    bb[8] = 0;
-    for (i = 2; i < 13; i++)
-    {
-        c = 0;
-        for (j = 0; j < 6; j++)
-        {
-            c <<= 1;
-            if (bb[y] & u)
-                c |= 1;
-            u >>= 1;
-            if (!u)
-            {
-                y++;
-                u = 0x80;
-            }
-        }
-        buff[i] = cov_2char[c];
-    }
-
-    return((char *)buff);
-}
-
-/*--------------------------------------------------------------------*/
-static void
-body (crypt_ulong *out0
-     , crypt_ulong *out1
-     , des_key_schedule *ks
-     , crypt_ulong Eswap0
-     , crypt_ulong Eswap1)
-
-{
-    register unsigned long l, r, t, u, v;
-    register unsigned long *s;
-    register int i, j;
-    register unsigned long E0, E1;
-
-    l = 0;
-    r = 0;
-
-    s = (crypt_ulong *)ks;
-    E0 = Eswap0;
-    E1 = Eswap1;
-
-    for (j = 0; j < 25; j++)
-    {
-        for (i = 0; i < (ITERATIONS*2); i += 4)
-        {
-            D_ENCRYPT(l,r, i  );  /* 1 */
-            D_ENCRYPT(r,l, i+2);  /* 2 */
-        }
-        t = l;
-        l = r;
-        r = t;
-    }
-
-    t = l;
-    l = r;
-    r = t;
-
-    PERM_OP(r,l,t, 1,0x55555555);
-    PERM_OP(l,r,t, 8,0x00ff00ff);
-    PERM_OP(r,l,t, 2,0x33333333);
-    PERM_OP(l,r,t,16,0x0000ffff);
-    PERM_OP(r,l,t, 4,0x0f0f0f0f);
-
-    *out0 = l;
-    *out1 = r;
-}
-
-/***************************************************************************/
-
diff --git a/src/hosts/defines.txt b/src/hosts/defines.txt
deleted file mode 100644
index a0f1a12..0000000
--- a/src/hosts/defines.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-Operating Systems:
------------------
-SunOS .. 4.1:		sun		(abbr.: SunOS4)
-Solaris:		sun __svr4__	(abbr.: solaris)
-Silicon Graphics:	sgi
-AIX:                    _AIX
-Atari ST/TT MiNT:	atarist
-Amiga, DICE:		AMIGA _DCC
-Amiga, SAS/C:		AMIGA __SASC
-BeOS                    __BEOS__
-FreeBSD:                __FreeBSD__
-Linux:			linux
-NeXT:			NeXT
-Sequent:		_SEQUENT_
-Ultrix:			ultrix
-IBM RS6000		_AIX _IBMR2
-HP-UX			hpux
-OS/2			OS2 (not set by all compilers; for some the configure
-                             script adds it to the EXTRA_CFLAGS)
-???			M_UNIX
-Apple Unix		AUX		/* add -D_POSIX_SOURCE to CFLAGS */
-Apple Darwin            __APPLE__, __MACH__
-Windows NT/95/98        _WIN32, WINNT, _WINNT
-
-Program Loaders:
----------------
-msdos:			MSDOS
-
-Processor Hardware:
-------------------
-Sparc			sparc
-x86 (MWerks/Be)         __INTEL__
-x86 (gcc)               i386, __i386__
-x86 (icc)               _M_IX86
-PowerPC (Darwin)        __ppc__
-Itanium (ecc)           _M_IA64
-
-compilers:
----------
-gcc:			__GNUC__
-Apple CC:               __GNUC__, __APPLE_CC__
-Cygnus gcc for Win32    __CYGWIN32__ resp. __CYGWIN__
-Metrowerks (Be)         __MWERKS__
-EMX gcc for OS/2        __EMX__
-Intel C/C++ Compiler    __INTEL_COMPILER (expands to version, e.g. 500)
-
------------------------------------------------------------------------------
-
-von HP-UX haben wills, hier der Output von gcc -E -dM < /dev/null:
-
-#define __hp9000s800__ 1
-#define __unix__ 1
-#define __unix 1
-#define __hppa 1
-#define __hppa__ 1
-#define __hpux 1
-#define __hpux__ 1
-#define __hp9000s700 1
-#define __hp9000s700__ 1
-#define __hp9000s800 1
-#define _ILP32 1
-#define __STDC_HOSTED__ 1
-#define _PA_RISC1_1 1
-#define _HPUX_SOURCE 1
-
------------------------------------------------------------------------------
diff --git a/src/hosts/unix.h b/src/hosts/unix.h
deleted file mode 100644
index 473283b..0000000
--- a/src/hosts/unix.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#ifndef __HOSTS_UNIX_H__
-#define __HOSTS_UNIX_H__
-
-/*------------------------------------------------------------------
- * Definitions and includes for Unixish hosts.
- *
- * This file is included by port.h via the HOST_INCLUDE define.
- *------------------------------------------------------------------
- */
-
-#if defined(SunOS4) || defined (ultrix) || defined(solaris)
-extern void bzero(char *, int);
-#endif
-
-#if defined(SunOS4)
-/* These prototypes used to have a wider scope, but I suspect they are
- * only needed on suns.
- */
-extern char *_crypt(char *, char *);
-extern int ioctl(int, ...); /* should be in <ioctl.h> */
-#endif
-
-#if defined(CYGWIN) && !defined(__CYGWIN32__)
-extern int gethostname(char *, int);
-#endif
-
-#if defined(SunOS4) || defined(ultrix)
-extern int gethostname(char *, int);
-extern char *getdomainname(char *, int);
-#endif
-
-#ifdef SunOS4
-extern int rename(const char *, const char *);
-extern void perror(const char *);
-extern long int strtol(const char *, char **, int);
-#endif
-
-#if defined(CYGWIN) || defined(sun)
-extern time_t time(time_t *tloc);
-#endif
-
-#endif /* __HOSTS_UNIX_H__ */
diff --git a/src/hosts/win32/Makefile b/src/hosts/win32/Makefile
deleted file mode 100644
index a9edb3d..0000000
--- a/src/hosts/win32/Makefile
+++ /dev/null
@@ -1,410 +0,0 @@
-# Generated automatically from Makefile.in by configure.
-# TODO: Add some of the symbols in here to configure
-# These lines are needed on some machines.
-MAKE=make
-SHELL=/bin/sh
-INSTALL=/usr/bin/install -c
-mkinstalldirs=$(SHELL) ./mkinstalldirs
-#
-CC=gcc
-#
-YACC = byacc
-YACCTAB = y.tab.
-#
-RM = rm -f
-MV = mv
-CP = cp
-#
-# some standard stuff...
-prefix= \\mud
-exec_prefix= ${prefix}
-#
-#
-# Set MUD_LIB to the directory which contains the mud data. Was formerly
-# defined in config.h !
-MUD_LIB = \\mud\\mudlib
-#
-# Set BINDIR to the directory where you want to install the executables.
-BINDIR = \\mud\\mudbin
-#
-# Set ERQ_DIR to directory which contains the stuff which ERQ can
-# execute (hopefully) savely. Was formerly defined in config.h!
-ERQ_DIR= \\mud\\mudbin\\erqdir
-#
-# Typical profiling, warning and optimizing options.
-#   -p -DMARK: together they enable the profiling of VM instructions.
-#   Additional profiling can be activated in config.h .
-#PROFIL=-p -DMARK
-#PROFIL=-pg
-PROFIL=
-#Enable warnings from the compiler, if wanted.
-WARN= # no warning options - will work with all compilers :-)
-#WARN= -Wall -Wshadow -Dlint
-#WARN= -Wall -Wshadow -Wparentheses # gcc settings
-#
-# Optimization and source level debugging options.
-# adding a -fomit-frame-pointer on the NeXT (gcc version 1.93 (68k, MIT syntax))
-# will corrupt the driver.
-#OPTIMIZE = -O4 -fomit-frame-pointer  -g -fstrength-reduce -fno-force-mem -fno-force-addr -fno-inline-functions # high optimization
-OPTIMIZE= -O2 -g -fstrength-reduce -fno-force-mem -fno-force-addr -fno-inline-functions # medium optimization
-#OPTIMIZE= -O -g # low optimization
-#OPTIMIZE= -g # no optimization; for frequent recompilations.
-#
-# Debugging options:
-#   Debugging options should be set in config.h to guarantee a clean
-#   recompile.
-#DEBUG = -DDEBUG -DCHECK_STRINGS # -DKEEP_STRINGS -DDEBUG_TELNET
-DEBUG=
-#
-MPATH=-DMUD_LIB='"$(MUD_LIB)"' -DBINDIR='"$(BINDIR)"' -DERQ_DIR='"$(ERQ_DIR)"'
-#
-CFLAGS=  -Dlint $(OPTIMIZE) $(DEBUG) $(WARN) $(MPATH) $(PROFIL)
-#
-LIBS=-lm -lcrypt -luser32 -lwinmm -lkernel32 -lwsock32
-#
-LDFLAGS=
-#
-#Note that, if you use smalloc with SBRK_OK(which is the default), and
-#don't link statically, it could happen that the system malloc is linked
-#along with the one from smalloc; this combination is bound to cause crashes.
-MFLAGS = "BINDIR=$(BINDIR)" "MUD_LIB=$(MUD_LIB)"
-#
-SRC = access_check.c actions.c array.c backend.c call_out.c closure.c comm.c \
-      dumpstat.c ed.c efuns.c gcollect.c hash.c heartbeat.c interpret.c \
-      parser.c lex.c main.c mapping.c mempools.c object.c otable.c parse.c \
-      pkg-alists.c pkg-mccp.c pkg-mysql.c pkg-pcre.c pkg-pgsql.c \
-      pkg-sqlite.c pkg-tls.c ptmalloc.c port.c ptrtable.c md5.c \
-      random.c regexp.c mregex.c sha1.c simulate.c simul_efun.c stdstrings.c \
-      stralloc.c strfuns.c structs.c sprintf.c swap.c wiz_list.c xalloc.c
-OBJ = access_check.o actions.o array.o backend.o call_out.o closure.o comm.o \
-      dumpstat.o ed.o efuns.o gcollect.o hash.o heartbeat.o interpret.o \
-      parser.o lex.o main.o mapping.o mempools.o object.o otable.o parse.o \
-      pkg-alists.o pkg-mccp.o pkg-mysql.o pkg-pcre.o pkg-pgsql.o \
-      pkg-sqlite.o pkg-tls.o ptmalloc.o port.o ptrtable.o md5.o\
-      random.o regexp.o mregex.o sha1.o simulate.o simul_efun.o stdstrings.o \
-      stralloc.o strfuns.o structs.o sprintf.o swap.o wiz_list.o xalloc.o
-
-ldmud: $(OBJ)
-	$(CC) $(OPTIMIZE) $(LDFLAGS) $(OBJ) -o $@ $(LIBS)
-
-install: ldmud
-	$(mkinstalldirs) $(BINDIR)
-	$(INSTALL) -c $? $(BINDIR)/parse
-
-install-utils:
-	(cd util; $(MAKE) $(MFLAGS) install)
-
-utils:
-	(cd util; $(MAKE) $(MFLAGS))
-
-parse: ldmud
-	-$(MV) parse parse.old
-	$(CP) ldmud parse
-
-lint: *.c
-	lint *.c
-
-clean:
-	$(RM) $(YACCTAB)h $(YACCTAB)c make_func.c *.o mkfunc.exe
-	$(RM) dftables.exe pcre/chartables.c
-	$(RM) stdstrings.c stdstrings.h
-	$(RM) efun_defs.c instrs.h lang.y lang.h lang.c y.output tags TAGS
-	$(RM) parse core mudlib/core mudlib/debug.log lpmud.log ldmud
-	(cd util ; echo "Cleaning in util." ; $(MAKE) clean)
-
-distclean: clean
-	$(RM) ldmud config.status machine.h Makefile config.cache config.log
-	$(RM) config.h config.status config.status.old
-	$(RM) util/Makefile util/erq/Makefile util/xerq/Makefile
-
-tags: $(SRC)
-	ctags $(SRC)
-
-TAGS: $(SRC)
-	etags $(SRC)
-
-make_func.c: make_func.y
-	$(YACC) make_func.y
-	$(MV) $(YACCTAB)c make_func.c
-	
-
-mkfunc.o : mkfunc.c make_func.c driver.h config.h machine.h port.h
-	  $(CC) $(CFLAGS) -DYACC='"$(YACC)"' -c mkfunc.c
-
-mkfunc: mkfunc.o hash.o exec.h
-	$(CC) $(OPTIMIZE) $(LDFLAGS) mkfunc.o hash.o -o mkfunc
-
-dftables.o : pcre/dftables.c pcre/maketables.c pcre/config.h
-	$(CC) $(CFLAGS) -c pcre/dftables.c -o dftables.o
-
-dftables : dftables.o
-	$(CC) $(OPTIMIZE) (LDFLAGS) dftables.o -o dftables
-
-lang.y: mkfunc prolang.y config.h
-	$(RM) lang.y
-	./mkfunc lang
-
-efun_defs.c instrs.h: func_spec mkfunc config.h
-	$(RM) instrs.h
-	$(RM) efun_defs.c
-	./mkfunc instrs
-
-stdstrings.c stdstrings.h: string_spec mkfunc config.h
-	$(RM) stdstrings.c
-	$(RM) stdstrings.h
-	./mkfunc strings
-
-lang.c lang.h: lang.y
-	$(YACC) -d -v lang.y
-	$(MV) $(YACCTAB)c lang.c
-	
-	$(MV) $(YACCTAB)h lang.h
-
-pcre/chartables.c : dftables
-	./dftables > pcre/chartables.c
-
-#--------------------------------------------------------
-# Dependencies, manual and automatic.
-
-# --- DO NOT MODIFY THIS LINE -- AUTO-DEPENDS FOLLOW ---
-access_check.o : xalloc.h filestat.h comm.h access_check.h driver.h \
-    svalue.h simulate.h typedefs.h config.h port.h strfuns.h sent.h exec.h \
-    hosts/unix.h hosts/be/be.h machine.h
-
-actions.o : ../mudlib/sys/driver_hook.h ../mudlib/sys/commands.h xalloc.h \
-    wiz_list.h svalue.h simulate.h sent.h stdstrings.h object.h mstrings.h \
-    mapping.h interpret.h exec.h efuns.h dumpstat.h comm.h closure.h \
-    backend.h array.h actions.h typedefs.h driver.h strfuns.h instrs.h \
-    main.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
-
-array.o : xalloc.h wiz_list.h swap.h svalue.h simulate.h stdstrings.h \
-    rxcache.h regexp.h object.h mstrings.h mempools.h mapping.h main.h \
-    interpret.h closure.h backend.h array.h my-alloca.h typedefs.h driver.h \
-    strfuns.h sent.h exec.h instrs.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
-
-backend.o : ../mudlib/sys/debug_message.h ../mudlib/sys/driver_hook.h \
-    xalloc.h wiz_list.h swap.h svalue.h stdstrings.h simulate.h rxcache.h \
-    regexp.h random.h otable.h object.h mstrings.h mapping.h main.h lex.h \
-    interpret.h heartbeat.h gcollect.h filestat.h exec.h ed.h comm.h \
-    closure.h call_out.h array.h actions.h backend.h my-alloca.h typedefs.h \
-    driver.h strfuns.h sent.h instrs.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
-
-bitstrings.o : xalloc.h svalue.h simulate.h mstrings.h main.h lex.h \
-    interpret.h bitstrings.h typedefs.h driver.h strfuns.h sent.h exec.h \
-    instrs.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
-
-call_out.o : ../mudlib/sys/debug_info.h xalloc.h wiz_list.h swap.h svalue.h \
-    strfuns.h stdstrings.h simulate.h object.h mstrings.h main.h \
-    interpret.h gcollect.h exec.h comm.h closure.h backend.h array.h \
-    actions.h call_out.h typedefs.h driver.h sent.h instrs.h port.h \
-    config.h hosts/unix.h hosts/be/be.h machine.h
-
-closure.o : xalloc.h switch.h swap.h svalue.h stdstrings.h simul_efun.h \
-    simulate.h prolang.h object.h mstrings.h main.h lex.h lang.h \
-    interpret.h instrs.h exec.h backend.h array.h closure.h my-alloca.h \
-    typedefs.h driver.h ptrtable.h strfuns.h sent.h port.h config.h \
-    hosts/unix.h hosts/be/be.h machine.h
-
-comm.o : util/erq/erq.h ../mudlib/sys/input_to.h \
-    ../mudlib/sys/driver_hook.h xalloc.h wiz_list.h swap.h svalue.h \
-    stdstrings.h simulate.h sent.h object.h mstrings.h main.h interpret.h \
-    gcollect.h filestat.h exec.h ed.h closure.h backend.h array.h actions.h \
-    access_check.h comm.h telnet.h my-alloca.h typedefs.h driver.h \
-    strfuns.h instrs.h config.h port.h hosts/unix.h hosts/be/be.h machine.h
-
-dumpstat.o : svalue.h smalloc.h stdstrings.h simulate.h ptrtable.h object.h \
-    mstrings.h mapping.h filestat.h exec.h closure.h array.h dumpstat.h \
-    typedefs.h driver.h strfuns.h sent.h instrs.h port.h config.h \
-    hosts/unix.h hosts/be/be.h machine.h
-
-ed.o : xalloc.h svalue.h stdstrings.h simulate.h rxcache.h regexp.h \
-    object.h mstrings.h main.h interpret.h gcollect.h filestat.h comm.h \
-    closure.h actions.h ed.h typedefs.h driver.h strfuns.h sent.h exec.h \
-    instrs.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
-
-efuns.o : ../mudlib/sys/time.h ../mudlib/sys/strings.h \
-    ../mudlib/sys/objectinfo.h ../mudlib/sys/debug_info.h xalloc.h \
-    wiz_list.h svalue.h swap.h strfuns.h smalloc.h simulate.h stdstrings.h \
-    rxcache.h random.h ptrtable.h otable.h object.h mstrings.h md5.h \
-    mapping.h main.h interpret.h instrs.h heartbeat.h dumpstat.h comm.h \
-    closure.h call_out.h backend.h array.h actions.h efuns.h my-rusage.h \
-    my-alloca.h typedefs.h driver.h sent.h exec.h regexp.h port.h config.h \
-    hosts/unix.h hosts/be/be.h machine.h
-
-files.o : ../mudlib/sys/files.h xalloc.h svalue.h stdstrings.h simulate.h \
-    mstrings.h main.h lex.h interpret.h filestat.h comm.h array.h files.h \
-    my-alloca.h typedefs.h driver.h strfuns.h sent.h exec.h instrs.h port.h \
-    config.h hosts/unix.h hosts/be/be.h machine.h
-
-gcollect.o : ../mudlib/sys/driver_hook.h xalloc.h wiz_list.h swap.h \
-    stdstrings.h smalloc.h simul_efun.h simulate.h sent.h rxcache.h \
-    prolang.h parse.h otable.h object.h mstrings.h mapping.h main.h lex.h \
-    interpret.h instrs.h heartbeat.h filestat.h exec.h ed.h comm.h \
-    closure.h call_out.h backend.h array.h actions.h gcollect.h typedefs.h \
-    driver.h svalue.h ptrtable.h strfuns.h regexp.h port.h config.h \
-    hosts/unix.h hosts/be/be.h machine.h
-
-hash.o : hash.h
-
-heartbeat.o : ../mudlib/sys/debug_info.h xalloc.h wiz_list.h svalue.h \
-    strfuns.h simulate.h sent.h object.h mstrings.h interpret.h gcollect.h \
-    comm.h backend.h array.h actions.h heartbeat.h typedefs.h driver.h \
-    exec.h instrs.h main.h port.h config.h hosts/unix.h hosts/be/be.h \
-    machine.h
-
-interpret.o : ../mudlib/sys/trace.h ../mudlib/sys/debug_info.h \
-    ../mudlib/sys/driver_hook.h xalloc.h wiz_list.h switch.h swap.h \
-    svalue.h sprintf.h smalloc.h stdstrings.h simul_efun.h simulate.h \
-    sent.h ptrtable.h prolang.h parse.h otable.h object.h mstrings.h \
-    mapping.h main.h lex.h instrs.h heartbeat.h gcollect.h filestat.h \
-    exec.h efuns.h ed.h comm.h closure.h call_out.h backend.h array.h \
-    actions.h interpret.h my-alloca.h typedefs.h driver.h strfuns.h port.h \
-    config.h hosts/unix.h hosts/be/be.h machine.h
-
-lex.o : efun_defs.c ../mudlib/sys/driver_hook.h xalloc.h wiz_list.h \
-    svalue.h strfuns.h stdstrings.h simul_efun.h simulate.h prolang.h \
-    patchlevel.h object.h mstrings.h mempools.h main.h lang.h interpret.h \
-    instrs.h hash.h gcollect.h filestat.h exec.h comm.h closure.h backend.h \
-    array.h lex.h my-alloca.h typedefs.h driver.h ptrtable.h sent.h port.h \
-    config.h hosts/unix.h hosts/be/be.h machine.h
-
-main.o : xalloc.h wiz_list.h swap.h svalue.h stdstrings.h simul_efun.h \
-    simulate.h rxcache.h random.h pcre/pcre.h patchlevel.h otable.h \
-    object.h mstrings.h mapping.h lex.h interpret.h gcollect.h filestat.h \
-    comm.h array.h backend.h main.h my-alloca.h typedefs.h driver.h \
-    ptrtable.h exec.h strfuns.h sent.h regexp.h instrs.h port.h config.h \
-    hosts/unix.h hosts/be/be.h machine.h
-
-mapping.o : xalloc.h wiz_list.h svalue.h smalloc.h simulate.h object.h \
-    mstrings.h main.h interpret.h gcollect.h closure.h backend.h array.h \
-    mapping.h my-alloca.h typedefs.h driver.h strfuns.h sent.h exec.h \
-    instrs.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
-
-md5.o : strfuns.h md5.h machine.h typedefs.h driver.h port.h config.h \
-    hosts/unix.h hosts/be/be.h
-
-mempools.o : xalloc.h gcollect.h mempools.h driver.h typedefs.h port.h \
-    config.h hosts/unix.h hosts/be/be.h machine.h
-
-mkfunc.o : make_func.c ../mudlib/sys/driver_hook.h hash.h exec.h \
-    my-alloca.h driver.h typedefs.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
-
-mstrings.o : ../mudlib/sys/debug_info.h xalloc.h svalue.h strfuns.h \
-    stdstrings.h simulate.h main.h hash.h gcollect.h mstrings.h driver.h \
-    typedefs.h sent.h exec.h port.h config.h hosts/unix.h hosts/be/be.h \
-    machine.h
-
-object.o : ../mudlib/sys/inherit_list.h ../mudlib/sys/include_list.h \
-    ../mudlib/sys/functionlist.h ../mudlib/sys/driver_hook.h xalloc.h \
-    wiz_list.h svalue.h swap.h strfuns.h stdstrings.h simul_efun.h \
-    simulate.h sent.h random.h ptrtable.h prolang.h otable.h mstrings.h \
-    mempools.h mapping.h main.h instrs.h interpret.h filestat.h exec.h \
-    comm.h closure.h backend.h array.h actions.h object.h my-alloca.h \
-    typedefs.h driver.h ../mudlib/sys/lpctypes.h port.h config.h \
-    hosts/unix.h hosts/be/be.h machine.h
-
-otable.o : ../mudlib/sys/debug_info.h xalloc.h svalue.h simulate.h \
-    strfuns.h object.h mstrings.h hash.h gcollect.h backend.h otable.h \
-    typedefs.h driver.h sent.h exec.h instrs.h main.h port.h config.h \
-    hosts/unix.h hosts/be/be.h machine.h
-
-parse.o : xalloc.h wiz_list.h svalue.h stdstrings.h simulate.h object.h \
-    mstrings.h main.h interpret.h instrs.h gcollect.h closure.h array.h \
-    actions.h parse.h typedefs.h driver.h strfuns.h sent.h exec.h port.h \
-    config.h hosts/unix.h hosts/be/be.h machine.h
-
-parser.o : lang.c pkg-alists.h ../mudlib/sys/driver_hook.h xalloc.h \
-    wiz_list.h switch.h swap.h svalue.h stdstrings.h simul_efun.h \
-    simulate.h object.h mstrings.h mapping.h main.h lex.h instrs.h \
-    interpret.h gcollect.h exec.h closure.h backend.h array.h prolang.h \
-    my-alloca.h typedefs.h driver.h ptrtable.h strfuns.h sent.h port.h \
-    config.h hosts/unix.h hosts/be/be.h machine.h
-
-pcre-get.o : pcre/get.c driver.h pcre/internal.h port.h config.h \
-    pcre/pcre.h pcre/config.h hosts/unix.h hosts/be/be.h machine.h
-
-pcre-maketables.o : pcre/maketables.c driver.h pcre/internal.h port.h \
-    config.h pcre/pcre.h pcre/config.h hosts/unix.h hosts/be/be.h machine.h
-
-pcre-pcre.o : pcre/pcre.c driver.h pcre/chartables.c pcre/internal.h port.h \
-    config.h pcre/pcre.h pcre/config.h hosts/unix.h hosts/be/be.h machine.h
-
-pcre-study.o : pcre/study.c driver.h pcre/internal.h port.h config.h \
-    pcre/pcre.h pcre/config.h hosts/unix.h hosts/be/be.h machine.h
-
-dftables.o : pcre/maketables.c pcre/internal.h pcre/pcre.h pcre/config.h
-
-pkg-alists.o : xalloc.h svalue.h simulate.h mstrings.h main.h interpret.h \
-    array.h my-alloca.h pkg-alists.h typedefs.h driver.h strfuns.h sent.h \
-    exec.h instrs.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
-
-pkg-mysql.o : xalloc.h svalue.h simulate.h mstrings.h interpret.h array.h \
-    pkg-mysql.h my-alloca.h typedefs.h driver.h strfuns.h sent.h exec.h \
-    instrs.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
-
-port.o : hosts/crypt.c main.h backend.h my-rusage.h driver.h typedefs.h \
-    port.h config.h hosts/unix.h hosts/be/be.h machine.h
-
-ptrtable.o : simulate.h mempools.h ptrtable.h driver.h svalue.h strfuns.h \
-    sent.h exec.h typedefs.h port.h config.h hosts/unix.h hosts/be/be.h \
-    machine.h
-
-random.o : random.h driver.h port.h config.h hosts/unix.h hosts/be/be.h \
-    machine.h
-
-regexp.o : main.h xalloc.h simulate.h comm.h regexp.h driver.h typedefs.h \
-    svalue.h strfuns.h sent.h exec.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
-
-rxcache.o : ../mudlib/sys/debug_info.h xalloc.h svalue.h strfuns.h regexp.h \
-    mstrings.h hash.h gcollect.h rxcache.h driver.h typedefs.h port.h \
-    config.h hosts/unix.h hosts/be/be.h machine.h
-
-simul_efun.o : xalloc.h swap.h svalue.h stdstrings.h simulate.h ptrtable.h \
-    object.h mstrings.h lex.h interpret.h instrs.h gcollect.h exec.h \
-    array.h simul_efun.h my-alloca.h typedefs.h driver.h strfuns.h sent.h \
-    port.h config.h hosts/unix.h hosts/be/be.h machine.h
-
-simulate.o : ../mudlib/sys/rtlimits.h ../mudlib/sys/files.h \
-    ../mudlib/sys/driver_hook.h ../mudlib/sys/debug_info.h xalloc.h \
-    wiz_list.h svalue.h swap.h strfuns.h stdstrings.h smalloc.h \
-    simul_efun.h sent.h rxcache.h prolang.h otable.h object.h mstrings.h \
-    mapping.h main.h lex.h instrs.h interpret.h heartbeat.h gcollect.h \
-    filestat.h exec.h ed.h dumpstat.h comm.h closure.h call_out.h backend.h \
-    array.h actions.h simulate.h my-alloca.h typedefs.h driver.h ptrtable.h \
-    regexp.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
-
-sprintf.o : xalloc.h swap.h svalue.h stdstrings.h simul_efun.h simulate.h \
-    sent.h random.h ptrtable.h object.h mstrings.h mapping.h main.h \
-    instrs.h interpret.h exec.h comm.h closure.h array.h actions.h \
-    sprintf.h my-alloca.h typedefs.h driver.h strfuns.h port.h config.h \
-    hosts/unix.h hosts/be/be.h machine.h
-
-stdstrings.o : mstrings.h stdstrings.h typedefs.h driver.h port.h config.h \
-    hosts/unix.h hosts/be/be.h machine.h
-
-strfuns.o : xalloc.h svalue.h stdstrings.h simulate.h mstrings.h comm.h \
-    strfuns.h my-alloca.h typedefs.h driver.h sent.h exec.h port.h config.h \
-    hosts/unix.h hosts/be/be.h machine.h
-
-swap.o : ../mudlib/sys/debug_info.h xalloc.h wiz_list.h svalue.h strfuns.h \
-    stdstrings.h simul_efun.h simulate.h random.h prolang.h otable.h \
-    object.h mstrings.h mapping.h main.h interpret.h gcollect.h exec.h \
-    comm.h backend.h array.h swap.h typedefs.h driver.h ptrtable.h sent.h \
-    instrs.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
-
-wiz_list.o : xalloc.h svalue.h stdstrings.h simulate.h object.h mstrings.h \
-    mapping.h main.h interpret.h gcollect.h backend.h array.h \
-    ../mudlib/sys/wizlist.h wiz_list.h my-alloca.h typedefs.h driver.h \
-    strfuns.h sent.h exec.h instrs.h port.h config.h hosts/unix.h \
-    hosts/be/be.h machine.h
-
-xalloc.o : smalloc.c main.h simulate.h interpret.h xalloc.h driver.h \
-    ../mudlib/sys/debug_info.h object.h exec.h svalue.h stdstrings.h \
-    mstrings.h gcollect.h backend.h smalloc.h typedefs.h strfuns.h sent.h \
-    instrs.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
-
-# --- DO NOT MODIFY THIS LINE -- AUTO-DEPENDS PRECEDE ---
diff --git a/src/hosts/win32/Readme.rtf b/src/hosts/win32/Readme.rtf
deleted file mode 100644
index fd8eb46e68c2f16fb3030eb86289e56d78072a5a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3660
zcmb_fZExE)5Z>nk{SOC!X#ymQ?WAw(u&rx`u0WD?v4MUOP|y-36QM|zq~aJw|NEY!
zBqvhb?Mn+ZameGnJa_lp`D^MzF-wK<D$Qk4O!;RJtC#cX*R-%Egq6mJX<GP=@}4di
zw16-zq*KM4Z@8MJg|n3~X_2jk^D@k7v8`5C$J=@T@U2s#Jv!|k&{9>>)0N!NH7khn
zXa9Biyi=AIwfi!sPUW|!Prjy^)z-n+)X99BmQG4DO;@^+(>J*1ptLaMY<fCNYvJ-#
ztJ!>-IyFC=rnMFd?z5}&DM1<%^zig_PS;XP;U!(!0G|u%=;Hjc$>XO_%0S}aG?^!_
zk8^oDe}2}z?rb7rRt}-VhidPQbvBo4<tevWQ%Ms@nM^l1tTlBmg3NIMyOjvanrJty
z<xaXit)0D9IYc)qtUINXk)xA@K6u|iuWf=>CMu>dFkOl5N>XN>lUZvSPGq)HrX<%Q
z;ge4P=O6fQ5BBr3bT!TiiiE*j$k5dLp6pHH{EXg9Bc0IQll?D06tuMsa5c{Yt;MY*
zK}Lp+bvKlua*zcdgw}u!X@IB$PF39m=>VdPNA0^{d)dws=j$9@(A39QtwzT4;QH-?
zRb4F)Ay3xjtjUsV3@fDEsaxrKv^!NF+iEnZMhJ<(3Q&f*-FSNaJVsD8z7N0*su^{^
zB9R5C9i3C&dY4&aka(`M4MOT{GAsz)g@<m@+kzukY|7ILZP&^G9+uC9iT}MQq~1ct
zlub>l#dsr3=%KOHpu0HU3SDIlgtg6tPIh5kEs+%IIW0y)y#VezH$9p~vKP?eSxu)G
zbai2Ey%O2Y@wvQJnH&L$erB*s83?XQ=g`?;B`-=zUTir*dwUtZJIS`?MwwZXYfZ=m
zda^P3BtrH8q81O|2Z{)#`*K7Z=x@qWB1y21`k{yFl)<4uKDYs`+d_UVoowr^7GX`d
z0))EKeW10)6GU#40mGd2t<#zBVQF%$R^1<i2fNl;!ch<$#K^C0qjNOA2e)vIa+-#(
zQblQs%*7vgGrXnyKtMh*`JKR!AOY$#1X&`Mvd3%JM166vNAN)aaX@mf`Dj-`=$wGj
zLbi@2+-W+leqrD~2m6`3_A|VNDj@u8OaSA@A7V$hcU*fwdZKgueSA6xwI74q>G-!v
zr?W5dSU#i`l4%P9J0Q1pje&$Z1v_B4<+wFSIfyx1OFzug4)jiK_p1l7qr1^54?}R;
zUv|T8vj?#`VUfu{qP1*R7ypyy3(=UYl`cgkTe6{p-gG+?2iaXIb236Ck$3Vi8I=Tm
z>e<jqk<$ch9k`vi|LZK7^py#c;d(+dd#fd!XBOk5mP!Q*0#6u0<kdh!LQC$N8092L
z4R&t1Vr_B!^2Mv^gvC3!v@N+>JWWEgLLSkdfCr<GYT-R-Jx?&);b5QmN+{ivL=VF-
z1D)pg!0SAcb1ydBAV&F$m*W|<|K$>RbeY&Nt2RnAvoU%M)w^v8uBVS6HKr+EzYs!>
zF>rz_(_lNZMc6QMoeu}=5bB>#PJnR3J>e6qNsv!aoF^^s97c$DB#teIi}%4;0so#Q
zQ#$wq-sChpeKkAkv@br=i^CnP(q!O43<Y)<3kf)?^7l0U`Yswm0P~wTCryXJV=4$E
zblUOKde&#Cb73!H!{-=!ocZA)^^Lk)sN@}7H$sE%zF<iTl*<Yz9Q=9x4@#Wv7+%6O
zvv`j#KE@UxtZx`Vm`zyYWFZ<IBGC)&LGkTw7BhH<7c7Kc5)NaLsr`UQNE_VYD7p_k
zMB{kGq-V~F1F&cussXe2!CDAU*KPMaDxl~IFEpLk-FlfvhYF=JH;34u>(P{jDw8p2
zM~@{dk*z^+k3?g#AL+dmH<C>bFX+3og*zZ03-5;G2(2H#k9LUdYE77%m<IkD5L{dm
zMoV_mcV72q=sQaB-P&PVDC``UP42|-o_c)8J%N-QytB3x=67&A*z7ysCx+@^?r+UY
kBz=-9Td(b7EJqJuW}z|cU2kS@7=4WRg7wqWCr_XJ3#oJH!T<mO

diff --git a/src/hosts/win32/config.h b/src/hosts/win32/config.h
deleted file mode 100644
index 2142ccc..0000000
--- a/src/hosts/win32/config.h
+++ /dev/null
@@ -1,548 +0,0 @@
-/* DO NOT EDIT!
- *
- * This file is created automatically by configure from the template
- * in config.h.in.
- */
-
-#ifndef CONFIG_H__
-#define CONFIG_H__ 1
-
-/* Should code for the external request demon be included?
- */
-#define ERQ_DEMON
-
-/* Maximum sizes for an erq send or reply.
- */
-#define ERQ_MAX_REPLY 1024
-#define ERQ_MAX_SEND  1024
-
-/* #define ACCESS_CONTROL if you want the driver to do any access control.
- * TODO: Make this a runtime option.
- */
-#define ACCESS_CONTROL
-
-/* file for access permissions data */
-/* TODO: Make this a runtime option */
-#define ACCESS_FILE               "ACCESS.ALLOW"
-
-/* logfile to show valid and rejected connections
- * simple not define this for NO logs
- * TODO: Make this a runtime option.
- */
-#undef ACCESS_LOG 
-
-/*
- * Max size of a file allowed to be read by 'read_file()'.
- */
-#define READ_FILE_MAX_SIZE        50000
-
-/* If an object is left alone for a certain time, then the
- * function clean_up will be called. This function can do anything,
- * like destructing the object. If the function isn't defined by the
- * object, then nothing will happen.
- *
- * This time should be substantially longer than the swapping time.
- */
-#define TIME_TO_CLEAN_UP          10800
-
-/*
- * How long time until an unused object is swapped out.
- * Machine with too many players and too little memory: 900 (15 minutes)
- * Machine with few players and lot of memory: 10000
- * Machine with infinite memory: 0 (never swap).
- */
-#define TIME_TO_SWAP              900
-#define TIME_TO_SWAP_VARIABLES    2000
-
-/*
- * How many seconds until an object is reset again.
- * Set this value high if big system, otherwise low.
- * No castles:         1800        (30 minutes)
- * >100 castles:10000        (almost 3 hours).
- */
-#define TIME_TO_RESET             2700
-
-/*
- * Define the maximum stack size of the stack machine. This stack will also
- * contain all local variables and arguments.
- */
-#define EVALUATOR_STACK_SIZE      2000
-
-/*
- * Define the maximum call depth for functions.
- * MAX_USER_TRACE is used for for normal program execution, the full
- * MAX_TRACE is only available in error handling.
- */
-#define MAX_USER_TRACE              90
-#define MAX_TRACE                   100
-
-/*
- * Define the size of the compiler stack. This defines how complex
- * expressions the compiler can parse. The value should be big enough.
- */
-#define COMPILER_STACK_SIZE        400
-
-/*
- * Maximum number of bits in a bit field. They are stored in printable
- * strings, 6 bits per byte.
- * The limit is more based on considerations of speed than memory
- * consumption.
- */
-#define MAX_BITS                  6144
-
-/*
- * Define what port number the game is to use.
- */
-#define PORTNO                    7680
-
-/* Maximum numbers of ports the GD accepts connections to.
- */
-#define MAXNUMPORTS                 20
-
-/*
- * Max number of local variables in a function.
- */
-#define MAX_LOCAL                   50
-
-/* Maximum number of evaluated nodes/loop.
- * If this is exceeded, the current function is halted.
- * ls() can take about 30000 for large directories.
- */
-#define MAX_COST               1000000
-
-/* Define ALLOW_FILENAME_SPACES if the driver should accept space characters
- * in filenames. If it is not defined, a hardcoded test for space characters
- * is activated.
- */
-#undef ALLOW_FILENAME_SPACES
-
-
-/* Define SHARE_VARIABLES if a clone's variables are to be assigned
- * from the current blueprint's variables. Undefine it if clones
- * should be initialized by __INIT().
- */
-#undef SHARE_VARIABLES
-
-/* CATCH_RESERVED_COST is added to the eval cost for the time executing code
- * guarded by a catch() statement, so that an eval_cost-too-big error can
- * still be caught and handled.
- *
- * To catch an eval_cost too big error in an object that called recursive
- * master functions, CATCH_RESERVED_COST should be greater than
- * MASTER_RESERVED_COST * 2.
- * TODO: Check that at runtime.
- */
-#define CATCH_RESERVED_COST       20000
-
-/* MASTER_RESERVED_COST is the total reserve available for master applies.
- * It is halved for every recursion into another master apply.
- */
-#define MASTER_RESERVED_COST    0x2000 /* must be power of 2 */
-/* TODO: Check that at runtime */
-
-/*
- * Where to swap out objects. This file is not used if TIME_TO_SWAP is 0.
- * If the mudlib is mounted via nfs but your /tmp isn't, and isn't purged
- * periodically either, it's a good idea to place the swap file there.
- * The hostname will be appended to the filename defined here.
- */
-#define SWAP_FILE                 "LP_SWAP.3"
-
-/* Where to save the WIZLIST information.
- * If not defined, and neither given on the commandline, the driver will
- * not read the WIZLIST file.
- */
-#define WIZLIST_FILE              "WIZLIST"
-
-/* This is the maximum array size allowed for one single array.
- * If 0, any size is allowed.
- */
-#define MAX_ARRAY_SIZE            0
-
-/* This is the maximum array size allowed for one single mapping.
- * If 0, any size is allowed.
- */
-#define MAX_MAPPING_SIZE            0
-
-/* This is the maximum number of callouts allowed at one time.
- * If 0, any number is allowed.
- */
-#define MAX_CALLOUTS              0
-
-/*
- * If this is defined, expensive operations like string additions
- * receive additional evalcosts depending on the amount of data handled.
- */
-
-#undef DYNAMIC_COSTS
-
-/*
- * Maximum number of players in the game.
- */
-#define MAX_PLAYERS                70
-
-/*
- * When uploading files, we want fast response; however, normal players
- * shouldn't be able to hog the system in this way.  Define ALLOWED_ED_CMDS
- * to be the ratio of the no of ed cmds executed per player cmd, and
- * MAX_CMDS_PER_BEAT to be the max no of buffered player commands the
- * system will accept in each heartbeat interval.
- */
-
-#define ALLOWED_ED_CMDS           20
-/* TODO: ALLOWED_ED_CMDS: make this a runtime option */
-
-#define MAX_CMDS_PER_BEAT            5 /* TODO: not implemented yet :-( */
-
-/*
- * Reserve an extra memory area from malloc(), to free when we run out
- * of memory to get some warning and start Armageddon.
- * If this value is 0, no area will be reserved.
- */
-#define RESERVED_USER_SIZE      800000
-#define RESERVED_MASTER_SIZE    100000
-#define RESERVED_SYSTEM_SIZE    200000
-
-/* Define the size of the shared string hash table.  This number needn't
- * be prime, probably between 1000 and 30000; if you set it to about 1/5
- * of the number of distinct strings you have, you will get a hit ratio
- * (number of comparisons to find a string) very close to 1, as found strings
- * are automatically moved to the head of a hash chain.  You will never
- * need more, and you will still get good results with a smaller table.
- * If the size is a power of two, hashing will be faster.
- */
-
-#define HTABLE_SIZE               16384
-
-/* Define the size of the table of defines, reserved words, identifiers
- * and efun names. Should be either several times smaller than HTABLE_SIZE
- * or identical with it.
- */
-#define ITABLE_SIZE               256
-
-/* Object hash table size.
- * Define this like you did with the strings; probably set to about 1/4 of
- * the number of objects in a game, as the distribution of accesses to
- * objects is somewhat more uniform than that of strings.
- */
-
-#define OTABLE_SIZE               1024
-
-/* Maximum size of an expanded preprocessor definition.
- */
-
-#define DEFMAX                   65000
-
-/* the number of apply_low cache entries will be 2^APPLY_CACHE_BITS.
- */
-#define APPLY_CACHE_BITS            12
-
-/* The parameters of the regular expression/result cache.
- * The expression cache uses a hashtable of RXCACHE_TABLE entries.
- * Undefine RXCACHE_TABLE to disable the all regexp caching.
- */
-
-#define RXCACHE_TABLE            8192
-
-/* Define COMPAT_MODE if you are using the 2.4.5 mudlib or one of its
- * derivatives.
- * TODO: Make this a runtime option.
- */
-#define COMPAT_MODE
-
-/* Define STRICT_EUIDS if the driver is to enforce the use of euids,
- * ie. load_object() and clone_object() require the current object to
- * have a non-zero euid.
- */
-#undef STRICT_EUIDS
-
-/* Define USE_PARSE_COMMAND if you want the efun parse_command().
- */
-#define USE_PARSE_COMMAND
-
-/* Define USE_SET_LIGHT if you want the efun set_light() and the
- * simple 2.4.5 light system.
- */
-#define USE_SET_LIGHT
-
-/* Define USE_SET_IS_WIZARD if you want the efun set_is_wizard().
- */
-#define USE_SET_IS_WIZARD
-
-/* Define USE_PROCESS_STRING if you want the efun process_string().
- */
-#define USE_PROCESS_STRING
-
-/* Define INITIALIZATION_BY___INIT if you want all initializations of variables
- * to be suspended till the object is created ( as supposed to initialization
- * at compile time; the latter is more memory efficient for loading and faster
- * at cloning, while the former allows to use efuns, e.g. shutdown().
- */
-#undef INITIALIZATION_BY___INIT
-
-/* Define USE_SYSTEM_CRYPT if you want crypt() to be implemented by your
- * operating system (assuming it offers this function). This makes your
- * programm smaller and may even let you take advantage of improvements
- * of your OS, but may also prohibit transporting encrypted date like
- * passwords between different systems.
- * Undefine USE_SYSTEM_CRYPT if you want to use the driver's portable
- * crypt() implementation.
- */
-#define USE_SYSTEM_CRYPT
-
-/* The name of the master object.
- */
-#define MASTER_NAME              "kernel/master"
-
-/* The input escape character.
- */
-#define INPUT_ESCAPE             "!"
-
-/*
- * Define MAX_BYTE_TRANSFER to the number of bytes you allow to be read
- * and written with read_bytes and write_bytes
- */
-
-#define MAX_BYTE_TRANSFER        50000
-
-/* Define this if the mud are to catch incoming udp messages on a
- * specific port. If == -1 it will not be used unless the mud is started
- * with the -u### flag. Where ### is the portnumber for the udp port.
- * If undefined the -u flag will be ignored.
- */
-#define CATCH_UDP_PORT            7683
-#define UDP_SEND
-
-/* Define this if you want IPv6 support (assuming that your host
- * actually offers this.
- */
-#undef USE_IPV6
-
-/* Define this if you want alist support.
- */
-#undef USE_ALISTS
-
-/* Define this if you want to allow call_other()s on arrays of objects.
- */
-#define USE_ARRAY_CALLS
-
-/* Define this if you want PCRE instead of traditional regexps.
- */
-
-#define USE_PCRE
-
-/* Define this if you want to use builtin PCRE (ignored when PCRE
- * is disabled as a whole).
- */
-#undef USE_BUILTIN_PCRE
-
-/* Define this if you want MCCP (Mud Control Compression Protocol).
- */
-#define USE_MCCP
-
-/* Define this if you want TLS (Transport Layer Security) over Telnet.
- */
-#undef USE_TLS
-
-/* Define this if you want mySQL support (assuming that your host
- * actually offers this.
- */
-#undef USE_MYSQL
-
-/* Maximum size of a socket send buffer.
- */
-#define SET_BUFFER_SIZE_MAX      65536
-
-/* Runtime statistics:
- *  COMM_STAT: count number and size of outgoing packets.
- *  APPLY_CACHE_STAT: count number of hits and misses in the apply cache.
- */
-#define COMM_STAT
-#define APPLY_CACHE_STAT
-
-/* Which memory manager to use. Possible defines are
- *   MALLOC_smalloc:   Satoria's malloc. Fastest, uses the least memory,
- *                     supports garbage collection.
- *   MALLOC_sysmalloc: the normal system malloc()
- *   MALLOC_ptmalloc:  ptmalloc from www.malloc.de - threadsafe.
- */
-
-#define MALLOC_smalloc
-
-/* If  MIN_MALLOCED is > 0,
- * the gamedriver will reserve this amount of memory on startup for
- * large blocks, thus reducing the large block fragmentation. The value
- * therefore should be a significantly large multiple of the large
- * chunk size.
- * As a rule of thumb, reserve enough memory to cover the first couple
- * of days of uptime.
- */
-#define MIN_MALLOCED   0
-
-/* If  MIN_SMALL_MALLOCED is > 0,
- * the gamedriver will reserve this amount of memory on startup for
- * small blocks, thus reducing the large block fragmentation. The value
- * therefore should be a significantly large multiple of the small
- * chunk size.
- * As a rule of thumb, reserve enough memory to cover the first couple
- * of days of uptime.
- */
-#define MIN_SMALL_MALLOCED   0
-
-/* This value gives the upper limit for the total allocated memory
- * (useful for systems with no functioning process limit).
- * A value of 0 means 'unlimited'.
- */
-#define MAX_MALLOCED         0x4000000
-
-/* Define this to let the memory allocator request memory from the system
- * directly using sbrk() (assuming the system supports it).
- * If not defined, the memory allocator will use malloc().
- * Supported by: MALLOC_smalloc
- */
-#define MALLOC_SBRK
-
-/* Define this to annotate all allocations with a magic word to find
- * simple misuses of memory (like multiple frees).
- * Supported by: MALLOC_smalloc
- */
-#define MALLOC_CHECK
-
-/* Define this to annotate all allocations with file:line of the driver
- * source responsible for it.
- * Supported by: MALLOC_smalloc
- */
-#undef MALLOC_TRACE
-
-/* Define this to annotate all allocations with file:line of the lpc program
- * responsible for it.
- * Supported by: MALLOC_smalloc
- */
-#undef MALLOC_LPC_TRACE
-
-/* Define this to log all calls to esbrk() (the system memory allocator).
- * Works best if MALLOC_TRACE, or also MALLOC_LPC_TRACE, are defined.
- * Supported by: MALLOC_smalloc
- */
-#undef MALLOC_SBRK_TRACE
-
-/* Trace the most recently executed bytecode instructions?
- */
-#define TRACE_CODE
-
-/* If using TRACE_CODE , how many instructions should be kept? */
-#define TOTAL_TRACE_LENGTH      0x1000
-
-/* If you want to use threads to write the data to the sockets 
- * define USE_PTHREADS. To limit the memory usage of each thread
- * define PTHREAD_WRITE_MAX_SIZE to a value greater than zero.
- * The implementation will discard the oldest not yet written 
- * data blocks to keep memoty usage under the limit.
- */
-#undef USE_PTHREADS
-#define PTHREAD_WRITE_MAX_SIZE 100000
-
-/*----------------------------------------------------------------*/
-/* The following macros activate various debugging and profiling
- * code segments.
- */
-
-/* Enable basic run time sanity checks. This will use more time
- * and space, but nevertheless you are strongly encouraged to keep
- * it defined.
- */
-#define DEBUG
-
-/* The DEBUG level for the ERQ daemon: 0 means 'no debug', 1 means
- * 'standard debug', 2 means 'verbose debug'.
- */
-#define ERQ_DEBUG 0
-
-/* Enable debug output from the LPC compiler.
- */
-/* #define YYDEBUG 1 */
-
-/* Disable inlining.
- */
-/* #define NO_INLINES */
-
-/* Enable the shared string checking (enables commandline option
- * --check-strings).
- */
-#define CHECK_STRINGS
-
-/* Shared strings are never really freed.
- */
-/* #define KEEP_STRINGS */
-
-/* Activate debug prints in the telnet machine.
- */
-/* #define DEBUG_TELNET */
-
-/* Activate allocation debug prints in the smalloc module.
- */
-/* #define DEBUG_SMALLOC_ALLOCS */
-
-/* Trace changes to the tot_alloc_object and tot_alloc_object_size
- * statistics, in order to find the status bugs (enables commandline
- * option --check-object-stat). Will produce a decent amount of
- * output on stderr.
- */
-#define CHECK_OBJECT_STAT
-
-/* Enable the automatic data cleanup from the backend.
- * TODO: Remove this macro once it is proven stable.
- */
-#define NEW_CLEANUP
-
-/* Activate total mapping size consistency check code. It has a small
- * impact on the execution speed. This define was used to find
- * the inaccuracy in the mapping statistic.
- */
-/* #define CHECK_MAPPING_TOTAL */
-
-/* Activate object refcount check code. It will produce a decent
- * amount of log output. It will also fatal() the driver as soon
- * as it detects an inconsistency in the list of destructed objects.
- */
-/* #define CHECK_OBJECT_REF */
-
-/* Activate object referencing checking code during the GC. It will
- * print error messages to gcout when an object or program is
- * referenced as something else. No penalty for using.
- * Requires MALLOC_TRACE to work. Incompatible with DUMP_GC_REFS.
- */
-#ifdef MALLOC_TRACE
-#    define CHECK_OBJECT_GC_REF
-#endif
-
-/* Sometimes the GC stumbles over invalid references to memory
- * blocks (namely 'Program referenced as something else'). Define
- * this macro to get a detailed dump of all found references
- * (Warning: LOTS of output!). Incompatible with CHECK_OBJECT_GC_REF.
- */
-/* #define DUMP_GC_REFS */
-
-/* Enable usage statistics of VM instructions.
- * For profiling of the VM instructions themselves, see the Profiling
- * Options in the Makefile.
- */
-/* #define OPCPROF */
-
-#ifdef OPCPROF
-/* With OPCPROF, the dump of the statistics include the names
- * of the instructions.
- */
-/* #define VERBOSE_OPCPROF */
-#endif
-
-/* Define this if you want structs supported.
- */
-#define USE_STRUCTS
-
-/* Define this if you want the new inline closure syntax supported.
- * (f-020528)
- */
-#undef USE_NEW_INLINES
-
-#endif /* CONFIG_H__ */
diff --git a/src/hosts/win32/machine.h b/src/hosts/win32/machine.h
deleted file mode 100644
index 6f65a08..0000000
--- a/src/hosts/win32/machine.h
+++ /dev/null
@@ -1,270 +0,0 @@
-/* machine.h.  Generated automatically by configure.  */
-/* machine.h.in.  Generated automatically from configure.in by autoheader.  */
-
-#ifndef MACHINE_H
-#define MACHINE_H
-
-
-/* Define if using alloca.c.  */
-/* #undef C_ALLOCA */
-
-/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
-   This function is required for alloca.c support on those systems.  */
-/* #undef CRAY_STACKSEG_END */
-
-/* Define if you have alloca, as a function or macro.  */
-#define HAVE_ALLOCA 1
-
-/* Define if you have <alloca.h> and it should be used (not on Ultrix).  */
-/* #undef HAVE_ALLOCA_H */
-
-/* Define as __inline if that's what the C compiler calls it.  */
-/* #undef inline */
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-/* #undef pid_t */
-
-/* Define as the return type of signal handlers (int or void).  */
-#define RETSIGTYPE void
-
-/* Set in response to the signal handler return type, since not all
- * compilers understand direct definition comparisons
- */
-#define RETSIGTYPE_VOID 1
-
-/* Define to `unsigned' if <sys/types.h> doesn't define.  */
-/* #undef size_t */
-
-/* If using the C implementation of alloca, define if you know the
-   direction of stack growth for your system; otherwise it will be
-   automatically deduced at run-time.
- STACK_DIRECTION > 0 => grows toward higher addresses
- STACK_DIRECTION < 0 => grows toward lower addresses
- STACK_DIRECTION = 0 => direction of growth unknown
- */
-/* #undef STACK_DIRECTION */
-
-/* Define if you have the ANSI C header files.  */
-#define STDC_HEADERS 1
-
-/* does the compiler provide inline functions? */
-#define HAS_INLINE 1
-
-/* Is the library function inet_ntoa() compatible with the compiler?
- * TODO: Is there any platform where this is not the case?
- */
-#define INET_NTOA_OK 1
-
-/* A mask that allows to extract an unsigned char from a signed */
-#define CHARBIT_MASK 0xff
-
-#define RENAME_HANDLES_DIRECTORIES 1
-
-/* Does the system have a getrusage call?  */
-#define HAVE_GETRUSAGE 1
-/* If so, is it restricted to user and system time? */
-/* #undef GETRUSAGE_RESTRICTED */
-/* Is it available as a subfunction of syscall() ? */
-/* #undef GETRUSAGE_VIA_SYSCALL */
-/* Can ru_utime / ru_stime be accessed as a timeval with tv_sec and tv_usec ? */
-#define RUSAGE_USEC 1
-
-/* the atari strtol() used to consider characters '9' < c < 'A' to be numeric */
-/* #undef STRTOL_BROKEN */
-
-/* needs the first argument of strtol be declared as const ? */
-#define STRTOL_CONST_CHARP 1
-
-/* Define if you have bcopy, and it handles overlapping ranges correctly. */
-#define OVERLAPPING_BCOPY 1
-
-#define MALLOC_ALIGN 8
-
-/* does the compiler know of a 'ssize_t' type? */
-#define HAVE_SSIZE_T 1
-
-/* does the compiler know of a 'long long' type? */
-#define HAVE_LONG_LONG 1
-
-/* does the compiler know of a 'bool' type? */
-/* #undef HAVE_BOOL */
-
-/* what kind of pointer is used by malloc() et al */
-#define POINTER void *
-#define FREE_RETURNS_VOID 1
-
-/* can we define our own malloc() safely? */
-/* #undef SBRK_OK */
-
-/* The following is needed for smalloc without SBRK_OK to use memory
- * efficiently. smalloc will malloc blocks that are a large power of
- * two, minus EXTERN_MALLOC_OVERHEAD. If you have no idea what number to
- * choose, compile & run util/overhead.c
- */
-#define EXTERN_MALLOC_OVERHEAD 4
-
-/* How to set a socket non-blocking */
-/* #undef USE_IOCTL_FIONBIO */
-#define USE_FCNTL_O_NDELAY 1
-#define USE_FCNTL_FNDELAY 1
-
-/* Can F_SETOWN be used on a socket? */
-/* #undef USE_FCNTL_SETOWN */
-
-/* Can SO_OOBINLINE be used on a socket? */
-#define USE_OOBINLINE 1
-
-/* Does the machine offer IPv6? */
-#define HAS_IPV6 1
-
-/* Does the machine offer mySQL? */
-/* #undef HAS_MYSQL */
-
-/* define the erq include file. */
-#define ERQ_INCLUDE "util/erq/erq.h"
-
-/* define the host-specific include file */
-/* #undef HOST_INCLUDE */
-
-/* The number of bytes in a char *.  */
-#define SIZEOF_CHAR_P 4
-
-/* The number of bytes in a int.  */
-#define SIZEOF_INT 4
-
-/* The number of bytes in a long.  */
-#define SIZEOF_LONG 4
-
-/* The number of bytes in a long long.  */
-#define SIZEOF_LONG_LONG 8
-
-/* The number of bytes in a short.  */
-#define SIZEOF_SHORT 2
-
-/* Define if you have the _crypt function.  */
-/* #undef HAVE__CRYPT */
-
-/* Define if you have the bzero function.  */
-#define HAVE_BZERO 1
-
-/* Define if you have the crypt function.  */
-#define HAVE_CRYPT 1
-
-/* Define if you have the fchmod function.  */
-#define HAVE_FCHMOD 1
-
-/* Define if you have the fcntl function.  */
-#define HAVE_FCNTL 1
-
-/* Define if you have the getcwd function.  */
-#define HAVE_GETCWD 1
-
-/* Define if you have the getdomainname function.  */
-#define HAVE_GETDOMAINNAME 1
-
-/* Define if you have the getrusage function.  */
-#define HAVE_GETRUSAGE 1
-
-/* Define if you have the gettimeofday function.  */
-#define HAVE_GETTIMEOFDAY 1
-
-/* Define if you have the memcpy function.  */
-#define HAVE_MEMCPY 1
-
-/* Define if you have the memmem function.  */
-/* #undef HAVE_MEMMEM */
-
-/* Define if you have the memmove function.  */
-#define HAVE_MEMMOVE 1
-
-/* Define if you have the memset function.  */
-#define HAVE_MEMSET 1
-
-/* Define if you have the strchr function.  */
-#define HAVE_STRCHR 1
-
-/* Define if you have the strcspn function.  */
-#define HAVE_STRCSPN 1
-
-/* Define if you have the strdup function.  */
-#define HAVE_STRDUP 1
-
-/* Define if you have the strrchr function.  */
-#define HAVE_STRRCHR 1
-
-/* Define if you have the sysconf function.  */
-#define HAVE_SYSCONF 1
-
-/* Define if you have the wait3 function.  */
-/* ANDERS */
-#define HAVE_WAIT3 1
-
-/* Define if you have the waitpid function.  */
-#define HAVE_WAITPID 1
-
-/* Define if you have the <bstring.h> header file.  */
-/* #undef HAVE_BSTRING_H */
-
-/* Define if you have the <crypt.h> header file.  */
-/* ANDERS */
-#define HAVE_CRYPT_H 1
-
-/* Define if you have the <dirent.h> header file.  */
-#define HAVE_DIRENT_H 1
-
-/* Define if you have the <libc.h> header file.  */
-/* #undef HAVE_LIBC_H */
-
-/* Define if you have the <limits.h> header file.  */
-#define HAVE_LIMITS_H 1
-
-/* Define if you have the <memory.h> header file.  */
-#define HAVE_MEMORY_H 1
-
-/* Define if you have the <ndir.h> header file.  */
-/* #undef HAVE_NDIR_H */
-
-/* Define if you have the <netdb.h> header file.  */
-#define HAVE_NETDB_H 1
-
-/* Define if you have the <stdlib.h> header file.  */
-#define HAVE_STDLIB_H 1
-
-/* Define if you have the <string.h> header file.  */
-#define HAVE_STRING_H 1
-
-/* Define if you have the <sys/dir.h> header file.  */
-/* #undef HAVE_SYS_DIR_H */
-
-/* Define if you have the <sys/ndir.h> header file.  */
-/* #undef HAVE_SYS_NDIR_H */
-
-/* Define if you have the <sys/param.h> header file.  */
-#define HAVE_SYS_PARAM_H 1
-
-/* Define if you have the <sys/rusage.h> header file.  */
-/* #undef HAVE_SYS_RUSAGE_H */
-
-/* Define if you have the <sys/termios.h> header file.  */
-#define HAVE_SYS_TERMIOS_H 1
-
-/* Define if you have the <sys/time.h> header file.  */
-#define HAVE_SYS_TIME_H 1
-
-/* Define if you have the <unistd.h> header file.  */
-#define HAVE_UNISTD_H 1
-
-/* Define if you have the <values.h> header file.  */
-/* #undef HAVE_VALUES_H */
-
-/* Define if you have the m library (-lm).  */
-#define HAVE_LIBM 1
-
-/* Define if you have the nsl library (-lnsl).  */
-/* #undef HAVE_LIBNSL */
-
-/* Define if you have the socket library (-lsocket).  */
-/* #undef HAVE_LIBSOCKET */
-
-#endif
-
diff --git a/src/hosts/win32/tubmud.bmp b/src/hosts/win32/tubmud.bmp
deleted file mode 100644
index e51f138c4b8f36cb4150fe78724f497e0f050039..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 101470
zcmeFa4{($BneQtziX?kwxj{MzEZ1*jT(6;$|J2^vN@WA~vJ$fXu(ru%1I}5=*h<hw
z4z`i)$_khuAU$x5&iI_3D-z6j%0Ml<M(z^M5UkEFTLSo!GY}hxG7TFDhi-1!mUK3|
z3CZsL`~*q6P2(hI(%yS#cn1qv)}L3;`~03i-{<>0zdF|wdoyI>_@-PYE9U=Re*GhU
zGGwas<HdXK{XPAQxXaJK{oB9EF28zN_QvHmWWTue&$6khGqTHP&d81*pOPIvJT41|
z!?MQ4M%fu2|HZ9e$X<A1T=wdjS7qbl$7RR)5r@TMk==UZ7Jqv|cKGmNnM$RSy>R#i
z*$YEMvbwrDnZwa2d%W>++1{NyWrumrvSsD6Kp-Fs?;MhqmzT??c)!c9z9HNB!eLqK
z<B!X}@|Ca14)fms_Rs$;dzEwR8amAHhh;{iQ8u)9uWX3ty~_D^@&94Yvn$XgTfBHN
z-{F>Q@8K!V<qesm&LW!{AD4}D9$j5wS=acK?2T7nmF*qcD|@^(Alu1z>*6y4yvO6M
zUA#v?7T|e}k9Wx)5AT$<b{&@O+<TaF9^$c9?(dcD<h8B5wrl5J&c92x6WI(+y($ZH
zj)CxASyy;S_BhYI%y|sGdP~-I_zdq8=5L2(0X}Ol-*d0{K0A@k_$|J#xPKhE9hdFo
zb6UH0%69U+)<76J9_M?$z`2F_eTeJv2EUK<nlmy-V=LEXC)eb%tj<!$HG2bjpW$<c
zknb7U;h}Nla)$59XYw6}kjd1mzmSE~_qlHT?Ktu{!+B1f;kxns0CGRh{a3lhhxyyk
z;a52~A@^Id@#DyK?-|aK*G+MMi2LIAy~nwR$NBqZ?xPcD(2v8&0@-zi`Rt*~obxTN
z<G=Cx7kKVr*_k(fA!|e@b|Q;b<oGIbIwSP%%w^eS{&yh1sms5RO}+8Y$c4`kpEdL<
z=X-|t+{yQNLw5KKKb+H$km(EJnjV&ob8Qc!gX7}-dCx}VzLW29c#8MpeP2M<fiA8k
z*KdgLA3)Y`@Z4MCZ-;N8Gr!=Pa;=c{3w-`KkBy^ahk4&uj~|y^o|=-43;n*#=b+b9
z>DT^(bLafg%@_8f+x!If4sqSbk?CGpxC^~%eOxxhns}TwH2wnbJ;b>^9+oXbUk~$~
za@I~AYvTo8_X0Y0{Dr+d{{>kq*X)IzVgA;Np1vxpV-1y~|CVLTWUZWsgV+7@FaBB9
z$T@eh2F7`>0H3=zj9hkJ=A2%THKH#s>_raf++M!RPS)__$mIpDd+X)P>9s4DotyNq
zU>knp=i^@<+(9b87a_=yIU;XRc^W(_@lTchx&PmTN4`X9q$TY^zG;EWv$D>~<@`(E
z+`IeW_V*!yk0pH$ajS&DvlRD!#Qg`yA3y?Gat}uSkJE<!!Ob5|0`e@COkCbS+$TQx
zBq0I0+#{FC&)v&*9*E=*BLTVWkF$)bbR7AI`M?LCl9mA01yz^-u`o6djz63PKGJu&
z-0+9{&<CF+6Z%dZDI=Kte@Pk{ImN|a^rN%xy})Rc>%Qnq|3C74^j&_g;d9xU;*5-p
z>~Aetu%O~gIrpsW1q*U?Mx#cf(<wCyolci!H1dxdg;JT8tWG2TD2|+*d!NbEauiyv
z-Xwl4^Z6v3uf6^MkC7PXoF(*~oB5=fQC#e8I&k2?Q~&kAfnNJojpn`_=6lV*`<pzk
zs!FaAS57?aU%tHDzuamK`gJ-jA#9FPr`4MLe!tJojl*uSxE(s3#=<Z5pv7Vk50=Tb
zT9u}_*e~Z=X=Mt9-)6J*ukEj|m$)oi-YI>Rv}%PyqXol~$;@W6HxvpPBN3fn!}k=Q
zoRw8vEdHh`<58U={XFrwOr|LE`NBSzD>YNPY+3C@G^+8&<1%Z$LZL7R0)Ag0puP9R
ztgQ5RxcAF%+-7n7#;@XTfkJWbk?i02p!6d`--X->ChtAtci-Aye);A9^xY?(`0juI
zAOGWt?|%2_(Y73&Zb43Vc1CuN!;wf>ks%;=QJGwB%;uZP6@I_Etf)xuzyE>evhs4j
zM#xVX6-8N@-=B0ibU6hDe&nvm%F=2Lh)x}iM%&f)`g&(D9*>&s8jaeaR(t(gtvleb
z*(^%C-KA3~)EbRe8|drnn;h?JZ8ftBg7IWh3V0n3$rX>Mq+l?pmuWOUNs=_WWHKNn
zJ32xEvsoSR#p7yCC=`i>Lf(MX*5*uTwZd3=%4a|LVCBzVdg=DTgLm%SSvfpB{P?nE
z+J-eh``OGdZ{Kbno}EqU1Sl`J*@6n0Qt5ZN-4>r6Md3;-ynKAZVzE0Me6;c-AujkR
zD>7#P*0oB<GuWBWu<sA#{-w+PkHHDBGg<TMyK&d9-TU`E&mr{viMF;jn^x;RIymUF
zHKkHP=i<e0&TiZ|Rm-trIF(AC*tBBB-3=QyY(n9Z4dU`oOiWBB8yd>e3oplP-dU9J
z`xV7Xr530NefRrK`kWj`JP?RGf{8@%bbWo&?DqN0tPyp>=~RcL{{E!1t<CSzXrfVV
zPEN9KYN~TrWo2a`d(onJsJJ*1EsDn_n<Uvn(Wu=QEH2i$T&^NRAYjvujErm^nVgJ`
zjC6DyiWC*`J4aMJHxNKYgKe2>oX(mxOP0)R*sx;7ibucqz15YHlvtIRnYq1YW+u0B
z{d%VzV-rpG^!S3lU{G?cTGbLB9IPDdX>a%U$6}p*lGIYmB9!hK;hdZtyi>6;D@&fG
z!M<Uuv&B&$#Bo2K`D6LyymJ5B&d&e#-~L9({RcldCiz-ghWc@N2YPyXY*J0lshQii
z@4UZp<EGjZk3M?mS8u*Ke3!L)_uzZ)Z7ij1w=}HPS|<)4-iBq)%D@UL;#R9sv1oE~
z!fr6=vhLd%EoWJdr0v2gn-lf*ZElUz>BMfto07?7Wo2h)(q*%mS=;7N)NJnS>FW#a
zs+^jNN3>dLte~Kz#Hdh20+<zBGU@kQa&m$J?7PqFO$MSu?js{x#<p<VuF-_}t)oN8
ze#C5cH@3A&Hm;Gx=S+mdsZ{N%mtK03cWHUrwQ19BZ8U1;ZR6hl{{Bu|ZLP02X|wq#
zN)E0aA748(C`n~SvDlU^Q&XX}p`M;#TCjMmVq;E@T!%kU5*jG@_E;&oeBFJypA-4&
zXW;||1ybvO`J2D_n{OwR>H=AR|95+II-^UHe5v){``+z;{nvke|IVY2{;x+@%*@QJ
zaym~9qcV3^+_`h`(V3aXRbfdoPnMO*vBQ2xeInsVI2@B@%NH#&D;6yha!2L;eyt`L
zES&Rr9C5GDXG!{e_5LiYb&bRd=nwIAkbA(^+1VFLCjYLi45!)|3QdMO`}^a``g-?B
zNl9^WaY4aYtt7eCoTXBuRF)@4Mv6;NeqG$_o!q>6b1W1Y842j*a$P7E8yOobDH+=$
zNvUpx+9KI(;lZOvdu)7k+s~FQlMuD7sdadGHp!>*Imv!6r+~<9aS5T@_zCy*ZQstt
zikf}CWM?e4ITTJL((#p6uh$##{u&3Wr88Kq_PGpEWxjt1ziPzJP;dI^q2Kxc1G#_M
za=(ug%pcEiErL(~<*r>v2$#8UG!E|8>9YMTEsZlXAAE4<&+pusnc1{y!+w5UHX})E
z>MQTwy?f`xiAN9Ky}N1s`qI*58B5=iNVI<M)cW;_^=`Lg!c4S?@z!N!XJdK@%5_d>
zVVz3l@dWMmKzlsy)5`7kL^2R?pzl$PN+=qxt!<LLUbEWl^?LgWexjW=TQbn!Z`Y*t
zJv%$l=ysbrqEU5Dj^A%}ghC@74hNBvR;%_F6`6x^wOUK1!EVRc$40hn8Br$^wxr!I
zFOpg?*C?|jIUM!FP1rV@tyW4jHn!TZr+sL3e`jZBZ$GBajIP&q62kEGK-@Pu8S!Oi
zx+Rw@sngz%Tow_78D%*+1<Mr*qZ|V$*B7KM`#rV(2q(z;Ogu92<i5?DTfO&JLwh56
zjz*GdXG@2N4{l5*O%0``uKG=nJ+|R?X=$n{aN@*2{KLV6v#Spt-1w+8J6no<o)Xq@
zw&m2R4=iie)T_%J4r@a^t`~7{wk{Yn=nD(;=gP}1L5JP$jmG0HZH^?lgdy?qh5MqR
zP-iV6dw+m{kg(AlkfeHxgy{SF`=y}ByK;i~W5^o4*fOQgWO5{Iwopit2o*7LM7kQk
zPpegE;&Eq!E3$bc5;5tuTJ0iiaaLI>CH2{CP58{<%F?DLKFii)vn3LZ0py+*du2~g
zfT%tYNMd2Q;$E(ZRO1^NiD;cppRK<B*U@5$oY;K<KN$7<GW*T{(s87~#XiH%$Yk1=
z_rzjN<RAAA$G|{Vmd$ox<*!z*d~bu<tXx!DI$U~i!-j*ickVno+|ttWfBeIV6RoY`
z@OvwktyobjRaXA^#~*(9{)ZoK*sykL*)mtzWIS%g##_<%Y+YetVbGJGUtTV1$U2`d
z8uj^HW`)n^BQ^=dZ8m&XDAeDErwFRmMK&}oUKWi?KCuoaqfuL+zTTE}tyv>E385|d
z`A)6h;jlP`1-98#DzY!9v!^HIP>Jly=Sw8KUR-N5>aYic?m~?wOKvPGa`glPQm}db
z`n$8jeh&@~+N9drrGZL<mj3?Aeso=p??CQ-eSshu0KT~1sp;s@Xo-DJ+wC7o=l=f%
z<k`5>-+EO1`uX+!f!x1bxu<cl&!O)*wkMu{-gZClCFRs=vod;mQl-DTd-wg?<;!!F
zTJ6li_XsAF%a(ok*uj~Z)hjk`EG2%wdk1}Ax^!yl$KrVG!+Xd0+0gRk0d-kfgC;v$
zu5!lXp`hDcr*b$v1`DxD6#cbhhTT|kFDu&?z>3GQDi+p)H`Pdz;EhI;Dz(kVdWd%h
zNL9m_1)Ixa@u1x<AO^c7-|g=2OeCD;PV9Dylabcs=WBA}@ftobvN_`Q#tkZ!g#af<
z!Mf9--L6xuv$J<_QnnWCd(+I+)GXRvNnDPJXSosF5b|Kz`bS38JUnFspwRYDP4xvd
zA6tWu^qoh36N~t@;){3&T<kOBNRW*|;&=P6F|nMStPH}h<VqoT(jPpRbmBxqgWvCT
zmTr9P&;NYoiPF+W0<IM&X0bC<v$I0%Km6fe|L})DJdW(wju#bKrzR&QEkR_tDiG)k
zVwuZ>!E#eDl?r1C>^g;BUz0*&@nF#DwjiK*dwUypK2T3+DkZT%4qYU|NhEnJ;IpYQ
zMfIfb*p#@P+#s0mbk;XHovI+V9b6y~wk3l>v(4voBR)cVzdw!>*JKgzX>x#ktTtQY
zFNasIygiJ!6_+VhJ2e%yAzj3daqsOl6T>HalP*^v)Y+*HtX&)OX+bk~aS&SnTCn%-
zRaD3-`1$04eNW?J^T&}Q@XY$oo}r<1XnOBmh(WTes~0F{?%etF2AAt47p}`<S+q!F
zwpz_gH@yG;h7Z=SPe~08vny84&Q5XuKYm{b{y4{Y`dGWxycEz2gR9kR)#{!g*qF-g
zcB>56t{FUYb8~*B!BFQR5Y_|0sI+#w({8s*-oC!38f<J6E;bxTRZ;t-BQ!a=Hp+X&
zt4$_WjKyJzbHm%!_JqShN1~x2sV08k98s(L2Wx9>abh8NIaj;iZpYJVa&$_C!tVF^
z8i$7o%2u-6#I<$L%+BH>`ldSZt^GtYN&I|&5&+069FNGM?I@1<*xI#2l^>y|pA_>a
z9ufKuF80ZK)3d*J%|_$1yiT+4Z-$2Mxrl`#R?1;zDiqm&<hy<Q&+S@m;>}b_=dh(x
zK9Hw)GBq<3o&ncmy{?=st*xC}_Sj=-xj!a?8V(WMjF+hlhO2o56nZNmj9stSnhXYq
zYHoV^;=6Nmxy|_ogJ=5U#d8-lq#uMlPA&O4%e}RYl&z63?eYPuk=>dt4s1;XAGQ_q
zVyf2bo$0iPxT6!jbR|%VkT((;+v2s`J1avW;=e$&S;D%htyT@dmO{wg53bd^`lSy(
zNYwL15W8<lO=DwEAJLT1_arWzxF#7*x-^<%vs$e#cRCk)v<iimOgEtZgmgdsfpk10
z?96Z1n;yvh_bm5&xY#G~NKH>Py71ohB7?!5mJDHMM$?b<_V&tTq#6W(S-()8I(5)r
zU9Cxc@PR*0Tqw0l7<G{02?F35?y_p{-YuQNq+{K=eeAIh$IqS}7y3TspPs&8vRVyj
zxg+W~nXc<iCPQ$?wQCoz)z#%^vX1KN(03*NL#3^+59&^z_62OV)|9KKr`6^4+Jd^`
z;xd#l2p$^``AE(HVlBL1&}sss1y{z5htxXKc0Uk7@d)vI=Tv8Bf3&~f?6d`gDiSG{
zE(Ttp$qq?cy?XWczUTHeHMtXsMCN*zNUQE07$>zl80_ry+I+>u3ZL0*@OV7A9)(Jk
zS(u-npDxCHx{Ck1zX*N*opwehi^a?f#B=3|ghZybedzf;dp3&)I{ur@CaY*{Y!`C>
zBSn4vot0XxV?E-Nh$5Doo0=rE8hkz6*jSpZttFFPySBCxiQ`eR@7(z?ZR1~gWojvj
zB<CLV7=pnVXqoo9$z(T_V`pyG)$K57Jf0n|pF4NXgeh_pj~fh5rzwb|brDVn9nokg
zp)DwgAOSad6W%o%Md}s{=F4HQcswTThOLvV$w8p4GDo8kja{dUlks}VR&911a*{O3
zkJ#nP9IZC!w^&xMS2>-Tq}KTkr}OJIlG`1Wz(;+(y|y@kQ_#kX1K^7a5>gY%b)jEp
zwdUq~JmtR~%?Me2+JW5DxY+NkHyu(7hbnWsHUB5l{_miXd&TduzoW2H^76|A4=q@b
zRY6g%;eXA{4Ex*L4LZork~J8#weoEeE0--RD_gpBL+R49XQxUL_7DI1ukozu<mtn-
zXFa==9Ns_>qw*kkpTVHl=jG+uh1_rK*pZo=|C675eGa)3>p6q=@^Zw_mrW#mNx(5J
zaYQIk4jM*`;w0Kh_`nKH=wLo_4+it+<~%yRJ`fRayR@O9+!2e7+Og%q#W>g~z-`j*
z^Th~2x8hfWX5QLUUQ^TMporsCX|?4z6K8W~W8(|~Xu{36@{z0BsbZ-$R3{@5jYg%)
z&$p!i^Kf!PHlOzpepTRNzq8)-K<>Xsx!=RZK4IU}7j9jrz;Yxh2Yugi^7-eU+xsIP
zAMD{Ka^OHu*0;WezAF?t$rUSR^yKGx8baj8L_!-_B}smA?XsnJ?{08SoIU%0Q5H$Z
z@50y!Tl2~*uZ)ksa#rX&@PG;}4f#AC!}Yv8t%?xl%G~R(&zTH$b(xngUc7kCV6a;W
z%C%d!Zq)*X)O*3-71_ki=Ac56QA~uH@Ape)jVKV31Yo)>DmS-zdc6ZDp;Qtl84Qs~
zyFo-QzK)K~_Wu60eb@~P@w?7EGxO5SjLW4rJo)6X-VbPG!XIF<tm~;WJ$m=ViC?85
zdaqXNABaZ%3UDrC#OKRb<>or0j?7G$)t<C%_yYQ#=8Jtwz3E5MXbJUUA@|tHz2E-!
z^8&Q*^Kuh7a-=6KBO@yt_&l4EvtLUH=Flu(zC7O0&>&E~Kns!Zor4FLHEu%gXE$yn
zlElbxAoEvVc~0D{_4(8e1f{Y%93kwCLAY4Y)#>S*Z(X@^?&8IF-npTio}SJ#nSz=i
zwjIG=Cyw{2Nt22TNH86^+~SO!9H&JtFKUzf{qDA=Cfgj2z+KK;AwB_#Y4v`+-lUC0
z<Zeo~+R;OYyyZUMR7g$48z9Uty>sWi+bdVDtXHjG-K1X*hNdTAbpY$H|6s+6*}DgU
zRcmWc2js-F=44Wt!57x43k&P=pLyot%*BO;D(uqd6?yu3={Ry8T&$v^a~-91o;xJu
zzUL74B0ia{!nS9RHyeHc9!Z`}Ag|EjNmomY7C{rR<}62N%Dl6)j}yahx;wRT<8g%i
zVOs7&*HL*Pbq=saR9#h$K8E53gNo99GR`B0OP4Nj6-*|rE*=*-qI$$$Sm?RFb?X4e
zo>aBJzc{0ypctVN(PU)!^EH}|cs*X#VYAh%Or~b8Qu;6u&~vb2;uPIgn0`%3M~Bwp
zcK5{Wy}f<Cggvt}Gk0fi-@g4p^Xk=-PP>SMPqkCT`QG1)3J!8VxM@?$Tbz^QOPbB{
zVujtFq%76u%p{V@1>e|#cSsBLbKZP}i+y^%X&r%>nRoln5uxu9?o~(`8He@_4aMZh
zU84jr5P7!F;n17c172Gi8muYu^1iZ(2^VSV)YMsYd>p?DMDU@ABsZ?TCv<L?E{)?a
zRR)vC6HQ_mSpNN;eNYpEAe0i=On;!WlN$<kEPD^%?z$TSL$X%rdqKehh2HNkhQW|!
z2?jOBcBj)FG#C=9>(`xWxufzLKWL=Kf#vaKv9wk3ct?p~f><n)*KD)-@u#NL?b|C>
z-kzB`b!zo$0v^5Is$ITZ6I{Q(vF2xp{ZR-88%Uy}@G|U@Mk6nV84=&Te}7jq;bZ=q
z*4Eb4lTS8(PLZddc0Z1sr{45H?!O<o-{*^cdcA2K#cO=VfzG`g!nDh%D0uhn*|X=_
zjEn_3Jt`%KIOM3QX$w-bX(h96Z3_YoY=T{Ywr`r)m=4%Q82Q&f{P8Qqk+V}%AC3#1
z{~^el34Pb=42EbD({4!Dk*Fm}WZ**Iqrf-OPDzT}iK2zRH!s03B*MvLw$OJSkc`mx
z0$p>nMy|0~>QVflMX%3y0y3!P<njuI+g)f8kE)Hv4!gahqokv~T?@g-FhEKb8r5o3
z!(Cl3tp=89`_q~ls}4`4vTC(H7M98R((LT)uO5GVWf*8JQb4?kBbOUB6b4*fU0tWX
z`OVy1iUNes(ic&8!6&%K7n`TvR8g_p-_g->BrW$ex`qoq79$#d=%GJRdM;ehLSoX{
z8yi!t<f?7Xi3#x1WO7sO(xnp<m6e<Bt|e6^RYK}N{PANP!nYnD@1q;|6_H?KULYJ;
zLjfW8c)Z^R;v2AKX4aUw(@wmsjpygjd9cU^Q-1!#nE;5EdYesCTv3s&F%i#@zZDmg
zbjj^*lFa)0)Af3Nc_Dt)T@G!cptxAu>{O{75lTNAV@F5FmiBfFxzbkqfSQ2FVwnXw
zU0pg1iD^}C?vA=S3=<*0pp<D0tA>Z)p1FH>#uATv+l@+P5GGcZ5eFWRx3&HBPv3lV
zajLbku|@iw)s0WT6d&Va^VXXxz$%{Fw`cF(=ljw{!i)@Q*U-@O-mI(zIaiT8j_{T#
z4V&U?EJa0&v?iagc4E_}i3#+*cEfR;DRTdim}cYq$XyuuSJw9Ro&At-6HjN*Yw@e_
zSVZ1RW=<Aqvsn00s1*+CoGQIuc@CMIh-usuWfeLnxE0}HP_mQc3tmcwMpLAa`+RMr
ztMzSQl1@T9w*sk`kX0+}Aj2bqNWrmrRIOH7d_KS10pdaGlb?9}@n0=lJu~BWHa9mv
zyd*Qz36Ulr9Mo!xOH%Xj`|p=hF$~0u{r(`{%$ThNlMb$0_2i$v^wKX^J^iPDn(|Sx
z`gAFO@-OLl23&0Z`sxF@fBAAx<6@sxZ~D<wPyN}^q3569Gniga85un%hlcj_DHPw*
z-6ZHE$??=%tx^Jvpt;`VGU!Q$Cd#I!O0hJxwVO7kE&SRI!p2~3o)d=tl@9@fp~2V*
z`b^q9gQ2J&eOFm5{lZAusbrXe145lx@(`xzhQV20ZXg}E1QZIT9Yod!2p$cnwb~r?
zy_h75T*hd$yHR*2rpuX6vAUwTSc9F>I0*WKkx0b26+1IJN)erfC84vx2`o25Dg_+S
z*q9$oCS9je;c%0yre?|0`T2$*P+M^2d+#kv5a9ZaK3@=Sn^8WuW5*6Bn2!tQTuQ9U
zM&9y^DEvq9%%{hZ_twakEiVtI<({r(QPDox-Myz%sm!RpdF$5epm8P(pPq695t$s0
zt5>bm*F&|nhK5a>HZ8@w9{=#iKR)punUhFYMa}82e@OLXsup?}a@XsyGwl@qO#s@q
zARGWKBKO(36BVRAWMkTqSx%IXOnqf#MJC*7eN%01pL(>tU00BiQJk$-mnn?J#T|*Z
zHn+G$PNz~?@oav6yaML<R(O4uZtS%^D-s#qDh$Yl3*{CE<S3-h_4Xug-)?Hkoe76$
zOE;C4x?0z-4^K%_jmu}Vl|p>mWTD8XEhZ<2Cm`1uOr~VzAVjf5!rj)|(lS`-^VNNk
z&JE<A#>M8ZHwoF>o;v!2AN*iHlO$vd9gdf&YwZcaolst_tNTel<vr3))#<0#tPx<~
zyEpZ1ZB%<y(~i>8O~SpBG(ENvxdTXw<M?qhr{l-LDQknK>(}#y+>1h5?L`l~0t+_U
zL0%b=+a)O|!I6|qraY}-Zq88n;)|EAc|86&We!)EFuyb8^+w5?iWO>gdzrDIpaK?-
zv&QK(G^6wid2_R}g1Bd4HUJhjxIGx5DiZ|sRIzeQ_zt&0<l59IZ=>%{skD@`q|evT
zx@i;4%gUMcIPhi2eT9XJs-_rzh(e&o*9`_fn#D*c6F#waZ6uaV8uC7A#y|Cu`?%OA
z>rJ0{#RIv2xpGhAVxO!xeM0U7O}oGU{h_1baD^=6)Ty8D@9XPCL8q0MJ)Sv>BsDBD
znfz8@>s7&P*UsI%3L)?YhC4VjQ@V7i-(Lpq`xrX^V@%BbgBa(rjcB|nFOPp7kJPVL
zpSu8HF2EfD+Bo7cwg~X!!GK<0J*@}p-l0^Ud#JkFAld+W`YDqJ0xp*g9)31ei?|(q
zUy$u~H>2-!PPhaHR2?*d8&7Vo0SbY`JwTiUbmn$D3GlVN7!1Jy#^IVBe)37D>-O!H
zcbAryE-SrzckKyuewJ0R^6tiscO<HXisDo%VfT3Arn$PhVAN=gP%mulN>cEn-f-iK
z)jjU_QO@7*!BvR<)kr8*+0)oqkhLHZdFn}<trzGzPvlK=R@UDloo@MZa`N1{n>R03
zU#PCOBlb&<Wy?yJ))E<(j*nx~kN@z;K=8)_B|pT&9!KyS$CvUvy+^R(l1cpqfDcjM
zk%D9<2{@?%SO5a|&Z~kb;xtuNozH&gA-z3F)avs20@SwyA^J$NjezBAd`4qNfx(c8
z+&#@sL0%F<HyVoz^iJoJOehKl;VvN6J^V;+E^Z^4tPMIGj^)UGQy9nKnweR-DY0_p
z9cYFdfFVm=DVJ*ox!>iaT#AfTY85Bu?G5rhIk_T2{IUiLU`;7J`4_bBpR<p$sPctF
zhsGks#W_LUf(2TFiL2EHjHCYAwS0Yb^##nY6~X)S0kf`7-<Y2E6EwVKEk*1T_4W0z
zI7m+g1dO5QfJIhYD~cayYpvEitqD37Oz0&}45y7tU}xooyy$*U2&OIMu?ttO==E`u
zC`}ecKNH0#DNNgj4OWNF0hh-PBD<v7=Q9@D?Q3dkYE(;>K<J=<Dt*XvG#cnM5M|Va
zBtDDf;pU<udpYl)qF_RLpij)!ELoC*-?_q{TDcPZ5&Hg#6Em%@`ubLgK(h!ps3;&k
zsj06Iv;*ID^;K4eTOF{MY2*ooSw?N2<Z*n$YJBv-N4VJUtT%o1r1bxC+qOf8)~zcp
zHfbO(<e<&x&!0Ott<_z+G#9L{zF1vdz1+MU`istNwwf-HO#y(v0}D=Cx|ANI@TN`U
zulzNs6H?!B5Z2_zyPGzxJxigr)MClY3pO=1BKL>8i3F2~Hy(k%7=ixT*XMHeR0f07
zSE_@-c9Csr!0h?w*TLTNb^-`%u`wDPv%_4}-cD^_>jaFnEPjL=`dj3vN{3M^+N%~V
z(#a8$8idjh{GfLbB)W5*&SsU>>TX<9SXe*P+FF}fF*~~<E%*~BPRtGmgEi!<>yf)X
zry`N)O08e-a|F%iPzVgf1tKOvvX200lvPsx{Jh7<apb4tGxy)>f!x1bx!=RZes{g;
z*H<q)J4cFc+jgj;qr<ADe=hIFxpU{woj-qZ8Wz9~r^$5g%9Se@ms`urt$ww7k?GRa
zt9c@OA>Q+)+)I~2p{Xq^Tf6p^4>!J_J~q-Hf>#wc4GnpE^Y-n1xYM_L<#LA)u9rU~
zS}};A+oEc9Uys3{yrPfCY0>D&V#t)E9K6L?0E<YX=fJt}fBw%3qD3?vEvD@0T+`g_
z{^mCw4*L3xa+uM@#q#Rv9Evhl4NVSmLP3~P+H!kCGWj|gUNZ%%^7YG_n(C=JS%!si
z$I9HfJ2my_iWRBUCYo0yvN^k=!tW2yq*7A}tRT5XC<IHpO=@(x$TOmo(T}>wel507
zy@$Tv!^P(9Z<3ql=JN8SzP{%Usnt|)a&oE+moG!GIQQ<&8wSJcYYYZTb62kD76Ct*
zCnn7L8*jZ;O^w}ycl6a$fRYG@H_<>rdHde6@$Nz7FN{65Mwf?&bB62dYo79Ws$qXQ
z$^fzO<KXbdva-&A$yBYp?)Q%rV}>l0ffhe(u@o=V>Do?f&E}^E7A_QW?<m81$c=t~
zGj_(KMZ`1~%H>+B1jQhUnjGAZj;xl<N1@T%?Q?e8b{z20EHzxG8QkdluF_J=?47Bp
z6G(pe1l7wGGo_^)AbZvlR_PT5I-PC!>8H=u3c2^4J?nJ`gKO$ZS_7PG$o9X(7n=tc
z6ZxdaW7Ru;`crAj<<gi){<JNtR;i}nd8fMiwab_1+!rof!M;~7T5d2jm;w0~8E)RZ
zR7gP|;HlRIY0Of~Hxa;a?G$%V^JRes0Tp8-5xhN5b^5d;;PVZ%UAUl3b`qnI)JLMk
zG7TdW6a7BDe)`I^!LT(;r$gN>&E*ueiVKjiwqU^mc^hc2=x&Pm%gQ>84)_<%%`|io
z%5a?&TS1943h3@qL?ZEOg02V`BccH+wg3w_2u%cB5KOH&aiVc%#R|s^O8)4I($d?H
z&dx4dF-)`2!P(hbx~jBtBYd&OZ+yenPf=E)Ad{eVvZf8CH$%x!l9zp|e*g9#gnj=k
zUg`t6|32h?pD*_5`u<RUel_*sJiVPhs<VNB)gY+9B3~hIsx}#3d+o;M>gsDZu3f8E
zn^_lr?2O;=?z^5B^YeWH!SaF3=yuZ^0vnsY-la>eevJJXOOs}^G6A0%@(iP+@_yL1
zj_GM-5q$)r5ib-?CK7=W+VSe^>ZYfwsRC~G`_0g`At_Pb%P<<9ISUsoSXh=w2<6T&
z7Nhj?q9Q+bMpGg}_XXM6YM)X`3{T}5_M}?WW6QWB#~G+>U<M8VgK|=`cHfEF*;Os2
zr8DbiDl1pqo}E1*?ELJ^qmPQJc9^H?jKxsE>%aO{n~x~E4a<{CHIt*YHZ}R^Kz842
zpZsmj{@uUdk7ppKetKV-QaL9GMF!%wMA7!`T91`h6S!`%v-ApSs1#kkaP8U+F3s}g
zOy#p$;fxusz5DK*8ynMu+`GLbt&}5PN~KckMU`H%mX%FTPKH8dQxg+q1n5rF1&yYI
zO3H}(#tnlSkLneI_e!bM<XBmm&qcBH;!Trj8n{v&_xTiZs0;;kLrZczYQ;jcIRSks
z66p|_6{sW05y(4Y$Jhs*e!sB;@<*Hsyy%$M@W0$B*Xs>tKjo}m7|1vxdpB(HmQn~<
zGb#A*$owGvx0N$pD^?slc;ZAD3ahSoK~YiQ^qMswkN`(yUyW_2P8m!F5Wyzut6xy=
z_xNJ-)SF~7aN4|}i!?GG*}2oJq9{a`-k*er>lvZuVY>FtJJ<APbCKV%XptYvgf;Ib
z1d4cXZ=koQ#~X_U0xd-A!?kPIKDH^rc{^a%gy=L|nw*&MTUiU93y8s_(Ht7MaKS>q
z(8wf-XkQ=|2#l~ST#(^|S73KMba8sxL?Ig7QAm{r)r^JWC@4tSQD%RU-!B(U@Z|s0
zAS)^qPMvOq&g0?&V|%+FM;p<>qokQ1jR#tc!y3_X8G92@*1Q3VPI%D|?hLoK-c85v
zl$mB$<5xL%2$=R9Bfw{f<lB~NtE~;Vb8}CpR;{uJL=!Qb;7^d>f48RJd-P*m?9=TG
zPkbQvFJJEWaIyL8O;!w`)MT5S)G5FU95iJF!akqv<;KP*`%E`(n6BQudDBG8!E&oy
z4kdVzwffzhoDO<vdxd@P?S;hTtE?=e@9x9LW}BN`OOwf|vZaYcZ3Bs?m6iaLASb~E
z)_GuINFsI*VUB!Z(b+yZ*#sC<ulH0{JtQ(@_+N6N?-_J$1vCCu=zB#)#HrUSbc7cg
zBW`24B(+!2gCD26vV`m!qf}6!13}VR#P9|Y#22x6?b>*}h?vR7db0S<*!E=($IP8y
ztzRz*%FNx_*%g3dcMmSBueZ@wVHCWT5M6u0S{ti{2sw^HO9U#zVa)XxJMQBIpHXkp
znN+G!4<>h!{LrCoL3bqLrD3n9<>i<Es#{G>;sT-kWvjJlk`PS;Mx(v>?!}7*)JuEK
zYu419mU?>!_<Ey>B}*oMNJF!5r4#;!sj0OePE4r$laq_|X;PS|Yg;UBQlPkaWCU33
zv~6rG7Mq-G5D;aXAv;^h{i1*f;7U<aH5!9i$b4ai(YVg+bSjFFf}LKQ5wF?YRa^mj
zAe?I!P27UxqyS2g9NI*}pkK5oK!=jU=Qo=x`+9qmQRq_x@!HzqWiD6g-GeJuxDteq
zxYfH|x9P(b%}$a|hf~SUuAQ>knp5L$H|SVzFV!xyw}=r5ANPHIPVuMX$j|JP&%v)w
zCNb0Mv32XV1pr~qef#&*MR{P*>!XHz`O1~^=U@~TL9AWAoO;v6t8cxf?B2h>sqK5;
zlbUEe4|uz~32a;?W74Kgp|cYcz98)E^=)Nk9!PF^`U@8>=r0%yqK&d#Qjd*|j2Vqg
z^`WnKWPBWStS8(>f-{|#I~+MOAB7PqIEsbbspJ(Ho0~lvY9x02>R4HA?N3|Cq>O|)
z3l@;H7GwbBnF#(JjE=DT8yb4l<it9<djfDpM%5b4=%~i!`T)5%o*<UF6K-g@gI~Sd
zy6jQtkzw2_E}Lam+%p~sJlz-*buY1;0|AXz2g#lmlFupedr$ia7n{G{lx0#XLtbVC
zsLRmzs1F#ry|3@(mtC&i2TsE!0DU}n{^CWwp9Wk%!0@|o8E)OWG_rZ~f!0;4Y%$ux
zygkT$U}9pdtdbVKr4-2OXFvQfoQaBicI-$K8L!iOpo4@Lv<SH~JRlV4!{Bfy5O%rj
zIW&ivgxo31rPEFdomqB;Ff;2YGgUYox%LG4Cm!x_SyNMM3O&ydGoln;ue<^xsm=<!
zF&-ElRdX3_h+Jo<Pq2G*WW)%(xOJ;Om700Gxq1EU%$slC{#7{K00zG)wG72S0p=VB
zYY<0lZ6L6w0h#-VgMuwCms(!j(Gdll4E(w?>9a4v$8qGm^Yk9b{mYm8{XWXy?r-|{
zm&~A4mW_q}>aS>6(MCegc6W=`{J{g^@L%+xu&-UcdbK(WRm@}Vgdd3D-Pdr$(;Y)Y
z2cBHD>QwhuN(Ca2Z_m&Fpf(Ca6m|`r-1Hzab_qt3r)~~^YEUt5ghEihiU2;w^o)^!
zcXIM98XqOjGkE~<FF+B#im$PVi34Ivl|xJ3v~Jsi1=*;g#mxW}hgGNBHUc=YriE1?
zP=vBTKwi;dvw2kA-Q5H2-Q5A&T;mKluv<`m0kwH6$Hx^)joIvAxuvA_t5$tbIy>u1
zVC-KS#@H~4snLvsP|&U81H=did_6tU(7-^7Uhq)BRaO?N1xxz;D1qqLzTZbVf4zww
z6demcq&73RK~F^CWky0TQ%Q~(Zoc)_EztI>7br6+u`w#3NPWuX@#v!8{qCRbCKMTg
z`y&GRZkmI9=J@sN*J1wJQ!oY+YB;8rxw%_&bznK=X0sh8fXQ!|oP2JQVuFp5&bY8M
znM_@1a~llj0N*ZMudX&(sHs?ii9Ev6uM1^oYt?vkw>=VZkjrk{7Kxa(z=Rzl(xJym
zUQw)8*E_J`-4U}n0I9VdM8@avjgEGdsMVEp7?x=m8{wIQ!?fn%haYw%mMt5m#OEt5
zJ#k{i>fzxgTS<u`3lnF;7sqYz2z*hfX|xEIg>lg#yua;>1T`Xl|CIiw-_-alk0&`c
zR#fDmy6CV&nufok4s`bR+6|X)-h2&}y@|qBD`_~@Ym>>YC#f6x;@#aRhxY9od=}Y@
z#I-x=^^T4*6t4Z*fq}SB^7|8JzP^im@difTnGcK6LII1EOB<q*CgBoY*^^^q^<U4;
zUE?&JJ9mS`cn<DL{)?F^mA#zGXc740&a#{weSrBk>Uz0cZE-lpI6_4lo9*vL*R7kN
zLZK)@?#a_?_14jLy55q2lfm9zN+_Z*YOw?=qtU*yD8OVJ#o4ca?Q36q=3%$nxpKvd
z#>A?&Hdp`5OcO*rjnP7tmY%5oz5`UBpsFmPg*MdhgCC;q?2P+=Q(~WSKON5qzS#Ww
z{y^?uy4>&KV)NlM;?mJA_gp_KLuI$C^^{V@a#K6%>O2>emoL9XbM@8BLQ|pAieXXp
z<&b<6G!XaFcmsKzL61kU@3g{=$~CkOXeeBZkRV8;BayVs0dg2rOylqX$$A8VEDp7`
zw{xhoQ}PuRJ@Yk+rIsB(`AI(Jg=ZS<Do9K^h&mQ6ofn}Hvu4cHOBujtFNU`i+O}=m
z*#`aJ{;jtWsDhQi1P`^^=U{!<nSxgj%T_%KFSw*5D{H_>83hmk_{D0i13<1>^`~F`
z>ev3mk|m43x_b5S=@j#}D9D7Nz2_LIk(5(~=<DnYlQ*i>xeV}Yi!jKet!39PSE2Ib
zL3*E|?P>d-wlkkqZ;C_$<19}rgnO-taam^Yx!30|U7DWOE0xt3^75=!8tNo^kUW4j
zmkoepWKA51uX}(&j+==iTYSE5&9fZWXJ#bv4id$DUvE5qT682C*nENRRfBWMPo8;3
zqDMML+g)r=kHylogt`R2*JCW{=rA%7DBkX;`Gerrt<ARECy={Vn07nJOF>avTf;Wy
zS4HUnv77NMj7y=(fKJb?yx32jB;GzUVu>4#$bEFw3yDe4_UsPQWg2Jlojq9l)Z%b>
zG4^I=+4{D&)6Af0N(6(tEPrmU+tJr|EObN+0&=^*31?6fnPl`CP2o-zG_KDS`28nf
zXYS!*^VXYW1q2o$!DwUnKn^4~N*}<#)ugGOx~i&b{9jU!TBD7o%ZSb*QTPv@rqhU#
zIlbQ@XNqm#yt(`3aQNA0M@L7WwXa&0?CA~!deQl~xwqE`J&&s3jvb=EOy&Oi+iy#~
zTefW8yk*OlSPZm}C82ujrb1D$j=GYux3@gO+HlfNobYF(1Cv^9l%l)OTDET8f|7XL
zJ%QZE0!x-G!K1rydFD1q*7itAiH_)C%uH$(@AY~+N|-<6gN&fJ>h+8Cm+6Dr!BhlQ
zUm~%@{Px@b;Xi!kE8m-`0q+Lnb)M$ZW#!P%>FDeniV+d@^qoFk1G^*IDN67iYIP>0
z@6RiCF@Hw%QGNzaAR})di4cYO2^7l=9+OFQd!3)Is!|#XtE;c*nHJDWa2BT*)s3&O
zce?BA6K)0=5ytGZc~73))pO>|W?NU+bz%z5b)rZc@UT}vc|3#3fY0RTd)W1gPJy{O
zOU;@!NAO(To40gy#3VvCMm(6#Uu0<10#IMLrk;o2hNyo2%9VUANN*ACVM6ZeW`9XZ
z1)zc1EQVf<tywb{O{HA1!-u1ZuGOnoMHmw57&&yvuI=a$_NQ0V!D!F!vND(j4y%7T
z$TJ-kmbtobeB*2GuYBc^uYTn#UmtFEx%!cN(*Y<#S@7SThTh(ju|eh$F>lG)M_F~G
zozmDyL&K7JC(i!X6-oQm&%_BH$o<Qg`{$XvUqRkJ60xK2fFyo{lBQ~)fh$$j)p_}a
zR7B$tk}<!&7J3FwQ~Na3-FoMptIVx(p{@U9n>lji!0MAHyN|41-McksdipxOA-&z*
zH2MR6AHn1HNK5dkbO5B&r+nYT54Rm)NyI>BywQ%1c4iJ3u2d<N3T0K5N%5l}mDp*d
z^U%nBIZsIm1<susS6ZUh3VkQR5%_#biPLE{(kNNBZQGbp-qiHVMzuOo4+qr;BRlFF
z7%<a06N%Hf9RpG_ET?n+Y^b{08V|nt=9{$;V{*UtwXd#zi69<Gz!qM$3VmmMhRWgS
z>F(+6-7{pfxow*_muMW3h$UEA+5E+LdTAVZ-g*-qd_wL;gc%-M)yq{>L8`A^xl(n$
zs!E%mkKD2R@o;Oa%LZ}mEimEf3nZ0u7><1DJKxzgc)POF*1LJLH{R4_@z}|mU@1`z
z!RlkUy|E)ldL=gvjv}7nhZ@9^B@(%1Z?e0mr=7Z;u)%)Ajp}Ma7I_Pvx3Of@ZqGyR
z=c{Q-4K-wDnh%YQm8`@3i^E6<PQ^M(dt-peWg6xcYZYd5_%FJ;>gxrOib<^<-hlzl
zXfMNmo`bVirq`=<v8gFF6|{zlP0*^~aooM@a%KK<xU@8`uBiz(o;u~BT4EGq3246T
z>Dd#Lq+Dlz{}y*mEEdcJ9sc~$jEHCM>HGZnyOE@EM9qvC6HXtU)M%>V&QzZ#Px3%=
ztD?)cCyeB7-F)}mw>Z+b9&-L>%BtVl1zp0|gIaB!o68p++1F=UT8LH9Iyb=gkt0U}
zy~w?M2^}vlW@hGQwu#PQ;!ZD&Pat5MGf`Ajq`h)p5Y$LnfBy4l%EmMrCBK|g0)tJA
zh@P=^>k8JvXZsN;s({HVenjN*0{XHojth1GgFWm0vp*YljgT@ihQr+3-aZlu#A4&)
zAkDxPhDD*ZYa1lGCht(?6Lr2jckkReb?Wxde%4H$-PpQjO*xb5i?hYp?b@R!PsU<>
zecya0GxK!r;;yblZh5)!w@moFzY6=F&R6HHH$9O1moN8wxY+#qt}vqSX2XshT0K4g
zLg_Cn&!4}LBRZ-L)zwwi^xR!|=bcL)>x~;X-+kvDObuwwO@JE7VqrQLL#Z$vvCY@7
zzpkP_bsg3tBd2<LTp_hO=-s!kH;Ag2H)ChY>*{g~^L;)C{S^!WCgF+$g^;wAY10ff
z^nJRn?(1J?_G?yJ`vKMMV^qhtfwZp^hcGnUloYEXk!^<oH!>G5&eZDK+ch15!0s;W
zT|aqHGS<^GGQu=AW^P6zSRsQMHrv!vCXlz*_w`ZhV89i}>eVm3lqzGm2&`4Nj)oor
zc1_j+(angy+W-#eM#;}#vLqOsSHFMzkLbJLi_IHH;;0CRr+hbPxDZpJh_OA_E?v8p
z4GJb&o3-bv;J{yXI5y2v7p}ef?z>ms#o*k0_vX#Ft_6crJz)ZQ!ptK_y1RWl=9und
z>+U8c@_JjsnVAxgdp*qSoCEmM!m8j3P-`Ocwwr0XBT0(;f<;B4c0J}?SQaSWc|ZBd
zy`tZ_ENBdNN_(0^$Q^;NTUT=EP{kn_g%Lj`nnOn8l82GI4ztw(Vb(mndSIY~=-U_R
zh5}1jeFA_dhjvs?TvJx&mG0cRy=+q$679r9tZ!!Km%pT|b%yG7y#*4Q7CR%xyB7Bk
z#bQIrmX=+V`pvzd_+fUoZ2H_u6Bpq=E+(AoZ(ov+f6vY?S{DlKHcaQ`83fxTKew)K
z?v}w&m1cKXb8@njK)DTYd}mr|^sjyEt=HZaw)Zu92&fHCmD5)Hok3b_!Nz>`bvt%=
zL{`<?P3G9i=pGVRpXUa18*m(2F&9Eib8rK^MT`98W00~Lw4srgUB7ZA3mkZw<QNZo
z{(KgdmUEP;^oz<yMs!s4DEJ9?IyQEwU~J5Y{0|izvRc`rcJadw-l2rS*yh->pZ;`!
zZUN?Rsz;3!&eGEm`BaaJ9tNvnc=+xsaD-|{4j&$)uX*Wh6kjd1wzknNmr6ji*XSTB
zXuX>^+x~)9Bie;+gPq5YRrWVF?hbyTyy+faY`%Ka1G)b`<bJ=8a-MoqMuvLlv16@y
zz`Q2#D5r|7bnYi)mjv^M^)5C+fiq?x5Lo@o4^EtT|GnkQFR4U?AK$fWXl-YwsctTn
zI(8(Pq}Pz94ACBjq4F4jas6!15CDjc6fwH+#tp0$%6#DhcMO8Fpi#89`v9iEQaH4t
zn0Wqtl@bDjuIl2&^Vu}rT)1}mvKlgFi3ni?v7mx-+@X?f+l-OoLx&a`Nq?PhzrDC{
z0E!r(E!$0m!@s0j5eN(njOy};P2fNH$&x*FCJ1lNpZzRQv5xJfC$LuAUU_9~>B<Cf
zbXS*)Cg#R)Sfj}R_4oRSf{*UP#M4(c*fJ=Fqcg$y<xkA1{n%uD;?DheX5Rj$Klu}T
zY-q?fjokB~R#_PUR$jM*`CoGs=+}n){wn>gTX}bH-+pO$*@g`p-zzPBr`hdtIdQ1R
zz8eU<b_<jK9mdjEwgSG)0fDJR`MNF_re|nuY#YWzW4eK~IWF9|O8>VZH<zH);Gk>H
zQ0`=m5T~7;t;x$1a=%zb=ZA@HTB?=oUV8EBrAu~_3z0A_5Mqa{q$nO?*qgZwDgh}3
zlh<;WG&2LGh*2K^2+a9xOeVuUfNSl`l}fp?x?1Ol{uP95SiR(zzjP=T{OCu;ML1|u
zuWbS9YF)dVnp{j$Wy*g~k4DqqKd43ILwKk`k+kfi))ea=8X7v<(o!pSFZnzNa=+I{
zIWPXM3qAK-rJZEaK=Ge_XB-ZJ4tnZ>!4t7<YPBdcnTA)dethM6`cz6+thnSG*}nY%
zUUBOC^xC||7m_&B&4a5}0a+pnf%>Wn>4&tHmBmF9lLxt9q7UstTK+16crHzTA&cq;
zkeTORXiUHGLn4G{0F%g=t1mtTujArdZ<)lPyb`)pg<oCxx9EBaJL617XjWrJfd}w*
ziPNjmbXF#l?dy<xM}!IcJz`9l4oHR^H0OfZywn<CBLfKZIeuamxn|q83MyAW3V=3A
z6wR7a1PITKjgR+52M0Uje47{%QBMnhX|cs(p~3z8j~?B%>#thupV-vqcV32%aj|*q
z3?UDC8S7^rfQtOUY)0;eONehSkqAe3wzp3s$Ja<X4&ENVeS3yf&wgYxI^e}rgkO8@
z=DC|HmFVvlkyqm?_l_OqhU?ccQFC)aaHY^TyZ!WH(1si2xB>?@+yG$6%@q@M3ZWVh
zML8Y!r!M3Wy{3bjE8ud<i}&)Vi<k0@#%;o{3c2G=IiM?TV^E)=fw!~H&1I(Ajm94M
zMUg`#qoc->P^cCJUENDPHZ)0F-ts_TVuCj9DI%k&CIZ$C!?l9+v|<99cKNDRt0Z83
zSM0gxo*N(By*n1@eD1lJSOJvyl1+?2+QXxRa0+4}X25-(xJKBSbKqk0*P9;5{mYm8
zJ)B_vdeZ_8u=R7^>FIJ%p}50NMIS{n5OlW&c19u>@QRlV5ZYF(oSAuV<I<%~Lx2F<
z(=|0><Ci%?G~4)@SnNm-kbuQ*wc-~zaAqn-TKny!O1Upm!eagieI-x}u<a_`K>AtY
zL&WrU6odm)M--2qU%7~#PY3kp&tJU?hYo$m(6G4*0NFP5-KcG_T9^9iPasH~3z#Dj
zTV+d2sH209z(XA!Nm@y~y&86aLf?(Fg#{X0)~?;KmfZowr1@ewv&dlPj5GwTR=xAo
zsRLkdsY*tORGz4<4Gq#*6YAWvC)CLZlqB<Vhgiyeo#F6-U43kn@HvPD_x1g=_HTkR
zQ8G4yonhG-Om>1ArZd)M78b6l^^T0(fTi>=w5`_8%)a;D`?UuSNTXibTiey@$N*(~
z7c<~0_nbW0E1f>w8zdeu&EY)_c!;`khof9j3Fbs^NV(`^CHeErAuC{<wB&{D2~vg2
zzlS;zxpN?Rj6C`9#q^zP)zx|klM5Ci`Lx`Pv=%qO17;Q&6GZ>zUp#7P1X5*FQ+uSB
zhp0E%Ld>`!aY{~}Me=8vG2YM6;>t>H#DA@X?Db*hS}e0sX3uSHZDA{;rb>xzgP6uo
zZy#oq;|F9V#|C#ZHhnYk3`2x%2iU2ibI>dXgUx$<jEl`*Z<?m&Q2ZSG{AA+gv~&ln
z^0DuvKszLINlzW_>oqb|PmrDipkGH~RcGg+b!?Ti9Tc~x`{c=eyH1|`4&4Wi6mxSF
z13;Sw=EKz0F*A(AWFj9cM88e9pbI#;68uq20}|8%8mbcv9h{nA(+21}f~%L7J3z$E
zYv}yB^Ec`DVQ4_{I_!H1yzLS#Z|_In(?5FT?ty{oVt=JTbaZr-f{RyT%Mi)zotlc#
zUS&j&lN#^YvukPW96vq=V31tDK0p(3X#=bW>k`;|sne(1!c0WaL6i#^i}$ek19GPt
z`NS@^Q*w0<4Rx}bJA2v=9QaS{YZaeY>LOqLJh+(bf!x1zx!>oD&4UxLxj}VRRdMl_
zvNF*c;SgQZS{hw+IZCBQDCSRoGB+onfp<J}!C<`K>vf&VWV0mTr_OJ$TQ|^)zV{5C
zJb9$o@6S=v)R_G&jUW^_y@JQA+Hv(Nvw1}}MR|cB=av{WWoMX&={lENL^zi6`ua^S
zS~Bgh3`|1B#eurteCHNH4KY17hY6i!w2=4>a08fkm6;oCZ&yPBwlX-u;9)4DUl9!2
z&2ZfyY7WGyjM{BOP?FPA(a)YOQkGR#qWfpZ%NE&eYb%-PS&0jff_{Jb(=;{HFW=S*
z(2-4(17z5tp&y8{``#b?U}z{@S((~>>=-1jBb~AS-Mfz+c=_f1pFyTU-_w1R^Wg*}
zE!Q4;Xsm?rE0Gj(2ivea6pH0Ja(S5_iq#x|%D)g%n|zf|JQ4FYHTCsIw{PD<wSG^C
zjMLVA=FAc4<jIp>W`QlJV3+{&F9(97v6z%dr7{x)q0_Wv>ho>3kv^5`wJQcjpJ)aK
zOj_mj>n>_dnFP`01_%lgZo`+h@Ivrc1nzc)AU+LDGOOQ&O)?K?G+R}Lh0VEifEaVE
zRtud!TsytKf~vG7h{K8ZLVsY+Z?HCm9g7N!PEhG#bcMLP*2ML%oMI5PjopYO_QEtg
z?Q%77v@}XnQ^hFULPN2Liczi2PdqU+MEuy)dh}@LE+KcYpYQH_^2xsl&)@!W9~b+K
zdegb{4?R>o!j=N5u)|?j<1qa;h|pC#c90I5Oy$hWl#+V=h0A$@n?YjHc?dcH<I`fW
z4>9<$*qN4p`lo-wk!37^5p84`n89}jPrD|Ss_AWOb6f`<&Py;~qtD@Z$3tdj8yFav
zuDYH~u1&Fr+xWzU-NdMDv0Ix@fAJ!s7A79@nCFrJCPe~8<ED=5DT>Sypjp_uc6)@@
zNevq`IXr|=*;swHx^Xyq%?zzzm%q483qA&#7_CgD)CM!UzLw%s5$#(IjPWx<N6c|E
zpVHpOI41c1yAQCn2&*-_A`9xLu<xC_rlxjvcJAK28oBRdv$G@JjQ%@zjERD+^&jm4
z`a3OsI-dE=`C<>`{^iU4^UN2k`qsC;b$*0=uM3)#zn#&<eL~++AR1&?v^A$rnJDhP
z`_}9K_>b2IjvQ&}>Dav42u*(>8ffepJaXjBU;gL+?Dgg3WMdo`7GywG@nQA9^Y+_s
zH-dm15x7Ax(AD)6lrp_mNdyz$x>flsO<>A;+Kbuc&|FtFJ)Ofgd!y~Nbf*;_k}A{r
z=jKE}FKql<SJ{;{&Jt^<wK$ky?x7ZDd<S#Lt=96nIX%PA+!n}G1MGzngyC%P`Olv1
zfjVWT-@~t_a9T70z0F&F<%)_~wML>TYdxEe#OqsI8$rNY*p(&emy;G}YxeCE+uPV|
zEiDHQgm>@W&n(HKY#Xw#lc6~K1UhWP75N4}wR8S{JTvb+z3lAs$o*XCxwUJ11_h%n
zJ~C1n0?Jbq6&b|9c9Wy6ZOI&Ern#Sg^P2<hot>L|;=m<Pq!&<~iF6-1dGgF({m1{<
z%|P{>42BA4(R-=!WAVFJEnd9d*4yhbU01=vK6R?*G$T8=RzVu0k+n)|198+%Oa#+`
zCTyK5c82VL%WAlgPM&Dff9n>KzbE+f7vG})MgwwXNib8!5rnD)UQkS_M(r1rLKSTr
z&IJ43*3(bRBpXAyo-|(ze}*QNMSAMyIq;tS4lB)C<cAS9vI|;>BU4P>XhQBtlL8Kn
zm@zvv)LnhMcI`X5fB*giFYn&H`zd(kN5Kk?g!k_s1numH%h%UWqsymE4My$)7n`@<
zl$G_6(D$N4bbFD1n(ZT?6C*?y%Oerm=V@((BkM8)7tXywtFT1<NL*>HX!sI2Uw1DY
zr0A|)|HSUuIwb@zlP4H7YI;we>`N_P+)SemJ;}t@5iIRwAW-Rpa^Pl6Z(dwdDxaOE
zSrg<&p~b;YSLNlk(}y3?;#`G0z48uY<>oF`SKm{4C9V{zV7Z0qd7__Q%%8D4mM<rT
z0&_Ej!xOcTcT1vB(AdPqU@=!#E@D??onC-&h3q#3Sy`d;P|%{eq(6!;gTLo^vL%&j
zLFBGRoU7Oc%9fCbXNY7v89{b5+(MpupsS1VZXAuPS9czPrm(AX*RDZ9$s&@^YX3yd
z`#vr<U%hFeko)=b7j)Z4MkF?#ZS#-BVi7aUb->fix#<fRQp4M}ZQmY`pL_j{fBeUO
zwgG8w_0mEo<PNzj24`O7(An*=Q65zKnRVx<1x7wf)z7kcv6HfDo*T~`8as4ILDs`w
z<q!fLM1P4mBYv(^@H45^#tvpoB&N@u%e$^tj~Eqsc^9jvr{8()+SRK_e(s&Lsma6Z
zK`ph^!$4I*I1NHsl=I1u!Dyhu&IEwHH0@)fqds+cx!urTR;GiCZOP;{&ho;-OyE|n
z&JKHlO%H0PFn1bwAB``kQcbn&<>aEVF!f|p)1WQ<#1ntn0$~rH<i5c$#-?Te{@txz
zT`gTTO-<eVjvNVv5dJP`Hc6uC(@wh5{=Ium`&DqUdE&?ia{s-^J&lXaH&1VYQi*jx
z=Qc2HDh_?xCi!S8@j`xVV!cAjRVG%3LU6K-=ck|f`OgcVOD2Eb^xe_Xg@3egAz@^P
z*Rho*5!SUrG+ATZbqe8Ip+FB@sC)Y9x7S#$Iv6&#5G>L9<m6-@yO6Qf^VY3w7t5}3
zCJdSfc&I?ot|fN<s4|(1VrOB~H43?Oo4^9c#$N^G&wG|YHJ{#)gwJO!Ttg^{sqrg-
zef)Ve)zX3I8Wm-1h`~YX=CzJKuUA{-aAcOZw;M+wOFG0ncLS69ryP2H|5{c;09Ul;
z$)}!bV&Zh;X-?A|cR1Q3^3Kk``00@&V0}mS?W3{Lw!5-&|DQee)PH@dY0sV`-~ayi
zj|pS5>llPBF>SYpNt6E`Ec-~`Ke2z)ub0JwD#DqoS3OpE(&eHa+#d>ulcAsetfj~2
zTcQUEw^2C5;*aEAdE~_xZ+KpO@gEC^`uf^C7#X1H?%t|-wyq91M&(!FXcsIH1?Ytf
zvon|wP^~ARc@uVVA3Z$bz}s)9*cs)yu~0DR2r892x+9H@aVRVD!@H}<rUb~wZdFw}
zT}}lf+;x|TXP`A)6T?eie8ggTR_uTv%ZIa_VDL)5o4MGcvPjCr#01(qagDtl1KHUH
zaKXKZ!zN8tR%)46;~N3jDHdD=1s5R`x^oDRU><_uYzsM^jRfZVB*sp=H47GGu)jlA
zMR8wW?1@-x?`AT>&i#XfwLNTEIe6^Y5sBFC=zsbC_xJ4@0<k>O*B7@nHcByCAtglp
z>*FI_Y(D<GkULaev31)H62|nFNbKG%K{E6?Jw$VCNkE7biRiEV{E<g4^0e3g?@X_E
zz`-a@&5j+)tnwW@@M84l<m8YyvB@&CjkB^f219RNP0ibHlT3OccCFpj*k~Ic8X6m$
zpr<;Vmsb^m1hx(dkHPL;P_RxepJwIcvBDUIO_NL>v}DooMBl3+_Zv<ps|mRq7-5Qy
zXHT1Snjf@KshzX>!AGGecmvGA)?o2RN2AerfQ>%2l%rx>LZP@?-qBIgK^ZsGX)sJN
zm(WaUg#G0*GoRYEZ{I!}4bX1*e^y0B1)1;@Pwd^kmw#u@>=~lg6egh)0Z+2=Db~gQ
zW5))=?E37bqMNb}4)*N<t~`();r@~2g}#4Qf71iG|32h?pD#8~eKjlVTNmf%s&+86
zPz6F23ZU9adc^G5>}plj`STC4l~^)5Hl|U&_{=kgZ%t3Xp8w)EzxizYz<{Hpu<+;q
zSV)Y|)`n)-GP)dHOUwRBfHld#W{nFk@%AdPU4Q@N<o2;>G(7a&bK63JtSk+HgmMD*
zO$qIbeuiFY<Z6v3?^$x8>sShT1qEsfd6%yW)+Dq1Ou0H;f#4FzvKYtYWZbeYzGR7o
zhMr(KhR49XNqh3pp#eKD%%axk&}`rC>5ZN^Varb>VzFp6wk6Wr>!nh=wH$78U({kL
zXCKgfPyW}w_V+O{xNpsxCB6j<7Zxk2zW%K-7TeD8?Y#mmICk`?jS2M<q5J;*e-RF^
zev$_cgb5~@5NN~Jbnc<-IXKwS@sYNtao{vAHebDovOOqBRbCcDXf7}<G{D>jot9}i
z`B3!qc@I5Q?XRyl6Vw}(ufP5}{U22q&VQ@AdTxLogRH{BM>5$5OGz_JU@bFti@e8<
zjgPQ%Z-B8}u6>P-Z?~Dv)0PDN(Sbfzc5SWK7AKu`F%z<%otz^bY$HbVQoY3F`>ofN
z%Iq7A@ydp29isQdkgm4U_%RJ%ub_f$#Mr=5V`eyZe#s%|(QaB?*<nbgjQ`!=^+xyZ
zjcwi*2-rKm{p}twE#Igy5J<2qN*sPFtvN7O+4-#9u-NGoWB+qicnQ-Zblc!gkHl(f
z-ZTqrNlA#Wh-}#+<i7p+?ewwi!3qUyYMR1Fj~+XAlm<rndYhzP(FP?+ed5Z*wv3K;
z?(gsaO}XFeqnyvaFIZ4bijtKB0bLAU(j}>KSCc|!G0wQEiv6*t14JTb^1iC-Teq&E
zfM8W{KIUG0F_YdIUc?Jksg$jU0Jo3E*F%wTIMn#?GtaD{jsEHNi9}s<iXBwwhIh8L
zw5;u~`TM_rWHIvwf{q<K>})JRlW18q!Y<i%)53)r*F`L>>*$CO=8ML8M1S+<Ri()k
zS;q*sdtXhVa8n=~8(}D?LlEKo4gdx-g^F(<0w~=+H1tF#1JW6nZpdep5SkR)h9@b}
zs0rDexw*N`bj<EBxLkFwfAt&R_&R+*y_=b?L}$I7J?9)AmARv1v#{^aqxW0(962IJ
z>$dJbdUWUqkjRd79ynl2`e?CaSMGFOYI6sj(EEOKykt6_5xCeq^``9Xa}Q-@RVlCN
zbkk6d3Vjq$FXSOhaUsr;!JMzo%PVY#xOZ;)%9Xi?;1^{e{BQBxtOXf(QbHaF`JR+K
zdv>xX+Sy47swdDXEnfW9Z#?|)8d9;JH>WTNFgze?=LZuHKk~>kKmW!zo_XYvpa1*~
zI#rD@1lEmhW@@m85~@eE%_)kD*X1z%ib^YZ{1t`*>GfF^k&on#q}%Dl-W<)%wUR69
z?Ch_TST!_sq#cs{x^-DuBQZdOAY&Ijp3%|mbSRCD$r*)!6IbsbEZvd$^wWiO2^W5q
z<LeyK^ZorzUdDiG@VGin=XMHdLg6=W-n*I1w25%1b^oqiKN$bPcfZ>W!(%_&iuLq0
z5%$C=O>OSjvZVuS_3!jOOYWH;CwL(D--q1O@yvWUL3U2gL+7)y2-&pSJmz%$Kka>c
zT$5*>Z^DKIVs4lya*+^3hAN>!Kwwb!w9ZZ_a&f&(XU?v)i6z)D4JE~d1R`ii#15@S
znA%0$mGl6XTO`#zYO9^r*&<kLFSF~6?M`Rx&dxbA-JUbEv*-MKzR#O`$PI`+JM-cF
zD0wf>`@Bzn`MtmA_xvv3-<N3!0D?FbrNX;kK9`8(vdYrZRG=Q;PK37~Gcfed#Kgo(
z7)>f65$Ws#B4cjcxLFG{SBu$T;E13{D&Wz-xo`XS=eFOtv3^}6+~f!=`~3ItUI8^Z
zB_;XGFTeWfF*ru~Krw*`D9o{AGG?z@#ir6(cqo^J8lgX%14i+kpCMKM3nmmiEXF)6
zB{~W_yt)O(8X9agRhq#;d2Mg6gq!g0yLZ`q{@wF%LM!n`W&lygq5}S53jjZ5`G}i9
zmVqWIIW2A9L~3g8=3l_9n73_P8tV7#wdBA!IRO}sad=nNecg~WkTq(Z)hZ{Zn^WLy
zTf><%1LIm$Cq8@e;tR*!{N9TEPqlhx#xpo-UUkKbh0QylLz><$2cbTiV=~Jv4oBKA
z2>uadjR+P(M4=-x7k0DECn_q+Dk0fFV$ta^qhX`7+4J~C*gOs_F%W=h2Mq>hLX*uV
zVc)x#!<WAJ;x$on@;a2^N#1&l&>bk0|3bjV@1thcvE1AO7R)P1<8W;f6c>XczAcHe
z@QHGBGZ2;V5s<g<Agia~-akR06&Lz^4SWlbfTgI0(~RQia7+?AYHRC{nEbnUNjTrT
z-L0)1gUDND6rVqDLY@c}IG+!@TE1DCmG#yW2o)4Rc(8uG7*#6ZVya1lTxustItXv-
zFksTO!lz9Hcr(O|Rel5RsPCf`!E^&WZlH};i%6y)!h~am9#8TTfm#<xcXu9TSUf#e
zDV?4<pOBC^H&<E7zy9c>$!RZibhN@asbwM>ow!8i=J3Dfi6?|)M*TdYw3H(IJYbDj
z_(c**u{>p>3ayej<b|lBB*}rb@`&vRKRC+#&2Q3n>h(<-Vi0E+0<)V@q^Vki0%$Cy
z67_#1lD9!53GBO)!*Iy9V?M~DppB6KkU=?GiI)`t9rrQ`j$6Ku?n%`$<mn)T%vRgf
zq-s`>Jm&6h7b+J17D7J%qytlRAw_dg-IcHa<NYLRxNfh3p%e)^>*S=U?Ju@$SqJlj
zm@JLt(7YP7V#KOoQM~i9Lx=VP%tl^|`XI**D0yOQn4a$IM(&pN<iUgAMg-pgnOKpB
z+p5$0!+Lt`1mW{NR_Ok4=<c?Qg_ScT6t@iGB9V>wTZ?YPhJAYsyLV5SAi)Nq*_VUg
zE3tN(Lk5|=40!+rFu_p#o{AvPOyV&i44;6E+y^gWuJ7y|9OR=X(bzS3P({D|<!|6D
zmKWgVMd~vO@d4z`0;dU$t5ovqQRIUIhbeKj434+JsquVTS`{TEVH@}Yp#-0Qga9UB
znSFEzmIx*n7A=<uWik~tP~?;Vgtq}-Qz3_f*pBj_Z{K|v?@tShW!i5t-PpBDBsve<
z47K4rw*C9nh4z~_OEl@}6)@E_<tK06ylx*1@xrvU2|1uu<Tp>Av`#@M9J`4qEWN>i
zgwP8YW+2`>#(H}PY(%Wsrl(J6@fKWwC?at-B=5Xci^3?rEjqswy3duCmd>-JYuB1M
zfR<C6KzEoQ^YUPVB$*e9m|H6gVD2vX2xUl#o2jyr%T47=r6QDQ1>qrR;M&W0@X|}K
z$lF=0Hj+4RQ^1nh^w?v+*$e#o2O5aaTGWTH-nGjzLq%Hw51=4Rq1cP>#cSEW-=33y
z_;3xZUo;vfaz5g)Q&Fb%V`|+5B_7rzct?N)?fPmWk;;VWu^Q+;3Pg9w75M3F6R<ko
zT@4}w5dxE`McxcoSBqj2m}z8l5gvx0mR-B9D-kzQkNR1BM950GckdQTu#iIXckPba
zvuA&dq7zyKLrmzgY9E{#o1V79^U+}-cnUTh1Pc~r16C5shYSER1ygkQTQ!k+H9Ei3
zXmpS-vD{HtSBR8!o!yLCABHRkd<bQ8ET}G+TN7Dl&rTGS@%gJ)mzIL^C?A$5mF8h#
zRf(g7)tDtjcV=e(@At2bj}IvR<3B!YL$(ZS@VV#S5`*sb$b(HrEy`2Zo15z@h{?1}
zsVpkm*Vfho_XuLAO~v_Gd(`~`3{6rF%J^_GWk7Ae11LY@cq%AIQ42sz)R$9)7YdI`
zvG|7)q1Gx8#v{=nxeByzmQVr1P`okY&S(MEsv0+$dayp|K^i7S`$7xCv>lo|cQolJ
zzE_Q@B|itKO=wz0icZMSzWnmFSH#oPHa(&{h;L1S=)I>-9Y21cL$7bOwc(M7P?>J9
zqPmkF!7Bs3y{+BQ-v@%|9#xOT7g?cu{ORtpi$(A^f$mIjbR}C{UEO9;C~Rgp<o3g0
zuCojd3g;1$P6Aje=kX>8GYPkY-=RG6W&ye^0sL_yG(2jfvoxCDJ@wgVpS=Vg_-qi`
zKWit7Sb|-4RI$?2Hy^8jL%OIay$DalYhGPZk0AKN$hycuLB0Jg;G&~7;CCii{Uc^-
zYT})H_sZu!{rvMgEL4I<*|bkHzCh+1QFoZA9B%^jq#6RM%Qi7lGuV!-<to&0(zhZw
z-UOWvC^@<Tn@Y7)N{n7uc*^0;>BgJP7705$WeES=xeokZhrDDH9wq`JV*buO0HT3g
zSbGhq6$3C1?7^ZGh%E;WoJP9Gi>NuH#2{_G(+G$ksMTnW0tk$XZYo4L(ZDzc=G`FQ
zU3rud@(y4lfPXcS=a`u}fV@U^HzJ)UVg1mVySh|~bLHibG?c7im$NAu11j@OrddEQ
zOAyCVUI{S41V|hD?N2{#dh-u|_`_${UVKscGfWI+D1cI1d;EBZ2AP;C>#%BvDLuEI
z#^+aI;@p{$yJgE31YWeEo{dD&*3vSlIeL_u=l{>oNb(233J84S9fFkr+t_@;?fH2Y
z%mOqT04sGCyS)WMdw(muz&r>Yo(jt+R4TSO&|R|uY%*mA{=rVb6YC(EJ5hnFyVVA7
za1&Sx>!uo@Yh~38f_c`W)+O9zMahi_&uHrGG%3zpyVg6P*YEu?A_>m+o;?dU2Y9Ki
z4S{@+Gguq6wUc2$4B6Cnd#k+=bhnc;p3NOE24NGv3J#*{u>PELTt^OY?aiBt^Qct9
zAX)!BiG({>i8umi>EQUvGTv%TqL@@m={x||fbMoDyc}FIwPJ3~tS6PSfAEJt{Kv(A
z`?pjwDP%qeH@OC0_?u;S?mWNFg$r@73Up_cA@Z!LIz4@TGEh<gA91t|tC#93H>45!
zS95du(4y`jOfPW`_z2`zoJZnKB0GV6HDuYgz&<0PN`I!Mt>YnfZCq7d-K^LEphqW`
zKd?M%?M?td3-|5Q!rk#UDH@Z5uy;k4#p%q0U2GlbUIFNp1a5jtN=5-d$F|l$>q2E~
zdhz(!*uXnh>xF}Fy>;kWD+<P0v0PI3^|e)3sZ<tF--Vw_=x&2)<~-J`x&TL?$1WDh
z9*I{1l$)0#uhSyGb;~x0kaQW$?USfE#ZQInm1s0%n-kK(@6b6{G5H`mp*w&XOywYa
z>1r;QN*QJePn|mb=I?%IBKH)$1!!`BZFcMh$iq28cQAathz6Y#wC5ynVeuzb;Gsq;
z4i^m$9<9Q{h%yDt{r>lCI3UYD$C51(FUzmUAm;H}mQfsqFc@U@6(#^1m|c;Qve^RB
zV&X`p;~Jn|+3i3XY7&bT03WvR)}^Pn?O(l`ReTrFo~z+Ltirp|tl773Yf5e|khDQ}
zep6F&25hA1+ff%9Cd5?ks{DMznT7`Isb`-(^nw+@u}FTl*?{fl;b+(90Zgkf)VFk>
zHyY&uP_{&$q3mK2<je})9|qlB`b^~fCN5d|e<T9X=3a}%j#wzIZ3?;<W-dFifKgF%
zTuhUx!i0p<1PIwo$Qh@EaJ<R1HhDdtk9AjK0g2iES?0h0`|D?vN-U`6=O-RRR6-+k
z?2hWh#4pwXGYn<q3z#%gn;npZbXrc%QNW(?WGa=S4Z<d)06ve~w{L^x5k~+s^gY08
z6#%l}HVMbZ+@9f*mTV;^xI%ch4zt-Ug()dD-6rH4Ag52ck7KtF-mIyS@+Kw*bwJ~|
zY^$khLoy)v9fgFUy-USry}lFRkTvO9S;BmjQcgnk@;ofb4lDOIHy6-guwmX^wW`?i
z^2^pU7cP9S<kXvQUN9UvV)CxqJWOvoiEv@cG1aZr1_owB&QNx-Nd6|wWQ6YQGMUVV
zX{pmp(*L3Co`;!GMBZ)Jq>8NKj0`5Tl>Nyk_t(M6lb6Tm=Sho-?w{M7lmx+FSqfu3
z>u18>{qE!$#5h$}ibQ+91xqE8DByfzu@WE8&As>gPe1+GHEb?-hDa2C6<H7gVDAB<
z{Dg-wMI(0US7pUC+OIzO<P%uz0b6++elPO#C$ij`>MX31Cig=uf;oz-wrrVzH3<MH
z91d)Wh|#Oza7dK!j1viZwxZ-@sfEq{v*P`C?<Qc;RB=uUWG!HM1LCbFNtV^o@h$j1
zn(nS%Ed!dmvI)yb`l`FIYTi{SPBvV;`1HZXXP<qs=GZY}qJ?L`Z!=wlMV^u~HqS!Z
zbCt}i1Yaz&d?$1-Wo*jKygmz<R1N0U{qP^02f&4jno-Gjo(Htv?L;V%WxxLQZ@>H!
z@D<5leRZs8^X4zleU+R{nGO>2^HV=6|H)6zS~D{dIjvOg1+K9k>8l+xdz+f(=a2^e
zFQ0tk9s3}eiRgz9AFd*pH4kp%hs6%GtFkgMdl?ID@7=$zRFYB`<(SqhU9ufF@iZFV
z`SS?fX~%-A?%X*|iyc14aj6s#sle8dBH(Zk)k4K`hr=n#%F0DZD$6e6@n+OKUVRaQ
zO|S0)Uhc7V>vC&S*02BHZ&g$vtC9h`7^;*)zSCEc?TAu&VBq!FPu;-le{-Wi@MQsy
z7f5)^Y0#aRin|rT&;?#QK?Hx3i{Dr19$&i0Vkh8|#ZV<F5wIJcT7?0?eOk3zhrCGs
zJTbO|-N}EnK|A(Oe|rDiSMbsO{L3%DJO@wRxh-jFq*VeGdDs=i;?J(3RL6Wd!nXjz
z-+@%d9jKVmSO(1~7ex&`uOdyVBD*m1^B=&7+zhQdi@eK3FW`dLk#C>G;p{^iJr6#1
z=rxtzHwB7iMo~4Q5=<>E51_qfC?RD`fMm8Q2>J&A(sd+*;|B0J%spU!3n2Q5<WVB#
z70}1eK5LNI)zu_tXD27`+q`+>Z+N`oLXAe=QI(urM1vm5UA=16{}Mg@^hInhw8PqK
z$cBu}C5t+Ltwjr!M-5kCw>m(FB;U%z?~!m&@HGiNODknERJwXbFF)yUAT&X3)3vp+
zO$?&B<NrLDNF&Uv`3P@Xzxk`Lww}9x|J;{9|9STPEm>JE6D5iF`$(bq>?Jt96JbNE
zMWG-$0Dw<+*50_mFD)xezF+P#u#mBdIOOjGRJf@)aNr-GEP;xN`GcH;`1$<v$BO_>
z(t^0;CivK4V`I&G;2Zg@k3Y_;xnETD05^a9DGGz`gPa*xVM)^l*M+(jSZ9W*DYF^=
za+y=1-~b-_o@Ol;yG@gmQ?}+OpCrH$$&YW{nw*ZR(wZ7JyBLu29SRh^tVTIZ=6Kuq
zIG29%<QWKXIjQ~7hcI~>|K7cPn%l8X4N`s)#&{xU7LeUz7mE~^iY{Dq2U&T~Oik_B
ziwehv3%$K+n3p8id4%qS=jZ0!LL5*7=OE$NK^Nb=`M1CQZ8rFwOMV*gJA3Y<=H@dU
zWG=2m$cb|2&K>yvh~e+(5V3M|v+j8ai>JyczZilRsvZD8;NLnPJg9dWfytL*vx_E}
zOg0G|Q)U$u_}&s+gLw=lGNd4XG>2H8FNDGhm<>!kkX_BGMsyvbUVyD^xI8j6GGd2?
zxaio{ttsn}GW2+Idb-?Zxo}}GERM;@aeMrJ-OLPDh?0C5%fuqU9aIb3+b^DZ_0?DP
zh>^T_1|b}Z=I5T%Du^b9Tplts_hvF3d<k?1mBy(hhvz)?N%)<L7YpleBF$Fl9)G&W
zf-mN#J4B5Lh!i__IGx%zvEJsGOeNQOgxA5n#0F2cQf__y$M>^;{_|WUF{agJWo<o&
z*dHO$M8WT{myeD8&u>D`RF>Ymhl;{tKz*2}c3S{VlJWTCX?1>F!IS2YBRakQFffG&
zfj?8^%boz93?O@}c+h8CkVJC_MXSoZ^1a~PxvlrXoPf<OxR(p*ECD>O9aeC=NPFT$
zUmxP9;B7Gzejn)pvQi!lUrk6>*alal#O6Ts6f9c5fh*-fZaU&R;f9q0iLy4SUL?{8
z84UeX@S+artE<n#iTc8U#||FUTFT1USZ4c=e*5+}Q3<{q#`lF{hRAo9T`YpX37xs*
zJB$E{9FCK-6KT#jkhDo5Sh(j^;`@LZhe-JP`Yq>xU_v7LH*H(HHuaPG=buj^MjA4&
z61sm=MW-j0K{cEaBR~!cuI-i{YjaY5xkw~JP)kMzc{6zm_iI~)<q!V|mPz&AFD5y1
zq!?C}77;9tg+ScM+6HSrzPf7@rKGH1mwxVCcFMVP^+&N#SAp)`FbY}}y?FIeAm*n2
zG9_j}c(U2;Ys;&3I_Ydr&&U)~A&<k%(umr0sRaPEthk?&l7_^col0P)Xrx@O>e~qY
z)ruc`?1!l6bMX7HMcN9ncyK@5GlsX`5(C1(h7djfxz>HvV;2kWU!@wtS4}3?N(PL#
zj2r;8m>t`;u>q^#fSHjFc8C6s5IR(t;nJa994k6jUe1}tCfl}cQzj`!#st;Lx@n&C
zlb;;tl$OG}35;DVRZV8l{W>Dfo<M@eJ*3S5pZWRcQ}8X=7Rt7WwG+bgSR}nE(__2?
zyc(NPos+Y_2>}P^nfLFf{~GY2EH7i_<_gv7ii)l4Py!9xxQb`98ON2VcX7gO?zRD@
zdkWMh>`wlh%_Aea0)#e6M&5YCY-?30o<><X&Evp4%Rnwa1vOWlkx^F*Gh4M(B02m&
zo<(H#-czTn7f+sieouqds>3SQo6*4~IFm_f$PMX)Rk&|v#(%E$(w)K=i<sYprc8?N
z^Yd96vK+?`z(oP2N<@*NBo#J_@PzKLwbP}WHf3lK&nE-fo!4bD6p#Zt10T^Hs8U#-
zDErrcy?CUo?ACP|R8k#@2mu?SDqM5&dL(223PymkU;p%{=dvJRIBvSr@{t0?x_#tG
z*#mcg3>yXmrU>pj0+PC)hoCw*bN$$g!BDG>U0qd4?d|9HOC+js1!gx0H8Fr=%-uSJ
z;npmn_sGyt&k#<4?ws`8ZQCY6_ih_p3&+pGrK$nR>wrImRC1Jp1S;1JB`Ihj65afZ
zS56@y?Ao>Il5c%$V;1aa`3TZ+y=(-s7j}iBI#^l}mp#)ygEgF+*nS^wyI7>SCDM9@
z?s2EP%Ptn#-$X;AKxrwxx_TGHXeLn?DcupG9iqd%B?1wq68z3}U?IXo`0p(uXKu-4
z|5VQbN-uH_Ao>#$E7@?x&-3{X)MimwI>8l4ubDy8bo0(Mq>lhig-xTw@>0)W(50At
zTw8uVVv6VHjsUR0b)uNhuSdD8!b12<a}b;CZRxrU5X3%nYb#O-TF$q?`J_;rOe7QU
z$F_d3xBBvBB3dw`5`KrPn8=w41VlI?a?IWPrP60l0%RU0h1?o~%K`u{%^<4NDdj-_
zgto7d!bWExi8ODmS+mh2`=}@L4mLKPee>YK#)(FNP6ElHS&1@^u0i?##duwLlo9Q~
zG`dh&T2{y5%sL7R=&K=Th<5{IB+?xM1agMx?`6cR#FO2+<!GvJYI5SGoqhk-t%7RQ
z2ivp>aij2U-!84RTHh;$$+9woc=We#ubG6Vu(xj4t{O3-c#}W>oW-Wi&(~+<=d+tl
zo}r?;UOmBKrVL+PZh}Mv7&im}NXWb@K~Wn|L)WJY;T!$kfbK!;XdwXSP0b1zQxI3M
z*Vb<|c6Sk~kBk5}Z)j))8HDf&P7doFvyeTY`*0pA79sYoq6i_|=}3%5av^GdOQj64
zTq<P)ok6OEusMvFv6r7pNm=8S>*U#*gB=}X1c*kC<a*5v>cj?I_72l+7X#A={A}Lq
zo*f=9F+&XgeV@nUuA+RXMB=*%pFju?y0gfR5R1UI+fZ?NwrgbM4FFthdK^_*Q`Z(1
z-3Hyu%S4EiWg`+`PAQjn%)Is16M(F5>{y2|J|*g43%~f{Us8$sNai9twO}Pfz>>cp
z<H(W3+XQF~rJ9($!os(U-+r4R%m*Lxf~-y^jY45GBRfJu;^Qo8b^9P523pAXwqYK<
zL`|fG)$s$^L3ILEJK~gF!Uenqj%1C7WA5!8ya{h%MHaHzK<dF}_`k$T{J>541+99h
zn#g*(*l_63&pk>M8K+clRjXUz06`F0ZS5f7azc~cYbS_ok0inTD|C-9-Q9Mv$Z`gY
zm(=oI@4r9$#;#rSUUsLH9K!an!IPDLc_PG)2!S(eH*LzxBd_fwoZCF9*x^8ObVU-b
z-gf9vi&8i@cP9~G7@c+7x8INgu6z)%$Mri&03qCJ-o<udryEBPoK%&Rg+~A+7N#dA
zkAIg$Gy?Ok5MER!AbSb3xwrg$5`k(ok24rB#HcNZ5uMNj4+#NWa&hg{=qMO|WCWV}
z&=9QhLnB>Xb`#>9WKPH!@Ou+U&e0*nkw8aEt2A|W6VS&7m3#K=6%%nL(rDi7ID6ng
z$?=z78n~E}a^Le@@~P_WYi&iudoR)`5kiT?>L3Z|X$<)u1D+mfoy2CqS`9i<#z_y!
z-Jits0iQBiUX^8T+QfH4$dhTc%Py1MnuV~DrQW-jj;Wv=2{QRiAb>t#&+&M>Hm9X^
zpaS%b8EH)oG{GQ+tI*;T+<6mnEOHB6C)Tn6c=qnQ$mugdkK|#==J`JO6bdIeNIf#a
z>)wq-Jx;4qdA9ciKqwHBTs@%&%`Xv&GBngBGuv!0pdJ`mH<@@A<Q<HlWVapbCUvXH
zq(^2FM+iXYY7|aZA|_QXB~Ovm)cp9k9+`kB)nl9Z<u4ETJ(`w(7GVV>bi;;f4k!Qu
zTrB^~zI~!c0-pdf(;eaFyR>i*VN)iDgX@Zs@uxh*Is$Aexe29QZW2^$=dJgF@rtbr
zvlj4;CnslR85xfQ)|gGEUT#5VCMyF*!(++6_(fyQcfVW9k%p?llhf(@C75D^NHkZQ
zPXUr{69MbvU6S)r{5J8Wu>97F64Zp&8I3j-4>?Gvxu>=3fq#QoX)EY1*4(gKFM;s=
zm|q>b%gxQYPQ8A|?n{>@oruSmb%E7;EOL3P8d4nmK6n(1?rM}nQUVgBX~Kd`&HU=>
zeP>VB)@o{S`iHN)^2_^vFB|>90L;F9gz&u(@<Dv$M^VD>#4Z+1zI$&0`Z=N<14&Oz
z0Ay;#s+PsdV!^BWK1dC9f?<La$4(gE4vhAUaxRyhfU4N3MOb5{0*Peqc3s^Q(BH&0
zEQF#i*m7VO_nfpJJaFX5VRvk&!~yf{+sO3I;lIsbq<-!%XLyK+gbE3YBCG=Gzcv*X
zjV~GiwT0LvNj?K0R+kCg;mjMs%-=ISGU5ad{H)p8*~!rzJg6``q|(;*n>WP>^Pjj0
zG+R=JN~z)T^2N0TNfkeY{A^8)=IF_jubjrZX`|0*M5CDuuu6dLfN-$c+Jm%P&v(Hm
z(P!qO<Tv>>Cll-n-Qz;{nCxOc(u3}$B$0qjuC56dCP*ms_=g}FxGpjn;P+Vxpj=SK
z+73Ak^b_F7qCyC#oXJcqrDtS(ioz^Sr2b(!Cgig6q$H(}uYFI#o|eO*Op@5;J@VJ>
z?HxVt%i>3n-6hM<Zz@C(O?iPYoeUg@kX$1G6q;ezw_%ZEL4<CJt?$Jb73ay##X8-E
zD_5@cYo$`i^`W5;uwBC1sbu#E;&*3Is-wMGrBdq~8|9GG!oeCuTce_y@+RU_Cr}QI
z#s-jw@|Dx4KRfl$|NPwZFuQtRNos7U-hlAHmR3?W<}h_8<R8NCkTcQj1ipI_@!%o5
zzl3+~uU=hNww45MIHgW!A#l9Aup${LWbpa<I5E3PBqF}RN*3yDZD=ld{P9$%K?thm
zGY}pSYQqdi^mwx6Kl8VL|M#8*q5K=WcI@cj03(klLfJ0ldbk?l?|E2D%&iuSz7s)7
zY5*zec3Z9Henb`RceP<M0b<f{#h_Akn=gUrp!^6vhYTogtV8DMo(Z{7Xd7#6Y@UL|
z5~K3VAj+zVmB<7+cmUHn<J`IXNd<=vJ(rS}Rv@}}&-ZAmf6>{qWM1u6gYxdRwRdcO
zJ4C({ITOWB;CBZCx!|OulgNSKEn)R4EYN1Vy4L1*efVJ)=>DNyBI)@6TEZrASJ#Km
zO`8x<2E7w#oD<T=VXnr)t2hkJ$s@;WYdv}x{U@h7I<RP>Hs%H_A05{>Y>;sVQ&a!R
zU%;v@27?hrBn(<46`2rtVXzvFS8S$t-*w+hqYWCS5k@^YIN1-y<^!^jf?|1TM2o;j
z&|RE`RcYHmV`C>0lA3P-)Vmth8xcw`Js_qO8o=JFnvfsu?JsZ#APDe(_Sq3j>%XE3
zY()9_sCcnh^cmN^D|C+w-6?%0BEDGAPlZFcA^0$dBg=qS#wKwD?v1{h!EjEZE=3n?
zPFS1Fj&wPluYLH&$cO|nD_yhT_f@5tnS4On%s2w1^1^43GkJUVcs0a-lob|wS}`|l
zXlmN9%i+jtlGfL|GR@rAEGR|L3Vz>hZZVlSsK-3ef91+FrG0wtmS_eBjL1Tsx-<gW
z{sC+>lt$kT*9-hddSNpV#QJJ$J0PTNoxn7{If0r7P%8Bva}krnfiKqQfcJFl{+s~V
zeYZ3`rW<JnITICMET~)WA+gS&ur-NmKo|kGyL2k-eeK#0VVQwZ4BKQ^SI>tZLX7J2
z@;;me<_?=rls;4x<)nH$3cDlPv&ZGh=JA?$5BZvLXC8Gpp4qTt$Bwm|02J-7f+9TM
zEEzW#`dcNis_3Vu`}?P-TYR^YJtn}5P~l?s4ajv!8VGo@!T&-E*Yoq_Y_`p;)z-o!
zqp(57z+Ix8KxVwR6MB;hAxdGTw^HBNXYo_&z4!U;ka-pHVvFQ=zYbixF#o~_!jK@z
zch)JDIw9I;3EeTrI_;44A71*9$Gi20)5&zvNF@5?PGmzI)vxHrjXG)v9uC)o+<#@)
z9gd$gZP?I}iUi_J-z6lDPPMk0i1SblybyT<QC<8f=5CpgP#|t^2i?g==2mDnU6as%
zpt94Y&G6)*dfbhhfXwc!g=rI+I#jI-?{j#0z?ulVaixgN413jeftpvN;ORx_f?Qsq
zyC0EaqdVfT7o$h|^}ld82iOYl1IXUd1>->1hyzYoWB}L^$2$8VpMU+5Oy<_QNCEV`
zNSchR?;>QYhvXa+cwIbm9e|!pU{m-80%TmE{*4oKVl5JAwEYbY)ArS?eGR;OC_sIE
zl;U@Y7>eH!s(*28aF8oj(P%_kSsp`{JM<#0O##La7zV1Ob0P^62G}|BM);k`nMLT4
z5jsrZeel6-p40gO7T_ZvUf;2UR2*z_qE=*A;igTukn!Zc8E^;X$YYPt6}gnZPovrA
z3sv%Kowo^)VKO4cm}O-?3ZQNQg1}5#+xhdl&SnIKVoq%hMRj!b?z>uOyj_<d;fZ|`
zDK~j}XM4qBDM=7ef$m+v-lwu60gA10sgT|gh!l$Owij=!2s>n6rQ(*N*nuN-;df~@
z@nvt4O1pYsW_3Pu>((T6nkEjEntc0)4ew)KbvI@(%I8y&EarD_h}{IBlx(dD#jb!j
z<w2R^<vAJi^S(QQWom{lqlJODM5=9Q=<o0D4!=Aw0l$d2_(sf_{kwIO)zvS-`7dt9
zAbD8q8g&3B(qZX#=&{De$F>J7sTm4IlmBe)8$yhGo_RHzzbVG<=rAyCs;F?-oq2iN
zZb7F3GdYrOp$fuGb@lrWuQ?r=+#g{Mo{Z9M(Z?Ux=Z2y?k7V%VA-K_wbO&!I%v7Cj
z3Sb!Btq=@tKnmzLhL>eIIj9u`dofBUngF<~Qy>!HJtKo5Z-&y@0)FpCEv&}Jb~ZNd
zK~)I{mQLR1z)Ju@<KZE{)3NV@-zoVXvpq6$*DG|7Ods!6w>>fvZl||xEIUBrcXEJ)
z47pC+v1H=9C3C{>fr-$$$<xE#gai?Z;k3WzITQMmb>~iHeJBetje#ft*qT2y0h-o(
zZ<7jDY>|OK1gn_s9q5q82!gD*ST^V!9v%k26Vp4=HIbu-Ser)T)Xg!#{jEiB;_ay2
z1f#AF27m8!u*2u80%ltOYq9Km_&sudQ!G7s+R$Yrb#+#!dxq%nM9|!7vfF1-<-}uM
z!GxKULp9Gg|L8}a`$B%AY*1*ryIb>Eer72~6QqMp*VWYuyfB>=5gQT6PLs*H>|&X0
zXn1s#lqJ^5YTtXWjSgu}hFNUr?>Em(O(D&GW@a2FE+TyVH#VEo<Zt!&zZT2BPrld3
z(mbX%@ZU9o<|KjjgG*SpK8no6TTKp!Zz5uPWHx5DC|&X+F0Xv547%Z|U<uUOjmGgA
zoo;}5lp^$<qtgwIUf#8<NjEYwJUldHlVNqw!$Nw`THIA!Vl<lNPN&+2Wta_{%*80)
z4igfDB7ZNJ_d<+2l$=?NzbS@(SLhy{NM1P;F~2E#KmIK?L6bz_ObKEmotGRAeiMQV
zZlScVS6wf5c$)K2m(a7n>`#?#R-w?D)#_%2R(qnqKfEr3M`3~(8W|lKvB1EqGb6Zw
zgLD}-EiZ3|3@8Eez3)w#3}FRum16T5XFS8?@tT&QO1kAtw768y!(#f>>GH&=lYD*Z
z`gPf)(+PLwwr$R5va(VUn@V-yT|QxEwL9ZPc!|W)4S4D)v&GU5+?W0<Mn9AL!g0eP
zGc+`c&4wz7hb@*#1At<RX(CZIY0K4u?q>lMp}qz4CRR^gQ>eEmf}XkbwG;TAisOi!
z-{gH*EIV{m(|8nkjDNj*$BtR&h7FGxny}``f8>$++tf@XlNs<-_xASNQ@5hZcu(Vq
zpNOO%0UCx;jkHzm^z@a8lPcVSlaoErW`>Dhn}bT5<@zzdaj*&9Um|qh4UQj|x-uXF
zo?on~sw(nYsRJ&>Z~%TMdGc|x6HpIap?gepC!sUI?Tp>u6s=cAM#c>X)HL00C^fo@
zinYA8B#O7Na6>9l#ib61%%|DVXd_d@!%@`uXip^9C2eh!ljD<<M&Pm93^4z8MZQZ0
zejn=T>3I!YKZKge$ZP=exl0a02I!zip0rrH%~OD;(S@pWNJsWsW`>_<H}dm>u2TFC
zdt{V+kD$9E9<uZDo?(FQI~<VjFcHi;H@Vjwi2b2Su1`&QtYcI+`w89Oj@V-?7h!TY
zk3)Y~Yunm%KqZMHW@s`vWJsvqYvgYa;%$U11lHaGLOppJ&w%tt<o<NqNmN2ey0hVB
zX2T~R%itEaq2&9n$T+nN?}~f|)(oupa&|a49LM`G8BThaFFM_}$sriY{O>Qke(BO{
z%br^$3bT1~9086NBzbDFRBe6N{~-(aLGPg+K&4Dhc6Sd=wzl?-4Z^aC<ka$V7+ypJ
zeSPK`l!PX9pGG-~g&iayE{+R0DgSqOVXJUw9s<9E)$_>XoJc_E8Uft{o-IO}aKH(g
zWB2aKfHxrUa%@M<+Dn&owti9_#AdsGrMuhvTZg{C*pAqDGO>1<RH{MbfAzg*hk+9j
zuEa!LUXS2*8>&FtbXfIHFIe5JCaqApip{2erO=Ovc$V-x!G&N%&gYBRNASfJx(8Ea
z;W5$Q=i=sXa`g{HF0#W#t#E=t6EMNOT^O7sfEU9#vP?OHBF<B@vlfyO26nd%^asCF
z3%<An+I!DyM3IE8-l9YfiWOtvVs_;M))?H31j0;c=)w&seFd;IZwHBh11T@qh7tsT
zuq4nRnM)Eh;P-gzk@+6U0%+Z&Bw(X?$BZ3`vr8xpvRuRK<F=Few_MD=Lh;gNn6{>z
z*RN|&7z_>F`=f{%+T;+SIp)-1%&ihR3fbwY2XeV077;c`2xSvjJ(6ZoScepW&CCSK
zJ>r-_YVyONFbtZ&>k=-bBl7qOzq5&7J1+hv>RC*`^#}O^0Rv!Y^McOMXaGaqPY-Cd
z$ODtX(2MBC0h^_>(=h%0?_X(++JPM;zY230R7v1rqd=_HyOv|Kfcb$8VUo^3#J%go
zMQ&h!Qwh-IG&#>iB5B4_#!kt1B4?uHH%0v-z6L9F_t7Hk9_UW|tK?7EHjBI<i}aF<
zLM4sUCcC1^g@|KlYHOQ<XrHp_W@ZQ)`*6h8)J1#GYeaL$hJq?uKo*Sq-NR<L!*Xy0
z%$!I^ZaRbDj*=WYQcIJ(10;tL8_pnZE`jAAp6S<1#9bn1D19b=a>h3YEqF4W9@_l4
z-+ta>kza66^b=fpZ|?|l=xjWsFin?CPe-!5Q{5#boPP})R;#adb?I~$PXwCk>2$3X
zxdur5DVs|qqJ~Zf(9fz>t4Y=<Av`&gfD;J-oM$Ic%kb#K3~0glMy&Zw0k=guh@guj
zw+UK9h)rTDE)ElK5u$a_DXD&HY6R&-T3zSZSi|>?#`8f9f)D=;T#nH9F8u47M8Lp%
zy}@*EHWEy6y<R09MBoCE<VX)H2E%jNOg=Uy#6MmKHqiFUcp-CDf}a_5OzAU}e6J6>
zveZL*Xv$LEAs0AIw=zb!82B(Zcu#Y=?b_K{8{&&lx97x(Gp`5I(A&;$2QtZg8Sxt<
zP9zi{;ps$Qps7A5r`g!haKWTjcj@4+<s3#yK4cNH8K}(%vBO|8!0)d9P%CgrD^|ug
zU=pidM1GUs@I&ve&^<I=0?)ERcd~AZRKF?kj%Y{WIGWt&wmOCCg24z>I777wc@B`C
zfDSSsZw8XaY%Xaye?DY8-^q8;esqNRJb<}&;3O>VcHc#^mypm2e%Ax7xmA5)V1To9
z_eNm9en($!B_`l_+6f}iJs}|G%5N0Z?vmDhG#ZDag-=MYMd*eW1l1Z}i)K~MpSpBu
z6k!CT!$WHIwQE2~3Hr(DbOY$#N%CdX$N`qN1P^uj$3%aRUtB5~PXzKoMlOHEK|OF4
z3axEmK!Hl*+D?>ho9cNxno(J29v!`k)#}yJVXd|S3D&{<ERpDp0|UfUYqOmI-2?2W
zLC;^}A<^GS-f(>4Qpq4z=pM^Y;nm;c=Wh!CSho%kzQGc%@GNkwqRK|+z`%^b43B6u
zDT9hCkTDd$4|nTyeMTNHcw7vI8F(Bz^Emvq02^qIprI{c#MCWB&QSB}T-?^HOC8FR
z?n@AAwarKsRg`G8GdiQi(i5$lo}SC2SFc`$?fvTTIO0;(M~(#FB9Yi2v79y@54CA@
zI@LpwGqK>*1`q82`>~fpxhSyQX+vc)6vELH?7FCQ2Wle1Hm_o_I-<5A3R1Ojr3|`5
zw(AfPqO*hULhsY!_r3o}`Q1y2KVG{3QSv+AV@G47(7IyGV%ck$nbDhd-BHE62-877
z@WtS}Gb>PdSmFH%eay^Y^dZyUISDz_idf*K*u8w6h2A6l9$!5&^mF2TmgR}xGPQ&5
z3cbDr|Ht}(e-h<E4B#=3j6%FPIy*bHm{UWwH<^rPg~Dz|=7=3xun|)CLfswHIm*ws
zxIFoo`hCca7@nn!X;3a7M+GQDr(E7^)<s)0<tu>KIXYrA4jWMi`@OcnpmxuoL3bmn
zG($Vmnpz(kzq@d1<7Wr<jQ(MMvfX@I%&DE3Q7cPIES)D$_UX*g)=YU*|A1vGmZ~Gb
zMLJ=VgdQWIJBe@w-7T%bl{rG+ve>hP-zhm0KY!C=hp?3Pe*$!O<8j2#-?S7uF7}>$
zH^1jdC)(RhXAK6$j8<#Zo{!uQmn-Xs?mj#^JZ!iI6!>s@xlU*7gP9E~WT&cSX6A6@
zUYB$g{2oL7rX_X#P;XMWdT*JTz`AA!N}9<LE2fRIRz(8gC9+T*w%NvDcM0nlLsanz
zM8(7JQOmP;b}m>~#o?QI^qKhOH^pI4F?2yn<6;{Z*XeXk@|hV;v)Q~`9r;G2)|f{|
z5xOzb+}wL*eEi)o&GSKbM8)fDD10a}d1}6eX}rYKpnDAUo0i!5L%i*epYE~LZ+eIX
zTw>P>R|wbmM2*R$(F4g8p}@P(NA9e-q-08M?(BpMTzf^g&^+L|n=v)jZ>z2bE`egN
z334X>#%nB^Ja(}-<~Mo9|1dv!di`nyJXth#CR0UcQc~v$KvzY6pk?av<*BJDoo=T0
z$`x%+_{OkC_S@>~wQ7}0%t0OTha=zrDD4Ea95Fy+O{Vb*jYw1{2XjuBlyrwDC5q$7
z%*d$e|A&9jYR6t38w+6_@ZQZti6L83k^$8i#43Q+f;Z#7dH6k!`Au;jW2g@Q`04J#
zsg0k%DHN5KdoF~}mcwaAlCQ0z&StC80MK`!GoWsG@DnAwclQua_UPr4C*OJ5i%${U
zj5;Q@Kx`EidZ1T|#VWbnV+#t|c!?(ozhk``&-|t(jwI4;A?RLQJk!GA=;|8P>Y5s{
z_{2%SXxI>4=@9%2Z^zY9=<U`h6Qv4EFq=lBHwcAtLiZfnLZqw^k66?xk6kQ|`Av&@
zeoT#vL(m;LNc!#Dtp^RL33OAhpPmT}Jqqr(i!7Ihhe!M0(Q3zoF9sc(uwGTy*LRi_
z6u{W2*B4?U32L(JL-4!HE*8gpk7W-kxP$YEvseh<vl{i;4*a0EqT=R{+uE#_;G6u9
zWm8jKU5FnTz1%wxoraT$u(V}l%;=Mn4(OYSoIy2F|L)?j@3D*hr{?!RNxD;ZvAE_p
z#ep3HyEqR6*8YVGx4pLZz$ui`I0Ph(nFy1gOja^#92qg18yc<+#Gn*PPMk37>gtr%
zy1Ko3rC2P%6d0lVz_G@7<hF~Epn@3h`1+c)c*3|^U?&d|(YjwQuQ_@Az<~?b5Kj<(
zSdx+wOsb=!#@?r%I-?5T&U?jv;zYl7-@b`~q@)?WX764hN?TwAaoybdOdR8u;y65$
zd!^U{YDpF<A*;v6UOCjbV@E&Sbqn7H&p0F{u4tLzp)+S<B0Eje-`{Vosi_-4soVBy
zl%-kK)D(YykEwo>=SzIOpMTPHcj45=F~2E}zm4MXVX~kvp2^9{_ttXq^{-M{UwZDw
z4Rebp8r^rvvsYT`BvDGkSBHjlXF{c2dm8$EN)Q!!5&UiihMqX1v9T(ly*-@G*zdMQ
z?Giad;>F^a-?XUbM{bNSJebdBOY{;6GlT?BNEmNZpin$Nd@n66-NV#+X>9CTh#o@T
zcm%H3Q|alsq<D&0)7Xg89=wnZmvNHJtB6aDXCCD;MiYE%f>f#y*4Hbo3Pp`N_#$<@
zItSS<A+L~=cEs6r8;6FBLk*`-yAo8xw)I`$4Gf%kJvljTk6d0MN7a{#n#gtq-<`pG
z!jzQYQ|@CAzyIg-Hx&YwRC)Y(`#^JZMXcQF`=S=hlo7QKkg9a%+Qk@U47nS0Z@BQ>
zb198y&n9bc==C)PzCIVXw@x4klfLBUcW9_#8Z7QXac=#mOm~-E>_4Y`r;U%x6)2<J
zr`5JaGz5hBy$i1+LJ6TV{l<6Rd39hhck|$mdiBDEb!l(Dxo+%0d%I@IMgsQ6je^in
zSj0}SsQOJIzTrbXWkI4#!*p-&SPTnI|AEkT&|{Dbe|7ZAQ%}7U#TDg$Bh)7#95kFb
zaW>`P!6#1bxp89|lWI|sU`t@<?jwAg#oEO(A|h#qe9AITCg@OnW_oN)Z;6&Z<NuH!
z{iyXdLig9MUhTJ@IkPCT1M|&v@d|+B^`}l9+S}ON9Dd&Re`L_UFgH1Q-MaMj^@8;D
zpiAVC@cSa;Qdj66f{qJLMWwqtUMxmCFnjZ6fk2Rzwct4q?L<DbX&{2Pm0XYg5hMbJ
zO4vhLooi=oi)42^$FjSjq2%n#FW-0p`V3jREo!S@zkW*!sX<8YS}zcU2;?UE%wq8L
zwt(tnThus~)i?o#*T$^YUhPS-I9y;|zypB&vm4b^`uh=qYQJ{vnmyoZj0Xm*^-aL-
zzqLnycyVER+^noM0ep$Mb<INC64Bp@oQcu?o<eB;Jd?{!4?SJP_^lSzOt0_N9zTAj
zcMP=%o<WWBC^vWP-VG(D|5E?x)KrPJw>P}SEMiCF<88L-X?g9@h^-b}6s{2nvIEbG
zM1swMXK)0%FQ$Ie3f&h_Fz`g|bYDdMri={2?k+<;WLV%6AKDR**QOgAGmH(`Y?{A+
z^2z_M4F4pQOEUqpv;Qg*vaf2Ne)_aFBxry54*aj=s|<#=MY20nAXu};zY}VIvmiP6
z9Fa4yi^b+|!YV-E)n?MtQi3~sIL9iL9(mI`gH@|l*3{HgSEQzfc@SNOd~L)98-eye
za@qR&>x)?}h3FFy93jqzI#uolgD(m}_w@9dbiuZ5fwy_>1TpxVh>-DDWHyFUOar@*
z#}Tr-U}ov-8_?_J8e~l>luF@hS_soG!vbiNQGm4>oi^L_z*zJuO7R#T)dx{G$ifu-
zE)WEgC2iwIN~sB4x4QW~7JpL`x_sV$q#{A4Ux_yVD{<YINVI+Mc%GOx7}`7g`%m;v
zPwS5+96lU?6U1e=v^aFY@d3z2x4Ge|r!J0{#&r~tJInTn7a>G~pvc=eGjof8ltthR
z1X}{E)oy-|#SXkecP}{?>@0!qE<G{^f73?6mLTOZEBM5M@x<pu4nwQ$n+AATl?{>v
zbt4CqDgw;QW{W73Rk1`O?L=i^l2p)xI&sF+ico2(@fl3WUXncgPNQXIZ4qqVoFx>A
zL`j=BZcKMg5%u+gjs6(U#7;of8;+Xalq^^<IRMAUZxm^156_gW(O7JXiHSN=*|ZzN
zUUwAr=Y)fUCWa8cepHei83kCFZK}WD)@!vYAU(f^Eiuvi5XcdMuda}=s3<*oU2<|w
zMrEb9NwQ$$M&C4z5xVSRQSvDH=sBYPl8q;aSRZ&FyS$x>idsYa6HolNzr)ti-fmF?
zP5B6~wbf$Vjk?&d1|U^zxTkgO!iCpg9Ul*n{L6cA_`8cRmu}pcl9EeV0bo5j7QQWY
z1qK7(`iby6wO)<F?<;f<rs{I(?y`#o_?uYSYu2nu2@oPFP$Gk$>~|~_3bqJ^nJGaN
zfM1K{?SA*W-;yg29s1$-o_+Q&{`T+wP7J_D<M~#^0~?3CyRE<!Cm74NldnAW)QKoL
zeajn%_ih;01@)9%W#xjAX~+DT+1n~`$6p{2eTLY@0{l&)=ZVk|2-3XvoJ<_$2KEwg
zgr9{{DW6}r&V9b9$Y1scG+x5N;NYPb&swd04QI~0e7v#o!0A^}{y{l7*ga%4n+L2|
zD)pW^_4Lcu?(QXYzLZ;%ll_DSh(p#kKIt90$E+-Y;M_UaHOP0DoC(fvDkAn?L9!bW
z3<nWe*?T!V+qFJO$HJ{F^y8Oswirt$+v(n3qZuJ|13&!XE2mGNIb%gZ86nS5Qer*x
z>Z_-}{mLu4MH_4vJ(P@$qztM|8Ivhk;}0;M24dy@&EG`n5O0Q{hH3-4hqjBY&^;6l
z<4AXRyx2lJL3w#HS$rkq^{K~aq@^jARBi);NJN={@J0!;<L3`VC`N<vL~Co8QLXN7
zc=5#_^z~V-FV)u8>R&!-wVry(U{JS2&N~Q2#KoWE;cE$!T!z6SL9)NKD<fkI>;X|W
z7H)T$&4`?#;>AMyn~I2gDK~ec;8;X02`ZKMXUWF1VYhUT4hKmo+3D#%<u=ODLSJSu
z3~H>GdMpPI9z-~i&eYP<(q=t=T;8mcNS5sG5B;nNXUn{FLn8#o_*<(Y+~&KKyK$q-
z`9#gD5%Zf0h-SXfw(08&)nCxUI|Zj@vhcHdqq@_G<inP|oa&8u7^58}^Nfa$ju#Fd
zI@D?6968d0YQZ|`(fs^B^B>DY-KVcvBk*xG%(LFF8S7&`3n{|yq^@}ce-l}Y3D&O<
zw5J6;$7`J+XOp&W+2YfEh`>olnT(|5jT`-6%Ygf1I;cnXSgU&HPHo8xFVy8$wY8}Z
zBd1TN=Wv!io$^D!jRgx0&g<9vv0y;~zFVO2F{W=q8j*RG%I6C$XGoJ3x)Un6wm8x~
zs=ujx^XBw=yi?(YS%youat&=8INWDZfGy1{fpVASp{i~?bm&<WJ>2{KM;>`DxuU8H
zQPLWXs->_nC&5FOC4I8lkb>DElyA67gDp<aKOeAsgw0CeNlIDVv%&8%#x2zdwiLt?
zpjqTI&CzIS0{>MnWX<A6=igc+ZfJPwX@x?0@R?^Cv#JXUQbj6NlW6&g7+3;fTeCop
z;^**a+um`IrH?<jboNp`5FUGEEcs2jYu03YM-X-=bxo1a?k@<uVa*!PayIPkVJ~o{
zfAv@2*^MkOVM)nfAE*-wDK=ldY~fBzN-DrNTS#~z$i8lU;DCupcbNymjx)9kZhnu&
z-$YxXJ1vfMr{sGq{wDH6CU5cjwZs0dUU^P~@hIE>t)xMz46QnZ?ac22qom|J-}&D6
zcr=OR(f_))t}cW`_G`VkT_zJcS&*hnRIxHzc6PR3SBQmKvI^tZ4bf-Zb>d>g(_?Sl
znikMOq=Stc*V9r`e7^$?qBJ|w4Uw<y-~XMzeDcZKd>W0;dE~p_t;0?nx2^v366qJ~
zA_3*u@Uu+0=HNIy)hlPB*x&sgRiEugNx$<8b|DLkV0H6T6|nk^yaHR$N8pKs-GBL)
zd-jr00(N!vzKW%$zXW#bIf6+s+p|wTw|M-T$s7IZ1#ArddHipQeV_3AV(T}t7fk)3
zp9h8^zYsHfoBKL`hyXP#^lcH(N+ja#wY8M)CMv3{<HgfP0Asdq6+}4Olbw{cW{qog
zkD-y(dmJp>;CISCvzYv*6}m@cjhHS{_8Hg-0{l%e-5I?Rj0;pF?$(r)0_2(_P!<M<
z==Vi#kx=!-6OU0G2U#Nqv~e7_Y=O|j*zlkUYFxH**!eQncywbp76frHv=V+_;BSi0
zH+fv(Rpe7s*Atp!TQ=EIL7LCs`7JkjM1S#ZxqLyLh^3Ezi#NKFIP&~-H`YeC)t7{b
zF3-?JjgI2?xYlp-e(B8taUbk$+p@A^TJU;1h_J)kzHJ*7H6YpX=YRfR9xIENYm4b!
z8WKBdfMU62O9~kfF`@gy0wN4C@+C^X$GNV#`-v-bk3f14zsF)Hh|tZ#OXcOzW@1!0
z7v3H9Oio2b5@il6&CC1dH^t(pH^kTg3nQ0Jov6GXW4Zg@Y{KW1)h5QyA~YlXPVDb-
z$J0ws57dSujA2QaR;^-*-2uPMl1Cqnm!LtM9Tl&_4JA&tZUHBGLVuSuYVS=%f2ZQ#
z<DIV!=SO(MvG?)I+R2ehIh6j+Eh*U$zvy4e6h>TVTNjKj7jrF9;Fqt^fZs{{OeBBP
zf~UuHVukJz$wc^_s%swJ-xTrwa2Hd-6-zgPh3j>}d5IK^L;FTy;iIwz*Oq)j0JRHR
zWT^Kwi3FoZ4&jRJv6Os|J)bYOPSFZl*fM+^F+YYz%UioP;TzxhM*bt4HZ9_=h)qSC
zH`9nOB&3&zB#sFvjWS{%(Jq4S(fq5?x(In4qstC?A?_z75+Sh&=WN&zquD6>2y%0g
z-X6{j!&<W@l8--n?^FvSXNW!%XFZbGt`{BS5aW;+G+Tube{xbBH^NiauW*)Azp(cO
zLy7r>r>=RN^~e>vNBIRPeJ1`mSE=cKwv8x5h{I(jlPWGQ^aiahw@+e)iGwLA{4m^g
z%^!+AGW=8He}%r5ctcXX=EP+_f%uwY_p2@8VeY!-SUlAxB_-|h`|mwi*#TAJO$2vc
xb1a_b7%Tt2W(vT&%^(|l<=@vz0UD${4T}%_U-|bnQozOS6w9yt`5Gxe`+tDFU{e49

diff --git a/src/machine.h.in b/src/machine.h.in
index 9813637..4f7dc32 100644
--- a/src/machine.h.in
+++ b/src/machine.h.in
@@ -33,6 +33,9 @@
 /* Is it available as a subfunction of syscall()? */
 #undef GETRUSAGE_VIA_SYSCALL
 
+/* Does the machine offer libgcrypt? */
+#undef HAS_GCRYPT
+
 /* Does the machine offer GnuTLS? */
 #undef HAS_GNUTLS
 
@@ -69,12 +72,6 @@
 /* Does the machine offer PostgreSQL? */
 #undef HAS_PGSQL
 
-/* Does the machine offer pthreads? */
-#undef HAS_PTHREADS
-
-/* Does the machine offer pthread_atfork()? */
-#undef HAS_PTHREAD_ATFORK
-
 /* Does the machine offer SQLite3? */
 #undef HAS_SQLITE3
 
@@ -272,9 +269,6 @@
 /* Define to 1 if you have the `_crypt' function. */
 #undef HAVE__CRYPT
 
-/* define the host-specific include file */
-#undef HOST_INCLUDE
-
 /* Is the library function inet_ntoa() compatible with the compiler? */
 #undef INET_NTOA_OK
 
diff --git a/src/port.c b/src/port.c
index c2525ca..a1ab31a 100644
--- a/src/port.c
+++ b/src/port.c
@@ -355,18 +355,6 @@ move_memory (char *dest, char *src, size_t n)
 #endif /* !HAVE_MEMMOVE */
 
 /*-------------------------------------------------------------------------*/
-#if (!defined(HAVE_CRYPT) && !defined(HAVE__CRYPT)) || !defined(USE_SYSTEM_CRYPT)
-#include "hosts/crypt.c"
-#endif
-
-#if 0 /* If you can't get crypt to compile,  you can use this dummy */
-char * crypt(char *pass, char *salt)
-{
-    return pass;
-}
-#endif
-
-/*-------------------------------------------------------------------------*/
 #if !defined(HAVE_GETRUSAGE)
 
 #include <sys/times.h>
@@ -424,4 +412,3 @@ getrusage (int who, struct rusage *rusage) {
 #endif /* CYGWIN */
 
 /***************************************************************************/
-
diff --git a/src/port.h b/src/port.h
index f8ae7f1..79a2991 100644
--- a/src/port.h
+++ b/src/port.h
@@ -11,8 +11,7 @@
  * features, includes the most common system includes and, more
  * important, the host specific includes. port.h knows about the
  * architectures the driver has been ported to and includes
- * their files automatically. This process can be bypassed by
- * defining an include file in the macro HOST_INCLUDE.
+ * their files automatically.
  *
  * Not everything system dependent is defined here, some stuff
  * are kept in separate my-foo.h files.
@@ -564,18 +563,6 @@ typedef char  CBool;
 #define ALARM_HANDLER_FIRST_CALL(name)  name(0)
 
 /*------------------------------------------------------------------
- * The host specific includes
- */
-
-#if defined(HOST_INCLUDE)
-#    include HOST_INCLUDE
-#elif defined(__BEOS__)
-#    include "hosts/be/be.h"
-#else
-#    include "hosts/unix.h"
-#endif
-
-/*------------------------------------------------------------------
  * At last, the functions provided in port.c
  */
 
@@ -606,7 +593,6 @@ extern void move_memory(char *, char *, size_t);
 #endif
 
 #if ((!defined(HAVE_CRYPT) && !defined(HAVE__CRYPT))) || \
-    !defined(USE_SYSTEM_CRYPT) || \
     (defined(sgi) && !defined(_MODERN_C)) || defined(ultrix) \
     || defined(sun)
 extern char *crypt(const char *, const char *);
diff --git a/src/settings/default b/src/settings/default
index 50ebaf5..48d9b32 100755
--- a/src/settings/default
+++ b/src/settings/default
@@ -355,16 +355,6 @@ enable_use_process_string=yes
 
 enable_share_variables=no
 
-# Define USE_SYSTEM_CRYPT if you want crypt() to be implemented by your
-# operating system (assuming it offers this function). This makes your
-# programm smaller and may even let you take advantage of improvements
-# of your OS, but may also prohibit transporting encrypted date like
-# passwords between different systems.
-# Undefine USE_SYSTEM_CRYPT if you want to use the driver's portable
-# crypt() implementation.
-
-enable_use_system_crypt=yes
-
 # Enable support for mySQL (assuming your system supports it).
 #
 #  'no'  : mySQL support is not compiled in
-- 
1.6.1

0002-Removed-use-system-crypt-from-configure.patch (3,462 bytes)   
From 2cdcf9e42e6742a8b4010f4e9a8e657b53948909 Mon Sep 17 00:00:00 2001
From: zesstra <zesstra@zesstra.de>
Date: Tue, 14 Apr 2009 22:50:55 +0200
Subject: [PATCH 02/12] Removed --use-system-crypt from configure.

Signed-off-by: zesstra <zesstra@zesstra.de>
---
 src/autoconf/configure.in |   45 ++++++++++++++++++---------------------------
 1 files changed, 18 insertions(+), 27 deletions(-)

diff --git a/src/autoconf/configure.in b/src/autoconf/configure.in
index 9f369a7..e031ec4 100644
--- a/src/autoconf/configure.in
+++ b/src/autoconf/configure.in
@@ -112,7 +112,6 @@ AC_MY_ARG_ENABLE(compat-mode,no,,[Enable compat mode])
 AC_MY_ARG_ENABLE(strict-euids,no,,[Enforce euids for loading objects])
 AC_MY_ARG_ENABLE(filename-spaces,no,,[Allow space characters in filenames])
 AC_MY_ARG_ENABLE(share-variables,no,,[Enable clone initialization from blueprint variable values])
-AC_MY_ARG_ENABLE(use-system-crypt,yes,,[Use crypt() from libc])
 AC_MY_ARG_ENABLE(use-ipv6,no,,[Enables support for IPv6])
 AC_MY_ARG_ENABLE(use-alists,no,,[Enables alist support])
 AC_MY_ARG_ENABLE(use-mccp,no,,[Enables MCCP support])
@@ -379,7 +378,6 @@ AC_CDEF_FROM_ENABLE(compat_mode)
 AC_CDEF_FROM_ENABLE(strict_euids)
 AC_CDEF_FROM_ENABLE(filename_spaces)
 AC_CDEF_FROM_ENABLE(share_variables)
-AC_CDEF_FROM_ENABLE(use_system_crypt)
 AC_CDEF_FROM_ENABLE(use_alists)
 AC_CDEF_FROM_ENABLE(use_mccp)
 AC_CDEF_FROM_ENABLE(use_ipv6)
@@ -718,32 +716,26 @@ if test "$lp_cv_need_lib_resolv" = "yes"; then
 fi
 
 # --- Check if we need the crypto libraries ---
-
-if test "x$enable_use_system_crypt" = "x" || test "x$enable_use_system_crypt" = "xyes"; then
-    AC_CHECK_FUNCS(crypt _crypt)
-
-    for lp_lib in crypt crypto; do
-        if test "$ac_cv_func_crypt" != "yes" -a "$ac_cv_func__crypt" != "yes"; then
-            # Try linking with lib$lp_lib
-            unset ac_cv_func_crypt
-            unset ac_cv_func__crypt
-            lp_save_libs="$LIBS"
-            AC_CHECK_LIB($lp_lib,main, LIBS="$LIBS -l$lp_lib")
-
-            if test "$SAVE_LIBS" != "$LIBS" ; then
-                AC_CHECK_FUNCS(crypt _crypt)
-                if test "$ac_cv_func_crypt" != "yes" -a "$ac_cv_func__crypt" != "yes"; then
-                    # They are not in this library
-                    LIBS="$lp_save_libs"
-                else
-                    eval "lp_cv_need_lib_${lp_lib}=yes"
-                fi
+AC_CHECK_FUNCS(crypt _crypt)
+for lp_lib in crypt crypto; do
+    if test "$ac_cv_func_crypt" != "yes" -a "$ac_cv_func__crypt" != "yes"; then
+        # Try linking with lib$lp_lib
+        unset ac_cv_func_crypt
+        unset ac_cv_func__crypt
+        lp_save_libs="$LIBS"
+        AC_CHECK_LIB($lp_lib,main, LIBS="$LIBS -l$lp_lib")
+
+        if test "$SAVE_LIBS" != "$LIBS" ; then
+            AC_CHECK_FUNCS(crypt _crypt)
+            if test "$ac_cv_func_crypt" != "yes" -a "$ac_cv_func__crypt" != "yes"; then
+                # They are not in this library
+                LIBS="$lp_save_libs"
+            else
+                eval "lp_cv_need_lib_${lp_lib}=yes"
             fi
         fi
-    done
-
-fi
-
+    fi
+done
 
 AC_CACHE_CHECK(if inet_ntoa() ok,lp_cv_func_inet_ntoa_ok,
 AC_TRY_RUN([
@@ -2720,7 +2712,6 @@ AC_SUBST(cdef_compat_mode)
 AC_SUBST(cdef_strict_euids)
 AC_SUBST(cdef_filename_spaces)
 AC_SUBST(cdef_share_variables)
-AC_SUBST(cdef_use_system_crypt)
 AC_SUBST(cdef_use_ipv6)
 AC_SUBST(cdef_use_mysql)
 AC_SUBST(cdef_use_pgsql)
-- 
1.6.1

Relationships

related to 0000625 resolvedzesstra Remove hosts/ subdirectory 

Activities

wedsall

2009-04-13 21:43

reporter   ~0001025

Some extra debugging:

slaballoc: no reorder: this 00002b8f445428e8 free 22, no next
slaballoc: alloc (80 + 16) 96 bytes -> [3]
slaballoc: block 00002b8f44568ed0 from freelist (next 00002b8f44568f30), slab 00002b8f44567d60 free 15
slaballoc: alloc (120 + 16) 136 bytes -> [8]
slaballoc: freshmem 00002b8f444fd8d8 from 00002b8f444fc310..00002b8f44500688
slaballoc: free 00002b8f43552858, offset 861, small 1
slaballoc: -> slab 00002b8f43550d70 [6], freelist 00002b8f43552d80, 22 free
slaballoc: no reorder: this 00002b8f43550d70 free 23, no next
slaballoc: alloc (80 + 16) 96 bytes -> [3]
slaballoc: block 00002b8f44568f30 from freelist (next 00002b8f44568f90), slab 00002b8f44567d60 free 14
2009.04.13 23:41:57 [xerq] select() returns 1, time() 1239680517
2009.04.13 23:41:57 [xerq] New command from driver.
[xerq] read: Success
2009.04.13 23:41:57 [xerq] Demon exiting.

zesstra

2009-04-14 02:54

administrator   ~0001026

Well, thanks for the report. Unfortunately, this doesn't tell too much so far. We need at least a stack trace when the driver segfaults or a core dump. You could start the driver in a gdb session and list the stack trace after the segfault with 'bt full' or issue a 'ulimit -c unlimited' in the shell before you start the driver. Then a core dump will be written upon crashes in the / of the mudlib (which you can load into gdb and get the stack trace).

Some additional comments:
- The compiler settings from the INSTALL are an example from _my_ machine. The compiler settings you need for generating 64bit executables with your gcc may be different. Especially if you don't have any Intel Core-Duo processor, you should NOT use -mtune=core2.
- Are you using a plain 3.3.718 (without any patches/modifications)?
- Could you add the output of 'file' for the crashing ldmud executable and the ouput of 'gcc -v'?
- if you change compiler settings altering the architecture of the executable, please issue a 'make distclean' before calling 'configure'. Not doing this may create all sorts of problems leading to crashes.
- You may add a -ggdb3 for maximum debug information to the DEBUG variable in the Makefile.
- If the problem is completely reproducable, you could attempt to make a minimal test case (including minimal needed mudlib) so that we can try to reproduce it as well.

wedsall

2009-04-14 07:22

reporter   ~0001027

Hello!
 - Compiler settings. I'm not sure what to use, this is beyond me right now.
 - Version. I've used both a vanilla version and my own version with two patches. I am seeing the same crash on a vanilla 3.3.718 as my patched version. I will include results from both versions just in case.
 - ldmud: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), for GNU/Linux 2.6.4, dynamically linked (uses shared libs), not stripped
   Using built-in specs.
Target: x86_64-suse-linux
Configured with: ../configure --enable-threads=posix --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,fortran,obj-c++,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.2.1 --enable-ssp --disable-libssp --disable-libgcj --with-slibdir=/lib64 --with-system-zlib --enable-shared --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --program-suffix=-4.2 --enable-version-specific-runtime-libs --without-system-libunwind --with-cpu=generic --host=x86_64-suse-linux
Thread model: posix
gcc version 4.2.1 (SUSE Linux)
- Distclean - i will try this but i've used a brand new download of ldmud and recieved the same result.

- I will try the -ggdb3 next.

wedsall

2009-04-14 07:23

reporter   ~0001028

Here is the gdb output from the current crash, without the ggdb3 flag.

df:/home/dragonfire/bin # gdb -c ../lib/core ldmud
GNU gdb 6.6.50.20070726-cvs
Copyright (C) 2007 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "x86_64-suse-linux"...
Using host libthread_db library "/lib64/libthread_db.so.1".
Reading symbols from /lib64/libnsl.so.1...done.
Loaded symbols for /lib64/libnsl.so.1
Reading symbols from /lib64/libm.so.6...done.
Loaded symbols for /lib64/libm.so.6
Reading symbols from /usr/lib64/libidn.so.11...done.
Loaded symbols for /usr/lib64/libidn.so.11
Reading symbols from /usr/lib64/libpcre.so.0...done.
Loaded symbols for /usr/lib64/libpcre.so.0
Reading symbols from /lib64/libz.so.1...done.
Loaded symbols for /lib64/libz.so.1
Reading symbols from /lib64/libc.so.6...done.
Loaded symbols for /lib64/libc.so.6
Reading symbols from /lib64/ld-linux-x86-64.so.2...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
Core was generated by `/home/dragonfire/bin/ldmud --debug-file DF.debug.log'.
Program terminated with signal 11, Segmentation fault.
#0 0x00000000004930d0 in f_functionlist (sp=0x76a120) at object.c:1883
1883 flags = fun[j];
(gdb)

wedsall

2009-04-14 07:27

reporter   ~0001029

As I mentioned yesterday I have a development mudlib. I'm getting a different gdb result from this. Here it is:
df:/home/dragonfiredev/bin # gdb -c ../dev-lib/core ldmud
GNU gdb 6.6.50.20070726-cvs
Copyright (C) 2007 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "x86_64-suse-linux"...
Using host libthread_db library "/lib64/libthread_db.so.1".

warning: core file may not match specified executable file.
Reading symbols from /lib64/libnsl.so.1...done.
Loaded symbols for /lib64/libnsl.so.1
Reading symbols from /lib64/libm.so.6...done.
Loaded symbols for /lib64/libm.so.6
Reading symbols from /usr/lib64/libidn.so.11...done.
Loaded symbols for /usr/lib64/libidn.so.11
Reading symbols from /usr/lib64/libpcre.so.0...done.
Loaded symbols for /usr/lib64/libpcre.so.0
Reading symbols from /usr/lib64/libmysqlclient.so.15...done.
Loaded symbols for /usr/lib64/libmysqlclient.so.15
Reading symbols from /lib64/libz.so.1...done.
Loaded symbols for /lib64/libz.so.1
Reading symbols from /lib64/libc.so.6...done.
Loaded symbols for /lib64/libc.so.6
Reading symbols from /lib64/libcrypt.so.1...done.
Loaded symbols for /lib64/libcrypt.so.1
Reading symbols from /usr/lib64/libssl.so.0.9.8...done.
Loaded symbols for /usr/lib64/libssl.so.0.9.8
Reading symbols from /usr/lib64/libcrypto.so.0.9.8...done.
Loaded symbols for /usr/lib64/libcrypto.so.0.9.8
Reading symbols from /lib64/ld-linux-x86-64.so.2...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
Reading symbols from /lib64/libdl.so.2...done.
Loaded symbols for /lib64/libdl.so.2
Core was generated by `/home/dragonfiredev/bin/dev-ldmud -d --debug-file /home/dragonfiredev/DF.debug.'.
Program terminated with signal 11, Segmentation fault.
#0 0x00000000004c6570 in crypt (buf=0x2b881f1eb061 "",
    salt=0x2b881f11a3fa "2wSDC4Eu8m3YM") at hosts/crypt.c:543
543 ll = out[0]; l2c(ll,b);

zesstra

2009-04-14 07:35

administrator   ~0001030

Ok, 'gcc -v' tells, that your gcc creates executables for the x86_64 architecture by default, without any special compiler settings/options. You can leave them just as they are and don't change anything. In fact, you have to change them if you want executables for the (32bit) i386 architecture, in many cases it will be -m32.

-ggdb3 won't change anything concerning the crash itself, but it adds information used in a debugger session (live or post-mortem by using a core dump). You may have to install 'gdb' for getting a stack trace then.

zesstra

2009-04-14 07:56

administrator   ~0001031

The crash in Note 0000624:0001028 seems to be the same one I described in bug 0000559. That one was fixed in revision 2492 in the trunk of the driver.

The other one in crypt() is unknown to me so far.
hosts/crypt.c implements crypt() in a portable way (e.g. for systems which don't have its own crypt()). But: most modern systems, and certainly your Suse-Linux include a crypt() implementation in its glibc. I suggest to use it by NOT using --enable-use-system-crypt=no. So either make it a --enable-use-system-crypt=yes or just delete the configure option from your settings. I guess, that crash was probably not noticed for a long time, because nearly nobody used the crypt()-implementation we include in the driver. (That said, it doesn't crash on my system.)

BTW: If you get a core dump, please keep exactly the same executable around which generated it (see gdb warning 'warning: core file may not match specified executable file.'). Otherwise a core dump looses much of its usefulness. (I usually archive the core dump and the corresponding executable in one directory or tar archive.)

wedsall

2009-04-14 07:56

reporter   ~0001032

(gdb) bt
#0 0x00000000004937e8 in f_functionlist (sp=0x76a3c0) at object.c:1883
0000001 0x0000000000455d88 in eval_instruction (
    first_instruction=0x2b2fa18c7baa "b\037", initial_sp=0x76a360)
    at interpret.c:8148
0000002 0x000000000046d1c5 in apply_low (fun=0x2b2fa1853ac0, ob=0x2b2fa18a6968,
    num_arg=0, b_ign_prot=false, allowRefs=false) at interpret.c:16949
0000003 0x000000000046d350 in int_apply (fun=0x2b2fa1853ac0, ob=0x2b2fa18a6968,
    num_arg=0, b_ign_prot=false, b_use_default=true) at interpret.c:17027
0000004 0x0000000000468c95 in eval_instruction (
    first_instruction=0x2b2fa18589db "b­", initial_sp=0x76a320)
    at interpret.c:16297
0000005 0x000000000046efb7 in int_call_lambda (lsvp=0x76a320, num_arg=0,
    allowRefs=false) at interpret.c:18030
0000006 0x0000000000473435 in v_funcall (sp=0x76a320, num_arg=1)
    at interpret.c:20451
0000007 0x00000000004563db in eval_instruction (
    first_instruction=0x2b2fa187702a "a\003\001\037", initial_sp=0x76a300)
    at interpret.c:8297
0000008 0x000000000046eb96 in int_call_lambda (lsvp=0x76a2b0, num_arg=3,
    allowRefs=false) at interpret.c:17913
0000009 0x0000000000473435 in v_funcall (sp=0x76a2e0, num_arg=4)
    at interpret.c:20451
0000010 0x00000000004563db in eval_instruction (
---Type <return> to continue, or q <return> to quit---
    first_instruction=0x2b2f9fb06bd3 "b­", initial_sp=0x76a290)
    at interpret.c:8297
0000011 0x000000000046efb7 in int_call_lambda (lsvp=0x8784e0, num_arg=0,
    allowRefs=false) at interpret.c:18030
0000012 0x0000000000492053 in reset_object (ob=0x2b2fa18a6968, arg=4)
    at object.c:880
0000013 0x00000000004ce529 in load_object (lname=0x7fff0b095f10 "std/room",
    create_super=true, depth=1, isMasterObj=false, chain=0x7fff0b095f70)
    at simulate.c:2158
#14 0x00000000004ce0f6 in load_object (lname=0x832640 "std/room/objects",
    create_super=false, depth=0, isMasterObj=false, chain=0x0)
    at simulate.c:2045
#15 0x00000000004cedc7 in lookfor_object (str=0x2b2f9fb04e90, bLoad=true)
    at simulate.c:2426
#16 0x00000000004d2c84 in f_load_object (sp=0x76a260) at simulate.c:4499
#17 0x0000000000455b86 in eval_instruction (
    first_instruction=0x2b2fa18774fa "a\001\001\037", initial_sp=0x76a250)
    at interpret.c:8098
#18 0x000000000046cdac in apply_low (fun=0x2b2f9faf9d38, ob=0x2b2f9fb21d20,
    num_arg=1, b_ign_prot=true, allowRefs=false) at interpret.c:16836
#19 0x000000000046d350 in int_apply (fun=0x2b2f9faf9d38, ob=0x2b2f9fb21d20,
    num_arg=1, b_ign_prot=true, b_use_default=false) at interpret.c:17027
#20 0x000000000046d7a0 in sapply_int (fun=0x2b2f9faf9d38, ob=0x2b2f9fb21d20,
---Type <return> to continue, or q <return> to quit---
    num_arg=1, b_find_static=true, b_use_default=false) at interpret.c:17188
#21 0x000000000046e015 in apply_master_ob (fun=0x2b2f9faf9d38, num_arg=1,
    external=false) at interpret.c:17491
#22 0x0000000000411254 in preload_objects (eflag=0) at backend.c:1288
#23 0x000000000047f1e6 in main (argc=3, argv=0x7fff0b098338) at main.c:620
(gdb)

wedsall

2009-04-14 08:11

reporter   ~0001033

uploaded a full backtrace from my production lib and from my dev lib since they are producing slightly different output.

zesstra

2009-04-14 08:15

administrator   ~0001034

Ok, I can reproduce the crash in the crypt() from hosts/crypt.c after all (did start the wrong executable in my first test *gna*), which is a NULL pointer dereference and doesn't seem to happen on the i386 platform. I will investigate it this evening.

For the moment as immediate bugfixes: use the system crypt() for this issue. For the other crash in f_functionlist() you may either use the current trunk in our svn or extract patch for r2492 from it. (If you don't know how to do this, I could send you the patch after work, but knowing our subversion repository may be advantagous anyway. *g*)

wedsall

2009-04-14 11:26

reporter   ~0001035

Im trying to use the latest trunk but it freaks out immediately on make.

It seems to not like lines like this "@cdef_use_gcrypt@ USE_GCRYPT" in config.h

df:/home/dragonfire/ldmud-3.3.718-latest/src # make
./mk-patchlevel.sh
gcc -std=gnu99 -I/usr/include/pgsql -I/usr/include/mysql -g -Wall -Wparentheses -Wshadow -DMUD_LIB='"/home/dragonfire/lib"' -DBINDIR='"/home/dragonfire/bin"' -DERQ_DIR='"/home/dragonfire/libexec"' -c -o access_check.o access_check.c
In file included from driver.h:15,
                 from access_check.c:92:
config.h:348: error: stray â@â in program


Am I missing a step in preparing the trunk version before compiling?

Gnomi

2009-04-14 11:35

manager   ~0001036

There is a script called autogen.sh, that should be executed to regenerate the configure script.

zesstra

2009-04-14 12:08

administrator   ~0001037

des_set_key() assumes that longs are 4 byte long. If the longs are 8 bytes long, the function overwrites 128 bytes following one of its buffers. Unfortunately, a pointer is located after that buffer and overwritten. This leads to a crash upon dereferencing it.
des_set_key() is designed to work in 4-byte long blocks (Shifts, Ands) and uses 16 iterations to write a 128 char long buffer in two 4-char long writes per iteration. The immediate solution would be to use a datatype with a length of 4 instead of longs.

But as we think of removing hosts/ altogether for some time, I suggest not to fix this code, but remove it. POSIX requires a crypt(), so there should be no negative consequences to always use the system crypt().

wedsall

2009-04-14 12:39

reporter   ~0001038

Thanks for the responses.

After running autogen.sh my production lib will compile well but still crashes on crypt.

Zesstra I'm gathering that your solution is to use the system crypt but I'm not sure how to do this. Do I need to modify the crypt.c or modify my mudlib?

zesstra

2009-04-14 13:07

administrator   ~0001039

No, just delete the --enable-use-system-crypt=no from your configure call in the script you use to call configure.

wedsall

2009-04-14 22:40

reporter   ~0001040

This appears to have resolved my problems! The mud has been running error free for about 4 hours -- migrated the sql databases and tested those.

Thank you very much for your help and consulting.

zesstra

2009-04-16 12:21

administrator   ~0001046

I attached two patches, which removes hosts/.

zesstra

2009-05-06 14:25

administrator   ~0001084

The possibility for not using the system supplied crypt() (that means: our own from hosts/) was removed in r2565 along with the whole hosts/ directory.

Issue History

Date Modified Username Field Change
2009-04-13 21:13 wedsall New Issue
2009-04-13 21:43 wedsall Note Added: 0001025
2009-04-14 02:54 zesstra Note Added: 0001026
2009-04-14 07:22 wedsall Note Added: 0001027
2009-04-14 07:23 wedsall Note Added: 0001028
2009-04-14 07:27 wedsall Note Added: 0001029
2009-04-14 07:35 zesstra Note Added: 0001030
2009-04-14 07:35 zesstra Status new => acknowledged
2009-04-14 07:35 zesstra OS => GNU/Linux
2009-04-14 07:35 zesstra OS Version => 2.6.22.5
2009-04-14 07:35 zesstra Platform => x86_64
2009-04-14 07:56 zesstra Note Added: 0001031
2009-04-14 07:56 wedsall Note Added: 0001032
2009-04-14 08:10 wedsall File Added: bt.full
2009-04-14 08:10 wedsall File Added: bt.full-dev
2009-04-14 08:11 wedsall Note Added: 0001033
2009-04-14 08:15 zesstra Note Added: 0001034
2009-04-14 08:15 zesstra Status acknowledged => confirmed
2009-04-14 11:26 wedsall Note Added: 0001035
2009-04-14 11:35 Gnomi Note Added: 0001036
2009-04-14 11:53 zesstra Relationship added related to 0000625
2009-04-14 12:08 zesstra Note Added: 0001037
2009-04-14 12:08 zesstra Assigned To => zesstra
2009-04-14 12:08 zesstra Status confirmed => assigned
2009-04-14 12:10 zesstra Priority normal => low
2009-04-14 12:10 zesstra Category Compilation, Installation => Portability
2009-04-14 12:10 zesstra Target Version => 3.3.719
2009-04-14 12:10 zesstra Summary x86_64 segmentation fault while starting => Crash in included crypt() implementation on platforms with sizeof(long)==8 (e.g. x86_64)
2009-04-14 12:10 zesstra Project LDMud => LDMud 3.3
2009-04-14 12:39 wedsall Note Added: 0001038
2009-04-14 13:07 zesstra Note Added: 0001039
2009-04-14 22:40 wedsall Note Added: 0001040
2009-04-16 12:20 zesstra File Added: 0001-Removed-support-for-obsolete-platforms-in-hosts.patch
2009-04-16 12:20 zesstra File Added: 0002-Removed-use-system-crypt-from-configure.patch
2009-04-16 12:21 zesstra Note Added: 0001046
2009-05-06 14:25 zesstra Note Added: 0001084
2009-05-06 14:25 zesstra Status assigned => resolved
2009-05-06 14:25 zesstra Fixed in Version => 3.3.719
2009-05-06 14:25 zesstra Resolution open => fixed