+
    
4i$                     &   ^ RI t ^ RIt ^ RIt^ RIt^ RIt^ RIHt ^ RIHtH	t	H
t
HtHtHtHtHtHtHt ^ RIHt ^ RIHtHtHt ]]
]	]]3,          ,          .]
]	]]3,          ,          3,          t]'       d   ^ RIHt ^ RIHt R^R	R/R
 ltRR/R lt]P>                  R8  g	   ]'       d   ] P
                  P                  ],          t M( ! R R] P
                  P                  ]],          ]4      t  ! R R] ],          ]],          4      t!RR lt"R# )    N)ABC)
OptionalUnionIterableCallableTYPE_CHECKINGIteratorTypecastListGeneric)T)TERTokenOrElementDeb822Element)Deb822Tokenend_marker_afteroutput_functionc          	        ^ RI Hp Rp\        W4      '       d   V .p ^ R\        V 4      3.p^ pVf   \        P
                  pV'       Ed#   VR,          w  rxp	V	 F  p
V^,          pVf   R\        V4      ,          p\        W4      '       df   VP                  WjP                  P                  \        V
P                  4       4      34       V! WJP                  P                  ,           4       Rp K  V! V\        V
4      ,           4       K  	  VP                  4        RpVf   K  Wq,           V8:  g   K  V'       g   K  Vf   R\        V4      ,          pV! VR,           V,           4       EK+  R# )aN  Debugging aid, which can dump a Deb822Element or a list of tokens/elements

:param ast_tree: Either a Deb822Element or an iterable Deb822Token/Deb822Element entries
  (both types may be mixed in the same iterable, which enable it to dump the
  ast tree at different stages of parse_deb822_file method)
:param end_marker_after: The dump will add "end of element" markers if a
  given element spans at least this many tokens/elements. Can be disabled
  with by passing None as value. Use 0 for unconditionally marking all
  elements (note that tokens never get an "end of element" marker as they
  are not an elements).
:param output_function: Callable that receives a single str argument and is responsible
  for "displaying" that line. The callable may be invoked multiple times (one per line
  of output).  Defaults to logging.info if omitted.

r   N z  z# <-- END OF )debian._deb822_repro.parsingr   
isinstanceiterlogginginfolenappend	__class____name__
iter_partsstrpop)ast_treer   r   r   prefixstack
current_nostart_nonamecurrent_itercurrents   &$$        </usr/lib/python3/dist-packages/debian/_deb822_repro/_util.py	print_astr/      s4   . ;F(**:T(^$%EJ!,,
%',Ry$#G!OJ~E
*'11j*;*;*D*Dd7K]K]K_F`ab):):)C)C CDFS\12 $ IIKF+0Kz0Y^b^b>!CJ.F 84 ?@'     constructorc               >   a a Vf   \        RV4      oMVoVV 3R lpV# )zCombines runs of one type into another type

This is primarily useful for transforming tokens (e.g, Comment tokens) into
the relevant element (such as the Comment element).
zCallable[[List[TE]], R]c              3      <"   . pV  FW  p\        VS4      '       d   VP                  V4       K(  V'       d$   S! \        V4      4      x  VP                  4        Vx  KY  	  V'       d   S! V4      x  R # R # 5iN)r   r    listclear)token_streamtokenstoken_constructorsource_classs   &  r.   _impl'combine_into_replacement.<locals>._impl_   sf     !E%..e$"4<00K " v&& s   4A92A9+A9)r   )r;   replacement_classr1   r<   r:   s   f&$ @r.   combine_into_replacementr?   N   s,     57HI #'  Lr0   c                       ] tR t^wtRtR# )_bufferingIterator_Base N)r"   
__module____qualname____firstlineno____static_attributes__rB   r0   r.   rA   rA   w   s    r0   rA   c                   `   a  ] tR t^{t o R tR tR tR tR tRR lt	R t
R	 tR
 tR tRtV tR# )BufferingIteratorc                h    \        V4      V n        \        P                  ! 4       V n        R V n        R# )FN)r   _streamcollectionsdeque_buffer_expired)selfstreams   &&r.   __init__BufferingIterator.__init__}   s$    F|"((*r0   c                    V P                   '       d   V P                   P                  4       # V P                  '       d   \        h\	        V P
                  4      # r4   )rM   popleftrN   StopIterationnextrJ   rO   s   &r.   __next__BufferingIterator.__next__   s<    <<<<<''))===DLL!!r0   c              #     "   V P                   pV'       g   V P                  ^4      '       d0   V^ ,          pV! V4      '       d   VP                  4        Vx  KL  R# R# 5i)zVVariant of itertools.takewhile except it does not discard the first non-matching tokenN)rM   _fill_bufferrT   )rO   	predicatebuffervs   &&  r.   	takewhileBufferingIterator.takewhile   sL      ))!,,q	A||  -s   AAAAc                   V P                  V4       V P                  p\        V4      V8X  d   \        V4      pVP	                  4        V# . pV'       d3   V'       d+   VP                  VP                  4       4       V^,          pK:  V#    )r[   rM   r   r5   r6   r    rT   )rO   countr]   rets   &&  r.   consume_manyBufferingIterator.consume_many   sk    % v;%v,CLLN 
	 CU

6>>+,

r0   c                ,    \        V P                  4      # r4   )r5   rM   rW   s   &r.   peek_bufferBufferingIterator.peek_buffer   s    DLL!!r0   Nc                    V P                   p^ pVe   WB8  de   V\        V4      8  d+   V P                  V^,           4       V\        V4      8  d   R# W4,          pV! V4      '       d
   V^,           # V^,          pKn  R# )r   N)rM   r   r[   )rO   r\   limitr]   ir^   s   &&&   r.   	peek_findBufferingIterator.peek_find   sm    
 mqyCK!!!a%(F#	A||1uFAr0   c                   V P                   '       gL   \        V P                  4      V8  d2    V P                  P                  \	        V P
                  4      4       KK  \        V P                  4      #   \         d    R T n          K*  i ; i)T)rN   r   rM   r    rV   rJ   rU   bool)rO   numbers   &&r.   r[   BufferingIterator._fill_buffer   sh    }}}dll#f,LL''T\\(:; DLL!! % $(DMs   .A3 3B	B	c                $    V P                  ^4      # rb   )peek_atrW   s   &r.   peekBufferingIterator.peek   s    ||Ar0   c                    V P                  V4       \        V P                  4      V8  d   V P                  V^,
          ,          # R# )rc   N)r[   r   rM   )rO   tokens_aheads   &&r.   ru   BufferingIterator.peek_at   s:    ,'14T\\1Bl1Rt||L1,-\X\\r0   c                    V P                  V4       V P                  p\        V4      V8X  d   \        V4      pV# V'       d4   . pV F(  pVP	                  V4       V^,          pV'       d   K'   V# 	   V# . pV# rb   )r[   rM   r   r5   r    )rO   rr   r]   re   ts   &&   r.   	peek_manyBufferingIterator.peek_many   s    &!v;& v,C 
 C

1!v 
  
 C
r0   )rM   rN   rJ   r4   )r"   rC   rD   rE   rQ   rX   r_   rf   ri   rn   r[   rv   ru   r}   rF   __classdictcell__)__classdict__s   @r.   rH   rH   {   s=     "
"$	"]
 r0   rH   c              #    "   Vf   \        V 4      p^ pV FG  p \        RV4      P                  4       pV F  pV\        VP                  4      ,          pK!  	  Vx  KI  	  W28w  dk   W28  d3   \
        P                  ! R4      P                  W2V R7      p\        V4      h\
        P                  ! R4      P                  W2V R7      p\        V4      hR#   \         d,    \        RT4      pT\        TP                  4      ,          p Li ; i5i)zOFlatten a parser's output into tokens and verify it covers the entire line/textNr   r   z            Value parser did not fully cover the entire line with tokens (
            missing range {covered}..{content_len}).  Occurred when parsing "{content}"
            )coveredcontent_lencontentz                    Value parser emitted tokens for more text than was present?  Should have
                     emitted {content_len} characters, got {covered}. Occurred when parsing
                     "{content}"
                    )	r   r   iter_tokenstextAttributeErrortextwrapdedentformat
ValueError)r   rP   r   r   token_or_elementr8   r9   msgs   &&&     r.   len_check_iteratorr      s     'lG"	+/+;<HHJF
  3uzz?*   #  // #  'R  S/!oo    RYZ	 	
 o   	'(89Es5::&G	's(   DCBD3D	DD		D)   	   r4   )#rK   collections.abcr   sysr   abcr   typingr   r   r   r   r   r	   r
   r   r   r   debian._utilr   debian._deb822_repro.typesr   r   r   _combine_parts_ret_typer   r   debian._deb822_repro.tokensr   r/   r?   version_inforA   rH   r   rB   r0   r.   <module>r      s      
      < <"eNB&'()U>1$%&' 
 :72A 2A #2Aj! *.!H v)oo66q9+//":":GAJ c/2GAJ cL"r0   