
    _OgZ                     d    S SK r S SKrS SKrS SKrS SKJrJrJrJr  S SK	r	S SK
Jr   " S S5      rg)    N)AnyCallableDictList)rshiftc            	       "   \ rS rSrSr\R                  " S\R                  5      r\R                  " S\R                  5      r	  SS\
R                  S\S\SS4S	 jjrSS
 jrS\S\/ \4   4S jrS\S\S\4S jrS\S\4S jrS\S\4S jrSrg)TokenAcquirer   aC  Google Translate API token generator

translate.google.com uses a token to authorize the requests. If you are
not Google, you do have this token and will have to pay for use.
This class is the result of reverse engineering on the obfuscated and
minified code used by Google to generate such token.

The token is based on a seed which is updated once per hour and on the
text that will be translated.
Both are combined - by some strange math - in order to generate a final
token (e.g. 744915.856682) which is used by the API to validate the
request.

This operation will cause an additional request to get an initial
token from translate.google.com.

Example usage:
    >>> from googletrans.gtoken import TokenAcquirer
    >>> acquirer = TokenAcquirer()
    >>> text = 'test'
    >>> tk = acquirer.do(text)
    >>> tk
    950629.577246
ztkk:\'(.+?)\'clienttkkhostreturnNc                 J    Xl         X l        SU;   a  X0l        g SU-   U l        g )Nhttpzhttps://)r   r   r   )selfr   r   r   s       W/Users/admin/workspace/ai/Jarvis/env/lib/python3.13/site-packages/googletrans/gtoken.py__init__TokenAcquirer.__init__*   s$     "dND	
T0A	    c                 f	  #    [         R                  " [        [        R                  " 5       S-  5      S-  5      nU R                  (       a,  [        U R                  R                  S5      S   5      U:X  a  gU R                  R                  U R                  5      I Sh  vN nU R                  R                  UR                  5      nU(       a  UR                  S5      U l        gU R                  R                  UR                  5      nUb@  UR                  S5      R                  SS5      nUR                  5       R                  S	5      nU(       GaU  [         R"                  " U5      nS
nSnSn[%        SSS9n	[         R&                  " U5       GH  n
[)        U
[         R*                  5      (       Gac  Sn[)        U
R,                  S   [         R.                  5      (       a  U
R,                  S   R0                  nX;   Ga  [)        U
R2                  [         R4                  5      (       a#  [        U
R2                  R2                  5      X'   M  [)        U
R2                  [         R6                  5      (       a  [)        U
R2                  R8                  [         R:                  5      (       ae  [)        U
R2                  R<                  [         R4                  5      (       a/  [        U
R2                  R<                  R2                  5      * X'   GM{  GM~  GM  GM  GM  [)        U
[         R>                  5      (       a  SnGM  U(       a7  [)        U
[         R4                  5      (       a  [        U
R2                  5      nGM  U(       d  GM  [)        U[        5      (       d  GM  US:  d  GM  [)        U
[         R@                  5      (       a  GM6  [)        U
[         RB                  5      (       a  SnGMZ  [)        U
[         RD                  5      (       a  SnGM~  [)        U
[         RF                  5      (       a  SnGM  [)        U
[         RH                  5      (       d  GM  SnGM     [K        SRM                  XyS   U	S   5      SS5      n[O        U[%        0 S95      nSRM                  X5      nXl        gg GN7f)z
update tkki  g    @wKA.r   N   zvar  zunicode-escapeF+)abT-*z**^z	{1}{0}{2}r   r   eval)__builtin__{}.{})(mathfloorinttimer   splitr   getr   RE_TKKsearchtextgroupreplaceencodedecodeastparsedictwalk
isinstanceAssigntargetsNameidvalueConstantUnaryOpopUSuboperandReturnAddSubMultPowBitXorcompileformatr    )r   nowrraw_tkkcodetreevisit_returnoperatornkeysnodenameclauser9   results                  r   _updateTokenAcquirer._update4   s1     jjTYY[4/09<=88DHHNN3/23s:++//$)),,++$$QVV,}}Q'DH{{!!!&&)::a=((4D;;=''(89D99T?D LHA#'!q>DdCJJ//D!$,,q/388<<#||A11|%djj#,,??),TZZ-=-=)>DJ'

CKK@@Z JJMM388F F  *$***<*<cllKK.1$**2D2D2J2J.K-K
  LF@	 $  cjj11#'L!js||&D&DDJJA!\jC&8&8QU "$00#D#''22#&#D#((33#&#D#''22#'#D#**55#&? 'B ""8#YS	BBF "!56E^^A-FH[  -s-   BR1 R.!K!R1R1R1(B+R1AR1r9   c                    ^ U4S j$ )a`  like lazy evaluation, this method returns a lambda function that
returns value given.
We won't be needing this because this seems to have been built for
code obfuscation.

the original code of this method is as follows:

   ... code-block: javascript

       var ek = function(a) {
        return function() {
            return a;
        };
       }
c                     > T $ N )r9   s   r   <lambda>%TokenAcquirer._lazy.<locals>.<lambda>   s    ur   rY   )r   r9   s    `r   _lazyTokenAcquirer._lazyy   s      r   r   r   c                     [        U5      nSnXCS-
  :  ae  X$S-      nSU::  a  [        US   5      S-
  O
[        U5      nSX$S-      :X  a  [        X5      OX-  nSX$   :X  a  X-   S-  OX-  nUS-  nXCS-
  :  a  Me  U$ )	Nr      r   W   r   r   l       )lenordr%   r   )r   r   r   size_bcds         r   _xrTokenAcquirer._xr   s    Q1*na%A"%(AaD	BAA #qQxqQVA&)QTk
"quAFA 1*n r   r+   c                 v   / nU H\  n[        U5      nUS:  a  X$/-  nM  U[        R                  " US-
  S-  S-   5      [        R                  " US-
  S-  S-   5      /-  nM^     U R                  S:w  a  U R                  OSnUR	                  S5      n[        U5      S:  a  [        US	   5      OS	n/ nS	n	[        U5      n
X:  a  X)   nUS
:  a  UR                  U5        OUS:  a  UR                  US-	  S-  5        OUS-  S:X  aa  U	S-   U
:  aX  X)S-      S-  S:X  aJ  U	S-  n	SUS-  S-  -   X)   S-  -   nUR                  US-	  S-  5        UR                  US-	  S-  S
-  5        OUR                  US-	  S-  5        UR                  US-	  S-  S
-  5        UR                  US-  S
-  5        U	S-  n	X:  a  M  UnU H  nX-  nU R                  US5      nM     U R                  US5      nU[        U5      S:  a  [        US   5      OS	-  nUS	:  a  US-  S-   nUS-  nSR                  XU-  5      $ )Ni   i   i   i   0r   r   r   r      i         i   i  
            ?      z+-a^+6z	+-3^+b+-fil        i@B r"   )
rc   r#   r$   r   r'   rb   r%   appendrg   rF   )r   r+   r   ivalr   rf   b_valegsizela_valr9   s                 r   acquireTokenAcquirer.acquire   s]   Aa&CW}U
 JJg6?@JJg6?@   CDHHRGGCL VaZAaD	Q 1vhA3w t8HHQ!Vc\* Uu,EDL!eHu,5Q!a$h2%56!$+F  b3/b2!34b3/HHQ!Vb[3./R#&FA5 h6 ENEHHUH-E  ,c!fqjQqTa/19Z':5E~~eU]33r   c                 d   #    U R                  5       I S h  vN   U R                  U5      nU$  N7frX   )rT   r}   )r   r+   tks      r   doTokenAcquirer.do   s,     lln\\$	 	s   0.0)r   r   r   )rj   ztranslate.google.com)r   N)__name__
__module____qualname____firstlineno____doc__rerE   DOTALLr)   	RE_RAWTKKhttpxAsyncClientstrr   rT   r   r   r\   r%   rg   r}   r   __static_attributes__rY   r   r   r	   r	      s    2 ZZ("))4F

+RYY7I
 *	B!!B B 	B
 
BCJ3 8BG#4 $
S 
S 
S 
;4C ;4C ;4zS S r   r	   )r0   r#   r   r&   typingr   r   r   r   r   googletrans.utilsr   r	   rY   r   r   <module>r      s)    
  	  , ,  $J Jr   