<!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/C  c               @   s  d  Z  d d d d g Z d d l Z d d l Z d Z d Z d	 Z d
 d d d d d d d d d d d d d d d d d d d d d d d  g Z d! d" d# d$ d% d& d' g Z i d d( 6d d) 6d d* 6d d+ 6d, d- 6d. d/ 6d0 d1 6d, d2 6d3 d4 6d0 d5 6d6 d7 6d3 d8 6d9 d: 6d6 d; 6Z	 d< d   Z
 d= d>   Z d? d   Z d@ d   Z dA d   Z GdB dC   dC  Z GdD dE   dE e  Z d S(F   uc   Email address parsing code.

Lifted directly from rfc822.py.  This should eventually be rewritten.
u	   mktime_tzu	   parsedateu   parsedate_tzu   quotei    Nu    u    u   , u   janu   febu   maru   apru   mayu   junu   julu   augu   sepu   octu   novu   decu   januaryu   februaryu   marchu   aprilu   juneu   julyu   augustu	   septemberu   octoberu   novemberu   decemberu   monu   tueu   wedu   thuu   friu   satu   sunu   UTu   UTCu   GMTu   Zi  u   ASTi,  u   ADTi  u   ESTu   EDTiX  u   CSTu   CDTi  u   MSTu   MDTi   u   PSTu   PDTc             C   s=   t  |   } | s d S| d d k r3 d | d <n  t |  S(   uQ   Convert a date string to a time tuple.

    Accounts for military timezones.
    Ni	   i    (   u   _parsedate_tzu   Noneu   tuple(   u   datau   res(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu   parsedate_tz-   s    c             C   s  |  s
 d S|  j    }  |  d j d  s? |  d j   t k rI |  d =n> |  d j d  } | d k r |  d | d d  |  d <n  t |   d k r |  d j  d  } t |  d k r | |  d d  }  q n  t |   d k rj|  d } | j d  } | d k r!| j d  } n  | d k rZ| d |  | | d  g |  d d  <qj|  j d	  n  t |   d
 k  rd S|  d d
  }  |  \ } } } } } | j   } | t	 k r| | j   } } | t	 k rd Sn  t	 j
 |  d } | d k r| d 8} n  | d d k r2| d d  } n  | j d  } | d k r]| | } } n  | d d k r| d d  } n  | d j   s| | } } n  | d d k r| d d  } n  | j  d  } t |  d k r| \ }	 }
 d } n t |  d k r| \ }	 }
 } n t |  d k rd | d k r| d j  d  } t |  d k ry| \ }	 }
 d } qt |  d k r| \ }	 }
 } qn d Sy@ t |  } t |  } t |	  }	 t |
  }
 t |  } Wn t k
 rd SYn X| d k  r/| d k r"| d 7} q/| d 7} n  d } | j   } | t k rZt | } nI y t |  } Wn t k
 r~Yn X| d k r| j d  rd } n  | r| d k  rd } | } n d } | | d d | d d } n  | | | |	 |
 | d d d | g
 S(   u  Convert date to extended time tuple.

    The last (additional) element is the time zone offset in seconds, except if
    the timezone was specified as -0000.  In that case the last element is
    None.  This indicates a UTC timestamp that explicitly declaims knowledge of
    the source timezone, as opposed to a +0000 timestamp that indicates the
    source timezone really was UTC.

    Ni    u   ,i   i   u   -i   u   +u    i   i   u   :i   u   0u   .id   iD   il  i  i  i<   iiiiiiiii(   u   splitu   endswithu   loweru	   _daynamesu   rfindu   lenu   findu   appendu   Noneu   _monthnamesu   indexu   isdigitu   intu
   ValueErroru   upperu
   _timezonesu
   startswith(   u   datau   iu   stuffu   su   ddu   mmu   yyu   tmu   tzu   thhu   tmmu   tssu   tzoffsetu   tzsign(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu   _parsedate_tz9   s    
)

-	"			
!u   _parsedate_tzc             C   s1   t  |   } t | t  r) | d d  S| Sd S(   u&   Convert a time string to a time tuple.Ni	   (   u   parsedate_tzu
   isinstanceu   tuple(   u   datau   t(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu	   parsedate   s    c             C   sJ   |  d d k r+ t j |  d d  d  St j |   } | |  d Sd S(   uE   Turn a 10-tuple as returned by parsedate_tz() into a POSIX timestamp.i	   Ni   i   i(   i(   u   Noneu   timeu   mktimeu   calendaru   timegm(   u   datau   t(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu	   mktime_tz   s    c             C   s   |  j  d d  j  d d  S(   u   Prepare string to be used in a quoted string.

    Turns backslash and double quote characters into quoted pairs.  These
    are the only characters that need to be quoted inside a quoted string.
    Does not add the surrounding double quotes.
    u   \u   \\u   "u   \"(   u   replace(   u   str(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu   quote   s    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 d  Z d d   Z d d   Z d d   Z d d d  Z d d   Z d S(   u   AddrlistClassu  Address parser class by Ben Escoto.

    To understand what this class does, it helps to have a copy of RFC 2822 in
    front of you.

    Note: this class interface is deprecated and may be removed in the future.
    Use email.utils.AddressList instead.
    c             C   s   d |  _  d |  _ d |  _ d |  _ |  j |  j |  _ |  j  |  j |  j |  _ |  j j d d  |  _ | |  _ g  |  _	 d S(   u   Initialize a new instance.

        `field' is an unparsed address header field, containing
        one or more addresses.
        u   ()<>@,:;."[]i    u    	u   
u   .u    N(
   u   specialsu   posu   LWSu   CRu   FWSu   atomendsu   replaceu
   phraseendsu   fieldu   commentlist(   u   selfu   field(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu   __init__   s    					u   AddrlistClass.__init__c             C   s   g  } x |  j  t |  j  k  r |  j |  j  |  j d k r |  j |  j  d k rn | j |  j |  j   n  |  j  d 7_  q	 |  j |  j  d k r |  j j |  j    q	 Pq	 Wt j |  S(   u&   Skip white space and extract comments.u   
i   u   ((	   u   posu   lenu   fieldu   LWSu   appendu   commentlistu
   getcommentu   EMPTYSTRINGu   join(   u   selfu   wslist(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu   gotonext   s    u   AddrlistClass.gotonextc             C   sU   g  } xH |  j  t |  j  k  rP |  j   } | r@ | | 7} q	 | j d  q	 W| S(   uV   Parse all addresses.

        Returns a list containing all of the addresses.
        u    (   u    u    (   u   posu   lenu   fieldu
   getaddressu   append(   u   selfu   resultu   ad(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu   getaddrlist   s    u   AddrlistClass.getaddrlistc             C   s  g  |  _  |  j   |  j } |  j  } |  j   } |  j   g  } |  j t |  j  k r | rPt j |  j   | d f g } qPn|  j |  j d k r | |  _ | |  _  |  j   } t j |  j   | f g } nz|  j |  j d k rg  } t |  j  } |  j d 7_ x=|  j t |  j  k  r|  j   |  j | k  rm|  j |  j d k rm|  j d 7_ Pn  | |  j	   } qWn |  j |  j d k r|  j
   } |  j  rt j |  d d j |  j   d	 | f g } qPt j |  | f g } nS | r%t j |  j   | d f g } n+ |  j |  j |  j k rP|  j d 7_ n  |  j   |  j t |  j  k  r|  j |  j d
 k r|  j d 7_ n  | S(   u   Parse the next address.i    u   .@u   :i   u   ;u   <u    (u    u   )u   ,(   u   commentlistu   gotonextu   posu   getphraselistu   lenu   fieldu   SPACEu   joinu   getaddrspecu
   getaddressu   getrouteaddru   specials(   u   selfu   oldposu   oldclu   plistu
   returnlistu   addrspecu   fieldlenu	   routeaddr(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu
   getaddress  sL    	
		
%		
%	3"
.u   AddrlistClass.getaddressc             C   s   |  j  |  j d k r d Sd } |  j d 7_ |  j   d } x |  j t |  j   k  r| rs |  j   d } n |  j  |  j d k r |  j d 7_ Pnr |  j  |  j d k r |  j d 7_ d	 } nD |  j  |  j d k r |  j d 7_ n |  j   } |  j d 7_ P|  j   qB W| S(
   u   Parse a route address (Return-path value).

        This method just skips all the route stuff and returns the addrspec.
        u   <Ni   u    u   >u   @u   :FT(   u   fieldu   posu   Falseu   gotonextu   lenu	   getdomainu   Trueu   getaddrspec(   u   selfu   expectrouteu   adlist(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu   getrouteaddr?  s.    

		u   AddrlistClass.getrouteaddrc             C   s  g  } |  j    x3|  j t |  j  k  rEd } |  j |  j d k r | rk | d j   rk | j   n  | j d  |  j d 7_ d } n |  j |  j d k r | j d t	 |  j
     nT |  j |  j |  j k r| r| d	 j   r| j   n  Pn | j |  j    |  j    } | r | r | j |  q q W|  j t |  j  k st|  j |  j d k rt j |  S| j d  |  j d 7_ |  j    t j |  |  j   S(
   u   Parse an RFC 2822 addr-spec.u   .i   u   "u   "%s"u   @TiFi(   u   gotonextu   posu   lenu   fieldu   Trueu   stripu   popu   appendu   Falseu   quoteu   getquoteu   atomendsu   getatomu   EMPTYSTRINGu   joinu	   getdomain(   u   selfu   aslistu   preserve_wsu   ws(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu   getaddrspec_  s4    
	 .
u   AddrlistClass.getaddrspecc             C   s  g  } x|  j  t |  j  k  r|  j |  j  |  j k rL |  j  d 7_  q	 |  j |  j  d k r{ |  j j |  j    q	 |  j |  j  d k r | j |  j    q	 |  j |  j  d k r |  j  d 7_  | j d  q	 |  j |  j  |  j k r Pq	 | j |  j	    q	 Wt
 j |  S(   u-   Get the complete domain name from an address.i   u   (u   [u   .(   u   posu   lenu   fieldu   LWSu   commentlistu   appendu
   getcommentu   getdomainliteralu   atomendsu   getatomu   EMPTYSTRINGu   join(   u   selfu   sdlist(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu	   getdomain  s    u   AddrlistClass.getdomainc             C   s-  |  j  |  j | k r d Sd g } d } |  j d 7_ x |  j t |  j   k  r| ry | j |  j  |  j  d } n |  j  |  j | k r |  j d 7_ Pnk | r |  j  |  j d k r | j |  j    q; n6 |  j  |  j d k r d } n | j |  j  |  j  |  j d 7_ q; Wt j |  S(   u  Parse a header fragment delimited by special characters.

        `beginchar' is the start character for the fragment.
        If self is not looking at an instance of `beginchar' then
        getdelimited returns the empty string.

        `endchars' is a sequence of allowable end-delimiting characters.
        Parsing stops when one of these is encountered.

        If `allowcomments' is non-zero, embedded RFC 2822 comments are allowed
        within the parsed fragment.
        u    i   u   (u   \FT(	   u   fieldu   posu   Falseu   lenu   appendu
   getcommentu   Trueu   EMPTYSTRINGu   join(   u   selfu	   begincharu   endcharsu   allowcommentsu   slistu   quote(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu   getdelimited  s(    			u   AddrlistClass.getdelimitedc             C   s   |  j  d d d  S(   u1   Get a quote-delimited fragment from self's field.u   "u   "F(   u   getdelimitedu   False(   u   self(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu   getquote  s    u   AddrlistClass.getquotec             C   s   |  j  d d d  S(   u7   Get a parenthesis-delimited fragment from self's field.u   (u   )T(   u   getdelimitedu   True(   u   self(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu
   getcomment  s    u   AddrlistClass.getcommentc             C   s   d |  j  d d d  S(   u!   Parse an RFC 2822 domain-literal.u   [%s]u   [u   ]F(   u   getdelimitedu   False(   u   self(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu   getdomainliteral  s    u   AddrlistClass.getdomainliteralc             C   s   d g } | d k r! |  j } n  x\ |  j t |  j  k  r |  j |  j | k rV Pn | j |  j |  j  |  j d 7_ q$ Wt j |  S(   u  Parse an RFC 2822 atom.

        Optional atomends specifies a different set of end token delimiters
        (the default is to use self.atomends).  This is used e.g. in
        getphraselist() since phrase endings must not include the `.' (which
        is legal in phrases).u    i   N(   u   Noneu   atomendsu   posu   lenu   fieldu   appendu   EMPTYSTRINGu   join(   u   selfu   atomendsu   atomlist(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu   getatom  s    	u   AddrlistClass.getatomc             C   s   g  } x |  j  t |  j  k  r |  j |  j  |  j k rL |  j  d 7_  q	 |  j |  j  d k rx | j |  j    q	 |  j |  j  d k r |  j j |  j    q	 |  j |  j  |  j k r Pq	 | j |  j	 |  j   q	 W| S(   u   Parse a sequence of RFC 2822 phrases.

        A phrase is a sequence of words, which are in turn either RFC 2822
        atoms or quoted-strings.  Phrases are canonicalized by squeezing all
        runs of continuous whitespace into one space.
        i   u   "u   ((
   u   posu   lenu   fieldu   FWSu   appendu   getquoteu   commentlistu
   getcommentu
   phraseendsu   getatom(   u   selfu   plist(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu   getphraselist  s    u   AddrlistClass.getphraselistNT(   u   __name__u
   __module__u   __qualname__u   __doc__u   __init__u   gotonextu   getaddrlistu
   getaddressu   getrouteaddru   getaddrspecu	   getdomainu   Trueu   getdelimitedu   getquoteu
   getcommentu   getdomainliteralu   Noneu   getatomu   getphraselist(   u
   __locals__(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu   AddrlistClass   s   ; !%u   AddrlistClassc             B   sn   |  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 S(   u   AddressListu@   An AddressList encapsulates a list of parsed RFC 2822 addresses.c             C   s5   t  j |  |  | r( |  j   |  _ n	 g  |  _ d  S(   N(   u   AddrlistClassu   __init__u   getaddrlistu   addresslist(   u   selfu   field(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu   __init__  s    u   AddressList.__init__c             C   s   t  |  j  S(   N(   u   lenu   addresslist(   u   self(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu   __len__  s    u   AddressList.__len__c             C   s\   t  d   } |  j d  d   | _ x3 | j D]( } | |  j k r, | j j |  q, q, W| S(   N(   u   AddressListu   Noneu   addresslistu   append(   u   selfu   otheru   newaddru   x(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu   __add__  s    u   AddressList.__add__c             C   s:   x3 | j  D]( } | |  j  k r
 |  j  j |  q
 q
 W|  S(   N(   u   addresslistu   append(   u   selfu   otheru   x(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu   __iadd__  s    u   AddressList.__iadd__c             C   sF   t  d   } x3 |  j D]( } | | j k r | j j |  q q W| S(   N(   u   AddressListu   Noneu   addresslistu   append(   u   selfu   otheru   newaddru   x(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu   __sub__  s
    u   AddressList.__sub__c             C   s:   x3 | j  D]( } | |  j  k r
 |  j  j |  q
 q
 W|  S(   N(   u   addresslistu   remove(   u   selfu   otheru   x(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu   __isub__  s    u   AddressList.__isub__c             C   s   |  j  | S(   N(   u   addresslist(   u   selfu   index(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu   __getitem__  s    u   AddressList.__getitem__N(   u   __name__u
   __module__u   __qualname__u   __doc__u   __init__u   __len__u   __add__u   __iadd__u   __sub__u   __isub__u   __getitem__(   u
   __locals__(    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu   AddressList  s   	u   AddressList(   u   __doc__u   __all__u   timeu   calendaru   SPACEu   EMPTYSTRINGu
   COMMASPACEu   _monthnamesu	   _daynamesu
   _timezonesu   parsedate_tzu   _parsedate_tzu	   parsedateu	   mktime_tzu   quoteu   AddrlistClassu   AddressList(    (    (    u5   /opt/alt/python33/lib64/python3.3/email/_parseaddr.pyu   <module>   s6   	u	

 %