grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026ó þÆt£]ÿ*Hãó„ •SrSrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK r SSK r SSK J r J r J r SSKJr SSKrSr/SQrS rSrS rS rS rS rSr0SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S S_S!S_S"S_S#S_S$S_0S%S_S&S_S'S_S(S_S)S_S*S_S+S_S,S_S-S_S.S_S/S_S0S_S1S_S2S_S3S_S4S_S5S_ESSSSSSSSS6.Er\R8"S75r\R8"S85r\R8"S95r\R8"S:\R@5r!\R8"S;5r"\R8"S<5r#\R8"S=5r$\R8"S>\R@5r%S:r&S>r'\R8"S?5r(\R8"S@5r)\R8"SA5r*\R8"SB5r+SƒSCjr,"SDSE5r-\(a"SFSG\-5r.\R_SG5 "SHSI\-5r0"SJSK5r1SLReSM5r3\4"\3SNS5VVs0sHupURk5USN-_M snnr6SOr7SPr8SQr9SRr:\;SS:XGaSSK.*))?s.*FLAGS \((?P[^\)]*)\)sÕ.*INTERNALDATE "(?P[ 0123][0-9])-(?P[A-Z][a-z][a-z])-(?P[0-9][0-9][0-9][0-9]) (?P[0-9][0-9]):(?P[0-9][0-9]):(?P[0-9][0-9]) (?P[-+])(?P[0-9][0-9])(?P[0-9][0-9])"s.*{(?P\d+)}$s \r\n|\r|\ns%\[(?P[A-Z-]+)( (?P.*))?\]s$\* (?P[A-Z-]+)( (?P.*))?s3\* (?P\d+) (?P[A-Z-]+)( (?P.*))?s[ ]s[(){ \x00-\x1f\x7f-\xff%*\\"]s[(){ \x00-\x1f\x7f-\xff\\"]s"(?:[^"\\]|\\.)*+"cóx•[RSU5nXRS5-URS5- $)Nóó(ó))Ú_quotedÚsubÚcount)ÚdataÚdepths Ú./opt/alt/python313/lib64/python3.13/imaplib.pyÚ _paren_depthrG�s2€ä �;‰;�s˜DÓ !€DØ —:‘:˜dÓ#Ñ # d§j¡j°Ó&6Ñ 6Ð6r>có\•\rSrSrSr"SS\5r"SS\5r"SS\5rS \ S 4S jr S r S r Sr SrSrSrSrS \ S 4SjrSrSrSrSrSrSrSrSrSrSrSrSrS rS!r S"r!S#r"S$r#S%r$S&r%S'r&S(r'S)r(S*r)S[S+jr*S,r+S-r,S.r-S/r.S[S0jr/S1r0S2r1S3r2S4r3S5r4S6r5S7r6S\S8jr7S9r8S:r9S;r:S<r;S]S=jrr=S?r>S@r?SAr@SBrASCrBSDrCSErDSFrESGrFSHrGSIrHSJrISKrJSLrKS^SMjrLSNrMSOrNSPrOSQrPSRrQSSrRSTrSSUrTSVrUSWrVSXrWSYrXSZr]g )_ré•aIMAP4 client class. Instantiate with: IMAP4([host[, port[, timeout=None]]]) host - host's name (default: localhost); port - port number (default: standard IMAP4 port). timeout - socket timeout (default: None) If timeout is not given or is None, the global default socket timeout is used All IMAP4rev1 commands are supported by methods of the same name (in lowercase). All arguments to commands are converted to strings, except for AUTHENTICATE, and the last argument to APPEND which is passed as an IMAP4 literal. If necessary (the string contains any non-printing characters or white-space and isn't enclosed with either parentheses or double quotes) each string is quoted. However, the 'password' argument to the LOGIN command is always quoted. If you want to avoid having an argument string quoted (eg: the 'flags' argument to STORE) then enclose the string in parentheses (eg: "(\Deleted)"). Each command returns a tuple: (type, [data, ...]) where 'type' is usually 'OK' or 'NO', and 'data' is either the text from the tagged response, or untagged results from command. Each 'data' is either a string, or a tuple. If a tuple, then the first part is the header of the response, and the second part contains the data (ie: 'literal' value). Errors raise the exception class .error(""). IMAP4 server errors raise .abort(""), which is a sub-class of 'error'. Mailbox status changes from READ-WRITE to READ-ONLY raise the exception class .readonly(""), which is a sub-class of 'abort'. "error" exceptions imply a program error. "abort" exceptions imply the connection should be reset, and the command re-tried. "readonly" exceptions imply the command should be re-tried. Note: to use this module, you must read the RFCs pertaining to the IMAP4 protocol, as the semantics of the arguments to each IMAP4 command are left to the invoker, not to mention the results. Also, most IMAP servers implement a sub-set of the commands available here. có•\rSrSrSrg)Ú IMAP4.error鯩N©Ú__name__Ú __module__Ú __qualname__Ú__firstlineno__Ú__static_attributes__rMr>rFÚerrorrKÆs†šDr>rTcó•\rSrSrSrg)Ú IMAP4.abortéÇrMNrNrMr>rFÚabortrVÇs†šr>rXcó•\rSrSrSrg)ÚIMAP4.readonlyéÈrMNrNrMr>rFÚreadonlyrZÈs†š4r>r\ÚNcóP•[UlSUlSUl0Ul0UlSUlSUlSUlSUl UR5 URXU5 UR5 g![a# UR5 e![a ef=ff=f)Nrr]Fr)ÚDebugÚdebugÚstateÚliteralÚtagged_commandsÚuntagged_responsesÚcontinuation_responseÚ is_readonlyÚtagnumÚ_tls_establishedÚ _mode_asciiÚopenÚ_connectÚ ExceptionÚshutdownÚOSError©ÚselfÚhostÚportÚtimeouts rFÚ__init__ÚIMAP4.__init__Ês©€ÜˆŒ ؈Œ ؈Œ Ø!ˆÔØ"$ˆÔØ%'ˆÔ"Ø ˆÔ؈Œ Ø %ˆÔØ ×ÑÔð � ‰ �$˜gÔ&ð Ø �M‰M�OøÜó ð Ø— ‘ ”ð øôó ØØ ð úð ús0Á'A8Á8 B%ÂBÂB% B!ÂB% B!Â!B%cóØ•SUlSUl[R"[[R 5Ul[R"[[R 5Ulg)NFÚascii) Ú utf8_enabledÚ _encodingÚreÚcompileÚ_LiteralÚASCIIÚLiteralÚ_Untagged_statusÚUntagged_status©rps rFriÚIMAP4._mode_asciiãs?€Ø!ˆÔØ ˆŒÜ—z’z¤(¬B¯H©HÓ5ˆŒ Ü!ŸzšzÔ*:¼B¿H¹HÓEˆÕr>cóœ•SUlSUl[R"[5Ul[R"[ 5Ulg)NTúutf-8)rxryrzr{r|r~rr€r�s rFÚ _mode_utf8ÚIMAP4._mode_utf8ês3€Ø ˆÔØ ˆŒÜ—z’z¤(Ó+ˆŒ Ü!ŸzšzÔ*:Ó;ˆÕr>có†•[[R"SS55Ul[R "SUR-S-[R 5UlUR5UlSUR ;aSUlOoSUR ;aSUlOWUR=(d UR$R&R)UR*S 5nUR-S U-5eUR/5 [2HnX R0;aMX l g UR-S 5e) Niiÿÿs(?Ps"\d+) (?P[A-Z]+) (?P.*)ÚPREAUTHrÚOKrÚreplacezinvalid greeting: zserver not IMAP4 compliant)r ÚrandomÚrandintÚtagprerzr{r}ÚtagreÚ _cmd_log_lenÚ _cmd_log_idxÚ_cmd_logr`Ú_mesgÚ __version__Ú _get_responseÚwelcomerdraÚmoÚstringÚdecoderyrTÚ_refresh_capabilitiesÚ capabilitiesÚAllowedVersionsÚPROTOCOL_VERSION)rpÚgreetingÚversions rFrkÚIMAP4._connectñs€ôœVŸ^š^¨D°%Ó8Ó9ˆŒ Ü—Z’Z  ØŸ+™+ñ!&à@ñ!AäBDÇ(Á(óLˆŒ ð ð×)Ñ)Ó+ˆŒ Ø ˜×/Ñ/Ó /؈D�JØ �T×,Ñ,Ó ,Ø"ˆD�J🠙 ×6¨¯©¯©×>Ñ>Ø—‘  ó+ˆHà—*‘*Ð1°HÑ<Ó=Ð =à ×"Ñ"Ô$Ø ÷'ˆGØ×/Ñ/Ó/ÙØ$+Ô !Ù ñ 'ð �j‰jÐ5Ó6Ð6r>cód•U[;a[XR55$[SU-5e)NzUnknown IMAP4 command: '%s')ÚCommandsÚgetattrÚlowerÚAttributeError)rpÚattrs rFÚ __getattr__ÚIMAP4.__getattr__s,€à ”8Ó Ü˜4§¡£Ó.Ð .ÜÐ:¸TÑAÓBÐBr>có•U$©NrMr�s rFÚ __enter__ÚIMAP4.__enter__%s€Øˆ r>cóh•URS:XagUR5 g![a gf=f)Nr)raÚlogoutrn)rpÚargss rFÚ__exit__ÚIMAP4.__exit__(s1€Ø �:‰:˜Ó !Ø ð Ø �K‰K�MøÜó Ù ð ús “$¤ 1°1có:•UbU(d [S5eUR(dSO URn[R"SXRUR5 X R4nUb[ R "X15$[ R "U5$)Nz0Non-blocking socket (timeout=0) is not supportedz imaplib.open)Ú ValueErrorrqÚsysÚauditrrÚsocketÚcreate_connection)rprsrqÚaddresss rFÚ_create_socketÚIMAP4._create_socket5su€ð Ñ ¦wÜÐOÓPÐ PØŸ9Ÿ9‰t¨$¯)©)ˆÜ � Š �. $¯ © °4·9±9Ô=ØŸ™Ð#ˆØ Ñ Ü×+Ò+¨GÓ=Ð =Ü×'Ò'¨Ó0Ð0r>cóˆ•XlX lURU5UlURR S5Ulg)z±Setup connection to remote server on "host:port" (default: localhost:standard IMAP4 port). This connection will be used by the routines: read, readline, send, shutdown. ÚrbN)rqrrr¸ÚsockÚmakefileÚfileros rFrjÚ IMAP4.openBs6€ð Œ ØŒ Ø×'Ñ'¨Ó0ˆŒ Ø—I‘I×&Ñ& tÓ,ˆ� r>có•[U[5nURRU5nX!:aT[ U5U:XaE[X!U- 5nX0RRU5- nX$- nX!:a[ U5U:XaMEU$©zRead 'size' bytes from remote.)ÚminÚ_SAFE_BUF_SIZEr¾ÚreadÚlen)rpÚsizeÚcursizerDÚdeltas rFrÄÚ IMAP4.readNst€ä�dœNÓ+ˆØ�y‰y�~‰~˜gÓ&ˆØ‹n¤ T£¨gÓ!5ܘ¨¡Ó0ˆEØ —I‘I—N‘N 5Ó)Ñ )ˆDØ Ñ ˆGð‹n¤ T£¨gÕ!5ðˆ r>có •URR[S-5n[U5[:”aUR S[-5eU$)úRead line from remote.ézgot more than %d bytes)r¾ÚreadlineÚ_MAXLINErÅrT©rpÚlines rFrÍÚIMAP4.readlineYs@€à�y‰y×!Ñ!¤(¨Q¡,Ó/ˆÜ ˆt‹9”xÓ Ø—*‘*Ð5¼Ñ@ÓAÐ A؈ r>cóh•[R"SX5 URRU5 g)úSend data to remote.z imaplib.sendN)r³r´r¼Úsendall©rprDs rFÚsendÚ IMAP4.sendas"€ä � Š �. $Ô-Ø � ‰ ×ј$Õr>cóŒ•URR5 URR[R 5 URR5 g![ a:nUR[R:wa[USS5S:waeSnANZSnAff=f!URR5 f=f)ú Close I/O established in "open".Úwinerrorri&'N) r¾Úcloser¼rmrµÚ SHUT_RDWRrnÚerrnoÚENOTCONNr¢)rpÚexcs rFrmÚIMAP4.shutdowngs‡€à � ‰ �‰Ôð Ø �I‰I× Ñ œv×/Ñ/Ô 0ð �I‰I�O‰OÕ øôó ð— ‘ œUŸ^™^Ó+ܘ3  ¨AÓ.°%Ó7Øÿøð  ûð �I‰I�O‰OÕ ús)œ)A Á B$Á*0BÂB'ÂB$Â$B'Â'Ccó•UR$)zVReturn socket instance used to connect to IMAP4 server. socket = .socket() )r¼r�s rFrµÚ IMAP4.socketws€ð �y‰yÐr>có”•SnURSS/U5up#US(aX#4$UR5up#URX#U5$)zéReturn most recent 'RECENT' responses if any exist, else prompt server for an update using the 'NOOP' command. (typ, [data]) = .recent() 'data' is None if no new messages, else list of RECENT responses, most recent last. ÚRECENTr‰Néÿÿÿÿ)Ú_untagged_responseÚnoop©rpÚnameÚtypÚdats rFÚrecentÚ IMAP4.recentƒsO€ðˆØ×*Ñ*¨4°$°¸Ó>‰ˆØ ˆr�7Ø�8ˆOØ—9‘9“;‰ˆØ×&Ñ& s°Ó6Ð6r>cóF•URUS/UR55$)z�Return data for response 'code' if received, or None. Old value for response 'code' is cleared. (code, [data]) = .response(code) N)ræÚupper)rpÚcodes rFÚresponseÚIMAP4.response”s!€ð×&Ñ& t¨d¨V°T·Z±Z³\ÓBÐBr>cóú•SnU(dSnU(aURU5nOSnU(a [U5nOSn[R[U5nX`lUR XPRU5X#5$)z˜Append message to named mailbox. (typ, [data]) = .append(mailbox, flags, date_time, message) All args except `message' can be None. rÚINBOXN)Ú _set_quoter ÚMapCRLFrBÚCRLFrbÚ_simple_commandÚ_astring)rpÚmailboxÚflagsÚ date_timeÚmessagerérbs rFÚappendÚ IMAP4.append¢sj€ðˆÞ؈GÞ Ø—O‘O EÓ*‰EàˆEÞ Ü)¨)Ó4‰IàˆIÜ—+‘+œd GÓ,ˆØŒ Ø×#Ñ# D¯-©-¸Ó*@À%ÓSÐSr>có$•UR5n[U5RUlUR SUR U55upEUS:wa$UR USRSS55eSUlUR5 XE4$)a#Authenticate command - requires response processing. 'mechanism' specifies which authentication mechanism is to be used - it must appear in .capabilities in the form AUTH=. 'authobject' must be a callable object: data = authobject(response) It will be called to process server continuation responses; the response argument it is passed will be a bytes. It should return bytes data that will be base64 encoded and sent to the server. It should return None if the client abort response '*' should be sent instead. rr‰rår„rŠr) rïÚ_AuthenticatorÚprocessrbrøÚ_atomrTr˜rar™)rpÚ mechanismÚ authobjectÚmechrêrës rFÚ authenticateÚIMAP4.authenticate¹s€€ð �‰Ó ˆô & jÓ1×9Ñ9ˆŒ Ø×'Ñ'¨¸¿ ¹ À4Ó8HÓI‰ˆØ �$‹;Ø—*‘*˜S ™WŸ^™^¨G°YÓ?Ó@Ð @؈Œ Ø ×"Ñ"Ô$؈xˆr>cóP•SnURU5up#URX#U5$)zL(typ, [data]) = .capability() Fetch capabilities list from server.r©rørærès rFÚ capabilityÚIMAP4.capability×s.€ðˆØ×'Ñ'¨Ó-‰ˆØ×&Ñ& s°Ó6Ð6r>có$•URS5$)zBCheckpoint mailbox on server. (typ, [data]) = .check() r)rør�s rFÚcheckÚ IMAP4.checkàs€ð ×#Ñ# GÓ,Ð,r>cóV•URS5upSUlX4$!SUlf=f)z¬Close currently selected mailbox. Deleted messages are removed from writable mailbox. This is the recommended command before 'LOGOUT'. (typ, [data]) = .close() rr©røra©rprêrës rFrÛÚ IMAP4.closeès2€ð Ø×+Ñ+¨GÓ4‰HˆCàˆDŒJ؈xˆøð ˆD�Júó‚Ÿ (cód•URSURU5URU55$)zrCopy 'message_set' messages onto end of 'new_mailbox'. (typ, [data]) = .copy(message_set, new_mailbox) r)røÚ _sequence_setrù)rpÚ message_setÚ new_mailboxs rFÚcopyÚ IMAP4.copy÷s4€ð ×#Ñ# F¨D×,>Ñ,>¸{Ó,KØ$(§M¡M°+Ó$>ó@ð @r>cóD•URSURU55$)z@Create new mailbox. (typ, [data]) = .create(mailbox) r©rørù©rprús rFÚcreateÚ IMAP4.createó €ð ×#Ñ# H¨d¯m©m¸GÓ.DÓEÐEr>cóD•URSURU55$)z@Delete old mailbox. (typ, [data]) = .delete(mailbox) rrrs rFÚdeleteÚ IMAP4.deleter r>cód•URSURU5URU55$)zpDelete the ACLs (remove any rights) set for who on mailbox. (typ, [data]) = .deleteacl(mailbox, who) rr)rprúÚwhos rFÚ deleteaclÚIMAP4.deleteacls0€ð ×#Ñ# K°·±¸wÓ1GØ$(§M¡M°#Ó$6ó8ð 8r>cóΕSUR;a[RS5eURSU5up#US:Xa$SUR 5;aUR 5 X#4$)z\Send an RFC5161 enable string to the server. (typ, [data]) = .enable(capability) rzServer does not support ENABLEr‰z UTF8=ACCEPT)ršrrTrørïr…)rpr rêrDs rFÚenableÚ IMAP4.enables_€ð ˜4×,Ñ,Ó ,Ü—+‘+Ð>Ó?Ð ?Ø×(Ñ(¨°:Ó>‰ ˆØ �$‹;˜=¨J×,<Ñ,<Ó,>Ó>Ø �O‰OÔ ØˆyÐr>cóP•SnURU5up#URX#U5$)z×Permanently remove deleted items from selected mailbox. Generates 'EXPUNGE' response for each deleted message. (typ, [data]) = .expunge() 'data' is list of 'EXPUNGE'd message numbers in order received. rr rès rFÚexpungeÚ IMAP4.expunge#s.€ðˆØ×'Ñ'¨Ó-‰ˆØ×&Ñ& s°Ó6Ð6r>cóŽ•SnURX0RU5URU55upEURXEU5$)zûFetch (parts of) messages. (typ, [data, ...]) = .fetch(message_set, message_parts) 'message_parts' should be a string of selected parts enclosed in parentheses, eg: "(UID BODY[TEXT])". 'data' are tuples of message part envelope and data. r )rørÚ _fetch_partsræ)rprÚ message_partsrérêrës rFÚfetchÚ IMAP4.fetch1sJ€ðˆØ×'Ñ'¨×.@Ñ.@ÀÓ.MØ(,×(9Ñ(9¸-Ó(HóJ‰ˆà×&Ñ& s°Ó6Ð6r>cól•URSURU55up#URX#S5$)zHGet the ACLs for a mailbox. (typ, [data]) = .getacl(mailbox) r!ÚACL©rørùræ©rprúrêrës rFÚgetaclÚ IMAP4.getaclAs4€ð ×'Ñ'¨°$·-±-ÀÓ2HÓI‰ˆØ×&Ñ& s°Ó7Ð7r>cón•URSURU5X#5upEURXES5$)zY(typ, [data]) = .getannotation(mailbox, entry, attribute) Retrieve ANNOTATIONs.r"Ú ANNOTATIONr5)rprúÚentryÚ attributerêrës rFÚ getannotationÚIMAP4.getannotationJs9€ð×'Ñ'¨¸¿¹ÀwÓ9OØ(-ó:‰ˆà×&Ñ& s°Ó>Ð>r>cól•URSURU55up#URX#S5$)z’Get the quota root's resource usage and limits. Part of the IMAP4 QUOTA extension defined in rfc2087. (typ, [data]) = .getquota(root) r#ÚQUOTAr5)rpÚrootrêrës rFÚgetquotaÚIMAP4.getquotaSs4€ð×'Ñ'¨ °D·M±MÀ$Ó4GÓH‰ˆØ×&Ñ& s°Ó9Ð9r>có¢•URSURU55up#URX#S5up$URX#S5up%X%U/4$)zŒGet the list of quota roots for the named mailbox. (typ, [[QUOTAROOT responses...], [QUOTA responses]]) = .getquotaroot(mailbox) r$r@Ú QUOTAROOTr5)rprúrêrëÚquotaÚ quotaroots rFÚ getquotarootÚIMAP4.getquotaroot^sW€ð ×'Ñ'¨¸¿ ¹ ÀgÓ8NÓO‰ˆØ×,Ñ,¨S°wÓ?‰ ˆØ×0Ñ0°¸;ÓG‰ˆØ Ð&Ð&Ð&r>cóŽ•SnURX0RU5URU55upEURXEU5$)z‘List mailbox names in directory matching pattern. (typ, [data]) = .list(directory='', pattern='*') 'data' is list of LIST responses. r&©rørùÚ _list_mailboxræ©rpÚ directoryÚpatternrérêrës rFÚlistÚ IMAP4.listióH€ðˆØ×'Ñ'¨¯m©m¸IÓ.FØ(,×(:Ñ(:¸7Ó(CóE‰ˆà×&Ñ& s°Ó6Ð6r>cóð•URSURU5URU55up4US:wa$URUSR SS55eSUlUR 5 X44$)z|Identify client using plaintext password. (typ, [data]) = .login(user, password) NB: 'password' will be quoted. r'r‰råzUTF-8rŠr)rørùÚ_quoterTr˜rar™)rpÚuserÚpasswordrêrës rFÚloginÚ IMAP4.loginvsn€ð×'Ñ'¨°·±¸tÓ1DØ(,¯ © °HÓ(=ó?‰ˆà �$‹;Ø—*‘*˜S ™WŸ^™^¨G°YÓ?Ó@Ð @؈Œ Ø ×"Ñ"Ô$؈xˆr>cóV•XsUlUlURSUR5$)zaForce use of CRAM-MD5 authentication. (typ, [data]) = .login_cram_md5(user, password) zCRAM-MD5)rUrVrÚ_CRAM_MD5_AUTH)rprUrVs rFÚlogin_cram_md5ÚIMAP4.login_cram_md5†s+€ð $(Ð ˆŒ �4”=Ø× Ñ  ¨T×-@Ñ-@ÓAÐAr>có:•SSKn[UR[5(aURR S5nO URnUR X1S5nURSUR53$![ a URS5ef=f)z0Authobject to use with CRAM-MD5 authentication. rNr„Úmd5z(CRAM-MD5 authentication is not supportedÚ ) ÚhmacÚ isinstancerVÚstrÚencodeÚHMACr²rTrUÚ hexdigest)rpÚ challenger`rVÚauthcodes rFrZÚIMAP4._CRAM_MD5_AUTH�s�€ãä �d—m‘m¤S× )Ñ )Ø—}‘}×+Ñ+¨GÓ4‰Hà—}‘}ˆHð IØ—y‘y °eÓ<ˆHð—)‘)�˜A˜h×0Ñ0Ó2Ð3Ð4Ð4øôó IØ—*‘*ÐGÓHÐ Hð Iús Á A>Á>Bcó\•SUlURS5upUR5 X4$)zdShutdown connection to server. (typ, [data]) = .logout() Returns server 'BYE' response. r)rarørmrs rFr­Ú IMAP4.logoutŸs-€ðˆŒ Ø×'Ñ'¨Ó1‰ˆØ � ‰ ŒØˆxˆr>cóŽ•SnURX0RU5URU55upEURXEU5$)z¶List 'subscribed' mailbox names in directory matching pattern. (typ, [data, ...]) = .lsub(directory='', pattern='*') 'data' are tuples of message part envelope and data. r(rKrMs rFÚlsubÚ IMAP4.lsub¬rRr>cól•URSURU55up#URX#S5$)zsShow my ACLs for a mailbox (i.e. the rights that I have on mailbox). (typ, [data]) = .myrights(mailbox) r%r5r6s rFÚmyrightsÚIMAP4.myrights¸s4€ð ×&Ñ& z°4·=±=ÀÓ3IÓJ‰ˆØ×&Ñ& s°Ó<ÐcóP•SnURU5up#URX#U5$)zQReturns IMAP namespaces ala rfc2342 (typ, [data, ...]) = .namespace() r*r rès rFÚ namespaceÚIMAP4.namespaceÀs.€ð ˆØ×'Ñ'¨Ó-‰ˆØ×&Ñ& s°Ó6Ð6r>có&•URS5$)z6Send NOOP command. (typ, [data]) = .noop() r+)r`Ú_dump_urrdrør�s rFrçÚ IMAP4.noopÊs€ð ð×#Ñ# FÓ+Ð+r>cóT•SnURXQX#U5upgURXgS5$)zªFetch truncated part of a message. (typ, [data, ...]) = .partial(message_num, message_part, start, length) 'data' is tuple of message part envelope and data. r,r r )rpÚ message_numÚ message_partÚstartÚlengthrérêrës rFÚpartialÚ IMAP4.partialÕs3€ðˆØ×'Ñ'¨¸<ÐPVÓW‰ˆØ×&Ñ& s°Ó9Ð9r>cóF•SnURX RU55$)z“Assume authentication as "user". Allows an authorised administrator to proxy into any user's mailbox. (typ, [data]) = .proxyauth(user) r-r)rprUrés rFÚ proxyauthÚIMAP4.proxyauthás#€ðˆØ×#Ñ# D¯-©-¸Ó*=Ó>Ð>r>cód•URSURU5URU55$)z[Rename old mailbox name to new. (typ, [data]) = .rename(oldmailbox, newmailbox) r.r)rpÚ oldmailboxÚ newmailboxs rFÚrenameÚ IMAP4.renameîs0€ð ×#Ñ# H¨d¯m©m¸JÓ.GØ$(§M¡M°*Ó$=ó?ð ?r>cóô•SnUbMUR(a[RS5eUR"USUR U5/UQ76upEOUR"U/UQ76upEUR XEU5$)zÉSearch mailbox for matching messages. (typ, [data]) = .search(charset, criterion, ...) 'data' is space separated list of matching message numbers. If UTF8 is enabled, charset MUST be None. r/z'Non-None charset not valid in UTF8 modeÚCHARSET)rxrrTrørùræ)rpÚcharsetÚcriteriarérêrës rFÚsearchÚ IMAP4.search÷s‚€ðˆØ Ñ Ø× × Ü—k‘kÐ"KÓLÐLØ×+Ò+¨DؘtŸ}™}¨WÓ5ðBØ8@òB‰HˆC�ð×+Ò+¨DÐ<°8Ò<‰HˆCØ×&Ñ& s°Ó6Ð6r>có<•0UlX lU(aSnOSnURX0RU55upEUS:wa SUlXE4$SUlSUR;aU(dURU<S35eX@RRSS /54$) aDSelect a mailbox. Flush all untagged responses. (typ, [data]) = .select(mailbox='INBOX', readonly=False) 'data' is count of messages in mailbox ('EXISTS' response). Mandated responses are ('FLAGS', 'EXISTS', 'RECENT', 'UIDVALIDITY'), so other responses should be obtained via .response('FLAGS') etc. rr0r‰rrú READ-ONLYz is not writableÚEXISTSN) rdrfrørùrar`rur\Úget)rprúr\rérêrës rFÚselectÚ IMAP4.select sœ€ð#%ˆÔØ#ÔÞ Ø‰DàˆDØ×'Ñ'¨¯m©m¸GÓ.DÓE‰ˆØ �$‹;؈DŒJØ�8ˆO؈Œ Ø ˜$×1Ñ1Ó 1Þ Øð—-‘-»Ð AÓBÐ BØ×+Ñ+×/Ñ/°¸4¸&ÓAÐAÐAr>có„•URSURU5URU5URU55$)zJSet a mailbox acl. (typ, [data]) = .setacl(mailbox, who, what) r1r)rprúr%Úwhats rFÚsetaclÚ IMAP4.setacl*s=€ð ×#Ñ# H¨d¯m©m¸GÓ.DØ$(§M¡M°#Ó$6¸¿ ¹ ÀdÓ8KóMð Mr>cóp•UR"SURU5/UQ76up4URX4S5$)zW(typ, [data]) = .setannotation(mailbox[, entry, attribute]+) Set ANNOTATIONs.r2r:r5)rprúr®rêrës rFÚ setannotationÚIMAP4.setannotation3s:€ð×'Ò'¨¸¿¹ÀwÓ9OÐWÐRVÒW‰ˆØ×&Ñ& s°Ó>Ð>r>cóŒ•URSURU5URU55up4URX4S5$)zYSet the quota root's resource limits. (typ, [data]) = .setquota(root, limits) r3r@©rørùrõræ)rprAÚlimitsrêrës rFÚsetquotaÚIMAP4.setquota;sC€ð ×'Ñ'¨ °D·M±MÀ$Ó4GØ(,¯©¸Ó(?óA‰ˆà×&Ñ& s°Ó9Ð9r>có •SnURU5nUbURU5nUR"XAU/UQ76upVURXVU5$)zqIMAP4rev1 extension SORT command. (typ, [data]) = .sort(sort_criteria, charset, search_criteria, ...) r4)rõrùrøræ)rpÚ sort_criteriarˆÚsearch_criteriarérêrës rFÚsortÚ IMAP4.sortEsY€ð ˆðŸ™¨ Ó6ˆ Ø Ñ Ø—m‘m GÓ,ˆGØ×'Ò'¨¸WÐWÀÒW‰ˆØ×&Ñ& s°Ó6Ð6r>có,•Sn[(dURS5eUR(aURS5eX R;aURS5eUc[ R "5nURU5up4US:XaaURURURS9Ul URRS5Ul SUlUR5 OURS 5eURX4U5$) Nr5zSSL support missingzTLS session already establishedzTLS not supported by serverr‰©Úserver_hostnamer»TzCouldn't establish TLS session)ÚHAVE_SSLrTrhrXršÚsslÚ_create_stdlib_contextrøÚ wrap_socketr¼rqr½r¾Ú_get_capabilitiesræ)rpÚ ssl_contextrérêrës rFÚstarttlsÚIMAP4.starttlsTsð€ØˆßŠxØ—*‘*Ð2Ó3Ð 3Ø × × Ø—*‘*Ð>Ó?Ð ?Ø ×(Ñ(Ó (Ø—*‘*Ð:Ó;Ð ;à Ñ Ü×4Ò4Ó6ˆKØ×'Ñ'¨Ó-‰ˆØ �$‹;Ø#×/Ñ/°· ± Ø@DÇ Á ð0ðKˆDŒIàŸ ™ ×*Ñ*¨4Ó0ˆDŒIØ$(ˆDÔ !Ø × "Ñ "Õ $à—*‘*Ð=Ó>Ð >Ø×&Ñ& s°Ó6Ð6r>cóŽ•SnURX0RU5URU55upEURXEU5$)z`Request named status conditions for mailbox. (typ, [data]) = .status(mailbox, names) r6rš)rprúÚnamesrérêrës rFÚstatusÚ IMAP4.statusksH€ð ˆð×'Ñ'¨¯m©m¸GÓ.DØ(,¯©¸Ó(>ó@‰ˆà×&Ñ& s°Ó6Ð6r>có�•URU5nURSURU5X#5upEURXES5$)zqAlters flag dispositions for messages in mailbox. (typ, [data]) = .store(message_set, command, flags) r7r )rõrørræ)rprÚcommandrûrêrës rFÚstoreÚ IMAP4.storexsI€ð —‘ Ó&ˆØ×'Ñ'¨°×1CÑ1CÀKÓ1PØ(/ó8‰ˆà×&Ñ& s°Ó9Ð9r>cóD•URSURU55$)zISubscribe to new mailbox. (typ, [data]) = .subscribe(mailbox) r8rrs rFÚ subscribeÚIMAP4.subscribeƒs €ð ×#Ñ# K°·±¸wÓ1GÓHÐHr>cóœ•SnUbURU5nUR"X@RU5U/UQ76upVURXVU5$)z{IMAPrev1 extension THREAD command. (type, [data]) = .thread(threading_algorithm, charset, search_criteria, ...) r9)rùrørræ)rpÚthreading_algorithmrˆr rérêrës rFÚthreadÚ IMAP4.thread‹s[€ð ˆØ Ñ Ø—m‘m GÓ,ˆGØ×'Ò'¨¯j©jÐ9LÓ.MØ(/ðCØ2AòC‰ˆà×&Ñ& s°Ó6Ð6r>c ór•UR5nU[;aURSU<35eUR[U;a=URSU<SUR<SSR [U5<35eSnUS:Xa'UupEUR U5UR U54nOÅUS:Xa'UupFUR U5URU54nO˜US :Xa)UupGnUR U5UURU54nOiUS :Xa/Utpšn U bUR U 5n URU 5U /U Q7nO4US :Xa.UtpÊn U bUR U 5n URU 5U /U Q7nUR"X0RU5/UQ76upÞUS ;aUnOSnURXÞU5$) zÅExecute "command arg ..." with messages identified by UID, rather than message number. (typ, [data]) = .uid(command, arg1, arg2, ...) Returns response appropriate to 'command'. zUnknown IMAP4 UID command: úcommand ú illegal in state ú, only allowed in states ú, r:rr r7r4r9)r/r4r9) rïr¡rTraÚjoinrrùr/rõrrøræ)rpr³r®rérrr0ÚoprûrŸrˆr rºrêrës rFÚuidÚ IMAP4.uid˜sØ€ð—-‘-“/ˆØœ(Ó"Ø—*’*ÂÐIÓJÐ JØ �:‰:œX gÑ.Ó .Ø—*’*ã% t§z¤zØ"Ÿi™i¬°Ñ(9Õ:ð<ó=ð =ðˆØ �fÓ Ø'+Ñ $ˆKØ×&Ñ& {Ó3Ø—M‘M +Ó.ð0‰Dà ˜Ó Ø)-Ñ &ˆKØ×&Ñ& {Ó3Ø×%Ñ% mÓ4ð6‰Dà ˜Ó Ø%)Ñ "ˆK˜UØ×&Ñ& {Ó3°RØ—O‘O EÓ*ð,‰Dà ˜Ó Ø7;Ð 4ˆM _ØÑ"ØŸ-™-¨Ó0�Ø—O‘O MÓ2°Gð&Ø$ñ&‰Dà ˜Ó Ø=AÐ :Ð ¨?ØÑ"ØŸ-™-¨Ó0�Ø—J‘JÐ2Ó3°Wð&Ø$ñ&ˆDà×'Ò'¨¯j©j¸Ó.AÐIÀDÒI‰ˆØ Ð2Ó 2؉DàˆDØ×&Ñ& s°Ó6Ð6r>cóD•URSURU55$)zOUnsubscribe from old mailbox. (typ, [data]) = .unsubscribe(mailbox) r;rrs rFÚ unsubscribeÚIMAP4.unsubscribeÉs €ð ×#Ñ# M°4·=±=ÀÓ3IÓJÐJr>cóV•URS5upSUlX4$!SUlf=f)aFree server's resources associated with the selected mailbox and returns the server to the authenticated state. This command performs the same actions as CLOSE, except that no messages are permanently removed from the currently selected mailbox. (typ, [data]) = .unselect() r<rr)rprêrDs rFÚunselectÚIMAP4.unselectÑs3€ð Ø×,Ñ,¨ZÓ8‰IˆCàˆDŒJ؈yÐøð ˆD�Júrcó„•UR5nU[;aUR4[U'UR"U/UQ76$)zìAllow simple extension commands notified by server in CAPABILITY response. Assumes command is legal in current state. (typ, [data]) = .xatom(name, arg, ...) Returns response appropriate to extension command `name'. )rïr¡rarø©rprér®s rFÚxatomÚ IMAP4.xatomás>€ð�z‰z‹|ˆð”xÓØ"Ÿj™j˜]ŒH�T‰NØ×#Ò# DÐ0¨4Ò0Ð0r>cód•UcSnURnX;aX1R U5 gU/X1'g©Nr>)rdr`r’rÅr�rþ)rprêrëÚurs rFÚ_append_untaggedÚIMAP4._append_untagged÷s8€Ø ‰;؈CØ × $Ñ $ˆØ ð ‹9Ø ‰G�N‰N˜3Õ à�eˆBŠGr>có¤•URRS5nU(a.URUSRURS55eg)NÚBYErårŠ)rdr�rXr˜ry)rpÚbyes rFÚ _check_byeÚIMAP4._check_byesB€Ø×%Ñ%×)Ñ)¨%Ó0ˆÞ Ø—*‘*˜S ™WŸ^™^¨D¯N©N¸IÓFÓGÐ Gð r>c ó¾•UR[U;aDSUlURSU<SUR<SSR [U5<35eSH!nX0R ;dMUR U M# SUR ;a"UR (dURS5eUR5n[XR5nUS-U-nUH_nUcM[U[5(a[X`R5n[RU5(a [S 5eUS-U-nMa URnUbŽSUl[!U5[!UR"5LaUnOcSnUR$(a+U[S ['U5-UR5-nUS -nO%U[S ['U5-UR5-nUR/U[0-5 UcU$UR75(a-UR8U(aU$UR75(aM-W(aU"UR:5nUR/U5 UR/[05 U(dU$M�![2an UR5S U -5eSn A ff=f![2an UR5S U -5eSn A ff=f)Nr¾r¿rÀrÁ©r‰ÚNOÚBADr�z#mailbox status changed to READ-ONLYó z&NUL, CR and LF not allowed in commandsz UTF8 (~{%s}r@z {%s}zsocket error: %s)rar¡rbrTrÂrdrfr\Ú_new_tagÚbytesryrarbÚ_control_charsrŠr²ÚtypeÚ_commandrxrÅr`r’Ú_logrÖr÷rnrXr”rcre) rprér®rêÚtagrDÚargrbÚ literatorÚvals rFrãÚIMAP4._command s‰€à �:‰:œX d™^Ó +؈DŒLØ—*’*ã" D§J¤JØ"Ÿi™i¬°©Õ7ð9ó:ð :ó 'ˆCØ×-Ñ-Õ-Ø×+Ñ+¨CÒ0ñ'ð ˜$×1Ñ1Ó 1Ø× × Ø—-‘-Ð EÓFÐ Fà�m‰m‹oˆÜ�TŸ>™>Ó*ˆØ�T‰z˜DÑ ˆÛˆC؉{™Hܘ#œs×#Ñ#ܘC§¡Ó0�Ü×$Ñ$ S×)Ñ)Ü Ð!IÓJÐJؘ$‘; Ñ$ŠDñ ð—,‘,ˆØ Ñ ØˆDŒLÜ�G‹}¤ T§]¡]Ó 3Ò3Ø#‘ à � Ø×$×$ؤ%¨¼¸W»Ñ(EÀtÇ~Á~Ó"VÑV�DØ%¨™n‘Gà¤%¨´#°g³,Ñ(>ÀÇÁÓ"OÑO�Dà ð  7Ø �I‰I�dœT‘kÔ "ð ‰?؈Jàð×$Ñ$×&Ñ&Ø×'Ñ'¨×,Ø�Jð×$Ñ$×&Ó&ö Ù# D×$>Ñ$>Ó?�àð ;Ø— ‘ ˜'Ô"Ø— ‘ œ$”öØàˆ ñ3øô ó 7Ø—*‘*Ð/°#Ñ5Ó6Ð 6ûð 7ûô2ó ;Ø—j‘jÐ!3°cÑ!9Ó:Ð:ûð ;ús0Ç&JÉ!&J9Ê J6ÊJ1Ê1J6Ê9 KËKËKcó�•US:HnU(dUR5 URX#S9upEU(dUR5 US:XaURU<SU<SU<35eXE4$!URanURSU<SU<35eSnAfURanURSU<SU<35eSnAff=f)Nr)Ú expect_byez command: ú => rÝz command error: r_)rØÚ_get_tagged_responserXrT)rprérår­rêrDrès rFÚ_command_completeÚIMAP4._command_complete^s¶€Ø˜(Ñ"ˆæØ �O‰OÔ ð @Ø×1Ñ1°#Ð1ÐI‰IˆCö Ø �O‰OÔ Ø �%‹<Ø—*‘*»$ÃÂTÐJÓKÐ K؈yÐøð�z‰zó @Ø—*’*³Dº#Ð>Ó?Ð ?ûØ�z‰zó @Ø—*’*³Dº#Ð>Ó?Ð ?ûð @ús#žA+Á+CÁ;BÂCÂ'CÃCcóæ•UR5upUS/:XaURS5e[USUR5nUR 5n[ UR 55Ulg)Nz"no CAPABILITY response from serverrå)r rTrbryrïÚtupleÚsplitršrs rFrªÚIMAP4._get_capabilitiesps[€Ø—?‘?Ó$‰ˆØ �4�&‹=Ø—*‘*ÐAÓBÐ BÜ�#�b‘'˜4Ÿ>™>Ó*ˆØ�i‰i‹kˆÜ! #§)¡)£+Ó.ˆÕr>có•SUR;a^URRS5Sn[[XR5R 5R 55UlgUR5 g)Nrrå) rdÚpoprñrbryrïròršrª)rprës rFr™ÚIMAP4._refresh_capabilitiesys_€à ˜4×2Ñ2Ó 2Ø×)Ñ)×-Ñ-¨lÓ;¸BÑ?ˆCÜ %¤c¨#¯~©~Ó&>×&DÑ&DÓ&F×&LÑ&LÓ&NÓ OˆDÕ à × "Ñ "Õ $r>cóÈ•UR5nUS:XaUR5nUS:XaMURURU5(aœURR S5nX R ;aUR SU-5eURR S5n[X0R5nURR S5nX4/4UR U'GOúSnUR[U5(d<URURU5(aURR S5nURcPUR[U5(a!URR S5Ul gUR SU-5eURR S5n[X0R5nURR S5nUcSnU(aUS-U-nS nURURU5(a±[URR S 55nUR#U5nUR%X4U45 ['XF5nUR5nUS:Xa$US :”aUR5nUS:XaUS :”aMURURU5(aM±UR%X45 US ;auUR[(U5(aZURR S5n[X0R5nUR%X0RR S55 U$) Nr>råzunexpected tagged response: %rrârDÚdata2zunexpected response: %rrÞrrÆrÛ)Ú _get_lineÚ_matchrŽr–ÚgrouprcrXrbryÚUntagged_responser€Ú Continuationrer~Úintr`r’rÄrÓrGÚ Response_code) rpÚresprårêrëÚdat2rErÆrDs rFr”ÚIMAP4._get_response‚s¸€ð�~‰~Óˆð�c‹kØ—>‘>Ó#ˆDð�c�kð �;‰;�t—z‘z 4× (Ñ (Ø—'‘'—-‘- Ó&ˆCØ×.Ñ.Ó.Ø—j‘jÐ!AÀDÑ!HÓIÐIà—'‘'—-‘- Ó'ˆCÜ�cŸ>™>Ó*ˆCØ—'‘'—-‘- Ó'ˆCØ),¨e¨ ˆD× Ñ  Ó %àˆDð—;‘;Ô0°$×7Ñ7Ø—;‘;˜t×3Ñ3°T×:Ñ:ØŸ7™7Ÿ=™=¨Ó1�Dà�w‰w‰ð—;‘;œ|¨T×2Ñ2Ø15·±·±¸vÓ1F�DÔ.Øà—j‘jÐ!:¸TÑ!AÓBÐBà—'‘'—-‘- Ó'ˆCÜ�cŸ>™>Ó*ˆCØ—'‘'—-‘- Ó'ˆC؉{ #˜CÞ˜3 ™:¨Ñ,�SðˆEØ—+‘+˜dŸl™l¨C×0Ñ0ô˜4Ÿ7™7Ÿ=™=¨Ó0Ó1�Øð—y‘y “�ð×%Ñ% c°¨;Ô7Ü$ SÓ0�ð—n‘nÓ&�ð˜S“j U¨Q£YØŸ.™.Ó*�Cð˜S“j U¨Q¥Yð+—+‘+˜dŸl™l¨C×0Ó0ð0 × !Ñ ! #Ô +ð Ð%Ó %¨$¯+©+´mÀS×*IÑ*IØ—'‘'—-‘- Ó'ˆCÜ�cŸ>™>Ó*ˆCØ × !Ñ ! #§w¡w§}¡}°VÓ'<Ô =à ðˆ r>có•URUnUbURU U$U(a$SnURRUS5nUbXE4$UR5 UR 5 Mo!UR aneSnAff=f)NrÖ)rcrdrõrØr”rXr`Ú print_log)rprårëÚresultrêr×rès rFríÚIMAP4._get_tagged_responseÞs›€àØ×)Ñ)¨#Ñ.ˆFØÑ!Ø×(Ñ(¨Ð-Ø� æØ�Ø×-Ñ-×1Ñ1°#°tÓ<�Ø‘?à˜:Ð%ð �O‰OÔ ð Ø×"Ñ"Ô$ñ/øð0—:‘:ó Øðûð  úsÁA1Á1BÂBÂBcó¶•UR5nU(dURS5eURS5(dURSU-5eUSSnU$)Nzsocket error: EOFr z#socket error: unterminated line: %réþÿÿÿ)rÍrXÚendswithr`r’rärÏs rFrùÚIMAP4._get_lineÿs[€à�}‰}‹ˆÞØ—*‘*Ð0Ó1Ð 1ð�}‰}˜W×%Ñ%Ø—*‘*ÐBÀTÑIÓJÐ Jà�C�RˆyˆØ ð ˆ r>cóL•URU5UlURSL$r©)Úmatchr–r`r’rOÚgroups)rpÚcreÚss rFrúÚ IMAP4._matchs'€ð —)‘)˜A“,ˆŒØ ð�w‰w˜dÐ"Ð"r>có¸•UR[[UR5UR5-nURS-UlSUR U'U$)NrÌ)r�ràrbrgryrc)rprås rFrßÚIMAP4._new_tagsH€à�k‰kœE¤# d§k¡kÓ"2°D·N±NÓCÑCˆØ—k‘k A‘oˆŒ Ø$(ˆ×јSÑ!؈ r>có•U$r©rM©rpræs rFrÚ IMAP4._atom&ó€Øˆ r>có•U$r©rMrs rFrÚIMAP4._sequence_set)rr>cóH•U(aUSS:Xa USS:XaU$SU-S-$)NrÚ(råÚ)rMrs rFrõÚIMAP4._set_quote,s,€Þ �3�q‘6˜S“= S¨¡W°£^؈JØ�S‰y˜3‰Ðr>cóP•UR5S;aU$URU5$)N)ÚALLÚFULLÚFAST)rïrõrs rFr/ÚIMAP4._fetch_parts1s'€ð �9‰9‹;Ð1Ó 1؈JØ�‰˜sÓ#Ð#r>có®•[U[5(a[XR5nUR SS5nUR SS5nSU-S-$)Nó\s\\ó"s\")rarbràryrŠrs rFrTÚ IMAP4._quote8sL€Ü �cœ3× Ñ Ü˜Ÿ^™^Ó,ˆCØ�k‰k˜% Ó(ˆØ�k‰k˜$ Ó'ˆØ�c‰z˜DÑ Ð r>cóî•[U[5(a[XR5n[R U5(aU$U(a[ RU5cU$URU5$r©) rarbràryrAÚ fullmatchÚ_non_astring_charrŠrTrs rFrùÚIMAP4._astringDs[€Ü �cœ3× Ñ Ü˜Ÿ^™^Ó,ˆCÜ × Ñ ˜S× !Ñ !؈JÞ Ô$×+Ñ+¨CÓ0Ñ8؈JØ�{‰{˜3ÓÐr>cóî•[U[5(a[XR5n[R U5(aU$U(a[ RU5cU$URU5$r©) rarbràryrAr'Ú_non_list_charrŠrTrs rFrLÚIMAP4._list_mailboxMsZ€Ü �cœ3× Ñ Ü˜Ÿ^™^Ó,ˆCÜ × Ñ ˜S× !Ñ !؈JÞ ”>×(Ñ(¨Ó-Ñ5؈JØ�{‰{˜3ÓÐr>cóF•URXR"U/UQ765$r©)rîrãrÍs rFrøÚIMAP4._simple_commandVs!€à×%Ñ% d¯MªM¸$Ð,FÀÒ,FÓGÐGr>cóz•US:XaX4$X0R;aUS/4$URRU5nX4$)NrÜ)rdrõr`r’)rprêrërérDs rFræÚIMAP4._untagged_response[sK€Ø �$‹;Ø�8ˆOØ×.Ñ.Ó.ؘ˜�;Ð Ø×&Ñ&×*Ñ*¨4Ó0ˆØ ðˆyÐr>)r~rœr€r‘r�r�ryrhršrer`r¾rqrfrbr–rVrrr¼rarcrgr�rŽrdrUrxr•)r]Ú*)rôFr©)F)^rOrPrQrRÚ__doc__rlrTrXr\Ú IMAP4_PORTrtrir…rkr¦rªr¯r¸rjrÄrÍrÖrmrµrìrñrþrr rrÛrrr"r&r)r,r1r7r=rBrHrPrWr[rZr­rlrorrrçr|rr„rŠr�r”r—rœr¡r¬r°r´r·r»rÄrÇrÊrÎrÓrØrãrîrªr™r”rírùrúrßrrrõr/rTrùrLrørær’rurärrSrMr>rFrr•s؆ñ-ô^!� Ô Ü�ÔÜ�5Ôà Z¸ôò2Fò<ò+7ò\Cò òò 1ð °Tô -òòò ò ò ò7ò"CòTò.ò<7ò-ò ò@òFòFò8ò ò 7ò 7ò 8ò?ò:ò'ô 7ò ò Bò 5ò ô 7ò=ò7ò,ò :ò ?ò?ò7ô&Bò@Mò?ò:ò 7ô7ò. 7ò:òIò 7ò.7òbKò ò 1ò, òHò Pòfò$/ò%òYôxòBò& #òòòòò $ò!ò ò òHò òr>rcóF•\rSrSrSrS\4SSS.SjjrSrS\S4SjrS r g) Ú IMAP4_SSLiŽa?IMAP4 client class over SSL connection Instantiate with: IMAP4_SSL([host[, port[, ssl_context[, timeout=None]]]]) host - host's name (default: localhost); port - port number (default: standard IMAP4 SSL port); ssl_context - a SSLContext object that contains your certificate chain and private key (default: None) timeout - socket timeout (default: None) If timeout is not given or is None, the global default socket timeout is used for more documentation see the docstring of the parent class IMAP4. r]N)r«rscól•Uc[R"5nX0l[R XX$5 gr©)r§r¨r«rrt)rprqrrr«rss rFrtÚIMAP4_SSL.__init__Ÿs*€àÑ"Ü!×8Ò8Ó:� Ø*Ô Ü �N‰N˜4 tÕ 5r>cót•[RX5nURRUURS9$)Nr¤)rr¸r«r©rq)rprsr¼s rFr¸ÚIMAP4_SSL._create_socket¦s;€Ü×'Ñ'¨Ó6ˆDØ×#Ñ#×/Ñ/°Ø@DÇ Á ð0ðKð Kr>có0•[RXX#5 g)z¶Setup connection to remote server on "host:port". (default: localhost:standard IMAP4 SSL port). This connection will be used by the routines: read, readline, send, shutdown. N)rrjros rFrjÚIMAP4_SSL.open«s€ô �J‰J�t 4Õ 1r>)r«) rOrPrQrRr2ÚIMAP4_SSL_PORTrtr¸rjrSrMr>rFr5r5Žs1†ñ ð!#¨ð 6Ø$(°$ö 6ò Kð  ^¸T÷ 2r>r5có@•\rSrSrSrSrS SjrSrSrSr S r S r g) ri¶zÖIMAP4 client class over a stream Instantiate with: IMAP4_stream(command) "command" - a string that can be passed to subprocess.Popen() for more documentation see the docstring of the parent class IMAP4. có:•Xl[RU5 gr©)r³rrt)rpr³s rFrtÚIMAP4_stream.__init__Âs€ØŒ Ü �‰�tÕr>Nc ó8•SUlSUlSUlSUl[R "UR [[R[RSSS9Ul URRUl URRUl g)zmSetup a stream connection. This connection will be used by the routines: read, readline, send, shutdown. NT)ÚbufsizeÚstdinÚstdoutÚshellÚ close_fds)rqrrr¼r¾Ú subprocessÚPopenr³rÚPIPErrBÚ writefilerCÚreadfileros rFrjÚIMAP4_stream.openÇsq€ð ˆŒ ؈Œ ؈Œ ؈Œ Ü!×'Ò'¨¯ © Ü'Ü—/‘/¬*¯/©/Ø $ñ(ˆŒ ðŸ™×+Ñ+ˆŒØŸ ™ ×+Ñ+ˆ� r>có8•URRU5$rÁ)rJrÄ)rprÆs rFrÄÚIMAP4_stream.read×s€à�}‰}×!Ñ! $Ó'Ð'r>có6•URR5$)rË)rJrÍr�s rFrÍÚIMAP4_stream.readlineÜs€à�}‰}×%Ñ%Ó'Ð'r>cón•URRU5 URR5 g)rÓN)rIÚwriteÚflushrÕs rFrÖÚIMAP4_stream.sendás$€à �‰×јTÔ"Ø �‰×ÑÕr>có •URR5 URR5 URR 5 g)rÙN)rJrÛrIrÚwaitr�s rFrmÚIMAP4_stream.shutdownçs2€à � ‰ ×ÑÔØ �‰×ÑÔØ � ‰ ×ÑÕr>)r³r¾rqrrrrJr¼rI)NNN) rOrPrQrRr2rtrjrÄrÍrÖrmrSrMr>rFrr¶s%†ñòô ,ò (ò (ò õ r>rcó0•\rSrSrSrSrSrSrSrSr g) riïzSPrivate class to provide en/decoding for base64-based authentication conversation. có•Xlgr©©r)rpÚmechinsts rFrtÚ_Authenticator.__init__õs€Ø� r>cól•URURU55nUcgURU5$)Nó*)rr˜rc)rprDÚrets rFrÚ_Authenticator.processøs0€Ø�i‰i˜Ÿ ™  DÓ)Ó*ˆØ ‰;ØØ�{‰{˜3ÓÐr>cóú•Sn[U[5(aURS5nU(aK[U5S:”a USSnUSSnOUnSn[R "U5nU(aX$SS-nU(aMKU$)Nr>r„é0rå)rarbrcrÅÚbinasciiÚ b2a_base64)rpÚinpÚoupÚtÚes rFrcÚ_Authenticator.encodeþs€€ðˆÜ �cœ3× Ñ Ø—*‘*˜WÓ%ˆCÞÜ�3‹x˜"‹}ؘ˜�H�ؘ"˜#�h‘à�Ø�Ü×#Ò# AÓ&ˆAÞØ˜c˜r˜F‘l�÷ˆcðˆ r>có>•U(dg[R"U5$rÑ)rbÚ a2b_base64)rprds rFr˜Ú_Authenticator.decodes€ÞØÜ×"Ò" 3Ó'Ð'r>rYN) rOrPrQrRr2rtrrcr˜rSrMr>rFrrïs†ñòò ò õ0(r>rz0 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Decr_rÌc ó�•[RU5nU(dg[URS5nURS5n[ URS55n[ URS55n[ URS55n[ URS55n[ URS55n[ URS 55n [ URS 55n U S -U -S -n US :XaU *n XRXFXxS S S 4 n [ R "U 5U - n [R"U 5$)zœParse an IMAP4 INTERNALDATE string. Return corresponding local time. The return value is a time.struct_time tuple or None if the string has wrong format. NÚmonÚzonenÚdayÚyearÚhourrÂÚsecÚzonehÚzonemé<ó-rå) Ú InternalDater ÚMon2numrûrþÚcalendarÚtimegmÚtimeÚ localtime)rr–rmrnrorprqrÂrrrsrtÚzoneÚttÚutcs rFr r s€ô × Ñ ˜DÓ !€BÞ Øä �"—(‘(˜5“/Ñ "€CØ �H‰H�WÓ €Eä ˆb�h‰h�u‹oÓ €CÜ ˆr�x‰x˜ÓÓ €DÜ ˆr�x‰x˜ÓÓ €DÜ ˆb�h‰h�u‹oÓ €CÜ ˆb�h‰h�u‹oÓ €CÜ �—‘˜Ó!Ó "€EÜ �—‘˜Ó!Ó "€Eð �"‰H�uÑ ˜bÑ €DØ �ƒ}؈uˆà �S ¨"¨b°"Ð 5€BÜ �/Š/˜"Ó  Ñ $€Cä �>Š>˜#Ó Ðr>có†•SnSn[[U55nU(a![US5upX#US-U-nU(aM!U$)z-Convert integer to A-P string representation.r>sABCDEFGHIJKLMNOPérÌ)rþÚabsÚdivmod)ÚnumrèÚAPÚmods rFr r AsK€ð €CÐ'ˆrÜ Œc�#‹h‹-€CÞ Ü˜#˜r“?‰ˆØ�S˜‘Uˆm˜cÑ!ˆ÷ ˆ#ð €Jr>cóŒ•[RU5nU(dg[URS5R 55$)z-Convert IMAP4 flags response to python tuple.rMrû)ÚFlagsr rñrûrò)rr–s rFr r Ns5€ô �‰�TÓ €BÞ Øä �—‘˜'Ó"×(Ñ(Ó*Ó +Ð+r>cóZ•[U[[45(a5[R"U[ R 5R5nGO)[U[5(a´[USS5nUcƒ[R(a]USnUS:Xa-[R"[R"U55Sn[R [R4U*nO[R *n[US9n[USSS[ U506nO`[U[5(aUR c [#S5eUnO0[U[$5(aUS US4S :XaU$[#S 5eS R'[(UR*5nUR-U5$) aÈConvert date_time to IMAP4 INTERNALDATE representation. Return string in form: '"DD-Mmm-YYYY HH:MM:SS +HHMM"'. The date_time argument can be a number (int or float) representing seconds since epoch (as returned by time.time()), a 9-tuple representing local time, an instance of time.struct_time (as returned by time.localtime()), an aware datetime instance or a double-quoted string. In the last case, it is assumed to already be in the correct format. Ú tm_gmtoffNérå)ÚsecondséÚtzinfozdate_time must be awarer)Ú"r�zdate_time not of a known typez"%d-{}-%Y %H:%M:%S %z")rarþÚfloatrÚ fromtimestamprrÚ astimezonerñr¢r{Údaylightr|ÚmktimeÚaltzonerrŽr²rbÚformatÚMonthsÚmonthÚstrftime)rüÚdtÚgmtoffÚdstrÈÚfmts rFr r YsX€ô�)œc¤5˜\×*Ñ*Ü × #Ò # IÜ$,§L¡Ló2ß2<±*³,ò ä �Iœu× %Ñ %ܘ K°Ó6ˆØ ‰>Ü�}�}Ø ‘l�ؘ"“9ÜŸ.š.¬¯ª°YÓ)?Ó@ÀÑC�CÜŸ=™=¬$¯,©,Ð7¸Ñ<Ð<‘äŸ-™-˜�Ü &Ñ)ˆÜ �y  !�}Ð =¬X°e«_Ñ =‰Ü �Iœx× (Ñ (Ø × Ñ Ñ #ÜÐ6Ó7Ð 7Ø ‰Ü �Iœs× #Ñ #¨°1©°iÀ±mÐ(DÈ Ó(QØÐäÐ8Ó9Ð9Ø "× )Ñ )¬&°·±Ñ*:Ó ;€CØ �;‰;�sÓ Ðr>Ú__main__zd:s:)rMrMz-dz-s)r]zIMAP password for z on Ú localhostz: zJFrom: %(user)s@localhost%(lf)sSubject: IMAP4 test%(lf)s%(lf)sdata...%(lf)sÚ )rUÚlfrW)r)ú /tmp/xxx 1)r„)r¢z/tmp/yyy)r©ú /tmp/yyz 2rþr¤)rP)z/tmpzyy*)r�r£)rŠ)NÚSUBJECTÚtest)r1)Ú1z(FLAGS INTERNALDATE RFC822))r´)r§ÚFLAGSz (\Deleted))rrrM)r,rM)rìrM)rÛrM)r�rM)rñ)Ú UIDVALIDITY)rÄ)r/r)rñ)rŽ)r­rMcó¾•[RU<SU<35 [[U5"U6up#[RU<SU<SU<35 US:XaUSeU$)Nr_rìrÜr)ÚMr’r¢)Úcmdr®rêrës rFÚrunr­¹sL€Ü �‰›3¢Ð%Ô&Üœ1˜c”? DÐ)‰ˆÜ �‰££cª3Ð/Ô0Ø �$‹;˜c !™f˜ ؈ r>rzPROTOCOL_VERSION = %szCAPABILITIES = rP)z/tmp/zyy%z .*"([^"]+)"$rår"rÄz%sz:(FLAGS INTERNALDATE RFC822.SIZE RFC822.HEADER RFC822.TEXT)z All tests OK.z Tests failed.z8 If you would like to see debugging output, try: %s -d5 )r)\r2r“rbrÝr‹rzrµrFr³r{ryrrrÚiorr§r¦Ú ImportErrorÚ__all__r÷r_r3r<r›rÎrÃr¡r{rýrˆrwr}r~rörÿrür€r|rrár(r+rArGrr5rþrrròr—Ú enumeratercrxr r r r rOÚgetoptÚgetpassÚargvÚoptlistr®rTrèÚstream_commandÚoptrþrqÚgetuserÚUSERÚPASSWDÚ test_mesgÚ test_seq1Ú test_seq2r­r«rar’rœršr¬Úmlr r–rûÚpathrërÄÚprint)Únrs00rFÚrÂs˜ðñ ð,€ çK×K×K×KÓKß2Ñ2Ý"ðÛØ€Hò 8€ð €Ø €Ø € Ø€Ø(€ð €ð€ð, àÐ,ð, ð ˜ ð, ð ÐAð , ð ˜ ð , ð ˜ ð , ð ˜ ð, ð Ð,ð, ð Ð,ð, ð Ð,ð, ð ˜ ð, ð Ð,ð, ð ˜ ð, ð ˜ ð, ð Ð,ð, ð Ð,ð!, ð" Ð,ð#, ð$ Ð,ñ%, ð& Ð,ð', ð( Ð,ð), ð* ˜ ð+, ð, ÐAð-, ð. Ð,ð/, ð0 ˜ ð1, ð2 Ð,ð3, ð4 ÐAð5, ð6 ˜ ð7, ð8 ˜ ð9, ð: Ð,ð;, ð< ˜ ð=, ð> Ð,ð?, ð@ Ð,ðA, ðB Ð,ðC, ðD Ð,ðE, ðF ˜ ñG, ðH%Ø,Ø%Ø,Ø%Ø%Ø,Ø%òW, €ð`�zŠzÐ0Ó1€ Ø � Š Ð4Ó5€Ø�zŠzðó€ ð �*Š*Ð+¨R¯X©XÓ 6€Ø �*Š*�^Ó $€ð— ’ ÐDÓE€ Ø—J’JÐGÓHÐà—*’*Ø;¸R¿X¹XóG€ð "€ØJÐð—’˜MÓ*€Ø—J’JÐ@ÓAÐØ—’Ð;Ó<€Ø �*Š*Ð+Ó ,€ô7÷ tñtön' ô#2�Eô#2ðJ ‡N�N�;Ôô5�5ô5÷r*(ñ*(ðX <× AÑ AÀ#Ó F€Ù&/°°q°r° Ô&;Ô <Ò&;™d˜aˆ1�8‰8‹:�a˜‘cŠ>Ñ&;Ò <€òòF ò,ò$ðP ˆzÔ÷ ðØŸ š  c§h¡h¨q¨r l°FÓ;‰ ˆ�ð€NÛ‰ˆˆCØ �$‹;Ù˜“HŠEØ �D�[Ø ˆNß�4 Ð 1šñ ö ˜�à �‰7€Dà �?Š?Ó €DØ �_‹_»tÀT×EXÈ[ÒEXÐYÓ Z€Fà\ÐgkÐrvÑ_wÑw€Ià ˆt�VˆnÐØØ*ØØ � ˜d D¨)Ð4Ð5ØØØ)Ø3Ø,ØØØØð€Ið$Ø!ØØØ ��d˜D )Ð,Ð-ØØð€Iòð)Þ Ù˜^Ó,‰Aá�d“ ˆAØ �7‰7�fÓ Ø! ! "˜ ˆIØ �‰Ð'¨!×*<Ñ*<Ñ<Ô=Ø �Š q§~£~Ð7Ô8ã!‰HˆC�Ù ��TŽNñ"ñ�fÐ.Ö/ˆBØ—’˜/¨2Ó.ˆBÞ˜"Ÿ(™( 1›+‘4ØŸ™› B™�$Ù �˜4˜'Ö "ñ 0ó "‰HˆC�Ù�c˜4“.ˆCà�DˆzÐ7Ó7Ùà�b‘'—-‘-“/ˆCÞ™Ù �˜ ¨¨B©¡ØPðRö Sñ"ñ ÐÕ ð{øðC3ó؃Hðüóx/ =øð^ �<‰<óØ‰ ˆ–ûðûðj Ù ÐÔ æÙ ðð ‡h�hˆq�kñô ð ús<ºQÈ Q,É#Q2Ì.D-RÑQ)Ñ(Q)Ñ2RÒR Ò RÒ*R?