-í
ŽH ?c       s    d  Z    d d d d g Z 	 d Z 
 d Z  d Z  d Z  y  d	 k l Z l Z Wn   e	 Z  e	 Z n X d
 „  Z
 # d „  Z * d d „ Z i d d d „ Z t d d „ Z Ÿ d d „ Z « d „  Z ¯ d „  Z À d „  Z ì e d j o í e ƒ  n d S(   sH   Conversions to/from quoted-printable transport encoding as per RFC 1521.s   encodes   decodes   encodestrings   decodestrings   =iL   s   0123456789ABCDEFs    (   s   a2b_qps   b2a_qpc    sl      |  d j o  | Sn  |  d j o   | Sn ! |  t j p d |  j o
 d j n Sd S(   sé   Decide whether a particular character needs to be quoted.

    The 'quotetabs' flag indicates whether embedded tabs and spaces should be
    quoted.  Note that line-ending tabs and spaces are always encoded, as per
    RFC 1521.
    s    	s   _s    s   ~N(   s   cs	   quotetabss   headers   ESCAPE(   s   cs	   quotetabss   header(    (    s#   /mit/python/lib/python2.2/quopri.pys   needsquoting s   c    s8   # $ % t  |  ƒ } & t t | d t | d Sd S(   s   Quote a single character.i   N(   s   ords   cs   is   ESCAPEs   HEX(   s   cs   i(    (    s#   /mit/python/lib/python2.2/quopri.pys   quote# s   i    c    s  * 3 5 t  t j	 oE 6 |  i ƒ  } 7 t  | d | d | ƒ} 8 | i	 | ƒ 9 d Sn ; | d d „ }	 E t } F xuF d ojG |  i ƒ  }
 H |
 o I Pn J g  } L d } M |
 d d j o N |
 d  }
 O d } n Q xu |
 DQ ]j } R t | | | ƒ o S t | ƒ } n T | o
 | d	 j o U | i d
 ƒ n W | i | ƒ qò WY | t j	 o Z |	 | ƒ n ] t i | ƒ } ^ xG ^ t | ƒ t j o0 a |	 | t d  d d ƒb | t d } qœWd | } q| Wf | t j	 o g |	 | d | ƒn d S(   s–  Read 'input', apply quoted-printable encoding, and write to 'output'.

    'input' and 'output' are files with readline() and write() methods.
    The 'quotetabs' flag indicates whether embedded tabs and spaces should be
    quoted.  Note that line-ending tabs and spaces are always encoded, as per
    RFC 1521.
    The 'header' flag indicates whether we are encoding spaces as _ as per
    RFC 1522.
    s	   quotetabss   headerNs   
c    sŽ   ; > |  o |  d d j o* ? | i |  d  t |  d ƒ | ƒ nC @ |  d j o A | i t |  ƒ | ƒ n C | i |  | ƒ d  S(   Niÿÿÿÿs    	s   .(   s   ss   outputs   writes   quotes   lineEnd(   s   ss   outputs   lineEnd(    (    s#   /mit/python/lib/python2.2/quopri.pys   write; s
   *i   s    iÿÿÿÿs    s   _s   lineEnds   =
(   s   b2a_qps   Nones   inputs   reads   datas	   quotetabss   headers   odatas   outputs   writes   prevlines   readlines   lines   outlines   strippeds   cs   needsquotings   quotes   appends   EMPTYSTRINGs   joins   thislines   lens   MAXLINESIZE(   s   inputs   outputs	   quotetabss   headers   outlines   strippeds   odatas   cs   prevlines   writes   lines   datas   thisline(    (    s#   /mit/python/lib/python2.2/quopri.pys   encode* sF   	
	 
		
 	 c    s‚   i j t  t j	 o k t  |  d | d | ƒSn l d k l } m | |  ƒ } n | ƒ  } o t	 | | | | ƒ p | i
 ƒ  Sd  S(   Ns	   quotetabss   header(   s   StringIO(   s   b2a_qps   Nones   ss	   quotetabss   headers	   cStringIOs   StringIOs   infps   outfps   encodes   getvalue(   s   ss	   quotetabss   headers   outfps   StringIOs   infp(    (    s#   /mit/python/lib/python2.2/quopri.pys   encodestringi s   c    sþ  t w y t  t j	 o? z |  i ƒ  }
 { t  |
 d | ƒ} | | i | ƒ } d Sn  d } € xx€ d om� |  i
 ƒ  }	 ‚ |	 o ‚ Pn ƒ d t |	 ƒ f \ } } „ | d j o |	 | d d j oT … d } | d } ‡ x7 ‡ | d j o |	 | d d j o ˆ | d } qé Wn
 Š d } ‹ xx‹ | | j  ogŒ |	 | } � | d j o | o Ž | d	 } | d } n%� | t j o � | | } | d } nú ‘ | d | j o | o ’ d } PnÐ “ | d | j  o |	 | d t j o ” | t } | d
 } nŒ • | d
 | j  o' t |	 | d ƒ o t |	 | d
 ƒ o6 – | t t |	 | d | d !ƒ ƒ } | d } n ˜ | | } | d } q3W™ | o! š | i | d ƒ › d } n qd Wœ | o � | i | ƒ n d S(   sÑ   Read 'input', apply quoted-printable decoding, and write to 'output'.
    'input' and 'output' are files with readline() and write() methods.
    If 'header' is true, decode underscore as space (per RFC 1522).s   headerNs    i   i    s   
s    	s   _s    i   i   (   s   a2b_qps   Nones   inputs   reads   datas   headers   odatas   outputs   writes   news   readlines   lines   lens   is   ns   partials   cs   ESCAPEs   ishexs   chrs   unhex(   s   inputs   outputs   headers   partials   is   odatas   cs   ns   news   lines   data(    (    s#   /mit/python/lib/python2.2/quopri.pys   decodet sL   	 
 % %	 )>6
c    s|   Ÿ   t  t j	 o ¡ t  |  d | ƒSn ¢ d k l } £ | |  ƒ } ¤ | ƒ  } ¥ t | | d | ƒ¦ | i	 ƒ  Sd  S(   Ns   header(   s   StringIO(
   s   a2b_qps   Nones   ss   headers	   cStringIOs   StringIOs   infps   outfps   decodes   getvalue(   s   ss   headers   outfps   StringIOs   infp(    (    s#   /mit/python/lib/python2.2/quopri.pys   decodestringŸ s   c    sd   « ¬ ­ d |  j o
 d j n p9 d |  j o
 d j n p d |  j o
 d j n Sd S(   s8   Return true if the character 'c' is a hexadecimal digit.s   0s   9s   as   fs   As   FN(   s   c(   s   c(    (    s#   /mit/python/lib/python2.2/quopri.pys   ishex« s   c    sô   ¯ ° ± d } ² xÔ |  D² ]É } ³ d | j o
 d j n o ´ t d ƒ } nu µ d | j o
 d j n o ¶ t d ƒ d } n= · d | j o
 d j n o ¸ t d ƒ d } n º P» | d	 t | ƒ | } q W¼ | Sd
 S(   s.   Get the integer value of a hexadecimal number.i    s   0s   9s   as   fi
   s   As   Fi   N(   s   bitss   ss   cs   ords   i(   s   ss   is   bitss   c(    (    s#   /mit/python/lib/python2.2/quopri.pys   unhex¯ s   	
 	!!!c     s{  À Á d  k  } Â d  k }
 Ã y& Ä |
 i | i d d ƒ \ } } WnZ Å |
 i j
 oH }	 Æ | i | _ Ç |	 GHÈ d GHÉ d GHÊ d GHË | i	 d ƒ n XÌ d } Í d } Î xQ | DÎ ]F \ } }  Ï | d j o Ï d } n Ð | d	 j o Ð d } n q½ WÑ | o | o+ Ò | i | _ Ó d
 GHÔ | i	 d ƒ n Õ | o Õ d g } n Ö d } × xé | D× ]Þ } Ø | d j o Ù | i } n^ Û y Ü t | ƒ } WnD Ý t j
 o5 }	 Þ | i i d | |	 f ƒ ß d } à qtn Xá | o â t | | i ƒ n ä t | | i | ƒ å | | i j	 o æ | i ƒ  n qtWç | o è | i	 | ƒ n d  S(   Ni   s   tds"   usage: quopri [-t | -d] [file] ...s   -t: quote tabss   -d: decode; default encodei   i    s   -ts   -ds    -t and -d are mutually exclusives   -s   %s: can't open (%s)
(   s   syss   getopts   argvs   optss   argss   errors   msgs   stderrs   stdouts   exits   decos   tabss   os   as   stss   files   stdins   fps   opens   IOErrors   writes   decodes   encodes   close(   s   as   fps   decos   tabss   argss   os   syss   files   stss   msgs   getopts   opts(    (    s#   /mit/python/lib/python2.2/quopri.pys   mainÀ sV   &		
    	
 		

s   __main__N(   s   __doc__s   __all__s   ESCAPEs   MAXLINESIZEs   HEXs   EMPTYSTRINGs   binasciis   a2b_qps   b2a_qps   Nones   needsquotings   quotes   encodes   encodestrings   decodes   decodestrings   ishexs   unhexs   mains   __name__(   s   unhexs   mains   MAXLINESIZEs   decodestrings   __all__s   quotes   ishexs   needsquotings   a2b_qps   HEXs   b2a_qps   decodes   ESCAPEs   encodes   EMPTYSTRINGs   encodestring(    (    s#   /mit/python/lib/python2.2/quopri.pys   ? s*   					?+,