§
    £”jév  ã                  ó6  — 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	 n# e$ r d„ Z	Y nw xY w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#¬$¦  «        d4d*„¦   «         Z/ ed+¬$¦  «        	 d5d6d3„¦   «         Z0dS )7é    )ÚannotationsN)Ú	lru_cache)Ú	getLogger)é   é   )Úfinalc                ó   — | S )N© )Úclss    úd/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/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d	S )Ú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ÚsymÚreturnÚNonec                óô   — d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        d| _
        d| _        d| _        d| _        d| _        d| _        d| _        d S )NÚ Fr   r'   ©Úselfs    r   Ú__init__zCharInfo.__init__N   s   € Ø ˆŒØ$ˆŒØ ˆŒ
Ø ˆŒ
Ø ˆŒ
Ø ˆŒ
Ø ˆŒ
Ø#ˆŒØ#(ˆÔØˆŒ
Ø!&ˆÔØ ˆŒ
Ø!ˆŒØ$ˆŒØ#ˆŒØ ˆŒ
ØˆŒˆˆr   r(   Ústrc                óð  — || _         t          |¦  «        }|dk     �r@d| _        d| _        d| _        d| _        d| _        d|cxk    rdk    rWn nTd| _        d| _        d| _	        d| _
        d| _        d| _        d| _        t          | _        d| _        d| _        d| _        dS d|cxk    rdk    rWn nTd| _        d| _        d| _	        d| _
        d| _        d| _        d| _        t          | _        d| _        d| _        d| _        dS d|cxk    rd	k    rRn nOd| _        d| _        d| _	        d| _
        d| _        d| _        d| _        d
| _        d| _        d| _        d| _        dS |dk    sd|cxk    rdk    rVn nSd| _        d| _        d| _	        d| _
        d| _        |dk    | _        d| _        d
| _        d| _        d| _        d| _        dS |                     ¦   «         | _        d| _        d| _        d| _	        d| _
        d| _        d| _        d
| _        d| _        | j        rt)          |¦  «        nd| _        | j        rt+          |¦  «        nd| _        dS d| _        |                     ¦   «         | _        |                     ¦   «         | _        |                     ¦   «         | _        |                     ¦   «         | _	        |                     ¦   «         | _
        |                     ¦   «         | _        | j	        | j        k    | _        | 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| _        dS )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‰7Ø ˆDŒMØ$ˆDÔØˆDŒKØ"ˆDŒNØ!ˆDŒMà�Qˆ}ˆ}Š}ˆ}˜"Š}ˆ}ˆ}ˆ}ˆ}à!�”
Ø!�”
Ø"�”
Ø"�”
Ø"�”
Ø!%�”Ø%)�Ô"Ý#�”
Ø!�”
Ø"�”
Ø �”��Ø�q��’�˜C’����à!�”
Ø"�”
Ø!�”
Ø"�”
Ø"�”
Ø!%�”Ø%)�Ô"Ý#�”
Ø!�”
Ø"�”
Ø �”��Ø�q��’�˜B’����à"�”
Ø"�”
Ø"�”
Ø"�”
Ø!�”
Ø!%�”Ø%*�Ô"Ø�”
Ø"�”
Ø"�”
Ø �”��Ø�b’�˜Q !˜\˜\š\˜\ rš\˜\˜\˜\˜\à"�”
Ø"�”
Ø"�”
Ø!�”
Ø"�”
Ø!" b¢�”Ø%*�Ô"Ø�”
Ø"�”
Ø"�”
Ø �”��ð "+×!6Ò!6Ñ!8Ô!8�”Ø"�”
Ø"�”
Ø"�”
Ø"�”
Ø"�”
Ø%*�Ô"Ø�”
Ø"�”
Ø:>¼.ÐS�^¨IÑ6Ô6Ð6Èe�”
Ø37´>ÐL�9 YÑ/Ô/Ð/Àu�”��ð "ˆDŒMØ&×2Ò2Ñ4Ô4ˆDŒNØ"×*Ò*Ñ,Ô,ˆDŒJØ"×*Ò*Ñ,Ô,ˆDŒJØ"×*Ò*Ñ,Ô,ˆDŒJØ"×*Ò*Ñ,Ô,ˆDŒJØ"×*Ò*Ñ,Ô,ˆDŒJØ!%¤¨t¬zÒ!9ˆDÔð Œzð Ý(¨Ñ3Ô3��à�ØˆDŒJÝ# E­LÑ$8Ñ9Ô9ˆDÔÝ˜e¥f™nÑ-Ô-ˆDŒJÝ˜u¥t™|Ñ,Ô,ˆDŒKÝ! %­'¡/Ñ2Ô2ˆDŒNÝ  ­Ñ!4Ñ5Ô5ˆDŒMð 7;´nÐO�¨	Ñ2Ô2Ð2È%ˆDŒJØ/3¬~ÐH•y Ñ+Ô+Ð+À5ˆDŒHˆHˆHr   N©r9   r:   )r(   r@   r9   r:   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r?   rU   r
   r   r   r&   r&   /   sY   € € € € € ðð ð€Ið(ð ð ð ð&jIð jIð jIð jIð jIð jIr   r&   c                  ó>   — e Zd ZdZdZdd	„Zdd
„Zedd„¦   «         ZdS )ÚMessDetectorPluginzy
    Base abstract class used for mess detection plugins.
    All detectors MUST extend and implement given methods.
    r
   r(   r@   Úinfor&   r9   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(   r^   s      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   Úfloatc                ó   — 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(   r@   r^   r&   r9   r:   rV   ©r9   rf   )	rW   rX   rY   rZ   r[   rc   re   Úpropertyrh   r
   r   r   r]   r]   Î   sm   € € € € € ðð ð
 €Ið"ð "ð "ð "ð"ð "ð "ð "ð ð"ð "ð "ñ „Xð"ð "ð "r   r]   c                  óB   — e Zd ZdZdd„Zdd	„Zdd
„Zedd„¦   «         ZdS )Ú TooManySymbolOrPunctuationPlugin©Ú_punctuation_countÚ_symbol_countÚ_character_countÚ_last_printable_charÚ_frenzy_symbol_in_wordr9   r:   c                óL   — d| _         d| _        d| _        d | _        d| _        d S ©Nr   Frn   r=   s    r   r?   z)TooManySymbolOrPunctuationPlugin.__init__ö   s0   € Ø'(ˆÔØ"#ˆÔØ%&ˆÔà04ˆÔ!Ø,1ˆÔ#Ð#Ð#r   r(   r@   r^   r&   c                óæ   — | xj         dz  c_         || j        k    rN|t          vrE|j        r| xj        dz  c_        n-|j        s&|j        rt          |¦  «        s| xj        dz  c_        || _        dS )ú1Optimized feed using pre-computed character info.r   é   N)	rq   rr   r   r7   ro   r.   r8   r   rp   rb   s      r   rc   z*TooManySymbolOrPunctuationPlugin.feed_infoþ   s—   € àÐÔ Ñ"ÐÔð ˜Ô2Ò2Ð2ØÕ!=Ð=Ð=àŒzð (ØÐ'Ô'¨1Ñ,Ð'Ô'Ð'Ø”Zð ( D¤Hð (µ[ÀÑ5KÔ5Kð (ØÐ"Ô" aÑ'Ð"Ô"à$-ˆÔ!Ð!Ð!r   c                ó0   — d| _         d| _        d| _        d S ©Nr   )ro   rq   rp   r=   s    r   re   z&TooManySymbolOrPunctuationPlugin.reset  s    € Ø"#ˆÔØ !ˆÔØˆÔÐÐr   rf   c                ó^   — | j         dk    rdS | j        | j        z   | j         z  }|dk    r|ndS )Nr   ç        ç333333Ó?)rq   ro   rp   )r>   Úratio_of_punctuations     r   rh   z&TooManySymbolOrPunctuationPlugin.ratio  sK   € àÔ  AÒ%Ð%Ø�3ð Ô# dÔ&8Ñ8ØÔ!ñ'"Ðð (<¸sÒ'BÐ'BÐ#Ð#ÈÐKr   NrV   ri   rj   ©	rW   rX   rY   r[   r?   rc   re   rk   rh   r
   r   r   rm   rm   ì   s}   € € € € € ð€Ið2ð 2ð 2ð 2ð.ð .ð .ð .ðð ð ð ð
 ðLð Lð Lñ „XðLð Lð Lr   rm   c                  óB   — e Zd ZdZdd„Zdd	„Zdd
„Zedd„¦   «         ZdS )ÚTooManyAccentuatedPlugin©rq   Ú_accentuated_countr9   r:   c                ó"   — d| _         d| _        d S rz   r‚   r=   s    r   r?   z!TooManyAccentuatedPlugin.__init__"  s   € Ø%&ˆÔØ'(ˆÔÐÐr   r(   r@   r^   r&   c                óX   — | xj         dz  c_         |j        r| xj        dz  c_        dS dS ©rw   r   N)rq   r2   rƒ   rb   s      r   rc   z"TooManyAccentuatedPlugin.feed_info&  sE   € àÐÔ Ñ"ÐÔàÔð 	)ØÐ#Ô# qÑ(Ð#Ô#Ð#Ð#ð	)ð 	)r   c                ó"   — d| _         d| _        d S rz   r‚   r=   s    r   re   zTooManyAccentuatedPlugin.reset-  s   € Ø !ˆÔØ"#ˆÔÐÐr   rf   c                óN   — | j         dk     rdS | j        | j         z  }|dk    r|ndS )Nr   r|   gffffffÖ?r‚   )r>   Úratio_of_accentuations     r   rh   zTooManyAccentuatedPlugin.ratio1  s<   € àÔ  1Ò$Ð$Ø�3à'+Ô'>ÀÔAVÑ'VÐØ(=ÀÒ(EÐ(EÐ$Ð$È3ÐNr   NrV   ri   rj   r   r
   r   r   r�   r�     s{   € € € € € à:€Ið)ð )ð )ð )ð)ð )ð )ð )ð$ð $ð $ð $ð ðOð Oð Oñ „XðOð Oð Or   r�   c                  óB   — e Zd ZdZdd„Zdd	„Zdd
„Zedd„¦   «         ZdS )ÚUnprintablePlugin©Ú_unprintable_countrq   r9   r:   c                ó"   — d| _         d| _        d S rz   rŒ   r=   s    r   r?   zUnprintablePlugin.__init__>  s   € Ø'(ˆÔØ%&ˆÔÐÐr   r(   r@   r^   r&   c                óz   — |j         s#|j        s|dk    r|dk    r| xj        dz  c_        | xj        dz  c_        dS )rw   úu   ï»¿r   N)r-   r)   r�   rq   rb   s      r   rc   zUnprintablePlugin.feed_infoB  s^   € ð ”
ð	)à”Nð	)ð ˜VÒ#Ð#Ø˜XÒ%Ð%àÐ#Ô# qÑ(Ð#Ô#ØÐÔ Ñ"ÐÔÐÐr   c                ó   — d| _         d S rz   )r�   r=   s    r   re   zUnprintablePlugin.resetM  s   € Ø"#ˆÔÐÐr   rf   c                ó@   — | j         dk    rdS | j        dz  | j         z  S )Nr   r|   r   )rq   r�   r=   s    r   rh   zUnprintablePlugin.ratioP  s+   € àÔ  AÒ%Ð%Ø�3àÔ'¨!Ñ+¨tÔ/DÑDÐDr   NrV   ri   rj   r   r
   r   r   r‹   r‹   :  s{   € € € € € à:€Ið'ð 'ð 'ð 'ð	#ð 	#ð 	#ð 	#ð$ð $ð $ð $ð ðEð Eð Eñ „XðEð Eð Er   r‹   c                  óB   — e Zd ZdZdd„Zdd	„Zdd
„Zedd„¦   «         ZdS )ÚSuspiciousDuplicateAccentPlugin©Ú_successive_countrq   Ú_last_latin_characterÚ_last_was_accentuatedr9   r:   c                ó>   — d| _         d| _        d | _        d| _        d S ru   r•   r=   s    r   r?   z(SuspiciousDuplicateAccentPlugin.__init__a  s(   € Ø&'ˆÔØ%&ˆÔà15ˆÔ"Ø+0ˆÔ"Ð"Ð"r   r(   r@   r^   r&   c                ó@  — | xj         dz  c_         | j        �s|j        rl| j        re|j        r)| j                             ¦   «         r| xj        dz  c_        t          |¦  «        t          | j        ¦  «        k    r| xj        dz  c_        || _        |j        | _        dS r†   )rq   r—   r2   r˜   r+   rO   r–   r!   rb   s      r   rc   z)SuspiciousDuplicateAccentPlugin.feed_infoh  s¶   € àÐÔ Ñ"ÐÔàÔ&Ð2ØÔ ð 3àÔ*ð 3ð Œzð ,˜dÔ8×@Ò@ÑBÔBð ,ØÐ&Ô&¨!Ñ+Ð&Ô&Ý˜YÑ'Ô'­=¸Ô9SÑ+TÔ+TÒTÐTØÐ&Ô&¨!Ñ+Ð&Ô&Ø%.ˆÔ"Ø%)Ô%5ˆÔ"Ð"Ð"r   c                ó>   — d| _         d| _        d | _        d| _        d S ru   r•   r=   s    r   re   z%SuspiciousDuplicateAccentPlugin.resetw  s(   € Ø!"ˆÔØ !ˆÔØ%)ˆÔ"Ø%*ˆÔ"Ð"Ð"r   rf   c                ó@   — | j         dk    rdS | j        dz  | j         z  S )Nr   r|   rx   )rq   r–   r=   s    r   rh   z%SuspiciousDuplicateAccentPlugin.ratio}  s+   € àÔ  AÒ%Ð%Ø�3àÔ&¨Ñ*¨dÔ.CÑCÐCr   NrV   ri   rj   r   r
   r   r   r”   r”   X  s}   € € € € € ð€Ið1ð 1ð 1ð 1ð6ð 6ð 6ð 6ð+ð +ð +ð +ð ðDð Dð Dñ „XðDð Dð Dr   r”   c                  óB   — e Zd ZdZdd„Zdd	„Zdd
„Zedd„¦   «         ZdS )ÚSuspiciousRange©Ú"_suspicious_successive_range_countrq   Ú_last_printable_seenÚ_last_printable_ranger9   r:   c                ó>   — d| _         d| _        d | _        d | _        d S rz   rŸ   r=   s    r   r?   zSuspiciousRange.__init__Ž  s(   € Ø78ˆÔ/Ø%&ˆÔØ04ˆÔ!Ø15ˆÔ"Ð"Ð"r   r(   r@   r^   r&   c                óD  — | xj         dz  c_         |j        s|j        s	|t          v rd| _        d| _        dS | j        €|| _        t          |¦  «        | _        dS | j        }t          |¦  «        }t          ||¦  «        r| xj        dz  c_        || _        || _        dS r†   )	rq   r-   r7   r   r¡   r¢   r"   Ú is_suspiciously_successive_ranger    )r>   r(   r^   Úunicode_range_aÚunicode_range_bs        r   rc   zSuspiciousRange.feed_info”  sÀ   € àÐÔ Ñ"ÐÔàŒ:ð 	˜œð 	 yÕ4PÐ'PÐ'PØ(,ˆDÔ%Ø)-ˆDÔ&ØˆFàÔ$Ð,Ø(1ˆDÔ%Ý)6°yÑ)AÔ)AˆDÔ&ØˆFà&*Ô&@ˆÝ&3°IÑ&>Ô&>ˆå+¨O¸_ÑMÔMð 	9ØÐ3Ô3°qÑ8Ð3Ô3à$-ˆÔ!Ø%4ˆÔ"Ð"Ð"r   c                ó>   — d| _         d| _        d | _        d | _        d S rz   )rq   r    r¡   r¢   r=   s    r   re   zSuspiciousRange.reset«  s(   € Ø !ˆÔØ23ˆÔ/Ø$(ˆÔ!Ø%)ˆÔ"Ð"Ð"r   rf   c                óD   — | j         dk    rdS | j        dz  | j         z  }|S )NrK   r|   rx   )rq   r    )r>   Úratio_of_suspicious_range_usages     r   rh   zSuspiciousRange.ratio±  s8   € àÔ  BÒ&Ð&Ø�3ð Ô3°aÑ7ØÔ!ñ2"Ð'ð /Ð.r   NrV   ri   rj   r   r
   r   r   rž   rž   …  sw   € € € € € ð€Ið6ð 6ð 6ð 6ð5ð 5ð 5ð 5ð.*ð *ð *ð *ð ð/ð /ð /ñ „Xð/ð /ð /r   rž   c                  óB   — e Zd ZdZdd„Zdd	„Zdd
„Zedd„¦   «         ZdS )Ú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_countr9   r:   c                ó¼   — d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        d | _        d| _	        d| _
        d| _        d| _        d S ru   r­   r=   s    r   r?   zSuperWeirdWordPlugin.__init__Ï  sp   € Ø !ˆÔØ$%ˆÔØ()ˆÔ à*/ˆÔ!Ø).ˆÔ à%&ˆÔØ)*ˆÔ!à#$ˆÔØ-1ˆÔØ38ˆÔ*Ø)*ˆÔ!Ø()ˆÔ Ø()ˆÔ Ð Ð r   r(   r@   r^   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_        dS | j        sdS |j        s|j        st          |¦  «        �rH| xj        dz  c_        | j        }| xj        |z  c_        |dk    r{| j        |z  dk    rd| _        ne| j        r<| j                             ¦   «         r#| j        |k    r| xj        dz  c_        d| _        n"| j        dk    rd| _        | xj        dz  c_        |dk    r9| j        r2| j        dk    o| j        |z  dk    }|s| xj        dz  c_        d| _        | j        r'| xj        dz  c_        | xj        |z  c_        d	| _        d	| _        d| _        d| _        d	| _        d| _        d| _        d| _        dS |d
vr5|j        s0|j        r+d| _        | xj        dz  c_        || _        d	| _        dS dS dS dS )rw   r   TNé   ç      à?é   r   r}   F>   Ú_ú-ú<ú=ú>ú|ú~)r*   r´   rµ   r+   r¹   r2   r¶   r·   r²   r3   r6   r¸   r-   r7   r   r®   rq   r±   rO   r°   r¯   r³   r.   r8   )r>   r(   r^   Úbuffer_lengthÚprobable_camel_caseds        r   rc   zSuperWeirdWordPlugin.feed_infoá  s  € àŒ:ð 	ØÐÔ 1Ñ$ÐÔØ%.ˆDÔ"àŒzð .ØÐ(Ô(¨AÑ-Ð(Ô(à15Ô1AˆDÔ.àÔð /ØÐ)Ô)¨QÑ.Ð)Ô)àÔ,ð0àœð0à'+Ô'7ð0ð œð0ð
 ,0�Ô(ØŒ}ð .ØÐ(Ô(¨AÑ-Ð(Ô(ØˆFØÔ"ð 	ØˆFØŒ:ð 1	7˜œð 1	7¥|°IÑ'>Ô'>ñ 1	7ØÐÔ Ñ!ÐÔØ!%Ô!4ˆMàÐ!Ô! ]Ñ2Ð!Ô!à Ò!Ð!ØÔ,¨}Ñ<ÀÒCÐCØ04�DÔ-Ð-àÔ6ð	2àÔ.×6Ò6Ñ8Ô8ð	2ð Ô0°MÒAÐAàÐ,Ô,°Ñ1Ð,Ô,Ø04�DÔ-Ð-ØÔ-°Ò2Ð2Ø04�DÔ-ØÐ,Ô,°Ñ1Ð,Ô,Ø Ò"Ð" tÔ'?Ð"àÔ,¨qÒ0ð HØÔ0°=Ñ@ÀCÒGð %ð
 ,ð 5ØÐ,Ô,°Ñ1Ð,Ô,Ø04�DÔ-àÔ(ð 2ØÐ$Ô$¨Ñ)Ð$Ô$ØÐ)Ô)¨]Ñ:Ð)Ô)Ø,1�Ô)à',ˆDÔ$Ø"#ˆDÔØ%)ˆDÔ"Ø16ˆDÔ.Ø()ˆDÔ%Ø'(ˆDÔ$Ø'(ˆDÔ$Ð$Ð$àÐ@Ð@Ð@Ø”Jð Aà”ð Að )-ˆDÔ%ØÐÔ 1Ñ$ÐÔØ%.ˆDÔ"Ø16ˆDÔ.Ð.Ð.ð AÐ@Ð@Ð@Ð@Ð@r   c                ó¼   — d| _         d | _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        d| _
        d| _        d| _        d S ru   )r´   rµ   r¶   r±   r²   r¯   r®   rq   r³   r°   r·   r¸   r¹   r=   s    r   re   zSuperWeirdWordPlugin.reset,  sp   € ØˆÔØ!%ˆÔØ-2ˆÔ*Ø$)ˆÔ!Ø#(ˆÔ Ø ˆÔØˆÔØ !ˆÔØ$%ˆÔ!Ø#$ˆÔ Ø$%ˆÔ!Ø#$ˆÔ Ø#$ˆÔ Ð Ð r   rf   c                óP   — | j         dk    r| j        dk    rdS | j        | j        z  S )Né
   r   r|   )r®   r°   r³   rq   r=   s    r   rh   zSuperWeirdWordPlugin.ratio;  s3   € àÔ˜rÒ!Ð! dÔ&>À!Ò&CÐ&CØ�3àÔ(¨4Ô+@Ñ@Ð@r   NrV   ri   rj   r   r
   r   r   r¬   r¬   ½  s‚   € € € € € ð€Ið *ð *ð *ð *ð$I7ð I7ð I7ð I7ðV%ð %ð %ð %ð ðAð Að Añ „XðAð Að Ar   r¬   c                  óF   — e Zd ZdZdZdd„Zdd
„Zdd„Zedd„¦   «         Z	dS )ÚCjkUncommonPluginz<
    Detect messy CJK text that probably means nothing.
    ©rq   Ú_uncommon_countr9   r:   c                ó"   — d| _         d| _        d S rz   rÍ   r=   s    r   r?   zCjkUncommonPlugin.__init__K  s   € Ø%&ˆÔØ$%ˆÔÐÐr   r(   r@   r^   r&   c                ó\   — | xj         dz  c_         |t          vr| xj        dz  c_        dS dS r†   )rq   r   rÎ   rb   s      r   rc   zCjkUncommonPlugin.feed_infoO  sD   € àÐÔ Ñ"ÐÔàÕ1Ð1Ð1ØÐ Ô  AÑ%Ð Ô Ð Ð ð 2Ð1r   c                ó"   — d| _         d| _        d S rz   rÍ   r=   s    r   re   zCjkUncommonPlugin.resetV  s   € Ø !ˆÔØ ˆÔÐÐr   rf   c                óT   — | j         dk     rdS | j        | j         z  }|dk    r|dz  ndS )Nr   r|   r½   rÊ   rÍ   )r>   Úuncommon_form_usages     r   rh   zCjkUncommonPlugin.ratioZ  sC   € àÔ  1Ò$Ð$Ø�3à%)Ô%9¸DÔ<QÑ%QÐð ,?ÀÒ+DÐ+DÐ" RÑ'Ð'È#ÐMr   NrV   ri   rj   )
rW   rX   rY   rZ   r[   r?   rc   re   rk   rh   r
   r   r   rÌ   rÌ   C  s‡   € € € € € ðð ð 8€Ið&ð &ð &ð &ð&ð &ð &ð &ð!ð !ð !ð !ð ðNð Nð Nñ „XðNð Nð Nr   rÌ   c                  óB   — e Zd ZdZdd„Zdd	„Zdd
„Zedd„¦   «         ZdS )Ú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_onlyr9   r:   c                ó„   — d| _         d| _        d| _        d| _        d| _        d | _        d| _        d| _        d| _        d S )NFr   TrÖ   r=   s    r   r?   z ArchaicUpperLowerPlugin.__init__t  sO   € ØˆŒ	à45ˆÔ,à23ˆÔ*Ø89ˆÔ0à%&ˆÔà,0ˆÔØ,1ˆÔ#Ø,1ˆÔ#Ø)-ˆÔ Ð Ð r   r(   r@   r^   r&   c                óR  — |j         o|j        }| }|rn| j        dk    rc| j        dk    r#|j        s| j        s| xj        | j        z  c_        d| _        d| _        d| _        d| _        | xj	        dz  c_	        d| _        dS | j        r|j
        sd| _        | j        �J|j        r| j        s|j        r.| j        r'| j        r| xj        dz  c_        d| _        nd| _        nd| _        | xj	        dz  c_	        | xj        dz  c_        || _        |j        | _        |j        | _        dS )rw   r   é@   NFr   Trx   )r*   r0   rØ   r.   rÞ   rÚ   rÙ   rÛ   r×   rq   r/   r+   rÝ   r,   rÜ   )r>   r(   r^   Úis_concernedÚ	chunk_seps        r   rc   z!ArchaicUpperLowerPlugin.feed_infoƒ  s€  € à!œZÐ>¨DÔ,>ˆØ*Ð*ˆ	àð 	˜Ô=ÀÒAÐAàÔ4¸Ò:Ð:Øœ
ð ;àÔ0ð ;ð Ð8Ô8ØÔ6ñÐ8Ô8ð 23ˆDÔ.Ø34ˆDÔ0Ø$(ˆDÔ!ØˆDŒIØÐ!Ô! QÑ&Ð!Ô!Ø'+ˆDÔ$àˆFàÔ#ð 	-¨D¬Mð 	-Ø',ˆDÔ$àÔ Ð,Ø”
ð 	"˜tÔ:ð 	"Ø”
ð	"Ø#Ô:ð	"ð ”9ð %ØÐ6Ô6¸!Ñ;Ð6Ô6Ø %�D”I�Ià $�D”I�Ià!�”	àÐÔ Ñ"ÐÔØÐ,Ô,°Ñ1Ð,Ô,Ø )ˆÔØ&*¤jˆÔ#Ø&*¤jˆÔ#Ð#Ð#r   c                ó„   — d| _         d| _        d| _        d| _        d | _        d| _        d| _        d| _        d| _        d S )Nr   FT)	rq   rØ   rÙ   rÚ   rÛ   rÜ   rÝ   r×   rÞ   r=   s    r   re   zArchaicUpperLowerPlugin.reset°  sO   € Ø !ˆÔØ/0ˆÔ,Ø-.ˆÔ*Ø34ˆÔ0Ø $ˆÔØ&+ˆÔ#Ø&+ˆÔ#ØˆŒ	Ø#'ˆÔ Ð Ð r   rf   c                ó:   — | j         dk    rdS | j        | j         z  S )Nr   r|   )rq   rÚ   r=   s    r   rh   zArchaicUpperLowerPlugin.ratio»  s&   € àÔ  AÒ%Ð%Ø�3àÔ7¸$Ô:OÑOÐOr   NrV   ri   rj   r   r
   r   r   rÕ   rÕ   f  s~   € € € € € ð
€Ið.ð .ð .ð .ð+1ð +1ð +1ð +1ðZ	(ð 	(ð 	(ð 	(ð ðPð Pð Pñ „XðPð Pð Pr   rÕ   c                  óB   — e Zd ZdZdd„Zdd„Zdd
„Zedd„¦   «         ZdS )ÚArabicIsolatedFormPlugin©rq   Ú_isolated_form_countr9   r:   c                ó"   — d| _         d| _        d S rz   rè   r=   s    r   r?   z!ArabicIsolatedFormPlugin.__init__Ç  s   € Ø%&ˆÔØ)*ˆÔ!Ð!Ð!r   c                ó"   — d| _         d| _        d S rz   rè   r=   s    r   re   zArabicIsolatedFormPlugin.resetË  s   € Ø !ˆÔØ$%ˆÔ!Ð!Ð!r   r(   r@   r^   r&   c                óh   — | xj         dz  c_         |j        t          z  r| xj        dz  c_        dS dS r†   )rq   r1   r   ré   rb   s      r   rc   z"ArabicIsolatedFormPlugin.feed_infoÏ  sJ   € àÐÔ Ñ"ÐÔàŒ:Õ-Ñ-ð 	+ØÐ%Ô%¨Ñ*Ð%Ô%Ð%Ð%ð	+ð 	+r   rf   c                ó>   — | j         dk     rdS | j        | j         z  }|S )Nr   r|   rè   )r>   Úisolated_form_usages     r   rh   zArabicIsolatedFormPlugin.ratioÖ  s,   € àÔ  1Ò$Ð$Ø�3à%)Ô%>ÀÔAVÑ%VÐà"Ð"r   NrV   ri   rj   )	rW   rX   rY   r[   r?   re   rc   rk   rh   r
   r   r   rç   rç   Ã  su   € € € € € à<€Ið+ð +ð +ð +ð&ð &ð &ð &ð+ð +ð +ð +ð ð#ð #ð #ñ „Xð#ð #ð #r   rç   é   )Úmaxsizer¦   ú
str | Noner§   r9   rS   c                óÊ  — | �|€dS | |k    rdS d| v rd|v rdS d| v sd|v rdS d| v sd|v r
d| v sd|v rdS |                       d¦  «        |                      d¦  «        }}|D ]}|t          v rŒ||v r dS Œ| dv |dv }}|s|r
d	| v sd	|v rdS |r|rdS d
| v sd
|v rd	| v sd	|v rdS | dk    s|dk    rdS d	| v sd	|v s| dv r&|dv r"d| v sd|v rdS d| v sd|v rdS | dk    s|dk    rdS dS )za
    Determine if two Unicode range seen next to each other can be considered as suspicious.
    NTFÚ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Øˆtà˜/Ò)Ð)Øˆuà�/Ð!Ð! g°Ð&@Ð&@Øˆuà�oÐ%Ð%¨¸Ð)GÐ)GØˆuð 	�?Ð"Ð" g°Ð&@Ð&@Ø�Ð&Ð&¨+¸Ð*HÐ*Hàˆuð 	×Ò˜cÑ"Ô"Ø×Ò˜cÑ"Ô"ð 'Ðð
 ð ð ˆØÕ0Ð0Ð0ØØÐ!Ð!Ð!Ø�5�5ð "ð
 	ð
ð	
ð
 	Ð3Ð3ð 'Ðð 	ð Ð,ð Ø�Ð Ð  E¨_Ð$<Ð$<àˆuØð Ð,ð Øˆuà�?Ð"Ð" h°/Ð&AÐ&AØ�OÐ#Ð# u°Ð'?Ð'?Ø�5Ø˜mÒ+Ð+¨À-Ò/OÐ/OØ�5ð 	�Ð Ð  E¨_Ð$<Ð$<ØÐ3Ð3Ð3ØÐ7Ð7Ð7à˜OÐ+Ð+¨}ÀÐ/OÐ/OØ�5Ø�oÐ%Ð%¨°OÐ)CÐ)CØ�5Ø˜mÒ+Ð+¨À-Ò/OÐ/OØ�5àˆ4r   i   çš™™™™™É?FÚdecoded_sequencer@   Úmaximum_thresholdrf   Údebugc           	     ó�  — 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        rE |||¦  «         |j        r |||¦  «         |j        r |||¦  «         |j        r |||¦  «         Œ�|j        |j        z   |j        z   |j        z   |	j        z   |
j        z   |j        z   |j        z   |j        z   }||k    r nwŒü |d¦  «          |d|¦  «          |d|¦  «          |d|¦  «         |j        |j        z   |j        z   |j        z   |	j        z   |
j        z   |j        z   |j        z   |j        z   }|r½t)          d¦  «        }|                     t,          d	|› d
|› d|› �¦  «         |dk    rL|                     t,          d| dd…         › �¦  «         |                     t,          d| dd…         › �¦  «         |||||	|
|||f	D ],}|                     t,          |j        › d|j        › �¦  «         Œ-t1          |d¦  «        S )zw
    Compute a mess ratio given a decoded bytes sequence. The maximum threshold does stop the computation earlier.
    iÿ  rI   rï   rá   rB   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&   rU   Úranger)   r*   r3   r4   r5   rh   r   Úlogr   Ú	__class__Úround)r  r  r  Ú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_feedr^   Úinfo_updateÚblock_startr(   Úmean_mess_ratioÚloggerÚdts                                 r   Ú
mess_ratior)  *  sW  € õ Ð'Ñ(Ô(€Gà�‚}€}ØˆˆØ	�4ŠˆØˆˆàˆõ .NÑ-OÔ-O€DÝ%=Ñ%?Ô%?€DÝ/Ñ1Ô1€DÝ-LÑ-NÔ-N€EÝ+Ñ-Ô-€DÝ!5Ñ!7Ô!7€DÝ/Ñ1Ô1€DÝ$;Ñ$=Ô$=€DÝ%=Ñ%?Ô%?€Dð ”€IØ”€IØ”€IØ”€JØ”€IØ”€IØ”€IØ”€IØ”€Iõ ‘Z”Z€DØ”+€Kõ ˜Q ¨Ñ.Ô.ð ;
ð ;
ˆØ)¨+¸ÀdÑ8JÐ*JÔKð 	/ð 	/ˆIàˆK˜	Ñ"Ô"Ð"ð ˆI�i Ñ&Ô&Ð&ØˆI�i Ñ&Ô&Ð&ØˆI�i Ñ&Ô&Ð&ð Œ~ð +Ø�	˜) TÑ*Ô*Ð*Ø�	˜) TÑ*Ô*Ð*ð Œzð 
/Ø�	˜) TÑ*Ô*Ð*à”:ð 0Ø�J˜y¨$Ñ/Ô/Ð/à”;ð /Ø�I˜i¨Ñ.Ô.Ð.à”>ð /Ø�I˜i¨Ñ.Ô.Ð.øð ŒJØŒjñàŒjñð Œkñð Œjñ	ð
 Œjñð Œjñð Œjñð Œjñð 	ð Ð/Ò/Ð/ØˆEð 0ð 	ˆ�DÑÔÐØˆ	�$˜ÑÔÐØˆ	�$˜ÑÔÐØˆ	�$˜ÑÔÐð ŒJØŒjñàŒjñð Œkñð Œjñ	ð
 Œjñð Œjñð Œjñð Œjñð 	ð ð =ÝÐ/Ñ0Ô0ˆà�
Š
Ýð5Ø15ð5ð 5ØHWð5ð 5à!2ð5ð 5ñ	
ô 	
ð 	
ð �RŠ<ˆ<Ø�JŠJ•uÐGÐ0@ÀÀ"ÀÔ0EÐGÐGÑHÔHÐHØ�JŠJ•uÐGÐ.>¸s¸u¸uÔ.EÐGÐGÑHÔHÐHà˜˜t U¨D°$¸¸dÀDÐIð 	=ð 	=ˆBØ�JŠJ•u ¤Ð;Ð;°´Ð;Ð;Ñ<Ô<Ð<Ð<å� !Ñ$Ô$Ð$r   )r¦   rñ   r§   rñ   r9   rS   )r  F)r  r@   r  rf   r  rS   r9   rf   )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>r5     sò  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð àÔ�vÒÐØÐÐÐÐÐÐðØ+Ð+Ð+Ð+Ð+Ð+Ð+øØð ð ð ð	ð 	ð 	ð 	ð 	ðøøøðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ˜'‘> IÑ-°	Ñ9¸EÑA€Ð AÐ AÐ AÑ Að ð[Ið [Ið [Ið [Ið [Iñ [Iô [Iñ „ð[Ið|"ð "ð "ð "ð "ñ "ô "ð "ð< ð.Lð .Lð .Lð .Lð .LÐ'9ñ .Lô .Lñ „ð.Lðb ðOð Oð Oð Oð OÐ1ñ Oô Oñ „ðOð6 ðEð Eð Eð Eð EÐ*ñ Eô Eñ „ðEð: ð)Dð )Dð )Dð )Dð )DÐ&8ñ )Dô )Dñ „ð)DðX ð4/ð 4/ð 4/ð 4/ð 4/Ð(ñ 4/ô 4/ñ „ð4/ðn ðBAð BAð BAð BAð BAÐ-ñ BAô BAñ „ðBAðJ ðNð Nð Nð Nð NÐ*ñ Nô Nñ „ðNðD ðYPð YPð YPð YPð YPÐ0ñ YPô YPñ „ðYPðx ð#ð #ð #ð #ð #Ð1ñ #ô #ñ „ð#ð8 €�4ÐÑÔðFð Fð Fñ ÔðFðR €�4ÐÑÔàINð}%ð }%ð }%ð }%ñ Ôð}%ð }%ð }%s   «2 ²=¼=