+
    f0iK                       R t ^ RIHt ^RIHt ^RIHt ^RIHt ^RI	H
t
 ^RIHt ^RIHt ^ RIHt ^ R	It^ R	It^ R	IHu Ht ]P*                  R
,           ]P,                  ,           t]P*                  R,           ]P,                  ,           t]P2                  ! R4      t]P2                  ! R4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]
4      t ! R R]
4      t  ! R R]
4      t! ! R R]4      t"R t#R	# )z
Adds footnote handling to Python-Markdown.

See the [documentation](https://Python-Markdown.github.io/extensions/footnotes)
for details.
)annotations)	Extension)BlockProcessor)InlineProcessor)Treeprocessor)Postprocessor)util)OrderedDictNzz1337820767766393qqqq3936677670287331zzz(fnref)(\d+)z(?<!!)\[\^([^\]]*)\](?!\s*:)c                     a  ] tR t^'tRtV 3R ltR tR R ltRR R lltR R	 lt	R
 R lt
R R ltR R ltR R ltRR R lltR R ltRtV ;t# )FootnoteExtensionzFootnote Extension. c                ,  < RRR.RRR.RRR	.R
RR.RRR.RRR.RRR./V n          \        SV `  ! R/ VB  ^ V n        / V n        \        4       V n        V P                  RV P                  R4      P                  RR4      4       V P                  4        R# )zSetup configs. PLACE_MARKERz///Footnotes Go Here///z1The text string that marks where the footnotes go
UNIQUE_IDSFz9Avoid name collisions across multiple calls to `reset()`.BACKLINK_TEXTz&#8617;zCThe text string that links from the footnote to the reader's place.SUPERSCRIPT_TEXTz{}zCThe text string that links from the reader's place to the footnote.BACKLINK_TITLEz$Jump back to footnote %d in the textznThe text string used for the title HTML attribute of the backlink. %d will be replaced by the footnote number.	SEPARATOR:zFootnote separator.USE_DEFINITION_ORDERTz]Order footnote labels by definition order (True) or by document order (False). Default: True.z%dN )configsuper__init__unique_prefix
found_refsset	used_refs	setConfig	getConfigreplacereset)selfkwargs	__class__s   &,c/Users/agent/.openclaw/workspace/venv/lib/python3.14/site-packages/markdown/extensions/footnotes.pyr   FootnoteExtension.__init__*   s     )+^ R ` [! 6>
 * #!%+
6 	/"6" *,#&5 	'8H)I)Q)QRVX\)]^

    c                d   VP                  V 4       VP                  V n        Wn        VP                  P                  P	                  \        V 4      R^4       RpVP                  P	                  \        W 4      R^4       VP                  P	                  \        V 4      R^24       V P                  R4      '       g'   VP                  P	                  \        V 4      R^4       VP                  P	                  \        V 4      R^4       VP                  P	                  \        V 4      R^4       R# )zAdd pieces to Markdown. footnotez\[\^([^\]]*)\]r   zfootnote-reorderzfootnote-duplicateN)registerExtensionparsermdblockprocessorsregisterFootnoteBlockProcessorinlinePatternsFootnoteInlineProcessortreeprocessorsFootnoteTreeprocessorr    FootnoteReorderingProcessorFootnotePostTreeprocessorpostprocessorsFootnotePostprocessor)r#   r-   FOOTNOTE_REs   && r&   extendMarkdown FootnoteExtension.extendMarkdownU   s    
T"ii
		!!**+A$+GUWX (
""#:;#Mz[^_ 	""#8#>
BO
 ~~455&&'B4'HJ\^`a 	""#<T#BDXZ\] 	""#8#>
BOr(   c                   V ^8  d   QhRR/# )   returnNoner   )formats   "r&   __annotate__FootnoteExtension.__annotate__t   s      t r(   c                    . V n         \        4       V n        V ;P                  ^,          un        / V n        \        4       V n        R# )z=Clear footnotes on reset, and prepare for distinct document. N)footnote_orderr	   	footnotesr   r   r   r   r#   s   &r&   r"   FootnoteExtension.resett   s4    )+0;ar(   c               $    V ^8  d   QhRRRRRR/# )r=   	referencestrfoundboolr>   r   )r@   s   "r&   rA   rB   |   s!      C   r(   c                B   V'       g   V# TpWP                   9   d   VP                  V P                  4       ^4      w  rE\        P	                  V4      pV'       dL   RVP                  ^4      \        VP                  ^4      4      ^,           V P                  4       V3,          pK  RV^V P                  4       V3,          pK  V P                   P                  V4       W0P                  9   d"   V P                  V;;,          ^,          uu&   V# ^V P                  V&   V# )z0Get a unique reference if there are duplicates. %s%d%s%s)	r   splitget_separator	RE_REF_IDmatchgroupintaddr   )r#   rI   rK   original_refrefrestms   &&&    r&   
unique_refFootnoteExtension.unique_ref|   s     >>)!(:(:(<a@IC$A&!''!*c!''!*oa6GI[I[I]_c)dd	&#q$2D2D2F)MM	9%??*OOL)Q.)  -.DOOL)r(   c                    V ^8  d   QhRRRR/# )r=   rootetree.Elementr>   z0tuple[etree.Element, etree.Element, bool] | Noner   )r@   s   "r&   rA   rB      s      !	9r(   c                (   a a VV 3R loS! V4      pV# )z?Return ElementTree Element that contains Footnote placeholder. c                V  < V  F  pVP                   '       d6   VP                   P                  SP                  R 4      4      R8  d   WR3u # VP                  '       d6   VP                  P                  SP                  R 4      4      R8  d   WR3u # S! V4      pVf   K  Vu # 	  R# )r   TFN)textfindr    tail)elementchild	child_resfinderr#   s   &  r&   rh   :FootnoteExtension.findFootnotesPlaceholder.<locals>.finder   s     :::zzt~~n'EFK$t33:::zzt~~n'EFK$u44"5M	($$ ! r(   r   )r#   r]   resrh   s   f& @r&   findFootnotesPlaceholder*FootnoteExtension.findFootnotesPlaceholder   s    	 Tl
r(   c               $    V ^8  d   QhRRRRRR/# )r=   idrJ   rb   r>   r?   r   )r@   s   "r&   rA   rB      s!     " "c " " "r(   c                "    W P                   V&   R# )z&Store a footnote for later retrieval. NrE   )r#   rn   rb   s   &&&r&   setFootnoteFootnoteExtension.setFootnote   s    !rr(   c                    V ^8  d   QhRRRR/# )r=   rn   rJ   r>   r?   r   )r@   s   "r&   rA   rB      s     + + + +r(   c                `    WP                   9  d   V P                   P                  V4       R# R# )z6Store a footnote reference id in order of appearance. N)rD   appendr#   rn   s   &&r&   addFootnoteRef FootnoteExtension.addFootnoteRef   s'    (((&&r* )r(   c                   V ^8  d   QhRR/# )r=   r>   rJ   r   )r@   s   "r&   rA   rB      s     + +s +r(   c                $    V P                  R4      # )zGet the footnote separator. r   )r    rF   s   &r&   rP   FootnoteExtension.get_separator   s    ~~k**r(   c                    V ^8  d   QhRRRR/# )r=   rn   rJ   r>   r   )r@   s   "r&   rA   rB      s     = = = =r(   c                    V P                  R4      '       d%   RV P                  4       V P                  V3,          # RP                  V P                  4       V4      # )zReturn footnote link id. r   z	fn%s%d-%szfn{}{})r    rP   r   r@   rv   s   &&r&   makeFootnoteId FootnoteExtension.makeFootnoteId   sL    >>,''$"4"4"68J8JB!OOO??4#5#5#7<<r(   c               $    V ^8  d   QhRRRRRR/# )r=   rn   rJ   rK   rL   r>   r   )r@   s   "r&   rA   rB      s&     X XC X X Xr(   c                    V P                  R4      '       d5   V P                  RV P                  4       V P                  V3,          V4      # V P                  RP	                  V P                  4       V4      V4      # )zReturn footnote back-link id. r   zfnref%s%d-%sz	fnref{}{})r    rZ   rP   r   r@   )r#   rn   rK   s   &&&r&   makeFootnoteRefId#FootnoteExtension.makeFootnoteRefId   sg    >>,''??>T5G5G5I4K]K]_a4b#bdijj??;#5#5d6H6H6JB#OQVWWr(   c                    V ^8  d   QhRRRR/# )r=   r]   r^   r>   zetree.Element | Noner   )r@   s   "r&   rA   rB      s     ' '] '7K 'r(   c                   \        V P                  P                  4       4      '       g   R# \        P                  ! R4      pVP                  RR4       \        P                  ! VR4       \        P                  ! VR4      p\        P                  ! R4      p\        V P                  P                  4       ^R7       EF  w  rV\        P                  ! VR4      pVP                  R	V P                  V4      4       V P                  P                  W@P                  V,          4       \        V4       F%  pVP                  V4       VP                  V4       K'  	  \        P                  ! R
4      p	V	P                  RRV P                  V4      ,           4       V	P                  RR4       V	P                  RV P                  R4      P                  V4      4       \         V	n        \%        V4      '       g   EK=  VR,          p
V
P&                  R8X  d1   V
P"                  \(        ,           V
n        V
P                  V	4       EK  \        P                  ! VR4      pVP                  V	4       EK  	  V# )z.Return `div` of footnotes as `etree` Element. Ndivclassr*   hrolstartlirn   ahref#footnote-backreftitler   pra   )listrE   keysetreeElementr   
SubElement	enumerater~   r,   
parseChunkru   remover   r    r@   FN_BACKLINK_TEXTrb   lentagNBSP_PLACEHOLDER)r#   r]   r   r   surrogate_parentindexrn   r   elbacklinknoder   s   &&          r&   makeFootnotesDiv"FootnoteExtension.makeFootnotesDiv   s    DNN'')**mmE"$d#c4( ==/"4>>#6#6#8BBIE!!"d+BFF4,,R01 KK""#3^^B5GH+,		" ''+ - }}S)HLLt'='=b'A!ABLL"45LL/077> -HM2ww"v88s? $		,< <DIKK)((S1AHHX&5 C6 
r(   )r   rD   rE   r   r-   r,   r   r   )F)__name__
__module____qualname____firstlineno____doc__r   r:   r"   rZ   rk   rq   rw   rP   r~   r   r   __static_attributes____classcell__r%   s   @r&   r   r   '   sE    )VP>*("+
+=X' 'r(   r   c                     a  ] tR t^tRt]P                  ! R]P                  4      tR V 3R llt	R R lt
R R ltR	 R
 ltR R ltRtV ;t# )r0   z3Find footnote definitions and store for later use. z!^[ ]{0,3}\[\^([^\]]*)\]:[ ]*(.*)$c                   V ^8  d   QhRR/# r=   rE   r   r   )r@   s   "r&   rA   #FootnoteBlockProcessor.__annotate__   s     # #"3 #r(   c                	F   < \         SV `  VP                  4       Wn        R # N)r   r   r,   rE   )r#   rE   r%   s   &&r&   r   FootnoteBlockProcessor.__init__   s    ))*"r(   c               $    V ^8  d   QhRRRRRR/# )r=   parentr^   blockrJ   r>   rL   r   )r@   s   "r&   rA   r      s!      =   r(   c                	    R # )Tr   )r#   r   r   s   &&&r&   testFootnoteBlockProcessor.test   s    r(   c               $    V ^8  d   QhRRRRRR/# )r=   r   r^   blocks	list[str]r>   rL   r   )r@   s   "r&   rA   r      s!     # #- # #t #r(   c                B   VP                  ^ 4      pV P                  P                  V4      pV'       Ed   VP                  ^4      pVP                  ^4      .pW4P	                  4       R P                  R4      pV P                  P                  V4      pV'       d   VRVP                  4        P                  R4      p	RP                  V^ ,          V P                  V	4      .4      P                  R4      V^ &   VP                  ^ WxP                  4       R 4       M[RP                  V^ ,          V P                  V4      .4      P                  R4      V^ &   VP                  V P                  V4      4       RP                  V4      p
V P                  P                  WZP                  4       4       VRVP                  4        P                  4       '       d3   VP                  ^ VRVP                  4        P                  R4      4       R# VP                  ^ V4       R# )z,Find, set, and remove footnote definitions. N
z

TF)popREsearchrS   endlstripr   rstripjoindetabinsertstripextenddetectTabbedrE   rq   )r#   r   r   r   rY   rn   	fn_blockstherestm2beforer*   s   &&&        r&   runFootnoteBlockProcessor.run   s   

1GGNN5!1BI EEGHo,,T2G(B !"((*-44T:#yy)A,

68J)KLSSTXY	!a!56  $yy)A,

78K)LMSSTXY	!   !2!26!:;{{9-HNN&&r??+<=Zaggi &&((az	!2!9!9$!?@ar(   c                    V ^8  d   QhRRRR/# )r=   r   r   r>   r   )r@   s   "r&   rA   r     s      9  r(   c                   . pV'       d   V^ ,          P                  R4      '       d   VP                  ^ 4      pV P                  P                  V4      pV'       dh   VRVP	                  4        P                  R4      pVP                  V P                  V4      4       VP                  ^ W4P	                  4       R 4        V# VP                  V P                  V4      4       K   V# V# )zyFind indented text and remove indent before further processing.

Returns:
    A list of blocks with indentation removed.
Nr       )	
startswithr   r   r   r   r   ru   r   r   )r#   r   r   r   rY   r   s   &&    r&   r   #FootnoteBlockProcessor.detectTabbed  s     	ay##E**

1GGNN5) #:AGGI.55d;F$$TZZ%78MM!U779:%67 	 $$TZZ%67 yr(   c                    V ^8  d   QhRRRR/# )r=   r   rJ   r>   r   )r@   s   "r&   rA   r   8  s     	  	 3 	 3 	 r(   c                    VP                  R4      p\        V4       F)  w  r4VP                  R4      '       g   K  VR,          W#&   K+  	  RP                  V4      # )zwRemove one level of indent from a block.

Preserve lazily indented blocks by only removing indent from indented lines.
r   :   NNr   )rO   r   r   r   )r#   r   linesilines   &&   r&   r   FootnoteBlockProcessor.detab8  sN    
 D! 'GAu%%8 ( yyr(   rp   )r   r   r   r   r   recompile	MULTILINEr   r   r   r   r   r   r   r   r   s   @r&   r0   r0      s?    >	8",,	GB# ##J:	  	 r(   r0   c                  >   a  ] tR tRtRtR V 3R lltR R ltRtV ;t# )r2   iD  zB`InlineProcessor` for footnote markers in a document's body text. c                    V ^8  d   QhRRRR/# )r=   patternrJ   rE   r   r   )r@   s   "r&   rA   $FootnoteInlineProcessor.__annotate__G  s     # # #0A #r(   c                	2   < \         SV `  V4       W n        R # r   )r   r   rE   )r#   r   rE   r%   s   &&&r&   r    FootnoteInlineProcessor.__init__G  s    !"r(   c               $    V ^8  d   QhRRRRRR/# )r=   rY   zre.Match[str]datarJ   r>   z3tuple[etree.Element | None, int | None, int | None]r   )r@   s   "r&   rA   r   K  s"     $ $] $# $:m $r(   c                	   VP                  ^4      pW0P                  P                  P                  4       9   Ed   V P                  P                  V4       V P                  P	                  R4      '       g.   V P                  P
                  P                  V4      ^,           pMC\        V P                  P                  P                  4       4      P                  V4      ^,           p\        P                  ! R4      p\        P                  ! VR4      pVP                  RV P                  P                  VRR7      4       VP                  RRV P                  P                  V4      ,           4       VP                  R	R
4       V P                  P	                  R4      P                  V4      Vn        WQP!                  ^ 4      VP#                  ^ 4      3# R# )   r   supr   rn   T)rK   r   r   r   zfootnote-refr   )NNN)rS   rE   r   rw   r    rD   r   r   r   r   r   r   r   r~   r@   rb   r   r   )r#   rY   r   rn   footnote_numr   r   s   &&&    r&   handleMatch#FootnoteInlineProcessor.handleMatchK  sT   WWQZ))..00NN))"->>++,BCC#~~<<BB2FJ  $DNN$<$<$A$A$CDJJ2NQRR--&C  c*AGGD$..::2T:JKEE&# = =b AABEE'>*^^--.@AHHVAF
AEE!H,,##r(   rp   )	r   r   r   r   r   r   r   r   r   r   s   @r&   r2   r2   D  s    M# #$ $r(   r2   c                  V    ] tR tRtRtR R ltR R ltR R ltR	 R
 ltR R lt	Rt
R# )r6   ib  z$Amend footnote div with duplicates. c                   V ^8  d   QhRR/# r   r   )r@   s   "r&   rA   &FootnotePostTreeprocessor.__annotate__e       # #"3 #r(   c                	    Wn         R # r   rp   r#   rE   s   &&r&   r   "FootnotePostTreeprocessor.__init__e      "r(   c               $    V ^8  d   QhRRRRRR/# )r=   r   r^   
duplicatesrT   r>   r?   r   )r@   s   "r&   rA   r   h  s!       C D r(   c                l   VP                  R4       EF  pVP                  P                  RR4      R8X  g   K'  VP                  R,          P                  V P                  P                  4       ^4      w  rE. p\        ^V^,           4       Ft  p\        P                  ! V4      pRWGV P                  P                  4       V3,          VP                  R&   VP                  V4       V ;P                  ^,          un
        Kv  	  \        V4      R,          p	V F  pV	P                  V4       K  	   R# 	  R# )	zEAdjust current `li` and add the duplicates: `fnref2`, `fnref3`, etc. r   r    r   r   rN   Nra   )iterattribgetrO   rE   rP   rangecopydeepcopyru   offsetr   )
r#   r   r   linkrW   rX   linksr   sib_linkr   s
   &&&       r&   add_duplicates(FootnotePostTreeprocessor.add_duplicatesh  s    GGCLD{{w+/AA KK/55dnn6R6R6TVWX	 "1j1n5E#}}T2H.8CHdHdHfhl;m.mHOOF+LL*KK1$K	 6 "Xb\!DIIdO "! !r(   c                    V ^8  d   QhRRRR/# )r=   r   r^   r>   rT   r   )r@   s   "r&   rA   r   |  s     9 9] 9s 9r(   c                .   VP                   P                  RR4      P                  V P                  P	                  4       ^4      w  r#RP                  W P                  P	                  4       V4      pV P                  P                  P                  V^ 4      # )z2Get the number of duplicate refs of the footnote. rn   r   z	{}ref{}{})r   r   rO   rE   rP   r@   r   )r#   r   fnrX   link_ids   &&   r&   get_num_duplicates,FootnotePostTreeprocessor.get_num_duplicates|  so    99==r*001M1M1OQRS$$R)E)E)GN~~((,,Wa88r(   c                    V ^8  d   QhRRRR/# r=   r   r^   r>   r?   r   )r@   s   "r&   rA   r     s     / / /$ /r(   c                    \        V4       F.  pV P                  V4      pV^8  g   K  V P                  W#4       K0  	  R# )z<Find duplicate footnotes and format and add the duplicates. N)r   r  r  )r#   r   r   counts   &&  r&   handle_duplicates+FootnotePostTreeprocessor.handle_duplicates  s7    v,B ++B/Eqy##B. r(   c                    V ^8  d   QhRRRR/# r=   r]   r^   r>   r?   r   )r@   s   "r&   rA   r     s     	 	 	$ 	r(   c                    ^ V n         VP                  R4       FP  pVP                  P                  RR4      R8X  g   K&  VP                  R4       F  pV P	                  V4        KN  	  KR  	  R# )z<Crawl the footnote div and add missing duplicate footnotes. r   r   r   r*   r   N)r  r   r   r   r  )r#   r]   r   r   s   &&  r&   r   FootnotePostTreeprocessor.run  sX    99U#Czz~~gr*j8 ((4.B**2. )	 $r(   )rE   r  N)r   r   r   r   r   r   r  r  r  r   r   r   r(   r&   r6   r6   b  s#    /#(9/	 	r(   r6   c                  2    ] tR tRtRtR R ltR R ltRtR# )	r4   i  z2Build and append footnote div to end of document. c                   V ^8  d   QhRR/# r   r   )r@   s   "r&   rA   "FootnoteTreeprocessor.__annotate__  r   r(   c                	    Wn         R # r   rp   r   s   &&r&   r   FootnoteTreeprocessor.__init__  r   r(   c                    V ^8  d   QhRRRR/# r  r   )r@   s   "r&   rA   r    s     * * *$ *r(   c                	   V P                   P                  V4      pVe   V P                   P                  V4      pV'       dn   Vw  rEp\        V4      P	                  V4      pV'       d%   VP                  V4       VP                  Wr4       R # VP                  V^,           V4       R Vn        R # VP                  V4       R # R # r   )	rE   r   rk   r   r   r   r   rd   ru   )r#   r]   footnotesDivresultrf   r   isTextinds   &&      r&   r   FootnoteTreeprocessor.run  s    ~~66t<#^^<<TBF(.%v6l((/MM%(MM#4MM#'<8!%EJL) $r(   rp   Nr   r   r   r   r   r   r   r   r   r(   r&   r4   r4     s    =#* *r(   r4   c                  >    ] tR tRtRtR R ltR R ltR R ltR	tR
# )r5   i  z)Reorder list items in the footnotes div. c                   V ^8  d   QhRR/# r   r   )r@   s   "r&   rA   (FootnoteReorderingProcessor.__annotate__  r   r(   c                	    Wn         R # r   rp   r   s   &&r&   r   $FootnoteReorderingProcessor.__init__  r   r(   c                    V ^8  d   QhRRRR/# r  r   )r@   s   "r&   rA   r&    s       $ r(   c                	l   V P                   P                   '       g   R # V P                   P                  \        V P                   P                   P                  4       4      8w  dP   VP	                  R4       F8  pVP
                  P                  RR4      R8X  g   K&  V P                  V4        R # 	  R # R # )Nr   r   r   r*   )rE   rD   r   r   r   r   r   reorder_footnotes)r#   r]   r   s   && r&   r   FootnoteReorderingProcessor.run  s    ~~'''>>((D1I1I1N1N1P,QQyy'::>>'2.*<**3/ ( Rr(   c                    V ^8  d   QhRRRR/# r  r   )r@   s   "r&   rA   r&    s     " " "$ "r(   c                	  a  VP                  R 4      pVP                  V4       VP                  R4      pR V 3R llp\        W4R7      p\        P
                  ! VR 4      p\        V^R7       Fa  w  rgVP                  R4      pVP                  RS P                  P                  R4      P                  V4      4       VP                  V4       Kc  	  R	# )
r   r   c                   V ^8  d   QhRR/# )r=   r>   rT   r   )r@   s   "r&   rA   CFootnoteReorderingProcessor.reorder_footnotes.<locals>.__annotate__  s     	 	s 	r(   c                X  < V P                   P                  R R4      P                  SP                  P	                  4       ^4      R,          pVSP                  P
                  9   d&   SP                  P
                  P                  V4      # \        SP                  P                  4      # )rn   r   ra   )r   r   rO   rE   rP   rD   r   r   )r   rn   r#   s   & r&   order_by_idBFootnoteReorderingProcessor.reorder_footnotes.<locals>.order_by_id  s    tR(..t~~/K/K/MqQRTUB 666 --33B7 112r(   )keyr   z.//a[@class="footnote-backref"]r   r   N)rc   r   findallsortedr   r   r   r   rE   r    r@   ru   )	r#   r   old_listitemsr2  new_listr   itemr   s	   f&       r&   r+  -FootnoteReorderingProcessor.reorder_footnotes  s    ;;t$h  &	 	 u.##FD1$U!4KEyy!BCHLL$..":":;K"L"S"STY"Z[OOD! 5r(   rp   N)	r   r   r   r   r   r   r   r+  r   r   r(   r&   r5   r5     s    4#" "r(   r5   c                  2    ] tR tRtRtR R ltR R ltRtR# )	r8   i  z)Replace placeholders with html entities. c                   V ^8  d   QhRR/# r   r   )r@   s   "r&   rA   "FootnotePostprocessor.__annotate__  r   r(   c                	    Wn         R # r   rp   r   s   &&r&   r   FootnotePostprocessor.__init__  r   r(   c                    V ^8  d   QhRRRR/# )r=   rb   rJ   r>   r   )r@   s   "r&   rA   r>    s     8 8 8 8r(   c                	    VP                  \        V P                  P                  R 4      4      pVP                  \        R4      # )r   z&#160;)r!   r   rE   r    r   )r#   rb   s   &&r&   r   FootnotePostprocessor.run  s8    ||dnn66G
 ||,h77r(   rp   Nr#  r   r(   r&   r8   r8     s    4#8 8r(   r8   c                     \        R/ V B # )z.Return an instance of the `FootnoteExtension` r   )r   )r$   s   ,r&   makeExtensionrE    s    &v&&r(   )$r   
__future__r   r   r   r.   r   inlinepatternsr   r3   r   r7   r   r   collectionsr	   r   r   xml.etree.ElementTreer   ElementTreeSTXETXr   r   r   rQ   RE_REFERENCEr   r0   r2   r6   r4   r5   r8   rE  r   r(   r&   <module>rN     s    #  , , * *  # 	  % %8844txx? 8844txx? JJ'	zz9:@	 @FW ^ W t$o $<2 2j*M *.#"- #"L	8M 	8'r(   