
    V|hX              	          S SK r S SKrS SKr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JrJrJrJr  S rS rS rS rS rS	 rS
 rS6S jrS7S\S\4S jjr0 SS_SS_SS_SS_S\" \R6                  5      _S\" \R8                  5      _S\" \R:                  5      _S\R<                  _S\R>                  _S\" \R@                  5      _S\" \RB                  5      _S\" \RD                  5      _S\" \RF                  5      _S\" \RH                  5      _S\" \RJ                  5      _S\" \RL                  5      _S\" \RN                  5      _\" \RP                  5      \" \RR                  5      \" \RT                  5      \\\S .Er+1 S!kr,S"r-\." \/" \/" S#S$S%5      6 5      r0S&r1S'r2 " S( S)5      r3 " S* S+\	5      r4 " S, S-\	5      r5 " S. S/\	5      r6 " S0 S1\ Rn                  5      r8 " S2 S35      r9 " S4 S55      r:g)8    N   )
NO_DEFAULTExtractorErrorfunction_with_repr
js_to_jsonremove_quotestruncate_stringunified_timestampwrite_stringc                    ^ ^ S mU U4S jnU$ )Nc                     U S [         4;   a  g[        R                  " [        5         [        R
                  " U 5      (       a
   S S S 5        g S S S 5        [        [        U 5      5      $ ! , (       d  f       N"= fNr   )JS_Undefined
contextlibsuppress	TypeErrormathisnanintfloat)xs    I/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/jsinterp.pyzeroise_js_bit_op.<locals>.zeroise   sY    |$$  +zz!}} ,+ , 58} ,+s   A++
A9c                 4   > T" T" U 5      T" U5      5      S-  $ )Nl     )abopr   s     r   wrapped_js_bit_op.<locals>.wrapped   s    '!*gaj)J66    r   )r   r    r   s   ` @r   
_js_bit_opr#      s    7 Nr"   c                    ^  U 4S jnU$ )Nc                 f   > [         X4;   a  [        S5      $ T" U =(       d    SU=(       d    S5      $ Nnanr   r   r   r   r   r   s     r   r    _js_arith_op.<locals>.wrapped&   s,    A6!<!&q!&q!!r"   r   r   r    s   ` r   _js_arith_opr,   $   s    "
 Nr"   c                     [         X4;   d  U (       d  U(       d  [        S5      $ U(       a  U =(       d    SU-  $ [        S5      $ )Nr'   r   infr(   r   r   s     r   _js_divr0   .   s3    va1U|AFa<.%,.r"   c                 X    [         X4;   d  U(       d  [        S5      $ U =(       d    SU-  $ r&   r(   r/   s     r   _js_modr2   4   s&    vQU|Fa<r"   c                 Z    U(       d  g[         X4;   a  [        S5      $ U =(       d    SU-  $ )Nr   r'   r   r(   r/   s     r   _js_expr4   :   s*    	!	U|Fq=r"   c                    ^  U 4S jnU$ )Nc                 >   > X1S [         1::  a  T" X 5      $ T" X5      $ N)r   r)   s     r   r    _js_eq_op.<locals>.wrappedD   s$    6dL))a8O!xr"   r   r+   s   ` r   	_js_eq_opr9   B   s    
 Nr"   c                    ^  U 4S jnU$ )Nc                    > [         X4;   a  g[        U [        5      (       d  [        U[        5      (       a-  T" [        U =(       d    S5      [        U=(       d    S5      5      $ T" U =(       d    SU=(       d    S5      $ )NFr   )r   
isinstancestrr)   s     r   r    _js_comp_op.<locals>.wrappedN   s[    A6!aAs!3!3c!&qk3qvA;//!&q!&q!!r"   r   r+   s   ` r   _js_comp_opr?   L   s    " Nr"   c                     U SSSS[         4;   a  U$ [        R                  " [        5         [        R
                  " U 5      (       a  UsSSS5        $  SSS5        U$ ! , (       d  f       U$ = f)z6Simulate JS's ternary operator (cndn?if_true:if_false)FNr    )r   r   r   r   r   r   )cndnif_trueif_falses      r   _js_ternaryrE   X   sa    tQL11			Y	'::d 
(	' 
( N 
(	' Ns   A
A-valradixc                   ^
 U[         S 4;   a  SnU[        SS5      ;   d   S5       e[        R                  " U 5      (       a  gU S:X  a  g[        R                  " U 5      (       a
  U S:  a  S$ S	$ US:X  a   S
m
[
        R                  " 5       nU S:  n[        U 5      n [        R                  " U 5      u  pE[        [        R                  " S[        R                  5      [        R                  " U 5      S-  5      nXF:  a  UR                  S5        XF:  a  Xa-  n[        R                  " XA-  5      u  pGUR                  [        U5      5        US:  =(       d    US:H  =(       a    [        U5      S-  nU(       a\  XF-   S:  aT  [        [        S[!        U5      5      5       H,  n	X)   S-   U:  a  X)==   S-  ss'     OUR#                  5         M.     US-  nOXF:  a  M  [%        [        U5      U5      u  pWUR'                  U5        US:  a&  [%        XQ5      u  pWUR'                  U5        US:  a  M&  U(       a  UR'                  S5        [)        U
4S jU 5       5      R+                  S5      $ )N
      %   z:radix must be an integer at least 2 and no greater than 36NaNr   0z	-InfinityInfinitys&   0123456789abcdefghijklmnopqrstuvwxyz.-g        g      ?r   c              3   .   >#    U  H
  nTU   v   M     g 7fr7   r   ).0digitALPHABETs     r   	<genexpr>&js_number_to_string.<locals>.<genexpr>   s     5fU%fs   ascii)r   ranger   r   isinfcollectionsdequeabsmodfmax	nextafterr.   ulpappendr   reversedlenpopdivmod
appendleftbytesdecode)rF   rG   resultsignfractionintegerdeltarS   needs_roundingindexrT   s             @r   js_number_to_stringrp   c   s   t$$E!RL ^"^^ zz#
axzz#!Ag{5:5{8H F7D
c(C		#Hr488,dhhsma.?@Eb

))H$45c%j!!COHO,NE
Qh.2!%3v;"78=1$u,MQ&M

	 9 1 
" CL%0NG
e
A+/%  A+ "5f55<<WEEr"   ???||&&|^&===!====!=<=>=<>z>>z<<)+-*%/z**>   r~   r   r{   r|   rz   r}   ry   rx   z[a-zA-Z_$][\w$]*z()z{}[]z'"/z&[^[\]]+(?:\[[^[\]]+(?:\[[^\]]+\])?\])?c                       \ rS rSrSrg)r      r   N)__name__
__module____qualname____firstlineno____static_attributes__r   r"   r   r   r      s    r"   r   c                       \ rS rSrS rSrg)JS_Break   c                 2    [         R                  " U S5        g )NzInvalid breakr   __init__selfs    r   r   JS_Break.__init__   s    o6r"   r   Nr   r   r   r   r   r   r   r"   r   r   r      s    7r"   r   c                       \ rS rSrS rSrg)JS_Continue   c                 2    [         R                  " U S5        g )NzInvalid continuer   r   s    r   r   JS_Continue.__init__   s    &89r"   r   Nr   r   r"   r   r   r      s    :r"   r   c                       \ rS rSrS rSrg)JS_Throw   c                 D    Xl         [        R                  " U SU 35        g )NzUncaught exception )errorr   r   )r   es     r   r   JS_Throw.__init__   s    
(;A3&?@r"   )r   Nr   r   r"   r   r   r      s    Ar"   r   c                   ,    \ rS rSrS rS rS rS rSrg)LocalNameSpace   c                 b    U R                    H  nX;   d  M
  X#U'     g    X R                   S   U'   g r   maps)r   keyvaluescopes       r   __setitem__LocalNameSpace.__setitem__   s1    YYE|"c
  "		!Sr"   c                     [        S5      e)NzDeleting is not supported)NotImplementedErrorr   r   s     r   __delitem__LocalNameSpace.__delitem__   s    !"=>>r"   c                 &    X R                   S   U'   g r   r   )r   r   r   s      r   	set_localLocalNameSpace.set_local   s    !		!Sr"   c                 V    XR                   S   ;   a  U R                   S   U   $ [        $ r   )r   r   r   s     r   	get_localLocalNameSpace.get_local   s)    ))A,99Q<$$r"   r   N)	r   r   r   r   r   r   r   r   r   r   r"   r   r   r      s    "?"r"   r   c                   H    \ rS rSrSSKrSr\SS.S j5       r\	S 5       r
S	rg)
Debugger   r   NFd   levelc                 ^    [        SSSU -
  -   SR                  S U 5       5       S35        g )Nz[debug] JS: z  r    c              3   N   #    U  H  n[        [        U5      S S 5      v   M     g7f)2   N)r	   r=   )rR   r   s     r   rU   !Debugger.write.<locals>.<genexpr>   s       O$QQR!@!@$s   #%
)r   join)r   argss     r   writeDebugger.write   s9    |DC%K$8#9 O$ OOPPRT 	Ur"   c                    ^ ^ U U4S jnU$ )Nc           	        > T	R                   (       a$  UR                  5       (       a  T	R                  XS9   T
" XX#/UQ70 UD6u  pgT	R                   (       aK  UR                  5       (       a6  U(       d  [        U5      U:w  a   T	R                  SS/U   [        U5      SXS9  Xg4$ ! [         aJ  nT	R                   (       a3  [	        U[
        5      (       a  UR                  nT	R                  SUSXS9  e S nAff = f)Nr   z
=> Raises:z<-|z->z=>)ENABLEDstripr   	Exceptionr<   r   orig_msgrepr)r   stmt
local_varsallow_recursionr   kwargsret
should_retr   clsfs            r   interpret_statement6Debugger.wrap_interpreter.<locals>.interpret_statement   s    {{tzz||		$	6"#D
"]d"]V\"] {{tzz||cd!2IItTl:6S	5$If?"  ;;!!^44JJIIlAudIRs   B& &
C:0AC55C:r   )r   r   r   s   `` r   wrap_interpreterDebugger.wrap_interpreter   s    	# #"r"   r   )r   r   r   r   sysmodulesr   staticmethodr   classmethodr   r   r   r"   r   r   r      s5    G U U # #r"   r   c                   B   \ rS rSrSrSS\R                  \R                  \R                  \R                  SS.r
SS jr " S	 S
\5      rS r\S 5       r\SS j5       r\SS j5       rS rSS jrS r\R0                  SS j5       rS rS rS rS rS rS rS r Sr!g)JSInterpreteri  r   i   i   i   )dgimsuyNc                 X    U0 sU l         U l        Uc  0 OUU l        [        5       U l        g r7   )code
_functions_objectsset_undefined_varnames)r   r   objectss      r   r   JSInterpreter.__init__  s)    %)2"	4?%o7#&5 r"   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )JSInterpreter.Exceptioni  c                 t   > Ub   UR                  5        S[        USS5       3n[        TU ]  " U/UQ70 UD6  g )Nz in: r   )rstripr	   superr   )r   msgexprr   r   	__class__s        r   r    JSInterpreter.Exception.__init__  s@    eOD"b,I+JKGS24262r"   r   r7   )r   r   r   r   r   r   __classcell__)r   s   @r   r   r     s    	3 	3r"   r   c                     U =R                   S-  sl         SU R                    3n[        U5      (       a/  [        U[        5      (       d  [        USU R                    S35      nX!U'   U$ )Nr   __yt_dlp_jsinterp_objF<r   )$_JSInterpreter__named_object_countercallabler<   r   )r   	namespaceobjnames       r   _named_objectJSInterpreter._named_object"  sd    ##q(#&t'B'B&CDC==C1C!D!D$SBt/J/J.K1*MNC$r"   c                     SnU(       d  X!4$ [        U5       H'  u  p4X@R                  ;  a    OX R                  U   -  nM)     X!WS-   S  4$ )Nr   r   )	enumerate	_RE_FLAGS)r   r   flagsidxchs        r   _regex_flagsJSInterpreter._regex_flags*  sU    ; GC&]]2&&E ' 378n$$r"   c              #     #    SnU (       d  g [         R                  [        R                  5       S5      nSSS[	        U5      S-
  4u  pVpxSu  pp[        U 5       GHx  u  pU	(       d  U[        ;   a  U[        U   ==   S-  ss'   OrU	(       d  X;   a  XN   (       a  XN==   S-  ss'   OPU
(       dI  U[        ;   a.  XS 4;   a'  U	(       d  U(       d  US:w  a  U	(       a	  U(       d  S OUn	OU	S:X  a  US;   a  US:H  nU
(       + =(       a    U	=(       a    US:H  n
U	(       + =(       a    U(       + =(       a    US	;  =(       a    US
;   nU	(       d  X;   a  UOUR                  5       =(       a    UnXU   :w  d,  [        UR                  5       5      (       d  U	(       d  U(       a  SnGMG  Xx:w  a  US-  nGMT  XX-
   v   US-   SpuUS-  nU(       d  GMq  Xb:  d  GMy    O   XS  v   g 7f)Nz+-*/%&|^=<>!,;{}:[r   r   )NFTFr   r   [\TFz-+)	dictfromkeys_MATCHING_PARENSvaluesrc   r  _QUOTESisspaceany)r   delim	max_splitOP_CHARScountersstartsplitspos	delim_lenin_quoteescapingafter_opin_regex_char_groupr	  charin_unary_ops                   r   	_separateJSInterpreter._separate5  s    '==!1!8!8!:A>()1aUa(?%s<T9H"4IC(8 8)$/0A50$"2>Na'N7?x$<'?8ts{+3<O4UY_*.#+'#|AATT\H'< N0C,C N'}<NAE $,1AtId\dHSz!S):%;%;x;!qco..q!3aKFyV09 ): 6ls   GGGGc                    Uc  U=(       a    [         US      n[        U R                  XS5      5      n[        U5      S:  a  U R	                  SU 3U5      eUS   SS  R                  5       US   R                  5       4$ )Nr   r   rJ   zNo terminating paren )r  listr&  rc   r   r   )r   r   r  	separateds       r   _separate_at_paren JSInterpreter._separate_at_paren\  s    =6-d1g6EtA67	y>A--"7w ?FF|AB%%'1););)===r"   c           	         US;   a  US:H  [        U5      -  (       a  U$ O8US:X  a  US [        4;  a  U$ O#US:X  a  [        U/U R                  USS5      Q76 nU R                  X5U5      n[        R                  U5      (       d  U$  [        U   " X'5      $ ! [         a   nU R                  SU< SU SU< 3XHS	9eS nAff = f)
N)rs   rt   rt   rr   rq   :r   zFailed to evaluate r   cause)rE   r   r&  interpret_expression
_OPERATORSgetr   )	r   r   left_val
right_exprr   r   r   	right_valr   s	            r   	_operatorJSInterpreter._operatore  s    d
k(33 44Zl33 43Y$XSz3PQ0RSJ--joV	~~b!!	gb>(66 	g..#6xl!B4q!VX\.ff	gs   B 
C  B;;C c                     US:X  a  [        U5      $  [        U[        5      (       a  U[        U5         $ X   $ ! [         a4  nU(       a  [
        s S nA$ U R	                  SU 3[        U5      US9eS nAff = f)NlengthzCannot get index r/  )rc   r<   r)  r   r   r   r   )r   r  r	  allow_undefinedr   s        r   _indexJSInterpreter._indexx  su    (?s8O	P$.sD$9$93s3x=GsxG 	P##..#4SE!:DIQ.OO	Ps%   ": : 
A8A3A8A33A8c                 r     [         R                  " U5      $ ! [         a    U R                  X!5      s $ f = fr7   )jsondumpsr   r  )r   r  r   s      r   _dumpJSInterpreter._dump  s5    	6::c?" 	6%%i55	6s    66c                 H%  ^ ^^^8^9^:^;^<^=^> TS:  a  T R                  S5      eTS-  mSn[        T R                  US5      5      =(       d    S/nUR                  5       R	                  5       =m;nU H$  nT R                  UTT5      u  pU(       d  M!  X4s  $    [        R                  " SU5      n	U	(       a  U[        U	R                  S5      5      S  R	                  5       m;U	R                  S5      (       a  [        T R                  T;TT5      5      eU	R                  S	5      (       + nU=(       d    [        U	R                  S	5      5      nT;(       d  S U4$ T;S   [        ;   a  T R                  T;T;S   S5      u  pT;S   S
:X  a  T R                  U5      u  pU
 S
U 3n
O%[        R                   " [#        U
 T;S    3SS95      n
U(       d  X4$ T R%                  TU
5      U-   m;T;R'                  S5      (       a  T;SS  nUR'                  S5      (       an  T R)                  USS  5      u  p[+        T R                  UTT5      S5      nUc  T R                  SU< 3T;5      eT R-                  [/        US-  5      T5      U-   m;OT R                  SU 3T;5      eT;R'                  S5      (       a  T R                  T;SS  TT5      nS U4$ T;R'                  S5      (       a  T R)                  T;5      u  pT R                  U
5       Vs/ s H-  n[        T R                  UR	                  5       SS5      5      PM/     nn[1        S U 5       5      (       a  UUU 4S jm:[3        U:4S jU 5       5      U4$ T R                  U
TT5      u  n
nU(       a  U(       a  U
U=(       d    U4$ T R-                  U
T5      U-   m;T;R'                  S5      (       aY  T R)                  T;5      u  pT R                  U
TT5      u  n
nU(       a  U(       a  U
U=(       d    U4$ T R-                  U
T5      U-   m;T;R'                  S5      (       a[  T R)                  T;5      u  pT R%                  TT R                  U
5       Vs/ s H  nT R                  UTT5      PM     sn5      nUU-   m;[        R                  " ST;5      n	U	(       a  U	R5                  5       O0 nUR7                  S5      (       a  T R)                  T;U	R9                  5       S-
  S  5      u  nm;T R)                  T;R;                  5       5      u  nm;S n[        R                  " ST;5      n	U	(       a(  T R)                  T;U	R9                  5       S-
  S  5      u  nm;[=        T R                  UTT5      5      nT R                  U(       a  UOUTT5      u  nnU(       a  US4$ UR7                  S5      (       Ga  T R)                  T;U	R9                  5       S-
  S  5      u  nm;S n T R                  UTT5      u  nnU(       a  US4$  S n[        R                  " S![>         S"3T;5      n	U	(       a  T R)                  T;U	R9                  5       S-
  S  5      u  nm;U(       as  0 nU	R                  S#5      (       a5  [A        U[        5      (       a  URB                  OUUU	R                  S#5      '   TRE                  U5      nS T R                  UUT5      nn[        R                  " S$T;5      n	U	(       aI  T R)                  T;U	R9                  5       S-
  S  5      u  nm;T R                  UTT5      u  nnU(       a  US4$ Uu  nnU(       a  US4$ U(       a  UeGOUR7                  S%5      (       GaD  T R)                  T;U	R9                  5       S-
  S  5      u  nn U R'                  S5      (       a  T R)                  U 5      u  n!m;Ol[        R                  " S&U 5      n"U"(       aI  T R)                  U U"R9                  5       S-
  S  5      u  n#n T R)                  U S'5      u  n!m;S(U#< S)U!< S'3n!OU Ssn!m;T R                  US5      u  n$nn%T R                  U$TT5         [=        T R                  UTT5      5      (       d  GOi T R                  U!TT5      u  nnU(       a  US4$  T R                  U%TT5        M[  UR7                  S*5      (       Ga  T R)                  T;U	R9                  5       S-
  S  5      u  n#n T R                  U#TT5      n#T R)                  U S'5      u  n!m;U!RK                  S+S,5      RM                  S-5      SS  n&S. H  n'Sn(U& H  nS/ T R                  USS5       5       u  n)nU'(       a  U(=(       d    U)S0:H  n(O)U((       d"  U)S0:g  =(       a    U#T R                  U)TT5      :H  n(U((       d  Mh   T R                  UTT5      u  nnU(       a  Us  s  $ M     U((       d  M    O   U(       a#  T R                  T;TT5      u  nnUU=(       d    U4$ [        T R                  T;5      5      n[        U5      S:  a/  U H%  nT R                  UTTUS19u  nnU(       d  M!  US4s  $    WS4$ [        R                  " S2[>         S3[N         S4S5RQ                  [S        [        RT                  [W        [X        5      [Z        -
  5      5       S63T;5      n	U	(       Ga  TR7                  U	R                  S75      5      n*U	R                  S85      (       d  T R]                  U	R                  S95      U*U	R                  S:5      T;TT5      n+U(       a"  TR_                  U	R                  S75      U+5        OU+TU	R                  S75      '   TU	R                  S75         U4$ U*S [`        4;   a$  T R                  S;U	R                  S75       3T;5      eT R                  U	R                  S85      TT5      n,[A        U,[.        [b        45      (       d  T R                  S<U, S=3T;5      e[/        U,5      n,T R]                  U	R                  S95      T Re                  U*U,5      U	R                  S:5      T;TT5      U*U,'   U*U,   U4$ [        Rf                  " S>[>         S?[>         S@3T;5       H  n	U	R                  SA5      =(       d    U	R                  SB5      n-U	Ri                  5       u  n$n.U	R                  SC5      =(       d    U	R                  SD5      n/TU-   nTU-==   U/S   SE:X  a  SOSF-  ss'   U	R                  SC5      (       a  TU-   nT;S U$ T R-                  UT5      -   T;U.S  -   m;M     T;(       d  S U4$ [        R                  " SG[>         SH[>         SI[N         SJ[>         SK[>         SL3T;5      n	T;Rk                  5       (       a  [/        T;5      U4$ T;SM:X  a  [F        eT;SN:X  a  [H        eT;SO:X  a  [`        U4$ T;SP:X  a  [c        SP5      U4$ U	(       a  U	R                  SQ5      (       a  U	R                  SR5      n-U(       a&  TRm                  U-5      nTR_                  U-U5        X4$ TR7                  U-[n        5      nU[n        L a!  [`        nT Rp                  Rs                  U-5        X4$ [t        Rv                  " [x        5         [        R                   " [#        T;SS95      U4sS S S 5        $ s  snf s  snf ! [          a  nUn S nAGNS nAff = f! [F         a     GM$  [H         a     GNvf = f! [F         a       GMP  f = f! , (       d  f       O= fU	(       a`  U	R                  SS5      (       aJ  TU	R                  ST5         n0T R                  U	R                  SU5      TT5      n,T Re                  U0U,5      U4$ [X         H  n1[        T R                  T;U15      5      n2U2R                  5       n3 U1SV;   a8  [        U25      S:  a)  U2SF   R	                  5       (       d  U2R                  5         O$U2(       a  U1SW:X  a  U3R'                  SX5      (       d  O$U1 U3 3n3U1SY:w  a  U2R                  5        U1 U3 3n3M  U2(       d  M  T R                  U1RQ                  U25      TT5      n*T R]                  U1U*U3T;TT5      U4s  $    U	(       a  U	R                  SZ5      (       a  U	R                  S	S[S\5      u  m>m<m=T<(       d"  T R                  U	R                  S]5      TT5      m<T;U	R9                  5       S  m8T8R'                  S5      (       a  T R)                  T85      u  m8n OS T8sm8n U;U<U 4S^ jm9UU8U9U;UU<U=U U>4	S_ jn4U (       a:  T R                  T R%                  TU4" 5       5      U -   TT5      u  nnX=(       d    U4$ U4" 5       U4$ U	(       a  U	R                  S`5      (       a  U	R                  Sa5      n5T R                  U	R                  Sb5      5       V6s/ s H  n6T R                  U6TT5      PM     Os  sn6f n7n6U5T;   a  TU5   " U7TSc9U4$ U5T Rz                  ;  a  T R}                  U55      T Rz                  U5'   T Rz                  U5   " U7TSc9U4$ T R                  SdT;U:w  a  [        T;SeSe5      OS 3U5      e)fNr   zRecursion limit reachedr   F;rA   zJ(?P<var>(?:var|const|let)\s)|return(?:\s+|(?=["\'])|$)|(?P<throw>throw\s+)throwvarr   T)strictznew    zDate(zFailed to parse date i  zUnsupported object zvoid    {r.  c              3   >   #    U  H  n[        U5      S :H  v   M     g7f)rJ   N)rc   )rR   sub_exprs     r   rU   4JSInterpreter.interpret_statement.<locals>.<genexpr>  s     Fo(3x=A%os   c                    > TR                  UTT5      n[        R                  " [        U 5      (       a  X4$ TR                  U TT5      U4$ r7   )r1  rematch_NAME_RE)r   rF   r   r   r   s     r   	dict_item4JSInterpreter.interpret_statement.<locals>.dict_item  sJ    33C_UCxx#.."x44S*oVX[[[r"   c              3   8   >#    U  H  u  pT" X5      v   M     g 7fr7   r   )rR   kvrR  s      r   rU   rM    s     HIaOOs   (r  z(?x)
                (?P<try>try)\s*\{|
                (?P<if>if)\s*\(|
                (?P<switch>switch)\s*\(|
                (?P<for>for)\s*\(
                ifzelse\s*{try)NFzcatch\s*(?P<err>\(\s*z	\s*\))?\{errzfinally\s*\{forzswitch\s*\(}zswitch(z){switchzdefault:zcase default:zcase )FTc              3   @   #    U  H  oR                  5       v   M     g 7fr7   )r   )rR   r   s     r   rU   rM  =  s     !R5Q''))5Qs   default)_is_var_declarationz(?x)
                (?P<out>z)(?:\[(?P<index>z )\])?\s*
                (?P<op>ru   z3)?
                =(?!=)(?P<expr>.*)$
            outro   r   r   z Cannot index undefined variable zList index z must be integerz3(?x)
                (?P<pre_sign>\+\+|--)(?P<var1>z)|
                (?P<var2>z)(?P<post_sign>\+\+|--)var1var2pre_sign	post_signr   rP   za(?x)
            (?P<return>
                (?!if|return|true|false|null|undefined|NaN)(?P<name>z8)$
            )|(?P<attribute>
                (?P<var>z`)(?:
                    (?P<nullish>\?)?\.(?P<member>[^(]+)|
                    \[(?P<member2>zL)\]
                )\s*
            )|(?P<indexing>
                (?P<in>zH)\[(?P<idx>.+)\]$
            )|(?P<function>
                (?P<fname>z )\((?P<args>.*)\)$
            )breakcontinue	undefinedrL   returnr  indexinginr	  z?<>*-rq   .r   	attributemembernullishmember2c                 B   > U (       d  TR                  T SU 3T5      eg)z2assert, but without risk of getting optimized out r   N)r   )rB   r   r   rn  r   s     r   	assertion4JSInterpreter.interpret_statement.<locals>.assertion  s'    ..F81SE):DAA r"   c            	        >	 TT4S:X  a@  [         R                  (       a*  [         R                  TR                  ST S3TT5      5        g [        [
        [        S.n TR                  TU R                  T[        5      5      nU[        L aP  TTR                  ;  a    TR                  TT5      TR                  T'   TR                  R                  T[        5      nT(       a  U[        L a  [        $ Tc  TR                  UTT5      $ TR                  T5       Vs/ s H  nTR                  UTT5      PM     nn[        U[         5      (       a  TR#                  S5      (       a  TR%                  S5      S   R%                  S5      u  pEnT" US5        T" [        US	   U5      S
U 35        US:X  a  UtpOLUS:X  a1  T" ['        U5      S:H  S5        Uu  pT" [        U[        5      S5        OTR                  SU 3T5      eUmU[        L aC  TS:X  a(  T" US5        SR)                  [+        [,        U5      5      $ TR                  ST 3T5      eU[
        L a;  TS:X  a   T" ['        U5      S:H  S5        US	   US   -  $ TR                  ST 3T5      eTS:X  aG  T" US5        T" ['        U5      S:H  S5        US	   (       a  UR/                  US	   5      $ [        U5      $ TS:X  a@  T" [        U[        5      S5        T" ['        U5      S:H  S5        US	   R)                  U5      $ TS:X  a   T" U(       + S5        UR1                  5         U$ TS:X  aB  T" [        U[        [        45      S5        T" ['        U5      S:*  S5        U[3        / UQS P76    $ TS :X  a  T" [        U[        5      S5        T" US5        [+        [4        / UQ['        U5      PS S 5      u  pxUS	:  a  U['        U5      -  nUSS  n	/ n
[7        U[9        Xx-   ['        U5      5      5       H#  nU
R;                  UR=                  U5      5        M%     [?        U	5       H  u  pURA                  X{-   U5        M     U
$ TS!:X  aF  T" [        U[        5      S5        T" US5        [C        U5       H  nURA                  S	U5        M     U$ TS":X  a=  T" [        U[        5      S5        T" U(       + S5        U(       d  g UR=                  5       $ TS#:X  a  T" US5        URE                  U5        U$ TS$:X  aU  T" US5        T" ['        U5      S:*  S%5        / UQSPS S u  p[?        U5       VVs/ s H  u  pU" XU4S&U0T5      PM     snn$ TS':X  a=  T" US5        T" ['        U5      S:*  S%5        / UQS	PS S u  nn URG                  UU5      $ TS):X  ah  T" [        U[        5      S*5        T" ['        U5      S:H  S5        [        US	   [4        5      (       a  US	   OS	nU['        U5      :  a  g [K        X   5      $ [        U[        5      (       a  [5        T5      OTnX   " UTS+9$ ! TR                   a    T(       d  e  GNf = fs  snf s  snnf ! [H         a     g(f = f),N)consoledebugr  ])StringMathArrayz
prototype.rl  rJ   ztakes one or more argumentsr   zneeds binding to type callapplyztakes two argumentsz"second argument needs to be a listzUnsupported Function method fromCharCoderA   zUnsupported String method powr   zUnsupported Math method splitz&with limit argument is not implementedr   zmust be applied on a listztakes exactly one argumentreversezdoes not take any argumentsslicez#must be applied on a list or stringztakes between 0 and 2 argumentsspliceunshiftrd   pushforEachztakes at-most 2 argumentsthisindexOfrP   
charCodeAtzmust be applied on a stringr   )&r   r   r   r1  r=   r   r)  r3  r   r   extract_objectr   r   r<  r&  r<   type
startswith	partitionrc   r   mapchrr  r  r  r   rX   minra   rd   r  insertrb   extendro   
ValueErrorord)typesr  rV  argvals
new_member_func_prototypero   how_many	add_itemsresr   itemr   r  r	  r  r   arg_strrr  r   r   rn  ro  r   variables                    r   eval_method6JSInterpreter.interpret_statement.<locals>.eval_method  s    f%)=='' t'@'@1WIQQ[]l'mn "!!
 !nnXuyy:/NO*$t}}4&6:6I6I(T^6_DMM(3 --++HlCCsl2'' ?;;sFG<<
 "^^G464 --a_M4  6
 c4((V->->|-L-L4:4D4DS4I!4L4V4VWZ4[1J>g'DEjS9=STWSX;YZ%/(/g'72!#g,!"35JK'.!*Wd";=ab"nn/KNK[-\^bcc'F#:/!'+HI!wws3'899..+EfX)NPTUUE\!#g,!"35JK&qzWQZ77..+CF8)LdSSW$g'DEc'la/1YZ4;AJ399WQZ0MDIMv%jd35PQc'la/1MN"1:??3//y('k+HIKKMJw&jtSk:<abc'la/1RSu4g4t455x'jd35PQg'DE&)#0D'0D3s80Dbq/I&JOEqyS) 'IC"5#e.>C*IJ

3775>2 K#,Y#7

59d3 $8Jy(jd35PQg'DE ( 1

1d+ !2Ju_jd35PQ'k+HI779$v%g'DEJJw'Jy(g'DEc'la/1LM-~"~r2GAbklobpqbpU^UXAt#.Pbpqqy(g'DEc'la/1LM"/G-Q-!!4JC""yye44 |+jc24QRc'la/1MN(271:s(C(C'!*Cc#h#sx=(%/T%:%:c&kxII]  $~~ &#* % $+&6^ r & "!"s0   Y Y1Y6'Y< Y.-Y.<
Z	Z	functionfnamer   r  zUnsupported JS expression    )@r   r)  r&  rd   r   r   rO  rP  rc   groupr   r1  boolr  r  r?  loadsr   r  r  r+  r
   rA  r   allr  	groupdictr3  endlstriprE   rQ  r<   r   	new_childr   r   replacer  _NESTED_BRACKETSr   r  escaper   r2  _COMP_OPERATORSr7  r   r   r   r<  finditerspanisdigitr   r   r   addr   r   r  r   extract_functionr	   )?r   r   r   r   r`  should_returnsub_statementssub_stmtr   r   innerouterr  r  leftrightdaterL  sub_expressionsshould_abortr  r  mdrB   if_expr	else_exprtry_exprrZ  r   pending
catch_varsconstructor	remainingbodyswitch_m
switch_valr  	incrementitemsr_  matchedcaser4  eval_resultr	  rF  r  rj   rF   r   r*  r5  r  r  rV  r  r  rr  rR  r   rn  ro  r  s?   ` ``                                                    @@@@@@@r   r   !JSInterpreter.interpret_statement  s   Q..!:;;1dnnT378@RD$((*0022t&H!%!9!9(JP_!`C})) '
 HHbdhiAGGAJ()//1Dwwwt88z?[\\ !.M"5"Maggen9M&&7g>>$Q;LEAw#~#007 '5'* 

:Qy.A$#OP++%%j%85@D??6""qr(C~~g&&"55c!"g>(--dJPRWY<..+@)I4PPzz#dTk"2J?%Gnn':3%%@$GG??7##,,T!"Xz?SD&&??32248LE^b^l^lmr^st^sRZtDNN8>>3CS!$LM^sOtFoFFF\ HHH-WW"&":":5*o"^E<Ll;m;;zz%4u<??32248LE"&":":5*o"^E<Ll;m;;zz%4u<??32248LE%%j NN51331D ))$
OL133 4D %<DHH 
   Q[[]R66$<<00aeegkl1CDJD$ 33DKKMBMGTId+A"&"9"9$quuw{|:L"M	4t88z?[\D $ 8 8Y
O!MCDy 66%==!44T!%%'A+,5GHNHdC$($<$<XzSb$c!\9$   $G1(:FMA!%!8!8aeegkl9K!L$!#Jwwu~~BLSRZB[B[SYYad
1775>2!+!5!5j!AJ#')A)A(JXg)hC$/A!%!8!8aeegkl9K!L$$($<$<XzSb$c!\9$ 'CDy 	  VVE]]%)%<%<T!%%'A+,=O%P"K##C((!44Y?
d88NI>,0,C,CIhlln_`N`NaDb,c)J	!%!8!8C!HJD$/94@D!*BJD$%)^^K%E"E4%%eZI"4#<#<T:#_``(,(@(@zSb(c%C#"Dy( $ )))ZQ  VVH$($;$;D1<N$O!J	22:z?[J00C@JD$LL_=CCGLQRPE(!D!RT^^D#q5Q!RJD$")">TY->$#'9#4 $r'1T5N5NtU_ap5q'q  " ,0,D,DT:Wf,g)\'#&J ( " 7% )(  $ 8 8z? [C555 t~~d34!#+$($<$<j/Ob %= %d!\<9$	 ,
 :HH !
"23C2D ERYYJ/0Q!RST U 	
 !~~aggen5H777##"nnGGDM8QWWV_dJP_a&((E1<Jqwwu~.!!''%.1=@@dL11nn'GPUGW%XZ^__++AGGG,<j/ZCcC<00nn{3%7G%H$OOc(C NNt{{8S91776?DR\^moHSMC=-// #//7j 9"#:>?CEA ''&/4QWWV_CJE377:&>!''+*>DS/CsODGsNq:Owwz"" o<$**S*"==ST
JDE &&HH EEMJ O!
 ###3"4 5 !z "#* %  <<>>t9m++W_NZ[ ..U]<..1778$$''&/C" **3/ $$S#. %%	 !nnS*5*$&C,,005%%  ,::jd;<mK -,Y u433B  d   " 0 $ J -, $$QWWT]+C++AGGENJXC;;sC(-77BT^^D"56I"J=S^a%7	"@S@S@U@UMMO#c	j6K6KC6P6P "tJ<0
9$-MMO#4RD!EJ  001CZQ`aH>>"h
D*o^`mmm   %%()x(K%Hfg2217793EzSbc15578nG!!#&&%)%<%<W%E"%)7"B
@J @JD $($<$<&&z;=AIM%1!\ 9\99"}m33177:&&GGG$E $qwwv ?A ?1 00JP ?AG A
"!%(/RTaaadoo-)-)>)>u)E&??5)'?SUbbbnn($RV,r2)F\^(_`bfh 	hsb   4{"-{'
6 {,  | <|$8 |7,
|6{>>|
|!	|! |!$
|43|47
}HAHc                 `    U R                  XU5      u  pEU(       a  U R                  SU5      eU$ )Nz Cannot return from an expression)r   r   )r   r   r   r   r   r  s         r   r1  "JSInterpreter.interpret_expressionl  s1    !55dX..!CTJJ
r"   c           	         Sn0 n[         R                  " S[         R                  " U5      < SU< S3U R                  5      nU(       d  U R	                  SU 35      eUR                  S5      n[         R                  " SU< S[        < S	3U5      nU Ho  nUR                  S
5      R                  S5      n	[        UR                  S5      5      n
[        U R                  " XR                  S5      /UQ76 SU
 S35      XJ'   Mq     U$ )Nz1(?:[a-zA-Z$0-9]+|"[a-zA-Z$0-9]+"|'[a-zA-Z$0-9]+')z'(?x)
                (?<![a-zA-Z$0-9.])z,\s*=\s*{\s*
                    (?P<fields>(zP\s*:\s*function\s*\(.*?\)\s*{.*?}(?:,\s*)?)*)
                }\s*;
            zCould not find object fieldsz(?x)
                (?P<key>z!)\s*:\s*function\s*\((?P<args>(?:z%|,)*)\){(?P<code>[^}]+)}
            r   ,r   r   r   r   )rO  searchr  r   r   r  r  rQ  r  r   r   build_function)r   objnameglobal_stack_FUNC_NAME_REr  obj_mr  fields_mr   argnamesr  s              r   r  JSInterpreter.extract_objectr  s    P		
 99W%}	6
 II ..#9'!CDDX&;; !(, 	
 Awwv,,S1H 0D*##HggfoMMQSTXSYYZ|]CI  
r"   c                 t   [         R                  " SS[         R                  " U5      0-  U R                  5      nUc  U R	                  SU S35      eU R                  UR                  S5      5      u  p4UR                  S5      R                  S5       Vs/ s H  oUR                  5       PM     snU4$ s  snf )z@returns argnames, code a  (?xs)
                (?:
                    function\s+%(name)s|
                    [{;,]\s*%(name)s\s*=\s*function|
                    (?:var|const|let)\s+%(name)s\s*=\s*function
                )\s*
                \((?P<args>[^)]*)\)\s*
                (?P<code>{.+})r  zCould not find JS function ""r   r   r  )	rO  r  r  r   r   r+  r  r  r   )r   funcnamefunc_mr   r  r   s         r   extract_function_code#JSInterpreter.extract_function_code  s    " &,RYYx-@$AB II	 >..#?z!KLL))&,,v*>?#)<<#7#=#=c#BC#Ba	#BCTIICs   B5c                 d    [        U R                  " / U R                  U5      QUQ76 SU S35      $ )Nr   r   )r   extract_function_from_coder  )r   r  r  s      r   r  JSInterpreter.extract_function  s=    !++aT-G-G-QaT`a
! 	r"   c           
         0 n [         R                  " SU5      nUc  OUR                  5       u  pgU R                  X'S-
  S  5      u  pU R	                  X@R
                  " UR                  S5      R                  S5       V
s/ s H  oR                  5       PM     sn
X/UQ76 5      nUS U U-   U	-   nM  U R                  " XU/UQ76 $ s  sn
f )Nzfunction\((?P<args>[^)]*)\)\s*{r   r   r  )
rO  r  r  r+  r  r  r  r  r   r  )r   r  r   r  r   mobjr  
body_startr  r  r   r  s               r   r  (JSInterpreter.extract_function_from_code  s    
99?FD| $		E"55d>?6KLOD%%j2Q2Q$(JJv$6$<$<S$AB$Aq$AB31#/31 2D <$&2D  ""8:MMM Cs   C	c                 0    U R                  U5      " U5      $ r7   )r  )r   r  r   s      r   call_functionJSInterpreter.call_function  s    $$X.t44r"   c                 h   ^ ^^^ [        T5      =(       d    0 /m[        T5      m0 S4UUUU 4S jjnU$ )Nr   c                    > TS   R                  [        R                  " TU S S95        TS   R                  U5        [        T6 nT	R	                  TR                  SS5      X2S-
  5      u  pEU(       a  U$ g )Nr   )	fillvaluer   r   r   )update	itertoolszip_longestr   r   r  )
r   r   r   	var_stackr   r  r  r   r  r   s
         r   resf*JSInterpreter.build_function.<locals>.resf  su    O""9#8#84SW#XYO""6*&5I $ 8 8dC9PR[op]p qC
 r"   )r)  tuple)r   r  r   r  r  s   ```` r   r  JSInterpreter.build_function  s3    L)1bT? # 	 	 r"   )r   r   r   r   r7   )r  N)F)r   F)"r   r   r   r   r   rO  IMSUr  r   r   r   r  r   r  r   r&  r+  r7  r<  rA  r   r   r   r1  r  r  r  r  r  r  r   r   r"   r   r   r     s     TTTTTTTTI)
3N 3 % % $ $L > >g&P6 ah ahF6J"
N5r"   r   r  )rI   );rZ   r   r  r?  r   operatorrO  utilsr   r   r   r   r   r	   r
   r   r#   r,   r0   r2   r4   r9   r?   rE   r   r   rp   or_xorand_is_is_noteqnelegeltgtrshiftlshiftr  submulr2  r  rQ  r  zipr  r  r  r   r   r   r   ChainMapr   r   r   r   r"   r   <module>r     s`         		 	 	/	3FU 3F3 3Fn$ 	$ 	$	 HLL	! HLL	! HMM	" 
8<< 
8?? 	)HKK
  	)HKK
  	+hkk
"  	+hkk
"!" X[[	!#$ X[[	!%( 	*X__
%)* 	*X__
%+. 
hll	#	hll	#	hll	#		
;
@ CStT234 
< 	 	7~ 7
:. :
A~ A[)) (# #:x
 x
r"   