<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
ž
¦ÿfåV  c               @   sñ   d  Z  d d g Z d d l Z d d l m Z d d l m Z d d l m Z e j d ƒ Z	 e j d	 ƒ Z
 e j d
 ƒ Z e j d	 ƒ Z e j d ƒ Z d Z d Z e ƒ  Z Gd d „  d e ƒ Z Gd d „  d ƒ Z Gd d „  d e ƒ Z d S(   u  FeedParser - An email feed parser.

The feed parser implements an interface for incrementally parsing an email
message, line by line.  This has advantages for certain applications, such as
those reading email messages off a socket.

FeedParser.feed() is the primary interface for pushing new data into the
parser.  It returns when there's nothing more it can do with the available
data.  When you have no more data to push into the parser, call .close().
This completes the parsing and returns the root message object.

The other advantage of this parser is that it will never raise a parsing
exception.  Instead, when it finds something unexpected, it adds a 'defect' to
the current message.  Defects are just instances that live on the message
object's .defects attribute.
u
   FeedParseru   BytesFeedParseri    N(   u   errors(   u   message(   u   compat32u   
||
u   (
||
)u
   (
||
)\Zu(   ^(From |[\041-\071\073-\176]{1,}:|[\t ])u    u   
c             B   s’   |  Ee  Z d  Z d Z d d „  Z d d „  Z d d „  Z d d	 „  Z d
 d „  Z d d „  Z	 d d „  Z
 d d „  Z d d „  Z d d „  Z d S(   u   BufferedSubFileuk  A file-ish object that can have new data loaded into it.

    You can also push and pop line-matching predicates onto a stack.  When the
    current predicate matches the current line, a false EOF response
    (i.e. empty string) is returned instead.  This lets the parser adhere to a
    simple abstraction -- it parses until EOF closes the current message.
    c             C   s(   d |  _  g  |  _ g  |  _ d |  _ d  S(   Nu    F(   u   _partialu   _linesu	   _eofstacku   Falseu   _closed(   u   self(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   __init__4   s    			u   BufferedSubFile.__init__c             C   s   |  j  j | ƒ d  S(   N(   u	   _eofstacku   append(   u   selfu   pred(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   push_eof_matcher>   s    u    BufferedSubFile.push_eof_matcherc             C   s   |  j  j ƒ  S(   N(   u	   _eofstacku   pop(   u   self(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   pop_eof_matcherA   s    u   BufferedSubFile.pop_eof_matcherc             C   s)   |  j  j |  j ƒ d |  _ d |  _ d  S(   Nu    T(   u   _linesu   appendu   _partialu   Trueu   _closed(   u   self(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   closeD   s    	u   BufferedSubFile.closec             C   sn   |  j  s |  j r d St S|  j  j ƒ  } x> |  j d  d  d … D]& } | | ƒ r@ |  j  j | ƒ d Sq@ W| S(   Nu    i   iÿÿÿÿ(   u   _linesu   _closedu   NeedMoreDatau   popu	   _eofstacku   append(   u   selfu   lineu   ateof(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   readlineJ   s    		u   BufferedSubFile.readlinec             C   s   |  j  j | ƒ d  S(   N(   u   _linesu   append(   u   selfu   line(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu
   unreadline\   s    u   BufferedSubFile.unreadlinec             C   sÔ   |  j  | d } |  _  t j | ƒ } | j ƒ  |  _  |  j  rw | rw | d j d ƒ rw | j d ƒ | j ƒ  |  _  n  g  } xC t t | ƒ d ƒ D]+ } | j | | d | | d d ƒ q” W|  j | ƒ d S(   u$   Push some new data into this object.u    i   u   i   Niÿÿÿÿiþÿÿÿ(	   u   _partialu   NLCRE_cracku   splitu   popu   endswithu   rangeu   lenu   appendu	   pushlines(   u   selfu   datau   partsu   linesu   i(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   pusha   s    #)u   BufferedSubFile.pushc             C   s$   | d  d  d … |  j  d  d … <d  S(   Ni   i    iÿÿÿÿ(   u   _lines(   u   selfu   lines(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu	   pushlinesx   s    u   BufferedSubFile.pushlinesc             C   s   |  S(   N(    (   u   self(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   __iter__|   s    u   BufferedSubFile.__iter__c             C   s%   |  j  ƒ  } | d k r! t ‚ n  | S(   Nu    (   u   readlineu   StopIteration(   u   selfu   line(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   __next__   s    	u   BufferedSubFile.__next__N(   u   __name__u
   __module__u   __qualname__u   __doc__u   __init__u   push_eof_matcheru   pop_eof_matcheru   closeu   readlineu
   unreadlineu   pushu	   pushlinesu   __iter__u   __next__(   u
   __locals__(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   BufferedSubFile,   s   
u   BufferedSubFilec             B   s’   |  Ee  Z d  Z d Z d e e j d d „Z d d „  Z d d „  Z	 d	 d
 „  Z
 d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d S(   u
   FeedParseru   A feed-style parser of email.u   policyc               s¥   | ˆ  _  | ˆ  _ y) | d ˆ  j ƒ ‡  f d d †  ˆ  _ Wn! t k
 r^ d d „  ˆ  _ Yn Xt ƒ  ˆ  _ g  ˆ  _ ˆ  j ƒ  j ˆ  _	 d ˆ  _ d ˆ  _ d ˆ  _ d S(   u  _factory is called with no arguments to create a new message obj

        The policy keyword specifies a policy object that controls a number of
        aspects of the parser's operation.  The default policy maintains
        backward compatibility.

        u   policyc                  s   i ˆ  j  d 6S(   Nu   policy(   u   policy(    (   u   self(    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   <lambda>–   s    u%   FeedParser.__init__.<locals>.<lambda>c               S   s   i  S(   N(    (    (    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   <lambda>™   s    NF(   u   _factoryu   policyu   _factory_kwdsu	   TypeErroru   BufferedSubFileu   _inputu	   _msgstacku	   _parsegenu   __next__u   _parseu   Noneu   _curu   _lastu   Falseu   _headersonly(   u   selfu   _factoryu   policy(    (   u   selfu5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   __init__Š   s    					u   FeedParser.__init__c             C   s   d |  _ d  S(   NT(   u   Trueu   _headersonly(   u   self(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   _set_headersonly¢   s    u   FeedParser._set_headersonlyc             C   s   |  j  j | ƒ |  j ƒ  d S(   u   Push more data into the parser.N(   u   _inputu   pushu   _call_parse(   u   selfu   data(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   feed¥   s    u   FeedParser.feedc             C   s'   y |  j  ƒ  Wn t k
 r" Yn Xd  S(   N(   u   _parseu   StopIteration(   u   self(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   _call_parseª   s    u   FeedParser._call_parsec             C   sh   |  j  j ƒ  |  j ƒ  |  j ƒ  } | j ƒ  d k rd | j ƒ  rd t j ƒ  } |  j j	 | | ƒ n  | S(   u<   Parse all remaining data and return the root message object.u	   multipart(
   u   _inputu   closeu   _call_parseu   _pop_messageu   get_content_maintypeu   is_multipartu   errorsu!   MultipartInvariantViolationDefectu   policyu   handle_defect(   u   selfu   rootu   defect(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   close°   s    
u   FeedParser.closec             C   s‰   |  j  |  j ƒ    } |  j rC |  j j ƒ  d k rC | j d ƒ n  |  j rc |  j d j | ƒ n  |  j j | ƒ | |  _ | |  _ d  S(   Nu   multipart/digestu   message/rfc822i   iÿÿÿÿ(	   u   _factoryu   _factory_kwdsu   _curu   get_content_typeu   set_default_typeu	   _msgstacku   attachu   appendu   _last(   u   selfu   msg(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   _new_message½   s    		u   FeedParser._new_messagec             C   s8   |  j  j ƒ  } |  j  r+ |  j  d |  _ n	 d  |  _ | S(   Ni   iÿÿÿÿ(   u	   _msgstacku   popu   _curu   None(   u   selfu   retval(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   _pop_messageÇ   s
    		u   FeedParser._pop_messagec             c   s"  |  j  ƒ  g  } xŒ |  j D] } | t k r7 t Vq n  t j | ƒ sŽ t j | ƒ sŠ t j ƒ  } |  j j	 |  j
 | ƒ |  j j | ƒ n  Pn  | j | ƒ q W|  j | ƒ |  j r!g  } xF |  j j ƒ  } | t k rä t Vq¾ n  | d k rô Pn  | j | ƒ q¾ |  j
 j t j | ƒ ƒ d  S|  j
 j ƒ  d k rxØ |  j j t j ƒ x, |  j ƒ  D] } | t k rvt VqYn  PqYW|  j ƒ  } |  j j ƒ  x* |  j j ƒ  } | t k r½t Vq—n  Pq—x* |  j j ƒ  } | t k rêt VqÄn  PqÄ| d k rþPn  |  j j | ƒ q9d  S|  j
 j ƒ  d k rgx, |  j ƒ  D] } | t k rTt Vq7n  Pq7W|  j ƒ  d  S|  j
 j ƒ  d k rÇ|  j
 j ƒ  } | d  k rt j ƒ  } |  j j	 |  j
 | ƒ g  } x5 |  j D]* } | t k ræt VqÉn  | j | ƒ qÉW|  j
 j t j | ƒ ƒ d  S|  j
 j d d ƒ j ƒ  d k rZt j ƒ  } |  j j	 |  j
 | ƒ n  d	 | } t j  d
 t j! | ƒ d ƒ }	 d }
 g  } d } d } xº|  j j ƒ  } | t k rÅt VqŸn  | d k rÕPn  |	 j | ƒ } | rI| j$ d ƒ rd } | j$ d ƒ } Pn  |
 r˜| r|| d } t% j& | ƒ } | rd| d  t' | j$ d ƒ ƒ … | d <n  t j | ƒ |  j
 _( n  d }
 |  j j | ƒ qŸn  xR |  j j ƒ  } | t k rÁt Vq›n  |	 j | ƒ } | s›|  j j | ƒ Pq›q›|  j j |	 j ƒ x, |  j ƒ  D] } | t k r*t Vqn  PqW|  j) j ƒ  d k rÁ|  j) j* } | d k rkd  |  j) _* q#| d  k	 r#t% j& | ƒ } | r¾t' | j$ d ƒ ƒ } | d  | … |  j) _* q¾q#nb |  j) j+ } t, | t- ƒ r#t% j& | ƒ } | r#| d  t' | j$ d ƒ ƒ … } | |  j) _+ q#n  |  j j ƒ  |  j ƒ  |  j
 |  _) qŸ| j | ƒ qŸ|
 rät j. ƒ  } |  j j	 |  j
 | ƒ |  j
 j t j | ƒ ƒ g  } x( |  j D] } | t k rªt VqªqªqªWt j | ƒ |  j
 _* d  S| st j/ ƒ  } |  j j	 |  j
 | ƒ d  S| r"d g } n g  } x5 |  j D]* } | t k rOt Vq2n  | j | ƒ q2W| r®| d } t0 j | ƒ } | r®| t' | j$ d ƒ ƒ d  … | d <q®n  t j | ƒ |  j
 _* d  Sg  } x5 |  j D]* } | t k rôt Vq×n  | j | ƒ q×W|  j
 j t j | ƒ ƒ d  S(   Nu    u   message/delivery-statusu   messageu	   multipartu   content-transfer-encodingu   8bitu   7bitu   binaryu   --u   (?P<sep>u4   )(?P<end>--)?(?P<ws>[ \t]*)(?P<linesep>\r\n|\r|\n)?$u   endu   linesepi   i    (   u   7bitu   8bitu   binaryTFiÿÿÿÿiÿÿÿÿ(1   u   _new_messageu   _inputu   NeedMoreDatau   headerREu   matchu   NLCREu   errorsu    MissingHeaderBodySeparatorDefectu   policyu   handle_defectu   _curu
   unreadlineu   appendu   _parse_headersu   _headersonlyu   readlineu   set_payloadu   EMPTYSTRINGu   joinu   get_content_typeu   push_eof_matcheru	   _parsegenu   _pop_messageu   pop_eof_matcheru   get_content_maintypeu   get_boundaryu   Noneu   NoBoundaryInMultipartDefectu   getu   loweru-   InvalidMultipartContentTransferEncodingDefectu   reu   compileu   escapeu   Trueu   Falseu   groupu	   NLCRE_eolu   searchu   lenu   preambleu   _lastu   epilogueu   _payloadu
   isinstanceu   stru   StartBoundaryNotFoundDefectu   CloseBoundaryNotFoundDefectu	   NLCRE_bol(   u   selfu   headersu   lineu   defectu   linesu   retvalu   msgu   boundaryu	   separatoru
   boundaryreu   capturing_preambleu   preambleu   linesepu   close_boundary_seenu   mou   lastlineu   eolmou   epilogueu   endu   payloadu	   firstlineu   bolmo(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu	   _parsegenÏ   sf   
	
	


'  


)u   FeedParser._parsegenc       	      C   s»  d } g  } xƒt  | ƒ D]u\ } } | d d k ry | sf t j | ƒ } |  j j |  j | ƒ q n  | j | ƒ q n  | r« |  j j |  j j | ƒ Œ  d g  } } n  | j	 d ƒ rf| d k rt
 j | ƒ } | rþ | d  t | j d ƒ ƒ … } n  |  j j | ƒ q qf| t | ƒ d k r>|  j j | ƒ d  St j | ƒ } |  j j j | ƒ q n  | j d ƒ } | d  | … } | g } q W| r·|  j j |  j j | ƒ Œ  n  d  S(   Nu    i    u    	u   From i   u   :(   u	   enumerateu   errorsu#   FirstHeaderLineIsContinuationDefectu   policyu   handle_defectu   _curu   appendu   set_rawu   header_source_parseu
   startswithu	   NLCRE_eolu   searchu   lenu   groupu   set_unixfromu   _inputu
   unreadlineu   MisplacedEnvelopeHeaderDefectu   defectsu   find(	   u   selfu   linesu
   lastheaderu	   lastvalueu   linenou   lineu   defectu   mou   i(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   _parse_headersÌ  s>    #u   FeedParser._parse_headersN(   u   __name__u
   __module__u   __qualname__u   __doc__u   compat32u   messageu   Messageu   __init__u   _set_headersonlyu   feedu   _call_parseu   closeu   _new_messageu   _pop_messageu	   _parsegenu   _parse_headers(   u
   __locals__(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu
   FeedParser‡   s   
ýc                s,   |  Ee  Z d  Z d Z ‡  f d d †  Z ‡  S(   u   BytesFeedParseru(   Like FeedParser, but feed accepts bytes.c                s    t  ƒ  j | j d d ƒ ƒ d  S(   Nu   asciiu   surrogateescape(   u   superu   feedu   decode(   u   selfu   data(   u	   __class__(    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   feed  s    u   BytesFeedParser.feed(   u   __name__u
   __module__u   __qualname__u   __doc__u   feed(   u
   __locals__(    (   u	   __class__u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   BytesFeedParser   s   (   u   __doc__u   __all__u   reu   emailu   errorsu   messageu   email._policybaseu   compat32u   compileu   NLCREu	   NLCRE_bolu	   NLCRE_eolu   NLCRE_cracku   headerREu   EMPTYSTRINGu   NLu   objectu   NeedMoreDatau   BufferedSubFileu
   FeedParseru   BytesFeedParser(    (    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   <module>   s"   	[ÿ z