;ELC   
;;; Compiled
;;; in Emacs version 28.2
;;; with all optimizations.



(byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\210\300\305!\210\300\306!\210\300\307!\207" [require gnus gnus-int gnus-sum gnus-art gnus-util nnmail registry] 2)
#@49 Boolean set to t when the registry is modified.
(defvar gnus-registry-dirty t (#$ . 260))
(custom-declare-group 'gnus-registry nil "The Gnus registry." :version "22.1" :group 'gnus)
#@299 List of registry marks and their options.

`gnus-registry-mark-article' will offer symbols from this list
for completion.

Each entry must have a character to be useful for summary mode
line display and for keyboard shortcuts.

Each entry must have an image string to be useful for visual
display.
(defvar gnus-registry-marks '((Important :char 105 :image "summary_important") (Work :char 119 :image "summary_work") (Personal :char 112 :image "summary_personal") (To-Do :char 116 :image "summary_todo") (Later :char 108 :image "summary_later")) (#$ . 449))
(byte-code "\300\301\302\303\304DD\305\306\307%\210\300\310\302\303\311DD\312\313\314\306\315&\210\300\316\302\303\317DD\320\306\321%\210\300\322\302\303\323DD\324\306\325%\210\300\326\302\303\327DD\330\306\331\313\332&\207" [custom-declare-variable gnus-registry-default-mark funcall function #[0 "\300\207" [To-Do] 1 #1=""] "The default mark.  Should be a valid key for `gnus-registry-marks'." :type symbol gnus-registry-unfollowed-addresses #[0 "\301!C\207" [user-mail-address regexp-quote] 2 #1#] "List of addresses that gnus-registry-split-fancy-with-parent won't trace.\nThe addresses are matched, they don't have to be fully qualified.\nIn the messages, these addresses can be the sender or the\nrecipients." :version "24.1" (repeat regexp) gnus-registry-unfollowed-groups #[0 "\300\207" [("delayed$" "drafts$" "queue$" "INBOX$" "^nnmairix:" "archive")] 1 #1#] "List of groups that gnus-registry-split-fancy-with-parent won't return.\nThe group names are matched, they don't have to be fully\nqualified.  This parameter tells the Gnus registry `never split a\nmessage into a group that matches one of these, regardless of\nreferences.'\n\nnnmairix groups are specifically excluded because they are ephemeral." (repeat regexp) gnus-registry-install #[0 "\300\207" [ask] 1 #1#] "Whether the registry should be installed." (choice (const :tag "Never Install" nil) (const :tag "Always Install" t) (const :tag "Ask Me" ask)) gnus-registry-register-all #[0 "\300\207" [t] 1 #1#] "If non-nil, register all articles in the registry." boolean "28.1"] 8)
(defvar gnus-registry-enabled nil)
(defvar gnus-registry-misc-menus nil)
(byte-code "\300\301\302\303#\210\304\305\306\307\310DD\311\312\313%\210\304\314\306\307\315DD\316\312\317%\210\304\320\306\307\321DD\322\312\323%\210\304\324\306\307\325DD\326\312\327%\210\304\330\306\307\331DD\332\312\333%\210\304\334\306\307\335DD\336\312\337%\210\304\340\306\307\341DD\342\343\303\312\344&\210\304\345\306\307\346DD\347\343\303\312\350&\207" [make-obsolete-variable gnus-registry-max-pruned-entries nil "25.1" custom-declare-variable gnus-registry-track-extra funcall function #[0 "\300\207" [(subject sender recipient)] 1 #1=""] "Whether the registry should track extra data about a message.\nThe subject, recipients (To: and Cc:), and Sender (From:) headers\nare tracked this way by default." :type (set :tag "Tracking choices" (const :tag "Track by subject (Subject: header)" subject) (const :tag "Track by recipient (To: and Cc: headers)" recipient) (const :tag "Track by sender (From: header)" sender)) gnus-registry-split-strategy #[0 "\300\207" [nil] 1 #1#] "The splitting strategy applied to the keys in `gnus-registry-track-extra'.\n\nGiven a set of unique found groups G and counts for each element\nof G, and a key K (typically `sender' or `subject'):\n\nWhen nil, if G has only one element, use it.  Otherwise give up.\nThis is the fastest but also least useful strategy.\n\nWhen `majority', use the majority by count.  So if there is a\ngroup with the most articles counted by K, use that.  Ties are\nresolved in no particular order, simply the first one found wins.\nThis is the slowest strategy but also the most accurate one.\n\nWhen `first', the first element of G wins.  This is fast and\nshould be OK if your senders and subjects don't \"bleed\" across\ngroups." (choice :tag "Splitting strategy" (const :tag "Only use single choices, discard multiple matches" nil) (const :tag "Majority of matches wins" majority) (const :tag "First found wins" first)) gnus-registry-minimum-subject-length #[0 "\300\207" [5] 1 #1#] "The minimum length of a subject before it's considered trackable." integer gnus-registry-extra-entries-precious #[0 "\300\207" [(mark)] 1 #1#] "What extra keys are precious, meaning entries with them won't get pruned.\nBy default, `mark' is included, so articles with marks are\nconsidered precious.\n\nBefore you save the Gnus registry, it's pruned.  Any entries with\nkeys in this list will not be pruned.  All other entries go to\nthe Bit Bucket." (repeat symbol) gnus-registry-cache-file #[0 "\302\206\n 	\206\n \303\304\"\207" [gnus-dribble-directory gnus-home-directory nnheader-concat "~/" ".gnus.registry.eieio"] 3 #1#] "File where the Gnus registry will be stored." file gnus-registry-max-entries #[0 "\300\207" [nil] 1 #1#] "Maximum number of entries in the registry, nil for unlimited." (radio (const :format "Unlimited " nil) (integer :format "Maximum number: %v")) gnus-registry-prune-factor #[0 "\300\207" [0.1] 1 #1#] "When pruning, try to prune back to this factor less than the maximum size.\n\nIn order to prevent constant pruning, we prune back to a number\nsomewhat less than the maximum size.  This option controls\nexactly how much less.  For example, given a maximum size of\n50000 and a prune factor of 0.1, the pruning process will try to\ncut the registry back to (- 50000 (* 50000 0.1)) -> 45000\nentries.  The pruning process is constrained by the presence of\n\"precious\" entries." :version float gnus-registry-default-sort-function #[0 "\300\207" [gnus-registry-sort-by-creation-time] 1 #1#] "Sort function to use when pruning the registry.\nEntries that sort to the front of the list are pruned first.\nThis can slow pruning down.  Set to nil to perform no sorting." (choice (const :tag "No sorting" nil) function)] 8)
#@48 Sort older entries to front of list.

(fn L R)
(defalias 'gnus-registry-sort-by-creation-time #[514 "\300\301\236A@\301\236A@\"\207" [time-less-p creation-time] 6 (#$ . 6352)])
#@145 Encode/decode group names in DB, before saving or after loading.
Encode names if ENCODE is non-nil, otherwise decode.

(fn DB &optional ENCODE)
(defalias 'gnus-registry--munge-group-names #[513 "\300\301\"\302\303\"\304C\305!\203 \306\307\310#\"\210\306\307\311#\"\210\211\242\211\205I \211@\211\242\243\211\242\243\312\n\"\210\313#\266A\266\202\202& \207" [slot-value data registry-lookup-secondary group nil hash-table-p maphash make-closure #[514 "\300\203 \303!\2055 \304\301\"\210\305\306\307\"\301#\207\310\311\312\313#)\266\203\2055 \304\301\"\210\305\314\307\"\301#\207" [V0 V1 inhibit-changing-match-data multibyte-string-p remhash puthash encode-coding-string utf-8-emacs "[^[:ascii:]]" nil t string-match decode-coding-string] 9 "\n\n(fn GROUP-NAME VAL)"] #[514 "\302\236\243\303\304\305\300\"\"\205$ \301\302\306\304\307\300\"\"B\310\302\"BD\301\242B\240\207" [V0 V1 group seq-some make-closure #[257 "\300\203 \302!\207\303\304\305\306#)\207" [V0 inhibit-changing-match-data multibyte-string-p "[^[:ascii:]]" nil t string-match] 8 "\n\n(fn G)"] mapcar #[257 "\300\203 \301\202	 \302\303\"\207" [V0 encode-coding-string decode-coding-string utf-8-emacs] 4 "\n\n(fn G)"] assq-delete-all] 10 "\n\n(fn ID DATA)"] remhash puthash] 15 (#$ . 6538)])
#@11 

(fn DB)
(defalias 'gnus-registry-fixup-registry #[257 "\211\203R \306\307\"\310\311\312\313\"#\210\310\314	\206 \n#\210\310\315\206# \316#\210\310\307\312\f\317\"#\210\320\306\307\"\"\204M \321\322\323\"\210\322W?\205F \324!\210)\325!\266\207" [gnus-registry-extra-entries-precious gnus-registry-max-entries most-positive-fixnum gnus-registry-prune-factor gnus-registry-track-extra gnus-verbose eieio-oref tracked eieio-oset precious append nil max-size prune-factor 0.1 (mark group keyword) seq-set-equal-p gnus-message 9 "Reindexing the Gnus registry (tracked change)" registry-reindex gnus-registry--munge-group-names message-log-max] 8 (#$ . 7850)])
#@23 

(fn &optional FILE)
(defalias 'gnus-registry-make-db #[256 "\303\304\305\306\206	 \307	\310\n\311\312\313\312&!\207" [gnus-registry-cache-file most-positive-fixnum registry-db-version gnus-registry-fixup-registry make-instance registry-db :file :max-size :version :precious nil :tracked] 14 (#$ . 8530) "fGnus registry persistence file: \n"])
#@57 The article registry by Message ID.  See `registry-db'.
(defvar gnus-registry-db nil (#$ . 8884))
#@139 Remake the registry database after customization.
This is not required after changing `gnus-registry-cache-file'.

(fn &optional FORSURE)
(defalias 'gnus-registry-remake-db #[256 "\211\205 \301\302\303\"\210\304 \211\207" [gnus-registry-db gnus-message 4 "Remaking the Gnus registry" gnus-registry-make-db] 4 (#$ . 8989) (byte-code "\300\301!C\207" [y-or-n-p "Remake and CLEAR the Gnus registry? "] 2)])
#@40 Load the registry from the cache file.
(defalias 'gnus-registry-load #[0 "\3021< \3031 \304!00\2070\210\305!\306P\307!\2038 \310\311\312#!\2038 \304!\210	\313\314#\266\315\316\317#\207\320\321!\207\210\315\316\322#\210\320\321!\207" [gnus-registry-cache-file gnus-registry-db (error) (file-error) gnus-registry-read file-name-sans-extension ".eioio" file-exists-p yes-or-no-p format "Rename registry file from %s to %s? " eieio-oset file gnus-message 1 "Registry filename changed to %s" gnus-registry-remake-db t "The Gnus registry could not be loaded from %s, creating a new one"] 7 (#$ . 9401) nil])
#@68 Do the actual reading of the registry persistence file.

(fn FILE)
(defalias 'gnus-registry-read #[257 "\301\302\303#\210\304\3051 \306\307\"0\202 \210\306!!\301\302\310#\207" [gnus-registry-db gnus-message 5 "Reading Gnus registry from %s..." gnus-registry-fixup-registry 'wrong-number-of-arguments eieio-persistent-read registry-db "Reading Gnus registry from %s...done"] 5 (#$ . 10022)])
#@55 Save the registry cache file.

(fn &optional FILE DB)
(defalias 'gnus-registry-save #[512 "\206 \206\n 	\303!\304\305\306\307!$\210\310\n\"\210\211\311\312\"\210)\313\"\210\304\305\314\307!$\207" [gnus-registry-cache-file gnus-registry-db gnus-registry-default-sort-function clone gnus-message 5 "Saving Gnus registry (%d entries) to %s..." registry-size registry-prune gnus-registry--munge-group-names encode eieio-persistent-save "Saving Gnus registry (size %d) to %s...done"] 10 (#$ . 10426) nil])
(defalias 'gnus-registry-remove-ignored #[0 "\301\302\"\303!\304!\210\305\306\307\"\"\210\304!\210\310\311\312\303!Z#\207" [gnus-registry-db registry-lookup-secondary group registry-size registry-reindex maphash make-closure #[514 "\301!\205 \302\300\303#\207" [V0 gnus-registry-ignore-group-p registry-delete nil] 6 "\n\n(fn K V)"] gnus-message 4 "Removed %d ignored entries from the Gnus registry"] 9 nil nil])
#@52 

(fn ACTION DATA-HEADER FROM &optional TO METHOD)
(defalias 'gnus-registry-action #[1283 "\300H\301H\302H\303\304\236\243\206 \305\306\236\243\206 \305\"\307\310H!@\311\312	!\2033 \313\n\314H!\2025 !\205? \311!\315\316\317	\203M \320\202N \321&\210\322\323=?\205a 		&\207" [4 1 9 gnus-registry-sort-addresses Cc "" To gnus-registry-extract-addresses 2 gnus-group-guess-full-name-from-command-method gnus-nnselect-group-p nnselect-article-group 0 gnus-message 7 "Gnus registry: article %s %s from %s to %s" "respooling" "going" gnus-registry-handle-action copy] 19 (#$ . 11375)])
#@53 

(fn ID GROUP &optional SUBJECT SENDER RECIPIENTS)
(defalias 'gnus-registry-spool-action #[1282 "\214\300 \210\301!\206 \302\303\304!\206 \305\303\306!\206 \305\"\206\" \303\307!\206) \303\310!;\203> \311\312\n\"\203> \313\314O\262	\315\316\317$\210\320	\321&\266\204)\207" [message-narrow-to-headers-or-head gnus-group-guess-full-name-from-command-method gnus-registry-sort-addresses message-fetch-field "cc" "" "to" "subject" "from" string-match "$" 0 -1 gnus-message 7 "Gnus registry: article %s spooled to %s" gnus-registry-handle-action nil] 16 (#$ . 11997)])
#@55 

(fn ID FROM TO SUBJECT SENDER &optional RECIPIENTS)
(defalias 'gnus-registry-handle-action #[1541 "\301\302\303\257#\210\304!?\205 \305\306\"\307\310!!\307!\205\270 \311\fC\312#\210	\203J \313\n\314\236\"\315\314\"B\262\204U \316\314\"\205\270 \314D\317D\320B\321DF\211\203\250 \211@\211A@\203\241 \211@\236\206y \211@CA\211\203\225 \211@\211\235\204\216 \322C\"\262A\266\202\202{ \210\211\315@\"B\262\210A\266\202\202c \210\301\302\323$\210\324\f#\207" [gnus-registry-db gnus-message 10 "gnus-registry-handle-action %S" gnus-registry-ignore-group-p gnus-registry-get-or-make-entry t gnus-string-remove-all-properties gnus-registry-simplify-subject registry-delete nil delete group assq-delete-all alist-get sender recipient subject append "Gnus registry: new entry for %s is %S" gnus-registry-insert] 19 (#$ . 12594)])
#@692 Split this message into the same group as its parent.
The parent is obtained from the registry.  This function can be used as an
entry in `nnmail-split-fancy' or `nnimap-split-fancy', for example like
this: (: gnus-registry-split-fancy-with-parent)

This function tracks ALL backends, unlike
`nnmail-split-fancy-with-parent' which tracks only nnmail
messages.

For a message to be split, it looks for the parent message in the
References or In-Reply-To header and then looks in the registry
to see which group that message was put in.  This group is
returned, unless `gnus-registry-follow-group-p' return nil for
that group.

See the Info node `(gnus)Fancy Mail Splitting' for more details.
(defalias 'gnus-registry-split-fancy-with-parent #[0 "\301\302!\206 \303\301\304!\211\203 \305Q\202 \211\205 \306!\307\301\310!!\311\301\312!\206* \303\301\313!\2061 \303\"\307\314\301\315!!!<\203B \202D C\316\317\320\321\322	\323\n\324\325&\f)\207" [nnmail-split-fancy-with-parent-ignore-groups message-fetch-field "references" "" "in-reply-to" " " gnus-extract-references gnus-string-remove-all-properties "from" gnus-registry-sort-addresses "cc" "to" gnus-registry-simplify-subject "subject" gnus-registry--split-fancy-with-parent-internal :references :refstr :sender :recipients :subject :log-agent "Gnus registry fancy splitting with parent"] 20 (#$ . 13480)])
#@96 

(fn &rest SPEC &key REFERENCES REFSTR SENDER SUBJECT RECIPIENTS LOG-AGENT &allow-other-keys)
(defalias 'gnus-registry--split-fancy-with-parent-internal #[128 "\304\305\"A@\304\306\"A@\304\307\"A@\304\310\"A@\304\311\"A@\304\312\"A@\313\314\315	#\210\316\203\210 \313\317\320\n$\210\237\211\203 \211@\313\317\321$\210\322\323\"\316:\203v @\262\324!\203o \313\325\326	%\210\211B\262A\262\202Q \266A\266\202\202> \210\327\330#\262\211\204\351 \331	>\203\351 \203\351 \nGW\203\351 \332\333\334\335\336\331#\"\"\211\316\211:\203\333 @\262\324!\203\324 \313	\203\305 \325\202\306 \317\337	\f%\210B\262A\262\202\255 \211\237\266\203\262\327\340#\266\202\211\204I\341	>\203I\203I\342\"\204I\332\333\334\343\336\341\f#\"\"\211\316\211:\203=@\262\324!\2036\313	\203'\325\202(\317\344	%\210B\262A\262\202\211\237\266\205\327\345#\262\211\204\302\346	>\203\302\203\302\211\203\265\211@\204\256\342\"\204\256\332\333\334\347\336\346#\"\"\211\316\211:\203\247@\262\324!\203\240\313	\203\221\325\202\222\317\350%\210B\262A\262\202y\211\237\266\203\262\210A\266\202\202X\210\327\351\352\353\354##\262\211\242\207" [gnus-registry-db gnus-registry-track-extra gnus-registry-minimum-subject-length gnus-registry-unfollowed-addresses plist-member :references :refstr :sender :subject :recipients :log-agent gnus-message 10 "gnus-registry--split-fancy-with-parent-internal %S" nil 9 "%s is tracing references %s" "%s is looking up %s" gnus-registry-get-id-key group gnus-registry-follow-group-p 7 "%s traced %s to %s" gnus-registry-post-process-groups "references" subject apply append mapcar #[257 "\300\301\"\207" [gnus-registry-get-id-key group] 4 "\n\n(fn REFERENCE)"] registry-lookup-secondary-value "%s (extra tracking) traced subject `%s' to %s" "subject" sender gnus-grep-in-list #[257 "\300\301\"\207" [gnus-registry-get-id-key group] 4 "\n\n(fn REFERENCE)"] "%s (extra tracking) traced sender `%s' to %s" "sender" recipient #[257 "\300\301\"\207" [gnus-registry-get-id-key group] 4 "\n\n(fn REFERENCE)"] "%s (extra tracking) traced recipient `%s' to %s" "recipients" mapconcat identity ", "] 21 (#$ . 14862)])
#@549 Inspects GROUPS found by MODE for KEY to determine which ones to follow.

MODE can be `subject' or `sender' for example.  The KEY is the
value by which MODE was searched.

Transforms each group name to the equivalent short name.

Checks if the current Gnus method (from `gnus-command-method' or
from `gnus-newsgroup-name') is the same as the group's method.
Foreign methods are not supported so they are rejected.

Reduces the list to a single group, or complains if that's not
possible.  Uses `gnus-registry-split-strategy'.

(fn MODE KEY GROUPS)
(defalias 'gnus-registry-post-process-groups #[771 "\303\304G\"\305\211\204 G\306U\205L \242\202L \307=\203\" \242\202L \310=\205L \311\312\313\314\315$\316\317\320\"\"\210\303\321G\322!#\262\323\317\324\"\"\242\262\262\211\203a \325\326\327\330&\210\202n \325\326\331\330\206j \332%\210\211\205t \211C\262\211\203\307 \211@\333!	\206\207 \333\n!\334!\335\"\203\267 \232\204\240 \325\336\337\330%\210\211\235\203\254 \202\260 \211B\262\266\202\300 \325\340\341\330$\266A\266\202\202w \210\342\305\"\262G\306U\203\327 \207\204\347 \325\343\344\330		%\210\305\207\325\343\345\330\n\n&\210\305\207" [gnus-registry-split-strategy gnus-command-method gnus-newsgroup-name format "%d groups" nil 1 first majority make-hash-table :size 256 :test equal mapc make-closure #[257 "\301!\302\303\300\304#T\300#\207" [V0 gnus-group-short-name puthash gethash 0] 8 "\n\n(fn X)"] "%d groups, %d unique" hash-table-count sort #[514 "\301\302!\300\303#\301\302!\300\303#V\207" [V0 gethash gnus-group-short-name 0] 7 "\n\n(fn A B)"] gnus-message 9 "%s: strategy %s on %s produced %s" "gnus-registry-post-process-group" "%s: strategy %s on %s did not produce an answer" "default" gnus-find-method-for-group gnus-group-short-name gnus-methods-equal-p 10 "%s: stripped group %s to %s" 7 "%s: ignored foreign group %s" delq 5 "%s: no matches for %s `%s'." "%s: too many extra matches (%s) for %s `%s'.  Returning none."] 17 (#$ . 17111)])
#@154 Determine if a group name should be followed.
Consults `gnus-registry-unfollowed-groups' and
`nnmail-split-fancy-with-parent-ignore-groups'.

(fn GROUP)
(defalias 'gnus-registry-follow-group-p #[257 "\211\205 \302\"\206 \302	\"?\207" [gnus-registry-unfollowed-groups nnmail-split-fancy-with-parent-ignore-groups gnus-grep-in-list] 4 (#$ . 19149)])
#@150 Determine if a group name should be ignored.
Consults `gnus-registry-ignored-groups' and
`nnmail-split-fancy-with-parent-ignore-groups'.

(fn GROUP)
(defalias 'gnus-registry-ignore-group-p #[257 "\211\205- \302!\206- \303\304\305\306\307\"\"\"\206- @<\203) \310\311!\203) \312!\206- \303	\"\207" [gnus-registry-ignored-groups nnmail-split-fancy-with-parent-ignore-groups gnus-virtual-group-p gnus-grep-in-list delq nil mapcar #[257 "\211;\203 \207\211<\203 \211A@\203 \211@\207\300\207" [nil] 2 "\n\n(fn G)"] get-buffer "*Group*" gnus-parameter-registry-ignore] 8 (#$ . 19509)])
#@116 Get the keywords of the current article.
Overrides existing keywords with FORCE set non-nil.

(fn &optional FORCE)
(defalias 'gnus-registry-wash-for-keywords #[256 "\303!\304\211\305\306\"\203 \205\\ r	q\210\307 \210\310 \311\312\"\216\214`d}\210\313 p\311\314#\216\315\n!\210\316\317\304\320#\203Q \321\322\224\322\225{\227!\262G\323V\2030 B\262\2020 )\266*\210\324\306#)\207" [gnus-current-article gnus-article-buffer gnus-adaptive-word-syntax-table gnus-registry-fetch-message-id-fast nil gnus-registry-get-id-key keyword article-goto-body current-window-configuration make-closure #[0 "\301\300!\207" [V0 set-window-configuration] 2] syntax-table #[0 "r\301q\210\302\300!)\207" [V0 V1 set-syntax-table] 2] set-syntax-table re-search-forward "\\b\\w+\\b" t gnus-string-remove-all-properties 0 2 gnus-registry-set-id-key] 11 (#$ . 20104) [nil (gnus-article-mode gnus-summary-mode)]])
(defalias 'gnus-registry-keywords #[0 "\301\302\"\303C\205 \304\305\306\"\"\210\211\242\207" [gnus-registry-db registry-lookup-secondary keyword nil maphash make-closure #[514 "\300\300\242B\240\207" [V0] 5 "\n\n(fn K V)"]] 6])
#@16 

(fn KEYWORD)
(defalias 'gnus-registry-find-keywords #[257 "\301\302#\207" [gnus-registry-db registry-lookup-secondary-value keyword] 5 (#$ . 21245) (byte-code "\300\301\302 \303\304$C\207" [completing-read "Keyword: " gnus-registry-keywords nil t] 5)])
#@56 Register the Message-ID of every article in the group.
(defalias 'gnus-registry-register-message-ids #[0 "\303!\206 	??\205E \n\211\205C \211@\304!\305\306\"\235\204: \307\310\311$\210\312\313\314!\315!\316	!&\210\266A\266\202\202 \262\207" [gnus-newsgroup-name gnus-registry-register-all gnus-newsgroup-articles gnus-parameter-registry-ignore gnus-registry-fetch-message-id-fast gnus-registry-get-id-key group gnus-message 9 "Registry: Registering article %d with group %s" gnus-registry-handle-action nil gnus-registry-fetch-simplified-message-subject-fast gnus-registry-fetch-sender-fast gnus-registry-fetch-recipients-fast] 12 (#$ . 21508)])
#@91 Fetch the Message-ID quickly, using the internal `gnus-data-find' function.

(fn ARTICLE)
(defalias 'gnus-registry-fetch-message-id-fast #[257 "\211\247\205	 \301\"\211\205 \3028\303H\207" [gnus-newsgroup-data gnus-data-find-in 3 4] 4 (#$ . 22180)])
#@179 Extract all the addresses in a normalized way from TEXT.
Returns an unsorted list of strings in the name <address> format.
Addresses without a name will say "noname".

(fn TEXT)
(defalias 'gnus-registry-extract-addresses #[257 "\300\301\302\303\"\"\207" [mapcar #[257 "\300@\206 \301A@\302!\203 r\211q\210\303 )\202 \211\304\305#\266\203!\207" [gnus-string-remove-all-properties "noname" bufferp buffer-string format "%s <%s>"] 9 "\n\n(fn ADD)"] mail-extract-address-components t] 6 (#$ . 22441)])
#@73 Return a normalized and sorted list of ADDRESSES.

(fn &rest ADDRESSES)
(defalias 'gnus-registry-sort-addresses #[128 "\300\301\302\"\303\"\207" [sort mapcan gnus-registry-extract-addresses string-lessp] 5 (#$ . 22954)])
#@16 

(fn SUBJECT)
(defalias 'gnus-registry-simplify-subject #[257 "\211;\205 \300!\207" [gnus-simplify-subject] 3 (#$ . 23182)])
#@88 Fetch the Subject quickly, using the internal `gnus-data-find' function.

(fn ARTICLE)
(defalias 'gnus-registry-fetch-simplified-message-subject-fast #[257 "\211\247\205	 \301\"\211\205 \302\303\3048\305H!!\207" [gnus-newsgroup-data gnus-data-find-in gnus-string-remove-all-properties gnus-registry-simplify-subject 3 1] 6 (#$ . 23316)])
#@16 

(fn ARTICLE)
(defalias 'gnus-registry-fetch-sender-fast #[257 "\211\247\205	 \301\"\211\205 \3028\303H\207" [gnus-newsgroup-data gnus-data-find-in 3 2] 4 (#$ . 23664)])
#@16 

(fn ARTICLE)
(defalias 'gnus-registry-fetch-recipients-fast #[257 "\211\247\205	 \301\"\211\205 \3028\303H\211\205( \304\305\236A\206 \306\307\236A\206' \306\"\207" [gnus-newsgroup-data gnus-data-find-in 3 9 gnus-registry-sort-addresses Cc "" To] 7 (#$ . 23845)])
#@156 For each known mark, call FUNCTION for each cell of type TYPE.

FUNCTION should take two parameters, a mark symbol and the cell value.

(fn TYPE FUNCTION)
(defalias 'gnus-registry-do-marks #[514 "\211\205\" \211@\211\242\243\301\"\211\203 \"\210\266A\266\202\202 \207" [gnus-registry-marks plist-get] 10 (#$ . 24125)])
#@78 Set/remove the MARK over process-marked ARTICLES.

(fn MARK REMOVE ARTICLES)
(defalias 'gnus-registry--set/remove-mark #[771 "\204\n \302\303 \210)\303 \2056 \304\305$\210\306\307\310G$\210\211\211\2054 \211@\311\312	\"\"\210A\266\202\202 \262\207" [gnus-registry-install gnus-newsgroup-data ask gnus-registry-install-p gnus-registry-set-article-mark-internal t gnus-message 9 "Applying mark %s to %d articles" gnus-summary-update-article gnus-data-find-in] 10 (#$ . 24462)])
#@122 Install the keyboard shortcuts and menus for the registry.
Uses `gnus-registry-marks' to find what shortcuts to install.
(defalias 'gnus-registry-install-shortcuts #[0 "\301C\301\302\303\304\305\"\"\210\306\307\242\"\210\310\311\312\"\207" [gnus-registry-misc-menus nil gnus-registry-do-marks :char make-closure #[514 "\302\303\"\304\211\205t \211@\211\203 \305\202 \306\307\302\"!\302\310\203& \226\202( \"\311\312\313\314\315\316\"\317\"\320\302\321\322\f!#\323&\"\210\300\300\242B\240\210\300\300\242B\240\210\316\302\324\322!\325\f!#\326#	B\327\330\331#\266A\266\202\202 \207" [V0 gnus-registry-misc-menus format "gnus-registry-%%s-article-%s-mark" (t nil) "remove" "set" intern "%c" defalias make-byte-code 128 "\302\300\301#\207" vconcat vector [gnus-registry--set/remove-mark] 5 "%s the %s mark over process-marked ARTICLES." upcase-initials (gnus-summary-work-articles current-prefix-arg) "%s %s" symbol-name t gnus-message 9 "Defined mark handling function %s"] 19 "\n\n(fn MARK DATA)"] gnus-define-keys-1 (gnus-registry-mark-map "M" gnus-summary-mark-map) add-hook gnus-summary-menu-hook #[0 "\302\303\304	B#\207" [gnus-summary-misc-menu gnus-registry-misc-menus easy-menu-add-item nil "Registry Marks"] 5]] 6 (#$ . 24957)])
(byte-code "\300\301\302\303#\210\304\301\302\305#\207" [defalias gnus-registry-user-format-function-M gnus-registry-article-marks-to-chars nil make-obsolete "24.1"] 4)
#@68 Show the marks for an article by the :char property.

(fn HEADERS)
(defalias 'gnus-registry-article-marks-to-chars #[257 "\203 \211\301H\211\205 \302\303\"\304\305\306\307\"\"\260\207\310\207" [gnus-registry-enabled 4 gnus-registry-get-id-key mark delq nil mapcar #[257 "\301\302\"\243\303\"\207" [gnus-registry-marks plist-get assoc :char] 5 "\n\n(fn M)"] ""] 8 (#$ . 26402)])
#@54 Show the marks for an article by name.

(fn HEADERS)
(defalias 'gnus-registry-article-marks-to-names #[257 "\203 \211\301H\211\205 \302\303\"\304\305\306#\207\307\207" [gnus-registry-enabled 4 gnus-registry-get-id-key mark mapconcat symbol-name "," ""] 7 (#$ . 26794)])
#@49 Read a mark name from the user with completion.
(defalias 'gnus-registry-read-mark #[0 "\302\303\304\305\304\306\"\"\307\211\211\305	!&\211;\205 \310!\207" [gnus-registry-marks gnus-registry-default-mark gnus-completing-read "Label" mapcar symbol-name car nil intern] 8 (#$ . 27075)])
#@63 Apply a mark to process-marked ARTICLES.

(fn &rest ARTICLES)
(defalias 'gnus-registry-set-article-mark #[128 "\300\301 \302\303$\207" [gnus-registry-set-article-mark-internal gnus-registry-read-mark nil t] 6 (#$ . 27370) [(gnus-summary-work-articles current-prefix-arg) (gnus-article-mode gnus-summary-mode)]])
#@66 Remove a mark from process-marked ARTICLES.

(fn &rest ARTICLES)
(defalias 'gnus-registry-remove-article-mark #[128 "\300\301 \302\211$\207" [gnus-registry-set-article-mark-internal gnus-registry-read-mark t] 6 (#$ . 27689) [(gnus-summary-work-articles current-prefix-arg) (gnus-article-mode gnus-summary-mode)]])
#@99 Apply or remove MARK across a list of ARTICLES.

(fn MARK ARTICLES &optional REMOVE SHOW-MESSAGE)
(defalias 'gnus-registry-set-article-mark-internal #[1026 "\300\301\"\211\211\205G \211@\302\303\304\"\"\203 \211\202 B\2039 \305\306\307	\203/ \310\2020 \311\f&\210\312\304#\266A\266\202\202 \207" [mapcar gnus-registry-fetch-message-id-fast delq gnus-registry-get-id-key mark gnus-message 1 "%s mark %s with message ID %s, resulting in %S" "Removing" "Adding" gnus-registry-set-id-key] 16 (#$ . 28010)])
#@190 Get the Gnus registry marks for ARTICLES and show them if interactive.
Uses process/prefix conventions.  For multiple articles,
only the last one's marks are returned.

(fn &rest ARTICLES)
(defalias 'gnus-registry-get-article-marks #[128 "\300!\301!\211\205 \302\303\"\304\305!\203 \306\307\310#\210\207" [last gnus-registry-fetch-message-id-fast gnus-registry-get-id-key mark called-interactively-p any gnus-message 1 "Marks are %S"] 8 (#$ . 28543) [(gnus-summary-work-articles 1) (gnus-article-mode gnus-summary-mode)]])
#@74 Get the number of groups of a message, based on the message ID.

(fn ID)
(defalias 'gnus-registry-group-count #[257 "\300\301\"G\207" [gnus-registry-get-id-key group] 4 (#$ . 29078)])
#@130 Return registry entry for ID.
If entry is not found, create a new one, unless NO-CREATE is
non-nil.

(fn ID &optional NO-CREATE)
(defalias 'gnus-registry-get-or-make-entry #[513 "\301C\"\211\204\" \204\" \302\303\304 D\305\306\307F#\210\301C\"\262\310\"A@\207" [gnus-registry-db registry-lookup gnus-registry-insert creation-time current-time (group) (sender) (subject) assoc] 11 (#$ . 29270)])
#@15 

(fn IDLIST)
(defalias 'gnus-registry-delete-entries #[257 "\301\302#\207" [gnus-registry-db registry-delete nil] 5 (#$ . 29682)])
#@15 

(fn ID KEY)
(defalias 'gnus-registry-get-id-key #[514 "\211\301?\"\236\243\207" [gnus-registry-register-all gnus-registry-get-or-make-entry] 6 (#$ . 29822)])
#@20 

(fn ID KEY VALS)
(defalias 'gnus-registry-set-id-key #[771 "\301!\302C\303#\210B\304\"B\262\305#\210\207" [gnus-registry-db gnus-registry-get-or-make-entry registry-delete nil assq-delete-all gnus-registry-insert] 9 (#$ . 29990)])
#@76 Just like `registry-insert' but tries to prune on error.

(fn DB ID ENTRY)
(defalias 'gnus-registry-insert #[771 "\301!\203 \302\303!\210\304\"\210\305#\210\207" [gnus-registry-default-sort-function registry-full message "Trying to prune the registry because it's full" registry-prune registry-insert] 7 (#$ . 30243)])
#@13 

(fn FILE)
(defalias 'gnus-registry-import-eld #[257 "\300\301\"\210\302\303!\205\304 \303J\304G\305\242\203\276 T\262\304W\2036 \306\307\"\304U\2036 \310\311\312_\245$\210\242\262\243\262\211\242\243\211\305\211:\203_ @\262;\203X B\262A\262\202E \211\237\266\203\305\211\211\211\203\200 \211@\211;\203y \313\"\262A\266\202\202g \210\314\315#\210\242\262\242\203\271 \242\262\242\262\243\262\243\262\211\203\257 \211:\204\257 \211C\262\314#\210\202\215 \266\202 \310\316\"\266\204\207" [load t boundp gnus-registry-alist 0 nil mod 100 message "importing: %d of %d (%.2f%%)" 100.0 delq gnus-registry-set-id-key group "Import done, collected %d entries"] 16 (#$ . 30575) "fOld registry file to import? "])
#@21 Clear the registry.
(defalias 'gnus-registry-clear #[0 "\301 \210\302\211\207" [gnus-registry-db gnus-registry-unload-hook nil] 2 (#$ . 31342)])
(gnus-add-shutdown 'gnus-registry-clear 'gnus)
#@31 Initialize the Gnus registry.
(defalias 'gnus-registry-initialize #[0 "\300\301\302\"\210\303 \210\304 \210\305 \203 \306 \207\307\310\306\"\207" [gnus-message 5 "Initializing the registry" gnus-registry-install-hooks gnus-registry-install-shortcuts gnus-alive-p gnus-registry-load add-hook gnus-read-newsrc-el-hook] 3 (#$ . 31541) nil])
#@29 Install the registry hooks.
(defalias 'gnus-registry-install-hooks #[0 "\301\302\303\304\"\210\302\305\304\"\210\302\306\304\"\210\302\307\310\"\210\302\311\312\"\210\302\313\314\"\207" [gnus-registry-enabled t add-hook gnus-summary-article-move-hook gnus-registry-action gnus-summary-article-delete-hook gnus-summary-article-expire-hook nnmail-spool-hook gnus-registry-spool-action gnus-save-newsrc-hook gnus-registry-save gnus-summary-prepare-hook gnus-registry-register-message-ids] 3 (#$ . 31886)])
#@31 Uninstall the registry hooks.
(defalias 'gnus-registry-unload-hook #[0 "\301\302\303\"\210\301\304\303\"\210\301\305\303\"\210\301\306\307\"\210\301\310\311\"\210\301\312\313\"\210\301\314\315\"\210\316\211\207" [gnus-registry-enabled remove-hook gnus-summary-article-move-hook gnus-registry-action gnus-summary-article-delete-hook gnus-summary-article-expire-hook nnmail-spool-hook gnus-registry-spool-action gnus-save-newsrc-hook gnus-registry-save gnus-read-newsrc-el-hook gnus-registry-load gnus-summary-prepare-hook gnus-registry-register-message-ids nil] 3 (#$ . 32396)])
(byte-code "\300\301\211\"\207" [add-hook gnus-registry-unload-hook] 3)
#@221 Return non-nil if the registry is enabled (and maybe enable it first).
If the registry is not already enabled, then if `gnus-registry-install'
is `ask', ask the user; or if `gnus-registry-install' is non-nil, enable it.
(defalias 'gnus-registry-install-p #[0 "\204 	\302=\203 \303\304!\202 	\203 \305 \210\207" [gnus-registry-enabled gnus-registry-install ask gnus-y-or-n-p "Enable the Gnus registry?  See the variable `gnus-registry-install' to get rid of this query permanently. " gnus-registry-initialize] 2 (#$ . 33054) nil])
#@126 Try to warp via the registry.
This will be done via the current article's source group based on
data stored in the registry.
(defalias 'gnus-try-warping-via-registry #[0 "\302\303`\304\"\211\205\f \305!\266\303`\306\"\206 \307 \"\3108\262\205\261 \302\303`\304\"\211\205- \305!\266\303`\306\"\2068 \307 \"\3108\262\211\311H\262\312\313\"\314	!\315 C\3162\257 \317\320\"\211\205\254 \211@\211\235\204\245 \314!\204\245 \321!@\322=\204\245 \211B\262\203\212 \323 \210A\324=\203\207 \323 \210\325\262\3261\231 \327\"\210\3300\202\235 \210\202\245 \203\245 \331\316\330\"\210A\266\202\202V \2620\266\204\207" [gnus-newsgroup-data gnus-newsgroup-name gnus-data-find-in get-text-property gnus-intangible gnus-summary-goto-subject gnus-number gnus-summary-last-subject 3 4 gnus-registry-get-id-key group gnus-ephemeral-group-p gnus-group-group-name found mapcar gnus-simplify-group-name gnus-find-method-for-group nnselect gnus-summary-exit summary nil (error) gnus-select-group-with-message-id t throw] 9 (#$ . 33597) nil])
#@286 Remove tracked EXTRA data from the gnus registry.
EXTRA is a list of symbols.  Valid symbols are those contained in
the docs of `gnus-registry-track-extra'.  This command is useful
when you stop tracking some extra data and now want to purge it
from your existing entries.

(fn EXTRA)
(defalias 'gnus-registry-remove-extra-data #[257 "\211\205 \301!\210\302\303\304#\305\306\"\"\210\301!\262\207" [gnus-registry-db registry-reindex maphash make-closure #[514 "\302\303\304\305\306\300\"\"\"\307\301C\303#\210\310\301#\207" [V0 V1 delq nil mapcar make-closure #[257 "\211@\300\235?\205	 \211\207" [V0] 3 "\n\n(fn ENTRY)"] registry-delete gnus-registry-insert] 8 "\n\n(fn K V)"] eieio-oref data] 7 (#$ . 34649) (byte-code "\300\301\302\303\304\"\"C\207" [mapcar intern completing-read-multiple "Extra data: " ("subject" "sender" "recipient")] 5)])
(provide 'gnus-registry)
