home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / TCL / BLT / BLT1.7L1 / BLT1 / blt-1.7 / applications / kosherdill / scripts / main.tcl < prev    next >
Encoding:
Text File  |  1994-02-08  |  156.2 KB  |  3,602 lines

  1. # ----------------------------------------------------------------------
  2. #     NAME:  Kosher Dill
  3. #  PURPOSE:  Disk usage management utility
  4. #
  5. #   AUTHOR:  Michael J. McLennan       Phone: (215)770-2842
  6. #            AT&T Bell Laboratories   E-mail: michael.mclennan@att.com
  7. #
  8. #      RCS:  main.tcl,v 1.4 1994/02/08 21:05:20 mmc Exp
  9. # ----------------------------------------------------------------------
  10. #                 Copyright (c) 1993  AT&T Bell Laboratories
  11. # ======================================================================
  12. # Permission to use, copy, modify, and distribute this software and its
  13. # documentation for any purpose and without fee is hereby granted,
  14. # provided that the above copyright notice appear in all copies and that
  15. # both that the copyright notice and warranty disclaimer appear in
  16. # supporting documentation, and that the names of AT&T Bell Laboratories
  17. # any of their entities not be used in advertising or publicity
  18. # pertaining to distribution of the software without specific, written
  19. # prior permission.
  20. #
  21. # AT&T disclaims all warranties with regard to this software, including
  22. # all implied warranties of merchantability and fitness.  In no event
  23. # shall AT&T be liable for any special, indirect or consequential
  24. # damages or any damages whatsoever resulting from loss of use, data or
  25. # profits, whether in an action of contract, negligence or other
  26. # tortuous action, arising out of or in connection with the use or
  27. # performance of this software.
  28. # ======================================================================
  29.  
  30. if {![info exists blt_versions] || ![info exists blt_library]} {
  31.     puts stderr "== KOSHER DILL requires an interpreter with BLT extensions =="
  32.     exit 1
  33. }
  34. if {![file exists $blt_library/dd_protocols]} {
  35.     puts stderr "== cannot find drag&drop protocols directory =="
  36.     exit 1
  37. }
  38. lappend auto_path $env(KOSHERDILL_DIR)/scripts $blt_library/dd_protocols
  39.  
  40. #
  41. # Do a quick check on the "send" command for drag&drop...
  42. #
  43. if {[catch "send [winfo name .] set KdSendWorks yes"] != 0 ||
  44.     [info globals KdSendWorks] == ""} {
  45.     puts stderr "== send command failed:  check xauth security =="
  46.     exit 1
  47. }
  48.  
  49. # ----------------------------------------------------------------------
  50. #  CUSTOMIZATION STUFF
  51. # ----------------------------------------------------------------------
  52. set KdVersion 1.0
  53.  
  54. if {[winfo screenvisual .] == "staticgray"} {
  55.     option add Tk*background white startupFile
  56.     option add Tk*foreground black startupFile
  57.  
  58.     option add Tk*accentBackground black startupFile
  59.     option add Tk*accentForeground white startupFile
  60.  
  61.     option add Tk*workspaceBackground white startupFile
  62.     option add Tk*workspaceForeground black startupFile
  63.  
  64.     option add Tk*darkBackground white startupFile
  65.     option add Tk*darkForeground white startupFile
  66.  
  67.     option add Tk*targetBackground white startupFile
  68.     option add Tk*targetForeground black startupFile
  69.     option add Tk*targetBorderWidth 2 startupFile
  70.     option add Tk*targetRelief sunken startupFile
  71.  
  72.     option add Tk*barColor black startupFile
  73. } else {
  74.     set base #b5c4a2
  75.     set base1 #f5ffea
  76.     set base2 #c8d8b3
  77.     set base2 #daedc3
  78.     set base2 #cee0ba
  79.     set base3 #929e82
  80.     set base4 #7a846e
  81.  
  82.     option add Tk*background $base startupFile
  83.     option add Tk*foreground black startupFile
  84.     option add Tk*activeBackground $base2 startupFile
  85.     option add Tk*activeForeground black startupFile
  86.  
  87.     option add Tk*accentBackground maroon startupFile
  88.     option add Tk*accentForeground white startupFile
  89.  
  90.     option add Tk*workspaceBackground bisque startupFile
  91.     option add Tk*workspaceForeground black startupFile
  92.  
  93.     option add Tk*darkBackground $base4 startupFile
  94.     option add Tk*darkForeground $base2 startupFile
  95.  
  96.     option add Tk*targetBackground $base2 startupFile
  97.     option add Tk*targetForeground black startupFile
  98.     option add Tk*targetBorderWidth 2 startupFile
  99.     option add Tk*targetRelief sunken startupFile
  100.  
  101.     option add Tk*barColor #d67f4c startupFile
  102. }
  103.  
  104. # ----------------------------------------------------------------------
  105. set normalbg [option get . background Tk]
  106. set normalfg [option get . foreground Tk]
  107. set accentbg [option get . accentBackground Tk]
  108. set accentfg [option get . accentForeground Tk]
  109. set workspbg [option get . workspaceBackground Tk]
  110. set workspfg [option get . workspaceForeground Tk]
  111. set darkbg   [option get . darkBackground Tk]
  112. set darkfg   [option get . darkForeground Tk]
  113. set targetbg [option get . targetBackground Tk]
  114. set targetfg [option get . targetForeground Tk]
  115. set targetbd [option get . targetBorderWidth Tk]
  116. set targetrl [option get . targetRelief Tk]
  117.  
  118. . config -bg $normalbg
  119.  
  120. option add Tk*rejectBackground $normalbg startupFile
  121. option add Tk*tokenBackground $normalbg startupFile
  122. option add Tk*tokenForeground $normalfg startupFile
  123. option add Tk*DragDrop*background $normalbg startupFile
  124. option add Tk*DragDrop*foreground $normalfg startupFile
  125.  
  126. option add Tk*selector $accentbg startupFile
  127.  
  128. option add Tk*Scrollbar.Background $darkbg startupFile
  129. option add Tk*Scrollbar.Foreground $darkfg startupFile
  130. option add Tk*Scrollbar.activeForeground $accentbg startupFile
  131.  
  132. option add Tk*Canvas.background $workspbg startupFile
  133. option add Tk*Canvas.foreground $workspfg startupFile
  134. option add Tk*Canvas.width 5i startupFile
  135.  
  136. option add Tk*FileViewer*Message.background $workspbg startupFile
  137. option add Tk*FileViewer*Message.foreground $workspfg startupFile
  138. option add Tk*FileViewer*Text.background $workspbg startupFile
  139. option add Tk*FileViewer*Text.foreground $workspfg startupFile
  140.  
  141. option add Tk*Listbox.background $workspbg startupFile
  142. option add Tk*Listbox.foreground $workspfg startupFile
  143. option add Tk*Listbox.geometry 60x10 startupFile
  144.  
  145. option add Tk*Entry.background $workspbg startupFile
  146. option add Tk*Entry.foreground $workspfg startupFile
  147. option add Tk*Entry.borderWidth 2 startupFile
  148. option add Tk*Entry.relief sunken startupFile
  149.  
  150. option add Tk*dirInfo.background $targetbg startupFile
  151. option add Tk*dirInfo.foreground $targetfg startupFile
  152. option add Tk*dirInfo.borderWidth $targetbd startupFile
  153. option add Tk*dirInfo.relief $targetrl startupFile
  154.  
  155. option add Tk*examineTarget.background $targetbg startupFile
  156. option add Tk*examineTarget.foreground $targetfg startupFile
  157. option add Tk*examineTarget.borderWidth $targetbd startupFile
  158. option add Tk*examineTarget.relief $targetrl startupFile
  159.  
  160. option add Tk*compressTarget.background $targetbg startupFile
  161. option add Tk*compressTarget.foreground $targetfg startupFile
  162. option add Tk*compressTarget.borderWidth $targetbd startupFile
  163. option add Tk*compressTarget.relief $targetrl startupFile
  164.  
  165. option add Tk*trashTarget.background $targetbg startupFile
  166. option add Tk*trashTarget.foreground $targetfg startupFile
  167. option add Tk*trashTarget.borderWidth $targetbd startupFile
  168. option add Tk*trashTarget.relief $targetrl startupFile
  169.  
  170. option add Tk*refileTarget.background $targetbg startupFile
  171. option add Tk*refileTarget.foreground $targetfg startupFile
  172. option add Tk*refileTarget.borderWidth $targetbd startupFile
  173. option add Tk*refileTarget.relief $targetrl startupFile
  174.  
  175. option add Tk*abort*animate.background white startupFile
  176. option add Tk*abort*animate.borderWidth 2 startupFile
  177. option add Tk*abort*animate.relief sunken startupFile
  178.  
  179. option add Tk*about*title*font \
  180.     -Adobe-Helvetica-Bold-O-Normal--*-180-* startupFile
  181. option add Tk*about*expl*font \
  182.     -Adobe-Helvetica-Bold-R-Normal--*-100-* startupFile
  183. option add Tk*about*disclaimer*font \
  184.     -Adobe-Helvetica-Bold-R-Normal--*-100-* startupFile
  185.  
  186. option add Tk*DragDrop*tokenActiveBackground $accentbg startupFile
  187. option add Tk*DragDrop*tokenActiveForeground $accentfg startupFile
  188.  
  189. option add Tk*Notice*mesg*Background $accentbg startupFile
  190. option add Tk*Notice*mesg*Foreground $accentfg startupFile
  191.  
  192. if {[winfo screenvisual .] == "staticgray"} {
  193.     option add Tk*about.blt*background white startupFile
  194. } else {
  195.     option add Tk*about*background $base2 startupFile
  196.     option add Tk*about.blt*Background $base startupFile
  197.     option add Tk*about.cntl*background $base3 startupFile
  198. }
  199.  
  200. # ----------------------------------------------------------------------
  201. #  PATCH IN HYPERHELP (after setting up resources)
  202. # ----------------------------------------------------------------------
  203. hyperhelp_init "Kosher Dill" $env(KOSHERDILL_DIR)/Help
  204.  
  205. # ----------------------------------------------------------------------
  206. #  BITMAPS
  207. # ----------------------------------------------------------------------
  208. blt_bitmap define dill-logo { {82 44} {
  209.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
  210.    0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00,
  211.    0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
  212.    0x00, 0x00, 0x00, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  213.    0x00, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  214.    0x00, 0xc8, 0x71, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
  215.    0x68, 0xc0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0c, 0x28,
  216.    0x9b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x50, 0x02, 0x00, 0x06, 0x88, 0x24,
  217.    0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x48, 0x44, 0x04,
  218.    0x00, 0x00, 0x00, 0x20, 0x00, 0x28, 0x60, 0x03, 0x48, 0x5f, 0x04, 0x00,
  219.    0x00, 0x00, 0x08, 0x4a, 0x41, 0x90, 0x04, 0x48, 0x5f, 0x04, 0x00, 0x00,
  220.    0x00, 0x80, 0x20, 0x00, 0x90, 0x04, 0x88, 0x3b, 0x04, 0x00, 0x00, 0x00,
  221.    0x00, 0x00, 0x00, 0x10, 0x19, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  222.    0x00, 0x20, 0x90, 0x60, 0x08, 0x80, 0x04, 0x00, 0x00, 0xff, 0xff, 0xbf,
  223.    0x87, 0xe0, 0x83, 0x89, 0x40, 0x04, 0x00, 0x00, 0x2b, 0x00, 0xe0, 0x06,
  224.    0x60, 0x1c, 0x0e, 0x3f, 0x04, 0x00, 0x00, 0x35, 0x80, 0x67, 0x05, 0x70,
  225.    0x60, 0x08, 0x00, 0x08, 0x00, 0x00, 0x2b, 0x80, 0xa6, 0x00, 0x3f, 0x80,
  226.    0x09, 0x00, 0x08, 0x00, 0x00, 0x35, 0x80, 0x65, 0xfd, 0x3a, 0x00, 0x06,
  227.    0x00, 0x08, 0x00, 0x00, 0x2b, 0x80, 0xa6, 0x84, 0x20, 0x00, 0x04, 0x00,
  228.    0x30, 0x00, 0x00, 0x35, 0x80, 0x65, 0x32, 0x2a, 0x00, 0x04, 0x00, 0xc4,
  229.    0x00, 0x00, 0x2b, 0x80, 0xa7, 0x06, 0x20, 0x00, 0x04, 0x00, 0x01, 0x83,
  230.    0x01, 0x35, 0x00, 0x60, 0x78, 0x15, 0x00, 0x14, 0x00, 0x34, 0x7c, 0x02,
  231.    0xeb, 0xff, 0xbf, 0x42, 0x14, 0x00, 0x04, 0x00, 0xd1, 0x00, 0x01, 0x55,
  232.    0x55, 0x55, 0x85, 0x10, 0x08, 0x14, 0x00, 0x14, 0xf3, 0x00, 0xab, 0xaa,
  233.    0xaa, 0x86, 0x12, 0x10, 0x04, 0x00, 0x11, 0x0a, 0x00, 0xfd, 0xff, 0xff,
  234.    0x85, 0x25, 0x22, 0x04, 0x00, 0x24, 0x05, 0x00, 0x0b, 0x00, 0x80, 0x06,
  235.    0x28, 0x24, 0x08, 0x00, 0x29, 0x02, 0x00, 0x0d, 0x00, 0x80, 0x05, 0x68,
  236.    0x24, 0x08, 0x00, 0x22, 0x00, 0x00, 0xeb, 0xff, 0xbf, 0x06, 0x30, 0x04,
  237.    0x08, 0x00, 0x28, 0x00, 0x00, 0x0d, 0x00, 0x80, 0x05, 0x00, 0x00, 0x08,
  238.    0x00, 0x22, 0x00, 0x00, 0x0b, 0x00, 0x80, 0x06, 0x04, 0x00, 0x10, 0x00,
  239.    0x28, 0x00, 0x00, 0xed, 0xff, 0xbf, 0x05, 0x38, 0x00, 0x10, 0x00, 0x22,
  240.    0x00, 0x00, 0x0b, 0x00, 0x80, 0x06, 0x01, 0x00, 0x10, 0x00, 0x11, 0x00,
  241.    0x00, 0x0d, 0x00, 0x80, 0x05, 0x02, 0x02, 0x20, 0x54, 0x08, 0x00, 0x00,
  242.    0xeb, 0xff, 0xbf, 0x06, 0x1c, 0x04, 0xc0, 0x00, 0x06, 0x00, 0x00, 0x0d,
  243.    0x00, 0x80, 0x05, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x0b, 0x00,
  244.    0x80, 0x06, 0x00, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xed, 0xff, 0xbf,
  245.    0x05, 0x80, 0x02, 0x80, 0xd7, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x80, 0x06,
  246.    0x40, 0x00, 0x7c, 0x30, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0x07, 0x00,
  247.    0x00, 0x02, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  248.    0xfe, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  249.    0xfc, 0x1f, 0x00, 0x00
  250. } }
  251.  
  252. blt_bitmap define dill-blt { {86 44} {
  253.    0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  254.    0x00, 0x78, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  255.    0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
  256.    0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40,
  257.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x4e, 0x00,
  258.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x58, 0x00, 0x80,
  259.    0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x65, 0x93, 0x00, 0x80, 0x00,
  260.    0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x91, 0x84, 0x00, 0x80, 0x00, 0x00,
  261.    0x40, 0x00, 0x00, 0x00, 0x00, 0x89, 0x88, 0x00, 0x80, 0x7c, 0xe6, 0x27,
  262.    0x00, 0x00, 0x00, 0x00, 0xe9, 0x8b, 0x00, 0x80, 0xcc, 0x86, 0x21, 0x00,
  263.    0x00, 0x00, 0x00, 0xe9, 0x8b, 0x00, 0x80, 0xcc, 0x86, 0x11, 0x00, 0x00,
  264.    0x00, 0x00, 0x71, 0x87, 0x00, 0x80, 0x7c, 0x86, 0x11, 0x00, 0x00, 0x00,
  265.    0x00, 0x01, 0x80, 0x00, 0x80, 0xcc, 0x86, 0x11, 0x00, 0x00, 0x00, 0x00,
  266.    0x01, 0x90, 0x00, 0x80, 0xcc, 0x86, 0x21, 0x00, 0x00, 0x00, 0x00, 0x11,
  267.    0x88, 0x00, 0x80, 0x7c, 0xbe, 0x21, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x87,
  268.    0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01,
  269.    0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x80,
  270.    0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x80, 0x01,
  271.    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x06, 0x80, 0x01, 0x00,
  272.    0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x80, 0x18, 0x80, 0x01, 0xff, 0x7f,
  273.    0x00, 0x00, 0x00, 0xa0, 0x00, 0x20, 0x60, 0xa0, 0xfd, 0x00, 0x80, 0x00,
  274.    0x00, 0x00, 0x90, 0x00, 0x80, 0x86, 0x9f, 0x01, 0x00, 0x24, 0x01, 0x00,
  275.    0x00, 0x88, 0x00, 0x20, 0x1a, 0x20, 0x01, 0x00, 0x40, 0x02, 0x00, 0x00,
  276.    0x84, 0x00, 0x80, 0x62, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0xe2,
  277.    0x04, 0x20, 0x42, 0x1f, 0x00, 0x00, 0x20, 0x03, 0x00, 0x00, 0xc2, 0x01,
  278.    0x80, 0xa4, 0x01, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x04, 0x05, 0x20,
  279.    0x45, 0xfe, 0xff, 0xff, 0x7f, 0x03, 0x00, 0x00, 0x18, 0x01, 0x40, 0x04,
  280.    0xaa, 0xaa, 0xaa, 0xaa, 0x01, 0x00, 0x00, 0x60, 0x01, 0x00, 0x05, 0x5d,
  281.    0x55, 0x55, 0xd5, 0x02, 0x00, 0x00, 0x80, 0x01, 0x40, 0x84, 0xfc, 0xff,
  282.    0xff, 0xff, 0x05, 0x00, 0x00, 0xe0, 0x02, 0x00, 0x85, 0xfe, 0xff, 0xff,
  283.    0xff, 0x04, 0x00, 0x00, 0x10, 0x02, 0x40, 0x04, 0xdb, 0x55, 0xb5, 0xb7,
  284.    0x05, 0x00, 0x00, 0xe0, 0x03, 0x20, 0x8e, 0xed, 0xab, 0xfa, 0x6c, 0x03,
  285.    0x00, 0x00, 0x00, 0x84, 0x0a, 0x89, 0x77, 0xfe, 0x0f, 0xda, 0x06, 0x00,
  286.    0x00, 0x00, 0x18, 0xc0, 0x09, 0x3f, 0x00, 0x82, 0xf9, 0x03, 0x00, 0x00,
  287.    0x00, 0xf0, 0x3f, 0x08, 0xbc, 0xc8, 0x51, 0xf2, 0x01, 0x00, 0x00, 0x00,
  288.    0x08, 0x1e, 0x08, 0x56, 0x26, 0x68, 0x68, 0x01, 0x00, 0x00, 0x00, 0x08,
  289.    0x00, 0x09, 0xfa, 0x99, 0x87, 0xaf, 0x01, 0x00, 0x00, 0x00, 0xf8, 0xff,
  290.    0x18, 0x56, 0x55, 0x78, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x81, 0xf1,
  291.    0xac, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x82, 0xf8,
  292.    0x7f, 0x55, 0x75, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x00, 0xc0,
  293.    0xff, 0x1f, 0x00, 0x00
  294. } }
  295.  
  296. blt_bitmap define dill-du-0 { {96 60} {
  297.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  298.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  299.    0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  300.    0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  301.    0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  302.    0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  303.    0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
  304.    0x00, 0x00, 0xe0, 0x01, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  305.    0x00, 0x00, 0x18, 0x1e, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  306.    0x00, 0x00, 0x04, 0x20, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  307.    0x00, 0x00, 0x02, 0x20, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  308.    0x00, 0x00, 0x32, 0x40, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  309.    0x00, 0x00, 0xc2, 0x8e, 0xe0, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
  310.    0x00, 0x00, 0x02, 0x80, 0x10, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  311.    0x00, 0x00, 0xc1, 0x86, 0x08, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  312.    0x00, 0x00, 0x21, 0x89, 0x1c, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  313.    0x00, 0x00, 0x11, 0x91, 0x22, 0xf1, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  314.    0x00, 0x00, 0xd1, 0x97, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  315.    0x00, 0x00, 0xd1, 0x97, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  316.    0x00, 0x00, 0xe1, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  317.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  318.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  319.    0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  320.    0x00, 0x00, 0xe1, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  321.    0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  322.    0x00, 0x80, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  323.    0x00, 0x60, 0x0e, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  324.    0x00, 0x18, 0x5c, 0x15, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  325.    0x00, 0x04, 0xf8, 0xff, 0xff, 0xf7, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xf7,
  326.    0x00, 0x84, 0x73, 0x05, 0x00, 0xdc, 0x00, 0x00, 0x60, 0x05, 0x00, 0xdc,
  327.    0x00, 0x04, 0xbc, 0x06, 0xf0, 0xac, 0x00, 0x00, 0xa0, 0x06, 0xf0, 0xac,
  328.    0x00, 0x04, 0x60, 0x05, 0xd0, 0xd4, 0x00, 0x00, 0x60, 0x05, 0xd0, 0xd4,
  329.    0x00, 0x18, 0xa0, 0x06, 0xb0, 0xac, 0x00, 0x00, 0xa0, 0x06, 0xb0, 0xac,
  330.    0x00, 0xe0, 0x61, 0x05, 0xd0, 0xd4, 0x00, 0x00, 0x60, 0x05, 0xd0, 0xd4,
  331.    0x00, 0x20, 0xbf, 0x06, 0xb0, 0xac, 0x00, 0x00, 0xa0, 0x06, 0xb0, 0xac,
  332.    0x00, 0xa0, 0x64, 0x05, 0xf0, 0xd4, 0x00, 0x00, 0x60, 0x05, 0xf0, 0xd4,
  333.    0x00, 0x20, 0xa2, 0x06, 0x00, 0xac, 0x00, 0x00, 0xa0, 0x06, 0x00, 0xac,
  334.    0x00, 0xa0, 0x60, 0xfd, 0xff, 0xd7, 0x00, 0x00, 0x60, 0xfd, 0xff, 0xd7,
  335.    0x00, 0x20, 0xa2, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0xa0, 0xaa, 0xaa, 0xaa,
  336.    0x00, 0xa0, 0x60, 0x55, 0x55, 0xd5, 0x00, 0x00, 0x60, 0x55, 0x55, 0xd5,
  337.    0x00, 0x20, 0xa2, 0xff, 0xff, 0xbf, 0x00, 0x00, 0xa0, 0xff, 0xff, 0xbf,
  338.    0x00, 0x40, 0x64, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x60, 0x01, 0x00, 0xd0,
  339.    0x00, 0x80, 0xb0, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xa0, 0x01, 0x00, 0xb0,
  340.    0x00, 0x00, 0x63, 0xfd, 0xff, 0xd7, 0x00, 0x00, 0x60, 0xfd, 0xff, 0xd7,
  341.    0x00, 0x00, 0xbc, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xa0, 0x01, 0x00, 0xb0,
  342.    0x00, 0x00, 0x78, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x60, 0x01, 0x00, 0xd0,
  343.    0x00, 0x00, 0xb8, 0xfd, 0xff, 0xb7, 0x00, 0x00, 0xa0, 0xfd, 0xff, 0xb7,
  344.    0x00, 0x00, 0x66, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x60, 0x01, 0x00, 0xd0,
  345.    0x00, 0x80, 0xa1, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xa0, 0x01, 0x00, 0xb0,
  346.    0x00, 0x40, 0x60, 0xfd, 0xff, 0xd7, 0x00, 0x00, 0x60, 0xfd, 0xff, 0xd7,
  347.    0x00, 0xc0, 0xbf, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xa0, 0x01, 0x00, 0xb0,
  348.    0x00, 0x00, 0x60, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x60, 0x01, 0x00, 0xd0,
  349.    0xff, 0xff, 0xbf, 0xfd, 0xff, 0xb7, 0xff, 0xff, 0xbf, 0xfd, 0xff, 0xb7,
  350.    0xff, 0xff, 0x7f, 0x01, 0x00, 0xd0, 0xff, 0xff, 0x7f, 0x01, 0x00, 0xd0,
  351.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  352.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  353.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  354.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  355.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  356.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  357. } }
  358.  
  359. blt_bitmap define dill-du-1 { {96 60} {
  360.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  361.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  362.    0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  363.    0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  364.    0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  365.    0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  366.    0x00, 0x00, 0x00, 0x00, 0x40, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
  367.    0x00, 0x00, 0xe0, 0x01, 0x20, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  368.    0x00, 0x00, 0x18, 0x1e, 0x20, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  369.    0x00, 0x00, 0x04, 0x20, 0x20, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  370.    0x00, 0x00, 0x02, 0x20, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  371.    0x00, 0x00, 0x32, 0x40, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  372.    0x00, 0x00, 0xc2, 0x8e, 0xe0, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
  373.    0x00, 0x00, 0x02, 0x80, 0x10, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  374.    0x00, 0x00, 0xc1, 0x86, 0x08, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  375.    0x00, 0x00, 0x21, 0x89, 0x1c, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  376.    0x00, 0x00, 0x11, 0x91, 0x22, 0xf1, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  377.    0x00, 0x00, 0xd1, 0x97, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  378.    0x00, 0x00, 0xd1, 0x97, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  379.    0x00, 0x00, 0xe1, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  380.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  381.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  382.    0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  383.    0x00, 0x00, 0xe1, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  384.    0x00, 0x80, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  385.    0x00, 0x80, 0x0e, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  386.    0x00, 0x60, 0x1c, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  387.    0x00, 0x18, 0x78, 0x15, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  388.    0x00, 0x04, 0xfe, 0xff, 0x7f, 0x0f, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0x0f,
  389.    0x00, 0x84, 0x57, 0x00, 0xc0, 0x0d, 0x00, 0x00, 0x56, 0x00, 0xc0, 0x0d,
  390.    0x00, 0x04, 0x6a, 0x00, 0xcf, 0x0a, 0x00, 0x00, 0x6a, 0x00, 0xcf, 0x0a,
  391.    0x00, 0x04, 0x56, 0x00, 0x4d, 0x0d, 0x00, 0x00, 0x56, 0x00, 0x4d, 0x0d,
  392.    0x00, 0x18, 0x6a, 0x00, 0xcb, 0x0a, 0x00, 0x00, 0x6a, 0x00, 0xcb, 0x0a,
  393.    0x00, 0xe0, 0x57, 0x00, 0x4d, 0x0d, 0x00, 0x00, 0x56, 0x00, 0x4d, 0x0d,
  394.    0x00, 0x20, 0x6b, 0x00, 0xcb, 0x0a, 0x00, 0x00, 0x6a, 0x00, 0xcb, 0x0a,
  395.    0x00, 0xa0, 0x56, 0x00, 0x4f, 0x0d, 0x00, 0x00, 0x56, 0x00, 0x4f, 0x0d,
  396.    0x00, 0x20, 0x6a, 0x00, 0xc0, 0x0a, 0x00, 0x00, 0x6a, 0x00, 0xc0, 0x0a,
  397.    0x00, 0xa0, 0xd6, 0xff, 0x7f, 0x0d, 0x00, 0x00, 0xd6, 0xff, 0x7f, 0x0d,
  398.    0x00, 0x20, 0xaa, 0xaa, 0xaa, 0x0a, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0x0a,
  399.    0x00, 0xa0, 0x56, 0x55, 0x55, 0x0d, 0x00, 0x00, 0x56, 0x55, 0x55, 0x0d,
  400.    0x00, 0x20, 0xfa, 0xff, 0xff, 0x0b, 0x00, 0x00, 0xfa, 0xff, 0xff, 0x0b,
  401.    0x00, 0x40, 0x16, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x16, 0x00, 0x00, 0x0d,
  402.    0x00, 0x80, 0x1a, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x0b,
  403.    0x00, 0x00, 0xd7, 0xff, 0x7f, 0x0d, 0x00, 0x00, 0xd6, 0xff, 0x7f, 0x0d,
  404.    0x00, 0x00, 0x1a, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x0b,
  405.    0x00, 0x00, 0x16, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x16, 0x00, 0x00, 0x0d,
  406.    0x00, 0x00, 0xda, 0xff, 0x7f, 0x0b, 0x00, 0x00, 0xda, 0xff, 0x7f, 0x0b,
  407.    0x00, 0x00, 0x16, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x16, 0x00, 0x00, 0x0d,
  408.    0x00, 0x80, 0x1b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x0b,
  409.    0x00, 0x40, 0xd6, 0xff, 0x7f, 0x0d, 0x00, 0x00, 0xd6, 0xff, 0x7f, 0x0d,
  410.    0x00, 0xc0, 0x1b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x0b,
  411.    0x00, 0x00, 0x16, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x16, 0x00, 0x00, 0x0d,
  412.    0xff, 0xff, 0xdb, 0xff, 0x7f, 0xfb, 0xff, 0xff, 0xdb, 0xff, 0x7f, 0xfb,
  413.    0xff, 0xff, 0x17, 0x00, 0x00, 0xfd, 0xff, 0xff, 0x17, 0x00, 0x00, 0xfd,
  414.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  415.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  416.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  417.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  418.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  419.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  420. } }
  421.  
  422. blt_bitmap define dill-du-2 { {96 60} {
  423.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  424.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  425.    0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  426.    0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  427.    0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  428.    0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  429.    0x00, 0x00, 0x00, 0x00, 0x40, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
  430.    0x00, 0x00, 0xe0, 0x01, 0x20, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  431.    0x00, 0x00, 0x18, 0x1e, 0x20, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  432.    0x00, 0x00, 0x04, 0x20, 0x20, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  433.    0x00, 0x00, 0x02, 0x20, 0x20, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  434.    0x00, 0x00, 0x32, 0x40, 0x20, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  435.    0x00, 0x00, 0xc2, 0x8e, 0xe0, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
  436.    0x00, 0x00, 0x02, 0x80, 0x10, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  437.    0x00, 0x00, 0xc1, 0x86, 0x08, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  438.    0x00, 0x00, 0x21, 0x89, 0x1c, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  439.    0x00, 0x00, 0x11, 0x91, 0x22, 0xf1, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  440.    0x00, 0x00, 0xd1, 0x97, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  441.    0x00, 0x00, 0xd1, 0x97, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  442.    0x00, 0x00, 0xe1, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  443.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  444.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  445.    0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  446.    0x00, 0x00, 0xe1, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  447.    0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  448.    0x00, 0x80, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  449.    0x00, 0x60, 0x0e, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  450.    0x00, 0x18, 0x5c, 0x15, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  451.    0x00, 0xe4, 0xff, 0xff, 0xf7, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xf7, 0x00,
  452.    0x00, 0x64, 0x05, 0x00, 0xdc, 0x00, 0x00, 0x60, 0x05, 0x00, 0xdc, 0x00,
  453.    0x00, 0xa4, 0x06, 0xf0, 0xac, 0x00, 0x00, 0xa0, 0x06, 0xf0, 0xac, 0x00,
  454.    0x00, 0x64, 0x05, 0xd0, 0xd4, 0x00, 0x00, 0x60, 0x05, 0xd0, 0xd4, 0x00,
  455.    0x00, 0xb8, 0x06, 0xb0, 0xac, 0x00, 0x00, 0xa0, 0x06, 0xb0, 0xac, 0x00,
  456.    0x00, 0x60, 0x05, 0xd0, 0xd4, 0x00, 0x00, 0x60, 0x05, 0xd0, 0xd4, 0x00,
  457.    0x00, 0xa0, 0x06, 0xb0, 0xac, 0x00, 0x00, 0xa0, 0x06, 0xb0, 0xac, 0x00,
  458.    0x00, 0x60, 0x05, 0xf0, 0xd4, 0x00, 0x00, 0x60, 0x05, 0xf0, 0xd4, 0x00,
  459.    0x00, 0xa0, 0x06, 0x00, 0xac, 0x00, 0x00, 0xa0, 0x06, 0x00, 0xac, 0x00,
  460.    0x00, 0x60, 0xfd, 0xff, 0xd7, 0x00, 0x00, 0x60, 0xfd, 0xff, 0xd7, 0x00,
  461.    0x00, 0xa0, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0xa0, 0xaa, 0xaa, 0xaa, 0x00,
  462.    0x00, 0x60, 0x55, 0x55, 0xd5, 0x00, 0x00, 0x60, 0x55, 0x55, 0xd5, 0x00,
  463.    0x00, 0xa0, 0xff, 0xff, 0xbf, 0x00, 0x00, 0xa0, 0xff, 0xff, 0xbf, 0x00,
  464.    0x00, 0x60, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x60, 0x01, 0x00, 0xd0, 0x00,
  465.    0x00, 0xa0, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xa0, 0x01, 0x00, 0xb0, 0x00,
  466.    0x00, 0x60, 0xfd, 0xff, 0xd7, 0x00, 0x00, 0x60, 0xfd, 0xff, 0xd7, 0x00,
  467.    0x00, 0xa0, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xa0, 0x01, 0x00, 0xb0, 0x00,
  468.    0x00, 0x60, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x60, 0x01, 0x00, 0xd0, 0x00,
  469.    0x00, 0xa0, 0xfd, 0xff, 0xb7, 0x00, 0x00, 0xa0, 0xfd, 0xff, 0xb7, 0x00,
  470.    0x00, 0x60, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x60, 0x01, 0x00, 0xd0, 0x00,
  471.    0x00, 0xa0, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xa0, 0x01, 0x00, 0xb0, 0x00,
  472.    0x00, 0x60, 0xfd, 0xff, 0xd7, 0x00, 0x00, 0x60, 0xfd, 0xff, 0xd7, 0x00,
  473.    0x00, 0xa0, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xa0, 0x01, 0x00, 0xb0, 0x00,
  474.    0x00, 0x60, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x60, 0x01, 0x00, 0xd0, 0x00,
  475.    0xff, 0xbf, 0xfd, 0xff, 0xb7, 0xff, 0xff, 0xbf, 0xfd, 0xff, 0xb7, 0xff,
  476.    0xff, 0x7f, 0x01, 0x00, 0xd0, 0xff, 0xff, 0x7f, 0x01, 0x00, 0xd0, 0xff,
  477.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  478.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  479.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  480.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  481.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  482.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  483. } }
  484.  
  485. blt_bitmap define dill-du-3 { {96 60} {
  486.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  487.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  488.    0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  489.    0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  490.    0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  491.    0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  492.    0x00, 0x00, 0x00, 0x00, 0x40, 0x48, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
  493.    0x00, 0x00, 0xe0, 0x01, 0x20, 0x48, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  494.    0x00, 0x00, 0x18, 0x1e, 0x20, 0x48, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  495.    0x00, 0x00, 0x04, 0x20, 0x20, 0x48, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  496.    0x00, 0x00, 0x02, 0x20, 0x20, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  497.    0x00, 0x00, 0x32, 0x40, 0x20, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  498.    0x00, 0x00, 0xc2, 0x8e, 0xe0, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
  499.    0x00, 0x00, 0x02, 0x80, 0x10, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  500.    0x00, 0x00, 0xc1, 0x86, 0x08, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  501.    0x00, 0x00, 0x21, 0x89, 0x1c, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  502.    0x00, 0x00, 0x11, 0x91, 0x22, 0xf1, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  503.    0x00, 0x00, 0xd1, 0x97, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  504.    0x00, 0x00, 0xd1, 0x97, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  505.    0x00, 0x00, 0xe1, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  506.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  507.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  508.    0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  509.    0x00, 0x00, 0xe1, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  510.    0x00, 0x80, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  511.    0x00, 0x80, 0x0e, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  512.    0x00, 0x60, 0x1c, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  513.    0x00, 0x18, 0x78, 0x15, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  514.    0x00, 0xfe, 0xff, 0x7f, 0x1f, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0x0f, 0x00,
  515.    0x00, 0x56, 0x00, 0xc0, 0x2d, 0x00, 0x00, 0x56, 0x00, 0xc0, 0x0d, 0x00,
  516.    0x00, 0x6a, 0x00, 0xcf, 0x2a, 0x00, 0x00, 0x6a, 0x00, 0xcf, 0x0a, 0x00,
  517.    0x00, 0x56, 0x00, 0x4d, 0x2d, 0x00, 0x00, 0x56, 0x00, 0x4d, 0x0d, 0x00,
  518.    0x00, 0x6a, 0x00, 0xcb, 0x1a, 0x00, 0x00, 0x6a, 0x00, 0xcb, 0x0a, 0x00,
  519.    0x00, 0x56, 0x00, 0x4d, 0x0d, 0x00, 0x00, 0x56, 0x00, 0x4d, 0x0d, 0x00,
  520.    0x00, 0x6a, 0x00, 0xcb, 0x0a, 0x00, 0x00, 0x6a, 0x00, 0xcb, 0x0a, 0x00,
  521.    0x00, 0x56, 0x00, 0x4f, 0x0d, 0x00, 0x00, 0x56, 0x00, 0x4f, 0x0d, 0x00,
  522.    0x00, 0x6a, 0x00, 0xc0, 0x0a, 0x00, 0x00, 0x6a, 0x00, 0xc0, 0x0a, 0x00,
  523.    0x00, 0xd6, 0xff, 0x7f, 0x0d, 0x00, 0x00, 0xd6, 0xff, 0x7f, 0x0d, 0x00,
  524.    0x00, 0xaa, 0xaa, 0xaa, 0x0a, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0x0a, 0x00,
  525.    0x00, 0x56, 0x55, 0x55, 0x0d, 0x00, 0x00, 0x56, 0x55, 0x55, 0x0d, 0x00,
  526.    0x00, 0xfa, 0xff, 0xff, 0x0b, 0x00, 0x00, 0xfa, 0xff, 0xff, 0x0b, 0x00,
  527.    0x00, 0x16, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x16, 0x00, 0x00, 0x0d, 0x00,
  528.    0x00, 0x1a, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x0b, 0x00,
  529.    0x00, 0xd6, 0xff, 0x7f, 0x0d, 0x00, 0x00, 0xd6, 0xff, 0x7f, 0x0d, 0x00,
  530.    0x00, 0x1a, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x0b, 0x00,
  531.    0x00, 0x16, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x16, 0x00, 0x00, 0x0d, 0x00,
  532.    0x00, 0xda, 0xff, 0x7f, 0x0b, 0x00, 0x00, 0xda, 0xff, 0x7f, 0x0b, 0x00,
  533.    0x00, 0x16, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x16, 0x00, 0x00, 0x0d, 0x00,
  534.    0x00, 0x1a, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x0b, 0x00,
  535.    0x00, 0xd6, 0xff, 0x7f, 0x0d, 0x00, 0x00, 0xd6, 0xff, 0x7f, 0x0d, 0x00,
  536.    0x00, 0x1a, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x0b, 0x00,
  537.    0x00, 0x16, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x16, 0x00, 0x00, 0x0d, 0x00,
  538.    0xff, 0xdb, 0xff, 0x7f, 0xfb, 0xff, 0xff, 0xdb, 0xff, 0x7f, 0xfb, 0xff,
  539.    0xff, 0x17, 0x00, 0x00, 0xfd, 0xff, 0xff, 0x17, 0x00, 0x00, 0xfd, 0xff,
  540.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  541.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  542.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  543.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  544.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  545.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  546. } }
  547.  
  548. blt_bitmap define dill-du-4 { {96 60} {
  549.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  550.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  551.    0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  552.    0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  553.    0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  554.    0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  555.    0x00, 0x00, 0x00, 0x00, 0x40, 0x48, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
  556.    0x00, 0x00, 0xe0, 0x01, 0x20, 0x48, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  557.    0x00, 0x00, 0x18, 0x1e, 0x20, 0x48, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  558.    0x00, 0x00, 0x04, 0x20, 0x20, 0x48, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  559.    0x00, 0x00, 0x02, 0x20, 0x20, 0x48, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  560.    0x00, 0x00, 0x32, 0x40, 0x20, 0x48, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  561.    0x00, 0x00, 0xc2, 0x8e, 0xe0, 0x48, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
  562.    0x00, 0x00, 0x02, 0x80, 0x10, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  563.    0x00, 0x00, 0xc1, 0x86, 0x08, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  564.    0x00, 0x00, 0x21, 0x89, 0x1c, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  565.    0x00, 0x00, 0x11, 0x91, 0x22, 0xf1, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  566.    0x00, 0x00, 0xd1, 0x97, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  567.    0x00, 0x00, 0xd1, 0x97, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  568.    0x00, 0x00, 0xe1, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  569.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  570.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  571.    0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  572.    0x00, 0x00, 0xe1, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  573.    0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  574.    0x00, 0x80, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  575.    0x00, 0x60, 0x0e, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  576.    0x00, 0x18, 0x5c, 0x15, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  577.    0xe0, 0xff, 0xff, 0xf7, 0x10, 0x00, 0xe0, 0xff, 0xff, 0xf7, 0x00, 0x00,
  578.    0x60, 0x05, 0x00, 0xdc, 0x20, 0x00, 0x60, 0x05, 0x00, 0xdc, 0x00, 0x00,
  579.    0xa0, 0x06, 0xf0, 0xac, 0x21, 0x00, 0xa0, 0x06, 0xf0, 0xac, 0x00, 0x00,
  580.    0x60, 0x05, 0xd0, 0xd4, 0x20, 0x00, 0x60, 0x05, 0xd0, 0xd4, 0x00, 0x00,
  581.    0xa0, 0x06, 0xb0, 0xac, 0x10, 0x00, 0xa0, 0x06, 0xb0, 0xac, 0x00, 0x00,
  582.    0x60, 0x05, 0xd0, 0xd4, 0x0e, 0x00, 0x60, 0x05, 0xd0, 0xd4, 0x00, 0x00,
  583.    0xa0, 0x06, 0xb0, 0xac, 0x01, 0x00, 0xa0, 0x06, 0xb0, 0xac, 0x00, 0x00,
  584.    0x60, 0x05, 0xf0, 0xd4, 0x00, 0x00, 0x60, 0x05, 0xf0, 0xd4, 0x00, 0x00,
  585.    0xa0, 0x06, 0x00, 0xac, 0x00, 0x00, 0xa0, 0x06, 0x00, 0xac, 0x00, 0x00,
  586.    0x60, 0xfd, 0xff, 0xd7, 0x00, 0x00, 0x60, 0xfd, 0xff, 0xd7, 0x00, 0x00,
  587.    0xa0, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0xa0, 0xaa, 0xaa, 0xaa, 0x00, 0x00,
  588.    0x60, 0x55, 0x55, 0xd5, 0x00, 0x00, 0x60, 0x55, 0x55, 0xd5, 0x00, 0x00,
  589.    0xa0, 0xff, 0xff, 0xbf, 0x00, 0x00, 0xa0, 0xff, 0xff, 0xbf, 0x00, 0x00,
  590.    0x60, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x60, 0x01, 0x00, 0xd0, 0x00, 0x00,
  591.    0xa0, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xa0, 0x01, 0x00, 0xb0, 0x00, 0x00,
  592.    0x60, 0xfd, 0xff, 0xd7, 0x00, 0x00, 0x60, 0xfd, 0xff, 0xd7, 0x00, 0x00,
  593.    0xa0, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xa0, 0x01, 0x00, 0xb0, 0x00, 0x00,
  594.    0x60, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x60, 0x01, 0x00, 0xd0, 0x00, 0x00,
  595.    0xa0, 0xfd, 0xff, 0xb7, 0x00, 0x00, 0xa0, 0xfd, 0xff, 0xb7, 0x00, 0x00,
  596.    0x60, 0x01, 0x00, 0xd0, 0x01, 0x00, 0x60, 0x01, 0x00, 0xd0, 0x00, 0x00,
  597.    0xa0, 0x01, 0x00, 0xb0, 0x02, 0x00, 0xa0, 0x01, 0x00, 0xb0, 0x00, 0x00,
  598.    0x60, 0xfd, 0xff, 0xd7, 0x03, 0x00, 0x60, 0xfd, 0xff, 0xd7, 0x00, 0x00,
  599.    0xa0, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xa0, 0x01, 0x00, 0xb0, 0x00, 0x00,
  600.    0x60, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x60, 0x01, 0x00, 0xd0, 0x00, 0x00,
  601.    0xbf, 0xfd, 0xff, 0xb7, 0xff, 0xff, 0xbf, 0xfd, 0xff, 0xb7, 0xff, 0xff,
  602.    0x7f, 0x01, 0x00, 0xd0, 0xff, 0xff, 0x7f, 0x01, 0x00, 0xd0, 0xff, 0xff,
  603.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  604.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  605.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  606.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  607.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  608.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  609. } }
  610.  
  611. blt_bitmap define dill-du-5 { {96 60} {
  612.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  613.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  614.    0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  615.    0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  616.    0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  617.    0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  618.    0x00, 0x00, 0x00, 0x00, 0x40, 0x48, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00,
  619.    0x00, 0x00, 0xe0, 0x01, 0x20, 0x48, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00,
  620.    0x00, 0x00, 0x18, 0x1e, 0x20, 0x48, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00,
  621.    0x00, 0x00, 0x04, 0x20, 0x20, 0x48, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00,
  622.    0x00, 0x00, 0x02, 0x20, 0x20, 0x48, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  623.    0x00, 0x00, 0x32, 0x40, 0x20, 0x48, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
  624.    0x00, 0x00, 0xc2, 0x8e, 0xe0, 0x48, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
  625.    0x00, 0x00, 0x02, 0x80, 0x10, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  626.    0x00, 0x00, 0xc1, 0x86, 0x08, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  627.    0x00, 0x00, 0x21, 0x89, 0x1c, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  628.    0x00, 0x00, 0x11, 0x91, 0x22, 0xf1, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  629.    0x00, 0x00, 0xd1, 0x97, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  630.    0x00, 0x00, 0xd1, 0x97, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  631.    0x00, 0x00, 0xe1, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  632.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  633.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  634.    0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  635.    0x00, 0x00, 0xe1, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  636.    0x00, 0x80, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  637.    0x00, 0x80, 0x0e, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  638.    0x00, 0x60, 0x1c, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  639.    0x00, 0x18, 0x78, 0x15, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  640.    0xfe, 0xff, 0x7f, 0x1f, 0x10, 0x00, 0xfe, 0xff, 0x7f, 0x0f, 0x00, 0x00,
  641.    0x56, 0x00, 0xc0, 0x9d, 0x20, 0x00, 0x56, 0x00, 0xc0, 0x0d, 0x00, 0x00,
  642.    0x6a, 0x00, 0xcf, 0xda, 0x21, 0x00, 0x6a, 0x00, 0xcf, 0x0a, 0x00, 0x00,
  643.    0x56, 0x00, 0x4d, 0x3d, 0x20, 0x00, 0x56, 0x00, 0x4d, 0x0d, 0x00, 0x00,
  644.    0x6a, 0x00, 0xcb, 0x0a, 0x10, 0x00, 0x6a, 0x00, 0xcb, 0x0a, 0x00, 0x00,
  645.    0x56, 0x00, 0x4d, 0x0d, 0x0e, 0x00, 0x56, 0x00, 0x4d, 0x0d, 0x00, 0x00,
  646.    0x6a, 0x00, 0xcb, 0xca, 0x01, 0x00, 0x6a, 0x00, 0xcb, 0x0a, 0x00, 0x00,
  647.    0x56, 0x00, 0x4f, 0xbd, 0x00, 0x00, 0x56, 0x00, 0x4f, 0x0d, 0x00, 0x00,
  648.    0x6a, 0x00, 0xc0, 0x9a, 0x00, 0x00, 0x6a, 0x00, 0xc0, 0x0a, 0x00, 0x00,
  649.    0xd6, 0xff, 0x7f, 0x9d, 0x00, 0x00, 0xd6, 0xff, 0x7f, 0x0d, 0x00, 0x00,
  650.    0xaa, 0xaa, 0xaa, 0x8a, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0x0a, 0x00, 0x00,
  651.    0x56, 0x55, 0x55, 0x4d, 0x00, 0x00, 0x56, 0x55, 0x55, 0x0d, 0x00, 0x00,
  652.    0xfa, 0xff, 0xff, 0x4b, 0x00, 0x00, 0xfa, 0xff, 0xff, 0x0b, 0x00, 0x00,
  653.    0x16, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x16, 0x00, 0x00, 0x0d, 0x00, 0x00,
  654.    0x1a, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x0b, 0x00, 0x00,
  655.    0xd6, 0xff, 0x7f, 0x1d, 0x00, 0x00, 0xd6, 0xff, 0x7f, 0x0d, 0x00, 0x00,
  656.    0x1a, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x0b, 0x00, 0x00,
  657.    0x16, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x16, 0x00, 0x00, 0x0d, 0x00, 0x00,
  658.    0xda, 0xff, 0x7f, 0x0b, 0x00, 0x00, 0xda, 0xff, 0x7f, 0x0b, 0x00, 0x00,
  659.    0x16, 0x00, 0x00, 0xfd, 0x01, 0x00, 0x16, 0x00, 0x00, 0x0d, 0x00, 0x00,
  660.    0x1a, 0x00, 0x00, 0x0b, 0x02, 0x00, 0x1a, 0x00, 0x00, 0x0b, 0x00, 0x00,
  661.    0xd6, 0xff, 0x7f, 0xfd, 0x03, 0x00, 0xd6, 0xff, 0x7f, 0x0d, 0x00, 0x00,
  662.    0x1a, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x0b, 0x00, 0x00,
  663.    0x16, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x16, 0x00, 0x00, 0x0d, 0x00, 0x00,
  664.    0xdb, 0xff, 0x7f, 0xfb, 0xff, 0xff, 0xdb, 0xff, 0x7f, 0xfb, 0xff, 0xff,
  665.    0x17, 0x00, 0x00, 0xfd, 0xff, 0xff, 0x17, 0x00, 0x00, 0xfd, 0xff, 0xff,
  666.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  667.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  668.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  669.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  670.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  671.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  672. } }
  673.  
  674. blt_bitmap define dill-du-6 { {96 60} {
  675.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  676.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  677.    0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  678.    0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  679.    0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  680.    0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  681.    0x00, 0x00, 0x00, 0x00, 0x40, 0x48, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00,
  682.    0x00, 0x00, 0xe0, 0x01, 0x20, 0x48, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00,
  683.    0x00, 0x00, 0x18, 0x1e, 0x20, 0x48, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00,
  684.    0x00, 0x00, 0x04, 0x20, 0x20, 0x48, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00,
  685.    0x00, 0x00, 0x02, 0x20, 0x20, 0x48, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00,
  686.    0x00, 0x00, 0x32, 0x40, 0x20, 0x48, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00,
  687.    0x00, 0x00, 0xc2, 0x8e, 0xe0, 0x48, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00,
  688.    0x00, 0x00, 0x02, 0x80, 0x10, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  689.    0x00, 0x00, 0xc1, 0x86, 0x08, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  690.    0x00, 0x00, 0x21, 0x89, 0x1c, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  691.    0x00, 0x00, 0x11, 0x91, 0x22, 0xf1, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  692.    0x00, 0x00, 0xd1, 0x97, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  693.    0x00, 0x00, 0xd1, 0x97, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  694.    0x00, 0x00, 0xe1, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  695.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  696.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  697.    0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  698.    0x00, 0x00, 0xe1, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  699.    0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  700.    0x00, 0x80, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  701.    0x00, 0x60, 0x0e, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  702.    0x00, 0x18, 0x5c, 0x15, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  703.    0xff, 0xff, 0xf7, 0x1f, 0x10, 0xe0, 0xff, 0xff, 0xf7, 0x00, 0x00, 0xe0,
  704.    0x05, 0x00, 0xdc, 0x90, 0x20, 0x60, 0x05, 0x00, 0xdc, 0x00, 0x00, 0x60,
  705.    0x06, 0xf0, 0xac, 0xd0, 0x21, 0xa0, 0x06, 0xf0, 0xac, 0x00, 0x00, 0xa0,
  706.    0x05, 0xd0, 0xd4, 0x3c, 0x20, 0x60, 0x05, 0xd0, 0xd4, 0x00, 0x00, 0x60,
  707.    0x06, 0xb0, 0xac, 0x02, 0x10, 0xa0, 0x06, 0xb0, 0xac, 0x00, 0x00, 0xa0,
  708.    0x05, 0xd0, 0xd4, 0x02, 0x0e, 0x60, 0x05, 0xd0, 0xd4, 0x00, 0x00, 0x60,
  709.    0x06, 0xb0, 0xac, 0xc2, 0x01, 0xa0, 0x06, 0xb0, 0xac, 0x00, 0x00, 0xa0,
  710.    0x05, 0xf0, 0xd4, 0xbc, 0x00, 0x60, 0x05, 0xf0, 0xd4, 0x00, 0x00, 0x60,
  711.    0x06, 0x00, 0xac, 0x90, 0x00, 0xa0, 0x06, 0x00, 0xac, 0x00, 0x00, 0xa0,
  712.    0xfd, 0xff, 0xd7, 0x9f, 0x00, 0x60, 0xfd, 0xff, 0xd7, 0x00, 0x00, 0x60,
  713.    0xaa, 0xaa, 0xaa, 0x80, 0x00, 0xa0, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0xa0,
  714.    0x55, 0x55, 0xd5, 0x40, 0x00, 0x60, 0x55, 0x55, 0xd5, 0x00, 0x00, 0x60,
  715.    0xff, 0xff, 0xbf, 0x40, 0x00, 0xa0, 0xff, 0xff, 0xbf, 0x00, 0x00, 0xa0,
  716.    0x01, 0x00, 0xd0, 0x40, 0x00, 0x60, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x60,
  717.    0x01, 0x00, 0xb0, 0x21, 0x00, 0xa0, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xa0,
  718.    0xfd, 0xff, 0xd7, 0x18, 0x00, 0x60, 0xfd, 0xff, 0xd7, 0x00, 0x00, 0x60,
  719.    0x01, 0x00, 0xb0, 0x07, 0x00, 0xa0, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xa0,
  720.    0x01, 0x00, 0xd0, 0x01, 0x00, 0x60, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x60,
  721.    0xfd, 0xff, 0xb7, 0x0f, 0x00, 0xa0, 0xfd, 0xff, 0xb7, 0x00, 0x00, 0xa0,
  722.    0x01, 0x00, 0xd0, 0xf0, 0x01, 0x60, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x60,
  723.    0x01, 0x00, 0xb0, 0x01, 0x02, 0xa0, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xa0,
  724.    0xfd, 0xff, 0xd7, 0xff, 0x03, 0x60, 0xfd, 0xff, 0xd7, 0x00, 0x00, 0x60,
  725.    0x01, 0x00, 0xb0, 0x01, 0x00, 0xa0, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xa0,
  726.    0x01, 0x00, 0xd0, 0x00, 0x00, 0x60, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x60,
  727.    0xfd, 0xff, 0xb7, 0xff, 0xff, 0xbf, 0xfd, 0xff, 0xb7, 0xff, 0xff, 0xbf,
  728.    0x01, 0x00, 0xd0, 0xff, 0xff, 0x7f, 0x01, 0x00, 0xd0, 0xff, 0xff, 0x7f,
  729.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  730.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  731.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  732.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  733.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  734.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  735. } }
  736.  
  737. blt_bitmap define dill-du-7 { {96 60} {
  738.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  739.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  740.    0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  741.    0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  742.    0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  743.    0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  744.    0x00, 0x00, 0x00, 0x00, 0x40, 0x48, 0x12, 0x02, 0x00, 0x00, 0x00, 0x00,
  745.    0x00, 0x00, 0xe0, 0x01, 0x20, 0x48, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00,
  746.    0x00, 0x00, 0x18, 0x1e, 0x20, 0x48, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00,
  747.    0x00, 0x00, 0x04, 0x20, 0x20, 0x48, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00,
  748.    0x00, 0x00, 0x02, 0x20, 0x20, 0x48, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00,
  749.    0x00, 0x00, 0x32, 0x40, 0x20, 0x48, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00,
  750.    0x00, 0x00, 0xc2, 0x8e, 0xe0, 0x48, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00,
  751.    0x00, 0x00, 0x02, 0x80, 0x10, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  752.    0x00, 0x00, 0xc1, 0x86, 0x08, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  753.    0x00, 0x00, 0x21, 0x89, 0x1c, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  754.    0x00, 0x00, 0x11, 0x91, 0x22, 0xf1, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  755.    0x00, 0x00, 0xd1, 0x97, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  756.    0x00, 0x00, 0xd1, 0x97, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  757.    0x00, 0x00, 0xe1, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  758.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  759.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  760.    0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  761.    0x00, 0x00, 0xe1, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  762.    0x00, 0x80, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  763.    0x00, 0x80, 0x0e, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  764.    0x00, 0x60, 0x1c, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  765.    0x00, 0x18, 0x78, 0x15, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  766.    0xff, 0x7f, 0xff, 0x1f, 0x10, 0xfe, 0xff, 0x7f, 0x0f, 0x00, 0x00, 0xfe,
  767.    0x00, 0xc0, 0x6d, 0x90, 0x20, 0x56, 0x00, 0xc0, 0x0d, 0x00, 0x00, 0x56,
  768.    0x00, 0xcf, 0x4a, 0xd0, 0x21, 0x6a, 0x00, 0xcf, 0x0a, 0x00, 0x00, 0x6a,
  769.    0x00, 0x4d, 0x4d, 0x3c, 0x20, 0x56, 0x00, 0x4d, 0x0d, 0x00, 0x00, 0x56,
  770.    0x00, 0xcb, 0x4a, 0x02, 0x10, 0x6a, 0x00, 0xcb, 0x0a, 0x00, 0x00, 0x6a,
  771.    0x00, 0x4d, 0x4d, 0x02, 0x0e, 0x56, 0x00, 0x4d, 0x0d, 0x00, 0x00, 0x56,
  772.    0x00, 0xcb, 0x5a, 0xc2, 0x01, 0x6a, 0x00, 0xcb, 0x0a, 0x00, 0x00, 0x6a,
  773.    0x00, 0x4f, 0x6d, 0xbc, 0x00, 0x56, 0x00, 0x4f, 0x0d, 0x00, 0x00, 0x56,
  774.    0x00, 0xc0, 0x4a, 0x90, 0x00, 0x6a, 0x00, 0xc0, 0x0a, 0x00, 0x00, 0x6a,
  775.    0xff, 0x7f, 0xcd, 0x9f, 0x00, 0xd6, 0xff, 0x7f, 0x0d, 0x00, 0x00, 0xd6,
  776.    0xaa, 0xaa, 0x0a, 0x80, 0x00, 0xaa, 0xaa, 0xaa, 0x0a, 0x00, 0x00, 0xaa,
  777.    0x55, 0x55, 0x0d, 0x40, 0x00, 0x56, 0x55, 0x55, 0x0d, 0x00, 0x00, 0x56,
  778.    0xff, 0xff, 0x0b, 0x40, 0x00, 0xfa, 0xff, 0xff, 0x0b, 0x00, 0x00, 0xfa,
  779.    0x00, 0x00, 0x0d, 0x40, 0x00, 0x16, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x16,
  780.    0x00, 0x00, 0x5b, 0x21, 0x00, 0x1a, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x1a,
  781.    0xff, 0x7f, 0x0d, 0x18, 0x00, 0xd6, 0xff, 0x7f, 0x0d, 0x00, 0x00, 0xd6,
  782.    0x00, 0x00, 0xfb, 0x07, 0x00, 0x1a, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x1a,
  783.    0x00, 0x00, 0xfd, 0x01, 0x00, 0x16, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x16,
  784.    0xff, 0x7f, 0x5b, 0x0f, 0x00, 0xda, 0xff, 0x7f, 0x0b, 0x00, 0x00, 0xda,
  785.    0x00, 0x00, 0x6d, 0xf0, 0x01, 0x16, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x16,
  786.    0x00, 0x00, 0x8b, 0x01, 0x02, 0x1a, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x1a,
  787.    0xff, 0x7f, 0x0d, 0xff, 0x03, 0xd6, 0xff, 0x7f, 0x0d, 0x00, 0x00, 0xd6,
  788.    0x00, 0x00, 0xfb, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x1a,
  789.    0x00, 0x00, 0x0d, 0x00, 0x00, 0x16, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x16,
  790.    0xff, 0x7f, 0xfb, 0xff, 0xff, 0xdb, 0xff, 0x7f, 0xfb, 0xff, 0xff, 0xdb,
  791.    0x00, 0x00, 0xfd, 0xff, 0xff, 0x17, 0x00, 0x00, 0xfd, 0xff, 0xff, 0x17,
  792.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  793.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  794.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  795.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  796.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  797.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  798. } }
  799.  
  800. blt_bitmap define dill-du-8 { {96 60} {
  801.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  802.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  803.    0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  804.    0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  805.    0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  806.    0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  807.    0x00, 0x00, 0x00, 0x00, 0x40, 0x48, 0x12, 0x02, 0x00, 0x00, 0x00, 0x00,
  808.    0x00, 0x00, 0xe0, 0x01, 0x20, 0x48, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00,
  809.    0x00, 0x00, 0x18, 0x1e, 0x20, 0x48, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00,
  810.    0x00, 0x00, 0x04, 0x20, 0x20, 0x48, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00,
  811.    0x00, 0x00, 0x02, 0x20, 0x20, 0x48, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00,
  812.    0x00, 0x00, 0x32, 0x40, 0x20, 0x48, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00,
  813.    0x00, 0x00, 0xc2, 0x8e, 0xe0, 0x48, 0x12, 0x02, 0x00, 0x00, 0x00, 0x00,
  814.    0x00, 0x00, 0x02, 0x80, 0x10, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  815.    0x00, 0x00, 0xc1, 0x86, 0x08, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  816.    0x00, 0x00, 0x21, 0x89, 0x1c, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  817.    0x00, 0x00, 0x11, 0x91, 0x22, 0xf1, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  818.    0x00, 0x00, 0xd1, 0x97, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  819.    0x00, 0x00, 0xd1, 0x97, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  820.    0x00, 0x00, 0xe1, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  821.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  822.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  823.    0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  824.    0x00, 0x00, 0xe1, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  825.    0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  826.    0x00, 0x80, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  827.    0x00, 0x60, 0x0e, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  828.    0x00, 0x18, 0x5c, 0x15, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  829.    0xff, 0xf7, 0xf8, 0x1f, 0xf0, 0xff, 0xff, 0xf7, 0x00, 0x00, 0xe0, 0xff,
  830.    0x00, 0xdc, 0x73, 0x90, 0x60, 0x05, 0x00, 0xdc, 0x00, 0x00, 0x60, 0x05,
  831.    0xf0, 0xac, 0x7c, 0xd0, 0xa1, 0x06, 0xf0, 0xac, 0x00, 0x00, 0xa0, 0x06,
  832.    0xd0, 0xd4, 0x60, 0x3c, 0x60, 0x05, 0xd0, 0xd4, 0x00, 0x00, 0x60, 0x05,
  833.    0xb0, 0xac, 0x40, 0x02, 0xb0, 0x06, 0xb0, 0xac, 0x00, 0x00, 0xa0, 0x06,
  834.    0xd0, 0xd4, 0x41, 0x02, 0x6e, 0x05, 0xd0, 0xd4, 0x00, 0x00, 0x60, 0x05,
  835.    0xb0, 0xac, 0x5f, 0xc2, 0xa1, 0x06, 0xb0, 0xac, 0x00, 0x00, 0xa0, 0x06,
  836.    0xf0, 0xd4, 0x64, 0xbc, 0x60, 0x05, 0xf0, 0xd4, 0x00, 0x00, 0x60, 0x05,
  837.    0x00, 0xac, 0x42, 0x90, 0xa0, 0x06, 0x00, 0xac, 0x00, 0x00, 0xa0, 0x06,
  838.    0xff, 0xd7, 0xc0, 0x9f, 0x60, 0xfd, 0xff, 0xd7, 0x00, 0x00, 0x60, 0xfd,
  839.    0xaa, 0xaa, 0x02, 0x80, 0xa0, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0xa0, 0xaa,
  840.    0x55, 0xd5, 0x00, 0x40, 0x60, 0x55, 0x55, 0xd5, 0x00, 0x00, 0x60, 0x55,
  841.    0xff, 0xbf, 0x02, 0x40, 0xa0, 0xff, 0xff, 0xbf, 0x00, 0x00, 0xa0, 0xff,
  842.    0x00, 0xd0, 0x04, 0x40, 0x60, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x60, 0x01,
  843.    0x00, 0xb0, 0x50, 0x21, 0xa0, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xa0, 0x01,
  844.    0xff, 0xd7, 0x03, 0x18, 0x60, 0xfd, 0xff, 0xd7, 0x00, 0x00, 0x60, 0xfd,
  845.    0x00, 0xb0, 0xfc, 0x07, 0xa0, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xa0, 0x01,
  846.    0x00, 0xd0, 0xf8, 0x01, 0x60, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x60, 0x01,
  847.    0xff, 0xb7, 0x58, 0x0f, 0xa0, 0xfd, 0xff, 0xb7, 0x00, 0x00, 0xa0, 0xfd,
  848.    0x00, 0xd0, 0x66, 0xf0, 0x61, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x60, 0x01,
  849.    0x00, 0xb0, 0x81, 0x01, 0xa2, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xa0, 0x01,
  850.    0xff, 0xd7, 0x00, 0xff, 0x63, 0xfd, 0xff, 0xd7, 0x00, 0x00, 0x60, 0xfd,
  851.    0x00, 0xb0, 0xff, 0x01, 0xa0, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xa0, 0x01,
  852.    0x00, 0xd0, 0x00, 0x00, 0x60, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x60, 0x01,
  853.    0xff, 0xb7, 0xff, 0xff, 0xbf, 0xfd, 0xff, 0xb7, 0xff, 0xff, 0xbf, 0xfd,
  854.    0x00, 0xd0, 0xff, 0xff, 0x7f, 0x01, 0x00, 0xd0, 0xff, 0xff, 0x7f, 0x01,
  855.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  856.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  857.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  858.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  859.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  860.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  861. } }
  862.  
  863. blt_bitmap define dill-du-9 { {96 60} {
  864.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  865.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  866.    0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  867.    0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  868.    0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  869.    0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  870.    0x00, 0x00, 0x00, 0x00, 0x40, 0x48, 0x12, 0x02, 0x00, 0x00, 0x00, 0x00,
  871.    0x00, 0x00, 0xe0, 0x01, 0x20, 0x4e, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00,
  872.    0x00, 0x00, 0x18, 0x1e, 0x20, 0x78, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00,
  873.    0x00, 0x00, 0x04, 0x20, 0x20, 0xc8, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00,
  874.    0x00, 0x00, 0x02, 0x20, 0x20, 0x48, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00,
  875.    0x00, 0x00, 0x32, 0x40, 0x20, 0x48, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00,
  876.    0x00, 0x00, 0xc2, 0x8e, 0xe0, 0x48, 0x12, 0x02, 0x00, 0x00, 0x00, 0x00,
  877.    0x00, 0x00, 0x02, 0x80, 0x10, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  878.    0x00, 0x00, 0xc1, 0x86, 0x08, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  879.    0x00, 0x00, 0x21, 0x89, 0x1c, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  880.    0x00, 0x00, 0x11, 0x91, 0x22, 0xf1, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  881.    0x00, 0x00, 0xd1, 0x97, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  882.    0x00, 0x00, 0xd1, 0x97, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  883.    0x00, 0x00, 0xe1, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  884.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  885.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  886.    0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  887.    0x00, 0x00, 0xe1, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  888.    0x00, 0x80, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  889.    0x00, 0x80, 0x0e, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  890.    0x00, 0x60, 0x1c, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  891.    0x00, 0x18, 0x78, 0x15, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  892.    0x7f, 0x0f, 0xf0, 0x1f, 0xfe, 0xff, 0x7f, 0x0f, 0x00, 0x00, 0xfe, 0xff,
  893.    0xc0, 0x8d, 0x7f, 0x90, 0x76, 0x00, 0xc0, 0x0d, 0x00, 0x00, 0x56, 0x00,
  894.    0xcf, 0x0a, 0x60, 0xd0, 0x6b, 0x00, 0xcf, 0x0a, 0x00, 0x00, 0x6a, 0x00,
  895.    0x4d, 0x0d, 0x40, 0x3c, 0x76, 0x00, 0x4d, 0x0d, 0x00, 0x00, 0x56, 0x00,
  896.    0xcb, 0x1a, 0x40, 0x02, 0x7a, 0x00, 0xcb, 0x0a, 0x00, 0x00, 0x6a, 0x00,
  897.    0x4d, 0xed, 0x41, 0x02, 0x5e, 0x00, 0x4d, 0x0d, 0x00, 0x00, 0x56, 0x00,
  898.    0xcb, 0x2a, 0x5f, 0xc2, 0x6b, 0x00, 0xcb, 0x0a, 0x00, 0x00, 0x6a, 0x00,
  899.    0x4f, 0xad, 0x64, 0xbc, 0x56, 0x00, 0x4f, 0x0d, 0x00, 0x00, 0x56, 0x00,
  900.    0xc0, 0x2a, 0x42, 0x90, 0x6a, 0x00, 0xc0, 0x0a, 0x00, 0x00, 0x6a, 0x00,
  901.    0x7f, 0xad, 0xc0, 0x9f, 0xd6, 0xff, 0x7f, 0x0d, 0x00, 0x00, 0xd6, 0xff,
  902.    0xaa, 0x2a, 0x02, 0x80, 0xaa, 0xaa, 0xaa, 0x0a, 0x00, 0x00, 0xaa, 0xaa,
  903.    0x55, 0xad, 0x00, 0x40, 0x56, 0x55, 0x55, 0x0d, 0x00, 0x00, 0x56, 0x55,
  904.    0xff, 0x2b, 0x02, 0x40, 0xfa, 0xff, 0xff, 0x0b, 0x00, 0x00, 0xfa, 0xff,
  905.    0x00, 0x4d, 0x04, 0x40, 0x16, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x16, 0x00,
  906.    0x00, 0x8b, 0x50, 0x21, 0x1a, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x1a, 0x00,
  907.    0x7f, 0x0d, 0x03, 0x18, 0xd6, 0xff, 0x7f, 0x0d, 0x00, 0x00, 0xd6, 0xff,
  908.    0x00, 0x0b, 0xfc, 0x07, 0x1a, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x1a, 0x00,
  909.    0x00, 0x0d, 0xf8, 0x01, 0x16, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x16, 0x00,
  910.    0x7f, 0x0b, 0x58, 0x0f, 0xda, 0xff, 0x7f, 0x0b, 0x00, 0x00, 0xda, 0xff,
  911.    0x00, 0x0d, 0x66, 0xf0, 0x17, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x16, 0x00,
  912.    0x00, 0x8b, 0x81, 0x01, 0x1a, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x1a, 0x00,
  913.    0x7f, 0x4d, 0x00, 0xff, 0xd7, 0xff, 0x7f, 0x0d, 0x00, 0x00, 0xd6, 0xff,
  914.    0x00, 0xcb, 0xff, 0x01, 0x1a, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x1a, 0x00,
  915.    0x00, 0x0d, 0x00, 0x00, 0x16, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x16, 0x00,
  916.    0x7f, 0xfb, 0xff, 0xff, 0xdb, 0xff, 0x7f, 0xfb, 0xff, 0xff, 0xdb, 0xff,
  917.    0x00, 0xfd, 0xff, 0xff, 0x17, 0x00, 0x00, 0xfd, 0xff, 0xff, 0x17, 0x00,
  918.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  919.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  920.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  921.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  922.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  923.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  924. } }
  925.  
  926. blt_bitmap define dill-du-10 { {96 60} {
  927.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  928.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  929.    0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  930.    0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  931.    0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  932.    0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  933.    0x00, 0x00, 0x00, 0x00, 0x40, 0x48, 0x12, 0x02, 0x00, 0x00, 0x00, 0x00,
  934.    0x00, 0x00, 0xe0, 0x01, 0x20, 0x4e, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00,
  935.    0x00, 0x00, 0x18, 0x1e, 0x20, 0x78, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00,
  936.    0x00, 0x00, 0x04, 0x20, 0x20, 0xc8, 0x13, 0x04, 0x00, 0x00, 0x00, 0x00,
  937.    0x00, 0x00, 0x02, 0x20, 0x20, 0x48, 0x1e, 0x04, 0x00, 0x00, 0x00, 0x00,
  938.    0x00, 0x00, 0x32, 0x40, 0x20, 0x48, 0x72, 0x04, 0x00, 0x00, 0x00, 0x00,
  939.    0x00, 0x00, 0xc2, 0x8e, 0xe0, 0x48, 0x12, 0x02, 0x00, 0x00, 0x00, 0x00,
  940.    0x00, 0x00, 0x02, 0x80, 0x10, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  941.    0x00, 0x00, 0xc1, 0x86, 0x08, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  942.    0x00, 0x00, 0x21, 0x89, 0x1c, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  943.    0x00, 0x00, 0x11, 0x91, 0x22, 0xf1, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  944.    0x00, 0x00, 0xd1, 0x97, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  945.    0x00, 0x00, 0xd1, 0x97, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  946.    0x00, 0x00, 0xe1, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  947.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  948.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  949.    0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  950.    0x00, 0x00, 0xe1, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  951.    0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  952.    0x00, 0x80, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  953.    0x00, 0x60, 0x0e, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  954.    0x00, 0x18, 0x5c, 0x15, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  955.    0xf7, 0x04, 0xf8, 0xff, 0xff, 0xff, 0xf7, 0x00, 0x00, 0xe0, 0xff, 0xff,
  956.    0xdc, 0x84, 0x73, 0x70, 0x05, 0x00, 0xdc, 0x00, 0x00, 0x60, 0x05, 0x00,
  957.    0xac, 0x04, 0x7c, 0xb0, 0x06, 0xf0, 0xac, 0x00, 0x00, 0xa0, 0x06, 0xf0,
  958.    0xd4, 0x04, 0x60, 0x7c, 0x05, 0xd0, 0xd4, 0x00, 0x00, 0x60, 0x05, 0xd0,
  959.    0xac, 0x18, 0x40, 0xa2, 0x06, 0xb0, 0xac, 0x00, 0x00, 0xa0, 0x06, 0xb0,
  960.    0xd4, 0xe0, 0x41, 0x62, 0x05, 0xd0, 0xd4, 0x00, 0x00, 0x60, 0x05, 0xd0,
  961.    0xac, 0x20, 0x5f, 0xa2, 0x06, 0xb0, 0xac, 0x00, 0x00, 0xa0, 0x06, 0xb0,
  962.    0xd4, 0xa0, 0x64, 0x7c, 0x05, 0xf0, 0xd4, 0x00, 0x00, 0x60, 0x05, 0xf0,
  963.    0xac, 0x20, 0x42, 0xb0, 0x06, 0x00, 0xac, 0x00, 0x00, 0xa0, 0x06, 0x00,
  964.    0xd7, 0xa0, 0xc0, 0x7f, 0xfd, 0xff, 0xd7, 0x00, 0x00, 0x60, 0xfd, 0xff,
  965.    0xaa, 0x20, 0x02, 0xa0, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0xa0, 0xaa, 0xaa,
  966.    0xd5, 0xa0, 0x00, 0x60, 0x55, 0x55, 0xd5, 0x00, 0x00, 0x60, 0x55, 0x55,
  967.    0xbf, 0x20, 0x02, 0xa0, 0xff, 0xff, 0xbf, 0x00, 0x00, 0xa0, 0xff, 0xff,
  968.    0xd0, 0x40, 0x04, 0x60, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x60, 0x01, 0x00,
  969.    0xb0, 0x80, 0x50, 0xa1, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xa0, 0x01, 0x00,
  970.    0xd7, 0x00, 0x03, 0x78, 0xfd, 0xff, 0xd7, 0x00, 0x00, 0x60, 0xfd, 0xff,
  971.    0xb0, 0x00, 0xfc, 0xa7, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xa0, 0x01, 0x00,
  972.    0xd0, 0x00, 0xf8, 0x61, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x60, 0x01, 0x00,
  973.    0xb7, 0x00, 0x58, 0xaf, 0xfd, 0xff, 0xb7, 0x00, 0x00, 0xa0, 0xfd, 0xff,
  974.    0xd0, 0x00, 0x66, 0x70, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x60, 0x01, 0x00,
  975.    0xb0, 0x80, 0x81, 0xa1, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xa0, 0x01, 0x00,
  976.    0xd7, 0x40, 0x00, 0x7f, 0xfd, 0xff, 0xd7, 0x00, 0x00, 0x60, 0xfd, 0xff,
  977.    0xb0, 0xc0, 0xff, 0xa1, 0x01, 0x00, 0xb0, 0x00, 0x00, 0xa0, 0x01, 0x00,
  978.    0xd0, 0x00, 0x00, 0x60, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x60, 0x01, 0x00,
  979.    0xb7, 0xff, 0xff, 0xbf, 0xfd, 0xff, 0xb7, 0xff, 0xff, 0xbf, 0xfd, 0xff,
  980.    0xd0, 0xff, 0xff, 0x7f, 0x01, 0x00, 0xd0, 0xff, 0xff, 0x7f, 0x01, 0x00,
  981.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  982.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  983.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  984.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  985.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  986.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  987. } }
  988.  
  989. blt_bitmap define dill-du-11 { {96 60} {
  990.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  991.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  992.    0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  993.    0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  994.    0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  995.    0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  996.    0x00, 0x00, 0x00, 0x00, 0x40, 0x48, 0x12, 0x02, 0x00, 0x00, 0x00, 0x00,
  997.    0x00, 0x00, 0xe0, 0x01, 0x20, 0x4e, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00,
  998.    0x00, 0x00, 0x18, 0x1e, 0x20, 0x78, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00,
  999.    0x00, 0x00, 0x04, 0x20, 0x20, 0xc8, 0x13, 0x04, 0x00, 0x00, 0x00, 0x00,
  1000.    0x00, 0x00, 0x02, 0x20, 0x20, 0x48, 0x1e, 0x04, 0x00, 0x00, 0x00, 0x00,
  1001.    0x00, 0x00, 0x32, 0x40, 0x20, 0x48, 0x72, 0x04, 0x00, 0x00, 0x00, 0x00,
  1002.    0x00, 0x00, 0xc2, 0x8e, 0xe0, 0x48, 0x12, 0x02, 0x00, 0x00, 0x00, 0x00,
  1003.    0x00, 0x00, 0x02, 0x80, 0x10, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  1004.    0x00, 0x00, 0xc1, 0x86, 0x08, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  1005.    0x00, 0x00, 0x21, 0x89, 0x1c, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  1006.    0x00, 0x00, 0x11, 0x91, 0x22, 0xf1, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
  1007.    0x00, 0x00, 0xd1, 0x97, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  1008.    0x00, 0x00, 0xd1, 0x97, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  1009.    0x00, 0x00, 0xe1, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  1010.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  1011.    0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  1012.    0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  1013.    0x00, 0x00, 0xe1, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  1014.    0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  1015.    0x00, 0x80, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  1016.    0x00, 0x60, 0x0e, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  1017.    0x00, 0x18, 0x5c, 0x15, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  1018.    0x0f, 0x04, 0xf8, 0xff, 0xff, 0x7f, 0x0f, 0x00, 0x00, 0xfe, 0xff, 0x7f,
  1019.    0x0d, 0x84, 0x73, 0x56, 0x00, 0xc0, 0x0d, 0x00, 0x00, 0x56, 0x00, 0xc0,
  1020.    0x0a, 0x04, 0x7c, 0x6a, 0x00, 0xcf, 0x0a, 0x00, 0x00, 0x6a, 0x00, 0xcf,
  1021.    0x0d, 0x04, 0x60, 0x56, 0x00, 0x4d, 0x0d, 0x00, 0x00, 0x56, 0x00, 0x4d,
  1022.    0x0a, 0x18, 0x40, 0x6a, 0x00, 0xcb, 0x0a, 0x00, 0x00, 0x6a, 0x00, 0xcb,
  1023.    0x0d, 0xe0, 0x41, 0x56, 0x00, 0x4d, 0x0d, 0x00, 0x00, 0x56, 0x00, 0x4d,
  1024.    0x0a, 0x20, 0x5f, 0x6a, 0x00, 0xcb, 0x0a, 0x00, 0x00, 0x6a, 0x00, 0xcb,
  1025.    0x0d, 0xa0, 0x64, 0x56, 0x00, 0x4f, 0x0d, 0x00, 0x00, 0x56, 0x00, 0x4f,
  1026.    0x0a, 0x20, 0x42, 0x6a, 0x00, 0xc0, 0x0a, 0x00, 0x00, 0x6a, 0x00, 0xc0,
  1027.    0x0d, 0xa0, 0xc0, 0xd7, 0xff, 0x7f, 0x0d, 0x00, 0x00, 0xd6, 0xff, 0x7f,
  1028.    0x0a, 0x20, 0x02, 0xaa, 0xaa, 0xaa, 0x0a, 0x00, 0x00, 0xaa, 0xaa, 0xaa,
  1029.    0x0d, 0xa0, 0x00, 0x56, 0x55, 0x55, 0x0d, 0x00, 0x00, 0x56, 0x55, 0x55,
  1030.    0x0b, 0x20, 0x02, 0xfa, 0xff, 0xff, 0x0b, 0x00, 0x00, 0xfa, 0xff, 0xff,
  1031.    0x0d, 0x40, 0x04, 0x16, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x16, 0x00, 0x00,
  1032.    0x0b, 0x80, 0x50, 0x1b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x1a, 0x00, 0x00,
  1033.    0x0d, 0x00, 0x03, 0xd6, 0xff, 0x7f, 0x0d, 0x00, 0x00, 0xd6, 0xff, 0x7f,
  1034.    0x0b, 0x00, 0xfc, 0x1b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x1a, 0x00, 0x00,
  1035.    0x0d, 0x00, 0xf8, 0x17, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x16, 0x00, 0x00,
  1036.    0x0b, 0x00, 0x58, 0xdb, 0xff, 0x7f, 0x0b, 0x00, 0x00, 0xda, 0xff, 0x7f,
  1037.    0x0d, 0x00, 0x66, 0x16, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x16, 0x00, 0x00,
  1038.    0x0b, 0x80, 0x81, 0x1b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x1a, 0x00, 0x00,
  1039.    0x0d, 0x40, 0x00, 0xd7, 0xff, 0x7f, 0x0d, 0x00, 0x00, 0xd6, 0xff, 0x7f,
  1040.    0x0b, 0xc0, 0xff, 0x1b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x1a, 0x00, 0x00,
  1041.    0x0d, 0x00, 0x00, 0x16, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x16, 0x00, 0x00,
  1042.    0xfb, 0xff, 0xff, 0xdb, 0xff, 0x7f, 0xfb, 0xff, 0xff, 0xdb, 0xff, 0x7f,
  1043.    0xfd, 0xff, 0xff, 0x17, 0x00, 0x00, 0xfd, 0xff, 0xff, 0x17, 0x00, 0x00,
  1044.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1045.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1046.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1047.    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  1048.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  1049.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  1050. } }
  1051.  
  1052. blt_bitmap define new-folder { {32 32} {
  1053.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  1054.    0xf8, 0x1f, 0x00, 0x00, 0x04, 0x20, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00,
  1055.    0x01, 0x80, 0xff, 0x3f, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xc0,
  1056.    0xf9, 0xff, 0xff, 0xcf, 0x09, 0x00, 0x00, 0xc8, 0x09, 0x00, 0x00, 0xc8,
  1057.    0x09, 0x00, 0x00, 0xc8, 0x09, 0x00, 0x00, 0xc8, 0x09, 0x00, 0x00, 0xc8,
  1058.    0x09, 0x00, 0x00, 0xc8, 0x09, 0x00, 0x00, 0xc8, 0x09, 0x00, 0x00, 0xc8,
  1059.    0x09, 0x00, 0x00, 0xc8, 0x09, 0x00, 0x00, 0xc8, 0x09, 0x00, 0x00, 0xc8,
  1060.    0x09, 0x00, 0x00, 0xc8, 0x09, 0x00, 0x00, 0xc8, 0xf9, 0xff, 0xff, 0xcf,
  1061.    0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff,
  1062.    0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  1063.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  1064. } }
  1065.  
  1066. blt_bitmap define dusty-folder { {32 32} {
  1067.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  1068.    0xf8, 0x1f, 0x00, 0x00, 0x04, 0x20, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00,
  1069.    0x01, 0x80, 0xff, 0x3f, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xc0,
  1070.    0xf9, 0xff, 0xff, 0xcf, 0x09, 0x02, 0x00, 0xc8, 0x09, 0x02, 0x00, 0xc8,
  1071.    0x09, 0x02, 0x00, 0xc8, 0x89, 0x0a, 0x00, 0xc8, 0x09, 0x07, 0x00, 0xc8,
  1072.    0x09, 0x07, 0x00, 0xc8, 0x09, 0x07, 0x00, 0xc8, 0x89, 0x08, 0x00, 0xc8,
  1073.    0x09, 0x00, 0x00, 0xc8, 0x09, 0x00, 0x00, 0xc8, 0x09, 0x00, 0x00, 0xc8,
  1074.    0x09, 0x00, 0x00, 0xc8, 0x09, 0x00, 0x00, 0xc8, 0xf9, 0xff, 0xff, 0xcf,
  1075.    0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff,
  1076.    0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  1077.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  1078. } }
  1079.  
  1080. blt_bitmap define old-folder { {32 32} {
  1081.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  1082.    0xf8, 0x1f, 0x00, 0x00, 0x04, 0x20, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00,
  1083.    0x01, 0x80, 0xff, 0x3f, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xc0,
  1084.    0xf9, 0xff, 0xff, 0xcf, 0x09, 0x02, 0x00, 0xc8, 0x09, 0x02, 0x00, 0xc8,
  1085.    0x09, 0x02, 0x00, 0xcc, 0x89, 0x0a, 0x00, 0xca, 0x09, 0x07, 0x00, 0xc9,
  1086.    0x09, 0x07, 0x80, 0xc9, 0x09, 0x07, 0x40, 0xca, 0x89, 0x08, 0xa0, 0xca,
  1087.    0x09, 0x00, 0x98, 0xca, 0x09, 0x00, 0x76, 0xca, 0x29, 0x88, 0x93, 0xcb,
  1088.    0x09, 0x62, 0x7c, 0xc9, 0x49, 0x18, 0x11, 0xca, 0xf9, 0xff, 0xff, 0xcf,
  1089.    0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff,
  1090.    0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  1091.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  1092. } }
  1093.  
  1094. blt_bitmap define moldy-folder { {32 32} {
  1095.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  1096.    0xf8, 0x1f, 0x00, 0x00, 0x04, 0x20, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00,
  1097.    0x01, 0x80, 0xff, 0x3f, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xc0,
  1098.    0xf9, 0xff, 0xff, 0xcf, 0x29, 0x22, 0x10, 0xc9, 0x09, 0x42, 0x10, 0xcc,
  1099.    0x19, 0x82, 0x10, 0xc8, 0x89, 0x0a, 0xfd, 0xc8, 0x09, 0x07, 0x12, 0xc9,
  1100.    0x09, 0x07, 0x75, 0xce, 0x09, 0x07, 0x99, 0xcb, 0x89, 0x08, 0xf5, 0xca,
  1101.    0x09, 0x00, 0x99, 0xca, 0x09, 0x41, 0x76, 0xca, 0xa9, 0x88, 0x93, 0xcb,
  1102.    0x09, 0x62, 0x7c, 0xc9, 0x49, 0x18, 0x11, 0xca, 0xf9, 0xff, 0xff, 0xcf,
  1103.    0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff,
  1104.    0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  1105.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  1106. } }
  1107.  
  1108. blt_bitmap define new-file { {32 32} {
  1109.    0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x80, 0x00, 0x00, 0x06,
  1110.    0x80, 0x00, 0x00, 0x0a, 0x80, 0x00, 0x00, 0x12, 0x80, 0x00, 0x00, 0x22,
  1111.    0x80, 0x00, 0x00, 0x7e, 0x80, 0x00, 0x00, 0xc0, 0x80, 0xfc, 0xff, 0xcf,
  1112.    0x80, 0x04, 0x00, 0xc8, 0x80, 0x04, 0x00, 0xc8, 0x80, 0x04, 0x00, 0xc8,
  1113.    0x80, 0x04, 0x00, 0xc8, 0x80, 0x04, 0x00, 0xc8, 0x80, 0x04, 0x00, 0xc8,
  1114.    0x80, 0x04, 0x00, 0xc8, 0x80, 0x04, 0x00, 0xc8, 0x80, 0x04, 0x00, 0xc8,
  1115.    0x80, 0x04, 0x00, 0xc8, 0x80, 0x04, 0x00, 0xc8, 0x80, 0x04, 0x00, 0xc8,
  1116.    0x80, 0x04, 0x00, 0xc8, 0x80, 0x04, 0x00, 0xc8, 0x80, 0x04, 0x00, 0xc8,
  1117.    0x80, 0x04, 0x00, 0xc8, 0x80, 0x04, 0x00, 0xc8, 0x80, 0x04, 0x00, 0xc8,
  1118.    0x80, 0xfc, 0xff, 0xcf, 0x80, 0x00, 0x00, 0xc0, 0x80, 0x00, 0x00, 0xc0,
  1119.    0x80, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff
  1120. } }
  1121.  
  1122. blt_bitmap define dusty-file { {32 32} {
  1123.    0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x80, 0x00, 0x00, 0x06,
  1124.    0x80, 0x00, 0x00, 0x0a, 0x80, 0x00, 0x00, 0x12, 0x80, 0x00, 0x00, 0x22,
  1125.    0x80, 0x00, 0x00, 0x7e, 0x80, 0x00, 0x00, 0xc0, 0x80, 0xfc, 0xff, 0xcf,
  1126.    0x80, 0x84, 0x00, 0xc8, 0x80, 0x84, 0x00, 0xc8, 0x80, 0xa4, 0x02, 0xc8,
  1127.    0x80, 0xc4, 0x01, 0xc8, 0x80, 0xc4, 0x01, 0xc8, 0x80, 0xc4, 0x01, 0xc8,
  1128.    0x80, 0x24, 0x02, 0xc8, 0x80, 0x04, 0x00, 0xc8, 0x80, 0x04, 0x00, 0xc8,
  1129.    0x80, 0x04, 0x00, 0xc8, 0x80, 0x04, 0x00, 0xc8, 0x80, 0x04, 0x00, 0xc8,
  1130.    0x80, 0x04, 0x00, 0xc8, 0x80, 0x04, 0x00, 0xc8, 0x80, 0x04, 0x00, 0xc8,
  1131.    0x80, 0x04, 0x00, 0xc8, 0x80, 0x04, 0x00, 0xc8, 0x80, 0x04, 0x00, 0xc8,
  1132.    0x80, 0xfc, 0xff, 0xcf, 0x80, 0x00, 0x00, 0xc0, 0x80, 0x00, 0x00, 0xc0,
  1133.    0x80, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff
  1134. } }
  1135.  
  1136. blt_bitmap define old-file { {32 32} {
  1137.    0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x80, 0x00, 0x00, 0x06,
  1138.    0x80, 0x00, 0x00, 0x0a, 0x80, 0x00, 0x00, 0x12, 0x80, 0x00, 0x00, 0x22,
  1139.    0x80, 0x00, 0x00, 0x7e, 0x80, 0x00, 0x00, 0xc0, 0x80, 0xfc, 0xff, 0xcf,
  1140.    0x80, 0x84, 0x00, 0xc8, 0x80, 0x84, 0x00, 0xcc, 0x80, 0xa4, 0x82, 0xcc,
  1141.    0x80, 0xc4, 0x11, 0xca, 0x80, 0xc4, 0x01, 0xca, 0x80, 0xc4, 0x01, 0xc9,
  1142.    0x80, 0x24, 0x02, 0xc9, 0x80, 0x04, 0x80, 0xc8, 0x80, 0x04, 0x80, 0xc8,
  1143.    0x80, 0x04, 0x40, 0xc9, 0x80, 0x04, 0x40, 0xce, 0x80, 0x04, 0xa0, 0xcb,
  1144.    0x80, 0x04, 0xf0, 0xca, 0x80, 0x44, 0x98, 0xca, 0x80, 0x14, 0x76, 0xca,
  1145.    0x80, 0x84, 0x8b, 0xcb, 0x80, 0x64, 0x7c, 0xce, 0x80, 0x1c, 0x05, 0xc8,
  1146.    0x80, 0xfc, 0xff, 0xcf, 0x80, 0x00, 0x00, 0xc0, 0x80, 0x00, 0x00, 0xc0,
  1147.    0x80, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff
  1148. } }
  1149.  
  1150. blt_bitmap define moldy-file { {32 32} {
  1151.    0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x80, 0x00, 0x00, 0x06,
  1152.    0x80, 0x00, 0x00, 0x0a, 0x80, 0x00, 0x00, 0x12, 0x80, 0x00, 0x00, 0x22,
  1153.    0x80, 0x00, 0x00, 0x7e, 0x80, 0x00, 0x00, 0xc0, 0x80, 0xfc, 0xff, 0xcf,
  1154.    0x80, 0x84, 0x08, 0xc9, 0x80, 0x84, 0x20, 0xcc, 0x80, 0xa4, 0x82, 0xcc,
  1155.    0x80, 0xc4, 0x11, 0xca, 0x80, 0xc4, 0x01, 0xca, 0x80, 0xc4, 0x01, 0xc9,
  1156.    0x80, 0x24, 0x02, 0xc9, 0x80, 0x04, 0x80, 0xc8, 0x80, 0x04, 0xfc, 0xc8,
  1157.    0x80, 0x1c, 0x42, 0xc9, 0x80, 0x64, 0x75, 0xce, 0x80, 0x84, 0xa9, 0xcb,
  1158.    0x80, 0x04, 0xe7, 0xca, 0x80, 0x4c, 0x99, 0xca, 0x80, 0x14, 0x76, 0xca,
  1159.    0x80, 0x84, 0x8b, 0xcb, 0x80, 0x64, 0x7c, 0xce, 0x80, 0x1c, 0x85, 0xc8,
  1160.    0x80, 0xfc, 0xff, 0xcf, 0x80, 0x00, 0x00, 0xc0, 0x80, 0x00, 0x00, 0xc0,
  1161.    0x80, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff
  1162. } }
  1163.  
  1164. blt_bitmap define misc-files { {32 32} {
  1165.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  1166.    0xfc, 0x07, 0xfe, 0x03, 0x04, 0x0c, 0x02, 0x06, 0x04, 0x14, 0x02, 0x0a,
  1167.    0x04, 0x3c, 0x02, 0x1e, 0x04, 0x60, 0x02, 0x30, 0x04, 0x60, 0x02, 0x30,
  1168.    0x04, 0x60, 0x02, 0x30, 0x04, 0x60, 0x02, 0x30, 0x04, 0x60, 0x02, 0x30,
  1169.    0x04, 0x00, 0x00, 0x30, 0x04, 0xfc, 0x07, 0x30, 0x04, 0x04, 0x0c, 0x30,
  1170.    0x04, 0x04, 0x14, 0x30, 0x04, 0x04, 0x3c, 0x30, 0xfc, 0x05, 0x60, 0x3f,
  1171.    0xf8, 0x05, 0x60, 0x3f, 0x00, 0x04, 0x60, 0x00, 0x00, 0x04, 0x60, 0x00,
  1172.    0x00, 0x04, 0x60, 0x00, 0x00, 0x04, 0x60, 0x00, 0x00, 0x04, 0x60, 0x00,
  1173.    0x00, 0x04, 0x60, 0x00, 0x00, 0x04, 0x60, 0x00, 0x00, 0x04, 0x60, 0x00,
  1174.    0x00, 0xfc, 0x7f, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
  1175.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  1176. } }
  1177.  
  1178. blt_bitmap define examine { {36 36} {
  1179.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x07,
  1180.    0x07, 0x00, 0x00, 0x80, 0x2a, 0x08, 0x00, 0x00, 0xc0, 0x81, 0x10, 0x00,
  1181.    0x00, 0x20, 0x00, 0x22, 0x00, 0x00, 0x90, 0xff, 0x47, 0x00, 0x00, 0x98,
  1182.    0x00, 0x48, 0x00, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x8c, 0x00, 0x90,
  1183.    0x3e, 0x00, 0x8c, 0x00, 0x80, 0x60, 0x00, 0x8a, 0x00, 0xa0, 0xa0, 0x00,
  1184.    0x8e, 0x00, 0x80, 0x20, 0x01, 0x8a, 0x00, 0xa0, 0x20, 0x02, 0x96, 0x00,
  1185.    0x40, 0xe0, 0x07, 0x9a, 0x00, 0x60, 0x00, 0x04, 0xb6, 0x00, 0x50, 0x00,
  1186.    0x04, 0xec, 0x00, 0x30, 0x00, 0x04, 0xd4, 0x00, 0x50, 0x00, 0x04, 0xa8,
  1187.    0x01, 0xa8, 0x00, 0x04, 0x50, 0x07, 0x5f, 0x01, 0x04, 0xa0, 0xfa, 0xb2,
  1188.    0x02, 0x04, 0xc0, 0x55, 0x61, 0x05, 0x04, 0x00, 0x3f, 0xc0, 0x0a, 0x04,
  1189.    0x00, 0x00, 0x80, 0x15, 0x04, 0x00, 0x08, 0x00, 0x2b, 0x04, 0x00, 0x08,
  1190.    0x00, 0x56, 0x04, 0x00, 0x08, 0x00, 0xac, 0x04, 0x00, 0x08, 0x00, 0xd8,
  1191.    0x04, 0x00, 0x08, 0x00, 0x70, 0x04, 0x00, 0x08, 0x00, 0x00, 0x04, 0x00,
  1192.    0x08, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00,
  1193.    0x00, 0x04, 0x00, 0xf8, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00
  1194. } }
  1195.  
  1196. blt_bitmap define trash { {36 36} {
  1197.    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x00, 0x00, 0x80, 0x00,
  1198.    0x80, 0x01, 0x00, 0x80, 0x00, 0x80, 0x02, 0x00, 0x80, 0x00, 0x80, 0x04,
  1199.    0x00, 0x80, 0x00, 0x80, 0x08, 0x00, 0x80, 0x00, 0x80, 0x1f, 0x00, 0xe0,
  1200.    0x00, 0x00, 0x70, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x00, 0xf8, 0x00, 0x00,
  1201.    0xf0, 0x01, 0xe8, 0x00, 0x00, 0xf0, 0x01, 0xd8, 0x00, 0x00, 0x70, 0x01,
  1202.    0xb0, 0x07, 0x00, 0xbe, 0x00, 0x50, 0xfd, 0xff, 0xd5, 0x00, 0xb0, 0xaa,
  1203.    0xaa, 0xaa, 0x00, 0x50, 0x55, 0x55, 0xc5, 0x00, 0xa0, 0xaa, 0xaa, 0xaa,
  1204.    0x00, 0x60, 0x55, 0x55, 0x45, 0x00, 0xa0, 0xaa, 0xaa, 0x62, 0x00, 0x60,
  1205.    0x55, 0x55, 0x55, 0x00, 0xa0, 0xaa, 0xaa, 0x62, 0x00, 0x40, 0x55, 0x55,
  1206.    0x55, 0x00, 0xc0, 0xaa, 0xaa, 0x22, 0x00, 0x40, 0x55, 0x55, 0x31, 0x00,
  1207.    0xc0, 0xaa, 0xaa, 0x2a, 0x00, 0x40, 0x55, 0x55, 0x31, 0x00, 0x80, 0xaa,
  1208.    0xaa, 0x2a, 0x00, 0x80, 0x55, 0x55, 0x11, 0x00, 0x80, 0xaa, 0xaa, 0x18,
  1209.    0x00, 0x80, 0x55, 0x55, 0x15, 0x00, 0x80, 0xaa, 0xaa, 0x18, 0x00, 0x00,
  1210.    0x55, 0x55, 0x15, 0x00, 0x00, 0xab, 0xaa, 0x08, 0x00, 0x00, 0x55, 0x55,
  1211.    0x0d, 0x00, 0x00, 0xae, 0xaa, 0x07, 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00
  1212. } }
  1213.  
  1214. blt_bitmap define compress { {36 36} {
  1215.    0x00, 0x80, 0x3c, 0x00, 0x00, 0x00, 0xc0, 0x13, 0x00, 0x00, 0x00, 0x80,
  1216.    0x3c, 0x00, 0x00, 0x00, 0xc0, 0x13, 0x00, 0x00, 0x00, 0x80, 0x3c, 0x00,
  1217.    0x00, 0x00, 0xc0, 0x13, 0x00, 0x00, 0x00, 0x80, 0x3c, 0x00, 0x00, 0x00,
  1218.    0xc0, 0x13, 0x00, 0x00, 0x00, 0x80, 0x3c, 0x00, 0x00, 0xe0, 0xff, 0xff,
  1219.    0x7f, 0x00, 0x50, 0x55, 0x55, 0xd5, 0x00, 0xa8, 0xaa, 0xaa, 0x82, 0x01,
  1220.    0x58, 0x55, 0x55, 0x15, 0x01, 0xac, 0xaa, 0xaa, 0x2a, 0x02, 0x54, 0x55,
  1221.    0x55, 0x55, 0x03, 0xfc, 0xff, 0xff, 0xff, 0x03, 0x80, 0xff, 0xff, 0x00,
  1222.    0x00, 0x80, 0x00, 0x80, 0x01, 0x00, 0x80, 0x00, 0x80, 0x02, 0x00, 0x80,
  1223.    0x00, 0x80, 0x04, 0x00, 0x80, 0x00, 0x80, 0x08, 0x00, 0x80, 0x00, 0x80,
  1224.    0x1f, 0x00, 0x80, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00, 0x10, 0x00,
  1225.    0x80, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00,
  1226.    0x00, 0x10, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x55, 0x55, 0x35,
  1227.    0x00, 0x80, 0x00, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x10, 0x00, 0x00,
  1228.    0xff, 0xff, 0x3f, 0x00, 0x00, 0x55, 0x55, 0x35, 0x00, 0x80, 0x00, 0x00,
  1229.    0x20, 0x00, 0x40, 0x00, 0x00, 0x10, 0x00, 0xc0, 0xff, 0xff, 0x1f, 0x00
  1230. } }
  1231.  
  1232. blt_bitmap define refile { {36 36} {
  1233.    0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x07, 0x00, 0x0c, 0x00,
  1234.    0x00, 0x08, 0x00, 0x14, 0x00, 0x00, 0x10, 0x00, 0x24, 0x00, 0xe0, 0x2f,
  1235.    0x00, 0xc4, 0xff, 0xef, 0x6f, 0x00, 0x54, 0x00, 0xe0, 0x4f, 0x00, 0x64,
  1236.    0x00, 0xe0, 0x4f, 0x00, 0x44, 0xfe, 0xe1, 0x0f, 0x00, 0x54, 0x02, 0xfc,
  1237.    0x7f, 0x00, 0x64, 0xfa, 0xf9, 0x3f, 0x00, 0x44, 0x0a, 0xf0, 0x1f, 0x00,
  1238.    0x54, 0xea, 0xe7, 0xcf, 0x00, 0x64, 0x2e, 0xc0, 0x87, 0x00, 0x44, 0xaa,
  1239.    0xff, 0xff, 0x03, 0x54, 0xb2, 0x00, 0x00, 0x02, 0x64, 0xa6, 0x00, 0x00,
  1240.    0x02, 0x44, 0xce, 0x20, 0x08, 0x02, 0x54, 0x9a, 0xe0, 0x0f, 0x02, 0x64,
  1241.    0xb6, 0x00, 0x00, 0x02, 0x44, 0xec, 0xe0, 0x0f, 0x02, 0x54, 0xde, 0x20,
  1242.    0x08, 0x02, 0x64, 0xba, 0xe0, 0x0f, 0x02, 0x44, 0xf2, 0x00, 0x00, 0x02,
  1243.    0x54, 0xe2, 0xff, 0xff, 0x03, 0x64, 0xc2, 0xff, 0x7f, 0x00, 0x44, 0x02,
  1244.    0x00, 0x48, 0x00, 0x54, 0x82, 0x3f, 0x48, 0x00, 0x64, 0x82, 0x20, 0x48,
  1245.    0x00, 0x44, 0x82, 0x3f, 0x48, 0x00, 0x54, 0x02, 0x00, 0x48, 0x00, 0x68,
  1246.    0xfe, 0xff, 0x4f, 0x00, 0x50, 0x00, 0x00, 0x40, 0x00, 0x60, 0x00, 0x00,
  1247.    0x40, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  1248. } }
  1249.  
  1250. blt_bitmap define disk { {29 29} {
  1251.    0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0x0f, 0x56, 0x00, 0xc0, 0x0d,
  1252.    0x6a, 0x00, 0xcf, 0x0a, 0x56, 0x00, 0x4d, 0x0d, 0x6a, 0x00, 0xcb, 0x0a,
  1253.    0x56, 0x00, 0x4d, 0x0d, 0x6a, 0x00, 0xcb, 0x0a, 0x56, 0x00, 0x4f, 0x0d,
  1254.    0x6a, 0x00, 0xc0, 0x0a, 0xd6, 0xff, 0x7f, 0x0d, 0xaa, 0xaa, 0xaa, 0x0a,
  1255.    0x56, 0x55, 0x55, 0x0d, 0xfa, 0xff, 0xff, 0x0b, 0x16, 0x00, 0x00, 0x0d,
  1256.    0x1a, 0x00, 0x00, 0x0b, 0xd6, 0xff, 0x7f, 0x0d, 0x1a, 0x00, 0x00, 0x0b,
  1257.    0x16, 0x00, 0x00, 0x0d, 0xda, 0xff, 0x7f, 0x0b, 0x16, 0x00, 0x00, 0x0d,
  1258.    0x1a, 0x00, 0x00, 0x0b, 0xd6, 0xff, 0x7f, 0x0d, 0x1a, 0x00, 0x00, 0x0b,
  1259.    0x16, 0x00, 0x00, 0x0d, 0xda, 0xff, 0x7f, 0x0b, 0x16, 0x00, 0x00, 0x0d,
  1260.    0xfe, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00
  1261. } }
  1262.  
  1263. blt_bitmap define unknown { {32 32} {
  1264.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  1265.    0xf0, 0xff, 0xff, 0x00, 0xb0, 0xaa, 0xaa, 0x01, 0x70, 0x55, 0x55, 0x03,
  1266.    0xd0, 0xaa, 0xaa, 0x06, 0xb0, 0x55, 0x55, 0x0d, 0x50, 0xff, 0xff, 0x1f,
  1267.    0xb0, 0x56, 0x55, 0x15, 0x50, 0x2b, 0x80, 0x1a, 0xb0, 0x16, 0x3f, 0x15,
  1268.    0x50, 0x8b, 0x7f, 0x1a, 0xb0, 0xd6, 0xe1, 0x14, 0x50, 0xcb, 0xe9, 0x1a,
  1269.    0xb0, 0x96, 0xe5, 0x14, 0x50, 0x2b, 0xf0, 0x1a, 0xb0, 0x56, 0x7c, 0x15,
  1270.    0x50, 0xab, 0x9e, 0x1a, 0xb0, 0x56, 0x4e, 0x15, 0x50, 0xab, 0xae, 0x1a,
  1271.    0xb0, 0x56, 0x40, 0x15, 0x50, 0xab, 0xae, 0x1a, 0xa0, 0x56, 0x4e, 0x15,
  1272.    0x40, 0xab, 0xae, 0x1a, 0x80, 0x56, 0x40, 0x15, 0x00, 0xab, 0xaa, 0x1a,
  1273.    0x00, 0xfe, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  1274.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  1275. } }
  1276.  
  1277. blt_bitmap define ex-usage { {447 40} {
  1278.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1279.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1280.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1281.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1282.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1283.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1284.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1285.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1286.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1287.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1288.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1289.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1290.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1291.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1292.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1293.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1294.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1295.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1296.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1297.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1298.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1299.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1300.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1301.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1302.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1303.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1304.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x3c,0x00,0x00,0x30,0xde,
  1305.  0x06,0x6c,0x06,0x6c,0x06,0x1e,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1306.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1307.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,
  1308.  0x01,0x00,0x00,0x18,0x00,0x00,0x3c,0x00,0x00,0x30,0x1e,0x06,0x6c,0x06,0x6c,
  1309.  0x06,0x33,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1310.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1311.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x02,0x00,0x00,0x68,
  1312.  0xe6,0xd9,0x34,0x8f,0xc7,0x33,0xda,0x36,0xf4,0x66,0xf4,0x66,0x30,0x60,0x00,
  1313.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1314.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1315.  0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x00,0x6c,0x36,0xfb,0xb6,0xd9,
  1316.  0x6c,0x36,0xdb,0x6e,0x66,0x36,0x66,0x36,0x1c,0x60,0x00,0x00,0x00,0x00,0x00,
  1317.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1318.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1319.  0x00,0x10,0x00,0xf8,0xff,0x03,0x6c,0x76,0x38,0xb6,0xd9,0x00,0x36,0xdb,0x66,
  1320.  0x66,0x1e,0x66,0x1e,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1321.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1322.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,
  1323.  0x00,0x04,0x64,0xc6,0x19,0xb2,0xd9,0xc0,0x37,0xd9,0x66,0x62,0x1e,0x62,0x1e,
  1324.  0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1325.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1326.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x0c,0x64,0x86,
  1327.  0x1b,0xb2,0xd9,0x60,0x36,0xd9,0x66,0x62,0x36,0x62,0x36,0x30,0x60,0x00,0x00,
  1328.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1329.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1330.  0x00,0x00,0x00,0x00,0x90,0xff,0xff,0xff,0x0c,0x66,0x37,0x1b,0xb3,0xd9,0x6c,
  1331.  0xb6,0xd9,0x6e,0x63,0x67,0x63,0x67,0x33,0x63,0x00,0x00,0x00,0x00,0x00,0x00,
  1332.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1333.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1334.  0x90,0x20,0x00,0x80,0x0c,0xc6,0xe6,0x19,0x33,0x8f,0xc7,0xbd,0xd9,0x36,0xc3,
  1335.  0xc6,0xc3,0xc6,0x1e,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1336.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1337.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x20,0x00,0x80,
  1338.  0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1339.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1340.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1341.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x20,0x00,0xc0,0x0c,0x00,0x00,0x00,
  1342.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1343.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1344.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1345.  0x00,0x00,0x00,0x90,0xa8,0x00,0xa0,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1346.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1347.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1348.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,
  1349.  0x70,0x00,0x90,0x0c,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1350.  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1351.  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1352.  0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x70,0x00,0x98,0x0c,
  1353.  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
  1354.  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
  1355.  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x1a,
  1356.  0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x70,0x00,0xa4,0x0c,0x56,0x55,0x55,0x55,
  1357.  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
  1358.  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
  1359.  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x15,0x00,0x00,0x00,0x00,
  1360.  0x00,0x00,0x90,0x88,0x00,0xaa,0x0c,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
  1361.  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
  1362.  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
  1363.  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x1a,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,
  1364.  0x80,0xa9,0x0c,0x56,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
  1365.  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
  1366.  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
  1367.  0x55,0x55,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x60,0xa7,0x0c,0xaa,
  1368.  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
  1369.  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
  1370.  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x1a,0x00,
  1371.  0x00,0x00,0x00,0x00,0x00,0x90,0x82,0x38,0xb9,0x0c,0x56,0x55,0x55,0x55,0x55,
  1372.  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
  1373.  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
  1374.  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x15,0x00,0x80,0x87,0xe1,0x31,
  1375.  0x06,0x90,0x20,0xc6,0x97,0x0c,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
  1376.  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
  1377.  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
  1378.  0xaa,0xaa,0xaa,0xaa,0xaa,0x1a,0x00,0xc0,0xec,0x31,0x33,0x03,0x90,0x84,0x11,
  1379.  0xa1,0x0c,0x56,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
  1380.  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
  1381.  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
  1382.  0x55,0x15,0x00,0x00,0x8c,0x31,0xb3,0x01,0x90,0xff,0xff,0xff,0x0c,0xaa,0xaa,
  1383.  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
  1384.  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
  1385.  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x1a,0x00,0x00,
  1386.  0x87,0x31,0xf3,0x00,0x10,0x00,0x00,0x00,0x0c,0x56,0x55,0x55,0x55,0x55,0x55,
  1387.  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
  1388.  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
  1389.  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x15,0x00,0x00,0x8c,0x31,0xf3,0x00,
  1390.  0x10,0x00,0x00,0x00,0x0c,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
  1391.  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
  1392.  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
  1393.  0xaa,0xaa,0xaa,0xaa,0x1a,0x00,0x00,0x8c,0x31,0xb3,0x01,0xf0,0xff,0xff,0xff,
  1394.  0x0f,0x56,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
  1395.  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
  1396.  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
  1397.  0x15,0x00,0x00,0x8c,0x31,0x33,0x03,0xe0,0xff,0xff,0xff,0x0f,0xaa,0xaa,0xaa,
  1398.  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
  1399.  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
  1400.  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x1a,0x00,0xc0,0x8c,
  1401.  0x31,0x33,0x06,0x00,0x00,0x00,0x00,0x00,0x56,0x55,0x55,0x55,0x55,0x55,0x55,
  1402.  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
  1403.  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
  1404.  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x15,0x00,0x80,0x87,0xe1,0x31,0x0c,0x00,
  1405.  0x00,0x00,0x00,0x00,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
  1406.  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
  1407.  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
  1408.  0xaa,0xaa,0xaa,0x1a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1409.  0x56,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
  1410.  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
  1411.  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x15,
  1412.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
  1413.  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1414.  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1415.  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,
  1416.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1417.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1418.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1419.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1420.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1421.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1422.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1423.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1424.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1425.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1426.  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1427.  0x00,0x00,0x00,0x00,0x00
  1428. } }
  1429.  
  1430. # ----------------------------------------------------------------------
  1431. #  USAGE:  kd_examine <file-or-directory>
  1432. #
  1433. #  Provides a means of examining the given path.  If a file name is
  1434. #  specified, then a file viewer window is invoked and loaded with
  1435. #  the file.  If a directory is specified, then its usage info is
  1436. #  loaded into the main canvas.  If any errors are encountered, they
  1437. #  are displayed in an error box to the user.
  1438. # ----------------------------------------------------------------------
  1439. proc kd_examine {x} {
  1440.     global KdUnique
  1441.  
  1442.     if {[file isfile $x]} {
  1443.         kd_examine_file $x
  1444.     } elseif {[file isdirectory $x]} {
  1445.         set viewer .usage[incr KdUnique]
  1446.         toplevel $viewer
  1447.         wm title $viewer "Kosher Dill: Usage Viewer"
  1448.         wm minsize $viewer 200 200
  1449.         kd_create_dir_viewer $viewer
  1450.         kd_examine_dir $viewer $x
  1451.     } else {
  1452.         kd_message_box error "Cannot display \"$x\""
  1453.     }
  1454. }
  1455.  
  1456. # ----------------------------------------------------------------------
  1457. #  USAGE:  kd_examine_file <file>
  1458. #
  1459. #  Creates a new window to display the given file.  Uses the system
  1460. #  "file" command to determine the file type, and displays the file
  1461. #  in a text widget if possible.  Otherwise, displays characteristics
  1462. #  of the file.
  1463. # ----------------------------------------------------------------------
  1464. proc kd_examine_file {file} {
  1465.     global KdUnique
  1466.  
  1467.     if {![file exists $file]} {
  1468.         kd_message_box error "File does not exist: $file"
  1469.         return
  1470.     }
  1471.     if {![file readable $file]} {
  1472.         kd_message_box error "Cannot open file: $file"
  1473.         return
  1474.     } else {
  1475.         set type [exec file $file]
  1476.         if {[lsearch $type "ascii"] >= 0 ||
  1477.             [lsearch $type "text"] >= 0 ||
  1478.             [lsearch $type "commands"] >= 0 ||
  1479.             [lsearch $type "script"] >= 0} {
  1480.  
  1481.             set duinfo [kd_get_usage $file]
  1482.             if {$duinfo == ""} {
  1483.                 kd_message_box error "Cannot get usage info: $file"
  1484.                 return
  1485.             }
  1486.             set dAge   [kd_access $duinfo age]
  1487.             set dUsage [kd_access $duinfo usage]
  1488.  
  1489.             set win .file[incr KdUnique]
  1490.             toplevel $win -class FileViewer
  1491.             frame $win.view -borderwidth 2 -relief sunken
  1492.             text $win.view.text -yscrollcommand "$win.view.sbar set" \
  1493.                 -width 80 -height 24
  1494.             scrollbar $win.view.sbar -command "$win.view.text yview"
  1495.             pack $win.view.text -side left -expand yes -fill both
  1496.             pack $win.view.sbar -side right -fill y
  1497.  
  1498.             frame $win.label
  1499.             label $win.label.icon -bitmap $dAge-file
  1500.             label $win.label.name -text "$file  (USAGE: [set dUsage]K)"
  1501.             pack $win.label.icon -side left
  1502.             pack $win.label.name -side left
  1503.  
  1504.             frame $win.cntl -borderwidth 2 -relief raised
  1505.             frame $win.cntl.d -borderwidth 2 -relief sunken
  1506.             button $win.cntl.d.dismiss -text " Dismiss " \
  1507.                 -command "destroy $win"
  1508.             pack $win.cntl.d.dismiss -padx 4 -pady 4
  1509.             pack $win.cntl.d -padx 8 -pady 8
  1510.  
  1511.             pack $win.label -side top -fill both
  1512.             pack $win.view -side top -expand yes -fill both -padx 4 -pady 4
  1513.             pack $win.cntl -side top -fill x
  1514.  
  1515.             wm title $win "Kosher Dill: File Viewer"
  1516.             wm minsize $win 200 200
  1517.             bind $win <Key-Return> "
  1518.                 $win.cntl.d.dismiss flash
  1519.                 $win.cntl.d.dismiss invoke
  1520.             "
  1521.             focus $win
  1522.  
  1523.             if {[catch "open $file r" fid] == 0} {
  1524.                 $win.view.text insert end [read $fid]
  1525.                 $win.view.text config -state disabled
  1526.                 close $fid
  1527.             } else {
  1528.                 $win.view.text insert end "Cannot open file:\n$file"
  1529.                 $win.view.text config -state disabled
  1530.             }
  1531.         } else {
  1532.             set duinfo [kd_get_usage $file]
  1533.             if {$duinfo == ""} {
  1534.                 kd_message_box error "Cannot get usage info: $file"
  1535.                 return
  1536.             }
  1537.             set dAge   [kd_access $duinfo age]
  1538.             set dUsage [kd_access $duinfo usage]
  1539.  
  1540.             set win .file[incr KdUnique]
  1541.             toplevel $win -class FileViewer
  1542.             message $win.mesg -aspect 1000 \
  1543.                 -text "$file:\n[lrange $type 1 end]\n\nUSAGE: [set dUsage]K"
  1544.  
  1545.             frame $win.cntl -borderwidth 2 -relief raised
  1546.             label $win.cntl.icon -bitmap $dAge-file
  1547.             pack $win.cntl.icon -side top -pady 2
  1548.             frame $win.cntl.d -borderwidth 2 -relief sunken
  1549.             button $win.cntl.d.dismiss -text " Dismiss " \
  1550.                 -command "destroy $win"
  1551.             pack $win.cntl.d.dismiss -padx 4 -pady 4
  1552.             pack $win.cntl.d -padx 8 -pady 8
  1553.  
  1554.             pack $win.cntl -side left -fill y
  1555.             pack $win.mesg -side top -expand yes -fill both
  1556.  
  1557.             wm title $win "Kosher Dill: File Viewer"
  1558.             bind $win <Key-Return> {
  1559.                 $win.cntl.d.dismiss flash
  1560.                 $win.cntl.d.dismiss invoke
  1561.             }
  1562.             focus $win
  1563.         }
  1564.     }
  1565. }
  1566.  
  1567. # ----------------------------------------------------------------------
  1568. #  USAGE:  kd_examine_dir <viewer> <directory>
  1569. #
  1570. #  Loads the given directory into a particular usage viewer.
  1571. #  If any errors are encountered, they are displayed in an error box
  1572. #  to the user.
  1573. # ----------------------------------------------------------------------
  1574. proc kd_examine_dir {viewer dir} {
  1575.     global KdViewers
  1576.     if {$dir == ""} {
  1577.         set KdViewers($viewer) ""
  1578.         return
  1579.     }
  1580.  
  1581.     if {[file isdirectory $dir]} {
  1582.         set KdViewers($viewer) $dir
  1583.         if {$viewer == "."} {
  1584.             .status.dirEntry delete 0 end
  1585.             .status.dirEntry insert 0 $dir
  1586.             .status.dirEntry icursor end
  1587.  
  1588.             global env
  1589.             if {[info exists env(HOME)]} {
  1590.                 set top $env(HOME)
  1591.             } else {
  1592.                 set top "/"
  1593.             }
  1594.             set path {}
  1595.             set parent [file dirname $dir]
  1596.             while {$parent != "." && $parent != "/"} {
  1597.                 set path [linsert $path 0 $parent]
  1598.                 if {$parent == $top} break
  1599.                 set parent [file dirname $parent]
  1600.             }
  1601.  
  1602.             .status.dirLabel.m delete 0 last
  1603.             foreach parent $path {
  1604.                 .status.dirLabel.m add command -label $parent \
  1605.                     -command "kd_examine_dir $viewer $parent"
  1606.             }
  1607.             .view.canv delete all
  1608.         } else {
  1609.             $viewer.status.dirInfo config -text $dir
  1610.             $viewer.view.canv delete all
  1611.         }
  1612.  
  1613.         #
  1614.         #  Try to query usage info, and catch any error before
  1615.         #  the drawing stage.  If directory is a symbolic link,
  1616.         #  usage may need to be queried
  1617.         #
  1618.         if {[kd_get_usage $dir status] == ""} {
  1619.             if {$status == "error"} {
  1620.                 set mesg "Cannot get usage for:\n$dir"
  1621.                 if {[file type $dir] == "link"} {
  1622.                     append mesg "\n\nThis is a symbolic link to another directory.\nTry \"$dir/.\""
  1623.                 }
  1624.                 kd_message_box warning $mesg
  1625.             }
  1626.  
  1627.         } elseif {[catch "kd_draw_usage $viewer $dir" retn] != 0} {
  1628.             blt_busy release $viewer
  1629.             kd_message_box warning $retn
  1630.         } else {
  1631.             if {$viewer == "."} {
  1632.                 .view.canv yview 0
  1633.             } else {
  1634.                 $viewer.view.canv yview 0
  1635.             }
  1636.         }
  1637.     } else {
  1638.         kd_message_box error "Not a directory: $dir"
  1639.     }
  1640. }
  1641.  
  1642. # ----------------------------------------------------------------------
  1643. #  USAGE:  kd_create_dir_viewer <toplevel>
  1644. #
  1645. #  Creates and configures the widgets representing the directory usage
  1646. #  viewer in the given <toplevel> window.  Adds the given <toplevel>
  1647. #  name to the list of active viewers, so that the display can be
  1648. #  automatically refreshed by each call to kd_view_update.
  1649. # ----------------------------------------------------------------------
  1650. proc kd_create_dir_viewer {win} {
  1651.     global KdViewers
  1652.  
  1653.     #
  1654.     # Make viewing canvas and scrollbar...
  1655.     #
  1656.     frame $win.view -borderwidth 2 -relief sunken
  1657.     canvas $win.view.canv -yscroll "$win.view.sbar set"
  1658.     scrollbar $win.view.sbar -command "$win.view.canv yview"
  1659.     pack $win.view.canv -side left -expand yes -fill both
  1660.     pack $win.view.sbar -side right -fill y
  1661.  
  1662.     bind $win.view.canv <Configure> "kd_view_update $win"
  1663.     bind $win.view.canv <ButtonPress-1> "
  1664.         set seln \[kd_usage_select $win %x %y\]
  1665.     "
  1666.     bind $win.view.canv <Double-ButtonPress-1> "
  1667.         set seln \[kd_usage_select $win %x %y\]
  1668.         if {\$seln != \"\"} {
  1669.             kd_examine_dir $win \$seln
  1670.         }
  1671.     "
  1672.     bind $win.view.canv <ButtonPress-2> {%W scan mark 0 %y}
  1673.     bind $win.view.canv <B2-Motion> {%W scan dragto 0 %y}
  1674.  
  1675.     blt_drag&drop source $win.view.canv config \
  1676.         -packagecmd "kd_package_viewer_file $win $win.view.canv" \
  1677.         -sitecmd kd_site_file
  1678.  
  1679.     blt_drag&drop source $win.view.canv handler file dd_send_file
  1680.     blt_drag&drop source $win.view.canv handler text dd_send_text
  1681.  
  1682.     #
  1683.     # Make status window...
  1684.     #
  1685.     frame $win.status -borderwidth 2
  1686.     label $win.status.dirLabel -text "Directory:"
  1687.     label $win.status.dirInfo -text "" -anchor w
  1688.  
  1689.     blt_drag&drop source $win.status.dirInfo config \
  1690.         -packagecmd "kd_package_viewer_file . $win.status.dirInfo" \
  1691.         -sitecmd kd_site_file
  1692.     blt_drag&drop source $win.status.dirInfo handler file dd_send_file
  1693.     blt_drag&drop source $win.status.dirInfo handler text dd_send_text
  1694.  
  1695.     blt_drag&drop target $win.status.dirInfo handler file "
  1696.         global DragDrop
  1697.         kd_examine_dir $win \$DragDrop(file)
  1698.     "
  1699.  
  1700.     label $win.status.usageLabel -text "Usage:"
  1701.     label $win.status.usageInfo -text "" -anchor w
  1702.  
  1703.     blt_table $win.status \
  1704.         $win.status.dirLabel 0,0 -anchor e \
  1705.         $win.status.dirInfo 0,1 -anchor w -fill x \
  1706.         $win.status.usageLabel 1,0 -anchor e \
  1707.         $win.status.usageInfo 1,1 -anchor w -fill x
  1708.     blt_table column $win.status config 0 \
  1709.         -width [winfo reqwidth $win.status.dirLabel]
  1710.  
  1711.     #
  1712.     # Make drag&drop targets...
  1713.     #
  1714.     frame $win.targets -borderwidth 4
  1715.     label $win.targets.examineTarget -bitmap examine
  1716.     label $win.targets.compressTarget -bitmap compress
  1717.     label $win.targets.trashTarget -bitmap trash
  1718.     button $win.targets.dismiss -text " Dismiss " -command "
  1719.         global KdViewers
  1720.         unset KdViewers($win)
  1721.         destroy $win
  1722.     "
  1723.     blt_drag&drop target $win.targets.examineTarget handler file {
  1724.         global DragDrop
  1725.         kd_examine $DragDrop(file)
  1726.     }
  1727.     blt_drag&drop target $win.targets.compressTarget handler file {
  1728.         global DragDrop
  1729.         kd_compress_append $DragDrop(file)
  1730.         kd_view_update containing $DragDrop(file)
  1731.     }
  1732.     blt_drag&drop target $win.targets.trashTarget handler file {
  1733.         global DragDrop
  1734.         kd_trash_append $DragDrop(file)
  1735.         kd_view_update containing $DragDrop(file)
  1736.     }
  1737.  
  1738.     blt_table $win.targets \
  1739.         $win.targets.examineTarget 0,0 \
  1740.         $win.targets.compressTarget 0,1 \
  1741.         $win.targets.trashTarget 0,2 \
  1742.         $win.targets.dismiss 0,3 -padx 0.1i
  1743.  
  1744.     pack $win.status -side top -fill x -padx 4
  1745.     pack $win.view -expand yes -fill both -padx 4 -pady 4
  1746.     pack $win.targets -side top -fill x
  1747.     set KdViewers($win) ""
  1748. }
  1749.  
  1750. # ----------------------------------------------------------------------
  1751. #  USAGE:  kd_view_update <viewer>
  1752. #          kd_view_update containing <file>
  1753. #
  1754. #  Freshens the drawing in the specified viewer.  If no viewer is
  1755. #  specified, then all viewers are updated.  If the directory name for
  1756. #  the viewer is not null, then the usage chart is redrawn for that
  1757. #  directory.  Usually invoked when a "View" parameter has been changed.
  1758. # ----------------------------------------------------------------------
  1759. proc kd_view_update {args} {
  1760.     global KdView KdViewers
  1761.  
  1762.     if {[lindex $args 0] == "containing"} {
  1763.         if {$KdView(deep-dir-hierarchy) == 0} {
  1764.             set file [lindex $args 1]
  1765.             set args {}
  1766.             foreach v [array names KdViewers] {
  1767.                 if {$KdViewers($v) == [file dirname $file]} {
  1768.                     lappend args $v
  1769.                 }
  1770.             }
  1771.         } else {
  1772.             set file [lindex $args 1]
  1773.             set args {}
  1774.             foreach v [array names KdViewers] {
  1775.                 if {[string match $KdViewers($v)/* $file]} {
  1776.                     lappend args $v
  1777.                 }
  1778.             }
  1779.         }
  1780.     } elseif {$args == ""} {
  1781.         set args [array names KdViewers]
  1782.     }
  1783.  
  1784.     foreach v $args {
  1785.         if {$KdViewers($v) != ""} {
  1786.             #
  1787.             #  Try to query usage info.  If something goes wrong,
  1788.             #  skip to next viewer.
  1789.             #
  1790.             if {[kd_get_usage $KdViewers($v)] == ""} {
  1791.                 continue
  1792.             }
  1793.             if {[catch "kd_draw_usage $v $KdViewers($v)" retn] != 0} {
  1794.                 blt_busy release $v
  1795.                 kd_message_box warning $retn
  1796.             }
  1797.         }
  1798.     }
  1799. }
  1800.  
  1801. # ----------------------------------------------------------------------
  1802. #  USAGE:  kd_message_box <type> <mesg>
  1803. #
  1804. #  Pops up a dialog box with a message in it, and waits for the user
  1805. #  to dismiss it.  The "type" should be one of "error", "warning" or
  1806. #  "info".
  1807. # ----------------------------------------------------------------------
  1808. proc kd_message_box {type mesg} {
  1809.     global KdError
  1810.  
  1811.     .box.mesg config -text $mesg
  1812.     .box.cntl.icon config -bitmap $type
  1813.     kd_map .box
  1814.     tkwait visibility .box
  1815.     focus .box
  1816.     grab .box
  1817.     tkwait variable KdError
  1818.     grab release .box
  1819.  
  1820.     kd_unmap .box
  1821. }
  1822.  
  1823. # ----------------------------------------------------------------------
  1824. #  USAGE:  kd_have_usage <file>
  1825. #
  1826. #  Checks to see if disk usage info exists for the given file or
  1827. #  directory.  Returns non-zero if information currently exists.
  1828. # ----------------------------------------------------------------------
  1829. proc kd_have_usage {file} {
  1830.     global KdKnownFiles
  1831.     return [info exists KdKnownFiles($file)]
  1832. }
  1833.  
  1834. # ----------------------------------------------------------------------
  1835. #  USAGE:  kd_get_usage <file> ?<status>?
  1836. #
  1837. #  Checks to see if disk usage info exists for the given file or
  1838. #  directory.  If it does not, or if the current information is stale,
  1839. #  then disk usage is queried (via the Tcl "file" command or the usual
  1840. #  system "du" command).  Returns a token that can be used to access
  1841. #  usage info.  If the optional <status> is specified, then it is
  1842. #  treated as the name of a variable at the calling scope, and it is
  1843. #  set with a value indicating the status of the query:  ok/error/abort.
  1844. # ----------------------------------------------------------------------
  1845. proc kd_get_usage {file {status ""}} {
  1846.     global KdKnownFiles
  1847.  
  1848.     set file [string trimright $file /]
  1849.     if {![file exists $file]} {
  1850.         set stat error
  1851.         return ""
  1852.     }
  1853.     if {$status != ""} {
  1854.         upvar $status stat
  1855.     }
  1856.     set get_usage 0
  1857.     if {![info exists KdKnownFiles($file)]} {
  1858.         set get_usage 1
  1859.     } elseif {[kd_access $KdKnownFiles($file) mtime] != [file mtime $file]} {
  1860.         set get_usage 1
  1861.     }
  1862.  
  1863.     set stat ok
  1864.     if {$get_usage} {
  1865.         if {[file isdirectory $file]} {
  1866.             kd_invoke_du $file stat
  1867.             if {![info exists KdKnownFiles($file)]} {
  1868.                 return ""
  1869.             }
  1870.         } else {
  1871.             kd_save_usage $file [expr ([file size $file]+1023)/1024]
  1872.         }
  1873.     }
  1874.     return $KdKnownFiles($file)
  1875. }
  1876.  
  1877. # ----------------------------------------------------------------------
  1878. #  USAGE:  kd_invoke_du <file> ?<status>?
  1879. #
  1880. #  Invokes the system "du" to query for disk usage, and puts up a
  1881. #  dialog box allowing the user to abort the query.  If the optional
  1882. #  <status> is specified, then it is treated as the name of a variable
  1883. #  at the calling scope, and it is set with a value indicating the
  1884. #  status of the query:  ok/error/abort.
  1885. # ----------------------------------------------------------------------
  1886. proc kd_invoke_du {file {status ""}} {
  1887.     global KdViewers
  1888.  
  1889.     if {$status != ""} {
  1890.         upvar $status stat
  1891.     }
  1892.  
  1893.     foreach v [array names KdViewers] {
  1894.         blt_busy hold $v
  1895.     }
  1896.     update
  1897.  
  1898.     kd_show_status "Querying usage for:\n$file"
  1899.  
  1900.     global KdResult
  1901.     blt_bgexec -errorvar KdErrors KdResult du $file
  1902.     tkwait variable KdResult
  1903.  
  1904.     foreach v [array names KdViewers] {
  1905.         blt_busy release $v
  1906.     }
  1907.     kd_hide_status
  1908.  
  1909.     if {$KdResult == ""} {
  1910.         set stat error
  1911.     } elseif {$KdResult == "abort"} {
  1912.         set stat abort
  1913.     } else {
  1914.         set stat ok
  1915.     }
  1916. }
  1917.  
  1918. # ----------------------------------------------------------------------
  1919. #  USAGE:  kd_show_status
  1920. #
  1921. #  Invoked to display animation sequence during "du" queries and
  1922. #  draw operations.  Allows the user to access an "abort" button to
  1923. #  cancel work in progress.  The first such call will reset KdResult
  1924. #  to "", indicating the start of an operation.  Each call should have
  1925. #  a corresponding "kd_hide_status" call to make this box go away.
  1926. # ----------------------------------------------------------------------
  1927. proc kd_show_status {mesg} {
  1928.     global KdResult KdStatusLevel
  1929.  
  1930.     if {$KdStatusLevel <= 0} {
  1931.         set KdStatusLevel 0
  1932.         set KdResult ""
  1933.     }
  1934.     incr KdStatusLevel
  1935.     .abort.mesg config -text $mesg
  1936.  
  1937.     if {![winfo ismapped .abort]} {
  1938.         kd_map .abort
  1939.         kd_animate_status
  1940.     }
  1941. }
  1942.  
  1943. # ----------------------------------------------------------------------
  1944. #  USAGE:  kd_hide_status
  1945. #
  1946. #  Invoked to make the status window go away when no longer needed.
  1947. #  Parts of the program mark a "busy" period by calling kd_show_status
  1948. #  and kd_hide_status.  Calls can be nested, so that the status window
  1949. #  will remain visible as long as it is needed.
  1950. # ----------------------------------------------------------------------
  1951. proc kd_hide_status {} {
  1952.     global KdStatusLevel
  1953.  
  1954.     if {[incr KdStatusLevel -1] <= 0} {
  1955.         set KdStatusLevel 0
  1956.         after 500 {
  1957.             global KdStatusLevel
  1958.             if {$KdStatusLevel <= 0} {
  1959.                 set KdStatusLevel -1
  1960.                 kd_unmap .abort
  1961.             }
  1962.         }
  1963.     }
  1964. }
  1965.  
  1966. # ----------------------------------------------------------------------
  1967. #  USAGE:  kd_animate_status
  1968. #
  1969. #  Invoked to display animation sequence in status window.
  1970. # ----------------------------------------------------------------------
  1971. proc kd_animate_status {} {
  1972.     global KdAnimate KdStatusLevel
  1973.  
  1974.     if {$KdStatusLevel >= 0} {
  1975.         if {[winfo ismapped .abort]} {
  1976.             set next [lindex $KdAnimate 0]
  1977.             .abort.animate config -bitmap $next
  1978.             set KdAnimate [lreplace $KdAnimate 0 0]
  1979.             lappend KdAnimate $next
  1980.             update
  1981.         }
  1982.         after 100 kd_animate_status
  1983.     }
  1984. }
  1985.  
  1986. # ----------------------------------------------------------------------
  1987. #  USAGE:  kd_status_abort
  1988. #
  1989. #  Invoked when the user presses the "Abort" button on the status
  1990. #  window to abort some long operation.  Sets KdResult to "abort" to
  1991. #  terminate any "blt_bgexec" call, and to indicate that the operation
  1992. #  was aborted.
  1993. # ----------------------------------------------------------------------
  1994. proc kd_status_abort {} {
  1995.     global KdResult
  1996.     set KdResult "abort"
  1997.     kd_unmap .abort
  1998. }
  1999.  
  2000. # ----------------------------------------------------------------------
  2001. #  USAGE:  kd_access <token> <field>
  2002. #
  2003. #  Used to access usage information via the token returned by
  2004. #  kd_get_usage.  Queries for a particular <field> value of information
  2005. #  associated with the given usage <token>.  Returns the desired string.
  2006. # ----------------------------------------------------------------------
  2007. proc kd_access {token field} {
  2008.     if {$token == ""} {
  2009.         return ""
  2010.     }
  2011.  
  2012.     global $token
  2013.     if {![info exists $token]} {
  2014.         error "unknown token: $token"
  2015.     } elseif {![info exists [set token]($field)]} {
  2016.         error "improper usage field: $field"
  2017.     } else {
  2018.         return [set [set token]($field)]
  2019.     }
  2020. }
  2021.  
  2022. # ----------------------------------------------------------------------
  2023. #  USAGE:  kd_modify <token> <field> <value>
  2024. #
  2025. #  Used to modify usage information via the token returned by
  2026. #  kd_get_usage.  Modifies a particular <field> value of information
  2027. #  associated with the given usage <token>.  Returns the value string.
  2028. # ----------------------------------------------------------------------
  2029. proc kd_modify {token field val} {
  2030.     if {$token == ""} {
  2031.         return ""
  2032.     }
  2033.  
  2034.     global $token
  2035.     if {![info exists $token]} {
  2036.         error "unknown token: $token"
  2037.     } elseif {![info exists [set token]($field)]} {
  2038.         error "improper usage field: $field"
  2039.     } else {
  2040.         return [set [set token]($field) $val]
  2041.     }
  2042. }
  2043.  
  2044. # ----------------------------------------------------------------------
  2045. #  USAGE:  kd_file_link <file>
  2046. #
  2047. #  Adds a file back into any usage information that may exist for
  2048. #  parent directories.  Invoked when a file is removed from the trash
  2049. #  to put it back into the cached usage data.
  2050. # ----------------------------------------------------------------------
  2051. proc kd_file_link {file} {
  2052.     set duinfo [kd_get_usage $file]
  2053.     set fUsage [kd_access $duinfo usage]
  2054.  
  2055.     set dir [file dirname $file]
  2056.     set duinfo [kd_get_usage $dir]
  2057.     set dFiles [kd_access $duinfo files]
  2058.     set i [lsearch $dFiles $file]
  2059.     if {$i < 0} {
  2060.         lappend dFiles $file
  2061.         kd_modify $duinfo files $dFiles
  2062.  
  2063.         while {[kd_have_usage $dir]} {
  2064.             set duinfo [kd_get_usage $dir]
  2065.             set dUsage [kd_access $duinfo usage]
  2066.             kd_modify $duinfo usage [expr $dUsage+$fUsage]
  2067.             if {$dir == "."} {
  2068.                 break
  2069.             } else {
  2070.                 set dir [file dirname $dir]
  2071.             }
  2072.         }
  2073.     }
  2074. }
  2075.  
  2076. # ----------------------------------------------------------------------
  2077. #  USAGE:  kd_file_unlink <file>
  2078. #
  2079. #  Removes a file from any usage information that may exist for
  2080. #  parent directories.  Invoked when a file is removed from the trash
  2081. #  to put it back into the cached usage data.
  2082. # ----------------------------------------------------------------------
  2083. proc kd_file_unlink {file} {
  2084.     set duinfo [kd_get_usage $file]
  2085.     set fUsage [kd_access $duinfo usage]
  2086.  
  2087.     global KdTrash
  2088.     set i [lsearch $KdTrash $file]
  2089.     if {$i >= 0} {
  2090.         kd_trash_refile $file
  2091.     }
  2092.  
  2093.     global KdCompress
  2094.     set i [lsearch $KdCompress $file]
  2095.     if {$i >= 0} {
  2096.         kd_compress_refile $file
  2097.     }
  2098.  
  2099.     set dir [file dirname $file]
  2100.     set duinfo [kd_get_usage $dir]
  2101.     set dFiles [kd_access $duinfo files]
  2102.     set i [lsearch $dFiles $file]
  2103.     if {$i >= 0} {
  2104.         set dFiles [lreplace $dFiles $i $i]
  2105.         kd_modify $duinfo files $dFiles
  2106.  
  2107.         while {[kd_have_usage $dir]} {
  2108.             set duinfo [kd_get_usage $dir]
  2109.             set dUsage [kd_access $duinfo usage]
  2110.             kd_modify $duinfo usage [expr $dUsage-$fUsage]
  2111.             if {$dir == "."} {
  2112.                 break
  2113.             } else {
  2114.                 set dir [file dirname $dir]
  2115.             }
  2116.         }
  2117.     }
  2118. }
  2119.  
  2120. # ----------------------------------------------------------------------
  2121. #  USAGE:  kd_process_du_info <name1> <name2> <op>
  2122. #
  2123. #  Invoked by a trace on KdResult whenever "du" information is returned
  2124. #  by a blt_bgexec of "du".  Stores each line of usage information for
  2125. #  later use.
  2126. # ----------------------------------------------------------------------
  2127. proc kd_process_du_info {name1 name2 op} {
  2128.     global $name1
  2129.     foreach line [split [set $name1] \n] {
  2130.         if {[llength $line] == 2} {
  2131.             kd_save_usage [lindex $line 1] [lindex $line 0]
  2132.         }
  2133.         if {[set $name1] == "abort"} {
  2134.             break
  2135.         } else {
  2136.             update
  2137.         }
  2138.     }
  2139. }
  2140.  
  2141. # ----------------------------------------------------------------------
  2142. #  USAGE:  kd_save_usage <file> <usage>
  2143. #
  2144. #  Registers the given file in the list of known files, and saves
  2145. #  the usage for this directory.  Invoked during the processing of
  2146. #  "du" output to save each line of information.  Returns the name of
  2147. #  the new usage record.
  2148. # ----------------------------------------------------------------------
  2149. proc kd_save_usage {dir usage} {
  2150.     global KdKnownFiles KdKnownFileCnt KdCurrentTime
  2151.  
  2152.     if {![file exists $dir]} {
  2153.         error "directory does not exist: $dir"
  2154.     }
  2155.     if {![info exists KdKnownFiles($dir)]} {
  2156.         set dname KdInfo[incr KdKnownFileCnt]
  2157.         set KdKnownFiles($dir) $dname
  2158.     }
  2159.     set dname $KdKnownFiles($dir)
  2160.     global $dname
  2161.  
  2162.     set mtime [file mtime $dir]
  2163.     set [set dname](name) $dir
  2164.     set [set dname](files) [glob -nocomplain $dir/*]
  2165.     set [set dname](mtime) $mtime
  2166.     set [set dname](age)   [kd_compute_age [expr $KdCurrentTime-$mtime]]
  2167.     set [set dname](usage) $usage
  2168.  
  2169.     return $dname
  2170. }
  2171.  
  2172. # ----------------------------------------------------------------------
  2173. #  USAGE:  kd_draw_usage <viewer> <directory>
  2174. #
  2175. #  Draws a graphical display of usage for the given directory.
  2176. # ----------------------------------------------------------------------
  2177. proc kd_draw_usage {viewer dir} {
  2178.     global KdView KdResult
  2179.  
  2180.     set duinfo [kd_get_usage $dir]
  2181.     if {$duinfo == ""} {
  2182.         kd_message_box error "Cannot get usage info: $file"
  2183.         return
  2184.     }
  2185.     blt_busy hold $viewer; update
  2186.     kd_show_status "Drawing file list..."
  2187.  
  2188.     if {$viewer == "."} {
  2189.         set v ""
  2190.     } else {
  2191.         set v $viewer
  2192.     }
  2193.     set canv $v.view.canv
  2194.     set bar [option get . barColor Tk]
  2195.  
  2196.     set margin 5
  2197.     set canvBg [lindex [$canv config -background] 4]
  2198.     set canvWidth [winfo width $canv]
  2199.  
  2200.     set duinfo [kd_get_usage $dir]
  2201.     set filelist [kd_access $duinfo files]
  2202.  
  2203.     if {$KdView(deep-dir-hierarchy)} {
  2204.         set flist $filelist
  2205.         set filelist {}
  2206.         while {$flist != ""} {
  2207.             set file [lindex $flist 0]
  2208.             set flist [lreplace $flist 0 0]
  2209.  
  2210.             if {[file isdirectory $file]} {
  2211.                 set duinfo [kd_get_usage $file]
  2212.                 foreach file [kd_access $duinfo files] {
  2213.                     lappend flist $file
  2214.                 }
  2215.             } else {
  2216.                 lappend filelist $file
  2217.             }
  2218.  
  2219.             if {$KdResult == "abort"} {
  2220.                 break
  2221.             } else {
  2222.                 update
  2223.             }
  2224.         }
  2225.     }
  2226.  
  2227.     set totalDirUsage 0
  2228.     set miscUsage 0
  2229.     set maxUsage 0
  2230.     set maxIconWidth 0
  2231.     set drawlist {}
  2232.     foreach file $filelist {
  2233.         if {![file exists $file]} {
  2234.             # symbolic link to non-existant file -- do nothing
  2235.         } elseif {[file isdirectory $file]} {
  2236.             set duinfo [kd_get_usage $file]
  2237.             if {$duinfo != ""} {
  2238.                 set dUsage [kd_access $duinfo usage]
  2239.                 set dMtime [kd_access $duinfo mtime]
  2240.                 set dAge   [kd_access $duinfo age]
  2241.  
  2242.                 set totalDirUsage [expr $totalDirUsage+$dUsage]
  2243.                 if {$dUsage > $maxUsage} {
  2244.                     set maxUsage $dUsage
  2245.                 }
  2246.                 set iw [blt_bitmap width $dAge-folder]
  2247.                 if {$iw > $maxIconWidth} {
  2248.                     set maxIconWidth $iw
  2249.                 }
  2250.                 lappend drawlist [list $file $dUsage $dMtime $dAge-folder $file]
  2251.             }
  2252.         } else {
  2253.             set duinfo [kd_get_usage $file]
  2254.             if {$duinfo != ""} {
  2255.                 set dUsage [kd_access $duinfo usage]
  2256.                 set dMtime [kd_access $duinfo mtime]
  2257.                 set dAge   [kd_access $duinfo age]
  2258.  
  2259.                 if {$KdView(only-significant-files)} {
  2260.                     set show [expr $dUsage >= $KdView(significant-file-size)]
  2261.                 } else {
  2262.                     set show 1
  2263.                 }
  2264.                 if {$show} {
  2265.                     if {$dUsage > $maxUsage} {
  2266.                         set maxUsage $dUsage
  2267.                     }
  2268.                     set iw [blt_bitmap width $dAge-file]
  2269.                     if {$iw > $maxIconWidth} {
  2270.                         set maxIconWidth $iw
  2271.                     }
  2272.                     lappend drawlist [list $file $dUsage $dMtime $dAge-file $file]
  2273.                 } else {
  2274.                     set miscUsage [expr $miscUsage+$dUsage]
  2275.                 }
  2276.             }
  2277.         }
  2278.  
  2279.         if {$KdResult == "abort"} {
  2280.             break
  2281.         } else {
  2282.             update
  2283.         }
  2284.     }
  2285.     set duinfo [kd_get_usage $dir]
  2286.     set dUsage [kd_access $duinfo usage]
  2287.     set dMtime [kd_access $duinfo mtime]
  2288.     set fileUsage [expr $dUsage-$totalDirUsage]
  2289.     $v.status.usageInfo config \
  2290.         -text [format "%dK (%dK files, %dK directories)" \
  2291.             $dUsage $fileUsage $totalDirUsage]
  2292.  
  2293.     if {$KdView(only-significant-files)} {
  2294.         if {$miscUsage > $maxUsage} {
  2295.             set maxUsage $miscUsage
  2296.         }
  2297.         set iw [blt_bitmap width misc-files]
  2298.         if {$iw > $maxIconWidth} {
  2299.             set maxIconWidth $iw
  2300.         }
  2301.         lappend drawlist [list "Misc files" $miscUsage $dMtime misc-files <misc>]
  2302.     }
  2303.  
  2304.     set drawlist [lsort -command kd_drawlist_cmp $drawlist]
  2305.  
  2306.     set id [$canv create text 0 0 -anchor nw -text "999999K"]
  2307.     set bbox [$canv bbox $id]
  2308.     set maxSizeWidth [expr [lindex $bbox 2]-[lindex $bbox 0]]
  2309.  
  2310.     set maxIconWidth [expr $maxIconWidth+$margin]
  2311.     set usageWidth [expr $canvWidth-$maxIconWidth-$maxSizeWidth-2*$margin]
  2312.     set x0 [expr $maxIconWidth+$margin]
  2313.     if {$maxUsage == 0} { set maxUsage 1 }
  2314.  
  2315.     $canv delete all
  2316.     set y $margin
  2317.     foreach elem $drawlist {
  2318.         set dName [lindex $elem 0]
  2319.         set dUsage [lindex $elem 1]
  2320.         set bitmap [lindex $elem 3]
  2321.         set dTag [lindex $elem 4]
  2322.         $canv create bitmap $maxIconWidth $y -anchor ne -bitmap $bitmap
  2323.         set id [$canv create text $x0 $y -anchor nw -text $dName]
  2324.         set bbox [$canv bbox $id]
  2325.         set htText [expr [lindex $bbox 3]-[lindex $bbox 1]]
  2326.         set y0 [expr $y+$htText]
  2327.         set y1 [expr $y+[blt_bitmap height $bitmap]]
  2328.         if {$y0 > $y1} {set y1 [expr $y0+$margin]}
  2329.         $canv create rect $x0 $y0 \
  2330.             [expr $x0+$dUsage*$usageWidth/$maxUsage] $y1 \
  2331.             -stipple gray50 -fill $bar
  2332.         $canv create text [expr $canvWidth-$margin] $y1 -anchor se \
  2333.             -text "[set dUsage]K"
  2334.  
  2335.         set id [$canv create rect [expr $margin-1] [expr $y-1] \
  2336.             [expr $canvWidth-$margin] [expr $y1+$margin-1] \
  2337.             -fill $canvBg -outline $canvBg -tags "ELEMS ELEM-$dTag"]
  2338.         $canv lower $id
  2339.  
  2340.         set y [expr $y1+$margin]
  2341.  
  2342.         if {$KdResult == "abort"} {
  2343.             break
  2344.         } else {
  2345.             update
  2346.         }
  2347.     }
  2348.     set bbox [$canv bbox all]
  2349.     if {$bbox != ""} {
  2350.         set x0 [lindex $bbox 0]
  2351.         set y0 [expr [lindex $bbox 1]-$margin]
  2352.         set x1 [lindex $bbox 2]
  2353.         set y1 [expr [lindex $bbox 3]+$margin]
  2354.         $canv config -scrollregion [list $x0 $y0 $x1 $y1]
  2355.     }
  2356.  
  2357.     if {$KdResult == "abort"} {
  2358.         $canv delete all
  2359.     }
  2360.     blt_busy release $viewer
  2361.     kd_hide_status
  2362. }
  2363.  
  2364. # ----------------------------------------------------------------------
  2365. #  USAGE:  kd_drawlist_cmp <entry1> <entry2>
  2366. #
  2367. #  Compares two entries in a drawlist list composed in kd_draw_usage,
  2368. #  according to the drawing mode in KdView().
  2369. #
  2370. #  RETURNS:  -1 => entry1 < entry2
  2371. #             0 => entry1 == entry2
  2372. #            +1 => entry2 > entry2
  2373. # ----------------------------------------------------------------------
  2374. proc kd_drawlist_cmp {e1 e2} {
  2375.     global KdView
  2376.  
  2377.     switch $KdView(sort) {
  2378.         byName {
  2379.             return [string compare [lindex $e1 0] [lindex $e2 0]]
  2380.         }
  2381.         bySize {
  2382.             set s1 [lindex $e1 1]
  2383.             set s2 [lindex $e2 1]
  2384.             if {$s1 < $s2} {
  2385.                 return 1
  2386.             } elseif {$s1 > $s2} {
  2387.                 return -1
  2388.             }
  2389.             return 0
  2390.         }
  2391.         byTime {
  2392.             set t1 [lindex $e1 2]
  2393.             set t2 [lindex $e2 2]
  2394.             if {$t1 < $t2} {
  2395.                 return -1
  2396.             } elseif {$t1 > $t2} {
  2397.                 return 1
  2398.             }
  2399.             return 0
  2400.         }
  2401.         default {
  2402.             error "bad view mode: $KdView(sort)"
  2403.         }
  2404.     }
  2405. }
  2406.  
  2407. # ----------------------------------------------------------------------
  2408. #  USAGE:  kd_package_viewer_file <viewer> <win> <token>
  2409. #
  2410. #  Packs the token for drag&drop operations on the given usage viewer.
  2411. #  Queries the current drag&drop location to figure out what file
  2412. #  was selected, and then packs the token window with the name of
  2413. #  the file.
  2414. # ----------------------------------------------------------------------
  2415. proc kd_package_viewer_file {viewer win token} {
  2416.     if {$viewer == "."} {
  2417.         set v ""
  2418.     } else {
  2419.         set v $viewer
  2420.     }
  2421.  
  2422.     if {[winfo children $token] == ""} {
  2423.         label $token.icon
  2424.         label $token.name
  2425.         pack $token.icon -side left -fill both
  2426.         pack $token.name -side right -fill both
  2427.     }
  2428.  
  2429.     switch [winfo class $win] {
  2430.         Canvas {
  2431.             set xy [blt_drag&drop location]
  2432.             set x [expr [lindex $xy 0]-[winfo rootx $v.view.canv]]
  2433.             set y [expr [lindex $xy 1]-[winfo rooty $v.view.canv]]
  2434.  
  2435.             set file [kd_usage_select $viewer $x $y]
  2436.             if {$file == ""} {
  2437.                 error "no file selected"
  2438.             }
  2439.         }
  2440.         Label {
  2441.             set file [lindex [$win config -text] 4]
  2442.         }
  2443.         Entry {
  2444.             set file [$win get]
  2445.         }
  2446.     }
  2447.     if {$file == "<misc>"} {
  2448.         $token.icon config -bitmap misc-files
  2449.         $token.name config -text "Misc files"
  2450.     } else {
  2451.         set duinfo [kd_get_usage $file]
  2452.         if {$duinfo == ""} {
  2453.             $token.icon config -bitmap unknown
  2454.             $token.name config -text [file tail $file]
  2455.         } else {
  2456.             set dAge   [kd_access $duinfo age]
  2457.             if {[file isdirectory $file]} {
  2458.                 $token.icon config -bitmap $dAge-folder
  2459.             } else {
  2460.                 $token.icon config -bitmap $dAge-file
  2461.             }
  2462.             $token.name config -text [file tail $file]
  2463.         }
  2464.     }
  2465.     return $file
  2466. }
  2467.  
  2468. # ----------------------------------------------------------------------
  2469. #  USAGE:  kd_package_list_file <listbox> <token>
  2470. #
  2471. #  Packs the token for drag&drop operations on the some file list.
  2472. #  Queries the current drag&drop location to figure out what file
  2473. #  was selected, and then packs the token window with the name of
  2474. #  the file.
  2475. # ----------------------------------------------------------------------
  2476. proc kd_package_list_file {lbox token} {
  2477.     if {[winfo children $token] == ""} {
  2478.         label $token.icon
  2479.         label $token.name
  2480.         pack $token.icon -side left -fill both
  2481.         pack $token.name -side right -fill both
  2482.     }
  2483.     set xy [blt_drag&drop location]
  2484.     set y  [expr [lindex $xy 1]-[winfo rooty $lbox]]
  2485.  
  2486.     set file [$lbox get [$lbox nearest $y]]
  2487.     if {$file == ""} {
  2488.         error "no file selected"
  2489.     }
  2490.  
  2491.     set duinfo [kd_get_usage $file]
  2492.     set dAge   [kd_access $duinfo age]
  2493.     if {[file isdirectory $file]} {
  2494.         $token.icon config -bitmap $dAge-folder
  2495.     } else {
  2496.         $token.icon config -bitmap $dAge-file
  2497.     }
  2498.     $token.name config -text [file tail $file]
  2499.  
  2500.     return $file
  2501. }
  2502.  
  2503. # ----------------------------------------------------------------------
  2504. #  USAGE:  kd_site_file <over-target> <token>
  2505. #
  2506. #  Invoked whenever the drag&drop token changes its "site" status.
  2507. #  Updates the appearance of the token window to indicate whether
  2508. #  or not the token is over a valid drag&drop site.
  2509. # ----------------------------------------------------------------------
  2510. proc kd_site_file {overtarget token} {
  2511.     if {$overtarget} {
  2512.         set bg [option get $token tokenActiveBackground Tk]
  2513.         set fg [option get $token tokenActiveForeground Tk]
  2514.         $token.icon config -bg $bg -fg $fg
  2515.     } else {
  2516.         set bg [option get $token tokenBackground Tk]
  2517.         set fg [option get $token tokenForeground Tk]
  2518.         $token.icon config -bg $bg -fg $fg
  2519.     }
  2520. }
  2521.  
  2522. # ----------------------------------------------------------------------
  2523. #  USAGE:  kd_usage_select <viewer> <x> <y>
  2524. #
  2525. #  Returns the name of the element under the given (x,y) coordinate
  2526. #  of the viewer canvas.  Used during select or drag&drop operations on
  2527. #  the canvas to figure out what was selected.
  2528. # ----------------------------------------------------------------------
  2529. proc kd_usage_select {viewer x y} {
  2530.     if {$viewer == "."} {
  2531.         set v ""
  2532.     } else {
  2533.         set v $viewer
  2534.     }
  2535.     set inc [lindex [$v.view.canv config -scrollincrement] 4]
  2536.     set top [lindex [$v.view.sbar get] 2]
  2537.     set y [expr $y+$top*$inc]
  2538.  
  2539.     foreach item [$v.view.canv find overlapping $x $y $x $y] {
  2540.         foreach tag [$v.view.canv gettags $item] {
  2541.             if {[regexp {ELEM-(.*)} $tag match elem]} {
  2542.                 set bg [lindex [$v.view.canv config -background] 4]
  2543.                 $v.view.canv itemconfig ELEMS -outline $bg
  2544.                 catch "$v.view.canv itemconfig ELEM-$elem -outline black"
  2545.                 update
  2546.                 return $elem
  2547.             }
  2548.         }
  2549.     }
  2550.     return ""
  2551. }
  2552.  
  2553. # ----------------------------------------------------------------------
  2554. #  USAGE:  kd_trash_append
  2555. #
  2556. #  Adds a new file to the list of files in the "trash" collection.
  2557. #  If the "trash" window is unmapped, this causes it to be visible.
  2558. # ----------------------------------------------------------------------
  2559. proc kd_trash_append {file} {
  2560.     global KdTrash
  2561.  
  2562.     if {![winfo ismapped .trash]} {
  2563.         .trash.file.list delete 0 end
  2564.         kd_map .trash
  2565.         focus .trash
  2566.     }
  2567.     if {[lsearch $KdTrash $file] < 0} {
  2568.         kd_file_unlink $file
  2569.  
  2570.         lappend KdTrash $file
  2571.         .trash.file.list insert end $file
  2572.  
  2573.         set total 0
  2574.         foreach f $KdTrash {
  2575.             set duinfo [kd_get_usage $f]
  2576.             set dUsage [kd_access $duinfo usage]
  2577.             set total [expr $total+$dUsage]
  2578.         }
  2579.         .trash.total config -text "Total: [set total]K"
  2580.     }
  2581. }
  2582.  
  2583. # ----------------------------------------------------------------------
  2584. #  USAGE:  kd_trash_perform
  2585. #
  2586. #  Causes all of the files in the current "trash" collection to be
  2587. #  deleted.  If the operation was successful, the "trash" window is
  2588. #  hidden until needed again.
  2589. # ----------------------------------------------------------------------
  2590. proc kd_trash_perform {} {
  2591.     global KdTrash KdResult
  2592.  
  2593.     blt_busy hold .trash; update
  2594.     kd_show_status "Deleting files..."
  2595.  
  2596.     set errors {}
  2597.     while {$KdTrash != ""} {
  2598.         set file [lindex $KdTrash 0]
  2599.         set KdTrash [lreplace $KdTrash 0 0]
  2600.  
  2601.         if {![file owned $file]} {
  2602.             lappend errors $file
  2603.         }
  2604.         blt_bgexec -errorvar KdErrors KdResult rm -rf $file
  2605.         tkwait variable KdResult
  2606.  
  2607.         if {$KdResult == "abort"} {
  2608.             break
  2609.         } else {
  2610.             update
  2611.         }
  2612.     }
  2613.     blt_busy release .trash
  2614.     kd_hide_status
  2615.  
  2616.     if {$KdResult == "abort"} {
  2617.         set mesg "\nDelete aborted.\n\nThe following files were not removed:\n"
  2618.         foreach file $KdTrash {
  2619.             append mesg "$file\n"
  2620.         }
  2621.         kd_message_box warning $mesg
  2622.     }
  2623.  
  2624.     if {[llength $errors] == 0 && [llength $KdTrash] == 0} {
  2625.         kd_unmap .trash
  2626.     } else {
  2627.         if {[llength $errors] > 0} {
  2628.             set mesg "\nCould not remove files:\n"
  2629.             foreach file $errors {
  2630.                 append mesg "$file\n"
  2631.             }
  2632.             kd_message_box error $mesg
  2633.         }
  2634.         if {[llength $KdTrash] > 0} {
  2635.             eval lappend errors $KdTrash
  2636.         }
  2637.  
  2638.         set KdTrash {}
  2639.         .trash.file.list delete 0 end
  2640.         foreach file $errors {
  2641.             kd_trash_append $file
  2642.         }
  2643.     }
  2644. }
  2645.  
  2646. # ----------------------------------------------------------------------
  2647. #  USAGE:  kd_trash_cancel
  2648. #
  2649. #  Aborts the operation of removing files, clearing the current
  2650. #  trash collection and hiding the trash window.
  2651. # ----------------------------------------------------------------------
  2652. proc kd_trash_cancel {} {
  2653.     global KdTrash
  2654.  
  2655.     blt_busy hold .trash; update
  2656.     foreach file $KdTrash {
  2657.         kd_trash_refile $file
  2658.     }
  2659.     kd_view_update
  2660.  
  2661.     blt_busy release .trash
  2662.     kd_unmap .trash
  2663. }
  2664.  
  2665. # ----------------------------------------------------------------------
  2666. #  USAGE:  kd_trash_refile
  2667. #
  2668. #  Removes a particular file from the trash, putting it back into
  2669. #  the usage info for its associated directory.
  2670. # ----------------------------------------------------------------------
  2671. proc kd_trash_refile {file} {
  2672.     global KdTrash
  2673.  
  2674.     set i [lsearch $KdTrash $file]
  2675.     if {$i >= 0} {
  2676.         .trash.file.list delete $i
  2677.         set KdTrash [lreplace $KdTrash $i $i]
  2678.         kd_file_link $file
  2679.  
  2680.         set total 0
  2681.         foreach f $KdTrash {
  2682.             set duinfo [kd_get_usage $f]
  2683.             set dUsage [kd_access $duinfo usage]
  2684.             set total [expr $total+$dUsage]
  2685.         }
  2686.         .trash.total config -text "Total: [set total]K"
  2687.     }
  2688. }
  2689.  
  2690. # ----------------------------------------------------------------------
  2691. #  USAGE:  kd_compress_append
  2692. #
  2693. #  Adds a new file to the list of files in the "compress" collection.
  2694. #  If the "compress" window is unmapped, this causes it to be visible.
  2695. # ----------------------------------------------------------------------
  2696. proc kd_compress_append {file} {
  2697.     global KdCompress
  2698.  
  2699.     if {![winfo ismapped .compress]} {
  2700.         kd_map .compress
  2701.         focus .compress
  2702.     }
  2703.     if {[lsearch $KdCompress $file] < 0} {
  2704.         kd_file_unlink $file
  2705.  
  2706.         lappend KdCompress $file
  2707.         .compress.file.list insert end $file
  2708.  
  2709.         set total 0
  2710.         foreach f $KdCompress {
  2711.             set duinfo [kd_get_usage $f]
  2712.             set dUsage [kd_access $duinfo usage]
  2713.             set total [expr $total+$dUsage]
  2714.         }
  2715.         .compress.total config -text "Total: [set total]K"
  2716.     }
  2717. }
  2718.  
  2719. # ----------------------------------------------------------------------
  2720. #  USAGE:  kd_compress_perform
  2721. #
  2722. #  Causes all of the files in the current "compress" collection to be
  2723. #  deleted.  If the operation was successful, the "compress" window is
  2724. #  hidden until needed again.
  2725. # ----------------------------------------------------------------------
  2726. proc kd_compress_perform {} {
  2727.     global KdCompress KdResult
  2728.  
  2729.     blt_busy hold .compress; update
  2730.     kd_show_status "Compressing files..."
  2731.  
  2732.     set errors {}
  2733.     while {$KdCompress != ""} {
  2734.         set file [lindex $KdCompress 0]
  2735.         set KdCompress [lreplace $KdCompress 0 0]
  2736.  
  2737.         set dir [file dirname $file]
  2738.         if {![file owned $file] || ![file writable $dir]} {
  2739.             lappend errors $file
  2740.         } elseif {[file isdirectory $file]} {
  2741.             set tarfile $file.tar
  2742.             if {[file exists $tarfile] || [file exists $tarfile.gz]} {
  2743.                 lappend errors $file
  2744.             } else {
  2745.                 # CREATE TAR FILE
  2746.                 set cwd [cd]
  2747.                 cd [file dirname $file]
  2748.                 blt_bgexec -errorvar KdErrors KdResult \
  2749.                     tar cf $tarfile [file tail $file]
  2750.                 cd $cwd
  2751.                 set KdErrors {}
  2752.                 tkwait variable KdResult
  2753.  
  2754.                 if {$KdResult == "abort"} {
  2755.                     lappend KdCompress $file
  2756.                 } elseif {![file exists $tarfile]} {
  2757.                     set KdResult error
  2758.                     lappend errors $file
  2759.                 } else {
  2760.  
  2761.                     # COMPRESS TAR FILE
  2762.                     blt_bgexec -errorvar KdErrors KdResult \
  2763.                         gzip -f $tarfile
  2764.                     tkwait variable KdResult
  2765.  
  2766.                     if {$KdResult == "abort"} {
  2767.                         lappend KdCompress $file
  2768.                     } elseif {![file exists $tarfile.gz]} {
  2769.                         set KdResult error
  2770.                         lappend errors $file
  2771.                     } else {
  2772.  
  2773.                         # REMOVE ORIGINAL DIRECTORY
  2774.                         blt_bgexec -errorvar KdErrors KdResult \
  2775.                             rm -rf $file
  2776.                         tkwait variable KdResult
  2777.                     }
  2778.                 }
  2779.             }
  2780.             if {$KdResult == "abort" || $KdResult == "error"} {
  2781.                 blt_bgexec -errorvar KdErrors ignore \
  2782.                     rm -f $tarfile $tarfile.gz
  2783.                 set ignore {}
  2784.                 tkwait variable ignore
  2785.             }
  2786.         } else {
  2787.             if {[file exists $file.gz]} {
  2788.                 lappend errors $file
  2789.             } else {
  2790.  
  2791.                 # COMPRESS PLAIN FILE
  2792.                 blt_bgexec -errorvar KdErrors KdResult \
  2793.                     gzip -f $file
  2794.                 set KdErrors {}
  2795.                 tkwait variable KdResult
  2796.  
  2797.                 if {$KdResult == "abort"} {
  2798.                     lappend KdCompress $file
  2799.                 } elseif {![file exists $file.gz]} {
  2800.                     lappend errors $file
  2801.                 }
  2802.             }
  2803.         }
  2804.  
  2805.         if {$KdResult == "abort"} {
  2806.             break
  2807.         } else {
  2808.             update
  2809.         }
  2810.     }
  2811.     blt_busy release .compress
  2812.     kd_hide_status
  2813.  
  2814.     if {$KdResult == "abort"} {
  2815.         set mesg "\nCompress aborted.\n\nThe following files were not compressed:\n"
  2816.         foreach file $KdCompress {
  2817.             append mesg "$file\n"
  2818.         }
  2819.         kd_message_box warning $mesg
  2820.     }
  2821.  
  2822.     if {[llength $errors] == 0 && [llength $KdCompress] == 0} {
  2823.         kd_unmap .compress
  2824.     } else {
  2825.         if {[llength $errors] > 0} {
  2826.             set mesg "\nCould not compress files:\n"
  2827.             foreach file $errors {
  2828.                 append mesg "$file\n"
  2829.             }
  2830.             kd_message_box error $mesg
  2831.         }
  2832.         if {[llength $KdCompress] > 0} {
  2833.             eval lappend errors $KdCompress
  2834.         }
  2835.  
  2836.         set KdCompress {}
  2837.         .compress.file.list delete 0 end
  2838.         foreach file $errors {
  2839.             kd_compress_append $file
  2840.         }
  2841.     }
  2842. }
  2843.  
  2844. # ----------------------------------------------------------------------
  2845. #  USAGE:  kd_compress_cancel
  2846. #
  2847. #  Aborts the operation of removing files, clearing the current
  2848. #  compress collection and hiding the compress window.
  2849. # ----------------------------------------------------------------------
  2850. proc kd_compress_cancel {} {
  2851.     global KdCompress
  2852.  
  2853.     blt_busy hold .compress; update
  2854.     foreach file $KdCompress {
  2855.         kd_compress_refile $file
  2856.     }
  2857.     kd_view_update
  2858.  
  2859.     blt_busy release .compress
  2860.     kd_unmap .compress
  2861. }
  2862.  
  2863. # ----------------------------------------------------------------------
  2864. #  USAGE:  kd_compress_refile
  2865. #
  2866. #  Removes a particular file from the compress, putting it back into
  2867. #  the usage info for its associated directory.
  2868. # ----------------------------------------------------------------------
  2869. proc kd_compress_refile {file} {
  2870.     global KdCompress
  2871.  
  2872.     set i [lsearch $KdCompress $file]
  2873.     if {$i >= 0} {
  2874.         .compress.file.list delete $i
  2875.         set KdCompress [lreplace $KdCompress $i $i]
  2876.         kd_file_link $file
  2877.  
  2878.         set total 0
  2879.         foreach f $KdCompress {
  2880.             set duinfo [kd_get_usage $f]
  2881.             set dUsage [kd_access $duinfo usage]
  2882.             set total [expr $total+$dUsage]
  2883.         }
  2884.         .compress.total config -text "Total: [set total]K"
  2885.     }
  2886. }
  2887.  
  2888. # ----------------------------------------------------------------------
  2889. #  USAGE:  kd_prefs_map
  2890. #
  2891. #  Makes the "preferences" dialog box visible and fills it with
  2892. #  current preference values.
  2893. # ----------------------------------------------------------------------
  2894. proc kd_prefs_map {} {
  2895.     global KdView
  2896.  
  2897.     .prefs.settings.sigEntry delete 0 end
  2898.     .prefs.settings.sigEntry insert 0 $KdView(significant-file-size)
  2899.  
  2900.     switch $KdView(sort) {
  2901.         byName { .prefs.settings.byName invoke }
  2902.         bySize { .prefs.settings.bySize invoke }
  2903.         byAge  { .prefs.settings.byAge invoke }
  2904.     }
  2905.  
  2906.     if {$KdView(deep-dir-hierarchy)} {
  2907.         .prefs.settings.deepFiles invoke
  2908.     } else {
  2909.         .prefs.settings.localFiles invoke
  2910.     }
  2911.  
  2912.     if {$KdView(only-significant-files)} {
  2913.         .prefs.settings.sigFiles invoke
  2914.     } else {
  2915.         .prefs.settings.allFiles invoke
  2916.     }
  2917.     kd_map .prefs
  2918.     raise .prefs
  2919.     focus .prefs
  2920. }
  2921.  
  2922. # ----------------------------------------------------------------------
  2923. #  USAGE:  kd_prefs_apply
  2924. #
  2925. #  Checks all values in the "preferences" dialog box, and if they are
  2926. #  valid, applies them and saves them in a file in the user's home
  2927. #  directory.
  2928. # ----------------------------------------------------------------------
  2929. proc kd_prefs_apply {} {
  2930.     global env KdView
  2931.     set abort ""
  2932.  
  2933.     set s [.prefs.settings.sigEntry get]
  2934.     if {[catch "expr $s*1"] != 0 || $s < 0} {
  2935.         set abort "Invalid file size: $s\nshould be a number >= 0"
  2936.     }
  2937.  
  2938.     if {$abort != ""} {
  2939.         kd_message_box error $abort
  2940.     } else {
  2941.         set KdView(significant-file-size) $s
  2942.         set KdView(sort) $KdView(tmp:sort)
  2943.         set KdView(only-significant-files) $KdView(tmp:only-significant-files)
  2944.         set KdView(deep-dir-hierarchy) $KdView(tmp:deep-dir-hierarchy)
  2945.  
  2946.         set pfile $env(HOME)/.kosherdill
  2947.         if {[catch "open $pfile w" fid] != 0} {
  2948.             kd_message_box warning "Cannot write to preferences file:\n$pfile"
  2949.         } else {
  2950.             puts $fid "preference significant-file-size $s"
  2951.             puts $fid "preference sort $KdView(sort)"
  2952.             puts $fid "preference only-significant-files $KdView(only-significant-files)"
  2953.             puts $fid "preference deep-dir-hierarchy $KdView(deep-dir-hierarchy)"
  2954.             close $fid
  2955.         }
  2956.         kd_unmap .prefs
  2957.         kd_view_update
  2958.     }
  2959. }
  2960.  
  2961. # ----------------------------------------------------------------------
  2962. #  USAGE:  kd_prefs_cancel
  2963. #
  2964. #  Aborts any settings in the preferences panel and makes the
  2965. #  preferences dialog box invisible.
  2966. # ----------------------------------------------------------------------
  2967. proc kd_prefs_cancel {} {
  2968.     kd_unmap .prefs
  2969. }
  2970.  
  2971. # ----------------------------------------------------------------------
  2972. #  USAGE:  preference <name> <value>
  2973. #
  2974. #  Used in a kosherdill "preferences" file to define preference
  2975. #  settings.
  2976. # ----------------------------------------------------------------------
  2977. proc preference {name val} {
  2978.     global KdView
  2979.  
  2980.     switch $name {
  2981.         significant-file-size {
  2982.             if {[catch "expr $val*1"] != 0 || $val < 0} {
  2983.                 error "Invalid file size: $val\nshould be a number >= 0"
  2984.             }
  2985.         }
  2986.         sort {
  2987.             if {$val != "byName" && $val != "bySize" && $val != "byAge"} {
  2988.                 error "Invalid sorting scheme: $val\nshould be byName, bySize or byAge"
  2989.             }
  2990.         }
  2991.         only-significant-files {
  2992.             if {[catch "expr $val*1"] != 0} {
  2993.                 error "Invalid "significant files" flag: $val\nshould 0/1"
  2994.             }
  2995.         }
  2996.         deep-dir-hierarchy {
  2997.             if {[catch "expr $val*1"] != 0} {
  2998.                 error "Invalid "deep hierarchy" flag: $val\nshould 0/1"
  2999.             }
  3000.         }
  3001.         default {
  3002.             error "Preference not recognized: $name"
  3003.         }
  3004.     }
  3005.     set KdView($name) $val
  3006. }
  3007.  
  3008. # ----------------------------------------------------------------------
  3009. #  USAGE:  kd_option_age <age> <default>
  3010. #
  3011. #  Looks for an age option with the given <age> name and interprets
  3012. #  it as a file age in weeks.  Stores the result in the global
  3013. #  KdAgeCategories() for later use.
  3014. # ----------------------------------------------------------------------
  3015. proc kd_option_age {age def} {
  3016.     global KdAgeTimes
  3017.  
  3018.     set optname [set age]Age
  3019.     option add Tk*$optname $def widgetDefault
  3020.     set weeks [option get . $optname Tk]
  3021.     if {[catch "expr $weeks*7*24*60*60" secs] != 0} {
  3022.         error "invalid resource \"$optname: $weeks\": value should be age in weeks"
  3023.     }
  3024.     set KdAgeTimes($age) $secs
  3025. }
  3026.  
  3027. # ----------------------------------------------------------------------
  3028. #  USAGE:  kd_compute_age <age-secs>
  3029. #
  3030. #  Computes the "age" category for the given file age in seconds.
  3031. #  Returns an age category that can be used to select an appropriate
  3032. #  bitmap to represent file age.
  3033. # ----------------------------------------------------------------------
  3034. proc kd_compute_age {age} {
  3035.     global KdAgeTimes KdAgeCategories KdAgeList
  3036.  
  3037.     if {![info exists KdAgeCategories]} {
  3038.         set KdAgeList {}
  3039.         foreach cat [array names KdAgeTimes] {
  3040.             set KdAgeCategories($KdAgeTimes($cat)) $cat
  3041.             lappend KdAgeList $KdAgeTimes($cat)
  3042.         }
  3043.         set KdAgeList [lsort -integer $KdAgeList]
  3044.     }
  3045.     foreach t $KdAgeList {
  3046.         if {$age < $t} {
  3047.             return $KdAgeCategories($t)
  3048.         }
  3049.     }
  3050.     return $KdAgeCategories($t)
  3051. }
  3052.  
  3053. # ----------------------------------------------------------------------
  3054. #  USAGE:  kd_get_current_time
  3055. #
  3056. #  Called every so often to query for the current time.  Gets the
  3057. #  time using an awful hack:  touches a file in /tmp and then queries
  3058. #  for its "mtime".
  3059. # ----------------------------------------------------------------------
  3060. proc kd_get_current_time {} {
  3061.     global KdCurrentTime
  3062.  
  3063.     set file /tmp/kosherdill[pid]
  3064.     exec touch $file
  3065.     set KdCurrentTime [file mtime $file]
  3066.     exec rm -f $file
  3067. }
  3068.  
  3069. # ----------------------------------------------------------------------
  3070. #  USAGE:  kd_map <win>
  3071. #
  3072. #  Used instead of "wm deiconify" to map a window.  If the window has
  3073. #  already been mapped and has placement information, this is set just
  3074. #  before the window is mapped to put the window back in the proper
  3075. #  place.  Needed for proper interaction with virtual window managers
  3076. #  when windows are in outlying quadrants.
  3077. # ----------------------------------------------------------------------
  3078. proc kd_map {win} {
  3079.     global KdGeom
  3080.  
  3081.     if {[info exists KdGeom($win)]} {
  3082.         wm geometry $win $KdGeom($win)
  3083.     }
  3084.     wm deiconify $win
  3085.     raise $win
  3086.     focus $win
  3087. }
  3088.  
  3089. # ----------------------------------------------------------------------
  3090. #  USAGE:  kd_unmap <win>
  3091. #
  3092. #  Used instead of "wm withdraw" to unmap a window.  Saves current
  3093. #  placement information for the window, for the next call to kd_map.
  3094. #  Needed for proper interaction with virtual window managers when
  3095. #  windows are in outlying quadrants.
  3096. # ----------------------------------------------------------------------
  3097. proc kd_unmap {win} {
  3098.     global KdGeom
  3099.  
  3100.     set KdGeom($win) "+[winfo rootx $win]+[winfo rooty $win]"
  3101.     wm withdraw $win
  3102. }
  3103.  
  3104. # ----------------------------------------------------------------------
  3105. #  GLOBAL DATA
  3106. # ----------------------------------------------------------------------
  3107. kd_get_current_time
  3108. after 86400000 kd_get_current_time
  3109.  
  3110. set KdKnownFileCnt 0
  3111. set KdKnownFiles(x) "make-this-an-array"
  3112. unset KdKnownFiles(x)
  3113.  
  3114. set KdResult ""
  3115. trace variable KdResult w kd_process_du_info
  3116.  
  3117. set KdTrash {}
  3118. set KdCompress {}
  3119.  
  3120. set KdUnique 0
  3121. set KdView(sort) bySize
  3122. set KdView(only-significant-files) 0
  3123. set KdView(significant-file-size) 500
  3124. set KdView(deep-dir-hierarchy) 0
  3125. set KdViewers(.) {}
  3126.  
  3127. set KdStatusLevel 0
  3128. set KdAnimate {
  3129.     dill-du-0 dill-du-1 dill-du-2 dill-du-3 dill-du-4 dill-du-5
  3130.     dill-du-6 dill-du-7 dill-du-8 dill-du-9 dill-du-10 dill-du-11
  3131. }
  3132.  
  3133. # ----------------------------------------------------------------------
  3134. #  CUSTOMIZABLE STUFF
  3135. # ----------------------------------------------------------------------
  3136. kd_option_age new   4
  3137. kd_option_age dusty 8
  3138. kd_option_age old   20
  3139. kd_option_age moldy 40
  3140.  
  3141. # ----------------------------------------------------------------------
  3142. #  DIALOG FOR REMOVING FILES
  3143. # ----------------------------------------------------------------------
  3144. toplevel .trash
  3145. frame .trash.file -borderwidth 2 -relief sunken
  3146. listbox .trash.file.list -yscrollcommand ".trash.file.sbar set"
  3147. scrollbar .trash.file.sbar -command ".trash.file.list yview"
  3148. pack .trash.file.list -side left -expand yes -fill both
  3149. pack .trash.file.sbar -side right -fill y
  3150.  
  3151. frame .trash.cntl -borderwidth 1 -relief raised
  3152. label .trash.cntl.logo -bitmap trash
  3153. pack .trash.cntl.logo -side left
  3154. label .trash.cntl.refileTarget -bitmap refile \
  3155.     -borderwidth 2 -relief sunken
  3156. pack .trash.cntl.refileTarget -side left -padx 8 -pady 4
  3157. button .trash.cntl.cancel -text " Cancel " -command kd_trash_cancel
  3158. pack .trash.cntl.cancel -side right -padx 16
  3159. frame .trash.cntl.d -borderwidth 2 -relief sunken
  3160. button .trash.cntl.d.remove -text " Delete Files " -command kd_trash_perform
  3161. pack .trash.cntl.d.remove -padx 4 -pady 4
  3162. pack .trash.cntl.d -side right -padx 16 -pady 8
  3163. bind .trash <Key-Return> {
  3164.     .trash.cntl.d.remove flash
  3165.     .trash.cntl.d.remove invoke
  3166. }
  3167.  
  3168. blt_drag&drop source .trash.file.list config \
  3169.     -packagecmd "kd_package_list_file .trash.file.list" \
  3170.     -sitecmd kd_site_file
  3171.  
  3172. blt_drag&drop source .trash.file.list handler file dd_send_file
  3173. blt_drag&drop source .trash.file.list handler text dd_send_text
  3174.  
  3175. blt_drag&drop target .trash.file.list handler file {
  3176.     global DragDrop
  3177.     kd_trash_append $DragDrop(file)
  3178.     kd_view_update containing $DragDrop(file)
  3179. }
  3180.  
  3181. blt_drag&drop target .trash.cntl.refileTarget handler file {
  3182.     global DragDrop
  3183.     kd_trash_refile $DragDrop(file)
  3184.     kd_view_update containing $DragDrop(file)
  3185. }
  3186.  
  3187. label .trash.total -text "" -anchor w
  3188. pack .trash.total -side top -anchor w -padx 4
  3189. pack .trash.file -side top -expand yes -fill both -padx 4 -pady 4
  3190. pack .trash.cntl -side bottom -fill x
  3191.  
  3192. wm title .trash "Kosher Dill: Delete Files"
  3193. wm minsize .trash 200 200
  3194. wm withdraw .trash
  3195.  
  3196. # ----------------------------------------------------------------------
  3197. #  DIALOG FOR COMPRESSING FILES
  3198. # ----------------------------------------------------------------------
  3199. toplevel .compress
  3200. frame .compress.file -borderwidth 2 -relief sunken
  3201. listbox .compress.file.list -yscrollcommand ".compress.file.sbar set"
  3202. scrollbar .compress.file.sbar -command ".compress.file.list yview"
  3203. pack .compress.file.list -side left -expand yes -fill both
  3204. pack .compress.file.sbar -side right -fill y
  3205.  
  3206. frame .compress.cntl -borderwidth 1 -relief raised
  3207. label .compress.cntl.logo -bitmap compress
  3208. pack .compress.cntl.logo -side left
  3209. label .compress.cntl.refileTarget -bitmap refile \
  3210.     -borderwidth 2 -relief sunken
  3211. pack .compress.cntl.refileTarget -side left -padx 8 -pady 4
  3212. button .compress.cntl.cancel -text " Cancel " -command kd_compress_cancel
  3213. pack .compress.cntl.cancel -side right -padx 16
  3214. frame .compress.cntl.d -borderwidth 2 -relief sunken
  3215. button .compress.cntl.d.compress -text " Compress Files " \
  3216.     -command kd_compress_perform
  3217. pack .compress.cntl.d.compress -padx 4 -pady 4
  3218. pack .compress.cntl.d -side right -padx 16 -pady 8
  3219. bind .compress <Key-Return> {
  3220.     .compress.cntl.d.compress flash
  3221.     .compress.cntl.d.compress invoke
  3222. }
  3223.  
  3224. blt_drag&drop source .compress.file.list config \
  3225.     -packagecmd "kd_package_list_file .compress.file.list" \
  3226.     -sitecmd kd_site_file
  3227.  
  3228. blt_drag&drop source .compress.file.list handler file dd_send_file
  3229. blt_drag&drop source .compress.file.list handler text dd_send_text
  3230.  
  3231. blt_drag&drop target .compress.file.list handler file {
  3232.     global DragDrop
  3233.     kd_compress_append $DragDrop(file)
  3234.     kd_view_update containing $DragDrop(file)
  3235. }
  3236.  
  3237. blt_drag&drop target .compress.cntl.refileTarget handler file {
  3238.     global DragDrop
  3239.     kd_compress_refile $DragDrop(file)
  3240.     kd_view_update containing $DragDrop(file)
  3241. }
  3242.  
  3243. label .compress.total -text "" -anchor w
  3244. pack .compress.total -side top -anchor w -padx 4
  3245. pack .compress.file -side top -expand yes -fill both -padx 4 -pady 4
  3246. pack .compress.cntl -side bottom -fill x
  3247.  
  3248. wm title .compress "Kosher Dill: Compress Files"
  3249. wm minsize .compress 200 200
  3250. wm withdraw .compress
  3251.  
  3252. # ----------------------------------------------------------------------
  3253. #  DIALOG FOR PREFERENCES
  3254. # ----------------------------------------------------------------------
  3255. toplevel .prefs
  3256. frame .prefs.settings
  3257.  
  3258. label .prefs.settings.byLabel -text "List files..."
  3259. radiobutton .prefs.settings.byName -text "By Name" -relief flat \
  3260.     -variable KdView(tmp:sort) -value byName
  3261. radiobutton .prefs.settings.bySize -text "By Size" -relief flat \
  3262.     -variable KdView(tmp:sort) -value bySize
  3263. radiobutton .prefs.settings.byAge -text "By Age" -relief flat \
  3264.     -variable KdView(tmp:sort) -value byTime
  3265.  
  3266. label .prefs.settings.deepLabel -text "Show..."
  3267. radiobutton .prefs.settings.localFiles -text "Files in Local Directory" \
  3268.     -relief flat -variable KdView(tmp:deep-dir-hierarchy) -value 0
  3269. radiobutton .prefs.settings.deepFiles -text "Files in All Directories" \
  3270.     -relief flat -variable KdView(tmp:deep-dir-hierarchy) -value 1
  3271.  
  3272. label .prefs.settings.showLabel -text "Show..."
  3273. radiobutton .prefs.settings.allFiles -text "All Files" \
  3274.     -relief flat -variable KdView(tmp:only-significant-files) -value 0
  3275. radiobutton .prefs.settings.sigFiles -text "Only \"Significant\" Files" \
  3276.     -relief flat -variable KdView(tmp:only-significant-files) -value 1
  3277.  
  3278. label .prefs.settings.sigLabel -text "\"Significant\" File Size: "
  3279. entry .prefs.settings.sigEntry -width 7
  3280. bind .prefs.settings.sigEntry <Key-Return> {
  3281.     .prefs.cntl.d.apply flash
  3282.     .prefs.cntl.d.apply invoke
  3283. }
  3284. label .prefs.settings.sigUnits -text "K" -anchor w
  3285.  
  3286. blt_table .prefs.settings \
  3287.     .prefs.settings.byLabel 0,0 -anchor e \
  3288.     .prefs.settings.byName 0,1 -anchor w -columnspan 2 \
  3289.     .prefs.settings.bySize 1,1 -anchor w -columnspan 2 \
  3290.     .prefs.settings.byAge 2,1 -anchor w -columnspan 2 \
  3291.     .prefs.settings.deepLabel 4,0 -anchor e \
  3292.     .prefs.settings.localFiles 4,1 -anchor w -columnspan 2 \
  3293.     .prefs.settings.deepFiles 5,1 -anchor w -columnspan 2 \
  3294.     .prefs.settings.showLabel 7,0 -anchor e \
  3295.     .prefs.settings.allFiles 7,1 -anchor w -columnspan 2 \
  3296.     .prefs.settings.sigFiles 8,1 -anchor w -columnspan 2 \
  3297.     .prefs.settings.sigLabel 9,0 -anchor e \
  3298.     .prefs.settings.sigEntry 9,1 -anchor e \
  3299.     .prefs.settings.sigUnits 9,2 -anchor w
  3300.  
  3301. blt_table row .prefs.settings config 3 -height 8
  3302. blt_table row .prefs.settings config 6 -height 8
  3303. blt_table column .prefs.settings config 1 \
  3304.     -width [winfo reqwidth .prefs.settings.sigEntry]
  3305.  
  3306. frame .prefs.cntl -borderwidth 1 -relief raised
  3307. label .prefs.cntl.logo -bitmap dill-logo
  3308. pack .prefs.cntl.logo -side left
  3309. button .prefs.cntl.cancel -text " Cancel " -command kd_prefs_cancel
  3310. pack .prefs.cntl.cancel -side right -padx 16
  3311. frame .prefs.cntl.d -borderwidth 2 -relief sunken
  3312. button .prefs.cntl.d.apply -text " Apply " -command kd_prefs_apply
  3313. pack .prefs.cntl.d.apply -padx 4 -pady 4
  3314. pack .prefs.cntl.d -side right -padx 16 -pady 8
  3315. bind .prefs <Key-Return> {
  3316.     .prefs.cntl.d.apply flash
  3317.     .prefs.cntl.d.apply invoke
  3318. }
  3319.  
  3320. blt_drag&drop target .prefs.settings.sigEntry handler file {
  3321.     global DragDrop
  3322.     set duinfo [kd_get_usage $DragDrop(file)]
  3323.     set dUsage [kd_access $duinfo usage]
  3324.     .prefs.settings.sigEntry delete 0 end
  3325.     .prefs.settings.sigEntry insert 0 $dUsage
  3326. }
  3327.  
  3328. pack .prefs.settings -side top -expand yes -fill both -padx 4 -pady 16
  3329. pack .prefs.cntl -side bottom -fill x
  3330.  
  3331. wm title .prefs "Kosher Dill: Preferences"
  3332. wm withdraw .prefs
  3333.  
  3334. # ----------------------------------------------------------------------
  3335. #  ABOUT WINDOW
  3336. # ----------------------------------------------------------------------
  3337. toplevel .about
  3338. frame .about.credits
  3339. frame .about.credits.info -borderwidth 2
  3340. label .about.credits.info.title -text "Kosher Dill"
  3341. pack .about.credits.info.title -side top
  3342. message .about.credits.info.expl -justify center -aspect 200 \
  3343.     -text "KOmprehensive\nStorage HandlER\n---\nDisk ILLustrator"
  3344. pack .about.credits.info.expl -side left
  3345. label .about.credits.info.logo -bitmap dill-logo
  3346. pack .about.credits.info.logo -side right
  3347. pack .about.credits.info -side left
  3348.  
  3349. message .about.credits.author -justify left -aspect 300 -text \
  3350. "Copyright (c) 1993
  3351. Michael J. McLennan
  3352. AT&T Bell Laboratories
  3353. michael.mclennan@att.com"
  3354. pack .about.credits.author -side right -padx 4
  3355. pack .about.credits -side top
  3356.  
  3357. frame .about.blt -borderwidth 2 -relief sunken
  3358. message .about.blt.info -justify left -aspect 300 -text "Thanks to George Howlett for the many wonderful things in his BLT toolkit that made this application possible!\n\nThanks also to Maria and Maxwell for giving me time to tinker."
  3359. pack .about.blt.info -side left -ipadx 4 -ipady 4
  3360. label .about.blt.logo -bitmap dill-blt
  3361. pack .about.blt.logo -side right -anchor n -ipadx 4 -ipady 4
  3362. pack .about.blt -side top -padx 8 -pady 8
  3363.  
  3364. message .about.disclaimer -justify center -aspect 500 -text "AT&T disclaims all warranties with regard to this software, including all implied warranties of merchantability and fitness.  In no event shall AT&T be liable for any special, indirect or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortuous action, arising out of or in connection with the use or performance of this software."
  3365. pack .about.disclaimer -side top -pady 8
  3366.  
  3367. frame .about.cntl -borderwidth 1 -relief raised
  3368. frame .about.cntl.d -borderwidth 2 -relief sunken
  3369. button .about.cntl.d.dismiss -text " Dismiss " -command {
  3370.     kd_unmap .about
  3371. }
  3372. pack .about.cntl.d.dismiss -padx 4 -pady 4
  3373. pack .about.cntl.d -side top -padx 8 -pady 8
  3374. bind .about <Key-Return> {
  3375.     .about.cntl.d.dismiss flash
  3376.     .about.cntl.d.dismiss invoke
  3377. }
  3378. pack .about.cntl -side top -fill x
  3379.  
  3380. wm title .about "Kosher Dill: About"
  3381. wm withdraw .about
  3382.  
  3383. # ----------------------------------------------------------------------
  3384. #  "ABORT" WINDOW
  3385. # ----------------------------------------------------------------------
  3386. toplevel .abort
  3387. frame .abort.cntl -borderwidth 1 -relief raised
  3388. button .abort.cntl.abort -text " Abort " -command "kd_status_abort"
  3389. pack .abort.cntl.abort -side top -padx 6 -pady 6
  3390. pack .abort.cntl -side bottom -fill x
  3391. label .abort.animate -bitmap dill-du-0
  3392. message .abort.mesg -text "" -aspect 2000 -justify left
  3393. pack .abort.animate -side left -padx 4 -pady 4
  3394. pack .abort.mesg -side left -anchor w
  3395.  
  3396. bind .abort <Any-Visibility> { if {![winfo ismapped .box]} {raise %W} }
  3397.  
  3398. wm title .abort "Kosher Dill: Status"
  3399. wm withdraw .abort
  3400.  
  3401. # ----------------------------------------------------------------------
  3402. #  NOTICE WINDOW
  3403. # ----------------------------------------------------------------------
  3404. toplevel .box -class Notice
  3405. message .box.mesg -aspect 1000
  3406.  
  3407. frame .box.cntl -borderwidth 2 -relief raised
  3408. label .box.cntl.icon
  3409. pack .box.cntl.icon -side top -pady 2
  3410. frame .box.cntl.d -borderwidth 2 -relief sunken
  3411. button .box.cntl.d.dismiss -text " Dismiss " \
  3412.     -command "set KdError dismiss"
  3413. pack .box.cntl.d.dismiss -padx 4 -pady 4
  3414. pack .box.cntl.d -padx 8 -pady 8
  3415.  
  3416. pack .box.cntl -side left -fill y
  3417. pack .box.mesg -side top -expand yes -fill both
  3418.  
  3419. wm title .box "Kosher Dill: Notice"
  3420. bind .box <Any-Visibility> { raise %W }
  3421. bind .box <Key-Return> {
  3422.     .box.cntl.d.dismiss flash
  3423.     .box.cntl.d.dismiss invoke
  3424. }
  3425. bind .box.cntl.icon <Double-ButtonPress-1> {
  3426.     global errorInfo
  3427.     .box.mesg config -text $errorInfo
  3428. }
  3429. wm withdraw .box
  3430.  
  3431. # ----------------------------------------------------------------------
  3432. #  MENU BAR
  3433. # ----------------------------------------------------------------------
  3434. frame .menu -borderwidth 1 -relief raised
  3435. menubutton .menu.file -text "File" -menu .menu.file.m
  3436. menu .menu.file.m
  3437. .menu.file.m add command -label "About..." -command "kd_map .about"
  3438. .menu.file.m add command -label "Preferences..." -command kd_prefs_map
  3439. .menu.file.m add separator
  3440. .menu.file.m add command -label "Quit" -command "exit"
  3441.  
  3442. menubutton .menu.view -text "View" -menu .menu.view.m
  3443. menu .menu.view.m
  3444. .menu.view.m add radiobutton -label "By Name" -command kd_view_update \
  3445.     -variable KdView(sort) -value byName
  3446. .menu.view.m add radiobutton -label "By Size" -command kd_view_update \
  3447.     -variable KdView(sort) -value bySize
  3448. .menu.view.m add radiobutton -label "By Age" -command kd_view_update \
  3449.     -variable KdView(sort) -value byTime
  3450. .menu.view.m add separator
  3451. .menu.view.m add radiobutton -label "Files in Local Directory" \
  3452.     -variable KdView(deep-dir-hierarchy) -value 0 -command kd_view_update
  3453. .menu.view.m add radiobutton -label "Files in All Directories" \
  3454.     -variable KdView(deep-dir-hierarchy) -value 1 -command kd_view_update
  3455. .menu.view.m add separator
  3456. .menu.view.m add radiobutton -label "All Files" \
  3457.     -variable KdView(only-significant-files) -value 0 -command kd_view_update
  3458. .menu.view.m add radiobutton -label "Only \"Significant\" Files" \
  3459.     -variable KdView(only-significant-files) -value 1 -command kd_view_update
  3460.  
  3461. menubutton .menu.help -text "Help" -menu .menu.help.m
  3462. menu .menu.help.m
  3463. .menu.help.m add command -label "About HyperHelp..." \
  3464.     -command "hyperhelp_file HyperHelp"
  3465. .menu.help.m add separator
  3466. .menu.help.m add command -label "About Kosher Dill..." \
  3467.     -command "hyperhelp_file Intro"
  3468.  
  3469. tk_menuBar .menu .menu.file .menu.view .menu.help
  3470.  
  3471. pack .menu.file -side left -padx 2
  3472. pack .menu.view -side left -padx 2
  3473. pack .menu.help -side right -padx 2
  3474.  
  3475. # ----------------------------------------------------------------------
  3476. #  DIRECTORY USAGE CANVAS
  3477. # ----------------------------------------------------------------------
  3478. frame .view -borderwidth 2 -relief sunken
  3479. canvas .view.canv -yscroll ".view.sbar set"
  3480. scrollbar .view.sbar -command ".view.canv yview"
  3481. pack .view.canv -side left -expand yes -fill both
  3482. pack .view.sbar -side right -fill y
  3483.  
  3484. bind .view.canv <Configure> "kd_view_update ."
  3485. bind .view.canv <ButtonPress-1> {
  3486.     set seln [kd_usage_select . %x %y]
  3487. }
  3488. bind .view.canv <Double-ButtonPress-1> {
  3489.     set seln [kd_usage_select . %x %y]
  3490.     if {$seln != ""} {
  3491.         kd_examine_dir . $seln
  3492.     }
  3493. }
  3494. bind .view.canv <ButtonPress-2> {%W scan mark 0 %y}
  3495. bind .view.canv <B2-Motion> {%W scan dragto 0 %y}
  3496.  
  3497. blt_drag&drop source .view.canv config \
  3498.     -packagecmd "kd_package_viewer_file . .view.canv" \
  3499.     -sitecmd kd_site_file
  3500.  
  3501. blt_drag&drop source .view.canv handler file dd_send_file
  3502. blt_drag&drop source .view.canv handler text dd_send_text
  3503.  
  3504. # ----------------------------------------------------------------------
  3505. #  DIRECTORY STATUS WINDOW
  3506. # ----------------------------------------------------------------------
  3507. frame .status -borderwidth 2
  3508. menubutton .status.dirLabel -text "Directory:" -relief flat
  3509. menu .status.dirLabel.m
  3510. .status.dirLabel config -menu .status.dirLabel.m
  3511. entry .status.dirEntry
  3512. bind .status.dirEntry <Key-Return> \
  3513.     {kd_examine_dir . [.status.dirEntry get]}
  3514.  
  3515. blt_drag&drop source .status.dirEntry config \
  3516.     -packagecmd "kd_package_viewer_file . .status.dirEntry" \
  3517.     -sitecmd kd_site_file
  3518. blt_drag&drop source .status.dirEntry handler file dd_send_file
  3519. blt_drag&drop source .status.dirEntry handler text dd_send_text
  3520.  
  3521. blt_drag&drop target .status.dirEntry handler file {
  3522.     global DragDrop
  3523.     kd_examine_dir . $DragDrop(file)
  3524. }
  3525.  
  3526. label .status.usageLabel -text "Usage:"
  3527. label .status.usageInfo -text "" -anchor w
  3528.  
  3529. blt_table .status \
  3530.     .status.dirLabel 0,0 -anchor e \
  3531.     .status.dirEntry 0,1 -anchor w -fill x \
  3532.     .status.usageLabel 1,0 -anchor e \
  3533.     .status.usageInfo 1,1 -anchor w -fill x
  3534. blt_table column .status config 0 \
  3535.     -width [winfo reqwidth .status.dirLabel]
  3536.  
  3537. # ----------------------------------------------------------------------
  3538. #  DRAG&DROP TARGETS
  3539. # ----------------------------------------------------------------------
  3540. frame .targets -borderwidth 4
  3541. label .targets.examineTarget -bitmap examine
  3542. label .targets.compressTarget -bitmap compress
  3543. label .targets.trashTarget -bitmap trash
  3544.  
  3545. blt_drag&drop target .targets.examineTarget handler file {
  3546.     global DragDrop
  3547.     kd_examine $DragDrop(file)
  3548. }
  3549. blt_drag&drop target .targets.compressTarget handler file {
  3550.     global DragDrop
  3551.     kd_compress_append $DragDrop(file)
  3552.     kd_view_update containing $DragDrop(file)
  3553. }
  3554. blt_drag&drop target .targets.trashTarget handler file {
  3555.     global DragDrop
  3556.     kd_trash_append $DragDrop(file)
  3557.     kd_view_update containing $DragDrop(file)
  3558. }
  3559.  
  3560. blt_table .targets \
  3561.     .targets.examineTarget 0,0 \
  3562.     .targets.compressTarget 0,1 \
  3563.     .targets.trashTarget 0,2 \
  3564.  
  3565. # ----------------------------------------------------------------------
  3566. #  MAIN WINDOW
  3567. # ----------------------------------------------------------------------
  3568. pack .menu -fill x
  3569. pack .status -side top -fill x -padx 4
  3570. pack .view -expand yes -fill both -padx 4 -pady 4
  3571. pack .targets -side top -fill x
  3572.  
  3573. wm minsize . 200 200
  3574. wm title . "Kosher Dill - Version $KdVersion"
  3575.  
  3576. # set display to sort by size...
  3577. .menu.view.m invoke 1
  3578.  
  3579. # set display to show all files...
  3580. .menu.view.m invoke 4
  3581.  
  3582. # set display to show files in local directory...
  3583. .menu.view.m invoke 7
  3584.  
  3585. # ----------------------------------------------------------------------
  3586. #  TRY TO LOAD ANY PREFERENCES
  3587. # ----------------------------------------------------------------------
  3588. update
  3589.  
  3590. set pfile $env(HOME)/.kosherdill
  3591. if {[file exists $pfile]} {
  3592.     if {[catch "open $pfile r" fid] != 0} {
  3593.         kd_message_box warning "Cannot read preferences file:\n$pfile"
  3594.     } else {
  3595.         set prefs [read $fid]
  3596.         close $fid
  3597.         if {[catch $prefs mesg] != 0} {
  3598.             kd_message_box warning "Error in preferences file\n$pfile\n\n$mesg"
  3599.         }
  3600.     }
  3601. }
  3602.