
    h3l                         S SK r S SKrS SK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  SSKJr  SSKJr  SS	KJr   " S
 S\5      rg)    N)UnionTupleCallableOptionalAny   )	CTkCanvas)ThemeManager)
DrawEngine)CTkBaseClass)CTkFont)CTkImagec            1         ^  \ rS rSr% SrSr\\S'                          S<S\S\S\S	\	\   S
\	\   S\S\
\\\\4   4   S\	\
\\\\4   4      S\	\
\\\\4   4      S\	\
\\\\4   4      S\	\
\\\\4   4      S\	\
\\\\4   4      S\
\\
\\\\4   4      S4   S\S\S\S\	\
\\4      S\
\R"                  S4   S\
\SS4   S\S\S\
\/ \4   S4   S\S\40U 4S jjjrS=S \	\   4S! jjrU 4S" jrU 4S# jrS>S\S\4U 4S$ jjjrS% rS& rU 4S' jrS?U 4S( jjrS) rS?U 4S* jjrS+\S,\4U 4S- jjr S. r!S=S/ jr"S=S0 jr#S1 r$S=S2 jr%S3 r&S@S \S\S4\
\\4   4S5 jjr'S>S \S6\4S7 jjr(S8 r)S9 r*S: r+S;r,U =r-$ )A	CTkButton   z
Button with rounded corners, border, hover effect, image support, click command and textvariable.
For detailed information check out the documentation.
   _image_label_spacingNmasterwidthheightcorner_radiusborder_widthborder_spacingbg_colorfg_colorhover_colorborder_color
text_colortext_color_disabledbackground_corner_colorsround_width_to_even_numbersround_height_to_even_numberstextfonttextvariableimagezImageTk.PhotoImagestatehovercommandcompoundanchorc                   > [         TU ]  " SXX#S.UD6  Uc  [        R                  S   S   OUU l        [        U R                  [        U R                  S-  5      5      U l        Uc  [        R                  S   S   OUU l        X`l	        Uc  [        R                  S   S   OU R                  USS9U l        U	c  [        R                  S   S	   OU R                  U	5      U l        U
c  [        R                  S   S
   OU R                  U
5      U l        Uc  [        R                  S   S   OU R                  U5      U l        Uc  [        R                  S   S   OU R                  U5      U l        Xl        Xl        Xl        UU l        S U l        UU l        Uc
  [-        5       OU R/                  U5      U l        [3        U R0                  [,        5      (       a%  U R0                  R5                  U R6                  5        U R9                  U5      U l        S U l        [3        U R:                  [>        5      (       a%  U R:                  RA                  U RB                  5        UU l"        UU l#        UU l$        UU l%        UU l&        SU l'        [Q        U SU RS                  U RT                  5      U RS                  U RV                  5      S9U l,        U RX                  R[                  SSSSSS9  []        U RX                  5      U l/        U R^                  Ra                  U R"                  U R$                  5        U Rc                  5         U Re                  5         U Rg                  5         g )N)r   r   r   r   r   r      r   r   Ttransparencyr   r   r   r   Fr   )r   highlightthicknessr   r      nsewrowcolumnrowspan
columnspansticky )4super__init__r
   theme_corner_radiusminround_current_height_border_width_border_spacing_check_color_type	_fg_color_hover_color_border_color_text_color_text_color_disabled_background_corner_colors_round_width_to_even_numbers_round_height_to_even_numbers_text_text_label_textvariabler   _check_font_type_font
isinstanceadd_size_configure_callback_update_font_check_image_type_image_image_labelr   add_configure_callback_update_image_state_hover_command	_compound_anchor_click_animation_runningr	   _apply_widget_scaling_desired_width_desired_height_canvasgridr   _draw_engineset_round_to_even_numbers_create_bindings_set_cursor_draw)selfr   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   kwargs	__class__s                             b/var/www/fran/franai/venv/lib/python3.13/site-packages/customtkinter/windows/widgets/ctk_button.pyr;   CTkButton.__init__   s   > 	``Y_` XeWl<#5#5k#B?#Sr!$"5"5uT=Q=QTU=U7VWUaUi,"4"4["A."Qo{$2 fneul6H6H6UV`6a{  |R  |R  S[  jn  |R  |okvk~9K9KK9XYf9g  EI  E[  E[  \g  Ehmy  nB,:L:L[:YZh:i  HL  H^  H^  _k  Hlisi{8J8J;8WXd8e  BF  BX  BX  Yc  Bd |O  |WASAST_A`avAw  ]a  ]s  ]s  tG  ]H! [s&2M)3O* 
7;/;9=GI4K`K`aeKf
djj'**JJ2243D3DE ,,U38<dkk8,,KK..t/A/AB !!")&".3% !45'+'A'A$BUBU'V(,(B(B4CWCW(XZ 	a16R&t||433D4U4UW[WyWyz 	

    sequencec                    Ub  US:X  a  U R                   R                  SU R                  5        U R                  b&  U R                  R                  SU R                  5        U R                  b&  U R                  R                  SU R                  5        Ub  US:X  a  U R                   R                  SU R
                  5        U R                  b&  U R                  R                  SU R
                  5        U R                  b&  U R                  R                  SU R
                  5        Ub  US:X  a  U R                   R                  SU R                  5        U R                  b&  U R                  R                  SU R                  5        U R                  b'  U R                  R                  SU R                  5        ggg)zRset necessary bindings for functionality of widget, will overwrite other bindings N<Enter><Leave>
<Button-1>)rb   bind	_on_enterrM   rV   	_on_leave_clicked)ri   ro   s     rl   rf   CTkButton._create_bindingsl   sa    x94LLi8+  %%i@  ,!!&&y$..Ax94LLi8+  %%i@  ,!!&&y$..Ax<7LLlDMM:+  %%lDMMB  ,!!&&|T]]C -  8rn   c                   > [         TU ]  " U0 UD6  U R                  5         U R                  b2  U R                  R	                  U R                  U R                  5      S9  U R                  5         U R                  R	                  U R                  U R                  5      U R                  U R                  5      S9  U R                  SS9  g )Nr$   r   r   T)no_color_updates)r:   _set_scaling_create_gridrM   	configure_apply_font_scalingrP   rX   rb   r_   r`   ra   rh   )ri   argsrj   rk   s      rl   r}   CTkButton._set_scaling   s    d-f-'&&D,D,DTZZ,P&QT%?%?@S@S%T&*&@&@AUAU&V 	 	X

D
)rn   c                 D   > [         TU ]  U5        U R                  5         g N)r:   _set_appearance_moderX   )ri   mode_stringrk   s     rl   r   CTkButton._set_appearance_mode   s    $[1rn   c                    > [         TU ]  X5        U R                  R                  U R	                  U R
                  5      U R	                  U R                  5      S9  U R                  5         g )Nr{   )r:   _set_dimensionsrb   r   r_   r`   ra   rh   )ri   r   r   rk   s      rl   r   CTkButton._set_dimensions   sX    .T%?%?@S@S%T&*&@&@AUAU&V 	 	X

rn   c                     U R                   bj  U R                   R                  U R                  U R                  5      S9  U R                  R                  5         U R                  R                  SSSSSS9  gg)zWpass font to tkinter widgets with applied font scaling and update grid with workaround Nrz   r   r1   r2   r3   )rM   r   r   rP   rb   grid_forgetrc   ri   s    rl   rS   CTkButton._update_font   sh    '&&D,D,DTZZ,P&Q LL$$&LL!AqQvV (rn   c                 `   U R                   b  [        U R                  [        5      (       aP  U R                   R	                  U R                  R                  U R                  5       U R                  5       5      S9  g U R                  b$  U R                   R	                  U R                  S9  g g g )N)r&   )rV   rQ   rU   r   r   create_scaled_photo_image_get_widget_scaling_get_appearance_moder   s    rl   rX   CTkButton._update_image   s    ($++x00!!++$++2W2WX\XpXpXrX\XqXqXs3u+ v(!!++$+++> )	 )rn   c                    > [        U R                  [        5      (       a%  U R                  R                  U R                  5        [
        TU ]  5         g r   )rQ   rP   r   remove_size_configure_callbackrS   r:   destroy)ri   rk   s    rl   r   CTkButton.destroy   s6    djj'**JJ55d6G6GHrn   c           
        > [         TU ]  U5        U R                  Gb'  U R                  R	                  U R                  U R                  5      U R                  U R                  5      5        U R                  R                  SU R                  U R                  S   5      S9  U R                  R                  SU R                  U R                  S   5      S9  U R                  R                  SU R                  U R                  S   5      S9  U R                  R                  SU R                  U R                  S	   5      S9  OU R                  R                  S
5        U R                  R                  U R                  U R                  5      U R                  U R                  5      U R                  U R                  5      U R                  U R                  5      5      nUSL d  U(       Ga*  U R                  R                  U R                  U R                   5      S9  U R                  R                  SU R                  U R"                  5      U R                  U R"                  5      S9  U R$                  S:X  aN  U R                  R                  SU R                  U R                   5      U R                  U R                   5      S9  OMU R                  R                  SU R                  U R$                  5      U R                  U R$                  5      S9  U R&                  GbR  U R&                  S:w  GaA  U R(                  c  [*        R,                  " U U R/                  U R0                  5      U R&                  SSSU R2                  S9U l        U R5                  5         U R(                  R7                  SU R8                  5        U R(                  R7                  SU R:                  5        U R(                  R7                  SU R<                  5        U R(                  R7                  SU R<                  5        USL Ga9  U R(                  R                  U R                  U R>                  5      S9  U R@                  [*        RB                  :X  a3  U R(                  R                  U R                  U RD                  5      S9  O2U R(                  R                  U R                  U R>                  5      S9  U R                  U R$                  5      S:X  a3  U R(                  R                  U R                  U R                   5      S9  OqU R(                  R                  U R                  U R$                  5      S9  O>U R(                  b1  U R(                  RG                  5         S U l        U R5                  5         U RH                  Gbi  U RJ                  c  [*        R,                  " U S9U l%        U RM                  5         U R5                  5         U RJ                  R7                  SU R8                  5        U RJ                  R7                  SU R:                  5        U RJ                  R7                  SU R<                  5        U RJ                  R7                  SU R<                  5        USL a  U R                  U R$                  5      S:X  a3  U RJ                  R                  U R                  U R                   5      S9  g U RJ                  R                  U R                  U R$                  5      S9  g g U RJ                  b2  U RJ                  RG                  5         S U l%        U R5                  5         g g )Nbackground_corner_top_leftr   )fillbackground_corner_top_rightr   background_corner_bottom_rightr-   background_corner_bottom_left   background_partsFbgborder_partsoutliner   transparentinner_parts )r   r$   r#   padxpadyborderwidthr%   rq   rr   rs   )fg)r   )'r:   rh   rI   rd   draw_background_cornersr_   _current_widthr@   rb   
itemconfig_apply_appearance_modedeletedraw_rounded_rect_with_borderr=   rA   r   	_bg_colorrF   rD   rL   rM   tkinterLabelr   rP   rN   r~   rt   ru   rv   rw   rG   rY   DISABLEDrH   r   rU   rV   rX   )ri   r|   requires_recoloringrk   s      rl   rh   CTkButton._draw   sI   &'))555d6P6PQUQdQd6e6:6P6PQUQeQe6fhLL##$@tGbGbcg  dB  dB  CD  dE  HF#  GLL##$AHcHcdh  eC  eC  DE  eF  IG#  HLL##$D4KfKfgk  hF  hF  GH  hI  LJ#  KLL##$C$JeJefj  gE  gE  FG  gH  KI#  JLL 23"//MMdNhNhimi|i|N}NRNhNhimi}i}N~NRNhNhimi|i|N}NRNhNhimi{i{N|~
 u$(;LL""d&A&A$..&Q"R LL##N,0,G,GHZHZ,[)-)D)DTEWEW)X $ Z
 ~~.''040K0KDNN0[-1-H-H-X ( Z ''040K0KDNN0[-1-H-H-X ( Z
 ::!djjB&6'#*==6:6N6Ntzz6Z6:jj6767=>>B>P>P$R  !!#  %%i@  %%i@  %%lDMMB  %%lDMMB5(  **d.I.I$JZJZ.[*\;;'"2"22$$..43N3NtOhOh3i.k$$..$2M2MdN^N^2_.`..t~~>-O$$..$2M2Mdnn2].^$$..$2M2Mdnn2].^ +  ((*#' !!# ;;"  ($+MM$>!""$!!#!!&&y$..A!!&&y$..A!!&&|T]]C!!&&|T]]C5(..t~~>-O%%//43N3Nt~~3^/_%%//43N3Nt~~3^/_ )   ,!!))+$(!!!# -rn   c                 r   Su  pp4U R                   S:w  aP  SU R                   ;   a  Su  pSU R                   ;   a  Su  pSU R                   ;   a  Su  p4SU R                   ;   a  Su  p4U R                  [        U R                  S	-   U R                  5      5      nU R                  [        U R
                  U R                  S	-   U R                  5      5      nU R                  S
XS9  U R                  SX%S9  U R                  S
X6S9  U R                  SXFS9  U R                  S;   a  U R                  SS	S9  U R                  b8  U R                  b+  U R                  SS
U R                  U R                  5      S9  OU R                  SS
S9  U R                  SS
S9  U R                  SS	S9  OU R                  SS	S9  U R                  b8  U R                  b+  U R                  SS
U R                  U R                  5      S9  OU R                  SS
S9  U R                  SS
S9  U R                  SS	S9  U R                  S:X  aR  U R                  b  U R                  R                  SSSS9  U R                  b  U R                  R                  SS	SS9  ggU R                  S:X  aR  U R                  b  U R                  R                  SS	SS9  U R                  b  U R                  R                  SSSS9  ggU R                  S:X  aR  U R                  b  U R                  R                  S	SSS9  U R                  b  U R                  R                  SSSS9  ggU R                  S:X  aR  U R                  b  U R                  R                  SSSS9  U R                  b  U R                  R                  S	SSS9  ggg)zconfigure grid system (5x5) )  r   r   r   centern)r   r   s)r   r   ewr   r   )weightminsize   )rightleftr-   )r   N)r   r   r   r   )r4   r5   r8   r   topbottom)r]   r_   maxrA   rB   r=   grid_rowconfiguregrid_columnconfigurer\   rV   rM   r   rc   )ri   n_padding_weights_padding_weighte_padding_weightw_padding_weightscaled_minsize_rowsscaled_minsize_columnss          rl   r~   CTkButton._create_grid  s    RhN,<<<8#dll"5<2 dll"5<2 dll"5<2 dll"5<2 "88T=O=ORS=SUYUiUi9jk!%!;!;C@S@SUYUgUgjkUkmq  nB  nB  =C  "Dq)9Wq)9W!!!,<!]!!!,<!]>>..""1Q"/  ,1A1A1M))!At?Y?YZ^ZsZs?t)u))!A)6""6!"4%%fQ%7%%a%2  ,1A1A1M&&qD<V<VW[WpWp<q&r&&q&3%%fQ%7""6!"4>>W$  ,!!&&1Qs&C+  %%!Ac%B ,^^v%  ,!!&&1Qs&C+  %%!Ac%B ,^^u$  ,!!&&1Qs&C+  %%!Ac%B ,^^x'  ,!!&&1Qs&C+  %%!Ac%B , (rn   c                  	  > SU;   a(  UR                  S5      U l        U R                  5         SnSU;   a(  UR                  S5      U l        U R                  5         SnSU;   a(  UR                  S5      U l        U R                  5         SnSU;   a&  U R                  UR                  S5      SS9U l        SnSU;   a'  U R                  UR                  S5      5      U l        SnSU;   a'  U R                  UR                  S5      5      U l        SnS	U;   a'  U R                  UR                  S	5      5      U l	        SnS
U;   a'  U R                  UR                  S
5      5      U l
        SnSU;   a  UR                  S5      U l        SnSU;   aI  UR                  S5      U l        U R                  c  SnO#U R                  R                  U R                  S9  SU;   a  [        U R                   ["        5      (       a%  U R                   R%                  U R&                  5        U R)                  UR                  S5      5      U l        [        U R                   ["        5      (       a%  U R                   R+                  U R&                  5        U R'                  5         SU;   aF  UR                  S5      U l        U R                  b#  U R                  R                  U R,                  S9  SU;   a  [        U R.                  [0        5      (       a%  U R.                  R3                  U R4                  5        U R7                  UR                  S5      5      U l        [        U R.                  [0        5      (       a%  U R.                  R9                  U R4                  5        U R5                  5         SU;   a(  UR                  S5      U l        U R=                  5         SnSU;   a  UR                  S5      U l        SU;   a&  UR                  S5      U l         U R=                  5         SU;   a  UR                  S5      U l!        SnSU;   a(  UR                  S5      U l"        U R                  5         Sn[F        TU ]8  " SSU0UD6  g )Nr   Tr   r   r   r.   r   r   r   r   r    r#   )r#   r$   r%   )r%   r&   r'   r(   r)   r*   r+   require_redrawr9   )$popr=   r~   rA   rB   rC   rD   rE   rF   rG   rH   rI   rL   rM   r   rQ   rP   r   r   rS   rO   rR   rN   rU   r   remove_configure_callbackrX   rT   rW   rY   rg   rZ   r[   r\   r]   r:   )ri   r   rj   rk   s      rl   r   CTkButton.configure`  s   f$"(**_"=D!NV#!'N!;D!Nv%#)::.>#?D !N!33FJJz4JY]3^DN!NF" $ 6 6vzz-7P QD!NV#!%!7!7

>8R!SD!N6!#55fjj6NOD!N F*(,(>(>vzzJ_?`(aD%!N%/-3ZZ8R-SD*!NVF+DJ'!%  **

*;V$**g..

99$:K:KL..vzz&/ABDJ$**g..

66t7H7HIV#!'N!;D+  **8J8J*Kf$++x0055d6H6HI00G1DEDK$++x002243E3EF f **W-DK!Nf **W-DK"JJy1DM#ZZ
3DN!Nv!::h/DL!NBB6Brn   attribute_namereturnc                   > US:X  a  U R                   $ US:X  a  U R                  $ US:X  a  U R                  $ US:X  a  U R                  $ US:X  a  U R                  $ US:X  a  U R
                  $ US:X  a  U R                  $ US:X  a  U R                  $ US	:X  a  U R                  $ US
:X  a  U R                  $ US:X  a  U R                  $ US:X  a  U R                  $ US:X  a  U R                  $ US:X  a  U R                  $ US:X  a  U R                  $ US:X  a  U R                  $ US:X  a  U R                   $ US:X  a  U R"                  $ [$        TU ]M  U5      $ )Nr   r   r   r   r   r   r   r   r    r#   r$   r%   r&   r'   r(   r)   r*   r+   )r=   rA   rB   rD   rE   rF   rG   rH   rI   rL   rP   rN   rU   rY   rZ   r[   r\   r]   r:   cget)ri   r   rk   s     rl   r   CTkButton.cget  sk   _,&&&~-%%%//'''z)>>!},$$$~-%%%|+###44,,,99111v%::v%::~-%%%w&;;w&;;w&;;y(== z)>>!x'<<7<//rn   c                 r   U R                   (       Ga%  U R                  [        R                  :X  at  [        R
                  S:X  a  U R                  b  U R                  SS9  g [        R
                  R                  S5      (       a  U R                  b  U R                  SS9  g g g U R                  [        R                  :X  at  [        R
                  S:X  a  U R                  b  U R                  SS9  g [        R
                  R                  S5      (       a  U R                  b  U R                  SS9  g g g g g )Ndarwinarrow)cursorwinpointinghandhand2)
_cursor_manipulation_enabledrY   r   r   sysplatformr[   r   
startswithNORMALr   s    rl   rg   CTkButton._set_cursor  s    ,,,{{g...<<8+0INN'N2\\,,U338QNN'N2 9R3 .<<8+0INN.N9\\,,U338QNN'N2 9R3 / -rn   c                    U R                   SL a  U R                  S:X  a  U R                  c  U R                  nOU R                  nU R                  R                  SU R                  U5      U R                  U5      S9  U R                  b(  U R                  R                  U R                  U5      S9  U R                  b)  U R                  R                  U R                  U5      S9  g g g g )NTnormalr   r   r   )
rZ   rY   rE   rD   rb   r   r   rM   r   rV   ri   eventinner_parts_colors      rl   ru   CTkButton._on_enter  s    ;;$4;;(#:  ($(NN!$($5$5! LL##M,0,G,GHY,Z)-)D)DEV)W $ Y
 +  **d.I.IJ[.\*]   ,!!++t/J/JK\/]+^ -! $;rn   c                    SU l         U R                  S:X  a  U R                  nOU R                  nU R                  R	                  SU R                  U5      U R                  U5      S9  U R                  b(  U R                  R                  U R                  U5      S9  U R                  b)  U R                  R                  U R                  U5      S9  g g )NFr   r   r   r   )	r^   rD   r   rb   r   r   rM   r   rV   r   s      rl   rv   CTkButton._on_leave  s    (-%>>]* $ $ 	(,(C(CDU(V%)%@%@AR%S 	  	U
 '&&$*E*EFW*X&Y (''4+F+FGX+Y'Z )rn   c                 H    U R                   (       a  U R                  5         g g r   )r^   ru   r   s    rl   _click_animationCTkButton._click_animation  s    ((NN )rn   c                     U R                   [        R                  :w  aR  U R                  5         SU l        U R                  SU R                  5        U R                  b  U R                  5         g g g )NTd   )rY   r   r   rv   r^   afterr   r[   )ri   r   s     rl   rw   CTkButton._clicked!  sY    ;;'*** NN,0D)JJsD112}}( ) +rn   c                 |    U R                   [        R                  :w  a  U R                  b  U R                  5       $ gg)z1calls command function if button is not disabled N)rY   r   r   r[   r   s    rl   invokeCTkButton.invoke,  s4    ;;'***}}(}}& ) +rn   addc                    US:X  d  USL d  [        S5      eU R                  R                  XSS9  U R                  b  U R                  R                  XSS9  U R                  b  U R                  R                  XSS9  gg)zcalled on the tkinter.Canvas +TzE'add' argument can only be '+' or True to preserve internal callbacks)r   N)
ValueErrorrb   rt   rM   rV   )ri   ro   r)   r   s       rl   rt   CTkButton.bind2  s    s
cTkdee(6'!!(!>(""8$"? )rn   funcidc                    Ub  [        S5      eU R                  R                  US5        U R                  b  U R                  R                  US5        U R                  b  U R                  R                  US5        U R                  US9  g)z/called on the tkinter.Label and tkinter.Canvas Nz'funcid' argument can only be None, because there is a bug in tkinter and its not clear whether the internal callbacks will be unbinded or not)ro   )r   rb   unbindrM   rV   rf   )ri   ro   r   s      rl   r   CTkButton.unbind=  s     q r rHd+'##Hd3($$Xt4x0rn   c                 6    U R                   R                  5       $ r   )rM   focusr   s    rl   r  CTkButton.focusK  s    %%''rn   c                 6    U R                   R                  5       $ r   )rM   	focus_setr   s    rl   r  CTkButton.focus_setN  s    ))++rn   c                 6    U R                   R                  5       $ r   )rM   focus_forcer   s    rl   r	  CTkButton.focus_forceQ  s    ++--rn   )r]   rI   rF   rB   rA   rb   r^   r[   r\   r=   rd   rD   rP   rZ   rE   rU   rV   rK   rJ   rY   rL   rG   rH   rM   rN   )      NNr-   r   NNNNNNTTr   NNNr   TNr   r   r   )NN)F)NNT).__name__
__module____qualname____firstlineno____doc__r   int__annotations__r   r   r   strr   booltupler   r   Variabler   r   r;   rf   r}   r   r   rS   rX   r   rh   r~   r   anyr   rg   ru   rv   r   rw   r   rt   r   r  r  r	  __static_attributes____classcell__)rk   s   @rl   r   r      s8   
 !"#! "!04/3'(9FCGFJGKEINR]a596:(9=?CFJ&#;?!''7UUU U !)	U
  (}U "%U !eCHo!56U $E#uS#X*>$?@U 'uS%S/-A'BCU  (c5c?.B(CDU &eCsCx,@&ABU '/uS%S/5I/J&KU ,1uS%S/=Q7R1SUY1Y+ZU  /3!U" 04#U& 'U(  eWn 56)U*  %W%5%5t%;<+U, h(<dBC-U. /U0 1U2  S 14 783U4 5U6 7U UnD# D6*S   W?
e$N@CDZCx(03 (03 (0T3_([*	 '	@S 	@( 	@cSWiHX 	@1s 13 1(,. .rn   r   )r   r   typingr   r   r   r   r   core_renderingr	   r<   r
   r   core_widget_classesr   r$   r   r&   r   r   r9   rn   rl   <module>r     s1     
 8 8 %  & -  E	. E	.rn   