MMCT TEAM
Server IP : 111.118.215.189  /  Your IP : 18.117.158.174
Web Server : Apache
System : Linux md-in-83.webhostbox.net 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64
User : a1673wkz ( 2475)
PHP Version : 8.2.25
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /usr/share/emacs/24.3/lisp/gnus/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : //usr/share/emacs/24.3/lisp/gnus/auth-source.elc
;ELC
;;; Compiled by mockbuild@buildfarm06-new.corp.cloudlinux.com on Fri Oct 11 10:09:32 2024
;;; from file /builddir/build/BUILD/emacs-24.3/lisp/gnus/auth-source.el
;;; in Emacs version 24.3.1
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.

;;; This file does not contain utf-8 non-ASCII characters,
;;; and so can be loaded in Emacs versions earlier than 23.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\210\305\306\307\"\210\305\310\307\"\210\305\311\307\"\210\305\312\307\"\210\305\313\307\"\210\305\314\307\"\210\305\315\307\"\210\305\316\317\"\210\305\320\321\"\210\305\322\321\"\210\305\323\321\"\210\305\324\321\"\210\305\325\321\"\210\305\326\321\"\210\305\327\330\"\210\305\331\330\"\210\305\332\330\"\210\305\333\330\"\210\305\334\330\"\210\305\335\336\337\340$\210\341\342\337\343\344\345\346\347&\210\350\351\352\353\344\354\346\342\355\356&	\210\357\360\337\361\337$\210\350\362\363\364\346\342\344\365\355\366&	\207" [require password-cache mm-util gnus-util eieio autoload secrets-create-item "secrets" secrets-delete-item secrets-get-alias secrets-get-attributes secrets-get-secret secrets-list-collections secrets-search-items rfc2104-hash "rfc2104" plstore-open "plstore" plstore-find plstore-put plstore-delete plstore-save plstore-get-file epg-make-context "epg" epg-context-set-passphrase-callback epg-decrypt-string epg-context-set-armor epg-encrypt-string help-mode "help-mode" nil t custom-declare-group auth-source "Authentication sources." :version "23.1" :group gnus custom-declare-variable auth-source-cache-expiry 7200 "How many seconds passwords are cached, or nil to disable\nexpiring.  Overrides `password-cache-expiry' through a\nlet-binding." "24.1" :type (choice (const :tag "Never" nil) (const :tag "All Day" 86400) (const :tag "2 Hours" 7200) (const :tag "30 Minutes" 1800) (integer :tag "Seconds")) eieio-defclass auth-source-backend ((type :initarg :type :initform 'netrc :type symbol :custom symbol :documentation "The backend type.") (source :initarg :source :type string :custom string :documentation "The backend source.") (host :initarg :host :initform t :type t :custom string :documentation "The backend host.") (user :initarg :user :initform t :type t :custom string :documentation "The backend user.") (port :initarg :port :initform t :type t :custom string :documentation "The backend protocol.") (data :initarg :data :initform nil :documentation "Internal backend data.") (create-function :initarg :create-function :initform ignore :type function :custom function :documentation "The create function.") (search-function :initarg :search-function :initform ignore :type function :custom function :documentation "The search function.")) auth-source-protocols '((imap "imap" "imaps" "143" "993") (pop3 "pop3" "pop" "pop3s" "110" "995") (ssh "ssh" "22") (sftp "sftp" "115") (smtp "smtp" "25")) "List of authentication protocols and their names" "23.2" (repeat :tag "Authentication Protocols" (cons :tag "Protocol Entry" (symbol :tag "Protocol") (repeat :tag "Names" (string :tag "Name"))))] 10)
(defconst auth-source-protocols-customize (mapcar #[(a) "\242\302\303\304	!\226	F)\207" [a p const :tag symbol-name] 4] auth-source-protocols))
#@57 Defaults for creating token values.  Usually let-bound.
(defvar auth-source-creation-defaults nil (#$ . 3403))
#@55 Default prompts for token values.  Usually let-bound.
(defvar auth-source-creation-prompts nil (#$ . 3520))
(byte-code "\300\301\302\303#\210\304\305\306\307\310\311\312\313\314\315&	\210\304\316\317\320\310\311\312\313\314\321\322\323\324\325\326\327\321\325\330\331\332\325\333\334\335!\2036\335J@\2027\336F\337BBBBB\340BBFF&	\207" [make-obsolete auth-source-hide-passwords nil "Emacs 24.1" custom-declare-variable auth-source-save-behavior 'ask "If set, auth-source will respect it for save behavior." :group auth-source :version "23.2" :type (choice :tag "auth-source new token save behavior" (const :tag "Always save" t) (const :tag "Never save" nil) (const :tag "Ask" ask)) auth-source-netrc-use-gpg-tokens 'never "Set this to tell auth-source when to create GPG password\ntokens in netrc files.  It's either an alist or `never'.\nNote that if EPA/EPG is not available, this should NOT be used." choice (const :tag "Always use GPG password tokens" (t gpg)) (const :tag "Never use GPG password tokens" never) repeat :tag "Use a lookup list" list "Matcher" (const :tag "Match anything" t) const "The EPA encrypted file extensions" boundp epa-file-auto-mode-alist-entry "\\.gpg\\'" ((regexp :tag "Regular expression")) ((choice :tag "What to do" (const :tag "Save GPG-encrypted password tokens" gpg) (const :tag "Don't encrypt tokens" never)))] 25)
(defvar auth-source-magic "auth-source-magic ")
(byte-code "\301\302\303\304\305\306\307\310\311\312&	\210\301\313\314\315\305\306\307\310\311\316&	\210\301\317\320\321\305\306\307\322\311\323\324\325\326\327\330\331\332\333\334\335\324\336\337\340\323\324\341\342\303\326\324\343\344\335\324\345\346\326\324\345\347BBBB\257\350BBBBB\257\257\257F&	\210\301\351\303\352\305\306\307\322\311\353&	\207" [auth-source-protocols-customize custom-declare-variable auth-source-do-cache t "Whether auth-source should cache information with `password-cache'." :group auth-source :version "23.2" :type boolean auth-source-debug nil "Whether auth-source should log debug messages.\n\nIf the value is nil, debug messages are not logged.\n\nIf the value is t, debug messages are logged with `message'.  In\nthat case, your authentication data will be in the clear (except\nfor passwords).\n\nIf the value is a function, debug messages are logged by calling\n that function using the same arguments as `message'." (choice :tag "auth-source debugging mode" (const :tag "Log using `message' to the *Messages* buffer" t) (const :tag "Log all trivia with `message' to the *Messages* buffer" trivia) (function :tag "Function that takes arguments like `message'") (const :tag "Don't log anything" nil)) auth-sources '("~/.authinfo" "~/.authinfo.gpg" "~/.netrc") "List of authentication sources.\n\nThe default will get login and password information from\n\"~/.authinfo.gpg\", which you should set up with the EPA/EPG\npackages to be encrypted.  If that file doesn't exist, it will\ntry the unencrypted version \"~/.authinfo\" and the famous\n\"~/.netrc\" file.\n\nSee the auth.info manual for details.\n\nEach entry is the authentication type with optional properties.\n\nIt's best to customize this with `M-x customize-variable' because the choices\ncan get pretty complex." "24.1" repeat :tag "Authentication Sources" choice (string :tag "Just a file") (const :tag "Default Secrets API Collection" 'default) (const :tag "Login Secrets API Collection" "secrets:Login") (const :tag "Temp Secrets API Collection" "secrets:session") (const :tag "Default internet Mac OS Keychain" macos-keychain-internet) (const :tag "Default generic Mac OS Keychain" macos-keychain-generic) list "Source definition" (const :format #1="" :value :source) (choice :tag "Authentication backend choice" (string :tag "Authentication Source (file)") (list :tag "Secret Service API/KWallet/GNOME Keyring" (const :format #1# :value :secrets) (choice :tag "Collection to use" (string :tag "Collection name") (const :tag "Default" 'default) (const :tag "Login" "Login") (const :tag "Temporary" "session"))) (list :tag "Mac OS internet Keychain" (const :format #1# :value :macos-keychain-internet) (choice :tag "Collection to use" (string :tag "internet Keychain path") (const :tag "default" 'default))) (list :tag "Mac OS generic Keychain" (const :format #1# :value :macos-keychain-generic) (choice :tag "Collection to use" (string :tag "generic Keychain path") (const :tag "default" 'default)))) "Extra Parameters" :inline "Extra parameter" (list :tag "Host" (const :format #1# :value :host) (choice :tag "Host (machine) choice" (const :tag "Any" t) (regexp :tag "Regular expression"))) "Protocol" (const :format #1# :value :port) (const :tag "Any" t) ((list :tag "User" :inline t (const :format #1# :value :user) (choice :tag "Personality/Username" (const :tag "Any" t) (string :tag "Name")))) auth-source-gpg-encrypt-to "List of recipient keys that `authinfo.gpg' encrypted to.\nIf the value is not a list, symmetric encryption will be used." (choice (const :tag "Symmetric encryption" t) (repeat :tag "Recipient public keys" (string :tag "Recipient public key")))] 42)
(defalias 'auth-source-do-debug #[(&rest msg) "\205\302\303	\"\207" [auth-source-debug msg apply auth-source-do-warn] 3])
(defalias 'auth-source-do-trivia #[(&rest msg) "\302=\204\f\303!\205\304\305	\"\207" [auth-source-debug msg trivia functionp apply auth-source-do-warn] 3])
(defalias 'auth-source-do-warn #[(&rest msg) "\302\303!\203\202\f\304	\"\207" [auth-source-debug msg apply functionp message] 3])
#@236 Read one of CHOICES by `read-char-choice', or `read-char'.
`dropdown-list' support is disabled because it doesn't work reliably.
Only one of CHOICES will be returned.  The PROMPT is augmented
with "[a/b/c] " if CHOICES is '(?a ?b ?c).
(defalias 'auth-source-read-char-choice #[(prompt choices) "\205_\306\307\310\211	:\203\"	@\311\312\n\"B	A\211\202
\237+\"\313\f\314\315O\316Q
\fP\310\211>\204\\\317\320!\203K\320\"\202V\321\322\"\210\323 \211\211\2028,\207" [choices #1=#:--cl-var-- c #2=#:--cl-var-- prompt-choices prompt apply concat nil format "%c/" "[" 0 -1 "] " fboundp read-char-choice message "%s" read-char full-prompt k] 6 (#$ . 9031)])
#@65 Creates an auth-source-backend from an ENTRY in `auth-sources'.
(defalias 'auth-source-backend-parse #[(entry) "\306\211\307=\203\310\311!\202\217;\203'\312\313\"\203'\310\314\315\316\317\"DD!\202\217\320=\2033\310\321!\202\217\322=\203?\310\323!\202\217;\203X\312\324\"\203X\310\314\325\316\317\"DD!\202\217;\203q\312\326\"\203q\310\314\327\316\317\"DD!\202\217;\203~\310\314D!\202\217\330\314\";\203\302\331\330\314\"!\332\232\203\255\333\330\314\"\314\330\314\"\334\335\336\337\340\341\342\343\330\314\"!&\202\217\333\330\314\"\314\330\314\"\334\344\336\345\340\346&	\202\217\330\314\"\203\"\330\314\"<\203\"\330\211\314\"\327\"\204\345\330\211\314\"\325\"\203\"\330\314\"\330	\327\"\211\203\367\322\202\370\320\330	\n\203\327\202\325\"\2119\203\347\f!\333\350\351\f\"\314\f\334\336\352\340\353&	,\202\217\330\314\"\203\203\330\314\"<\203\203\354\355\356\357#\203\203
\203\203\330\211\314\"\315\"\206H\360\2119\203X\361\347\f!!\206W\362\363\355!\203p\333\350\364\f\"\314\f\334\355\336\365\340\366&	\202\367\370\"\210\333\350\371\f\"\314\372\334\373%)\202\217\367\374\"\210\333\375\314\372\334\373%\"\207" [entry source-spec keychain-generic keychain-type source secrets-enabled auth-source-backend-parse-parameters default auth-source-backend-parse (:source (:secrets default)) string-match "^secrets:\\(.+\\)" :source :secrets match-string 1 macos-keychain-internet (:source (:macos-keychain-internet default)) macos-keychain-generic (:source (:macos-keychain-generic default)) "^macos-keychain-internet:\\(.+\\)" :macos-keychain-internet "^macos-keychain-generic:\\(.+\\)" :macos-keychain-generic plist-get file-name-extension "plist" auth-source-backend :type plstore :search-function auth-source-plstore-search :create-function auth-source-plstore-create :data plstore-open netrc auth-source-netrc-search auth-source-netrc-create symbol-name format "Mac OS Keychain (%s)" auth-source-macos-keychain-search auth-source-macos-keychain-create require secrets nil t "session" secrets-get-alias "Login" featurep "Secrets API (%s)" auth-source-secrets-search auth-source-secrets-create auth-source-do-warn "auth-source-backend-parse: no Secrets API, ignoring spec: %S" "Ignored Secrets API (%s)" "" ignore "auth-source-backend-parse: invalid backend spec: %S" "Empty"] 18 (#$ . 9720)])
#@135 Fills in the extra auth-source-backend parameters of ENTRY.
Using the plist ENTRY, get the :host, :port, and :user search
parameters.
(defalias 'auth-source-backend-parse-parameters #[(entry backend) ";?\205\303\304\305\"\211\203\306\n\307	#\210\304\310\"\211\203(\306\n\311	#\210\304\312\"\211\2037\306\n\313	#\210*\n\207" [entry val backend nil plist-get :host eieio-oset host :user user :port port] 4 (#$ . 12100)])
#@5688 Search or modify authentication backends according to SPEC.

This function parses `auth-sources' for matches of the SPEC
plist.  It can optionally create or update an authentication
token if requested.  A token is just a standard Emacs property
list with a :secret property that can be a function; all the
other properties will always hold scalar values.

Typically the :secret property, if present, contains a password.

Common search keys are :max, :host, :port, and :user.  In
addition, :create specifies how tokens will be or created.
Finally, :type can specify which backend types you want to check.

A string value is always matched literally.  A symbol is matched
as its string value, literally.  All the SPEC values can be
single values (symbol or string) or lists thereof (in which case
any of the search terms matches).

:create t means to create a token if possible.

A new token will be created if no matching tokens were found.
The new token will have only the keys the backend requires.  For
the netrc backend, for instance, that's the user, host, and
port keys.

Here's an example:

(let ((auth-source-creation-defaults '((user . "defaultUser")
                                        (A    . "default A"))))
  (auth-source-search :host "mine" :type 'netrc :max 1
                      :P "pppp" :Q "qqqq"
                      :create t))

which says:

"Search for any entry matching host 'mine' in backends of type
 'netrc', maximum one result.

 Create a new entry if you found none.  The netrc backend will
 automatically require host, user, and port.  The host will be
 'mine'.  We prompt for the user with default 'defaultUser' and
 for the port without a default.  We will not prompt for A, Q,
 or P.  The resulting token will only have keys user, host, and
 port."

:create '(A B C) also means to create a token if possible.

The behavior is like :create t but if the list contains any
parameter, that parameter will be required in the resulting
token.  The value for that parameter will be obtained from the
search parameters or from user input.  If any queries are needed,
the alist `auth-source-creation-defaults' will be checked for the
default value.  If the user, host, or port are missing, the alist
`auth-source-creation-prompts' will be used to look up the
prompts IN THAT ORDER (so the 'user prompt will be queried first,
then 'host, then 'port, and finally 'secret).  Each prompt string
can use %u, %h, and %p to show the user, host, and port.

Here's an example:

(let ((auth-source-creation-defaults '((user . "defaultUser")
                                        (A    . "default A")))
       (auth-source-creation-prompts
        '((password . "Enter IMAP password for %h:%p: "))))
  (auth-source-search :host '("nonesuch" "twosuch") :type 'netrc :max 1
                      :P "pppp" :Q "qqqq"
                      :create '(A B Q)))

which says:

"Search for any entry matching host 'nonesuch'
 or 'twosuch' in backends of type 'netrc', maximum one result.

 Create a new entry if you found none.  The netrc backend will
 automatically require host, user, and port.  The host will be
 'nonesuch' and Q will be 'qqqq'.  We prompt for the password
 with the shown prompt.  We will not prompt for Q.  The resulting
 token will have keys user, host, port, A, B, and Q.  It will not
 have P with any value, even though P is used in the search to
 find only entries that have P set to 'pppp'."

When multiple values are specified in the search parameter, the
user is prompted for which one.  So :host (X Y Z) would ask the
user to choose between X, Y, and Z.

This creation can fail if the search was not specific enough to
create a new token (it's up to the backend to decide that).  You
should `catch' the backend-specific error as usual.  Some
backends (netrc, at least) will prompt the user rather than throw
an error.

:require (A B C) means that only results that contain those
tokens will be returned.  Thus for instance requiring :secret
will ensure that any results will actually have a :secret
property.

:delete t means to delete any found entries.  nil by default.
Use `auth-source-delete' in ELisp code instead of calling
`auth-source-search' directly with this parameter.

:type (X Y Z) will check only those backend types.  'netrc and
'secrets are the only ones supported right now.

:max N means to try to return at most N items (defaults to 1).
When 0 the function will return just t or nil to indicate if any
matches were found.  More than N items may be returned, depending
on the search and the backend.

:host (X Y Z) means to match only hosts X, Y, or Z according to
the match rules above.  Defaults to t.

:user (X Y Z) means to match only users X, Y, or Z according to
the match rules above.  Defaults to t.

:port (P Q R) means to match only protocols P, Q, or R.
Defaults to t.

:K (V1 V2 V3) for any other key K will match values V1, V2, or
V3 (note the match rules above).

The return value is a list with at most :max tokens.  Each token
is a plist with keys :backend :host :port :user, plus any other
keys provided by the backend (notably :secret).  But note the
exception for :max 0, which see above.

The token can hold a :save-function key.  If you call that, the
user will be prompted to save the data to the backend.  You can't
request that this should happen right after creation, because
`auth-source-search' has no way of knowing if the token is
actually useful.  So the caller must arrange to call this function.

The token's :secret key can hold a function.  In that case you
must call it to obtain the actual value.

(fn &rest SPEC &key TYPE MAX HOST USER PORT SECRET REQUIRE CREATE DELETE &allow-other-keys)
(defalias 'auth-source-search #[(&rest spec) "\306>A@\307>A@\310>A@\311>A@\312>A@\313>A@'\314>A@(\315>A@)\316>A@*\317\320+\",\n\206F\321\322-\323.G/\3240./W\203y.8->\204o.80B0.\325\\\211.\202V0\237+1\326!2\327!3\324\21145\32462\203\2477\203\247\330\3313G#\210\202;)\332=\204\277)<\204\277\333\334)\332=)<#\210(<\204\313\333\335(\"\210\336,!4,\3246\2118\203\3568@6\337\340\215\2108A\2118\204\334*\341\3424G#\210\3434\n\324*(&3\330\3443G\n$\210)\20303\2040\3434\n)*(&3\330\3453G\n$\2107\203;\3463\"\2103.\207" [spec type max host user port :type :max :host :user :port :secret :require :create :delete mapcar auth-source-backend-parse 1 (:require :create :delete :max) 0 nil 2 auth-source-remembered-p auth-source-recall auth-source-do-debug "auth-source-search: found %d CACHED results matching %S" t error "Invalid auth-source :create parameter (must be t or a list): %s %s" "Invalid auth-source :require parameter (must be a list): %s" copy-sequence --cl-block-nil-- (byte-code "\303\211\203\n@\304\305\306\217\210\nA\211\204*\303\207" [keys key --dolist-tail-- nil signal (byte-code "\303\304\305\306\301EE!\204\307	\n\"\310\311\312\"\210\312\207" [key backend filtered-backends eval auth-source-search-collection (plist-get spec key) oref delq throw --cl-block-nil-- nil] 6) ((invalid-slot-name))] 4) auth-source-do-trivia "auth-source-search: found %d backends matching %S" auth-source-search-backends "auth-source-search: found %d results (max %d) matching %S" "auth-source-search: CREATED %d results (max %d) matching %S" auth-source-remember secret require create delete auth-sources backends ignored-keys i #1=#:--cl-var-- #2=#:--cl-var-- keys cached found filtered-backends accessor-key backend auth-source-do-cache --dolist-tail--] 8 (#$ . 12543)])
(defalias 'auth-source-search-backends #[(backends spec max create delete require) "\306	\306\211\203S@\fGV\203L\307\310\n\311\"\312\n\313\310\n\313\"\314
\315\316&\f\211\203K\317\320G\f\310\n\313\"\310\n\321\"&\210\322\")A\211\204\n*)\207" [matches backends backend --dolist-tail-- max require nil apply slot-value search-function :backend :type :require :create :delete auth-source-do-trivia "auth-source-search-backend: got %d (max %d) in %s:%s matching %S" :source append create delete spec bmatches] 14])
#@265 Delete entries from the authentication backends according to SPEC.
Calls `auth-source-search' with the :delete property in SPEC set to t.
The backend may not actually delete the entries.

Returns the deleted entries.

(fn &rest SPEC &key DELETE &allow-other-keys)
(defalias 'auth-source-delete #[(&rest spec) "\302>A@\303\304\302\305#!)\207" [spec delete :delete auth-source-search plist-put t] 5 (#$ . 20655)])
#@63 Returns t is VALUE is t or COLLECTION is t or contains VALUE.
(defalias 'auth-source-search-collection #[(collection value) ":\204\302=\204C\302=\206#	\302=\206#	\232\206#	\235\207" [collection value t] 2 (#$ . 21076)])
(defvar auth-source-netrc-cache nil)
#@37 Forget all cached auth-source data.
(defalias 'auth-source-forget-all-cached #[nil "\302\303\"\210\304\211\207" [password-data auth-source-netrc-cache mapatoms #[(sym) "\302\303P\304	!\"\205\305\304	!!\207" [auth-source-magic sym string-match "^" symbol-name password-cache-remove] 4] nil] 3 (#$ . 21353) nil])
#@52 Format SPEC entry to put it in the password cache.
(defalias 'auth-source-format-cache-entry #[(spec) "\302\303	\"P\207" [auth-source-magic spec format "%S"] 4 (#$ . 21675)])
#@41 Remember FOUND search results for SPEC.
(defalias 'auth-source-remember #[(spec found) "\304\305\n!\")\207" [auth-source-cache-expiry password-cache-expiry spec found password-cache-add auth-source-format-cache-entry] 3 (#$ . 21857)])
#@39 Recall FOUND search results for SPEC.
(defalias 'auth-source-recall #[(spec) "\301\302!!\207" [spec password-read-from-cache auth-source-format-cache-entry] 3 (#$ . 22101)])
#@30 Check if SPEC is remembered.
(defalias 'auth-source-remembered-p #[(spec) "\301\302!!\207" [spec password-in-cache-p auth-source-format-cache-entry] 3 (#$ . 22282)])
#@151 Forget any cached data matching SPEC exactly.

This is the same SPEC you passed to `auth-source-search'.
Returns t or nil for forgotten or not found.
(defalias 'auth-source-forget #[(spec) "\301\302!!\207" [spec password-cache-remove auth-source-format-cache-entry] 3 (#$ . 22456)])
#@335 Forget any cached data matching SPEC.  Returns forgotten count.

This is not a full `auth-source-search' spec but works similarly.
For instance, (:host "myhost" "yourhost") would find all the
cached data that was found with a search for those two hosts,
while (:host t) would find all host entries.

(fn &rest SPEC &allow-other-keys)
(defalias 'auth-source-forget+ #[(&rest spec) "\303\304\305\306\n\"\210	*\207" [sname count password-data 0 nil mapatoms #[(sym) "\305!\211\205&\306\307\n\310Q	\"\205&\311\312\313\314	\"!\"\205&\315	!\210\fT\211\207" [sym sname auth-source-magic spec count symbol-name string-match "^" "\\(.+\\)" auth-source-specmatchp read match-string 1 password-cache-remove] 6]] 3 (#$ . 22747)])
(defalias 'auth-source-specmatchp #[(spec stored) "\305	G\306\nW\203	8B\307\\\211\202\237+\310\311\215)\312=?\207" [i spec #1=#:--cl-var-- #2=#:--cl-var-- keys 0 nil 2 --cl-block-nil-- (byte-code "\305\211\205%\n@\306\307	\"\307\f	\"\"\204\310\311\312\"\210\nA\211\204\305*\207" [keys key --dolist-tail-- stored spec nil auth-source-search-collection plist-get throw --cl-block-nil-- no] 6) no] 3])
#@73 Pick the first secret found from applying SPEC to `auth-source-search'.
(defalias 'auth-source-pick-first-password #[(&rest spec) "\303\304\305\306\307#\"@\310	\311\"\312\n!\203\n \202\n*\207" [spec result secret apply auth-source-search plist-put :max 1 plist-get :secret functionp] 6 (#$ . 23905)])
#@67 Format PROMPT using %x (for any character x) specifiers in ALIST.
(defalias 'auth-source-format-prompt #[(prompt alist) "\306\211\2030\n@\211@	A@\211\203(\203(\307\310\311\f\"\310\312\"
\306\313%*\nA\211\204*
\207" [alist cell --dolist-tail-- v c prompt nil replace-regexp-in-string format "%%%c" "%s" t] 7 (#$ . 24219)])
(defalias 'auth-source-ensure-strings #[(values) "<\204C\301\302\"\207" [values mapcar #[(value) "\247\203\n\301\302\"\207\207" [value format "%s"] 3]] 3])
(defalias 'auth-source--aput-1 #[(alist key val) "\306	:\203	\211@@)\232\204	\211A@\nB\202
B	\204*\202>\n\237	\211@@)\232\203<	A\202=	\244*B\207" [alist rest seen key x val nil] 5])
(defalias 'auth-source--aput '(macro . #[(var key val) "\303\304	\nFE\207" [var key val setq auth-source--aput-1] 6]))
(defalias 'auth-source--aget #[(alist key) "\302	\"A\207" [key alist assoc] 3])
#@205 Parse FILE and return a list of all entries in the file.
Note that the MAX parameter is used so we can exit the parse early.

(fn &rest SPEC &key FILE MAX HOST USER PORT DELETE REQUIRE &allow-other-keys)
(defalias 'auth-source-netrc-parse #[(&rest spec) "\306>A@\307>A@\310>A@\311>A@\312>A@\313>A@@\314>A@A	<\2035	\202\211\315	!\205\211\316
!\317\320!BrBq\210\321\216\322C\n\206S\323\324D\325	E\"\243F\326F\327\"G\326F\330\"H\331\211IJ\331\211KL\332H!\203\230G\333\334	!8\232\203\230\335\336	\"\210H c\210\202\312\337	!\210\340E	\327\333\334	!8\330\341\342!\211M\211N\343\344\345 \"L\210)\346\347\350\351\352D\351MD\353FE)F#Eeb\210m\2043\n\324V\2033`\354 }\210m\204h\355\331w\210\331f\356=\203\361db\210\202\334m\204\334g\357U\203\360p!\202`\361\331w\210`{\211J\362\232\203&~\210\363\364y!\203\365\366!\204``}\210\202\334JC\235\203PL\203HLA\204AL@\367\232\203HLIBIJCL\202\334L\203\334LJ\241\210LIBI\331L\202\334I\203%\n\324V\203%\370\371I\372\"\206\206\371I\373\"\206\206\374\"\203%\370\f\371I\375\"\206\245\371I\376\"\206\245\371I\377\"\206\245\374\"\203%\370
\371I\201U\"\206\300\371I\201V\"\206\300\374\"\203%A\203\201WIC	\"@OAP\331Q\374RP:\203\376P@Q\326OQ\"\211R\203\376PA\211P\202\340R\205\374,\203%\nSI\237KBK@\203%eb\210\201Xc\210DTD\331\211IL~\210\364y\210\202\315\324DW\203\204S\203\\\201Y\201Tp\"\204R\201Z\201T!\210S<\203\\ST\201[\201\\\201]	D#!\203\204\201^ed	\331\201_%\210\201`\201aD	#\210K\237.
.\207" [spec file max host user port :file :max :host :user :port :delete :require file-exists-p auth-source-ensure-strings generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1=#:temp-buffer buffer-name kill-buffer] 2)) ("machine" "host" "default" "login" "user" "password" "account" "macdef" "force" "port" "protocol") 5000 0 assoc plist-get :mtime :secret nil functionp 5 file-attributes auth-source-do-trivia "auth-source-netrc-parse: using CACHED file data for %s" insert-file-contents auth-source--aput-1 make-symbol "--v--" mapcar 1+ buffer-string lambda (&rest --cl-rest--) apply quote #[(#2=#:G12600) "\301\302\303\304J\"\"\207" [#2# apply string mapcar 1-] 5] --cl-rest-- point-at-eol "	 " 35 34 read "^	 " "macdef" zerop 1 looking-at "$" "default" auth-source-search-collection auth-source--aget "machine" "host" t "login" "account" "user" delete require #1# tokens modified auth-source-netrc-cache cached cached-mtime cached-secrets alist elem result pair #3=#:--cl-v-- #4=#:v normalized #5=#:--cl-var-- req #6=#:--cl-flag-- auth-source-gpg-encrypt-to epa-file-encrypt-to "port" "protocol" auth-source-netrc-normalize "#" local-variable-p make-local-variable y-or-n-p format "Save file %s? (%d deletions)" write-region silent auth-source-do-debug "auth-source-netrc-parse: modified %d lines in %s"] 13 (#$ . 25134)])
(defvar auth-source-passphrase-alist nil)
(defalias 'auth-source-token-passphrase-callback-function #[(context key-id file) "\306!\307	\"\310\311\312\nA!\203\nA \202\nA!\206P\n\204*C\211	B\313\314\315\"\316\"\n\317\320!\211\211\311!L\210)\321\322\323\324\325D\324\fD\326FE)\241\210+\207" [file auth-source-passphrase-alist entry passphrase #1=#:--cl-p-- #2=#:v file-truename assoc nil copy-sequence functionp read-passwd format "Passphrase for %s tokens: " t make-symbol "--p--" lambda (&rest --cl-rest--) apply quote #[(#3=#:G12601) "J\207" [#3#] 1] --cl-rest--] 8])
#@115 Pass either the decoded SECRET or the gpg:BASE64DATA version.
FILE is the file from which we obtained this token.
(defalias 'auth-source-epa-extract-gpg-token #[(secret file) "\304\305\"\203\306\307\310\"!\311\312!\313\314\n\315B\"\210\316\n\"*\207" [secret plain context file string-match "^gpg:\\(.+\\)" base64-decode-string match-string 1 epg-make-context OpenPGP nil epg-context-set-passphrase-callback auth-source-token-passphrase-callback-function epg-decrypt-string] 4 (#$ . 28668)])
(defalias 'auth-source-epa-make-gpg-token #[(secret file) "\306\307!\310\211\311\n\312\"\210\313\n\314B\"\210\315\n\f\310#\316\317!r
q\210\320\216c\210\321ed\312#\210\322\323ed\"P.\207" [cipher pp-escape-newlines context file secret #1=#:temp-buffer epg-make-context OpenPGP nil epg-context-set-armor t epg-context-set-passphrase-callback auth-source-token-passphrase-callback-function epg-encrypt-string generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) base64-encode-region "gpg:" buffer-substring-no-properties] 4])
(defalias 'auth-source-netrc-normalize #[(alist filename) "\301\302\"\207" [alist mapcar #[(entry) "\306\211\n\211A@\211\203\237@A\211\307\235\203\310\202=\f\311\235\203(\312\202=\f\313\235\2032\314\202=\f\315\235\203<\316\202=\f\211\316\232\203\221\317\320!\317\321!\211\211L\210)
\211 \306L\210)\322\323J\"\203~
\211!\324\325\326\327\330D\327
D\327D\331\257EL\210)\324\325\326\327\332D\327
D\327D\331\257E*\333	\334\335\fP!#*\202	*\207" [item ret entry v k #1=#:--cl-token-decoder-- nil ("machine") "host" ("login" "account") "user" ("protocol") "port" ("password") "secret" make-symbol "--lexv--" "--token-decoder--" string-match "^gpg:" lambda (&rest --cl-rest--) apply quote #[(#2=#:G12602 #3=#:G12603 val) "\304	\"\n\211\305L\210)\207" [val filename #2# #4=#:v auth-source-epa-extract-gpg-token nil] 4] --cl-rest-- #[(#5=#:G12604 #6=#:G12605) "J\203	\211J	J!L\210)	J\207" [#5# #6# #7=#:v] 4] plist-put intern ":" #8=#:--cl-lexv-- #9=#:v #10=#:v #11=#:v] 9]] 3])
#@210 Given a property list SPEC, return search matches from the :backend.
See `auth-source-search' for details on SPEC.

(fn &rest SPEC &key BACKEND REQUIRE CREATE DELETE TYPE MAX HOST USER PORT &allow-other-keys)
(defalias 'auth-source-netrc-search #[(&rest spec) "\306>A@\307>A@\310>A@\311>A@\312>A@\313>A@\314>A@\315>A@\316>A@ 
\203S
\317	\305\"=\204S\320\321
?
\317	\305\"=#\210\322\323\313\307\n\311\f\324\317	\325\"\314\206h\326\315\206o\326\316 \206v\326&\317	\325\"\"!\203\234!\204\234\327\330	\331\"\"\206\232\327\332\333\310\334#\"!!.\n\207" [spec backend require create delete type :backend :require :create :delete :type :max :host :user :port eieio-oref error "Invalid netrc search: %s %s" auth-source-netrc-normalize auth-source-netrc-parse :file source t apply slot-value create-function auth-source-netrc-search plist-put nil max host user port results] 16 (#$ . 30780)])
(defalias 'auth-source-netrc-element-or-first #[(v) "<\203@\207\207" [v] 1])
#@79 

(fn &rest SPEC &key BACKEND SECRET HOST USER PORT CREATE &allow-other-keys)
(defalias 'auth-source-netrc-create #[(&rest spec) "\306>A@\307>A@\310>A@\311>A@\312>A@\313>A@@\314A@\315=?\2052@B\316\317\320\310\312
&@C\321AB\"D\322	\323\"E\324F\325\211GHA\325I\211J\203\225J@\211IJ\203\214IJ\315=\203x\325\202{IJ\211K\203\213\326GIK#G)JA\211J\204b*B\325L\211J\203J@L\327\330L!P\331MGN\325OMNW\203\321M8OBOM\332\\\211M\202\270O\237+PQP\325R\211J\203	J@R\330R!Q\232\203\326GL\333R\"#GJA\211J\204\344,JA\211J\204\241*D\325S\211J\203BJ@S\334GS\"T\335T!\206@\333C\336\337\340S\"U\"\"T\334VS\"\211W\204ZS\304=\203Z\341 \202\\WX\304\335\334G\304\"!\206r\333H\311\"\206r\342B\303\335\334G\303\"!\206\207\333H\310\"\206\207\343B\305\335\334G\305\"!\206\234\333H\312\"\206\234\344BEY\334ZS\"\206\336\345S\302\"\203\265\346\202\336\345S\304\"\203\301\347\202\336\345S\303\"\203\315\350\202\336\345S\305\"\203\331\351\202\336\337\352S\"[\353[\354\334Y\304\"D\355\334Y\303\"D\356\334Y\305\"DE\"[T\206\317S\302=\203\237\337\357E\"\\]\360=\203\360\202]]<\203\\\361]!\325\211^_``\205X`\211A`@\211_@\315=\204K\362_@E\"\203,_A^\325\211`\2041\325+\202]\360a\363X!\206j\364[!ba\204\211\365\\!\203|\366\202}\360aEaD]B]a\366=\203\231\367bE\"\202\233b+\202\317X;\203\313\370\362\371[\"\203\274[\331\211\224O\372X\373R\202\303[\374X\375R\325\211X$\202\317\363X!\211T\203\376H\336\327\330S!P!S\302=\203\377\201j!\211c\211dTL\210)\201k\201l\201m\201n\201oD\201ncD\201pFE)\202T#HT;\2037\331TGW\2037\201qeFe PF).JA\211J\204*\376H\201r\377\201s!\377\201t!f\211g\211hEL\210)f\211iFL\210)\201k\201l\201m\201n\201uD\201nfD\201ngD\201p\257E*#\210H.C\207" [spec backend secret host user port :backend :secret :host :user :port :create (host user port secret) t auth-source-search :max 1 append eieio-oref source #10="" nil auth-source--aput-1 ":" symbol-name 0 2 plist-get auth-source--aget auth-source-netrc-element-or-first intern format ":%s" user-login-name "[any user]" "[any host]" "[any port]" eql "%p password for %u@%h: " "%p user name for %h: " "%p host name for user %u: " "%p port for %u@%h: " "Enter %s (%%u@%%h:%%p): " auth-source-format-prompt 117 104 112 "Use GPG password tokens in %s?" never copy-sequence string-match eval read-passwd y-or-n-p gpg auth-source-epa-make-gpg-token read-string ": *\\'" " (default " "): " "(default " ") " plist-put make-symbol create base-required create-extra current-data required file add valist artificial br --dolist-tail-- br-choice er i #1=#:--cl-var-- #2=#:--cl-var-- keys name k r data obarray auth-source-creation-defaults given-default default printable-defaults auth-source-creation-prompts prompt ep auth-source-netrc-use-gpg-tokens ret item check gpg-encrypt plain #3=#:--cl-data-- #4=#:v printer #5=#:--cl-add-- #6=#:--cl-file-- #7=#:v #8=#:v "--data--" lambda (&rest --cl-rest--) apply quote #[(#9=#:G12606) "J\207" [#9#] 1] --cl-rest-- #[nil "\303\304\305G!\203
\306\202\307\310	\311\"\203\312\202=\310	\313\"\203$\314\202=\310	\315\"\203/\316\202=\310	\317\"\203:\320\202=\321	!\322\323\n\"\203K\303\324\n\"\202L\n$\207" [add r data format "%s%s %s" zerop #10# " " eql user "login" host "machine" secret "password" port "port" symbol-name string-match "[\"# ]" "%S"] 7] :save-function "--file--" "--add--" #[(#11=#:G12607 #12=#:G12608) "\302J	J\"\207" [#12# #11# auth-source-netrc-saver] 3]] 11 (#$ . 31795)])
#@156 Save a line ADD in FILE, prompting along the way.
Respects `auth-source-save-behavior'.  Uses
`auth-source-netrc-cache' to avoid prompting more than once.
(defalias 'auth-source-netrc-saver #[(file add) "\306\307\310\311\312\313	%#\314\n\"\211\203\315\316\n\"\202E\317\320!r
q\210\321\216\322!\2030\323!\210@\203J\324\325p\"\204@\326\325!\210@<\203J@eb\210\306\327\".\330=?\331\332ABCDC\204\375\333D\334\"A\335A\336\"\203{\337\211C\202b\335A\340\"\203\307\212EFr\341B!q\210p\342 \210FE\332\211GH\337\211I\337JK\343 \210\344\345!\210+\211LM\346\347!\210Mq\210\350 \210\351L!\210,\202`\335A\352\"\203\330\353\337\211C\202b\335A\354\"\203\355\353\337C\355\356\332\"\210\202`\335A\357\"\203`\360\361	\"\202`\362B!\203\363\362B!!\210.\204\353\364	GW\203<n\204 \365c\210	\365\261\210\366ed\332\367%\210\370\371\"\210\372\373\"\210\374\375\"\210.\376\n\377#\211*\207" [file add key auth-source-netrc-cache cached #1=#:temp-buffer format "%s %s" rfc2104-hash md5 64 16 assoc auth-source-do-trivia "auth-source-netrc-saver: found previous run for key %s, returning" generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) file-exists-p insert-file-contents local-variable-p epa-file-encrypt-to make-local-variable "Save auth info to file %s? " ask "*auth-source Help*" nil auth-source-read-char-choice (121 110 78 101 63) eql 121 t 63 get-buffer-create kill-all-local-variables erase-buffer run-hooks temp-buffer-setup-hook princ "(y)es, save\n(n)o but use the info\n(N)o and don't ask to save again\n(e)dit the line\n(?) for help as you can see.\n" help-mode internal-temp-output-buffer-show 110 "" 78 customize-save-variable auth-source-save-behavior 101 read-string "Line to add: " get-buffer-window delete-window 0 "\n" write-region silent set-file-modes 384 auth-source-do-debug "auth-source-netrc-create: wrote 1 new line to %s" message "Saved new authentication information to %s" auth-source--aput-1 "ran" auth-source-gpg-encrypt-to k bufname done prompt default-directory #2=#:old-dir buffer-read-only buffer-file-name buffer-undo-list inhibit-modification-hooks inhibit-read-only #3=#:buf standard-output] 10 (#$ . 35439)])
#@1105 Search the Secrets API; spec is like `auth-source'.

The :label key specifies the item's label.  It is the only key
that can specify a substring.  Any :label value besides a string
will allow any label.

All other search keys must match exactly.  If you need substring
matching, do a wider search and narrow it down yourself.

You'll get back all the properties of the token as a plist.

Here's an example that looks for the first item in the 'Login'
Secrets collection:

 (let ((auth-sources '("secrets:Login")))
    (auth-source-search :max 1)

Here's another that looks for the first item in the 'Login'
Secrets collection whose label contains 'gnus':

 (let ((auth-sources '("secrets:Login")))
    (auth-source-search :max 1 :label "gnus")

And this one looks for the first item in the 'Login' Secrets
collection that's a Google Chrome entry for the git.gnus.org site
authentication tokens:

 (let ((auth-sources '("secrets:Login")))
    (auth-source-search :max 1 :signon_realm "https://git.gnus.org/Git"))

(fn &rest SPEC &key BACKEND CREATE DELETE LABEL TYPE MAX HOST USER PORT &allow-other-keys)
(defalias 'auth-source-secrets-search #[(&rest spec) "\306>A@\307>A@\310>A@\311>A@\312>A@\313>A@$\314>A@%\315>A@&\316>A@'\n\203B\317\320!\210\203J\317\321!\210\322	\323\"($\206V\324$\325)\326*G+\327,*+W\203\212*8)>\204\200*8,B,*\330\\\211*\202g,\237+-\331\332\333\334-\"\".\335\332\336-\"!/\331\337(.#0\327\211120:\203\3320@1\f;\203\312\340\f1\"\203\32112B20A\2110\202\2642\237+3\3413\211G$Z\"3\333\3423\"3\333\3433\".\207" [spec backend create delete label type :backend :create :delete :label :type :max :host :user :port error "The Secrets API auth-source backend doesn't support creation yet" "The Secrets API auth-source backend doesn't support deletion yet" eieio-oref source 5000 (:create :delete :max :backend :label :require :type) 0 nil 2 apply append mapcar #[(k) "\302	\"?\206\302	\"\303=?\205	\302	\"D\207" [spec k plist-get t] 4] mm-delete-duplicates (:host :login :port :secret) secrets-search-items string-match butlast #[(item) "\304\305\306\307!\211\211\310\n\"L\210)\311\312\313\314\315D\314D\316FE)D\313\304\317\320\321\n\"\"\"\"\207" [#1=#:--cl-v-- #2=#:v coll item append :secret make-symbol "--v--" secrets-get-secret lambda (&rest --cl-rest--) apply quote #[(#3=#:G12609) "J\207" [#3#] 1] --cl-rest-- mapcar #[(entry) "@AD\207" [entry] 2] secrets-get-attributes] 10] #[(plist) "\302\303\302\304\305\"\"	\"\207" [returned-keys plist append apply mapcar #[(req) "\302	\"?\205	\303D\207" [plist req plist-get nil] 3]] 6] max host user port coll ignored-keys i #4=#:--cl-var-- #5=#:--cl-var-- search-keys search-spec returned-keys #6=#:--cl-var-- item #7=#:--cl-var-- items] 6 (#$ . 37709)])
#@74 

(fn &rest SPEC &key BACKEND TYPE MAX HOST USER PORT &allow-other-keys)
(defalias 'auth-source-secrets-create #[(&rest spec) "\306>A@\307>A@\310>A@\311>A@\312>A@\313>A@
\314!.\207" [spec backend type max host user :backend :type :max :host :user :port debug port] 2 (#$ . 40527)])
#@1482 Search the MacOS Keychain; spec is like `auth-source'.

All search keys must match exactly.  If you need substring
matching, do a wider search and narrow it down yourself.

You'll get back all the properties of the token as a plist.

The :type key is either 'macos-keychain-internet or
'macos-keychain-generic.

For the internet keychain type, the :label key searches the
item's labels ("-l LABEL" passed to "/usr/bin/security").
Similarly, :host maps to "-s HOST", :user maps to "-a USER",
and :port maps to "-P PORT" or "-r PROT"
(note PROT has to be a 4-character string).

For the generic keychain type, the :label key searches the item's
labels ("-l LABEL" passed to "/usr/bin/security").
Similarly, :host maps to "-c HOST" (the "creator" keychain
field), :user maps to "-a USER", and :port maps to "-s PORT".

Here's an example that looks for the first item in the default
generic MacOS Keychain:

 (let ((auth-sources '(macos-keychain-generic)))
    (auth-source-search :max 1)

Here's another that looks for the first item in the internet
MacOS Keychain collection whose label is 'gnus':

 (let ((auth-sources '(macos-keychain-internet)))
    (auth-source-search :max 1 :label "gnus")

And this one looks for the first item in the internet keychain
entries for git.gnus.org:

 (let ((auth-sources '(macos-keychain-internet")))
    (auth-source-search :max 1 :host "git.gnus.org"))

(fn &rest SPEC &key BACKEND CREATE DELETE LABEL TYPE MAX HOST USER PORT &allow-other-keys)
(defalias 'auth-source-macos-keychain-search #[(&rest spec) "\306>A@\307>A@\310>A@\311>A@\312>A@\313>A@!\314>A@\"\315>A@#\316>A@$\n\203B\317\320!\210\203J\317\321!\210\322	\323\"%!\206V\324!\325&\326'G(\327)'(W\203\212'8&>\204\200'8)B)'\330\\\211'\202g)\237+*\331\332\333\334*\"\"+\335\332\336*\"!,\331\337%
!+%-\333\340-\".\207" [spec backend create delete label type :backend :create :delete :label :type :max :host :user :port error "The MacOS Keychain auth-source backend doesn't support creation yet" "The MacOS Keychain auth-source backend doesn't support deletion yet" eieio-oref source 5000 (:create :delete :max :backend :label) 0 nil 2 apply append mapcar #[(k) "\302	\"?\206\302	\"\303=?\205	\302	\"D\207" [spec k plist-get t] 4] mm-delete-duplicates (:host :login :port :secret) auth-source-macos-keychain-search-items #[(plist) "\302\303\302\304\305\"\"	\"\207" [returned-keys plist append apply mapcar #[(req) "\302	\"?\205	\303D\207" [plist req plist-get nil] 3]] 6] max host user port coll ignored-keys i #1=#:--cl-var-- #2=#:--cl-var-- search-keys search-spec returned-keys items] 7 (#$ . 40831)])
#@82 

(fn COLL TYPE MAX &rest SPEC &key LABEL TYPE HOST USER PORT &allow-other-keys)
(defalias 'auth-source-macos-keychain-search-items #[(coll type max &rest spec) "\306>A@\307>A@\310>A@\311>A@\312>A@\n\313=\2114\203+\314\202,\315\316B5\307\nD6	\203B\3175\320	D\"5\203X\31754\203R\321\202S\322D\"5\f\203e\3175\323\fD\"5
\203\2164\203z\3175\322
D\"5\202\216\3175\324\325
\"\203\210\326\202\211\327
D\"57\330\232\204\236\31757C\"5\331\332!8r8q\210\333\216\334\335\336\337\340\3375&\210eb\210m\204\341\342!\203\352\34364\344\345\346!\2119\211:\347\350!L\210)\351\352\334\353\354D\3539D\355FE)$\210\202\341\356!\203\376\34364\357\347\350!$\210\202\341\360!\203\34364\347\350!\347\361!$\210\337y\210\202\270+\3626\363\"\205#6C.\207" [spec label type host user port :label :type :host :user :port macos-keychain-generic "find-generic-password" "find-internet-password" ("-g") append "-l" "-c" "-s" "-a" string-match "[0-9]+" "-P" "-r" "default" generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1=#:temp-buffer buffer-name kill-buffer] 2)) apply call-process "/usr/bin/security" nil t looking-at "^password: \"\\(.+\\)\"$" auth-source-macos-keychain-result-append "secret" make-symbol "--v--" match-string 1 lambda (&rest --cl-rest--) quote #[(#2=#:G12610) "J\207" [#2#] 1] --cl-rest-- "^[ ]+0x00000007 <blob>=\"\\(.+\\)\"" "label" "^[ ]+\"\\([a-z]+\\)\"[^=]+=\"\\(.+\\)\"" 2 plist-get :secret keychain-generic args ret coll #1# #3=#:--cl-v-- #4=#:v] 11 (#$ . 43500)])
(defalias 'auth-source-macos-keychain-result-append #[(result generic k v) "	B\n\304\232\203\305\202G\203\n\306\232\203\307\202G\203*\n\310\232\203*\311\202G\2048\n\312\232\2038\311\202G\204F\n\313\232\203F\307\202G\n\314\315\316\n\"!	B\211\207" [v result k generic "acct" "user" "crtr" "host" "svce" "port" "ptcl" "srvr" intern format ":%s"] 4])
#@74 

(fn &rest SPEC &key BACKEND TYPE MAX HOST USER PORT &allow-other-keys)
(defalias 'auth-source-macos-keychain-create #[(&rest spec) "\306>A@\307>A@\310>A@\311>A@\312>A@\313>A@
\314!.\207" [spec backend type max host user :backend :type :max :host :user :port debug port] 2 (#$ . 45439)])
#@141 Search the PLSTORE; spec is like `auth-source'.

(fn &rest SPEC &key BACKEND CREATE DELETE LABEL TYPE MAX HOST USER PORT &allow-other-keys)
(defalias 'auth-source-plstore-search #[(&rest spec) "\306>A@\307>A@\310>A@\311>A@\312>A@\313>A@'\314>A@(\315>A@)\316>A@*\317	\320\"+'\206F\321'\322,\323-G.\324/-.W\203z-8,>\204p-8/B/-\325\\\211-\202W/\237+0\326\327\330\3310\"\"1\332\327\3330\"!2\334+1\"3\330\3353\"4\3363\211G'Z\"3\330\3373\"3\330\3403\"3\n\203\3333\204\333\326\341	\342\"\"\206\326\326\343\344\307\324#\"3\202\n\203\n4\203\n4\3245\2116\2036@5\345+5\"\2106A\2116\204\357*\346+!\2103.\207" [spec backend create delete label type :backend :create :delete :label :type :max :host :user :port eieio-oref data 5000 (:create :delete :max :backend :label :require :type) 0 nil 2 apply append mapcar #[(k) "\303	\"\211?\206
\n\304=?\205\n;\203\nC	\nD)\207" [spec k v plist-get t] 4] mm-delete-duplicates (:host :login :port :secret) plstore-find car butlast #[(item) "\305A!\306	\307\"\211\203,\nA\310\311!\211\211\nA@L\210)\312\313\314\315\316D\315D\317FE)\240\210	*\207" [item plist secret #1=#:--cl-v-- #2=#:v copy-tree plist-member :secret make-symbol "--v--" lambda (&rest --cl-rest--) apply quote #[(#3=#:G12611) "J\207" [#3#] 1] --cl-rest--] 8] #[(plist) "\302\303\302\304\305\"\"	\"\207" [returned-keys plist append apply mapcar #[(req) "\302	\"?\205	\303D\207" [plist req plist-get nil] 3]] 6] slot-value create-function auth-source-plstore-search plist-put plstore-delete plstore-save max host user port store ignored-keys i #4=#:--cl-var-- #5=#:--cl-var-- search-keys search-spec returned-keys items item-names item-name --dolist-tail--] 7 (#$ . 45749)])
#@79 

(fn &rest SPEC &key BACKEND SECRET HOST USER PORT CREATE &allow-other-keys)
(defalias 'auth-source-plstore-create #[(&rest spec) "\306>A@\307>A@\310>A@\311>A@\312>A@\313>A@@\314A\315B@\316=?\2055@C\317\320\321\310\312
&@D\322AC\"E\323	\324\"F\325G\326\211HI\326JA\326K\211L\203\233L@\211KJ\203\222KJ\316=\203~\326\202\201KJ\211M\203\221\327HKM#H)LA\211L\204h*C\326N\211L\203L@N\330\331N!P\332OGP\326QOPW\203\327O8QBQO\333\\\211O\202\276Q\237+RSR\326T\211L\203L@T\331T!S\232\203\327HN\334T\"#HLA\211L\204\352,LA\211L\204\247*E\326U\211L\203\210L@U\335HU\";\336;!\206F\334D\337\340\341U\"V\"\";\335WU\"\211X\204`U\304=\203`\342 \202bXY\304\336\335H\304\"!\206x\334I\311\"\206x\343B\303\336\335H\303\"!\206\215\334I\310\"\206\215\344B\305\336\335H\305\"!\206\242\334I\312\"\206\242\345BEZ\335[U\"\206\344\346U\302\"\203\273\347\202\344\346U\304\"\203\307\350\202\344\346U\303\"\203\323\351\202\344\346U\305\"\203\337\352\202\344\340\353U\"\\\354\\\355\335Z\304\"D\356\335Z\303\"D\357\335Z\305\"DE\"\\;\206LU\302=\203\360Y!\206L\361\\!\202LY;\203H\362\363\364\\\"\2039\\\332\211\224O\365Y\366R\202@\\\367Y\370R\326\211Y$\202L\360Y!\211;\203}UB\235\203m\371J\337\330\331U!P!;#J\202}\371I\337\330\331U!P!;#I.LA\211L\204%*\372\323	\373\"\374\340\375\334I\311\"\334I\310\"\334I\312\"$!IJ$\210\376\340\377\201]\323	\373\"!\"!\205\300\201^\323	\373\"!.\207" [spec backend secret host user port :backend :secret :host :user :port :create (host user port secret) (secret) t auth-source-search :max 1 append eieio-oref source "" nil auth-source--aput-1 ":" symbol-name 0 2 plist-get auth-source--aget auth-source-netrc-element-or-first intern format ":%s" user-login-name "[any user]" "[any host]" "[any port]" eql "%p password for %u@%h: " "%p user name for %h: " "%p host name for user %u: " "%p port for %u@%h: " "Enter %s (%%u@%%h:%%p): " auth-source-format-prompt 117 104 112 eval read-passwd read-string string-match ": *\\'" " (default " "): " "(default " ") " plist-put plstore-put data sha1 "%s@%s:%s" y-or-n-p "Save auth info to file %s? " create base-required base-secret create-extra current-data required file add valist artificial secret-artificial br --dolist-tail-- br-choice er i #1=#:--cl-var-- #2=#:--cl-var-- keys name k r obarray auth-source-creation-defaults given-default default printable-defaults auth-source-creation-prompts prompt plstore-get-file plstore-save] 11 (#$ . 47527)])
(byte-code "\300\301\302\303#\210\300\304\305\303#\207" [make-obsolete auth-source-user-or-password auth-source-search "Emacs 24.1" auth-source-forget-user-or-password auth-source-forget] 4)
#@869 Find MODE (string or list of strings) matching HOST and PORT.

DEPRECATED in favor of `auth-source-search'!

USERNAME is optional and will be used as "login" in a search
across the Secret Service API (see secrets.el) if the resulting
items don't have a username.  This means that if you search for
username "joe" and it matches an item but the item doesn't have
a :user attribute, the username "joe" will be returned.

A non nil DELETE-EXISTING means deleting any matching password
entry in the respective sources.  This is useful only when
CREATE-MISSING is non nil as well; the intended use case is to
remove wrong password entries.

If no matching entry is found, and CREATE-MISSING is non nil,
the password will be retrieved interactively, and it will be
stored in the password database which matches best (see
`auth-sources').

MODE can be "login" or "password".
(defalias 'auth-source-user-or-password #[(mode host port &optional username create-missing delete-existing) "\306\307	\n%\210<\211\203\202C\203$\310\311	\n%\202*\310\312	\n$\313	\314\nF\203@\315\316D\"\202B\203S\315\317\320D\"\202U\203f\315\321\320D\"\202h\322\323\324\315\325\"\"@\211\203\302\322\211 \203\301 @\211\326\232\203\247\327\330\"\205\237\327\330\" B\202\270\331\232\203\270\327\316\"B A\211 \204\206*\237\f\203\320\202\323\242).\207" [mode host port username listy cname auth-source-do-debug "auth-source-user-or-password: DEPRECATED get %s for %s (%s) + user=%s" format "%s %s:%s %s" "%s %s:%s" :host :port append :user :create t :delete nil apply auth-source-search (:max 1) "password" plist-get :secret "login" search create-missing delete-existing found choice m --dolist-tail--] 8 (#$ . 50324)])
(defalias 'auth-source-user-and-password #[(host &optional user) "\203\304\305	\306\307\310\311\312\313\314\315&\n\202\304\305	\310\311\312\316\314\315&@\317\n\306\"\317\n\320\"\321!\2034 \nE+\207" [user host auth-info password auth-source-search :host :user "yourusername" :max 1 :require (:user :secret) :create nil (:user :secret) plist-get :secret functionp] 11])
(provide 'auth-source)

MMCT - 2023