+
    ¿ù3i :  ã                   óÊ   € R t ^ RIt^ RIt^ RIt^ RIHtHtHt ^RIH	t	 ^RI
Ht ^RIHtHtHt ^RIHt ^RIHt ^RIHt ^R	IHt ^R
IHt ^RIHt ^RIHt  ! R R4      tR# )a  
Module containing the UniversalDetector detector class, which is the primary
class a user of ``chardet`` should use.

:author: Mark Pilgrim (initial port to Python)
:author: Shy Shalom (original C code)
:author: Dan Blanchard (major refactoring for 3.0)
:author: Ian Cordasco
N)ÚListÚOptionalÚUnion)ÚCharSetGroupProber)ÚCharSetProber)Ú
InputStateÚLanguageFilterÚProbingState)ÚEscCharSetProber)ÚLatin1Prober)ÚMacRomanProber)ÚMBCSGroupProber©Ú
ResultDict)ÚSBCSGroupProber)ÚUTF1632Proberc                   ó�  a € ] tR t^8t o RtRt]P                  ! R4      t]P                  ! R4      t	]P                  ! R4      t
RRRR	R
RRRRRRRRRRR/tRRRRRRRRRRRRRR/t]P                  R3V 3R  lR! llt]V 3R" lR# l4       t]V 3R$ lR% l4       t]V 3R& lR' l4       tV 3R( lR) ltV 3R* lR+ ltV 3R, lR- ltR.tV tR/# )0ÚUniversalDetectoraI  
The ``UniversalDetector`` class underlies the ``chardet.detect`` function
and coordinates all of the different charset probers.

To get a ``dict`` containing an encoding and its confidence, you can simply
run:

.. code::

        u = UniversalDetector()
        u.feed(some_bytes)
        u.close()
        detected = u.result

gš™™™™™É?s   [€-ÿ]s   (|~{)s   [€-Ÿ]z
iso-8859-1zWindows-1252z
iso-8859-2zWindows-1250z
iso-8859-5zWindows-1251z
iso-8859-6zWindows-1256z
iso-8859-7zWindows-1253z
iso-8859-8zWindows-1255z
iso-8859-9zWindows-1254ziso-8859-13zWindows-1257Úasciiztis-620zISO-8859-11Úgb2312ÚGB18030zeuc-krÚCP949zutf-16leúUTF-16Fc                ó*   <€ V ^8„  d   QhRS[ RS[RR/# )é   Úlang_filterÚshould_rename_legacyÚreturnN)r   Úbool)ÚformatÚ__classdict__s   "€Ú;/usr/lib/python3/dist-packages/chardet/universaldetector.pyÚ__annotate__ÚUniversalDetector.__annotate__d   s)   ø€ ÷ ñ á#ðñ #ðð 
ñ	ó    c                ó"  € R V n         R V n        . V n        RR RRRR /V n        RV n        RV n        \        P                  V n        RV n	        Wn
        \        P                  ! \        4      V n        RV n        W n        V P#                  4        R # )NÚencodingÚ
confidenceç        ÚlanguageFr$   )Ú_esc_charset_proberÚ_utf1632_proberÚ_charset_probersÚresultÚdoneÚ	_got_datar   Ú
PURE_ASCIIÚ_input_stateÚ
_last_charr   ÚloggingÚ	getLoggerÚ__name__ÚloggerÚ_has_win_bytesr   Úreset)Úselfr   r   s   &&&r!   Ú__init__ÚUniversalDetector.__init__d   sŠ   € ð
 @DˆÔ Ø8<ˆÔØ57ˆÔà˜Ø˜#Ø˜ð#
ˆŒð
 ˆŒ	ØˆŒÜ&×1Ñ1ˆÔØˆŒØ&ÔÜ×'Ò'¬Ó1ˆŒØ#ˆÔØ$8Ô!Ø�
‰
Žr$   c                ó    <€ V ^8„  d   QhRS[ /# ©r   r   )Úint)r   r    s   "€r!   r"   r#   |   s   ø€ ÷ !ñ !™Sñ !r$   c                ó   € V P                   # ©N)r1   ©r9   s   &r!   Úinput_stateÚUniversalDetector.input_state{   s   € à× Ñ Ð r$   c                ó    <€ V ^8„  d   QhRS[ /# r=   )r   )r   r    s   "€r!   r"   r#   €   s   ø€ ÷ #ñ #™tñ #r$   c                ó   € V P                   # r@   )r7   rA   s   &r!   Úhas_win_bytesÚUniversalDetector.has_win_bytes   s   € à×"Ñ"Ð"r$   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r=   )r   r   )r   r    s   "€r!   r"   r#   „   s   ø€ ÷ %ñ %¡¡mÕ!4ñ %r$   c                ó   € V P                   # r@   )r,   rA   s   &r!   Úcharset_probersÚ!UniversalDetector.charset_probersƒ   s   € à×$Ñ$Ð$r$   c                ó   <€ V ^8„  d   QhRR/# )r   r   N© )r   r    s   "€r!   r"   r#   ‡   s   ø€ ÷ ñ �tñ r$   c                óx  € RRRRRR/V n         RV n        RV n        RV n        \        P
                  V n        RV n        V P                  '       d   V P                  P                  4        V P                  '       d   V P                  P                  4        V P                   F  pVP                  4        K  	  R# )zÆ
Reset the UniversalDetector and all of its probers back to their
initial states.  This is called by ``__init__``, so you only need to
call this directly in between analyses of different documents.
r&   Nr'   r(   r)   Fr$   )r-   r.   r/   r7   r   r0   r1   r2   r*   r8   r+   r,   )r9   Úprobers   & r!   r8   ÚUniversalDetector.reset‡   s˜   € ð " 4¨°s¸JÈÐMˆŒØˆŒ	ØˆŒØ#ˆÔÜ&×1Ñ1ˆÔØˆŒØ×#×#Ð#Ø×$Ñ$×*Ñ*Ô,Ø××ÐØ× Ñ ×&Ñ&Ô(Ø×+Ô+ˆFØ�L‰LŽNó ,r$   c                ó:   <€ V ^8„  d   QhRS[ S[S[3,          RR/# )r   Úbyte_strr   N)r   ÚbytesÚ	bytearray)r   r    s   "€r!   r"   r#   š   s)   ø€ ÷ A+ñ A+™U¡5©)Ð#3Õ4ð A+¸ñ A+r$   c                óŠ
  € V P                   '       d   R# V'       g   R# \        V\        4      '       g   \        V4      pV P                  '       Eg(   VP	                  \
        P                  4      '       d   RRRRRR/V n        MÏVP	                  \
        P                  \
        P                  34      '       d   RRRRRR/V n        MŒVP	                  R	4      '       d   RR
RRRR/V n        MgVP	                  R4      '       d   RRRRRR/V n        MBVP	                  \
        P                  \
        P                  34      '       d   RRRRRR/V n        RV n        V P                  R,          e
   RV n         R# V P                  \        P                  8X  dž   V P                  P!                  V4      '       d   \        P"                  V n        MfV P                  \        P                  8X  dH   V P$                  P!                  V P&                  V,           4      '       d   \        P(                  V n        VRR V n        V P*                  '       g   \-        4       V n        V P*                  P.                  \0        P2                  8X  dq   V P*                  P5                  V4      \0        P6                  8X  dC   RV P*                  P8                  RV P*                  P;                  4       RR/V n        RV n         R# V P                  \        P(                  8X  d³   V P<                  '       g   \?        V P@                  4      V n        V P<                  P5                  V4      \0        P6                  8X  dW   RV P<                  P8                  RV P<                  P;                  4       RV P<                  PB                  /V n        RV n         R# R# V P                  \        P"                  8X  EdY   V PD                  '       g¬   \G        V P@                  4      .V n"        V P@                  \H        PJ                  ,          '       d$   V PD                  PM                  \O        4       4       V PD                  PM                  \Q        4       4       V PD                  PM                  \S        4       4       V PD                   F_  pVP5                  V4      \0        P6                  8X  g   K)  RVP8                  RVP;                  4       RVPB                  /V n        RV n          M	  V PT                  P!                  V4      '       d
   RV n+        R# R# R# )a­  
Takes a chunk of a document and feeds it through all of the relevant
charset probers.

After calling ``feed``, you can check the value of the ``done``
attribute to see if you need to continue feeding the
``UniversalDetector`` more data, or if it has made a prediction
(in the ``result`` attribute).

.. note::
   You should always call ``close`` when you're done feeding in your
   document if ``done`` is not already ``True``.
Nr&   z	UTF-8-SIGr'   ç      ð?r)   Ú zUTF-32s   þÿ  zX-ISO-10646-UCS-4-3412s     ÿþzX-ISO-10646-UCS-4-2143r   Téÿÿÿÿ),r.   Ú
isinstancerT   r/   Ú
startswithÚcodecsÚBOM_UTF8r-   ÚBOM_UTF32_LEÚBOM_UTF32_BEÚBOM_LEÚBOM_BEr1   r   r0   ÚHIGH_BYTE_DETECTORÚsearchÚ	HIGH_BYTEÚESC_DETECTORr2   Ú	ESC_ASCIIr+   r   Ústater	   Ú	DETECTINGÚfeedÚFOUND_ITÚcharset_nameÚget_confidencer*   r
   r   r)   r,   r   r   ÚNON_CJKÚappendr   r   r   ÚWIN_BYTE_DETECTORr7   )r9   rR   rO   s   && r!   rh   ÚUniversalDetector.feedš   s-  € ð �9�9ˆ9ÙçÙä˜(¤I×.Ò.Ü  Ó*ˆHð �~�~‰~à×"Ñ"¤6§?¡?×3Ò3ð  Ø  #Ø ð�•ð
 ×$Ñ$¤f×&9Ñ&9¼6×;NÑ;NÐ%O×PÒPð  *¨8°\À3È
ÐTVÐW�•Ø×$Ñ$Ð%8×9Ò9ð Ð 8Ø  #Ø ð	�•ð ×$Ñ$Ð%8×9Ò9ð Ð 8Ø  #Ø ð	�•ð ×$Ñ$¤f§m¡m´V·]±]Ð%C×DÒDð  *¨8°\À3È
ÐTVÐW�”à!ˆDŒNØ�{‰{˜:Õ&Ò2Ø �”	Ùð ×Ñ¤
× 5Ñ 5Ô5Ø×&Ñ&×-Ñ-¨h×7Ò7Ü$.×$8Ñ$8�Õ!à×!Ñ!¤Z×%:Ñ%:Ô:Ø×%Ñ%×,Ñ,¨T¯_©_¸xÕ-G×HÒHä$.×$8Ñ$8�Ô!à" 2 3˜-ˆŒð ×#×#Ð#Ü#0£?ˆDÔ à×Ñ×%Ñ%¬×)?Ñ)?Ô?Ø×#Ñ#×(Ñ(¨Ó2´l×6KÑ6KÔKà × 4Ñ 4× AÑ AØ  $×"6Ñ"6×"EÑ"EÓ"GØ ð�”ð
 !�”	Ùð ×Ñ¤
× 4Ñ 4Ô4Ø×+×+Ð+Ü+;¸D×<LÑ<LÓ+M�Ô(Ø×'Ñ'×,Ñ,¨XÓ6¼,×:OÑ:OÔOà × 8Ñ 8× EÑ EØ  $×":Ñ":×"IÑ"IÓ"KØ × 8Ñ 8× AÑ Að�”ð
 !�–	ñ Pð ×Ñ¤*×"6Ñ"6Õ6Ø×(×(Ð(Ü)8¸×9IÑ9IÓ)JÐ(K�Ô%à×#Ñ#¤n×&<Ñ&<×<Ô<Ø×)Ñ)×0Ñ0´Ó1BÔCØ×%Ñ%×,Ñ,¬\«^Ô<Ø×%Ñ%×,Ñ,¬^Ó-=Ô>Ø×/Ô/�Ø—;‘;˜xÓ(¬L×,AÑ,AÖAà" F×$7Ñ$7Ø$ f×&;Ñ&;Ó&=Ø" F§O¡Oð#�D”Kð
 !%�D”IÙñ 0ð ×%Ñ%×,Ñ,¨X×6Ò6Ø&*�Ö#ñ 7ñ# 7r$   c                ó    <€ V ^8„  d   QhRS[ /# r=   r   )r   r    s   "€r!   r"   r#     s   ø€ ÷ Mñ M‘zñ Mr$   c           	     óü  € V P                   '       d   V P                  # RV n         V P                  '       g   V P                  P	                  R4       EMxV P
                  \        P                  8X  d   RRRRRR/V n        EMJV P
                  \        P                  8X  Ed+   R	pR
pR	pV P                   F)  pV'       g   K  VP                  4       pW8”  g   K%  TpTpK+  	  V'       dä   W P                  8”  dÔ   VP                  pVf   Q hVP                  4       pVP                  4       pVP                  R4      '       d.   V P                  '       d   V P                   P#                  We4      pV P$                  '       d5   V P&                  P#                  T;'       g    RP                  4       V4      pRVRVRVP(                  /V n        V P                  P+                  4       \,        P.                  8:  dù   V P                  R,          fä   V P                  P	                  R4       V P                   F¸  pV'       g   K  \1        V\2        4      '       dV   VP4                   FC  pV P                  P	                  RVP                  VP(                  VP                  4       4       KE  	  Kx  V P                  P	                  RVP                  VP(                  VP                  4       4       Kº  	  V P                  # )z¾
Stop analyzing the current document and come up with a final
prediction.

:returns:  The ``result`` attribute, a ``dict`` with the keys
           `encoding`, `confidence`, and `language`.
Tzno data received!r&   r   r'   rV   r)   rW   Nr(   ziso-8859z no probers hit minimum thresholdz%s %s confidence = %s)r.   r-   r/   r6   Údebugr1   r   r0   rc   r,   rk   ÚMINIMUM_THRESHOLDrj   ÚlowerrZ   r7   ÚISO_WIN_MAPÚgetr   Ú
LEGACY_MAPr)   ÚgetEffectiveLevelr3   ÚDEBUGrY   r   Úprobers)	r9   Úprober_confidenceÚmax_prober_confidenceÚ
max_proberrO   rj   Úlower_charset_namer'   Úgroup_probers	   &        r!   ÚcloseÚUniversalDetector.close  sy  € ð �9�9ˆ9Ø—;‘;ÐØˆŒ	à�~�~ˆ~Ø�K‰K×ÑÐ1Ö2ð ×Ñ¤*×"7Ñ"7Ô7Ø% w°¸cÀ:ÈrÐRˆDŽKð ×Ñ¤*×"6Ñ"6Õ6Ø $ÐØ$'Ð!ØˆJØ×/Ô/�ßÙØ$*×$9Ñ$9Ó$;Ð!Ø$Ö<Ø,=Ð)Ø!'’Jñ 0÷ Ð4×7MÑ7MÔMØ)×6Ñ6�Ø#Ò/Ð/Ð/Ø%1×%7Ñ%7Ó%9Ð"Ø'×6Ñ6Ó8�
ð &×0Ñ0°×<Ò<Ø×*×*Ð*Ø'+×'7Ñ'7×';Ñ';Ø.ó(˜ð ×,×,Ð,Ø#'§?¡?×#6Ñ#6Ø%×+Ð+¨×2Ñ2Ó4°ló$�Lð  Ø  *Ø 
× 3Ñ 3ð�”ð �;‰;×(Ñ(Ó*¬g¯m©mÔ;Ø�{‰{˜:Õ&Ò.Ø—‘×!Ñ!Ð"DÔEØ$(×$9Ô$9�Lß'Ù Ü! ,Ô0B×CÒCØ&2×&:Ô&:˜FØ ŸK™K×-Ñ-Ø 7Ø &× 3Ñ 3Ø &§¡Ø &× 5Ñ 5Ó 7ö	ó ';ð Ÿ™×)Ñ)Ø3Ø(×5Ñ5Ø(×1Ñ1Ø(×7Ñ7Ó9ö	ñ %:ð$ �{‰{Ðr$   )r,   r*   r/   r7   r1   r2   r+   r.   r   r6   r-   r   N)r5   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rs   ÚreÚcompilera   rd   rn   ru   rw   r   ÚALLr:   ÚpropertyrB   rF   rJ   r8   rh   r€   Ú__static_attributes__Ú__classdictcell__)r    s   @r!   r   r   8   s  ø‡ € ñð  ÐØŸš NÓ3ÐØ—:’:˜lÓ+€LØŸ
š
 >Ó2Ðà�nØ�nØ�nØ�nØ�nØ�nØ�nØ�~ð	€Kð 	�Ø�nØ�=Ø�nØ�)Ø�'Ø�Hð€Jð '5×&8Ñ&8Ø%*÷ò ð. ÷!ó ð!ð ÷#ó ð#ð ÷%ó ð%÷ð ÷&A+ð A+÷FMö Mr$   r   )r…   r[   r3   r†   Útypingr   r   r   Úcharsetgroupproberr   Úcharsetproberr   Úenumsr   r   r	   Ú	escproberr
   Úlatin1proberr   Úmacromanproberr   Úmbcsgroupproberr   Ú
resultdictr   Úsbcsgroupproberr   Úutf1632proberr   r   rM   r$   r!   Ú<module>r—      sH   ðñ8ó Û Û 	ß (Ñ (å 2Ý (ß ;Ñ ;Ý 'Ý &Ý *Ý ,Ý "Ý ,Ý (÷ró rr$   