ó
    ™ªÄjC,  ã                   óÈ  • S r SSKrSSKJrJrJrJr  SSKJrJrJ	r	J
r
Jr  SSKJrJr  SSKrSSKrSSKJr  SSKJr  SrS	rS
SS.rS\4S jrS\4S jrS\	\   S\4S jrS\
\   4S jrS\	\   S\\	\   \	\   4   4S jrS\S\SS4S jrS\4S jrS\ 4S jr!S\\\"4   4S jr#S\	\   S\ 4S jr$S\	\   S\%4S jr&S\	\   S \S\\\4   4S! jr'S%S"\S\ 4S# jjr(S\ 4S$ jr)g)&u¸  â€žSzabadsÃ¡gon vagyokâ€� (v35) - a felhasznÃ¡lÃ³ szabadsÃ¡ga alatt nem kap e-mailt, a kimaradtakrÃ³l a visszatÃ©rÃ©sekor EGY Ã¶sszegzÅ‘ levelet kap.

MEGRENDELÅ�I SZABÃ�LYOK (v35)
    * A felhasznÃ¡lÃ³ a Profilom oldalon (`/profil`) kapcsolja be; opcionÃ¡lisan megadhatja a VISSZATÃ‰RÃ‰S NAPJÃ�T - azon a napon (helyi idÅ‘ szerint 00:00 utÃ¡n,
      az Ã¼temezÅ‘ 5 percenkÃ©nt nÃ©zi) a szabadsÃ¡g magÃ¡tÃ³l vÃ©get Ã©r. DÃ¡tum nÃ©lkÃ¼l addig tart, amÃ­g a felhasznÃ¡lÃ³ ki nem kapcsolja.
    * AmÃ­g be van kapcsolva, a felhasznÃ¡lÃ³ NEM kap leveleket (riasztÃ¡s, napi riport, minden jÃ¶vÅ‘beli kategÃ³ria) - KIVÃ‰VE a fiÃ³kot / a rendszert vÃ©dÅ‘
      biztonsÃ¡gi leveleket (jelszÃ³/2FA/mentÅ‘kÃ³d-Ã©rtesÃ­tÅ‘k, aktivÃ¡lÃ³ link, bejelentkezÃ©si tiltÃ¡s: `email_sor.SZABADSAG_ALATT_IS_KULDOTT_KATEGORIAK`).
    * A szabadsÃ¡g VÃ‰GÃ‰N (kÃ©zi kikapcsolÃ¡s vagy a visszatÃ©rÃ©s napja) egyetlen Ã–SSZEGZÅ� levÃ©l megy: kategÃ³riÃ¡nkÃ©nt darabszÃ¡m + a tÃ¡rgysorok listÃ¡ja idÅ‘ponttal
      (kategÃ³riÃ¡nkÃ©nt legfeljebb MAX_SOR_KATEGORIANKENT sor, a tÃ¶bbit "Ã©s mÃ©g N db" jelzi). Ha nem maradt ki semmi, levÃ©l sem megy.

MÅ°KÃ–DÃ‰S
    1. `email_sor.sorba_allit()` minden cÃ­mzettnÃ©l megnÃ©zi, hogy szabadsÃ¡gon van-e (`szabadsagon_levo_cimek`); ha igen (Ã©s a kategÃ³ria nem biztonsÃ¡gi),
       a sor `visszatartva` Ã¡llapotba kerÃ¼l (a kiÃ¼rÃ­tÅ‘ csak a `varakozik` sorokat kÃ¼ldi), a tÃ¶rzs nem Å‘rzÅ‘dik meg.
    2. `kezdes()`: bekapcsolja a jelzÅ‘t, Ã©s a mÃ¡r sorban Ã¡llÃ³ (mÃ©g el nem kÃ¼ldÃ¶tt) nem biztonsÃ¡gi leveleket is visszatartja.
    3. `befejezes()`: kikapcsolja a jelzÅ‘t, a visszatartott sorokbÃ³l Ã¶sszegzÅ‘t kÃ©szÃ­t (a rendszer kategÃ³riÃ¡ban, tehÃ¡t az sosem tartÃ³dik vissza),
       a sorokat `osszegezve` Ã¡llapotra Ã¡llÃ­tja. Mindez EGY tranzakciÃ³ (a hÃ­vÃ³ commitol): ha bÃ¡rmi elbukik, semmi nem vÃ¡ltozik, Ã©s a szabadsÃ¡g
       tovÃ¡bb tart (az automatikus vÃ©g a kÃ¶vetkezÅ‘ futÃ¡skor Ãºjra prÃ³bÃ¡lkozik).
    4. `lejarat_ellenorzes()`: az Ã¼temezÅ‘ (main.py, 5 percenkÃ©nt) hÃ­vja; a lejÃ¡rt visszatÃ©rÃ©si napÃº szabadsÃ¡gokat lezÃ¡rja.
Minden mÃ³dosÃ­tÃ³ mÅ±velet a JogosultsÃ¡gi naplÃ³ba is Ã­r (â€žSzabadsÃ¡gon vagyokâ€�). Egyik fÃ¼ggvÃ©ny sem commitol, kivÃ©ve a `lejarat_ellenorzes()`.
é    N)ÚdateÚdatetimeÚ	timedeltaÚtimezone)ÚDictÚListÚOptionalÚSetÚTuple)ÚfuncÚor_)ÚSessionLocal)ÚHELYI_TZé   in  u   RiasztÃ¡sokzNapi riportok)ÚriasztasÚnapi_riportÚreturnc                  ód   • [         R                  " [        R                  5      R	                  S S9$ )N©Útzinfo)r   Únowr   ÚutcÚreplace© ó    Ú#/var/www/website/szabadsag_utils.pyÚ	_utc_mostr   %   s#   € Ü�<Š<œŸ™Ó%×-Ñ-°TÐ-Ð:Ð:r   c                  óR   • [         R                  " [        5      R                  5       $ ©N)r   r   r   r   r   r   r   Ú	_helyi_mar    )   s   € Ü�<Š<œÓ!×&Ñ&Ó(Ð(r   Úutc_naivc                 óˆ   • U c  gU R                  [        R                  S9R                  [        5      R                  S5      $ )NÚ?r   z%Y-%m-%d %H:%M)r   r   r   Ú
astimezoner   Ústrftime)r!   s    r   Ú_helyi_szovegr&   -   s:   € ØÑØØ×Ñ¤8§<¡<ÐÐ0×;Ñ;¼HÓE×NÑNÐO_Ó`Ð`r   c                 óD  • [        U Vs1 s H  o"(       d  M  UR                  5       iM     sn5      nU(       d
  [        5       $ U R                  [        R
                  R                  5      R                  [        R
                  R                  R                  S5      [        R                  " [        R
                  R                  5      R                  U5      5      R                  5       nU Vs1 s H  u  oU=(       d    SR                  5       iM     sn$ s  snf s  snf )u{   A megadott cÃ­mek kÃ¶zÃ¼l azok (KISBETÅ°VEL), amelyek tulajdonosa szabadsÃ¡gon van. A sorba_allit hÃ­vja minden levÃ©lnÃ©l.TÚ )ÚsortedÚlowerÚsetÚqueryÚmodelsÚUserÚemailÚfilterÚszabadsagonÚis_r   Úin_Úall)ÚdbÚcimekÚcÚkisbetusÚsorokÚes         r   Úszabadsagon_levo_cimekr;   3   sÁ   € ä©%Ó5ª% Q³1“y�q—w‘w–y©%Ñ5Ó6€HÞÜ‹uˆØ�H‰H”V—[‘[×&Ñ&Ó'×.Ñ.Ü�‰×Ñ×#Ñ# DÓ)¬4¯:ª:´f·k±k×6GÑ6GÓ+H×+LÑ+LÈXÓ+VóXßX[ÑX[ÓX]ð 
á*/Ó0ª%¡$ 1�W�"�O‰OÖ©%Ñ0Ð0ùò 6ùò
 1s   Š
D˜DÃ1$DÚszovegc                 óø   • U =(       d    SR                  5       n U (       d  g [        R                  " U 5      n[	        5       nX::  a  gX[        [        S9-   :”  a  SS[         S34$ US4$ ! [         a     gf = f)	ut   A beÃ­rt visszatÃ©rÃ©si nap (Ã‰Ã‰Ã‰Ã‰-HH-NN) ellenÅ‘rzÃ©se. Ãœres -> (None, None). Hiba esetÃ©n (None, hibaÃ¼zenet).r(   )NN)Nu   Ã‰rvÃ©nytelen dÃ¡tum.)Nu?   A visszatÃ©rÃ©s napja a jÃ¶vÅ‘ben legyen (legkorÃ¡bban holnap).©ÚdaysNu!   A visszatÃ©rÃ©s napja legfeljebb u    nappal lehet a jÃ¶vÅ‘ben.)Ústripr   ÚfromisoformatÚ
ValueErrorr    r   ÚMAX_NAP)r<   ÚnapÚmas      r   Úvisszateres_ellenorzeserF   =   s„   € à�l˜×!Ñ!Ó#€FÞØð-Ü× Ò  Ó(ˆô 
‹€BØ
ƒyØVØ
”)¤Ñ)Ñ)Ó)ØÐ8¼¸	ÐA[Ð\Ð\Ð\Ø�ˆ9Ðøô ó -Ù,ð-ús   £A, Á,
A9Á8A9ÚregiÚujc           
      óx   • U R                  [        R                  " UR                  UR                  SX#S95        g )Nu   SzabadsÃ¡gon vagyok)Ú
company_idÚuser_idÚ
field_nameÚ	old_valueÚ	new_value)Úaddr-   ÚAuditLogrJ   Úid)r5   ÚuserrG   rH   s       r   Ú_naplorS   N   s-   € Ø‡F�FŒ6�?Š? d§o¡o¸t¿w¹wÐShÐtxñ  Hõ  Ir   Úallapotc                 ó  • [         R                  nU R                  U5      R                  [        R
                  " UR                  5      UR                  =(       d    SR                  5       :H  UR                  U:H  5      $ )Nr(   )	r-   ÚEmailKimenor,   r0   r   r*   Úcimzettr/   rT   )r5   rR   rT   ÚKs       r   Ú_sajat_sorokrY   R   sY   € Ü×Ñ€AØ�8‰8�A‹;×ÑœdŸjšj¨¯©Ó3¸¿
¹
×8HÀb×7OÑ7OÓ7QÑQÐST×S\ÑS\Ð`gÑSgÓhÐhr   c                 óR   • [        X[        R                  5      R                  5       $ r   )rY   Ú	email_sorÚALLAPOT_VISSZATARTVAÚcount)r5   rR   s     r   Úvisszatartott_darabr^   W   s   € Ü˜¤)×"@Ñ"@ÓA×GÑGÓIÐIr   c           
      óH  • [        UR                  5      nUU(       a  [        UR                  5      OSU(       a  UR                  OSU(       a  [        X5      OS[        5       [        SS9-   R                  5       [        5       [        [        S9-   R                  5       S.$ )ui   A Profilom oldal adata: be van-e kapcsolva, miÃ³ta, mikor jÃ¡r le, hÃ¡ny levelet tartottunk vissza eddig.Nr   é   r>   )ÚaktivÚkezdeteÚvisszateresÚvisszatartottÚholnapÚ	max_datum)
Úboolr1   r&   Úszabadsag_kezdete_atÚszabadsag_visszateresr^   r    r   Ú	isoformatrC   )r5   rR   ra   s      r   rT   rT   [   s{   € ä�×!Ñ!Ó"€EàÞ?D”= ×!:Ñ!:Ô;È$Þ5:�t×1Ò1ÀÞ:?Ô,¨RÔ6ÀQÜ“;¤°Ñ!2Ñ2×=Ñ=Ó?Ü“k¤I´7Ñ$;Ñ;×FÑFÓHñð r   rc   c           
      óì  • SUl         [        5       Ul        X!l        [        R
                  n[        X[        R                  5      R                  [        UR                  R                  S5      UR                  R                  [        [        R                  5      5      ) 5      5      R!                  [        R"                  SS.SS9n[%        XSSU(       a  S	UR'                  5        S
3OS-   5        U$ )ux   A szabadsÃ¡g bekapcsolÃ¡sa. VisszatÃ©r: a mÃ¡r sorban Ã¡llÃ³, ezÃ©rt utÃ³lag visszatartott levelek szÃ¡ma. Nem commitol.TNr(   )rT   Ú
torzs_htmlF)Úsynchronize_sessionÚkikapcsolvaÚbekapcsolvau    (visszatÃ©rÃ©s: Ú)u    (visszatÃ©rÃ©si nap nÃ©lkÃ¼l))r1   r   rh   ri   r-   rV   rY   r[   ÚALLAPOT_VARAKOZIKr0   r   Ú	kategoriar2   r3   r)   Ú%SZABADSAG_ALATT_IS_KULDOTT_KATEGORIAKÚupdater\   rS   rj   )r5   rR   rc   rX   Údarabs        r   Úkezdesrv   h   sÎ   € à€DÔÜ )£€DÔØ!,ÔÜ×Ñ€Aä˜¤9×#>Ñ#>Ó?×FÑFÜˆA�K‰K�O‰O˜DÓ! A§K¡K§O¡O´F¼9×;jÑ;jÓ4kÓ$lÐ#lÓmóç�fœ×7Ñ7ÀrÑJÐ`e€fÐfð 
ô ˆ2�] MÖgrÐ7HÈ×I^ÑI^ÓI`ÐHaÐabÑ5cð  yYñ  %Zô  [Ø€Lr   c                 óà   • UR                   U:X  a  gUR                   (       a  UR                   R                  5       OSnX!l         [        XSU 3SU(       a  UR                  5       OS 35        g)ul   Bekapcsolt szabadsÃ¡g visszatÃ©rÃ©si napjÃ¡nak mÃ³dosÃ­tÃ¡sa / tÃ¶rlÃ©se. Igaz, ha vÃ¡ltozott. Nem commitol.FÚnincsu   visszatÃ©rÃ©s: T)ri   rj   rS   )r5   rR   rc   rG   s       r   Údatum_modositasary   v   se   € à×!Ñ! [Ó0ØØ59×5O×5Oˆ4×%Ñ%×/Ñ/Ô1ÐU\€DØ!,ÔÜ
ˆ2� t fÐ-°Ö\gÀ×AVÑAVÔAXÐmtÐ@uÐ/vÔwØr   ÚkezdetÚvegc                 óæ  • S n0 nU H7  nUR                  UR                  =(       d    S/ 5      R                  U5        M9     S n[        U5      nSU S3n	SSSU" U R                  5       S	U" [        U5      5       S
U" [        U5      5       SU S3	S/n
UR                  5        H2  u  p¼U
R                  SU" U" U5      5       S[        U5       S35        M4     U
R                  S5        UR                  5        HÌ  u  p¼U
R                  SU" U" U5      5       S[        U5       S35        US[          HD  nU
R                  SU" [        UR                  5      5       SU" UR                  5       S35        MF     [        U5      [        :”  a%  U
R                  S[        U5      [        -
   S35        U
R                  S5        MÎ     U
R                  S5        U	SR                  U
5      4$ )uf   Az Ã¶sszegzÅ‘ levÃ©l (tÃ¡rgy, HTML tÃ¶rzs). Minden vÃ¡ltozÃ³ adat html.escape-pelve kerÃ¼l a tÃ¶rzsbe.c                 óN   • [         R                  " U c  SSS9$ [        U 5      SS9$ )Nr(   T)Úquote)ÚhtmlÚescapeÚstr)Úxs    r   Ú<lambda>Ú"osszegzo_epitese.<locals>.<lambda>‚   s   € ”$—+’+ A¡I˜bÀÒF´3°q³6ÀÒFr   Úegyebc                 ó,   • [         R                  X 5      $ r   )ÚKATEGORIA_NEVEKÚget)Úks    r   rƒ   r„   †   s   € ”O×'Ñ'¨Ô-r   u   Ã–sszegzÃ©s: u&    levÃ©l maradt ki a szabadsÃ¡god alattzF<div style="font-family:Arial,sans-serif;max-width:640px;margin:auto">u   <h2>Ãœdv Ãºjra!</h2>z
<p>Kedves u   ! A szabadsÃ¡god alatt (z - z) <b>ul   </b> levelet nem kÃ¼ldtÃ¼nk ki neked. Ahelyett, hogy egyenkÃ©nt megkapnÃ¡d Å‘ket, itt az Ã¶sszegzÃ©sÃ¼k:</p>z;<table style="border-collapse:collapse;margin-bottom:12px">z'<tr><td style="padding:2px 14px 2px 0">z</td><td><b>z db</b></td></tr>z</table>z<h3 style="margin-bottom:4px">z (z" db)</h3><ul style="margin-top:0">Nz<li><span style="color:#666">z
</span> - z</li>u   <li><i>... Ã©s mÃ©g z db</i></li>z</ul>u¶   <p style="color:#666;font-size:13px">A rÃ©szleteket az EmeLOG-ban tekintheted meg. A szabadsÃ¡g alatt a fiÃ³kodat vÃ©dÅ‘ biztonsÃ¡gi Ã©rtesÃ­tÅ‘k tovÃ¡bbra is megÃ©rkeztek.</p></div>r(   )Ú
setdefaultrr   ÚappendÚlenÚusernamer&   ÚitemsÚMAX_SOR_KATEGORIANKENTÚletrehozva_atÚtargyÚjoin)rR   r9   rz   r{   r:   Ú	csoportokÚsÚnevÚosszesenr‘   ÚreszekÚkatÚlistas                r   Úosszegzo_epiteserš   €   sø  € áF€AØ!#€IÛˆØ×Ñ˜QŸ[™[×3¨G°RÓ8×?Ñ?ÀÖBñ á
-€CÜ�5‹z€HØ˜H˜:Ð%KÐL€EàRØØ
‘Q�t—}‘}Ó%Ð&Ð&>¹qÄÈvÓAVÓ?WÐ>XÐX[Ñ\]Ô^kÐloÓ^pÓ\qÐ[rÐrwð  yAð  xBð BQð 	QàGð€Fð  —o‘oÖ'‰
ˆØ�‰ÐAÁ!ÁCÈÃHÃ+ÀÈlÔ[^Ð_dÓ[eÐZfÐfwÐxÖyñ (à
‡M�M�*ÔØ—o‘oÖ'‰
ˆØ�‰Ð8¹¹3¸s»8»¸ÀRÌÈEË
À|ÐSwÐxÔyØÐ.Ô.Ó/ˆAØ�M‰MÐ;¹A¼mÈAÏOÉOÓ>\Ó<]Ð;^Ð^hÑijÐkl×krÑkrÓisÐhtÐtyÐzÖ{ñ 0äˆu‹:Ô.Ó.Ø�M‰MÐ0´°U³Ô>TÑ1TÐ0UÐUaÐbÔcØ�‰�gÖñ (ð ‡M�Mð  Mô  NØ�"—'‘'˜&“/Ð!Ð!r   Úokc                 ób  • [        5       nUR                  n[        X[        R                  5      R                  [        R                  R                  5      R                  5       nSUl
        SUl        SUl        U R                  5         U(       aw  [        XXC5      u  pg[        R                  " UR                  /XgS[        R                   UR"                  U S9S:w  a  [%        S5      eU H  n[        R&                  Ul        M     [+        XSSU S	[-        U5       S
35        [-        U5      $ )uŒ   A szabadsÃ¡g lezÃ¡rÃ¡sa + az Ã¶sszegzÅ‘ levÃ©l sorba Ã¡llÃ­tÃ¡sa. VisszatÃ©r: az Ã¶sszegzett levelek szÃ¡ma. Nem commitol (egy tranzakciÃ³).FNÚrendszer)rr   Ú	prioritasrJ   r5   r`   u4   az Ã¶sszegzÅ‘ levelet nem sikerÃ¼lt sorba Ã¡llÃ­taniro   zkikapcsolva (u   ); Ã¶sszegzÅ‘ levÃ©lben: z db)r   rh   rY   r[   r\   Úorder_byr-   rV   rQ   r4   r1   ri   Úflushrš   Úsorba_allitr/   ÚPRIORITAS_NORMALrJ   ÚRuntimeErrorÚALLAPOT_OSSZEGEZVErT   rS   rŒ   )	r5   rR   r›   r{   rz   r9   r‘   Útorzsr”   s	            r   Ú	befejezesr¦   ž   s   € ä
‹+€CØ×&Ñ&€FÜ˜¤9×#AÑ#AÓB×KÑKÌF×L^ÑL^×LaÑLaÓb×fÑfÓh€EØ€DÔØ $€DÔØ!%€DÔØ‡H�H„JÞÜ'¨°VÓA‰ˆä× Ò  $§*¡* ¨uÀzÔ]f×]wÑ]wØ,0¯O©OÀñDØGHóIäÐUÓVÐVÛˆAÜ!×4Ñ4ˆAŽIñ ä
ˆ2�] m°B°4Ð7PÔQTÐUZÓQ[ÐP\Ð\_Ð$`ÔaÜˆu‹:Ðr   c            
      óÒ  • [        5       n Sn [        5       nU R                  [        R                  R
                  5      R                  [        R                  R                  R                  S5      [        R                  R                  R                  S5      [        R                  R                  U:*  5      R                  5        Vs/ s H  u  o3PM     nnU HC  n [        X R                  [        R                  U5      S5        U R                  5         US-  nME     U R)                  5         U$ s  snf ! [         aB  nU R!                  5         [#        SU S[%        U5      R&                   SU 35         SnAM¥  SnAff = f! [         a>  nU R!                  5         [#        S	[%        U5      R&                   SU 35         SnAN©SnAff = f! U R)                  5         f = f)
u&  Az Ã¼temezÅ‘ hÃ­vja (5 percenkÃ©nt): a lejÃ¡rt visszatÃ©rÃ©si napÃº szabadsÃ¡gokat lezÃ¡rja, Ã©s elkÃ¼ldi az Ã¶sszegzÅ‘t. VisszatÃ©r: a lezÃ¡rt szabadsÃ¡gok szÃ¡ma.
SOSEM dob kivÃ©telt; egy felhasznÃ¡lÃ³ hibÃ¡ja nem akadÃ¡lyozza a tÃ¶bbit (a hibÃ¡s a kÃ¶vetkezÅ‘ futÃ¡skor Ãºjra prÃ³bÃ¡lkozik).r   TNu/   a visszatÃ©rÃ©s napja elÃ©rkezett (automatikus)r`   uC   â�Œ A szabadsÃ¡g automatikus lezÃ¡rÃ¡sa sikertelen (felhasznÃ¡lÃ³ #z): z: u*   â�Œ Hiba a szabadsÃ¡gok ellenÅ‘rzÃ©sekor: )r   r    r,   r-   r.   rQ   r0   r1   r2   ri   Úisnotr4   r¦   rˆ   ÚcommitÚ	ExceptionÚrollbackÚprintÚtypeÚ__name__Úclose)r5   ÚlezartrE   ÚiÚ
azonositokÚuidÚexs          r   Úlejarat_ellenorzesrµ   ³   s–  € ô 
‹€BØ€FðÜ‹[ˆØ$&§H¡H¬V¯[©[¯^©^Ó$<×$CÑ$CÜ�K‰K×#Ñ#×'Ñ'¨Ó-¬v¯{©{×/PÑ/P×/VÑ/VÐW[Ó/\Ü�K‰K×-Ñ-°Ñ3ó%5ç58±S³Uð%;ó <ò %;™D˜Q’añ %;ˆ
ð <ó ˆCðÜ˜"Ÿf™f¤V§[¡[°#Ó6Ð8iÔjØ—	‘	”Ø˜!‘’ñ	 ð 	�‰Œ
Ø€Mùò!<øô ó Ø—‘”ÜÐ[Ð\_Ð[`Ð`cÔdhÐikÓdl×duÑduÐcvÐvxÐy{Ðx|Ð}×~Ò~ûðûô ó VØ
�‰ŒÜÐ:¼4À»8×;LÑ;LÐ:MÈRÐPRÈtÐT×UÑUûðVûð 	�‰�
úsf   ŽB=F	 ÃD5ÃF	 Ã ?D:ÄF	 Ä5F	 Ä:
FÅ7FÅ;F	 ÆFÆF	 Æ	
GÆ4GÇG ÇGÇG ÇG&)u   kÃ©zi kikapcsolÃ¡s)*Ú__doc__r   r   r   r   r   Útypingr   r   r	   r
   r   Ú
sqlalchemyr   r   r[   r-   Údatabaser   Útemplates_envr   r�   rC   r‡   r   r    r�   r&   r;   rF   rS   rY   Úintr^   ÚobjectrT   rv   rg   ry   rš   r¦   rµ   r   r   r   Ú<module>r½      st  ðñó( ß 8Ó 8ß 3Õ 3ç  ã Û Ý !Ý "àÐ Ø
€Ø,¸_ÑM€ð;�8ô ;ð)�4ô )ða˜H XÑ.ð a°3ô að1¨¨S©ô 1ð H¨S¡Mð °e¸HÀT¹NÈHÐUXÉMÐ<YÑ6Zô ð"I˜3ð I Cð I¨Dô Iði Cô ið
J Sô Jð
˜˜c 6˜kÑ*ô 
ð (¨4¡.ð °Sô ð¨H°T©Nð ¸tô ð"¨(°8Ñ*<ð "À8ð "ÐPUÐVYÐ[^ÐV^ÑP_ô "ñ<˜Cð ¸3õ ð*˜Cõ r   