
(defun vm-delete-message (count) "\
Add the `deleted' attribute to the current message.

The message will be physically deleted from the current folder the next
time the current folder is expunged.

With a prefix argument, the next COUNT messages are deleted.  A negative
argument means the previous COUNT messages are deleted.

When invoked on marked messages (via vm-next-command-uses-marks),
all marked messages are deleted, other messages are ignored." (interactive "p") (byte-code "t   ! q	!& 	!?& 4 pC\"'  =!c @HH?X @\"AB  	n ?x 
#*" [vm-mail-buffer vm-summary-buffer nil vm-folder-read-only used-marks last-command mlist count t vm-move-after-deleting executing-kbd-macro vm-follow-summary-cursor buffer-name bufferp signal folder-read-only vm-error-if-folder-empty vm-next-command-uses-marks vm-select-marked-or-prefixed-messages 2 vm-set-deleted-flag vm-update-summary-and-mode-line vm-next-message] 13))

(defun vm-delete-message-backward (count) "\
Like vm-delete-message, except that the deletion direction is reversed." (interactive "p") (byte-code "	[!)" [prefix-arg count nil command-execute vm-delete-message] 2))

(defun vm-undelete-message (count) "\
Remove the `deleted' attribute from the current message.

With a prefix argument, the next COUNT messages are undeleted.  A
negative argument means the previous COUNT messages are undeleted.

When invoked on marked messages (via vm-next-command-uses-marks),
all marked messages are undeleted, other messages are ignored." (interactive "p") (byte-code "t   ! q	!& 	!?& 4 pC\"'  =!b @HHW @\"AB  m ?w 
#*" [vm-mail-buffer vm-summary-buffer nil vm-folder-read-only used-marks last-command mlist count vm-move-after-undeleting t executing-kbd-macro vm-follow-summary-cursor buffer-name bufferp signal folder-read-only vm-error-if-folder-empty vm-next-command-uses-marks vm-select-marked-or-prefixed-messages 2 vm-set-deleted-flag vm-update-summary-and-mode-line vm-next-message] 13))

(defun vm-kill-subject nil "\
Delete all messages with the same subject as the current message
(ignoring re:'s)." (interactive) (byte-code "  ! q	!\" 	!?\" 0 pC\"#  @!\"O !O!Q @HH?q @!\" @\"TAY t ! ! U ߂ #+ " [vm-mail-buffer vm-summary-buffer nil vm-folder-read-only subject vm-message-pointer mp vm-message-list n t vm-follow-summary-cursor buffer-name bufferp signal folder-read-only vm-error-if-folder-empty vm-su-subject 0 string-match "^\\(re: *\\)+" match-end "^\\(re: *\\)*" regexp-quote " *$" 2 vm-set-deleted-flag zerop message "No messages deleted." "%d message%s deleted" 1 "" "s" vm-update-summary-and-mode-line] 20))

(defun vm-expunge-folder (&optional quitting shaddap) "\
Expunge deleted messages, but don't save folder to disk or exit VM." (interactive) (byte-code " ! q	! 	!? - pC\"  !9 !?B !  	
? ?l !? ?~     ?     !*" [vm-mail-buffer vm-summary-buffer nil vm-folder-read-only vm-virtual-buffers shaddap inhibit-quit t did-gobble vm-numbering-redo-start-point vm-summary-redo-start-point vm-totals quitting vm-message-pointer vm-message-list vm-system-state buffer-name bufferp signal folder-read-only vm-trim-dead-buffers error "Can't execute command: folder is referenced virtually." message "Expunging..." vm-gobble-deleted-messages vm-deferred-message "Deleted messages expunged." vm-update-summary-and-mode-line vm-next-message vm-preview-current-message "No messages are flagged for deletion."] 15))

(defun vm-gobble-deleted-messages nil (byte-code " deZV!  e\"!  d\"Վ 
	I @@HHJ=? @HH?b  
p m 
 @HH@HH\"? A@HHL A\"A A@HHLAM 
 
= ̉

/ ! @HH ˉ @HH,ˉA@HH!A)!
.)+)" [vm-sr-clip vm-sr-min vm-sr-max mp vm-message-list old-message-list virtual prev buffer-read-only tail-cons did-gobble nil t vm-message-order-changed vm-message-order-stuffed vm-last-message-pointer vm-message-pointer vm-system-state buffer-size set-marker make-marker ((byte-code "  	
\"	\"
\"" [vm-sr-clip vm-sr-min vm-sr-max nil widen narrow-to-region set-marker] 6)) widen 0 6 2 delete-region 3 8 setcdr vm-clear-expunge-invalidated-undos vm-set-buffer-modified-p vm-last] 13))

(defun vm-rfc934-char-stuff-region (start end) (byte-code " #
b`W #$ # )\"" [end nil start t set-marker make-marker re-search-forward "^-" replace-match "- -"] 8))

(defun vm-rfc934-char-unstuff-region (start end) (byte-code " #
b`W #' #  )\"" [end nil start t set-marker make-marker re-search-forward "^- " replace-match "" forward-char] 8))

(defun vm-digestify-region (start end) (byte-code " #= ɂ \"b!` `\"
#; #* b=M `!`\"!))\"" [end nil separator-regexp vm-folder-type start t set-marker make-marker mmdf "
+
" "
+
From .*" vm-rfc934-char-stuff-region insert-before-markers "------- Start of digest -------
" delete-region forward-line re-search-forward replace-match "

------------------------------
" -1 "------- End of digest -------
"] 14))

(defun vm-burst-digest (&optional grotty-digest) "\
Burst the current message (a digest) into its individual messages.
The digest's messages are assimilated into the folder as new mail would be,
e.g. message grouping takes place and if you're not reading a message
you will be moved to the first new or unread message.

By default VM expects digests to be in the standard RFC 934 format.
A prefix will inveigle VM into coping with other digest formats,
with mixed results." (interactive "P") (byte-code "  ! q	!\" 	!?\" =- \"; pC\".  J K \" # # @
	 deZV  e\"  d\")+)      ." [vm-mail-buffer vm-summary-buffer nil major-mode this-command vm-folder-read-only grotty-digest inhibit-quit t start end reg-start leader trailer error-data reg-end text-start buffer-read-only old-buffer-modified-p m vm-message-pointer vm-sr-clip vm-sr-min vm-sr-max vm-follow-summary-cursor buffer-name bufferp vm-virtual-mode error "%s cannot be applied to virtual folders." signal folder-read-only vm-error-if-folder-empty message "Bursting %sdigest..." "(possible grotty) " "" set-marker make-marker buffer-modified-p buffer-size ((byte-code "  	
\"	\"
\"" [vm-sr-clip vm-sr-min vm-sr-max nil widen narrow-to-region set-marker] 6)) (byte-code " db`p	@!	@!##?% !U  #!U)G !\"b* !`\"d\"b#?h !n !\"w d\"=  HH %b#+#! cc`	#`\")# !!\" 	b#!!\" 	b#!`\"	\"b bc\"\"  !N!" [start vm-message-pointer t end grotty-digest vm-folder-type leader trailer m reg-start nil text-start vm-attributes-header-regexp vm-berkeley-mail-compatibility vm-berkeley-mail-status-header-regexp reg-end vm-delete-after-bursting widen insert-buffer-substring vm-text-of vm-text-end-of re-search-backward "\\(^-[^ ].*
+\\|^-
+\\)+" error "final message separator not found" point-marker match-end 0 set-marker match-beginning skip-chars-backward "
" delete-region re-search-forward "^-[^ ]" "first message separator not found" vm-fix-grotty-digest mmdf "
" "

" concat "From " 3 8 " " current-time-string "

" "\\(\\(
+\\)\\|\\(^\\)\\)\\(-[^ ].*
+\\|-
+\\)+" replace-match "" 2 search-forward "
+-[^ ]" vm-rfc934-char-unstuff-region vm-clear-modification-flag-undos vm-set-buffer-modified-p buffer-modified-p vm-delete-message 1] 45) ((error (byte-code " d\"	!
@> 
@
A\"!" [start old-buffer-modified-p error-data delete-region set-buffer-modified-p (file-supersession buffer-file-locked) signal error "Malformed digest"] 5))) vm-assimilate-new-messages vm-emit-totals-blurb vm-thoughtfully-select-message vm-update-summary-and-mode-line] 25))

(defun vm-fix-grotty-digest (start end) (byte-code "	\"b!#, !b̍?$ c! ))" [start end nil t narrow-to-region forward-line 1 re-search-forward "^-[^ ]" match-beginning 0 real-separator (byte-code "!? \"`Zf\" \"!?& \"" [nil t looking-at "------------" throw real-separator /= 2 10 ".+

"] 8) "- "] 7))

(defun vm-edit-message (&optional prefix-argument) "\
Edit the current message.  Prefix arg means mark as unedited instead.
If editing, the current message is copied into a temporary buffer, and
this buffer is selected for editing.  The major mode of this buffer is
controlled by the variable `vm-edit-message-mode'.

Use C-c ESC when you have finished editing the message.  The message
will be inserted into its folder replacing the old version of the
message.  If you don't want your edited version of the message to
replace the original, use C-c C-]." (interactive "P") (byte-code "  ! q	!\" 	!?\" 0 pC\"#  y @HHs @HI@!=\\ @!a @I@HH!\" v !A@HHp
		 	!?< deZV  e\"  d\" !	@H	I	@HHb!`)@!#)+	! 	!!	!!ebd#!
 , !! \"!@	!," [vm-mail-buffer vm-summary-buffer nil vm-folder-read-only prefix-argument vm-message-pointer vm-flush-interval t mp edit-buf folder-buffer inhibit-quit vm-sr-clip vm-sr-min vm-sr-max vm-edit-message-mode vm-edit-message-mode-map vm-follow-summary-cursor buffer-name bufferp signal folder-read-only vm-error-if-folder-empty 2 7 vm-mark-for-display-update vm-stuff-virtual-attributes 4 vm-set-buffer-modified-p marker-buffer 0 vm-update-summary-and-mode-line message "Message has not been edited." buffer-size set-marker make-marker ((byte-code "  	
\"	\"
\"" [vm-sr-clip vm-sr-min vm-sr-max nil widen narrow-to-region set-marker] 6)) widen generate-new-buffer "*VM message edit*" copy-to-buffer forward-line 1 vm-text-end-of get-buffer-window select-window switch-to-buffer set-buffer-modified-p search-forward "

" funcall text-mode use-local-map copy-keymap current-local-map make-sparse-keymap vm-overlay-keymap "Type C-c ESC to end edit, C-c C-] to abort with no change."] 39))

(defun vm-overlay-keymap (src-map dest-map) (byte-code " Ȏ	!
!c 
GSY_ 
H?V !O !!!?G 	! #\"V 	!#S + 
A
 
@A? ! 
@@!!!? 	
@@! #\" 	
@@!#
Al *))" [old-local-map dest-map src-map i src-b dest-b t current-local-map ((byte-code "!" [old-local-map use-local-map] 2)) use-local-map vectorp nil 0 keymapp local-key-binding char-to-string define-key make-sparse-keymap vm-overlay-keymap] 27))

(defun vm-discard-cached-data (&optional count) "\
Discard cached information about the current message.
When VM digs information from the headers of a message, it stores it
iunternally for future reference.  This command causes VM to forget this
information, and VM will be forced to search the headers of the message
again for these data.  VM will also have to decide again which headers
should be displayed and which should not.  Therefore this command is
useful if you change the value of vm-visible-headers or
vm-invisible-headers in the midst of a VM session.

Numeric prefix argument N means to discard data from the current message
plus the next N-1 messages.  A negative N means discard data from the
current message and the previous N-1 messages.

When invoked on marked messages (via vm-next-command-uses-marks),
data is discarded only from the marked messages in the current folder." (interactive "p") (byte-code "È	 ŉ 	 	! 	q
!* 
!?* É  !k @@HG\"I@HI@HI@HI@!A5 ) " [count vm-mail-buffer vm-summary-buffer nil mlist 1 vm-follow-summary-cursor buffer-name bufferp vm-error-if-folder-empty vm-build-visible-header-alist vm-select-marked-or-prefixed-messages 3 make-vector 0 12 2 vm-mark-for-display-update vm-update-summary-and-mode-line] 13))

(defun vm-edit-message-end nil "\
End the edit of a VM mail message and copy the new version
to the message's folder." (interactive) (byte-code "̈?
 !@HH!!? !p  
@HH!q
@>?> ! deZVe  e\"e  d\"َ 
@HHb!

		!h\" c`
@!\" +
@HI
@!= 
@! 
@I! 
@HI)+
=    )) !!	!*" [vm-message-pointer edit-buf mp inhibit-quit t vm-message-list vm-sr-clip vm-sr-min vm-sr-max vm-next-command-uses-marks buffer-read-only vm-flush-interval nil error "This is not a VM message edit buffer." buffer-name marker-buffer 0 3 "The folder buffer for this message has been killed." buffer-modified-p "The original copy of this message has been expunged." buffer-size set-marker make-marker ((byte-code "  	
\"	\"
\"" [vm-sr-clip vm-sr-min vm-sr-max nil widen narrow-to-region set-marker] 6)) widen forward-line 1 insert-buffer-substring /= 10 delete-region vm-text-end-of vm-discard-cached-data 2 7 vm-mark-for-display-update vm-stuff-virtual-attributes 4 vm-set-buffer-modified-p vm-clear-modification-flag-undos vm-preview-current-message vm-update-summary-and-mode-line message "No change." set-buffer-modified-p kill-buffer] 29))

(defun vm-edit-message-abort nil "\
Abort editing of a VM message, without updating the message's folder." (interactive) (byte-code "?
 !@HH!!? !@HI!p!!" [vm-message-pointer nil error "This is not a VM message edit buffer." buffer-name marker-buffer 0 3 "The folder buffer for this message has been killed." 4 set-buffer-modified-p kill-buffer message "Aborted, no change."] 8))

(defun vm-number-messages (&optional start-point end-point) (byte-code "
 
 
@HHJ' 
@HHJ@HH!T	=?D 	@H!IT	A( O S!Z \"*" [n message-list start-point vm-message-list end-point vm-ml-highest-message-number vm-summary-buffer 1 0 8 string-to-int int-to-string vm-copy-local-variables] 6))

(defun vm-do-needed-renumbering nil (byte-code " : 	\"" [vm-numbering-redo-start-point vm-numbering-redo-end-point nil vm-number-messages] 3))

(defun vm-reverse-link-messages nil (byte-code "	 @HH
LA *" [mp vm-message-list prev nil 0 8] 3))

(defun vm-match-visible-header (alist) (byte-code "" [match (byte-code " @@! @\"A  " [alist nil looking-at throw match] 5)] 2))

(defun vm-get-folder-type nil (byte-code " eb!! ł' !  ǂ' !' ))" [widen skip-chars-forward "
" looking-at "From " From_ "
" mmdf "^$"] 6))

(defun vm-build-message-list (&optional rebuild-markers) (byte-code " 	 
	=7 Չ
A ؉
	H ? 	ex @HHWm @HHAQ 
Zb	!* 	eb#! `b! @AH !#IHIHI HHLH !#IC	?	# 
!\\#@* HI@HIbHIHIA
}
C\"HH
L
AHHLC	H d#Iω.	)" [rebuild-markers vm-message-list tail-cons message prev-message case-fold-search list marker start-regexp sep-pattern trailer-length vm-folder-type separator-string mp end nil t vm-build-visible-header-alist mmdf "^
" "

" 6 "^From " "

From " 2 0 3 vm-last re-search-forward match-beginning looking-at set-marker make-marker 1 vm-make-message 8 search-forward setcdr] 25))

(defun vm-build-visible-header-alist nil (byte-code "B
% 
@BB\"A
A A+" [header-alist nil vheaders vm-visible-headers list vm-visible-header-alist setcdr] 5))

(defun vm-reorder-message-headers (message) (byte-code "HH HHbHH!#. H !#I\\ deZVN  e\"N  d\"ێ 
	HHb gU? ! !
!? ? ! 
b  A A`
\"P\" `
\"\" `
\"B`
\"u H I@A@Ac@\"A :!:@cA&!)!XH!!\"QI.)+)" [message t nil vm-sr-clip vm-sr-min vm-sr-max header-alist vm-visible-header-alist list buffer-read-only match-end-0 extras inhibit-quit buffer-file-name old-buffer-modified-p vm-generic-header-regexp vm-invisible-header-regexp 3 12 0 re-search-forward vm-text-of 1 set-marker make-marker match-beginning buffer-size ((byte-code "  	
\"	\"
\"" [vm-sr-clip vm-sr-min vm-sr-max nil widen narrow-to-region set-marker] 6)) buffer-modified-p forward-line 10 looking-at match-end vm-match-visible-header setcdr buffer-substring delete-region point-marker nreverse set-buffer-modified-p "^" ":"] 35))

(defun vm-read-attributes nil (byte-code "	T@H Ƃ @HHb@!#@H I@HHb@!# !b؏!e ! @G	Ww @	\"\"A@G
W AA@
\"\"@@I@A@I  @!# !b@	\"I@!?#@
\"I @	\"I@#@
\"I@HH@HH	
T@HHTA 
E-)" [mp vm-message-list vm-new-count vm-unread-count vm-total-count data nil vm-attributes-header-regexp t vm-attributes-vector-length vm-cache-vector-length vm-berkeley-mail-compatibility vm-berkeley-mail-status-header-regexp vm-totals 0 2 search-forward "

" vm-text-end-of point-marker re-search-forward vm-text-of match-beginning (byte-code "p!" [data read] 3) ((error (byte-code "	\"\"D@I" [data vm-attributes-vector-length nil vm-cache-vector-length t make-vector 0] 5))) vectorp vm-convert-v4-attributes setcar vm-extend-vector 3 1 make-vector vm-set-unread-flag looking-at ".*R.*" vm-set-new-flag] 27))

(defun vm-convert-v4-attributes (data) (byte-code "!	GZ\"\"\"\"D" [data vm-attributes-vector-length nil vm-cache-vector-length apply vector nconc vm-vector-to-list make-list make-vector] 8))

(defun vm-gobble-bookmark nil (byte-code "  deZV	2  e\"2  d\"	Ў
 eb #`
eb 
#q !!\"!!!\"))+!
? Ă ߏ)-" [old-buffer-modified-p buffer-read-only n buffer-file-name nil inhibit-quit t vm-sr-clip vm-sr-min vm-sr-max lim vm-bookmark-header-regexp buffer-modified-p buffer-size set-marker make-marker ((byte-code "  	
\"	\"
\"" [vm-sr-clip vm-sr-min vm-sr-max nil widen narrow-to-region set-marker] 6)) widen forward-line search-forward "

" re-search-forward string-to-int buffer-substring match-beginning 1 match-end delete-region 0 set-buffer-modified-p (byte-code "!" [n vm-goto-message] 2) ((error (byte-code "" [nil] 1)))] 22))

(defun vm-check-header-variables nil (byte-code " deZV!  e\"!  d\"Վ eb #`eb #  
	!bߏ!!\" 
\"? \"? ! @HI@HIA )!.))+)" [vm-sr-clip vm-sr-min vm-sr-max lim nil t vm-vheader-header-regexp old-buffer-modified-p buffer-file-name buffer-read-only vis invis got inhibit-quit vm-visible-headers vm-invisible-header-regexp mp vm-message-list buffer-size set-marker make-marker ((byte-code "  	
\"	\"
\"" [vm-sr-clip vm-sr-min vm-sr-max nil widen narrow-to-region set-marker] 6)) widen forward-line search-forward "

" re-search-forward buffer-modified-p match-beginning 1 (byte-code "p!p!É" [vis invis got t read] 4) ((error (byte-code "" [nil] 1))) delete-region 0 match-end equal message "Discarding visible header info..." 3 12 set-buffer-modified-p] 22))

(defun vm-gobble-message-order nil (byte-code " G
	 deZV@  e\"@  d\"؎ eb #`eb 
# !!bp!	G]\"!!\"  @S@IAA \"\"@> )+)!.	" [old-buffer-modified-p buffer-read-only lim v order buffer-file-name nil mp vm-message-list list-length inhibit-quit t vm-sr-clip vm-sr-min vm-sr-max vm-message-order-header-regexp vm-message-order-changed vm-message-order-stuffed vm-numbering-redo-start-point vm-message-pointer buffer-modified-p buffer-size set-marker make-marker ((byte-code "  	
\"	\"
\"" [vm-sr-clip vm-sr-min vm-sr-max nil widen narrow-to-region set-marker] 6)) widen forward-line search-forward "

" re-search-forward message "Reordering messages..." match-beginning 1 read make-vector delete-region 0 match-end delq append vm-reverse-link-messages set-buffer-modified-p] 23))

(defun vm-stuff-attributes (m &optional suppress-delete) (byte-code " deZV!  e\"!  d\"׎  
HH	
H
H	Y Y \"
HHb 
!#y !!\"!)!)&
I 
HHb 
!# !!\"
HH? 
HH  #	  \"!.)+)" [vm-sr-clip vm-sr-min vm-sr-max old-buffer-modified-p attributes cache buffer-read-only buffer-file-name nil delflag m inhibit-quit t suppress-delete vm-attributes-header-regexp vm-attributes-header print-escape-newlines vm-berkeley-mail-compatibility vm-berkeley-mail-status-header-regexp vm-berkeley-mail-status-header buffer-size set-marker make-marker ((byte-code "  	
\"	\"
\"" [vm-sr-clip vm-sr-min vm-sr-max nil widen narrow-to-region set-marker] 6)) widen buffer-modified-p 2 3 vm-set-deleted-flag-in-vector 0 forward-line re-search-forward vm-text-of delete-region match-beginning match-end insert-before-markers " (" prin1-to-string "
	" ")
" 4 1 "" "R" "O
" set-buffer-modified-p] 27))

(defun vm-stuff-virtual-attributes (message) (byte-code "		HHJ=	H	HHJH=?    
1 	HH!q	!)*" [virtual message mirror 0 6 2 marker-buffer vm-stuff-attributes] 4))

(defun vm-stuff-bookmark nil (byte-code "w  deZV	%  e\"%  d\"Ў  	eb #`eb #b !!\"@HH$!-)+)" [vm-message-pointer vm-sr-clip vm-sr-min vm-sr-max old-buffer-modified-p buffer-file-name nil buffer-read-only lim inhibit-quit t vm-bookmark-header-regexp vm-bookmark-header buffer-size set-marker make-marker ((byte-code "  	
\"	\"
\"" [vm-sr-clip vm-sr-min vm-sr-max nil widen narrow-to-region set-marker] 6)) widen buffer-modified-p forward-line search-forward "

" re-search-forward delete-region match-beginning 0 match-end insert-before-markers " " 1 "
" set-buffer-modified-p] 19))

(defun vm-stuff-header-variables nil (byte-code "  deZV	%  e\"%  d\"ӎ  	eb #`eb #e !!\"!!&!.)+)" [vm-message-pointer vm-sr-clip vm-sr-min vm-sr-max old-buffer-modified-p print-escape-newlines t buffer-read-only lim buffer-file-name nil inhibit-quit vm-vheader-header-regexp vm-vheader-header vm-visible-headers vm-invisible-header-regexp buffer-size set-marker make-marker ((byte-code "  	
\"	\"
\"" [vm-sr-clip vm-sr-min vm-sr-max nil widen narrow-to-region set-marker] 6)) widen buffer-modified-p forward-line search-forward "

" re-search-forward delete-region match-beginning 0 match-end insert-before-markers " " prin1-to-string "
" set-buffer-modified-p] 23))

(defun vm-stuff-message-order nil (byte-code "A  deZV	&  e\"&  d\"ӎ  !
	
\"
eb #`eb #t !!\"\"߉	
 
@HH!	T	
A

 	\"! 炰 ! !̉!.)+)" [vm-message-list vm-sr-clip vm-sr-min vm-sr-max old-buffer-modified-p buffer-file-name nil buffer-read-only lim n mp inhibit-quit t vm-message-order-header-regexp vm-message-order-header vm-message-order-stuffed buffer-size set-marker make-marker ((byte-code "  	
\"	\"
\"" [vm-sr-clip vm-sr-min vm-sr-max nil widen narrow-to-region set-marker] 6)) widen buffer-modified-p copy-sequence sort (lambda (p q) (byte-code "HH	HHW" [p q 0] 3)) forward-line search-forward "

" re-search-forward delete-region match-beginning 0 match-end insert-before-markers "
	(" 1 zerop mod 15 "
	 " " " ")
" set-buffer-modified-p] 24))

(defun vm-change-all-new-to-unread nil (byte-code "	# @HH @\"@\"A )" [mp vm-message-list nil t 2 0 vm-set-new-flag vm-set-unread-flag] 5))

(defun vm-highlight-headers (message window) (byte-code " 	 	!
!X ɋ)" [vm-highlighted-header-regexp window message t vm-generic-header-regexp inverse-video nil window-start vm-text-of ((byte-code "!b	
!#R !b!I !be`\"!Éeb `!\"!Ɖ!bM !b) " [window vm-highlighted-header-regexp message t vm-generic-header-regexp inverse-video nil window-start re-search-forward vm-text-of match-beginning 0 looking-at 2 narrow-to-region sit-for widen match-end] 16))] 4))

(defun vm-unread-message (&optional count) "\
Set the `unread' attribute for the current message.  If the message is
already new or unread, then it left unchanged.

Numeric prefix argument N mans to unread the current message plus the
next N-1 messages.  A negative N means unread the current message and
the previous N-1 messages.

When invoked on marked messages (via vm-next-command-uses-marks),
all marked messages are affected, other messages are ignored." (interactive "p") (byte-code "È	 Ɖ 	 	! 	q
!* 
!?* É !X @HH?G @HH?O @\"A2 ) " [count vm-mail-buffer vm-summary-buffer nil mlist t 1 vm-follow-summary-cursor buffer-name bufferp vm-error-if-folder-empty vm-select-marked-or-prefixed-messages 2 0 vm-set-unread-flag vm-update-summary-and-mode-line] 10))

(defun vm-quit-no-change nil "\
Exit VM without saving changes made to the folder." (interactive) (byte-code "!" [t nil vm-quit] 2))

(defun vm-quit (&optional no-change) "\
Quit VM, saving changes and expunging deleted messages." (interactive) (byte-code "Ĉ ! q	>? 
\"!+ !?+ ĉ!7 !	=C  r  r !?r \"?r Un o #!?{ !    	 !? ! 	= !? !!? !   ? !  ? !p = !!q!p!*)" [vm-mail-buffer major-mode this-command vm-summary-buffer nil vm-virtual-buffers no-change vm-messages-not-on-disk vm-undo-record-list vm-confirm-quit t inhibit-quit vm-folder-read-only summary-buffer mail-buffer vm-mutable-windows buffer-name (vm-mode vm-virtual-mode) error "%s must be invoked from a VM buffer." bufferp vm-trim-dead-buffers "Can't execute command: folder is referenced virtually." vm-virtual-mode vm-virtual-quit buffer-modified-p zerop assq vm-set-buffer-modified-p y-or-n-p format "%d message%s have not been saved to disk, quit anyway? " 1 "" "s" "Aborted" "There are unsaved changes, quit anyway? " "Do you really want to quit? " message "Quitting..." vm-change-all-new-to-unread vm-save-folder delete-windows-on kill-buffer set-buffer-modified-p] 30))

(defun vm-checkpoint-prologue-hook nil (byte-code "	=
 + $ @H @!A )	Ň" [vm-checkpoint-modification-counter vm-modification-counter nil mp vm-message-list t 4 vm-stuff-attributes] 4))

(defun vm-checkpoint-epilogue-hook nil (byte-code "\"" [buffer-auto-save-file-name set-file-modes 384] 3))

(defun vm-flush-timer-function nil (byte-code "	\" ? \"" [current-timer vm-flush-interval nil set-timer-restart vm-flush-cached-data] 5))

(defun vm-flush-cached-data nil (byte-code "   ?` @q
=W É=?W 1  ?L @HA @!A) ?V )A f 	*)" [buf-list found-one major-mode t vm-modification-counter vm-flushed-modification-counter mp vm-message-list buffer-list nil input-pending-p vm-mode 4 vm-stuff-attributes] 8))

(defun vm-write-file-hook nil (byte-code "= 	?  deZV
+  e\"+  d\"ӎ	T @HI @!A7 o    o o  ډ qډ)+)+" [major-mode vm-inhibit-write-file-hook vm-sr-clip vm-sr-min vm-sr-max inhibit-quit t mp vm-message-list buffer-read-only nil vm-retain-message-order vm-message-order-changed vm-buffer-modified-p vm-summary-buffer vm-mode buffer-size set-marker make-marker ((byte-code "  	
\"	\"
\"" [vm-sr-clip vm-sr-min vm-sr-max nil widen narrow-to-region set-marker] 6)) 4 vm-stuff-attributes vm-do-needed-renumbering vm-stuff-bookmark vm-stuff-header-variables vm-stuff-message-order "--??-"] 12))

(defun vm-save-buffer (prefix) (interactive "P") (byte-code "ň ! q	= 
\"!ŉ " [vm-mail-buffer major-mode this-command prefix vm-block-new-mail nil vm-buffer-modified-p vm-message-order-changed buffer-name vm-virtual-mode error "%s cannot be applied to virtual folders." save-buffer vm-update-summary-and-mode-line] 5))

(defun vm-write-file nil (interactive) (byte-code "Ĉ ! q	= 
\"!ĉ " [vm-mail-buffer major-mode this-command vm-block-new-mail nil vm-buffer-modified-p vm-message-order-changed buffer-name vm-virtual-mode error "%s cannot be applied to virtual folders." call-interactively write-file vm-update-summary-and-mode-line] 5))

(defun vm-save-folder (&optional quitting prefix) "\
Save current folder to disk.
Prefix args are handled the same for the command save-buffer." (interactive (byte-code "	D" [nil current-prefix-arg] 2)) (byte-code "
 
! 
q !\" !?\" =- \"  !ݏ!	i @H^ @!AL 	    
   !!)\" !  쏈?     * !" [nil current-prefix-arg vm-mail-buffer vm-summary-buffer major-mode this-command inhibit-quit t mp vm-message-list vm-retain-message-order vm-message-order-changed vm-inhibit-write-file-hook prefix vm-messages-not-on-disk vm-block-new-mail vm-delete-empty-folders quitting vm-message-pointer buffer-name vm-sanity-check-modification-flag bufferp vm-virtual-mode error "%s cannot be applied to virtual folders." buffer-modified-p message "Expunging..." (byte-code "\"" [quitting t vm-expunge-folder] 3) ((error (byte-code "" [nil] 1))) "Stuffing attributes..." 4 vm-stuff-attributes vm-do-needed-renumbering vm-stuff-bookmark vm-stuff-header-variables vm-stuff-message-order "Saving..." save-buffer vm-set-buffer-modified-p 0 zerop buffer-size (byte-code "!\"" [buffer-file-name delete-file message "%s removed"] 4) ((error (byte-code "" [nil] 1))) vm-update-summary-and-mode-line vm-next-message "No changes need to be saved"] 22))

(defun vm-handle-file-recovery nil (byte-code "  = 	 	@HHU8 
! 
!' 
!ÉƉ!" [major-mode vm-message-list vm-summary-buffer nil vm-message-pointer vm-block-new-mail t buffer-file-name buffer-modified-p vm-mode 0 3 1 bufferp kill-buffer vm] 5))

(defun vm-handle-file-reversion nil (byte-code " ? = 	 	@HHUX 
# 
!) 
!)É!	?S !!!!É!X   " [major-mode vm-message-list vm-summary-buffer nil t vm-message-pointer buffer-file-name buffer-modified-p vm-mode 0 3 1 bufferp kill-buffer vm-build-message-list message "Partial revert failed; disk version of folder has too few messages..." sleep-for "Assuming file changed completely; rebuilding message list..." vm vm-assimilate-new-messages vm-preview-current-message] 12))

(defun vm-visit-folder (folder &optional read-only) "\
Visit a mail file.
VM will parse and present its messages to you in the usual way.

First arg FOLDER specifies the mail file to visit.  When this
command is called interactively the file name is read from the
minibuffer.

Prefix arg or optional second arg READ-ONLY non-nil indicates
that the folder should be considered read only.  No attribute
changes, messages additions or deletions will be allowed in the
visited folder." (interactive (byte-code "  ! q
 
! 	( ̂) 4 \"5 #	$D))" [vm-mail-buffer default-directory vm-folder-directory current-prefix-arg vm-last-save-folder t vm-session-initialization buffer-name expand-file-name read-file-name format "Visit%s folder:%s " " read only" "" " (default %s)"] 10)) (byte-code "ǈ  ! q!% !?% ǉ	\"" [vm-mail-buffer default-directory vm-folder-directory current-prefix-arg vm-last-save-folder t vm-summary-buffer nil folder read-only vm-session-initialization buffer-name bufferp vm] 7))

(defun vm-help nil "\
Display VM command and variable information." (interactive) (byte-code "ƈ	 ! q	 
==\"  < =. !< >: !<  )" [vm-mail-buffer pop-up-windows vm-mutable-windows t last-command vm-system-state nil get-buffer-window vm-help describe-mode previewing message "Type SPC to read message, n previews next message   (? gives more help)" (showing reading) "SPC and b scroll, (d)elete, (s)ave, (n)ext, (r)eply   (? gives more help)"] 6))

(defun vm-move-mail (source destination) (byte-code "
!!&
!\" !8\"% !" [vm-movemail-program nil source destination vm-athena-fake-spool-file call-process expand-file-name string= equal 0 7 file-attributes delete-file] 10))

(defun vm-gobble-crash-box nil (byte-code " deZV!  e\"!  d\"ώ d 	!dbԊq  )T#d
%׏!!ۏ-)+)" [vm-sr-clip vm-sr-min vm-sr-max opoint-max crash-buf buffer-read-only old-buffer-modified-p inhibit-local-variables t vm-crash-box buffer-file-name nil buffer-size set-marker make-marker ((byte-code "  	
\"	\"
\"" [vm-sr-clip vm-sr-min vm-sr-max nil widen narrow-to-region set-marker] 6)) widen buffer-modified-p find-file-noselect insert-buffer-substring 1 write-region (byte-code "\"" [buffer-file-name set-file-modes 384] 3) ((error (byte-code "" [nil] 1))) set-buffer-modified-p kill-buffer (byte-code "!" [vm-crash-box delete-file] 2) ((error (byte-code "" [nil] 1)))] 17))

(defun vm-compatible-folder-p (file) (byte-code "!\"? ň   !! Ăm !?] !?5 ĂZ ̎!	&	q !W 
 =)))m 	q !l 
 =)*" [file buffer type vm-folder-type t nil string= expand-file-name zerop buffer-size get-file-buffer file-exists-p ((byte-code " !" [buffer kill-buffer] 2)) generate-new-buffer " *vm work*" call-process "sed" "-n" "1p" vm-get-folder-type] 16))

(defun vm-check-for-spooled-mail nil (byte-code "	
 
 PCC\"? @!8\"?, @!, @!7 Ɖ; A *" [spool-files vm-spool-files vm-spool-directory vm-crash-box new-mail nil t append user-login-name equal 0 7 file-attributes file-readable-p vm-compatible-folder-p] 9))

(defun vm-get-spooled-mail nil (byte-code " !
  PC!- ! !ŉ	p 	@!8\"?J 	@!J 	@!g 	@\"	@\" 	@\"ŉ	A. +" [vm-block-new-mail spool-files vm-spool-files vm-spool-directory inhibit-quit t got-mail nil vm-crash-box error "Can't get new mail until you save this folder." user-login-name file-exists-p message "Recovering messages from crash box..." vm-gobble-crash-box "Recovering messages from crash box... done" equal 0 7 file-attributes file-readable-p vm-compatible-folder-p "Getting new mail from %s..." vm-move-mail "Getting new mail from %s... done"] 17))

(defun vm-get-new-mail (&optional arg) "\
Move any new mail that has arrived in the system mailbox into the
primary inbox.  New mail is appended to the disk and buffer copies of
the primary inbox.

Prefix arg means to gather mail from a user specified folder, instead of
the usual spool file(s).  The file name will be read from the minibuffer.
Unlike when getting mail from a spool file, in this case the folder is left
undisturbed after its messages have been copied." (interactive "P") (byte-code " ! q	! 	!? =* \"8 pC\"+ ?L ?L  L  f ![ !!=?f  ?  y  y  ? !!!  !   #
	#		!? 	\" deZV  e\"  d\" db	!)+)?  @
  ! @
Z\\\"!+" [vm-mail-buffer vm-summary-buffer nil major-mode this-command vm-folder-read-only arg vm-primary-inbox-p vm-primary-inbox folder mcount buffer-read-only vm-folder-directory t vm-sr-clip vm-sr-min vm-sr-max vm-totals vm-messages-not-on-disk buffer-name bufferp vm-virtual-mode error "%s cannot be applied to virtual folders." signal folder-read-only vm-athena-check-pop-mail vm-check-for-spooled-mail switch-to-buffer get-file-buffer find-file-noselect vm-mode vm-athena-make-fake-spool vm-get-spooled-mail vm-assimilate-new-messages message "No new mail." sit-for 4 "" vm-deferred-message vm-emit-totals-blurb vm-thoughtfully-select-message vm-update-summary-and-mode-line read-file-name "Gather mail from folder: " vm-compatible-folder-p "Folder %s is not the same format as this folder." buffer-size set-marker make-marker ((byte-code "  	
\"	\"
\"" [vm-sr-clip vm-sr-min vm-sr-max nil widen narrow-to-region set-marker] 6)) widen insert-file-contents vm-read-attributes "No messages gathered."] 39))

(defun vm-emit-totals-blurb nil (byte-code " ! q	?  	@	@U% ǂ& 	A@	AA@%)" [vm-mail-buffer vm-totals buffer-name vm-read-attributes message "%d message%s, %d new, %d unread." 1 "" "s"] 8))

(defun vm-assimilate-new-messages nil (byte-code "	!	? deZV(  e\"(  d\"Ў   
: A

I 
P ֏)+ˉ

)*" [tail-cons vm-message-list new-messages-p vm-sr-clip vm-sr-min vm-sr-max vm-numbering-redo-start-point vm-summary-redo-start-point vm-current-grouping nil vm-need-summary-pointer-update t vm-last buffer-size set-marker make-marker ((byte-code "  	
\"	\"
\"" [vm-sr-clip vm-sr-min vm-sr-max nil widen narrow-to-region set-marker] 6)) widen vm-build-message-list vm-read-attributes data (byte-code "!" [vm-current-grouping vm-group-messages] 2) ((error (byte-code "A@!!" [data message sleep-for 2] 3)))] 12))

(defun vm-select-marked-or-prefixed-messages (prefix) (byte-code "	=  S W ̂ !=?, !!?N @BS!?J 
!- +!)" [mlist last-command direction prefix count vm-message-pointer vm-circular-folders t nil vm-next-command-uses-marks vm-marked-messages 0 backward forward vm-abs vm-check-count zerop vm-move-message-pointer nreverse] 8))

(defun vm-display-startup-message nil (byte-code "!+ 	
\"ĉ! * @!!A )!" [lines vm-startup-message-lines vm-version vm-startup-message-displayed t sit-for 5 message "VM %s, Copyright (C) 1991 Kyle E. Jones; type ? for help" 4 substitute-command-keys ""] 8))

(defun vm-load-rc (&optional interactive) (interactive "p") (byte-code "È? 	 	?	?$" [vm-rc-loaded interactive t nil load "~/.vm"] 5))

(defun vm-session-initialization nil (byte-code "!? 2 ! 
. Ï# 
!. !É!É" [vm-session-beginning t vm-window-configuration-file nil boundp random vm-load-rc (byte-code "!" [t require screen] 2) vm-load-window-configurations message "can't support window configurations without the screen package... sorry." sleep-for 2] 8))

(defun vm (&optional folder read-only) "\
Read mail under Emacs.
Optional first arg FOLDER specifies the folder to visit.  It defaults
to the value of vm-primary-inbox.  The folder buffer is put into VM
mode, a major mode for reading mail.

Prefix arg or optional second arg READ-ONLY non-nil indicates
that the folder should be considered read only.  No attribute
changes, messages additions or deletions will be allowed in the
visited folder.

Visiting the primary inbox causes any contents of the system mailbox to
be moved and appended to the resulting buffer.

All the messages can be read by repeatedly pressing SPC.  Use `n'ext and
`p'revious to move about in the folder.  Messages are marked for
deletion with `d', and saved to another folder with `s'.  Quitting VM
with `q' expunges deleted messages and saves the buffered folder to
disk.

See the documentation for vm-mode for more information." (interactive (byte-code "	D" [nil current-prefix-arg] 2)) (byte-code " !?! X ' 	!!8 \"W !W K !P 

!))q !| !?|   =?  \" p!!!    ? ?      ? ) ?   !^!?[$=p!3!=D=DP!! =Z )ap!qm @ !A B C D E !?F E G $?H  I !J !K L !?M  N  ?!,," [nil current-prefix-arg inhibit-local-variables t full-startup folder mail-buffer already-existed file vm-primary-inbox default-directory vm-folder-directory vm-folder-read-only read-only vm-summary-buffer vm-messages-not-on-disk first-time major-mode auto-save-newer buffer-file-name inhibit-quit blurb vm-primary-inbox-p vm-message-list vm-startup-with-summary vm-mutable-windows pop-up-windows vm-flush-interval vm-inhibit-startup-message vm-startup-message-displayed vm-session-initialization bufferp expand-file-name file-directory-p error "%s is a directory" get-file-buffer find-file-noselect vm-sanity-check-modification-flag buffer-name buffer-modified-p 0 vm-mode file-newer-than-file-p make-auto-save-file-name buffer-flush-undo abbrev-mode auto-fill-mode vm-mode-internal vm-athena-make-fake-spool vm-get-spooled-mail ((byte-code "p!q	 	!q 
?% \" !9 1      )" [mail-buffer vm-summary-buffer vm-message-list full-startup first-time blurb delete-windows-on vm-assimilate-new-messages message "Folder is empty." vm-check-header-variables vm-gobble-message-order vm-gobble-bookmark vm-emit-totals-blurb vm-thoughtfully-select-message] 10)) vm-emit-totals-blurb vm-summarize message vm-set-window-configuration startup switch-to-buffer display-buffer select-window get-buffer-window delete-other-windows vm-proportion-windows vm-preview-current-message numberp data (byte-code "!" [t require timer] 2) ((error (byte-code "!!" [nil message "can't support numeric vm-flush-interval without interval timers... sorry." sleep-for 2] 3))) get-timer "vm-flush" start-timer vm-flush-timer-function discard-input "Not checking for new mail... auto save file is newer; consider M-x recover-file" "Auto save file is newer; consider M-x recover-file" sit-for 3 vm-display-startup-message input-pending-p] 44))

(defun vm-mode nil "\
Major mode for reading mail.

Commands:
   h - summarize folder contents
   j - discard cached information about the current message

   n - go to next message
   p - go to previous message
   N - like `n' but ignores skip-variable settings
   P - like `p' but ignores skip-variable settings
 M-n - go to next unread message
 M-p - go to previous unread message
 RET - go to numbered message (uses prefix arg or prompts in minibuffer)
 TAB - go to last message seen
 M-s - incremental search through the folder

   t - display hidden headers
 SPC - scroll forward a page (if at end of message, then display next message)
   b - scroll backward a page
   < - go to beginning of current message
   > - go to end of current message

   d - delete message, prefix arg deletes messages forward (flag as deleted)
 C-d - delete message, prefix arg deletes messages backward (flag as deleted)
   u - undelete
   k - flag for deletion all messages with same subject as the current message

   r - reply (only to the sender of the message)
   R - reply with included text for current message
 M-r - extract and resend bounced message
   f - followup (reply to all recipients of message)
   F - followup with included text from the current message
   z - forward the current message
   m - send a message
   B - resend the current message to another user.
   c - continue composing the most recent message you were composing

   @ - digestify and mail entire folder contents (the folder is not modified)
   * - burst a digest into individual messages, and append and assimilate these
       message into the current folder.

   G - group messages according to some criteria

   g - get any new mail that has arrived in the system mailbox
       (new mail is appended to the disk and buffer copies of the
       primary inbox.)
   v - visit another mail folder
   V - visit a virtual folder

   e - edit the current message

   s - save current message in a folder (appends if folder already exists)
   w - write current message to a file without its headers (appends if exists)
   S - save entire folder to disk, expunging deleted messages
   A - save unfiled messages to their vm-auto-folder-alist specified folders
   # - expunge deleted messages (without saving folder)
   q - quit VM, deleted messages are expunged, folder saved to disk
   x - exit VM with no change to the folder

 M N - use marks; the next vm command will affect only marked messages
       if it makes sense for the command to do so

       M M - mark the current message
       M U - unmark the current message
       M m - mark all messsages
       M u - unmark all messsages
       M ? - help for the mark commands

 W S - save the current window configuration to a name
 W D - delete a window configuration
 W W - apply a configuration
 W ? - help for the window configuration commands

 C-_ - undo, special undo that retracts the most recent
             changes in message attributes.  Expunges and saves
             cannot be undone.  C-x u is also bound to this
             command.

   L - reload your VM init file, ~/.vm

   ? - help

   ! - run a shell command
   | - run a shell command with the current message as input

 M-C - view conditions under which you may redistribute VM
 M-W - view the details of VM's lack of a warranty

Variables:
   vm-auto-center-summary
   vm-auto-folder-alist
   vm-auto-folder-case-fold-search
   vm-auto-next-message
   vm-berkeley-mail-compatibility
   vm-circular-folders
   vm-confirm-new-folders
   vm-confirm-quit
   vm-crash-box
   vm-delete-after-archiving
   vm-delete-after-bursting
   vm-delete-after-saving
   vm-delete-empty-folders
   vm-digest-center-preamble
   vm-digest-preamble-format
   vm-folder-directory
   vm-folder-read-only
   vm-follow-summary-cursor
   vm-forwarding-subject-format
   vm-gargle-uucp
   vm-group-by
   vm-highlighted-header-regexp
   vm-honor-page-delimiters
   vm-in-reply-to-format
   vm-included-text-attribution-format
   vm-included-text-prefix
   vm-inhibit-startup-message
   vm-invisible-header-regexp
   vm-keep-sent-messages
   vm-mail-header-from
   vm-mail-window-percentage
   vm-mode-hooks
   vm-move-after-deleting
   vm-move-after-undeleting
   vm-mutable-windows
   vm-preview-lines
   vm-preview-read-messages
   vm-primary-inbox
   vm-retain-message-order
   vm-reply-ignored-addresses
   vm-reply-subject-prefix
   vm-rfc934-forwarding
   vm-search-using-regexps
   vm-skip-deleted-messages
   vm-skip-read-messages
   vm-spool-files
   vm-startup-with-summary
   vm-strip-reply-headers
   vm-summary-format
   vm-virtual-folder-alist
   vm-virtual-mirror
   vm-visible-headers
   vm-visit-when-saving
   vm-window-configuration-file" (interactive) (byte-code "p!" [nil vm] 2))

(defun vm-mode-internal nil (byte-code " 	 !\"!!" [case-fold-search t checkpoint-direct-conversion-hooks checkpoint-epilogue-hooks major-mode mode-line-format vm-mode-line-format mode-name buffer-read-only vm-message-list nil vm-message-pointer vm-current-grouping vm-group-by vm-folder-type vm-primary-inbox-p buffer-file-name vm-primary-inbox vm-mode-map widen (vm-checkpoint-prologue-hook) (vm-checkpoint-epilogue-hook) vm-mode "VM" vm-get-folder-type equal expand-file-name use-local-map run-hooks vm-mode-hooks] 7))

(put (quote vm-mode) (quote mode-class) (quote special))

(if (not (memq (quote vm-write-file-hook) write-file-hooks)) (setq write-file-hooks (cons (quote vm-write-file-hook) write-file-hooks)))

(if (not (memq (quote vm-handle-file-recovery) find-file-hooks)) (setq find-file-hooks (nconc find-file-hooks (quote (vm-handle-file-recovery vm-handle-file-reversion)))))

(defun vm-group-by (compare-function) (byte-code " ˍ \"!\"Ɖ =9 ?9 !," [buckets bp cons mp vm-message-list vm-message-order-changed t vm-retain-message-order vm-folder-read-only nil found (byte-code "1 	
@@@#( 

A\"@\"\"\"A  

A\"B" [bp compare-function mp cons nil t buckets funcall setcdr setcar nconc throw found] 8) apply nconc nreverse mapcar vm-reverse-link-messages vm-set-buffer-modified-p] 6))

(defconst vm-group-by-subject-closure (cons t t))

(defun vm-group-by-subject (m1 m2) (byte-code "	!
@= 
AD 
\"\"& !O\"6 !O!Q
\"!\")" [subject m1 vm-group-by-subject-closure m2 vm-su-subject setcar string-match "^\\(re: *\\)+" match-end 0 nil " +$" match-beginning "^\\(re: *\\)*" regexp-quote " *$" setcdr] 12))

(defun vm-group-by-author (m1 m2) (byte-code "!	!\"" [m1 m2 string= vm-su-full-name] 5))

(defun vm-group-by-recipient (m1 m2) (byte-code "!	!\"" [m1 m2 equal vm-su-to-names] 5))

(defun vm-group-by-date-sent (m1 m2) (byte-code "!	!\" !	!\" !	!\"" [m1 m2 string= vm-su-monthday vm-su-month vm-su-year] 11))

(defun vm-revert-to-physical-order nil (byte-code "	@@ĉ\" / =/ 
?/ !*" [curr vm-message-pointer last vm-last-message-pointer nil vm-message-list vm-message-order-changed vm-message-order-stuffed vm-retain-message-order t vm-folder-read-only sort (lambda (p q) (byte-code "HH	HHW" [p q 0] 3)) vm-reverse-link-messages vm-set-buffer-modified-p] 4))

(defun vm-group-messages (grouping) "\
Group messages by the argument GROUPING.
Interactively this argument is prompted for in the minibuffer,
with completion." (interactive (byte-code " \"	$C" [vm-group-by vm-supported-groupings-alist t completing-read format "Group messages by (default %s): " "physical-order" identity] 6)) (byte-code "ň ! q! !? ŉ\", 6 ;?A \"M \"M ŉ P!!?h \" \"!\"	
)  	
t ! " [vm-group-by vm-supported-groupings-alist t vm-mail-buffer vm-summary-buffer nil grouping group-function vm-current-grouping vm-numbering-redo-start-point vm-summary-redo-start-point buffer-name bufferp equal "" error "Unsupported grouping: %s" "physical-order" intern "vm-group-by-" fboundp vm-revert-to-physical-order message "Grouping messages by %s..." "Grouping messages by %s... done" "Reverted to folder's physical ordering" vm-update-summary-and-mode-line] 17))

(defun vm-move-message-forward (count) "\
Move a message forward in a VM folder.
Prefix arg COUNT causes the current message to be moved COUNT messages forward.
A negative COUNT causes movement to be backward instead of forward.
COUNT defaults to 1.  The current message remains selected after being
moved." (interactive "p") (byte-code "  ! q	!\" 	!?\"  V: ق; !!?Z !SC @HH!@HH!Vs A=~ ? 	! @HHJ@HHJ A\"A A@HHL A		@HHL \"@HHL 		@HHL\"@HHLˉ
=?!?0		@?G	A@?^@HH!@HH!WtAAA@A@		\"ˉ=?@!@BA!\"\"#*. " [vm-mail-buffer vm-summary-buffer nil ovmp vm-message-pointer vmp-prev ovmp-prev direction count vm-message-list vm-message-order-changed t vm-retain-message-order vm-folder-read-only vm-numbering-redo-start-point vm-numbering-redo-end-point vm-summary-pointer list mp vm-need-summary-pointer-update vm-follow-summary-cursor buffer-name bufferp vm-error-if-folder-empty 0 forward backward vm-abs zerop vm-move-message-pointer string-to-int 1 vm-last 8 setcdr vm-set-buffer-modified-p vm-copy-local-variables vm-mark-for-display-update vm-mapc (lambda (m p) (byte-code "H	@IH	A@I" [m p 1 2 3] 3)) nreverse sort mapcar (lambda (p) (byte-code "HHHHD" [p 1 2 3] 3)) (lambda (p q) (byte-code "@	@W" [p q] 2)) vm-update-summary-and-mode-line] 27))

(defun vm-move-message-backward (count) "\
Move a message backward in a VM folder.
Prefix arg COUNT causes the current message to be moved COUNT
messages backward.  A negative COUNT causes movement to be
forward instead of backward.  COUNT defaults to 1.  The current
message remains selected after being moved." (interactive "p") (byte-code "[!" [count nil vm-move-message-forward] 2))

(defun vm-show-copying-restrictions (&optional warranty) (interactive) (byte-code "!Ə ȏ !+ #! `\"" [warranty nil t require info (byte-code "!" [t Info-goto-node "(vm)License"] 2) ((error (byte-code "" [nil] 1))) (byte-code "!" [t Info-goto-node "(vm.info)License"] 2) ((error (byte-code "" [nil] 1))) error "VM Info documentation appears not to be installed" search-forward "NO WARRANTY
" forward-line -1 set-window-start selected-window] 8))

(defun vm-show-no-warranty nil "\
Display \"NO WARRANTY\" section of the GNU General Public License." (interactive) (byte-code "!" [t nil vm-show-copying-restrictions] 2))

(defun vm-clear-all-marks nil "\
Removes all message marks in the current folder." (interactive) (byte-code " ! q	! 	!?  > @HI@!A% ) " [vm-mail-buffer vm-summary-buffer nil mp vm-message-list buffer-name bufferp vm-error-if-folder-empty 1 vm-mark-for-display-update vm-update-summary-and-mode-line] 8))

(defun vm-mark-all-messages nil "\
Mark all messages in the current folder." (interactive) (byte-code " ! q	! 	!?  > @HI@!A% ) " [vm-mail-buffer vm-summary-buffer nil mp vm-message-list t buffer-name bufferp vm-error-if-folder-empty 1 vm-mark-for-display-update vm-update-summary-and-mode-line] 8))

(defun vm-mark-message (count) "\
Mark the current message.
Numeric prefix argument N means mark the current message and the next
N-1 messages.  A negative N means mark the current message and the
previous N-1 messages." (interactive "p") (byte-code "t   ! q	!& 	!?&  =?4 !W? ς@ !!? @HH?n @HI@!S!? !N , " [vm-mail-buffer vm-summary-buffer nil vm-circular-folders t count direction oldmp vm-message-pointer vm-follow-summary-cursor buffer-name bufferp vm-error-if-folder-empty vm-check-count 0 backward forward vm-abs zerop 1 vm-mark-for-display-update vm-move-message-pointer vm-update-summary-and-mode-line] 13))

(defun vm-unmark-message (count) "\
Remove the mark from the current message.
Numeric prefix argument N means unmark the current message and the next
N-1 messages.  A negative N means unmark the current message and the
previous N-1 messages." (interactive "p") (byte-code "t   ! q	!& 	!?&  =?4 !W? ς@ !!? @HHm @HI@!S!?~ !N , " [vm-mail-buffer vm-summary-buffer nil vm-circular-folders t count direction oldmp vm-message-pointer vm-follow-summary-cursor buffer-name bufferp vm-error-if-folder-empty vm-check-count 0 backward forward vm-abs zerop 1 vm-mark-for-display-update vm-move-message-pointer vm-update-summary-and-mode-line] 13))

(defun vm-next-command-uses-marks nil "\
Does nothing except insure that the next VM command will operate only
on the marked messages in the current folder." (interactive) (byte-code "!r" [unread-command-char nil message "Next command uses marks..."] 3))

(defun vm-marked-messages nil (byte-code "
	  	@HH 	@B	A !*" [list mp vm-message-list nil 1 nreverse] 3))

(defun vm-mark-help nil (interactive) (byte-code "!" [nil message "MM = mark, MU = unmark, Mm = mark all, Mu = unmark all, MN - use marks"] 2))

(defmacro vm-virtual-data-of (message) (byte-code "E" [message aref 0] 3))

(defmacro vm-start-of (message) (byte-code "EE" [message aref 0] 4))

(defun vm-vheaders-of (message) (byte-code "HH !HH" [message 0 1 vm-reorder-message-headers] 3))

(defun vm-text-of (message) (byte-code "HH !HH" [message 0 2 vm-find-and-set-text-of] 3))

(defmacro vm-end-of (message) (byte-code "EE" [message aref 0 3] 4))

(defmacro vm-edit-buffer-of (message) (byte-code "EE" [message aref 0 4] 4))

(defmacro vm-message-type-of (message) (byte-code "EE" [message aref 0 5] 4))

(defmacro vm-real-message-of (message) (byte-code "EED" [message symbol-value aref 0 6] 5))

(defmacro vm-virtual-messages-of (message) (byte-code "EE" [message aref 0 7] 4))

(defmacro vm-reverse-link-of (message) (byte-code "EED" [message symbol-value aref 0 8] 5))

(defmacro vm-softdata-of (message) (byte-code "E" [message aref 1] 3))

(defmacro vm-number-of (message) (byte-code "EE" [message aref 1 0] 4))

(defmacro vm-mark-of (message) (byte-code "EE" [message aref 1] 4))

(defmacro vm-su-start-of (message) (byte-code "EE" [message aref 1 2] 4))

(defmacro vm-su-end-of (message) (byte-code "EE" [message aref 1 3] 4))

(defmacro vm-attributes-of (message) (byte-code "E" [message aref 2] 3))

(defmacro vm-new-flag (message) (byte-code "EE" [message aref 2 0] 4))

(defmacro vm-unread-flag (message) (byte-code "EE" [message aref 2 1] 4))

(defmacro vm-deleted-flag (message) (byte-code "EE" [message aref 2] 4))

(defmacro vm-filed-flag (message) (byte-code "EE" [message aref 2 3] 4))

(defmacro vm-replied-flag (message) (byte-code "EE" [message aref 2 4] 4))

(defmacro vm-written-flag (message) (byte-code "EE" [message aref 2 5] 4))

(defmacro vm-forwarded-flag (message) (byte-code "EE" [message aref 2 6] 4))

(defmacro vm-edited-flag (message) (byte-code "EE" [message aref 2 7] 4))

(defmacro vm-cache-of (message) (byte-code "E" [message aref 3] 3))

(defmacro vm-byte-count-of (message) (byte-code "EE" [message aref 3 0] 4))

(defmacro vm-weekday-of (message) (byte-code "EE" [message aref 3 1] 4))

(defmacro vm-monthday-of (message) (byte-code "EE" [message aref 3 2] 4))

(defmacro vm-month-of (message) (byte-code "EE" [message aref 3] 4))

(defmacro vm-year-of (message) (byte-code "EE" [message aref 3 4] 4))

(defmacro vm-hour-of (message) (byte-code "EE" [message aref 3 5] 4))

(defmacro vm-zone-of (message) (byte-code "EE" [message aref 3 6] 4))

(defmacro vm-full-name-of (message) (byte-code "EE" [message aref 3 7] 4))

(defmacro vm-from-of (message) (byte-code "EE" [message aref 3 8] 4))

(defmacro vm-message-id-of (message) (byte-code "EE" [message aref 3 9] 4))

(defmacro vm-line-count-of (message) (byte-code "EE" [message aref 3 10] 4))

(defmacro vm-subject-of (message) (byte-code "EE" [message aref 3 11] 4))

(defmacro vm-vheaders-regexp-of (message) (byte-code "EE" [message aref 3 12] 4))

(defmacro vm-to-of (message) (byte-code "EE" [message aref 3 13] 4))

(defmacro vm-to-names-of (message) (byte-code "EE" [message aref 3 14] 4))

(defmacro vm-month-number-of (message) (byte-code "EE" [message aref 3 15] 4))

(defmacro vm-modflag-of (message) (byte-code "E" [message aref 4] 3))

(defmacro vm-set-virtual-data-of (message vdata) (byte-code "	F" [message vdata aset 0] 4))

(defmacro vm-set-start-of (message start) (byte-code "E	F" [message start aset aref 0] 4))

(defmacro vm-set-vheaders-of (message vh) (byte-code "E	F" [message vh aset aref 0 1] 4))

(defmacro vm-set-text-of (message text) (byte-code "E	F" [message text aset aref 0 2] 4))

(defmacro vm-set-end-of (message end) (byte-code "E	F" [message end aset aref 0 3] 4))

(defmacro vm-set-edit-buffer-of (message buf) (byte-code "E	F" [message buf aset aref 0 4] 4))

(defmacro vm-set-message-type-of (message type) (byte-code "E	F" [message type aset aref 0 5] 4))

(defmacro vm-set-real-message-sym-of (message sym) (byte-code "E	F" [message sym aset aref 0 6] 4))

(defmacro vm-set-virtual-messages-of (message list) (byte-code "E	F" [message list aset aref 0 7] 4))

(defmacro vm-set-reverse-link-sym-of (message sym) (byte-code "E	F" [message sym aset aref 0 8] 4))

(defmacro vm-set-reverse-link-of (message link) (byte-code "EE	E" [message link set aref 0 8] 5))

(defmacro vm-set-softdata-of (message data) (byte-code "	F" [message data aset 1] 4))

(defmacro vm-set-number-of (message n) (byte-code "E	F" [message n aset aref 1 0] 4))

(defmacro vm-set-mark-of (message val) (byte-code "E	F" [message val aset aref 1] 4))

(defmacro vm-set-su-start-of (message pos) (byte-code "E	F" [message pos aset aref 1 2] 4))

(defmacro vm-set-su-end-of (message pos) (byte-code "E	F" [message pos aset aref 1 3] 4))

(defmacro vm-set-attributes-of (message attrs) (byte-code "	F" [message attrs aset 2] 4))

(defmacro vm-set-edited-flag (message flag) (byte-code "E	F" [message flag aset aref 2 7] 4))

(defmacro vm-set-cache-of (message cache) (byte-code "	F" [message cache aset 3] 4))

(defmacro vm-set-byte-count-of (message count) (byte-code "E	F" [message count aset aref 3 0] 4))

(defmacro vm-set-weekday-of (message val) (byte-code "E	F" [message val aset aref 3 1] 4))

(defmacro vm-set-monthday-of (message val) (byte-code "E	F" [message val aset aref 3 2] 4))

(defmacro vm-set-month-of (message val) (byte-code "E	F" [message val aset aref 3] 4))

(defmacro vm-set-year-of (message val) (byte-code "E	F" [message val aset aref 3 4] 4))

(defmacro vm-set-hour-of (message val) (byte-code "E	F" [message val aset aref 3 5] 4))

(defmacro vm-set-zone-of (message val) (byte-code "E	F" [message val aset aref 3 6] 4))

(defmacro vm-set-full-name-of (message author) (byte-code "E	F" [message author aset aref 3 7] 4))

(defmacro vm-set-from-of (message author) (byte-code "E	F" [message author aset aref 3 8] 4))

(defmacro vm-set-message-id-of (message id) (byte-code "E	F" [message id aset aref 3 9] 4))

(defmacro vm-set-line-count-of (message count) (byte-code "E	F" [message count aset aref 3 10] 4))

(defmacro vm-set-subject-of (message subject) (byte-code "E	F" [message subject aset aref 3 11] 4))

(defmacro vm-set-vheaders-regexp-of (message regexp) (byte-code "E	F" [message regexp aset aref 3 12] 4))

(defmacro vm-set-to-of (message recips) (byte-code "E	F" [message recips aset aref 3 13] 4))

(defmacro vm-set-to-names-of (message recips) (byte-code "E	F" [message recips aset aref 3 14] 4))

(defmacro vm-set-month-number-of (message val) (byte-code "E	F" [message val aset aref 3 15] 4))

(defmacro vm-set-modflag-of (message val) (byte-code "	F" [message val aset 4] 4))

(defun vm-text-end-of (message) (byte-code "HH	= Ƃ Z" [message vm-folder-type t 0 3 mmdf 5 1] 3))

(defun vm-make-message nil (byte-code "\"\"I\"I!
LH
I!H
I*" [v nil sym vm-softdata-vector-length vm-virtual-data-vector-length make-vector 5 1 0 make-symbol "<<>>" 6 "<--" 8] 8))

(defun vm-find-and-set-text-of (m) (byte-code " HHb!!#H I))" [m t widen 0 forward-line 1 search-forward "

" vm-text-end-of 2 point-marker] 8))

(defun vm-parse (string regexp &optional matchn) (byte-code " ŉ!!#( !!O	B 	!)" [matchn list nil regexp string 1 store-match-data string-match match-end 0 match-beginning nreverse] 9))

(defun vm-parse-addresses (string) (byte-code "?	  Ȏ!
qceb!`m? !gUO !m?L ! U `\"\"?j \"?r B!!` U !# U !m? !? #m hU T hU S )+ `\"\"? \"? B+)))" [string nil work-buffer list start s char parens ((byte-code " !" [work-buffer kill-buffer] 2)) generate-new-buffer "*VM parse*" skip-chars-forward "	
 " "^\"\\,(" 92 forward-char 1 44 buffer-substring string-match "^[	
 ]+$" string= "" 34 re-search-forward "[^\\]\"" 0 40 zerop "[^\\][()]" 41] 20))

(defmacro vm-marker (pos &optional buffer) (byte-code "	F" [pos buffer set-marker (make-marker)] 4))

(defmacro vm-increment (variable) (byte-code "DE" [variable setq 1+] 4))

(defmacro vm-decrement (variable) (byte-code "DE" [variable setq 1-] 4))

(defmacro vm-select-folder-buffer nil (byte-code "" [(and vm-mail-buffer (buffer-name vm-mail-buffer) (set-buffer vm-mail-buffer))] 1))

(defmacro vm-check-for-killed-summary nil (byte-code "" [(and (bufferp vm-summary-buffer) (null (buffer-name vm-summary-buffer)) (setq vm-summary-buffer nil))] 1))

(defmacro vm-error-if-folder-read-only nil (byte-code "" [(while vm-folder-read-only (signal (quote folder-read-only) (list (current-buffer))))] 1))

(put (quote folder-read-only) (quote error-conditions) (quote (folder-read-only error)))

(put (quote folder-read-only) (quote error-message) "Folder is read-only")

(defmacro vm-error-if-referenced-virtually nil (byte-code "" [(and (setq vm-virtual-buffers (vm-trim-dead-buffers vm-virtual-buffers)) (error "Can't execute command: folder is referenced virtually."))] 1))

(defmacro vm-error-if-virtual-folder nil (byte-code "" [(and (eq major-mode (quote vm-virtual-mode)) (error "%s cannot be applied to virtual folders." this-command))] 1))

(defmacro vm-nuke-dead-virtual-buffers nil (byte-code "" [(setq vm-virtual-buffers (vm-trim-dead-buffers vm-virtual-buffers))] 1))

(defmacro vm-check-message-clipping nil (byte-code "" [(and vm-virtual-buffers (or (< (point-min) (vm-start-of (car vm-message-pointer))) (> (point-max) (vm-text-end-of (car vm-message-pointer)))) (vm-preview-current-message))] 1))

(defun vm-trim-dead-buffers (list) (byte-code "#" [list t vm-delete buffer-name] 4))

(defun vm-deferred-message (&rest args) (byte-code "	\"" [vm-deferred-message args apply format] 3))

(defun vm-abs (n) (byte-code "W [ " [n 0] 2))

(defun vm-read-number (prompt) (byte-code "	!\"?  !)" [result prompt nil string-match "^[ 	]*-?[0-9]+" read-string string-to-int] 5))

(defmacro vm-save-restriction (&rest forms) (byte-code "!!!D	
E	E
EFB	
E	E
EFEFF+" [vm-sr-clip vm-sr-min vm-sr-max forms nil make-symbol "vm-sr-clip" "vm-sr-min" "vm-sr-max" let (> (buffer-size) (- (point-max) (point-min))) and setq (set-marker (make-marker) (point-min)) (set-marker (make-marker) (point-max)) unwind-protect progn (widen) narrow-to-region set-marker] 17))

(defmacro vm-save-buffer-excursion (&rest forms) (byte-code "BEE" [forms let ((vm-sbe-buffer (current-buffer))) unwind-protect progn (and (not (eq vm-sbe-buffer (current-buffer))) (buffer-name vm-sbe-buffer) (set-buffer vm-sbe-buffer))] 5))

(defmacro vm-current-message-buffer nil (byte-code "DDD" [marker-buffer vm-start-of car vm-message-pointer] 4))

(defmacro vm-within-current-message-buffer (&rest forms) (byte-code "BEF" [forms let ((vm-sbe-buffer (current-buffer))) (and (eq major-mode (quote vm-virtual-mode)) vm-message-list (set-buffer (marker-buffer (vm-start-of (car vm-message-pointer))))) unwind-protect progn (and (not (eq vm-sbe-buffer (current-buffer))) (buffer-name vm-sbe-buffer) (set-buffer vm-sbe-buffer))] 6))

(defun vm-last (list) (byte-code "! A  " [list cdr-safe] 4))

(defun vm-vector-to-list (vector) (byte-code "	GSY 	H
BS 
*" [i vector list nil 0] 3))

(defun vm-extend-vector (vector length &optional fill) (byte-code "	G
W 	!
Z\"\"\" 	)" [vlength vector length fill apply nconc vm-vector-to-list make-list] 8))

(defun vm-mapcar (function &rest lists) (byte-code "
@# 
\"\"	B
\" 	!*" [arglist result lists function nil mapcar car apply cdr nreverse] 6))

(defun vm-mapc (function &rest lists) (byte-code "	@ 	\"
\"	\" )" [arglist lists function nil mapcar car apply cdr] 6))

(defun vm-delete (predicate list &optional reverse) (byte-code "	
	 ł
 B 
@\"\"8 ?+ 	A	5 A\"A> A 	+" [p list reverse prev predicate not identity nil funcall setcdr] 6))

(defun vm-delete-duplicates (list &optional all) (byte-code "\"	v 	@	A@\"?# 		Ar 	A	3 	@	A@\"> 	A( 
?` M 	AN 	W ĂX 		Ar 
k 	Al 	\"	A *" [list p prev all nil sort string< equal setcdr] 7))

(defun vm-copy-local-variables (buffer &rest variables) (byte-code "	\"
q	#))" [values variables buffer mapcar symbol-value vm-mapc set] 5))

(put (quote folder-empty) (quote error-conditions) (quote (folder-empty error)))

(put (quote folder-empty) (quote error-message) "Folder is empty")

(defun vm-error-if-folder-empty nil (byte-code "? \"  " [vm-message-list nil signal folder-empty] 4))

(defun vm-copy (object) (byte-code ":< @!B	A:1 
@!B\"
AA 
\"	*X !L \"\"X ;W !X " [object return-value cons nil t vm-copy setcdr vectorp apply vector mapcar copy-sequence] 10))

(defun vm-record-and-change-message-pointer (old new) (byte-code "	" [vm-last-message-pointer old vm-message-pointer new] 2))

(defun vm-goto-message (n) "\
Go to the message numbered N.
Interactively N is the prefix argument.  If no prefix arg is provided
N is prompted for in the minibuffer.

If vm-follow-summary-cursor is non-nil this command first tries
to follow the summary cursor to a new message.  If a new message
is selected in this way, no further action is taken.  I.e. you can move
the cursor in the summary buffer, press RETURN and select a new
message without typing in a message number." (interactive (byte-code " 	  	 	! !C" [nil current-prefix-arg t vm-follow-summary-cursor prefix-numeric-value vm-read-number "Go to message: "] 4)) (byte-code "? Z  ! q!( !?(  S\"?= !=K  Y \"	 )" [nil current-prefix-arg t n vm-mail-buffer vm-summary-buffer cons vm-message-list vm-message-pointer vm-need-summary-pointer-update buffer-name bufferp vm-error-if-folder-empty nthcdr error "No such message." vm-preview-current-message vm-record-and-change-message-pointer] 10))

(defun vm-goto-message-last-seen nil "\
Go to the message last previewed." (interactive) (byte-code " ! q	! 	!?  2 \"Ɖ " [vm-mail-buffer vm-summary-buffer nil vm-last-message-pointer vm-message-pointer vm-need-summary-pointer-update t buffer-name bufferp vm-error-if-folder-empty vm-record-and-change-message-pointer vm-preview-current-message] 7))

(put (quote beginning-of-folder) (quote error-conditions) (quote (beginning-of-folder error)))

(put (quote beginning-of-folder) (quote error-message) "Beginning of folder")

(put (quote end-of-folder) (quote error-conditions) (quote (end-of-folder error)))

(put (quote end-of-folder) (quote error-message) "End of folder")

(defun vm-check-count (count) (byte-code "Y 	GW \"% G	GZT!W% \"" [count vm-message-pointer nil vm-message-list 0 signal end-of-folder vm-abs beginning-of-folder] 5))

(defun vm-move-message-pointer (direction) (byte-code "	
=# A?     \"B @HHJ?B > !B \")" [mp vm-message-pointer direction vm-circular-folders vm-message-list nil forward signal end-of-folder 0 8 vm-last beginning-of-folder] 5))

(defun vm-should-skip-message (mp &optional skip-dogmatically) (byte-code "1 	 
@HH. . 
@HH. 
@HH- 
@HH?_ 	== 
@HH_ =_ 
@HH_ 
@HH^ 
@HH?" [skip-dogmatically vm-skip-deleted-messages mp vm-skip-read-messages t 2 0 1] 2))

(defun vm-next-message (&optional count retry signal-errors) "\
Go forward one message and preview it.
With prefix arg COUNT, go forward COUNT messages.  A negative COUNT
means go backward.  If the absolute value of COUNT > 1 the values of the
variables vm-skip-deleted-messages and vm-skip-read-messages are
ignored." (interactive "p
p
p") (byte-code " ! q 	!\" 	!?\" )  1 ЉV? ҂@ !?W 	i \"e ׏i ُ=? \"ʉ   \"," [vm-mail-buffer vm-summary-buffer nil signal-errors count oldmp vm-message-pointer error direction vm-message-list t vm-need-summary-pointer-update buffer-name vm-sanity-check-modification-flag bufferp vm-error-if-folder-empty 1 0 forward backward vm-abs /= (byte-code "!? 	!S  " [count direction zerop vm-move-message-pointer] 5) ((beginning-of-folder (byte-code "" [error beginning-of-folder] 2)) (end-of-folder (byte-code "" [error end-of-folder] 2))) (byte-code "!	
=? 
\" ! 
	== = A= 	
=?3 
!= !) " [direction oldmp vm-message-pointer t retry vm-message-list vm-move-message-pointer vm-should-skip-message] 7) ((beginning-of-folder (byte-code "	
 Ə ǉ" [vm-message-pointer oldmp retry error nil (byte-code "	!! 	! )" [vm-message-pointer direction vm-move-message-pointer vm-should-skip-message] 5) ((beginning-of-folder (byte-code "	" [error oldmp beginning-of-folder] 2))) beginning-of-folder] 3)) (end-of-folder (byte-code "	
 Ə ǉ" [vm-message-pointer oldmp retry error nil (byte-code "	!! 	! )" [vm-message-pointer direction vm-move-message-pointer vm-should-skip-message] 5) ((end-of-folder (byte-code "	" [error oldmp end-of-folder] 2))) end-of-folder] 3))) vm-record-and-change-message-pointer vm-preview-current-message signal] 12))

(defun vm-previous-message (&optional count retry signal-errors) "\
Go back one message and preview it.
With prefix arg COUNT, go backward COUNT messages.  A negative COUNT
means go forward.  If the absolute value of COUNT > 1 the values of the
variables vm-skip-deleted-messages and vm-skip-read-messages are
ignored." (interactive "p
p
p") (byte-code "Ĉ	 ŉ	 	! 	q[
#" [count vm-mail-buffer retry signal-errors nil 1 buffer-name vm-next-message] 5))

(defun vm-Next-message (&optional count) "\
Like vm-next-message but will not skip messages." (interactive "p") (byte-code "Ĉ ! q#*" [vm-mail-buffer vm-skip-deleted-messages vm-skip-read-messages count nil t buffer-name vm-next-message] 5))

(defun vm-Previous-message (&optional count) "\
Like vm-previous-message but will not skip messages." (interactive "p") (byte-code "Ĉ ! q!*" [vm-mail-buffer vm-skip-deleted-messages vm-skip-read-messages count nil buffer-name vm-previous-message] 3))

(defun vm-next-unread-message nil "\
Move forward to the nearest new or unread message, if there is one." (interactive) (byte-code " ! q	! 	!? Ə" [vm-mail-buffer vm-summary-buffer nil buffer-name bufferp (byte-code "#
= \"*" [vm-skip-read-messages t oldmp vm-message-pointer nil vm-next-message 1 signal end-of-folder] 4) ((end-of-folder (byte-code "!" [message "No next unread message"] 2)))] 6))

(defun vm-previous-unread-message nil "\
Move backward to the nearest new or unread message, if there is one." (interactive) (byte-code " ! q	! 	!? Ə" [vm-mail-buffer vm-summary-buffer nil buffer-name bufferp (byte-code " 
= \"*" [vm-skip-read-messages t oldmp vm-message-pointer nil vm-previous-message signal beginning-of-folder] 4) ((beginning-of-folder (byte-code "!" [message "No previous unread message"] 2)))] 6))

(defun vm-find-first-unread-message nil (byte-code "
/ @HH @HH?' É+ A 	?` 
` @HHM @HH?X É\\ A9 	*" [mp unread-mp vm-message-list nil 2 0 1] 3))

(defun vm-thoughtfully-select-message nil (byte-code "?	 	=?:  
-  
\"! 
ĉ Ă9 5 ł9  )" [vm-message-pointer vm-system-state mp vm-need-summary-pointer-update t nil reading vm-find-first-unread-message vm-record-and-change-message-pointer vm-preview-current-message vm-Next-message] 5))

(defun vm-scroll-forward (&optional arg) "\
Scroll forward a screenful of text.
If the current message is being previewed, the message body is revealed.
If at the end of the current message, moves to the next message iff the
value of vm-auto-next-message is non-nil.
Prefix N scrolls forward N lines." (interactive "P") (byte-code "ň  ! q !) !?) ŉ p=F F 	@HH!qp!?))X  ʉ=e  Yj 	r  Y		@HH!!=? !)!? ! !!Z p=  	@HH!q!\\	!=ň =?\" !*)))=7 !W=L!	 )W!VW .+b?h " [mp-changed was-invisible do-next-message vm-mail-buffer vm-summary-buffer nil vm-sbe-buffer major-mode vm-message-list vm-message-pointer t vm-system-state vmp msg-buf h-diff w old-w result vm-window-configuration next-screen-context-lines arg vm-honor-page-delimiters vm-startup-message-displayed vm-inhibit-startup-message vm-follow-summary-cursor buffer-name vm-sanity-check-modification-flag bufferp vm-error-if-folder-empty vm-virtual-mode marker-buffer 0 ((byte-code "p=? ! q" [vm-sbe-buffer buffer-name] 2)) get-buffer-window vm-display-current-message-buffer previewing vm-show-current-message vm-howl-if-eom reading paging-message vm-set-window-configuration error "paging-message configuration hides the message buffer." window-height selected-window ((byte-code "p=? ! q" [vm-sbe-buffer buffer-name] 2)) ((byte-code "!" [old-w select-window] 2)) select-window vm-scroll-forward-internal tryagain next-message vm-narrow-to-page scroll-up vm-next-message auto-next-message end-of-message vm-emit-eom-blurb prefix-numeric-value vm-display-startup-message] 32))

(defun vm-scroll-forward-internal (arg) (byte-code "	! Ǐ*" [direction arg w prefix-numeric-value selected-window error-data (byte-code "!" [arg nil scroll-up] 2) ((error (byte-code "W e	@!V Y d	@!\"U  Y5 !
`\"ÂR nB  !)?H ! 
`\"҂k @=k e Ԃk 
`\"և" [direction vm-message-pointer w nil page-delimiter error-data vm-auto-next-message 0 vm-text-of /= vm-text-end-of vm-widen-page forward-page 1 set-window-start beginning-of-line looking-at -1 tryagain end-of-buffer next-message set-window-point end-of-message] 14)))] 5))

(defun vm-howl-if-eom nil (byte-code "	p=  	@HH!qɎp!6 ˋ)6 	@!dU6  *)))" [vmp vm-message-pointer vm-sbe-buffer major-mode vm-message-list w vm-virtual-mode marker-buffer 0 ((byte-code "p=? ! q" [vm-sbe-buffer buffer-name] 2)) get-buffer-window ((byte-code "" [nil (byte-code "	!ŋ))" [next-screen-context-lines w nil 0 select-window ((byte-code "!" [nil scroll-up] 2))] 2) ((error (byte-code "" [t] 1)))] 3)) vm-text-end-of vm-emit-eom-blurb] 5))

(defun vm-emit-eom-blurb nil (byte-code "@HH@!#" [vm-message-pointer message "End of message %s from %s" 1 0 vm-su-full-name] 5))

(defun vm-scroll-backward (arg) "\
Scroll backward a screenful of text.
Prefix N scrolls backward N lines." (interactive "P") (byte-code "? Ă\" 9 \" :! @[C\" !" [arg nil t vm-scroll-forward -] 2))

(defun vm-preview-current-message nil (byte-code "ˉp
=  @HH!qώp!))?/ 
=/ !?5 !p
=N N @HH!qӎ @! @!@!b!y z !`)^ @!\"  @!bp!		 	e\"@	\")))))? 
? @HH? @HH?    " [vm-system-state vm-sbe-buffer major-mode vm-message-list vm-message-pointer t vmp vm-preview-lines vm-honor-page-delimiters w vm-preview-read-messages previewing vm-virtual-mode marker-buffer 0 ((byte-code "p=? ! q" [vm-sbe-buffer buffer-name] 2)) get-buffer-window one-window-p vm-display-current-message-buffer ((byte-code "p=? ! q" [vm-sbe-buffer buffer-name] 2)) widen narrow-to-region vm-vheaders-of vm-text-end-of vm-text-of forward-line natnump vm-narrow-to-page set-window-start vm-highlight-headers 2 1 vm-show-current-message vm-update-summary-and-mode-line] 21))

(defun vm-show-current-message nil (byte-code "ɉ
p=  
@HH!q͎	eb `
@!\")B !? ! ))))
@HHX 
@\"f 
@HHf 
@\" " [vm-system-state vmp vm-message-pointer vm-sbe-buffer major-mode vm-message-list vm-honor-page-delimiters page-delimiter nil showing vm-virtual-mode marker-buffer 0 ((byte-code "p=? ! q" [vm-sbe-buffer buffer-name] 2)) widen narrow-to-region vm-text-end-of looking-at forward-page 1 vm-narrow-to-page 2 vm-set-new-flag vm-set-unread-flag vm-update-summary-and-mode-line] 11))

(defun vm-expose-hidden-headers nil "\
Toggle exposing and hiding message headers that are normally not visible." (interactive) (byte-code "  ! q	!\" 	!?\"  p=? ? @HH!qҎe@HHU db f `@!\"o `@HH\"eb	p!		 	e\"	 	!@!U ? 	@HH\")
  *)))" [vm-mail-buffer vm-summary-buffer nil vmp vm-message-pointer vm-sbe-buffer major-mode vm-message-list exposed w vm-honor-page-delimiters vm-follow-summary-cursor buffer-name bufferp vm-error-if-folder-empty vm-virtual-mode marker-buffer 0 ((byte-code "p=? ! q" [vm-sbe-buffer buffer-name] 2)) vm-widen-page widen narrow-to-region vm-vheaders-of get-buffer-window set-window-point window-start set-window-start vm-narrow-to-page] 19))

(defun vm-widen-page nil (byte-code "e@!V d@!\"6 @!@HH' @HH1 @!5 @!\"" [vm-message-pointer vm-text-of /= vm-text-end-of narrow-to-region vm-vheaders-of 2 0 1] 9))

(defun vm-narrow-to-page nil (byte-code "edn  !)? !`! `	\",)" [min max omin omax page-delimiter nil beginning-of-line looking-at forward-page -1 1 narrow-to-region] 8))

(defun vm-beginning-of-message nil "\
Moves to the beginning of the current message." (interactive) (byte-code "  ! q	!\" 	!?\"  p=? ? @HH!qЎ  ebT  )))) " [vm-mail-buffer vm-summary-buffer nil vmp vm-message-pointer vm-sbe-buffer major-mode vm-message-list vm-honor-page-delimiters vm-follow-summary-cursor buffer-name bufferp vm-error-if-folder-empty vm-virtual-mode marker-buffer 0 ((byte-code "p=? ! q" [vm-sbe-buffer buffer-name] 2)) vm-widen-page push-mark vm-narrow-to-page vm-display-current-message-buffer] 11))

(defun vm-end-of-message nil "\
Moves to the end of the current message, exposing and flagging it read
as necessary." (interactive) (byte-code "  ! q	!\" 	!?\"  =.  щp=M M @HH!qՎ  db	b  ))))!" [vm-mail-buffer vm-summary-buffer nil vm-system-state vmp vm-message-pointer vm-sbe-buffer major-mode vm-message-list vm-honor-page-delimiters t vm-follow-summary-cursor buffer-name bufferp vm-error-if-folder-empty previewing vm-show-current-message reading vm-virtual-mode marker-buffer 0 ((byte-code "p=? ! q" [vm-sbe-buffer buffer-name] 2)) vm-widen-page push-mark vm-narrow-to-page vm-display-current-message-buffer] 12))

(defun vm-do-reply (to-all include-text count) (byte-code " p
!
		

	
= 
@\"a 
@\"a 
@!a !
@\"	u 
@\"\"? 	  !	\"\"?) 	P	 
@\" Q 
@\" Q 
@! Q !I
@\"
@\"-(Q-IDQI
@\"
@\"
@\"BBBp
@\"y
@\"B
A
/ !!)!!!!!!!#\"##?؉\"@ #A B \"!FC #\"#A D \"!u#E F G H 	@!	AI #	&J K L  !!M N O \"M P Q \"M R S \"M T U \"M V \"W !X 	7ebY Z [ Q#\\ ] !	6O 	@!db	A ).)" [mail-buffer mlist count dir default-directory message-pointer vm-message-pointer to cc subject mp in-reply-to references tmp tmp2 newsgroups t vm-in-reply-to-format vm-reply-subject-prefix case-fold-search to-all vm-strip-reply-headers mail-use-rfc822 vm-reply-ignored-addresses nil vm-mode-map vm-mail-buffer vm-system-state vm-reply-list include-text mail-header-separator widen vm-select-marked-or-prefixed-messages vm-get-header-contents "Reply-To" "From" vm-grok-From_-author error "No From: or Reply-To: header in message" "Subject" vm-sprintf equal "" string-match regexp-quote 0 "," "To" "Cc" "References" "In-reply-to" "Message-ID" "Followup-To" "Newsgroups" mail-strip-quoted-names vm-parse-addresses vm-strip-ignored-addresses vm-delete-duplicates append copy-sequence mapconcat identity ",
    " delq " " vm-parse "[^<]*\\(<[^>]+>\\)" "
	" "[ 	
,]*\\([^ 	
,]+\\)" vm-mail-internal format "reply to %s%s" vm-su-full-name ", ..." use-local-map copy-keymap current-local-map local-set-key "" vm-yank-message "y" vm-yank-message-other-folder "" vm-mail-send "" vm-mail-send-and-exit "" make-local-variable replying re-search-forward "^" "$" forward-char 1] 64))

(defun vm-strip-ignored-addresses (addresses) (byte-code "!	< 3 	@@\"* @\"A 	A *" [addresses re-list list vm-reply-ignored-addresses addr-list copy-sequence nil string-match delq] 7))

(defun vm-mail-yank-default (message) (byte-code "`!`\" 	\"c#  ` W, # )" [vm-included-text-attribution-format message nil t vm-included-text-prefix delete-region search-forward "

" vm-sprintf re-search-forward "^" mark replace-match] 10))

(defun vm-yank-message-other-folder (folder &optional prefix-argument) "\
Like vm-yank-message except the message is yanked from a folder other
than the one that spawned the current Mail mode buffer.  The name of the
folder is read from the minibuffer.

Don't call this function from a program." (interactive (byte-code "	
 	! 
$)D" [dir vm-folder-directory default-directory nil t current-prefix-arg expand-file-name read-file-name "Yank from folder: "] 6)) (byte-code "Èp	! 	!qp
=?'  ?3 	\"Ջ)+" [dir vm-folder-directory default-directory nil t current-prefix-arg b newbuf sumbuf folder major-mode vm-message-pointer vm-summary-buffer prefix-arg prefix-argument vm-mail-buffer get-file-buffer find-file-noselect vm-mode error "No messages in folder %s" ((byte-code "ǋ!p 
qʎ!*)" [vm-summary-buffer sumbuf b prefix-arg prefix-argument vm-mail-buffer newbuf ((byte-code " " [vm-summarize] 2)) switch-to-buffer delete-other-windows ((byte-code "!	!" [newbuf sumbuf bury-buffer] 3)) command-execute vm-yank-message] 4))] 6))

(defun vm-yank-message (message &optional prefix) "\
Yank message number N into the current buffer at point.
When called interactively N is always read from the minibuffer.  When
called non-interactively the first argument is expected to be a message
struct.

This command is meant to be used in VM created Mail mode buffers; the
yanked message comes from the mail buffer containing the message you
are replying to, forwarding, or invoked VM's mail command from.

All message headers are yanked along with the text.  Point is left
before the inserted text, the mark after.  Any hook functions bound to
mail-yank-hooks are run, aftert inserting the text and setting point
and mark.

Prefix arg means to ignore mail-yank-hooks, don't set the mark, prepend the
value of vm-included-text-prefix to every yanked line, and don't yank any
headers other than those specified in vm-visible-headers/vm-invisible-headers." (interactive (byte-code " ! q  @HH	, 	\"- Ή
!T !
\"J 	J 	
!0 
S\"?d !)@,D" [mp default result prompt vm-mail-buffer vm-message-pointer vm-message-list current-prefix-arg nil 0 buffer-name 1 format "Yank message number: (default %s) " "Yank message number: " zerop read-string string= "" string-to-int nthcdr error "No such message."] 10)) (byte-code "Ј!? !!? HH\"p`
	 HH!q 	K !Q HH!# 
!l !r HHZ\\	#)) `W # #  ) ` `\"! ! !)," [mp default result prompt vm-mail-buffer vm-message-pointer vm-message-list current-prefix-arg message b start end prefix t vm-included-text-prefix mail-yank-hooks nil bufferp error "This is not a VM Mail mode buffer." buffer-name "The mail buffer containing message %d has been killed." 1 0 widen marker-buffer append-to-buffer vm-vheaders-of vm-text-end-of set-marker make-marker re-search-forward "^" replace-match forward-line delete-region push-mark run-hooks vm-mail-yank-default] 23))

(defun vm-mail-send-and-exit (arg) "\
Just like mail-send-and-exit except that VM flags the appropriate message(s)
as having been replied to, if appropriate." (interactive "P") (byte-code "ǈp	!q
=   
=   p>/ p\"pB=?_ C \"\"^ ^ @>\")))" [reply-buf arg vm-system-state vm-kept-mail-buffers vm-keep-sent-messages t extras nil mail-send-and-exit replying vm-mark-replied forwarding vm-mark-forwarded vm-rename-current-mail-buffer delq nthcdr 0 mapcar (lambda (b) (byte-code "!	 !" [b buffer-name kill-buffer] 3)) setcdr] 10))

(defun vm-mail-send nil "\
Just like mail-send except that VM flags the appropriate message(s)
as having been replied to, if appropriate." (interactive) (byte-code "  =   =  " [vm-system-state nil mail-send vm-rename-current-mail-buffer replying vm-mark-replied forwarding vm-mark-forwarded] 5))

(defun vm-rename-current-mail-buffer nil (byte-code " \"?j  HU?#  \"H !G!?@ !G!?@ ҉\")ԉ	!e 
#
TO 	!+" [prefix name n recipients t recipient string-match "^sent " buffer-name nil 42 0 format "sent %s" zerop mail-fetch-field "To" "Cc" "the horse with no name" "sent mail to %s" 1 get-buffer "%s<%d>" rename-buffer] 16))

(defun vm-mark-replied nil (byte-code "	@ @HH!? 7 @HH!q@>/ @HH?7 @\"A  ))" [mp vm-reply-list nil vm-message-list t marker-buffer 0 2 4 vm-set-replied-flag vm-update-summary-and-mode-line] 6))

(defun vm-mark-forwarded nil (byte-code "	@ @HH!? 7 @HH!q@>/ @HH?7 @\"A  ))" [mp vm-forward-list nil vm-message-list t marker-buffer 0 2 6 vm-set-forwarded-flag vm-update-summary-and-mode-line] 6))

(defun vm-reply (count) "\
Reply to the sender of the current message.
Numeric prefix argument N mans to reply to the current message plus the
next N-1 messages.  A negative N means reply to the current message and
the previous N-1 messages. 

If invoked on marked messages (via vm-next-command-uses-marks),
all marked messages will be replied to.

You will be placed into a standard Emacs Mail mode buffer to compose and
send your message.  See the documentation for the function `mail' for
more info.

Note that the normal binding of C-c C-y in the reply buffer is
automatically changed to vm-yank-message during a reply.  This
allows you to yank any message from the current folder into a
reply.

Normal VM commands may be accessed in the reply buffer by prefixing them
with C-c C-v." (interactive "p") (byte-code "  ! q	!\" 	!?\"  #" [vm-mail-buffer vm-summary-buffer nil count vm-follow-summary-cursor buffer-name bufferp vm-error-if-folder-empty vm-do-reply] 9))

(defun vm-reply-include-text (count) "\
Reply to the sender (only) of the current message and include text
from the message.  See the documentation for function vm-reply for details." (interactive "p") (byte-code "  ! q	!\" 	!?\"  #" [vm-mail-buffer vm-summary-buffer nil t count vm-follow-summary-cursor buffer-name bufferp vm-error-if-folder-empty vm-do-reply] 9))

(defun vm-followup (count) "\
Reply to all recipients of the current message.
See the documentation for the function vm-reply for details." (interactive "p") (byte-code "  ! q	!\" 	!?\"  #" [vm-mail-buffer vm-summary-buffer nil t count vm-follow-summary-cursor buffer-name bufferp vm-error-if-folder-empty vm-do-reply] 9))

(defun vm-followup-include-text (count) "\
Reply to all recipients of the current message and include text from
the message.  See the documentation for the function vm-reply for details." (interactive "p") (byte-code "  ! q	!\" 	!?\"  #" [vm-mail-buffer vm-summary-buffer nil t count vm-follow-summary-cursor buffer-name bufferp vm-error-if-folder-empty vm-do-reply] 9))

(defun vm-forward-message nil "\
Forward the current message to one or more third parties.
You will be placed in a Mail mode buffer as is usual with replies, but you
must fill in the To: and Subject: headers manually." (interactive) (byte-code "  ! q	!\" 	!?\"  =6 ԉ! p	
  	@HH#` @\"# !!\"\"\"\"\"!@C	dbc`
q@HHb!`)@!# 
`\"ceb )," [vm-mail-buffer vm-summary-buffer nil last-command this-command b dir default-directory mp vm-message-pointer start vm-forwarding-subject-format vm-mode-map vm-system-state vm-forward-list vm-rfc934-forwarding vm-follow-summary-cursor buffer-name bufferp vm-error-if-folder-empty vm-next-command-uses-marks command-execute vm-send-digest widen vm-mail-internal format "forward of %s:%s" 1 0 vm-sprintf use-local-map copy-keymap current-local-map local-set-key "" vm-yank-message "y" vm-yank-message-other-folder "" vm-mail-send "" vm-mail-send-and-exit "" make-local-variable forwarding "------- Start of forwarded message -------
" insert-buffer-substring forward-line vm-text-end-of vm-rfc934-char-stuff-region "------- End of forwarded message -------
" end-of-line] 26))

(defun vm-mail nil "\
Send a mail message from within VM, or from without." (interactive) (byte-code "   ! q	!% 	!?% >- p ?: N  !!\"\"\"\"\")" [vm-mail-buffer vm-summary-buffer nil mail-buffer major-mode vm-mode-map vm-session-initialization vm-follow-summary-cursor buffer-name bufferp (vm-mode vm-virtual-mode) vm-mail-internal use-local-map copy-keymap current-local-map local-set-key "" vm-yank-message "" "" vm-mail-send "" vm-mail-send-and-exit "y" vm-yank-message-other-folder] 16))

(defun vm-resend-bounced-message nil "\
Extract the original text from a bounced message and resend it.
You will be placed in a Mail mode buffer with the extracted message and
you can change the recipient address before resending the message." (interactive) (byte-code "  ! q	!\" 	!?\" p@! @!b	# # # # # # # !!`)) @HH#! !!\"\"\"\"\"eb#`d\"eb!? `!`\" !!! !b`\") cgU!c)," [vm-mail-buffer vm-summary-buffer nil b start dir default-directory lim vm-message-pointer case-fold-search t vm-mode-map vm-generic-header-regexp match-end-0 mail-header-separator vm-follow-summary-cursor buffer-name bufferp vm-text-end-of widen vm-text-of search-forward "----- Unsent message follows" "======= text of message follows" "- Message text follows:" "Your message follows:
" "    Your message begins as follows:
" "---  Original Message  ---" "The text of your message was
---" error "This does not appear to be a bounced message." forward-line 1 vm-mail-internal format "retry of %s:%s" 0 use-local-map copy-keymap current-local-map local-set-key "" vm-yank-message "y" vm-yank-message-other-folder "" vm-mail-send "" vm-mail-send-and-exit "" insert-buffer-substring delete-region looking-at match-end "From:\\|To:\\|Cc:\\|Subject:\\|In-Reply-To\\|Resent-" "Newsgroups\\|References" 10 forward-char "
"] 40))

(defun vm-resend-message (recipients) "\
Resend the current message to someone else.
You will be proompted in the minibuffer for the space or comma
separated recipient list." (interactive "sResend message to: ") (byte-code "  ! q	!\" 	!?\"  	4 
=	\"p=c c @HH!q deZV  e\"  d\" !q!@C @HH!@HH@!#))+))qeb!? `!`\"  ###!!!?b`\") @ A \"!ebB C !D E F G edH I &bJ CfK C#\"L  qM  !B N !O !P !B !)." [vm-mail-buffer vm-summary-buffer nil vmp vm-message-pointer recipient-list t-buffer m-buffer doomed-buffers pop-up-windows vm-mutable-windows t mail-header-seaprator recipients vm-sbe-buffer major-mode vm-message-list vm-sr-clip vm-sr-min vm-sr-max vm-system-state vm-forward-list vm-generic-header-regexp vm-mail-header-from match-end-0 sendmail-program mail-interactive vm-follow-summary-cursor buffer-name bufferp vm-error-if-folder-empty "" vm-parse "[ 	,]*\\([^ ,	]+\\)[ 	,]*" ((byte-code " !	 	!" [t-buffer m-buffer kill-buffer] 3)) vm-virtual-mode marker-buffer 0 ((byte-code "p=? ! q" [vm-sbe-buffer buffer-name] 2)) buffer-size set-marker make-marker ((byte-code "  	
\"	\"
\"" [vm-sr-clip vm-sr-min vm-sr-max nil widen narrow-to-region set-marker] 6)) widen generate-new-buffer "*VM resend*" make-local-variable forwarding erase-buffer insert-buffer-substring vm-text-end-of looking-at delete-region forward-line 1 insert "Resent-From: " "
" "Resent-To: " mapconcat identity ", " match-end "X-VM-\\|Status:" format "transcript of resend to %s" message "Sending..." apply call-process-region nconc list "-oi" "-oem" "-v" "-odb" vm-mark-forwarded zerop "Sent." display-buffer bury-buffer] 44))

(defun vm-send-digest (&optional prefix) "\
Send a digest of all messages in the current folder to recipients.
You will be placed in a *mail* buffer as is usual with replies, but you
must fill in the To: and Subject: headers manually.

Prefix arg means to insert a list of preamble lines at the beginning of
the digest.  One line is generated for each message being digestified.
The variable vm-digest-preamble-format determines the format of the
preamble lines.

If invoked on marked messages (via vm-next-command-uses-marks),
only marked messages will be put into the digest." (interactive "P") (byte-code " ! q	! 	!?  p	=4 !6 
  \"! !!\"\"\"\"\"!db`! @HH!@HH@HH#A `\"b ! @\"\" ! !A eb !)-" [vm-mail-buffer vm-summary-buffer nil b dir default-directory mp vm-message-pointer mlist last-command vm-message-list start vm-mode-map vm-system-state vm-forward-list prefix vm-digest-center-preamble buffer-name bufferp vm-error-if-folder-empty vm-next-command-uses-marks vm-select-marked-or-prefixed-messages 0 widen vm-mail-internal format "digest from %s" use-local-map copy-keymap current-local-map local-set-key "" vm-yank-message "y" vm-yank-message-other-folder "" vm-mail-send "" vm-mail-send-and-exit "" make-local-variable forwarding message "Building digest..." insert-buffer-substring marker-buffer 3 vm-digestify-region "Building digest preamble..." insert vm-sprintf vm-digest-preamble-format "
" forward-char -1 center-line 1 end-of-line "Building digest... done"] 31))

(defun vm-continue-composing-message (&optional not-picky) "\
Find and select the most recently used mail composition buffer.
If the selected buffer is already a Mail mode buffer then it is
buried before beginning the search.  Non Mail mode buffers and
unmodified Mail buffers are skipped.  Prefix arg means unmodified
Mail mode buffers are not skipped.  If no suitable buffer is
found, the current buffer remains selected." (interactive "P") (byte-code "È= p!
!	? 	p=?\" 	!% !)" [major-mode b not-picky nil mail-mode bury-buffer vm-find-composition-buffer switch-to-buffer message "No composition buffers found"] 5))

(defun vm-find-composition-buffer (&optional not-picky) (byte-code " ? @q=7  # pĉ4 / 
?/ pA; A 	E 
)+" [b-list choice alternate major-mode nil not-picky buffer-list mail-mode buffer-modified-p] 5))

(defun vm-mail-internal (&optional buffer-name to subject in-reply-to cc references newsgroups) (byte-code " !q	! p!
=& ĉ!&  ;1 #: #H #Q #	_ 	#
k 
#w # #  # #\"!) db !!" [buffer-name auto-save-default mail-aliases t nil vm-mail-header-from to cc subject newsgroups in-reply-to references mail-default-reply-to mail-self-blind mail-archive-file-name mail-header-separator generate-new-buffer "*VM-mail*" auto-save-mode mail-mode switch-to-buffer file-exists-p "~/.mailrc" build-mail-aliases insert "From: " "
" "To: " "" "Cc: " "Subject: " "Newsgroups: " "In-Reply-To: " "References: " "Reply-To: " "Bcc: " user-login-name "FCC: " vm-set-window-configuration composing-message mail-position-on-field "To" run-hooks mail-setup-hook] 22))

(require (quote mail-utils))

(require (quote sendmail))

(defun vm-match-data nil (byte-code " @!@!	BBA 	*" [index list nil (9 8 7 6 5 4 3 2 1 0) match-beginning match-end] 6))

(defun vm-auto-select-folder (mp auto-folder-alist) (byte-code "" [nil (byte-code "" [match (byte-code "	 @	@@\"?! ł 	@A
 
@@\") 
@A!J 
@A\"  !	
	q  c\"\"!
@A!

< 
\" 
\")+
A' 	A
 +" [header alist tuple-list auto-folder-alist mp nil case-fold-search vm-auto-folder-case-fold-search match-data buf result vm-get-header-contents string-match atom throw match vm-match-data get-buffer-create " *VM scratch*" widen erase-buffer store-match-data mapcar (lambda (n) (byte-code "
  #" [n nil set-marker make-marker] 5)) (lambda (n) (byte-code " T" [n] 1)) eval vm-auto-select-folder] 19)] 2) ((error (byte-code "" [nil] 1)))] 3))

(defun vm-auto-archive-messages (&optional arg) "\
Save all unfiled messages that auto-match a folder via vm-auto-folder-alist
to their appropriate folders.  Deleted message are not saved.

Prefix arg means to ask user for confirmation before saving each message." (interactive "P") (byte-code " ! q	! 	!?   @HH?y @HH?y 	\"y 
?e @HH#!y !t !TA1 +! ! U ݂ # *" [vm-mail-buffer vm-summary-buffer nil auto-folder archived vm-message-pointer vm-message-list vm-last-save-folder vm-move-after-deleting vm-auto-folder-alist arg vm-delete-after-archiving buffer-name bufferp vm-error-if-folder-empty 0 2 3 vm-auto-select-folder y-or-n-p format "Save message %s in folder %s? " 1 vm-save-message vm-delete-message zerop message "No messages archived" "%d message%s archived" "" "s" vm-update-summary-and-mode-line] 16))

(defun vm-save-message (folder &optional count) "\
Save the current message to a mail folder.
If the folder already exists, the message will be appended to it.
Prefix arg COUNT means save the next COUNT messages.  A negative COUNT means
save the previous COUNT messages.

When invoked on marked messages (via vm-next-command-uses-marks),
all marked message in the current folder are saved; other messages are
ignored.

The saved messages are flagged as `filed'." (interactive (byte-code " 
 
! 
q!# !?# ĉ\". )	6 
	J 	\"	$Q $*)!D" [last-command default vm-mail-buffer vm-summary-buffer nil vm-message-pointer vm-auto-folder-alist vm-last-save-folder dir vm-folder-directory default-directory current-prefix-arg vm-follow-summary-cursor buffer-name bufferp vm-auto-select-folder read-file-name format "Save in folder: (default %s) " "Save in folder: " prefix-numeric-value] 12)) (byte-code "Ĉ
 
! 
q!( !?( ĉ 5 	> 
!
!)q tq !?q ?f !?q \"!?w !? ! \"!= ! !  !@HH!q deZV  e\"  d\" @H@HH@\"?,@HH@HH%@HH@HHq deZVl e\"l d\" db@HH!#)=T@  !A  )+))*@HH?B @\"A)+ )q=!!?ĉC  D  ))E F G \"H I !#6E J G \"0H 3I #*IK !D  )" [last-command default vm-mail-buffer vm-summary-buffer nil vm-message-pointer vm-auto-folder-alist vm-last-save-folder dir vm-folder-directory default-directory current-prefix-arg unexpanded-folder folder count vm-confirm-new-folders vm-visit-when-saving mlist folder-buffer t vm-sr-clip vm-sr-min vm-sr-max start end buffer-read-only vm-sr-clip vm-sr-min vm-sr-max major-mode vm-messages-not-on-disk vm-delete-after-saving buffer-name bufferp vm-error-if-folder-empty 1 expand-file-name file-exists-p get-file-buffer y-or-n-p format "%s does not exist, save there anyway? " error "Save aborted" "Folder %s is being visited, cannot save." vm-select-marked-or-prefixed-messages find-file-noselect marker-buffer 0 buffer-size set-marker make-marker ((byte-code "  	
\"	\"
\"" [vm-sr-clip vm-sr-min vm-sr-max nil widen narrow-to-region set-marker] 6)) widen 4 2 vm-stuff-attributes write-region 3 quiet ((byte-code "  	
\"	\"
\"" [vm-sr-clip vm-sr-min vm-sr-max nil widen narrow-to-region set-marker] 6)) insert-buffer-substring vm-mode vm-set-buffer-modified-p buffer-modified-p vm-clear-modification-flag-undos vm-set-filed-flag vm-assimilate-new-messages vm-update-summary-and-mode-line message "Message%s saved to buffer %s" /= "s" "" "Message%s saved to %s" vm-delete-message] 50))

(defun vm-save-message-sans-headers (file &optional count) "\
Save the current message to a file, without its header section.
If the file already exists, the message will be appended to it.
Prefix arg COUNT means save the next COUNT messages.  A negative COUNT means
save the previous COUNT.

When invoked on marked messages (via vm-next-command-uses-marks),
all marked messages in the current folder are saved; other messages are
ignored.

The saved messages are flagged as `written'.

This command should NOT be used to save message to mail folders; use
vm-save-message instead (normally bound to `s')." (interactive (byte-code " $
!D)" [last-command nil current-prefix-arg vm-follow-summary-cursor read-file-name "Write text to file: " prefix-numeric-value] 6)) (byte-code " ! q! !?  * ׉!?= !E \"!	=f !` !	r r !	E@HH!q deZV  e\"  d\" 	? @!@!%&@!@!	q deZV e\" d\" db@HH!#))+)))*@HH?8@\"A)+t )	b\"YZ	!#s\"op#* " [last-command nil current-prefix-arg vm-mail-buffer vm-summary-buffer count file vm-visit-when-saving mlist file-buffer t vm-sr-clip vm-sr-min vm-sr-max start end buffer-read-only vm-sr-clip vm-sr-min vm-sr-max buffer-name bufferp vm-error-if-folder-empty 1 expand-file-name get-file-buffer error "File %s is being visited, cannot save." vm-select-marked-or-prefixed-messages find-file-noselect marker-buffer 0 buffer-size set-marker make-marker ((byte-code "  	
\"	\"
\"" [vm-sr-clip vm-sr-min vm-sr-max nil widen narrow-to-region set-marker] 6)) widen write-region vm-text-of vm-text-end-of quiet ((byte-code "  	
\"	\"
\"" [vm-sr-clip vm-sr-min vm-sr-max nil widen narrow-to-region set-marker] 6)) insert-buffer-substring 2 5 vm-set-written-flag message "Message%s written to buffer %s" /= "s" "" "Message%s written to %s" vm-update-summary-and-mode-line] 40))

(defun vm-pipe-message-to-command (command prefix-arg) "\
Run shell command with the some or all of the current message as input.
By default the entire message is used.
With one \\[universal-argument] the text portion of the message is used.
With two \\[universal-argument]'s the header portion of the message is used.

When invoked on marked messages (via vm-next-command-uses-marks),
each marked message is successively piped to the shell command,
one message per command invocation.

Output, if any, is displayed.  The message is not altered." (interactive (byte-code " 	\"
D)" [last-command vm-last-pipe-command current-prefix-arg vm-follow-summary-cursor read-string "Pipe to command: "] 4)) (byte-code "ň ! q! !? ŉ !4 	==@ !D @Cq ) @HH!q @HHb \" `@!\" \" @!@!\" \" `@!\" `@!\" 	=ed &))AT q !? !)+" [last-command vm-last-pipe-command current-prefix-arg vm-mail-buffer vm-summary-buffer nil command buffer pop-up-windows vm-mutable-windows t mlist vm-message-pointer prefix-arg shell-file-name buffer-name bufferp vm-error-if-folder-empty get-buffer-create "*Shell Command Output*" vm-next-command-uses-marks vm-select-marked-or-prefixed-messages 0 erase-buffer marker-buffer widen forward-line equal narrow-to-region vm-text-end-of (4) vm-text-of (16) call-process-region "sh" "-c" zerop buffer-size display-buffer] 32))

(defun vm-isearch (forward &optional regexp) (byte-code "` X  \"V`
	 ߋGVa ] a !q bx  #." [search-string search-message cmds nil success t wrapped barrier adjusted invalid-regexp slow-terminal-mode search-slow-speed search-slow-window-lines other-end small-window found-point found-start opoint vm-ml-attributes-string vm-ml-message-number vm-message-pointer inhibit-quit regexp search-last-regexp search-last-string "" baud-rate window-height * 4 vm-isearch-push-state ((byte-code "Í !`" [found-start found-point search-done (byte-code "6	Yp    
   ?p `!W> [TD  TZ\")Wj Z! `\"  \" \"m !b	z { r	Ɖ
Y  \"1= GU \"\"1U    b \" ?   1= =d==?\"'#<<5e6dbE?`\"\\@  A  1U}A?x z 1==?bB `=C  D !`)\")P#P)TE \"F UG WE H \"E I \"\"TU/J !!>I U>K L !P!P?^?eƂ,M >
N O A@8    ] ^b)P =
b?
?ƁQ R S !^X!S !,
?'&T T#b@  A  )  " [t unread-command-char slow-terminal-mode small-window found-point window-min-height nil search-slow-window-lines char quit-flag adjusted search-exit-option search-exit-char search-string forward regexp success opoint search-repeat-char search-reverse-char search-last-regexp search-last-string search-message wrapped barrier search-delete-char cmds search-yank-word-char search-yank-line-char word other-end search-quote-char cs invalid-regexp 0 input-pending-p vm-isearch-message pos-visible-in-window-p move-to-window-line 1 split-window window-height vertical-motion set-window-start next-window set-window-hscroll window-hscroll selected-window other-window 7 128 throw search-done vm-nonincremental-search ding discard-input vm-update-search-position signal quit vm-isearch-pop equal "" mapconcat text-char-description vm-isearch-search vm-isearch-push-state buffer-substring end-of-line forward-word /= 127 32 9 13 read-quoted-char 10 char-to-string (42 63) 5 2 124 (byte-code "!" [search-string looking-at] 2) ((error (byte-code "" [nil] 1))) match-end min] 49) window-start selected-window] 4)) 0 message set-window-start selected-window] 21))

(defun vm-isearch-message (&optional c-q-hack ellipsis) (byte-code " 	 ̏
 É
 ΂ $ - т. 8 ӂ9 	D ՂE P QQ &H!I	
	i m \"))" [invalid-regexp ellipsis success nil m wrapped regexp forward search-message c-q-hack cursor-in-echo-area (byte-code "`#É" [search-string t invalid-regexp nil re-search-forward] 4) ((error (byte-code "" [nil] 1))) concat "" "failing " "wrapped " "regexp " "VM I-search" ": " " backward: " "^Q" " [" "]" 0 upcase message "%s"] 11))

(defun vm-isearch-pop nil (byte-code "A@	@	A@	8	8	8	8	8	8		8
	8	8R q	8
	8)	AA@b@!)" [cmds cmd search-string search-message success forward other-end invalid-regexp wrapped barrier vm-ml-attributes-string vm-ml-message-number vm-message-pointer vm-summary-buffer 3 4 5 6 7 8 9 10 11 vm-set-summary-pointer] 2))

(defun vm-isearch-push-state nil (byte-code "	
`	
&B" [cmds search-string search-message success forward other-end invalid-regexp wrapped barrier vm-ml-attributes-string vm-ml-message-number vm-message-pointer list] 13))

(defun vm-isearch-search nil (byte-code "\"Ǐ
  \" @8  @8b" [nil t success cmds vm-isearch-message lossage (byte-code "
	 
  ʂ ˂$ # ̂$ $@ : != !)" [inhibit-quit nil regexp invalid-regexp success forward search-string t other-end funcall re-search-forward re-search-backward search-forward search-backward match-beginning 0 match-end] 5) ((quit (byte-code "É" [unread-command-char success nil 7] 2)) (invalid-regexp (byte-code "	A@\" ĉ" [invalid-regexp lossage string-match "\\`Premature \\|\\`Unmatched \\|\\`Invalid " "incomplete input"] 3))) vm-update-search-position 3 ding 2] 5))

(defun vm-nonincremental-search (forward regexp) (byte-code "  ΂ ς( ' Ђ( щ\"r		=J D ӂE ԉN 	
		=c _ Ղ` ւ u q ׂr ؂ ~ ق ډ!GU  
DB
\"." [message char function string inhibit-quit cursor-in-echo-area t regexp forward search-yank-word-char unread-command-char search-last-string command-history nil "VM Regexp search: " "VM Regexp search backward: " "VM Search: " "VM Search backward: " "%s" "VM Word search: " "VM Word search backward: " word-search-forward word-search-backward re-search-forward re-search-backward search-forward search-backward read-string 0 funcall] 6))

(defun vm-update-search-position (&optional record-change) (byte-code "`@HHY `@HHX ` `
W 
@HHY5 
@HHXO G 
\"L 
S 
A ǉ *" [vm-message-pointer nil mp vm-message-list point record-change vm-need-summary-pointer-update t 0 3 vm-record-and-change-message-pointer vm-update-summary-and-mode-line] 4))

(defun vm-isearch-forward nil "\
Incrementally search forward through the current folder's messages.
Usage is identical to the standard Emacs incremental search.
When the search terminates the message containing point will be selected.

If the variable vm-search-using-regexps is non-nil, regular expressions
are understood; nil means the search will be for the input string taken
literally." (interactive) (byte-code "  ! q	!\" 	!?\"  !p!?3  ed ӎp!! \"!`@!We @HHj @!d\"@p!\" ݉	ed)+" [vm-mail-buffer vm-summary-buffer nil clip-head clip-tail old-w t vm-search-using-regexps vm-message-pointer vm-system-state vm-follow-summary-cursor buffer-name bufferp vm-error-if-folder-empty vm-set-window-configuration searching-folder get-buffer-window vm-display-current-message-buffer selected-window ((byte-code "	\"
!" [clip-head clip-tail old-w narrow-to-region select-window] 3)) select-window widen vm-isearch vm-update-search-position narrow-to-region vm-vheaders-of 0 vm-highlight-headers vm-show-current-message reading] 22))

(defun vm-summary-mode nil "\
Major mode for VM folder summaries.
This major mode uses the same keymap as vm-mode.  See the vm-mode documentation
for a list of available commands." (byte-code "ŉ	!" [mode-name major-mode mode-line-format vm-mode-line-format buffer-read-only t vm-summary-pointer nil truncate-lines vm-mode-map "VM Summary" vm-summary-mode use-local-map] 2))

(put (quote vm-summary-mode) (quote mode-class) (quote special))

(defun vm-summarize (&optional display) "\
Summarize the contents of the folder in a summary buffer. 
The format is as described by the variable vm-summary-format.  Generally
one line per message is most pleasing to the eye but this is not
mandatory." (interactive "p") (byte-code " ! q	! 	!?  	?O p \"!	q!! )ŉ* } !?z 	j =		!=y  ) 	! ! q " [vm-mail-buffer vm-summary-buffer nil b inhibit-quit t vm-summary-redo-start-point display vm-mutable-windows pop-up-windows buffer-name bufferp vm-error-if-folder-empty get-buffer-create format "%s Summary" abbrev-mode 0 auto-fill-mode vm-summary-mode vm-set-window-configuration summarize display-buffer vm-proportion-windows switch-to-buffer vm-update-summary-and-mode-line] 17))

(defun vm-do-summary (&optional start-point) (byte-code "	 
 !\"\\!q	A @HH< @HHb`d\"> dbH  ȉ	 
q@\"q@H I\"@H IAT\"! \"I ))!," [mp start-point vm-message-list n modulus summary vm-summary-buffer buffer-read-only nil vm-summary-pointer vm-mail-buffer 0 % vm-abs random 11 10 message "Generating summary..." 1 2 delete-region erase-buffer vm-sprintf vm-summary-format point-marker insert "  " 3 zerop "Generating summary... %d" "Generating summary... done"] 16))

(defun vm-do-needed-summary-rebuild nil (byte-code " 	$ : ! @!8 8 	8 8 @!" [vm-summary-redo-start-point vm-summary-buffer nil vm-message-pointer vm-need-summary-pointer-update vm-do-summary vm-set-summary-pointer] 5))

(defun vm-update-message-summary (m) (byte-code "		H	HHJH= 	HHBw @HH0 @HH!!n @\"@HH!q@HHbgU^ ҂_ 
\"`@HH\")*)A *" [m-list m summary inhibit-quit t buffer-read-only 2 0 6 7 nil 1 buffer-name marker-buffer vm-sprintf vm-summary-format insert 32 "  " "->" delete-region 3] 10))

(defun vm-set-summary-pointer (m) (byte-code "c !p͎̎q	\"  	!9 HHbc!		HHbc!!	^ 
^  ))))+" [vm-summary-buffer w old-window nil inhibit-quit t vm-sbe-buffer buffer-read-only vm-summary-pointer m vm-auto-center-summary get-buffer-window ((byte-code "p=? ! q" [vm-sbe-buffer buffer-name] 2)) ((byte-code " !" [old-window select-window] 2)) selected-window select-window 1 2 "  " delete-char "->" forward-char -2] 8))

(defun vm-mark-for-display-update (message) (byte-code "	B" [vm-messages-needing-display-update message] 2))

(defun vm-force-mode-line-update nil (byte-code " q !)" [other-buffer set-buffer-modified-p buffer-modified-p] 4))

(defun vm-update-summary-and-mode-line nil (byte-code "  ?  @HH@HH' Ή9 @HH6 ω9 Љ@HHH P@HHW P@HHf P@HHu P@HH P@HH P@HH P ? & @!A  ! " [vm-message-pointer nil vm-ml-message-number vm-ml-attributes-string t vm-summary-buffer vm-real-buffers vm-messages-needing-display-update vm-deferred-message vm-do-needed-renumbering vm-do-needed-summary-rebuild 1 0 2 "new" "unread" "read" 7 " edited" 3 " filed" 5 " written" 4 " replied" 6 " forwarded" " deleted" " MARKED" vm-copy-local-variables vm-ml-highest-message-number vm-buffer-modified-p vm-message-list vm-update-message-summary message vm-force-mode-line-update] 9))

(defun vm-auto-center-summary nil (byte-code " = !? !" [vm-auto-center-summary t one-window-p recenter (4)] 3))

(defun vm-follow-summary-cursor nil (byte-code " 	= `q)?5 
@HHY5 
@HHW< Ȃ 
@HHWN 	U A	ȉ	=?g 
	@HHYt 	A	V 	=? q	\"ˉ
 )+" [vm-follow-summary-cursor major-mode point message-pointer message-list vm-mail-buffer vm-message-pointer vm-message-list nil mp vm-need-summary-pointer-update t vm-summary-mode 1 2 3 vm-record-and-change-message-pointer vm-preview-current-message] 3))

(defun vm-sprintf (format-variable message) (byte-code "NJ=? !
N!)" [format-variable vm-su-message message vm-compiled-format vm-compile-format eval vm-format-sexp] 4))

(defun vm-compile-format (format-variable) (byte-code "	J!!#!H>U: D
BWUJ D
BWUZ D
BWUj D
BWUz D
BWU D
BWU D
BWU D
BWU D
BWU D
BWU D
BWU D
BWU D
BWU
D
BWUD
BWU*D
BWU:D
BWUJD
BWUWD
B!r

@!!O!E\"!

@!!O!E\"!

@!!O!E\"@ !OBBA !OBB! GOBB C D !\"D 
!BBE 	F 
#E 	G #." [format format-variable sexp sexp-fmt conv-spec last-match-end case-fold-search nil store-match-data string-match "%\\(-\\)?\\([0-9]\\)*\\(\\.\\([0-9]+\\)\\)?\\([aAcdfFhilmMnstTwyz*%]\\)" match-end 0 match-beginning 5 (97 65 99 100 102 70 104 105 108 77 109 110 115 116 84 119 121 122 42) 97 vm-su-attribute-indicators vm-su-message 65 vm-su-attribute-indicators-long 99 vm-su-byte-count 100 vm-su-monthday 102 vm-su-from 70 vm-su-full-name 104 vm-su-hour 105 vm-su-message-id 108 vm-su-line-count 109 vm-su-month 77 vm-su-month-number 110 vm-su-message-number 115 vm-su-subject 84 vm-su-to-names 116 vm-su-to 119 vm-su-weekday 121 vm-su-year 122 vm-su-zone 42 vm-su-mark 1 setcar vm-left-justify-string string-to-int 2 vm-right-justify-string 3 vm-truncate-string 4 "%s" "%%" apply concat nreverse put vm-format-sexp vm-compiled-format] 30))

(defun vm-get-header-contents (message header-name) (byte-code "
\"HH!q HHb	!#L > !!\"QH !!\"  ))*" [contents regexp vm-header-regexp-format header-name message t nil format marker-buffer 0 widen re-search-forward vm-text-of ", " buffer-substring match-beginning 1 match-end] 14))

(defun vm-left-justify-string (string width) (byte-code "G	Y  	GZ\"P" [string width make-string 32] 4))

(defun vm-right-justify-string (string width) (byte-code "G	Y  	GZ\"P" [string width make-string 32] 3))

(defun vm-truncate-string (string width) (byte-code "G	X  	O" [string width 0] 3))

(defun vm-su-attribute-indicators (m) (byte-code "HH Â% HH ł% HH$ ǂ% HH1 ʂ> HH= ̂> HHJ ΂W HHV ЂW HHc ҂d R" [m t 2 "D" 0 "N" 1 "U" " " 3 "F" 5 "W" 4 "R" 6 "Z" 7 "E"] 5))

(defun vm-su-attribute-indicators-long (m) (byte-code "HH Ă& HH Ƃ& HH% Ȃ& HH2 ˂3 HH? ͂@ HHL ςM HHY тZ HHf ӂg &" [m t concat 2 "D" 0 "N" 1 "U" " " 4 "r" 6 "z" 3 "f" 5 "w" 7 "e"] 8))

(defun vm-su-byte-count (m) (byte-code "HH H!!Z!I" [m 3 0 int-to-string vm-text-end-of vm-text-of] 7))

(defun vm-su-weekday (m) (byte-code "HH !HH" [m 3 1 vm-su-do-date] 3))

(defun vm-su-monthday (m) (byte-code "HH !HH" [m 3 2 vm-su-do-date] 3))

(defun vm-su-month (m) (byte-code "HH !HH" [m 3 vm-su-do-date] 3))

(defun vm-su-month-number (m) (byte-code "HH !HH" [m 3 15 vm-su-do-date] 3))

(defun vm-su-year (m) (byte-code "HH !HH" [m 3 4 vm-su-do-date] 3))

(defun vm-su-hour (m) (byte-code "HH !HH" [m 3 5 vm-su-do-date] 3))

(defun vm-su-zone (m) (byte-code "HH !HH" [m 3 6 vm-su-do-date] 3))

(defun vm-su-mark (m) (byte-code "HH  Ç" [m 1 "*" " "] 2))

(defun vm-grok-From_-date (message) (byte-code "=
 / 
HH!q 
HHb!- !!\"))" [vm-folder-type nil message mmdf marker-buffer 0 widen looking-at "From [^ 	
]+[ 	]+\\([^ 	
].*\\)" buffer-substring match-beginning 1 match-end] 8))

(defun vm-su-do-date (m) (byte-code "	\" 	!?G 	HI	HI	HI	HI	HI	HI	HIB\" !d 	H!!OIj 	HI	H!!OI	!!O\"	H!!OI	H!!OI	H!!OIB\"	H!!OI	!!O\"	H!!OI	H!!OI	H!!OI!	H!!OIB	HI	HI	HI	HI	HI	HI	HI)" [date m t nil vm-get-header-contents "Date" vm-grok-From_-date 3 1 "" 2 15 4 5 6 string-match "\\(\\([a-z][a-z][a-z]\\),\\)?[ 	
]*\\([0-9][0-9]?\\)[ 	
---]*\\([a-z][a-z][a-z]\\)[ 	
---]*\\([0-9]*[0-9][0-9]\\)[ 	
]*\\([0-9:]+\\)[ 	
]*\\([a-z][a-z]?[a-z]?\\|[---+][0-9][0-9][0-9][0-9]\\)" match-beginning match-end vm-su-do-month 7 "\\([a-z][a-z][a-z]\\)[ 	
]*\\([a-z][a-z][a-z]\\)[ 	
]*\\([0-9][0-9]?\\)[ 	
]*\\([0-9:]+\\)[ 	
]*[0-9][0-9]\\([0-9][0-9]\\)[ 	
]*\\([a-z][a-z]?[a-z]?\\|[---+][0-9][0-9][0-9][0-9]\\)?"] 37))

(defun vm-su-do-month (m month-abbrev) (byte-code "!?& 	
؉ۏ" [vm-su-month-sym-jan vm-su-month-sym-feb vm-su-month-sym-mar vm-su-month-sym-apr vm-su-month-sym-may vm-su-month-sym-jun vm-su-month-sym-jul vm-su-month-sym-aug vm-su-month-sym-sep vm-su-month-sym-oct vm-su-month-sym-nov vm-su-month-sym-dec boundp ("January" "1") ("February" "2") ("March" "3") ("April" "4") ("May" "5") ("June" "6") ("July" "7") ("August" "8") ("September" "9") ("October" "10") ("November" "11") ("December" "12") nil (byte-code "	!P!J
H@I
HA@I)" [val month-abbrev m intern "vm-su-month-sym-" downcase 3 15] 5) ((error (byte-code "HIHI" [m 3 "???" 15 "?"] 3)))] 4))

(defun vm-su-full-name (m) (byte-code "HH !HH" [m 3 7 vm-su-do-author] 3))

(defun vm-su-from (m) (byte-code "HH !HH" [m 3 8 vm-su-do-author] 3))

(defun vm-grok-From_-author (message) (byte-code "=
 / 
HH!q 
HHb!- !!\"))" [vm-folder-type nil message mmdf marker-buffer 0 widen looking-at "From \\([^ 	
]+\\)" buffer-substring match-beginning 1 match-end] 8))

(defun vm-su-do-author (m) (byte-code "
\"
\" 
!	?, ɉ?) ɉ 	\"V !; ?H 	!!O	!!O 	\" ?l 	!!O	!!SO	!T!OP 	\" 	!!O! ! !? 	!!OP 	!! !O! ڂ %? \" 	
HI
H	I*" [full-name from m vm-gargle-uucp nil vm-get-header-contents "Full-Name" "From" vm-grok-From_-author "???" string-match "^\\([^< 	
]+\\([ 	
]+[^< 	
]+\\)*\\)?[ 	
]*\\(<\\([^>]+\\)>\\)" match-beginning 1 match-end 4 "[ -]*(\\([^)]+\\))[ -]*" 0 "\\([^!@:.]+\\)\\(\\.[^!@:]+\\)?!\\([^!@: 	
]+\\)\\(@\\([^!@:. 	
]+\\)\\(.[^ 	
]+\\)?\\)?[ 	
]*$" concat 3 "@" 5 2 6 "." "" ".UUCP" "^[ 	
]*$" 7 8] 34))

(autoload (quote rfc822-addresses) "rfc822")

(defun vm-su-do-recipients (m) (byte-code "\"\" \"\"  \"9 Q: !! @\" @\" !y @!!O
B @!!O
B @\" @!!O
B @
BAK 	$$@\"@!!O! ! !? @!!OP @!!!O!Ԃ%\"A H#IH
#I." [mail-use-rfc822 t names addresses to cc all list m vm-gargle-uucp nil vm-get-header-contents "To" "Apparently-To" user-login-name "Cc" ", " rfc822-addresses vm-parse-addresses string= "" string-match "^\\(\\([^<]+[^ 	
]\\)[ 	
]+\\)?<\\([^>]+\\)>" match-beginning 2 match-end 3 "[ -]*(\\([^)]+\\))[ -]*" 1 "\\([^!@:.]+\\)\\(\\.[^!@:]+\\)?!\\([^!@: 	
]+\\)\\(@\\([^!@:. 	
]+\\)\\(.[^ 	
]+\\)?\\)?[ 	
]*$" setcar concat "@" 5 6 "." ".UUCP" 13 mapconcat identity 14] 37))

(defun vm-su-to (m) (byte-code "HH !HH" [m 3 13 vm-su-do-recipients] 3))

(defun vm-su-to-names (m) (byte-code "HH !HH" [m 3 14 vm-su-do-recipients] 3))

(defun vm-su-message-id (m) (byte-code "HH H\" I" [m 3 9 vm-get-header-contents "Message-Id" ""] 5))

(defun vm-su-line-count (m) (byte-code "HH6 Hp
=! ! @HH!qʎ !!\"!)))I" [m vm-sbe-buffer major-mode vm-message-list vm-message-pointer 3 10 vm-virtual-mode marker-buffer 0 ((byte-code "p=? ! q" [vm-sbe-buffer buffer-name] 2)) widen int-to-string count-lines vm-text-of vm-text-end-of] 10))

(defun vm-su-message-number (m) (byte-code "HH" [m 1 0] 2))

(defun vm-su-subject (m) (byte-code "HH H\" I" [m 3 11 vm-get-header-contents "Subject" ""] 5))

(defun vm-set-buffer-modified-p (flag &optional clear-modflags buffer) (byte-code " q	??
= ÂL 	!T	?D ʉC C @IA1 )	J ̉)" [buffer flag vm-buffer-modified-p nil vm-modification-counter mp vm-message-list vm-messages-not-on-disk clear-modflags set-buffer-modified-p 0 4 "--**-"] 5))

(defun vm-sanity-check-modification-flag nil (byte-code "?? =?  !" [vm-buffer-modified-p buffer-modified-p vm-set-buffer-modified-p] 4))

(defun vm-undo-boundary nil (byte-code "@
 B" [vm-undo-record-list nil] 2))

(defun vm-clear-expunge-invalidated-undos (&optional real-folder) (byte-code "	[ @? R @@=?9 @A@HH9 ?9 @A@HH!=O 
H 
A\"L AR A ?  p @q!Al )*!*" [udp vm-undo-record-list udp-prev real-folder t vm-virtual-buffers b-list curbuf nil vm-set-buffer-modified-p 2 marker-buffer 0 setcdr vm-clear-expunge-invalidated-undos vm-clear-modification-flag-undos] 6))

(defun vm-clear-modification-flag-undos (&optional real-folder) (byte-code "	I @? @ @@=' ?' @!== 
6 
A\": A@ A  ?x x pv @q!A] )**" [udp vm-undo-record-list udp-prev real-folder t vm-virtual-buffers b-list curbuf nil vm-set-buffer-modified-p vm-last setcdr vm-squeeze-consecutive-undo-boundaries vm-clear-modification-flag-undos] 7))

(defun vm-squeeze-consecutive-undo-boundaries nil (byte-code "	, @? 
 
@?  
A\"# A 	\"7 ĉ*" [udp vm-undo-record-list udp-prev t nil setcdr equal (nil)] 4))

(defun vm-undo-record (sexp) (byte-code "	B" [vm-undo-record-list sexp] 2))

(defun vm-undo nil "\
Undo last change to message attributes in the current folder.
Consecutive invocations of this command cause sequentially earlier
changes to be undone.  After an intervening command between undos,
the undos themselves become undoable." (interactive) (byte-code " ! q	! 	!?  =?2 ?< !A@Z @!AD !k  ?k   *" [vm-mail-buffer vm-summary-buffer nil inhibit-quit t modified last-command vm-undo-record-pointer vm-undo-record-list buffer-name bufferp buffer-modified-p vm-undo error "No further VM undo information available" eval message "VM Undo!" delete-auto-save-file-if-necessary vm-update-summary-and-mode-line] 11))

(defun vm-set-xxxx-flag (m flag norecord function attr-index) (byte-code "HHJ=?# HH) HH!q)HHHJH=N HHJ?c H	
I!?m ?x ? HH HH!q? p!D!͉
?E! T= ! I)HH


@HH!q F!
?E! T͉
A )." [inhibit-quit t m-list modflag-buffer mirror virtual m read-only vm-folder-read-only attr-index flag norecord vm-buffer-modified-p nil vm-totals function vm-modification-counter vm-flush-interval 0 6 marker-buffer 1 2 vm-mark-for-display-update vm-set-buffer-modified-p vm-undo-record vm-undo-boundary vm-stuff-virtual-attributes 4 7] 15))

(defun vm-set-new-flag (m flag &optional norecord) (byte-code "	
%" [m flag norecord vm-set-xxxx-flag vm-set-new-flag 0] 6))

(defun vm-set-unread-flag (m flag &optional norecord) (byte-code "	
%" [m flag norecord vm-set-xxxx-flag vm-set-unread-flag 1] 6))

(defun vm-set-deleted-flag (m flag &optional norecord) (byte-code "	
%" [m flag norecord vm-set-xxxx-flag vm-set-deleted-flag 2] 6))

(defun vm-set-filed-flag (m flag &optional norecord) (byte-code "	
%" [m flag norecord vm-set-xxxx-flag vm-set-filed-flag 3] 6))

(defun vm-set-replied-flag (m flag &optional norecord) (byte-code "	
%" [m flag norecord vm-set-xxxx-flag vm-set-replied-flag 4] 6))

(defun vm-set-written-flag (m flag &optional norecord) (byte-code "	
%" [m flag norecord vm-set-xxxx-flag vm-set-written-flag 5] 6))

(defun vm-set-forwarded-flag (m flag &optional norecord) (byte-code "	
%" [m flag norecord vm-set-xxxx-flag vm-set-forwarded-flag 6] 6))

(defun vm-set-deleted-flag-in-vector (v flag) (byte-code "	I" [v flag 2] 3))

(defvar vm-primary-inbox "~/INBOX" "\
*Mail is moved from the system mailbox to this file for reading.")

(defvar vm-crash-box "~/INBOX.CRASH" "\
*File in which to store mail temporarily while it is transferrred from
the system mailbox to the primary inbox.  If the something happens
during this mail transfer, any missing mail will be found in this file.
VM will do crash recovery from this file automatically at startup, as
necessary.")

(defvar vm-spool-files (or (and (setq vm-spool-files (getenv "MAILPATH")) (setq vm-spool-files (vm-parse vm-spool-files "\\([^:%?]+\\)\\([%?][^:]*\\)?\\(:\\|$\\)"))) (and (setq vm-spool-files (getenv "MAIL")) (setq vm-spool-files (list vm-spool-files)))) "\
*If non-nil this variable's value should be a list of strings naming files
that VM will check for incoming mail instead of the where VM thinks your
system mailbox is.  This variable can be used to specify multiple spool files
or to point VM in the right direction if its notion of your system mailbox is
incorrect.

VM will default to the value of the shell environmental variables
MAILPATH or MAIL if either of these variables are defined.")

(defvar vm-visible-headers (quote ("From:" "Sender:" "Resent-From" "To:" "Apparently-To:" "Cc:" "Subject:" "Date:" "Resent-Date:")) "\
*List of headers that should be visible when VM first displays a message.
These should be listed in the order you wish them presented.
Regular expressions are allowed.")

(defvar vm-invisible-header-regexp nil "\
*Non-nil value should be a regular expression that tells what headers
VM should NOT normally display when presenting a message.  All other
headers will be displayed.  The variable vm-visible-headers specifies
the presentation order of headers; headers not matched by
vm-visible-headers are displayed last.

Nil value causes VM to display ONLY those headers specified in
vm-visible-headers.")

(defvar vm-highlighted-header-regexp nil "\
*Regular expression that matches the beginnings of headers that should
be highlighted when a message is first presented.  For exmaple setting
this variable to \"^From\\\\|^Subject\" causes the From: and Subject:
headers to be highlighted.")

(defvar vm-preview-lines 0 "\
*Non-nil value N causes VM to display the visible headers + N lines of text
from a message when it is first presented.  The message is not actually
flagged as read until it is exposed in its entirety.  Nil causes VM not
to preview a message at all; it is displayed in its entirety when first
presented and is immediately flagged as read.")

(defvar vm-preview-read-messages t "\
*Non-nil value means to preview messages even if they've already been read.
A nil value causes VM to preview messages only if new or unread.")

(defvar vm-auto-next-message t "\
*Non-nil value causes VM to use vm-next-mesage to advance to the next
message in the folder if the user attempts to scroll past the end of the
current messages.  A nil value disables this behavior.")

(defvar vm-honor-page-delimiters nil "\
*Non-nil value causes VM to honor pages delimiters (as specified by the
page-delimiter variable) when scrolling through a message.")

(defvar vm-window-configuration-file nil "\
*Non-nil value should be a string that tells VM where to load
and store its window configuration information.  The window
configuration information is loaded automatically the first time
you run VM in an Emacs session, and tells VM how to set up
windows depending on what you are doing inside VM.

The command vm-save-window-configuration (normally bound to `WS')
lets you update this information; see its documentation for more
information.")

(defvar vm-confirm-quit 0 "\
*Value of t causes VM to always ask for confirmation before quitting
a VM visit of a folder.  A nil value means VM will ask only when messages
will be lost unwittingly by quitting, i.e. not removed by intentional
delete and expunge.  A value that is not nil and not t causes VM to ask
only when there are unsaved changes to message attributes, or when messages
will be unwittingly lost.")

(defvar vm-retain-message-order 0 "\
*Non-nil value causes VM to save the message presentation order
when the folder is saved.  The next time the folder is visited
the saved presentation order will be used.

A value of t causes VM to consider message order changes
sufficient reason to mark the folder buffer as modified.  This
will ensure that message order changes will be saved even if no
other buffer modifications (e.g. deleting messages, or reading
unread message) are made.

A value that is not nil and not t causes VM note the message
order changes, but not to save them unless there are other folder
buffer modifications that need saving.")

(defvar vm-folder-directory nil "\
*Directory where folders of mail are kept.")

(defvar vm-confirm-new-folders nil "\
*Non-nil value causes interactive calls to vm-save-message
to ask for confirmation before creating a new folder.")

(defvar vm-delete-empty-folders t "\
*Non-nil value causes VM to remove empty (zero length) folder files
after saving them.")

(defvar vm-flush-interval t "\
*Non-nil value specifies how often VM flushes its cached internal
data.  A numeric value gives the number of seconds between
flushes.  A value of t means flush every time there is a change.
Nil means don't do flushing until a message or folder is saved.

Normally when a message attribute is changed. VM keeps the record
of the change in its internal memory and doesn't insert the
changed data into the folder buffer until a particular message or
the whole folder is saved to disk.  This makes normal Emacs
auto-saving useless for VM folder buffers because the information
you'd want to auto-save, i.e. the attribute changes, isn't in
the buffer when it is auto-saved.

Setting vm-flsuh-interval to a numeric value will cause the VM's
internal memory caches to be periodically flushed to the folder
buffer.  This is done non-obtrusively, so that if you type
something while flushing is occuring, the flush will abort
cleanly and Emacs will respond to your keystrokes as usual.")

(defvar vm-visit-when-saving 0 "\
*Value determines whether VM will visit folders when saving messages.
`Visiting' means that VM will read the folder into Emacs and append the
message to the buffer instead of appending to the folder file directly.
This behavior is ideal when folders are encrypted or compressed since
appending plaintext directly to such folders is a ghastly mistake.

A value of t means VM will always visit folders when saving.

A nil value means VM will never visit folders before saving to them, and
VM will generate an error if you attempt to save messages to a folder
that is being visited.  The latter restriction is necessary to insure
that the buffer and disk copies of the folder being visited remain
consistent.

A value that is not nil and not t means VM will save to a folder's
buffer if that folder is being visited, otherwise VM saves to the folder
file itself.")

(defvar vm-auto-folder-alist nil "\
*Non-nil value should be an alist that VM will use to choose a default
folder name when messages are saved.  The alist should be of the form
((HEADER-NAME
   (REGEXP . FOLDER-NAME) ...
  ...))
where HEADER-NAME and REGEXP are strings, and FOLDER-NAME is a string or an
s-expression that evaluates to a string.

If any part of the contents of the message header named by HEADER-NAME
is matched by the regular expression REGEXP, VM will evaluate the
corresponding FOLDER-NAME and use the result as the default when
prompting for a folder to save the message in.  If the resulting folder
name is a relative pathname, then it will resolve to the directory named by
vm-folder-directory, or the default-directory of the currently visited
folder if vm-folder-directory is nil.

When FOLDER-NAME is evaluated, the current buffer will contain only the
contents of the header named by HEADER-NAME.  It is safe to modify this
buffer.  You can use the match data from any \\( ... \\) grouping
constructs in REGEXP along with the function buffer-substring to build a
folder name based on the header information.  If the result of
evaluating FOLDER-NAME is a list, then the list will be treated as
another auto-folder-alist and will be descended recursively.

Whether matching is case sensitive depends on the value of the variable
vm-auto-folder-case-fold-search.")

(defvar vm-auto-folder-case-fold-search nil "\
*Non-nil value means VM will ignore case when matching header
contents while doing automatic folder selection via the variable
vm-auto-folder-alist.")

(defvar vm-virtual-folder-alist nil "\
*Non-nil value should be a list of virtual folder definitions.
A virtual folder is a mapping of messages from one or more real folders
into what appears to be a single folder.  A virtual folder definition
specifes which real folders should be searched for prospective messages
and what the inclusion criteria are.

Each virtual folder definition should have the following form:

  (VIRTUAL-FOLDER-NAME
    ( (FOLDER-NAME ...)
      (SELECTOR [ARG]) ... )
    ... )

VIRTUAL-FOLDER-NAME is the name of the virtual folder being defined.
This is the name by which VM will refer to this folder.

FOLDER-NAME should be the name of a real folder.  There may be more than
one FOLDER-NAME listed, the SELECTORs within that sublist will apply to
them all.  If FOLDER-NAME is a directory, VM will assume this to mean that
all the folders in that directory should be searched.

The SELECTOR is a Lisp symbol that tells VM how to decide whether a message
from one of the folders specifed by the FOLDER-NAMEs should be included
in the virtual folder.  Some SELECTORs require an argument ARG; unless
otherwise noted ARG may be omitted.

The recognized SELECTORs are:

   any       - matches any message.
   author    - matches message if ARG matches the author; ARG should be a
               regular expression.
   header    - matches message if ARG matches any part of the header
               portion of the message; ARG should be a regular expression.
   recipient - matches message if ARG matches any part of the recipient list;
               ARG should be a regular expression.
   subject   - matches message if ARG matches any part of the message's
               subject; ARG should be a regular expression.
   text      - matches message if ARG matches any part of the text
               portion of the message; ARG should be a regular expression.")

(defvar vm-virtual-mirror nil "\
*Non-nil value causes the attributes of messages in virtual folders
to mirror the changes in the attributes of the underlying real messages.
Similarly, changes in the attributes of virtual messages will change the
attributes of the underlying real messages.  A nil value causes virtual
messages to have their own dinstinct set of attributes, apart from the
underlying real message.

The value of vm-virtual-mirror is considered only at the time a
virtaul folder is visited.  Changing the value of vm-virtual-mirror
does not affect the behavior of existing virtual folders.")

(defvar vm-folder-read-only nil "\
*Non-nil value causes a folder to be considered unmodifiable by VM.
Commands that modify message attributes or messages themselves are disallowed.
Commands that scan or allow the reading of messages are allowed but the
`new' and `unread' message flags are not changed by them.")

(defvar vm-included-text-prefix " > " "\
*String used to prefix included text in replies.")

(defvar vm-keep-sent-messages 1 "\
*Non-nil value N causes VM to keep the last N messages sent from within VM.
`Keep' means that VM will not kill the VM mail buffer after you send a message
with C-c C-c (vm-mail-send-and-exit).  A value of 0 or nil causes VM never
to keep such buffers.  A value of t cuases VM never to kill such buffers.

Note that these buffers will vanish once you exit Emacs.  To keep a permanent
record of your outgoing mail, use the mail-archive-file-name variable.")

(defvar vm-mail-header-from nil "\
*Non-nil value should be a string that will be appear as the body
of the From header in outbound mail messages.  A nil value means don't
insert a From header.  This variable also controls the inclusion and
format of the Resent-From header, when resending a message with
vm-resend-message.")

(defvar vm-reply-subject-prefix nil "\
*Non-nil value should be a string that VM should add to the beginning
of the Subject header in replies, if the string is not already present.
Nil means don't prefix the Subject header.")

(defvar vm-reply-ignored-addresses nil "\
*Non-nil value should be a list of regular expressions that match
addresses that VM should automatically remove from the recipient headers
of replies.")

(defvar vm-in-reply-to-format "%i" "\
*String which specifies the format of the contents of the In-Reply-To
header that is generated for replies.  See the documentation for the
variable vm-summary-format for information on what this string may
contain.  The format should *not* end with a newline.
Nil means don't put an In-Reply-To header in replies.")

(defvar vm-included-text-attribution-format "%F writes:
" "*String which specifies the format of the attribution that precedes the
included text from a message in a reply.  See the documentation for the
variable vm-summary-format for information on what this string may contain.
Nil means don't attribute included text in replies.")

(defvar vm-forwarding-subject-format "forwarded message from %F" "\
*String which specifies the format of the contents of the Subject
header that is generated for a forwarded message.  See the documentation
for the variable vm-summary-format for information on what this string
may contain.  The format should *not* end with nor contain a newline.
Nil means leave the Subject header empty when forwarding.")

(defvar vm-digest-preamble-format "\"%s\" (%F)" "\
*String which specifies the format of the preamble lines gneerated by 
vm-send-digest when it is invoked with a prefix argument.  See the
documentation for the variable vm-summary-format for information on what
this string may contain.  The format should *not* end with nor contain a
newline.")

(defvar vm-digest-center-preamble t "\
*Non-nil value means VM will center the preamble lines that precede
the start of a digest.  How the lines will be centered depends on the
ambient value of fill-column.   A nil value suppresses centering.")

(defvar vm-summary-format "%2n %*%a %-17.17F %-3.3m %2d %4l/%-5c \"%s\"
" "*String which specifies the message summary line format.
The string may contain the printf-like `%' conversion specifiers which
substitute information about the message into the final summary line.

Recognized specifiers are:
   a - attribute indicators (always four characters wide)
       The first char is  `D', `N', `U' or ` ' for deleted, new, unread
       and read messages respectively.
       The second char is `F', `W' or ` ' for filed (saved) or written
       messages.
       The third char is `R', `Z' or ` ' for messages replied to,
       and forwarded messages.
       The fourth char is `E' if the message has been edited, ` ' otherwise.
   A - longer version of attributes indicators (six characters wide)
       The first char is  `D', `N', `U' or ` ' for deleted, new, unread
       and read messages respectively.
       The second is `r' or ` ', for message replied to.
       The third is `z' or ` ', for messages forwarded.
       The fourth is `f' or ` ', for messages filed.
       The fifth is `w' or ` ', for messages written.
       The sixth is `e' or ` ', for messages that have been edited.
   c - number of characters in message (ignoring headers)
   d - numeric day of month message sent
   f - author's address
   F - author's full name (same as f if full name not found)
   h - hour:min:sec message sent
   i - message ID
   l - number of lines in message (ignoring headers)
   m - month message sent
   M - numeric month message sent (January = 1)
   n - message number
   s - message subject
   t - addresses of the recipients of the message, in a comma-separated list
   T - full names of the recipients of the message, in a comma-separated list
       If a full name cannot be found, the corresponding address is used
       instead.
   w - day of the week message sent
   y - year message sent
   z - timezone of date when the message was sent
   * - `*' if the message is marked, ` ' otherwise

Use %% to get a single %.

A numeric field width may be specified between the `%' and the specifier;
this causes right justification of the substituted string.  A negative field
width causes left justification.

The field width may be followed by a `.' and a number specifying the maximum
allowed length of the substituted string.  If the string is longer than this
value it is truncated.

The summary format need not be one line per message but it must end with
a newline, otherwise the message pointer will not be displayed correctly
in the summary window.")

(defvar vm-auto-center-summary nil "\
*Value controls whether VM will keep the summary arrow vertically
centered within the summary window. A value of t causes VM to always
keep arrow cenered.  A value of nil means VM will never bother centering
the arrow.  A value that is not nil and not t causes VM to center the
arrow only if the summary window is not the only existing window.")

(defvar vm-mail-window-percentage 75 "\
*Percentage of the screen that should be used to show mail messages.
The rest of the screen will be used by the summary buffer, if displayed.")

(defvar vm-mutable-windows t "\
*This variable's value controls VM's window usage.

A value of t gives VM free run of the Emacs display; it will commandeer
the entire screen for its purposes.

A value of nil restricts VM's window usage to the window from which
it was invoked.  VM will not create, delete, or use any other windows,
nor will it resize its own window.

A value that is neither t nor nil allows VM to use other windows, but it
will not create new ones, or resize or delete the current ones.")

(defvar vm-startup-with-summary nil "\
*Value tells VM what to display when a folder is visited.
Nil means display folder only, t means display the summary only.  A
value that is neither t not nil means to display both folder and summary.
The latter only works if the variable pop-up-windows's value is non-nil.
See the documentation for vm-mail-window-percentage to see how to change how
the screen is apportioned between the folder and summary windows.")

(defvar vm-follow-summary-cursor nil "\
*Non-nil value causes VM to select the message under the cursor in the
summary window before executing commands that operate on the current message.
This occurs only when the summary buffer window is the selected window.")

(defvar vm-group-by nil "\
*Non-nil value tells VM how to group message presentation.
Currently, the valid non-nil values for this variable are
  \"subject\", which causes messages with the same subject (ignoring
    Re:'s) to be presented together,
  \"author\", which causes messages with the same author to be presented
    together,
  \"recipient\", which causes messages with the same set of recipients to
    be presented together,
  \"date-sent\", which causes message sent on the same day to be
    presented together,
  \"physical-order\" which appears only for completeness, this is the
    default behavior and is the same as nil.

The ordering of the messages in the folder itself is not altered, messages
are simply numbered and ordered differently internally.")

(defvar vm-skip-deleted-messages t "\
*Non-nil value causes VM's `n' and 'p' commands to skip over
deleted messages.  A value of t causes deleted message to always be skipped.
A value that is not nil and not t cuases deleted messages to be skipped only
if there are other messages that are not flagged for deletion in the desired
direction of motion.")

(defvar vm-skip-read-messages nil "\
*Non-nil value causes VM's `n' and `p' commands to skip over
messages that have already been read, in favor of new or unread messages.
A value of t causes read messages to always be skipped.  A value that is
not nil and not t causes read messages to be skipped only if there are
unread messages in the desired direction of motion.")

(defvar vm-move-after-deleting nil "\
*Non-nil value causes VM's `d' command to automatically invoke
vm-next-message or vm-previous-message after deleting, to move
past the deleted messages.")

(defvar vm-move-after-undeleting nil "\
*Non-nil value causes VM's `u' command to automatically invoke
vm-next-message or vm-previous-message after undeleting, to move
past the undeleted messages.")

(defvar vm-delete-after-saving nil "\
*Non-nil value causes VM automatically to mark messages for deletion
after successfully saving them to a folder.")

(defvar vm-delete-after-archiving nil "\
*Non-nil value causes VM automatically to mark messages for deletion
after successfully auto-archiving them with the vm-auto-archive-messages
command.")

(defvar vm-delete-after-bursting nil "\
*Non-nil value causes VM automatically to mark messages for deletion
after successfully bursting them with the vm-burst-digest command.")

(defvar vm-circular-folders 0 "\
*Value determines whether VM folders will be considered circular by
various commands.  `Circular' means VM will wrap from the end of the folder
to the start and vice versa when moving the message pointer or deleting,
undeleting or saving messages before or after the current message.

A value of t causes all VM commands to consider folders circular.

A value of nil causes all of VM commands to signal an error if the start
or end of the folder would have to be passed to complete the command.
For movement commands, this occurs after the message pointer has been
moved as far as possible in the specified direction.  For other commands,
the error occurs before any part of the command has been executed, i.e.
no deletions, saves, etc. will be done unless they can be done in their
entirety.

A value that is not nil and not t causes only VM's movement commands to
consider folders circular.  Saves, deletes and undelete commands will
behave the same as if the value is nil.")

(defvar vm-search-using-regexps nil "\
*Non-nil value causes VM's search command to interpret user input as a
regular expression instead of as a literal string.")

(defvar vm-edit-message-mode (quote text-mode) "\
*Major mode to use when editing messages in VM.")

(defvar vm-mode-hooks nil "\
*List of hook functions to run when a buffer enters vm-mode.
These hook functions should generally be used to set key bindings
and local variables.  Mucking about in the folder buffer is certainly
possible but it is not encouraged.")

(defvar vm-berkeley-mail-compatibility (memq system-type (quote (berkeley-unix))) "\
*Non-nil means to read and write BSD Mail(1) style Status: headers.
This makes sense if you plan to use VM to read mail archives created by
Mail.")

(defvar vm-gargle-uucp nil "\
*Non-nil value means to use a crufty regular expression that does
surprisingly well at beautifying UUCP addresses that are substitued for
%f and %t as part of summary and attribution formats.")

(defvar vm-strip-reply-headers nil "\
*Non-nil value causes VM to strip away all comments and extraneous text
from the headers generated in reply messages.  If you use the \"fakemail\"
program as distributed with Emacs, you probably want to set this variable to
to t, because as of Emacs v18.52 \"fakemail\" could not handle unstripped
headers.")

(defvar vm-rfc934-forwarding t "\
*Non-nil value causes VM to use char stuffing as described in RFC 934
when packaging a message to be forwarded.  This will allow the recipient
to use a standard bursting agent on the message and act upon it as if it
were sent directly.")

(defvar vm-inhibit-startup-message nil "\
*Non-nil causes VM not to display its copyright notice, disclaimers
etc. when started in the usual way.")

(defvar mail-yank-hooks nil "\
*List of hook functions called after yanking a message into a *mail*
buffer.  See the documentation for the function vm-yank-message for details.")

(defvar vm-movemail-program "movemail" "\
*Name of program to use to move mail from the system spool
to another location.  Normally this shoul be the movemail program
distributed with Emacs.")

(defvar vm-mode-map (let ((map (make-keymap))) (suppress-keymap map) (define-key map "h" (quote vm-summarize)) (define-key map "" (quote vm-next-unread-message)) (define-key map "" (quote vm-previous-unread-message)) (define-key map "n" (quote vm-next-message)) (define-key map "p" (quote vm-previous-message)) (define-key map "N" (quote vm-Next-message)) (define-key map "P" (quote vm-Previous-message)) (define-key map "" (quote vm-move-message-forward)) (define-key map "" (quote vm-move-message-backward)) (define-key map "	" (quote vm-goto-message-last-seen)) (define-key map "" (quote vm-goto-message)) (define-key map "t" (quote vm-expose-hidden-headers)) (define-key map " " (quote vm-scroll-forward)) (define-key map "b" (quote vm-scroll-backward)) (define-key map "" (quote vm-scroll-backward)) (define-key map "d" (quote vm-delete-message)) (define-key map "" (quote vm-delete-message-backward)) (define-key map "u" (quote vm-undelete-message)) (define-key map "U" (quote vm-unread-message)) (define-key map "e" (quote vm-edit-message)) (define-key map "j" (quote vm-discard-cached-data)) (define-key map "k" (quote vm-kill-subject)) (define-key map "f" (quote vm-followup)) (define-key map "F" (quote vm-followup-include-text)) (define-key map "r" (quote vm-reply)) (define-key map "R" (quote vm-reply-include-text)) (define-key map "" (quote vm-resend-bounced-message)) (define-key map "B" (quote vm-resend-message)) (define-key map "z" (quote vm-forward-message)) (define-key map "c" (quote vm-continue-composing-message)) (define-key map "@" (quote vm-send-digest)) (define-key map "*" (quote vm-burst-digest)) (define-key map "m" (quote vm-mail)) (define-key map "g" (quote vm-get-new-mail)) (define-key map "G" (quote vm-group-messages)) (define-key map "v" (quote vm-visit-folder)) (define-key map "V" (quote vm-visit-virtual-folder)) (define-key map "s" (quote vm-save-message)) (define-key map "w" (quote vm-save-message-sans-headers)) (define-key map "A" (quote vm-auto-archive-messages)) (define-key map "S" (quote vm-save-folder)) (define-key map "|" (quote vm-pipe-message-to-command)) (define-key map "#" (quote vm-expunge-folder)) (define-key map "q" (quote vm-quit)) (define-key map "x" (quote vm-quit-no-change)) (define-key map "?" (quote vm-help)) (define-key map "" (quote vm-undo)) (define-key map "u" (quote vm-undo)) (define-key map "!" (quote shell-command)) (define-key map "<" (quote vm-beginning-of-message)) (define-key map ">" (quote vm-end-of-message)) (define-key map "" (quote vm-isearch-forward)) (define-key map "=" (quote vm-summarize)) (define-key map "L" (quote vm-load-rc)) (define-key map "M" (make-sparse-keymap)) (define-key map "MN" (quote vm-next-command-uses-marks)) (define-key map "Mn" (quote vm-next-command-uses-marks)) (define-key map "MM" (quote vm-mark-message)) (define-key map "MU" (quote vm-unmark-message)) (define-key map "Mm" (quote vm-mark-all-messages)) (define-key map "Mu" (quote vm-clear-all-marks)) (define-key map "M?" (quote vm-mark-help)) (define-key map "W" (make-sparse-keymap)) (define-key map "WW" (quote vm-apply-window-configuration)) (define-key map "WS" (quote vm-save-window-configuration)) (define-key map "WD" (quote vm-delete-window-configuration)) (define-key map "W?" (quote vm-window-help)) (define-key map "" (quote vm-save-buffer)) (define-key map "" (quote vm-write-file)) (define-key map "" (quote vm-show-copying-restrictions)) (define-key map "" (quote vm-show-no-warranty)) map) "\
Keymap for VM mode and VM Summary mode.")

(defvar vm-edit-message-mode-map (let ((map (make-sparse-keymap))) (define-key map "" (quote vm-edit-message-end)) (define-key map "" (quote vm-edit-message-end)) (define-key map "" (quote vm-edit-message-abort)) (define-key map "" vm-mode-map) map) "\
*Keymap used while editing a message with vm-edit-message.
This keymap is used in addition to the keymap used by the major mode
specified by vm-edit-message-mode.")

(defvar vm-mode-line-format (quote ("" (vm-buffer-modified-p vm-buffer-modified-p "-----") ("VM " vm-version ": %b" (vm-message-list ("   " vm-ml-message-number " (of " vm-ml-highest-message-number ")") "  (no messages)")) "   " global-mode-string (vm-message-list ("   %[{" vm-ml-attributes-string "}%]----") ("   %[%]----")) (-3 . "%p") "-%-")))

(defvar vm-folder-type nil)

(make-variable-buffer-local (quote vm-folder-type))

(defvar vm-message-list nil)

(make-variable-buffer-local (quote vm-message-list))

(defvar vm-virtual-buffers nil)

(make-variable-buffer-local (quote vm-virtual-buffers))

(defvar vm-real-buffers nil)

(make-variable-buffer-local (quote vm-real-buffers))

(defvar vm-message-pointer nil)

(defvar vm-message-pointer nil)

(make-variable-buffer-local (quote vm-message-pointer))

(defvar vm-folder-read-only nil)

(make-variable-buffer-local (quote vm-folder-read-only))

(defvar vm-buffer-modified-p nil)

(make-variable-buffer-local (quote vm-buffer-modified-p))

(defvar vm-message-order-changed nil)

(make-variable-buffer-local (quote vm-message-order-changed))

(defvar vm-message-order-stuffed nil)

(make-variable-buffer-local (quote vm-message-order-stuffed))

(defvar vm-last-message-pointer nil)

(make-variable-buffer-local (quote vm-last-message-pointer))

(defvar vm-primary-inbox-p nil)

(make-variable-buffer-local (quote vm-primary-inbox-p))

(defvar vm-visible-header-alist nil)

(make-variable-buffer-local (quote vm-visible-header-alist))

(defvar vm-mail-buffer nil)

(make-variable-buffer-local (quote vm-mail-buffer))

(defvar vm-summary-buffer nil)

(make-variable-buffer-local (quote vm-summary-buffer))

(defvar vm-summary-pointer nil)

(make-variable-buffer-local (quote vm-summary-pointer))

(defvar vm-system-state nil)

(make-variable-buffer-local (quote vm-system-state))

(defvar vm-undo-record-list nil)

(make-variable-buffer-local (quote vm-undo-record-list))

(defvar vm-undo-record-pointer nil)

(make-variable-buffer-local (quote vm-undo-record-pointer))

(defvar vm-current-grouping nil)

(make-variable-buffer-local (quote vm-current-grouping))

(defvar vm-last-save-folder nil)

(make-variable-buffer-local (quote vm-last-save-folder))

(defvar vm-last-pipe-command nil)

(make-variable-buffer-local (quote vm-last-pipe-command))

(defvar vm-messages-not-on-disk 0)

(make-variable-buffer-local (quote vm-messages-not-on-disk))

(defvar vm-totals nil)

(make-variable-buffer-local (quote vm-totals))

(defvar vm-modification-counter 0)

(make-variable-buffer-local (quote vm-modification-counter))

(defvar vm-flushed-modification-counter nil)

(make-variable-buffer-local (quote vm-flushed-modification-counter))

(defvar vm-checkpoint-modification-counter nil)

(make-variable-buffer-local (quote vm-checkpoint-modification-counter))

(defvar vm-messages-needing-display-update nil)

(make-variable-buffer-local (quote vm-messages-needing-display-update))

(defvar vm-numbering-redo-start-point nil)

(make-variable-buffer-local (quote vm-numbering-redo-start-point))

(defvar vm-numbering-redo-end-point nil)

(make-variable-buffer-local (quote vm-numbering-redo-end-point))

(defvar vm-summary-redo-start-point nil)

(make-variable-buffer-local (quote vm-summary-redo-start-point))

(defvar vm-need-summary-pointer-update nil)

(make-variable-buffer-local (quote vm-need-summary-pointer-update))

(defvar vm-deferred-message nil)

(defvar vm-block-new-mail nil)

(defvar vm-kept-mail-buffers nil)

(defvar vm-inhibit-write-file-hook nil)

(defvar vm-session-beginning t)

(defvar vm-rc-loaded nil)

(defvar vm-window-configurations nil)

(defvar vm-window-configuration nil)

(defconst vm-spool-directory (or (and (boundp (quote rmail-spool-directory)) rmail-spool-directory) "/usr/spool/mail/"))

(defconst vm-attributes-header-regexp "^X-VM-\\(Attributes\\|v5-Data\\):\\(.*
\\([ 	]+.*
\\)*\\)")

(defconst vm-attributes-header "X-VM-v5-Data:")

(defconst vm-message-order-header-regexp "X-VM-Message-Order:\\(.*
\\([ 	]+.*
\\)*\\)")

(defconst vm-message-order-header "X-VM-Message-Order:")

(defconst vm-bookmark-header-regexp "X-VM-Bookmark:\\(.*
\\([ 	]+.*
\\)*\\)")

(defconst vm-bookmark-header "X-VM-Bookmark:")

(defconst vm-vheader-header-regexp "X-VM-VHeader:\\(.*
\\([ 	]+.*
\\)*\\)")

(defconst vm-vheader-header "X-VM-VHeader:")

(defconst vm-berkeley-mail-status-header "Status: ")

(defconst vm-berkeley-mail-status-header-regexp "^Status: \\(..?\\)
")

(defconst vm-generic-header-regexp "^\\([^: 	
]+\\)[	 ]*:\\(.*
\\([ 	]+.*
\\)*\\)")

(defconst vm-header-regexp-format "^%s:[ 	]*\\(.*\\(
[ 	]+.*\\)*\\)")

(defconst vm-supported-groupings-alist (quote (("physical-order") ("subject") ("author") ("date-sent") ("recipient"))))

(defconst vm-supported-window-configurations (quote (("composing-message") ("editing-message") ("showing-message") ("paging-message") ("auto-next-message") ("searching-folder") ("end-of-message") ("startup") ("summarize"))))

(defconst vm-attributes-vector-length 9)

(defconst vm-cache-vector-length 16)

(defconst vm-softdata-vector-length 4)

(defconst vm-virtual-data-vector-length 9)

(defconst vm-startup-message-lines (quote ("Mail bug reports to bug-vm@uunet.uu.net or post them to gnu.emacs.vm.bug" "This is prerelease software.  Giving out copies of it means DEATH!" "See Revelations 6:8 for full details" "VM comes with ABSOLUTELY NO WARRANTY; type \\[vm-show-no-warranty] for full details" "In Stereo (where available)")))

(defconst vm-startup-message-displayed nil)

(defvar vm-ml-message-number nil)

(make-variable-buffer-local (quote vm-ml-message-number))

(defvar vm-ml-highest-message-number nil)

(make-variable-buffer-local (quote vm-ml-highest-message-number))

(defvar vm-ml-attributes-string nil)

(make-variable-buffer-local (quote vm-ml-attributes-string))

(provide (quote vm))

(defconst vm-version "5.33 (beta)" "\
Version number of VM.")

(defun vm-version nil "\
Returns the value of the variable vm-version." (byte-code "" [vm-version] 1))

(defun vm-visit-virtual-folder (folder-name &optional read-only) (interactive (byte-code " $D" [vm-virtual-folder-alist nil t current-prefix-arg vm-session-initialization completing-read "Visit virtual folder: "] 6)) (byte-code " \"? \"P!q=?r 
	pp!!!\"\" ! p!? ?  *" [vm-virtual-folder-alist nil t current-prefix-arg folder-name buffer-name first-time major-mode mode-name mode-line-format vm-mode-line-format buffer-read-only vm-folder-read-only read-only truncate-lines vm-current-grouping vm-group-by vm-mail-buffer vm-summary-buffer vm-numbering-redo-start-point vm-summary-redo-start-point vm-mode-map vm-inhibit-startup-message vm-startup-message-displayed vm-session-initialization assoc error "No such virtual folder, %s" " virtual" get-buffer-create vm-virtual-mode "VM Virtual" buffer-flush-undo abbrev-mode 0 auto-fill-mode vm-build-virtual-message-list vm-thoughtfully-select-message use-local-map vm-emit-totals-blurb switch-to-buffer vm-display-startup-message] 15))

(defun vm-build-virtual-message-list (def read-only) (byte-code "	Ap
	Z@@@A		Q	@@!P!
	@AT 	@A@X ͉F@\"\"?{ ͈e ! A#!\"B! !q>? BpB=?  ; 
@# 
@\"0@!B@H@@HHBI@\"I@@H!I@HIA AY 	A	/ A )!." [clauses def inhibit-local-variables t vbuffer inhibit-quit message-list folders folder selector-list selector arg buffers-used nil vm-folder-directory vm-virtual-buffers major-mode mp vm-message-list vm-virtual-mirror vm-attributes-vector-length vm-real-buffers intern "vm-vs-" symbol-name equal expand-file-name file-directory-p nconc vm-delete-directories directory-files get-file-buffer find-file-noselect vm-mode funcall copy-sequence 0 7 2 make-vector 1 nreverse] 24))

(defun vm-delete-directories (list) (byte-code "\"" [list vm-delete file-directory-p] 3))

(defun vm-vs-any (m) (byte-code "" [t] 1))

(defun vm-vs-author (m arg) (byte-code "	!\" 	!\"" [arg m string-match vm-su-full-name vm-su-from] 6))

(defun vm-vs-recipient (m arg) (byte-code "	!\" 	!\"" [arg m string-match vm-su-to vm-su-to-names] 6))

(defun vm-vs-subject (m arg) (byte-code "	!\"" [arg m string-match vm-su-subject] 4))

(defun vm-vs-header (m arg) (byte-code " HHb 	!#))" [m arg t widen 0 forward-line re-search-forward vm-text-of] 7))

(defun vm-vs-text (m arg) (byte-code " !b	!#))" [m arg t widen vm-text-of re-search-forward vm-text-end-of] 7))

(defun vm-virtual-quit nil (byte-code "=
 !? ! !p
: 
@q\"
A\" )Y @H@@HH\"IA< !p!," [vm-confirm-quit t bp vm-real-buffers mp vm-message-list b inhibit-quit vm-virtual-buffers nil y-or-n-p "Do you really want to quit? " error "Aborted" message "" delq 0 7 set-buffer-modified-p kill-buffer] 11))

(defun vm-display-current-message-buffer (&optional no-highlighting) (byte-code " ! q	! 	!? p== = 	@HH!qԎp`p!?p !?p 
m d 
=p!)p p!q! \"!dY e\")))? 	 	! 
=  ? p=  	@HH!qގ	@p!\"))+" [vm-mail-buffer vm-summary-buffer nil point msg-buf sized vm-sbe-buffer major-mode vm-message-list vm-message-pointer vm-mutable-windows pop-up-windows t w no-highlighting buffer-name bufferp vm-virtual-mode marker-buffer 0 ((byte-code "p=? ! q" [vm-sbe-buffer buffer-name] 2)) get-buffer-window vm-set-window-configuration showing-message display-buffer switch-to-buffer set-window-point window-start set-window-start vm-proportion-windows ((byte-code "p=? ! q" [vm-sbe-buffer buffer-name] 2)) vm-highlight-headers] 19))

(defun vm-proportion-windows nil (byte-code " ! qp
=\" \" @HH!qΎ!?7   \"\"=   U p!p!!  !Z\"\"Z 	 !!	!
>~  )+ p!p!! \"\"Z 	 !!	!
>  )+))" [vm-mail-buffer vm-sbe-buffer major-mode vm-message-list vm-message-pointer t mail-w n vm-mail-window-percentage old-w buffer-name vm-virtual-mode marker-buffer 0 ((byte-code "p=? ! q" [vm-sbe-buffer buffer-name] 2)) one-window-p selected-window next-window window-width screen-width get-buffer-window window-height / * screen-height minibuffer-window 100 select-window shrink-window (vm-summary-mode vm-virtual-mode) vm-auto-center-summary shrink-window-horizontally (vm-summary-mode vm-virtual-mode)] 34))

(defun vm-load-window-configurations (file) (byte-code "Î!q ȏ)))" [work-buffer vm-window-configurations nil ((byte-code " !" [work-buffer kill-buffer] 2)) get-buffer-create "*vm-wconfig*" erase-buffer (byte-code "!p!" [file insert-file-contents read] 3) ((error (byte-code "" [nil] 1)))] 5))

(defun vm-store-window-configurations (file) (byte-code "Ď!q 	p\"ed
%)))" [work-buffer vm-window-configurations file nil ((byte-code " !" [work-buffer kill-buffer] 2)) get-buffer-create "*vm-wconfig*" erase-buffer print write-region 0] 9))

(defun vm-set-window-configuration (&rest tags) (byte-code "" [done (byte-code " ?( @\"A 1 \"!!
>W T !T qp 
=p pn @HH!! !? ȉ
 p	   8#8!
q@)." [scratch summary message composition config p tags vm-window-configurations nil t major-mode vm-mail-buffer vm-message-pointer vm-summary-buffer vm-window-configuration "*scratch*" assq throw done vm-copy vm-find-composition-buffer (vm-summary-mode mail-mode) buffer-name vm-virtual-mode marker-buffer 0 bufferp screen-replace-map-element 1 symbol-value set-screen-map] 12)] 2))

(defun vm-save-window-configuration (tag) (interactive (byte-code "? !	$!C" [vm-window-configuration-file vm-supported-window-configurations t error "Configurable windows not enabled." intern completing-read "Name this window configuration: " identity] 7)) (byte-code "ň?
 ! #&\": A\"D DB!\"*" [vm-window-configuration-file vm-supported-window-configurations t map p nil tag vm-window-configurations error "Configurable windows not enabled." screen-map screen-replace-map-element buffer-name vm-screen-buffer-to-label screen-nullify-map-elements assq setcar vm-store-window-configurations message "%s configuration recorded"] 11))

(defun vm-screen-buffer-to-label (buf) (byte-code "q	> Ă# 	= Ƃ# 	=\" Ȃ# )" [buf major-mode t (vm-virtual-mode vm-summary-mode) summary mail-mode composition vm-mode message] 2))

(defun vm-delete-window-configuration (tag) (interactive (byte-code "? !	$!C" [vm-window-configuration-file vm-window-configurations t error "Configurable windows not enabled." intern completing-read "Delete window configuration: " identity] 7)) (byte-code "ň?
 !	\", 	@=& 	A, 	\")!\"" [vm-window-configuration-file vm-window-configurations t p tag nil error "Configurable windows not enabled." assq delq vm-store-window-configurations message "%s configuration deleted"] 7))

(defun vm-apply-window-configuration (tag) (interactive (byte-code "? !	$!C" [vm-window-configuration-file vm-window-configurations t error "Configurable windows not enabled." intern completing-read "Apply window configuration: " identity] 7)) (byte-code "Ĉ?
 !!" [vm-window-configuration-file vm-window-configurations t tag nil error "Configurable windows not enabled." vm-set-window-configuration] 3))

(defun vm-window-help nil (interactive) (byte-code "!" [nil message "WS = save configuration, WD = delete configuration, WW = apply configuration"] 2))

(require (quote mail-utils))

(defvar vm-athena-tmp-directory "/usr/tmp/" "\
Directory to store temporary output file created by movemail.")

(defvar vm-athena-tmpfile-prefix "vm-movemail" "\
Prefix of filename to for temporary movemail output.")

(defvar vm-athena-fake-spool-file (make-temp-name (concat vm-athena-tmp-directory (getenv "USER") ".vm-fake-spool")) "\
Fake spool file used when getting mail from Athena post office.")

(setq vm-spool-files (cons vm-athena-fake-spool-file vm-spool-files))

(defun vm-athena-check-pop-mail nil "\
Check for new mail at the post office.
Returns t if new mail, nil otherwise." (byte-code "!Ŏ
&
qeb!))*" [newmail nil buffer generate-new-buffer "*from output*" ((byte-code "!" [buffer kill-buffer] 2)) call-process "from" "-t" "-p" looking-at "^You have"] 8))

(defun vm-athena-get-pop-mail (tofile) "\
Get new mail from post office into FILE given as argument." (byte-code "Ŏ!!
\"!P&!?+ c qed$db!`d\"eb!P e!\"!ed\"P!!)))" [errors nil exec-directory tofile t ((byte-code " !" [errors kill-buffer] 2)) generate-new-buffer " *rmail loss*" buffer-flush-undo call-process expand-file-name "movemail" "po:" getenv "USER" buffer-modified-p subst-char-in-region 10 32 skip-chars-backward " 	" delete-region looking-at "movemail: " match-end 0 beep message buffer-substring sit-for 3] 18))

(defun vm-athena-convert-movemail-to-mbox-format (fromfile tofile) "\
Convert movemail output file FROMFILE to Unix mbox format.
Store converted file in TOFILE." (byte-code "	!!Ɏʉqeb!e`\"#. !c eb Qc#Y T`Z`\" Qc; dSd\")dbc!)))" [buffer fromfile vm-folder-type nil t msg-counter tofile find-file-noselect expand-file-name ((byte-code "!" [buffer kill-buffer] 2)) From_ search-forward "
0, unseen,,
" delete-region "
From " forward-char -5 62 "
From popserver " current-time-string "
" 1 "
0, unseen,,
" 15 write-file] 14))

(defun vm-athena-make-fake-spool nil "\
Get pop mail in vm-athena-fake-spool-file." (byte-code "	
!P!!? !8\"  Â9 !8\". !\"!)" [tmp vm-athena-tmp-directory vm-athena-tmpfile-prefix t vm-athena-fake-spool-file make-temp-name vm-athena-get-pop-mail file-exists-p equal 0 7 file-attributes delete-file vm-athena-convert-movemail-to-mbox-format] 11))
