ó
    �®žj—Ò ã                  óR  • % S SK Jr  S SKrS SKrS SKrS SKrS SKJr  S SKJ	r	  S SK
JrJr  S SKJr  S SKJr  S SKJrJrJrJrJrJrJr  S S	KJr  S S
KJr  S SKJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9  S SK:J;r;J<r<J=r=J>r>  S SK?J@r@  S SKAJBrBJCrCJDrD  S SKEJFrFJGrG  S SKHJIrI  S SKJJKrK  S SKLJMrM  S SKNJOrO  S SKPJQrQ  S SKRJSrS  S SKTJUrUJVrVJWrW  SrXS\YS'   SrZS\YS'    S SK[J\r\J]r]J^r^J_r_  S SK`Jara  SrXSrd\RÊ                  " \f5      rgS rhS!riS!rj1 S"krkS#\YS$'   1 S%krl1 S&krmS#\YS''   S(S0S(S0S)S0S)S0S)S0S*S0S*S0S+S0S+S0S,\>RÜ                  0S,\>RÞ                  0S-.\m V s0 s H  o 0 _M     sn ErpS#\YS.'   S/rqS#\YS0'   S1rrS#\YS2'   S3rsS#\YS4'   \Rè                  " S55      ruS#\YS6'   \Rè                  " S75      rvS#\YS8'   \Rè                  " S95      rwS#\YS:'   1 S;krxS#\YS<'   1 S=kryS#\YS>'   1 S?krzS#\YS@'   1 SAkr{S#\YSB'   \" SSC9 " SD SE5      5       r|\ " SF SG5      5       r}\ " SH SI5      5       r~\ " SJ SK5      5       r\ " SL SM5      5       r€\ " SN SO5      5       r� " SP SQ\C5      r‚ " SR SS\C5      rƒ " ST SU\„5      r… " SV SW\I5      r†g! \b a  rc\crZ SrcCcGN—SrcCcff = fs  sn f )Xé    )ÚannotationsN)Úcontextmanager)Údeepcopy)Ú	dataclassÚfield)ÚBytesIO)ÚPath)ÚAnyÚFinalÚIteratorÚLiteralÚOptionalÚUnionÚcast)Úurlparse)Úurl2pathname)ÚBoundingBoxÚCodeLanguageLabelÚCoordOriginÚDocItemÚDocItemLabelÚDoclingDocumentÚDocumentOriginÚ	GraphCellÚGraphCellLabelÚ	GraphDataÚ	GraphLinkÚGraphLinkLabelÚ	GroupItemÚ
GroupLabelÚPictureClassificationLabelÚPictureClassificationMetaFieldÚPictureClassificationPredictionÚPictureItemÚPictureMetaÚProvenanceItemÚRefItemÚRichTableCellÚSizeÚ	TableCellÚ	TableDataÚ	TableItemÚTextItem)ÚContentLayerÚ
FormattingÚImageRefÚScript)ÚImage)ÚAnyUrlÚ	BaseModelÚValidationError)ÚSelfÚoverride)ÚDeclarativeDocumentBackend)ÚImageResourceLoader)ÚHTMLBackendOptions)ÚInputFormat)ÚInputDocument)ÚDocumentLoadError)Ú_HINT_PREFIXESÚdetect_code_languageÚnormalize_code_languageFÚboolÚ_BS4_AVAILABLEzImportError | NoneÚ_BS4_IMPORT_ERROR)ÚBeautifulSoupÚNavigableStringÚPageElementÚTag)ÚPreformattedStringTzzThe 'beautifulsoup4' package is required to process HTML files. Install it with `pip install 'docling-slim[format-html]'`.u   î€€é€   >   ÚpÚdlÚh1Úh2Úh3Úh4Úh5Úh6ÚolÚulÚimgÚpreÚstampÚtableÚfigureÚfooterÚaddressÚdetailsÚsummaryÚ	signaturer   Ú_BLOCK_TAGS>!   rJ   rK   rL   rM   rN   rO   rP   rQ   ÚhrÚlirR   ÚtdÚtrrS   ÚdivÚnavrU   ÚformÚmainÚasiderW   ÚtbodyÚtfootÚtheadrX   rY   ÚheaderrZ   ÚarticleÚsectionÚfieldsetÚ
blockquoteÚ
figcaption>   ÚkbdÚcodeÚsampÚ_CODE_TAG_SETÚboldÚitalicÚstrikethroughÚ	underlineÚscript)ÚbÚstrongÚiÚemÚvarÚsÚdelÚuÚinsÚsubÚsupÚ_FORMAT_TAG_MAPzdata-docling-idÚ_DATA_DOCLING_ID_ATTRÚform_regionÚ_FORM_CONTAINER_CLASSÚrow_sectionÚ_ROW_SECTION_CLASSz^key(?P<key_id>[A-Za-z0-9]+)$Ú_FORM_KEY_ID_REz$^key(?P<key_id>[A-Za-z0-9]+)_marker$Ú_FORM_MARKER_ID_REz=^key(?P<key_id>[A-Za-z0-9]+)_value(?P<value_id>[A-Za-z0-9]+)$Ú_FORM_VALUE_ID_RE>   Úcheckboxúcheckbox-boxúcheckbox-inputÚ_CUSTOM_CHECKBOX_CLASSES>   Úxõ   â˜‘õ   âœ“õ   âœ”Ú_CHECKBOX_MARK_TEXTS>   Úoptionúcheckbox-itemúcheckbox-optionúcheckbox-containerÚ_CHECKBOX_CONTAINER_CLASSES>   Úarz   r|   Úqr   r�   r}   ÚbdiÚbdoÚdfnrq   rƒ   r„   r~   ÚabbrÚciterr   ÚdataÚmarkrs   ÚspanÚlabelÚsmallr{   Ú_INLINE_HTML_TAGS)Úfrozenc                  ó*   • \ rS rSr% S\S'   S\S'   Srg)Ú_RenderedBBoxéÙ   ÚintÚpage_nor   Úbbox© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__Ú__static_attributes__r°   ó    ÚY/home/mande/repo/quber/.venv/lib/python3.13/site-packages/docling/backend/html_backend.pyr«   r«   Ù   s   ‡ àƒLØ
Ör¸   r«   c                  ó�   • \ rS rSr% S\S'   S\S'   S\S'   S\S'   S	\S
'   SrS\S'   SrS\S'   \" \S9r	S\S'   \" \
S9rS\S'   Srg)Ú_ExtractedFormValueéß   rG   Útagr­   ÚorderÚstrÚorigÚtextúOptional[ProvenanceItem]ÚprovÚ	read_onlyú Literal['read_only', 'fillable']ÚkindNúOptional[DocItemLabel]Úcheckbox_label©Údefault_factoryúset[int]Úconsumed_label_tag_obj_idsú	list[Tag]Úcheckbox_label_tagsr°   )r²   r³   r´   rµ   r¶   rÆ   rÈ   Údataclass_fieldÚsetrÌ   ÚlistrÎ   r·   r°   r¸   r¹   r»   r»   ß   sR   ‡ à	ƒHØƒJØ
ƒIØ
ƒIØ
"Ó"Ø-8€DÐ
*Ó8Ø-1€NÐ*Ó1Ù+:È3Ñ+OÐ ÓOÙ%4ÀTÑ%JÐ˜ÖJr¸   r»   c                  óH   • \ rS rSr% S\S'   S\S'   S\S'   S\S'   S	\S
'   Srg)Ú_ExtractedFormMarkeréì   rG   r½   r­   r¾   r¿   rÀ   rÁ   rÂ   rÃ   r°   Nr±   r°   r¸   r¹   rÓ   rÓ   ì   s   ‡ à	ƒHØƒJØ
ƒIØ
ƒIØ
"Ö"r¸   rÓ   c                  ój   • \ rS rSr% S\S'   S\S'   S\S'   S\S'   S	\S
'   \R                  rS\S'   Srg)Ú_ExtractedFormTextéõ   rG   r½   r­   r¾   r¿   rÀ   rÁ   rÂ   rÃ   r   r¦   r°   N)	r²   r³   r´   rµ   r¶   r   ÚTEXTr¦   r·   r°   r¸   r¹   rÖ   rÖ   õ   s,   ‡ à	ƒHØƒJØ
ƒIØ
ƒIØ
"Ó"Ø&×+Ñ+€Eˆ<Ö+r¸   rÖ   c                  ór   • \ rS rSr% S\S'   S\S'   S\S'   S\S'   S	\S
'   S\S'   S\S'   \" \S9rS\S'   Srg)Ú_ExtractedFormFieldéÿ   úOptional[Tag]Úkey_tagr­   Ú	key_orderr¿   Úkey_origÚkey_textrÂ   Úkey_provzOptional[_ExtractedFormMarker]Úmarkerúlist[_ExtractedFormValue]ÚvaluesrÉ   zlist[_ExtractedFormText]Úextra_textsr°   N)	r²   r³   r´   rµ   r¶   rÏ   rÑ   rå   r·   r°   r¸   r¹   rÚ   rÚ   ÿ   s9   ‡ àÓØƒNØƒMØƒMØ&Ó&Ø*Ó*Ø%Ó%Ù,;ÈDÑ,Q€KÐ)ÖQr¸   rÚ   c                  ó*   • \ rS rSr% S\S'   S\S'   Srg)Ú_ExtractedFormRegioni  úlist[_ExtractedFormField]Úfieldsúset[str]Úconsumed_tag_idsr°   Nr±   r°   r¸   r¹   rç   rç     s   ‡ à%Ó%ØÖr¸   rç   c                  ó2   • \ rS rSr% 0 rS\S'   0 rS\S'   Srg)Ú_Contexti  zdict[str, bool]Úlist_ordered_flag_by_refzdict[str, int]Úlist_start_by_refr°   N)r²   r³   r´   rµ   rî   r¶   rï   r·   r°   r¸   r¹   rí   rí     s   ‡ Ø02Ð˜oÓ2Ø(*Ð�~Ö*r¸   rí   c                  óX   • \ rS rSr% S\S'   SrS\S'   SrS\S'   S	rS
\S'   SrS\S'   Sr	g)ÚAnnotatedTexti  r¿   rÁ   NzUnion[AnyUrl, Path, None]Ú	hyperlinkzUnion[Formatting, None]Ú
formattingFrA   rr   úOptional[str]Úsource_tag_idr°   )
r²   r³   r´   rµ   r¶   rò   ró   rr   rõ   r·   r°   r¸   r¹   rñ   rñ     s1   ‡ Ø
ƒIØ+/€IÐ(Ó/Ø*.€JÐ'Ó.Ø€Dˆ$ÓØ#'€M�=Ö'r¸   rñ   c                  ó2   • \ rS rSrSS jrSS jrS	S jrSrg)
ÚAnnotatedTextListi  c           
     óH  • S nSnS nSnS nU  Hø  nUR                   nUR                  nUR                  n	UR                  n
UR                  nX'R                  5       S-   -  nU	b  Uc  U	nO*U	b'  Ub$  X“:w  a  [        R                  SU	 SU SU S35        Ub  Uc  UnO*Ub'  Ub$  X�:w  a  [        R                  SU SU SU S35        Ub  Uc  UnO*Ub'  Ub$  Xµ:w  a  [        R                  S	U SU SU S35        U
(       a  U
OUnMú     [        UR                  5       UUUUS
9$ )NÚ FÚ zClashing formatting: 'z' and 'z
'! Chose 'Ú'zClashing hyperlinks: 'zClashing provenance tags: '©rÁ   rò   ró   rr   rõ   )	rÁ   rò   ró   rr   rõ   ÚstripÚ_logÚwarningrñ   )ÚselfÚ	current_hÚcurrent_textÚ	current_fÚcurrent_codeÚcurrent_source_tag_idÚatÚtÚhÚfÚcr   s               r¹   Úto_single_text_elementÚ(AnnotatedTextList.to_single_text_element  st  € Øˆ	ØˆØˆ	ØˆØ $ÐÛˆBØ—‘ˆAØ—‘ˆAØ—‘ˆAØ—‘ˆAØ× Ñ ˆAØŸG™G›I¨™OÑ+ˆLØ‰} Ñ!2Ø‘	Ø‘ 9Ñ#8¸Q»^Ü—‘Ø,¨Q¨C¨w°y°kÀÈIÈ;ÐVWÐXôð ‰} Ñ!2Ø‘	Ø‘ 9Ñ#8¸Q»^Ü—‘Ø,¨Q¨C¨w°y°kÀÈIÈ;ÐVWÐXôð ‰}Ð!6Ñ!>Ø()Ñ%à‘Ø)Ñ5ØÓ.ä—‘ðØ�s˜'Ð"7Ð!8ð 9Ø3Ð4°Að7ôö
 !"™1 |ŠLñ? ôB Ø×#Ñ#Ó%ØØ ØØ/ñ
ð 	
r¸   c                óZ  • [        5       nU (       d  U $ U S   R                  nU S   R                  nU S   R                  nU S   R                  nU S   R
                  nUn[        S[        U 5      5       GH  nX0U   R                  :X  a“  X@U   R                  :X  a�  XPU   R                  :X  ao  X`U   R
                  :X  a]  Sn	X   R                  R                  5       (       a  UR                  5       (       d  Sn	X)X   R                  -   -  nX   R                  nM©  UR                  [        UUUUUS95        X   R                  nUnX   R                  nX   R                  nX   R                  nX   R
                  nGM     U(       a  UR                  [        UUUUUS95        U$ )Nr   é   rú   rù   rü   )r÷   rÁ   rò   ró   rr   rõ   ÚrangeÚlenrý   Úappendrñ   )
r   Ú
simplifiedrÁ   rò   ró   rr   rõ   Úlast_elmr|   Úseps
             r¹   Úsimplify_text_elementsÚ(AnnotatedTextList.simplify_text_elementsN  s•  € Ü&Ó(ˆ
ÞØˆKØ�A‰w�|‰|ˆØ˜‘G×%Ñ%ˆ	Ø˜!‘W×'Ñ'ˆ
Ø�A‰w�|‰|ˆØ˜Q™×-Ñ-ˆØˆÜ�qœ#˜d›)×$ˆAà !™W×.Ñ.Ó.Ø q¡'×"4Ñ"4Ó4Ø ™GŸL™LÓ(Ø!¨!¡W×%:Ñ%:Ó:à�Ø‘w—|‘|×)Ñ)×+Ñ+°8·>±>×3CÑ3CØ�CØ˜d™gŸl™lÑ*Ñ*�Ø™7Ÿ<™<’à×!Ñ!Ü!Ø!Ø"+Ø#-Ø!Ø&3ñôð ‘w—|‘|�Ø�Ø ™G×-Ñ-�	Ø!™W×/Ñ/�
Ø‘w—|‘|�Ø $¡× 5Ñ 5“ñ7 %ö8 Ø×ÑÜØØ'Ø)ØØ"/ñôð Ðr¸   c                ó$  • / n[        5       n[        [        -   nU  HØ  n[        UR                  ;  a  UR                  U5        M*  UR                  R	                  U5      n[        U5       H„  u  pgUR                  [        S5      n[        R                  " SSU5      n[        U5      nXxl        UR                  U5        U[        U5      S-
  :  d  Mi  UR                  U5        [        5       nM†     MÚ     U(       a  UR                  U5        U$ )an  Split text elements on multiple consecutive line breaks (from <br> tags).

        Single <br> tags are converted to newline characters (
) within the same paragraph.
        Multiple consecutive <br> tags (2+) create new paragraphs.
        Regular newlines from HTML source formatting have already been
        normalized to spaces during text extraction.
        Ú
z *\n *r  )r÷   Ú_BR_SENTINELrÁ   r  ÚsplitÚ	enumerateÚreplaceÚrerƒ   r   r  )	r   Ú
super_listÚactive_annotated_text_listÚdouble_sentinelÚelÚ	sub_textsr|   rÁ   Úsub_els	            r¹   Úsplit_by_newlineÚ"AnnotatedTextList.split_by_newline€  së   € ð "$ˆ
Ü%6Ó%8Ð"Ü&¬Ñ5ˆãˆBÜ 2§7¡7Ó*Ø*×1Ñ1°"Ô5Ùð Ÿ™Ÿ™ oÓ6ˆIä$ YÖ/‘�à—|‘|¤L°$Ó7�Ü—v’v˜i¨¨tÓ4�ä! "›�Ø"”Ø*×1Ñ1°&Ô9ð ”s˜9“~¨Ñ)Õ)Ø×%Ñ%Ð&@ÔAÜ1BÓ1DÒ.ó 0ñ ö* &Ø×ÑÐ8Ô9ØÐr¸   r°   N)Úreturnrñ   )r&  r÷   )r&  z
list[Self])r²   r³   r´   rµ   r  r  r$  r·   r°   r¸   r¹   r÷   r÷     s   † ô-
ô^0÷d#r¸   r÷   c                  óö  ^ • \ rS rSr\ S~     SU 4S jjj5       r\S€S j5       r\\S€S j5       5       r\S 5       r	\\S�S j5       5       r
\S‚S j5       rSƒS jrS„S	 jrS…S
 jrS†S jrS‡S jrS†S jrSˆS jrS‰S jrSŠS jrS‹S jr          SŒS jr        S�S jrSŽS jr\SŽS j5       rS�S jr    S�S jr\S�S j5       rS‘S jr\S‘S j5       rS‘S jr S‘S jr!  S’       S“S jjr"  S’       S“S jjr#        S”S jr$    S•S  jr%      S–S! jr&    S—S" jr'        S˜S# jr(\S™S$ j5       r)SšS% jr*\          S›S& j5       r+\          SœS' j5       r,S�S( jr-            SžS) jr.SŸS* jr/\S S+ j5       r0\1S, 5       r2   S¡   S¢S- jjr3\4S£S. j5       r5\4S¤S/ j5       r6S¥S0 jr7    S¦S1 jr8\4 S§       S¨S2 jj5       r9\4S©S3 j5       r:\4SªS4 j5       r;\4S©S5 j5       r<\4S6 5       r=\4S«S7 j5       r>S¬S8 jr?S­S9 jr@        S®S: jrA        S®S; jrB   S¯             S°S< jjrCS±S= jrD\S²S> j5       rES¬S? jrF\S‘S@ j5       rGS³SA jrHS´SB jrI\SµSC j5       rJS‘SD jrK      S¶SE jrLS·SF jrM\S¸SG j5       rN\S¹SH j5       rO        SºSI jrP\S³SJ j5       rQ\ S»       S¼SK jj5       rR        S½SL jrS\S¾SM j5       rT\S·SN j5       rU\S¿SO j5       rV\SÀSP j5       rW\SÁSQ j5       rX\SÂSR j5       rY\S‘SS j5       rZS‘ST jr[\S‘SU j5       r\\S‘SV j5       r]\S‘SW j5       r^\S‘SX j5       r_\      SÃSY j5       r`\S‘SZ j5       raS‘S[ jrbS‘S\ jrc\SÄS] j5       rd\S‘S^ j5       re\SÅS_ j5       rf    SÆS` jrg\S·Sa j5       rhSÇSb jri\SÈSc j5       rj\S‘Sd j5       rk    SÉSe jrl      SÊSf jrm\4SËSg j5       rn\4SÌSh j5       roS‘Si jrp\4  SÍSj j5       rqS‘Sk jrrSÎSl jrsSÏSm jrtSÐSn jruSÑSÒSo jjrvS‘Sp jrw        SÓSq jrxSÔSr jrySÕSs jrzS¬St jr{SÖSu jr|S×Sv jr}SØSw jr~SÙSx jr\SÚSy j5       r€\SÄSz j5       r�\SÛS{ j5       r‚\SÜSÝS| jj5       rƒS}r„U =r…$ )ÞÚHTMLDocumentBackendi¦  c           	     ó   >• [         (       d  [        [        5      [        eUc
  [	        5       n[
        TU ]  XU5        U   S U l        X l        UR                  b  [        UR                  5      OS U l        [        UR                  UR                  UR                  UR                   UR"                  UR$                  S9U l        SU l        SU l        0 U l        [/        5       U l        SU l        [5        U R(                  5       H  nS U R,                  U'   M     S U l        / U l        S U l        S U l        0 U l        0 U l         / U l!        S U l"        / U l#        / U l$        / U l%        0 U l&        SU l'        0 U l(         [S        U[T        5      (       a  URW                  5       O[Y        U5      R[                  5       nXPl        []        US5      U l        g ! [^         a  n[a        SU Rb                   S35      UeS nAff = f)N)Úenable_local_fetchÚenable_remote_fetchÚmax_image_data_base64_bytesÚmax_remote_image_bytesÚmax_redirectsÚheadersé
   r   úhtml.parserz5Could not initialize HTML backend for file with hash Ú.)2rB   ÚImportErrorÚ_INSTALL_HINTrC   r:   ÚsuperÚ__init__ÚsoupÚpath_or_streamÚ
source_urir¿   Ú	base_pathr9   r*  r+  r,  r-  r.  r/  Ú_image_loaderÚ
max_levelsÚlevelÚparentsrí   ÚctxÚ_disable_inline_group_depthr  rò   Úformat_tagsÚ_raw_html_bytesÚ_rendered_htmlÚ_rendered_bbox_by_idÚ_rendered_text_bbox_by_idÚ_rendered_page_imagesÚ_rendered_page_sizeÚ_suppressed_tag_ids_stackÚ_suppressed_tag_obj_ids_stackÚ_form_fields_by_key_id_stackÚ_tag_name_by_docling_id_cacheÚ_generated_html_id_counterÚ_render_visibility_cacheÚ
isinstancer   Úgetvaluer	   Ú
read_bytesrD   Ú	Exceptionr=   Údocument_hash)r   Úin_docr8  Úoptionsr|   ÚrawÚeÚ	__class__s          €r¹   r6  ÚHTMLDocumentBackend.__init__§  sè  ø€ ÷ Š~ÜœmÓ,Ô2CÐCØ‰?Ü(Ó*ˆGÜ‰Ñ˜°Ô9ÙØ-1ˆŒ	Ø4BÔà'.×'9Ñ'9Ñ'EŒC�×"Ñ"Ô#È4ð 	Œô 1Ø&×9Ñ9Ø '× ;Ñ ;Ø(/×(KÑ(KØ#*×#AÑ#AØ!×/Ñ/Ø—O‘Oñ
ˆÔð ˆŒØˆŒ
ØGIˆŒÜ“:ˆŒØ01ˆÔ(Ü�t—‘Ö'ˆAØ"ˆD�L‰L˜‹Oñ (à48ˆŒØ&(ˆÔØ04ˆÔØ-1ˆÔØ>@ˆÔ!ØCEˆÔ&Ø8:ˆÔ"Ø37ˆÔ Ø9;ˆÔ&Ø=?ˆÔ*ØRTˆÔ)Ø=?ˆÔ*Ø/0ˆÔ'Ø9;ˆÔ%ð	ô ˜n¬g×6Ñ6ð ×'Ñ'Ô)ä˜.Ó)×4Ñ4Ó6ð ð
 $'Ô Ü% c¨=Ó9ˆD�IøÜó 	Ü#ðØ×*Ñ*Ð+¨1ð.óð ðûð	ús   Å>AG Ç
G=ÇG8Ç8G=c                ó   • U R                   S L$ ©N)r7  ©r   s    r¹   Úis_validÚHTMLDocumentBackend.is_validç  s   € à�y‰y Ð$Ð$r¸   c                ó   • g©NFr°   ©Úclss    r¹   Úsupports_paginationÚ'HTMLDocumentBackend.supports_paginationë  s   € ð r¸   c                ó„   • [        U R                  [        5      (       a  U R                  R                  5         S U l        g rZ  )rN  r8  r   Úcloser[  s    r¹   ÚunloadÚHTMLDocumentBackend.unloadð  s/   € ä�d×)Ñ)¬7×3Ñ3Ø×Ñ×%Ñ%Ô'Ø"ˆÕr¸   c                ó$   • [         R                  1$ rZ  )r;   ÚHTMLr`  s    r¹   Úsupported_formatsÚ%HTMLDocumentBackend.supported_formatsö  s   € ô × Ñ Ð!Ð!r¸   c           
     óä  • [         R                  S5        U R                  5       (       d  [        S5      e[	        U R
                  R                  =(       d    SSU R                  S9n[        U R
                  R                  =(       d    SUS9n[        [        U R                  5      R                  (       a<  U R                  5         U R                  (       a  [!        U R                  S5      U l        U R$                  (       a  U R&                  (       an  [        [        U R                  5      R(                  n[+        U R$                  SS	9 H2  u  pEUR-                  UU R&                  [.        R0                  " XSS
9S9  M4     U R"                  c   eU R"                  R2                  nU(       a_  U R                  R4                  (       aD  UR7                  SSS9n[8        R;                  U5      nUR5                  UU[<        R>                  S9  U R#                  / SQ5       H  n	U	RA                  5         M     U R#                  SS9 H  n	U	RA                  5         M     [8        RC                  U R"                  5        U R"                  RD                  =(       d    U R"                  n
U
RG                  SS9 H4  n[H        U;   d  M  URK                  URM                  [H        S5      5        M6     U
" S5       H!  nURK                  [O        [H        5      5        M#     S nU
RG                  / SQ5      nU Vs/ s H  oÿRQ                  S5      (       a  M  UPM     nn[S        U5      (       a  US   nU R                  RT                  (       a  Uc  [<        RV                  O[<        R>                  U l,        [[        5       U l.        U R^                  Ra                  5         U Rc                  X¢5        U$ s  snf )NzStarting HTML conversion...zInvalid HTML document.Úfilez	text/html)ÚfilenameÚmimetypeÚbinary_hash)ÚnameÚoriginr1  r  ©Ústart)ÚimageÚdpi)r®   Úsizeru  rú   T)Ú	separatorrý   )rÁ   rÀ   Úcontent_layer)ry   ÚnoscriptÚstyle)Úhidden)Ústringrù   Úbr)rL   rM   rN   rO   rP   rQ   rW   r   )2rþ   Údebugr\  ÚRuntimeErrorr   rm  rq  rR  r   Ústemr   r:   rT  Úrender_pageÚ_render_with_browserrC  rD   r7  rF  rG  Ú
render_dpir  Úadd_pager0   Úfrom_pilÚtitleÚ	add_titleÚget_textr(  Ú_clean_unicoder.   Ú	FURNITUREÚ	decomposeÚ _fix_invalid_paragraph_structureÚbodyÚfind_allr  Úreplace_withr  rE   Úfind_parentr  Úinfer_furnitureÚBODYry  rí   r?  rM  ÚclearÚ_walk)r   rr  Údocr„  r®   Ú
page_imager‡  Ú
title_textÚtitle_cleanr½   ÚcontentÚ	text_noder~  rk   Úall_headersr  Úclean_headerss                    r¹   ÚconvertÚHTMLDocumentBackend.convertû  sø  € ä�
‰
Ð0Ô1Ø�}‰}�‰ÜÐ7Ó8Ð8äØ—Y‘Y—^‘^×- vØ Ø×*Ñ*ñ
ˆô
  4§9¡9§>¡>×#;°VÀFÑKˆäÔ" D§L¡LÓ1×=×=Ø×%Ñ%Ô'Ø×"×"Ü)¨$×*=Ñ*=¸}ÓM�”	à×%×%¨$×*B×*BÜÔ0°$·,±,Ó?×JÑJˆJÜ'0°×1KÑ1KÐSTÔ'UÑ#�Ø—‘Ø#Ø×1Ñ1Ü"×+Ò+°*ÑMð ó ñ (Vð �y‰yÑ$Ð$Ð$à—	‘	—‘ˆÞ�T—\‘\×+×+ØŸ™°#¸T˜ÐBˆJÜ-×<Ñ<¸ZÓHˆKØ�M‰MØ ØÜ*×4Ñ4ð ñ ð —9‘9Ò<Ö=ˆCØ�M‰MŽOñ >ð —9‘9 D�9Ó)ˆCØ�M‰MŽOñ *ô 	×<Ñ<¸T¿Y¹YÔGà—)‘)—.‘.×- D§I¡Iˆð !×)Ñ)°Ð)Ó6ˆIÜ˜yÕ(Ø×&Ñ& y×'8Ñ'8¼ÀrÓ'JÖKñ 7ñ ˜$–-ˆBØ�O‰OœO¬LÓ9Ö:ñ  ð ˆà×&Ñ&Ò'KÓLˆá$/ÓN¢K˜q·}±}ÀW×7MŸ¡KˆÐNäˆ}×ÑØ" 1Ñ%ˆFð —L‘L×0×0°f±nô ×Òä×'Ñ'ð 	Ôô “:ˆŒØ×%Ñ%×+Ñ+Ô-Ø�
‰
�7Ô Øˆ
ùò Os   Ì4O-ÍO-c                ó�   • [        [        U R                  5      nUR                  nUR                  nUR
                  S:X  a  X2p2X#4$ )NÚ	landscape)r   r:   rT  Úrender_page_widthÚrender_page_heightÚrender_page_orientation)r   rT  ÚwidthÚheights       r¹   Ú_get_render_page_sizeÚ)HTMLDocumentBackend._get_render_page_sizeH  sD   € ÜÔ)¨4¯<©<Ó8ˆØ×)Ñ)ˆØ×+Ñ+ˆØ×*Ñ*¨kÓ9Ø"�6Øˆ}Ðr¸   c                ó¶   • [         R                  " U5      (       d  UR                  S5      (       a  U$ [        U5      R	                  5       R                  5       $ )Nzfile://)r9   Úis_remote_urlÚ
startswithr	   ÚresolveÚas_uri)r   Úvalues     r¹   Ú_coerce_base_urlÚ$HTMLDocumentBackend._coerce_base_urlP  sD   € Ü×,Ò,¨U×3Ñ3°u×7GÑ7GÈ	×7RÑ7RØˆLÜ�E‹{×"Ñ"Ó$×+Ñ+Ó-Ð-r¸   c                ó(  • [        U R                  [        5      (       a  U R                  R                  5       $ U R                  (       aH  [
        R                  " U R                  5      (       a#  [        U R                  5      R                  5       $ g rZ  )rN  r8  r	   r¬  r:  r9   Úis_local_pathr[  s    r¹   Ú_get_browser_local_base_pathÚ0HTMLDocumentBackend._get_browser_local_base_pathU  sa   € Ü�d×)Ñ)¬4×0Ñ0Ø×&Ñ&×.Ñ.Ó0Ð0à�>�>Ô1×?Ò?ÀÇÁ×OÑOÜ˜Ÿ™Ó'×/Ñ/Ó1Ð1àr¸   c                ó.  • U R                  5       nUb  XR                  5       :X  a  gU R                  R                  (       a  Uc  g[	        [        [        U5      R                  5      5      R                  5       nUR                  UR                  5      $ ©NTF)r³  r­  rT  r*  r	   r   r   Úpathr¬  Úis_relative_toÚparent)r   Úrequest_urlÚlocal_base_pathÚrequested_paths       r¹   Ú _is_allowed_browser_file_requestÚ4HTMLDocumentBackend._is_allowed_browser_file_request^  sv   € Ø×;Ñ;Ó=ˆØÑ&¨;×:PÑ:PÓ:RÓ+RØà�|‰|×.×.°/Ñ2IØäœl¬8°KÓ+@×+EÑ+EÓFÓG×OÑOÓQˆØ×,Ñ,¨_×-CÑ-CÓDÐDr¸   c                ót  • [        U5      nUR                  =(       d    SR                  5       nUS:X  a6  U R                  U5      (       a  g U R                  R
                  (       d   g gUS;   a  g [        R                  " U5      (       a  U R                  R                  (       a  g  gSU=(       d    S S	3$ )
Nrù   rm  zFlocal fetch is disabled (set options.enable_local_fetch=True to allow)zSlocal file access is limited to the source document directory during HTML rendering>   Úblobr£   ÚaboutzHremote fetch is disabled (set options.enable_remote_fetch=True to allow)zURL scheme 'z<empty>z' is not allowed)	r   ÚschemeÚlowerr½  rT  r*  r9   rª  r+  )r   rº  ÚparsedrÂ  s       r¹   Ú!_get_browser_request_block_reasonÚ5HTMLDocumentBackend._get_browser_request_block_reasoni  s³   € Ü˜+Ó&ˆØ—-‘-×% 2×,Ñ,Ó.ˆØ�VÓØ×4Ñ4°[×AÑAØØ—<‘<×2×2ðEðð
(ðð
 Ð.Ó.Øä×,Ò,¨[×9Ñ9Ø�|‰|×/×/ØðBðð
 ˜f×1¨	Ð2Ð2BÐCÐCr¸   c                ó(   • U R                  U5      S L $ rZ  )rÅ  )r   rº  s     r¹   Ú_is_browser_request_allowedÚ/HTMLDocumentBackend._is_browser_request_allowed†  s   € Ø×5Ñ5°kÓBÀdÐJÐJr¸   c                óR   • U R                   c  gU R                   R                  SSS9$ )Nrù   zutf-8r  )Úerrors)rB  Údecoder[  s    r¹   Ú_get_render_html_textÚ)HTMLDocumentBackend._get_render_html_text‰  s-   € Ø×ÑÑ'ØØ×#Ñ#×*Ñ*¨7¸9Ð*ÐEÐEr¸   c                óô   • U(       d  U$ [        US5      nUR                  c  U$ UR                  R                  S5      b  U$ UR                  SUS9nUR                  R	                  SU5        [        U5      $ )Nr1  Úbase)Úhrefr   )rD   ÚheadÚfindÚnew_tagÚinsertr¿   )r   Ú	html_textÚbase_urlr7  Úbase_tags        r¹   Ú_inject_base_tagÚ$HTMLDocumentBackend._inject_base_tagŽ  sp   € ÞØÐÜ˜Y¨Ó6ˆØ�9‰9ÑØÐØ�9‰9�>‰>˜&Ó!Ñ-ØÐØ—<‘< ¨X�<Ð6ˆØ�	‰	×Ñ˜˜HÔ%Ü�4‹yÐr¸   c                óœ   • UR                   U:X  a  UR                  U:X  a  U$ [        R                  " SX#4SS9nUR	                  US5        U$ )NÚRGB)rÛ   rÛ   rÛ   )Úcolor)r   r   )r¥  r¦  r2   ÚnewÚpaste)r   ru  r¥  r¦  Úcanvass        r¹   Ú
_pad_imageÚHTMLDocumentBackend._pad_imageš  sE   € Ø�;‰;˜%Ó E§L¡L°FÓ$:ØˆLÜ—’˜5 5 /¸ÑIˆØ�‰�U˜FÔ#Øˆr¸   c           	     ó  ^ • [        [        T R                  5      nUR                  (       d  g  SSKJn  T R                  5       u  pE[        XES9T l
        S nT R                  5       n[        T R                  [        5      (       a)  T R                  R                  5       R!                  5       nO<T R"                  (       a+  T R%                  UT R'                  T R"                  5      5      nU" 5        nUR(                  R+                  SS9n	UR,                  (       + n
U	R/                  XES.UR0                  SU
SS	9nSU 4S
 jjnUR3                  SU5        UR5                  5       nUR6                  (       a  UR9                  SS9  U(       a  UR;                  XaR<                  S9  OUR?                  XqR<                  S9  UR@                  S:”  a  URC                  SUR@                  5        URD                  (       a  URG                  URD                  5        URI                  SS9  URC                  S5      nURK                  5       T l&        [O        URQ                  SU5      5      n[O        URQ                  SU5      5      nT RS                  UUUUURT                  S9T l+        T RV                  (       a3  T R                  (       a"  [        UURT                  (       a  UOUS9T l
        T RY                  UT R                  (       a  [O        T R                  RZ                  5      OUURT                  S9T l.        T RY                  URQ                  S0 5      URQ                  S5      S.T R                  (       a  [O        T R                  RZ                  5      OUURT                  S9T l/        URa                  5         U	Ra                  5         S S S 5        g ! [         a  n[        S5      UeS nAff = f! , (       d  f       g = f)Nr   )Úsync_playwrightz|Playwright is required for HTML rendering. Install it with 'pip install "docling[htmlrender]"' and run 'playwright install'.)r¥  r¦  T)ÚheadlessFÚblock)ÚviewportÚdevice_scale_factorÚjava_script_enabledÚofflineÚservice_workersc           	     óî   >• TR                  UR                  5      nUc  U R                  5         g [        R                  " SUR
                   SUR                   SU S35        U R                  S5        g )Nz/Blocked browser request during HTML rendering: rú   z (Ú)Úblockedbyclient)rÅ  ÚurlÚ	continue_ÚwarningsÚwarnÚmethodÚabort)ÚrouteÚrequestÚblock_reasonr   s      €r¹   Ú_route_requestÚ@HTMLDocumentBackend._render_with_browser.<locals>._route_requestÉ  sg   ø€ Ø#×EÑEÀgÇkÁkÓR�ØÑ'Ø—O‘OÕ%ä—M’MØIØ"Ÿ>™>Ð*¨!¨G¯K©K¨=¸¸<¸.ÈðKôð —K‘KÐ 1Õ2r¸   z**/*Úprint)Úmedia)Ú
wait_untilaG  
                    (padding) => {
                      if (!document || !document.body) {
                        return;
                      }
                      document.body.style.padding = `${padding}px`;
                      document.body.style.boxSizing = "border-box";
                    }
                    ©Ú	full_pagea7  
                () => {
                  const nodes = Array.from(document.querySelectorAll('*'));
                  const boxes = {};
                  const textBoxes = {};
                  let idx = 0;
                  for (const node of nodes) {
                    idx += 1;
                    const id = String(idx);
                    node.setAttribute('data-docling-id', id);
                    const rect = node.getBoundingClientRect();
                    if (!rect) {
                      continue;
                    }
                    const width = rect.width || 0;
                    const height = rect.height || 0;
                    if (width <= 0 && height <= 0) {
                      continue;
                    }
                    const x = rect.left + window.scrollX;
                    const y = rect.top + window.scrollY;
                    boxes[id] = { x, y, width, height };

                    let textLeft = null;
                    let textTop = null;
                    let textRight = null;
                    let textBottom = null;
                    const textNodes = Array.from(node.childNodes).filter(
                      (child) =>
                        child &&
                        child.nodeType === Node.TEXT_NODE &&
                        child.textContent &&
                        child.textContent.trim()
                    );
                    for (const textNode of textNodes) {
                      const range = document.createRange();
                      range.selectNodeContents(textNode);
                      const rects = Array.from(range.getClientRects());
                      for (const tRect of rects) {
                        const tWidth = tRect.width || 0;
                        const tHeight = tRect.height || 0;
                        if (tWidth <= 0 && tHeight <= 0) {
                          continue;
                        }
                        const tX = tRect.left + window.scrollX;
                        const tY = tRect.top + window.scrollY;
                        const tR = tX + tWidth;
                        const tB = tY + tHeight;
                        textLeft = textLeft === null ? tX : Math.min(textLeft, tX);
                        textTop = textTop === null ? tY : Math.min(textTop, tY);
                        textRight = textRight === null ? tR : Math.max(textRight, tR);
                        textBottom = textBottom === null ? tB : Math.max(textBottom, tB);
                      }
                      range.detach();
                    }
                    if (
                      textLeft !== null &&
                      textTop !== null &&
                      textRight !== null &&
                      textBottom !== null
                    ) {
                      textBoxes[id] = {
                        x: textLeft,
                        y: textTop,
                        width: textRight - textLeft,
                        height: textBottom - textTop
                      };
                    }
                  }
                  const doc = document.documentElement;
                  const body = document.body;
                  const scrollWidth = Math.max(
                    doc ? doc.scrollWidth : 0,
                    body ? body.scrollWidth : 0
                  );
                  const scrollHeight = Math.max(
                    doc ? doc.scrollHeight : 0,
                    body ? body.scrollHeight : 0
                  );
                  return { boxes, textBoxes, scrollWidth, scrollHeight };
                }
                ÚscrollWidthÚscrollHeight)ÚpageÚrender_dataÚ
page_widthÚpage_heightrþ  )r  r  rþ  Ú	textBoxes)Úboxesr   ©r&  ÚNone)1r   r:   rT  r‚  Úplaywright.sync_apirä  r3  r€  r§  r)   rG  rÍ  rN  r8  r	   r¬  r­  r:  rÙ  r¯  ÚchromiumÚlaunchr+  Únew_contextÚrender_device_scalerõ  Únew_pageÚrender_print_mediaÚemulate_mediaÚgotoÚrender_wait_untilÚset_contentÚpage_paddingÚevaluateÚrender_wait_msÚwait_for_timeoutÚ
screenshotrš  rC  r­   ÚgetÚ_capture_page_imagesÚrender_full_pagerF  Ú_build_bbox_mappingr¦  rD  rE  re  )r   rT  rä  Úexcr¥  r¦  Ú
render_urlÚrender_htmlÚ
playwrightÚbrowserÚoffline_modeÚcontextrø  r  r  Úscroll_widthÚscroll_heights   `                r¹   rƒ  Ú(HTMLDocumentBackend._render_with_browser¡  s„  ø€ ÜÔ)¨4¯<©<Ó8ˆØ×"×"Øð	Ý;ð ×2Ñ2Ó4‰ˆÜ#'¨eÑ#CˆÔ à$(ˆ
Ø×0Ñ0Ó2ˆä�d×)Ñ)¬4×0Ñ0Ø×,Ñ,×4Ñ4Ó6×=Ñ=Ó?‰JØ�^�^Ø×/Ñ/Ø˜T×2Ñ2°4·>±>ÓBóˆKñ Ô *Ø ×)Ñ)×0Ñ0¸$Ð0Ð?ˆGà&×:Ñ:Ô:ˆLØ×)Ñ)Ø#(Ñ;Ø$+×$?Ñ$?à$)Ø$Ø 'ð *ð ˆG÷	3ð �M‰M˜& .Ô1à×#Ñ#Ó%ˆDØ×)×)Ø×"Ñ"¨Ð"Ñ1æØ—	‘	˜*×1JÑ1J�	ÒKà× Ñ  ×9RÑ9RÐ ÑSà×#Ñ# aÓ'Ø—‘ðð ×(Ñ(ôð ×%×%Ø×%Ñ% g×&<Ñ&<Ô=ð �O‰O dˆOÑ+àŸ-™-ðQóSˆKðj #'§,¡,£.ˆDÔÜ˜{Ÿ™¨}¸eÓDÓEˆLÜ §¡°ÀÓ GÓHˆMØ)-×)BÑ)BØØ'Ø Ø"Ø!×2Ñ2ð *Cð *ˆDÔ&ð ×)×)¨d×.F×.FÜ+/Ø&Ø,3×,D×,D™=È&ñ,�Ô(ð
 )-×(@Ñ(@Ø'à×+×+ô   × 8Ñ 8× ?Ñ ?Ô@àØ!×2Ñ2ð )Að )ˆDÔ%ð .2×-EÑ-Eà(Ÿ_™_¨[¸"Ó=Ø$/§O¡O°NÓ$Cñð
 ×+×+ô   × 8Ñ 8× ?Ñ ?Ô@àØ!×2Ñ2ð .Fð 	.ˆDÔ*ð �M‰MŒOØ�M‰MŒO÷a Ðøô) ó 	Üð(óð ð	ûð	ú÷( Õús$   ¯O Ã2KO2Ï
O/ÏO*Ï*O/Ï2
P c                óŽ  • [        UR                  SU5      5      nUS::  a  / $ UR                  SS9n[        R                  " [        U5      5      R                  S5      nU(       a  U/$ / n	[        S[        R                  " Xd-  5      5      n
UR                  [        U5      -  n[        XK-  5      n[        U
5       H‚  nXÔ-  n[        Xä-   U5      n[        Xë-  5      n[        Xû-  5      nUU::  a  M7  UR                  SUUR                   U45      nU R#                  UUR                   US9nU	R%                  U5        M„     U	$ )Nr   r   Trý  rÜ  r  )ru  r¥  r¦  )r­   r  r  r2   Úopenr   rž  ÚmaxÚmathÚceilr¦  ÚfloatÚroundr  ÚminÚcropr¥  rá  r  )r   r  r  r  r  rþ  r%  Úscreenshot_bytesÚ
full_imageÚpage_imagesÚ
page_countÚscale_yÚtarget_heightÚpage_idxÚtop_cssÚ
bottom_cssÚtop_pxÚ	bottom_pxÚcroppeds                      r¹   r  Ú(HTMLDocumentBackend._capture_page_imagesn  s@  € ô ˜KŸO™O¨N¸KÓHÓIˆØ˜AÓØˆIàŸ?™?°T˜?Ð:ÐÜ—Z’Z¤Ð(8Ó 9Ó:×BÑBÀ5ÓIˆ
æØ�<Ðà)+ˆÜ˜œDŸIšI mÑ&AÓBÓCˆ
Ø×#Ñ#¤e¨MÓ&:Ñ:ˆÜ˜kÑ3Ó4ˆä˜jÖ)ˆHØÑ,ˆGÜ˜WÑ2°MÓBˆJÜ˜7Ñ,Ó-ˆFÜ˜jÑ2Ó3ˆIØ˜FÓ"ÙØ —o‘o q¨&°*×2BÑ2BÀIÐ&NÓOˆGØ—o‘oØ Z×%5Ñ%5¸mð &ð ˆGð ×Ñ˜wÖ'ñ *ð Ðr¸   c           	     óæ  • UR                  S0 5      =(       d    0 n[        UR                  SU5      5      nU(       a  SnO"[        S[        R                  " XR-  5      5      n0 nUR                  5        Hø  u  p‰[        U	R                  SS5      5      n
[        U	R                  SS5      5      n[        U	R                  SS5      5      n[        U	R                  SS5      5      nUS	::  a  US	::  a  M  X¬-   nX½-   nU(       a  SnSnO.[        X²-  5      S-   n[        [        US5      U5      nUS-
  U-  n[        U
UU-
  UUU-
  [        R                  S
9n[        UUS9U[        U5      '   Mú     U$ )Nr  r   r  r’   g        Úyr¥  r¦  r   )Úlr  Úrrz   Úcoord_origin©r®   r¯   )r  r,  r)  r*  r+  Úitemsr­   r.  r   r   ÚTOPLEFTr«   r¿   )r   r  r  rþ  r  r%  r3  ÚmappingÚtag_idÚrectÚleftÚtopr¥  r¦  ÚrightÚbottomr®   Úoffsetr¯   s                      r¹   r  Ú'HTMLDocumentBackend._build_bbox_mapping”  s[  € ð —‘ ¨Ó,×2°ˆÜ˜kŸo™o¨n¸kÓJÓKˆæØ‰Jä˜Q¤§	¢	¨-Ñ*EÓ FÓGˆJà,.ˆØ!ŸK™KžM‰LˆFÜ˜Ÿ™ # sÓ+Ó,ˆDÜ˜Ÿ™  cÓ*Ó+ˆCÜ˜$Ÿ(™( 7¨CÓ0Ó1ˆEÜ˜4Ÿ8™8 H¨cÓ2Ó3ˆFØ˜‹z˜f¨›kÙØ‘LˆEØ‘\ˆFÞØ�Ø‘ä˜cÑ0Ó1°AÑ5�Üœc '¨1›o¨zÓ:�Ø! A™+¨Ñ4�ÜØØ˜‘,ØØ˜6‘/Ü(×0Ñ0ñˆDô $1¸ÀtÑ#LˆG”C˜“KÓ ñ/ *ð2 ˆr¸   c                óZ   • Uc  g UR                  [        5      nU(       d  g [        U5      $ rZ  )r  r†   r¿   ©r   r½   rF  s      r¹   Ú_get_tag_idÚHTMLDocumentBackend._get_tag_id»  s)   € Ø‰;ØØ—‘Ô.Ó/ˆÞØÜ�6‹{Ðr¸   c                ój   • U c  g U R                  S5      n[        U[        5      (       a  U(       d  g U$ )NÚid)r  rN  r¿   )r½   rF  s     r¹   Ú_get_html_idÚ HTMLDocumentBackend._get_html_idÃ  s.   € à‰;ØØ—‘˜“ˆÜ˜&¤#×&Ñ&®fØØˆr¸   c                ób   • U R                  U5      nUc  g U R                  R                  U5      $ rZ  )rP  rD  r  rO  s      r¹   Ú_get_rendered_bbox_for_tagÚ.HTMLDocumentBackend._get_rendered_bbox_for_tagÌ  s1   € Ø×!Ñ! #Ó&ˆØ‰>ØØ×(Ñ(×,Ñ,¨VÓ4Ð4r¸   c                ób   • U R                  U5      nUc  g U R                  R                  U5      $ rZ  )rP  rE  r  rO  s      r¹   Ú_get_rendered_text_bbox_for_tagÚ3HTMLDocumentBackend._get_rendered_text_bbox_for_tagÒ  s3   € ð ×!Ñ! #Ó&ˆØ‰>ØØ×-Ñ-×1Ñ1°&Ó9Ð9r¸   c                óÄ   • U c  gU R                   nUR                  S:  =(       d;    UR                  S:  =(       d%    UR                  S:  =(       d    UR                  S:  $ )NFr   )r¯   r?  r  r@  rz   )Úrendered_bboxr¯   s     r¹   Ú_has_negative_bbox_coordinatesÚ2HTMLDocumentBackend._has_negative_bbox_coordinatesÚ  sK   € àÑ ØØ×!Ñ!ˆØ�v‰v˜‰z×C˜TŸV™V a™Z×C¨4¯6©6°A©:×C¸¿¹À!¹ÐCr¸   c                óv   • U R                  U5      =(       d    U R                  U5      nU R                  U5      $ rZ  )rZ  rW  r^  )r   r½   Úrendereds      r¹   Ú_is_tag_outside_capture_areaÚ0HTMLDocumentBackend._is_tag_outside_capture_areaá  s>   € Ø×7Ñ7Øó
÷ 2à×,Ñ,¨SÓ1ð 	ð ×2Ñ2°8Ó<Ð<r¸   c                ó*  • U R                  S5      n[        U[        5      (       a  UR                  5       (       d  g[        R
                  " SSUR                  5       5      nSU;   a  gSU;   d  SU;   a  g[        R                  " S	U5      (       a  gg)
Nr{  Fú\s+rù   zdisplay:noneTzvisibility:hiddenzvisibility:collapsezopacity:0(?:[;]|$))r  rN  r¿   rý   r  rƒ   rÃ  Úsearch)r½   r{  Ú
normalizeds      r¹   Ú_has_inline_hidden_styleÚ,HTMLDocumentBackend._has_inline_hidden_styleç  sx   € à—‘˜Ó ˆÜ˜%¤×%Ñ%¨U¯[©[¯]©]ØÜ—V’V˜F B¨¯©«Ó6ˆ
Ø˜ZÓ'ØØ *Ó,Ð0EÈÓ0SØÜ�9Š9Ð*¨J×7Ñ7ØØr¸   c                óÔ  • U R                   (       d  U R                  (       d  g[        U5      nX R                  ;   a  U R                  U   $ U R	                  U5      c  U R                  U5      b  SU R                  U'   gSnUR                  S5       HB  n[        U[        5      (       d  M  U R	                  U5      c  U R                  U5      c  M@  Sn  O   X0R                  U'   U$ r¶  )	rD  rE  rS  rM  rZ  rW  r�  rN  rG   )r   r½   Ú	cache_keyÚhas_visible_descendantÚ
descendants        r¹   Ú_has_rendered_presenceÚ*HTMLDocumentBackend._has_rendered_presenceõ  sÞ   € Ø×(×(°×1O×1OØä�s“Gˆ	Ø×5Ñ5Ó5Ø×0Ñ0°Ñ;Ð;ð ×0Ñ0°Ó5ÑAØ×.Ñ.¨sÓ3Ñ?à7;ˆD×)Ñ)¨)Ñ4Øà!&ÐØŸ,™, tÖ,ˆJÜ˜j¬#×.Ñ.Ùà×4Ñ4°ZÓ@ÑLØ×2Ñ2°:Ó>ÓJà)-Ð&Ùñ -ð 4J×%Ñ% iÑ0Ø%Ð%r¸   c                ó   • UR                  S5      (       a  gUR                  S5      n[        U[        5      (       a#  UR	                  5       R                  5       S;   a  gU R                  U5      (       a  gU R                  U5      (       d  gg)Nr|  Tzaria-hidden>   Ú1ÚyesÚtrueF)Úhas_attrr  rN  r¿   rý   rÃ  rh  rn  )r   r½   Úaria_hiddens      r¹   Ú_is_invisible_tagÚ%HTMLDocumentBackend._is_invisible_tag  s~   € Ø�<‰<˜×!Ñ!ØØ—g‘g˜mÓ,ˆÜ�k¤3×'Ñ'¨K×,=Ñ,=Ó,?×,EÑ,EÓ,Gð L
ó -
ð
 Ø×(Ñ(¨×-Ñ-ØØ×*Ñ*¨3×/Ñ/ØØr¸   c                óò   • U R                   (       d  g S nU(       a  U R                   R                  U5      nUc  U R                  U5      nUc  g [        UR                  UR
                  S[        U5      4S9$ )Nr   ©r®   r¯   Úcharspan)rD  r  rW  r&   r®   r¯   r  )r   rÁ   r½   rõ   Ú
render_boxs        r¹   Ú
_make_provÚHTMLDocumentBackend._make_prov"  su   € ð ×(×(Øà.2ˆ
ÞØ×2Ñ2×6Ñ6°}ÓEˆJØÑØ×8Ñ8¸Ó=ˆJØÑØäØ×&Ñ&Ø—‘Øœ˜T›�^ñ
ð 	
r¸   c                ó  • U R                   (       d  U R                  XUS9$ S nU(       a  U R                   R                  U5      nUc  U R                  U5      nUcí  [	        U[
        5      (       aØ  / nU/UR                  S5      Q HA  n[	        U[
        5      (       d  M  U R                  U5      nUc  M0  UR                  U5        MC     U(       av  US   R                  nU V	s/ s H!  n	U	R                  U:X  d  M  U	R                  PM#     n
n	U
(       a2  [        U[        U
5      S:X  a  U
S   O[        R                  " U
5      S9nUc  U R                  XUS9$ [        UR                  UR                  S[        U5      4S9$ s  sn	f )N©rÁ   r½   rõ   Tr   r  rB  ry  )rE  r|  r  rZ  rN  rG   r�  r  r®   r¯   r«   r  r   Úenclosing_bboxr&   )r   rÁ   r½   rõ   r{  Údescendant_boxesrm  Údescendant_boxr®   ra  Úsame_page_boxess              r¹   Ú_make_text_provÚ#HTMLDocumentBackend._make_text_prov9  s‡  € ð ×-×-Ø—?‘?¨À]�?ÐSÐSà.2ˆ
ÞØ×7Ñ7×;Ñ;¸MÓJˆJØÑØ×=Ñ=¸cÓBˆJØÑ¤*¨S´#×"6Ñ"6Ø46ÐØ"Ð8 S§\¡\°$Ó%7Ó8�
Ü! *¬c×2Ñ2ÙØ!%×!EÑ!EÀjÓ!Q�Ø!Ó-Ø$×+Ñ+¨NÖ;ñ 9ö  Ø*¨1Ñ-×5Ñ5�ñ %5ó#â$4˜Ø×'Ñ'¨7Ñ2ó "�H—M”MÙ$4ð  ð #ö
 #Ü!.Ø 'ô  # ?Ó3°qÓ8ð ,¨AÒ.ä!,×!;Ò!;¸OÓ!Lñ"�Jð ÑØ—?‘?¨À]�?ÐSÐSäØ×&Ñ&Ø—‘Øœ˜T›�^ñ
ð 	
ùò##s   Ã'FÃ?Fc                ó~  • [        [        R                  U5      5      nU(       d  U R                  XS9$ / nS nU H¡  nS nU R                  (       a  U R                  R                  U5      nUc,  U R                  (       a  U R                  R                  U5      nUc  Me  Uc  UR                  nUR                  U:w  a  M†  UR                  UR                  5        M£     U(       d  U R                  XUS   S9$ [        U5      S:X  a  US   O[        R                  " U5      n	[        Ub  UOSU	S[        U5      4S9$ )N©rÁ   r½   r   r  r  ry  )rÑ   ÚdictÚfromkeysr„  rE  r  rD  r®   r  r¯   r  r   r€  r&   )
r   rÁ   r½   Úsource_tag_idsÚ
unique_idsr  r®   Ú	source_idra  r¯   s
             r¹   Ú"_make_text_prov_for_source_tag_idsÚ6HTMLDocumentBackend._make_text_prov_for_source_tag_idsh  s)  € ô œ$Ÿ-™-¨Ó7Ó8ˆ
ÞØ×'Ñ'¨TÐ'Ð;Ð;à#%ˆØ!%ˆÛ#ˆIØˆHØ×-×-Ø×9Ñ9×=Ñ=¸iÓH�ØÑ D×$=×$=Ø×4Ñ4×8Ñ8¸ÓC�ØÑÙØ‰Ø"×*Ñ*�Ø×Ñ 7Ó*ÙØ�L‰L˜Ÿ™Ö'ñ $ö Ø×'Ñ'¨TÈ*ÐUVÉ-Ð'ÐXÐXä˜u›:¨›?ˆu�QŠx´×0JÒ0JÈ5Ó0QˆÜØ&Ñ2‘G¸ØØœ˜T›�^ñ
ð 	
r¸   c                óÀ   • S nU R                   (       a  U R                   R                  U5      nUc,  U R                  (       a  U R                  R                  U5      nU$ rZ  )rE  r  rD  )r   rõ   ra  s      r¹   Ú$_get_rendered_bbox_for_source_tag_idÚ8HTMLDocumentBackend._get_rendered_bbox_for_source_tag_id‰  sQ   € ð ˆØ×)×)Ø×5Ñ5×9Ñ9¸-ÓHˆHØÑ × 9× 9Ø×0Ñ0×4Ñ4°]ÓCˆHØˆr¸   c                óÀ  • U R                  U5      nU R                  U5      nUb  Uc  gUR                  UR                  :w  a  gUR                  nUR                  n[        S[	        UR
                  UR
                  5      5      n[        S[        UR
                  UR
                  5      5      n[	        UR                  UR                  5      [        UR                  UR                  5      -
  n	U	S::  d  X—-  S:  a  gUR                  UR                  -
  n
[        SSU-  5      nS[	        UR                  UR                  5      -  nXÊs=:*  =(       a    U:*  $ s  $ )NFg      ð?r   g333333ã?g       @g      ø?g      à¿)r�  r®   r¯   r)  r.  r¦  rz   r  r?  r@  r¥  )r   Úleft_source_tag_idÚright_source_tag_idrH  rJ  Úleft_boxÚ	right_boxÚ
min_heightÚ
max_heightÚvertical_overlapÚhorizontal_gapÚmax_gapÚmin_gaps                r¹   Ú$_are_source_tag_ids_inline_neighborsÚ8HTMLDocumentBackend._are_source_tag_ids_inline_neighbors“  s#  € ð ×8Ñ8Ð9KÓLˆØ×9Ñ9Ð:MÓNˆØ‰<˜5™=ØØ�<‰<˜5Ÿ=™=Ó(Øà—9‘9ˆØ—J‘Jˆ	Ü˜œc (§/¡/°9×3CÑ3CÓDÓEˆ
Ü˜œc (§/¡/°9×3CÑ3CÓDÓEˆ
Ü˜xŸz™z¨9¯;©;Ó7¼#¸h¿j¹jÈ)Ï+É+Ó:VÑVÐØ˜qÓ Ð%5Ñ%BÀcÓ$IØà"Ÿ™ x§z¡zÑ1ˆÜ�c˜3 Ñ+Ó,ˆØœ˜XŸ^™^¨Y¯_©_Ó=Ñ=ˆØ×3Ó3¨GÑ3Ð3Ñ3Ð3r¸   c           
     óH  • / nSnU[        U5      :  Ga  X   n[        R                  UR                  R	                  5       5      n[        U5      S:X  Gaƒ  UR
                  Gbu  / n/ nS nUn	U	[        U5      :  aó  X   n
[        R                  U
R                  R	                  5       5      n[        U5      S:w  dN  U
R                  UR                  :w  d4  U
R                  UR                  :w  d  U
R                  UR                  :w  a  OdU
R
                  nUc  OTUb  U R                  XŒ5      (       d  O:UR                  U5        UR                  U5        UnU	S-  n	U	[        U5      :  a  Mó  [        U5      S:”  a\  UR                  [        SR                  U5      UR                  UR                  UR                  U(       a  US   OS S9U45        U	nGMÔ  UR
                  (       a  UR
                  /O/ nUR                  XM45        US-  nU[        U5      :  a  GM  U$ )Nr   r  rù   rü   )r  r(  rŠ  rÁ   rý   rõ   rò   ró   rr   r�  r  rñ   Újoin)r   ÚpartsÚ	compactedÚidxÚcurrentr  Ú	run_charsÚrun_source_idsÚprev_source_idÚrun_endÚ	candidateÚcandidate_textÚcandidate_source_idrŠ  s                 r¹   Ú#_compact_adjacent_single_char_partsÚ7HTMLDocumentBackend._compact_adjacent_single_char_partsª  s
  € ð <>ˆ	ØˆØ”C˜“JÔØ‘jˆGÜ.×=Ñ=¸g¿l¹l×>PÑ>PÓ>RÓSˆLä�<Ó  AÔ%¨'×*?Ñ*?Ò*KØ')�	Ø,.�Ø04�Ø�Ø¤ E£
Ó*Ø %¡�IÜ%8×%GÑ%GØ!Ÿ™×,Ñ,Ó.ó&�Nô ˜NÓ+¨qÓ0Ø$×.Ñ.°'×2CÑ2CÓCØ$×/Ñ/°7×3EÑ3EÓEØ$Ÿ>™>¨W¯\©\Ó9àØ*3×*AÑ*AÐ'Ø*Ñ2Øà&Ñ2Ø $× IÑ IØ*÷!ñ !ð Ø×$Ñ$ ^Ô4Ø"×)Ñ)Ð*=Ô>Ø%8�NØ˜q‘L�Gð3 ¤ E£
Õ*ô6 �y“> AÓ%Ø×$Ñ$ä)Ø%'§W¡W¨YÓ%7Ø*1×*;Ñ*;Ø+2×+=Ñ+=Ø%,§\¡\æ9G N°1Ò$5ÈTñð +ðôð "�CÚà8?×8M×8M˜g×3Ñ3Ñ4ÐSUˆNØ×Ñ˜gÐ6Ô7Ø�1‰HˆCðq ”C˜“JÖðr Ðr¸   c                óà  • U R                  U5      nUc  U R                  XS9$ UR                  /nU Hh  nU R                  U5      =(       d    U R                  U5      nUc  M1  UR                  UR                  :w  a  MM  UR                  UR                  5        Mj     [        U5      S:X  a  UR                  O[        R                  " U5      n[        UR                  US[        U5      4S9$ )Nr‡  r  r   ry  )
rW  r|  r¯   rZ  r®   r  r  r   r€  r&   )	r   rÁ   Úcheckbox_tagÚ
label_tagsÚcheckbox_renderedr  Ú	label_tagra  r¯   s	            r¹   Ú_make_checkbox_with_label_provÚ2HTMLDocumentBackend._make_checkbox_with_label_provê  sñ   € ð !×;Ñ;¸LÓIÐØÑ$Ø—?‘?¨�?Ð?Ð?à$5×$:Ñ$:Ð#;ˆÛ#ˆIØ×;Ñ;Øó÷ <à×0Ñ0°Ó;ð ð ÑÙØ×ÑÐ#4×#<Ñ#<Ó<ÙØ�L‰L˜Ÿ™Ö'ñ $ô �5‹z˜Q‹ð ×"Ò"ä×+Ò+¨EÓ2ð 	ô
 Ø%×-Ñ-ØØœ˜T›�^ñ
ð 	
r¸   c                óž  ^ ^
^^• U
UUU 4S jnU
U4S jnT R                  SSR                  S [         5       5       S35      nU GHq  mTR                  nUc  M  / mSm
[	        TR
                  5       HÞ  n[        U[        5      (       aV  [        U5      nUR                  5         UR                  5       (       a$  U" 5         T
b  T
R                  [        U5      5        Mn  [        U[        5      (       d  M…  UR                  5         UR                  [        ;   a  U" 5         TR                  U5        MÃ  U" 5         T
b  T
R                  U5        Mà     U" 5         [	        UR                  5      n UR                  T5      nTR                  5         [#        T5       H  n	UR%                  X‰5        M     GMt     g! [          a     GM…  f = f)a™  Rewrite <p> elements that contain block-level breakers.

This function emulates browser logic when other block-level elements
are found inside a <p> element.
When a <p> is open and a block-level breaker (e.g., h1-h6, div, table)
appears, automatically close the <p>, emit it, then emit the breaker,
and if needed open a new <p> for trailing text.

Args:
    soup: The HTML document. The DOM may be rewritten.
c                 ó¾   >• T cY  TR                  S5      m TR                  [        5      (       a  TR                  [        5      T [        '   TR                  T 5        g g )NrJ   )rÔ  r  r†   r  )Ú	current_pÚ	new_nodesrJ   r7  s   €€€€r¹   Ú_start_paraÚIHTMLDocumentBackend._fix_invalid_paragraph_structure.<locals>._start_para  sO   ø€ àÑ Ø ŸL™L¨Ó-�	Ø—5‘5Ô.×/Ñ/Ø78·u±uÔ=RÓ7S�IÔ3Ñ4Ø× Ñ  Õ+ð	 !r¸   c                 óf   >• T b+  T R                  SS9(       d  T T;   a  TR                  T 5        S m g )NT)rý   )r‰  Úremove)r·  r¸  s   €€r¹   Ú_flush_para_if_emptyÚRHTMLDocumentBackend._fix_invalid_paragraph_structure.<locals>._flush_para_if_empty  s4   ø€ àÑ$¨Y×-?Ñ-?ÀdÐ-?Ö-Kà 	Ó)Ø×$Ñ$ YÔ/Ø‰Ir¸   zp:has(Ú,c              3  ó$   #   • U  H  ov •  M     g 7frZ  r°   ©Ú.0r½   s     r¹   Ú	<genexpr>ÚGHTMLDocumentBackend._fix_invalid_paragraph_structure.<locals>.<genexpr>%  s   é € Ð2QÂ.¸3´3Â.ùs   ‚rí  N)Úselectr   Ú_PARA_BREAKERSr¹  rÑ   ÚcontentsrN  rE   r¿   Úextractrý   r  rG   rq  ÚchildrenÚindexÚ
ValueErrorÚreversedrÕ  )r7  r¹  r½  Ú
paragraphsr¹  ÚnoderÁ   Úsiblingsr£  Únr·  r¸  rJ   s   `         @@@r¹   r�  Ú4HTMLDocumentBackend._fix_invalid_paragraph_structure  sy  û€ ÷	,ð 	,ö	ð —[‘[ 6¨#¯(©(Ñ2QÅ.Ó2QÓ*QÐ)RÐRSÐ!TÓUˆ
äˆAØ—X‘XˆFØ‰~ÙàˆIØˆIä˜QŸZ™ZÖ(�Ü˜d¤O×4Ñ4Ü˜t›9�DØ—L‘L”NØ—z‘z—|‘|Ù#œØ$Ñ0Ø%×,Ñ,¬_¸TÓ-BÔCáä˜d¤C×(Ó(Ø—L‘L”Nà—y‘y¤NÓ2Ù,Ô.Ø!×(Ñ(¨Ô.Ù á#œØ$Ñ0Ø%×,Ñ,¨TÔ2Ù ñ- )ñ0 !Ô"ä˜FŸO™OÓ,ˆHðØ—n‘n QÓ'�ð
 �I‰IŒKÜ˜iÖ(�Ø—‘˜cÖ%ô )òU øôJ ó ãðús   Å3F=Æ=
GÇGc                óL   • U R                   R                  XR                  5      $ rZ  )r;  Úresolve_relative_pathr:  )r   Úlocs     r¹   Ú_resolve_relative_pathÚ*HTMLDocumentBackend._resolve_relative_pathT  s   € Ø×!Ñ!×7Ñ7¸¿^¹^ÓLÐLr¸   c                ó¼  • UR                  [        R                  U US9nU H¦  nUR                  R	                  U5        UR                  U5      nUR                  R                  U5      nUR                  5       UR                  ;   a)  UR                  R                  UR                  5       5        UR                  5       Ul        M¨     UR                  5       nU$ )N)r¦   rq  r¹  )	Ú	add_groupr    ÚUNSPECIFIEDrÉ  r  r¬  r¹  Úget_refr¼  )	Ú
group_namer–  Úprovs_in_cellÚdocling_tableÚgroup_elementrÃ   Úpr_itemÚitem_parentÚref_for_rich_cells	            r¹   Úgroup_cell_elementsÚ'HTMLDocumentBackend.group_cell_elementsW  s¿   € ð Ÿ™Ü×(Ñ(ØØ ð &ð 
ˆó
 "ˆDØ×"Ñ"×)Ñ)¨$Ô/Ø—l‘l 3Ó'ˆGØ!Ÿ.™.×0Ñ0°Ó5ˆKØ�‰Ó  K×$8Ñ$8Ó8Ø×$Ñ$×+Ñ+¨G¯O©OÓ,=Ô>Ø*×2Ñ2Ó4ˆGŽNñ "ð *×1Ñ1Ó3ÐØ Ð r¸   c                ó^   • SnS n[        U 5      S:¼  a  Sn[        R                  XX5      nXE4$ )NFr  T)r  r(  râ  )rÜ  rÛ  r–  rÝ  Úrich_table_cellrá  s         r¹   Úprocess_rich_table_cellsÚ,HTMLDocumentBackend.process_rich_table_cellsm  sB   € ð  ˆØ ÐÜˆ}Ó Ó"à"ˆOÜ 3× GÑ GØ ó!Ðð Ð1Ð1r¸   c                óf  ^ • SnUR                  SS9n[        S U 5       5      n[        U 4S jU 5       5      n[        S U 5       5      nUR                  SS9 Vs/ s H.  n[        U[        5      (       d  M  UR                  S;   d  M,  UPM0     nn[        U 4S jU 5       5      n	U	(       a  gU(       d  [        U5      S	:”  a  gU(       dC  UR                   V
s/ s H  n
[        U
[        5      (       d  M  U
PM     nn
[        U5      S	:„  nU$ T R                  USS
9nU(       d  [        S U 5       5      nU$ [        U5      S	:X  a[  US   n[        UR                  5      =(       d:    [        UR                  5      =(       d    UR                  =(       d    U=(       d    UnU$ s  snf s  sn
f )aØ  Determine whether an table cell should be parsed as a Docling RichTableCell.

A table cell can hold rich content and be parsed with a Docling RichTableCell.
However, this requires walking through the content elements and creating
Docling node items. If the cell holds only plain text, the parsing is simpler
and using a TableCell is prefered.

Args:
    table_cell: The HTML tag representing a table cell.

Returns:
    Whether the cell should be parsed as RichTableCell.
T©Ú	recursivec              3  ó>   #   • U  H  oR                   S :H  v •  M     g7f)ÚinputN©rq  ©rÂ  Úchilds     r¹   rÃ  Ú:HTMLDocumentBackend._is_rich_table_cell.<locals>.<genexpr>�  s   é € ÐDº8°%Ÿ
™
 gÖ-º8ùó   ‚c              3  óF   >#   • U  H  nTR                  U5      v •  M     g 7frZ  )Ú_is_custom_checkbox_tag©rÂ  rï  r   s     €r¹   rÃ  rð  ‘  s"   øé € ð "
Ú=E°EˆD×(Ñ(¨×/Ð/ºXùs   ƒ!c              3  ó>   #   • U  H  oR                   S :H  v •  M     g7f)r~  Nrí  rî  s     r¹   rÃ  rð  ”  s   é € ÐFºX°EŸZ™Z¨4Ö/ºXùrñ  F>   rJ   r`   rc   c              3  ót   >#   • U  H-  n[        U[        5      (       d  M  TR                  U5      v •  M/     g 7frZ  )rN  rG   Ú_is_form_semantic_tagrô  s     €r¹   rÃ  rð  š  s2   øé € ð *
â!�Ü˜%¤×%ó .ˆD×&Ñ& u×-Ð-Ú!ùs   ƒ8 8r  ©Úfind_parent_annotationc              3  óH   #   • U  H  oR                   S ;   d  M  Uv •  M     g7f)>   rT   rì  Nrí  )rÂ  Úitems     r¹   rÃ  rð  ¯  s   é € ð Ú%-˜T·±Ð>NÑ1N—D‘D¢Xùs   ‚"™	"r   )r�  ÚanyrN  rG   rq  r  rÇ  rE   Ú'_extract_text_and_hyperlink_recursivelyrA   ró   rò   rr   )r   Ú
table_cellÚis_richrÉ  Ú	has_inputÚhas_custom_checkboxÚhas_line_breakrï  Údirect_block_text_childrenÚhas_nested_form_semantic_idrû  rš  r   Úannos   `             r¹   Ú_is_rich_table_cellÚ'HTMLDocumentBackend._is_rich_table_cell  sÐ  ø€ ð ˆà×&Ñ&°Ð&Ð6ˆÜÑD¹8ÓDÓDˆ	Ü!ô "
Ù=Eó"
ó 
Ðô ÑF¹XÓFÓFˆð $×,Ñ,°uÐ,Ñ=ó&
â=�Ü˜%¤×%ó à*/¯*©*Ð8JÑ*J÷ Ù=ð 	#ð &
ô
 '*ô *
á!ó*
ó '
Ð#ö
 'ØÞœSÐ!;Ó<¸qÓ@ØÞð '×/Ò/óâ/�DÜ˜d¤O×4÷ Ù/ð ð ô
 ˜'“l QÑ&ˆGð& ˆð# ×FÑFØ°4ð Gð ˆKö Üñ Ù%-óó �ð ˆô �[Ó! QÓ&Ø&1°!¡n�ä˜Ÿ™Ó)÷ +Ü˜DŸN™NÓ+÷+à—y‘y÷+ð !÷+ð +ð ð ˆùòO&
ùòs   ÁF)Á:F)ÂF)ÃF.Ã:F.c                óâ  • [        [        [           UR                  SS/SS95       H  nUR	                  5         M     [
        R                  SU SU S35        [        U5       Vs/ s H  n[        U5       Vs/ s H  nS PM     snPM!     nn[        XE/ S9n	S	n
S
nU" SSS9 GHŸ  n[        U[        5      (       d  M  U R                  U5       Vs1 s H  oÝR                  5       iM     nn[        U;   nU" SS/SS9nSnSnU HR  n[        U[        5      (       d  M  [        R                  U5      u  nnUR                  S:X  a  SnSnMH  US:X  d  MP  SnMT     U(       d  US-  nS	n
OU
S-  n
S	nU GHË  n[        U[        5      (       d  M  U R                  U5       Vs1 s H  nUR                  5       iM     nnU=(       d	    [        U;   nU" S5       HR  nUR                   R#                  S5      n[%        U5      S:X  d  M/  SUS    S3nUR'                  [)        U5      5        MT     / nU R+                  U5      nU(       ae  U R-                  5          U R/                  UU5      nS S S 5        S[%        UR0                  5       SU SX«-    3n[        R3                  UUX#5      u  nn[        R5                  U R7                  U5      R9                  5       5      nU R                  U5      u  n nS n!U R;                  U5      n"U"b  U"R<                  n!U(       a  US-  nUU:  a3  Xº-   U:  a+  X‹U
-      U   b   US-  nUU:  a  Xº-   U:  a  X‹U
-      U   b  M   [        XªU-   5       H8  n#[        U 5       H&  n$UU#-   U:  d  M  UU$-   U:  d  M  UX‹U#-      UU$-   '   M(     M:     U(       aL  [?        UU!UU X«-   X«-   U-   UUU -   UU(       + =(       a    UR                  S:H  UWS9n%URA                  UU%S9  GMƒ  [C        UU!UU X«-   X«-   U-   UUU -   UU(       + =(       a    UR                  S:H  US9n&URA                  UU&S9  GMÎ     GM¢     U	$ s  snf s  snf s  snf s  snf ! , (       d  f       GNû= f)Nrj   rh   Fré  zThe table has z
 rows and z cols.)Únum_rowsÚnum_colsÚtable_cellsr   éÿÿÿÿrb   ra   ÚthTr  zinline-formulaz$$é   Úrich_cell_group_Ú_)rÁ   r¯   Úrow_spanÚcol_spanÚstart_row_offset_idxÚend_row_offset_idxÚstart_col_offset_idxÚend_col_offset_idxÚcolumn_headerÚ
row_headerr‰   Úref)Ú
table_itemÚcell)rÁ   r¯   r  r  r  r  r  r  r  r  r‰   )"r   rÑ   rG   r�  Úunwraprþ   r  r  r+   rN  Ú_get_tag_classesrÃ  rŠ   r(  Ú_get_cell_spansrq  rÁ   r  r  r�  rE   r  Ú_use_table_cell_contextr•  Útablesræ  rŠ  r‰  rý   rW  r¯   r(   Úadd_table_cellr*   )'r   Úelementr–  rÝ  r	  r
  r  r  Úgridr£   Ústart_row_spanÚrow_idxÚrowÚ
class_nameÚrow_classesÚrow_is_row_sectionÚcellsÚ
col_headerr  Ú	html_cellr  Úcol_idxÚcell_classesr‰   ÚformulaÚ
math_partsÚmath_formularÜ  rå  rÛ  rá  rÁ   r  Ú	cell_bboxÚrendered_cellr@  r
  Ú	rich_cellÚsimple_cells'                                          r¹   Úparse_table_dataÚ$HTMLDocumentBackend.parse_table_data¾  sÅ  € ô ”dœ3‘i ×!1Ñ!1°7¸GÐ2DÐPUÐ!1Ð!VÖWˆAØ�H‰HŽJñ Xô 	�
‰
�^ H :¨Z¸°zÀÐHÔIÜ?DÀX¼ÓOº¸!¤U¨8¤_Ó5¢_ “t¡_Ô5¹ˆÐOÜ (È2ÑNˆð ˆØˆñ ˜4¨5Õ1ˆCÜ˜c¤3×'Ñ'Ùà59×5JÑ5JÈ3Ô5OóÚ5O z× Ñ Ö"Ñ5Oð ð ô "4°{Ñ!BÐñ ˜˜t˜°Ñ6ˆEàˆJØˆJÛ"�	Ü˜i¬×-Ó-Ü"5×"EÑ"EÀiÓ"P‘K�A�xØ —~‘~¨Ó-Ø%*˜
Ø%*š
Ø! Q�Ø%*š
ñ #ö Ø˜1‘�Ø!"‘à !Ñ#�ð ˆGÜ"�	Ü! )¬S×1Ñ1Ùð '+×&;Ñ&;¸IÔ&Fó â&F˜
ð ×$Ñ$Ö&Ù&Fð ð  ð 1×XÔ5GÈ<Ñ5W�ñ  )Ð)9Ö:�GØ!(§¡×!3Ñ!3°DÓ!9�JÜ˜:“¨!Õ+Ø)+¨J°q©M¨?¸"Ð'=˜Ø×,Ñ,¬_¸\Ó-JÖKñ	  ;ð 02�Ø"&×":Ñ":¸9Ó"E�Þ"à×5Ñ5Õ7Ø(,¯
©
°9¸cÓ(B˜÷ 8ð $4´C¸¿
¹
³OÐ3DÀAÀgÀYÈaÐP^ÑPhÐOiÐ!j�Jä+×DÑDØ)¨:°sóñ 7�OÐ%6ô +×9Ñ9Ø—M‘M )Ó,×2Ñ2Ó4ó�ð &*×%9Ñ%9¸)Ó%DÑ"�˜(Ø �	Ø $× ?Ñ ?À	Ó J�Ø Ñ,Ø -× 2Ñ 2�IÞØ ‘M�Hà˜hÓ&ØÑ0°8Ó;Ø ~Ñ5Ñ6°wÑ?ÑKà˜q‘L�Gð	 ˜hÓ&ØÑ0°8Ó;Ø ~Ñ5Ñ6°wÑ?ÓKô ˜~ÀÑ/HÖI�AÜ" 8ž_˜Ø" Q™;¨Õ1°gÀ±kÀHÕ6LØ=A˜D¨1¡Ñ-¨g¸©kÓ:ó -ñ Jö
 #Ü -Ø!Ø&Ø!)Ø!)Ø-;Ñ-EØ+9Ñ+CÀhÑ+NØ-4Ø+2°XÑ+=Ø&0Ø)3¤^×$O¸¿¹È4Ñ9OØ$/Ø-ñ!�Ið ×&Ñ&°-ÀiÐ&ÔPä"+Ø!Ø&Ø!)Ø!)Ø-;Ñ-EØ+9Ñ+CÀhÑ+NØ-4Ø+2°XÑ+=Ø&0Ø)3¤^×$O¸¿¹È4Ñ9OØ$/ñ#�Kð ×&Ñ&°-ÀkÐ&ÔRôe #ñ; 2ð` ˆùòq 6ùÒOùòùò: ÷" 8Ö7ús0   Á(QÁ;Q
ÂQÃQÆ"QÉQÑQÑ
Q.c           
     óp  ^ ^^^^• / m[        5       mSUUUUU 4S jjnTR                   GH´  n[        U[        5      (       GaÚ  UR                  R                  5       nT R                  U5      =n(       a@  U" 5         TR                  T R                  UTT R                  T R                     S95        MŒ  T R                  U5      (       a  US:X  a  U" 5         M±  [        UR                  [        5      =(       d-    UR                  S5      =(       d    UR                  U 4S j5      5      nT R                  U5      nT R!                  U5      (       a-  U" 5         T R#                  UT5      n	TR                  U	5        GMW  T R%                  U5      (       a0  U" 5         T R'                  UT5      n
U
b  TR)                  U
5        GM�  T R+                  U5      (       a0  U" 5         T R-                  UT5      nUb  TR)                  U5        GMã  US:X  a7  U" 5         T R/                  UT5      nU(       a  TR)                  U5        GM  GM   US:X  a7  U" 5         T R1                  UT5      nU(       a  TR)                  U5        GMZ  GM]  U[2        ;   a”  U(       d  U(       aH  U" 5         T R5                  U/5         T R7                  UT5      nTR                  U5        SSS5        GM½  T R5                  U/5         TR                  T R9                  USS	S
95        SSS5        GMû  US:X  a’  U(       d  U(       aG  U" 5         T R;                  U5         T R7                  UT5      nTR                  U5        SSS5        GMV  T R;                  U5         TR                  T R9                  USS	S
95        SSS5        GM“  U[        ;   a‰  US:w  aV  T R=                  U5       HA  nU" 5         TR                  T R                  UTT R                  T R                     S95        MC     U" 5         T R?                  UT5      nTR                  U5        GM&  U(       a-  U" 5         T R7                  UT5      nTR                  U5        GMZ  U(       a-  U" 5         T R7                  UT5      nTR                  U5        GMŽ  T RA                  U5      (       a#  TR                  T R9                  USS	S
95        GMÇ  U" 5         T R7                  UT5      nTR                  U5        GMô  [        U[B        5      (       d  GM  [        U[D        5      (       a  GM$  [G        U5      nURI                  S5      S:X  aP  [        URJ                  [        5      (       a  URJ                  OSnUb  UR                  S;   a  SU;   a  U" 5         GM”  TR                  T R9                  USS	S
95        GM·     U" 5         T$ ! , (       d  f       GMÒ  = f! , (       d  f       GMå  = f! , (       d  f       GMø  = f! , (       d  f       GM  = f)a!  Parse an XML tag by recursively walking its content.

While walking, the method buffers inline text across tags like <b> or <span>,
emitting text nodes only at block boundaries.

Args:
    element: The XML tag to parse.
    doc: The Docling document to be updated with the parsed content.
c                 ó  >• T(       d  g TR                  5       n U R                  5       nTR                  5         SR                  U  Vs/ s H  o"R                  PM     sn5      (       d  g U GH   n TR                  U 5      n[        U 5      S:H  =(       a.    [        U S   R                  5      =(       a    TR                  S;  nTR                  U TUS9 nU GHs  u  pgUR                  R                  5       (       d  M'  [        R                  UR                  R                  5       5      nUR                  (       a€  TR                  UTUS9n	TR                  TR                   TR"                     UTR$                  UR&                  UR(                  U	S9n
Uc!  TR+                  U
R-                  5       5        Mã  Må  TR                  UTUS9n	TR/                  TR                   TR"                     [0        R2                  UTR$                  UR&                  UR(                  U	S9nUb  GMT  TR+                  UR-                  5       5        GMv     Ub  TR+                  U5        S S S 5        GM     g s  snf ! , (       d  f       GM  = f)	Nrù   r  r   >   rJ   rU   )Úforce©rÁ   r½   rŠ  ©r¹  rÁ   ry  ró   rò   rÃ   ©r¹  r¦   rÁ   ry  ró   rò   rÃ   )r  r$  r”  r   rÁ   r¬  r  rA   rr   rq  Ú_use_inline_grouprý   r(  rŠ  r�  Úadd_coder>  r=  ry  ró   rò   r  rÚ  Úadd_textr   rØ   )Úannotated_text_listr¡  r!  Úcompacted_partsÚforce_inline_groupÚ
inline_refÚannotated_textrŠ  Ú	seg_cleanrÃ   Údocling_code2Údocling_text2Ú
added_refsÚbufferr–  r"  r   s               €€€€€r¹   Ú_flush_bufferÚ0HTMLDocumentBackend._walk.<locals>._flush_bufferQ  sn  ø€ ÞØØ5;×5RÑ5RÓ5TÐØ'×8Ñ8Ó:ˆEØ�L‰LŒNà—7‘7Ñ.AÓBÒ.A¨ŸGœGÑ.AÑB×CÑCØä',Ð#Ø"&×"JÑ"JØ'ó#�ô Ð+Ó,°Ñ1÷ 9ÜÐ0°Ñ3×8Ñ8Ó9÷9àŸ™¨LÑ8ð #ð
 ×+Ñ+Ø'¨Ð4Fð ,ñ àÜ:IÑ6˜Ø)×.Ñ.×4Ñ4×6Ó6Ü(;×(JÑ(JØ .× 3Ñ 3× 9Ñ 9Ó ;ó)˜Ið  .×2×2Ø'+×'NÑ'NØ)2Ø(/Ø3Að (Oð (" ð
 14·±Ø+/¯<©<¸¿
¹
Ñ+CØ)2Ø26×2DÑ2DØ/=×/HÑ/HØ.<×.FÑ.FØ)-ð 1=ð 1" ð $.Ñ#5Ø$.×$5Ñ$5°m×6KÑ6KÓ6MÖ$Nñ $6ð (,×'NÑ'NØ)2Ø(/Ø3Að (Oð (" ð
 14·±Ø+/¯<©<¸¿
¹
Ñ+CÜ*6×*;Ñ*;Ø)2Ø26×2DÑ2DØ/=×/HÑ/HØ.<×.FÑ.FØ)-ð 1=ð 1" ð $.Ô#5Ø$.×$5Ñ$5°m×6KÑ6KÓ6M×$NñK ;JðL "Ñ-Ø"×)Ñ)¨*Ô5÷Uò ò (-ùò C÷÷ ús   Á	I3Ã&I8Ä D(I8È-8I8É8
J	)r   r–  r¹  r~  rì  c                óT   >• [        U [        5      =(       a    TR                  U 5      $ rZ  ©rN  rG   ró  ©rû  r   s    €r¹   Ú<lambda>Ú+HTMLDocumentBackend._walk.<locals>.<lambda>§  ó!   ø€ Ü& t¬SÓ1×X°d×6RÑ6RÐSWÓ6XÐXr¸   NrT   TF©rù  Úkeep_newlinesrœ   rW   ú
rù   >   ra   r  r  r  )&r÷   rÇ  rN  rG   rq  rÃ  Ú_consume_form_field_for_tagÚextendÚ_add_field_item_from_extractedr>  r=  Ú_is_suppressed_tagrA   rÓ  r^   Ú"_has_pending_form_field_in_subtreeÚ_is_form_containerÚ_handle_form_containerÚ_should_flatten_info_textÚ_emit_flattened_text_tagr  ró  Ú_emit_custom_checkboxÚ_emit_imageÚ_emit_inputr…   Ú_use_formatr•  rý  Ú_use_hyperlinkÚ_consume_form_fields_in_subtreeÚ_handle_blockÚ_should_buffer_tag_text_inlinerE   rH   r¿   rý   r¹  )r   r"  r–  rK  rÎ  rq  Ú
form_fieldÚhas_block_descendantsÚhas_pending_form_fieldsÚ	form_refsÚflattened_refÚcheckbox_refÚim_ref3Ú	input_refÚwkÚwk2r   ÚblkÚwk3Úwk4Úwk5Ú	node_textÚ
parent_tagrI  rJ  s   ```                    @@r¹   r•  ÚHTMLDocumentBackend._walkD  sU  ü€ ð %'ˆ
Ü$5Ó$7ˆ÷=	6ó =	6ð~ ×$Õ$ˆDÜ˜$¤×$Ò$Ø—y‘y—‘Ó(�Ø!%×!AÑ!AÀ$Ó!GÐG�:ÕGÙ!”OØ×%Ñ%Ø×;Ñ;Ø",Ø #Ø#'§<¡<°·
±
Ñ#;ð <ð ôñ Ø×*Ñ*¨4×0Ñ0Ø˜t“|ñ &œÙÜ(,Ø—I‘IœkÓ*÷ Ø—y‘y Ó)÷à—y‘yôóó)Ð%ð +/×*QÑ*QÐRVÓ*WÐ'Ø×*Ñ*¨4×0Ñ0Ù!”OØ $× ;Ñ ;¸DÀ#Ó F�IØ×%Ñ% iÔ0ÚØ×1Ñ1°$×7Ñ7Ù!”OØ$(×$AÑ$AÀ$ÈÓ$L�MØ$Ñ0Ø"×)Ñ)¨-Ô8ÚØ×/Ñ/°×5Ñ5Ù!”OØ#'×#=Ñ#=¸dÀCÓ#H�LØ#Ñ/Ø"×)Ñ)¨,Ô7ÚØ˜5“=Ù!”OØ"×.Ñ.¨t°SÓ9�GÞØ"×)Ñ)¨'×2ò à˜W“_Ù!”OØ $× 0Ñ 0°°sÓ ;�IÞ Ø"×)Ñ)¨)×4ò !àœ_Ó,Þ,Ö0GÙ%œØ!×-Ñ-¨t¨fÕ5Ø!%§¡¨D°#Ó!6˜BØ&×-Ñ-¨bÔ1÷ 6Ò5ð "×-Ñ-¨t¨fÕ5Ø"ŸM™MØ $× LÑ LØ$(Ø;?Ø27ð !Mð !"ô÷ 6Ò5ð ˜S“[Þ,Ö0GÙ%œØ!×0Ñ0°Õ6Ø"&§*¡*¨T°3Ó"7˜CØ&×-Ñ-¨cÔ2÷ 7Ò6ð "×0Ñ0°Õ6Ø"ŸM™MØ $× LÑ LØ$(Ø;?Ø27ð !Mð !"ô÷ 7Ò6ð œ[Ó(Ø˜w“Ø%)×%IÑ%IÈ$Ö%O˜EÙ)œOØ&×-Ñ-Ø $× CÑ CØ*/Ø(+Ø+/¯<©<¸¿
¹
Ñ+Cð !Dð !"öñ &Pñ "”OØ×,Ñ,¨T°3Ó7�CØ×%Ñ% c×*Þ*Ù!”OØŸ*™* T¨3Ó/�CØ×%Ñ% c×*Þ,ñ "”OØŸ*™* T¨3Ó/�CØ×%Ñ% c×*Ø×8Ñ8¸×>Ñ>Ø—M‘MØ×DÑDØ ¸ÈUð Eð ÷ñ "”OØŸ*™* T¨3Ó/�CØ×%Ñ% c×*Ü˜D¤/×2Ô2¼:ØÔ(÷<ô <ô   ›I�	Ø—?‘? 6Ó*¨bÓ0Ü0:¸4¿;¹;Ì×0LÑ0L §¢ÐRV�Jà"Ñ.Ø&ŸO™O¨|Ó;Ø  IÓ-á%œÚà—M‘MØ×DÑDØ ¸ÈUð Eð ÷ñM %ñX 	ŒØÐ÷e 6×5ú÷ 6×5ú÷ 7×6ú÷ 7×6ús0   Ê8$W,Ë9!W?Í$XÎ!X%×,
W<	×?
X	Ø
X"	Ø%
X5	c                ó®   • / n[          HH  nU R                  nUc  M  UR                  U:X  a  UR                  U5        M7  UR                  nUb  M4  MJ     U$ rZ  )r…   r¹  rq  r  )rû  ÚtagsÚ
format_tagÚthis_parents       r¹   Ú_collect_parent_format_tagsÚ/HTMLDocumentBackend._collect_parent_format_tags  sW   € àˆß)ˆJØŸ+™+ˆKØÓ)Ø×#Ñ# zÓ1Ø—K‘K 
Ô+ÙØ)×0Ñ0�ð	 Õ)ñ *ð ˆr¸   c                ó‚   • 0 nU R                    H  nUR                  [        U   5        M     U(       d  g [        S0 UD6$ )Nr°   )rA  Úupdater…   r/   )r   Úkwargsr  s      r¹   Ú_formattingÚHTMLDocumentBackend._formatting+  s<   € àˆØ×!Ô!ˆAØ�M‰Mœ/¨!Ñ,Ö-ñ "æØÜÑ#˜FÑ#Ð#r¸   c           
     ó¾  ^ • [        5       nU(       až  T R                  U5      nUR                  nUb~  UR                  S:X  a]  UR	                  S5      (       aG  T R                  U5         T R                  U5         T R                  X5      sS S S 5        sS S S 5        $ UR                  nUb  M~  [        U[        5      (       a
  [        5       $ [        U[        5      (       Ga¤  [        UR                  [        5      (       aT  T R                  UR                  5      (       a
  [        5       $ T R                  UR                  5      (       a
  [        5       $ U(       a  UR                  5       nOAUR                  SS5      R                  SS5      nSR!                  UR#                  5       5      n[%        U 4S j[&         5       5      n	[        UR                  [        5      (       a  T R)                  UR                  5      OS n
U(       a+  [        [+        UT R,                  T R.                  U	U
S9/5      $ U(       a@  UR                  S5      S	:X  a+  [        [+        ST R,                  T R.                  U	U
S9/5      $ [        5       $ [1        [        U5      nT R                  U5      (       a
  [        5       $ T R3                  U5      (       a
  [        5       $ T R5                  U5      (       a
  [        5       $ U(       a  UR                  S
;  a÷  U Hñ  n[        U[        5      (       aZ  UR                  [6        ;   aF  T R                  UR                  /5         UR9                  T R                  XÂUS95        S S S 5        Mr  [        U[        5      (       aK  UR                  S:X  a;  T R                  U5         UR9                  T R                  XÂUS95        S S S 5        MÒ  UR9                  T R                  XÂUS95        Mó     U$ ! , (       d  f       O= f S S S 5        GM‡  ! , (       d  f       GN–= f! , (       d  f       GM6  = f! , (       d  f       GMI  = f)Nrœ   rÑ  r  rú   Úc              3  ó@   >#   • U  H  oTR                   ;   v •  M     g 7frZ  )rA  )rÂ  Úcode_tagr   s     €r¹   rÃ  ÚNHTMLDocumentBackend._extract_text_and_hyperlink_recursively.<locals>.<genexpr>^  s   øé € ÐRÂM¸ 4×#3Ñ#3Ö3ÂMùó   ƒrü   rU  rù   )rS   rR   rK   rW   )rT  )r÷   r|  r¹  rq  r  rb  rc  rý  rN  rH   rE   rG   rY  Ú_is_checkbox_label_containerrý   r  r   r  rü  rt   rP  rñ   rò   r�  r   Ú_is_checkbox_like_tagÚ_is_checkbox_label_tagr…   rW  )r   rû  Úignore_listrù  rT  ÚresultrA  r{  rÁ   rr   rõ   r½   rï  s   `            r¹   rý  Ú;HTMLDocumentBackend._extract_text_and_hyperlink_recursively4  s•  ø€ ô %6Ó$7ˆö
 "Ø×:Ñ:¸4Ó@ˆKØŸ+™+ˆKØÑ)Ø×#Ñ# sÓ*¨{¯©¸v×/FÑ/FØ×)Ñ)¨+Õ6Ø!×0Ñ0°Õ=Ø#'×#OÑ#OØ $ó$÷ >Ð=÷ 7Ñ6ð
 *×0Ñ0�ð Ó)ô �dÔ.×/Ñ/Ü$Ó&Ð&ä�dœO×,Ò,Ü˜$Ÿ+™+¤s×+Ñ+Ø×*Ñ*¨4¯;©;×7Ñ7Ü,Ó.Ð.Ø×4Ñ4°T·[±[×AÑAÜ,Ó.Ð.æØ ŸJ™J›L‘ð —|‘| D¨#Ó.×6Ñ6°t¸SÓA�Ø—x‘x §
¡
£Ó-�äÔRÅMÓRÓRˆDä1;¸D¿K¹KÌ×1MÑ1M�× Ñ  §¡Ô-ÐSWð ö Ü(ä%Ø!%Ø&*§n¡nØ'+×'7Ñ'7Ø!%Ø*7ñðó
ð 
ö  §¡¨FÓ!3°rÓ!9Ü(ä%Ø!%Ø&*§n¡nØ'+×'7Ñ'7Ø!%Ø*7ñðó
ð 
ô %Ó&Ð&ä”3˜‹oˆØ×"Ñ" 3×'Ñ'Ü$Ó&Ð&Ø×%Ñ% c×*Ñ*Ü$Ó&Ð&Ø×&Ñ& s×+Ñ+Ü$Ó&Ð&Þ˜sŸx™xÐ/JÓJÛ�Ü˜e¤S×)Ñ)¨e¯j©j¼OÓ.KØ×)Ñ)¨5¯:©:¨,Õ7ØŸ™Ø ×HÑHØ %À-ð Ið ô÷ 8Ñ7ô   ¤s×+Ñ+°·
±
¸cÓ0AØ×,Ñ,¨UÕ3ØŸ™Ø ×HÑHØ %À-ð Ið ô÷ 4Ñ3ð —M‘MØ×DÑDØ!¸mð Eð öñ# ð, ˆ÷i >Õ=úÐ=÷ 7×6×6Ñ6ú÷B 8×7ú÷ 4×3ús<   Á*P'Á<P
Â	P'Í P9Î; QÐ

P	ÐP'Ð'
P6Ð9
Q		Ñ
Q	c              #  ó^  #   • S nS nUR                  S5      nUc  S v •  g [        U[        5      (       a6  U(       a/  U R                  nU R	                  U5      n [        U5      nX0l         S v •  U(       a  X l        g g ! [         a    [        U5      n N1f = f! U(       a  X l        f f = f7f)NrÑ  )r  rN  r¿   rò   rÕ  r3   r5   r	   )r   r½   Úold_hyperlinkÚnew_hyperlinkÚ	this_hrefs        r¹   rc  Ú"HTMLDocumentBackend._use_hyperlinkœ  s¥   é € à37ˆØ37ˆØ—G‘G˜F“Oˆ	ØÑØ‹Jä˜)¤S×)Ñ)®iØ $§¡�Ø ×7Ñ7¸	ÓB�	ð4Ü$*¨9Ó$5�Mð "/”ð3Ø’
æ Ø%2•Nð !øô 'ó 4Ü$(¨£O’Mð4ûö !Ø%2•Nð !üsB   ‚AB-ÁA? Á%B-Á,B Á0B-Á?BÂB-ÂBÂB-ÂB*Â*B-c              #  óæ   #   • U(       d  S v •  g U R                   R                  U5         S v •  U R                   S [        U5      *  U l         g ! U R                   S [        U5      *  U l         f = f7frZ  )rA  rW  r  )r   ry  s     r¹   rb  ÚHTMLDocumentBackend._use_format³  sb   é € æØ‹Jà×Ñ×#Ñ# DÔ)ðBØ’
à#'×#3Ñ#3°L´s¸4³y°jÐ#A�Õ ø 4×#3Ñ#3°L´s¸4³y°jÐ#A�Õ üs   ‚(A1«A ¯A1Á A.Á.A1c                ó&  • XR                   ;   a  U R                   U   nU=(       d    S $ U R                  c  g U R                  R                  [        U0S9n[	        U[
        5      (       a  UR                  OSnX R                   U'   U=(       d    S $ )N©Úattrsrù   )rK  r7  rÓ  r†   rN  rG   rq  )r   rõ   Útag_namer½   s       r¹   Ú_get_tag_name_for_docling_idÚ0HTMLDocumentBackend._get_tag_name_for_docling_id¾  s€   € Ø×>Ñ>Ó>Ø×9Ñ9¸-ÑHˆHØ×#˜tÐ#Ø�9‰9ÑØØ�i‰i�n‰nÔ$9¸=Ð#IˆnÐJˆÜ)¨#¬s×3Ñ3�3—8’8¸ˆØ<D×*Ñ*¨=Ñ9Ø×˜4Ðr¸   c                óâ   • [        U5      S::  a  g[        S U 5       5      (       a  g1 SknU H=  nUR                  nUc    gU R                  U5      nUc    gU[        ;  d  M6  XR;  d  M=    g   g)Nr  Fc              3  ó>   #   • U  H  nUR                   S L v •  M     g 7frZ  )rõ   )rÂ  rE  s     r¹   rÃ  ÚBHTMLDocumentBackend._should_create_inline_group.<locals>.<genexpr>Ð  s"   é € ð 
â"5�ð ×(Ñ(¨DÕ0Ú"5ùrñ  T>   rJ   ra   r  rZ   r\   )r  Úallrõ   rš  r¨   )r   rA  Úinline_group_container_tagsrE  rõ   r™  s         r¹   Ú_should_create_inline_groupÚ/HTMLDocumentBackend._should_create_inline_groupÉ  s�   € ô Ð"Ó# qÓ(Øô ñ 
á"5ó
÷ 
ñ 
ð ò 'NÐ#Û1ˆNØ*×8Ñ8ˆMØÑ$ÙØ×8Ñ8¸ÓGˆHØÑÙàÔ 1Õ1ØÕ?áñ 2ð r¸   c              #  óB  #   • U R                   S:”  a  Sv •  gU(       d  U R                  U5      (       d  Sv •  gUR                  [        R                  U R
                  U R                     U R                  S9nX@R
                  U R                  S-   '   U =R                  S-  sl         UR                  5       v •  SU R
                  U R                  '   U =R                  S-  sl        g! SU R
                  U R                  '   U =R                  S-  sl        f = f7f)a   Create an inline group for annotated texts.

Checks if annotated_text_list has more than one item and if so creates an inline
group in which the text elements can then be generated. While the context manager
is active the inline group is set as the current parent.

Args:
    annotated_text_list (AnnotatedTextList): Annotated text
    doc (DoclingDocument): Currently used document

Yields:
    The RefItem of the created InlineGroup, or None when the list has only one
        element and no group is created.
r   N)r¦   r¹  ry  r  )	r@  r¡  rØ  r    ÚINLINEr>  r=  ry  rÚ  )r   rA  r–  r:  Ú
inline_fmts        r¹   r>  Ú%HTMLDocumentBackend._use_inline_groupæ  sæ   é € ð* ×+Ñ+¨aÓ/ØŠJØÞ˜T×=Ñ=Ð>Q×RÑRØŠJØØ—]‘]Ü×#Ñ#Ø—<‘< §
¡
Ñ+Ø×,Ñ,ð #ð 
ˆ
ð
 (2�‰�T—Z‘Z !‘^Ñ$Ø�
Š
�a‰�
ð	Ø×$Ñ$Ó&Ò&à'+ˆD�L‰L˜Ÿ™Ñ$Ø�JŠJ˜!‰OŽJøð (,ˆD�L‰L˜Ÿ™Ñ$Ø�JŠJ˜!‰OŽJüs   ‚B(DÂ+C, Â=/DÃ,0DÄDc              #  óØ  #   • UR                  UR                  [        R                  U R                  U R
                     U R                  S9U R                  U R
                  S-   '   U =R
                  S-  sl         Sv •  SU R                  U R
                  S-   '   U =R
                  S-  sl        g! SU R                  U R
                  S-   '   U =R
                  S-  sl        f = f7f)zÞCreate a group with the content of a details tag.

While the context manager is active, the hierarchy level is set one
level higher as the cuurent parent.

Args:
    tag: The details tag.
    doc: Currently used document.
©rq  r¦   r¹  ry  r  N)rØ  rq  r    ÚSECTIONr>  r=  ry  )r   r½   r–  s      r¹   Ú_use_detailsÚ HTMLDocumentBackend._use_details  s¶   é € ð (+§}¡}Ø—‘Ü×$Ñ$Ø—<‘< §
¡
Ñ+Ø×,Ñ,ð	 (5ð (
ˆ�‰�T—Z‘Z !‘^Ñ$ð 	�
Š
�a‰�
ð	ØŠJà+/ˆD�L‰L˜Ÿ™ a™Ñ(Ø�JŠJ˜!‰OŽJøð ,0ˆD�L‰L˜Ÿ™ a™Ñ(Ø�JŠJ˜!‰OŽJüs   ‚A;C*Á>B4 Â2C*Â43C'Ã'C*c              #  óD  #   • XR                   U R                  S-   '   U =R                  S-  sl         Sv •  SU R                   U R                  S-   '   U =R                  S-  sl        g! SU R                   U R                  S-   '   U =R                  S-  sl        f = f7f)z?Create a form container group and set it as the current parent.r  N©r>  r=  )r   Ú	form_items     r¹   Ú_use_form_containerÚ'HTMLDocumentBackend._use_form_container&  s{   é € ð (1�‰�T—Z‘Z !‘^Ñ$Ø�
Š
�a‰�
ð	ØŠJà+/ˆD�L‰L˜Ÿ™ a™Ñ(Ø�JŠJ˜!‰OŽJøð ,0ˆD�L‰L˜Ÿ™ a™Ñ(Ø�JŠJ˜!‰OŽJüs   ‚1B ´A* ¸2B Á*3BÂB c              #  ó2  #   • U R                   n[        R                  U l         UR                  UR                  [
        R                  U R                  U R                     U R                   S9U R                  U R                  S-   '   U =R                  S-  sl         Sv •  SU R                  U R                  S-   '   U =R                  S-  sl        X0l         g! SU R                  U R                  S-   '   U =R                  S-  sl        X0l         f = f7f)zúCreate a group with a footer.

Create a group with the content of a footer tag. While the context manager
is active, the hierarchy level is set one level higher as the cuurent parent.

Args:
    tag: The footer tag.
    doc: Currently used document.
r¨  r  N)	ry  r.   r‹  rØ  rq  r    r©  r>  r=  )r   r½   r–  Úcurrent_layers       r¹   Ú_use_footerÚHTMLDocumentBackend._use_footer1  sÛ   é € ð ×*Ñ*ˆÜ)×3Ñ3ˆÔØ'*§}¡}Ø—‘Ü×$Ñ$Ø—<‘< §
¡
Ñ+Ø×,Ñ,ð	 (5ð (
ˆ�‰�T—Z‘Z !‘^Ñ$ð 	�
Š
�a‰�
ð	/ØŠJà+/ˆD�L‰L˜Ÿ™ a™Ñ(Ø�JŠJ˜!‰O�JØ!.Õøð ,0ˆD�L‰L˜Ÿ™ a™Ñ(Ø�JŠJ˜!‰O�JØ!.Õüs   ‚BDÂC Â#8DÃ9DÄDc              #  óœ   #   • U R                   nU R                  R                  5       n Sv •  Xl         X l        g! Xl         X l        f = f7f)zÙPreserve the hierarchy level and parents during table cell processing.

While the context manager is active, the hierarchy level and parents can be modified.
When exiting, the original level and parents are restored.
N)r=  r>  Úcopy)r   Úoriginal_levelÚoriginal_parentss      r¹   r  Ú+HTMLDocumentBackend._use_table_cell_contextL  sB   é € ð Ÿ™ˆØŸ<™<×,Ñ,Ó.Ðð	,Ûà'ŒJØ+�Løð (ŒJØ+�Lüs   ‚'Aª; ®A»A	Á	Ac              #  ó\  #   • U(       ag  XR                   U R                  S-   '   U =R                  S-  sl         Sv •  SU R                   U R                  S-   '   U =R                  S-  sl        gSv •  g! SU R                   U R                  S-   '   U =R                  S-  sl        f = f7f)aN  Set up context for processing nested content within a list item.

Args:
    parent_item: The list item to use as parent for nested content.
        If None, the context manager does nothing.

While the context manager is active, the hierarchy level is increased
and the parent is set. When exiting, the level and parent are restored.
r  Nr­  )r   Úparent_items     r¹   Ú_use_list_item_contextÚ*HTMLDocumentBackend._use_list_item_context[  s   é € ö Ø+6�L‰L˜Ÿ™ a™Ñ(Ø�JŠJ˜!‰O�Jð Ûà/3�—‘˜TŸZ™Z¨!™^Ñ,Ø—
’
˜a‘–
äøð 04�—‘˜TŸZ™Z¨!™^Ñ,Ø—
’
˜a‘–
üs   ‚8B,»A6 ¿7B,Á63B)Â)B,c                óÒ  • / nUR                   R                  5       n[        R                  U l        [        US   5      nU R                  USS9nUR                  5       n[        R                  UR                  5      nU R                  UUUR                  S9n	US:X  a´  U R                  R                  5        H  n
S U R                  U
'   M     SU l        UR!                  UU R                  UR"                  UR$                  U	S9U R                  U R                  S-   '   U R                  U R                  S-      nUb  UR'                  5       /nGO­US-  nXPR                  :”  a‰  [)        U R                  U5       Hh  n[*        R-                  SU 35        UR/                  SUS-    3[0        R2                  U R                  U   U R                  S	9U R                  US-   '   Mj     XPl        OgXPR                  :  aX  U R                  R                  5        H4  n
X¥S-   :”  d  M  [*        R-                  S
U
 35        S U R                  U
'   M6     XPl        UR5                  U R                  U R                     UUR                  U R                  U R                  UR"                  UR$                  U	S9U R                  U R                  S-   '   U R                  U R                  S-      nUb  UR'                  5       /nU =R                  S-  sl        U" S5       HE  n[7        U[8        5      (       d  M  U R;                  Xâ5      nU(       d  M4  UR=                  U5        MG     U$ )Nr  Trø  r  r   )ry  ró   rò   rÃ   z Adding invisible group to level zheader-r¨  zRemove the tail of level )r¹  rÁ   rÀ   r=  ry  ró   rò   rÃ   rT   )rq  rÃ  r.   r“  ry  r­   rý  r  r(  rŠ  rÁ   r„  rõ   r>  Úkeysr=  rˆ  ró   rò   rÚ  r  rþ   r  rØ  r    r©  Úadd_headingrN  rG   r`  r  )r   r½   r–  Ú	added_refr™  r=  rA  rE  Ú
text_cleanrÃ   ÚkeyÚp1r|   Úp2Úimg_tagÚim_refs                   r¹   Ú_handle_headingÚ#HTMLDocumentBackend._handle_headingq  s  € Øˆ	Ø—8‘8—>‘>Ó#ˆä)×.Ñ.ˆÔÜ�H˜Q‘KÓ ˆØ"×JÑJØ¨ð Kð 
Ðð -×CÑCÓEˆÜ(×7Ñ7¸×8KÑ8KÓLˆ
Ø×#Ñ#ØØØ(×6Ñ6ð $ð 
ˆð �A‹:Ø—|‘|×(Ñ(Ö*�Ø$(�—‘˜SÓ!ñ +àˆDŒJØ+.¯=©=ØØ"×0Ñ0Ø)×4Ñ4Ø(×2Ñ2Øð ,9ð ,ˆD�L‰L˜Ÿ™ a™Ñ(ð —‘˜dŸj™j¨1™nÑ-ˆBØ‰~ØŸZ™Z›\˜N�	ùð �Q‰JˆEØ—z‘zÓ!ä˜tŸz™z¨5Ö1�AÜ—J‘JÐ!AÀ!ÀÐEÔFØ*-¯-©-Ø& q¨1¡u gÐ.Ü(×0Ñ0Ø#Ÿ|™|¨A™Ø&*×&8Ñ&8ð	 +8ð +�D—L‘L  Q¡Ó'ñ 2ð #•
ØŸ™Ó#àŸ<™<×,Ñ,Ö.�CØ Q™Y•ÜŸ
™
Ð%>¸s¸eÐ#DÔEØ,0˜Ÿ™ SÓ)ñ /ð #”
Ø+.¯?©?Ø—|‘| D§J¡JÑ/ØØ#×(Ñ(Ø—j‘jØ"×0Ñ0Ø)×4Ñ4Ø(×2Ñ2Øð ,;ð 	,ˆD�L‰L˜Ÿ™ a™Ñ(ð —‘˜dŸj™j¨1™nÑ-ˆBØ‰~ØŸZ™Z›\˜N�	Ø�
Š
�a‰�
Ù˜5–zˆGÜ˜'¤3×'Ó'Ø×)Ñ)¨'Ó7�ß�6Ø×$Ñ$ VÖ,ñ	 "ð
 Ðr¸   c                ó´   • UR                   nU(       aE  X2:w  a@  [        U[        5      (       a  UR                  S;   a  gUR                   nU(       a  X2:w  a  M@  g)zãCheck if element has a list ancestor between itself and boundary.

Args:
    elem: The element to check
    boundary: The boundary element (typically the list item)

Returns:
    True if a list ancestor exists, False otherwise
>   rK   rR   rS   TF)r¹  rN  rG   rq  )r   ÚelemÚboundaryr¹  s       r¹   Ú_has_list_ancestorÚ&HTMLDocumentBackend._has_list_ancestorº  sI   € ð —‘ˆÞ˜Ó+Ü˜&¤#×&Ñ&¨6¯;©;Ð:LÓ+LØØ—]‘]ˆFö ˜Õ+ð r¸   c                ó8  • [        U5      U;   a  gUR                  [        U5      5        [        U[        5      (       aÛ  UR                  S:X  a  U R                  X5        gUR                  S;   aE  U R                  X5      (       d.  U R                  X5        SU R                  U R                  S-   '   ggUR                  S:X  a.  U R                  X5        SU R                  U R                  S-   '   gUR                   H  nU R                  XRX45        M     gg)zãProcess a single nested element within a list item.

Args:
    elem: The element to process
    li: The parent list item tag
    doc: The DoclingDocument being built
    processed_elements: Set of element IDs already processed
NrT   >   rK   rR   rS   r  rW   )rS  ÚaddrN  rG   rq  r`  rÍ  re  r>  r=  rÉ  Ú_process_nested_element)r   rË  r`   r–  Úprocessed_elementsrï  s         r¹   rÑ  Ú+HTMLDocumentBackend._process_nested_elementË  sí   € ô ˆd‹8Ð)Ó)ØØ×Ñœr $›xÔ(ä�dœC× Ñ Ø�y‰y˜EÓ!Ø× Ñ  Õ+Ø—‘Ð0Ó0à×.Ñ.¨t×8Ñ8Ø×&Ñ& tÔ1Ø37�D—L‘L §¡¨a¡Ò0ð 9ð —‘˜gÓ%ð ×"Ñ" 4Ô-Ø/3�—‘˜TŸZ™Z¨!™^Ò,ð "Ÿ]œ]�EØ×0Ñ0°¸CÖTò +ð% !r¸   c                óN   • UR                    H  nU R                  XAX#5        M     g)zéProcess nested content (images, lists, etc.) within a list item in DOM order.

Args:
    li: The list item tag
    doc: The DoclingDocument being built
    processed_elements: Set of element IDs already processed to avoid duplicates
N)rÉ  rÑ  )r   r`   r–  rÒ  rï  s        r¹   Ú!_process_list_item_nested_contentÚ5HTMLDocumentBackend._process_list_item_nested_contentó  s"   € ð —[”[ˆEØ×(Ñ(¨°CÖLò !r¸   c                óº  • U R                  USSS9nUR                  5       n[        R                  " SSSR	                  U V	s/ s H  o™R
                  PM     sn	5      5      R                  5       n
U
(       d  g[        U5      S:”  Gaó  U R                  X¡S9nUR                  SUUUU R                  US	9nXÀR                  U R                  S-   '   U =R                  S-  sl        U R                  X‚5         U R                  U5      nU GH4  u  pï[        R                  " SSUR
                  5      R                  5       n[        R!                  U5      nUR"                  nU(       a%  UR$                  (       a  Uc
  ['        5       nSUl        U R)                  UUUS
9nUR*                  (       aA  UR-                  U R                  U R                     UU R                  UUR.                  US9  Mæ  UR1                  U R                  U R                     [2        R4                  UU R                  UUR.                  US9  GM7     SSS5        SU R                  U R                  '   U =R                  S-  sl        U$ US   n[        R                  " SSUR
                  5      R                  5       n[        R!                  U5      nU R                  UUUR6                  S9nUR"                  nU(       a%  UR$                  (       a  Uc
  ['        5       nSUl        UR                  UUUUUU R                  UUR.                  US9	nU$ s  sn	f ! , (       d  f       GN= f)z¥Helper method to add a list item with its content.

Handles both simple and complex content with inline groups.
Returns the created list item or None if no content.
T)rŒ  rù  z\s+|\n+rú   rù   Nr  r‡  )rÁ   Ú
enumeratedrâ   r¹  ry  rÃ   r;  r<  r=  r   r  )	rÁ   rØ  râ   rÀ   r¹  ry  ró   rò   rÃ   )rý  r  r  rƒ   r   rÁ   rý   r  r„  Úadd_list_itemry  r>  r=  r>  r¬  r(  rŠ  ró   ru   r/   r�  rr   r?  rò   r@  r   rØ   rõ   )r   r½   r–  r¹  rØ  râ   Úextra_formattingr¡  Ú	min_partsr!  Ú	item_textÚ	item_provÚ	list_itemrB  rE  rŠ  Ú	text_partÚ
clean_textró   rÃ   rÁ   s                        r¹   Ú_add_list_item_with_contentÚ/HTMLDocumentBackend._add_list_item_with_content	  s%  € ð ×<Ñ<Ø˜T¸$ð =ð 
ˆð ×0Ñ0Ó2ˆ	Ü—F’FØ˜˜RŸW™W¹	Ó%Bº	°"§g¤g¹	Ñ%BÓCó
ç
‰%‹'ð 	ö Øäˆy‹>˜AÔà×,Ñ,°)Ð,ÐEˆIØ×)Ñ)ØØ%ØØØ"×0Ñ0Øð *ð ˆIð ,5�L‰L˜Ÿ™ a™Ñ(Ø�JŠJ˜!‰O�Jà×'Ñ'¨	Õ7Ø"&×"JÑ"JÈ9Ó"U�Ü6EÑ2�NÜ "§¢ z°3¸×8KÑ8KÓ L× RÑ RÓ T�IÜ!4×!CÑ!CÀIÓ!N�Jð "0×!:Ñ!:�JÞ'Ø+×0×0Ø)Ñ1Ü-7«\ 
Ø.2˜JœOà×BÑBØ'ØØ'5ð Cð �Dð &×*×*ØŸ™Ø#'§<¡<°·
±
Ñ#;Ø!+Ø*.×*<Ñ*<Ø'1Ø&4×&>Ñ&>Ø!%ð %ó ð Ÿ™Ø#'§<¡<°·
±
Ñ#;Ü".×"3Ñ"3Ø!+Ø*.×*<Ñ*<Ø'1Ø&4×&>Ñ&>Ø!%ð %ô ñ9 7F÷ 8ðP (,ˆD�L‰L˜Ÿ™Ñ$Ø�JŠJ˜!‰O�JØÐð ' q™\ˆNÜ—6’6˜* c¨>×+>Ñ+>Ó?×EÑEÓGˆDÜ,×;Ñ;¸DÓAˆJØ×'Ñ'ØØØ,×:Ñ:ð (ð ˆDð (×2Ñ2ˆJÞØ#×(×(Ø!Ñ)Ü%/£\˜
Ø&*�J”Oà×)Ñ)ØØ%ØØØØ"×0Ñ0Ø%Ø(×2Ñ2Øð *ð 
ˆIð Ðùò{ &C÷( 8Ö7ús   ÁMÃ7EMÍ
Mc           	     óp  ^ • UR                   R                  5       nS nSnUS:H  nUS:H  nU(       a  SnO]U(       aT  UR                  S5      n[        U[        5      (       a   UR                  5       (       a  [        U5      nSUb  SU 3OS-   nOSnUR                  UT R                  T R                     T R                  S	9n	U	T R                  T R                  S
-   '   UT R                  R                  U	R                  '   U(       a&  Ub#  UT R                  R                  U	R                  '   T =R                  S
-  sl	        Sn
U(       GaÖ  S nS nUR                  SS/SS9n[!        U5       GHo  u  pï[        U["        5      (       d  M  UR                   R                  5       nUS:X  aL  S n[%        5       nSUl        T R)                  UUU	US9nU(       a  UT R                  T R                  S
-   '   M‡  M‰  US:X  d  M‘  UR+                  SSS9S LnU(       aC  S nU(       a8  T R-                  U5         [/        5       nT R1                  XòU5        S S S 5        Më  Mí  Uc"  U(       a  UR                  SUT R                  S	9nU=(       d    U	nT R)                  UUUS9nU=(       d    UnT R-                  U5         [/        5       nT R1                  XòU5        S S S 5        GMr     S T R                  T R                  S
-   '   T =R                  S
-  sl	        U	R3                  5       $ UR                  1 SkSS9 GHù  n[        U["        5      (       d  M  UR                   S;   a  T R5                  UU5        M?  U(       a
  Ub  XJ-    S3OSnUR                  S5       Vs/ s H  nUR7                  S5      UL d  M  UPM     nnUR                  U 4S j5       Vs/ s H  nUR7                  S5      UL d  M  UPM     nnT R)                  UUU	UUS9nU(       a  U
S
-  n
U(       d  U(       d  U(       a¬  T R-                  U5         U(       d  U(       ad  U H,  n[        U["        5      (       d  M  T R9                  UU5        M.     U H,  n[        U["        5      (       d  M  T R;                  UU5        M.     [/        5       nT R1                  UUU5        S S S 5        GM¤  U" 1 Sk5       HG  n[        U["        5      (       d  M  T R=                  UU5      nU(       a  M5  T R5                  UU5        MI     GMü     S T R                  T R                  S
-   '   T =R                  S
-  sl	        U	R3                  5       $ ! , (       d  f       GM  = f! , (       d  f       GM)  = fs  snf s  snf ! , (       d  f       GM  = f)Nrù   rR   rK   zdescription listrt  zordered listz start rÑ   )rq  r¹  ry  r  r   ÚdtÚddFré  T)r½   r–  r¹  rÚ  Údescriptions)r½   r–  r¹  >   r`   rR   rS   >   rR   rS   r2  rì  r`   c                óT   >• [        U [        5      =(       a    TR                  U 5      $ rZ  rN  rO  s    €r¹   rP  Ú2HTMLDocumentBackend._handle_list.<locals>.<lambda>ø	  rR  r¸   )r½   r–  r¹  rØ  râ   >   rK   rR   rS   )rq  rÃ  r  rN  r¿   Ú	isnumericr­   Úadd_list_groupr>  r=  ry  r?  rî   Úself_refrï   r�  r  rG   r/   ru   rá  rÓ  r¼  rÐ   rÕ  rÚ  re  r‘  ra  r_  rÍ  ) r   r½   r–  r™  rt  rq  Ú
is_orderedÚis_descriptionÚ
start_attrÚ
list_groupÚlist_item_counterÚcurrent_dt_itemÚdd_grouprÉ  r|   rï  Ú
child_nameÚbold_formattingÚhas_nested_dlrÒ  Ú	dd_parentÚdd_itemÚcontent_parentr`   râ   Ú	input_tagÚinputs_in_lir¯  Úcustom_checkboxes_in_lirÞ  ÚsublistÚhas_list_ancestors    `                               r¹   Ú_handle_listÚ HTMLDocumentBackend._handle_listv	  sz  ø€ Ø—8‘8—>‘>Ó#ˆØ#ˆØˆØ Ñ%ˆ
Ø! TÑ)ˆæØ%‰DÞØŸ™ Ó)ˆJÜ˜*¤c×*Ñ*¨z×/CÑ/C×/EÑ/EÜ˜J›�Ø!¸%Ñ:K w¨u¨gÑ%6ÐQSÑT‰DàˆDð ×'Ñ'ØØ—<‘< §
¡
Ñ+Ø×,Ñ,ð (ð 
ˆ
ð
 (2ˆ�‰�T—Z‘Z !‘^Ñ$ØAKˆ�‰×)Ñ)¨*×*=Ñ*=Ñ>Þ˜%Ñ+Ø>CˆD�H‰H×&Ñ& z×':Ñ':Ñ;Ø�
Š
�a‰�
ð "#Ð÷ Ø"ˆOØˆHà—|‘| T¨4 L¸E�|ÐBˆHä% h×/‘�Ü! %¬×-Ñ-Ùà"ŸZ™Z×-Ñ-Ó/�
à Ó%Ø#�Hô '1£l�OØ+/�OÔ(Ø&*×&FÑ&FØ!ØØ)Ø)8ð	 'Gð '�Oö 'Ø7F˜Ÿ™ T§Z¡Z°!¡^Ó4ñ 'ð   4Õ'Ø$)§J¡J¨t¸u JÐ$EÈTÐ$Q�MÞ$à#'˜ö +Ø!%×!<Ñ!<¸_Õ!MÜ58³UÐ 2Ø $× FÑ FØ$)Ð0Bô!"÷ "NÑ!Mñ +ð $Ñ+¶Ø'*×'9Ñ'9Ø%3Ø'6Ø.2×.@Ñ.@ð (:ð (˜Hð %-×$:°
˜	à"&×"BÑ"BØ %Ø #Ø#,ð #Cð #˜ð *1×)=°I˜Ø!×8Ñ8¸ÕHÜ14³Ð.Ø ×BÑBØ %Ð,>ô÷ IÒHñm 0ðx ,0ˆD�L‰L˜Ÿ™ a™Ñ(Ø�JŠJ˜!‰O�JØ×%Ñ%Ó'Ð'ð —,‘,Ò1¸U�,ÔCˆBÜ˜b¤#×&Ñ&Ùð �w‰w˜,Ó&Ø×"Ñ" 2 sÖ+ö " eÑ&7ð Ñ0Ð1°Ñ3àð ð &(§[¡[°Ô%9ó â%9˜	Ø ×,Ñ,¨TÓ2°bÐ8÷ Ù%9ð ð  ð )+¯©ôô)ó+ò)˜ð
 $×/Ñ/°Ó5¸Ð;÷ !ñ)ð (ð +ð !×<Ñ<ØØØ%Ø)Ø!ð =ð �	ö Ø%¨Ñ*Ð%æ¦Ö0GØ×4Ñ4°YÕ?æ'Ö+BÛ-9 	Ü#-¨i¼×#=Ó#=Ø$(×$4Ñ$4°YÀÖ$Dñ .:ó 1H Ü#-¨l¼C×#@Ó#@Ø$(×$>Ñ$>¸|ÈSÖ$Qñ 1Hô
 .1«UÐ*Ø×>Ñ>Ø Ð%7ô÷ @Ò?ñ" $&Ò&8Ö#9˜Ü% g¬s×3Ó3à04×0GÑ0GÈÐQSÓ0TÐ-ç#4Ð#4Ø $× 2Ñ 2°7¸CÖ @ô $:ñA DðP (,ˆ�‰�T—Z‘Z !‘^Ñ$Ø�
Š
�a‰�
Ø×!Ñ!Ó#Ð#÷] "N×!Mú÷2 I×Hüò: ùò
+÷0 @×?úsH   È3U5Ê9VÎVÎ7VÏV Ï2V Ð?'V%Ñ*.V%Ò3V%Õ5
V	Ö
V	Ö%
V5	c                óè  • [        [        [           U R                  SS/SS95       H  nUR	                  5         M     SnSnU " SSS9 H£  nSnSn[        U[        5      (       d  M  U" SS	/SS9 H_  n[        U[        5      (       d  M  [        [        U5      n[        R                  U5      u  pšXY-  nUR                  S:X  d  U
S
:X  d  M]  SnMa     [        X55      nU(       a  Mž  US
-  nM¥     X#4$ )Nrj   rh   Fré  r   rb   Tra   r  r  )
r   rÑ   rG   r�  r  rN  r(  r  rq  r)  )r½   r  r	  r
  r&  Ú	col_countÚis_row_headerr  Úcell_tagr  r  s              r¹   Úget_html_table_row_colÚ*HTMLDocumentBackend.get_html_table_row_col*
  sñ   € ä”dœ3‘i §¡¨w¸Ð.@ÈE Ð!RÖSˆAØ�H‰HŽJñ Tð ˆØˆÙ�t uÔ-ˆCØˆIØ ˆMÜ˜c¤3×'Ñ'ÙÙ˜T 4˜L°EÔ:�Ü! #¤s×+Ñ+ÙÜ¤ T›?�Ü%8×%HÑ%HÈÓ%RÑ"�ØÑ%�	Ø—=‘= DÓ(¨H¸­MØ$)’Mñ ;ô ˜8Ó/ˆHß �=Ø˜A‘’ñ .ð  Ð!Ð!r¸   c                óL  ^ ^• / nUR                   R                  5       nUS:X  Ga  UR                   Hô  n[        U[        5      (       d  M  UR                   S:w  d  M,  UR                   R                  5       nUS:X  a*  T R                  UT5      nUb  UR                  U5        Mt  Mv  US:X  a*  T R                  UT5      nUb  UR                  U5        M¤  M¦  U[        ;   a#  UR                  T R                  UT5      5        MÓ  UR                  T R                  UT5      5        Mö     [        U4S jU 5       5      n	U	(       Gd\  UR                  SSS9n
[        U
[        5      (       Ga6  T R                  U
SS	9nUR                  5       nUR                   (       Ga  ["        R%                  UR                   R'                  5       5      nT R)                  UU
UR*                  S
9nTR-                  [.        R0                  UUR                   T R2                  UR4                  UR6                  UT R8                  T R:                     S9nU(       aR  US   R=                  T5      n[        U[>        5      (       a)  UR@                  R                  URC                  5       5        U$ US;   a%  T RE                  UT5      nUR                  U5        U$ US;   a%  T RG                  UT5      nUR                  U5        U$ US;   GaÁ  T R                  USS	9nURI                  5       nURK                  5        GH©  nT RM                  U5      nT RO                  UT5       nU GH^  u  nnUR                   R'                  5       =n(       d  M*  ["        R%                  U5      nURP                  (       a€  T RS                  UUUS9nTRU                  T R8                  T R:                     UT R2                  UR4                  UR6                  US9nUc!  UR                  URC                  5       5        MÎ  MÐ  T RS                  UUUS9nTR-                  T R8                  T R:                     [.        RV                  UT R2                  UR4                  UR6                  US9nUb  GM?  UR                  URC                  5       5        GMa     Ub  UR                  U5        S S S 5        GM¬     U" S5       H,  n[        U[        5      (       d  M  T R                  UT5        M.     U" S5       HB  n [        U [        5      (       d  M  T R                  U T5      nUc  M1  UR                  U5        MD     URY                  U 4S j5       HB  n![        U![        5      (       d  M  T R[                  U!T5      n"U"c  M1  UR                  U"5        MD     U$ US:X  a—  T R]                  U5      u  n#n$[_        U#U$S9n%T R)                  SUS9n&TRa                  U%T R8                  T R:                     U&T R2                  S9n'UR                  U'RC                  5       5        T Rc                  UTU'U#U$5        U$ US;   aÛ  [d        Rf                  Rh                  n(US:X  a  [d        Rj                  Rh                  n(TRm                  T R8                  T R:                     T R2                  S9n)[o        [q        [s        U(S9/S9S9U)l:        ["        R%                  T Rw                  U5      R'                  5       5      n*TR-                  [.        RV                  U*U)S9  U$ US ;   Ga*  T R                  USSS!9nURI                  5       nT Ry                  U5      n+T RO                  UT5       nU HÁ  n["        R%                  UR                   R'                  5       5      n,T R)                  U,UUR*                  S
9nTRU                  T R8                  T R:                     U,[{        U,U+S"9T R2                  UR4                  UR6                  US#9n-Ub  M¢  UR                  U-RC                  5       5        MÃ     S S S 5        Wb  UR                  U5        U$ US$:X  a/  T R}                  UT5         T R                  UT5        S S S 5        U$ US%:X  a/  T R                  UT5         T R                  UT5        S S S 5        U$ U$ ! , (       d  f       GM¼  = f! , (       d  f       N£= f! , (       d  f       U$ = f! , (       d  f       U$ = f)&NrX   rp   rT   rì  c              3  ób   >#   • U  H$  n[        UR                  T5      [        5      v •  M&     g 7frZ  )rN  r¬  r$   )rÂ  r  r–  s     €r¹   rÃ  Ú4HTMLDocumentBackend._handle_block.<locals>.<genexpr>\
  s'   øé € ð %ÚEO¸c”
˜3Ÿ;™; sÓ+¬[×9Ð9ÂZùs   ƒ,/Fré  Trø  r  )r¦   rÁ   rÀ   ry  ró   rò   rÃ   r¹  r   >   rL   rM   rN   rO   rP   rQ   >   rK   rR   rS   >   rJ   rZ   r\   r;  r<  r=  c                óT   >• [        U [        5      =(       a    TR                  U 5      $ rZ  rN  rO  s    €r¹   rP  Ú3HTMLDocumentBackend._handle_block.<locals>.<lambda>Å
  s    ø€ Ü˜t¤SÓ)×P¨d×.JÑ.JÈ4Ó.PÐPr¸   rW   )r	  r
  rù   r‡  )r£   r¹  rÃ   ry  >   rV   r]   r]   ©r¹  ry  )r'  )Úpredictions)Úclassification)r¦   rÁ   r¹  >   rU   rS  )Úhint)r¹  rÁ   Úcode_languagery  ró   rò   rÃ   rY   r[   )@rq  rÃ  rÇ  rN  rG   r`  r  ra  r^   rW  re  r•  rü  rÓ  rý  r  rÁ   r(  rŠ  rý   r|  rõ   r@  r   ÚCAPTIONry  ró   rò   r>  r=  r¬  r,   ÚcaptionsrÚ  rÈ  rþ  r  r$  r¬  r>  rr   r�  r?  rØ   r�  r_  r  r+   Ú	add_tabler6  r!   ÚSTAMPr®  Ú	SIGNATUREÚadd_picturer%   r"   r#   Úmetar‰  Ú_code_language_hintr?   r³  rª  ).r   r½   r–  rI  r™  rï  rq  rÇ  rn  Úany_image_producedÚcaption_tagÚcap_listÚcap_annoÚcap_textÚcap_provÚcap_itemÚ
first_itemÚheading_refsÚlist_refÚ	text_listÚannotated_textsÚpartÚcompacted_partrD  rE  rŠ  ÚsegrF  rÃ   Údocling_codeÚdocling_textrÆ  rù  r¯  rl  r	  r
  Údata_eÚ
table_provrÝ  Ú_class_nameÚplaceholderrÁ   Úlanguage_hintrÂ  rG  s.   ` `                                           r¹   re  Ú!HTMLDocumentBackend._handle_blockC
  sÅ  ù€ Øˆ
Ø—8‘8—>‘>Ó#ˆà�xÔð Ÿœ�Ü˜e¤S×)Ó)¨e¯j©j¸LÕ.HØ Ÿ:™:×+Ñ+Ó-�DØ˜u“}Ø!%×!1Ñ!1°%¸Ó!=˜Ø!Ñ-Ø&×-Ñ-¨fÖ5ñ .à ›Ø$(×$4Ñ$4°U¸CÓ$@˜	Ø$Ñ0Ø&×-Ñ-¨iÖ8ñ 1à¤Ó,Ø"×)Ñ)¨$×*<Ñ*<¸UÀCÓ*HÖIà"×)Ñ)¨$¯*©*°U¸CÓ*@ÖAñ &ô" "%ô %ÙEOó%ó "Ð÷ &Ø!Ÿh™h |¸u˜hÐE�Ü˜k¬3×/Ò/Ø#×KÑKØ#¸Dð  Lð  �Hð  (×>Ñ>Ó@�HØ—}—}�}Ü#6×#EÑ#EØ$ŸM™M×/Ñ/Ó1ó$˜ð $(§?¡?Ø!)Ø +Ø*2×*@Ñ*@ð $3ð $˜ð $'§<¡<Ü".×"6Ñ"6Ø!)Ø!)§¡Ø*.×*<Ñ*<Ø'/×':Ñ':Ø&.×&8Ñ&8Ø!)Ø#'§<¡<°·
±
Ñ#;ð $0ð 	$˜ö &Ø)3°A©×)>Ñ)>¸sÓ)C˜JÜ)¨*´i×@Ñ@Ø *× 3Ñ 3× :Ñ :¸8×;KÑ;KÓ;MÔ Nðh Ððe Ð=Ó=Ø×/Ñ/°°SÓ9ˆLØ×Ñ˜lÔ+ð` Ðð] Ð+Ó+Ø×(Ñ(¨¨cÓ2ˆHØ×Ñ˜hÔ'ðX ÐðU Ð4Ô4Ø×DÑDØ¨Dð Eð ˆIð 2;×1QÑ1QÓ1SˆOØ'×8Ñ8×:�Ø!%×!IÑ!IÈ$Ó!O�Ø×+Ñ+¨D°#Ô6¸*Ü:HÑ6˜¨Ø"0×"5Ñ"5×";Ñ";Ó"=Ð=˜3×=Ü(;×(JÑ(JÈ3Ó(O˜IØ-×2×2Ø'+×'NÑ'NØ)2Ø(+Ø3Að (Oð (" ð
 03¯|©|Ø+/¯<©<¸¿
¹
Ñ+CØ)2Ø26×2DÑ2DØ/=×/HÑ/HØ.<×.FÑ.FØ)-ð 0<ð 0" ð $.Ñ#5Ø$.×$5Ñ$5°l×6JÑ6JÓ6LÖ$Mñ $6ð (,×'NÑ'NØ)2Ø(+Ø3Að (Oð (" ð
 03¯|©|Ø+/¯<©<¸¿
¹
Ñ+CÜ*6×*;Ñ*;Ø)2Ø26×2DÑ2DØ/=×/HÑ/HØ.<×.FÑ.FØ)-ð 0<ð 0" ð $.Ô#5Ø$.×$5Ñ$5°l×6JÑ6JÓ6L×$MñG ;IðH "Ñ-Ø"×)Ñ)¨*Ô5÷M 7Ò6ñ ;ñT ˜už:�Ü˜g¤s×+Ó+Ø×$Ñ$ W¨cÖ2ñ &ñ ! ž\�	Ü˜i¬×-Ó-Ø $× 0Ñ 0°¸CÓ @�IØ Ó,Ø"×)Ñ)¨)Ö4ñ	 *ð
 !$§¡ôö!�ô
 ˜l¬C×0Ó0Ø#'×#=Ñ#=¸lÈCÓ#P�LØ#Ó/Ø"×)Ñ)¨,Ö7ñ!ðf ÐðS ˜Ó Ø!%×!<Ñ!<¸SÓ!AÑˆH�hÜ¨¸8ÑDˆFØŸ™¨b°c˜Ð:ˆJØŸM™MØØ—|‘| D§J¡JÑ/ØØ"×0Ñ0ð	 *ð ˆMð ×Ñ˜m×3Ñ3Ó5Ô6Ø×!Ñ! # s¨M¸8ÀXÔNð| Ððy Ð/Ó/Ü4×:Ñ:×@Ñ@ˆKØ˜;Ó&Ü8×BÑB×HÑH�Ø'*§¡Ø—|‘| D§J¡JÑ/Ø"×0Ñ0ð (7ð (ˆKô  +Ü=ä7Ø'2ñð!ñ ñ ˆKÔô '×5Ñ5°d·m±mÀCÓ6H×6NÑ6NÓ6PÓQˆDØ�L‰Lœ|×0Ñ0°tÀKˆLÑPðT ÐðQ ˜Ô à×DÑDØ¨DÀð Eð ˆIð (×>Ñ>Ó@ˆOØ ×4Ñ4°SÓ9ˆMØ×'Ñ'¨¸Ô=ÀÛ&5�NÜ!4×!CÑ!CØ&×+Ñ+×1Ñ1Ó3ó"�Jð  Ÿ?™?Ø'ØØ&4×&BÑ&Bð +ð �Dð
 %(§L¡LØ#Ÿ|™|¨D¯J©JÑ7Ø'Ü&:Ø&¨]ñ'ð '+×&8Ñ&8Ø#1×#<Ñ#<Ø"0×":Ñ":Ø!ð %1ð 
%�Mð "Ó)Ø"×)Ñ)¨-×*?Ñ*?Ó*AÖBñ+ '6÷ >ð. Ñ%Ø×!Ñ! *Ô-ð Ðð ˜Ó!Ø×!Ñ! # sÕ+Ø—
‘
˜3 Ô$÷ ,ð Ðð ˜Ó"Ø×"Ñ" 3¨Õ,Ø—
‘
˜3 Ô$÷ -àÐˆzÐ÷G 7×6ú÷D >Õ=ú÷6 ,Ô+ð Ðú÷ -Ô,àÐúsD   Í)cÎDcÒ8cÞB!c1à1#c1â
dâ?dã
c.	ã1
c?ä
dä
d#c                óz   • U R                  S5      nU(       d  g[        U[        5      (       a  U/OUn[        U;   $ )NÚclassF)r  rN  r¿   rˆ   )r½   ÚclassesÚclass_valuess      r¹   r[  Ú&HTMLDocumentBackend._is_form_container  s6   € à—'‘'˜'Ó"ˆÞØÜ$.¨w¼×$<Ñ$<˜‘yÀ'ˆÜ$¨Ñ4Ð4r¸   c                óŒ   • UR                    H4  n[        U[        5      (       d  M  U R                  U5      (       d  M2  Us  $    g rZ  )r>  rN  rG   r[  ©r   r½   r¹  s      r¹   Ú _nearest_form_container_ancestorÚ4HTMLDocumentBackend._nearest_form_container_ancestor!  s7   € Ø—k”kˆFÜ˜&¤#×&Ó&¨4×+BÑ+BÀ6×+JÓ+JØ’ñ "ð r¸   c                ó(   • U R                  U5      UL $ rZ  )r6  )r   r½   Úform_tags      r¹   Ú_is_tag_in_current_form_scopeÚ1HTMLDocumentBackend._is_tag_in_current_form_scope'  s   € Ø×4Ñ4°SÓ9¸XÐEÐEr¸   c                ó¾   • U (       d  g[        [        R                  U 5      =(       d1    [        R                  U 5      =(       d    [        R                  U 5      5      $ r_  )rA   r‹   ÚmatchrŒ   r�   )rF  s    r¹   Ú_is_form_semantic_idÚ(HTMLDocumentBackend._is_form_semantic_id*  sI   € æØÜÜ×!Ñ! &Ó)÷ /Ü!×'Ñ'¨Ó/÷/ä ×&Ñ& vÓ.ó
ð 	
r¸   c                óx   • SU R                  U5      ;  a  gU R                  U R                  U5      5      (       + $ )Nz	info-textF)r  r>  rT  )r   r½   s     r¹   r]  Ú-HTMLDocumentBackend._should_flatten_info_text4  s7   € Ø˜d×3Ñ3°CÓ8Ó8ØØ×,Ñ,¨T×->Ñ->¸sÓ-CÓDÔDÐDr¸   c           	     ó   • U R                  U5      nU R                  U5      u  pEU(       d  g U R                  UUS9nUR                  U R                  U R
                     [        R                  UUU R                  US9nUR                  5       $ )Nr‡  )r¹  r¦   rÁ   rÀ   ry  rÃ   )
r‰  Ú_normalize_form_textr„  r@  r>  r=  r   rØ   ry  rÚ  )r   r½   r–  Útext_rawr  rÂ  rÃ   Ú	text_items           r¹   r^  Ú,HTMLDocumentBackend._emit_flattened_text_tag9  s–   € ð
 —=‘= Ó%ˆØ×1Ñ1°(Ó;‰ˆÞØØ×#Ñ#ØØð $ð 
ˆð —L‘LØ—<‘< §
¡
Ñ+Ü×#Ñ#ØØØ×,Ñ,Øð !ð 
ˆ	ð × Ñ Ó"Ð"r¸   c                ó‚   • U R                  U5      nUb  U$ U =R                  S-  sl        SU R                   3nX1S'   U$ )Nr  Údocling_auto_input_rS  )rT  rL  )r   r½   ÚexistingÚ	generateds       r¹   Ú_ensure_tag_html_idÚ'HTMLDocumentBackend._ensure_tag_html_idP  sN   € Ø×$Ñ$ SÓ)ˆØÑØˆOØ×'Ò'¨1Ñ,Õ'Ø)¨$×*IÑ*IÐ)JÐKˆ	ØˆD‰	ØÐr¸   c                óœ   ^ • T UL a  g[        U 4S jUR                   5       5      (       a  gT R                  nUR                  nUb  X#L a  gg)NTc              3  ó*   >#   • U  H  oTL v •  M
     g 7frZ  r°   ©rÂ  r¹  rÝ   s     €r¹   rÃ  Ú=HTMLDocumentBackend._is_value_in_key_scope.<locals>.<genexpr>]  s   øé € ÐAÒ/@ V˜Õ Ò/@ùó   ƒF)rü  r>  r¹  )rÝ   Ú	value_tagÚ
key_parentÚvalue_parents   `   r¹   Ú_is_value_in_key_scopeÚ*HTMLDocumentBackend._is_value_in_key_scopeY  sM   ø€ à�iÒØÜÔA¨y×/@Ò/@ÓA×AÑAØØ—^‘^ˆ
Ø ×'Ñ'ˆØÑ! jÒ&@ØØr¸   c                ó–  • XL a  gU /nUR                  S U R                   5       5        U/nUR                  S UR                   5       5        [        U5       VVs0 s H  u  pE[        U5      U_M     nnnS n[        U5       H4  u  p‰UR	                  [        U	5      5      n
U
c  M$  X¨-   nUb  X·:  d  M2  UnM6     Ub  U$ S$ s  snnf )Nr   c              3  óT   #   • U  H  n[        U[        5      (       d  M  Uv •  M      g 7frZ  ©rN  rG   ©rÂ  r¹  s     r¹   rÃ  ÚAHTMLDocumentBackend._dom_distance_between_tags.<locals>.<genexpr>k  s   é € ð 
Ú!1�v´ZÀÌ×5L�F‰FÒ!1ùó   ‚(Ÿ	(c              3  óT   #   • U  H  n[        U[        5      (       d  M  Uv •  M      g 7frZ  rY  rZ  s     r¹   rÃ  r[  o  s   é € ð 
Ú!2�v´jÀÌ×6M�F‰FÒ!2ùr\  i'  )rW  r>  r  rS  r  )Úleft_tagÚ	right_tagÚ
left_chainÚright_chainr£  r½   Úleft_positionsÚbest_distanceÚ	right_idxÚright_ancestorÚleft_idxÚdistances               r¹   Ú_dom_distance_between_tagsÚ.HTMLDocumentBackend._dom_distance_between_tagse  së   € àÒ Øà!) 
ˆ
Ø×Ññ 
Ø!)×!1Ò!1ó
ô 	
ð #, ˆØ×Ññ 
Ø!*×!2Ò!2ó
ô 	
ô 8AÀÔ7LÔMÒ7L©8¨3œ"˜S›' 3š,Ñ7LˆÑMØ'+ˆÜ)2°;Ö)?Ñ%ˆIØ%×)Ñ)¬"¨^Ó*<Ó=ˆHØÑÙØÑ+ˆHØÑ$¨Õ(@Ø (’ñ *@ð !.Ñ 9ˆ}ÐE¸vÐEùó Ns   ÁCc                ó^  ^ ^^• U(       d  / $ S mTb  TmOU(       a  US   S   m0 nU H4  u  pVnUb  SU4OSU4nUR                  U/ 5      R                  XVU45        M6     / n	UR                  5        H'  n
[        U
UUU 4S jS9nU	R                  US   5        M)     U	R	                  S S9  U	$ )Nr   r  r£  Údomc                óê   >• Tb!  Tb  TR                  TU S   5      (       a  SOSOSTb  TR                  TU S   5      OSU S   R                  S;   d  TR                  U S   5      (       a  SOSU S   4$ )Né   r   r  >   rì  rÅ  Útextarea)rU  rh  rq  rŠ  )ÚentryÚ
anchor_tagrÝ   r   s    €€€r¹   rP  Ú@HTMLDocumentBackend._select_form_value_entries.<locals>.<lambda>�  s˜   ø€ ð Ñ*ð $Ñ/Ø $× ;Ñ ;¸GÀUÈ1ÁX× NÑ Nñ ñ
 ð ð &Ñ1ð ×7Ñ7¸
ÀEÈ!ÁHÔMàð
 " !™HŸM™MÐ-LÓLØ#×9Ñ9¸%À¹(×CÑCñ ð
 à˜!‘Hñ1#r¸   ©rÃ  c                ó8   • U S   S L U S   b  U S   OU S   U S   4$ ©Nr   r  r°   ©ro  s    r¹   rP  rq  »  s0   € Ø�a‘˜DÐ Ø! !™HÑ0��a’°e¸A±hØ�a‘ñr¸   )Ú
setdefaultr  rä   ÚsortedÚsort)r   rÝ   Úmarker_entriesÚvalue_entriesÚgrouped_entriesÚvalue_indexÚ	dom_orderrR  Ú	group_keyÚselected_entriesÚentriesÚranked_entriesrp  s   ``          @r¹   Ú_select_form_value_entriesÚ.HTMLDocumentBackend._select_form_value_entries  sï   ú€ ö ØˆIà$(ˆ
ØÑØ ‰JÞØ'¨Ñ*¨1Ñ-ˆJð ð 	ó 2?Ñ-ˆK Ià(3Ñ(?�˜Ñ$ÀeÈYÐEWð ð ×&Ñ& y°"Ó5×<Ñ<Ø¨Ð3öñ	 2?ð BDÐØ&×-Ñ-Ö/ˆGÜ#ØöñˆNð: ×#Ñ# N°1Ñ$5Ö6ñ= 0ð@ 	×Ññð 	ñ 	
ð  Ðr¸   c                óZ   • U R                  SS/5      n[        U[        5      (       a  U$ S $ )Nra   r  )r‘  rN  rG   )r½   Úparent_cells     r¹   Ú_get_table_cellÚ#HTMLDocumentBackend._get_table_cellÃ  s+   € à—o‘o t¨T lÓ3ˆÜ(¨´c×:Ñ:ˆ{ÐDÀÐDr¸   c                óD   • U H  nU R                  U5      U:¼  d  M    g   gr¶  )Úintersection_over_self)Ú
value_bboxÚtable_bboxesÚ	thresholdÚ
table_bboxs       r¹   Ú_is_bbox_within_any_tableÚ-HTMLDocumentBackend._is_bbox_within_any_tableÈ  s)   € ó 'ˆJØ×0Ñ0°Ó<À	ÕIÙñ 'ð r¸   c                ó(  • UR                  S5      nUR                  S5      nU R                  U5      nU R                  U5      nUc  Ub�  XELa  gUb  Uc  gXgL a  gUR                  S5      nUR                  S5      n	Ub  X‰L a  gUR                  b  UR                  UR                  L a  gU R                  Xg5      S::  a  XEL a  gXgLa  gUcD  UcA  U(       a:  U R	                  U5      n
U
(       a"  U R                  U
R                  U5      (       a  gg)NrW   TFrb   é   )r‘  r†  r¹  rh  rW  rŽ  r¯   )r   rÝ   rR  r‹  Ú	key_tableÚvalue_tableÚkey_cellÚ
value_cellÚkey_rowÚ	value_rowÚvalue_rendereds              r¹   Ú_should_ignore_table_kv_linkÚ0HTMLDocumentBackend._should_ignore_table_kv_linkÑ  s%  € ð ×'Ñ'¨Ó0ˆ	Ø×+Ñ+¨GÓ4ˆØ×'Ñ'¨Ó0ˆØ×)Ñ)¨)Ó4ˆ
ØÑ  KÑ$;ØÒ+ØØÑ :Ñ#5ØØÒ%ØØ×*Ñ*¨4Ó0ˆGØ"×.Ñ.¨tÓ4ˆIØÑ" wÒ';ØØ�‰Ñ*¨x¯©À*×BSÑBSÒ/SØà×/Ñ/°ÓEÈÓJØÒ,àØÒ)ØàÑ Ñ!4¾Ø!×<Ñ<¸YÓGˆNÞ $×"@Ñ"@Ø×#Ñ# \÷#ñ #ð àr¸   c                óF   ^^• SUU4S jjmSR                  T" U 5      5      $ )Nc                ó>  >• [        U [        5      (       a  [        U 5      /$ [        U [        5      (       ae  U R	                  S5      nU(       a  UT;   a  / $ / nU  H  nUR                  T" U5      5        M     U R                  S;   a  UR                  S5        U$ / $ )NrS  >   rJ   r`   rú   )rN  rE   r¿   rG   r  rW  rq  r  )rÎ  Únode_idr¡  rï  Ú_extractÚexcluded_idss       €€r¹   rž  ÚAHTMLDocumentBackend._extract_text_excluding_ids.<locals>._extractø  s†   ø€ Ü˜$¤×0Ñ0Ü˜D›	�{Ð"Ü˜$¤×$Ñ$ØŸ(™( 4›.�Þ˜w¨,Ó6Ø�IØ#%�Û!�EØ—L‘L¡¨%£Ö1ñ "à—9‘9 Ó+Ø—L‘L Ô%Ø�ØˆIr¸   rù   ©rÎ  rF   r&  ú	list[str]©r   )r½   rŸ  rž  s    `@r¹   Ú_extract_text_excluding_idsÚ/HTMLDocumentBackend._extract_text_excluding_idsö  s"   ù€ ÷	ð 	ð �w‰w‘x “}Ó%Ð%r¸   c                ó°   • / nU R                    H4  n[        U[        5      (       d  M  UR                  [	        U5      5        M6     SR                  U5      $ )Nrù   )rÇ  rN  rE   r  r¿   r   )r½   r¡  rï  s      r¹   Ú_extract_direct_textÚ(HTMLDocumentBackend._extract_direct_text	  sB   € àˆØ—\”\ˆEÜ˜%¤×1Ó1Ø—‘œS ›ZÖ(ñ "ð �w‰w�u‹~Ðr¸   c                ó|   • [         R                  " SSU 5      R                  5       nU[        R	                  U5      4$ )Nre  rú   )r  rƒ   rý   r(  rŠ  )rÁ   rU  s     r¹   rC  Ú(HTMLDocumentBackend._normalize_form_text  s4   € ä�fŠf�V˜S $Ó'×-Ñ-Ó/ˆØÔ'×6Ñ6°sÓ;Ð;Ð;r¸   c                ó&  • [         R                  U 5      (       a  gU R                  S 5       b  g[         R                  U 5      n1 SknX-  (       a  g[	        S U 5       5      (       a  gU R
                  S;   a  gU R                  / SQ5      b  gg)NÚfillablec                óZ   • [        U [        5      =(       a    [        R                  U 5      $ rZ  )rN  rG   r(  rŠ  )rû  s    r¹   rP  Ú<HTMLDocumentBackend._infer_form_value_kind.<locals>.<lambda>  s&   € Ü˜t¤SÓ)÷ HÜ+×AÑAÀ$ÓGðHr¸   >   rì  ÚtextboxÚinput_fieldútext-boxú	input-boxú
text-inputúinput-fieldúform-controlc              3  óD   #   • U  H  nUR                  S 5      v •  M     g7f))z-inputÚ_inputz
-input-boxN©Úendswith©rÂ  r'  s     r¹   rÃ  Ú=HTMLDocumentBackend._infer_form_value_kind.<locals>.<genexpr>2  s&   é € ð 
â%�
ð ×ÑÐ B×CÐCÚ%ùs   ‚ >   rì  rÅ  rn  )rì  rÅ  rn  rÄ   )r(  rŠ  rÓ  r  rü  rq  )rR  r1  Úfillable_class_hintss      r¹   Ú_infer_form_value_kindÚ*HTMLDocumentBackend._infer_form_value_kind  sž   € ä×4Ñ4°Y×?Ñ?Øà�N‰Nñóð ñð ä%×6Ñ6°yÓAˆò	 
Ðð ×)ØÜñ 
á%ó
÷ 
ñ 
ð à�>‰>Ð<Ó<ØØ�>‰>Ò9Ó:ÑFØØr¸   c                óæ   • U R                  S5      nU(       d
  [        5       $ [        U[        5      (       a  U1$ U Vs1 s H%  n[        U[        5      (       d  M  [        U5      iM'     sn$ s  snf )Nr0  )r  rÐ   rN  r¿   )r½   r1  r®  s      r¹   r  Ú$HTMLDocumentBackend._get_tag_classes>  sV   € à—'‘'˜'Ó"ˆÞÜ“5ˆLÜ�gœs×#Ñ#Ø�9ÐÙ(/ÓJª˜u´:¸eÄS×3I“
”�E–
©ÑJÐJùÒJs   ¿A.ÁA.c                ó.  • [        5       nU /U R                  S5      Q7 H  nU[        R                  U5      -  nM     [	        S U 5       5      n[	        U[        U5      -
  5      n/ UQUQ7 H#  n[        U5      [        R                  Ld  M!  Us  $    g)zÏPick the language class a highlighter set on the ``<pre>`` or ``<code>``.

A ``language-``/``lang-`` prefixed class is preferred so an unrelated
utility class on the same element cannot outrank a real hint.
rr   c              3  óx   #   • U  H0  oR                  5       R                  [        5      (       d  M,  Uv •  M2     g 7frZ  )rÃ  r«  r>   )rÂ  r  s     r¹   rÃ  Ú:HTMLDocumentBackend._code_language_hint.<locals>.<genexpr>R  s#   é € ÐT¢V ¯w©w«y×/CÑ/CÄN×/SŸ!™!¢Vùs   ‚+:±	:N)rÐ   r�  r(  r  rw  r@   r   ÚUNKNOWN)r½   Útokensr"  ÚprefixedÚbareÚtokens         r¹   r  Ú'HTMLDocumentBackend._code_language_hintG  s“   € ô ›5ˆØÐ3˜cŸl™l¨6Ó2Ô3ˆGØÔ)×:Ñ:¸7ÓCÑCŠFñ 4ô ÑT¡VÓTÓTˆÜ�fœs 8›}Ñ,Ó-ˆØ'�xÐ' $Ô'ˆEÜ& uÓ-Ô5F×5NÑ5NÔNØ’ñ (ð r¸   c                ó4  • U R                  S5      n[        U[        5      (       d  g[        R                  " SU[        R
                  S9nUc  gUR                  S5      R                  5       R                  5       nUR                  S5      =(       d    US:H  $ )Nr{  Fzdisplay\s*:\s*([^;]+))Úflagsr  ÚinlinerÇ  )
r  rN  r¿   r  rf  ÚIÚgrouprý   rÃ  r«  )r½   Ú
style_attrÚdisplay_matchÚdisplay_values       r¹   Ú_has_inline_display_styleÚ-HTMLDocumentBackend._has_inline_display_styleY  s}   € à—W‘W˜WÓ%ˆ
Ü˜*¤c×*Ñ*ØÜŸ	š	Ð":¸JÌbÏdÉdÑSˆØÑ ØØ%×+Ñ+¨AÓ.×4Ñ4Ó6×<Ñ<Ó>ˆØ×'Ñ'¨Ó1×P°]ÀjÑ5PÐPr¸   c                óˆ   • UR                   R                  5       nU[        ;   a  gUS:X  a  U R                  U5      (       a  gg)NTrc   F)rq  rÃ  r¨   rÒ  )r   r½   r™  s      r¹   rf  Ú2HTMLDocumentBackend._should_buffer_tag_text_inlined  s<   € Ø—8‘8—>‘>Ó#ˆØÔ(Ó(Øà�uÓ ×!?Ñ!?À×!DÑ!DØØr¸   c                óœ   • U R                   S:w  a  g[        U R                  SS5      5      R                  5       R	                  5       nUS;   $ )Nrì  FÚtyperù   >   ÚradiorŽ   ©rq  r¿   r  rý   rÃ  ©r½   Ú
input_types     r¹   Ú_is_input_checkbox_or_radio_tagÚ3HTMLDocumentBackend._is_input_checkbox_or_radio_tagm  sD   € à�8‰8�wÓØÜ˜Ÿ™ ¨Ó,Ó-×3Ñ3Ó5×;Ñ;Ó=ˆ
ØÐ2Ñ2Ð2r¸   c                ó¢   • U R                   S:w  a  g[        U R                  SS5      5      R                  5       R	                  5       nUS;   a  gg)Nrì  Fr×  rù   >   Údaterm  ÚtimeÚweekrÝ  ru  ÚmonthrØ  r  ÚresetÚbuttonr|  ÚsubmitrŽ   údatetime-localTrÙ  rÚ  s     r¹   Ú _is_generic_text_input_candidateÚ4HTMLDocumentBackend._is_generic_text_input_candidatet  sM   € à�8‰8�wÓØÜ˜Ÿ™ ¨Ó,Ó-×3Ñ3Ó5×;Ñ;Ó=ˆ
Øð 
ó 
ð" Ør¸   c                óL   • [        [        R                  U 5      [        -  5      $ rZ  )rA   r(  r  r‘   ©r½   s    r¹   ró  Ú+HTMLDocumentBackend._is_custom_checkbox_tag�  s#   € äÜ×0Ñ0°Ó5Ô8PÑPó
ð 	
r¸   c                ód   • [         R                  U 5      =(       d    [         R                  U 5      $ rZ  )r(  rÜ  ró  rê  s    r¹   rŠ  Ú)HTMLDocumentBackend._is_checkbox_like_tag“  s+   € ä"×BÑBØó
÷ >ä ×8Ñ8¸Ó=ð	>r¸   c                óF   ^^• SUU4S jjmSR                  T" U 5      5      $ )Nc                ó4  >• [        U [        5      (       a  [        U 5      /$ [        U [        5      (       a`  [	        U 5      T;   a  / $ / nU R
                   H  nUR                  T" U5      5        M     U R                  S;   a  UR                  S5        U$ / $ )N>   rJ   r`   ra   r  rc   r¥   r¦   rú   )	rN  rE   r¿   rG   rS  rÇ  rW  rq  r  )rÎ  r¡  rï  rž  Úexcluded_obj_idss      €€r¹   rž  ÚIHTMLDocumentBackend._extract_text_excluding_tag_obj_ids.<locals>._extract�  s�   ø€ Ü˜$¤×0Ñ0Ü˜D›	�{Ð"Ü˜$¤×$Ñ$Ü�d“8Ð/Ó/Ø�IØ#%�Ø!Ÿ]œ]�EØ—L‘L¡¨%£Ö1ñ +à—9‘9Ð OÓOØ—L‘L Ô%Ø�ØˆIr¸   rù   r¡  r£  )r½   rð  rž  s    `@r¹   Ú#_extract_text_excluding_tag_obj_idsÚ7HTMLDocumentBackend._extract_text_excluding_tag_obj_ids™  s"   ù€ ÷	ð 	ð �w‰w‘x “}Ó%Ð%r¸   c                ó–   • U R                  SS9 H6  n[        U[        5      (       d  M  [        R	                  U5      (       d  M6    g   g)NFré  T)r�  rN  rG   r(  rŠ  )r½   rï  s     r¹   Ú_has_direct_checkbox_like_childÚ3HTMLDocumentBackend._has_direct_checkbox_like_child­  sD   € à—\‘\¨E�\Ó2ˆEÜ˜%¤×%Ó%Ô*=×*SÑ*SØ÷+ó +ñ ñ	 3ð
 r¸   c                ód   • U R                  U5      nU[        -  (       d  gU R                  U5      $ r_  )r  r›   rõ  )r   r½   r1  s      r¹   r‰  Ú0HTMLDocumentBackend._is_checkbox_label_container¶  s/   € Ø×'Ñ'¨Ó,ˆØÔ5×5ØØ×3Ñ3°CÓ8Ð8r¸   c                óÎ   • U R                  U5      (       a  gSU R                  U5      ;   a  gUR                  n[        U[        5      (       a  U R                  U5      (       a  gg)NFúcheckbox-labelT)rŠ  r  r¹  rN  rG   r‰  r5  s      r¹   r‹  Ú*HTMLDocumentBackend._is_checkbox_label_tag¼  sX   € Ø×%Ñ% c×*Ñ*ØØ˜t×4Ñ4°SÓ9Ó9ØØ—‘ˆÜ�fœc×"Ñ" t×'HÑ'HÈ×'PÑ'PØØr¸   c                óº   • [         R                  " SSU 5      R                  5       nU(       d  gUR                  5       [        ;   a  g[
        R                  U5      $ )Nre  rú   rù   )r  rƒ   rý   rÃ  r–   r(  rŠ  )rÁ   Úcompacts     r¹   Ú_normalize_checkbox_textÚ,HTMLDocumentBackend._normalize_checkbox_textÆ  sF   € ä—&’&˜  dÓ+×1Ñ1Ó3ˆÞØØ�=‰=‹?Ô2Ó2ØÜ"×1Ñ1°'Ó:Ð:r¸   c                ó�  • [         R                  U 5      (       aS  U R                  S5      (       a  g[        U R	                  SS5      5      R                  5       R                  5       nUS;   $ [         R                  U 5      nSU;   a  g[        U R	                  SS5      5      R                  5       R                  5       nUS;   a  g[        U R	                  SS5      5      R                  5       R                  5       nUS;   a  g[        R                  " SS[         R                  U 5      5      nUR                  5       [        ;   $ )NÚcheckedTzaria-checkedrù   >   rq  Úonrr  rs  zdata-checkedre  )r(  rÜ  rt  r¿   r  rý   rÃ  r  r  rƒ   r‰  r–   )r½   Úaria_checkedr1  Údata_checkedrÁ   s        r¹   Ú_is_checkbox_checkedÚ(HTMLDocumentBackend._is_checkbox_checkedÏ  s	  € ä×>Ñ>¸s×CÑCØ�|‰|˜I×&Ñ&ØÜ˜sŸw™w ~°rÓ:Ó;×AÑAÓC×IÑIÓKˆLØÐ#=Ñ=Ð=ä%×6Ñ6°sÓ;ˆØ˜ÓØä˜3Ÿ7™7 >°2Ó6Ó7×=Ñ=Ó?×EÑEÓGˆØÐ5Ó5Øä˜3Ÿ7™7 >°2Ó6Ó7×=Ñ=Ó?×EÑEÓGˆØÐ5Ó5Øä�vŠv�f˜bÔ"5×">Ñ">¸sÓ"CÓDˆØ�z‰z‹|Ô3Ñ3Ð3r¸   c                ó¬   • [         R                  U 5      (       d  g [         R                  U 5      (       a  [        R                  $ [        R
                  $ rZ  )r(  rŠ  r  r   ÚCHECKBOX_SELECTEDÚCHECKBOX_UNSELECTEDrê  s    r¹   Ú_get_checkbox_label_for_tagÚ/HTMLDocumentBackend._get_checkbox_label_for_tagæ  sI   € ä"×8Ñ8¸×=Ñ=Øô #×7Ñ7¸×<Ñ<ô ×*Ñ*ð	
ô ×1Ñ1ð	
r¸   c                óN  ^ ^^^• [        5       m/ m[        UR                  [        5      (       a  UR                  OS n[        5       mSUUU4S jjnSU 4S jjnUR                  S:X  Gas  T R                  U5      nU(       aˆ  T R                  bB  T R                  R                  SSU0S9 H"  n[        U[        5      (       d  M  U" U5        M$     Ub6  UR                  SSS9 H"  nUR                  S5      U:X  d  M  U" U5        M$     UR                  S5      n[        U[        5      (       a  U" U5        UR                  S	5      n	[        U	[        5      (       a\  T R                  bO  U	R                  5        H;  n
T R                  R                  U
S
9n[        U[        5      (       d  M3  U" U5        M=     U" T5      nU(       a  SR                  U5      TT4$ UGb‚  T R                  U5      nSU;   a§  / nUR                  SS9 Hw  n[        U[        5      (       a  XqL a  M  ST R                  U5      ;  a  M5  T R                  T R!                  U5      5      nU" U5        U(       d  Mf  UR#                  U5        My     U(       a  SR                  U5      TT4$ U1 Sk-  (       a¸  [%        U 4S jUR&                   5       5      nUR                  SS9 H>  n[        U[        5      (       a  XqL a  M  T R)                  U5      (       a  M6  U" U5        M@     T R+                  U[-        U5      15      nT R                  U5      nU(       a  U(       a  U" U5        UTT4$ UR                  S:w  a.  T R!                  U5      nT R                  U5      nU(       a  UTT4$ STT4$ )Nc                ó�   >• [        U 5      nUT;   a  g TR                  U5        TR                  U5        TR                  U 5        g rZ  )rS  rÐ  r  )r²  Úlabel_obj_idÚconsumed_label_tagsÚconsumed_tag_obj_idsÚseen_label_obj_idss     €€€r¹   Ú_add_label_tagÚ]HTMLDocumentBackend._extract_checkbox_text_and_consumed_label_obj_ids.<locals>._add_label_tagø  sB   ø€ Ü˜i›=ˆLØÐ1Ó1ØØ×"Ñ" <Ô0Ø ×$Ñ$ \Ô2Ø×&Ñ& yÕ1r¸   c                ó–   >• / nU  H?  nTR                  U5      nTR                  U5      nU(       d  M.  UR                  U5        MA     U$ rZ  )r‰  rþ  r  )ry  Útextsr²  rU  rg  r   s        €r¹   Ú_label_textsÚ[HTMLDocumentBackend._extract_checkbox_text_and_consumed_label_obj_ids.<locals>._label_texts   sH   ø€ Ø!ˆEÛ!�	Ø—m‘m IÓ.�Ø!×:Ñ:¸3Ó?�
ß�:Ø—L‘L Ö,ñ	 "ð
 ˆLr¸   rì  r¦   Úforr—  Fré  zaria-labelledby©rS  rú   rš   rú  >   r—   r˜   r™   c              3  ó˜   >#   • U  H?  n[        U[        5      =(       a#    [        TR                  [	        U5      5      5      v •  MA     g 7frZ  )rN  rE   rA   rþ  r¿   rô  s     €r¹   rÃ  ÚXHTMLDocumentBackend._extract_checkbox_text_and_consumed_label_obj_ids.<locals>.<genexpr>G  sD   øé € ð ,ò "1˜ô ˜u¤oÓ6÷ HÜ˜T×:Ñ:¼3¸u»:ÓFÓGôHâ!0ùs   ƒAA
rù   )r²  rG   r&  r  )ry  rÍ   r&  r¢  )rÐ   rN  r¹  rG   rq  rT  r7  r�  r  r‘  r¿   r  rÓ  r   r  rþ  r‰  r  rü  rÇ  rŠ  rò  rS  )r   r¯  r¹  r  r  Úinput_idr²  ÚsiblingÚwrapping_labelÚaria_labelledbyÚlabelledby_idÚlabelledby_tagÚexplicit_textsÚparent_classesÚlabel_textsrÁ   Úhas_direct_label_textrU  r  r  r  s   `                 @@@r¹   Ú1_extract_checkbox_text_and_consumed_label_obj_idsÚEHTMLDocumentBackend._extract_checkbox_text_and_consumed_label_obj_idsð  ss  û€ ô *-«ÐØ)+ÐÜ(2°<×3FÑ3FÌ×(LÑ(L�×$Ò$ÐRVˆÜ'*£uÐ÷	2ñ 	2÷	ð ×Ñ Ô'Ø×(Ñ(¨Ó6ˆHÞà—9‘9Ñ(Ø%)§Y¡Y×%7Ñ%7Ø¨¨xÐ'8ð &8ó &˜	ô & i´×5Ó5Ù*¨9Ö5ñ	&ð Ñ%Ø#)§?¡?°7Àe ?Ó#L˜Ø"Ÿ;™; uÓ-°Õ9Ù*¨7Ö3ñ $Mð
 *×5Ñ5°gÓ>ˆNÜ˜.¬#×.Ñ.Ù˜~Ô.ð +×.Ñ.Ð/@ÓAˆOÜ˜/¬3×/Ñ/°D·I±IÑ4IØ%4×%:Ñ%:Ö%<�MØ%)§Y¡Y§^¡^°} ^Ð%E�NÜ! .´#×6Ó6Ù& ~Ö6ñ &=ñ
 *Ð*=Ó>ˆNÞà—H‘H˜^Ó,Ø(Ø'ðð ð ÒØ!×2Ñ2°6Ó:ˆNð $ ~Ó5Ø)+�Ø%Ÿ™¸˜Ó?�GÜ% g¬s×3Ñ3°wÒ7NÙ Ø'¨t×/DÑ/DÀWÓ/MÓMÙ Ø×8Ñ8¸¿¹ÀwÓ9OÓP�DÙ" 7Ô+ß�tØ#×*Ñ*¨4Ö0ñ  @ö àŸ™ Ó-Ø,Ø+ðð ð Ò N×NÜ(+ô ,ð "(§¢ó,ó )Ð%ð
  &Ÿ™¸˜Ó?�GÜ% g¬s×3Ñ3°wÒ7NÙ Ø×1Ñ1°'×:Ñ:Ù Ù" 7Ö+ñ  @ð ×>Ñ>ØœR Ó-Ð.ó�ð ×4Ñ4°SÓ9�ÞÞ,Ù& vÔ.ØÐ!5Ð7JÐJÐJð ×Ñ Ó'Ø—-‘- Ó-ˆCØ×0Ñ0°Ó5ˆDÞØÐ1Ð3FÐFÐFàÐ'Ð)<Ð<Ð<r¸   c                ó¨  • U R                   S:X  aY  S HR  nU R                  U5      n[        U[        5      (       d  M+  UR	                  5       (       d  MB  UR	                  5       s  $    gU R                   S:X  a#  [
        R                  U 5      R	                  5       $ U R                   S:X  Ga%  S nU R                  S5       H  nUR                  S5      (       d  M  Un  O   Uc(  U R                  S5      n[        U[        5      (       a  UnUbw  [
        R                  U5      R	                  5       nU(       a  U$ UR                  S5      n[        U[        5      (       a%  UR	                  5       (       a  UR	                  5       $ U R                  S5      n[        U[        5      (       a%  UR	                  5       (       a  UR	                  5       $ gg)	Nrì  )r®  r,  rq  rù   rn  rÅ  r—   Úselectedr®  )rq  r  rN  r¿   rý   r(  r‰  r�  rt  rÓ  rG   )	r½   ÚattrÚvalÚselected_optionr—   Úfirst_optionÚselected_textÚselected_valueÚselect_values	            r¹   Ú_extract_input_like_textÚ,HTMLDocumentBackend._extract_input_like_textd  sv  € à�8‰8�wÓÛ8�Ø—g‘g˜d“m�Ü˜c¤3×'Ó'¨C¯I©I¯K«KØŸ9™9›;Ò&ñ 9ð à�8‰8�zÓ!Ü&×/Ñ/°Ó4×:Ñ:Ó<Ð<à�8‰8�xÔØ-1ˆOØŸ,™, xÖ0�Ø—?‘? :×.Ó.Ø&,�OÙñ 1ð Ñ&Ø"Ÿx™x¨Ó1�Ü˜l¬C×0Ñ0Ø&2�OØÑ*Ü 3× <Ñ <¸_Ó M× SÑ SÓ U�Þ Ø(Ð(Ø!0×!4Ñ!4°WÓ!=�Ü˜n¬c×2Ñ2°~×7KÑ7K×7MÑ7MØ)×/Ñ/Ó1Ð1ØŸ7™7 7Ó+ˆLÜ˜,¬×,Ñ,°×1CÑ1C×1EÑ1EØ#×)Ñ)Ó+Ð+Øàr¸   c                óæ   ^ ^^• UR                   S;   a  T R                  U5      $ UR                  / SQ5      c  [        R	                  U5      $ / mSUUU 4S jjmT" U5        SR                  T5      $ )N>   rì  rÅ  rn  )rì  rn  rÅ  c                óÐ  >• [        U [        5      (       a  TR                  [        U 5      5        g [        U [        5      (       d  g TR                  U 5      (       a  g U R                  S;   a;  TR                  U 5      nU(       a  TR                  U5        TR                  S5        g U R                   H  nT" U5        M     U R                  S;   a  TR                  S5        g g )N>   rì  rÅ  rn  rú   >	   rJ   r~  r`   ra   r  rb   rc   r¥   r¦   )	rN  rE   r  r¿   rG   rv  rq  r1  rÇ  )rÎ  Ú
input_textrï  Ú_collectr¡  r   s      €€€r¹   r6  Ú>HTMLDocumentBackend._extract_form_value_text.<locals>._collect’  s¶   ø€ Ü˜$¤×0Ñ0Ø—‘œS ›YÔ'ØÜ˜d¤C×(Ñ(ØØ×%Ñ% d×+Ñ+ØØ�y‰yÐ;Ó;Ø!×:Ñ:¸4Ó@�
ÞØ—L‘L Ô,Ø—‘˜SÔ!ØØŸœ�Ù˜–ñ 'à�y‰yÐWÓWØ—‘˜SÕ!ð Xr¸   rù   )rÎ  rF   r&  r  )rq  r1  rÓ  r(  r‰  r   )r   rR  r6  r¡  s   ` @@r¹   Ú_extract_form_value_textÚ,HTMLDocumentBackend._extract_form_value_textˆ  si   ú€ à�>‰>Ð<Ó<Ø×0Ñ0°Ó;Ð;à�>‰>Ò9Ó:ÑBÜ&×/Ñ/°	Ó:Ð:àˆ÷	"ñ 	"ñ& 	�ÔØ�w‰w�u‹~Ðr¸   c                ó,   • [         R                  U 5      $ rZ  )r(  r‰  )Ú
marker_tags    r¹   Ú_extract_form_marker_textÚ-HTMLDocumentBackend._extract_form_marker_text¨  s   € ä"×+Ñ+¨JÓ7Ð7r¸   c                óR   • [         R                  [         R                  U 5      5      $ rZ  )r(  r>  rT  rê  s    r¹   r÷  Ú)HTMLDocumentBackend._is_form_semantic_tag¬  s#   € ä"×7Ñ7Ü×,Ñ,¨SÓ1ó
ð 	
r¸   c                óT  ^ ^^^• [        U5      S::  a  U$ / mUS   m[        TR                  R                  5       5      S:H  nT R                  TR                  5      4 Vs/ s H	  o3c  M  UPM     snmSUUUU 4S jjnUSS   GH  nUR                  R                  5       n[        U5      S:H  nU=(       aL    U=(       aC    TR
                  S L =(       a.    UR
                  S L =(       a    TR                  UR                  :H  nT R                  TR                  5      n	T R                  UR                  5      n
U	S L=(       a    U
S L=(       a    T R                  Xš5      nTR                  R                  UR                  R                  L =(       a    U=(       a    UnU(       aŠ  U(       d  U(       a|  TR                   UR                   3Tl        TR                   UR                   3Tl	        [        TR                  UR                  5      Tl        U
b  TR                  U
5        SnGM­  U" 5         Um[        TR                  R                  5       5      S:H  nT R                  TR                  5      4 Vs/ s H
  nUc  M  UPM     snmGM     U" 5         T$ s  snf s  snf )Nr  r   c                 óÂ   >• [        T5      S:”  d  T R                  c1  T(       a*  TR                  T R                  T R                  TS9T l        TR                  T 5        g )Nr  r;  )r  rÃ   r�  rÁ   r½   r  )r¤  Úcurrent_source_tag_idsÚmerged_valuesr   s   €€€€r¹   Ú_flush_currentÚGHTMLDocumentBackend._merge_adjacent_form_values.<locals>._flush_current¿  sW   ø€ äÐ)Ó*¨QÓ.Ø—‘Ñ$Ö)?à#×FÑFØ Ÿ™ØŸ™Ø#9ð  Gð  �”ð
 × Ñ  Õ)r¸   Tr  )r  rÁ   rý   rP  r½   rÈ   rÆ   r�  r¹  rÀ   r.  r¾   r  )r   rä   Úcurrent_is_char_runrF  rD  Ú
next_valueÚ	next_textÚnext_is_charÚcan_merge_textÚleft_sourceÚright_sourceÚcan_merge_bboxÚcan_merge_domr¤  rB  rC  s   `            @@@r¹   Ú_merge_adjacent_form_valuesÚ/HTMLDocumentBackend._merge_adjacent_form_values²  sk  û€ ô ˆv‹;˜!ÓØˆMà35ˆØ˜‘)ˆÜ! '§,¡,×"4Ñ"4Ó"6Ó7¸1Ñ<Ðà"&×"2Ñ"2°7·;±;Ó"?Ñ!@ó-
Ú!@�v�FÑ!@ñ-
Ð÷
	*ò 
	*ð !  œ*ˆJØ"Ÿ™×-Ñ-Ó/ˆIÜ˜y›>¨QÑ.ˆLà#÷ 4Ø ÷4à×*Ñ*¨dÐ2÷4ð ×-Ñ-°Ð5÷4ð —L‘L J§O¡OÑ3ð ð ×*Ñ*¨7¯;©;Ó7ˆKØ×+Ñ+¨J¯N©NÓ;ˆLà 4Ð'÷ YØ ¨Ð,÷Yà×=Ñ=¸kÓXð ð —‘×"Ñ" j§n¡n×&;Ñ&;Ð;÷ !Ø'÷!à ð ö ¦>¶]Ø")§,¡, °
·±Ð/@ÐA�”Ø")§,¡, °
·±Ð/@ÐA�”Ü # G§M¡M°:×3CÑ3CÓ D�”ØÑ+Ø*×1Ñ1°,Ô?Ø&*Ó#áÔ Ø$�Ü&)¨'¯,©,×*<Ñ*<Ó*>Ó&?À1Ñ&DÐ#ð $(×#3Ñ#3°G·K±KÓ#@Ñ"Aó*â"A˜Ø÷ Ù"Añ*Ó&ñE %ñP 	ÔØÐùòs-
ùòd*s   Á!J Á+J É>J%Ê	J%c           
     óZ  • U R                  U5      (       a  g U R                  U5      nUc  g U R                  U5      u  nnnU R                  UUUS9nUR	                  U R
                  U R                     UUU R                  U R                  U R                  US9nUR                  5       $ )N©rÁ   r¯  r°  r=  )rY  r
  r&  r³  r@  r>  r=  ry  r�  rò   rÚ  )	r   r¯  r–  rÈ   Úcheckbox_textr  rÎ   rÃ   Úcheckbox_items	            r¹   r_  Ú)HTMLDocumentBackend._emit_custom_checkboxö  sÅ   € ð ×"Ñ" <×0Ñ0ØØ×9Ñ9¸,ÓGˆØÑ!Øð
 ×BÑBÀ<ÓPñ		
ØØØà×2Ñ2ØØ%Ø*ð 3ð 
ˆð
 Ÿ™Ø—<‘< §
¡
Ñ+Ø ØØ×,Ñ,Ø×'Ñ'Ø—n‘nØð %ð 
ˆð ×$Ñ$Ó&Ð&r¸   c              #  óÖ   #   • U(       d  S v •  g U R                   R                  U5         S v •  U R                   R                  5         g ! U R                   R                  5         f = f7frZ  )rH  r  Úpop)r   Útag_idss     r¹   Ú_suppress_tag_idsÚ%HTMLDocumentBackend._suppress_tag_ids  sR   é € æØŠJØØ×&Ñ&×-Ñ-¨gÔ6ð	1ØŠJà×*Ñ*×.Ñ.Õ0øˆD×*Ñ*×.Ñ.Õ0üó   ‚(A)«A
 ¯A)Á
A&Á&A)c              #  óÖ   #   • U(       d  S v •  g U R                   R                  U5         S v •  U R                   R                  5         g ! U R                   R                  5         f = f7frZ  )rI  r  rW  )r   Útag_obj_idss     r¹   Ú_suppress_tag_obj_idsÚ)HTMLDocumentBackend._suppress_tag_obj_ids  sR   é € æØŠJØØ×*Ñ*×1Ñ1°+Ô>ð	5ØŠJà×.Ñ.×2Ñ2Õ4øˆD×.Ñ.×2Ñ2Õ4ür[  c                óÈ  ^^• U R                  U5      (       a  gU R                  U5      (       a  g[        U5      m[        U4S jU R                   5       5      (       a  g[        5       mU R                  U5      =n(       a  TR                  U5        U R                  U5      =n(       a  TR                  U5        T(       d  g[        U4S jU R                   5       5      $ )NTc              3  ó.   >#   • U  H
  nTU;   v •  M     g 7frZ  r°   )rÂ  Úobj_idsÚ
tag_obj_ids     €r¹   rÃ  Ú9HTMLDocumentBackend._is_suppressed_tag.<locals>.<genexpr>/  s   øé € ÐWÒ4V¨ˆz˜WÖ$Ò4Vùó   ƒFc              3  ó@   >#   • U  H  n[        UT-  5      v •  M     g 7frZ  )rA   )rÂ  ÚidsrX  s     €r¹   rÃ  rd  8  s   øé € ÐQÒ2P¨3”4˜˜g™×&Ð&Ò2Pùrˆ  )
rv  rb  rS  rü  rI  rÐ   rT  rÐ  rP  rH  )r   r½   Úhtml_idÚ
docling_idrX  rc  s       @@r¹   rY  Ú&HTMLDocumentBackend._is_suppressed_tag)  s¶   ù€ Ø×!Ñ! #×&Ñ&ØØ×,Ñ,¨S×1Ñ1ØÜ˜“Wˆ
ÜÔW°D×4VÒ4VÓW×WÑWØÜ“%ˆØ×'Ñ'¨Ó,Ð,ˆ7Õ,Ø�K‰K˜Ô Ø×)Ñ)¨#Ó.Ð.ˆ:Õ.Ø�K‰K˜
Ô#ÞØÜÔQ°$×2PÒ2PÓQÓQÐQr¸   c              #  óÐ   #   • U R                   R                  [        U5      5         S v •  U R                   R                  5         g ! U R                   R                  5         f = f7frZ  )rJ  r  rˆ  rW  )r   Úfields_by_key_ids     r¹   Ú_use_form_fields_by_key_idÚ.HTMLDocumentBackend._use_form_fields_by_key_id:  sO   é € ð 	×)Ñ)×0Ñ0´Ð6FÓ1GÔHð	4ØŠJà×-Ñ-×1Ñ1Õ3øˆD×-Ñ-×1Ñ1Õ3üs   ‚%A&¨A ¬A&ÁA#Á#A&c                ó  • U R                   (       d  gU R                   S   nU(       d  gU R                  U5      nUb  X2;   a  gUR                  S5       H2  nUR                  S5      n[	        U[
        5      (       d  M+  XR;   d  M2    g   g)NFr  TrS  )rJ  rT  r�  r  rN  r¿   )r   r½   Ú	field_maprF  rm  Údescendant_ids         r¹   rZ  Ú6HTMLDocumentBackend._has_pending_form_field_in_subtreeD  s}   € Ø×0×0ØØ×5Ñ5°bÑ9ˆ	ÞØà×"Ñ" 3Ó'ˆØÑ &Ó"5ØàŸ,™, tÖ,ˆJØ&ŸN™N¨4Ó0ˆMÜ˜-¬×-Ó-°-Õ2LÙñ -ð r¸   c                ó  • U R                  U5      nUc  g [        U R                  5       HV  nUR                  US 5      nUc  M  [	        UR                  5       5       H  u  pVXdL d  M  UR                  US 5        M     Us  $    g rZ  )rT  rÌ  rJ  rW  rÑ   rC  )r   r½   rF  rp  r   Úmapped_tag_idÚmapped_fields          r¹   rV  Ú/HTMLDocumentBackend._consume_form_field_for_tagU  s€   € Ø×"Ñ" 3Ó'ˆØ‰>ØÜ! $×"CÑ"CÖDˆIØ—M‘M &¨$Ó/ˆEØÓ Ü37¸	¿¹Ó8IÖ3JÑ/�MØ#Ô,Ø!Ÿ™ m°TÖ:ñ 4Kð ’ñ Eð r¸   c                óÎ  ^• U R                   (       d  / $ U R                   S   n/ n[        5       n[        UR                  5       5       GH  u  pV[	        U5      nXt;   a  M  / nUR
                  b  UR                  UR
                  5        UR                  b%  UR                  UR                  R                  5        UR                  S UR                   5       5        U(       d  MŸ  [        U4S jU 5       5      (       d  M»  UR                  U5        UR                  U5        [        UR                  5       5       H  u  pšX¦L d  M  UR                  U	S 5        M     GM     U$ )Nr  c              3  ó8   #   • U  H  oR                   v •  M     g 7frZ  rê  )rÂ  r®  s     r¹   rÃ  ÚFHTMLDocumentBackend._consume_form_fields_in_subtree.<locals>.<genexpr>q  s   é € ÐB²\¨EŸiži²\ùó   ‚c              3  óx   >#   • U  H/  nUTL =(       d    [        U4S  jUR                   5       5      v •  M1     g7f)c              3  ó*   >#   • U  H  oTL v •  M
     g 7frZ  r°   )rÂ  r¹  r½   s     €r¹   rÃ  ÚPHTMLDocumentBackend._consume_form_fields_in_subtree.<locals>.<genexpr>.<genexpr>u  s   øé € Ð'VÒDU¸&°#­ÒDUùrQ  N)rü  r>  )rÂ  Ú	field_tagr½   s     €r¹   rÃ  ry  t  s6   øé € ð â!+�Ið ˜SÐ ×V¤CÔ'VÀI×DUÒDUÓ'VÓ$VÔVÚ!+ùs   ƒ7:)rJ  rÐ   rÑ   rC  rS  rÝ   r  râ   r½   rW  rä   rü  rÐ  rW  )r   r½   rp  Úextracted_fieldsÚconsumed_field_idsr  r   Úfield_obj_idÚ
field_tagsÚ
pop_tag_idÚ	pop_fields    `         r¹   rd  Ú3HTMLDocumentBackend._consume_form_fields_in_subtreeb  s(  ø€ Ø×0×0ØˆIØ×5Ñ5°bÑ9ˆ	Ø68ÐÜ'*£uÐÜ˜YŸ_™_Ó.×/‰HˆAÜ˜e›9ˆLØÓ1ÙØ$&ˆJØ�}‰}Ñ(Ø×!Ñ! %§-¡-Ô0Ø�|‰|Ñ'Ø×!Ñ! %§,¡,×"2Ñ"2Ô3Ø×ÑÑB°U·\²\ÓBÔBÞÙÜô á!+ó÷ ó ð !×'Ñ'¨Ô.Ø"×&Ñ& |Ô4Ü-1°)·/±/Ó2CÖ-DÑ)�JØ Ô)Ø!Ÿ™ j°$Ö7ô .Eñ% 0ð*  Ðr¸   c                ó  ^• U R                  T5      nUc  gU R                  T5      nUc  gU R                  X215      nU R                  U5      u  pVU(       a  gUR                   H¤  nUTL a  M
  [        U[        5      (       a(  [        U4S jUR                   5       5      (       a  ME    g[        U[        5      (       d  M^  [        U4S jUR                   5       5      (       a  M„  [        U5      R                  5       (       d  M¤    g   g)NFc              3  ó*   >#   • U  H  oTL v •  M
     g 7frZ  r°   rO  s     €r¹   rÃ  ÚFHTMLDocumentBackend._is_lonely_key_covered_by_table.<locals>.<genexpr>‘  ó   øé € ÐJÒ7I¨V Õ(Ò7IùrQ  c              3  ó*   >#   • U  H  oTL v •  M
     g 7frZ  r°   rO  s     €r¹   rÃ  rˆ  •  r‰  rQ  T)rT  r†  r¤  rC  ÚdescendantsrN  rG   rü  r>  rE   r¿   rý   )r   rÝ   Ú
key_tag_idrþ  Úremaining_rawr  Úremaining_cleanrm  s    `      r¹   Ú_is_lonely_key_covered_by_tableÚ3HTMLDocumentBackend._is_lonely_key_covered_by_table  sç   ø€ Ø×&Ñ& wÓ/ˆ
ØÑØà×)Ñ)¨'Ó2ˆ
ØÑØà×8Ñ8¸À\ÓRˆØ!×6Ñ6°}ÓEÑˆÞØà$×0Ô0ˆJØ˜WÒ$ÙÜ˜*¤c×*Ñ*ÜÔJ°z×7IÒ7IÓJ×JÑJÙÙÜ˜*¤o×6Ó6ÜÔJ°z×7IÒ7IÓJ×JÑJÙÜ�z“?×(Ñ(×*Ó*Ù ñ 1ð r¸   c                ód  • / n[        UR                  [        5      (       a  UR                  OS nSnUb{  XR:  av  UR                  U5        U R	                  U5      (       d  UR
                  S;   a   U$ [        UR                  [        5      (       a  UR                  OS nUS-  nUb  XR:  a  Mv  U$ )Nr   >   rb   rW   rh   ri   rj   r  )rN  r¹  rG   r  r[  rq  )r   r½   Ú	max_depthr>  r¤  Údepths         r¹   Ú_iter_form_scan_parentsÚ+HTMLDocumentBackend._iter_form_scan_parentsœ  s§   € ØˆÜ/9¸#¿*¹*Äc×/JÑ/J §¢ÐPTˆØˆØÑ! eÓ&7Ø�N‰N˜7Ô#Ø×&Ñ& w×/Ñ/°7·<±<ð Dó 4ð ð ˆô )3°7·>±>Ä3×(GÑ(G�g—n’nÈTˆGØ�Q‰JˆEð Ñ! eÕ&7ð ˆr¸   c                óÚ  ^ ^• T R                  T5      (       a  gT R                  T R                  T5      5      (       a  gT R                  T5      n[	        S U 5       5      (       a  gTR
                  S;   a  gT R                  T5      (       a  gTR                  U U4S j5       b  gTR                  SS9 Vs/ s H  n[        U[        5      (       d  M  UPM     nn[	        S TR                   5       5      n[        U5      S:”  a  U(       d  gT R                  T[        5       5      nT R                  U5      u  pxU(       d  g[        U5      S	:”  a  [        U5      S
:”  a  ggs  snf )NFc              3  ót   #   • U  H.  nUS ;   =(       d    US;   =(       d    UR                  S5      v •  M0     g7f)>   úgrid-headerúsection-titleúline-items-header>   r‡  úsummary-title)z-headerÚ_headerz-titleÚ_titleNr¸  rº  s     r¹   rÃ  ÚFHTMLDocumentBackend._is_simple_extra_text_candidate.<locals>.<genexpr>´  sK   é € ð 
ò &�
ð ÐOÑO÷ OØÐ7Ñ7÷Oà×"Ñ"Ð#MÓNôOò &ùs   ‚68>   rL   rM   rN   rO   rP   rQ   Tc                óˆ   >• [        U [        5      =(       a+    U TL=(       a     TR                  TR                  U 5      5      $ rZ  )rN  rG   r>  rT  )rû  r   r½   s    €€r¹   rP  ÚEHTMLDocumentBackend._is_simple_extra_text_candidate.<locals>.<lambda>Á  s?   ø€ Ü˜t¤SÓ)÷ KØ C˜÷Kà×1Ñ1°$×2CÑ2CÀDÓ2IÓJðKr¸   ré  c              3  ó”   #   • U  H>  n[        U[        5      =(       a"    [        [        U5      R	                  5       5      v •  M@     g 7frZ  )rN  rE   rA   r¿   rý   rî  s     r¹   rÃ  rž  Î  s8   é € ð 
â%�ô �uœoÓ.×K´4¼¸E»
×8HÑ8HÓ8JÓ3KÔKÚ%ùs   ‚AAr  éŒ   r  )rv  r>  rT  r  rü  rq  rŠ  rÓ  r�  rN  rG   rÇ  r  rò  rÐ   rC  )	r   r½   r1  rï  Údirect_tag_childrenÚhas_direct_textrU  r  Úcleans	   ``       r¹   Ú_is_simple_extra_text_candidateÚ3HTMLDocumentBackend._is_simple_extra_text_candidate®  sa  ù€ Ø×!Ñ! #×&Ñ&ØØ×$Ñ$ T×%6Ñ%6°sÓ%;×<Ñ<ØØ×'Ñ'¨Ó,ˆÜñ 
ñ &ó	
÷ 
ñ 
ð Ø�8‰8Ð;Ó;ØØ×%Ñ% c×*Ñ*Øà�H‰Hõóð ñð ð  #Ÿ|™|°e˜|Ñ<ó
Ú<�eÄ
È5ÔRU×@V�EÑ<ð 	ð 
ô ñ 
àŸšó
ó 
ˆô Ð"Ó# aÓ'¶Øà×6Ñ6°s¼C»EÓBˆØ×,Ñ,¨SÓ1‰ˆÞØÜˆu‹:˜Ó¤Ð$7Ó 8¸1Ó <ØØùò!
s   Â;E(ÃE(c           
     ó  • / n[        [        U5      nUR                  UU R                  S9nUR	                  UR                  5       5        / nUR                  b/  UR                  (       a  UR	                  UR                  SU45        UR                  b2  UR	                  UR                  R                  SUR                  45        UR                   H!  nUR	                  UR                  SU45        M#     UR                   H!  n	UR	                  U	R                  SU	45        M#     [        US S9 GHR  u  p«nUS:X  a\  UR                  UR                  UR                  UR                   UU R                  S9nUR	                  UR                  5       5        Mi  US:X  a{  [        ["        U5      nUR%                  [&        R(                  UR*                  UR,                  UR.                  UU R                  S	9nUR	                  UR                  5       5        Mê  US:X  ax  [        [0        U5      n	UR%                  U	R2                  U	R*                  U	R,                  U	R.                  UU R                  S	9nUR	                  UR                  5       5        GMh  [        [4        U5      nUR6                  bh  UR%                  UR6                  UR*                  UR,                  UR.                  UU R                  S	9nUR	                  UR                  5       5        GMí  UR9                  UR*                  UR,                  UR.                  UU R                  UR:                  S
9nUR	                  UR                  5       5        GMU     U$ )Nr  rÃ  râ   r®  rÁ   c                ó   • U S   $ ©Nr   r°   )r$  s    r¹   rP  ÚDHTMLDocumentBackend._add_field_item_from_extracted.<locals>.<lambda>õ  s   € ÀDÈÂGr¸   rr  )rÁ   rÀ   rÃ   r¹  ry  )r¦   rÁ   rÀ   rÃ   r¹  ry  )rÁ   rÀ   rÃ   r¹  ry  rÆ   )r   r
   Úadd_field_itemry  r  rÚ  rÝ   rà   rÞ   râ   r¾   rä   rå   rw  Úadd_field_keyrß   rá   rÓ   r@  r   ÚMARKERrÁ   rÀ   rÃ   rÖ   r¦   r»   rÈ   Úadd_field_valuerÆ   )r   r   r–  r¹  ÚrefsÚdoc_with_fieldsÚ
field_itemr¡  r®  Ú
extra_textr  Ú	part_typeÚpayloadÚ	field_keyrâ   Úmarker_itemrE  rT  Úfield_values                      r¹   rX  Ú2HTMLDocumentBackend._add_field_item_from_extractedÝ  sý  € ð !ˆÜœs C›.ˆØ$×3Ñ3ØØ×,Ñ,ð 4ð 
ˆ
ð 	�‰�J×&Ñ&Ó(Ô)àRTˆØ�=‰=Ñ$¨¯¯Ø�L‰L˜%Ÿ/™/¨5°%Ð8Ô9Ø�<‰<Ñ#Ø�L‰L˜%Ÿ,™,×,Ñ,¨h¸¿¹ÐEÔFØ—\”\ˆEØ�L‰L˜%Ÿ+™+ w°Ð6Ö7ñ "à×+Ô+ˆJØ�L‰L˜*×*Ñ*¨F°JÐ?Ö@ñ ,ô &,¨EÑ7KÕ%LÑ!ˆA˜'Ø˜EÓ!Ø+×9Ñ9ØŸ™ØŸ™ØŸ™Ø%Ø"&×"4Ñ"4ð :ð �	ð —‘˜I×-Ñ-Ó/Ö0Ø˜hÓ&ÜÔ2°GÓ<�Ø!Ÿl™lÜ&×-Ñ-ØŸ™ØŸ™ØŸ™Ø%Ø"&×"4Ñ"4ð +ð �ð —‘˜K×/Ñ/Ó1Ö2Ø˜fÓ$Ü!Ô"4°gÓ>�
ØŸL™LØ$×*Ñ*Ø#Ÿ™Ø#Ÿ™Ø#Ÿ™Ø%Ø"&×"4Ñ"4ð )ð �	ð —‘˜I×-Ñ-Ó/×0äÔ0°'Ó:�Ø×'Ñ'Ñ3Ø$'§L¡LØ#×2Ñ2Ø"ŸZ™ZØ"ŸZ™ZØ"ŸZ™ZØ)Ø&*×&8Ñ&8ð %1ð %�Mð —K‘K × 5Ñ 5Ó 7×8à"1×"AÑ"AØ"ŸZ™ZØ"ŸZ™ZØ"ŸZ™ZØ)Ø&*×&8Ñ&8Ø"ŸZ™Zð #Bð #�Kð —K‘K × 3Ñ 3Ó 5×6ñk &Mðn ˆr¸   c                ó*  ^\^]^^• 0 n0 n0 m]0 n0 n[        [        [           UR                  S5      5       Vs/ s H5  nU R	                  Xa5      (       d  M  U R                  U5      (       a  M3  UPM7     nn[        USS9 VVs0 s H  u  p†[        U5      U_M     n	nnU GH�  nUR                  S5      n
[        U
[        5      (       d  M,  U	[        U5         n[        R                  U
5      nU(       az  UR                  S5      nUR                  S5      nUR                  5       (       a  [        U5      OS nUR!                  U/ 5      R#                  XûU45        T]R!                  XÛ5        MÐ  [$        R                  U
5      nU(       aG  UR                  S5      nUR!                  U/ 5      R#                  X¶45        T]R!                  XÛ5        GM3  [&        R                  U
5      nU(       d  GMR  UR                  S5      nXÒ;  a  XbU'   X³U'   T]R!                  XÛ5        GM„     / n[)        5       n/ nU R*                  (       a`  UR                  S5       HK  n[        U[        5      (       d  M  U R-                  U5      nUc  M0  UR#                  UR.                  5        MM     [1        T]R3                  5       U]4S jS	9n[)        5       nU G	Hé  nUR                  U5      m^[        UR                  U/ 5      5      nT^b7  U Vs/ s H!  nU R5                  T^US   5      (       d  M  UPM#     nnU(       a  UnUR7                  S
 S	9  [        UR                  U/ 5      5      nT^b/  U Vs/ s H"  nU R9                  T^US   U5      (       a  M   UPM$     nnU R;                  T^UUS9nT^bv  U R=                  T^5      (       a`  [?        U^4S jU 5       5      (       dF  UR                  UT]R                  US5      5      nUR#                  SUT^45        UR7                  S S	9  S nU(       a   US   S   nU RA                  U5      n U RC                  U 5      u  n!n"U"(       aG  [E        UUS   S   U!U"U RG                  U"US9S9nU RI                  U5      n#U#b  URK                  U#5        O%U RI                  U5      n#U#b  URK                  U#5        U Vs/ s H  nUS   PM
     n$nS U$ 5        V
s1 s H  n
[        U
[        5      (       d  M  U
iM     n%n
Ub/  U RI                  URL                  5      n&U&b  U%RK                  U&5        Sn'Sn(S n)T^Gb  T^RN                  S;   a  U RQ                  T^5      n*O°[S        T^R                  S5       V+s/ s H`  n+U RU                  U RI                  U+5      5      (       d  M*  [        R                  U RI                  U+5      =(       d    S5      (       d  M^  U+PMb     sn+5      n,U,S:”  a  U RW                  T^5      n*OU RY                  T^U%5      n*U RC                  U*5      u  n'n(U RG                  U(T^S9n)[S        U$5      S:”  a  [S        U(5      S:”  a  Sn'Sn(S n)T^c  Uc
  U$(       d  GM¥  T^b  Uc  U((       d
  U$(       d  GM¼  / n-U HÞ  u  n.n/n0U R[                  U05      n1[)        5       n2/ n3U R]                  U05      n4U1b  U R_                  U05      u  n5n2n3U5n6O%U RQ                  U05      n7U RC                  U75      u  n6n5U-R#                  [a        U0U/U6U5U1b  U Rc                  U5U0U3S9OU RG                  U5U0S9U4U1U2U3S9	5        U RI                  U05      n8U8c  MÍ  URK                  U85        Mà     U Re                  U-5      n-U((       aF  U)cC  Ub  URf                  b  URf                  n)O&U-(       a  U-S   Rf                  b  U-S   Rf                  n)U- V9s1 s H  n9[        U9RL                  5      iM     sn9m\T\Ri                  S U$ 5       5        T^b  T\RK                  [        T^5      5        Ub$  T\RK                  [        URL                  5      5        [)        5       n:U- H  n9U:Ri                  U9Rj                  5        M      [)        5       n;/ n</ n=T^b   U=Rm                  U Ro                  T^5      5        Ub*  U=Rm                  U Ro                  URL                  5      5        U- H-  n9U=Rm                  U Ro                  U9RL                  5      5        M/     [)        5       n>/ n?U= H8  n@[        U@5      nAUAU>;   a  M  U>RK                  WA5        U?R#                  W@5        M:     U? GHð  n@/ nBU@R                  SS9 VCs/ s H  nC[        UC[        5      (       d  M  WCPM     nDnC[        UD5       H€  u  nnC[        UC5      nEUET\;   a  WBR#                  U5        M*  [?        U\4S jWCR                  S5       V+s/ s H  n+[        U+5      PM     sn+ 5       5      (       d  Mo  WBR#                  U5        M‚     WB(       a  [q        WB5      nF[s        UB5      nGOSnF[S        WD5      S-
  nG[        WD5       GHç  u  nnHUWFS-
  :  d	  UWGS-   :”  a  M  [        WH5      nIUIT\;   a  M.  U R                  WH5      (       a  MF  [?        U\4S jWHR                  S5       5       5      (       a  Mq  WIU;;   a  My  WIU;   a  M�  WIU:;   a  M‰  U RI                  WH5      nJUJb  U RU                  WJ5      (       a  Mµ  U Ru                  WH5      (       d  MÍ  U Rw                  WHT\U:-  5      nKU RC                  UK5      u  nLnM[x        Rz                  nNU R}                  UH5      (       aI  U R                  WH5      (       a  [x        R€                  O[x        R‚                  nNU R…                  WK5      nMUMnLWM(       d  WN[x        Rz                  :X  a  GMƒ  U	R                  WI5      nOUOc  GMš  U<R#                  [‡        WHWOWLWMU RG                  UMUHS9WNS95        U;RK                  WI5        URK                  UI5        GMê     GMó     UR#                  [‰        T^UR                  UT]R                  US5      5      U'U(U)UU-U<S 95        U RI                  T^5      nPUPc  G	MØ  URK                  WP5        G	Mì     U VQV9s1 s H,  nQUQRŠ                    H  n9[        U9RL                  5      iM     M.     nRnQn9/ nS/ nTS nUS nVU Hã  n[        U5      WR;   a  M  U R�                  U5      (       d  M,  U RI                  U5      b  M@  U	R                  [        U5      5      nWUWc  M_  [        URŽ                  [        5      (       a  [        URŽ                  5      OS nXWT(       a&  WXWU:X  a   WVb  WWWV-
  S::  a  WTR#                  WWU45        OWT(       a  WSR#                  WT5        WWU4/nTWXnUWWnVMå     WT(       a  WSR#                  WT5        WS HÇ  nY/ nZUY Hv  u  n[n0U RQ                  U05      n7U RC                  U75      u  n6n5WZR#                  [a        U0U[U6U5U RG                  U5U0S9S!S"95        URK                  U R‘                  U05      5        Mx     U Re                  WZ5      nZUZ(       d  M›  UR#                  [‰        S WZS   R’                  SSS S UZ/ S 95        MÉ     U(       d  g [•        UUS#9$ s  snf s  snnf s  snf s  snf s  snf s  sn
f s  sn+f s  sn9f s  snCf s  sn+f s  sn9nQf )$NTr  rs  rS  Úkey_idÚvalue_idrW   c                ó   >• TU    $ rZ  r°   )r»  Úfirst_order_by_keys    €r¹   rP  Ú:HTMLDocumentBackend._extract_form_region.<locals>.<lambda>j  s   ø€ Ð:LÈVÒ:Tr¸   rr  c                ó   • U S   $ rª  r°   ru  s    r¹   rP  r¿  z  s   € °%¸²(r¸   rm  )rÝ   ry  rz  c              3  ó0   >#   • U  H  oS    TL v •  M     g7f)rm  Nr°   )rÂ  ro  rÝ   s     €r¹   rÃ  Ú;HTMLDocumentBackend._extract_form_region.<locals>.<genexpr>�  s   øé € ÐKº]°E !™H¨Õ/º]ùs   ƒr   c                ó8   • U S   S L U S   b  U S   OU S   U S   4$ rt  r°   ru  s    r¹   rP  r¿  ”  s0   € Ø˜a™ DÐ(Ø$)¨!¡HÑ$8˜˜aš¸eÀA¹hØ˜a™ñ'r¸   r‡  )r½   r¾   rÀ   rÁ   rÃ   c              3  óB   #   • U  H  oR                  S 5      v •  M     g7f)rS  N)r  rÁ  s     r¹   rÃ  rÂ  ³  s   é € ÐCº
°Ÿw™w tŸ}˜}º
ùs   ‚rù   >   rì  rÅ  rn  r  é   éx   rR  )	r½   r¾   rÀ   rÁ   rÃ   rÆ   rÈ   rÌ   rÎ   c              3  ó8   #   • U  H  n[        U5      v •  M     g 7frZ  r  rÁ  s     r¹   rÃ  rÂ    s   é € Ð(GºJ°S¬¨C¯¨ºJùrz  Fré  c              3  ó.   >#   • U  H
  nUT;   v •  M     g 7frZ  r°   )rÂ  Údescendant_obj_idÚcomponent_tag_obj_idss     €r¹   rÃ  rÂ  =  s#   øé € ð ò2Ð-ð *Ð-BÖBò2ùre  c              3  ó@   >#   • U  H  n[        U5      T;   v •  M     g 7frZ  r  )rÂ  rm  rÊ  s     €r¹   rÃ  rÂ  T  s"   øé € ð â*D˜Jô ˜:›Ð*?Ö?Ú*Dùrˆ  )r½   r¾   rÀ   rÁ   rÃ   r¦   )rÝ   rÞ   rß   rà   rá   râ   rä   rå   r¬  )r½   r¾   rÀ   rÁ   rÃ   rÆ   )ré   rë   )Kr   rÑ   rG   r�  r:  rv  r  rS  r  rN  r¿   r�   r=  rÎ  Úisdigitr­   rv  r  rŒ   r‹   rÐ   rD  rW  r¯   rw  r¿  rU  rx  r™  r‚  rŠ  rü  r<  rC  rÓ   r„  rT  rÐ  r½   rq  r8  r  r>  r§  r¤  r
  r½  r&  r»   r³  rO  rÃ   r  rÌ   rW  r”  r.  r)  r¦  rò  r   rØ   ró  r  r  r	  rþ  rÖ   rÚ   rä   rç  r¹  rK  r¾   rç   )_r   r9  Úkey_tagsÚ
key_ordersÚmarkers_by_keyÚvalues_by_keyr½   Úall_tagsr£  Útag_order_by_obj_idrF  r}  Úvalue_matchr»  r¼  r|  Úmarker_matchÚ	key_matchré   rë   r‹  Ú	table_tagra  Úkey_ids_in_orderÚassigned_extra_tag_obj_idsry  ro  Úin_scope_markersrz  Úkey_as_value_orderrâ   r;  Úmarker_text_rawÚmarker_origÚmarker_textÚmarker_tag_idÚ
value_tagsrŸ  Ú	marker_idrß   rà   rá   Úkey_text_rawrm  Údescendant_value_counträ   r  Úvalue_orderrR  rÈ   rÌ   rÎ   Ú
value_kindÚ
value_textÚ
value_origÚvalue_text_rawÚvalue_tag_idr®  Úconsumed_label_obj_idsÚseen_extra_tag_obj_idsrå   Úparent_tags_to_scanÚseen_parent_tag_obj_idsÚunique_parent_tags_to_scanrv  Úparent_tag_obj_idÚcomponent_direct_child_indicesrï  Údirect_childrenÚchild_obj_idÚmin_idxÚmax_idxÚsibling_tagÚsibling_obj_idÚsibling_html_idÚsibling_text_rawÚsibling_origÚsibling_textÚsibling_labelÚsibling_orderrŒ  r   Úextracted_value_tag_obj_idsÚgeneric_clustersÚcurrent_clusterÚcurrent_parent_obj_idÚprevious_orderÚ	tag_orderÚparent_obj_idÚclusterÚgeneric_valuesr¾   rÊ  r¾  rÝ   s_                                                                                               @@@r¹   Ú_extract_form_regionÚ(HTMLDocumentBackend._extract_form_region.  s>  ú€ Ø#%ˆØ%'ˆ
Ø-/ÐØ;=ˆØIKˆô œD¤™I x×'8Ñ'8¸Ó'>Ô?ó
â?�Ø×1Ñ1°#×@ó ð ×*Ñ*¨3×/÷ Ù?ð 	ð 
ô *3°8À1Ò)Eô/
Ú)E™X˜SŒBˆs‹G�SŠLÑ)Eð 	ñ /
ô ˆCØ—W‘W˜T“]ˆFÜ˜f¤c×*Ñ*ÙØ+¬B¨s«GÑ4ˆIä+×1Ñ1°&Ó9ˆKÞØ$×*Ñ*¨8Ó4�Ø&×,Ñ,¨ZÓ8�Ø/7×/?Ñ/?×/AÑ/Aœc (œmÀt�Ø×(Ñ(¨°Ó4×;Ñ;Ø ¨SÐ1ôð #×-Ñ-¨fÔ@Ùä-×3Ñ3°FÓ;ˆLÞØ%×+Ñ+¨HÓ5�Ø×)Ñ)¨&°"Ó5×<Ñ<¸iÐ=MÔNØ"×-Ñ-¨fÔ@Úä'×-Ñ-¨fÓ5ˆIß‰yØ"Ÿ™¨Ó2�ØÓ)Ø'*˜VÑ$Ø)2˜vÑ&Ø"×-Ñ-¨f×@ñ= ð@ -/ˆÜ%(£UÐà*,ˆØ×$×$Ø%×.Ñ.¨wÖ7�	Ü˜i¬×-Ó-Ø#×>Ñ>¸yÓI�HØÓ+Ø$×+Ñ+¨H¯M©MÖ:ñ	 8ô "Ø×#Ñ#Ó%Ô+Tñ
Ðô 03«uÐ"ä&ˆFØ—l‘l 6Ó*ˆGä! .×"4Ñ"4°V¸RÓ"@ÓAˆNØÑ"ñ "0ó$â!/˜Ø×2Ñ2°7¸EÀ!¹H×E÷ Ù!/ð !ð $ö
 $Ø%5�NØ×ÑÑ$:ÐÑ;ä  ×!2Ñ!2°6¸2Ó!>Ó?ˆMØÑ"ñ "/ó!â!.˜Ø×<Ñ<Ø  q¡¨<÷÷ Ù!.ð ð !ð !×;Ñ;ØØ-Ø+ð <ð ˆMð Ñ#Ø×.Ñ.¨w×7Ñ7ÜÔK¹]ÓK×KÑKà%/§^¡^ØÐ.×2Ñ2°6¸1Ó=ó&Ð"ð ×$Ñ$ aÐ);¸WÐ%EÔFØ×"Ñ"ñð #ñ ð 6:ˆFÞØ+¨AÑ.¨qÑ1�
Ø"&×"@Ñ"@ÀÓ"L�Ø+/×+DÑ+DÀ_Ó+UÑ(�˜[ÞÜ1Ø&Ø,¨QÑ/°Ñ2Ø(Ø(Ø!×1Ñ1°{È
Ð1ÐSñ�Fð %)×$5Ñ$5°jÓ$A�MØ$Ñ0Ø(×,Ñ,¨]Ô;øà$(×$5Ñ$5°jÓ$A�MØ$Ñ0Ø(×,Ñ,¨]Ô;á0=Ó>² u˜% œ(±ˆJÐ>ñ D¹
ÔCóâC�FÜ˜f¤c×*÷ ÙCð ð ð
 Ñ!Ø ×-Ñ-¨f¯j©jÓ9�	ØÑ(Ø ×$Ñ$ YÔ/àˆHØˆHØ15ˆHØÒ"Ø—<‘<Ð#BÓBØ#'×#@Ñ#@ÀÓ#I‘Lä-0ð /6×.>Ñ.>¸tÔ.Dóâ.D 
Ø#×8Ñ8¸×9JÑ9JÈ:Ó9V×Wó 'ô !2× 7Ñ 7Ø $× 1Ñ 1°*Ó =× CÀ÷!÷ 'Ù.Dñó	.Ð*ð .°Ó1Ø'+×'@Ñ'@ÀÓ'I™à'+×'GÑ'GØ# \ó(˜ð &*×%>Ñ%>¸|Ó%LÑ"�˜(Ø×/Ñ/°XÀ7Ð/ÐK�Ü�z“? QÓ&¬3¨x«=¸3Ó+>Ø!�HØ!�HØ#�Hà‰ 6¡>¾*ÚàÑ#Ø‘NÞ Þ"âà02ˆFÛ-:Ñ)��; 	Ø!%×!AÑ!AÀ)Ó!L�Ü7:³uÐ*Ø13Ð#Ø!×8Ñ8¸ÓC�
Ø!Ñ-ð
 ×NÑNØ!óñ	Ø"Ø2Ø+ð ",‘Jà%)×%BÑ%BÀ9Ó%M�NØ-1×-FÑ-FÀ~Ó-VÑ*�J 
Ø—‘Ü'Ø%Ø)Ø'Ø'ð  .Ñ9ð !×?Ñ?Ø%/Ø-6Ø+>ð @ñ ð "&×!5Ñ!5¸:È9Ð!5Ð!Uà'Ø'5Ø3MØ,?ñ#ôð*  $×0Ñ0°Ó;�ØÓ+Ø$×(Ñ(¨Ö6ñQ .;ðR ×5Ñ5°fÓ=ˆFæ˜HÑ,ØÑ%¨&¯+©+Ñ*AØ%Ÿ{™{‘HÞ  q¡	§¡Ñ :Ø% a™yŸ~™~�HáJPÓ.QÊ&À¬r°%·)±)®}É&Ñ.QÐ!Ø!×(Ñ(Ñ(G¹JÓ(GÔGØÑ"Ø%×)Ñ)¬"¨W«+Ô6ØÑ!Ø%×)Ñ)¬"¨V¯Z©Z«.Ô9Ü/2«uÐ"Û�Ø&×-Ñ-¨e×.NÑ.NÖOñ  ä/2«uÐ"Ø46ˆKØ-/ÐØÑ"Ø#×*Ñ*¨4×+GÑ+GÈÓ+PÔQØÑ!Ø#×*Ñ*¨4×+GÑ+GÈÏ
É
Ó+SÔTÛ�Ø#×*Ñ*¨4×+GÑ+GÈÏ	É	Ó+RÖSñ  ô 14³Ð#Ø46Ð&Û1�
Ü$& z£NÐ!Ø$Ð(?Ó?ÙØ'×+Ñ+Ð,=Ô>Ø*×1Ñ1°*Ö=ñ 2ô 9�
Ø<>Ð.ð ",×!4Ñ!4¸uÐ!4Ñ!Eó#â!E˜Ü! %¬×-÷ Ù!Eð  ð #ô
 #,¨OÖ"<‘J�C˜Ü#% e£9�LØ#Ð'<Ó<Ø6×=Ñ=¸cÔBÙ Üô ð >C¿^¹^ÈDÔ=Qó2Ú=Q¨zœB˜zžNÑ=Qò2ó÷ ó ð 7×=Ñ=¸cÖBñ #=ö 2Ü!Ð"@ÓA�GÜ!Ð"@ÓA‘Gà�GÜ! /Ó2°QÑ6�Gä(1°/×(BÑ$�C˜Ø˜g¨™kÓ*¨c°W¸q±[Ó.AÙ Ü%'¨£_�NØ%Ð)>Ó>Ù Ø×-Ñ-¨k×:Ñ:Ù Üô à*5×*>Ñ*>¸tÔ*Dó÷ ñ ñ !Ø%Ð)?Ó?Ù Ø%Ð)CÓCÙ Ø%Ð)?Ó?Ù Ø&*×&7Ñ&7¸Ó&D�OØ&Ñ2°t×7PÑ7PØ'÷8ñ 8ñ !Ø×?Ñ?À×LÑLÙ Ø'+×'OÑ'OØ#Ð%:Ð=SÑ%Só(Ð$ð 26×1JÑ1JØ(ó2Ñ.�L ,ô %1×$5Ñ$5�MØ×3Ñ3°K×@Ñ@ð  $×8Ñ8¸×EÑEô )×:Ò:ä!-×!AÑ!Að &ð
 (,×'DÑ'DÐEUÓ'V˜Ø'3˜Þ'¨M¼\×=NÑ=NÓ,NÚ Ø$7×$;Ñ$;¸NÓ$K�MØ$Ñ,Ú Ø×&Ñ&Ü*Ø +Ø"/Ø!-Ø!-Ø!%×!5Ñ!5Ø%1°{ð "6ð "ð #0ñ	ôð +×.Ñ.¨~Ô>Ø.×2Ñ2°>×Bôw )Cñ7 9ðp �M‰MÜ#Ø#Ø(Ÿn™n¨VÐ5G×5KÑ5KÈFÐTUÓ5VÓWØ%Ø%Ø%Ø!Ø!Ø +ñ	ôð ×*Ñ*¨7Ó3ˆJØÔ%Ø ×$Ñ$ Z×0ñS	 'ñX	 (.ô'
Ú'-˜e¸5¿<½<°%ŒBˆu�y‰yŽM¹<‰M¡vð 	$ñ '
ð 9;ÐØ13ˆØ/3ÐØ(,ˆÛˆCÜ�#‹wÐ5Ó5ÙØ×8Ñ8¸×=Ñ=ÙØ× Ñ  Ó%Ñ1ÙØ+×/Ñ/´°3³Ó8ˆIØÑ ÙÜ.8¸¿¹ÄS×.IÑ.IœB˜sŸz™zœNÈtˆMæØ!Ð%:Ó:Ø"Ñ.Ø Ñ.°!Ó3à×&Ñ&¨	°3Ð'7Õ8æ"Ø$×+Ñ+¨OÔ<Ø$-¨sÐ#3Ð"4�Ø(5Ð%Ø&ŠNñ/ ö0 Ø×#Ñ# OÔ4ã'ˆGØ8:ˆNÛ$+Ñ ��yØ!%×!>Ñ!>¸yÓ!I�Ø)-×)BÑ)BÀ>Ó)RÑ&�
˜JØ×%Ñ%Ü'Ø%Ø#Ø'Ø'Ø!×1Ñ1°zÀyÐ1ÐQØ'ñô	ð !×$Ñ$ T×%=Ñ%=¸iÓ%HÖIñ %,ð "×=Ñ=¸nÓMˆNÞ!ÙØ�M‰MÜ#Ø Ø,¨QÑ/×5Ñ5ØØØ!ØØ)Ø "ñ	öñ' (ö@ ØÜ#¨6ÐDTÑUÐUùòS
ùó/
ùòr$ùò!ùòd ?ùòùò$ùòd /Rùò<#ùò2ùót'
sq   ¶{Á{Á,{Â{!Ì{'Ì${'Í'{,Î
{,Ó	{1Ó%{6Ô{6Ö ){;
Ö-0{;
×!{;
ß| å/|æ|ç&|
ò>3|c           
     ó„  • U R                  U5      nUc  g / n/ nSnUR                   GH  nUR                  (       d  M  [        U[        R
                  UR                  UR                  UR                  S9nUR                  U5        US-  nUR                   HŽ  n[        U[        R                  UR                  UR                  UR                  S9n	UR                  U	5        UR                  [        [        R                   UR"                  U	R"                  S95        US-  nM�     GM     U(       d  g [%        X4S9$ )Nr   )Úcell_idr¦   rÁ   rÀ   rÃ   r  )r¦   Úsource_cell_idÚtarget_cell_id)r*  Úlinks)r  ré   rà   r   r   ÚKEYrß   rá   r  rä   ÚVALUErÁ   rÀ   rÃ   r   r   ÚTO_VALUEr  r   )
r   r9  Ú	extractedr*  r  Úcell_id_seqr   r”  r®  r•  s
             r¹   Ú_extract_form_graphÚ'HTMLDocumentBackend._extract_form_graphß  s  € Ø×-Ñ-¨hÓ7ˆ	ØÑØà!#ˆØ!#ˆØˆØ×%Õ%ˆEØ—>—>ÙÜ Ø#Ü$×(Ñ(Ø—^‘^Ø—^‘^Ø—^‘^ñˆHð �L‰L˜Ô"Ø˜1ÑˆKàŸœ�Ü&Ø'Ü(×.Ñ.ØŸ™ØŸ™ØŸ™ñ�
ð —‘˜ZÔ(Ø—‘ÜÜ,×5Ñ5Ø'/×'7Ñ'7Ø'1×'9Ñ'9ñôð ˜qÑ ’ô! &ñ &ö> ØÜ˜uÑ2Ð2r¸   c           
     óŽ  ^• / n[        U4S jS 5       5      nU(       GaÖ  [        [        T5      nU R                  U5      n[	        5       n[	        5       n0 n	UGbÊ  UR                  UR                  5        UR                   GHž  n
U R                  U
R                  5      nU
R                  (       dC  U
R                  b4  Ub1  U R                  U
R                  5      (       a  UR                  U5        Ms  [	        5       nUb  UR                  U5        U
R                  b9  U R                  U
R                  R                  5      nUb  UR                  U5        U
R                   H4  nU R                  UR                  5      nUc  M#  UR                  U5        M6     U H  nUR                  U5        X©U'   M     U
R                   H'  nUR                  [!        UR                  5      5        M)     U
R                   H  nUR                  UR"                  5        M      GM¡     U	(       d˜  UR$                  R'                  5       S:X  a#  UR)                  U R+                  UT5      5        U$ U R-                  U5         U R/                  U5         UR)                  U R1                  UT5      5        S S S 5        S S S 5        U$ U R3                  SUS9nUR5                  UU R6                  U R8                     S9nU R:                  Ul        UR=                  UR?                  5       5        U RA                  U5         U RC                  U	5         UR$                  R'                  5       S:X  a"  UR)                  U R+                  UT5      5        OUU R-                  U5         U R/                  U5         UR)                  U R1                  UT5      5        S S S 5        S S S 5        S S S 5        S S S 5        U$ U RE                  U5      nUb  UO	[G        5       nU R3                  SUS9nTRI                  [K        U5      UU R6                  U R8                     S9nU R:                  Ul        UR=                  UR?                  5       5        UbA  TRM                  US US9nU R:                  Ul        UR=                  UR?                  5       5        U RA                  U5         UR$                  R'                  5       S:X  a"  UR)                  U R+                  UT5      5        O!UR)                  U R1                  UT5      5        S S S 5        U$ ! , (       d  f       GN�= f! , (       d  f       U$ = f! , (       d  f       GNŸ= f! , (       d  f       GN©= f! , (       d  f       GN³= f! , (       d  f       U$ = f! , (       d  f       U$ = f)Nc              3  ó<   >#   • U  H  n[        TU5      v •  M     g 7frZ  )Úhasattr)rÂ  Úmethod_namer–  s     €r¹   rÃ  Ú=HTMLDocumentBackend._handle_form_container.<locals>.<genexpr>  s&   øé € ð  
ò �ô �C˜×%Ð%ò ùs   ƒ)Úadd_field_regionr¬  r­  r¯  rW   rù   r‡  )rÃ   r¹  )ÚgraphrÃ   r¹  )'rŸ  r   r
   r  rÐ   r  rë   ré   rT  rÝ   rä   r�  rÐ  râ   r½   rå   rS  rÌ   rq  rÃ  rW  re  rY  r^  r•  r|  r  r>  r=  ry  r  rÚ  r¯  rm  r  r   Úadd_formr   Úadd_key_values)r   r½   r–  rI  Úsupports_field_kvr±  r‡   rë   r  rl  r   rŒ  Úanchor_tag_idsrÞ  r®  rè  Úanchor_tag_idr³  Úregion_provÚfield_regionÚ
form_graphÚ	form_dataÚ	form_provr®  Úkv_items     `                      r¹   r\  Ú*HTMLDocumentBackend._handle_form_container
  sà  ø€ Ø$&ˆ
Üô  
ñ ó 
ó 
Ð÷ Ü"¤3¨›nˆOØ×3Ñ3°CÓ8ˆKÜ),«ÐÜ-0«UÐ Ø?AÐØÒ&Ø ×'Ñ'¨×(DÑ(DÔEØ(×/Õ/�EØ!%×!2Ñ!2°5·=±=Ó!A�JØ Ÿ<Ÿ<à!ŸM™MÑ5Ø *Ñ 6Ø $× DÑ DÀUÇ]Á]× SÑ Sà,×0Ñ0°Ô<Ù ä/2«u�NØ!Ñ-Ø&×*Ñ*¨:Ô6Ø—|‘|Ñ/Ø(,×(9Ñ(9¸%¿,¹,×:JÑ:JÓ(K˜Ø(Ñ4Ø*×.Ñ.¨}Ô=Ø!&§¤˜Ø'+×'8Ñ'8¸¿¹Ó'C˜Ø'Ó3Ø*×.Ñ.¨|Ö<ñ ".ó *8˜Ø(×,Ñ,¨]Ô;Ø:?¨Ó7ñ *8ð ',×&7Ô&7˜
Ø,×0Ñ0´°J·N±NÓ1CÖDñ '8à!&§¤˜Ø,×3Ñ3°E×4TÑ4TÖUô ".ñ7 0ö< $Ø—8‘8—>‘>Ó# wÓ.Ø×%Ñ% d×&8Ñ&8¸¸cÓ&BÔCð
 "Ð!ð ×/Ñ/Ð0@ÕAØ!×7Ñ7Ð8LÕMØ&×-Ñ-¨d¯j©j¸¸cÓ.BÔC÷ N÷ Bð "Ð!àŸ/™/¨r°s˜/Ð;ˆKØ*×;Ñ;Ø Ø—|‘| D§J¡JÑ/ð <ð ˆLð *.×);Ñ);ˆLÔ&Ø×Ñ˜l×2Ñ2Ó4Ô5à×)Ñ)¨,Õ7Ø×4Ñ4Ð5EÕFØ—x‘x—~‘~Ó'¨7Ó2à"×)Ñ)¨$×*<Ñ*<¸SÀ#Ó*FÕGà!×3Ñ3Ð4DÕEØ!%×!;Ñ!;Ð<PÕ!QØ *× 1Ñ 1°$·*±*¸SÀ#Ó2FÔ G÷ "R÷ F÷ G÷ 8ð Ðà×-Ñ-¨cÓ2ˆ
Ø",Ñ"8‘J¼i»kˆ	Ø—O‘O¨°�OÐ5ˆ	Ø—L‘LÜ˜9Ó%ØØ—<‘< §
¡
Ñ+ð !ð 
ˆ	ð
 #'×"4Ñ"4ˆ	ÔØ×Ñ˜)×+Ñ+Ó-Ô.àÑ!Ø×(Ñ(Ø ØØ ð )ð ˆGð
 %)×$6Ñ$6ˆGÔ!Ø×Ñ˜gŸo™oÓ/Ô0à×%Ñ% iÕ0Ø�x‰x�~‰~Ó 7Ó*Ø×!Ñ! $×"4Ñ"4°S¸#Ó">Õ?à×!Ñ! $§*¡*¨S°#Ó"6Ô7÷	 1ð
 Ð÷a NÖMú÷ BÔAð "Ð!ú÷" "RÖ!Qú÷ FÖEú÷ GÖFú÷ 8Ô7ð Ðú÷, 1Ô0ð
 Ðús†   É?UÊ"U	Ê3UÌ=V#ÍAVÎ!U?Î3"U-	ÏU?ÏVÏ%V#ÓA"V5Õ	
U	ÕUÕ
U*Õ-
U<Õ7U?Õ?
VÖ	VÖ
V 	ÖV#Ö#
V2Ö5
Wc           
     ó,  • UR                  S5      n[        5       nS nU R                  U R                     nS nU" U5      =n(       a4  UR	                  S5      =(       d    Sn	UR                  [        X˜S95        Un[        U[        5      (       a7  UR                  SSS9n
[        U
[        5      (       a  U R                  U
S	S
9nU
nU(       d:  UR	                  S5      (       a$  [        [        UR	                  S5      S9/5      nUnUR                  5       nS nUR                  (       aœ  [        R                  UR                  R                  5       5      nU R!                  UU=(       d    UUR"                  S9nUR%                  [&        R(                  UUR                  U R*                  UR,                  UR.                  US9nU R1                  US5      nU R!                  SUS9n[3        [4        U R6                  5      R8                  (       a  U(       d,  UR;                  UUU R*                  US9nUR=                  5       $ U R?                  U5      nU RA                  U5      nUR;                  UUUU R*                  US9nUR=                  5       $ )NrX   c                ó²   • U R                   nUbH  UR                  S:X  a'  UR                  S5      (       a  UR                  S5      $ UR                   nUb  MH  g )Nrœ   rÑ  )r¹  rq  r  )rÆ  r{  s     r¹   Úget_img_hyperlinkÚ:HTMLDocumentBackend._emit_image.<locals>.get_img_hyperlink{  sT   € Ø!Ÿ.™.ˆKØÑ)Ø×#Ñ# sÓ*¨{¯©¸v×/FÑ/FØ&Ÿ?™?¨6Ó2Ð2Ø)×0Ñ0�ð Ó)ð r¸   Úaltrù   )rÁ   rò   rp   Fré  Trø  )rÁ   r  )r¦   rÁ   rÀ   ry  ró   rò   rÃ   Úsrcr‡  )Úcaptionr¹  ry  rÃ   )ru  r,  r¹  ry  rÃ   )!r‘  r÷   r>  r=  r  r  rñ   rN  rG   rÓ  rý  r  rÁ   r(  rŠ  rý   r|  rõ   r@  r   r  ry  ró   rò   Ú_get_attr_as_stringr   r:   rT  Úfetch_imagesr  rÚ  rÕ  Ú_create_image_ref)r   rÆ  r–  rX   r,  Úcaption_prov_tagr¹  r(  Úimg_hyperlinkÚimg_textr  Úcaption_anno_textÚcaption_itemrÂ  rÃ   Úsrc_locÚpic_provr,  Úimg_refÚdocling_pics                       r¹   r`  ÚHTMLDocumentBackend._emit_images  sp  € Ø×$Ñ$ XÓ.ˆÜ%6Ó%8ˆØ*.Ðà—‘˜dŸj™jÑ)ˆò	ñ .¨gÓ6Ð6ˆ=Õ6Ø—{‘{ 5Ó)×/¨RˆHØ�N‰Nœ=¨hÑPÔQØ&Ðä�fœc×"Ñ"Ø Ÿ+™+ l¸e˜+ÐDˆKÜ˜+¤s×+Ñ+Ø×FÑFØ¸ð Gð �ð $/Ð Þ˜7Ÿ;™; u×-Ñ-Ü'¬¸G¿K¹KÈÓ<NÑ)OÐ(PÓQˆGØ&Ðà#×:Ñ:Ó<Ðà+/ˆØ×!×!Ü,×;Ñ;Ø!×&Ñ&×,Ñ,Ó.óˆJð —?‘?ØØ$×/¨Ø/×=Ñ=ð #ð ˆDð
 Ÿ<™<Ü"×*Ñ*ØØ&×+Ñ+Ø"×0Ñ0Ø,×7Ñ7Ø+×5Ñ5Øð (ð ˆLð ×/Ñ/°¸Ó?ˆØ—?‘?¨°�?Ð8ˆÜÔ&¨¯©Ó5×B×BÎ'à'*§¡Ø$ØØ"×0Ñ0Øð	 (7ð (ˆKð ×&Ñ&Ó(Ð(à×-Ñ-¨gÓ6ˆØ×(Ñ(¨Ó1ˆà—o‘oØØ ØØ×,Ñ,Øð &ð 
ˆð ×"Ñ"Ó$Ð$r¸   c           
     ó  • U R                  U5      (       a  g U R                  US5      R                  5       nUS:X  a  g [        R                  nU R                  U5      nUb  UnU R                  U5      u  nnnOŒU R                  US5      R                  5       n	U	(       d   U R                  US5      R                  5       n	U	(       d   U R                  US5      R                  5       n	U	(       a  [        R                  U	5      OSnUb  U R                  UUWS9OU R                  XaS9n
UR                  U R                  U R                     UUU R                  U R                   U R"                  U
S	9nUR%                  5       $ )
Nr×  r|  r®  r,  rq  rù   rR  r‡  r=  )rY  r-  rÃ  r   rØ   r
  r&  rý   r(  rŠ  r³  r|  r@  r>  r=  ry  r�  rò   rÚ  )r   rù  r–  rÛ  r¦   rÈ   rÂ  r  rÎ   rÁ   rÃ   Ú
input_items               r¹   ra  ÚHTMLDocumentBackend._emit_inputÁ  s�  € Ø×"Ñ" 9×-Ñ-ØØ×-Ñ-¨i¸Ó@×FÑFÓHˆ
Ø˜Ó!Øä×!Ñ!ˆØ×9Ñ9¸)ÓDˆØÑ%Ø"ˆEð
 ×FÑFÀyÓQñ	ØØÙ#ð ×+Ñ+¨I°wÓ?×EÑEÓGˆDÞØ×/Ñ/°	¸=ÓI×OÑOÓQ�ÞØ×/Ñ/°	¸6ÓB×HÑHÓJ�ÞEIÔ,×;Ñ;¸DÔAÈrˆJð Ñ)ð ×/Ñ/ØØ&Ø.ð 0ñ ð —‘ j�Ð@ð 	ð —\‘\Ø—<‘< §
¡
Ñ+ØØØ×,Ñ,Ø×'Ñ'Ø—n‘nØð "ð 
ˆ
ð ×!Ñ!Ó#Ð#r¸   c                óL   • U R                   R                  XR                  5      $ rZ  )r;  Úcreate_image_refr:  )r   Úsrc_urls     r¹   r/  Ú%HTMLDocumentBackend._create_image_refì  s   € Ø×!Ñ!×2Ñ2°7¿N¹NÓKÐKr¸   c                óL   • U R                   R                  XR                  5      $ rZ  )r;  Úload_image_datar:  )r   r5  s     r¹   Ú_load_image_dataÚ$HTMLDocumentBackend._load_image_dataï  s   € Ø×!Ñ!×1Ñ1°'¿>¹>ÓJÐJr¸   c                óF   ^• SU4S jjmT" U 5      nSR                  U5      $ )a  Concatenate all child strings of a PageElement.

This method is equivalent to `PageElement.get_text()` but also considers
certain tags. When called on a <p> or <li> tags, it returns the text with a
trailing space, otherwise the text is concatenated without separators.
c                ó”  >• / n[        U [        5      (       a$  [        U 5      R                  [        S5      nU/nU$ [        U [
        5      (       av  [        [
        U 5      n/ nU H  nUR                  T" U5      5        M     UR                  UR                  S;   a  SR                  U5      S-   OSR                  U5      5        U$ )z.Recursively extract text from all child nodes.r  >   rJ   r`   ra   r  rù   rú   )rN  rE   r¿   r  r  rG   r   rW  r  rq  r   )rû  r�  rÁ   r½   r¡  rï  Ú_extract_text_recursivelys         €r¹   rG  Ú?HTMLDocumentBackend.get_text.<locals>._extract_text_recursivelyû  s±   ø€ à "ˆFä˜$¤×0Ñ0Ü˜4“y×(Ñ(¬°tÓ<�Ø˜�ð ˆMô ˜D¤#×&Ñ&Üœ3 “o�Ø#%�Û �EØ—L‘LÑ!:¸5Ó!AÖBñ !à—‘à—x‘xÐ#:Ó:ð —G‘G˜E“N SÒ(àŸ™ ›ôð ˆMr¸   rù   ©rû  rF   r&  r¢  r£  )rû  r¡  rG  s     @r¹   r‰  ÚHTMLDocumentBackend.get_textò  s"   ø€ ÷	ñ( 5°TÓ:ˆà�w‰w�u‹~Ðr¸   c                óÎ   • 0 SS_SS_SS_SS_SS_S	S_S
S_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SSS.EnUR                  5        H  u  p#U R                  X#5      n M     U $ )a_  Replace typical Unicode characters in HTML for text processing.

Several Unicode characters (e.g., non-printable or formatting) are typically
found in HTML but are worth replacing to sanitize text and ensure consistency
in text processing tasks.

Args:
    text: The original text.

Returns:
    The sanitized text without typical Unicode characters.
ô   Â rú   u   â€‹rù   u   â€Œu   â€�u   â€�Ú-u   â€‘u   â€’u   â€“u   â€”u   â€•u   â€˜rû   u   â€™u   â€œÚ"u   â€�u   â€¦z...ô   Â­u   ï»¿)u   â€¯u   â� )rC  r  )rÁ   ÚreplacementsrU  r¥  s       r¹   rŠ  Ú"HTMLDocumentBackend._clean_unicode  s
  € ð
Ø�cð
à�bð
ð �bð
ð �bð	
ð
 �cð
ð �cð
ð �cð
ð �cð
ð �cð
ð �cð
ð �cð
ð �cð
ð �cð
ð �cð
ð �eð
ð  �bð!
ð" �bð#
ð$ Øò'
ˆð* '×,Ñ,Ö.‰JˆCØ—<‘< Ó+ŠDñ /ð ˆr¸   c                ó¨   • [        U R                  SS5      5      [        U R                  SS5      5      4nSS jnU" US   5      U" US   5      4nU$ )zßExtract colspan and rowspan values from a table cell tag.

This function retrieves the 'colspan' and 'rowspan' attributes from a given
table cell tag.
If the attribute does not exist or it is not numeric, it defaults to 1.
Úcolspanrq  Úrowspanc                ó°   • U (       aO  U S   R                  5       (       a7  [        R                  " SU 5      nU(       a  [        UR	                  5       5      $ g)Nr   z\d+r  )ré  r  rf  r­   rÎ  )r   r=  s     r¹   Ú_extract_numÚ9HTMLDocumentBackend._get_cell_spans.<locals>._extract_numH  s<   € Þ�Q�q‘T—^‘^×%Ñ%ÜŸ	š	 &¨!Ó,�ÞÜ˜uŸ{™{›}Ó-Ð-Ør¸   r   r  )r   r¿   r&  r­   )r¿   r  )r  Ú	raw_spansrV  Ú	int_spanss       r¹   r  Ú#HTMLDocumentBackend._get_cell_spans;  s_   € ô �—‘˜ CÓ(Ó)Ü�—‘˜ CÓ(Ó)ð&
ˆ	ô
	ñ ˜ 1™Ó&Ù˜ 1™Ó&ð&
ˆ	ð
 Ðr¸   c                ón   • U R                  U5      nU(       d  U$ [        U[        5      (       a  US   $ U$ )z4Get attribute value as string, handling list values.r   )r  rN  rÑ   )r½   r*  Údefaultr®  s       r¹   r-  Ú'HTMLDocumentBackend._get_attr_as_stringV  s4   € ð —‘˜“ˆÞØˆNä% e¬T×2Ñ2ˆu�Q‰xÐ=¸Ð=r¸   )r@  rJ  rL  r;  rB  rM  rD  rC  rF  rG  rE  rH  rI  rK  r:  ry  r?  rA  rò   r=  r<  r>  r8  r7  rZ  )rS  r<   r8  zUnion[BytesIO, Path]rT  zOptional[HTMLBackendOptions])r&  rA   )r&  zset[InputFormat])r&  r   )r&  útuple[int, int])r®  r¿   r&  r¿   )r&  zOptional[Path])rº  r¿   r&  rA   )rº  r¿   r&  rô   )r&  r¿   )rÖ  r¿   r×  rô   r&  r¿   )ru  úImage.Imager¥  r­   r¦  r­   r&  r_  r  )
r  rˆ  r  r­   r  r­   rþ  rA   r&  zlist[Image.Image])r  rˆ  r  r­   rþ  rA   r&  zdict[str, _RenderedBBox])r½   rÜ   r&  rô   )r½   rÜ   r&  úOptional[_RenderedBBox])r]  r`  r&  rA   )r½   rG   r&  rA   )NN)rÁ   r¿   r½   rÜ   rõ   rô   r&  rÂ   )rÁ   r¿   r½   rÜ   rŠ  r¢  r&  rÂ   )rõ   r¿   r&  r`  )r“  r¿   r”  r¿   r&  rA   )r¡  r÷   r&  z%list[tuple[AnnotatedText, list[str]]])rÁ   r¿   r¯  rG   r°  rÍ   r&  rÂ   )r7  rD   r&  r  )rÔ  r¿   r&  r¿   )
rÛ  r¿   r–  r   rÜ  úlist[RefItem]rÝ  r,   r&  r'   )
rÜ  ra  rÛ  r¿   r–  r   rÝ  r,   r&  z!tuple[bool, Union[RefItem, None]])rþ  rG   r&  rA   )r"  rG   r–  r   rÝ  r,   r	  r­   r
  r­   r&  zOptional[TableData])r"  rG   r–  r   r&  ra  rI  )FFF)rû  rF   r&  r÷   )r½   rG   )ry  r¢  )rõ   r¿   r&  rô   )rA  r÷   r&  rA   )F)rA  r÷   r–  r   r:  rA   r&  zIterator[RefItem | None])r½   rG   r–  r   )r®  r   )r»  zRefItem | Noner&  zIterator[None])r½   rG   r–  r   r&  ra  )rË  rG   rÌ  rG   r&  rA   )r`   rG   r–  r   rÒ  rÐ   r&  r  )Frù   N)r½   rG   r–  r   r¹  r'   rØ  rA   râ   r¿   rÚ  zOptional[Formatting]r&  úOptional[RefItem])r½   rG   r–  r   r&  r'   )r½   rG   r&  r^  )r½   rG   r&  rÜ   )r½   rG   r9  rG   r&  rA   )rF  rô   r&  rA   )r½   rG   r–  r   r&  rb  )r½   rG   r&  r¿   )rÝ   rG   rR  rG   r&  rA   )r^  rG   r_  rG   r&  r­   )rÝ   rÜ   ry  zlist[tuple[int, Tag]]rz  ú$list[tuple[Optional[int], int, Tag]]r&  rc  )gÍÌÌÌÌÌì?)rŠ  r   r‹  úlist[BoundingBox]rŒ  r,  r&  rA   )rÝ   rG   rR  rG   r‹  rd  r&  rA   )r½   rG   rŸ  rê   r&  r¿   )rÁ   r¿   r&  ztuple[str, str])rR  rG   r&  rÅ   )r½   rG   r&  rê   )r½   rG   r&  z
str | None)r½   rG   rð  rË   r&  r¿   )rÁ   r¿   r&  r¿   )r½   rG   r&  rÇ   )r¯  rG   r&  ztuple[str, set[int], list[Tag]])rR  rG   r&  r¿   )r;  rG   r&  r¿   )rä   rã   r&  rã   )r¯  rG   r–  r   r&  rb  )rX  rê   )r]  rË   )rl  zdict[str, _ExtractedFormField])r½   rG   r&  zOptional[_ExtractedFormField])r½   rG   r&  rè   )rÝ   rG   r&  rA   )r  )r½   rG   r’  r­   r&  rÍ   )r   rÚ   r–  r   r¹  z#Optional[Union[DocItem, GroupItem]]r&  ra  )r9  rG   r&  zOptional[_ExtractedFormRegion])r9  rG   r&  zOptional[GraphData])rÆ  rG   r–  r   r&  rb  )rù  rG   r–  r   r&  rb  )r?  r¿   r&  zOptional[ImageRef])r5  r¿   r&  zOptional[bytes])rû  rF   r&  r¿   )r  rG   r&  r^  )rù   )r½   rG   r*  r¿   r\  r¿   r&  r¿   )†r²   r³   r´   rµ   r7   r6  r\  Úclassmethodrb  rf  rj  rž  r§  r¯  r³  r½  rÅ  rÈ  rÍ  rÙ  rá  rƒ  r  r  rP  ÚstaticmethodrT  rW  rZ  r^  rb  rh  rn  rv  r|  r„  r�  r�  r�  r¬  r³  r�  rÕ  râ  ræ  r  r6  r•  r|  Úpropertyr�  rý  r   rc  rb  rš  r¡  r>  rª  r¯  r³  r  r¼  rÈ  rÍ  rÑ  rÕ  rá  rþ  r  re  r[  r6  r:  r>  r]  r^  rK  rU  rh  r‚  r†  rŽ  r™  r¤  r§  rC  r½  r  r  rÒ  rf  rÜ  rç  ró  rŠ  rò  rõ  r‰  r‹  rþ  r  r
  r&  r1  r8  r<  r÷  rO  r_  rY  r^  rY  rm  rZ  rV  rd  r�  r”  r¦  rX  r  r  r\  r`  ra  r/  rC  r‰  rŠ  r  r-  r·   Ú__classcell__)rW  s   @r¹   r(  r(  ¦  s
  ø† Øð
 15ð	=àð=ð -ð=ð .÷	=ó ð=ð~ ó%ó ð%ð Øóó ó ðð ñ#ó ð#ð
 Øó"ó ó ð"ð óJó ðJôXô.ô
ô	EôDô:KôFô

ôôKðZ$ð ð$ð ð	$ð
 ð$ð ð$ð 
ô$ðL%Øð%Ø.1ð%Ø>Bð%à	!ô%ôNð óó ðô5ð:Ø ð:à	 ô:ð óDó ðDô=ð óó ðô&ô:ð& "Ø'+ð	
àð
ð ð
ð %ð	
ð
 
"õ
ð4 "Ø'+ð	-
àð-
ð ð-
ð %ð	-
ð
 
"õ-
ð^
Øð
Ø+ð
Ø=Fð
à	!ô
ðBØ ðà	 ôð4Ø"%ð4Ø<?ð4à	ô4ð.>Ø&ð>à	.ô>ð@
Øð
Ø'*ð
Ø8Að
à	!ô
ð: óJ&ó ðJ&ôXMð ð!Øð!àð!ð %ð!ð !ð	!ð
 
ó!ó ð!ð* ð2Ø$ð2àð2ð ð2ð !ð	2ð
 
+ó2ó ð2ô"=ð~DàðDð ðDð !ð	Dð
 ðDð ðDð 
ôDôLYðv ó	ó ð	ð ñ$ó ð$ð Ø$Øðfàðfð 
õfðP ó3ó ð3ð, óBó ðBô	 ðØ#4ðà	ôð: ð
 ð	%à.ð%ð ð%ð ð	%ð
 
"ô%ó ð%ðN óó ðð. óó ðð ó/ó ð/ð4 ñ,ó ð,ð óó ðô*GôRð"&Uð ð&Uð ð	&Uð
  ð&Uð 
ô&UðPMàðMð ðMð  ð	Mð
 
ôMð* !ØØ15ðqàðqð ðqð ð	qð
 ðqð ðqð /ðqð 
õqôfr$ðh ó"ó ð"ô0Tðl ó5ó ð5ôôFð ó
ó ð
ôEð
#Øð#Ø,ð#à	ô#ô.ð ó	ó ð	ð óFó ðFð2B àðB ð .ðB ð <ð	B ð
 
.ôB ðH óEó ðEð àUXðØðØ/@ðØMRðà	ôó ðð#Øð#Ø'*ð#Ø:Kð#à	ô#ðJ ó&ó ð&ð$ óó ðð ó<ó ð<ð ó%ó ð%ðN óKó ðKð óó ðð" óQó ðQôð ó3ó ð3ð óó ðð0 ó
ó ð
ð
 ó>ó ð>ð
 ð&Øð&Ø$,ð&à	ó&ó ð&ð& óó ðô9ôð ó;ó ð;ð ó4ó ð4ð, ó
ó ð
ðr=Øðr=à	(ôr=ðh ó!ó ð!ôFð@ ó8ó ð8ð ó
ó ð
ð
BØ/ðBà	"ôBðH'Øð'Ø&5ð'à	ô'ð: ó1ó ð1ð ó5ó ð5ôRð" ð4Ø >ó4ó ð4ôô"ô ô:ö:ô$-ð^Oà"ðOð ðOð 4ð	Oð
 
ôOôboVôb)3ôVgôRL%ô\)$ôVLôKð óó ðð@ ó%ó ð%ðN óó ðð4 õ>ó ö>r¸   r(  )‡Ú
__future__r   Úloggingr*  r  rñ  Ú
contextlibr   r¶  r   Údataclassesr   r   rÏ   Úior   Úpathlibr	   Útypingr
   r   r   r   r   r   r   Úurllib.parser   Úurllib.requestr   Údocling_core.types.docr   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   Údocling_core.types.doc.documentr.   r/   r0   r1   ÚPILr2   Úpydanticr3   r4   r5   Útyping_extensionsr6   r7   Ú docling.backend.abstract_backendr8   Ú+docling.backend.utils.image_resource_loaderr9   Ú!docling.datamodel.backend_optionsr:   Údocling.datamodel.base_modelsr;   Údocling.datamodel.documentr<   Údocling.exceptionsr=   Údocling.utils.code_languager>   r?   r@   rB   r¶   rC   Úbs4rD   rE   rF   rG   Úbs4.elementrH   r3  rV  r4  Ú	getLoggerr²   rþ   r  ÚDEFAULT_IMAGE_WIDTHÚDEFAULT_IMAGE_HEIGHTr^   rÆ  rt   ÚSUBÚSUPERr…   r†   rˆ   rŠ   Úcompiler‹   rŒ   r�   r‘   r–   r›   r¨   r«   r»   rÓ   rÖ   rÚ   rç   rí   rñ   rÑ   r÷   r(  )Úks   0r¹   Ú<module>r‡     s-  ðö #ã Û Û 	Û Ý %Ý ß ;Ý Ý ß G× GÑ GÝ !Ý '÷÷ ÷ ÷ ÷ ÷ ÷ ñ ÷: WÓ VÝ ß 7Ñ 7ß ,õõ LÝ @Ý 5Ý 4Ý 0÷ñ ð €�Ó Ø(,Ð Ð%Ó ,ðßDÓDÝ.à€Nð
Að ð
 ×Ò˜Ó"€ð €àÐ ØÐ ò€ˆUó ò0"€òH /€ˆuÓ .ð �$ˆØ�tˆnØ
�DÐ	Ø�TÐ
Ø�dÐð ˜4Ð	 Ø˜TÐ"Ø
�tÐ	Ø˜ÐØ�f—j‘jÐ!Ø�f—l‘lÐ#ññ $Ó$’m�ˆ"‚u‘mÑ$ð€�ó ð"  1Ð �uÓ 0Ø,Ð �uÓ ,Ø)Ð �EÓ )ØŸšÐ$DÓE€�Ó EØŸJšJÐ'NÓOÐ �EÓ OØŸ:š:ØDóÐ �5ó ò
 #QÐ ˜%Ó PÚ8Ð �eÓ 8ò&Ð ˜Uó òÐ �5ó ñ8 �$Ñ÷ð ó ðð
 ÷	Kð 	Kó ð	Kð ÷#ð #ó ð#ð ÷,ð ,ó ð,ð ÷Rð Ró ðRð ÷ð ó ðô
+ˆyô +ô
(�Iô (ôE˜ô EôPwB>Ð4õ wB>øðy
 ó ØÖûðüò| %s   Ã1J Å0J$ÊJ!ÊJÊJ!