§
    ‚ŠtjÛ1 ã                   ó~  — d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	m
Z
mZmZmZmZmZ ddlmZmZmZ ddlmZ d	d
lmZmZmZmZ d	dlmZ  ej        e¦  «        Zg d¢Zeg d¢z   Z dªd„Z!de"de#fd„Z$d«dee#         dz  fd„Z% G d„ d¦  «        Z& G d„ de&¦  «        Z'de#de"fd„Z( G d„ d¦  «        Z) G d„ de)¦  «        Z* G d„ d e)¦  «        Z+ G d!„ d"e)¦  «        Z, G d#„ d$e)¦  «        Z- G d%„ d&e)¦  «        Z. G d'„ d(e)¦  «        Z/ G d)„ d*e)¦  «        Z0 G d+„ d,e)¦  «        Z1 G d-„ d.e)¦  «        Z2 G d/„ d0e)¦  «        Z3 G d1„ d2e)¦  «        Z4 G d3„ d4e)¦  «        Z5 G d5„ d6e5¦  «        Z6 G d7„ d8e5¦  «        Z7 G d9„ d:e5¦  «        Z8 G d;„ d<e5¦  «        Z9 G d=„ d>e5¦  «        Z: G d?„ d@e5¦  «        Z; G dA„ dBe5¦  «        Z< G dC„ dDe5¦  «        Z= G dE„ dFe5¦  «        Z> G dG„ dHe5¦  «        Z? G dI„ dJe5¦  «        Z@ G dK„ dLe5¦  «        ZA G dM„ dNe5¦  «        ZB G dO„ dPe5¦  «        ZC G dQ„ dRe5¦  «        ZD G dS„ dTe5¦  «        ZE G dU„ dVeD¦  «        ZF G dW„ dXe)¦  «        ZG G dY„ dZe5¦  «        ZH G d[„ d\e)¦  «        ZI G d]„ d^e)¦  «        ZJ G d_„ d`e)¦  «        ZK G da„ dbe5¦  «        ZL G dc„ dde5¦  «        ZM G de„ dfe5¦  «        ZN G dg„ dhe)¦  «        ZO G di„ dje5¦  «        ZP G dk„ dle5¦  «        ZQ G dm„ dne5¦  «        ZRdo„ ZS G dp„ dq¦  «        ZT G dr„ ds¦  «        ZUi dte6“due2“dve7“dwe*“dxeH“dyeK“dze8“d{eI“d|e/“d}e*“d~e4“de9“d€e*“d�e*“d‚e*“dƒe*“d„e*“i d…e6“d†e,“d‡e/“dˆe0“d‰e*“dŠe*“d‹e2“dŒe>“d�e2“dŽe2“d�e*“d�eO“d‘e:“d’e;“d“e-“d”e*“d•e2“¥i d–e<“d—e.“d˜eC“d™e1“dše@“d›eA“dœe2“d�e3“dže=“dŸe*“d eD“d¡eE“d¢eF“d£eG“d¤e>“d¥e?“d¦e+“¥eLeNeNeMeNd§œ¥ZVd¬defd©„ZWdS )­zù
Utilities to convert slow tokenizers in their fast tokenizers counterparts.

All the conversions are grouped here to gather SentencePiece dependencies outside of the fast tokenizers files and
allow to make our dependency on SentencePiece optional.
é    N)Ú
Collection)Ú	lru_cache)Úversion)Ú
AddedTokenÚRegexÚ	TokenizerÚdecodersÚnormalizersÚpre_tokenizersÚ
processors)ÚBPEÚUnigramÚ	WordPiece)Útqdmé   )Úis_protobuf_availableÚis_sentencepiece_availableÚloggingÚrequires_backends)ÚPROTOBUF_IMPORT_ERROR)Úar_ARÚcs_CZÚde_DEÚen_XXÚes_XXÚet_EEÚfi_FIÚfr_XXÚgu_INÚhi_INÚit_ITÚja_XXÚkk_KZÚko_KRÚlt_LTÚlv_LVÚmy_MMÚne_NPÚnl_XXÚro_ROÚru_RUÚsi_LKÚtr_TRÚvi_VNÚzh_CN)Úaf_ZAÚaz_AZÚbn_INÚfa_IRÚhe_ILÚhr_HRÚid_IDÚka_GEÚkm_KHÚmk_MKÚml_INÚmn_MNÚmr_INÚpl_PLÚps_AFÚpt_XXÚsv_SEÚsw_KEÚta_INÚte_INÚth_THÚtl_XXÚuk_UAÚur_PKÚxh_ZAÚgl_ESÚsl_SIÚ c                 ó  — t          ¦   «         rddlm} |S t          ¦   «         rGdd l}t          j        |j        j        ¦  «        t          j        d¦  «        k     rddl	m} nddl	m
} |S t          t          j        | ¦  «        ¦  «        ‚)Nr   )Úsentencepiece_model_pb2z4.0.0)Úsentencepiece_model_pb2_new)r   ÚsentencepiecerM   r   Úgoogle.protobufr   ÚparseÚprotobufÚ__version__Útransformers.utilsrN   ÚImportErrorr   Úformat)Úerror_messagerM   Úgoogles      úa/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/convert_slow_tokenizer.pyÚimport_protobufrZ   _   s®   € Ý!Ñ#Ô#ð 'Ø9Ð9Ð9Ð9Ð9Ð9à&Ð&ÝÑÔð 	GØÐÐÐåŒ=˜œÔ4Ñ5Ô5½¼ÀgÑ8NÔ8NÒNÐNØBÐBÐBÐBÐBÐBÐBàaÐaÐaÐaÐaÐaØ&Ð&åÕ/Ô6°}ÑEÔEÑFÔFÐFó    Úadd_prefix_spaceÚreturnc                 ó:   — | rd}t          |dd¦  «        sd}nd}|S )NÚalwaysÚlegacyTÚfirstÚnever)Úgetattr)r\   Úoriginal_tokenizerÚprepend_schemes      rY   Ú_get_prepend_schemerf   p   s5   € Øð !Ø!ˆÝÐ)¨8°TÑ:Ô:ð 	%Ø$ˆNøà ˆØÐr[   Úskip_tokensc                 ó  ‡ — |�t          |¦  «        nt          ¦   «         }|d u}|rt          |¦  «        n‰ }g }|                     ¦   «         D ]’\  }}||v rŒ
g }t          dt	          |¦  «        ¦  «        D ]?}|d |…         ||d …         }
}	|	|v s|
|v rŒ|	‰ v r|
‰ v r|                     |	|
|f¦  «         Œ@t          |ˆ fd„¬¦  «        }|                     |¦  «         Œ“t          |d„ |¬¦  «        }d„ |D ¦   «         }|S )Nr   c                 ó<   •— ‰| d                  ‰| d                  fS ©Nr   r   © )ÚxÚvocabs    €rY   ú<lambda>z!generate_merges.<locals>.<lambda>Š   s   ø€ ¨U°1°Q´4¬[¸%ÀÀ!Ä¼+Ð,F€ r[   ©Úkeyc                 ód   — | d         t          | d         ¦  «        t          | d         ¦  «        fS )Né   r   r   )Úlen©Úvals    rY   rn   z!generate_merges.<locals>.<lambda>�   s%   € ¨S°¬VµS¸¸Q¼±[´[Å#ÀcÈ!ÄfÁ+Ä+Ð,N€ r[   ©rp   Úreversec                 ó.   — g | ]}|d          |d         f‘ŒS ©r   r   rk   )Ú.0ru   s     rY   ú
<listcomp>z#generate_merges.<locals>.<listcomp>Ž   s%   € Ð1Ð1Ð1 3ˆs�1Œv�s˜1”vÐÐ1Ð1Ð1r[   )ÚsetÚdictÚitemsÚrangers   ÚappendÚsortedÚextend)rm   Úvocab_scoresrg   rw   ÚmergesÚmergeÚpiece_scoreÚlocalÚindexÚpiece_lÚpiece_rs   `          rY   Úgenerate_mergesr‹   z   sX  ø€ Ø&1Ð&=•#�kÑ"Ô"Ð"Å3Á5Ä5€KØ $Ð&€GØ)0Ð;•4˜Ñ%Ô%Ð%°e€Là€FØ*×0Ò0Ñ2Ô2ð ð Ñˆˆ{Ø�KÐÐØØˆÝ˜1�c %™jœjÑ)Ô)ð 	>ð 	>ˆEØ$ V e Vœ}¨e°E°F°F¬m�WˆGØ˜+Ð%Ð%¨°KÐ)?Ð)?ØØ˜%ÐÐ G¨uÐ$4Ð$4Ø—’˜g w°Ð<Ñ=Ô=Ð=øÝ�uÐ"FÐ"FÐ"FÐ"FÐGÑGÔGˆØ�Š�eÑÔÐÐå�FÐ NÐ NÐX_Ð`Ñ`Ô`€FØ1Ð1¨&Ð1Ñ1Ô1€FØ€Mr[   c                   óV   — e Zd ZdZdefd„Zdeeeef         e	e         f         fd„Z
dS )ÚSentencePieceExtractorzl
    Extractor implementation for SentencePiece trained models. https://github.com/google/sentencepiece
    Úmodelc                 ó6  — t          | d¦  «         t          | d¦  «         t          ¦   «         }|                     ¦   «         }t          |d¦  «        5 }|                     |                     ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   || _        d S )NrO   rR   Úrb)r   rZ   Ú
ModelProtoÚopenÚParseFromStringÚreadÚproto)ÚselfrŽ   Ú	model_pb2ÚmÚfs        rY   Ú__init__zSentencePieceExtractor.__init__—   sÉ   € Ý˜$ Ñ0Ô0Ð0Ý˜$ 
Ñ+Ô+Ð+õ $Ñ%Ô%ˆ	à× Ò Ñ"Ô"ˆÝ�%˜ÑÔð 	( !Ø×Ò˜aŸfšf™hœhÑ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(àˆŒ
ˆ
ˆ
s   Á(BÂBÂBr]   c                 ó  — | j         j        j         |€!ddlm}m} | j         j        j        dk    r|n|}d„ | j         j        D ¦   «         }|j        dk    r| j         j        j        |d<   ||d<   n4dd	l	m
} d
„ t          |¦  «        D ¦   «         } ||¦  «        }||d<   ||d<   d„ t          | j         j        ¦  «        D ¦   «         }d„ t          |d„ ¬¦  «        D ¦   «         |d<   t          | j         j        dd¦  «        |d<   |S )úÂ
        By default will return vocab and merges with respect to their order, by sending `vocab_scores` we're going to
        order the merges with respect to the piece scores instead.
        Nr   )r   r   r   c                 ó*   — g | ]}|j         |j        f‘ŒS rk   ©ÚpieceÚscore©rz   rŸ   s     rY   r{   z2SentencePieceExtractor.extract.<locals>.<listcomp>­   s!   € ÐKÐKÐK°�%”+˜uœ{Ð+ÐKÐKÐKr[   r   Úunk_idrm   )r‹   c                 ó    — i | ]\  }\  }}||“ŒS rk   rk   ©rz   ÚiÚwordr    s       rY   ú
<dictcomp>z2SentencePieceExtractor.extract.<locals>.<dictcomp>µ   s#   € ÐFÐFÐFÑ!1 ¡M T¨5�T˜1ÐFÐFÐFr[   r„   c                 óL   — g | ]!\  }}|j         d v ¯||j        |j         dk    f‘Œ"S ©)é   é   rª   )ÚtyperŸ   )rz   ÚidÚps      rY   r{   z2SentencePieceExtractor.extract.<locals>.<listcomp>¾   s:   € ÐuÐuÐu¹5¸2¸qÐdeÔdjÐntÐdtÐdt˜R ¤¨!¬&°Aª+Ð6ÐdtÐdtÐdtr[   c                 ó:   — g | ]\  }}}t          |d |¬¦  «        ‘ŒS ©F©Ú
normalizedÚspecial©r   ©rz   r­   Útokenr³   s       rY   r{   z2SentencePieceExtractor.extract.<locals>.<listcomp>¿   s=   € ð /
ð /
ð /
á"��E˜7õ �u¨¸Ð@Ñ@Ô@ð/
ð /
ð /
r[   c                 ó   — | d         S ©Nr   rk   ©rl   s    rY   rn   z0SentencePieceExtractor.extract.<locals>.<lambda>Á   s
   € ÈQÈqÌT€ r[   ro   Úadditional_special_tokensÚprecompiled_charsmapÚ_spm_precompiled_charsmap)r•   Útrainer_specr¢   Útokenizers.modelsr   r   Ú
model_typeÚpiecesÚ__name__Útokenization_utils_baser‹   Ú	enumerater�   rc   Únormalizer_spec)	r–   r¿   Úkwargsr   r   rm   r‹   r„   Úspm_added_tokenss	            rY   ÚextractzSentencePieceExtractor.extract£   s[  € ð
 	Œ
ÔÔ&Ð&ØÐØ6Ð6Ð6Ð6Ð6Ð6Ð6Ð6à$(¤JÔ$;Ô$FÈ!Ò$KÐ$K˜˜ÐQTˆJØKÐK¸¼Ô9JÐKÑKÔKˆàÔ %Ò'Ð'Ø#œzÔ6Ô=ˆF�8ÑØ#ˆF�7‰OˆOà@Ð@Ð@Ð@Ð@Ð@àFÐFµY¸uÑ5EÔ5EÐFÑFÔFˆEØ$�_ UÑ+Ô+ˆFØ#ˆF�7‰OØ%ˆF�8Ñð vÐuÅIÈdÌjÔN_ÑD`ÔD`ÐuÑuÔuÐð/
ð /
å&,Ð-=À>À>Ð&RÑ&RÔ&Rð/
ñ /
ô /
ˆÐ*Ñ+õ /6°d´jÔ6PÐRhÐjnÑ.oÔ.oˆÐ*Ñ+Øˆr[   N)rÁ   Ú
__module__Ú__qualname__Ú__doc__Ústrrš   Útupler}   ÚintÚlistrÇ   rk   r[   rY   r�   r�   ’   sj   € € € € € ðð ð
˜cð 
ð 
ð 
ð 
ð!¨u°T¸#¸s¸(´^ÀTÈ%Ä[Ð5PÔ/Qð !ð !ð !ð !ð !ð !r[   r�   c                   óH   — e Zd Zddeeeef         ee         f         fd„ZdS )ÚGemmaSentencePieceExtractorNr]   c                 óÌ   ‡— | j         Šˆfd„t          ‰                     ¦   «         ¦  «        D ¦   «         }d|vr|                     d¦  «        |d<   t	          ||¦  «        }||fS )rœ   c                 ó<   •— i | ]}‰                      |¦  «        |“ŒS rk   )Úid_to_piece)rz   rˆ   Úsps     €rY   r§   z7GemmaSentencePieceExtractor.extract.<locals>.<dictcomp>Î   s'   ø€ ÐTÐTÐT°%�—’ Ñ&Ô&¨ÐTÐTÐTr[   ú	ú<0x09>)rÔ   r   ÚGetPieceSizeÚgetr‹   )r–   rƒ   rm   r„   rÔ   s       @rY   rÇ   z#GemmaSentencePieceExtractor.extractÈ   sr   ø€ ð
 ŒWˆØTÐTÐTÐT½5ÀÇÂÑARÔARÑ;SÔ;SÐTÑTÔTˆð �uÐÐØŸ)š) HÑ-Ô-ˆE�$‰KÝ  ¨Ñ5Ô5ˆØ�fˆ}Ðr[   ©N)	rÁ   rÈ   rÉ   rÌ   r}   rË   rÍ   rÎ   rÇ   rk   r[   rY   rÐ   rÐ   Ç   sJ   € € € € € ðð ¨E°$°s¸C°x´.À$ÀuÄ+Ð2MÔ,Nð ð ð ð ð ð r[   rÐ   rŸ   c                 óv   — t          | ¦  «        dk     p&| d         dk    p| d                              ¦   «          S )Nrr   éÿÿÿÿú,éþÿÿÿ)rs   Úisdigit)rŸ   s    rY   Úcheck_number_commarß   Ø   s8   € Ýˆu‰:Œ:˜Š>ÐH˜U 2œY¨#Ò-ÐH°U¸2´Y×5FÒ5FÑ5HÔ5HÐ1HÐHr[   c                   ó    — e Zd Zd„ Zdefd„ZdS )Ú	Converterc                 ó   — || _         d S rÙ   )rd   )r–   rd   s     rY   rš   zConverter.__init__Ý   s   € Ø"4ˆÔÐÐr[   r]   c                 ó   — t          ¦   «         ‚rÙ   )ÚNotImplementedError©r–   s    rY   Ú	convertedzConverter.convertedà   s   € Ý!Ñ#Ô#Ð#r[   N)rÁ   rÈ   rÉ   rš   r   ræ   rk   r[   rY   rá   rá   Ü   s>   € € € € € ð5ð 5ð 5ð$˜9ð $ð $ð $ð $ð $ð $r[   rá   c                   ó   — e Zd Zdefd„ZdS )ÚBertConverterr]   c           	      ó¸  — | j         j        }t          t          |t	          | j         j        ¦  «        ¬¦  «        ¦  «        }d}d}d}t          | j         d¦  «        r3| j         j        j        }| j         j        j	        }| j         j        j
        }t          j        d|||¬¦  «        |_        t          j        ¦   «         |_        t	          | j         j        ¦  «        }t	          | j         j        ¦  «        }| j         j        }| j         j        }	t+          j        |› d|› d�|› d|› d|› d	�||f||	fg¬
¦  «        |_        t1          j        d¬¦  «        |_        |S )N©Ú	unk_tokenFÚbasic_tokenizerT©Ú
clean_textÚhandle_chinese_charsÚstrip_accentsÚ	lowercaseú:0 $A:0 ú:0ú:0 $B:1 ú:1©ÚsingleÚpairÚspecial_tokensú##©Úprefix©rd   rm   r   r   rË   rë   Úhasattrrì   Útokenize_chinese_charsrð   Údo_lower_caser
   ÚBertNormalizerÚ
normalizerr   ÚBertPreTokenizerÚpre_tokenizerÚ	cls_tokenÚ	sep_tokenÚcls_token_idÚsep_token_idr   ÚTemplateProcessingÚpost_processorr	   Údecoder©
r–   rm   Ú	tokenizerrÿ   rð   r   ÚclsÚsepr  r  s
             rY   ræ   zBertConverter.convertedå   óy  € ØÔ'Ô-ˆÝ�i¨½¸TÔ=TÔ=^Ñ9_Ô9_Ð`Ñ`Ô`ÑaÔaˆ	à!&ÐØˆØˆÝ�4Ô*Ð,=Ñ>Ô>ð 	RØ%)Ô%<Ô%LÔ%cÐ"Ø Ô3ÔCÔQˆMØ Ô3ÔCÔQˆMå*Ô9ØØ!7Ø'Ø#ð	 
ñ  
ô  
ˆ	Ôõ #1Ô"AÑ"CÔ"Cˆ	Ôå�$Ô)Ô3Ñ4Ô4ˆÝ�$Ô)Ô3Ñ4Ô4ˆØÔ.Ô;ˆØÔ.Ô;ˆå#-Ô#@ØÐ*Ð* 3Ð*Ð*Ð*ØÐ5Ð5 Ð5Ð5¨cÐ5Ð5Ð5à�lÐ#Ø�lÐ#ðð$
ñ $
ô $
ˆ	Ô õ %Ô.°dÐ;Ñ;Ô;ˆ	ÔàÐr[   N©rÁ   rÈ   rÉ   r   ræ   rk   r[   rY   rè   rè   ä   ó/   € € € € € ð#˜9ð #ð #ð #ð #ð #ð #r[   rè   c                   ó   — e Zd Zdefd„ZdS )ÚSplinterConverterr]   c           
      óš  — | j         j        }t          t          |t	          | j         j        ¦  «        ¬¦  «        ¦  «        }d}d}d}t          | j         d¦  «        r3| j         j        j        }| j         j        j	        }| j         j        j
        }t          j        d|||¬¦  «        |_        t          j        ¦   «         |_        t	          | j         j        ¦  «        }t	          | j         j        ¦  «        }t	          | j         j        ¦  «        }d}	| j         j        }
| j         j        }| j         j        }| j                              d¦  «        }| j         j        dk    r|› d|› d	|	› d	|› d
|› d�
}n|› d|› d
|› d	|	› d	|› d�
}t3          j        |› d|› d�|||
f||f||f|	|fg¬¦  «        |_        t9          j        d¬¦  «        |_        |S )Nrê   Frì   Trí   ú.Úrightrò   ú rô   rõ   ró   rö   rú   rû   )rd   rm   r   r   rË   rë   rþ   rì   rÿ   rð   r   r
   r  r  r   r  r  r  r  Úquestion_tokenr  r  Úquestion_token_idÚconvert_tokens_to_idsÚpadding_sider   r	  r
  r	   r  )r–   rm   r  rÿ   rð   r   r  r  ÚquestionÚdotr  r  r  Údot_token_idrø   s                  rY   ræ   zSplinterConverter.converted  s  € ØÔ'Ô-ˆÝ�i¨½¸TÔ=TÔ=^Ñ9_Ô9_Ð`Ñ`Ô`ÑaÔaˆ	à!&ÐØˆØˆÝ�4Ô*Ð,=Ñ>Ô>ð 	RØ%)Ô%<Ô%LÔ%cÐ"Ø Ô3ÔCÔQˆMØ Ô3ÔCÔQˆMå*Ô9ØØ!7Ø'Ø#ð	 
ñ  
ô  
ˆ	Ôõ #1Ô"AÑ"CÔ"Cˆ	Ôå�$Ô)Ô3Ñ4Ô4ˆÝ�$Ô)Ô3Ñ4Ô4ˆÝ�tÔ.Ô=Ñ>Ô>ˆØˆØÔ.Ô;ˆØÔ.Ô;ˆØ Ô3ÔEÐØÔ.×DÒDÀSÑIÔIˆàÔ"Ô/°7Ò:Ð:ØÐHÐH 8ÐHÐH¨cÐHÐH°CÐHÐHÀÐHÐHÐHˆDˆDàÐHÐH 3ÐHÐH°ÐHÐH¸3ÐHÐHÀÐHÐHÐHˆDå#-Ô#@ØÐ*Ð* 3Ð*Ð*Ð*Øà�lÐ#Ø�lÐ#ØÐ,Ð-Ø�lÐ#ð	ð	$
ñ 	$
ô 	$
ˆ	Ô õ %Ô.°dÐ;Ñ;Ô;ˆ	ÔàÐr[   Nr  rk   r[   rY   r  r    s/   € € € € € ð.˜9ð .ð .ð .ð .ð .ð .r[   r  c                   ó   — e Zd Zdefd„ZdS )ÚFunnelConverterr]   c           	      ó¸  — | j         j        }t          t          |t	          | j         j        ¦  «        ¬¦  «        ¦  «        }d}d}d}t          | j         d¦  «        r3| j         j        j        }| j         j        j	        }| j         j        j
        }t          j        d|||¬¦  «        |_        t          j        ¦   «         |_        t	          | j         j        ¦  «        }t	          | j         j        ¦  «        }| j         j        }| j         j        }	t+          j        |› d|› d�|› d|› d|› d	�||f||	fg¬
¦  «        |_        t1          j        d¬¦  «        |_        |S )Nrê   Frì   Trí   z:2 $A:0 ró   rô   rõ   rö   rú   rû   rý   r  s
             rY   ræ   zFunnelConverter.converted>  r  r[   Nr  rk   r[   rY   r!  r!  =  r  r[   r!  c                   ó   — e Zd Zdefd„ZdS )ÚMPNetConverterr]   c                 ó¾  — | j         j        }t          t          |t	          | j         j        ¦  «        ¬¦  «        ¦  «        }d}d}d}t          | j         d¦  «        r3| j         j        j        }| j         j        j	        }| j         j        j
        }t          j        d|||¬¦  «        |_        t          j        ¦   «         |_        t	          | j         j        ¦  «        }t	          | j         j        ¦  «        }| j         j        }| j         j        }	t+          j        |› d|› d�|› d|› d|› d	|› d
�||f||	fg¬¦  «        |_        t1          j        d¬¦  «        |_        |S )Nrê   Frì   Trí   rò   ró   z:0 rô   rõ   rö   rú   rû   rý   r  s
             rY   ræ   zMPNetConverter.convertede  s�  € ØÔ'Ô-ˆÝ�i¨½¸TÔ=TÔ=^Ñ9_Ô9_Ð`Ñ`Ô`ÑaÔaˆ	à!&ÐØˆØˆÝ�4Ô*Ð,=Ñ>Ô>ð 	RØ%)Ô%<Ô%LÔ%cÐ"Ø Ô3ÔCÔQˆMØ Ô3ÔCÔQˆMå*Ô9ØØ!7Ø'Ø#ð	 
ñ  
ô  
ˆ	Ôõ #1Ô"AÑ"CÔ"Cˆ	Ôå�$Ô)Ô3Ñ4Ô4ˆÝ�$Ô)Ô3Ñ4Ô4ˆØÔ.Ô;ˆØÔ.Ô;ˆå#-Ô#@ØÐ*Ð* 3Ð*Ð*Ð*ØÐ=Ð= Ð=Ð=¨Ð=Ð=°cÐ=Ð=Ð=à�lÐ#Ø�lÐ#ðð$
ñ $
ô $
ˆ	Ô õ %Ô.°dÐ;Ñ;Ô;ˆ	ÔàÐr[   Nr  rk   r[   rY   r$  r$  d  r  r[   r$  c                   ó   — e Zd Zdefd„ZdS )ÚOpenAIGPTConverterr]   c           
      ó  — | j         j        }t          | j         j                             ¦   «         ¦  «        }| j         j        }t          t          ||d t          |¦  «        dd¬¦  «        ¦  «        }| 	                    t          |¦  «        ¦  «        �#| 
                    t          |¦  «        g¦  «         t          j        d¬¦  «        |_        t          j        ¦   «         |_        t#          j        d¬¦  «        |_        |S )Nú</w>F)rm   r„   Údropoutrë   Úend_of_word_suffixÚfuse_unkT)rñ   ©Úsuffix)rd   ÚencoderrÎ   Ú	bpe_ranksÚkeysrë   r   r   rË   Útoken_to_idÚadd_special_tokensr
   r  r  r   r  r  r	   Ú
BPEDecoderr  ©r–   rm   r„   rë   r  s        rY   ræ   zOpenAIGPTConverter.convertedŒ  sì   € ØÔ'Ô/ˆÝ�dÔ-Ô7×<Ò<Ñ>Ô>Ñ?Ô?ˆØÔ+Ô5ˆ	åÝØØØÝ˜i™.œ.Ø#)Øðñ ô ñ	
ô 	
ˆ	ð × Ò ¥ Y¡¤Ñ0Ô0Ð<Ø×(Ò(­#¨i©.¬.Ð)9Ñ:Ô:Ð:å*Ô9ÀDÐIÑIÔIˆ	ÔÝ"0Ô"AÑ"CÔ"Cˆ	ÔÝ$Ô/°vÐ>Ñ>Ô>ˆ	ÔàÐr[   Nr  rk   r[   rY   r'  r'  ‹  s/   € € € € € ð˜9ð ð ð ð ð ð r[   r'  c                   ó\   — e Zd Zddeeef         dz  deeeef                  dz  defd„Z	dS )ÚGPT2ConverterNrm   r„   r]   c           
      ó  — |s| j         j        }|st          | j         j        ¦  «        }t	          t          ||d ddd¬¦  «        ¦  «        }t          | j         dd¦  «        }t          j        |¬¦  «        |_	        t          j        ¦   «         |_        t          | j         dd¦  «        r>| j         j        }| j         j        }t          j        |› d�|› d�||fg¬	¦  «        |_        nt          j        d¬
¦  «        |_        |S )NrK   F©rm   r„   r*  Úcontinuing_subword_prefixr+  r,  r\   ©r\   Úadd_bos_tokenz:0 $A:0z:0 $A:0 $B:1rö   ©Útrim_offsets)rd   r/  rÎ   r0  r   r   rc   r   Ú	ByteLevelr  r	   r  Ú	bos_tokenÚbos_token_idr   r	  r
  )r–   rm   r„   r  r\   ÚbosrA  s          rY   ræ   zGPT2Converter.converted§  s/  € Øð 	4ØÔ+Ô3ˆEØð 	=Ý˜$Ô1Ô;Ñ<Ô<ˆFåÝØØØØ*,Ø#%Øðñ ô ñ	
ô 	
ˆ	õ # 4Ô#:Ð<NÐPUÑVÔVÐÝ"0Ô":ÐL\Ð"]Ñ"]Ô"]ˆ	ÔÝ$Ô.Ñ0Ô0ˆ	ÔÝ�4Ô*¨O¸UÑCÔCð 	PØÔ)Ô3ˆCØÔ2Ô?ˆLÝ'1Ô'DØ���ØÐ)Ð)Ð)à˜,Ð'ð ð(ñ (ô (ˆIÔ$Ð$õ (2Ô';ÈÐ'OÑ'OÔ'OˆIÔ$ØÐr[   ©NN©
rÁ   rÈ   rÉ   r}   rË   rÍ   rÎ   rÌ   r   ræ   rk   r[   rY   r7  r7  ¦  sf   € € € € € ð"ð "˜t C¨ Hœ~°Ñ4ð "ÀTÈ%ÐPSÐUXÐPXÌ/ÔEZÐ]aÑEað "Ðmvð "ð "ð "ð "ð "ð "r[   r7  c                   ó   — e Zd Zdefd„ZdS )ÚHerbertConverterr]   c           	      ó.  — d}d}| j         j        }t          | j         j                             ¦   «         ¦  «        }||d         d         v r
|dd …         }t          t          ||d | j         j        |¬¦  «        ¦  «        }t          j	        dd¬¦  «        |_
        t          j        ¦   «         |_        t          j        |¬¦  «        |_        t#          j        | j         j        | j         j        f| j         j        | j         j        f¬	¦  «        |_        |S )
Nz	#version:r)  r   r   )r*  rë   r+  F)rñ   rð   r-  )r  r  )rd   r/  rÎ   r0  r1  r   r   rë   r
   r  r  r   r  r  r	   r4  r  r   ÚBertProcessingr  r  r  r  r
  )r–   Útokenizer_info_strÚtoken_suffixrm   r„   r  s         rY   ræ   zHerbertConverter.convertedÍ  s  € Ø(ÐØˆàÔ'Ô/ˆÝ�dÔ-Ô7×<Ò<Ñ>Ô>Ñ?Ô?ˆØ ¨¤¨1¤Ð-Ð-Ø˜A˜B˜B”ZˆFåÝØØØØÔ1Ô;Ø#/ðñ ô ñ
ô 
ˆ	õ  +Ô9ÀEÐY^Ð_Ñ_Ô_ˆ	ÔÝ"0Ô"AÑ"CÔ"Cˆ	ÔÝ$Ô/°|ÐDÑDÔDˆ	ÔÝ#-Ô#<ØÔ(Ô2°DÔ4KÔ4XÐYØÔ(Ô2°DÔ4KÔ4XÐYð$
ñ $
ô $
ˆ	Ô ð
 Ðr[   Nr  rk   r[   rY   rF  rF  Ì  ó/   € € € € € ð˜9ð ð ð ð ð ð r[   rF  c                   ó\   — e Zd Zddeeef         dz  deeeef                  dz  defd„Z	dS )ÚQwen2ConverterNrm   r„   r]   c                 ó"  — |s| j         j        }|s+t          | j         j                             ¦   «         ¦  «        }t          t          ||d d dddd¬¦  «        ¦  «        }t          j        ¦   «         |_	        t          j        t          j        t          d¦  «        dd¬¦  «        t          j        t          | j         dd¦  «        d¬¦  «        g¦  «        |_        t#          j        ¦   «         |_        t'          j        d¬	¦  «        |_        |S )
NrK   F)rm   r„   r*  rë   r:  r+  r,  Úbyte_fallbackzn(?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\r\n\p{L}\p{N}]?\p{L}+|\p{N}| ?[^\s\p{L}\p{N}]+[\r\n]*|\s*[\r\n]+|\s+(?!\S)|\s+Úisolated©ÚbehaviorÚinvertr\   ©r\   Ú	use_regexr=  )rd   r/  rÎ   r0  r1  r   r   r
   ÚNFCr  r   ÚSequenceÚSplitr   r?  rc   r  r	   r  r   r
  )r–   rm   r„   r  s       rY   ræ   zQwen2Converter.convertedì  s/  € Øð 	4ØÔ+Ô3ˆEØð 	DÝ˜$Ô1Ô;×@Ò@ÑBÔBÑCÔCˆFåÝØØØØØ*,Ø#%ØØ#ð	ñ 	ô 	ñ
ô 
ˆ	õ  +œÑ0Ô0ˆ	Ôå"0Ô"9åÔ$Ýð Nñô ð (Ø ðñ ô õ Ô(Ý%,¨TÔ-DÐFXÐZ_Ñ%`Ô%`Ø#ðñ ô ðñ#
ô #
ˆ	Ôõ  %Ô.Ñ0Ô0ˆ	ÔÝ#-Ô#7ÀUÐ#KÑ#KÔ#Kˆ	Ô àÐr[   rC  rD  rk   r[   rY   rM  rM  ë  sf   € € € € € ð(ð (˜t C¨ Hœ~°Ñ4ð (ÀTÈ%ÐPSÐUXÐPXÌ/ÔEZÐ]aÑEað (Ðmvð (ð (ð (ð (ð (ð (r[   rM  c                   ó   — e Zd Zdefd„ZdS )ÚRobertaConverterr]   c           
      ó”  — | j         }|j        }t          |j                             ¦   «         ¦  «        }t          t          ||d ddd¬¦  «        ¦  «        }t          j        |j	        ¬¦  «        |_
        t          j        ¦   «         |_        t          j        |j        |j        f|j        |j        f|j	        d¬¦  «        |_        |S )NrK   Fr9  r;  T©r  r  r\   r>  )rd   r/  rÎ   r0  r1  r   r   r   r?  r\   r  r	   r  r   ÚRobertaProcessingr  r  r  r  r
  ©r–   Úotrm   r„   r  s        rY   ræ   zRobertaConverter.converted  sÎ   € ØÔ$ˆØ”
ˆÝ�b”l×'Ò'Ñ)Ô)Ñ*Ô*ˆåÝØØØØ*,Ø#%Øðñ ô ñ	
ô 	
ˆ	õ #1Ô":ÈBÔL_Ð"`Ñ"`Ô"`ˆ	ÔÝ$Ô.Ñ0Ô0ˆ	ÔÝ#-Ô#?Ø”˜rœÐ/Ø”˜rœÐ/ØÔ0Øð	$
ñ $
ô $
ˆ	Ô ð Ðr[   Nr  rk   r[   rY   rZ  rZ    ó/   € € € € € ð˜9ð ð ð ð ð ð r[   rZ  c                   ó   — e Zd Zdefd„ZdS )ÚRoFormerConverterr]   c           	      óÈ  — ddl m} | j        j        }t	          t          |t          | j        j        ¦  «        ¬¦  «        ¦  «        }d}d}t          | j        d¦  «        r"| j        j	        j
        }| j        j	        j        }t          j        dd||¬¦  «        |_        t          j                              ||¦  «        ¦  «        |_        t          | j        j        ¦  «        }t          | j        j        ¦  «        }| j        j        }| j        j        }	t/          j        |› d|› d	�|› d|› d
|› d�||f||	fg¬¦  «        |_        t5          j        d¬¦  «        |_        |S )Nr   )ÚJiebaPreTokenizerrê   Frì   Trí   rò   ró   rô   rõ   rö   rú   rû   )Ú"models.roformer.tokenization_utilsrd  rd   rm   r   r   rË   rë   rþ   rì   rð   r   r
   r  r  r   ÚPreTokenizerÚcustomr  r  r  r  r  r   r	  r
  r	   r  )
r–   rd  rm   r  rð   r   r  r  r  r  s
             rY   ræ   zRoFormerConverter.converted5  s‹  € ØIÐIÐIÐIÐIÐIàÔ'Ô-ˆÝ�i¨½¸TÔ=TÔ=^Ñ9_Ô9_Ð`Ñ`Ô`ÑaÔaˆ	àˆØˆÝ�4Ô*Ð,=Ñ>Ô>ð 	RØ Ô3ÔCÔQˆMØ Ô3ÔCÔQˆMå*Ô9ØØ!&Ø'Ø#ð	 
ñ  
ô  
ˆ	Ôõ #1Ô"=×"DÒ"DÐEVÐEVÐW\ÑE]ÔE]Ñ"^Ô"^ˆ	Ôå�$Ô)Ô3Ñ4Ô4ˆÝ�$Ô)Ô3Ñ4Ô4ˆØÔ.Ô;ˆØÔ.Ô;ˆå#-Ô#@ØÐ*Ð* 3Ð*Ð*Ð*ØÐ5Ð5 Ð5Ð5¨cÐ5Ð5Ð5à�lÐ#Ø�lÐ#ðð$
ñ $
ô $
ˆ	Ô õ %Ô.°dÐ;Ñ;Ô;ˆ	ÔàÐr[   Nr  rk   r[   rY   rb  rb  4  r  r[   rb  c                   ó   — e Zd Zdefd„ZdS )ÚDebertaConverterr]   c           
      óÄ  — | j         }|j        }t          |j                             ¦   «         ¦  «        }t          t          ||d ddd¬¦  «        ¦  «        }t          j        |j	        ¬¦  «        |_
        t          j        ¦   «         |_        t          j        ddd| j                              d¦  «        fd| j                              d¦  «        fg¬	¦  «        |_        |S )
NrK   Fr9  r;  ú[CLS]:0 $A:0 [SEP]:0ú![CLS]:0 $A:0 [SEP]:0 $B:1 [SEP]:1ú[CLS]ú[SEP]rö   )rd   r/  rÎ   r0  r1  r   r   r   r?  r\   r  r	   r  r   r	  r  r
  r^  s        rY   ræ   zDebertaConverter.converted\  sê   € ØÔ$ˆØ”
ˆÝ�b”l×'Ò'Ñ)Ô)Ñ*Ô*ˆåÝØØØØ*,Ø#%Øðñ ô ñ	
ô 	
ˆ	õ #1Ô":ÈBÔL_Ð"`Ñ"`Ô"`ˆ	ÔÝ$Ô.Ñ0Ô0ˆ	ÔÝ#-Ô#@Ø)Ø4à˜$Ô1×GÒGÈÑPÔPÐQØ˜$Ô1×GÒGÈÑPÔPÐQðð$
ñ $
ô $
ˆ	Ô ð Ðr[   Nr  rk   r[   rY   ri  ri  [  rK  r[   ri  c                   ó�   ‡ — e Zd ZdZeZi Zedd„¦   «         Ze	dd„¦   «         Z
ˆ fd„Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zdefd„Zˆ xZS )ÚSpmConverterFNc           
      óB  — | j         j        }| j         j        }| j        j        }t          |t          ¦  «        r%t          t          ||pg |d|d¬¦  «        ¦  «        }nft          |t          ¦  «        rO|rMt          |d         t          t          z  ¦  «        r*t          t          || j         j        |¬¦  «        ¦  «        }ndS t          j        dd¦  «        g}|r(|                     dt          j        |¦  «        ¦  «         t          j        |¦  «        |_        |rRt'          j        t'          j        dd¦  «        t'          j        ¦   «         t'          j        ¦   «         g¦  «        |_        n-t'          j        t'          j        dd¦  «        g¦  «        |_        |S )z÷
        Similar to convert_from_spm method, but used only when there is no `model_type` class, i.e. there is no matching class in `TOKENIZERS_MAPPING` and we just create a tokenizer instead of extracting stuff from the sentencepiece file
        TN)rm   r„   rë   r,  rO  r*  r   )rm   r¢   rO  r  õ   â–�)r½   rO  Ú	unk_piecerÄ   r»   Ú
isinstancer}   r   r   rÎ   rÌ   r   r¢   r
   ÚReplaceÚinsertÚPrecompiledrW  r  r	   ÚByteFallbackÚFuser  )r•   rm   r„   rO  rs  r»   r  Ú_normalizerss           rY   Úbuild_tokenizer_from_spm_protoz+SpmConverter.build_tokenizer_from_spm_proto  sª  € ð
 Ô*Ô8ˆØÔ&Ô0ˆ	Ø$Ô4ÔIÐõ �e�TÑ"Ô"ð 	Ý!ÝØØ!˜< RØ'Ø!Ø"/Ø ðñ ô ñ	ô 	ˆIˆIõ ˜�tÑ$Ô$ð 		¨ð 		µ:¸eÀA¼hÍÕPTÉÑ3UÔ3Uð 		Ý!ÝØØ Ô-Ô4Ø"/ðñ ô ñô ˆIˆIð �4õ $Ô+¨C°Ñ7Ô7Ð8ˆØð 	RØ×Ò ¥;Ô#:Ð;OÑ#PÔ#PÑQÔQÐQÝ*Ô3°LÑAÔAˆ	Ôð ð 	RÝ (Ô 1ÝÔ! %¨Ñ-Ô-­xÔ/DÑ/FÔ/FÍÌÉÌÐXñ!ô !ˆIÔÐõ !)Ô 1µ8Ô3CÀEÈ3Ñ3OÔ3OÐ2PÑ QÔ QˆIÔàÐr[   c                 ó   — |�||d<   |S )zŸ
        Hook used when converting directly from a SentencePiece model without a slow tokenizer instance.
        By default, return kwargs unchanged.
        Nrm   rk   )r  rm   rÅ   s      rY   Úconvert_from_spmzSpmConverter.convert_from_spm¯  s   € ð ÐØ#ˆF�7‰OØˆr[   c                 ó¸  •— t          | d¦  «          t          ¦   «         j        |Ž  t          ¦   «         }|                     ¦   «         }t          | j        j        d¦  «        5 }|                     | 	                    ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   || _
        | j
        j        j        r| j        st          j        d¦  «         d S d S d S )NrR   r�   a  The sentencepiece tokenizer that you are converting to a fast tokenizer uses the byte fallback option which is not implemented in the fast tokenizers. In practice this means that the fast version of the tokenizer can produce unknown tokens whereas the sentencepiece version would have converted these unknown tokens into a sequence of byte tokens matching the original piece of text.)r   Úsuperrš   rZ   r‘   r’   rd   Ú
vocab_filer“   r”   r•   r½   rO  Úhandle_byte_fallbackÚwarningsÚwarn)r–   Úargsr—   r˜   r™   Ú	__class__s        €rY   rš   zSpmConverter.__init__¹  s"  ø€ Ý˜$ 
Ñ+Ô+Ð+à�‰ŒÔ˜$ÐÐõ $Ñ%Ô%ˆ	à× Ò Ñ"Ô"ˆÝ�$Ô)Ô4°dÑ;Ô;ð 	(¸qØ×Ò˜aŸfšf™hœhÑ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(àˆŒ
àŒ:Ô"Ô0ð 	¸Ô9Rð 	ÝŒMðeñô ð ð ð ð	ð 	ð 	ð 	s   Á$(BÂBÂBc                 ó$   — d„ |j         D ¦   «         S )Nc                 ó*   — g | ]}|j         |j        f‘ŒS rk   rž   r¡   s     rY   r{   z&SpmConverter.vocab.<locals>.<listcomp>Ï  s!   € ÐEÐEÐE¨u�”˜eœkÐ*ÐEÐEÐEr[   ©rÀ   ©r–   r•   s     rY   rm   zSpmConverter.vocabÎ  s   € ØEÐE¸¼ÐEÑEÔEÐEr[   c                 ó   — |j         j        S rÙ   )r½   r¢   r‰  s     rY   r¢   zSpmConverter.unk_idÑ  s   € ØÔ!Ô(Ð(r[   c           
      óŽ  ‡ — |j         j        }‰                      |¦  «        }|dk    r8t          t	          |‰                      |¦  «        ‰ j        ¬¦  «        ¦  «        }n•|dk    r€‰                      ‰ j        j	        ¦  «         
                    |¦  «        \  }}d„ t          |¦  «        D ¦   «         }t          t          |||j         j        d‰ j        d ¬¦  «        ¦  «        }nt          d¦  «        ‚ˆ fd„t          |j        ¦  «        D ¦   «         }|                     d	„ t#          |d
„ ¬¦  «        D ¦   «         ¦  «         |S )Nr   ©r¢   rO  rr   c                 ó    — i | ]\  }\  }}||“ŒS rk   rk   r¤   s       rY   r§   z*SpmConverter.tokenizer.<locals>.<dictcomp>ã  s#   € ÐQÐQÐQÑ%5 Q©¨¨u˜˜qÐQÐQÐQr[   T©rë   r,  rO  r*  z]You're trying to run a `Unigram` model but you're file was trained with a different algorithmc                 ój   •— g | ]/\  }}|j         d v ¯||j        |j         dk    p|j        ‰j        v f‘Œ0S r©   ©r¬   rŸ   rù   ©rz   r­   r®   r–   s      €rY   r{   z*SpmConverter.tokenizer.<locals>.<listcomp>ø  óR   ø€ ð 
ð 
ð 
á��AØŒv˜ÐÐð �”˜!œ& Aš+ÐG¨¬°DÔ4GÐ)GÐHàÐÐr[   c                 ó:   — g | ]\  }}}t          |d |¬¦  «        ‘ŒS r°   r´   rµ   s       rY   r{   z*SpmConverter.tokenizer.<locals>.<listcomp>þ  ó=   € ð ð ð á&�B˜˜wõ ˜5¨U¸GÐDÑDÔDðð ð r[   c                 ó   — | d         S r¸   rk   r¹   s    rY   rn   z(SpmConverter.tokenizer.<locals>.<lambda>   ó   € ÐQRÐSTÔQU€ r[   ro   )r½   r¿   rm   r   r   r¢   r�  ÚSpmExtractorrd   r€  rÇ   rÃ   r   rs  Ú	ExceptionrÀ   Ú
add_tokensr�   )	r–   r•   r¿   rƒ   r  Ú_r„   Ú	bpe_vocabrÆ   s	   `        rY   r  zSpmConverter.tokenizerÔ  s‹  ø€ ØÔ'Ô2ˆ
Ø—z’z %Ñ(Ô(ˆà˜Š?ˆ?Ý!ÝØ ØŸ;š; uÑ-Ô-Ø"&Ô";ðñ ô ñô ˆIˆIð ˜1Š_ˆ_Ø×)Ò)¨$Ô*AÔ*LÑMÔM×UÒUÐVbÑcÔc‰IˆAˆvØQÐQ½À<Ñ9PÔ9PÐQÑQÔQˆIÝ!ÝØØØ#Ô0Ô:Ø!Ø"&Ô";Ø ðñ ô ñ	ô 	ˆIˆIõ Øoñô ð ð
ð 
ð 
ð 
å" 5¤<Ñ0Ô0ð
ñ 
ô 
Ðð
 	×Òðð å*0Ð1AÀ~À~Ð*VÑ*VÔ*Vðñ ô ñ	
ô 	
ð 	
ð Ðr[   c                 ó
  — |j         j        }t          j        dd¬¦  «        t          j        t          d¦  «        d¦  «        g}|st          j        |¦  «        S t          j        t          j        |¦  «        g|z   ¦  «        S )NFT)Úleftr  ú {2,}rr  )rÄ   r»   r
   ÚStripru  r   rW  rw  ©r–   r•   r»   rz  s       rY   r  zSpmConverter.normalizer  s€   € Ø$Ô4ÔIÐåÔ 5°Ð5Ñ5Ô5ÝÔ¥ g¡¤°Ñ6Ô6ð
ˆð $ð 	hÝÔ'¨Ñ5Ô5Ð5åÔ'­Ô)@ÐAUÑ)VÔ)VÐ(WÐZfÑ(fÑgÔgÐgr[   c                 óX   — t          || j        ¦  «        }t          j        ||¬¦  «        S ©N©Úreplacementre   )rf   rd   r   Ú	Metaspace©r–   r¤  r\   re   s       rY   r  zSpmConverter.pre_tokenizer  s,   € Ý,Ð-=¸tÔ?VÑWÔWˆÝÔ'°KÐP^Ð_Ñ_Ô_Ð_r[   c                 ó   — d S rÙ   rk   rå   s    rY   r
  zSpmConverter.post_processor  ó   € Øˆtr[   c                 óX   — t          || j        ¦  «        }t          j        ||¬¦  «        S r¢  )rf   rd   r	   r¥  r¦  s       rY   r  zSpmConverter.decoder  s+   € Ý,Ð-=¸tÔ?VÑWÔWˆÝÔ!¨kÈ.ÐYÑYÔYÐYr[   r]   c                 óx  — |                       | j        ¦  «        }|                      | j        ¦  «        }|�||_        d}d}t          | j        d¦  «        r| j        j        }|                      ||¦  «        }|�||_        |                      ||¦  «        |_        |                      ¦   «         }|r||_        |S )Nrr  Tr\   )	r  r•   r  rþ   rd   r\   r  r  r
  )r–   r  r  r¤  r\   r  r
  s          rY   ræ   zSpmConverter.converted  sÈ   € Ø—N’N 4¤:Ñ.Ô.ˆ	ð —_’_ T¤ZÑ0Ô0ˆ
ØÐ!Ø#-ˆIÔ àˆØÐÝ�4Ô*Ð,>Ñ?Ô?ð 	HØ#Ô6ÔGÐà×*Ò*¨;Ð8HÑIÔIˆØÐ$Ø&3ˆIÔ#à ŸLšL¨Ð6FÑGÔGˆ	ÔØ×,Ò,Ñ.Ô.ˆØð 	6Ø'5ˆIÔ$àÐr[   rÙ   )rÁ   rÈ   rÉ   r�  r�   r—  rù   Ústaticmethodr{  Úclassmethodr}  rš   rm   r¢   r  r  r  r
  r  r   ræ   Ú__classcell__)r…  s   @rY   rp  rp  z  s  ø€ € € € € Ø ÐØ)€LØ€Nàð-ð -ð -ñ „\ð-ð^ ðð ð ñ „[ððð ð ð ð ð*Fð Fð Fð)ð )ð )ð0ð 0ð 0ðd	hð 	hð 	hð`ð `ð `ðð ð ðZð Zð Zð˜9ð ð ð ð ð ð ð ð r[   rp  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚAlbertConverterc                 ó$   — d„ |j         D ¦   «         S )Nc                 ót   — g | ]5}t          |j        ¦  «        r|j        |j        fn|j        |j        d z
  f‘Œ6S ©éd   ©rß   rŸ   r    r¡   s     rY   r{   z)AlbertConverter.vocab.<locals>.<listcomp>7  óX   € ð 
ð 
ð 
àõ +=¸U¼[Ñ*IÔ*IÐoˆUŒ[˜%œ+Ð&Ð&ÐPUÔP[Ð]bÔ]hÐknÑ]nÐOoð
ð 
ð 
r[   rˆ  r‰  s     rY   rm   zAlbertConverter.vocab6  ó%   € ð
ð 
àœð
ñ 
ô 
ð 	
r[   c                 óf  — t          j        dd¦  «        t          j        dd¦  «        g}| j        j        sL|                     t          j        ¦   «         ¦  «         |                     t          j        ¦   «         ¦  «         | j        j        r&|                     t          j        ¦   «         ¦  «         |j	        j
        }|r'|                     t          j        |¦  «        ¦  «         |                     t          j        t          d¦  «        d¦  «        ¦  «         t          j        |¦  «        S ©Nz``ú"z''rž  r  ©r
   ru  rd   Úkeep_accentsr€   ÚNFKDÚStripAccentsr   Ú	LowercaserÄ   r»   rw  r   rW  ©r–   r•   Úlist_normalizersr»   s       rY   r  zAlbertConverter.normalizer<  ó  € åÔ  cÑ*Ô*ÝÔ  cÑ*Ô*ð
Ðð Ô&Ô3ð 	@Ø×#Ò#¥KÔ$4Ñ$6Ô$6Ñ7Ô7Ð7Ø×#Ò#¥KÔ$<Ñ$>Ô$>Ñ?Ô?Ð?ØÔ"Ô0ð 	=Ø×#Ò#¥KÔ$9Ñ$;Ô$;Ñ<Ô<Ð<à$Ô4ÔIÐàð 	SØ×#Ò#¥KÔ$;Ð<PÑ$QÔ$QÑRÔRÐRà×Ò¥Ô 3µE¸'±N´NÀCÑ HÔ HÑIÔIÐIÝÔ#Ð$4Ñ5Ô5Ð5r[   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S ©Nrk  rl  rm  rn  rö   ©r   r	  rd   r  rå   s    rY   r
  zAlbertConverter.post_processorO  óY   € ÝÔ,Ø)Ø4à˜$Ô1×GÒGÈÑPÔPÐQØ˜$Ô1×GÒGÈÑPÔPÐQðð
ñ 
ô 
ð 	
r[   N©rÁ   rÈ   rÉ   rm   r  r
  rk   r[   rY   r¯  r¯  5  óA   € € € € € ð
ð 
ð 
ð6ð 6ð 6ð&
ð 
ð 
ð 
ð 
r[   r¯  c                   ó   — e Zd Zd„ Zd„ ZdS )ÚBarthezConverterc                 ó
   — d}|S ©Nrª   rk   ©r–   r•   r¢   s      rY   r¢   zBarthezConverter.unk_id[  ó   € ØˆØˆr[   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S ©Nz<s> $A </s>z<s> $A </s> </s> $B </s>ú<s>ú</s>rö   rÄ  rå   s    rY   r
  zBarthezConverter.post_processor_  óY   € ÝÔ,Ø Ø+à˜Ô/×EÒEÀeÑLÔLÐMØ˜Ô0×FÒFÀvÑNÔNÐOðð
ñ 
ô 
ð 	
r[   N)rÁ   rÈ   rÉ   r¢   r
  rk   r[   rY   rÉ  rÉ  Z  s2   € € € € € ðð ð ð
ð 
ð 
ð 
ð 
r[   rÉ  c                   ó8   — e Zd Zd„ Zd„ Zd„ Zedd„¦   «         ZdS )ÚCamembertConverterc                 óR   — g d¢}|d„ |j         dd …         D ¦   «         z  }|dgz  }|S )N)©z
<s>NOTUSEDç        ©ú<pad>r×  ©z</s>NOTUSEDr×  ©ú<unk>r×  )ú<unk>NOTUSEDiœÿÿÿc                 ó*   — g | ]}|j         |j        f‘ŒS rk   rž   r¡   s     rY   r{   z,CamembertConverter.vocab.<locals>.<listcomp>t  ó!   € ÐKÐKÐK°�5”; ¤Ð,ÐKÐKÐKr[   r   ©ú<mask>r×  rˆ  ©r–   r•   rm   s      rY   rm   zCamembertConverter.vocabk  sK   € ð
ð 
ð 
ˆð 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØ�/Ð"Ñ"ˆØˆr[   c                 ó   — dS rË  rk   r‰  s     rY   r¢   zCamembertConverter.unk_idx  s   € àˆqr[   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S rÏ  rÄ  rå   s    rY   r
  z!CamembertConverter.post_processor|  rÒ  r[   Nc                 ó~  — t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }d|dfd	|dfd
g}|�*|                     t          |¦  «        dd …         ¦  «         |                     |df¦  «         ||d<   |S )NÚ	pad_tokenrÙ  rë   rÜ  Ú
mask_tokenrá  rÖ  r×  rÚ  )rÝ  ç      YÀr   rm   ©rË   rØ   r‚   rÎ   r€   )r  rm   rÅ   ræ  rë   rç  Ú
vocab_lists          rY   r}  z#CamembertConverter.convert_from_spm†  sÆ   € å˜Ÿ
š
 ;°Ñ8Ô8Ñ9Ô9ˆ	Ý˜Ÿ
š
 ;°Ñ8Ô8Ñ9Ô9ˆ	Ý˜Ÿš L°(Ñ;Ô;Ñ<Ô<ˆ
ð  Ø˜ÐØ Ø˜ÐØ$ð
ˆ
ð ÐØ×Ò�d 5™kœk¨!¨"¨"œoÑ.Ô.Ð.Ø×Ò˜: sÐ+Ñ,Ô,Ð,Ø$ˆˆw‰Øˆr[   rÙ   ©rÁ   rÈ   rÉ   rm   r¢   r
  r¬  r}  rk   r[   rY   rÔ  rÔ  j  sa   € € € € € ðð ð ðð ð ð
ð 
ð 
ð ðð ð ñ „[ðð ð r[   rÔ  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚDebertaV2Converterc                 ó  — g }| j         j        r(|                     t          j        d¬¦  «        ¦  «         t          || j         ¦  «        }|                     t          j        ||¬¦  «        ¦  «         t          j        |¦  «        S )NrP  )rR  r£  )rd   Úsplit_by_punctr€   r   ÚPunctuationrf   r¥  rW  )r–   r¤  r\   Úlist_pretokenizersre   s        rY   r  z DebertaV2Converter.pre_tokenizer›  sƒ   € ØÐØÔ"Ô1ð 	WØ×%Ò%¥nÔ&@È*Ð&UÑ&UÔ&UÑVÔVÐVÝ,Ð-=¸tÔ?VÑWÔWˆØ×!Ò!¥.Ô":À{ÐcqÐ"rÑ"rÔ"rÑsÔsÐsÝÔ&Ð'9Ñ:Ô:Ð:r[   c                 ó²  — g }| j         j        r&|                     t          j        ¦   «         ¦  «         |                     t          j        ¦   «         ¦  «         |j        j        }|r'|                     t          j        |¦  «        ¦  «         |                     t          j	        t          d¦  «        d¦  «        ¦  «         t          j        |¦  «        S )Nrž  r  )rd   r   r€   r
   r¾  rŸ  rÄ   r»   rw  ru  r   rW  r¿  s       rY   r  zDebertaV2Converter.normalizer£  s¾   € ØÐØÔ"Ô0ð 	=Ø×#Ò#¥KÔ$9Ñ$;Ô$;Ñ<Ô<Ð<Ø×Ò¥Ô 1Ñ 3Ô 3Ñ4Ô4Ð4à$Ô4ÔIÐØð 	SØ×#Ò#¥KÔ$;Ð<PÑ$QÔ$QÑRÔRÐRØ×Ò¥Ô 3µE¸'±N´NÀCÑ HÔ HÑIÔIÐIåÔ#Ð$4Ñ5Ô5Ð5r[   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S rÃ  rÄ  rå   s    rY   r
  z!DebertaV2Converter.post_processor°  rÅ  r[   N)rÁ   rÈ   rÉ   r  r  r
  rk   r[   rY   rí  rí  š  sA   € € € € € ð;ð ;ð ;ð6ð 6ð 6ð
ð 
ð 
ð 
ð 
r[   rí  c                   ó8   — e Zd Zd„ Zd„ Zd„ Zedd„¦   «         ZdS )ÚMBartConverterc                 ó`   — g d¢}|d„ |j         dd …         D ¦   «         z  }|g d¢z  }|dgz  }|S )N©©rÐ  r×  rØ  ©rÑ  r×  rÛ  c                 ó*   — g | ]}|j         |j        f‘ŒS rk   rž   r¡   s     rY   r{   z(MBartConverter.vocab.<locals>.<listcomp>Ã  rß  r[   rª   )©r   r×  ©r   r×  ©r   r×  ©r   r×  ©r   r×  ©r   r×  ©r   r×  ©r   r×  ©r   r×  ©r    r×  ©r!   r×  ©r"   r×  ©r#   r×  ©r$   r×  ©r%   r×  ©r&   r×  ©r'   r×  ©r(   r×  ©r)   r×  ©r*   r×  ©r+   r×  ©r,   r×  ©r-   r×  ©r.   r×  ©r/   r×  rà  rˆ  râ  s      rY   rm   zMBartConverter.vocab¼  sf   € ð
ð 
ð 
ˆð 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØð 
ð 
ð 
ñ 	
ˆð6 	�/Ð"Ñ"ˆØˆr[   c                 ó   — dS rË  rk   r‰  s     rY   r¢   zMBartConverter.unk_idâ  ó   € Øˆqr[   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S )Nz$A </s> en_XXz$A $B </s> en_XXr   rÑ  rö   rÄ  rå   s    rY   r
  zMBartConverter.post_processorå  óY   € ÝÔ,Ø"Ø#à˜$Ô1×GÒGÈÑPÔPÐQØ˜Ô0×FÒFÀvÑNÔNÐOðð
ñ 
ô 
ð 	
r[   Nc                 óX  — t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     d	d
¦  «        ¦  «        }|df|df|df|dfg}|�*|                     t          |¦  «        dd …         ¦  «         |                     d„ t          D ¦   «         ¦  «         |                     |df¦  «         ||d<   |S )Nr@  rÐ  ræ  rÙ  Ú	eos_tokenrÑ  rë   rÜ  rç  rá  r×  rª   c              3   ó   K  — | ]}|d fV — Œ	dS ©r×  Nrk   ©rz   Ú	lang_codes     rY   ú	<genexpr>z2MBartConverter.convert_from_spm.<locals>.<genexpr>ÿ  s'   è è € ÐLÐL¨y˜9 cÐ*ÐLÐLÐLÐLÐLÐLr[   rm   )rË   rØ   r‚   rÎ   ÚMBART_LANGUAGESr€   ©	r  rm   rÅ   r@  ræ  r  rë   rç  rê  s	            rY   r}  zMBartConverter.convert_from_spmï  s&  € å˜Ÿ
š
 ;°Ñ6Ô6Ñ7Ô7ˆ	Ý˜Ÿ
š
 ;°Ñ8Ô8Ñ9Ô9ˆ	Ý˜Ÿ
š
 ;°Ñ7Ô7Ñ8Ô8ˆ	Ý˜Ÿ
š
 ;°Ñ8Ô8Ñ9Ô9ˆ	Ý˜Ÿš L°(Ñ;Ô;Ñ<Ô<ˆ
ð ˜ÐØ˜ÐØ˜ÐØ˜Ðð	
ˆ
ð ÐØ×Ò�d 5™kœk¨!¨"¨"œoÑ.Ô.Ð.Ø×ÒÐLÐL½OÐLÑLÔLÑLÔLÐLØ×Ò˜: sÐ+Ñ,Ô,Ð,Ø$ˆˆw‰Øˆr[   rÙ   rë  rk   r[   rY   rõ  rõ  »  sb   € € € € € ð$ð $ð $ðLð ð ð
ð 
ð 
ð ðð ð ñ „[ðð ð r[   rõ  c                   ó8   — e Zd Zd„ Zd„ Zd„ Zedd„¦   «         ZdS )ÚMBart50Converterc                 ó`   — g d¢}|d„ |j         dd …         D ¦   «         z  }|g d¢z  }|dgz  }|S )Nr÷  c                 ó*   — g | ]}|j         |j        f‘ŒS rk   rž   r¡   s     rY   r{   z*MBart50Converter.vocab.<locals>.<listcomp>  rß  r[   rª   )4rû  rü  rý  rþ  rÿ  r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  )r0   r×  )r1   r×  )r2   r×  )r3   r×  )r4   r×  )r5   r×  )r6   r×  )r7   r×  )r8   r×  )r9   r×  )r:   r×  )r;   r×  )r<   r×  )r=   r×  )r>   r×  )r?   r×  )r@   r×  )rA   r×  )rB   r×  )rC   r×  )rD   r×  )rE   r×  )rF   r×  )rG   r×  )rH   r×  )rI   r×  )rJ   r×  rà  rˆ  râ  s      rY   rm   zMBart50Converter.vocab  sh   € ð
ð 
ð 
ˆð 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØð  Rð  Rð  Rñ  	RˆØ�/Ð"Ñ"ˆØˆr[   c                 ó   — dS rË  rk   r‰  s     rY   r¢   zMBart50Converter.unk_id  r  r[   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S )Nzen_XX $A </s>zen_XX $A $B </s>r   rÑ  rö   rÄ  rå   s    rY   r
  zMBart50Converter.post_processor  r  r[   Nc                 óX  — t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     d	d
¦  «        ¦  «        }|df|df|df|dfg}|�*|                     t          |¦  «        dd …         ¦  «         |                     d„ t          D ¦   «         ¦  «         |                     |df¦  «         ||d<   |S )Nr  rÐ  ræ  rÙ  r  rÑ  rë   rÜ  rç  rá  r×  rª   c              3   ó   K  — | ]}|d fV — Œ	dS r  rk   r  s     rY   r  z4MBart50Converter.convert_from_spm.<locals>.<genexpr>/  s'   è è € ÐNÐN¨y˜9 cÐ*ÐNÐNÐNÐNÐNÐNr[   rm   )rË   rØ   r‚   rÎ   ÚMBART50_LANGUAGESr€   )	r  rm   rÅ   r  ræ  r  rë   rç  rê  s	            rY   r}  z!MBart50Converter.convert_from_spm  s'  € å˜Ÿ
š
 ;°Ñ6Ô6Ñ7Ô7ˆ	Ý˜Ÿ
š
 ;°Ñ8Ô8Ñ9Ô9ˆ	Ý˜Ÿ
š
 ;°Ñ7Ô7Ñ8Ô8ˆ	Ý˜Ÿ
š
 ;°Ñ8Ô8Ñ9Ô9ˆ	Ý˜Ÿš L°(Ñ;Ô;Ñ<Ô<ˆ
ð ˜ÐØ˜ÐØ˜ÐØ˜Ðð	
ˆ
ð ÐØ×Ò�d 5™kœk¨!¨"¨"œoÑ.Ô.Ð.Ø×ÒÐNÐNÕ<MÐNÑNÔNÑNÔNÐNØ×Ò˜: sÐ+Ñ,Ô,Ð,Ø$ˆˆw‰Øˆr[   rÙ   rë  rk   r[   rY   r"  r"    sa   € € € € € ð
ð 
ð 
ðð ð ð
ð 
ð 
ð ðð ð ñ „[ðð ð r[   r"  c                   ó8   — e Zd Zd„ Zd„ Zd„ Zedd„¦   «         ZdS )ÚNllbConverterc                 óF   — g d¢}|d„ |j         dd …         D ¦   «         z  }|S )Nr÷  c                 ó*   — g | ]}|j         |j        f‘ŒS rk   rž   r¡   s     rY   r{   z'NllbConverter.vocab.<locals>.<listcomp>=  rß  r[   rª   rˆ  râ  s      rY   rm   zNllbConverter.vocab6  ó>   € ð
ð 
ð 
ˆð 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØˆr[   c                 ó   — dS rË  rk   r‰  s     rY   r¢   zNllbConverter.unk_id@  r  r[   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S )Nzeng_Latn $A </s>zeng_Latn $A $B </s>Úeng_LatnrÑ  rö   rÄ  rå   s    rY   r
  zNllbConverter.post_processorC  sY   € ÝÔ,Ø%Ø&à˜TÔ4×JÒJÈ:ÑVÔVÐWØ˜Ô0×FÒFÀvÑNÔNÐOðð
ñ 
ô 
ð 	
r[   Nc                 óâ  — t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }|d	|d
|d|di}|�Qt          |t          ¦  «        r|                     ¦   «         nd„ |D ¦   «         }|D ]}	|	|v rŒt          |¦  «        ||	<   Œ||d<   |S )Nr@  rÐ  ræ  rÙ  r  rÑ  rë   rÜ  r   r   rr   rª   c                 ó   — g | ]\  }}|‘ŒS rk   rk   )rz   Útokrš  s      rY   r{   z2NllbConverter.convert_from_spm.<locals>.<listcomp>[  s   € ÐB[ÐB[ÐB[É6È3ÐPQÀ3ÐB[ÐB[ÐB[r[   rm   )rË   rØ   rt  r}   r1  rs   )
r  rm   rÅ   r@  ræ  r  rë   Úreordered_vocabÚtokensr¶   s
             rY   r}  zNllbConverter.convert_from_spmM  s  € å˜Ÿ
š
 ;°Ñ6Ô6Ñ7Ô7ˆ	Ý˜Ÿ
š
 ;°Ñ8Ô8Ñ9Ô9ˆ	Ý˜Ÿ
š
 ;°Ñ7Ô7Ñ8Ô8ˆ	Ý˜Ÿ
š
 ;°Ñ8Ô8Ñ9Ô9ˆ	ð �qØ�qØ�qØ�qð	
ˆð ÐÝ%/°µtÑ%<Ô%<Ð[�U—Z’Z‘\”\�\ÐB[ÐB[ÐUZÐB[ÑB[ÔB[ˆFØð >ð >�Ø˜OÐ+Ð+ØÝ),¨_Ñ)=Ô)=� Ñ&Ð&Ø)ˆˆw‰Øˆr[   rÙ   rë  rk   r[   rY   r+  r+  5  sa   € € € € € ðð ð ðð ð ð
ð 
ð 
ð ðð ð ñ „[ðð ð r[   r+  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚSeamlessM4TConverterc                 óF   — g d¢}|d„ |j         dd …         D ¦   «         z  }|S )N)rØ  rÛ  rø  rù  c                 ó*   — g | ]}|j         |j        f‘ŒS rk   rž   r¡   s     rY   r{   z.SeamlessM4TConverter.vocab.<locals>.<listcomp>l  rß  r[   rª   rˆ  râ  s      rY   rm   zSeamlessM4TConverter.vocabe  r.  r[   c                 ó   — | j         j        S rÙ   )rd   Úunk_token_idr‰  s     rY   r¢   zSeamlessM4TConverter.unk_ido  s   € ØÔ&Ô3Ð3r[   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S )Nz__eng__ $A </s>z__eng__ $A $B </s>Ú__eng__rÑ  rö   rÄ  rå   s    rY   r
  z#SeamlessM4TConverter.post_processorr  sY   € ÝÔ,Ø$Ø%à˜DÔ3×IÒIÈ)ÑTÔTÐUØ˜Ô0×FÒFÀvÑNÔNÐOðð
ñ 
ô 
ð 	
r[   N©rÁ   rÈ   rÉ   rm   r¢   r
  rk   r[   rY   r8  r8  d  sA   € € € € € ðð ð ð4ð 4ð 4ð
ð 
ð 
ð 
ð 
r[   r8  c                   ó8   — e Zd Zd„ Zd„ Zd„ Zedd„¦   «         ZdS )ÚXLMRobertaConverterc                 óR   — g d¢}|d„ |j         dd …         D ¦   «         z  }|dgz  }|S )Nr÷  c                 ó*   — g | ]}|j         |j        f‘ŒS rk   rž   r¡   s     rY   r{   z-XLMRobertaConverter.vocab.<locals>.<listcomp>…  rß  r[   rª   rà  rˆ  râ  s      rY   rm   zXLMRobertaConverter.vocab~  sK   € ð
ð 
ð 
ˆð 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØ�/Ð"Ñ"ˆØˆr[   c                 ó
   — d}|S rË  rk   rÌ  s      rY   r¢   zXLMRobertaConverter.unk_id‰  rÍ  r[   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S rÏ  rÄ  rå   s    rY   r
  z"XLMRobertaConverter.post_processor�  rÒ  r[   Nc                 ó  — t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     d	d
¦  «        ¦  «        }|df|df|df|dfg}|�*|                     t          |¦  «        dd …         ¦  «         |                     |df¦  «         ||d<   |S )Nr@  rÐ  ræ  rÙ  r  rÑ  rë   rÜ  rç  rá  r×  rª   rm   ré  r   s	            rY   r}  z$XLMRobertaConverter.convert_from_spm—  s  € å˜Ÿ
š
 ;°Ñ6Ô6Ñ7Ô7ˆ	Ý˜Ÿ
š
 ;°Ñ8Ô8Ñ9Ô9ˆ	Ý˜Ÿ
š
 ;°Ñ7Ô7Ñ8Ô8ˆ	Ý˜Ÿ
š
 ;°Ñ8Ô8Ñ9Ô9ˆ	Ý˜Ÿš L°(Ñ;Ô;Ñ<Ô<ˆ
ð ˜ÐØ˜ÐØ˜ÐØ˜Ðð	
ˆ
ð ÐØ×Ò�d 5™kœk¨!¨"¨"œoÑ.Ô.Ð.Ø×Ò˜: sÐ+Ñ,Ô,Ð,Ø$ˆˆw‰Øˆr[   rÙ   rë  rk   r[   rY   rA  rA  }  sa   € € € € € ð	ð 	ð 	ðð ð ð
ð 
ð 
ð ðð ð ñ „[ðð ð r[   rA  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚXLNetConverterc                 ó$   — d„ |j         D ¦   «         S )Nc                 ót   — g | ]5}t          |j        ¦  «        r|j        |j        fn|j        |j        d z
  f‘Œ6S r²  r´  r¡   s     rY   r{   z(XLNetConverter.vocab.<locals>.<listcomp>®  rµ  r[   rˆ  r‰  s     rY   rm   zXLNetConverter.vocab­  r¶  r[   c                 óf  — t          j        dd¦  «        t          j        dd¦  «        g}| j        j        sL|                     t          j        ¦   «         ¦  «         |                     t          j        ¦   «         ¦  «         | j        j        r&|                     t          j        ¦   «         ¦  «         |j	        j
        }|r'|                     t          j        |¦  «        ¦  «         |                     t          j        t          d¦  «        d¦  «        ¦  «         t          j        |¦  «        S r¸  rº  r¿  s       rY   r  zXLNetConverter.normalizer³  rÁ  r[   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S )Nz$A:0 <sep>:0 <cls>:2z!$A:0 <sep>:0 $B:1 <sep>:1 <cls>:2z<sep>z<cls>rö   rÄ  rå   s    rY   r
  zXLNetConverter.post_processorÆ  rÅ  r[   NrÆ  rk   r[   rY   rH  rH  ¬  rÇ  r[   rH  c                   ó   — e Zd ZdS )ÚReformerConverterN©rÁ   rÈ   rÉ   rk   r[   rY   rN  rN  Ñ  ó   € € € € € Ø€Dr[   rN  c                   ó   — e Zd Zd„ Zd„ ZdS )ÚRemBertConverterc                 ó>  — t          j        dd¦  «        t          j        dd¦  «        t          j        t          d¦  «        d¦  «        g}| j        j        sL|                     t          j        ¦   «         ¦  «         |                     t          j        ¦   «         ¦  «         | j        j        r&|                     t          j	        ¦   «         ¦  «         |j
        j        }|r'|                     t          j        |¦  «        ¦  «         t          j        |¦  «        S r¸  )r
   ru  r   rd   r»  r€   r¼  r½  r   r¾  rÄ   r»   rw  rW  r¿  s       rY   r  zRemBertConverter.normalizer×  sý   € åÔ  cÑ*Ô*ÝÔ  cÑ*Ô*ÝÔ¥ g¡¤°Ñ4Ô4ð
Ðð
 Ô&Ô3ð 	@Ø×#Ò#¥KÔ$4Ñ$6Ô$6Ñ7Ô7Ð7Ø×#Ò#¥KÔ$<Ñ$>Ô$>Ñ?Ô?Ð?ØÔ"Ô0ð 	=Ø×#Ò#¥KÔ$9Ñ$;Ô$;Ñ<Ô<Ð<à$Ô4ÔIÐàð 	SØ×#Ò#¥KÔ$;Ð<PÑ$QÔ$QÑRÔRÐRåÔ#Ð$4Ñ5Ô5Ð5r[   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S rÃ  rÄ  rå   s    rY   r
  zRemBertConverter.post_processorê  rÅ  r[   N)rÁ   rÈ   rÉ   r  r
  rk   r[   rY   rR  rR  Õ  s2   € € € € € ð6ð 6ð 6ð&
ð 
ð 
ð 
ð 
r[   rR  c                   ó   — e Zd ZdS )ÚBertGenerationConverterNrO  rk   r[   rY   rV  rV  õ  rP  r[   rV  c                   ó>   — e Zd Zd„ Zedd„¦   «         Zd„ Zd„ Zd„ ZdS )ÚPegasusConverterc                 óp  — | j         j        df| j         j        dfg}| j         j        �|| j         j        dfgz  }| j         j        �,| j         j        | j         j        k     r|| j         j        dfgz  }|d„ t          d| j         j        ¦  «        D ¦   «         z  }|d„ |j        dd …         D ¦   «         z  }|S )Nr×  c                 ó   — g | ]
}d |› d�df‘ŒS ©z<unk_ú>rè  rk   ©rz   r¥   s     rY   r{   z*PegasusConverter.vocab.<locals>.<listcomp>	  s%   € Ð[Ð[Ð[¨Q�<˜1�<�<�< Ð(Ð[Ð[Ð[r[   rr   c                 ó*   — g | ]}|j         |j        f‘ŒS rk   rž   r¡   s     rY   r{   z*PegasusConverter.vocab.<locals>.<listcomp>
  rß  r[   )	rd   ræ  r  Úmask_token_sentrç  Úmask_token_idÚoffsetr   rÀ   râ  s      rY   rm   zPegasusConverter.vocabú  sÚ   € àÔ$Ô.°Ð4ØÔ$Ô.°Ð4ð
ˆð
 Ô"Ô2Ð>Ø�tÔ.Ô>ÀÐDÐEÑEˆEð Ô#Ô.Ð:ØÔ'Ô5¸Ô8OÔ8VÒVÐVà�tÔ.Ô9¸3Ð?Ð@Ñ@ˆEàÐ[Ð[µ%¸¸4Ô;RÔ;YÑ2ZÔ2ZÐ[Ñ[Ô[Ñ[ˆØÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØˆr[   Nc           
      ó’  — t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }|d	f|d	fg}|d
k    r|                     |d	f¦  «         |d
k    r||k    r|                     |d	f¦  «         |                     d„ t	          d|                     dd¦  «        ¦  «        D ¦   «         ¦  «         |�*|                     t          |¦  «        dd …         ¦  «         ||d<   |S )Nræ  rÙ  r  rÑ  rç  z<mask_1>r_  z<mask_2>r×  ÚNonec                 ó   — g | ]
}d |› d�df‘ŒS r[  rk   r]  s     rY   r{   z5PegasusConverter.convert_from_spm.<locals>.<listcomp>  s%   € Ð_Ð_Ð_°a˜L A˜L˜L˜L¨&Ð1Ð_Ð_Ð_r[   rr   ra  ég   rm   )rË   rØ   r€   r‚   r   rÎ   )r  rm   rÅ   ræ  r  rç  r_  rê  s           rY   r}  z!PegasusConverter.convert_from_spm  sN  € å˜Ÿ
š
 ;°Ñ8Ô8Ñ9Ô9ˆ	Ý˜Ÿ
š
 ;°Ñ7Ô7Ñ8Ô8ˆ	Ý˜Ÿš L°*Ñ=Ô=Ñ>Ô>ˆ
Ý˜fŸjšjÐ):¸JÑGÔGÑHÔHˆð ˜ÐØ˜Ðð
ˆ
ð ˜ÒÐØ×Ò˜z¨3Ð/Ñ0Ô0Ð0Ø˜fÒ$Ð$¨¸JÒ)FÐ)FØ×Ò˜°Ð4Ñ5Ô5Ð5à×ÒÐ_Ð_½5ÀÀFÇJÂJÈxÐY\ÑD]ÔD]Ñ;^Ô;^Ð_Ñ_Ô_Ñ`Ô`Ð`ØÐØ×Ò�d 5™kœk¨!¨"¨"œoÑ.Ô.Ð.Ø$ˆˆw‰Øˆr[   c                 ó4   — |j         j        | j        j        z   S rÙ   )r½   r¢   rd   ra  r‰  s     rY   r¢   zPegasusConverter.unk_id#  s   € ØÔ!Ô(¨4Ô+BÔ+IÑIÐIr[   c                 ó¢   — t          || j        ¦  «        }t          j        t          j        ¦   «         t          j        ||¬¦  «        g¦  «        S r¢  )rf   rd   r   rW  ÚWhitespaceSplitr¥  r¦  s       rY   r  zPegasusConverter.pre_tokenizer&  sO   € Ý,Ð-=¸tÔ?VÑWÔWˆÝÔ&åÔ.Ñ0Ô0ÝÔ(°[ÐQ_Ð`Ñ`Ô`ðñ
ô 
ð 	
r[   c                 óp   — | j         j        }|| j         j        fg}t          j        d|gdd|g|¬¦  «        S )Nú$Aú$Brö   )rd   r  Úeos_token_idr   r	  )r–   Úeosrù   s      rY   r
  zPegasusConverter.post_processor/  sI   € ØÔ%Ô/ˆà�$Ô)Ô6Ð7ð
ˆõ Ô,°T¸3°KÀtÈTÐSVÐFWÐhvÐwÑwÔwÐwr[   rÙ   )	rÁ   rÈ   rÉ   rm   r¬  r}  r¢   r  r
  rk   r[   rY   rX  rX  ù  sx   € € € € € ðð ð ð& ðð ð ñ „[ðð*Jð Jð Jð
ð 
ð 
ðxð xð xð xð xr[   rX  c                   ó2   — e Zd Zd„ Zd„ Zedd„¦   «         ZdS )ÚT5Converterc                 ó‚   — | j         j        }d„ |j        D ¦   «         }|d„ t          |dz
  dd¦  «        D ¦   «         z  }|S )Nc                 ó*   — g | ]}|j         |j        f‘ŒS rk   rž   r¡   s     rY   r{   z%T5Converter.vocab.<locals>.<listcomp>:  s!   € ÐFÐFÐF°�%”+˜uœ{Ð+ÐFÐFÐFr[   c                 ó   — g | ]
}d |› d�df‘ŒS )ú
<extra_id_r\  r×  rk   r]  s     rY   r{   z%T5Converter.vocab.<locals>.<listcomp>;  s)   € ÐUÐUÐU¨qÐ$ Ð$Ð$Ð$ cÐ*ÐUÐUÐUr[   r   rÛ   )rd   Ú
_extra_idsrÀ   r   )r–   r•   Únum_extra_idsrm   s       rY   rm   zT5Converter.vocab8  sR   € ØÔ/Ô:ˆØFÐF¸¼ÐFÑFÔFˆØÐUÐUµE¸-È!Ñ:KÈRÐQSÑ4TÔ4TÐUÑUÔUÑUˆØˆr[   c                 ón   — t          j        ddgg d¢d| j                             d¦  «        fg¬¦  «        S ©Nrj  rÑ  )rj  rÑ  rk  rÑ  rö   rÄ  rå   s    rY   r
  zT5Converter.post_processor>  óJ   € ÝÔ,Ø˜&�>Ø-Ð-Ð-à˜Ô0×FÒFÀvÑNÔNÐOðð
ñ 
ô 
ð 	
r[   Nc                 ó  — |                      dd¦  «        }d„ t          |dz
  dd¦  «        D ¦   «         }|�t          |¦  «        ng }|                     d„ |D ¦   «         ¦  «         |                     d|¦  «         ||d<   |S )	NÚ	extra_idsr³  c                 ó   — g | ]}d |› d�‘Œ	S )rs  r\  rk   r]  s     rY   r{   z0T5Converter.convert_from_spm.<locals>.<listcomp>J  s$   € ÐPÐPÐP¨aÐ) QÐ)Ð)Ð)ÐPÐPÐPr[   r   rÛ   c              3   ó   K  — | ]}|d fV — Œ	dS r  rk   ©rz   r¶   s     rY   r  z/T5Converter.convert_from_spm.<locals>.<genexpr>L  s&   è è € ÐAÐA¨5˜5 #˜,ÐAÐAÐAÐAÐAÐAr[   rº   rm   )rØ   r   rÎ   r‚   Ú
setdefault)r  rm   rÅ   rz  Úextra_tokensrê  s         rY   r}  zT5Converter.convert_from_spmG  s”   € à—J’J˜{¨CÑ0Ô0ˆ	ØPÐPµ5¸ÀQ¹ÈÈBÑ3OÔ3OÐPÑPÔPˆØ$)Ð$5•T˜%‘[”[�[¸2ˆ
Ø×ÒÐAÐA°LÐAÑAÔAÑAÔAÐAà×ÒÐ5°|ÑDÔDÐDØ$ˆˆw‰Øˆr[   rÙ   )rÁ   rÈ   rÉ   rm   r
  r¬  r}  rk   r[   rY   ro  ro  7  sR   € € € € € ðð ð ð
ð 
ð 
ð ðð ð ñ „[ðð ð r[   ro  c                   ó   — e Zd Zd„ ZdS )ÚUdopConverterc                 ón   — t          j        ddgg d¢d| j                             d¦  «        fg¬¦  «        S rw  rÄ  rå   s    rY   r
  zUdopConverter.post_processorT  rx  r[   N©rÁ   rÈ   rÉ   r
  rk   r[   rY   r�  r�  S  s#   € € € € € ð
ð 
ð 
ð 
ð 
r[   r�  c                   ó   — e Zd Zd„ ZdS )ÚVideoPrismConverterc                 ó   — d S rÙ   rk   rå   s    rY   r
  z"VideoPrismConverter.post_processor_  r¨  r[   Nrƒ  rk   r[   rY   r…  r…  ^  s#   € € € € € ðð ð ð ð r[   r…  c                   ó   — e Zd Zdefd„ZdS )ÚWhisperConverterr]   c           
      ó`  — | j         j        }t          | j         j                             ¦   «         ¦  «        }t          t          ||d ddd¬¦  «        ¦  «        }t          j        | j         j	        ¬¦  «        |_
        t          j        ¦   «         |_        | j         j        }| j                              |¦  «        }| j         j        }| j         j        }d                     d„ |D ¦   «         ¦  «        }t%          j        |› d|› d�|› d	|› d
�||fgt)          ||¦  «        ¢¬¦  «        |_        |S )NrK   Fr9  r;  r  c                 ó   — g | ]}|› d �‘ŒS )ró   rk   r}  s     rY   r{   z.WhisperConverter.converted.<locals>.<listcomp>z  s   € Ð#GÐ#GÐ#G°U u L L LÐ#GÐ#GÐ#Gr[   z $A:0 ró   z $A:0 $B:1 rõ   rö   )rd   r/  rÎ   r0  r1  r   r   r   r?  r\   r  r	   r  Úprefix_tokensÚconvert_ids_to_tokensr  rl  Újoinr   r	  Úzipr
  )	r–   rm   r„   r  Úprefix_token_idsÚprefixesrm  rl  Úprefix_templates	            rY   ræ   zWhisperConverter.convertedd  sQ  € ØÔ'Ô/ˆÝ�dÔ-Ô7×<Ò<Ñ>Ô>Ñ?Ô?ˆåÝØØØØ*,Ø#%Øðñ ô ñ	
ô 	
ˆ	õ #1Ô":ÈDÔLcÔLtÐ"uÑ"uÔ"uˆ	ÔÝ$Ô.Ñ0Ô0ˆ	ÔàÔ2Ô@ÐØÔ*×@Ò@ÐAQÑRÔRˆØÔ%Ô/ˆØÔ.Ô;ˆØŸ(š(Ð#GÐ#G¸hÐ#GÑ#GÔ#GÑHÔHˆÝ#-Ô#@Ø%Ð4Ð4¨SÐ4Ð4Ð4Ø#Ð7Ð7°Ð7Ð7Ð7à�lÐ#ðå�XÐ/Ñ0Ô0ðð$
ñ $
ô $
ˆ	Ô ð Ðr[   Nr  rk   r[   rY   rˆ  rˆ  c  s/   € € € € € ð ˜9ð  ð  ð  ð  ð  ð  r[   rˆ  c                   ó   — e Zd Zd„ ZdS )ÚBigBirdConverterc           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S rÃ  rÄ  rå   s    rY   r
  zBigBirdConverter.post_processorˆ  rÅ  r[   Nrƒ  rk   r[   rY   r“  r“  ‡  s#   € € € € € ð
ð 
ð 
ð 
ð 
r[   r“  c                   ó   — e Zd Zdefd„ZdS )ÚCLIPConverterr]   c                 ó
  — | j         j        }t          | j         j                             ¦   «         ¦  «        }| j         j        }t          t          ||d dddt          |¦  «        ¬¦  «        ¦  «        }t          j
        t          j        ¦   «         t          j        t          d¦  «        d¦  «        t          j        ¦   «         g¦  «        |_        t!          j
        t!          j        t          d¦  «        dd	¬
¦  «        t!          j        d¬¦  «        g¦  «        |_        t)          j        ¦   «         |_        t-          j        | j         j        | j         j        f| j         j        | j         j        fdd¬¦  «        |_        |S )NrK   r)  F©rm   r„   r*  r:  r+  r,  rë   z\s+r  z9's|'t|'re|'ve|'m|'ll|'d|[\p{L}]+|[\p{N}]|[^\s\p{L}\p{N}]+ÚremovedTrQ  r;  r\  )rd   r/  rÎ   r0  r1  rë   r   r   rË   r
   rW  rV  ru  r   r¾  r  r   rX  r?  r  r	   r  r   r]  r  rl  r@  rA  r
  r5  s        rY   ræ   zCLIPConverter.converted”  ss  € ØÔ'Ô/ˆÝ�dÔ-Ô7×<Ò<Ñ>Ô>Ñ?Ô?ˆØÔ+Ô5ˆ	åÝØØØØ*,Ø#)ØÝ˜i™.œ.ðñ ô ñ

ô 

ˆ	õ  +Ô3ÝŒ_ÑÔ¥Ô 3µE¸&±M´MÀ3Ñ GÔ GÍÔI^ÑI`ÔI`Ðañ 
ô  
ˆ	Ôõ #1Ô"9åÔ$ÝÐZÑ[Ô[Ø&Øðñ ô õ
 Ô(¸%Ð@Ñ@Ô@ðñ	#
ô 	#
ˆ	Ôõ %Ô.Ñ0Ô0ˆ	Ôõ $.Ô#?ØÔ(Ô2°DÔ4KÔ4XÐYØÔ(Ô2°DÔ4KÔ4XÐYØ"Øð	$
ñ $
ô $
ˆ	Ô ð Ðr[   Nr  rk   r[   rY   r–  r–  “  s/   € € € € € ð'˜9ð 'ð 'ð 'ð 'ð 'ð 'r[   r–  c                   ó   — e Zd Zdefd„ZdS )ÚLayoutLMv2Converterr]   c           	      ó¸  — | j         j        }t          t          |t	          | j         j        ¦  «        ¬¦  «        ¦  «        }d}d}d}t          | j         d¦  «        r3| j         j        j        }| j         j        j	        }| j         j        j
        }t          j        d|||¬¦  «        |_        t          j        ¦   «         |_        t	          | j         j        ¦  «        }t	          | j         j        ¦  «        }| j         j        }| j         j        }	t+          j        |› d|› d�|› d|› d|› d	�||f||	fg¬
¦  «        |_        t1          j        d¬¦  «        |_        |S )Nrê   FTrì   rí   rò   ró   rô   rõ   rö   rú   rû   rý   r  s
             rY   ræ   zLayoutLMv2Converter.converted¿  sy  € ØÔ'Ô-ˆÝ�i¨½¸TÔ=TÔ=^Ñ9_Ô9_Ð`Ñ`Ô`ÑaÔaˆ	à!&ÐØˆØˆÝ�4Ô*Ð,=Ñ>Ô>ð 	RØ%)Ô%<Ô%LÔ%cÐ"Ø Ô3ÔCÔQˆMØ Ô3ÔCÔQˆMå*Ô9ØØ!7Ø'Ø#ð	 
ñ  
ô  
ˆ	Ôõ #1Ô"AÑ"CÔ"Cˆ	Ôå�$Ô)Ô3Ñ4Ô4ˆÝ�$Ô)Ô3Ñ4Ô4ˆØÔ.Ô;ˆØÔ.Ô;ˆå#-Ô#@ØÐ*Ð* 3Ð*Ð*Ð*ØÐ5Ð5 Ð5Ð5¨cÐ5Ð5Ð5à�lÐ#Ø�lÐ#ðð$
ñ $
ô $
ˆ	Ô õ %Ô.°dÐ;Ñ;Ô;ˆ	ÔàÐr[   Nr  rk   r[   rY   r›  r›  ¾  r  r[   r›  c                   ó   — e Zd Zdefd„ZdS )ÚBlenderbotConverterr]   c           
      ó‚  — | j         }|j        }t          |j                             ¦   «         ¦  «        }t          t          ||d ddd¬¦  «        ¦  «        }t          j        |j	        ¬¦  «        |_
        t          j        ¦   «         |_        t          j        d|j        › d�|j        |j        fg¬¦  «        |_        |S )NrK   Fr9  r;  z$A:0 ró   )r÷   rù   )rd   r/  rÎ   r0  r1  r   r   r   r?  r\   r  r	   r  r   r	  r  rl  r
  r^  s        rY   ræ   zBlenderbotConverter.convertedæ  sÎ   € ØÔ$ˆØ”
ˆÝ�b”l×'Ò'Ñ)Ô)Ñ*Ô*ˆåÝØØØØ*,Ø#%Øðñ ô ñ	
ô 	
ˆ	õ #1Ô":ÈBÔL_Ð"`Ñ"`Ô"`ˆ	ÔÝ$Ô.Ñ0Ô0ˆ	ÔÝ#-Ô#@Ø+˜2œ<Ð+Ð+Ð+à”˜rœÐ/ðð$
ñ $
ô $
ˆ	Ô ð Ðr[   Nr  rk   r[   rY   rž  rž  å  r`  r[   rž  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚXGLMConverterc                 óT   — g d¢}|d„ |j         dd …         D ¦   «         z  }|g d¢z  }|S )Nr÷  c                 ó*   — g | ]}|j         |j        f‘ŒS rk   rž   r¡   s     rY   r{   z'XGLMConverter.vocab.<locals>.<listcomp>
  rß  r[   rª   ))z<madeupword0>r×  )z<madeupword1>r×  )z<madeupword2>r×  )z<madeupword3>r×  )z<madeupword4>r×  )z<madeupword5>r×  )z<madeupword6>r×  rˆ  râ  s      rY   rm   zXGLMConverter.vocab  s[   € ð
ð 
ð 
ˆð 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØð  zð  zð  zñ  	zˆØˆr[   c                 ó
   — d}|S rË  rk   rÌ  s      rY   r¢   zXGLMConverter.unk_id  rÍ  r[   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S )Nz</s> $Az</s> $A </s> </s> $BrÐ  rÑ  rö   rÄ  rå   s    rY   r
  zXGLMConverter.post_processor  sY   € ÝÔ,ØØ'à˜Ô/×EÒEÀeÑLÔLÐMØ˜Ô0×FÒFÀvÑNÔNÐOðð
ñ 
ô 
ð 	
r[   Nr?  rk   r[   rY   r¡  r¡    sA   € € € € € ð	ð 	ð 	ðð ð ð
ð 
ð 
ð 
ð 
r[   r¡  c                   ó>   — e Zd ZdZeZddhZ	 d„ Zd„ Zd„ Z	d„ Z
d„ Zd	S )
ÚGemmaConverterTz<start_of_turn>z<end_of_turn>c                 ó,   — t          j        dd¦  «        S ©Nr  rr  )r
   ru  r‰  s     rY   r  zGemmaConverter.normalizer-  s   € ÝÔ" 3¨Ñ.Ô.Ð.r[   c                 ó  — | j         j        df| j         j        df| j         j        dfg}|d„ |j        dd …         D ¦   «         z  }t          d„ |D ¦   «         ¦  «        s.t          d„ t          |¦  «        D ¦   «         d ¦  «        }|�d||<   |S )Nr×  c                 ó*   — g | ]}|j         |j        f‘ŒS rk   rž   r¡   s     rY   r{   z(GemmaConverter.vocab.<locals>.<listcomp>6  rß  r[   rª   c              3   ó.   K  — | ]}|d          dk    V — ŒdS )r   rÕ   Nrk   )rz   rl   s     rY   r  z'GemmaConverter.vocab.<locals>.<genexpr>9  s*   è è € Ð/Ð/ A�1�Q”4˜4’<Ð/Ð/Ð/Ð/Ð/Ð/r[   c              3   ó8   K  — | ]\  }}|d          dk    ¯|V — ŒdS )r   rÖ   Nrk   )rz   r¥   rl   s      rY   r  z'GemmaConverter.vocab.<locals>.<genexpr>:  s4   è è € Ð"VÐ"V©¨¨AÀQÀqÄTÈXÒEUÐEU 1ÐEUÐEUÐEUÐEUÐ"VÐ"Vr[   )rÕ   r×  )rd   ræ  r  r@  rÀ   ÚanyÚnextrÃ   )r–   r•   rm   Úoverride_indexs       rY   rm   zGemmaConverter.vocab0  s¶   € àÔ$Ô.°Ð4ØÔ$Ô.°Ð4ØÔ$Ô.°Ð4ð
ˆð
 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆõ Ð/Ð/¨Ð/Ñ/Ô/Ñ/Ô/ð 	4Ý!Ð"VÐ"Vµ¸5Ñ1AÔ1AÐ"VÑ"VÔ"VÐX\Ñ]Ô]ˆNØÐ)Ø(3��nÑ%àˆr[   c                 ó,   — t          j        dd¦  «        S )Nr  Úmerged_with_previous)r   rX  ©r–   r¤  r\   s      rY   r  zGemmaConverter.pre_tokenizer@  s   € ÝÔ# CÐ)?Ñ@Ô@Ð@r[   c                 ó
   — d}|S rË  rk   rÌ  s      rY   r¢   zGemmaConverter.unk_idC  rÍ  r[   c                 óš   — t          j        t          j        dd¦  «        t          j        ¦   «         t          j        ¦   «         g¦  «        S )Nrr  r  )r	   rW  ru  rx  ry  r³  s      rY   r  zGemmaConverter.decoderG  sA   € ÝÔ åÔ  ¨Ñ,Ô,ÝÔ%Ñ'Ô'Ý”‘”ðñ
ô 
ð 	
r[   N)rÁ   rÈ   rÉ   r�  rÐ   r—  rù   r  rm   r  r¢   r  rk   r[   rY   r§  r§    s|   € € € € € ØÐØ.€Là'¨Ð9€Nðð/ð /ð /ðð ð ð Að Að Aðð ð ð
ð 
ð 
ð 
ð 
r[   r§  c                   ó6   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚLlamaConverterTc                 óä   — | j                              d¦  «        df| j                              d¦  «        df| j                              d¦  «        dfg}|d„ |j        dd …         D ¦   «         z  }|S )Nr   r×  r   rr   c                 ó*   — g | ]}|j         |j        f‘ŒS rk   rž   r¡   s     rY   r{   z(LlamaConverter.vocab.<locals>.<listcomp>Z  rß  r[   rª   )rd   rŒ  rÀ   râ  s      rY   rm   zLlamaConverter.vocabT  s   € àÔ$×:Ò:¸1Ñ=Ô=¸sÐCØÔ$×:Ò:¸1Ñ=Ô=¸sÐCØÔ$×:Ò:¸1Ñ=Ô=¸sÐCð
ˆð
 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØˆr[   c                 ó
   — d}|S r¸   rk   rÌ  s      rY   r¢   zLlamaConverter.unk_id]  rÍ  r[   c                 óÖ   — t          j        dd¦  «        t          j        ¦   «         t          j        ¦   «         g}|r|t          j        dd¬¦  «        gz  }t          j        |¦  «        S ©Nrr  r  r   )Úcontentr�  ©r	   ru  rx  ry  rŸ  rW  ©r–   r¤  r\   Úsequences       rY   r  zLlamaConverter.decodera  óe   € åÔ˜U CÑ(Ô(ÝÔ!Ñ#Ô#ÝŒM‰OŒOð
ˆð
 ð 	>Ø�œ°¸!Ð<Ñ<Ô<Ð=Ñ=ˆHÝÔ  Ñ*Ô*Ð*r[   c                 óð   — t          | j        dd¦  «        r_g }t          | j        dd¦  «        r|t          j        d¬¦  «        gz  }|t          j        dd¬¦  «        gz  }t          j        |¦  «        S d S )Nr`   Tr\   rr  )Úprependr  )Úpatternr½  )rc   rd   r
   ÚPrependru  rW  )r–   r•   rÀ  s      rY   r  zLlamaConverter.normalizerk  s…   € Ý�4Ô*¨H°dÑ;Ô;ð 	2ØˆHÝ�tÔ.Ð0BÀDÑIÔIð AØ�[Ô0¸Ð?Ñ?Ô?Ð@Ñ@�Ø�Ô,°SÀ%ÐHÑHÔHÐIÑIˆHÝÔ'¨Ñ1Ô1Ð1Øˆtr[   c                 óŠ   — t          | j        dd¦  «        s,t          || j        ¦  «        }t          j        ||d¬¦  «        S d S )Nr`   TF©r¤  re   Úsplit)rc   rd   rf   r   r¥  r¦  s       rY   r  zLlamaConverter.pre_tokenizert  sL   € Ý�tÔ.°¸$Ñ?Ô?ð 	qÝ0Ð1AÀ4ÔCZÑ[Ô[ˆNÝ!Ô+¸ÐTbÐjoÐpÑpÔpÐpØˆtr[   c                 ó   — d S rÙ   rk   rå   s    rY   r
  zLlamaConverter.post_processorz  s   € àˆtr[   N)
rÁ   rÈ   rÉ   r�  rm   r¢   r  r  r  r
  rk   r[   rY   r·  r·  Q  st   € € € € € ØÐðð ð ðð ð ð+ð +ð +ðð ð ðð ð ðð ð ð ð r[   r·  c                   ó   — e Zd Zdefd„ZdS )ÚMarkupLMConverterr]   c                 ó(  — | j         }|j        }t          |j                             ¦   «         ¦  «        }t          t          ||d ddd| j         j        ¬¦  «        ¦  «        }t          j	        |j
        ¬¦  «        |_        t          j	        ¦   «         |_        t          | j         j        ¦  «        }t          | j         j        ¦  «        }| j         j        }| j         j        }t'          j        |› d|› �|› d|› d|› �||f||fg¬¦  «        |_        |S )NrK   Fr˜  r;  z $A z $B rö   )rd   r/  rÎ   r0  r1  r   r   rë   r   r?  r\   r  r	   r  rË   r  r  r  r  r   r	  r
  )	r–   r_  rm   r„   r  r  r  r  r  s	            rY   ræ   zMarkupLMConverter.converted€  s1  € ØÔ$ˆØ”
ˆÝ�b”l×'Ò'Ñ)Ô)Ñ*Ô*ˆåÝØØØØ*,Ø#%ØØÔ1Ô;ðñ ô ñ

ô 

ˆ	õ #1Ô":ÈBÔL_Ð"`Ñ"`Ô"`ˆ	ÔÝ$Ô.Ñ0Ô0ˆ	Ôå�$Ô)Ô3Ñ4Ô4ˆÝ�$Ô)Ô3Ñ4Ô4ˆØÔ.Ô;ˆØÔ.Ô;ˆå#-Ô#@ØÐ$Ð$˜sÐ$Ð$ØÐ+Ð+˜SÐ+Ð+ cÐ+Ð+à�lÐ#Ø�lÐ#ðð$
ñ $
ô $
ˆ	Ô ð Ðr[   Nr  rk   r[   rY   rË  rË    s/   € € € € € ð"˜9ð "ð "ð "ð "ð "ð "r[   rË  c                   ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )ÚMoshiConverterTc                 óL  — t          | d¦  «         t                               | |¦  «         t          ¦   «         }|                     ¦   «         }t          |d¦  «        5 }|                     |                     ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   || _        d S ©NrR   r�   ©	r   rá   rš   rZ   r‘   r’   r“   r”   r•   ©r–   r€  rÅ   r—   r˜   r™   s         rY   rš   zMoshiConverter.__init__¨  sÏ   € Ý˜$ 
Ñ+Ô+Ð+å×Ò˜4 Ñ,Ô,Ð,õ $Ñ%Ô%ˆ	à× Ò Ñ"Ô"ˆÝ�*˜dÑ#Ô#ð 	( qØ×Ò˜aŸfšf™hœhÑ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(àˆŒ
ˆ
ˆ
ó   Á(BÂBÂBc                 óÆ   — |j         j        }t          j        dd¦  «        g}|st          j        |¦  «        S t          j        t          j        |¦  «        g|z   ¦  «        S r©  )rÄ   r»   r
   ru  rW  rw  r   s       rY   r  zMoshiConverter.normalizerµ  sg   € Ø$Ô4ÔIÐåÔ  UÑ+Ô+ð
ˆð $ð 	hÝÔ'¨Ñ5Ô5Ð5åÔ'­Ô)@ÐAUÑ)VÔ)VÐ(WÐZfÑ(fÑgÔgÐgr[   c                 óÖ   — t          j        dd¦  «        t          j        ¦   «         t          j        ¦   «         g}|r|t          j        dd¬¦  «        gz  }t          j        |¦  «        S r¼  r¾  r¿  s       rY   r  zMoshiConverter.decoder¿  rÁ  r[   c                 ó4   — d}t          j        ||d¬¦  «        S )Nra   FrÇ  )r   r¥  r¦  s       rY   r  zMoshiConverter.pre_tokenizerÉ  s!   € Ø ˆÝÔ'°KÐP^ÐfkÐlÑlÔlÐlr[   N)rÁ   rÈ   rÉ   r�  rš   r  r  r  rk   r[   rY   rÎ  rÎ  ¥  s^   € € € € € ØÐðð ð ðhð hð hð+ð +ð +ðmð mð mð mð mr[   rÎ  c                   óD   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ ZdS )ÚHeliumConverterTNc                 óL  — t          | d¦  «         t                               | |¦  «         t          ¦   «         }|                     ¦   «         }t          |d¦  «        5 }|                     |                     ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   || _        d S rÐ  rÑ  rÒ  s         rY   rš   zHeliumConverter.__init__Ñ  sÍ   € Ý˜$ 
Ñ+Ô+Ð+å×Ò˜4 Ñ,Ô,Ð,å#Ñ%Ô%ˆ	à× Ò Ñ"Ô"ˆÝ�*˜dÑ#Ô#ð 	( qØ×Ò˜aŸfšf™hœhÑ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(àˆŒ
ˆ
ˆ
rÓ  c                 ó¸  ‡ — ‰                       |¦  «        }t          t          |‰                      |¦  «        ‰ j        ¬¦  «        ¦  «        }ˆ fd„t          |j        ¦  «        D ¦   «         }|                     d„ t          |d„ ¬¦  «        D ¦   «         ¦  «         |                     t          ddd¬¦  «        g¦  «         | 
                    d	d
¬¦  «         |S )NrŒ  c                 ój   •— g | ]/\  }}|j         d v ¯||j        |j         dk    p|j        ‰j        v f‘Œ0S r©   r�  r‘  s      €rY   r{   z-HeliumConverter.tokenizer.<locals>.<listcomp>ê  r’  r[   c                 ó<   — g | ]\  }}}t          |d |d¬¦  «        ‘ŒS )FT)r²   r³   Úsingle_wordr´   rµ   s       rY   r{   z-HeliumConverter.tokenizer.<locals>.<listcomp>ð  s@   € ð ð ð á&�B˜˜wõ ˜5¨U¸GÐQUÐVÑVÔVðð ð r[   c                 ó   — | d         S r¸   rk   r¹   s    rY   rn   z+HeliumConverter.tokenizer.<locals>.<lambda>ò  r–  r[   ro   ú
Fr±   rÙ  rª   )ræ  Úpad_id)rm   r   r   r¢   r�  rÃ   rÀ   r™  r�   r   Úenable_padding)r–   r•   rƒ   r  rÆ   s   `    rY   r  zHeliumConverter.tokenizerÝ  s  ø€ Ø—z’z %Ñ(Ô(ˆÝÝØØ—{’{ 5Ñ)Ô)Ø"Ô7ðñ ô ñ
ô 
ˆ	ð
ð 
ð 
ð 
å" 5¤<Ñ0Ô0ð
ñ 
ô 
Ðð
 	×Òðð å*0Ð1AÀ~À~Ð*VÑ*VÔ*Vðñ ô ñ	
ô 	
ð 	
ð 	×Ò�j¨¸%ÈÐOÑOÔOÐPÑQÔQÐQØ× Ò ¨7¸1Ð Ñ=Ô=Ð=ØÐr[   c                 ót   — g }|j         D ]-}|j        dk    r|d|j        fgz  }Œ||j        |j        fgz  }Œ.|S )Nz<0x0A>rß  )rÀ   rŸ   r    )r–   r•   rm   rŸ   s       rY   rm   zHeliumConverter.vocabù  sX   € ØˆØ”\ð 	6ð 	6ˆEØŒ{˜hÒ&Ð&Ø˜4 ¤Ð-Ð.Ñ.��à˜5œ;¨¬Ð4Ð5Ñ5��Øˆr[   c                 ó
   — d}|S r¸   rk   rÌ  s      rY   r¢   zHeliumConverter.unk_id  rÍ  r[   c                 óÒ   — t          j        dd¦  «        t          j        ¦   «         t          j        ¦   «         g}|t          j        dd¬¦  «        gz  }t          j        |¦  «        S r¼  r¾  r¿  s       rY   r  zHeliumConverter.decoder  s]   € åÔ˜U CÑ(Ô(ÝÔ!Ñ#Ô#ÝŒM‰OŒOð
ˆð
 	•X”^¨C°aÐ8Ñ8Ô8Ð9Ñ9ˆÝÔ  Ñ*Ô*Ð*r[   c                 óx   — t          j        t          j        d¦  «        t          j        dd¦  «        g¦  «        S r©  )r
   rW  rÅ  ru  r‰  s     rY   r  zHeliumConverter.normalizer  s2   € ÝÔ#¥[Ô%8¸Ñ%=Ô%=½{Ô?RÐSWÐY^Ñ?_Ô?_Ð$`ÑaÔaÐar[   c                 óR   — t          j        t          j        dd¦  «        g¦  «        S )Nrß  Ú
contiguous)r   rW  rX  r³  s      rY   r  zHeliumConverter.pre_tokenizer  s#   € ÝÔ&­Ô(<¸TÀ<Ñ(PÔ(PÐ'QÑRÔRÐRr[   c                 ó:   — t          j        ddgg d¢dg¬¦  «        S )NrÐ  rj  )rÐ  rj  rÐ  rk  )rÐ  r   rö   )r   r	  rå   s    rY   r
  zHeliumConverter.post_processor  s@   € ÝÔ,àØððð ð ð ðð
ñ 
ô 
ð 	
r[   rÙ   )rÁ   rÈ   rÉ   r�  rš   r  rm   r¢   r  r  r  r
  rk   r[   rY   rØ  rØ  Î  s�   € € € € € ØÐð
ð 
ð 
ð 
ðð ð ð8ð ð ðð ð ð+ð +ð +ðbð bð bðSð Sð Sð
ð 
ð 
ð 
ð 
r[   rØ  c                   ó    — e Zd ZdZdd„Zd„ ZdS )ÚParakeetConverterTNc                 óZ  — || _         t          | d¦  «         t                               | |¦  «         t	          ¦   «         }|                     ¦   «         }t          |d¦  «        5 }|                     |                     ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   || _	        d S rÐ  )
r€  r   rá   rš   rZ   r‘   r’   r“   r”   r•   )r–   r€  r„  r—   r˜   r™   s         rY   rš   zParakeetConverter.__init__*  sÔ   € Ø$ˆŒå˜$ 
Ñ+Ô+Ð+å×Ò˜4 Ñ,Ô,Ð,å#Ñ%Ô%ˆ	Ø× Ò Ñ"Ô"ˆÝ�*˜dÑ#Ô#ð 	( qØ×Ò˜aŸfšf™hœhÑ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(àˆŒ
ˆ
ˆ
s   Á%(BÂBÂ Bc           
      ó„  ‡ — ‰                       |¦  «        }d„ t          |¦  «        D ¦   «         }t          ||¦  «        }t          t	          |||j        j        d‰ j        d ¬¦  «        ¦  «        }ˆ fd„t          |j        ¦  «        D ¦   «         }| 	                    d„ t          |d„ ¬¦  «        D ¦   «         ¦  «         |S )Nc                 ó    — i | ]\  }\  }}||“ŒS rk   rk   r¤   s       rY   r§   z/ParakeetConverter.tokenizer.<locals>.<dictcomp>:  s#   € ÐMÐMÐMÑ!1 ¡M T¨5�T˜1ÐMÐMÐMr[   TrŽ  c                 ój   •— g | ]/\  }}|j         d v ¯||j        |j         dk    p|j        ‰j        v f‘Œ0S r©   r�  r‘  s      €rY   r{   z/ParakeetConverter.tokenizer.<locals>.<listcomp>H  r’  r[   c                 ó:   — g | ]\  }}}t          |d |¬¦  «        ‘ŒS r°   r´   rµ   s       rY   r{   z/ParakeetConverter.tokenizer.<locals>.<listcomp>N  r”  r[   c                 ó   — | d         S r¸   rk   r¹   s    rY   rn   z-ParakeetConverter.tokenizer.<locals>.<lambda>P  r–  r[   ro   )rm   rÃ   r‹   r   r   r½   rs  r�  rÀ   r™  r�   )r–   r•   rƒ   r›  r„   r  rÆ   s   `      rY   r  zParakeetConverter.tokenizer7  sû   ø€ Ø—z’z %Ñ(Ô(ˆàMÐMµY¸|Ñ5LÔ5LÐMÑMÔMˆ	Ý  ¨LÑ9Ô9ˆÝÝØØØÔ,Ô6ØØ"Ô7Øðñ ô ñ	
ô 	
ˆ	ð
ð 
ð 
ð 
å" 5¤<Ñ0Ô0ð
ñ 
ô 
Ðð
 	×Òðð å*0Ð1AÀ~À~Ð*VÑ*VÔ*Vðñ ô ñ	
ô 	
ð 	
ð Ðr[   rÙ   )rÁ   rÈ   rÉ   r�  rš   r  rk   r[   rY   rê  rê  '  s=   € € € € € ØÐðð ð ð ðð ð ð ð r[   rê  c            	      ó\  — t          t          t          d¦  «        t          d¦  «        dz   ¦  «        ¦  «        t          t          t          d¦  «        t          d¦  «        dz   ¦  «        ¦  «        z   t          t          t          d¦  «        t          d¦  «        dz   ¦  «        ¦  «        z   } | dd…         }d	}t          d
¦  «        D ]8}|| vr2|                      |¦  «         |                     d
|z   ¦  «         |dz  }Œ9d„ |D ¦   «         }t	          t          | |¦  «        ¦  «        S )a8  
    Returns list of utf-8 byte and a mapping to unicode strings. We specifically avoids mapping to whitespace/control
    characters the bpe code barfs on.

    The reversible bpe codes work on unicode strings. This means you need a large # of unicode characters in your vocab
    if you want to avoid UNKs. When you're at something like a 10B token dataset you end up needing around 5K for
    decent coverage. This is a significant percentage of your normal, say, 32K bpe vocab. To avoid that, we want lookup
    tables between utf-8 bytes and unicode strings.
    ú!ú~r   õ   Â¡õ   Â¬õ   Â®õ   Ã¿Nr   é   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rk   )Úchr)rz   Úns     rY   r{   z$bytes_to_unicode.<locals>.<listcomp>k  s   € Ð	Ð	Ð	�Q�#ˆa‰&Œ&Ð	Ð	Ð	r[   )rÎ   r   Úordr€   r}   rŽ  )ÚbsÚcsrû  Úbs       rY   Úbytes_to_unicoder   W  s  € õ 	�U•3�s‘8”8�S ™XœX¨™\Ñ*Ô*Ñ+Ô+­dµ5½¸T¹¼ÅCÈÁIÄIÐPQÁMÑ3RÔ3RÑ.SÔ.SÑSÕVZÕ[`ÕadÐeiÑajÔajÕloÐptÑluÔluÐxyÑlyÑ[zÔ[zÑV{ÔV{Ñ{ð ð 
ˆAˆAˆAŒ€BØ	€AÝ�4‰[Œ[ð ð ˆØ�Bˆ;ˆ;Ø�IŠI�a‰LŒLˆLØ�IŠI�d˜Q‘hÑÔÐØ�‰FˆAøØ	Ð	˜"Ð	Ñ	Ô	€BÝ•�B˜‘”ÑÔÐr[   c                   ó@   — e Zd ZdZ	 	 	 	 dd„Zdefd„Zd„ Zd	efd
„Z	dS )ÚTikTokenConverterz'
    A general tiktoken converter.
    Nús(?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\r\n\p{L}\p{N}]?\p{L}+|\p{N}{1,3}| ?[^\s\p{L}\p{N}]+[\r\n]*|\s*[\r\n]+|\s+(?!\S)|\s+Fc                 ó�   — || _         || _        || _        t          |t          ¦  «        r|                     ¦   «         n|| _        d S rÙ   )r€  rÄ  r\   rt  r}   r1  Úextra_special_tokens)r–   r€  rÄ  r\   r  rÅ   s         rY   rš   zTikTokenConverter.__init__t  sN   € ð %ˆŒØˆŒØ 0ˆÔå+5Ð6JÍDÑ+QÔ+QÐkÐ ×%Ò%Ñ'Ô'Ð'ÐWkð 	Ô!Ð!Ð!r[   Útiktoken_urlc                 óf  ‡‡‡— 	 ddl m} n# t          $ r t          d¦  «        ‚w xY w ||¦  «        Št	          ¦   «         Šˆfd„Šg }i }‰                     ¦   «         D ]®\  }}|| ‰|¦  «        <   t          |¦  «        dk    rŒ'g }t          dt          |¦  «        ¦  «        D ]=}|d |…         ||d …         }
}	|	‰v r#|
‰v r|	|
z   ‰v r|                     |	|
|f¦  «         Œ>t          |ˆfd„d¬¦  «        }| 
                    |¦  «         Œ¯t          |d	„ d¬¦  «        }ˆfd
„|D ¦   «         }||fS )Nr   )Úload_tiktoken_bpezY`tiktoken` is required to read a `tiktoken` file. Install it with `pip install tiktoken`.c                 ól   •— d                      ˆfd„|                      d¦  «        D ¦   «         ¦  «        S )NrK   c                 ó:   •— g | ]}‰t          |¦  «                 ‘ŒS rk   ©rü  ©rz   ÚcharÚbyte_encoders     €rY   r{   zdTikTokenConverter.extract_vocab_merges_from_model.<locals>.token_bytes_to_string.<locals>.<listcomp>�  ó$   ø€ ÐTÐTÐT¸˜L­¨T©¬Ô3ÐTÐTÐTr[   úlatin-1©r�  Údecode©rÿ  r  s    €rY   Útoken_bytes_to_stringzPTikTokenConverter.extract_vocab_merges_from_model.<locals>.token_bytes_to_stringŽ  s6   ø€ Ø—7’7ÐTÐTÐTÐTÀÇÂÈÑ@SÔ@SÐTÑTÔTÑUÔUÐUr[   r   c                 ó<   •— ‰| d                  ‰| d                  fS rj   rk   )rl   r0  s    €rY   rn   zCTikTokenConverter.extract_vocab_merges_from_model.<locals>.<lambda>œ  s   ø€ °¸1¸Q¼4´À)ÈAÈaÌDÄ/Ð0R€ r[   Frv   c                 ó   — | d         S ©Nrr   rk   rt   s    rY   rn   zCTikTokenConverter.extract_vocab_merges_from_model.<locals>.<lambda>ž  ó
   € °°A´€ r[   c                 óT   •— g | ]$} ‰|d          ¦  «         ‰|d         ¦  «        f‘Œ%S ry   rk   ©rz   ru   r  s     €rY   r{   zETikTokenConverter.extract_vocab_merges_from_model.<locals>.<listcomp>Ÿ  ó?   ø€ ÐcÐcÐcÐUXÐ(Ð(¨¨Q¬Ñ0Ô0Ð2GÐ2GÈÈAÌÑ2OÔ2OÐPÐcÐcÐcr[   )Útiktoken.loadr  r˜  Ú
ValueErrorr   r~   rs   r   r€   r�   r‚   )r–   r  r  r„   rm   r¶   Úrankr‡   rˆ   r‰   rŠ   r0  r  r  s              @@@rY   Úextract_vocab_merges_from_modelz1TikTokenConverter.extract_vocab_merges_from_modelƒ  sÈ  øøø€ ð	Ø7Ð7Ð7Ð7Ð7Ð7Ð7øÝð 	ð 	ð 	ÝØkñô ð ð	øøøð
 &Ð% lÑ3Ô3ˆ	Ý'Ñ)Ô)ˆð	Vð 	Vð 	Vð 	Vð 	Vð ˆØˆØ$Ÿ?š?Ñ,Ô,ð 
	!ð 
	!‰KˆE�4Ø26ˆEÐ'Ð'¨Ñ.Ô.Ñ/Ý�5‰zŒz˜QŠˆØØˆEÝ˜q¥# e¡*¤*Ñ-Ô-ð ;ð ;�Ø#(¨¨%¨¤=°%¸¸¸´-˜�Ø˜iÐ'Ð'¨G°yÐ,@Ð,@ÀgÐPWÑFWÐ\eÐEeÐEeØ—L’L '¨7°DÐ!9Ñ:Ô:Ð:øÝ˜5Ð&RÐ&RÐ&RÐ&RÐ\aÐbÑbÔbˆEØ�MŠM˜%Ñ Ô Ð Ð Ý˜Ð$6Ð$6ÀÐFÑFÔFˆØcÐcÐcÐcÐ\bÐcÑcÔcˆØ�fˆ}Ðs   … Œ&c                 óÀ   — |                       | j        ¦  «        \  }}t          t          ||d¬¦  «        ¦  «        }t	          |j        d¦  «        rd|j        _        |S ©NF)r,  Úignore_mergesT©r  r€  r   r   rþ   rŽ   r"  ©r–   rƒ   r„   r  s       rY   r  zTikTokenConverter.tokenizer¢  ó\   € Ø#×CÒCÀDÄOÑTÔTÑˆ�fÝ�c ,°ÀÐGÑGÔGÑHÔHˆ	Ý�9”? OÑ4Ô4ð 	1Ø,0ˆIŒOÔ)ØÐr[   r]   c                 óž  — |                       ¦   «         }t          j        t          j        t	          | j        ¦  «        dd¬¦  «        t          j        | j        d¬¦  «        g¦  «        |_        t          j        ¦   «         |_
        | j        �$|                     d„ | j        D ¦   «         ¦  «         t          j        d¬¦  «        |_        |S )NrP  FrQ  rT  c                 ó2   — g | ]}t          |d d¬¦  «        ‘ŒS )FTr±   r´   r}  s     rY   r{   z/TikTokenConverter.converted.<locals>.<listcomp>µ  s'   € ÐjÐjÐjÀu•˜E¨e¸TÐBÑBÔBÐjÐjÐjr[   r=  )r  r   rW  rX  r   rÄ  r?  r\   r  r	   r  r  r3  r   r
  ©r–   r  s     rY   ræ   zTikTokenConverter.converted©  sÉ   € Ø—N’NÑ$Ô$ˆ	Ý"0Ô"9åÔ$¥U¨4¬<Ñ%8Ô%8À:ÐV[Ð\Ñ\Ô\ÝÔ(¸$Ô:OÐ[`ÐaÑaÔaðñ#
ô #
ˆ	Ôõ %Ô.Ñ0Ô0ˆ	ÔàÔ$Ð0Ø×(Ò(ØjÐjÐPTÔPiÐjÑjÔjñô ð õ $.Ô#7ÀUÐ#KÑ#KÔ#Kˆ	Ô àÐr[   ©Nr  FN)
rÁ   rÈ   rÉ   rÊ   rš   rË   r  r  r   ræ   rk   r[   rY   r  r  o  sˆ   € € € € € ðð ð ð KØØ!ð
ð 
ð 
ð 
ð¸Cð ð ð ð ð>ð ð ð˜9ð ð ð ð ð ð r[   r  c                   ó<   — e Zd Z	 	 	 	 d
d„Zdefd„Zd„ Zdefd	„ZdS )ÚMistralConverterNr  Fc                 ó�   — || _         || _        || _        t          |t          ¦  «        r|                     ¦   «         n|| _        d S rÙ   )r€  rÄ  r\   rt  r}   r1  rº   )r–   r€  rÄ  r\   rº   rÅ   s         rY   rš   zMistralConverter.__init__¾  sR   € ð %ˆŒØˆŒØ 0ˆÔõ Ð3µTÑ:Ô:ð+Ð%×*Ò*Ñ,Ô,Ð,à*ð 	Ô&Ð&Ð&r[   r  c                 óæ  ‡‡‡‡— dd l Šdd l}t          | j        dd¬¦  «        5 }|                     |¦  «        }d d d ¦  «         n# 1 swxY w Y   |d         d         | _        d„ |d         D ¦   «         | _        |d	         }t          ¦   «         Št          ˆfd
„¦   «         Šg }i }t          | j        ¦  «        D ]\  }}	|||	j
        <   Œˆfd„|D ¦   «         }t          |¦  «        }
d„ t          |¦  «        D ¦   «         Št          t          |d¬¦  «        ¦  «        D ]®\  }}	|| ‰|	¦  «        <   t          |	¦  «        dk    rŒ'g }t          dt          |	¦  «        ¦  «        D ]=}|	d |…         |	|d …         }}||
v r#||
v r||z   |
v r|                     |||f¦  «         Œ>t!          |ˆfd„d¬¦  «        }|                     |¦  «         Œ¯t!          |d„ d¬¦  «        }ˆfd„|D ¦   «         }||fS )Nr   Úrzutf-8)ÚencodingÚconfigrÄ  c                 óH   — g | ]}t          |d          |d         ¬¦  «        ‘Œ S )Ú	token_strÚ
is_control)r³   r´   )rz   Úks     rY   r{   zDMistralConverter.extract_vocab_merges_from_model.<locals>.<listcomp>Ö  s:   € ð *
ð *
ð *
ØDE�J�q˜”~¨q°¬Ð?Ñ?Ô?ð*
ð *
ð *
r[   rù   rm   c                 ól   •— d                      ˆfd„|                      d¦  «        D ¦   «         ¦  «        S )NrK   c                 ó:   •— g | ]}‰t          |¦  «                 ‘ŒS rk   r  r  s     €rY   r{   zcMistralConverter.extract_vocab_merges_from_model.<locals>.token_bytes_to_string.<locals>.<listcomp>Þ  r  r[   r  r  r  s    €rY   r  zOMistralConverter.extract_vocab_merges_from_model.<locals>.token_bytes_to_stringÜ  s6   ø€ à—7’7ÐTÐTÐTÐTÀÇÂÈÑ@SÔ@SÐTÑTÔTÑUÔUÐUr[   c                 óF   •— g | ]}‰                      |d          ¦  «        ‘ŒS )Útoken_bytes)Ú	b64decode)rz   r4  Úbase64s     €rY   r{   zDMistralConverter.extract_vocab_merges_from_model.<locals>.<listcomp>ä  s,   ø€ ÐKÐKÐK¸A�V×%Ò% a¨Ô&6Ñ7Ô7ÐKÐKÐKr[   c                 ó   — i | ]\  }}||“Œ	S rk   rk   )rz   r  r¶   s      rY   r§   zDMistralConverter.extract_vocab_merges_from_model.<locals>.<dictcomp>æ  s   € ÐMÐMÐM©¨¨u˜ ÐMÐMÐMr[   z(Converting tekken.json to tokenizer.json)Údescr   c                 ó<   •— ‰| d                  ‰| d                  fS rj   rk   )rl   Útoken_to_ranks    €rY   rn   zBMistralConverter.extract_vocab_merges_from_model.<locals>.<lambda>ð  s!   ø€ °¸qÀ¼tÔ1DÀmÐTUÐVWÔTXÔFYÐ0Z€ r[   Frv   c                 ó   — | d         S r  rk   rt   s    rY   rn   zBMistralConverter.extract_vocab_merges_from_model.<locals>.<lambda>ò  r  r[   c                 óT   •— g | ]$} ‰|d          ¦  «         ‰|d         ¦  «        f‘Œ%S ry   rk   r  s     €rY   r{   zDMistralConverter.extract_vocab_merges_from_model.<locals>.<listcomp>ó  r  r[   )r:  Újsonr’   r€  ÚloadrÄ  rº   r   r   rÃ   r½  r|   r   rs   r   r€   r�   r‚   )r–   r  rA  r™   Úuntypedr0  r„   rm   Úidxr¶   Úrank_setr  r‡   rˆ   r‰   rŠ   r:  r  r  r>  s                   @@@@rY   r  z0MistralConverter.extract_vocab_merges_from_modelÏ  s¼  øøøø€ ØˆˆˆØˆˆˆå�$”/ 3°Ð9Ñ9Ô9ð 	#¸QØ—i’i ‘l”lˆGð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#à˜xÔ(¨Ô3ˆŒð*
ð *
ØIPÐQaÔIbð*
ñ *
ô *
ˆÔ&ð ˜GÔ$ˆ	Ý'Ñ)Ô)ˆå	ð	Vð 	Vð 	Vð 	Vñ 
Œð	Vð ˆØˆÝ# DÔ$BÑCÔCð 	'ð 	'‰JˆC�Ø#&ˆE�%”-Ñ Ð ØKÐKÐKÐKÀÐKÑKÔKˆ	Ý�y‘>”>ˆØMÐM½	À)Ñ8LÔ8LÐMÑMÔMˆÝ$¥T¨)Ð:dÐ%eÑ%eÔ%eÑfÔfð 
	!ð 
	!‰KˆD�%Ø26ˆEÐ'Ð'¨Ñ.Ô.Ñ/Ý�5‰zŒz˜QŠˆØØˆEÝ˜q¥# e¡*¤*Ñ-Ô-ð ;ð ;�Ø#(¨¨%¨¤=°%¸¸¸´-˜�Ø˜hÐ&Ð&¨7°hÐ+>Ð+>ÀGÈgÑDUÐZbÐCbÐCbØ—L’L '¨7°DÐ!9Ñ:Ô:Ð:øÝ˜5Ð&ZÐ&ZÐ&ZÐ&ZÐdiÐjÑjÔjˆEØ�MŠM˜%Ñ Ô Ð Ð Ý˜Ð$6Ð$6ÀÐFÑFÔFˆØcÐcÐcÐcÐ\bÐcÑcÔcˆØ�fˆ}Ðs   ¤AÁA
ÁA
c                 óÀ   — |                       | j        ¦  «        \  }}t          t          ||d¬¦  «        ¦  «        }t	          |j        d¦  «        rd|j        _        |S r!  r#  r$  s       rY   r  zMistralConverter.tokenizerö  r%  r[   r]   c                 ó|  — |                       ¦   «         }t          j        t          j        t	          | j        ¦  «        dd¬¦  «        t          j        | j        d¬¦  «        g¦  «        |_        t          j        ¦   «         |_
        |                     | j        ¦  «         t          j        d¬¦  «        |_        |S )NrP  FrQ  rT  r=  )r  r   rW  rX  r   rÄ  r?  r\   r  r	   r  r™  rº   r   r
  r(  s     rY   ræ   zMistralConverter.convertedý  s¨   € Ø—N’NÑ$Ô$ˆ	Ý"0Ô"9åÔ$¥U¨4¬<Ñ%8Ô%8À:ÐV[Ð\Ñ\Ô\ÝÔ(¸$Ô:OÐ[`ÐaÑaÔaðñ#
ô #
ˆ	Ôõ %Ô.Ñ0Ô0ˆ	Ôà×Ò˜TÔ;Ñ<Ô<Ð<Ý#-Ô#7ÀUÐ#KÑ#KÔ#Kˆ	Ô àÐr[   r)  )	rÁ   rÈ   rÉ   rš   rË   r  r  r   ræ   rk   r[   rY   r+  r+  ½  s   € € € € € ð ð KØØ"&ð
ð 
ð 
ð 
ð"%¸Cð %ð %ð %ð %ðNð ð ð˜9ð ð ð ð ð ð r[   r+  ÚAlbertTokenizerÚBartTokenizerÚBarthezTokenizerÚBertTokenizerÚBigBirdTokenizerÚBlenderbotTokenizerÚCamembertTokenizerÚCLIPTokenizerÚCodeGenTokenizerÚConvBertTokenizerÚDebertaTokenizerÚDebertaV2TokenizerÚDistilBertTokenizerÚDPRReaderTokenizerÚDPRQuestionEncoderTokenizerÚDPRContextEncoderTokenizerÚElectraTokenizerÚFNetTokenizerÚFunnelTokenizerÚGPT2TokenizerÚHerbertTokenizerÚLayoutLMTokenizerÚLayoutLMv2TokenizerÚLayoutLMv3TokenizerÚLayoutXLMTokenizerÚLongformerTokenizerÚLEDTokenizerÚLxmertTokenizerÚMarkupLMTokenizerÚMBartTokenizerÚMBart50TokenizerÚMPNetTokenizerÚMobileBertTokenizerÚMvpTokenizerÚNllbTokenizerÚOpenAIGPTTokenizerÚPegasusTokenizerÚQwen2TokenizerÚReformerTokenizerÚRemBertTokenizerÚRobertaTokenizerÚRoFormerTokenizerÚSeamlessM4TTokenizerÚSqueezeBertTokenizerÚT5TokenizerÚUdopTokenizerÚVideoPrismTokenizerÚWhisperTokenizerÚXLMRobertaTokenizerÚXLNetTokenizerÚSplinterTokenizer)ÚXGLMTokenizerÚLlamaTokenizerÚCodeLlamaTokenizerÚGemmaTokenizerÚPhi3TokenizerFc                 ó^  — | j         j        }|t          v r,|s*t          |         } || ¦  «                             ¦   «         S | j                             d¦  «        rG| | _        t                               d¦  «         t          | j        ¦  «                             ¦   «         S 	 t                               d¦  «         t          | j        | j        ¬¦  «                             ¦   «         S # t          $ r7 t          dt          t                               ¦   «         ¦  «        › �¦  «        ‚w xY w)aˆ  
    Utilities to convert a slow tokenizer instance in a fast tokenizer instance.

    Args:
        transformer_tokenizer ([`~tokenization_utils_base.PreTrainedTokenizer`]):
            Instance of a slow tokenizer to convert in the backend tokenizer for
            [`~tokenization_utils_base.PreTrainedTokenizerFast`].
       from_tiktoken (bool, optional): Whether to use the `tiktoken` library to convert the tokenizer instead of sentencepiece.
            Defaults to False.

    Return:
        A instance of [`~tokenizers.Tokenizer`] to be used as the backend tokenizer of a
        [`~tokenization_utils_base.PreTrainedTokenizerFast`]
    ztekken.jsonz#Converting from Mistral tekken.jsonzConverting from Tiktoken)r€  r  zÌConverting from SentencePiece and Tiktoken failed, if a converter for SentencePiece is available, provide a model path with a SentencePiece tokenizer.model file.Currently available slow->fast converters: )r…  rÁ   ÚSLOW_TO_FAST_CONVERTERSræ   r€  Úendswithrd   ÚloggerÚinfor+  r  r  r˜  r  rÎ   r1  )Útransformer_tokenizerÚfrom_tiktokenÚtokenizer_class_nameÚconverter_classs       rY   Úconvert_slow_tokenizerr‰  I  s;  € ð  1Ô:ÔCÐØÕ6Ð6Ð6¸}Ð6Ý1Ð2FÔGˆØˆÐ4Ñ5Ô5×?Ò?ÑAÔAÐAØ	Ô	)×	2Ò	2°=Ñ	AÔ	Að Ø3HÐÔ0Ý�ŠÐ9Ñ:Ô:Ð:ÝÐ 5Ô @ÑAÔA×KÒKÑMÔMÐMð	Ý�KŠKÐ2Ñ3Ô3Ð3Ý$Ø0Ô;Ø%:Ô%Oðñ ô ÷ Ši‰kŒkðøõ ð 	ð 	ð 	Ýðeå>BÕCZ×C_ÒC_ÑCaÔCaÑ>bÔ>bðeð eñô ð ð	øøøs   Â$AC+ Ã+AD,)rK   rÙ   )F)XrÊ   r‚  Úcollections.abcr   Ú	functoolsr   Ú	packagingr   Ú
tokenizersr   r   r   r	   r
   r   r   r¾   r   r   r   r   Úutilsr   r   r   r   Úutils.import_utilsr   Ú
get_loggerrÁ   rƒ  r  r)  rZ   ÚboolrË   rf   r‹   r�   rÐ   rß   rá   rè   r  r!  r$  r'  r7  rF  rM  rZ  rb  ri  rp  r¯  rÉ  rÔ  rí  rõ  r"  r+  r8  rA  rH  rN  rR  rV  rX  ro  r�  r…  rˆ  r“  r–  r›  rž  r¡  r§  r·  rË  rÎ  rØ  rê  r   r  r+  r�  r‰  rk   r[   rY   ú<module>r’     s­  ððð ð €€€Ø &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø Ð Ð Ð Ð Ð à `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ð 
ˆÔ	˜HÑ	%Ô	%€ðð ð €ð8 $ð 'ð 'ð 'ñ Ð ð>Gð Gð Gð Gð"¨$ð Àsð ð ð ð ðð °jÀ´oÈÑ6Lð ð ð ð ð02ð 2ð 2ð 2ð 2ñ 2ô 2ð 2ðjð ð ð ð Ð"8ñ ô ð ð"I˜cð I dð Ið Ið Ið Ið$ð $ð $ð $ð $ñ $ô $ð $ð$ð $ð $ð $ð $�Iñ $ô $ð $ðN/ð /ð /ð /ð /˜	ñ /ô /ð /ðd$ð $ð $ð $ð $�iñ $ô $ð $ðN$ð $ð $ð $ð $�Yñ $ô $ð $ðNð ð ð ð ˜ñ ô ð ð6#ð #ð #ð #ð #�Iñ #ô #ð #ðLð ð ð ð �yñ ô ð ð>)ð )ð )ð )ð )�Yñ )ô )ð )ðXð ð ð ð �yñ ô ð ð:$ð $ð $ð $ð $˜	ñ $ô $ð $ðNð ð ð ð �yñ ô ð ð>xð xð xð xð x�9ñ xô xð xðv"
ð "
ð "
ð "
ð "
�lñ "
ô "
ð "
ðJ
ð 
ð 
ð 
ð 
�|ñ 
ô 
ð 
ð -ð -ð -ð -ð -˜ñ -ô -ð -ð`
ð 
ð 
ð 
ð 
˜ñ 
ô 
ð 
ðBGð Gð Gð Gð G�\ñ Gô Gð GðT-ð -ð -ð -ð -�|ñ -ô -ð -ð`,ð ,ð ,ð ,ð ,�Lñ ,ô ,ð ,ð^
ð 
ð 
ð 
ð 
˜<ñ 
ô 
ð 
ð2,ð ,ð ,ð ,ð ,˜,ñ ,ô ,ð ,ð^"
ð "
ð "
ð "
ð "
�\ñ "
ô "
ð "
ðJ	ð 	ð 	ð 	ð 	˜ñ 	ô 	ð 	ð
ð 
ð 
ð 
ð 
�|ñ 
ô 
ð 
ð@	ð 	ð 	ð 	ð 	˜lñ 	ô 	ð 	ð;xð ;xð ;xð ;xð ;x�|ñ ;xô ;xð ;xð|ð ð ð ð �,ñ ô ð ð8
ð 
ð 
ð 
ð 
�Lñ 
ô 
ð 
ðð ð ð ð ˜+ñ ô ð ð
!ð !ð !ð !ð !�yñ !ô !ð !ðH	
ð 	
ð 	
ð 	
ð 	
�|ñ 	
ô 	
ð 	
ð(ð (ð (ð (ð (�Iñ (ô (ð (ðV$ð $ð $ð $ð $˜)ñ $ô $ð $ðNð ð ð ð ˜)ñ ô ð ð:
ð 
ð 
ð 
ð 
�Lñ 
ô 
ð 
ð61
ð 1
ð 1
ð 1
ð 1
�\ñ 1
ô 1
ð 1
ðh+ð +ð +ð +ð +�\ñ +ô +ð +ð\#ð #ð #ð #ð #˜	ñ #ô #ð #ðL&mð &mð &mð &mð &m�\ñ &mô &mð &mðRV
ð V
ð V
ð V
ð V
�lñ V
ô V
ð V
ðr-ð -ð -ð -ð -˜ñ -ô -ð -ð`ð ð ð0Kð Kð Kð Kð Kñ Kô Kð Kð\Mð Mð Mð Mð Mñ Mô Mð Mð`9Ø�ð9àÐ%ð9ð Ð(ð9ð �]ð	9ð
 Ð(ð9ð Ð.ð9ð Ð,ð9ð �]ð9ð ˜ð9ð ˜ð9ð Ð(ð9ð Ð,ð9ð ˜=ð9ð ˜-ð9ð " =ð9ð  ! -ð!9ð" ˜ð#9ð 9ð$ �_ð%9ð& �ð'9ð( �]ð)9ð* Ð(ð+9ð, ˜ð-9ð. ˜=ð/9ð0 Ð+ð19ð2 Ð-ð39ð4 Ð+ð59ð6 Ð$ð79ð8 �}ð99ð: Ð*ð;9ð< �nð=9ð> Ð(ð?9ð@ �nðA9ðB ˜=ðC9ðD Ð$ðE9ð 9ð 9ðF �]ðG9ðH Ð,ðI9ðJ Ð(ðK9ðL �nðM9ðN Ð*ðO9ðP Ð(ðQ9ðR Ð(ðS9ðT Ð*ðU9ðV Ð0ðW9ðX ˜MðY9ðZ �;ð[9ð\ �]ð]9ð^ Ð.ð_9ð` Ð(ða9ðb Ð.ðc9ðd �nðe9ðf Ð*ðg9ð 9ðh #Ø$Ø(Ø$Ø#ðq9ð 9ð 9Ð ðx$ð $È)ð $ð $ð $ð $ð $ð $r[   