§
   zì	É´‡Dã                   ó  — d Z ddlZddlmZ ddlZdZdZ ej        d¦  «        ZdZ	dZ
d	Zd
Zd\  ZZdZdZdZdZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zefd„Zd„ Zd„ Zd„ Zd)d„Zd„ Zd„ Z d„ Z!d*d „Z"d+d!„Z#d*d"„Z$d#\  Z%Z&Z'd$„ Z(d%„ Z)d,d(„Z*dS )-aç  Hero of the cinematic Home sections (docs/plan/skin-milionar/190-cinema.md).

The skin draws the hero and the card captions from properties of the selected widget item, so every text is ready
here: Kodi labels have no letter spacing, no shrink-to-fit and no ellipsis in text boxes. `movie`, `series`,
`episode` and `channel` turn a card (wcs/library2/rows.py, wcs/skin/widgets.py) into those texts, `apply` writes them
to the item. Light imports only:
this runs in the widget fast path.
é    N)Úquotezplugin.video.milionarzhttps://image.tmdb.org/t/p/{}z&^(https://image\.tmdb\.org/t/p/)[^/]+/z'image://{}/transform?width=32&height=18u   â€Šé¾   éŒ   )i%  i&  )i'  i(  i)  )i+  i,  i-  i*  i½  iï  c                 ó^   — t          j        t          ¦  «                             | ¦  «        p|S ©N)Ú	xbmcaddonÚAddonÚADDON_IDÚgetLocalizedString)Ú	string_idÚfallbacks     ú[/Users/chudy/Library/Application Support/Kodi/addons/plugin.video.milionar/wcs/skin/hero.pyÚ_stringr      s%   € ÝŒ?�8Ñ$Ô$×7Ò7¸	ÑBÔBÐNÀhÐNó    c                 ó®   — t           dz  dz   t           dz  z                        d„ t          | pd¦  «                             ¦   «         D ¦   «         ¦  «        S )z9Hair spaces between the letters (the spaced kicker line).é   ú c              3   óJ   K  — | ]}t                                |¦  «        V — Œd S r   )ÚHAIRÚjoin)Ú.0Úwords     r   ú	<genexpr>ztrack.<locals>.<genexpr>$   s,   è è € Ð+`Ð+`À­D¯IªI°d©O¬OÐ+`Ð+`Ð+`Ð+`Ð+`Ð+`r   Ú )r   r   ÚstrÚsplit)Útexts    r   Útrackr   "   sM   € å�1‰H�s‰N�T A™XÑ%×+Ò+Ð+`Ð+`ÍÈDÈJÐTVÉÌ×H]ÒH]ÑH_ÔH_Ð+`Ñ+`Ô+`Ñ`Ô`Ð`r   c                 ó¢   — t          | pd¦  «        } | dk    rdS | dk    rd                     | dz  | dz  ¦  «        nd                     | ¦  «        S )Nr   r   é<   ú{}h {:02d}mz{}m)ÚintÚformat)Úminutess    r   Úruntimer%   '   s\   € Ý�'�,˜QÑÔ€GØ�!‚|€|ØˆrØ@GÈ2ÂÀˆ=×Ò ¨2¡¨w¸©|Ñ<Ô<Ð<ÐSX×S_ÒS_Ð`gÑShÔShÐhr   c                 ó¦   — t          | pd¦  «        } | dk    rdS t          || dk    rdn	| dk    rdnd         d¦  «                             | ¦  «        S )u\   '10 sÃ©riÃ­' with the plural form of `forms` (one, few, many); '' when the count is unknown.r   r   é   é   é   u   {} Ã—)r"   r   r#   )ÚcountÚformss     r   Úcountedr,   .   s[   € å��
˜‰OŒO€EØ�‚z€zØˆrÝ�5˜e qšj˜j˜˜°5¸A²:°:¨a¨aÀ1ÔEÀwÑOÔO×VÒVÐW\Ñ]Ô]Ð]r   c                 ó  — t          |                      d¦  «        pd¦  «        t          |                      d¦  «        pd¦  «        }}|r|                      d¦  «        €|S | d         s|dz   S |d|fv r|nd                     ||¦  «        S )uh   '1994â€“2004' of an ended series, '2019â€“' of a running one, the first year when the status is unknown.Úyearr   Úend_yearÚendedNu   â€“u   {}â€“{})r   Úgetr#   )ÚcardÚfirstÚlasts      r   Úyearsr5   6   s™   € å�d—h’h˜vÑ&Ô&Ð,¨"Ñ-Ô-­s°4·8²8¸JÑ3GÔ3GÐ3MÈ2Ñ/NÔ/Nˆ4€EØð �D—H’H˜WÑ%Ô%Ð-ØˆØ�Œ=ð Ø�u‰}ÐØ˜R ˜KÐ'Ð'ˆ5ˆ5¨Y×-=Ò-=¸eÀTÑ-JÔ-JÐJr   c                 ób   — t          t          | pd¦  «        ¦  «        }|dk    rdn	|dk    rdndS )z/Font step of the title: l (short), m, s (long).r   é   Úlé   ÚmÚs)Úlenr   )ÚtitleÚlengths     r   Úsizer?   @   s9   € å•�U�[˜bÑ!Ô!Ñ"Ô"€FØ˜B’,�,ˆ3ˆ3¨6°Rª<¨< C C¸SÐ@r   c                 ó  — d                      t          | pd¦  «                             ¦   «         ¦  «        } t          | ¦  «        |k    r| S | d |…                              dd¦  «        d                              d¦  «        dz   S )Nr   r   r'   r   z ,.;:-u   â€¦)r   r   r   r<   ÚrsplitÚrstrip)r   Úlimits     r   ÚplotrD   F   su   € Ø�8Š8•C˜˜
 ‘O”O×)Ò)Ñ+Ô+Ñ,Ô,€DÝ
ˆ4�y„y�EÒÐØˆØ���Œ<×Ò˜s AÑ&Ô& qÔ)×0Ò0°Ñ:Ô:¸UÑBÐBr   c           	      ó|  — t          | pd¦  «        t          |pd¦  «        }} | dk    s|| k    rdS t          dt          t          || z
  dz  ¦  «        ¦  «        ¦  «        }|dk    r/t	          t
          d¦  «                             |dz  |dz  ¦  «        S t	          t          d¦  «                             |¦  «        S )u9   '23 min zbÃ½vÃ¡' of a playback in progress, '' otherwise.r   r   r'   g      N@r    r!   z{} min)ÚfloatÚmaxr"   Úroundr   ÚS_LEFT_HOURSr#   Ú
S_LEFT_MIN)ÚpositionÚtotalr$   s      r   ÚleftrM   M   s´   € å˜H˜M¨Ñ*Ô*­E°%°*¸1Ñ,=Ô,=ˆe€HØ�1‚}€}˜ Ò)Ð)ØˆrÝ�!•S� ¨Ñ 0°DÑ8Ñ9Ô9Ñ:Ô:Ñ;Ô;€GØ�"‚}€}Ý•| ]Ñ3Ô3×:Ò:¸7Àb¹=È'ÐTVÉ,ÑWÔWÐWÝ•:˜xÑ(Ô(×/Ò/°Ñ8Ô8Ð8r   c                 ó  — |                       d¦  «        pd}|                     d¦  «        s|                       d¦  «        pdS 	 ddlm}  |¦   «         }n# t          $ r d}Y nw xY wt
                               |rdnd	¦  «        |z   S )
zKThe backdrop in the size of the screen (the row art is a small card image).Úbackdropr   ú/Úfanartr   )ÚenabledFÚw780Úoriginal)r1   Ú
startswithÚwcs.skin.performancerR   ÚImportErrorÚBACKDROPr#   )r2   ÚpathrR   Úlows       r   rQ   rQ   X   s«   € à�8Š8�JÑÔÐ% 2€DØ�?Š?˜3ÑÔð (Ø�xŠx˜Ñ!Ô!Ð' RÐ'ðØ0Ð0Ð0Ð0Ð0Ð0Øˆg‰iŒiˆˆøÝð ð ð Øˆˆˆðøøøå�?Š? SÐ8˜6˜6¨jÑ9Ô9¸DÑ@Ð@s   ÁA ÁA%Á$A%c                 óŽ   — | sdS t                                t          t                               d| ¦  «        d¬¦  «        ¦  «        S )aE  The backdrop as a tiny texture made by Kodi's own texture cache (`image://<url>/transform?width=..`).

    The modern skin stretches it over the screen: a soft blur behind its glass panels with no image library on the
    device (docs/plan/skin-milionar/240-modern.md). A TMDb backdrop is fetched in its smallest size for it.r   z\1w300/)Úsafe)ÚBLURr#   r   Ú	TMDB_SIZEÚsub)Úurls    r   Úblurra   e   s>   € ð
 ð ØˆrÝ�;Š;•u�YŸ]š]¨:°sÑ;Ô;À"ÐEÑEÔEÑFÔFÐFr   r   c                 ó0  — |                       d¦  «        pd}t          |                       d¦  «        pd¦  «                             ¦   «         gd„ |D ¦   «         z   }t          |                       d¦  «        pd¦  «        }t	          | ¦  «        }|t          |¦  «        t          d                     d„ |D ¦   «         ¦  «        ¦  «        |rd	                     |¦  «        ndt          |                       d
¦  «        ¦  «        |||t          |¦  «        dddœS )z�Texts of a card: `facts` follow the genre in the kicker, `caption` stands by the hero's progress bar and
    `note` on the right of a wide card.r=   r   Úgenrec                 ó0   — g | ]}t          |pd ¦  «        ‘ŒS ©r   )r   )r   Úfacts     r   ú
<listcomp>z_texts.<locals>.<listcomp>s   s"   € Ð5XÐ5XÐ5XÈ$µc¸$¸*À"±o´oÐ5XÐ5XÐ5Xr   Úratingr   õ    Â· c              3   ó   K  — | ]}|¯|V — Œ	d S r   © ©r   Úps     r   r   z_texts.<locals>.<genexpr>v   s)   è è € ÐLcÐLcÐSTÐabÐLcÈQÐLcÐLcÐLcÐLcÐLcÐLcr   z{:.1f}rD   ©r=   r?   Úkickerrh   rD   rM   ÚnoterQ   ra   ÚbadgeÚnow)r1   r   ÚupperrF   rQ   r?   r   r   r#   rD   ra   )r2   ÚfactsÚcaptionrp   r=   Úpartsrh   rO   s           r   Ú_textsrw   o   s  € ð �HŠH�WÑÔÐ# €EÝ�—’˜'Ñ"Ô"Ð( bÑ)Ô)×/Ò/Ñ1Ô1Ð2Ð5XÐ5XÐRWÐ5XÑ5XÔ5XÑX€EÝ�4—8’8˜HÑ%Ô%Ð*¨Ñ+Ô+€FÝ�d‰|Œ|€HØ¥D¨¡K¤K½5ÀÇÂÐLcÐLcÐX]ÐLcÑLcÔLcÑAcÔAcÑ;dÔ;dØ17Ð?�h—o’o fÑ-Ô-Ð-¸RÍÈdÏhÊhÐW]ÑN^ÔN^ÑI_ÔI_ÐipØ Hµd¸8±n´nÈrÐZ\ð^ð ^ð ^r   c           	      óü   — t          |                      d¦  «        |                      d¦  «        ¦  «        }t          | |                      d¦  «        t          |                      d¦  «        ¦  «        f||¦  «        S )NÚresumeÚresume_totalr.   r%   )rM   r1   rw   r%   )r2   Ú	remainings     r   Úmovier|   {   sc   € Ý�T—X’X˜hÑ'Ô'¨¯ª°.Ñ)AÔ)AÑBÔB€IÝ�$˜Ÿš &Ñ)Ô)­7°4·8²8¸IÑ3FÔ3FÑ+GÔ+GÐHÈ)ÐU^Ñ_Ô_Ð_r   c                 óp   — t          |                      d¦  «        t          ¦  «        t          | ¦  «        fS )NÚseasons)r,   r1   Ú	S_SEASONSr5   ©r2   s    r   Ú_series_factsr�   €   s)   € Ý�4—8’8˜IÑ&Ô&­	Ñ2Ô2µE¸$±K´KÐ?Ð?r   c                 ó<   — t          | t          | ¦  «        ¦  «        S r   )rw   r�   r€   s    r   Úseriesrƒ   „   s   € Ý�$� dÑ+Ô+Ñ,Ô,Ð,r   c           	      ó2  — d                      |d         |d         ¦  «        }|p5t          |                     d¦  «        |                     d¦  «        ¦  «        }t          | t	          | ¦  «        d                     d„ ||fD ¦   «         ¦  «        |¦  «        S )zfAn episode shows its series; `status` replaces the time left (the air date of an episode not out yet).õ
   S{} Â· E{}r;   ÚeÚ
resume_posrz   ri   c              3   ó   K  — | ]}|¯|V — Œ	d S r   rk   rl   s     r   r   zepisode.<locals>.<genexpr>Œ   s(   è è € Ð8[Ð8[¸qÐYZÐ8[¸Ð8[Ð8[Ð8[Ð8[Ð8[Ð8[r   )r#   rM   r1   rw   r�   r   )r2   ÚepisodeÚstateÚstatusÚcoder{   s         r   r‰   r‰   ˆ   sˆ   € à×Ò˜w sœ|¨W°S¬\Ñ:Ô:€DØÐR�$˜uŸyšy¨Ñ6Ô6¸¿	º	À.Ñ8QÔ8QÑRÔR€IÝ�$� dÑ+Ô+¨V¯[ª[Ð8[Ð8[ÀTÈ9ÐDUÐ8[Ñ8[Ô8[Ñ-[Ô-[Ð]aÑbÔbÐbr   c                 ó˜  — d                      d„ |D ¦   «         ¦  «        }t          |pi | t          t          d¦  «        |d¬¦  «        }|s1t	          |t          t          |¦  «        t          ¦  «        f¦  «        S d                     |d         |d         ¦  «        }| 	                    d	¦  «        pi }t          | 	                    d
¦  «        | 	                    d¦  «        ¦  «        }t	          |t          t          |¦  «        t          ¦  «        f|rd                      ||f¦  «        nd¦  «        }	d                      d„ |d                      t          | 	                    d¦  «        pd¦  «                             ¦   «         ¦  «        fD ¦   «         ¦  «        }
|	                     t          t          d¦  «                             ¦   «         | 	                    d¦  «        pdd                      d„ |
t!          | 	                    d¦  «        t"          ¦  «        pt!          |t"          ¦  «        fD ¦   «         ¦  «        ¬¦  «         |	S )aö  A MyTV / MyCinema channel: its name, how many titles it has and which; `backdrop`: a card of one of them.

    `now` (MyTV): what the channel plays next {'series', 's', 'e', 'title', 'plot', 'state'}. The hero then has the
    lines of any other hero: where a title has its rating stands the badge "on now" with the series (`badge`, `now`),
    the text box starts with the episode and continues with its plot (the channel's titles when it has none), and an
    episode in progress gives the time left.z, c              3   ó   K  — | ]}|¯|V — Œ	d S r   rk   )r   Úts     r   r   zchannel.<locals>.<genexpr>–   s'   è è € Ð-Ð-˜A¨1Ð-�aÐ-Ð-Ð-Ð-Ð-Ð-r   ÚTVr   )r=   rc   rD   rh   r…   r;   r†   rŠ   r‡   rz   ri   r   c              3   ó   K  — | ]}|¯|V — Œ	d S r   rk   rl   s     r   r   zchannel.<locals>.<genexpr>ž   s(   è è € Ð^Ð^˜aÐ\]Ð^˜Ð^Ð^Ð^Ð^Ð^Ð^r   r   r=   zOn nowrƒ   z[CR]c              3   ó   K  — | ]}|¯|V — Œ	d S r   rk   rl   s     r   r   zchannel.<locals>.<genexpr>    sC   è è € ð  "Að  "A¨Ð~ð  "A !ð  "Að  "Að  "Að  "Að  "Að  "Ar   rD   )rq   rr   rD   )r   Údictr   Ú	S_CHANNELrw   r,   r<   ÚS_TITLESr#   r1   rM   r   r   ÚupdateÚS_ON_NOWrs   rD   ÚNOW_PLOT_CHARS)ÚnameÚtitlesrO   rr   Únamesr2   rŒ   rŠ   r{   Útextsr3   s              r   Úchannelr�   �   s  € ð �IŠIÐ-Ð- Ð-Ñ-Ô-Ñ-Ô-€EÝ��˜B dµ'½)ÀTÑ2JÔ2JÐQVÐ_`ÐaÑaÔa€DØð ?Ý�d�W¥S¨¡[¤[µ(Ñ;Ô;Ð=Ñ>Ô>Ð>Ø×Ò˜s 3œx¨¨S¬Ñ2Ô2€DØ�GŠG�GÑÔÐ" €EÝ�U—Y’Y˜|Ñ,Ô,¨e¯iªi¸Ñ.GÔ.GÑHÔH€IÝ�4�'¥# f¡+¤+­xÑ8Ô8Ð:Ð^gÐ<o¸F¿KºKÈÈyÐHYÑ<ZÔ<ZÐ<ZÐmoÑpÔp€EØ�KŠKÐ^Ð^ D¨#¯(ª(µ3°s·w²w¸wÑ7GÔ7GÐ7MÈ2Ñ3NÔ3N×3TÒ3TÑ3VÔ3VÑ*WÔ*WÐ#XÐ^Ñ^Ô^Ñ^Ô^€EØ	‡L‚L•w�x¨Ñ2Ô2×8Ò8Ñ:Ô:ÀÇÂÈÑ@QÔ@QÐ@WÐUWØ—k’kð  "Að  "A¨eµT¸#¿'º'À&¹/¼/Í>Ñ5ZÔ5ZÐ5yÕ^bÐchÕjxÑ^yÔ^yÐ-zð  "Añ  "Aô  "Añ  Aô  Að ñ Bô Bð Bà€Lr   c                 ó¸  — |t          |¦  «        |dt          |¦  «        pt          t          d¦  «        dd|t	          |¦  «        t          dd¦  «        t          dd¦  «        dœ}|                     ¦   «         D ]\  }}|                      d|z   |¦  «         Œ|                      dd¦  «         |D ]\  }	}
}t          | |	|
|¦  «         Œt          | ¦  «         d	S )
u¢   A card of the MilionÃ¡Å™ section: the selected title, synopsis and challenge kind, and the
    Home buttons `buttons` [(action id, label, builtin)] of every card.r   ið  z9 questionsiñ  u    3 lifelines Â· 1 virtual millionrn   úmilionar.hero.úmilionar.hero.resumableN)	r?   rD   r   ÚS_GAME_PLOTra   ÚitemsÚsetPropertyÚdirectÚdefault_buttons)Úitemr=   ro   rO   ÚbuttonsÚdescriptionrœ   ÚkeyÚvalueÚactionÚlabelÚbuiltins               r   Ú	challenger®   ¤   s  € ð ¥T¨%¡[¤[¸FÈbÕZ^Ð_jÑZkÔZkð  [HÕovõ  xCð  EGñ  pHô  pHØ ¨xÅÀhÁÄÝ˜e ]Ñ3Ô3Ý˜EÐ#EÑFÔFðHð H€Eð —k’k‘m”mð 8ð 8‰
ˆˆUØ×ÒÐ)¨CÑ/°Ñ7Ô7Ð7Ð7Ø×ÒÐ.°Ñ3Ô3Ð3Ø")ð -ð -Ñˆ��wÝˆt�V˜U GÑ,Ô,Ð,Ð,Ý�DÑÔÐÐÐr   )iž|  éÐ   i÷|  c                 ó<  — |r|sdS d„ |                       d¦  «                             d¦  «        D ¦   «         }||vr-|                      dd                     ||gz   ¦  «        ¦  «         |                      d|z   |¦  «         |                      d|z   |¦  «         dS )zbRegister a builtin the builder already has for a context action; the hero buttons use it as it is.Nc                 ó   — g | ]}|¯|‘ŒS rk   rk   )r   Úas     r   rg   zdirect.<locals>.<listcomp>º   s   € Ð
PÐ
PÐ
P�ÈaÐ
Pˆ1Ð
PÐ
PÐ
Pr   zmilionar.hero.directsú,zmilionar.hero.dl.zmilionar.hero.do.)ÚgetPropertyr   r£   r   )r¦   r«   r¬   r­   Úidss        r   r¤   r¤   ¶   s¸   € àð ˜&ð ØˆØ
PÐ
P�d×&Ò&Ð'>Ñ?Ô?×EÒEÀcÑJÔJÐ
PÑ
PÔ
P€CØ�SÐÐØ×ÒÐ0°#·(²(¸3À&À¹>Ñ2JÔ2JÑKÔKÐKØ×ÒÐ(¨6Ñ1°5Ñ9Ô9Ð9Ø×ÒÐ(¨6Ñ1°7Ñ;Ô;Ð;Ð;Ð;r   c                 óœ   — ddl m} |                     | d„ |                     | ¦  «                             ¦   «         D ¦   «         ¦  «         dS )zYThe buttons of an item nobody configured: the registered builtins in the builder's order.r   )Úhero_buttonsc                 ó    — g | ]\  }}||fz   ‘ŒS rk   rk   )r   r«   Úvaluess      r   rg   z#default_buttons.<locals>.<listcomp>Ä   s#   € ÐjÐjÐj±^°V¸V˜f¨ yÑ0ÐjÐjÐjr   N)Úwcs.skinr·   ÚwriteÚdirectsr¢   )r¦   r·   s     r   r¥   r¥   Á   sZ   € à%Ð%Ð%Ð%Ð%Ð%Ø×Ò�tÐjÐjÀ|×G[ÒG[Ð\`ÑGaÔGa×GgÒGgÑGiÔGiÐjÑjÔjÑkÔkÐkÐkÐkr   ©ÚplayÚdetailFc                 óÜ  — ddl }t          |||¬¦  «                             ¦   «         D ]\  }}	|                      d|z   |	¦  «         Œ|                      d|rdnd¦  «         |p<|                     |rt
          nt          ¦  «        |                     t          ¦  «        f}t          | |d         |d         |¦  «         t          | |d         |d         |¦  «         t          | ¦  «         dS )	uÞ  Write the texts and the builtins of the two hero buttons to the item's `milionar.hero.*` properties.

    `ids`: the context actions `play` and `detail` stand for (a series plays its `next` episode, a channel goes `live`
    and `open`s; '' registers none); `resumable`: the primary button reads PokraÄ�ovat; `labels`: other captions of the
    two. The hero shows these two until context.attach lays the buttons out by the widget's configuration
    (wcs/skin/hero_buttons.py).r   Nr½   rŸ   r    Ú1r   r'   )
Úxbmcr“   r¢   r£   r   Ú
S_CONTINUEÚS_PLAYÚS_INFOr¤   r¥   )
r¦   rœ   r¾   r¿   rµ   Ú	resumableÚlabelsrÂ   r©   rª   s
             r   ÚapplyrÈ   Ç   sü   € ð €K€K€KÝ˜5 t°FÐ;Ñ;Ô;×AÒAÑCÔCð 8ð 8‰
ˆˆUØ×ÒÐ)¨CÑ/°Ñ7Ô7Ð7Ð7Ø×ÒÐ.°yÐ0H°°ÀbÑIÔIÐIØÐv˜×/Ò/¸iÐ0Sµ
°
ÍVÑTÔTÐVZ×VmÒVmÕntÑVuÔVuÐv€FÝ
ˆ4��Q”˜ œ DÑ)Ô)Ð)Ý
ˆ4��Q”˜ œ FÑ+Ô+Ð+Ý�DÑÔÐÐÐr   )r   r   re   )NN)r½   FN)+Ú__doc__ÚreÚurllib.parser   r   r
   rX   Úcompiler^   r]   r   Ú
PLOT_CHARSr˜   rJ   rI   r   r•   r”   r—   r¡   r   r   r%   r,   r5   r?   rD   rM   rQ   ra   rw   r|   r�   rƒ   r‰   r�   r®   rÃ   rÄ   rÅ   r¤   r¥   rÈ   rk   r   r   ú<module>rÎ      s  ððð ð 
€	€	€	Ø Ð Ð Ð Ð Ð à Ð Ð Ð à"€Ø*€ØˆBŒJÐ@ÑAÔA€	Ø0€Ø€Ø€
Ø€Ø'Ñ €
ˆLØ!€	Ø €Ø€	Ø€Ø€ðOð Oð Oðað að að
ið ið ið^ð ^ð ^ðKð Kð KðAð Að Að  ð Cð Cð Cð Cð9ð 9ð 9ð
Að 
Að 
AðGð Gð Gð	^ð 	^ð 	^ð 	^ð`ð `ð `ð
@ð @ð @ð-ð -ð -ðcð cð cð cðð ð ð ð*ð ð ð ð /Ñ €
ˆF�Fð<ð <ð <ðlð lð lðð ð ð ð ð r   