Ë
    ìì�i§N  ã            	       óÎ  — d dl Z d dlZddlmZ d Z G d„ de«      Z G d„ de«      Z G d„ d	e«      Z G d
„ de«      Z	 G d„ de«      Z
 G d„ d«      Z G d„ de«      Z G d„ de«      Z G d„ d«      Z ee«      Z ee«      Zej"                  Zej"                  Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Zd„ Zd„ Z e j8                  d«      Z e j8                  d«      Z e j8                  d «      Z e j8                  d!«      Z  e j8                  d"«      Z! e j8                  d#«      Z" e j8                  d$«      Z# e j8                  d%«      Z$ e j8                  d"«      Z% e j8                  d&«      Z& e j8                  d'«      Z'd(d)d*d+d,d-d.d/d0œZ( G d1„ d2«      Z) G d3„ d4e)«      Z*d dl+Z+ G d5„ d6e+jX                  «      Z-e.d7k(  r e+j^                  «        yy)8é    Né   )Úchoplistc                   ó   — e Zd Zy)ÚPSExceptionN©Ú__name__Ú
__module__Ú__qualname__© ó    úv/var/www/ITT-ServiceAPI-Services/ITT-Document-Scan/mrzscanner/mrzenv/lib/python3.12/site-packages/pdfminer/psparser.pyr   r      ó   „ Ør   r   c                   ó   — e Zd Zy)ÚPSEOFNr   r   r   r   r   r      r   r   r   c                   ó   — e Zd Zy)ÚPSSyntaxErrorNr   r   r   r   r   r      r   r   r   c                   ó   — e Zd Zy)ÚPSTypeErrorNr   r   r   r   r   r      r   r   r   c                   ó   — e Zd Zy)ÚPSValueErrorNr   r   r   r   r   r      r   r   r   c                   ó   — e Zd ZdZy)ÚPSObjectz0Base class for all PS or PDF-related data types.N)r   r	   r
   Ú__doc__r   r   r   r   r   $   s   „ á:àr   r   c                   ó   — e Zd ZdZd„ Zd„ Zy)Ú	PSLiteralaa  A class that represents a PostScript literal.

    Postscript literals are used as identifiers, such as
    variable names, property names and dictionary keys.
    Literals are case sensitive and denoted by a preceding
    slash sign (e.g. "/Name")

    Note: Do not create an instance of PSLiteral directly.
    Always use PSLiteralTable.intern().
    c                 ó   — || _         y ©N©Úname©Úselfr   s     r   Ú__init__zPSLiteral.__init__:   ó   € ØˆŒ	Ør   c                 ó    — d| j                   z  S )Nz/%rr   ©r!   s    r   Ú__repr__zPSLiteral.__repr__>   s   € Ø�t—y‘yÑ Ð r   N©r   r	   r
   r   r"   r&   r   r   r   r   r   -   s   „ ñ	òó!r   r   c                   ó   — e Zd ZdZd„ Zd„ Zy)Ú	PSKeywordaN  A class that represents a PostScript keyword.

    PostScript keywords are a dozen of predefined words.
    Commands and directives in PostScript are expressed by keywords.
    They are also used to denote the content boundaries.

    Note: Do not create an instance of PSKeyword directly.
    Always use PSKeywordTable.intern().
    c                 ó   — || _         y r   r   r    s     r   r"   zPSKeyword.__init__P   r#   r   c                 ó8   — | j                   j                  d«      S )NÚascii)r   Údecoder%   s    r   r&   zPSKeyword.__repr__T   s   € Ø�y‰y×Ñ Ó(Ð(r   Nr'   r   r   r   r)   r)   D   s   „ ñòó)r   r)   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚPSSymbolTablezƒA utility class for storing PSLiteral/PSKeyword objects.

    Interned objects can be checked its identity with "is" operator.
    c                 ó    — i | _         || _        y r   ©ÚdictÚklass)r!   r3   s     r   r"   zPSSymbolTable.__init__a   s   € ØˆŒ	ØˆŒ
Ør   c                 ó„   — || j                   v r| j                   |   }|S | j                  |«      }|| j                   |<   |S r   r1   )r!   r   Úlits      r   ÚinternzPSSymbolTable.internf   sD   € Ø�4—9‘9ÑØ—)‘)˜D‘/ˆCð ˆ
ð —*‘*˜TÓ"ˆCØ!ˆD�I‰I�d‰OØˆ
r   N)r   r	   r
   r   r"   r6   r   r   r   r/   r/   Z   s   „ ñò
ó
r   r/   ó   {ó   }ó   [ó   ]ó   <<ó   >>c                 óx   — t        | t        «      st        rt        d| ›�«      ‚t	        | «      S | j
                  S )NzLiteral required: )Ú
isinstancer   ÚSTRICTr   Ústrr   ©Úxs    r   Úliteral_namerC   z   ó/   € Ü�aœÔ#ÝÝ¹Ð;Ó<Ð<ä�q“6ˆMØ�6‰6€Mr   c                 óx   — t        | t        «      st        rt        d| ›�«      ‚t	        | «      S | j
                  S )NzKeyword required: )r>   r)   r?   r   r@   r   rA   s    r   Úkeyword_namerF   ƒ   rD   r   s   [\r\n]s   \ss   \Ss   [0-9a-fA-F]s   [#/%\[\]()<>{}\s]s   [^\s0-9a-fA-F]s   [0-9a-fA-F]{2}|.s   [^0-9]s   [()\134]s   [0-7]ó   ó   	ó   
ó   ó   ó   (ó   )ó   \)ó   bó   tó   nó   fó   rrL   rM   rN   c                   óª   — e Zd ZdZdZdZd„ Zd„ Zd„ Zd„ Z	d„ Z
dd
„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy	)ÚPSBaseParserzBMost basic PostScript parser that performs only tokenization.
    i   r   c                 ó4   — || _         | j                  d«       y ©Nr   )ÚfpÚseek©r!   rX   s     r   r"   zPSBaseParser.__init__§   s   € ØˆŒØ�	‰	�!ŒØr   c                 ób   — d| j                   j                  | j                  | j                  fz  S )Nz<%s: %r, bufpos=%d>)Ú	__class__r   rX   Úbufposr%   s    r   r&   zPSBaseParser.__repr__¬   s&   € Ø$¨¯©×(?Ñ(?ÀÇÁÈ$Ï+É+Ð'VÑVÐVr   c                  ó   — y r   r   r%   s    r   ÚflushzPSBaseParser.flush¯   ó   € Ør   c                 ó$   — | j                  «        y r   )r_   r%   s    r   ÚclosezPSBaseParser.close²   s   € Ø�
‰
ŒØr   c                 ó4   — | j                   | j                  z   S r   )r]   Úcharposr%   s    r   ÚtellzPSBaseParser.tell¶   s   € Ø�{‰{˜4Ÿ<™<Ñ'Ð'r   Nc                 ó@  — | j                   j                  «       }|s| j                  | j                  z   }| j                   j	                  |«       t        j                  d|| j                   j                  |«      fz  «       | j                   j	                  |«       y )Nzpoll(%d): %r)rX   re   r]   rd   rY   ÚloggingÚinfoÚread)r!   ÚposÚnÚpos0s       r   ÚpollzPSBaseParser.poll¹   sk   € Ø�w‰w�|‰|‹~ˆÙØ—+‘+˜dŸl™lÑ*ˆCØ�‰�‰�SÔÜ�‰�^ s¨D¯G©G¯L©L¸«OÐ&<Ñ<Ô=Ø�‰�‰�TÔØr   c                 óø   — | j                   rt        j                   d|z  «       | j                  j                  |«       || _        d| _        d| _        | j                  | _        d| _	        d| _
        g | _        y)z0Seeks the parser to the given position.
        zseek: %rr   r   N)Údebugrg   rX   rY   r]   Úbufrd   Ú_parse_mainÚ_parse1Ú	_curtokenÚ_curtokenposÚ_tokens©r!   rj   s     r   rY   zPSBaseParser.seekÂ   sg   € ð �:Š:Ü�M‰M˜* sÑ*Ô+Ø�‰�‰�SÔàˆŒØˆŒØˆŒà×'Ñ'ˆŒØˆŒØˆÔØˆŒØr   c                 ó  — | j                   t        | j                  «      k  ry | j                  j	                  «       | _        | j                  j                  | j                  «      | _        | j                  st        d«      ‚d| _         y )NzUnexpected EOFr   )	rd   Úlenrp   rX   re   r]   ri   ÚBUFSIZr   r%   s    r   ÚfillbufzPSBaseParser.fillbufÓ   s_   € Ø�<‰<œ#˜dŸh™h›-Ò'Øà—g‘g—l‘l“nˆŒØ—7‘7—<‘< §¡Ó,ˆŒØ�xŠxÜÐ(Ó)Ð)ØˆŒØr   c                 ó¦  — d}| j                   | j                  z   }d}	 | j                  «        |rF| j                  | j                  | j                  dz    }|dk(  r||z  }| xj                  dz  c_        n±t        j                  | j                  | j                  «      }|rM|| j                  | j                  |j                  d«       z  }|j                  d«      | _        |dd dk(  rd	}n7n8|| j                  | j                  d z  }t        | j                  «      | _        �Œ	| j                  rt        j                  d
|›d|›�«       ||fS )z<Fetches a next line that ends either with \r or \n.
        r   Fr   rI   r   éÿÿÿÿNrK   Tz
nextline: z, )
r]   rd   rz   rp   ÚEOLÚsearchÚendrx   ro   rg   )r!   ÚlinebufÚlineposÚeolÚcÚms         r   ÚnextlinezPSBaseParser.nextlineÞ   s  € ð ˆØ—+‘+ §¡Ñ,ˆØˆØØ�L‰LŒNÙØ—H‘H˜TŸ\™\¨$¯,©,°q©.Ð9�à˜’:Ø˜q‘L�GØ—L’L AÑ%•LØÜ—
‘
˜4Ÿ8™8 T§\¡\Ó2ˆAÙØ˜4Ÿ8™8 D§L¡L°·±°q³Ð:Ñ:�Ø Ÿu™u Q›x�”Ø˜2˜3�< 5Ò(Ø‘Càà˜4Ÿ8™8 D§L¡L MÐ2Ñ2�Ü" 4§8¡8›}�”ñ' ð( �:Š:Ü�MŠM²¹ÐAÔBØ˜Ð!Ð!r   c              #   óÒ  K  — | j                   j                  dd«       | j                   j                  «       }d}d|k  r¦|}t        d|| j                  z
  «      }| j                   j                  |«       | j                   j                  ||z
  «      }|s	 y	 t        |j                  d«      |j                  d«      «      }|dk(  r||z   }n||d |z   –— |d| }d}ŒGd|k  rŒ¦y­w)ziFetches a next line backward.

        This is used to locate the trailers at the end of a file.
        r   é   r   rK   rI   r|   N)rX   rY   re   Úmaxry   ri   Úrfind)r!   rj   rp   ÚprevposÚsrk   s         r   ÚrevreadlineszPSBaseParser.revreadlinesü   så   è ø€ ð
 	�‰�‰�Q˜ÔØ�g‰g�l‰l‹nˆØˆØ�#ŠgØˆGÜ�a˜˜TŸ[™[™Ó)ˆCØ�G‰G�L‰L˜ÔØ—‘—‘˜W S™[Ó)ˆAÙØð 	ð Ü˜Ÿ™ ›¨¯©°«Ó7�Ø˜’7Ø˜c™'�CØØ˜˜�e˜C‘i’Ø�b�q�E�Ø�ð ð �#‹gð 	ùs   ‚C#C'Ã&C'c                 óB  — t         j                  ||«      }|st        |«      S |j                  d«      }|||dz    }| j                  |z   | _        |dk(  rd| _        | j                  | _        |dz   S |dk(  rd| _        | j                  | _        |dz   S |dv s|j                  «       r|| _        | j                  | _        |dz   S |dk(  r|| _        | j                  | _        |dz   S |j                  «       r|| _        | j                  | _        |dz   S |dk(  r$d| _        d| _        | j                   | _        |dz   S |d	k(  rd| _        | j"                  | _        |dz   S |d
k(  rd| _        | j$                  | _        |dz   S | j'                  t)        |«      «       |dz   S )Nr   r   ó   %ó   /r   s   -+ó   .rL   ó   <ó   >)ÚNONSPCr~   rx   Ústartr]   rt   rs   Ú_parse_commentrr   Ú_parse_literalÚisdigitÚ_parse_numberÚ_parse_floatÚisalphaÚ_parse_keywordÚparenÚ_parse_stringÚ_parse_wopenÚ_parse_wcloseÚ
_add_tokenÚKWD©r!   r‹   Úir„   Újrƒ   s         r   rq   zPSBaseParser._parse_main  s”  € Ü�M‰M˜!˜QÓˆÙÜ�q“6ˆMØ�G‰G�A‹JˆØˆa��!‘ˆHˆØ ŸK™K¨™MˆÔØ�Š9Ø!ˆDŒNØ×.Ñ.ˆDŒLØ�Q‘3ˆJØ�$ŠYØ ˆDŒNØ×.Ñ.ˆDŒLØ�Q‘3ˆJØ�%‰Z˜1Ÿ9™9œ;ØˆDŒNØ×-Ñ-ˆDŒLØ�Q‘3ˆJØ�$ŠYØˆDŒNØ×,Ñ,ˆDŒLØ�Q‘3ˆJØ�Y‰YŒ[ØˆDŒNØ×.Ñ.ˆDŒLØ�Q‘3ˆJØ�$ŠYØ ˆDŒNØˆDŒJØ×-Ñ-ˆDŒLØ�Q‘3ˆJØ�$ŠYØ ˆDŒNØ×,Ñ,ˆDŒLØ�Q‘3ˆJØ�$ŠYØ ˆDŒNØ×-Ñ-ˆDŒLØ�Q‘3ˆJà�O‰OœC ›FÔ#Ø�Q‘3ˆJr   c                 óR   — | j                   j                  | j                  |f«       y r   )ru   Úappendrt   )r!   Úobjs     r   r    zPSBaseParser._add_tokenA  s"   € Ø�‰×Ñ˜T×.Ñ.°Ð4Ô5Ør   c                 ó  — t         j                  ||«      }|s/| xj                  ||d  z  c_        | j                  t	        |«      fS |j                  d«      }| xj                  ||| z  c_        | j                  | _        |S rW   )r}   r~   rs   r•   rx   r”   rq   rr   ©r!   r‹   r£   r„   r¤   s        r   r•   zPSBaseParser._parse_commentE  ss   € Ü�J‰J�q˜!ÓˆÙØ�NŠN˜a  ˜eÑ#�NØ×'Ñ'¬¨Q«Ð0Ð0Ø�G‰G�A‹JˆØ�Š˜!˜A˜a˜&Ñ �Ø×'Ñ'ˆŒð ˆr   c                 óà  — t         j                  ||«      }|s#| xj                  ||d  z  c_        t        |«      S |j	                  d«      }| xj                  ||| z  c_        |||dz    }|dk(  rd| _        | j                  | _        |dz   S 	 | j                  j                  d«      }| j                  t        |«      «       | j                  | _        |S # t        $ r t        r‚ d}Y ŒAw xY w)Nr   r   ó   #r   zutf-8Ú )ÚEND_LITERALr~   rs   rx   r”   ÚhexÚ_parse_literal_hexrr   r-   ÚUnicodeDecodeErrorr?   r    ÚLITrq   )r!   r‹   r£   r„   r¤   rƒ   Úutokens          r   r–   zPSBaseParser._parse_literalQ  sà   € Ü×Ñ˜q !Ó$ˆÙØ�NŠN˜a  ˜eÑ#�NÜ�q“6ˆMØ�G‰G�A‹JˆØ�Š˜!˜A˜a˜&Ñ �Øˆa��!‘ˆHˆØ�Š9ØˆDŒHØ×2Ñ2ˆDŒLØ�Q‘3ˆJð	à—^‘^×*Ñ*¨7Ó3ˆFð
 	�‰œ˜F›Ô$Ø×'Ñ'ˆŒØˆøô "ò 	å�uØŠFð	ús   ÂC ÃC-Ã,C-c                 ód  — |||dz    }t         j                  |«      r2t        | j                  «      dk  r| xj                  |z  c_        |dz   S | j                  r4	 | xj                  t        t        | j                  d«      g«      z  c_        | j                  | _	        |S # t        $ r Y Œw xY w)Nr   r‡   é   )
ÚHEXÚmatchrx   r®   rs   ÚbytesÚintÚ
ValueErrorr–   rr   ©r!   r‹   r£   rƒ   s       r   r¯   zPSBaseParser._parse_literal_hexi  s–   € Øˆa��!‘ˆHˆÜ�9‰9�QŒ<œC §¡›M¨AÒ-Ø�HŠH˜‰M�HØ�Q‘3ˆJØ�8Š8ðØ—’¤%¬¨T¯X©X°rÓ):Ð(;Ó"<Ñ<•ð ×*Ñ*ˆŒØˆøô ò Ùðús   Á3B# Â#	B/Â.B/c                 óÈ  — t         j                  ||«      }|s#| xj                  ||d  z  c_        t        |«      S |j	                  d«      }| xj                  ||| z  c_        |||dz    }|dk(  r+| xj                  |z  c_        | j
                  | _        |dz   S 	 | j                  t        | j                  «      «       | j                  | _        |S # t        $ r Y Œw xY w)Nr   r   r�   )Ú
END_NUMBERr~   rs   rx   r”   r™   rr   r    r¸   r¹   rq   r¢   s         r   r˜   zPSBaseParser._parse_numberv  sÑ   € Ü×Ñ˜a Ó#ˆÙØ�NŠN˜a  ˜eÑ#�NÜ�q“6ˆMØ�G‰G�A‹JˆØ�Š˜!˜A˜a˜&Ñ �Øˆa��!‘ˆHˆØ�Š9Ø�NŠN˜aÑ�NØ×,Ñ,ˆDŒLØ�Q‘3ˆJð	Ø�O‰OœC §¡Ó/Ô0ð ×'Ñ'ˆŒØˆøô ò 	Ùð	ús   Â$C Ã	C!Ã C!c                 óX  — t         j                  ||«      }|s#| xj                  ||d  z  c_        t        |«      S |j	                  d«      }| xj                  ||| z  c_        	 | j                  t        | j                  «      «       | j                  | _	        |S # t        $ r Y Œw xY wrW   )
r¼   r~   rs   rx   r”   r    Úfloatr¹   rq   rr   r©   s        r   r™   zPSBaseParser._parse_float‰  s—   € Ü×Ñ˜a Ó#ˆÙØ�NŠN˜a  ˜eÑ#�NÜ�q“6ˆMØ�G‰G�A‹JˆØ�Š˜!˜A˜a˜&Ñ �ð	Ø�O‰OœE $§.¡.Ó1Ô2ð ×'Ñ'ˆŒØˆøô ò 	Ùð	ús   Á&$B Â	B)Â(B)c                 ó„  — t         j                  ||«      }|s#| xj                  ||d  z  c_        t        |«      S |j	                  d«      }| xj                  ||| z  c_        | j                  dk(  rd}n'| j                  dk(  rd}nt        | j                  «      }| j                  |«       | j                  | _        |S )Nr   s   trueTs   falseF)	ÚEND_KEYWORDr~   rs   rx   r”   r¡   r    rq   rr   ©r!   r‹   r£   r„   r¤   Útokens         r   r›   zPSBaseParser._parse_keyword—  s£   € Ü×Ñ˜q !Ó$ˆÙØ�NŠN˜a  ˜eÑ#�NÜ�q“6ˆMØ�G‰G�A‹JˆØ�Š˜!˜A˜a˜&Ñ �Ø�>‰>˜WÒ$Ø‰EØ�^‰^˜xÒ'Ø‰Eä˜Ÿ™Ó'ˆEØ�‰˜ÔØ×'Ñ'ˆŒØˆr   c                 óh  — t         j                  ||«      }|s#| xj                  ||d  z  c_        t        |«      S |j	                  d«      }| xj                  ||| z  c_        |||dz    }|dk(  rd| _        | j                  | _        |dz   S |dk(  r/| xj                  dz  c_        | xj                  |z  c_        |dz   S |dk(  r;| xj                  dz  c_        | j                  r| xj                  |z  c_        |dz   S | j                  | j                  «       | j                  | _        |dz   S )Nr   r   rN   r   rL   rM   )Ú
END_STRINGr~   rs   rx   r”   ÚoctÚ_parse_string_1rr   rœ   r    rq   r¢   s         r   r�   zPSBaseParser._parse_string¨  s  € Ü×Ñ˜a Ó#ˆÙØ�NŠN˜a  ˜eÑ#�NÜ�q“6ˆMØ�G‰G�A‹JˆØ�Š˜!˜A˜a˜&Ñ �Øˆa��!‘ˆHˆØ�Š:ØˆDŒHØ×/Ñ/ˆDŒLØ�Q‘3ˆJØ�Š9Ø�JŠJ˜!‰O�JØ�NŠN˜aÑ�NØ�Q‘3ˆJØ�Š9Ø�JŠJ˜!‰O�JØ�zŠzØ—’ !Ñ#•Ø˜‘s�
Ø�‰˜Ÿ™Ô'Ø×'Ñ'ˆŒØ�‰sˆ
r   c                 óØ  — |||dz    }t         j                  |«      r2t        | j                  «      dk  r| xj                  |z  c_        |dz   S | j                  rG	 | xj                  t        t        | j                  d«      g«      z  c_        | j                  | _	        |S |t        v r| xj                  t        |   z  c_        | j                  | _	        |dz   S # t        $ r Y ŒXw xY w)Nr   é   é   )Ú
OCT_STRINGr¶   rx   rÅ   rs   r·   r¸   r¹   r�   rr   Ú
ESC_STRINGrº   s       r   rÆ   zPSBaseParser._parse_string_1Á  sÈ   € Øˆa��!‘ˆHˆÜ×Ñ˜AÔ¤3 t§x¡x£=°1Ò#4Ø�HŠH˜‰M�HØ�Q‘3ˆJØ�8Š8ðØ—’¤%¬¨T¯X©X°qÓ)9Ð(:Ó";Ñ;•ð  ×-Ñ-ˆDŒLØˆHØ”
‰?Ø�NŠNœj¨™mÑ+�NØ×)Ñ)ˆŒØ�‰sˆ
øô ò Ùðús   Á3C Ã	C)Ã(C)c                 óœ   — |||dz    }|dk(  r-| j                  t        «       | j                  | _        |dz  }|S | j                  | _        |S )Nr   r‘   )r    ÚKEYWORD_DICT_BEGINrq   rr   Ú_parse_hexstringrº   s       r   rž   zPSBaseParser._parse_wopenÒ  sV   € Øˆa��!‘ˆHˆØ�Š9Ø�O‰OÔ.Ô/Ø×+Ñ+ˆDŒLØ�‰FˆAð ˆð  ×0Ñ0ˆDŒLØˆr   c                 óv   — |||dz    }|dk(  r| j                  t        «       |dz  }| j                  | _        |S )Nr   r’   )r    ÚKEYWORD_DICT_ENDrq   rr   rº   s       r   rŸ   zPSBaseParser._parse_wcloseÜ  s@   € Øˆa��!‘ˆHˆØ�Š9Ø�O‰OÔ,Ô-Ø�‰FˆAØ×'Ñ'ˆŒØˆr   c                 óœ  — t         j                  ||«      }|s#| xj                  ||d  z  c_        t        |«      S |j	                  d«      }| xj                  ||| z  c_        	 t
        j                  d„ t        j                  d| j                  «      «      }| j                  |«       | j                  | _        |S # t        $ r Y Œw xY w)Nr   c                 óL   — t        t        | j                  d«      d«      g«      S )Nr   r´   )r·   r¸   Úgroup)r„   s    r   ú<lambda>z/PSBaseParser._parse_hexstring.<locals>.<lambda>ì  s   € ¬5´#°a·g±g¸a³jÀ"Ó2EÐ1FÓ+G€ r   r   )ÚEND_HEX_STRINGr~   rs   rx   r”   ÚHEX_PAIRÚsubÚSPCr    r¹   rq   rr   rÁ   s         r   rÎ   zPSBaseParser._parse_hexstringä  s±   € Ü×!Ñ! ! QÓ'ˆÙØ�NŠN˜a  ˜eÑ#�NÜ�q“6ˆMØ�G‰G�A‹JˆØ�Š˜!˜A˜a˜&Ñ �ð	Ü—L‘LÑ!GÜ!$§¡¨¨d¯n©nÓ!=ó?ˆEà�O‰O˜EÔ"ð ×'Ñ'ˆŒØˆøô ò 	Ùð	ús   Á&AB? Â?	CÃ
Cc                 ó,  — | j                   sH| j                  «        | j                  | j                  | j                  «      | _        | j                   sŒH| j                   j                  d«      }| j                  rt        j                  d|›�«       |S )Nr   znexttoken: )ru   rz   rr   rp   rd   Úpopro   rg   )r!   rÂ   s     r   Ú	nexttokenzPSBaseParser.nexttokenô  sf   € Ø—,’,Ø�L‰LŒNØŸ<™<¨¯©°$·,±,Ó?ˆDŒLð —,“,ð —‘× Ñ  Ó#ˆØ�:Š:Ü�MŠM©UÐ4Ô5Øˆr   )NéP   )r   r	   r
   r   ry   ro   r"   r&   r_   rb   re   rm   rY   rz   r…   rŒ   rq   r    r•   r–   r¯   r˜   r™   r›   r�   rÆ   rž   rŸ   rÎ   rÛ   r   r   r   rU   rU   Ÿ   s‹   „ ñà€Fà€Eòò
Wòòò(óòò"	ò"ò<ò2*òXò
òò0òò&òò"ò2ò"òòó r   rU   c                   óN   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zy)ÚPSStackParserc                 óP   — t         j                  | |«       | j                  «        y r   )rU   r"   ÚresetrZ   s     r   r"   zPSStackParser.__init__  s   € Ü×Ñ˜d BÔ'Ø�
‰
ŒØr   c                 ó<   — g | _         d | _        g | _        g | _        y r   )ÚcontextÚcurtypeÚcurstackÚresultsr%   s    r   rà   zPSStackParser.reset  s!   € ØˆŒØˆŒØˆŒØˆŒØr   c                 óP   — t         j                  | |«       | j                  «        y r   )rU   rY   rà   rv   s     r   rY   zPSStackParser.seek  s   € Ü×Ñ˜$ Ô$Ø�
‰
ŒØr   c                 ó:   — | j                   j                  |«       y r   )rä   Úextend©r!   Úobjss     r   ÚpushzPSStackParser.push  s   € Ø�‰×Ñ˜TÔ"Ør   c                 óF   — | j                   | d  }g | j                   | d  |S r   ©rä   )r!   rk   rê   s      r   rÚ   zPSStackParser.pop  s+   € Ø�}‰}˜a˜R˜SÐ!ˆØˆ�‰�q�b�cÐØˆr   c                 ó,   — | j                   }g | _         |S r   rí   ré   s     r   ÚpopallzPSStackParser.popall  s   € Ø�}‰}ˆØˆŒØˆr   c                 ó‚   — | j                   rt        j                   d|›�«       | j                  j                  |«       y )Nzadd_results: )ro   rg   rå   rè   ré   s     r   Úadd_resultszPSStackParser.add_results!  s-   € Ø�:Š:Ü�MŠM©tÐ5Ô6Ø�‰×Ñ˜DÔ!Ør   c                 óÔ   — | j                   j                  || j                  | j                  f«       |g c| _        | _        | j                  rt        j                  d|›d|›�«       y )Nzstart_type: pos=ú, type=)râ   r¦   rã   rä   ro   rg   )r!   rj   Útypes      r   Ú
start_typezPSStackParser.start_type'  sN   € Ø�‰×Ñ˜S $§,¡,°·±Ð>Ô?Ø)-¨rÐ%ˆŒ�t”}Ø�:Š:Ü�MŠMº3ÁÐEÔFØr   c                 óJ  — | j                   |k7  rt        d| j                   ›d|›�«      ‚| j                  D ��cg c]  \  }}|‘Œ	 }}}| j                  j	                  «       \  }| _         | _        | j
                  rt        j
                  d|›d|›d|›�«       ||fS c c}}w )NzType mismatch: z != zend_type: pos=ró   z, objs=)rã   r   rä   râ   rÚ   ro   rg   )r!   rô   Ú_r§   rê   rj   s         r   Úend_typezPSStackParser.end_type.  sƒ   € Ø�<‰<˜4ÒÝ¸4¿<»<ÉÐNÓOÐOØ$(§M¡M×2™˜˜C’Ð2ˆÑ2Ø-1¯\©\×-=Ñ-=Ó-?Ñ*ˆˆdŒl˜DœMØ�:Š:Ü�MŠMÂ#ÂtÉTÐRÔSØ�Tˆ{Ðùó	 3s   ºBc                  ó   — y r   r   )r!   rj   rÂ   s      r   Ú
do_keywordzPSStackParser.do_keyword7  r`   r   c                 óÒ  — | j                   �sØ| j                  «       \  }}t        |t        t        t
        t        t        f«      r| j                  ||f«       �n_|t        k(  r| j                  |d«       �nB|t        k(  r#	 | j                  | j                  d«      «       �n|t        k(  r| j                  |d«       nú|t         k(  rd	 | j                  d«      \  }}t#        |«      dz  dk7  rt%        d|›�«      ‚t'        d„ t)        d|«      D «       «      }| j                  ||f«       n�|t*        k(  r| j                  |d«       nq|t,        k(  r"	 | j                  | j                  d«      «       nF| j.                  r(t1        j.                  d|›d	|›d
| j2                  ›�«       | j5                  ||«       | j6                  r�ŒÇ| j9                  «        | j                   s�ŒØ| j                   j;                  d«      }| j.                  rt1        j.                  d|›�«       |S # t        $ r
 t        r‚ Y Œw xY w# t        $ r
 t        r‚ Y Œ•w xY w# t        $ r
 t        r‚ Y Œ«w xY w)zÄYields a list of objects.

        Returns keywords, literals, strings, numbers, arrays and dictionaries.
        Arrays and dictionaries are represented as Python lists and dictionaries.
        ÚaÚdr‡   r   zInvalid dictionary construct: c              3   óB   K  — | ]  \  }}|€Œ	t        |«      |f–— Œ y ­wr   )rC   )Ú.0ÚkÚvs      r   ú	<genexpr>z+PSStackParser.nextobject.<locals>.<genexpr>Z  s#   è ø€ Òc±f°q¸!ÐUVÑUbœl¨1›o¨qÔ1Ñcùs   ‚
�Úpzdo_keyword: pos=z, token=z, stack=znextobject: )rå   rÛ   r>   r¸   r¾   Úboolr·   r   rë   ÚKEYWORD_ARRAY_BEGINrõ   ÚKEYWORD_ARRAY_ENDrø   r   r?   rÍ   rÐ   rx   r   r2   r   ÚKEYWORD_PROC_BEGINÚKEYWORD_PROC_ENDro   rg   rä   rú   râ   r_   rÚ   )r!   rj   rÂ   rê   rý   r§   s         r   Ú
nextobjectzPSStackParser.nextobject:  s
  € ð —,“,ØŸ>™>Ó+‰LˆS�%ä˜%¤#¤u¬d´E¼9Ð!EÔFà—	‘	˜3 ˜,Ö'ØÔ-Ò-à—‘  SÖ)ØÔ+Ò+ðØ—I‘I˜dŸm™m¨CÓ0Ö1ð Ô,Ò,à—‘  SÕ)ØÔ*Ò*ð	Ø"&§-¡-°Ó"4‘K�S˜$Ü˜4“y 1‘}¨Ò)Ý+ÑRVÐ,XÓYÐYäÑcÄÈÈDÓ@QÔcÓc�AØ—I‘I˜s A˜hÕ'ð Ô,Ò,à—‘  SÕ)ØÔ*Ò*ðØ—I‘I˜dŸm™m¨CÓ0Õ1ð
 —:’:Ü—M’MÚ#&ª¨t¯}ª}ð#>ô ?à—‘  UÔ+Ø�|Š|Ùà—
‘
”ðc —,”,ðd �l‰l×Ñ˜qÓ!ˆØ�:Š:Ü�MŠM©cÐ3Ô4Øˆ
øôQ #ò ÝØñ ðûô #ò ÝØñ ðûô #ò ÝØñ ðús7   Â H' Ã
A"H= Å I È'H:È9H:È=IÉIÉI&É%I&N)r   r	   r
   r"   rà   rY   rë   rÚ   rï   rñ   rõ   rø   rú   r	  r   r   r   rÞ   rÞ      s9   „ òò
òò
òò
ò
òòòó;r   rÞ   c                   óì  — e Zd ZdZg d ed«      f‘d ed«      f‘d ed«      f‘d ed	«      f‘d
 ed«      f‘d ed«      f‘d ed«      f‘d ed«      f‘d ed«      f‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d ‘d!‘d"‘d#‘d$‘d%‘d& ed'«      f‘d( ed«      f‘d) ed*«      f‘d+ ed,«      f‘d-‘d. ed/«      f‘d0 ed1«      f‘d2 ed3«      f‘d4 ed5«      f‘d6‘d7‘d8 ed9«      f‘d: ed;«      f‘d< ed=«      f‘d> ed?«      f‘d@‘dA edB«      f‘Zd ed«      fd ed«      fd ed«      fd ed«      fddddddddddddd d!d"d#d$d%d( ed«      fd) ed*«      fd+dCgfd4dDdEgfd<d?dFifgZdG„ ZdH„ Z	dI„ Z
dJ„ ZyK)LÚTestPSBaseParsers  %!PS
begin end
 "  @ #
/a/BCD /Some_Name /foo#5f#xbaa
0 +1 -2 .5 1.234
(abc) () (abc ( def ) ghi)
(def\040\0\0404ghi) (bach\\slask) (foo\nbaa)
(this % is not a comment.)
(foo
baa)
(foo\
baa)
<> <20> < 40 4020 >
<abcd00
12345>
func/a/b{(c)do*}def
[ 1 (z) ! ]
<< /foo (bar) >>
é   s   beginé   s   endr´   ó   "é   ó   @é   r«   é   rü   é   ÚBCDé   Ú	Some_Nameé)   Úfoo_xbaa)é6   r   )é8   r   )é;   éþÿÿÿ)é>   g      à?)éA   gX9´Èv¾ó?)éG   s   abc)éM   r   )rÜ   s   abc ( def ) ghi)éb   s
   def   4ghi)év   s
   bach\slask)é„   ó   foo
baa)é�   s   this % is not a comment.)éª   r$  )é´   s   foobaa)é¿   r   )éÂ   ó    )éÇ   s   @@ )éÓ   s   «Í 4éâ   s   funcéæ   éè   Úbéê   r7   )éë   ó   céî   s   do*éñ   r8   éò   s   deféö   r9   )éø   r   )éú   ó   zéþ   ó   !é   r:   i  r;   i  Úfoo)i
  ó   bari  r<   r3  r   r:  r?  c                 ó°   — ddl m}  G d„ dt        «      } | ||«      «      }g }	 	 |j                  |j	                  «       «       Œ # t
        $ r Y |S w xY w)Nr   ©ÚBytesIOc                   ó   — e Zd Zd„ Zy)ú-TestPSBaseParser.get_tokens.<locals>.MyParserc                 ó>   —  | j                   | j                  «       Ž  y r   ©rñ   rï   r%   s    r   r_   z3TestPSBaseParser.get_tokens.<locals>.MyParser.flush±  ó   € Ø �× Ñ  $§+¡+£-Ò0r   N©r   r	   r
   r_   r   r   r   ÚMyParserrD  °  ó   „ ó1r   rI  )ÚiorB  rU   r¦   rÛ   r   ©r!   r‹   rB  rI  ÚparserÚrs         r   Ú
get_tokenszTestPSBaseParser.get_tokens­  s_   € Ýô	1”|ô 	1ñ ™' !›*Ó%ˆØˆð	ØØ—‘˜×)Ñ)Ó+Ô,ð øäò 	ØØˆð	úó   §!A Á	AÁAc                 ó°   — ddl m}  G d„ dt        «      } | ||«      «      }g }	 	 |j                  |j	                  «       «       Œ # t
        $ r Y |S w xY w)Nr   rA  c                   ó   — e Zd Zd„ Zy)ú.TestPSBaseParser.get_objects.<locals>.MyParserc                 ó>   —  | j                   | j                  «       Ž  y r   rF  r%   s    r   r_   z4TestPSBaseParser.get_objects.<locals>.MyParser.flushÀ  rG  r   NrH  r   r   r   rI  rS  ¿  rJ  r   rI  )rK  rB  rÞ   r¦   r	  r   rL  s         r   Úget_objectszTestPSBaseParser.get_objects¼  s_   € Ýô	1”}ô 	1ñ ™' !›*Ó%ˆØˆð	ØØ—‘˜×*Ñ*Ó,Ô-ð øäò 	ØØˆð	úrP  c                 óˆ   — | j                  | j                  «      }t        |«       | j                  || j                  «       y r   )rO  ÚTESTDATAÚprintÚassertEqualÚTOKENS)r!   Útokenss     r   Útest_1zTestPSBaseParser.test_1Ë  s2   € Ø—‘ §¡Ó/ˆÜˆfŒØ×Ñ˜ §¡Ô-Ør   c                 óˆ   — | j                  | j                  «      }t        |«       | j                  || j                  «       y r   )rU  rW  rX  rY  ÚOBJSré   s     r   Útest_2zTestPSBaseParser.test_2Ñ  s4   € Ø×Ñ §¡Ó.ˆÜˆdŒØ×Ñ˜˜tŸy™yÔ)Ør   N)r   r	   r
   rW  r¡   r±   rZ  r^  rO  rU  r\  r_  r   r   r   r  r  }  s/  „ ð€Hð(Ø‰#ˆh‹-ÐðØ™s 6›{Ð+ðØ.0±#°d³)¨_ðØ?AÁ3ÀtÃ9¸oðà	‰3ˆt‹9€oðà™C ›H�~ðà(*©C°«JÐ'7ðà:<¹cÀ+Ó>NÐ9Oðð 
‰3ˆz‹?Ððð %ðð '.ðð 08ðð :Cðð ð	ð  ð	ð "+ð	ð -Eð	ð
 ðð
 4ðð
 6Hðð )ðð +=ðð ?Oðð ðð ðð  -ðð /Nðð ‰C�‹LÐðð  ¡ S£˜?ðð .1±#°c³(¨Oðð ‰C�‹IÐðð $ðð '*©3¨v«;Ð%7ðð ;>¹sÀ4»yÐ9Iðð ‰C�‹KÐðð ¡ D£	Ð*ðð -5ðð 7Bðð EHÉÈTËÐCSðð ‰C�‹IÐðð ™c %›jÐ)ðð -0±°U³Ð+<ðð ?Lðð ‰C�‹JÐð€Fð  
‰3ˆs‹8€n�r™3˜u›:Ð&¨©S°Ó-=Ð(>Ø	‰3ˆz‹?Ð˜W g¨x¸Ø�< Ð,DØÐ3Ð5GØ(Ð*<Ð>NØ�+˜}Ð.MØ
‰C�‹H€o˜™S ›X�¨¨t¨f¨¸¸aÀ¸YÐ7GØ
ˆU�FˆOÐð	€Dòòòór   r  Ú__main__)0Úrerg   Úutilsr   r?   Ú	Exceptionr   r   r   r   r   r   r   r)   r/   ÚPSLiteralTableÚPSKeywordTabler6   r±   r¡   r  r  r  r  rÍ   rÐ   rC   rF   Úcompiler}   rØ   r“   rµ   r­   rÕ   rÖ   r¼   rÀ   rÄ   rÊ   rË   rU   rÞ   ÚunittestÚTestCaser  r   Úmainr   r   r   ú<module>rj     s  ðã 	Û Ý à	
€ô
	�)ô 	ô	ˆKô 	ô	�Kô 	ô	�+ô 	ô	�;ô 	÷	ñ 	ô!�ô !ô.)�ô )÷,ñ ñ( ˜yÓ)€Ù˜yÓ)€Ø×Ñ€Ø×Ñ€Ù˜“YÐ Ù�t“9Ð Ù˜$“iÐ Ù˜“IÐ Ù˜“ZÐ Ù�u“:Ð òòð €b‡j�j�Ó€Ø€b‡j�j�Ó€Ø	ˆ�‰�FÓ	€Ø€b‡j�j�Ó!€Øˆb�j‰jÐ.Ó/€Ø�—‘Ð.Ó/€Øˆ2�:‰:Ð*Ó+€ØˆR�Z‰Z˜
Ó#€
Øˆb�j‰jÐ.Ó/€ØˆR�Z‰Z˜Ó%€
ØˆR�Z‰Z˜	Ó"€
à
˜¨°wØ
˜ T°%ñ€
÷\ñ \ôBu�Lô uóp ô
X�x×(Ñ(ô Xðt ˆzÒØ€H‡M�M…Oð r   