
    (i&                        d dl Z d dlZd dlZd dlmZmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZmZ d dlmZmZmZmZ d dlmZmZmZmZ d dlmZ d dlmZ d d	lmZ d d
l m!Z!m"Z" d dl#m$Z$m%Z% d dl&m'Z'm(Z(m)Z)m*Z* d dl+m,Z,m-Z- d dl.m/Z/m0Z0m1Z1 erd dl2m3Z3m4Z4 deeegef   deeegeeef   f   fdZ5e5dededeeef   fd       Z6e5dededeee7f   fd       Z8deeeegeeef   f   deeegeeef   f   fdZ9e5e9dedededeeeef      fd              Z:e5e9dedededeeeef      fd              Z;e5dededeeee7f      fd       Z<e5dededeeee7f      fd       Z=e5e9dedededeeeef      fd              Z>e5dededeeeef      fd       Z?ed d!ded"edeeef   fd#       Z@e6gZAd$e	ee7f   defd%ZBd&e!d'ee   de	edf   fd(ZCd'ee   de	edf   fd)ZDd*eeE   de	edf   fd+ZFd,d-ded"edeeef   fd.ZGy)/    N)TYPE_CHECKINGAnyCallableOptionalTupleUnioncast)
ParseError)	BasicTypeparse)ABIChecksumAddressHexStrTypeStr)to_bytesto_checksum_addressto_hexto_text)is_binary_address)curryHexBytes)ENSAsyncENS)hexstr_if_strtext_if_str)	StaticENSasync_validate_name_has_addressis_ens_namevalidate_name_has_address)validate_abivalidate_address)InvalidAddressNameNotFoundWeb3ValueError)	AsyncWeb3Web3to_wrapreturnc           	           t        j                         dt        dt        dt        t        t        f   f fd       }|S )Ntype_strdatar)   c                 &     | |      }|| |fS |S N )r+   r,   modifiedr(   s      H/var/www/br/venv/lib/python3.12/site-packages/web3/_utils/normalizers.pywrapperz$implicitly_identity.<locals>.wrapperM   s$    8T*T>!O    	functoolswrapsr   r   r   )r(   r2   s   ` r1   implicitly_identityr7   J   sE     __W'  w|1D   Nr3   r+   r,   c                 (    | dk(  r| t        |      fS y Naddress)r   r+   r,   s     r1   addresses_checksummedr<   ]   s      9,T222r3   c                 @    | dk(  r| t        j                  |dd      fS y )Nstringutf8backslashreplace)codecsdecoder;   s     r1   decode_abi_stringsrC   f   s&    8tV5GHHHr3   old_normalizerc           	           t        j                         dt        dt        dt        t        t        f   f fd       }|S )z
    Modifies a normalizer to automatically parse the incoming type string.  If
    that type string does not represent a basic type (i.e. non-tuple type) or is
    not parsable, the normalizer does nothing.
    r+   r,   r)   c                 ~    	 t        |       }t        |t              s| |fS  || |      S # t        $ r | |fcY S w xY wr.   )r   r
   
isinstancer   )r+   r,   abi_typerD   s      r1   new_normalizerz,parse_basic_type_str.<locals>.new_normalizer{   sQ    	"XH
 (I.T>!h$77  	"T>!	"s   , <<r4   )rD   rI   s   ` r1   parse_basic_type_strrJ   r   sF     __^$
8 
8 
8gsl8K 
8 %
8 r3   rH   c                 8   | j                   dk7  s| j                  ry t        t        |      }| j                  |t        |      fS | j                  }t        |      |kD  rt        d| dt        |       d|      |j                  |d      }|t        |      fS )Nbytesz&This value was expected to be at most z bytes, but instead was z:     )	baseis_arrayr   r   subr   lenr%   ljust)rH   r+   r,   
bytes_data	num_bytespaddeds         r1   abi_bytes_to_hexrV      s    
 }}8#4#4x.J||
+++I
:"4YK @":/r$;
 	

 i/FVF^##r3   c                 ^    | j                   dk(  r| j                  s|t        t        |      fS y )Nuint)rN   rO   r   r   rH   r+   r,   s      r1   abi_int_to_hexrZ      s-    
 }}x'8'8vt444r3   c                 2    | dk(  r| t        t        |      fS y Nr>   )r   r   r;   s     r1   abi_string_to_hexr]      s    8VT222r3   c                 2    | dk(  r| t        t        |      fS y r\   )r   r   r;   s     r1   abi_string_to_textr_      s    8Wd333r3   c                 ^    | j                   dk(  r| j                  s|t        t        |      fS y )NrL   )rN   rO   r   r   rY   s      r1   abi_bytes_to_bytesra      s-    
 }}(9(9x666r3   c                 T    | dk(  r#t        |       t        |      r| t        |      fS y r9   )r"   r   r   r;   s     r1   abi_address_to_hexrc      s0     9T"0666r3   w3r'   valc                    |dk(  rVt        |      rK| t        d|d      t        t        | j                        }|t        d|d      	 |t        ||      fS ||fS # t        $ r#}t        |t              st        |       |d }~ww xY wNr:   zCould not look up name z% because no web3 connection availablez because ENS is set to None)	r   r#   r	   r   ensr    r$   rG   r   )rd   r+   re   _enses        r1   abi_ens_resolverrk      s     9S!1: )# 1( ( 
 C < )#0KL !:4!EEE }    "$	2(A300s   A   	B)BBabic                     t        | t              rt        j                  |       } t	        t        t        |              t        t        |       S r.   )rG   strjsonloadsr!   r	   r   )rl   s    r1   normalize_abirq      s3    #sjjoc3 S>r3   rh   r:   c                 R    |r$t        |      rt        | |       |S t        |       |S r.   )r   r    r"   )rh   r:   s     r1   normalize_addressrs     s/     w%c73 N W%Nr3   c                      | rt        |        | S r.   )r"   )r:   s    r1   normalize_address_no_ensru     s     !Nr3   bytecodec                      | t        |       S | S r.   r   )rv   s    r1   normalize_bytecoderx     s    !!Or3   async_w3zAsyncWeb3[Any]c                    K   |dk(  r_t        |      rT| t        d|d      t        t        | j                        }|t        d|d      t        ||       d {   }||fS ||fS 7 wrg   )r   r#   r	   r   rh   r   )ry   r+   re   
_async_ensr:   s        r1   async_abi_ens_resolverr|     s     
 9S!1 )# 1( ( 
 (HLL1
 )#0KL  <JLLGW$$ }	 Ms   AA-A+A-)HrA   r5   ro   typingr   r   r   r   r   r   r	   eth_abi.exceptionsr
   eth_abi.grammarr   r   
eth_typingr   r   r   r   	eth_utilsr   r   r   r   eth_utils.addressr   eth_utils.toolzr   hexbytesr   rh   r   r   web3._utils.encodingr   r   web3._utils.ensr   r   r   r    web3._utils.validationr!   r"   web3.exceptionsr#   r$   r%   web3r&   r'   r7   r<   rn   rC   rJ   rV   rZ   r]   r_   ra   rc   rk   BASE_RETURN_NORMALIZERSrq   rs   ru   rL   rx   r|   r/   r3   r1   <module>r      s            wnc)*wneGSL112&  
7O#$    gsl8K  i#6gsl8KKLwneGSL1122 $$#*$25$eGVO$%$  $* #*25eGVO$%    s xgsl@S7T     wPS|AT8U   #*25eGVO$%    eG_,-.   
 7C<	 @  uS#X 3 	0
?D !o&
?D !% U8T>5J  
 7C<	r3   