Ë
    	V.j‘z  ã                  óÀ  — U d dl mZ d dlZd dlmZ d dlmZ ej                  dk\  rd dlm	Z	 n	 d dl
m	Z	 dd	lmZmZmZmZmZmZmZmZmZmZmZmZmZ dd
lmZmZmZmZmZm Z m!Z! eez  ez  ez  ez  Z"de#d<   e	 G d„ d«      «       Z$ G d„ d«      Z%e	 G d„ de%«      «       Z&e	 G d„ de%«      «       Z'e	 G d„ de%«      «       Z(e	 G d„ de%«      «       Z)e	 G d„ de%«      «       Z*e	 G d„ de%«      «       Z+e	 G d„ de%«      «       Z,e	 G d„ d e%«      «       Z-e	 G d!„ d"e%«      «       Z. ed#¬$«      	 	 	 	 	 	 d(d%„«       Z/ ed&¬$«      	 d)	 	 	 	 	 	 	 d*d'„«       Z0y# e$ r d„ Z	Y �Œ'w xY w)+é    )ÚannotationsN)Ú	lru_cache)Ú	getLogger)é   é   )Úfinalc                ó   — | S )N© )Úclss    úWC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\charset_normalizer/md.pyr   r      s   € ØˆJó    é   )ÚCOMMON_CJK_CHARACTERSÚCOMMON_SAFE_ASCII_CHARACTERSÚTRACEÚUNICODE_SECONDARY_RANGE_KEYWORDÚ_ACCENTUATEDÚ_ARABICÚ_ARABIC_ISOLATED_FORMÚ_CJKÚ_HANGULÚ	_HIRAGANAÚ	_KATAKANAÚ_LATINÚ_THAI)Ú_character_flagsÚis_emoticonÚis_punctuationÚis_separatorÚ	is_symbolÚremove_accentÚunicode_rangeÚintÚ_GLYPH_MASKc                  ó$   — e Zd ZdZdZdd„Zdd„Zy)ÚCharInfou{  Pre-computed character properties shared across all detectors.

    Instantiated once and reused via :meth:`update` on every character
    in the hot loop so that redundant calls to str methods
    (``isalpha``, ``isupper``, â€¦) and cached utility functions
    (``_character_flags``, ``is_punctuation``, â€¦) are avoided when
    several plugins need the same information.
    ©Ú	characterÚ	printableÚalphaÚupperÚlowerÚspaceÚdigitÚis_asciiÚcase_variableÚflagsÚaccentuatedÚlatinÚis_cjkÚ	is_arabicÚis_glyphÚpunctÚsymc                óò   — d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        d| _
        d| _        d| _        d| _        d| _        d| _        d| _        y )NÚ Fr   r'   ©Úselfs    r   Ú__init__zCharInfo.__init__N   s{   € Ø ˆŒØ$ˆŒØ ˆŒ
Ø ˆŒ
Ø ˆŒ
Ø ˆŒ
Ø ˆŒ
Ø#ˆŒØ#(ˆÔØˆŒ
Ø!&ˆÔØ ˆŒ
Ø!ˆŒØ$ˆŒØ#ˆŒØ ˆŒ
Øˆ�r   c                ót  — || _         t        |«      }|dk  �r-d| _        d| _        d| _        d| _        d| _        d|cxk  rdk  rUn nRd| _        d| _        d| _	        d| _
        d| _        d| _        d| _        t        | _        d| _        d| _        d| _        yd|cxk  rdk  rUn nRd| _        d| _        d| _	        d| _
        d| _        d| _        d| _        t        | _        d| _        d| _        d| _        yd|cxk  rd	k  rQn nNd| _        d| _        d| _	        d| _
        d| _        d| _        d| _        d
| _        d| _        d| _        d| _        y|dk(  sd|cxk  rdk  rTn nQd| _        d| _        d| _	        d| _
        d| _        |dk(  | _        d| _        d
| _        d| _        d| _        d| _        y|j'                  «       | _        d| _        d| _        d| _	        d| _
        d| _        d| _        d
| _        d| _        | j                  rt)        |«      nd| _        | j                  rt+        |«      nd| _        yd| _        |j'                  «       | _        |j-                  «       | _        |j/                  «       | _        |j1                  «       | _	        |j3                  «       | _
        |j5                  «       | _        | j                  | j                  k7  | _        | j                  rt7        |«      }nd
}|| _        t9        |t:        z  «      | _        t9        |t        z  «      | _        t9        |t<        z  «      | _        t9        |t>        z  «      | _        t9        |t@        z  «      | _        | j                  rt)        |«      nd| _        | j                  rt+        |«      nd| _        y)zBUpdate all properties for *character* (called once per character).é€   TFéA   éZ   éa   éz   é0   é9   r   é    é	   é   N)!r(   Úordr/   r2   r4   r5   r6   r*   r+   r,   r-   r.   r)   r0   r   r1   r3   r7   r8   Úisprintabler   r    ÚisalphaÚisupperÚislowerÚisspaceÚisdigitr   Úboolr   r   r   r$   )r<   r(   Úor1   s       r   ÚupdatezCharInfo.updatea   s:  € à"ˆŒô �Y“ˆØˆs‹7Ø ˆDŒMØ$ˆDÔØˆDŒKØ"ˆDŒNØ!ˆDŒMà�QŒ}˜"�}à!�”
Ø!�”
Ø"�”
Ø"�”
Ø"�”
Ø!%�”Ø%)�Ô"Ü#�”
Ø!�”
Ø"�”
Ø �•Ø�q”˜C•à!�”
Ø"�”
Ø!�”
Ø"�”
Ø"�”
Ø!%�”Ø%)�Ô"Ü#�”
Ø!�”
Ø"�”
Ø �•Ø�q”˜B•à"�”
Ø"�”
Ø"�”
Ø"�”
Ø!�”
Ø!%�”Ø%*�Ô"Ø�”
Ø"�”
Ø"�”
Ø �•Ø�b’˜Q !œ\ r�\à"�”
Ø"�”
Ø"�”
Ø!�”
Ø"�”
Ø!" b¡�”Ø%*�Ô"Ø�”
Ø"�”
Ø"�”
Ø �•ð "+×!6Ñ!6Ó!8�”Ø"�”
Ø"�”
Ø"�”
Ø"�”
Ø"�”
Ø%*�Ô"Ø�”
Ø"�”
Ø:>¿.º.œ^¨IÔ6Èe�”
Ø37·>²>œ9 YÔ/Àu�•ð "ˆDŒMØ&×2Ñ2Ó4ˆDŒNØ"×*Ñ*Ó,ˆDŒJØ"×*Ñ*Ó,ˆDŒJØ"×*Ñ*Ó,ˆDŒJØ"×*Ñ*Ó,ˆDŒJØ"×*Ñ*Ó,ˆDŒJØ!%§¡¨t¯z©zÑ!9ˆDÔð �zŠzÜ(¨Ó3‘à�ØˆDŒJÜ# E¬LÑ$8Ó9ˆDÔÜ˜e¤f™nÓ-ˆDŒJÜ˜u¤t™|Ó,ˆDŒKÜ! %¬'¡/Ó2ˆDŒNÜ  ¬Ñ!4Ó5ˆDŒMð 7;·n²nœ¨	Ô2È%ˆDŒJØ/3¯~ª~”y Ô+À5ˆD�Hr   N©ÚreturnÚNone)r(   ÚstrrT   rU   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r=   rR   r
   r   r   r&   r&   /   s   „ ñð€Ió(ô&jIr   r&   c                  ó6   — e Zd ZdZdZdd„Zdd„Zed	d„«       Zy)
ÚMessDetectorPluginzy
    Base abstract class used for mess detection plugins.
    All detectors MUST extend and implement given methods.
    r
   c                ó   — t         ‚)z‰
        The main routine to be executed upon character.
        Insert the logic in witch the text would be considered chaotic.
        ©ÚNotImplementedError©r<   r(   Úinfos      r   Ú	feed_infozMessDetectorPlugin.feed_infoÖ   s
   € ô
 "Ð!r   c                ó   — t         ‚)zB
        Permit to reset the plugin to the initial state.
        r_   r;   s    r   ÚresetzMessDetectorPlugin.resetÝ   s
   € ô "Ð!r   c                ó   — t         ‚)z…
        Compute the chaos ratio based on what your feed() has seen.
        Must NOT be lower than 0.; No restriction gt 0.
        r_   r;   s    r   ÚratiozMessDetectorPlugin.ratioã   s
   € ô "Ð!r   N©r(   rV   rb   r&   rT   rU   rS   ©rT   Úfloat)	rW   rX   rY   rZ   r[   rc   re   Úpropertyrg   r
   r   r   r]   r]   Î   s,   „ ñð
 €Ió"ó"ð ò"ó ñ"r   r]   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
Ú TooManySymbolOrPunctuationPlugin©Ú_punctuation_countÚ_symbol_countÚ_character_countÚ_last_printable_charÚ_frenzy_symbol_in_wordc                óJ   — d| _         d| _        d| _        d | _        d| _        y ©Nr   Frn   r;   s    r   r=   z)TooManySymbolOrPunctuationPlugin.__init__ö   s*   € Ø'(ˆÔØ"#ˆÔØ%&ˆÔà04ˆÔ!Ø,1ˆÕ#r   c                ó,  — | xj                   dz  c_         || j                  k7  ri|t        vra|j                  r| xj                  dz  c_        || _        y|j
                  s,|j                  r t        |«      s| xj                  dz  c_        || _        y)ú1Optimized feed using pre-computed character info.r   é   N)	rq   rr   r   r7   ro   r.   r8   r   rp   ra   s      r   rc   z*TooManySymbolOrPunctuationPlugin.feed_infoþ   s}   € à×Ò Ñ"Õð ˜×2Ñ2Ò2ØÔ!=Ñ=à�zŠzØ×'Ò'¨1Ñ,Õ'ð %.ˆÕ!ð —Z’Z D§H¢H´[ÀÔ5KØ×"Ò" aÑ'Õ"à$-ˆÕ!r   c                ó.   — d| _         d| _        d| _        y ©Nr   )ro   rq   rp   r;   s    r   re   z&TooManySymbolOrPunctuationPlugin.reset  s   € Ø"#ˆÔØ !ˆÔØˆÕr   c                ó€   — | j                   dk(  ry| j                  | j                  z   | j                   z  }|dk\  r|S dS )Nr   ç        ç333333Ó?)rq   ro   rp   )r<   Úratio_of_punctuations     r   rg   z&TooManySymbolOrPunctuationPlugin.ratio  sO   € à× Ñ  AÒ%Øð ×#Ñ# d×&8Ñ&8Ñ8Ø×!Ñ!ñ'"Ðð (<¸sÒ'BÐ#ÐKÈÐKr   NrS   rh   ri   ©	rW   rX   rY   r[   r=   rc   re   rk   rg   r
   r   r   rm   rm   ì   s.   „ ð€Ió2ó.óð
 òLó ñLr   rm   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
ÚTooManyAccentuatedPlugin©rq   Ú_accentuated_countc                ó    — d| _         d| _        y rz   r‚   r;   s    r   r=   z!TooManyAccentuatedPlugin.__init__"  s   € Ø%&ˆÔØ'(ˆÕr   c                ór   — | xj                   dz  c_         |j                  r| xj                  dz  c_        yy©rw   r   N)rq   r2   rƒ   ra   s      r   rc   z"TooManyAccentuatedPlugin.feed_info&  s2   € à×Ò Ñ"Õà×ÒØ×#Ò# qÑ(Ö#ð r   c                ó    — d| _         d| _        y rz   r‚   r;   s    r   re   zTooManyAccentuatedPlugin.reset-  s   € Ø !ˆÔØ"#ˆÕr   c                óf   — | j                   dk  ry| j                  | j                   z  }|dk\  r|S dS )Nr   r|   gffffffÖ?r‚   )r<   Úratio_of_accentuations     r   rg   zTooManyAccentuatedPlugin.ratio1  s=   € à× Ñ  1Ò$Øà'+×'>Ñ'>À×AVÑAVÑ'VÐØ(=ÀÒ(EÐ$ÐNÈ3ÐNr   NrS   rh   ri   r   r
   r   r   r�   r�     s,   „ à:€Ió)ó)ó$ð òOó ñOr   r�   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
ÚUnprintablePlugin©Ú_unprintable_countrq   c                ó    — d| _         d| _        y rz   rŒ   r;   s    r   r=   zUnprintablePlugin.__init__>  s   € Ø'(ˆÔØ%&ˆÕr   c                óœ   — |j                   s+|j                  s|dk7  r|dk7  r| xj                  dz  c_        | xj                  dz  c_        y)rw   Úu   ï»¿r   N)r-   r)   r�   rq   ra   s      r   rc   zUnprintablePlugin.feed_infoB  sD   € ð —
’
Ø—N’NØ˜VÒ#Ø˜XÒ%à×#Ò# qÑ(Õ#Ø×Ò Ñ"Ör   c                ó   — d| _         y rz   )r�   r;   s    r   re   zUnprintablePlugin.resetM  s
   € Ø"#ˆÕr   c                óZ   — | j                   dk(  ry| j                  dz  | j                   z  S )Nr   r|   r   )rq   r�   r;   s    r   rg   zUnprintablePlugin.ratioP  s/   € à× Ñ  AÒ%Øà×'Ñ'¨!Ñ+¨t×/DÑ/DÑDÐDr   NrS   rh   ri   r   r
   r   r   r‹   r‹   :  s,   „ à:€Ió'ó	#ó$ð òEó ñEr   r‹   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
ÚSuspiciousDuplicateAccentPlugin©Ú_successive_countrq   Ú_last_latin_characterÚ_last_was_accentuatedc                ó<   — d| _         d| _        d | _        d| _        y ru   r•   r;   s    r   r=   z(SuspiciousDuplicateAccentPlugin.__init__a  s"   € Ø&'ˆÔØ%&ˆÔà15ˆÔ"Ø+0ˆÕ"r   c                óˆ  — | xj                   dz  c_         | j                  �‰|j                  r}| j                  rq|j                  r/| j                  j                  «       r| xj                  dz  c_        t        |«      t        | j                  «      k(  r| xj                  dz  c_        || _        |j                  | _        yr†   )rq   r—   r2   r˜   r+   rL   r–   r!   ra   s      r   rc   z)SuspiciousDuplicateAccentPlugin.feed_infoh  s™   € à×Ò Ñ"Õà×&Ñ&Ð2Ø× Ò Ø×*Ò*à�zŠz˜d×8Ñ8×@Ñ@ÔBØ×&Ò&¨!Ñ+Õ&Ü˜YÓ'¬=¸×9SÑ9SÓ+TÒTØ×&Ò&¨!Ñ+Õ&Ø%.ˆÔ"Ø%)×%5Ñ%5ˆÕ"r   c                ó<   — d| _         d| _        d | _        d| _        y ru   r•   r;   s    r   re   z%SuspiciousDuplicateAccentPlugin.resetw  s"   € Ø!"ˆÔØ !ˆÔØ%)ˆÔ"Ø%*ˆÕ"r   c                óZ   — | j                   dk(  ry| j                  dz  | j                   z  S )Nr   r|   rx   )rq   r–   r;   s    r   rg   z%SuspiciousDuplicateAccentPlugin.ratio}  s/   € à× Ñ  AÒ%Øà×&Ñ&¨Ñ*¨d×.CÑ.CÑCÐCr   NrS   rh   ri   r   r
   r   r   r”   r”   X  s.   „ ð€Ió1ó6ó+ð òDó ñDr   r”   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
ÚSuspiciousRange©Ú"_suspicious_successive_range_countrq   Ú_last_printable_seenÚ_last_printable_rangec                ó<   — d| _         d| _        d | _        d | _        y rz   rŸ   r;   s    r   r=   zSuspiciousRange.__init__Ž  s"   € Ø78ˆÔ/Ø%&ˆÔØ04ˆÔ!Ø15ˆÕ"r   c                ó`  — | xj                   dz  c_         |j                  s|j                  s|t        v rd| _        d| _        y| j                  €|| _        t        |«      | _        y| j
                  }t        |«      }t        ||«      r| xj                  dz  c_        || _        || _        yr†   )	rq   r-   r7   r   r¡   r¢   r"   Ú is_suspiciously_successive_ranger    )r<   r(   rb   Úunicode_range_aÚunicode_range_bs        r   rc   zSuspiciousRange.feed_info”  sŸ   € à×Ò Ñ"Õà�:Š:˜Ÿš yÔ4PÑ'PØ(,ˆDÔ%Ø)-ˆDÔ&Øà×$Ñ$Ð,Ø(1ˆDÔ%Ü)6°yÓ)AˆDÔ&Øà&*×&@Ñ&@ˆÜ&3°IÓ&>ˆä+¨O¸_ÔMØ×3Ò3°qÑ8Õ3à$-ˆÔ!Ø%4ˆÕ"r   c                ó<   — d| _         d| _        d | _        d | _        y rz   )rq   r    r¡   r¢   r;   s    r   re   zSuspiciousRange.reset«  s"   € Ø !ˆÔØ23ˆÔ/Ø$(ˆÔ!Ø%)ˆÕ"r   c                ó^   — | j                   dk  ry| j                  dz  | j                   z  }|S )NrH   r|   rx   )rq   r    )r<   Úratio_of_suspicious_range_usages     r   rg   zSuspiciousRange.ratio±  s<   € à× Ñ  BÒ&Øð ×3Ñ3°aÑ7Ø×!Ñ!ñ2"Ð'ð /Ð.r   NrS   rh   ri   r   r
   r   r   rž   rž   …  s,   „ ð€Ió6ó5ó.*ð ò/ó ñ/r   rž   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
ÚSuperWeirdWordPlugin©Ú_word_countÚ_bad_word_countÚ_foreign_long_countÚ_is_current_word_badÚ_foreign_long_watchrq   Ú_bad_character_countÚ_buffer_lengthÚ_buffer_last_charÚ_buffer_last_char_accentuatedÚ_buffer_accent_countÚ_buffer_glyph_countÚ_buffer_upper_countc                óº   — d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        d | _        d| _	        d| _
        d| _        d| _        y ru   r­   r;   s    r   r=   zSuperWeirdWordPlugin.__init__Ï  sj   € Ø !ˆÔØ$%ˆÔØ()ˆÔ à*/ˆÔ!Ø).ˆÔ à%&ˆÔØ)*ˆÔ!à#$ˆÔØ-1ˆÔØ38ˆÔ*Ø)*ˆÔ!Ø()ˆÔ Ø()ˆÕ r   c                óÆ  — |j                   rÈ| xj                  dz  c_        || _        |j                  r| xj                  dz  c_        |j
                  | _        |j
                  r| xj                  dz  c_        | j                  s+|j                  r|j
                  r|j                  sd| _        |j                  r| xj                  dz  c_        y| j                  sy|j                  s|j                  st        |«      �r“| xj                  dz  c_        | j                  }| xj                   |z  c_        |dk\  r—| j                  |z  dk\  rd| _        n}| j                  rF| j                  j%                  «       r,| j                  |k7  r| xj&                  dz  c_        d| _        n+| j                  dk(  rd| _        | xj&                  dz  c_        |dk\  rM| j                  rA| j                  dkD  xr | j                  |z  dk  }|s| xj&                  dz  c_        d| _        | j"                  r1| xj(                  dz  c_        | xj*                  |z  c_        d	| _        d	| _        d| _        d| _        d	| _        d| _        d| _        d| _        y|d
vrE|j,                  s8|j.                  r+d| _        | xj                  dz  c_        || _        d	| _        yyyy)rw   r   TNé   ç      à?é   r   r}   F>   Ú-Ú<Ú=Ú>Ú_Ú|Ú~)r*   r´   rµ   r+   r¹   r2   r¶   r·   r²   r3   r6   r¸   r-   r7   r   r®   rq   r±   rL   r°   r¯   r³   r.   r8   )r<   r(   rb   Úbuffer_lengthÚprobable_camel_caseds        r   rc   zSuperWeirdWordPlugin.feed_infoá  s’  € à�:Š:Ø×Ò 1Ñ$ÕØ%.ˆDÔ"à�zŠzØ×(Ò(¨AÑ-Õ(à15×1AÑ1AˆDÔ.à×ÒØ×)Ò)¨QÑ.Õ)à×,Ò,ØŸš t×'7Ò'7ØŸšà+/�Ô(Ø�}Š}Ø×(Ò(¨AÑ-Õ(ØØ×"Ò"ØØ�:Š:˜Ÿš¤|°IÕ'>Ø×Ò Ñ!ÕØ!%×!4Ñ!4ˆMà×!Ò! ]Ñ2Õ!à Ò!Ø×,Ñ,¨}Ñ<ÀÒCØ04�DÕ-à×6Ò6Ø×.Ñ.×6Ñ6Ô8Ø×0Ñ0°MÒAà×,Ò,°Ñ1Õ,Ø04�DÕ-Ø×-Ñ-°Ò2Ø04�DÔ-Ø×,Ò,°Ñ1Õ,Ø Ò" t×'?Ò'?à×,Ñ,¨qÑ0ò HØ×0Ñ0°=Ñ@ÀCÑGð %ñ
 ,Ø×,Ò,°Ñ1Õ,Ø04�DÔ-à×(Ò(Ø×$Ò$¨Ñ)Õ$Ø×)Ò)¨]Ñ:Õ)Ø,1�Ô)à',ˆDÔ$Ø"#ˆDÔØ%)ˆDÔ"Ø16ˆDÔ.Ø()ˆDÔ%Ø'(ˆDÔ$Ø'(ˆDÕ$àÐ@Ñ@Ø—J’JØ—’à(,ˆDÔ%Ø×Ò 1Ñ$ÕØ%.ˆDÔ"Ø16ˆDÕ.ð ð ð Ar   c                óº   — d| _         d | _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        d| _
        d| _        d| _        y ru   )r´   rµ   r¶   r±   r²   r¯   r®   rq   r³   r°   r·   r¸   r¹   r;   s    r   re   zSuperWeirdWordPlugin.reset,  sj   € ØˆÔØ!%ˆÔØ-2ˆÔ*Ø$)ˆÔ!Ø#(ˆÔ Ø ˆÔØˆÔØ !ˆÔØ$%ˆÔ!Ø#$ˆÔ Ø$%ˆÔ!Ø#$ˆÔ Ø#$ˆÕ r   c                ór   — | j                   dk  r| j                  dk(  ry| j                  | j                  z  S )Né
   r   r|   )r®   r°   r³   rq   r;   s    r   rg   zSuperWeirdWordPlugin.ratio;  s7   € à×Ñ˜rÒ! d×&>Ñ&>À!Ò&CØà×(Ñ(¨4×+@Ñ+@Ñ@Ð@r   NrS   rh   ri   r   r
   r   r   r¬   r¬   ½  s0   „ ð€Ió *ó$I7óV%ð òAó ñAr   r¬   c                  ó>   — e Zd ZdZdZdd„Zd	d„Zdd„Zed
d„«       Z	y)ÚCjkUncommonPluginz<
    Detect messy CJK text that probably means nothing.
    ©rq   Ú_uncommon_countc                ó    — d| _         d| _        y rz   rÍ   r;   s    r   r=   zCjkUncommonPlugin.__init__K  s   € Ø%&ˆÔØ$%ˆÕr   c                ój   — | xj                   dz  c_         |t        vr| xj                  dz  c_        yyr†   )rq   r   rÎ   ra   s      r   rc   zCjkUncommonPlugin.feed_infoO  s2   € à×Ò Ñ"ÕàÔ1Ñ1Ø× Ò  AÑ%Ö ð 2r   c                ó    — d| _         d| _        y rz   rÍ   r;   s    r   re   zCjkUncommonPlugin.resetV  s   € Ø !ˆÔØ ˆÕr   c                ól   — | j                   dk  ry| j                  | j                   z  }|dkD  r|dz  S dS )Nr   r|   r½   rÊ   rÍ   )r<   Úuncommon_form_usages     r   rg   zCjkUncommonPlugin.ratioZ  sD   € à× Ñ  1Ò$Øà%)×%9Ñ%9¸D×<QÑ<QÑ%QÐð ,?ÀÒ+DÐ" RÑ'ÐMÈ#ÐMr   NrS   rh   ri   )
rW   rX   rY   rZ   r[   r=   rc   re   rk   rg   r
   r   r   rÌ   rÌ   C  s3   „ ñð 8€Ió&ó&ó!ð òNó ñNr   rÌ   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
ÚArchaicUpperLowerPlugin©	Ú_bufÚ_character_count_since_last_sepÚ_successive_upper_lower_countÚ#_successive_upper_lower_count_finalrq   Ú_last_alpha_seenÚ_last_alpha_seen_upperÚ_last_alpha_seen_lowerÚ_current_ascii_onlyc                ó‚   — d| _         d| _        d| _        d| _        d| _        d | _        d| _        d| _        d| _        y )NFr   TrÖ   r;   s    r   r=   z ArchaicUpperLowerPlugin.__init__t  sI   € ØˆŒ	à45ˆÔ,à23ˆÔ*Ø89ˆÔ0à%&ˆÔà,0ˆÔØ,1ˆÔ#Ø,1ˆÔ#Ø)-ˆÕ r   c                ó*  — |j                   xr |j                  }| }|rŽ| j                  dkD  r| j                  dk  r7|j                  s+| j                  s| xj
                  | j                  z  c_        d| _        d| _        d| _        d| _        | xj                  dz  c_	        d| _        y| j                  r|j                  sd| _        | j                  �h|j                  r| j                  s|j                  r=| j                  r1| j                  r| xj                  dz  c_        d| _        nd| _        nd| _        | xj                  dz  c_	        | xj                  dz  c_        || _        |j                  | _        |j                  | _        y)rw   r   é@   NFr   Trx   )r*   r0   rØ   r.   rÞ   rÚ   rÙ   rÛ   r×   rq   r/   r+   rÝ   r,   rÜ   )r<   r(   rb   Úis_concernedÚ	chunk_seps        r   rc   z!ArchaicUpperLowerPlugin.feed_infoƒ  sS  € à!ŸZ™ZÒ>¨D×,>Ñ,>ˆØ*Ð*ˆ	á˜×=Ñ=ÀÒAà×4Ñ4¸Ò:ØŸ
š
Ø×0Ò0à×8Ò8Ø×6Ñ6ñÕ8ð 23ˆDÔ.Ø34ˆDÔ0Ø$(ˆDÔ!ØˆDŒIØ×!Ò! QÑ&Õ!Ø'+ˆDÔ$àà×#Ò#¨D¯MªMØ',ˆDÔ$à× Ñ Ð,Ø—
’
˜t×:Ò:Ø—
’
˜t×:Ò:à—9’9Ø×6Ò6¸!Ñ;Õ6Ø %�D•Ià $�D•Ià!�”	à×Ò Ñ"ÕØ×,Ò,°Ñ1Õ,Ø )ˆÔØ&*§j¡jˆÔ#Ø&*§j¡jˆÕ#r   c                ó‚   — d| _         d| _        d| _        d| _        d | _        d| _        d| _        d| _        d| _        y )Nr   FT)	rq   rØ   rÙ   rÚ   rÛ   rÜ   rÝ   r×   rÞ   r;   s    r   re   zArchaicUpperLowerPlugin.reset°  sI   € Ø !ˆÔØ/0ˆÔ,Ø-.ˆÔ*Ø34ˆÔ0Ø $ˆÔØ&+ˆÔ#Ø&+ˆÔ#ØˆŒ	Ø#'ˆÕ r   c                óT   — | j                   dk(  ry| j                  | j                   z  S )Nr   r|   )rq   rÚ   r;   s    r   rg   zArchaicUpperLowerPlugin.ratio»  s*   € à× Ñ  AÒ%Øà×7Ñ7¸$×:OÑ:OÑOÐOr   NrS   rh   ri   r   r
   r   r   rÕ   rÕ   f  s/   „ ð
€Ió.ó+1óZ	(ð òPó ñPr   rÕ   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zed	d„«       Zy)
ÚArabicIsolatedFormPlugin©rq   Ú_isolated_form_countc                ó    — d| _         d| _        y rz   rè   r;   s    r   r=   z!ArabicIsolatedFormPlugin.__init__Ç  s   € Ø%&ˆÔØ)*ˆÕ!r   c                ó    — d| _         d| _        y rz   rè   r;   s    r   re   zArabicIsolatedFormPlugin.resetË  s   € Ø !ˆÔØ$%ˆÕ!r   c                ó€   — | xj                   dz  c_         |j                  t        z  r| xj                  dz  c_        yyr†   )rq   r1   r   ré   ra   s      r   rc   z"ArabicIsolatedFormPlugin.feed_infoÏ  s6   € à×Ò Ñ"Õà�:‰:Ô-Ò-Ø×%Ò%¨Ñ*Ö%ð .r   c                óX   — | j                   dk  ry| j                  | j                   z  }|S )Nr   r|   rè   )r<   Úisolated_form_usages     r   rg   zArabicIsolatedFormPlugin.ratioÖ  s0   € à× Ñ  1Ò$Øà%)×%>Ñ%>À×AVÑAVÑ%VÐà"Ð"r   NrS   rh   ri   )	rW   rX   rY   r[   r=   re   rc   rk   rg   r
   r   r   rç   rç   Ã  s*   „ à<€Ió+ó&ó+ð ò#ó ñ#r   rç   é   )Úmaxsizec                ó–  — | �|€y| |k(  ryd| v rd|v ryd| v sd|v ryd| v sd|v r	d| v sd|v ry| j                  d«      |j                  d«      }}|D ]  }|t        v rŒ||v sŒ y | dv |dv }}|s|r	d| v sd|v ry|r|ryd	| v sd	|v rd| v sd|v ry| d
k(  s|d
k(  ryd| v sd|v s| dv r!|dv rd| v sd|v ryd| v sd|v ry| d
k(  s|d
k(  ryy)za
    Determine if two Unicode range seen next to each other can be considered as suspicious.
    TFÚLatinÚ	EmoticonsÚ	CombiningÚ )ÚHiraganaÚKatakanaÚCJKÚHangulzBasic Latin)r÷   rö   ÚPunctuationÚForms)Úsplitr   )r¦   r§   Úkeywords_range_aÚkeywords_range_bÚelÚrange_a_jp_charsÚrange_b_jp_charss          r   r¥   r¥   à  s‚  € ð Ð /Ð"9Øà˜/Ò)Øà�/Ñ! g°Ñ&@Øà�oÑ%¨¸Ñ)GØð 	�?Ñ" g°Ñ&@Ø�Ñ&¨+¸Ñ*Hàð 	×Ñ˜cÓ"Ø×Ñ˜cÓ"ð 'Ðó
 ˆØÔ0Ñ0ØØÐ!Ò!Ùð	 ð 	ð
ð	
ð
 	Ð3Ð3ð 'Ðñ 	Ñ,Ø�Ñ  E¨_Ñ$<àÙÑ,Øà�?Ñ" h°/Ñ&AØ�OÑ# u°Ñ'?ØØ˜mÒ+¨À-Ò/OØð 	�Ñ  E¨_Ñ$<ØÐ3Ñ3ØÐ7Ñ7à˜OÑ+¨}ÀÑ/OØØ�oÑ%¨°OÑ)CØØ˜mÒ+¨À-Ò/OØàr   i   c           	     óð  — t        | «      }|dk  rd}n
|dk  rd}nd}t        «       }t        «       }t        «       }t	        «       }t        «       }	t        «       }
t        «       }t        «       }t        «       }|j                  }|j                  }|j                  }|j                  }|	j                  }|
j                  }|j                  }|j                  }|j                  }t        «       }|j                  }t        d||«      D �]"  }| |||z    D ]™  } ||«        |||«        |||«        |||«       |j                  r |||«        |||«       |j                  sŒQ |||«       |j                   r	 |||«       |j"                  r	 |||«       |j$                  sŒ‘ |||«       Œ› |j&                  |j&                  z   |j&                  z   |j&                  z   |	j&                  z   |
j&                  z   |j&                  z   |j&                  z   |j&                  z   }||k\  s�Œ# n˜  |d«        |d|«        |d|«        |d|«       |j&                  |j&                  z   |j&                  z   |j&                  z   |	j&                  z   |
j&                  z   |j&                  z   |j&                  z   |j&                  z   }|r¦t)        d«      }|j+                  t,        d	|› d
|› d|› �«       |dkD  r8|j+                  t,        d| dd › �«       |j+                  t,        d| dd › �«       |||||	|
|||f	D ]1  }|j+                  t,        |j.                  › d|j&                  › �«       Œ3 t1        |d«      S )zw
    Compute a mess ratio given a decoded bytes sequence. The maximum threshold does stop the computation earlier.
    iÿ  rF   rï   rá   r?   r   Ú
Úcharset_normalizerzIMess-detector extended-analysis start. intermediary_mean_mess_ratio_calc=z mean_mess_ratio=z maximum_threshold=é   zStarting with: NzEnding with: iðÿÿÿz: r   )Úlenrm   r�   r‹   r”   rž   r¬   rÌ   rÕ   rç   rc   r&   rR   Úranger)   r*   r3   r4   r5   rg   r   Úlogr   Ú	__class__Úround)Údecoded_sequenceÚmaximum_thresholdÚdebugÚseq_lenÚstepÚd_spÚd_taÚd_upÚd_sdaÚd_srÚd_swÚd_cuÚd_auÚd_aiÚ	d_sp_feedÚ	d_ta_feedÚ	d_up_feedÚ
d_sda_feedÚ	d_sr_feedÚ	d_sw_feedÚ	d_cu_feedÚ	d_au_feedÚ	d_ai_feedrb   Úinfo_updateÚblock_startr(   Úmean_mess_ratioÚloggerÚdts                                 r   Ú
mess_ratior'  *  s”  € ô Ð'Ó(€Gà�‚}Ø‰Ø	�4ŠØ‰àˆô .NÓ-O€DÜ%=Ó%?€DÜ/Ó1€DÜ-LÓ-N€EÜ+Ó-€DÜ!5Ó!7€DÜ/Ó1€DÜ$;Ó$=€DÜ%=Ó%?€Dð —‘€IØ—‘€IØ—‘€IØ—‘€JØ—‘€IØ—‘€IØ—‘€IØ—‘€IØ—‘€Iô “Z€DØ—+‘+€Kô ˜Q ¨×.ˆØ)¨+¸ÀdÑ8JÓKˆIá˜	Ô"ñ �i Ô&Ù�i Ô&Ù�i Ô&ð �~Š~Ù˜) TÔ*Ù˜) TÔ*ð �z‹zÙ˜) TÔ*à—:’:Ù˜y¨$Ô/à—;’;Ù˜i¨Ô.à—>“>Ù˜i¨Õ.ð3 Lð8 �J‰JØ�j‰jñà�j‰jñð �k‰kñð �j‰jñ	ð
 �j‰jñð �j‰jñð �j‰jñð �j‰jñð 	ð Ð/Ô/ÙðS /ñX 	�DÔÙ�$˜ÔÙ�$˜ÔÙ�$˜Ôð �J‰JØ�j‰jñà�j‰jñð �k‰kñð �j‰jñ	ð
 �j‰jñð �j‰jñð �j‰jñð �j‰jñð 	ñ ÜÐ/Ó0ˆà�
‰
Üð1Ø15°Ð6GÈÐGXð Y!Ø!2Ð 3ð5ô	
ð �RŠ<Ø�J‰J”u Ð0@ÀÀ"Ð0EÐ/FÐGÔHØ�J‰J”u Ð.>¸s¸uÐ.EÐ-FÐGÔHà˜˜t U¨D°$¸¸dÀDÓIˆBØ�J‰J”u §¡ ¨b°·±°
Ð;Õ<ð Jô � !Ó$Ð$r   )r¦   ú
str | Noner§   r(  rT   rP   )gš™™™™™É?F)r  rV   r  rj   r  rP   rT   rj   )1Ú
__future__r   ÚsysÚ	functoolsr   Úloggingr   Úversion_infoÚtypingr   Útyping_extensionsÚImportErrorÚconstantr   r   r   r   r   r   r   r   r   r   r   r   r   Úutilsr   r   r   r   r    r!   r"   r$   Ú__annotations__r&   r]   rm   r�   r‹   r”   rž   r¬   rÌ   rÕ   rç   r¥   r'  r
   r   r   Ú<module>r4     sC  ðÞ "ã 
Ý Ý à×Ñ�vÒÞðÝ+÷÷ ÷ õ ÷÷ ñ ð ˜'‘> IÑ-°	Ñ9¸EÑA€ˆSÓ Að ÷[Ið [Ió ð[I÷|"ñ "ð< ô.LÐ'9ó .Ló ð.Lðb ôOÐ1ó Oó ðOð6 ôEÐ*ó Eó ðEð: ô)DÐ&8ó )Dó ð)DðX ô4/Ð(ó 4/ó ð4/ðn ôBAÐ-ó BAó ðBAðJ ôNÐ*ó Nó ðNðD ôYPÐ0ó YPó ðYPðx ô#Ð1ó #ó ð#ñ8 �4ÔðFØðFØ2<ðFà	òFó ðFñR �4ÔàINð}%Øð}%Ø.3ð}%ØBFð}%à
ò}%ó ñ}%øð ò õ	ðús   ¯E ÅEÅE