Ë
    ©2ÚiÅ  ã                   ó–  — d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	m
Z
 dd	lmZmZ dd
lmZ ddlmZmZ ddlmZ ddlmZ ddlmZ ddlmZmZmZ ddlmZmZm Z  ddl!m"Z" ddl#m$Z$m%Z% ddl&m'Z'm(Z(m)Z)m*Z*m+Z+ d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1d„ Z2d„ Z3ed„ «       Z4d„ Z5d„ Z6d„ Z7d „ Z8d!„ Z9d-d"„Z:d#„ Z;d$„ Z<d%„ Z=d&„ Z>d'„ Z?d(„ Z@d)„ ZAd*„ ZBd+„ ZCd,„ ZDy).zLayout for inline-level boxes.é    N)Úinfé   )ÚPending)Ú	INHERITED)ÚboxesÚbuildé   )ÚAbsolutePlaceholderÚabsolute_layout)Úflex_layout)Úavoid_collisionsÚfloat_layout)Úgrid_layout)Úhandle_leader)Úhandle_min_max_width)Ú
percentageÚresolve_one_percentageÚresolve_percentages)Úinline_min_content_widthÚshrink_to_fitÚtrailing_whitespace_size)Úinline_replaced_box_layout)Úfind_in_flow_baselineÚtable_wrapper_width)Úcan_break_textÚcharacter_ratioÚcreate_layoutÚsplit_first_lineÚstrutc
              #   ó  K  — t        ||«       |€t        |d|j                  «       nd|_        	 t	        | |||||||||	«
      \  }
}d}	|
r&t        | |
|«       |
j                  |
j                  z   }|
€y|
|f–— |€y|}d|_        d}ŒY­w)z�Return an iterator of ``(line, resume_at)``.

    ``line`` is a laid-out LineBox with as much content as possible that
    fits in the available width.

    NÚtext_indentr   )r   r   Úwidthr!   Úget_next_lineboxr   Ú
position_yÚheight)ÚcontextÚboxr$   Úbottom_spaceÚ
skip_stackÚcontaining_blockÚabsolute_boxesÚfixed_boxesÚfirst_letter_styleÚfirst_line_styleÚlineÚ	resume_ats               úO/var/www/html/acx/venv/lib/python3.12/site-packages/weasyprint/layout/inline.pyÚiter_line_boxesr2      sº   è ø€ ô ˜Ð-Ô.ØÐä˜s MÐ3C×3IÑ3IÕJàˆŒØ
Ü*Ø�S˜* l°JÐ@PØ˜KÐ);Ð=MóO‰ˆˆið  ÐÙÜ˜' 4Ð)9Ô:ØŸ™¨4¯;©;Ñ6ˆJØˆ<ØØ�IˆoÒØÐØØˆ
ØˆŒØ!Ðð ùs   ‚BB
c
                 ój  — t        ||«      }|dk(  ryt        |||«      }||_        | j                  r2t	        | ||d¬«      |_        t        |j                  «      \  |_        }
ndx|_        |_        t        | ||d¬«      \  }}}|j                  }| j                  j                  «       }	 |x}|_        |x}|_        |j
                  }||z   }||j                  z  }g }g }g }g }g }t        | |||||||||||||	«      \  }}}}}}|j
                  |j                  c|_        |_        t        |«      r|s	d|_        �nÃt        | |«       t        | ||d¬«      \  }}
}t!        | |||du xs |¬	«      } |j                  d
   dk(  r| dz  } | |j
                  z  } t#        |«      \  }!}"|"€J ‚|!€J ‚|" |_        |"|_        |!|"z
  |_        ||"z
  }#d|_        d|_        |j+                  | |#«       ||_        |j                  |k  rnþ|j                  }| j                  }$|| _        t        | ||d¬«      \  }}}|	r‰|j-                  |j.                  «      }%|%xj0                  dz  c_        |%j                  j                  «       |%_        |	j3                  «       D ]  \  }&}'|'|%j                  |&<   Œ |%g|_        t5        |%«       |j                  d
   dk(  r
||f||fk(  }(n||j
                  z   |f||z   |fk(  }(|(r|$| _        n�ŒW|j7                  |«       |j7                  |«       |D ]€  })d|)j                  j8                  d   v r |)j+                  d||)j                  z
  «       Œ>|)j+                  |j                  |)j                  z
  ||j                  z   |)j                  z
  «       Œ‚ g }*|j                  |j                  z   }+|D ]F  },|+|,_        t;        | |,||||d¬«      \  }-}.|*j=                  |-«       |.sŒ3| j?                  |-|,||.«       ŒH |*r|xj.                  tA        |*«      z  c_        ||fS )zöReturn next line from given linebox.

    Return ``(line, resume_at)``, where ``line`` is a new linebox copied from the
    original one, with replaced children.

    This function takes care of excluded floating shapes to avoid collisions.

    Úcontinue©NNT)r)   Ú
first_liner   F)ÚouterN©ÚlastÚ	directionÚrtléÿÿÿÿz::first-lineÚltrÚinlineÚdisplay©r)   )!Úskip_first_whitespaceÚfirst_letter_to_boxr$   Úexcluded_shapesr   r"   r   Ústyler%   r   ÚcopyÚ
position_xr!   Úsplit_inline_boxÚis_phantom_lineboxÚremove_last_whitespaceÚ
text_alignÚline_box_verticalityÚbaselineÚ
margin_topÚmargin_bottomÚ	translateÚcopy_with_childrenÚchildrenÚelement_tagÚitemsÚ_adjust_line_heightÚextendÚ	specifiedr   ÚappendÚadd_broken_out_of_flowÚtuple)/r&   Úlineboxr$   r(   r)   r*   r+   r,   r-   r.   Ú_rF   Úavailable_widthÚcandidate_heightrC   Úoriginal_position_xÚoriginal_position_yÚoriginal_widthÚmax_xÚline_placeholdersÚline_absolutesÚ
line_fixedÚwaiting_floatsÚline_childrenr/   r0   Úpreserved_line_breakÚfirst_letterÚlast_letterÚfloat_widthÚnew_position_xÚnew_available_widthÚoffset_xÚbottomÚtopÚoffset_yÚnew_excluded_shapesÚfirst_line_boxÚkeyÚvalueÚ	conditionÚplaceholderÚfloat_childrenÚwaiting_floats_yÚwaiting_floatÚnew_waiting_floatÚwaiting_float_resume_ats/                                                  r1   r#   r#   9   sÓ  € ô ' w°
Ó;€JØ�ZÒØä$ W¨jÐ:LÓM€Jà#€GÔà×Òä0Ø�W¨ÀôFˆŒä! '§-¡-Ó0ÑˆŒ™ð *+Ð*ˆŒ˜œÜ.>Ø�Ð*°%ô/9Ñ+€J�
˜Oð —~‘~Ðà×-Ñ-×2Ñ2Ó4€Oà
Ø3=Ð=Ð˜gÔ0Ø3=Ð=Ð˜gÔ0Ø Ÿ™ˆØ˜_Ñ,ˆØ�g×)Ñ)Ñ)ˆ
àÐØˆØˆ
ØˆØˆô &6Ø�g˜z¨5°,À
Ø˜~¨zÐ;LØ˜]Ð,>Ð@Pó&Rñ	#ˆˆyÐ.°Ø	�kð )-¯
©
°D·K±KÐ%ˆŒ�w”~ä˜dÔ#Ñ,@ØˆDŒKÙä˜w¨Ô-ä1AØ�WÐ.°eô2=Ñ.ˆ˜Ð.äØ�TÐ.Ø˜tÐ#Ò;Ð';ô>ˆð ×!Ñ! +Ñ.°%Ò7Ø˜‰NˆHØ˜Ÿ
™
Ñ"ˆHä*¨4Ó0‰ˆ�ØˆÐˆØÐ!Ð!Ð!Ø˜ˆŒØˆŒØ˜s‘lˆŒØ Ñ#ˆØˆŒØˆÔà�‰�x Ô*ð %ˆŒà�;‰;Ð*Ò*ØØŸ;™;Ðà%×5Ñ5ÐØ"1ˆÔÜ2BØ�TÐ+°5ô3:Ñ/ˆ
�J ñ Ø!×4Ñ4°T·]±]ÓCˆNØ×&Ò&¨.Ñ8Õ&Ø#1×#7Ñ#7×#<Ñ#<Ó#>ˆNÔ Ø.×4Ñ4Ó6ò 2‘
��UØ,1�×$Ñ$ SÒ)ð2à+Ð,ˆDŒMÜ Ô/à×!Ñ! +Ñ.°%Ò7Ø# ZÐ0Ø#Ð%8ð5:ñ :‰Ið $ d§j¡jÑ0°*Ð=Ø# nÑ4Ð6IðBKñ KˆIáØ&9ˆGÔ#Øñ[ ð^ ×Ñ˜.Ô)Ø×Ñ�zÔ"à(ò CˆØ�{×(Ñ(×2Ñ2°9Ñ=Ñ=à×!Ñ! ! Z°+×2HÑ2HÑ%HÕIð ×!Ñ!Ø—‘ +×"8Ñ"8Ñ8Ø˜TŸ[™[Ñ(¨;×+AÑ+AÑAõCðCð €NØ—‘¨¯©Ñ4ÐØ'ò 	)ˆØ#3ˆÔ Ü5AØ�]Ð$4°nØ˜°$ô68Ñ2ÐÐ2ð 	×ÑÐ/Ô0Ú"Ø×*Ñ*Ø! =Ð2BØ'õ)ð	)ñ Ø�Šœ˜~Ó.Ñ.�à�ˆ?Ðó    c                 óº  — |€d}d}n|j                  «       \  \  }}t        | t        j                  «      r~|�J ‚| j                  d   }| j
                  j                  «       }|t        |«      k(  ry|dv r6||d }|r/|j                  d«      r|dz  }|dd }|r|j                  d«      rŒ|r|diS dS t        | t        j                  t        j                  f«      rq|dk(  r| j                  syt        | j                  |   |«      }|dk(  r7|dz  }|t        | j                  «      k\  ryt        | j                  |   d«      }|s|r||iS dS |�
J d| › �«       ‚y)	zŠReturn ``skip_stack`` to start just after removable leading spaces.

    See https://www.w3.org/TR/CSS21/text.html#white-space-model

    Nr   Úwhite_spacer4   ©ÚnormalÚnowrapúpre-lineó    r	   zunexpected skip inside )rS   Ú
isinstancer   ÚTextBoxrD   ÚtextÚencodeÚlenÚ
startswithÚLineBoxÚ	InlineBoxrQ   rA   )r'   r)   ÚindexÚnext_skip_stackr~   r†   Úresults          r1   rA   rA   Ê   so  € ð ÐØˆØ‰à$.×$4Ñ$4Ó$6Ñ!Ñ ˆ�ä�#”u—}‘}Ô%ØÐ&Ð&Ð&Ø—i‘i Ñ.ˆØ�x‰x�‰Ó ˆØ”C˜“IÒàØÐ:Ñ:Ø˜˜�<ˆDÙ˜4Ÿ?™?¨4Ô0Ø˜‘
�Ø˜A˜B�x�ñ ˜4Ÿ?™?¨4Õ0ñ !&��tˆ}Ð/¨4Ð/ä�#œŸ™¤u§¡Ð7Ô8Ø�AŠ:˜cŸlšlØÜ& s§|¡|°EÑ':¸OÓLˆØ�ZÒØ�Q‰JˆEØœ˜CŸL™LÓ)Ò)Ø!Ü*¨3¯<©<¸Ñ+>ÀÓEˆFÙ#(©F��vˆÐ=¸Ð=àÐÐ>Ð!8¸¸Ð>Ó>ÐØr|   c                 óf  — g }|}t        |t        j                  t        j                  f«      rX|j	                  |«       |j
                  sy|j
                  d   }t        |t        j                  t        j                  f«      rŒXt        |t        j                  «      r|j                  d   dv sy|j                  j                  d«      }|rnt        |«      t        |j                  «      k(  ry||_        t        | |dd«      \  }}}|€J ‚|�J ‚|j                  |j                  z
  }|j                  |_        n|j                  }d|_        d|_        |j                  j                  dz  r%|j
                  D ]  }	|	j                  | d	¬
«       Œ |D ]  }
|
xj                  |z  c_        Œ y)zšRemove in place space characters at the end of a line.

    This also reduces the width and position of the inline parents of the
    modified text.

    Nr<   r~   r   ú r   Ú r   T©ÚdxÚignore_floats)r„   r   rŠ   r‹   rW   rQ   r…   rD   r†   Úrstriprˆ   Úsplit_text_boxr"   Úpango_layoutÚfirst_line_directionrO   )r&   r/   Ú	ancestorsr'   Únew_textÚnew_boxÚresumer[   Úspace_widthÚchildÚancestors              r1   rI   rI   ó   sy  € ð €IØ
€CÜ
�Sœ5Ÿ=™=¬%¯/©/Ð:Ô
;Ø×Ñ˜ÔØ�|Š|ØØ�l‰l˜2Ñˆô	 �Sœ5Ÿ=™=¬%¯/©/Ð:Õ
;ô
 �sœEŸM™MÔ*Ø�I‰I�mÑ$Ð(HÑHØØ�x‰x�‰˜sÓ#€HÙÜˆx‹=œC §¡›MÒ)ØØˆŒÜ+¨G°S¸$ÀÓBÑˆ�˜ØÐ"Ð"Ð"Øˆ~Ðˆ~Ø—i‘i '§-¡-Ñ/ˆØ—M‘Mˆ�	à—i‘iˆØˆŒ	ØˆŒð ×Ñ×,Ñ,¨qÒ0Ø—]‘]ò 	AˆEØ�O‰O ˜|¸4ˆOÕ@ð	Að ò &ˆØ�Š˜+Ñ%Žñ&r|   c                 ó–  — |�rE| j                   �r8d|d<   d}| j                   d   }t        |t        j                  «      �r¿| j                  j                  «       }|j                  «       D ]
  \  }}|||<   Œ |j                  j                  d«      rJt        j                  | j                  › d�|| j                  |g«      }|g| j                   dd ¢­| _         |S |j                  �rd}	|r.|j                  «       \  }
|
r|
\  }|j                  |d |_        d}|j                  rS|j                  d   }t        j                  |«      }|d	vr|	rn(d
}	||z  }|j                  dd |_        |j                  rŒS|j                  d«      �rq|d   dk(  r|t        j                  | j                  › d�|| j                  g «      }t        j                  | j                  › d�|| j                  |«      }|f|_         |g| j                   ¢­| _         n²t        j                   | j                  › d�|| j                  g «      }t        j"                  | j                  › d�|| j                  g «      }|f|_         t        j                  | j                  › d�|| j                  |«      }|f|_         |g| j                   ¢­| _         t%        j&                  |«       |r$
r"|\  }|
j                  «       \  \  }}||dz   |ii}|S t        |t        j(                  «      r.|r|j                  «       \  }
nd}
t+        ||
|«      }
|r|\  }||
i}|S )z-Create a box for the ::first-letter selector.ÚstaticÚpositionr‘   r   z::first-letterr	   NF)ÚPsÚPeÚPiÚPfÚPoTú
ÚfloatÚnone)rQ   r„   r   r…   rD   rE   rS   rR   Úendswithr‹   Úelementr†   ÚvaluesÚunicodedataÚcategoryÚlstripÚBlockBoxrŠ   r   Úprocess_text_transformÚ	ParentBoxrB   )r'   r)   r-   rh   rž   Úletter_stylers   rt   Ú
letter_boxÚcharacter_foundÚchild_skip_stackrŒ   Únext_letterr¯   Útext_boxÚline_boxÚchild_indexÚgrandchild_skip_stacks                     r1   rB   rB   &  sP  € â˜cŸl›lð *2Ð˜:Ñ&àˆØ—‘˜Q‘ˆÜ�eœUŸ]™]Õ+ØŸ9™9Ÿ>™>Ó+ˆLØ0×6Ñ6Ó8ò *‘
��UØ$)�˜SÒ!ð*à× Ñ ×)Ñ)Ð*:Ô;Ü"Ÿ_™_Ø—‘Ð' ~Ð6¸Ø—K‘K % ó*�
ð ",Ð ?¨c¯l©l¸1¸2Ð.>Ñ ?�”ðv Ððu —“Ø"'�ÙØ(2×(9Ñ(9Ó(;Ñ%Ð$Ù'Ø!1™˜Ø%*§Z¡Z°°Ð%7˜œ
Ø%)˜
Ø—j’jØ"'§*¡*¨Q¡-�KÜ*×3Ñ3°KÓ@�HØÐ'EÑEÙ*Ø!Ø*.˜Ø  KÑ/�LØ!&§¡¨A¨B �E”Jð —j“jð  ×&Ñ& tÕ,ð $ GÑ,°Ò6Ü%*§_¡_Ø"Ÿ™Ð/¨~Ð>Ø(¨#¯+©+°ró&;˜
ô $)§=¡=Ø"Ÿ™Ð/¨~Ð>ÀØŸK™K¨ó$7˜ð 08¨k˜
Ô+Ø(2Ð'B°S·\±\Ñ'B˜�ä%*§^¡^Ø"Ÿ™Ð/¨~Ð>Ø(¨#¯+©+°ró&;˜
ô $)§=¡=Ø"Ÿ™Ð/¨~Ð>ÀØŸK™K¨ó$-˜ð 08¨k˜
Ô+Ü#(§=¡=Ø"Ÿ™Ð/¨~Ð>ÀØŸK™K¨ó$7˜ð .6¨K˜Ô)Ø(2Ð'B°S·\±\Ñ'B˜œÜ×0Ñ0°Ô:Ù!Ñ&6Ø!+™˜Ø@P×@VÑ@VÓ@XÑ=Ñ<˜Ð&;Ø&+¨k¸A©oÐ?TÐ-UÐ%V˜
ð Ðô ˜œuŸ™Ô/ÙØ$.×$5Ñ$5Ó$7Ñ!Ñ à#'Ð Ü2ØÐ'Ð);ó =ÐáØ#‘�Ø#Ð%5Ð6�
ØÐr|   c           	      ó(  — t        |t        j                  «      r3|j                  «       }t	        ||«       |j                  «       |_        |S t        |t        j                  «      rŠ|j                  rI|j                  |j                  f}t        | ||«       |j                  |j                  |j                  }
}	}t        | ||||||«      }|j                  r	
c|_	        |_        |_        |S t        dt!        |«      j"                  › d�«      ‚)z7Compute the width and the height of the atomic ``box``.úLayout for ú not handled yet)r„   r   ÚReplacedBoxrE   r   Úmargin_heightrL   ÚInlineBlockBoxÚis_table_wrapperr"   r%   r   Ú	min_widthÚ	max_widthÚinline_block_box_layoutÚ	TypeErrorÚtypeÚ__name__)r&   r'   rF   r)   r*   r+   r,   Úcontaining_sizer"   rÄ   rÅ   s              r1   Ú
atomic_boxrË   v  sý   € ô �#”u×(Ñ(Ô)Ø�h‰h‹jˆÜ" 3Ð(8Ô9Ø×(Ñ(Ó*ˆŒð €Jô 
�Cœ×-Ñ-Ô	.Ø×ÒØ/×5Ñ5Ð7G×7NÑ7NÐOˆOÜ ¨¨oÔ>Ø*-¯)©)°S·]±]ÀCÇMÁM˜i�9ˆEÜ%Ø�S˜* jÐ2BØ˜Kó)ˆð ×ÒØ6;¸YÈ	Ð3ˆCŒI�s”} c¤mð €Jô ˜+¤d¨3£i×&8Ñ&8Ð%9Ð9IÐJÓKÐKr|   c                 óp  — ddl m} t        ||«       |j                  dk(  rd|_        |j                  dk(  rd|_        |j
                  dk(  rd|_        |j                  dk(  rd|_        t        || |«       ||_        d|_	         || |t         |d||d d d dd ¬«      \  }}}}}}t        |«      |_        |S )Nr	   )Úblock_container_layoutÚautor   TF)
r(   r)   Úpage_is_emptyr+   r,   Úadjoining_marginsr-   r.   ÚdiscardÚ	max_lines)ÚblockrÍ   r   Úmargin_leftÚmargin_rightrM   rN   Úinline_block_widthrF   r$   r   Úinline_block_baselinerL   )	r&   r'   rF   r)   r*   r+   r,   rÍ   r[   s	            r1   rÆ   rÆ   Œ  sÉ   € å-ä˜Ð-Ô.ð ‡�˜&Ò ØˆŒØ
×Ñ˜6Ò!ØˆÔà
‡~�~˜ÒØˆŒØ
×Ñ˜FÒ"ØˆÔä�s˜GÐ%5Ô6à€C„NØ€C„NÙ/Ø�¤C 4°JÈdØ%°;ÐRVØ°$ÀÐQUôWÑ€CˆˆAˆq�!�Qô )¨Ó-€C„LØ€Jr|   c                 ó”  — | j                   r}| j                  D ]m  }t        |t        j                  «      sŒ|j                  sŒ+|j                  d   j                  sŒE|j                  d   j                  d   }|j
                  c S  n#| j                  d   dk(  rt        | d¬«      }|r|S | j                  | j                  «       z   S )z¼Return the y position of the baseline for an inline block.

    Position is taken from the top of its margin box.

    https://www.w3.org/TR/CSS21/visudet.html#propdef-vertical-align

    r   ÚoverflowÚvisibleTr8   )
rÃ   rQ   r„   r   ÚTableBoxrL   rD   r   r$   rÁ   )r'   rž   Ú	first_rowrŽ   s       r1   r×   r×   ©  sª   € ð ×Òà—\‘\ò 	.ˆEÜ˜%¤§¡Õ0Ø—>“> e§n¡n°QÑ&7×&@Ó&@Ø %§¡¨qÑ 1× :Ñ :¸1Ñ =�IØ$×-Ñ-Ò-ñ		.ð
 
�‰�:Ñ	 )Ò	+Ü& s°Ô6ˆÙØˆMØ�>‰>˜C×-Ñ-Ó/Ñ/Ð/r|   c                 óü   — |j                   | j                  | j                  z   | j                  z   | j                  z   | j
                  z   | j                  z   z
  }| j                   dk(  rt        || |«      | _         y y )NrÎ   )r"   rÔ   rÕ   Úborder_left_widthÚborder_right_widthÚpadding_leftÚpadding_rightr   )r'   r&   r*   Úavailable_content_widths       r1   rÖ   rÖ   ¿  s�   € à.×4Ñ4Ø�‰˜#×*Ñ*Ñ*Ø×Ññ	Ø #× 6Ñ 6ñ	7à×Ññ	à×,Ñ,ñ	-ñ.Ðð ‡y�y�FÒÜ! '¨3Ð0GÓHˆ�	ð r|   c                 ó2  — |rt|j                  «       }|j                  j                  «       |_        |j                  «       D ]  \  }}|t        v sŒ||j                  |<   Œ t	        j
                  |«       t        ||«       dddœ}t        |t        j                  «      r½||_
        |€d}n|j                  «       \  \  }}|xs d}|�J ‚t        |«      dk(  }t        | |||z
  ||¬«      \  }}}|€d}n|di}|j                  rR|j                  d   }|€|j                  d   }�nè|j                  j                  «       d| j                  «       d   }�n¸dx}}�n²t        |t        j                   «      rM|j"                  dk(  rd|_        |j$                  dk(  rd|_        t'        | |||||||||	|
|||«      \  }}}}}}�nKt        |t        j(                  «      r"t+        | ||||||«      }||_
        d}d}d}d}�nt        |t        j,                  «      r]||_
        d|_        d	D ]%  }t1        |d
|› �«      dk(  sŒt3        |d
|› �d«       Œ' t5        | |t6         ||d||d«	      \  }}}}}d}d}d}n˜t        |t        j8                  «      r\||_
        d|_        d	D ]%  }t1        |d
|› �«      dk(  sŒt3        |d
|› �d«       Œ' t;        | |t6         ||d||«      \  }}}}}d}d}d}n"t=        dt?        |«      j@                  › d�«      ‚||||||fS )aØ  Fit as much content as possible from an inline-level box in a width.

    Return ``(new_box, resume_at, preserved_line_break, first_letter, last_letter)``.
    ``resume_at`` is ``None`` if all of the content fits. Otherwise it can be passed as
    a ``skip_stack`` parameter to resume where we left off.

    ``new_box`` is non-empty (unless the box is empty) and as big as possible
    while respecting ``max_x``, if possible (may overflow is no split is possible.)

    r   ©ÚleftÚrightN©Úis_line_startr<   rÎ   Fu   âº€©ro   ræ   rn   rå   Úmargin_r¾   r¿   )!rE   rD   rS   r   r   r²   r   r„   r   r…   rF   rˆ   r–   r†   r‡   Údecoder‹   rÔ   rÕ   rG   ÚAtomicInlineLevelBoxrË   ÚInlineFlexBoxr$   ÚgetattrÚsetattrr   r   ÚInlineGridBoxr   rÇ   rÈ   rÉ   )r&   r'   rF   ra   r(   r)   r*   r+   r,   rb   re   rf   r-   r.   rs   rt   Úfloat_widthsÚskiprè   r›   rg   r0   rh   ri   Úsider[   s                             r1   Úsplit_inline_levelrô   É  s‡  € ñ Ø�h‰h‹jˆØ—I‘I—N‘NÓ$ˆŒ	Ø*×0Ñ0Ó2ò 	'‰JˆC�Ø”iÒØ!&�—	‘	˜#’ð	'ô 	×$Ñ$ SÔ)Ü˜Ð-Ô.Ø¨Ñ*€LÜ�#”u—}‘}Ô%Ø#ˆŒØÐØ‰Dà",×"2Ñ"2Ó"4ÑÑˆT�:Ø’9˜1ˆDØÐ%Ð%Ð%ä˜MÓ*¨aÑ/ˆÜ.<Ø�S˜% *Ñ,¨dØ'ô/)Ñ+ˆ�Ð+ð ˆ<Ø‰Ià˜t˜ˆIØ�8Š8ØŸ8™8 A™;ˆLØˆ|Ø!Ÿh™h r™l’à!Ÿh™hŸo™oÓ/°°Ð6×=Ñ=Ó?ÀÑC’à)-Ð-ˆLš;Ü	�CœŸ™Ô	)Ø�?‰?˜fÒ$ØˆCŒOØ×Ñ˜vÒ%Ø ˆCÔä&6Ø�c˜: u¨l¸JØ˜~¨{Ð<MØ˜]Ð,>Ð@Pó'Rñ	$ˆ�)Ð1°<Ø	’lô 
�Cœ×3Ñ3Ô	4ÜØ�S˜* jÐ2BØ˜Kó)ˆð (ˆÔØˆ	Ø$Ðð  ˆØŠÜ	�Cœ×,Ñ,Ô	-Ø#ˆŒØˆŒØ6ò 	2ˆDÜ�s˜g d VÐ,Ó-°Ó7Ü˜˜w t fÐ-¨qÕ1ð	2ô '2Ø�Sœ3˜$ 
Ð,<¸eØ˜K¨ó'0Ñ#ˆ�˜A˜q !ð  %ÐØˆØ‰Ü	�Cœ×,Ñ,Ô	-Ø#ˆŒØˆŒØ6ò 	2ˆDÜ�s˜g d VÐ,Ó-°Ó7Ü˜˜w t fÐ-¨qÕ1ð	2ô '2Ø�Sœ3˜$ 
Ð,<¸eØ˜Kó')Ñ#ˆ�˜A˜q !ð  %ÐØˆØ‰ä˜+¤d¨3£i×&8Ñ&8Ð%9Ð9IÐJÓKÐKà�Ð0°,ÀØðð r|   c           	      ó$  — |j                  «       rm||_        t        |«      }|j                  |«       |j                  |||f«       |j                  d   dk(  r|	j                  |«       y |
j                  |«       y |j                  «       �r¬||_        t        | ||j                  «      }||z   D ��cg c]  \  }}}|j                  «       s|‘Œ }}}|r|t        | |d   «      z  }|||z
  kD  s|r|j                  |«       y t        | |||	|
|d ¬«      \  }}|r| j                  ||||«       |j                  |||f«       |}t        |j                  «       d«      }||j                  d   xx   |z  cc<   |j                  d   dk(  r t        |t        j                  «      r||z  }n|j                  d   dk(  r||z  }|D ]r  \  }}|j!                  «       sŒ|j                  d   dk(  r|j                  d	   d
k(  s&|j                  d   dk(  sŒN|j                  d	   dk(  sŒa|j#                  |¬«       Œt y |j%                  «       r@|j                  d   d   }| j&                  }| j(                  |   |   j                  |«       y y c c}}w )Nr¢   Úabsoluter<   r@   r   r©   rå   ræ   r:   r=   r;   ©r“   r	   )Úis_absolutely_positionedrF   r
   rW   rD   Ú
is_floatedr   r"   r   r   rX   ÚmaxÚmargin_widthr„   r   rŠ   Úis_in_normal_flowrO   Ú
is_runningÚcurrent_pageÚrunning_elements)r&   r'   r*   rŒ   rž   rQ   rf   Úwaiting_childrenre   r+   r,   rb   rñ   ra   rF   r(   rv   rj   r[   Úchild_Únon_floating_childrenÚ	new_childÚfloat_resume_atr“   Ú	old_childÚrunning_nameÚpages                              r1   Ú_out_of_flow_layoutr  .  s¯  € ð
 ×%Ñ%Ô'Ø%ˆÔÜ)¨%Ó0ˆØ× Ñ  Ô-Ø×Ñ ¨°UÐ ;Ô<Ø�;‰;�zÑ" jÒ0Ø×!Ñ! +Õ.à×Ñ˜{Õ+à	×	Ñ	Õ	Ø%ˆÔÜ# G¨UÐ4D×4JÑ4JÓKˆð
 )1Ð3CÑ(C÷!(Ù#�q˜& !Ø×$Ñ$Ô&ò ð!(Ðñ !(ñ !ØÔ3ØÐ.¨rÑ2ó4ñ 4ˆKð ˜ Ñ+Ò+©~ð ×!Ñ! %Õ(ä)5Ø˜Ð 0°.À+Ø¨ô*/Ñ&ˆI�ñ Ø×.Ñ.Ø˜5Ð"2°OôEà×#Ñ# U¨I°uÐ$=Ô>ØˆEô �U×'Ñ'Ó)¨1Ó-ˆBØ˜Ÿ™ WÑ-Ó.°"Ñ4Ó.Ø�{‰{˜7Ñ# vÒ-Ü˜c¤5§=¡=Ô1ð  "Ñ$‘JØ—‘˜WÑ%¨Ò0à˜‘�Ø -ò /‘��9Ø ×2Ñ2Ô4ØØ—[‘[ Ñ)¨VÒ3ØŸ	™	 +Ñ.°%Ò7Ø—[‘[ Ñ)¨WÓ4ØŸ	™	 +Ñ.°%Ó7Ø×'Ñ'¨2Ð'Õ.ñ/ð 
×	Ñ	Ô	Ø—{‘{ :Ñ.¨qÑ1ˆØ×#Ñ#ˆØ× Ñ  Ñ.¨tÑ4×;Ñ;¸EÕBð 
ùóY!(s   Â5Jc                 ó@  — |�r|j                  «       }|rú|j                  «       \  }}}|j                  «       rt        |«      sŒ2|r
||v r||   }nd }|j                  |j                  «       z   dz
  }||j                  kD  rAt        | ||j                  |||||||||	||«      \  }}}}}}|rn|dz  }||j                  kD  rŒAŒ±|
j                  |«       |€ t        |t        j                  «      sJ ‚||iS |
j                  |||f«       ||iS |
r|
d   d   dz   d iS y )Nr	   r<   r   )rE   Úpoprü   Úcan_break_insiderF   rû   rô   rU   r„   r   r…   rW   )r&   r'   ra   r(   Úinitial_skip_stackr+   r,   rb   re   rf   rQ   r   r-   r.   Úwaiting_children_copyr»   rž   Úoriginal_childr·   r  Úchild_resume_atr[   s                         r1   Ú_break_waiting_childrenr  u  so  € ò ð !1× 5Ñ 5Ó 7ÐÙ#Ø1F×1JÑ1JÓ1LÑ.ˆK˜ Ø×*Ñ*Ô,Ô4DÀUÔ4KØá! kÐ5GÑ&GØ#5°kÑ#BÑ à#'Ð ð ×$Ñ$ u×'9Ñ'9Ó';Ñ;¸aÑ?ˆEØ˜%×*Ñ*Ò*Ü9KØ˜^¨U×-=Ñ-=¸uØ Ð"2°C¸ØÐ!2°NØ!Ð#5Ð7Gó	:IÑ6�	˜?¨A¨q°!°Qñ
 #ØØ˜‘
�ð ˜%×*Ñ*Ó*ð à�O‰OÐ1Ô2ØÐ ä! %¬¯©Ô7Ð7Ð7ð   Ð1Ð1ð —‘ ¨i¸Ð ?Ô@à Ð1Ð1áð ˜‘˜Q‘ !Ñ# TÐ*Ð*ð r|   c                 ó  — t        | j                  «      \  }| _        | j                  d   | _        || j                  z
  dz  }|| j                  z
  | j
                  z
  | _        || j                  z
  | j                  z
  | _	        y)z“Set margins to the half leading to respect line height.

    Also compensate for borders and padding, we want margin_height() == line_height.

    Ú	font_sizer   N)
r   rD   rL   r%   Úborder_top_widthÚpadding_toprM   Úborder_bottom_widthÚpadding_bottomrN   )r'   Úline_heightÚhalf_leadings      r1   rT   rT   ©  su   € ô !& c§i¡iÓ 0Ñ€K�”Ø—‘˜;Ñ'€C„JØ #§*¡*Ñ,°Ñ1€LØ! C×$8Ñ$8Ñ8¸3¿?¹?ÑJ€C„NØ$ s×'>Ñ'>Ñ>À×ASÑASÑS€CÕr|   c                 óž  — |dz  }|du }|}|}t        |t        j                  t        j                  f«      sJ ‚|j                  |j
                  z   |j                  z   }|j                  |j                  z   |j                  z   }|}g }g }d}dx}}dddœ}d}|j                  d   dk(  rg }|rd}n|j                  «       \  \  }}t        |j                  |d «      D �]…  \  }}||z   }|j                  |_        |j                  «       sGt!        | ||||||||
|||	||||«       |j#                  «       r|dz   }||
vr||j%                  «       z  }Œt|t'        |j                  «      dz
  k(  }|} g }!t)        | ||| ||||||	|!|||«      \  }"}#}$}%}&}'|j                  d	   d
k(  r|}(||'d   z  }n
|}(||'d   z  }|r(|(r&|#€$| |(z  } t)        | ||| ||||||	|!|||«      \  }"}#}$}%}&}'t+        |d   |'d   «      |d<   t+        |d   |'d   «      |d<   d}|$rd}d})|du rd}n|du rd}n|j                  d   dv rd})|)€,d||%fv rd})n#|%dv r|%})nt-        ||%z   |j                  d   «      })|)r|j/                  |«       g }|€|%}|j0                  rd}n|&}|"€t        |t        j2                  «      s’J ‚t        |t        j                  «      r|j5                  ||"f«       |"j6                  |"j%                  «       z   }*|*t9        | |"«      z
  |kD  rt;        | |||||||	|
|||||«      }+|+r|+}# nV|*}|j5                  ||"|f«       |
j/                  |!«       |#€�Œq|j/                  |«       ||#i}# n |j/                  |«       d}#|j                  d	   d
k(  r‚t'        |«      dkD  rt|D �,�-cg c]  \  },}-},|-j                  «       r|-‘Œ }.},}-|.d   j6                  }|.ddd…   D ]5  }|j=                  ||j6                  z
  d¬«       ||j%                  «       z  }Œ7 |#du }/|j?                  |D ��-�,cg c]  \  }}-},|-‘Œ
 c},}-}«      }0|0jA                  | |/ ¬«       t        |t        j                  «      rvd|0_!        |0j                  }|0j                  d	   dk(  r|ddd…   }|D ]C  }|j                  «       sŒ|j6                  |j%                  «       z   |0j6                  z
  |0_!         ny nw||0_        |j                  d   dk(  rd}1n|j                  d	   dk(  r|n|/}1|1r#|0j                  D ]  }|j=                  |¬«       Œ ||z
  |0_!        |0j=                  |d   d¬«       tE        |0«       |0j                  d   dk(  r|D ]  }2tG        | |2|0||d¬«       Œ |#�tI        tK        |#«      «      }||k  r|di}#|jL                  rd}d}|0|#||||fS c c}-},w c c},}-}w )aš  Fit as much content as possible from an inline box in a width.

    Return ``(new_box, resume_at, preserved_line_break, first_letter, last_letter)``.
    ``resume_at`` is ``None`` if all of the content fits. Otherwise it can be passed as
    a ``skip_stack`` parameter to resume where we left off.

    ``new_box`` is non-empty (unless the box is empty) and as big as possible while
    respecting ``max_x``, if possible (may overflow is no split is possible.)

    This is the recursive step that loops over the children of the box; base steps of
    recursion are handled by ``split_inline_level()``.

    In this phase, excluded floating shapes are ignored.

    g0¸D   ð?NFr   rä   r¢   Úrelativer	   r:   r;   rå   ræ   Tr�   õ   Â r~   )Úprer�   )TFÚlangr<   r’   )ÚstartÚendr=   Úbox_decoration_breakÚcloner÷   r@   )'r„   r   rŠ   r‹   rà   rÔ   rÞ   rá   rÕ   rß   rD   rS   Ú	enumeraterQ   r$   rü   r  rù   rû   rˆ   rô   rú   r   rU   Útrailing_collapsible_spacer…   rW   rF   r   r  rO   rP   Úremove_decorationr"   rT   r   ÚnextÚiterÚ	is_leader)3r&   r'   rF   ra   r(   r)   r*   r+   r,   rb   re   rf   r-   r.   Úis_startÚinitial_position_xr  Úleft_spacingÚright_spacingÚcontent_box_leftrQ   r   rg   rh   ri   rñ   Úfloat_resume_indexrò   Úirž   rŒ   Úis_last_childr\   Úchild_waiting_floatsr  r0   Ú	preservedÚfirstr9   Únew_float_widthsÚend_spacingÚ	can_breakrk   Úprevious_resume_atr[   Ú	box_childÚin_flow_childrenÚis_endr›   Útranslation_neededÚabsolute_boxs3                                                      r1   rG   rG   ¶  s3  € ð4 
ˆXÑ€Eà˜TÐ!€HØ#ÐØ#ÐÜ�cœEŸM™M¬5¯?©?Ð;Ô<Ð<Ð<à×Ñ˜3Ÿ?™?Ñ*¨S×-BÑ-BÑBð ð 	×Ñ˜C×,Ñ,Ñ,¨s×/EÑ/EÑEð à!Ðà€HØÐØ ÐØ!%Ð%€L�;Ø¨Ñ*€LØÐà
‡y�y�Ñ 
Ò*ØˆáØ‰à(×.Ñ.Ó0ÑÑˆˆzä˜cŸl™l¨4¨5Ð1Ó2ó k‰ˆˆ5Ø�D‘ˆØŸ>™>ˆÔà×&Ñ&Ô(ÜØ˜Ð.°°u¸hØÐ/°Ø Ð->ÀØ�z <ô	1ð
 ×ÑÔ!Ø%*¨Q¡YÐ"Ø Ñ.Ø˜U×/Ñ/Ó1Ñ1�EØà¤# c§l¡lÓ"3°aÑ"7Ñ7ˆØˆØ!ÐäØ˜ 
¨O¸\ØÐ,¨n¸kØ!Ð#7¸Ø"Ð$4ó	6ñ 	Gˆ	�9˜i¨°Ð6Fð �9‰9�[Ñ! UÒ*Ø&ˆKØÐ% fÑ-Ñ-‰Eà'ˆKØÐ% gÑ.Ñ.ˆEÙ™[¨YÐ->ð ˜{Ñ*ˆOä"Ø˜U J°ÀØÐ 0°.À+Ø%Ð';¸]Ø&Ð(8ó	:ñ KˆI�y )¨U°DÐ:Jô  # <°Ñ#7Ð9IÈ&Ñ9QÓRˆ�VÑÜ # L°Ñ$9Ð;KÈGÑ;TÓ Uˆ�WÑàˆ
ÙØ#'Ð àˆ	Ø˜$ÑØ‰KØ˜EÑ!Ø‰KØ�Y‰Y�}Ñ%Ð):Ñ:ØˆIØÐØ˜ UÐ+Ñ+Ø!‘	Ø˜-Ñ'Ø!‘	ä*Ø %Ñ'¨¯©°VÑ)<ó>�	ñ Ø�O‰OÐ,Ô-Ø!ÐàÐØ ˆLØ×+Ò+Ø‰KàˆKàÐä˜e¤U§]¡]Ô3Ð3Ð3ô ˜#œuŸ}™}Ô-Ø×$Ñ$ e¨YÐ%7Ô8ð '×1Ñ1°I×4JÑ4JÓ4LÑLˆNØÔ 8¸À)Ó LÑLÈuÒTä%<ØÐ-¨u°lÐDVØ" KÐ1BÀNØ! 8Ð-=Ð?QØ$ó	&&Ð"ñ
 &Ø 2�IÙà'ˆJØ×#Ñ# U¨I°uÐ$=Ô>à×ÑÐ2Ô3ØÒ Ø�O‰OÐ,Ô-Ø 	Ð*ˆIÙðQkðT 	�‰Ð(Ô)Øˆ	ð ‡y�y�Ñ Ò&¬3¨x«=¸1Ò+<à-5÷.Ù)˜!˜Y¨Ø×*Ñ*Ô,ò ð.Ðñ .ð & aÑ(×3Ñ3ˆ
Ø%¡d¨ dÑ+ò 	/ˆEØ�O‰OØ ×!1Ñ!1Ñ1À$ð ô Hà˜%×,Ñ,Ó.Ñ.‰Jð	/ð
 ˜$Ð€FØ×$Ñ$Ø.6×7Ð7Ñ*�u˜i¨ŠÔ7ó9€Gà×Ñ¨ L¸&°jÐÔAÜ�#”u—}‘}Ô%àˆŒØ×#Ñ#ˆØ�=‰=˜Ñ%¨Ò.Ø¡ " ‘~ˆHØò 	ˆEØ×&Ñ&Õ(à×$Ñ$ u×'9Ñ'9Ó';Ñ;Ø×&Ñ&ñ'ð ”ñ ñ	ð 0ˆÔØ�9‰9Ð+Ñ,°Ò7Ø!%Ñð  ŸI™I kÑ2°eÒ;‘Àð áØ ×)Ñ)ò 1�Ø—‘ <�Õ0ð1à"Ð%5Ñ5ˆŒØ×Ñ˜\¨&Ñ1ÀÐÔFä˜Ô à‡}�}�ZÑ  JÒ.Ø*ò 	!ˆLÜØ˜ w°¸\Øö!ð	!ð
 ÐÜ”T˜)“_Ó%ˆØÐ%Ò%Ø+¨TÐ2ˆIà
‡}‚}ØˆØˆð 	�Ð0°,ÀØðð ùóo.ùô 	8s   Î WÐ$Wc                 óÖ  — t        |t        j                  «      sJ ‚|j                  d   }|j                  j                  «       |d }|dk(  s|syt        |j                  «       |j                  | ||j                  |¬«      \  }}}	}
}}|	dk7  sJ ‚|dkD  r…|j                  |j                  «      }|
|_
        ||_        ||_        t        |j                  «      \  }}||z
  dz  }||_        ||_        ||_        |xj                   |j                  z  c_        nd}|	€d}nC|||	 j                  «       }||	k7  xr |j#                  d«      }|rd	}||v sJ d
|›d�«       ‚|	|z  }	||	|fS )av  Keep as much text as possible from a TextBox in a limited width.

    Try not to overflow but always have some text in ``new_box``.

    Return ``(new_box, skip, preserved_line_break)``. ``skip`` is the number of
    UTF-8 bytes to skip form the start of the TextBox for the next line, or
    ``None`` if all of the text fits.

    Also break on preserved line breaks.

    r  Nr   )NNFrç   r   Fr�   )r¨   ú	úõ   Â…u   â€¨u   â€©zGot z> between two lines. Expected nothing or a preserved line break)r„   r   r…   rD   r†   r‡   r   rë   Újustification_spacingÚcopy_with_textr"   r—   r%   r   rM   rN   rL   Ústrip)r&   r'   r\   rò   rè   r  r†   ÚlayoutÚlengthÚresume_indexr"   r%   rL   r  r[   r  rg   ÚbetweenÚline_breakss                      r1   r–   r–   –  s“  € ô �cœ5Ÿ=™=Ô)Ð)Ð)Ø—	‘	˜+Ñ&€IØ�8‰8�?‰?Ó˜T˜UÐ#€DØ�A‚~™TØ Ü<LØ�‰‹�s—y‘y '¨?Ø×!Ñ!°ô=@Ñ9€FˆF�L %¨°ð ˜1ÒÐÐà�‚zØ× Ñ  §¡Ó-ˆØˆŒ	Ø!ˆÔð
 ˆŒ
ô ˜sŸy™yÓ)‰ˆ�QØ# fÑ,°Ñ1ˆØ%ˆŒØ(ˆÔàˆŒà�Š˜Ÿ™Ñ&ŽàˆàÐØ$Ñà�v˜lÐ+×2Ñ2Ó4ˆà�|Ñ#Ò;¨¯©°sÓ);ð 	áð KˆKØ˜kÑ)ñ Kâ@GðJóKÐ)ð 	˜Ñˆà�Ð2Ð2Ð2r|   c           
      ó  — g }t        | |d¬«      \  }}|D ���cg c]*  }|j                  «       rdnt        ||d¬«      \  }}|||f‘Œ, }}}}|rF|D ���cg c]  \  }}}|j                  «       s||z
  ‘Œ }}}}|rt        |«      }	t        |||	z   «      }|D ]c  \  }}}|j                  «       r||j                  z
  }
n1|j                  d   dk(  r||z
  }
n|j                  d   dk(  sJ ‚||z
  }
t        ||
«       Œe ||fS c c}}}w c c}}}w )zòHandle ``vertical-align`` within a :class:`LineBox`.

    Place all boxes vertically assuming that the baseline of ``box``
    is at `y = 0`.

    Return ``(max_y, min_y)``, the maximum and minimum vertical position
    of margin boxes.

    r   )Ú
baseline_yr5   Úvertical_alignro   rn   )Úaligned_subtree_verticalityrù   rú   r$   rD   Útranslate_subtree)r'   Útop_bottom_subtreesÚmax_yÚmin_yÚsubtreeÚ	sub_max_yÚ	sub_min_yÚsubtrees_with_min_maxÚsub_positionsÚhighest_subÚdys              r1   rK   rK   Õ  sd  € ð ÐÜ.ØÐ ¨Qô0�L€Eˆ5ð +÷>ð >àà#×.Ñ.Ô0‰LÜ,ØÐ,¸ô<ñ !ˆI�yð 
�)˜YÒ'ð>Ðò >ñ ð 2G÷)ð )á-�˜ IØ×%Ñ%Ô'ð ˜	Ó!ð)ˆò )ñ Ü˜mÓ,ˆKÜ˜˜u {Ñ2Ó3ˆEà)>ò 'Ñ%ˆ�˜IØ×ÑÔØ˜×+Ñ+Ñ+‰BØ�]‰]Ð+Ñ,°Ò5Ø˜Ñ"‰Bà—=‘=Ð!1Ñ2°hÒ>Ð>Ð>Ø˜Ñ"ˆBÜ˜' 2Õ&ð'ð �%ˆ<Ðùô5>ùô)s   š/DÁ Dc                 óæ   — t        | t        j                  «      rE| xj                  |z  c_        | j                  d   dv r| j
                  D ]  }t        ||«       Œ y y | j                  |¬«       y )NrJ  ©ro   rn   ©rV  )r„   r   r‹   r$   rD   rQ   rL  rO   )r'   rV  rž   s      r1   rL  rL  ÿ  sc   € Ü�#”u—‘Ô'Ø�Š˜"Ñ�Ø�9‰9Ð%Ñ&Ð*;Ñ;ØŸ™ò -�Ü! %¨Õ,ñ-ð <ð
 	�‰˜ˆÕr|   c                 ó’   — t        | ||«      \  }}|| j                  z
  }|| j                  «       z   }|�||k  r|}|�||kD  r|}||fS ©N)Úinline_box_verticalityrL   rÁ   )r'   rM  rI  rN  rO  ro   rn   s          r1   rK  rK  
  s`   € Ü)¨#Ð/BÀJÓO�L€Eˆ5à
�s—|‘|Ñ
#€CØ�3×$Ñ$Ó&Ñ&€FØ€}˜˜ešØˆØ€}˜ šØˆà�%ˆ<Ðr|   c                 ó¶  — d}d}t        | t        j                  t        j                  f«      s||fS | j                  D �]”  }|j                  «       s"|j                  «       r|j                  |«       Œ6|j                  d   }|dk(  r|}�nX|dk(  rP| j                  d   t        | j                  d«      z  }|||j                  «       z   dz  z
  }	|	|j                  z   }�n|dk(  rF|| j                  z
  | j                  z   | j                  z   | j                  z   }	|	|j                  z   }n¸|d	k(  rd|| j                  z
  | j                  z   | j                  z   | j                  z   | j                  z   }
|
|j                  «       z
  |j                  z   }nO|d
v rd}nHt        |t         «      r3t#        | j                  «      \  }}|t%        || j                  |«      z
  }n||z
  }||j                  z
  }	t        j&                  t        j(                  t        j*                  f}t        ||«      r |j-                  |	|j.                  z
  ¬«       n|	|_        |d
v r|j                  |«       �Œ.|	|j                  «       z   }
|�|	|k  r|	}|�|
|kD  r|
}t        |t        j                  «      s�Œot1        |||«      \  }}|�||k  r|}|€�ŒŒ||kD  s�Œ“|}�Œ— ||fS )zþHandle ``vertical-align`` within an :class:`InlineBox`.

    Place all boxes vertically assuming that the baseline of ``box``
    is at `y = baseline_y`.

    Return ``(max_y, min_y)``, the maximum and minimum vertical position
    of margin boxes.

    NrJ  rL   Úmiddler  Úexr   ztext-topztext-bottomrX  r   rY  )r„   r   rŠ   r‹   rQ   rü   rù   rW   rD   r   rÁ   rL   rM   r  r  r%   r   r   r   rÂ   rí   rð   rO   r$   r\  )r'   rM  rI  rN  rO  rž   rJ  Úchild_baseline_yÚone_exro   rn   r%   r[   Ú	box_typesÚchildren_max_yÚchildren_min_ys                   r1   r\  r\    sÞ  € ð €EØ€EÜ�cœEŸM™M¬5¯?©?Ð;Ô<Ø�eˆ|Ðà—‘ó ?'ˆØ×&Ñ&Ô(Ø×ÑÔ!Ø#×*Ñ*¨5Ô1ØØŸ™Ð%5Ñ6ˆØ˜ZÒ'Ø)ÒØ˜xÒ'Ø—Y‘Y˜{Ñ+¬o¸c¿i¹iÈÓ.NÑNˆFØ ¨×)<Ñ)<Ó)>Ñ >À!ÑCÑCˆCØ" U§^¡^Ñ3ÒØ˜zÒ)à §¡Ñ,¨s¯~©~Ñ=Ø×'Ñ'ñ(Ø*-¯/©/ñ:ˆCà" U§^¡^Ñ3ÑØ˜}Ò,à  3§<¡<Ñ/°#·.±.Ñ@Ø×*Ñ*ñ+Ø-0¯_©_ñ=Ø?B¿z¹zñJˆFà%¨×(;Ñ(;Ó(=Ñ=ÀÇÁÑNÑØÐ0Ñ0ð  !ÑÜ˜¬Ô0Ü˜cŸi™iÓ(‰IˆF�AØ)¬JØ §	¡	¨6ó-3ñ  3Ñð
  *¨NÑ:Ðð  §¡Ñ/ˆÜ×)Ñ)¬5×+>Ñ+>Ä×@SÑ@SÐTˆ	Ü�e˜YÔ'à�O‰O˜s U×%5Ñ%5Ñ5ˆOÕ6à"ˆEÔð Ð.Ñ.ð  ×&Ñ& uÔ-Ùà�u×*Ñ*Ó,Ñ,ˆØˆ=˜C %šKØˆEØˆ=˜F UšNØˆEÜ�eœUŸ_™_Ö-Ü-CØÐ*Ð,<ó.>Ñ*ˆN˜NàÐ)¨n¸uÒ.DØ&�ØÒ)¨n¸uÔ.DØ&’ð?'ð@ �%ˆ<Ðr|   c                 óR  — |j                   |k\  ry|j                  d   }|r|j                  d   }|dk(  r|n|}|j                  d   dv }|dv r|dk(  |j                  d	   d
k(  z  rd}nd}|dk(  ry||j                   z
  }|dk(  r|rt        | ||«       y|dk(  r|dz  S |dk(  sJ ‚|S )z>Return the line horizontal offset according to ``text-align``.r   Útext_align_allÚtext_align_lastrÎ   r~   r   rä   rå   r:   r;   r  r  ÚjustifyÚcenterr   )r"   rD   Újustify_line)r&   r/   r\   r9   ÚalignÚ
align_lastÚspace_collapseÚoffsets           r1   rJ   rJ   i  sß   € ð ‡z�z�_Ò$Øà�J‰JÐ'Ñ(€EÙØ—Z‘ZÐ 1Ñ2ˆ
Ø# vÒ-‘°:ˆØ—Z‘Z Ñ.ð 3(ð (€NàÐ!Ñ!Ø�V‰O §
¡
¨;Ñ 7¸5Ñ @ÒAØ‰EàˆEØ�ÒØØ˜tŸz™zÑ)€FØ�	ÒÙô ˜ $¨Ô/ØØ�ÒØ˜‰zÐà˜Š~Ðˆ~Øˆr|   c                 óB   — t        |«      x}rt        | |||z  d«       y y )Nr   )Úcount_expandable_spacesÚadd_word_spacing)r&   r/   Úextra_widthÚ	nb_spacess       r1   rj  rj  Ž  s,   € ô -¨TÓ2Ð2ˆ	Ð2Ü˜ $¨°iÑ(?ÀÕCð 	3r|   c                 ó2  — t        | t        j                  «      r7| j                  j	                  d«      | j                  j	                  d«      z   S t        | t        j
                  t        j                  f«      rt        d„ | j                  D «       «      S y)z;Count expandable spaces (space and nbsp) for justification.r�   r  c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr[  )rp  ©Ú.0rž   s     r1   ú	<genexpr>z*count_expandable_spaces.<locals>.<genexpr>›  s   è ø€ ÒL°eÔ*¨5×1ÑLùó   ‚r   )	r„   r   r…   r†   ÚcountrŠ   r‹   ÚsumrQ   )r'   s    r1   rp  rp  •  sd   € ä�#”u—}‘}Ô%à�x‰x�~‰~˜cÓ" S§X¡X§^¡^°HÓ%=Ñ=Ð=Ü	�Cœ%Ÿ-™-¬¯©Ð9Ô	:ÜÑL¸s¿|¹|ÔLÓLÐLàr|   c                 óÐ  — t        |t        j                  «      r’||_        |xj                  |z  c_        t        |«      }|dkD  rdt        |j                  |j                  | d |j                  ¬«      }|j                  «        ||z  }||z  }|xj                  |z  c_
        ||_        |S t        |t        j                  t        j                  f«      r}|xj                  |z  c_        |}|j                  }|j                  d   dk(  r|d d d…   }|D ]!  }	|	j                  «       sŒt!        | |	||«      }Œ# |xj                  ||z
  z  c_
        |S |j#                  |d«       |S )Nr   )rÅ   r@  r:   r;   r<   )r„   r   r…   r@  rF   rp  r   r†   rD   Ú
deactivater"   r—   rŠ   r‹   rQ   rü   rq  rO   )
r&   r'   r@  Ú	x_advancers  rC  Úextra_spaceÚprevious_x_advancerQ   rž   s
             r1   rq  rq     sV  € Ü�#”u—}‘}Ô%Ø$9ˆÔ!Ø�Š˜)Ñ#�Ü+¨CÓ0ˆ	Ø�qŠ=Ü"Ø—‘˜#Ÿ)™) W¸Ø&)×&?Ñ&?ôAˆFð ×ÑÔØ/°)Ñ;ˆKØ˜Ñ$ˆIØ�IŠI˜Ñ$�IØ%ˆCÔð Ðô 
�Cœ%Ÿ-™-¬¯©Ð9Ô	:Ø�Š˜)Ñ#�Ø&ÐØ—<‘<ˆØ�9‰9�[Ñ! UÒ*Ø¡ " ‘~ˆHØò 	FˆEØ×&Ñ&Õ(Ü,Ø˜UÐ$9¸9óF‘	ð	Fð 	�	Š	�YÐ!3Ñ3Ñ3�	ð Ðð 	�‰�i Ô#ØÐr|   c                 óF  — | j                   D ]’  }t        |t        j                  «      rdt	        |«      s ydD ]Q  }t        |j                  d|› �   dd «      s0|j                  d|› d�   s|j                  d|› �   j                  sŒP  y Œ�|j                  «       sŒ’ y y)	NFré   rê   rt   Úborder_Ú_widthÚpadding_T)	rQ   r„   r   r‹   rH   rî   rD   rt   rü   )rZ   rž   ró   s      r1   rH   rH   ¿  s¢   € à×!Ñ!ò 
ˆÜ�eœUŸ_™_Ô-Ü% eÔ,ÙØ:ò !�Ü˜EŸK™K¨'°$°Ð(8Ñ9¸7ÀDÔIØŸ™ g¨d¨V°6Ð$:Ò;ØŸ™ h¨t¨fÐ$5Ñ6×<Ó<Ú ñ	!ð
 ×$Ñ$Õ&Ùð
ð r|   c                 óJ  — | j                   d   dv }t        | t        j                  «      ry|r=t        | t        j                  «      r#t        | j                  | j                   d   «      S |r6t        | t        j                  «      rt        d„ | j                  D «       «      S y)Nr~   )r€   zpre-wrapr‚   Fr  c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr[  )r  rv  s     r1   rx  z#can_break_inside.<locals>.<genexpr>×  s   è ø€ ÒE¨uÔ# E×*ÑEùry  )
rD   r„   r   rì   r…   r   r†   r³   ÚanyrQ   )r'   Ú	text_wraps     r1   r  r  Ï  s{   € à—	‘	˜-Ñ(Ð,NÐN€IÜ�#”u×1Ñ1Ô2ØÙ	”z #¤u§}¡}Ô5Ü˜cŸh™h¨¯	©	°&Ñ(9Ó:Ð:Ù	”z #¤u§¡Ô7ÜÑE¸¿¹ÔEÓEÐEØr|   )T)EÚ__doc__r®   Úmathr   Úcssr   Úcss.propertiesr   Úformatting_structurer   r   rö   r
   r   Úflexr   r©   r   r   Úgridr   Úleaderr   Úmin_maxr   Úpercentr   r   r   Ú	preferredr   r   r   Úreplacedr   Útabler   r   Útext.line_breakr   r   r   r   r   r2   r#   rA   rI   rB   rË   rÆ   r×   rÖ   rô   r  r  rT   rG   r–   rK   rL  rK  r\  rJ   rj  rp  rq  rH   r  © r|   r1   ú<module>r˜     së   ðÙ $ã Ý å Ý &ß /ß :Ý ß 1Ý Ý !Ý )ß LÑ Lß XÑ XÝ 0ß =÷Mõ Mò"òBNòb&òR'&òfMò`ò,ò:0ð, ñIó ðIòbòJDCòN1+òh
Tò]ó@<3ò~'òTò
òOòd"òJDòòò>ó 	r|   