This is a modified "UoDemo.exe" with the following patches applied:
  - using "UoDemo+.dat" instead of "UoDemo.dat".
  - reading directly from "..\.rundir" if file is not found in the .DAT file
  - added an environment variable DATFILE which allows you to specify which .DAT to use (default is UoDemo+.dat)
  - added an environment variable RUNDIR that allows you to override the ".rundir" subdirectory
  - replaced the version string with UoDemo+ and updated the publish identifier
  - re-organized FUNC_4283E4_ExtractScriptBytes to allow for easier debugging (and optional code insertion)
  - added an environment variable LOGFILE to log packets between "client" and "server" in Razor log format      
  - turned a "disabled" log function into a real log function using OutputDebugString (use DbgView or alike)
  - ensured a correct commit when writing to the packet log file
  - a bug in the packet log function (multi-threading problem) was fixed
  - set the environment variable SAVEDYNAMIC0 to YES to enable saving of this file (use with caution!)
  - renamed the class+window name to "Ultima Online Demo" (was Ultima Oline)
  - renamed the file mapping to "UoDemo+App" (was UoClientApp)
  - turned the uodemo into a real server, the port number in "server.txt" is used
    (use an old uo client to connect and apply a "standalone server" patch to connect without encryption)
    (WARNING: the uodemo will exit if it can't bind/listen to the defined port!)
    (to disable the bind/listen functionality please edit "server.txt" and set the port to 0)
  - added a Sleep patch to make the uodemo consume less power on modern PC's
  - REMOVED: set the environment variable REALDAMAGE to YES to disable the 'Divide Damage by Two' which OSI added to the demo
  - added an environment LOCALCOUNSELOR which will make the player running the server a counselor
      Valid String Values are: Seer, Counselor, Senior Counselor
      Valid Numerical Values are: 1, 2, 3
      Any other value will result in a non-existing, non-compliant counselor status/level
  - fixed the way the server locates the Ultima Online registry key
  - added an environment REGKEYNAME that allows you to override the Ultima Online registry key
    (HKLM\SOFTWARE\Origin Worlds Online\Ultima Online\%REGKEYNAME%)
    (defaults to 1.0 if not set)
  - added an option to ignore the DYNIDX0 file, set IGNOREDYNDIX0 to YES to enable this option
    (this allows direct editing of the DYNAMIC0 file)
    (if SAVEDYNAMIC0 is used, the DYNIDX0 file will be saved always, regardless this option that is!)
  - added support for newlines in the DYNAMIC0 file if DYNIDX0 is being ignored
    

Greetings.