§
    1@Äj\ ã                   ó4  — d dl mZmZ d dlZd dlZd dlmZ d dlZd dlm	Z	m
Z
 d dlmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZmZmZmZ d dlmZ d dl m!Z! d d	l"m#Z#m$Z$ d d
l%m&Z& d dl'm(Z(  edd¦  «        Z) G d„ de*¦  «        Z+ G d„ de+¦  «        Z,d„ Z-dS )é    )Ú
namedtupleÚdefaultdictN)Úpartial)ÚConstantÚ	IRBuilder)ÚtypingÚutilsÚtypesÚirÚ	debuginfoÚfuncdescÚ
generatorsÚconfigÚir_utilsÚcgutilsÚtargetconfig)ÚLoweringErrorÚnew_error_contextÚTypingErrorÚLiteralTypingErrorÚUnsupportedErrorÚNumbaDebugInfoWarning)Údefault_mangler)ÚEnvironment)Úcompute_use_defsÚmust_use_alloca)Úget_func_body_first_lineno)Úget_registered_loc_notifyÚ_VarArgItem)ÚvarargÚindexc                   óÖ   — e Zd ZdZdd„Zed„ ¦   «         Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zdd„Zd d„Zd d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd!d„Zd„ Zd„ Zd„ Zdej        ddfd„Zd„ Zd„ ZdS )"Ú	BaseLowerz
    Lower IR to LLVM
    Nc                 óŠ  — || _         || _        t          j        |j                             ¦   «         ¦  «        | _        || _        |j        | _        || _        t          j
                             ¦   «         | _        | j                              | j        j        ¦  «        | _        t!          j        | j        ¦  «        | _        i | _        i | _        i | _        t-          | j                             ¦   «         ¦  «        | _        d| _        |                     | j        | j        ¬¦  «        | _        | j        j        r| j        j        nt<          j        }|                       ¦   «         | _!        | j        j"        } || j        |j        j#        ||¬¦  «        | _        tI          ¦   «         | _%        |  &                    ¦   «          d S )Néÿÿÿÿ)ÚenvironmentÚfndesc)ÚmoduleÚfilepathÚcgctxÚdirectives_only)'Úlibraryr'   r	   Ú	SortedMapÚblocksÚitemsÚfunc_irÚgenerator_infoÚmetadatar   ÚConfigStackÚtop_or_noneÚflagsÚcreate_ir_moduleÚunique_namer(   r   Úfrom_fndescÚenvÚblkmapÚpending_phisÚvarmapÚminÚkeysÚfirstblkÚlocÚ	subtargetÚcontextÚenable_debuginfoÚ	DIBuilderr   ÚDummyDIBuilderÚ_compute_def_locationÚdefn_locÚdbg_directives_onlyÚfilenamer   Ú_loc_notify_registryÚinit)ÚselfrB   r,   r'   r0   r2   Údibuilderclsr+   s           úDC:\Projects\Historical\venv\Lib\site-packages\numba/core/lowering.pyÚ__init__zBaseLower.__init__   sˆ  € ØˆŒØˆŒÝ”o g¤n×&:Ò&:Ñ&<Ô&<Ñ=Ô=ˆŒØˆŒØ%Ô4ˆÔØ ˆŒÝ!Ô-×9Ò9Ñ;Ô;ˆŒ
ð ”l×3Ò3°D´KÔ4KÑLÔLˆŒõ Ô*¨4¬;Ñ7Ô7ˆŒð ˆŒØˆÔØˆŒÝ˜DœK×,Ò,Ñ.Ô.Ñ/Ô/ˆŒØˆŒð
 ×(Ò(°T´XØ04´ð )ñ =ô =ˆŒð
  œ<Ô8ð6˜œÔ.Ð.å&Ô5ð 	ð
 ×2Ò2Ñ4Ô4ˆŒàœ*Ô8ˆØ%˜¨T¬[Ø/6¬{Ô/CØ,3Ø6EðGñ Gô GˆŒõ %>Ñ$?Ô$?ˆÔ!ð 	�	Š	‰Œˆˆˆó    c                 ó   — | j         j        S ©N)rB   Ú	call_conv©rL   s    rN   rS   zBaseLower.call_convO   s   € àŒ|Ô%Ð%rP   c                 ó   — d S rR   © rT   s    rN   rK   zBaseLower.initS   s   € ØˆrP   c                 óì   — | j         �dS | j                             | j        ¦  «        | _         | j                             | j        ¦  «        | _        | j        j        | _        | j        j        | _        dS )ze
        Init the Python API and Environment Manager for the function being
        lowered.
        N)	ÚpyapirB   Úget_python_apiÚbuilderÚget_env_managerÚenv_managerÚenv_bodyÚenv_ptrÚenvargrT   s    rN   Ú
init_pyapizBaseLower.init_pyapiV   sd   € ð
 Œ:Ð!ØˆFØ”\×0Ò0°´Ñ>Ô>ˆŒ
ð  œ<×7Ò7¸¼ÑEÔEˆÔØÔ(Ô1ˆŒØÔ&Ô.ˆŒˆˆrP   c                 óz  — | j         j                             | j         j        j        dz   ¦  «        }| j        j        r}| j         j        j        }t          |¦  «        }|�%|dz
  }| j         j                             |¦  «        }n6d| j         j        j        › d�}t          j
        t          |¦  «        ¦  «         |S )Né   z$Could not find source for function: z+. Debug line information may be inaccurate.)r0   r@   Úwith_linenoÚlinerB   rC   Úfunc_idÚfuncr   ÚwarningsÚwarnr   )rL   rG   ÚfnÚoptional_lnoÚoffsetÚmsgs         rN   rF   zBaseLower._compute_def_locationd   s»   € ð ”<Ô#×/Ò/°´Ô0@Ô0EÈÑ0IÑJÔJˆØŒ<Ô(ð 	:Ø”Ô%Ô*ˆBÝ5°bÑ9Ô9ˆLØÐ'à%¨Ñ)�Øœ<Ô+×7Ò7¸Ñ?Ô?��ð,Øœ,Ô.Ô3ð,ð ,ð ,�õ ”Õ3°CÑ8Ô8Ñ9Ô9Ð9ØˆrP   c                 óH  — d| _         | j                             | j        j        | j        j        | j        j        | j        j        | j	        j
        ¬¦  «         | j        j        j        }| j        j        o| j        j         }|rd|vr|                     d¦  «         dS dS dS )z4
        Called before lowering all blocks.
        N)ÚfunctionÚqualnameÚargnamesÚargtypesrd   ÚalwaysinlineÚnoinline)rX   r   Úmark_subprogramrZ   rn   r'   ro   Úargsrq   rG   rd   Ú
attributesr5   rH   Úadd)rL   rv   Ú
full_debugs      rN   Ú	pre_lowerzBaseLower.pre_lowerw   s´   € ð ˆŒ
ØŒ×&Ò&°´Ô0EØ04´Ô0DØ04´Ô0@Ø04´Ô0DØ,0¬MÔ,>ð	 	'ñ 	@ô 	@ð 	@ð ”\Ô*Ô5ˆ
Ø”ZÔ)ÐP°$´*Ô2PÐ.Pˆ
Øð 	'˜.°
Ð:Ð:Ø�NŠN˜:Ñ&Ô&Ð&Ð&Ð&ð	'ð 	'Ð:Ð:rP   c                 ót   — | j                              ¦   «          | j        D ]}|                     ¦   «          ŒdS )z5
        Called after all blocks are lowered
        N)r   ÚfinalizerJ   Úclose)rL   Únotifys     rN   Ú
post_lowerzBaseLower.post_lower�   sC   € ð 	Œ×ÒÑ!Ô!Ð!ØÔ/ð 	ð 	ˆFØ�LŠL‰NŒNˆNˆNð	ð 	rP   c                 ó   — dS )z1
        Called before lowering a block.
        NrV   ©rL   Úblocks     rN   Ú	pre_blockzBaseLower.pre_block•   ó   € € € rP   c                 ó   — dS )z0
        Called after lowering a block.
        NrV   r€   s     rN   Ú
post_blockzBaseLower.post_blockš   rƒ   rP   c                 ón   — | j                              | j        ||||| j        j        j        ¬¦  «         d S )N©r@   Ú	func_name)rS   Úreturn_dynamic_user_excrZ   r0   re   rˆ   )rL   Ú	exc_classÚexc_argsÚnb_typesr@   s        rN   Úreturn_dynamic_exceptionz"BaseLower.return_dynamic_exceptionŸ   sC   € ØŒ×.Ò.ØŒL˜) X¨xØ˜tœ|Ô3Ô=ð 	/ñ 	
ô 	
ð 	
ð 	
ð 	
rP   c                 ól   — | j                              | j        |||| j        j        j        ¬¦  «         dS )z+Propagate exception to the caller.
        r‡   N)rS   Úreturn_user_excrZ   r0   re   rˆ   ©rL   rŠ   r‹   r@   s       rN   Úreturn_exceptionzBaseLower.return_exception¥   sC   € ð 	Œ×&Ò&ØŒL˜) XØ˜tœ|Ô3Ô=ð 	'ñ 	
ô 	
ð 	
ð 	
ð 	
rP   c                 ól   — | j                              | j        |||| j        j        j        ¬¦  «         dS )z5Set exception state in the current function.
        r‡   N)rS   Úset_static_user_excrZ   r0   re   rˆ   r�   s       rN   Úset_exceptionzBaseLower.set_exception­   sC   € ð 	Œ×*Ò*ØŒL˜) XØ˜tœ|Ô3Ô=ð 	+ñ 	
ô 	
ð 	
ð 	
ð 	
rP   c                 ó„   — | j                              | j        ¦  «        }| j                              | j        |¦  «         dS )z7Emit a pointer to hold the Environment object.
        N)rB   Úget_env_namer'   Údeclare_env_globalr(   )rL   Úenvnames     rN   Úemit_environment_objectz!BaseLower.emit_environment_objectµ   s;   € ð ”,×+Ò+¨D¬KÑ8Ô8ˆØŒ×'Ò'¨¬°WÑ=Ô=Ð=Ð=Ð=rP   c                 óh  — |                       ¦   «          | j        €"d | _        |                      | j        ¦  «         n…|                      | ¦  «        | _        | j        j        | _        | j                             | ¦  «         | j                             | ¦  «         | j        j	        r| j         
                    | ¦  «         t          j        rt          j        | j        | j        ¦  «         | j                             | j        | j        ¦  «         | j                             | j        ¦  «         d S rR   )r™   r1   ÚgenlowerÚlower_normal_functionr'   ÚGeneratorLowerÚgentypeÚlower_init_funcÚlower_next_funcÚhas_finalizerÚlower_finalize_funcr   Ú	DUMP_LLVMr	   Ú	dump_llvmr(   rB   Úpost_loweringr,   Úadd_ir_modulerT   s    rN   ÚlowerzBaseLower.lower¼   s  € à×$Ò$Ñ&Ô&Ð&ØÔÐ&Ø ˆDŒMØ×&Ò& t¤{Ñ3Ô3Ð3Ð3à ×/Ò/°Ñ5Ô5ˆDŒMØœ=Ô0ˆDŒLàŒM×)Ò)¨$Ñ/Ô/Ð/ØŒM×)Ò)¨$Ñ/Ô/Ð/ØŒ|Ô)ð 8Ø”×1Ò1°$Ñ7Ô7Ð7åÔð 	6ÝŒO˜DœK¨¬Ñ5Ô5Ð5ð 	Œ×"Ò" 4¤;°´Ñ=Ô=Ð=ð 	Œ×"Ò" 4¤;Ñ/Ô/Ð/Ð/Ð/rP   c                 óz   — | j                              | j        | j        j        | j        ¦  «        | _        | j        S rR   )rS   Údecode_argumentsrZ   r'   rq   rn   ÚfnargsrT   s    rN   Úextract_function_argumentsz$BaseLower.extract_function_argumentsÔ   s8   € Ø”n×5Ò5°d´lØ6:´kÔ6JØ6:´mñEô EˆŒð Œ{ÐrP   c                 ól  — |                       |¦  «         |                      ¦   «          |                      ¦   «         }t          j        | j        ¦  «        5  | j                             |¦  «         | j                             | j        | j	                 ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z/
        Lower non-generator *fndesc*.
        N)
Úsetup_functionr«   Úlower_function_bodyr   Úsuspend_emissionrZ   Úposition_at_endÚbranchr:   r?   )rL   r'   Úentry_block_tails      rN   rœ   zBaseLower.lower_normal_functionÚ   sí   € ð 	×Ò˜FÑ#Ô#Ð#ð 	×'Ò'Ñ)Ô)Ð)Ø×3Ò3Ñ5Ô5Ðõ
 Ô'¨¬Ñ5Ô5ð 	<ð 	<ØŒL×(Ò(Ð)9Ñ:Ô:Ð:ØŒL×Ò ¤¨D¬MÔ :Ñ;Ô;Ð;ð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<ð 	<ð 	<s   ÁAB)Â)B-Â0B-c                 ó4  — | j         D ])}d|z  }| j                             |¦  «        | j        |<   Œ*|                      ¦   «          | j        j        }|                      d                     | j	        j
        ¦  «        ¦  «         t          | j                              ¦   «         ¦  «        D ]Y\  }}| j        |         }| j                             |¦  «         |                      d|› �¦  «         |                      |¦  «         ŒZ|                      ¦   «          |S )zP
        Lower the current function's body, and return the entry block.
        zB%sz# function begin: {0}z# lower block: )r.   rn   Úappend_basic_blockr:   ry   rZ   Úbasic_blockÚdebug_printÚformatr'   r7   Úsortedr/   r°   Úlower_blockr~   )rL   rk   Úbnamer²   r�   Úbbs         rN   r®   zBaseLower.lower_function_bodyë   s$  € ð
 ”kð 	Jð 	JˆFØ˜F‘NˆEØ"&¤-×"BÒ"BÀ5Ñ"IÔ"IˆDŒK˜ÑÐà�ŠÑÔÐàœ<Ô3Ðà×ÒÐ0×7Ò7ØŒKÔ#ñ%ô %ñ 	&ô 	&ð 	&õ $ D¤K×$5Ò$5Ñ$7Ô$7Ñ8Ô8ð 	$ð 	$‰MˆF�EØ”˜VÔ$ˆBØŒL×(Ò(¨Ñ,Ô,Ð,Ø×ÒÐ7¨vÐ7Ð7Ñ8Ô8Ð8Ø×Ò˜UÑ#Ô#Ð#Ð#Ø�ŠÑÔÐØÐrP   c                 óF  — |                       |¦  «         |j        D ]n}|j        | _        t          t          | j        ¬¦  «        }t          d|| j        |¬¦  «        5  |                      |¦  «         ddd¦  «         n# 1 swxY w Y   Œo|                      |¦  «         dS )z(
        Lower the given block.
        ©r@   zlowering "{inst}" at {loc})Úinstr@   Úerrcls_N)r‚   Úbodyr@   r   r   r   Ú
lower_instr…   )rL   r�   r¾   Údefaulterrclss       rN   r¹   zBaseLower.lower_block  sê   € ð 	�Š�uÑÔÐØ”Jð 	&ð 	&ˆDØ”xˆDŒHÝ#¥M°t´xÐ@Ñ@Ô@ˆMÝ"Ð#?ÀdØ'+¤x¸ðHñ Hô Hð &ð &à—’ Ñ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &øð 	�Š˜ÑÔÐÐÐs   ÁB Â B	ÂB	Fc                 óê   — | j         r8| j                             | j        | j         j        | j        | j        |¬¦  «         | j                             | j        | j        | j        | j        |¬¦  «         dS )zP
        Create CPython wrapper(s) around this function (or generator).
        )Úrelease_gilN)r›   rB   Úcreate_cpython_wrapperr,   Úgendescr9   Úcall_helperr'   )rL   rÄ   s     rN   rÅ   z BaseLower.create_cpython_wrapper  s�   € ð Œ=ð 	IØŒL×/Ò/°´Ø04´Ô0EØ04´¸$Ô:JØ<Gð 0ñ Iô Ið Ið 	Œ×+Ò+¨D¬L¸$¼+Ø,0¬H°dÔ6FØ8Cð 	,ñ 	Eô 	Eð 	Eð 	Eð 	ErP   c                 ó”   — | j         rt          d¦  «        ‚| j                             | j        | j        | j        | j        ¦  «         dS )z8
        Create C wrapper around this function.
        z(generator as a first-class function typeN)r›   r   rB   Úcreate_cfunc_wrapperr,   r'   r9   rÇ   rT   s    rN   rÉ   zBaseLower.create_cfunc_wrapper  sY   € ð Œ=ð 	OÝ"Ð#MÑNÔNÐNØŒ×)Ò)¨$¬,¸¼Ø*.¬(°DÔ4Dñ	Fô 	Fð 	Fð 	Fð 	FrP   c                 ó”  — | j                              | j        |¦  «        | _        | j        j        r:| j        j        }d|vr*|                     d¦  «         |                     d¦  «         | j                             d¦  «        | _	        t          | j	        ¦  «        | _        | j                             | j        ¦  «        | _        d S )Nrr   Úoptnoners   Úentry)rB   Údeclare_functionr(   rn   r5   Údbg_optnonerv   rw   r´   Úentry_blockr   rZ   rS   Úinit_call_helperrÇ   )rL   r'   Úattrsets      rN   r­   zBaseLower.setup_function'  s­   € àœ×5Ò5°d´kÀ6ÑJÔJˆŒØŒ:Ô!ð 	(Ø”mÔ.ˆGØ WÐ,Ð,Ø—’˜IÑ&Ô&Ð&Ø—’˜JÑ'Ô'Ð'Øœ=×;Ò;¸GÑDÔDˆÔÝ  Ô!1Ñ2Ô2ˆŒØœ>×:Ò:¸4¼<ÑHÔHˆÔÐÐrP   c                 ó&   — | j         j        |         S rR   )r'   Útypemap)rL   Úvarnames     rN   ÚtypeofzBaseLower.typeof3  s   € ØŒ{Ô" 7Ô+Ð+rP   r@   Úreturnc                 óD   — | j         D ]}|                     |¦  «         ŒdS )z[Called when a new instruction with the given `loc` is about to be
        lowered.
        N)rJ   r}   )rL   r@   Ú
notify_objs      rN   Ú
notify_loczBaseLower.notify_loc6  s7   € ð Ô3ð 	#ð 	#ˆJØ×Ò˜cÑ"Ô"Ð"Ð"ð	#ð 	#rP   c                 ó‚   — t           j        r2| j                             | j        d| j        j        › d|› �¦  «         d S d S )Nz
DEBUGJIT [z]: )r   Ú	DEBUG_JITrB   r¶   rZ   r'   ro   )rL   rl   s     rN   r¶   zBaseLower.debug_print=  s`   € ÝÔð 	KØŒL×$Ò$Ø”ÐI¨4¬;Ô+?ÐIÐIÀCÐIÐIñKô Kð Kð Kð Kð	Kð 	KrP   c                 óH  — t          j        |¦  «        | j        j        |         f}| j                             ¦   «         |                      |¦  «        f}t          j        t           j	        g|¢R Ž }| j         
                    t          |¦  «        } || j        |¦  «         dS )zðHelper to emit ``print(msg, varname)`` for debugging.

        Parameters
        ----------
        msg : str
            Literal string to be printed.
        varname : str
            A variable name whose value will be printed.
        N)r
   Úliteralr'   rÓ   rB   Úget_dummy_valueÚloadvarr   Ú	signatureÚnoneÚget_functionÚprintrZ   )rL   rl   rÔ   Úargtysru   ÚsigÚimpls          rN   Úprint_variablezBaseLower.print_variableB  s›   € õ ŒM˜#ÑÔØŒKÔ Ô(ð
ˆð
 ŒL×(Ò(Ñ*Ô*Ø�LŠL˜Ñ!Ô!ð
ˆõ Ô�uœzÐ3¨FÐ3Ð3Ð3ˆàŒ|×(Ò(­°Ñ4Ô4ˆØˆˆTŒ\˜4Ñ Ô Ð Ð Ð rP   rR   )NN)F) Ú__name__Ú
__module__Ú__qualname__Ú__doc__rO   ÚpropertyrS   rK   r`   rF   ry   r~   r‚   r…   r�   r‘   r”   r™   r§   r«   rœ   r®   r¹   rÅ   rÉ   r­   rÕ   r   ÚLocrÙ   r¶   rç   rV   rP   rN   r#   r#      sÝ  € € € € € ðð ð/ð /ð /ð /ðb ð&ð &ñ „Xð&ðð ð ð/ð /ð /ðð ð ð&'ð 'ð 'ð,ð ð ðð ð ð
ð ð ð

ð 
ð 
ð 
ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð>ð >ð >ð0ð 0ð 0ð0ð ð ð<ð <ð <ð" ð  ð  ð2ð ð ðEð Eð Eð EðFð Fð Fð
Ið 
Ið 
Ið,ð ,ð ,ð#˜bœfð #¨ð #ð #ð #ð #ðKð Kð Kð
!ð !ð !ð !ð !rP   r#   c                   ó  ‡ — e Zd Zej        Zˆ fd„Zed„ ¦   «         Zd„ Zˆ fd„Z	d„ Z
d„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d'd!„Z%d"„ Z&d#„ Z'd'd$„Z(d%„ Z)d&„ Z*ˆ xZ+S )(ÚLowerc                 óp   •— t          ¦   «                              ¦   «          |                      ¦   «          d S rR   )ÚsuperrK   Ú_find_singly_assigned_variable)rL   Ú	__class__s    €rN   rK   z
Lower.init]  s,   ø€ Ý‰Œ�Š‰Œˆà×+Ò+Ñ-Ô-Ð-Ð-Ð-rP   c                 óF   — | j         €dS | j         j        o| j         j         S )a  Flags that the SROA like optimisation that Numba performs (which
        prevent alloca and subsequent load/store for locals) should be disabled.
        Currently, this is conditional solely on the presence of a request for
        the emission of debug information.NF)r5   r   rH   rT   s    rN   Ú_disable_sroa_like_optzLower._disable_sroa_like_optb  s)   € ð Œ:ÐØ�5àŒzÔ#ÐJ¨D¬JÔ,JÐ(JÐJrP   c                 óÌ  — | j         }|j        }t          ¦   «         }| j         j        j        �s§t          |¦  «        }t          |¦  «        }t          t          ¦  «        }|j         	                    ¦   «         D ]%\  }}|D ]}	||	          
                    |¦  «         ŒŒ&t          t          ¦  «        }
|j         	                    ¦   «         D ]%\  }}|D ]}	|
|	          
                    |¦  «         ŒŒ&d„ | j         	                    ¦   «         D ¦   «         }i }| 	                    ¦   «         D ]=\  }}t          t          ¦  «        }|D ]}||j        j        xx         dz  cc<   Œ|||<   Œ>|D ]i}	|	|vrct          ||	         ¦  «        dk    rJt          |
|	         ¦  «        dk    r1||	         \  }||         |	         dk    r| 
                    |	¦  «         Œj|| _        i | _        d S )Nc                 óT   — i | ]%\  }}||                      t          j        ¦  «        “Œ&S rV   )Ú
find_instsr   ÚAssign)Ú.0ÚkÚvs      rN   ú
<dictcomp>z8Lower._find_singly_assigned_variable.<locals>.<dictcomp>…  sB   € ð !Að !Að !AÙ%( Q qð "# A§L¢Lµ´Ñ$;Ô$;ð !Að !Að !ArP   rb   r   )r0   r.   Úsetre   Úis_generatorr   r   r   Údefmapr/   rw   ÚusemapÚintÚtargetÚnameÚlenÚ_singly_assigned_varsÚ_blk_local_varmap)rL   r0   r.   ÚsavÚuse_defsÚalloca_varsÚvar_assign_mapÚblkÚvlÚvarÚvar_use_mapÚassigns_by_defblkÚnum_assigns_by_defblk_and_varÚdefblkÚassign_stmtsÚnum_assigns_for_blkÚstmts                    rN   rò   z$Lower._find_singly_assigned_variablem  s@  € Ø”,ˆØ”ˆå‰eŒeˆàŒ|Ô#Ô0ñ $	)Ý'¨Ñ/Ô/ˆHÝ)¨&Ñ1Ô1ˆKõ )­Ñ-Ô-ˆNØ#œ?×0Ò0Ñ2Ô2ð 1ð 1‘��RØð 1ð 1�CØ" 3Ô'×+Ò+¨CÑ0Ô0Ð0Ð0ð1õ &¥cÑ*Ô*ˆKØ#œ?×0Ò0Ñ2Ô2ð .ð .‘��RØð .ð .�CØ Ô$×(Ò(¨Ñ-Ô-Ð-Ð-ð.ð
!Að !AØ,0¬K×,=Ò,=Ñ,?Ô,?ð!Añ !Aô !AÐà,.Ð)Ø(9×(?Ò(?Ñ(AÔ(Að Lð LÑ$�˜Ý&1µ#Ñ&6Ô&6Ð#Ø(ð ?ð ?�DØ'¨¬Ô(8Ð9Ð9Ô9¸QÑ>Ð9Ð9Ñ9Ð9Ø8KÐ-¨fÑ5Ð5ð &ð )ð )�Ø˜kÐ)Ð)­c°.ÀÔ2EÑ.FÔ.FÈ!Ò.KÐ.Kå˜; sÔ+Ñ,Ô,°Ò1Ð1Ø#1°#Ô#6™˜ð 9¸Ô@ÀÔEÈÒJÐJØŸGšG C™LœL˜Løà%(ˆÔ"Ø!#ˆÔÐÐrP   c                 ó†  •— ddl m} t          t          | ¦  «                             |¦  «         || _        || j        k    rË| j        | j                 }| j         	                    |¦  «         t          ¦   «         }| j                             ¦   «         D ]G}|                     t          j        ¦  «        D ]%}|j        |vr|                     |j        ¦  «         Œ&ŒH|D ]-}|                      |¦  «        }|                      ||¦  «         Œ.|                     d¬¦  «        D ]�}t+          j        t*          j        | j        |j        ¦  «        }	|	�ot5          |	t          j        ¦  «        rU|	j        |j        u rGt5          |j        t          j        ¦  «        r(| j        |j        j                 }
d|
i| j        _          d S Œžd S )Nr   )ÚehÚcall)Úopr  )!Únumba.core.unsafer  rñ   rï   r‚   Ú_cur_ir_blockr?   r:   rZ   r°   rþ   r.   Úvaluesrø   r   ÚDelÚvaluerw   rÕ   Ú_alloca_varÚ
find_exprsr   ÚguardÚget_definitionr0   rf   Ú
isinstanceÚGlobalÚexception_checkÚ
terminatorÚBranchÚtruebrÚ_in_try_block)rL   r�   r  r»   Ú	all_namesÚxr  Úfetyper  ÚdefnÚ	targetblkró   s              €rN   r‚   zLower.pre_blockœ  sË  ø€ Ø(Ð(Ð(Ð(Ð(Ð(å�e�TÑÔ×$Ò$ UÑ+Ô+Ð+Ø"ˆÔà�D”MÒ!Ð!ð
 ”˜Tœ]Ô+ˆBØŒL×(Ò(¨Ñ,Ô,Ð,Ý™œˆIØœ×+Ò+Ñ-Ô-ð /ð /�Ø×)Ò)­"¬&Ñ1Ô1ð /ð /�AØ”w iÐ/Ð/Ø!Ÿš a¤gÑ.Ô.Ð.øð/ð "ð /ð /�ØŸš TÑ*Ô*�Ø× Ò   vÑ.Ô.Ð.Ð.ð ×$Ò$¨Ð$Ñ/Ô/ð 	ð 	ˆDÝ”>ÝÔ'¨¬°t´yñô ˆDð Ð¥J¨tµR´YÑ$?Ô$?ÐØ”: Ô!3Ð3Ð3Ý! %Ô"2µB´IÑ>Ô>ð Ø$(¤K°Ô0@Ô0GÔ$H˜	ð 7?À	Ð5J˜œÔ2Ø˜˜øð	ð 	rP   c                 ó8   — 	 | j         `d S # t          $ r Y d S w xY wrR   )rZ   r)  ÚAttributeErrorr€   s     rN   r…   zLower.post_blockÂ  s7   € ð	Ø”Ð*Ð*Ð*øÝð 	ð 	ð 	ØˆDˆDð	øøøs   ‚ ‹
˜c                 óÚ  — | j                              | j        | j        j        ¦  «         |                      | j        ¦  «         |                      t          |¦  «        ¦  «         t          |t          j
        ¦  «        r³|                      |j        j        ¦  «        }|                      ||¦  «        }d }t          |j        t          j        ¦  «        r9| j                              | j        | j        j        ¦  «         |j        j        dz   }|                      ||j        j        |¬¦  «         d S t          |t          j        ¦  «        ræ|                      |j        j        ¦  «        }| j        |j                 }| j        |j                 }|                      |j        j        ¦  «        }| j                             | j        ||t8          j        ¦  «        }	|	j        t>          j	                              d¦  «        k    sJ d|	j        z  ¦   «         ‚| j         !                    |	||¦  «         d S t          |t          j"        ¦  «        r.| j        |j                 }
| j         #                    |
¦  «         d S t          |t          j$        ¦  «        �r| j%        r| j&         '                    | ¦  «         d S |                      |j        j        ¦  «        }|                      |j        j        ¦  «        }| j(        j)        }t          |t8          j*        ¦  «        r$| j+         ,                    | j        |||¦  «         d S ||k    sJ d -                    ||¦  «        ¦   «         ‚| j         .                    | j        ||¦  «        }| j+         /                    | j        |¦  «         d S t          |t          j0        ¦  «        rd S t          |t          j1        ¦  «        �r| j(        j2        |         }|€J ‚	 | j         3                    d|¦  «        }|                      |j        j        ¦  «        }
|                      |j        j        ¦  «        }|                      |j        j        ¦  «        }| j                             | j        |||j4        d         ¦  «        } || j        |
|j        |f¦  «        S # tj          $ r* |  6                    |j        |j7        |j        |¦  «        cY S w xY wt          |t          j8        ¦  «        r|  9                    |¦  «         d S t          |t          j:        ¦  «        r=| j(        j2        |         }|€J ‚|  6                    |j        |j        |j        |¦  «        S t          |t          j;        ¦  «        r=| j(        j2        |         }|€J ‚|  6                    |j<        |j=        |j        |¦  «        S t          |t          j>        ¦  «        �rQ|                      |j        j        ¦  «        }
|                      |j        j        ¦  «        }|                      |j        j        ¦  «        }|                      |j        j        ¦  «        }| j(        j2        |         }|€J ‚t~          j@        }| j        jA         B                    |¦  «        }| C                    | j        jA        |j4        i ¦  «        }| j         3                    ||¦  «        }||j4        d         k    sJ ‚| j                             | j        |||j4        d         ¦  «        } || j        |
|f¦  «        S t          |t          jD        ¦  «        r|  E                    |j        ¦  «         d S t          |t          jF        ¦  «        �r|                      |j        j        ¦  «        }
|                      |j        j        ¦  «        }| j(        j2        |         }|                      |j        j        ¦  «        }|                      |j        j        ¦  «        }|€J ‚|j4        d         |k    sJ ‚| j         G                    |jH        |¦  «        }| j                             | j        |||j4        d         ¦  «        } || j        |
|f¦  «        S t          |t          jI        ¦  «        r|  J                    |¦  «         d S t          |t          jK        ¦  «        r|  L                    |¦  «         d S t          |t          jM        ¦  «        r|  N                    |¦  «         d S t          |t          jO        ¦  «        r|  P                    |¦  «         d S tk          t=          |¦  «        ¦  «        ‚)Nrb   )Úargidxzcond is not i1: %sz)type '{}' does not match return type '{}'Ústatic_setitemé   r   )Qr   Úmark_locationrZ   r@   rd   rÙ   r¶   Ústrr#  r   rù   rÕ   r  r  Úlower_assignr  ÚArgrG   r!   Ústorevarr'  rß   Úcondr:   r(  ÚfalsebrrB   Úcastr
   ÚbooleanÚtypeÚllvmliteÚIntTypeÚcbranchÚJumpr±   ÚReturnr1   r›   Úreturn_from_generatorr'   ÚrestypeÚOptionalrS   Úreturn_optional_valuer·   Úget_return_valueÚreturn_valueÚPopBlockÚStaticSetItemÚ	calltypesrâ   ru   ÚNotImplementedErrorÚlower_setitemÚ	index_varÚPrintÚlower_printÚSetItemÚStoreMapÚdctÚkeyÚDelItemÚoperatorÚdelitemÚtyping_contextÚresolve_value_typeÚget_call_typer  ÚdelvarÚSetAttrÚget_setattrÚattrÚDynamicRaiseÚlower_dynamic_raiseÚDynamicTryRaiseÚlower_try_dynamic_raiseÚStaticRaiseÚlower_static_raiseÚStaticTryRaiseÚlower_static_try_raise)rL   r¾   ÚtyÚvalr2  r:  ÚtrÚflÚcondtyÚpredr  ÚotyÚretvalrà   ræ   r  Úvaluetyr!   ÚtargettyÚindextyr  ÚfnopÚcallsigs                          rN   rÁ   zLower.lower_instÉ  sh  € àŒ×$Ò$ T¤\°4´8´=ÑAÔAÐAØ�Š˜œÑ!Ô!Ð!Ø×Ò�˜T™œÑ#Ô#Ð#Ý�d�BœIÑ&Ô&ð E	2Ø—’˜Tœ[Ô-Ñ.Ô.ˆBØ×#Ò# B¨Ñ-Ô-ˆCØˆFõ ˜$œ*¥b¤fÑ-Ô-ð .à”×,Ò,¨T¬\¸4¼=Ô;MÑNÔNÐNØœÔ)¨AÑ-�Ø�MŠM˜#˜tœ{Ô/¸ˆMÑ?Ô?Ð?Ð?Ð?å˜�bœiÑ(Ô(ð y	2Ø—<’< ¤	¤Ñ/Ô/ˆDØ”˜Tœ[Ô)ˆBØ”˜Tœ\Ô*ˆBà—[’[ ¤¤Ñ0Ô0ˆFØ”<×$Ò$ T¤\°4¸ÅÄÑOÔOˆDØ”9¥¤× 3Ò 3°AÑ 6Ô 6Ò6Ð6Ð6Ø%¨¬	Ñ1ñ 7Ô6Ð6àŒL× Ò   r¨2Ñ.Ô.Ð.Ð.Ð.å˜�bœgÑ&Ô&ð n	2Ø”[ ¤Ô-ˆFØŒL×Ò Ñ'Ô'Ð'Ð'Ð'å˜�bœiÑ(Ô(ñ j	2ØÔ"ð à”×3Ò3°DÑ9Ô9Ð9Ø�Ø—,’,˜tœzœÑ/Ô/ˆCØ—+’+˜dœjœoÑ.Ô.ˆCØ”Ô$ˆBÝ˜"�eœnÑ-Ô-ð à”×4Ò4°T´\À2ÀsÈCÑPÔPÐPØ�Ø˜’9�9�9Ø;×BÒBÀ3ÈÑKÔKñ ”9�9à”\×2Ò2°4´<ÀÀSÑIÔIˆFØŒN×'Ò'¨¬°fÑ=Ô=Ð=Ð=Ð=å˜�bœkÑ*Ô*ð Y	2ØˆDå˜�bÔ.Ñ/Ô/ñ V	2ØœÔ-¨dÔ3ˆIØÐ(Ð(Ð(ðGØ”|×0Ò0Ð1AÀ9ÑMÔM�ð
 Ÿš d¤kÔ&6Ñ7Ô7�ØŸš T¤Z¤_Ñ5Ô5�ØŸ+š+ d¤j¤oÑ6Ô6�Øœ×)Ò)¨$¬,¸¸wØ*3¬.¸Ô*;ñ=ô =�à�t˜DœL¨6°4´:¸uÐ*EÑFÔFÐFøõ 'ð Að Að AØ×)Ò)¨$¬+°t´~Ø*.¬*°iñAô Að Að Að AðAøøøõ ˜�bœhÑ'Ô'ð F	2Ø×Ò˜TÑ"Ô"Ð"Ð"Ð"å˜�bœjÑ)Ô)ð C	2ØœÔ-¨dÔ3ˆIØÐ(Ð(Ð(Ø×%Ò% d¤k°4´:¸t¼zØ&/ñ1ô 1ð 1õ ˜�bœkÑ*Ô*ð =	2ØœÔ-¨dÔ3ˆIØÐ(Ð(Ð(Ø×%Ò% d¤h°´¸$¼*ÀiÑPÔPÐPå˜�bœjÑ)Ô)ñ 8	2Ø—\’\ $¤+Ô"2Ñ3Ô3ˆFØ—L’L ¤¤Ñ1Ô1ˆEà—{’{ 4¤;Ô#3Ñ4Ô4ˆHØ—k’k $¤*¤/Ñ2Ô2ˆGàœÔ-¨dÔ3ˆIØÐ(Ð(Ð(åÔ!ˆBØ”<Ô.×AÒAÀ"ÑEÔEˆDØ×(Ò(Ø”Ô+¨Y¬^¸Rñô ˆGð ”<×,Ò,¨T°7Ñ;Ô;ˆDà˜yœ~¨aÔ0Ò0Ð0Ð0Ð0Ø”L×%Ò% d¤l°E¸7Ø&/¤n°QÔ&7ñ9ô 9ˆEð �4˜œ v¨u oÑ6Ô6Ð6å˜�bœfÑ%Ô%ð !	2Ø�KŠK˜œ
Ñ#Ô#Ð#Ð#Ð#å˜�bœjÑ)Ô)ñ 	2Ø—\’\ $¤+Ô"2Ñ3Ô3ˆFØ—L’L ¤¤Ñ1Ô1ˆEØœÔ-¨dÔ3ˆIà—{’{ 4¤;Ô#3Ñ4Ô4ˆHØ—k’k $¤*¤/Ñ2Ô2ˆGØÐ(Ð(Ð(Ø”> !Ô$¨Ò0Ð0Ð0Ð0Ø”<×+Ò+¨D¬I°yÑAÔAˆDð ”L×%Ò% d¤l°E¸7Ø&/¤n°QÔ&7ñ9ô 9ˆEð �4˜œ v¨u oÑ6Ô6Ð6å˜�bœoÑ.Ô.ð 	2Ø×$Ò$ TÑ*Ô*Ð*Ð*Ð*å˜�bÔ0Ñ1Ô1ð 
	2Ø×(Ò(¨Ñ.Ô.Ð.Ð.Ð.å˜�bœnÑ-Ô-ð 	2Ø×#Ò# DÑ)Ô)Ð)Ð)Ð)å˜�bÔ/Ñ0Ô0ð 	2Ø×'Ò'¨Ñ-Ô-Ð-Ð-Ð-õ &¥d¨4¡j¤jÑ1Ô1Ð1s   Ï7R5 Ò51S)Ó(S)c                 óÔ  — |                       |j        ¦  «        }|                       |j        ¦  «        }|                       |j        ¦  «        }|                      |j        ¦  «        }|                      |j        ¦  «        }	|                      |j        ¦  «        }
t          j        }| j        j                             |¦  «        }|                     | j        j        |j	        i ¦  «        }| j         
                    ||¦  «        }t          |t          j        ¦  «        r(| j                             | j        |||j        ¦  «        }n1t          j        } ||¦  «         ||j	        d         ¦  «        k    sJ ‚| j                             | j        ||
|j	        d         ¦  «        }| j                             | j        ||	|j	        d         ¦  «        } || j        |||f¦  «        S )Nr   rb   r4  )rß   r  rÕ   rW  ÚsetitemrB   rY  rZ  r[  ru   râ   r#  r
   rF  r<  rZ   r>  Ú	unliteral)rL   Ú
target_varrO  Ú	value_varrà   r  r  r!   rq  rp  rr  r  rs  rt  ræ   Úuls                   rN   rN  zLower.lower_setitemU  s®  € Ø—’˜jœoÑ.Ô.ˆØ—’˜Yœ^Ñ,Ô,ˆØ—’˜Yœ^Ñ,Ô,ˆà—;’;˜zœÑ/Ô/ˆØ—+’+˜iœnÑ-Ô-ˆØ—+’+˜iœnÑ-Ô-ˆåÔˆØŒ|Ô*×=Ò=¸bÑAÔAˆØ×$Ò$ØŒLÔ'¨¬¸ñ
ô 
ˆð Œ|×(Ò(¨¨wÑ7Ô7ˆõ �h¥¤Ñ/Ô/ð 	9Ø”\×&Ò& t¤|°V¸XØ'/¤}ñ6ô 6ˆFˆFõ ”ˆBØ�2�h‘<”< 2 2 i¤n°QÔ&7Ñ#8Ô#8Ò8Ð8Ð8Ð8à”×!Ò! $¤,°°wØ"+¤.°Ô"3ñ5ô 5ˆà”×!Ò! $¤,°°wØ"+¤.°Ô"3ñ5ô 5ˆð ˆt�D”L 6¨5°%Ð"8Ñ9Ô9Ð9rP   c                 ó0   — |                       |¦  «         d S rR   )rg  ©rL   r¾   s     rN   rc  zLower.lower_try_dynamic_raiset  s   € ð 	×#Ò# DÑ)Ô)Ð)Ð)Ð)rP   c                 óÆ  — |j         }g }g }|D ]•}t          |t          j        ¦  «        rK|                      |j        ¦  «        }|                      |j        ¦  «        }|                      ||¦  «         nd }|}|                     |¦  «         |                     |¦  «         Œ–|  	                    |j
        t          |¦  «        t          |¦  «        | j        ¬¦  «         d S ©Nr½   )r‹   r#  r   ÚVarrÕ   r  rß   ÚincrefÚappendr�   rŠ   Útupler@   )rL   r¾   r‹   ru   rŒ   Úexc_argÚtypri  s           rN   ra  zLower.lower_dynamic_raisey  sé   € Ø”=ˆØˆØˆØð 
	ð 
	ˆGÝ˜'¥2¤6Ñ*Ô*ð à—k’k '¤,Ñ/Ô/�Ø—l’l 7¤<Ñ0Ô0�Ø—’˜C Ñ%Ô%Ð%Ð%à�Ø�Ø�OŠO˜CÑ Ô Ð Ø�KŠK˜ÑÔÐÐà×%Ò% d¤nµe¸D±k´kÝ&+¨H¡o¤o¸4¼8ð 	&ñ 	Eô 	Eð 	Eð 	Eð 	ErP   c                 óž   — |j         €|                      d | j        ¬¦  «         d S |                      |j         |j        | j        ¬¦  «         d S r~  )rŠ   r‘   r@   r‹   r|  s     rN   re  zLower.lower_static_raiseŒ  sR   € ØŒ>Ð!à×!Ò! $¨D¬HÐ!Ñ5Ô5Ð5Ð5Ð5à×!Ò! $¤.°$´-ÀTÄXÐ!ÑNÔNÐNÐNÐNrP   c                 óž   — |j         €|                      d | j        ¬¦  «         d S |                      |j         |j        | j        ¬¦  «         d S r~  )rŠ   r”   r@   r‹   r|  s     rN   rg  zLower.lower_static_try_raise“  sR   € ØŒ>Ð!à×Ò˜t¨¬ÐÑ2Ô2Ð2Ð2Ð2à×Ò˜tœ~¨t¬}À$Ä(ÐÑKÔKÐKÐKÐKrP   c                 ó   — |j         }t          |t          j        t          j        t          j        f¦  «        r>| j                             | j        ||j         ¦  «        }|  	                    ||¦  «         |S t          |t          j
        ¦  «        r|                      ||¦  «        S t          |t          j        ¦  «        rn|                      |j        ¦  «        }|                      |j        ¦  «        }| j                             | j        |||¦  «        }|  	                    ||¦  «         |S t          |t          j        ¦  «        �r!t%          j        | j        ¦  «        5  |                      d|j        z   ¦  «        }t          |t(          j        ¦  «        rl|j         }| j        j        }	|	                     |¦  «        }
| j                             | j        |
|¦  «        }| j                             | j        ||
|¦  «        }n4| j        |j                 }| j                             | j        |||¦  «        }|  	                    ||¦  «         |cd d d ¦  «         S # 1 swxY w Y   nHt          |t          j        ¦  «        r.|                      ||¦  «        }|  	                    ||¦  «         |S t9          t;          |¦  «        |¦  «        ‚)Nzarg.)r  r#  r   ÚConstr$  ÚFreeVarrB   Úget_constant_genericrZ   r€  ÚExprÚ
lower_exprr  rß   r  rÕ   r<  r8  r   r¯   r
   ÚOmittedrY  Ú!resolve_value_type_prefer_literalrª   r!   ÚYieldÚlower_yieldrM  r>  )rL   rh  r¾   r  Úresri  rn  ÚargtyÚpyvalÚtyctxÚvaltyÚconsts               rN   r7  zLower.lower_assignš  sµ  € Ø”
ˆå�e�bœh­¬	µ2´:Ð>Ñ?Ô?ð +	Ø”,×3Ò3°D´LÀ"Ø49´KñAô AˆCà�KŠK˜˜CÑ Ô Ð ØˆJå˜�rœwÑ'Ô'ð %	Ø—?’? 2 uÑ-Ô-Ð-å˜�rœvÑ&Ô&ð "	Ø—,’,˜uœzÑ*Ô*ˆCØ—+’+˜eœjÑ)Ô)ˆCØ”,×#Ò# D¤L°#°s¸BÑ?Ô?ˆCØ�KŠK˜˜CÑ Ô Ð ØˆJå˜�rœvÑ&Ô&ñ 	õ Ô+¨D¬LÑ9Ô9ð ð ð Ÿš F¨U¬ZÑ$7Ñ8Ô8�Ý˜e¥U¤]Ñ3Ô3ð JØ!œK�EØ œLÔ7�EØ!×CÒCÀEÑJÔJ�Eà œL×=Ò=Øœ e¨Uñô �Eð œ,×+Ò+¨D¬L¸%ÀÈÑKÔK�C�Càœ+ e¤kÔ2�CØœ,×+Ò+¨D¬L¸#¸uÀbÑIÔI�CØ—’˜B Ñ$Ô$Ð$Øð%ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð õ( ˜�rœxÑ(Ô(ð 	Ø×"Ò" 2 uÑ-Ô-ˆCØ�KŠK˜˜CÑ Ô Ð ØˆJå!¥$ u¡+¤+¨uÑ5Ô5Ð5s   Å#C/IÉI#É&I#c                 óh  — | j         j        |j                 }|j        |u sJ ‚t	          j        | ||j        ¦  «        }|                     ¦   «          |                      |j	        j
        ¦  «        }|                      |j	        j
        ¦  «        }| j        j        }| j                             | j        |||¦  «        }| j                             | j        ||¦  «        }	| j                             | j        |	¦  «         |                     ¦   «          | j                             | j        |d ¦  «        S rR   )r1   Úyield_pointsr!   r¾   r   Ú
LowerYieldÚ	live_varsÚlower_yield_suspendrß   r  r  rÕ   rž   Ú
yield_typerB   r<  rZ   rH  rS   rI  Úlower_yield_resumerŠ  )
rL   Úrettyr¾   ÚypÚyri  r„  Úactual_rettypÚyretro  s
             rN   r�  zLower.lower_yieldÌ  s  € ØÔ Ô-¨d¬jÔ9ˆØŒw˜$ˆˆˆˆÝÔ! $¨¨B¬LÑ9Ô9ˆØ	×ÒÑÔÐà�lŠl˜4œ:œ?Ñ+Ô+ˆØ�kŠk˜$œ*œ/Ñ*Ô*ˆØœÔ/ˆð Œ|× Ò  ¤¨s°C¸ÑGÔGˆð ”×.Ò.ØŒL˜-¨ñ
ô 
ˆð
 	Œ×#Ò# D¤L°&Ñ9Ô9Ð9ð 	
×ÒÑÔÐàŒ|×0Ò0°´¸uÀdÑKÔKÐKrP   c                 ó  ‡ ‡‡‡— ‰ j         j                             ‰¦  «        Š|j        }|j        }|j        }|j        }‰                      |j        ¦  «        }‰                      |j        ¦  «        }	‰  	                    |j        ¦  «        }‰  	                    |j        ¦  «        }‰ j
        j        |         Š‰ j                              ‰ j        ||‰j        d         ¦  «        }‰ j                              ‰ j        ||	‰j        d         ¦  «        }ˆˆ ˆfd„}
ˆˆ ˆfd„} |t          |¦  «        t          |¦  «        f||f¦  «        }|� |
|¦  «        S  |t          |¦  «        |	f||f¦  «        }|� |
|¦  «        S  ||t          |¦  «        f||f¦  «        }|� |
|¦  «        S ‰                     ‰ j         j        ‰j        i ¦  «        }‰ j                              ‰|¦  «        } |‰ j        ||f¦  «        } |
|¦  «        S )Nr   rb   c                 óR   •— ‰j                              ‰j        | ‰j        ‰¦  «        S rR   )rB   r<  rZ   Úreturn_type)r‘  ÚrestyrL   rà   s    €€€rN   Úcast_resultz&Lower.lower_binop.<locals>.cast_resultú  s.   ø€ Ø”<×$Ò$ T¤\°3Ø%.Ô%:¸EñCô Cð CrP   c                 ó‚  •— t          d„ |D ¦   «         ¦  «        rd S 	 t          ‰t          j        ¦  «        r"‰                     ‰j        j        | i ¦  «        }nt          j        ‰j	        g| ¢R Ž }n# t          $ r Y d S w xY w	 ‰j                             ‰|¦  «        } |‰j        |¦  «        S # t          $ r Y d S w xY w)Nc              3   ó2   K  — | ]}|t           j        u V — Œd S rR   )r   Ú	UNDEFINED©rú   Úas     rN   ú	<genexpr>z=Lower.lower_binop.<locals>.try_static_impl.<locals>.<genexpr>   s)   è è € Ð3Ð3¨�1�œÐ$Ð3Ð3Ð3Ð3Ð3Ð3rP   )Úanyr#  r
   ÚFunctionr[  rB   rY  r   rà   r¥  r   râ   rZ   rM  )Útysru   Ú
static_sigÚstatic_implr  rL   rà   s       €€€rN   Útry_static_implz*Lower.lower_binop.<locals>.try_static_implÿ  sö   ø€ ÝÐ3Ð3¨dÐ3Ñ3Ô3Ñ3Ô3ð Ø�tðÝ˜b¥%¤.Ñ1Ô1ð OØ!#×!1Ò!1°$´,Ô2MØ25°rñ";ô ";�J�Jõ "(Ô!1°)Ô2GÐ!NÈ#Ð!NÐ!NÐ!N�JøøÝð ð ð Ø�t�tðøøøðØ"œl×7Ò7¸¸JÑGÔG�Ø"�{ 4¤<°Ñ6Ô6Ð6øÝ&ð ð ð Ø�t�tðøøøs$   žAA2 Á2
B Á?B Â+B0 Â0
B>Â=B>)rB   rY  rZ  ÚlhsÚrhsÚ
static_lhsÚ
static_rhsrÕ   r  rß   r'   rL  r<  rZ   ru   Ú_lit_or_omittedr[  râ   )rL   r¦  Úexprr  r´  rµ  r¶  r·  ÚltyÚrtyr§  r³  r‘  rå   ræ   rà   s   `` `           @rN   Úlower_binopzLower.lower_binopæ  sV  øøøø€ ð Œ\Ô(×;Ò;¸BÑ?Ô?ˆàŒhˆØŒhˆØ”_ˆ
Ø”_ˆ
Ø�kŠk˜#œ(Ñ#Ô#ˆØ�kŠk˜#œ(Ñ#Ô#ˆØ�lŠl˜3œ8Ñ$Ô$ˆØ�lŠl˜3œ8Ñ$Ô$ˆð ”KÔ)¨$Ô/ˆ	ØŒl×Ò ¤¨c°3¸	¼ÀqÔ8IÑJÔJˆØŒl×Ò ¤¨c°3¸	¼ÀqÔ8IÑJÔJˆð	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð
	ð 	ð 	ð 	ð 	ð 	ð 	ð" ˆoÝ˜ZÑ(Ô(­/¸*Ñ*EÔ*EÐFØ˜Ð$ñ
ô 
ˆð ˆ?Ø�;˜sÑ#Ô#Ð#àˆoÝ˜ZÑ(Ô(¨#Ð.Ø˜Ðñ
ô 
ˆð ˆ?Ø�;˜sÑ#Ô#Ð#àˆoØ•/ *Ñ-Ô-Ð.Ø�*Ðñ
ô 
ˆð ˆ?Ø�;˜sÑ#Ô#Ð#ð ×Ò˜tœ|Ô:¸I¼NÈBÑOÔOˆØŒ|×(Ò(¨¨SÑ1Ô1ˆØˆd�4”< # s Ñ,Ô,ˆØˆ{˜3ÑÔÐrP   c                 óh  ‡ — ‰                       |j        ¦  «        }‰                       |j        ¦  «        }t          j        }‰ j        j                             |¦  «        }	|	                     ‰ j        j        |j        i ¦  «        }
‰ j         	                    |	|
¦  «        }||f}‰  
                    |j        ¦  «        ‰  
                    |j        ¦  «        f}ˆ fd„t          |||j        ¦  «        D ¦   «         } |‰ j        |¦  «        }‰ j                             ‰ j        ||j        |¦  «        S )Nc                 ó\   •— g | ](\  }}}‰j                              ‰j        |||¦  «        ‘Œ)S rV   ©rB   r<  rZ   )rú   ÚavÚatÚftrL   s       €rN   ú
<listcomp>z'Lower.lower_getitem.<locals>.<listcomp>:  sG   ø€ ð ;ð ;ð ;Ù"˜˜B ð ”L×%Ò% d¤l°B¸¸BÑ?Ô?ð ;ð ;ð ;rP   )rß   r  rW  ÚgetitemrB   rY  rZ  r[  ru   râ   rÕ   ÚziprZ   r<  r¥  )rL   r¦  r¹  r  r!   rà   ÚbasevalÚindexvalr  rs  rt  ræ   ÚargvalsÚargtypsÚcastvalsr‘  s   `               rN   Úlower_getitemzLower.lower_getitem,  s1  ø€ Ø—,’,˜uœzÑ*Ô*ˆØ—<’< ¤
Ñ+Ô+ˆåÔˆØŒ|Ô*×=Ò=¸bÑAÔAˆØ×$Ò$ØŒLÔ'¨¬¸ñ
ô 
ˆð Œ|×(Ò(¨¨wÑ7Ô7ˆà˜HÐ%ˆØ—;’;˜uœzÑ*Ô*Ø—;’;˜uœzÑ*Ô*ð,ˆð;ð ;ð ;ð ;Ý&)¨'°7Ø*3¬.ñ':ô ':ð;ñ ;ô ;ˆð ˆd�4”< Ñ*Ô*ˆØŒ|× Ò  ¤¨sØ!*Ô!6Ø!&ñ(ô (ð 	(rP   c                 ó¨  — t          |t          ¦  «        rh|                      |j        j        ¦  «        |j                 }| j                             |                      |j        j        ¦  «        |j        ¦  «        }n4|                      |j        ¦  «        }|                      |j        ¦  «        }| j	         
                    | j        |||¦  «        S )zh
        Cast a Numba IR variable to the given Numba type, returning a
        low-level value.
        )r#  r   rÕ   r    r  r!   rZ   Úextract_valuerß   rB   r<  )rL   r  rh  Úvartyri  s        rN   Ú	_cast_varzLower._cast_varB  s¨   € õ
 �c�;Ñ'Ô'ð 	)Ø—K’K ¤
¤Ñ0Ô0°´Ô;ˆEØ”,×,Ò,¨T¯\ª\¸#¼*¼/Ñ-JÔ-JØ-0¬Yñ8ô 8ˆCˆCð —K’K ¤Ñ)Ô)ˆEØ—,’,˜sœxÑ(Ô(ˆCØŒ|× Ò  ¤¨s°E¸2Ñ>Ô>Ð>rP   c                 óÀ  ‡ ‡‡— ‰ra‰                       ‰j        ¦  «        }t          |t          j        ¦  «        sJ ‚|ˆfd„t          t          |¦  «        ¦  «        D ¦   «         z   }‰j        }|€6|rt          d|›�¦  «        ‚ˆ fd„t          |‰j
        ¦  «        D ¦   «         }n8ˆ ˆfd„}	ˆ ˆfd„}
ˆ ˆfd„}t          j        ||t          |¦  «        |	|
|¦  «        }|S )Nc                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS rV   )r   )rú   Úir    s     €rN   rÃ  z(Lower.fold_call_args.<locals>.<listcomp>V  s9   ø€ ð #Cð #Cð #CØ'(õ $/¨v°qÑ#9Ô#9ð #Cð #Cð #CrP   z+unsupported keyword arguments when calling c                 óB   •— g | ]\  }}‰                      ||¦  «        ‘ŒS rV   ©rÏ  ©rú   r  ÚsigtyrL   s      €rN   rÃ  z(Lower.fold_call_args.<locals>.<listcomp>_  sA   ø€ ð Hð Hð HÙ%˜3 ð —~’~ c¨5Ñ1Ô1ð Hð Hð HrP   c                 óF   •— ‰                      |‰j        |          ¦  «        S rR   )rÏ  ru   )r!   Úparamr  rL   rà   s      €€rN   Únormal_handlerz,Lower.fold_call_args.<locals>.normal_handlerb  s   ø€ Ø—~’~ c¨9¬>¸%Ô+@ÑAÔAÐArP   c                 ó\   •— ‰j                              ‰j        ‰j        |          |¦  «        S rR   )rB   rŠ  rZ   ru   )r!   rØ  ÚdefaultrL   rà   s      €€rN   Údefault_handlerz-Lower.fold_call_args.<locals>.default_handlere  s0   ø€ Ø”|×8Ò8Ø”L )¤.°Ô"7¸ñBô Bð BrP   c                 óÒ   •— ‰j         |          }t          |t          j        ¦  «        s
J |¦   «         ‚ˆfd„t	          ||¦  «        D ¦   «         }t          j        ‰j        |¦  «        S )Nc                 óB   •— g | ]\  }}‰                      ||¦  «        ‘ŒS rV   rÔ  rÕ  s      €rN   rÃ  zALower.fold_call_args.<locals>.stararg_handler.<locals>.<listcomp>l  sA   ø€ ð Cð Cð CÙ(˜c 5ð Ÿ.š.¨¨eÑ4Ô4ð Cð Cð CrP   )ru   r#  r
   Ú	BaseTuplerÅ  r   Úmake_anonymous_structrZ   )r!   rØ  ÚvarsÚ
stararg_tyr  rL   rà   s        €€rN   Ústararg_handlerz-Lower.fold_call_args.<locals>.stararg_handleri  s}   ø€ Ø&œ^¨EÔ2�
Ý! *­e¬oÑ>Ô>ÐJÐJÀ
ÑJÔJÐ>ðCð Cð Cð CÝ,/°°jÑ,AÔ,AðCñ Cô C�åÔ4°T´\À6ÑJÔJÐJrP   )rÕ   r  r#  r
   rß  Úranger  ÚpysigrM  rÅ  ru   r   Úfold_argumentsÚdict)rL   Úfntyrà   Úpos_argsr    Úkw_argsÚ	tp_varargrå  rÈ  rÙ  rÜ  rã  s   ` ` `       rN   Úfold_call_argszLower.fold_call_argsP  s•  øøø€ Øð 	Cð Ÿš F¤KÑ0Ô0ˆIÝ˜i­¬Ñ9Ô9Ð9Ð9Ð9Øð #Cð #Cð #Cð #CÝ,1µ#°i±.´.Ñ,AÔ,Að#Cñ #Cô #Cñ CˆHð ”ˆØˆ=Øð GÝ)Ð)Ø?C¸tð+Fñ Gô Gð GðHð Hð Hð HÝ),¨X°y´~Ñ)FÔ)FðHñ Hô HˆGˆGðBð Bð Bð Bð Bð BðBð Bð Bð Bð Bð BðKð Kð Kð Kð Kð Kõ Ô+¨EØ,4µd¸7±m´mØ,:Ø,;Ø,;ñ	=ô =ˆGð
 ˆrP   c                 ó´  — | j         j        |         }|j        t          j        k    sJ ‚| j        j                             t          ¦  «        }t          |j
        ¦  «        }t          |j
        ¦  «        }t          t          |¦  «        ¦  «        D ]D}||j        v r9|j        |         }t          |t          ¦  «        rt          j        |¦  «        ||<   ŒEt#          j        |j        g|¢R Ž }|                     |j        ¬¦  «        }|                      ||||j        i ¦  «        }	| j                             t          |¦  «        }
 |
| j        |	¦  «         dS )z$
        Lower a ir.Print()
        )rå  N)r'   rL  r¥  r
   rá   rB   rY  rZ  rã   Úlistru   rä  r  Úconstsr#  r6  rÝ   r   rà   Úreplacerå  rì  r    râ   rZ   )rL   r¾   rå   rè  Úpos_tysré  rÒ  r“  Ú	fixed_sigrÈ  ræ   s              rN   rQ  zLower.lower_printw  s7  € ð ŒkÔ# DÔ)ˆØŒ¥%¤*Ò,Ð,Ð,Ð,ØŒ|Ô*×=Ò=½eÑDÔDˆõ �s”x‘.”.ˆÝ˜œ	‘?”?ˆÝ•s˜8‘}”}Ñ%Ô%ð 	6ð 	6ˆAØ�D”KÐÐØœ Aœ�Ý˜e¥SÑ)Ô)ð 6Ý!&¤¨uÑ!5Ô!5�G˜A‘JøåÔ$ S¤_Ð?°wÐ?Ð?Ð?ˆ	Ø×%Ò%¨C¬IÐ%Ñ6Ô6ˆ	à×%Ò% d¨C°¸4¼;ÈÑKÔKˆØŒ|×(Ò(­°	Ñ:Ô:ˆØˆˆTŒ\˜7Ñ#Ô#Ð#Ð#Ð#rP   c                 ó"  — | j         j        |         }|                      d                     |¦  «        ¦  «         t	          |j        t          j        ¦  «        r| j         	                    ¦   «         S |  
                    |j        j        ¦  «        }t	          |t          j        ¦  «        r|                      |||¦  «        }nßt	          |t          j        ¦  «        r|                      |||¦  «        }n­t	          |t          j        ¦  «        r|                      |||¦  «        }n{t	          |t          j        ¦  «        r|                      |||¦  «        }nIt	          |t          j        ¦  «        r|                      |||¦  «        }n|                      |||¦  «        }|€E|j        t          j        k    r| j         	                    ¦   «         }nt3          d| j        ¬¦  «        ‚| j                             | j        ||j        |¦  «        S )Nz# lower_call: expr = {0}z2non-void function returns None from implementation)rl   r@   )r'   rL  r¶   r·   r#  r¥  r
   ÚPhantomrB   rÞ   rÕ   rf   r  ÚObjModeDispatcherÚ_lower_call_ObjModeDispatcherÚExternalFunctionÚ_lower_call_ExternalFunctionÚExternalFunctionPointerÚ#_lower_call_ExternalFunctionPointerÚRecursiveCallÚ_lower_call_RecursiveCallÚFunctionTypeÚ_lower_call_FunctionTypeÚ_lower_call_normalÚvoidr   r@   r<  rZ   )rL   r¦  r¹  rà   rè  r‘  s         rN   Ú
lower_callzLower.lower_call”  sô  € Ø”KÔ)¨$Ô/ˆ	Ø×ÒÐ3×:Ò:¸4Ñ@Ô@ÑAÔAÐAÝ�iÔ+­U¬]Ñ;Ô;ð 	2Ø”<×/Ò/Ñ1Ô1Ð1à�{Š{˜4œ9œ>Ñ*Ô*ˆå�d�EÔ3Ñ4Ô4ð 	AØ×4Ò4°T¸4ÀÑKÔKˆCˆCå˜�eÔ4Ñ5Ô5ð 	AØ×3Ò3°D¸$À	ÑJÔJˆCˆCå˜�eÔ;Ñ<Ô<ð 	AØ×:Ò:Ø�d˜Iñ'ô 'ˆCˆCõ ˜�eÔ1Ñ2Ô2ð 	AØ×0Ò0°°t¸YÑGÔGˆCˆCå˜�eÔ0Ñ1Ô1ð 	AØ×/Ò/°°d¸IÑFÔFˆCˆCð ×)Ò)¨$°°iÑ@Ô@ˆCð
 ˆ;ØÔ$­¬
Ò2Ð2Ø”l×2Ò2Ñ4Ô4��å#ØLØœðñ ô ð ð
 Œ|× Ò  ¤¨s°IÔ4IØ!&ñ(ô (ð 	(rP   c                 ó¦  ‡ — ddl m} ‰                      ¦   «          ‰ j                             ¦   «         }d„ |j        D ¦   «         }ˆ fd„|D ¦   «         }ˆ fd„|D ¦   «         }t          ||¦  «        D ]\  }	}
‰                      |
|	¦  «         Œˆ fd„t          ||¦  «        D ¦   «         } |‰ j        ¦  «                             ||¦  «        }‰ j         	                    ||¦  «        }t          j        ‰ j        |¦  «        }‰ j                             |¦  «        5 \  }}|5  |D ]}‰ j                             |¦  «         Œ‰ j                             |¦  «         ‰ j                             ‰ j        ¦  «         d d d ¦  «         n# 1 swxY w Y   |5  ‰ j                             |j        j        |¦  «        }|j        }‰ j                             |¦  «         |D ]}‰ j                             |¦  «         Œt-          |j        ¦  «        r|                     ¦   «          ‰ j                             |¦  «         ‰ j                             |j        ¦  «        5  ‰ j                             ‰ j        ¦  «         d d d ¦  «         n# 1 swxY w Y   |cd d d ¦  «         cd d d ¦  «         S # 1 swxY w Y   	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr   )ÚObjModeUtilsc                 ó   — g | ]	}|j         ‘Œ
S rV   ©r  r«  s     rN   rÃ  z7Lower._lower_call_ObjModeDispatcher.<locals>.<listcomp>Å  s   € Ð.Ð.Ð.˜q�A”FÐ.Ð.Ð.rP   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS rV   )rÕ   ©rú   r¬  rL   s     €rN   rÃ  z7Lower._lower_call_ObjModeDispatcher.<locals>.<listcomp>Æ  s#   ø€ Ð5Ð5Ð5 q�D—K’K ‘N”NÐ5Ð5Ð5rP   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS rV   )rß   r  s     €rN   rÃ  z7Lower._lower_call_ObjModeDispatcher.<locals>.<listcomp>Ç  s#   ø€ Ð7Ð7Ð7¨�T—\’\ !‘_”_Ð7Ð7Ð7rP   c                 óX   •— g | ]&\  }}‰j                              ||‰j        ¦  «        ‘Œ'S rV   )rX   Úfrom_native_valuer\   )rú   ÚatypÚavalrL   s      €rN   rÃ  z7Lower._lower_call_ObjModeDispatcher.<locals>.<listcomp>Ì  sK   ø€ ð ?ð ?ð ?á!�t˜Tð ”:×/Ò/°°dØ04Ô0@ñBô Bð ?ð ?ð ?rP   )Únumba.core.pythonapir  r`   rX   Ú
gil_ensureru   rÅ  r€  Úload_dispatcherÚcall_function_objargsr   Úis_nullrZ   Úif_elseÚdecrefÚgil_releaserS   Ú
return_excÚto_native_valueÚ
dispatcherÚoutput_typesr  ÚcallableÚcleanupÚif_thenÚis_error)rL   rè  r¹  rà   r  Ú	gil_staterp   rq   Ú	argvaluesrü   rh  ÚargobjsÚcalleeÚret_objÚhas_exceptionÚthenÚorelseÚobjÚnativeÚoutputs   `                   rN   rö  z#Lower._lower_call_ObjModeDispatcher¾  s!  ø€ Ø5Ð5Ð5Ð5Ð5Ð5à�ŠÑÔÐà”J×)Ò)Ñ+Ô+ˆ	à.Ð. D¤IÐ.Ñ.Ô.ˆØ5Ð5Ð5Ð5¨HÐ5Ñ5Ô5ˆØ7Ð7Ð7Ð7¨hÐ7Ñ7Ô7ˆ	Ý˜ HÑ-Ô-ð 	ð 	‰EˆAˆrà�KŠK˜˜AÑÔÐÐð?ð ?ð ?ð ?å%(¨°9Ñ%=Ô%=ð?ñ ?ô ?ˆð
 �˜dœjÑ)Ô)×9Ò9¸$ÀÑIÔIˆà”*×2Ò2°6¸7ÑCÔCˆÝœ¨¬°gÑ>Ô>ˆØŒ]×"Ò" =Ñ1Ô1ð '	±^°d¸Fð ð 	8ð 	8à"ð +ð +�CØ”J×%Ò% cÑ*Ô*Ð*Ð*ð ”
×&Ò& yÑ1Ô1Ð1ð ”×)Ò)¨$¬,Ñ7Ô7Ð7ð	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð ð ð àœ×3Ò3Ø”OÔ0Øñô �ð  œ�ð ”
×!Ò! 'Ñ*Ô*Ð*Ø"ð +ð +�CØ”J×%Ò% cÑ*Ô*Ð*Ð*õ ˜FœNÑ+Ô+ð %Ø—N’NÑ$Ô$Ð$ð ”
×&Ò& yÑ1Ô1Ð1ð ”\×)Ò)¨&¬/Ñ:Ô:ð <ð <Ø”N×-Ò-¨d¬lÑ;Ô;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð ð1ð ð ð ñ ô ð ð'	ð '	ð '	ð '	ñ '	ô '	ð '	ð '	ðð ð ð øøøð ð ð ð ð ð'	ð '	ð '	ñ '	ô '	ð '	ð '	ð '	ð '	ð '	ð '	ð '	øøøð '	ð '	ð '	ð '	ð '	ð '	s€   ÄKÄ#AFÅ<KÆF	ÆKÆF	ÆKÆCJ-É JÉ<J-ÊJÊJ-ÊJÊJ-ÊKÊ-J1	Ê1KÊ4J1	Ê5KËK
ËK
c                 ór  — |                       d¦  «         |                      |||j        |j        |j        ¦  «        }t          j        |j        |j        j	        |j        j        ¦  «        }| j
                             | j        j        |¦  «        }| j
                             | j        ||j        |¦  «        S )Nz# external function)r¶   rì  ru   r    Úkwsr   ÚExternalFunctionDescriptorÚsymbolrå   r¥  rB   Údeclare_external_functionrZ   r(   Úcall_external_functionrq   )rL   rè  r¹  rà   rÈ  r'   rf   s          rN   rø  z"Lower._lower_call_ExternalFunctionþ  s«   € à×ÒÐ.Ñ/Ô/Ð/Ø×%Ò%Ø�)˜TœY¨¬°T´Xñ
ô 
ˆõ Ô4ØŒK˜œÔ-¨t¬x¬}ñ>ô >ˆàŒ|×5Ò5ØŒLÔ ñ)ô )ˆàŒ|×2Ò2ØŒL˜$ ¤°ñ
ô 
ð 	
rP   c                 óœ  — |                       d¦  «         |                      |||j        |j        |j        ¦  «        }|                      |j        j        ¦  «        }|j        �r@|  	                    ¦   «          | j
                             ¦   «         }g }g }t          |j        j        |j        |¦  «        D ]�\  }	}
}|	t          j        k    rb|                      |
|¦  «         | j
                             |
|| j        ¦  «        }|                     |¦  «         |                     |¦  «         Œx|                     |¦  «         ŒŽ| j                             | j        |||j        ¦  «        }|D ]}| j
                             |¦  «         Œ| j
                             |¦  «         n'| j                             | j        |||j        ¦  «        }|S )Nz## calling external function pointer)r¶   rì  ru   r    r)  rß   rf   r  Úrequires_gilr`   rX   r  rÅ  rå   r
   Úffi_forced_objectr€  r
  r\   r�  rB   Úcall_function_pointerrZ   Úcconvr  r  )rL   rè  r¹  rà   rÈ  Úpointerr  Ú
newargvalsÚpyvalsÚexptypÚgottypr  r%  r‘  s                 rN   rú  z)Lower._lower_call_ExternalFunctionPointer  sØ  € à×ÒÐ>Ñ?Ô?Ð?Ø×%Ò%Ø�)˜TœY¨¬°T´Xñ
ô 
ˆð —,’,˜tœyœ~Ñ.Ô.ˆàÔñ "	Ø�OŠOÑÔÐàœ
×-Ò-Ñ/Ô/ˆIàˆJØˆFÝ(+¨D¬H¬M¸9¼>Ø,3ñ)5ô )5ð ,ð ,Ñ$�˜ ð �UÔ4Ò4Ð4Ø—K’K ¨Ñ-Ô-Ð-Øœ*×6Ò6Ø  dÔ&6ñô �Cð ×%Ò% cÑ*Ô*Ð*Ø—M’M #Ñ&Ô&Ð&Ð&à×%Ò% dÑ+Ô+Ð+Ð+ð ”,×4Ò4Ø”˜g z°4´:ñô ˆCð ð 'ð '�Ø”
×!Ò! #Ñ&Ô&Ð&Ð&ð ŒJ×"Ò" 9Ñ-Ô-Ð-Ð-ð ”,×4Ò4Ø”˜g w°´
ñô ˆCð ˆ
rP   c                 óà  — |                       |||j        |j        |j        ¦  «        }|                     |j        ¦  «        }| j        j        pt          }| j        j	        } ||j
        |j        ||j        ¬¦  «        }| j        j        j                             |¦  «        r(| j                             | j        | j        ||¦  «        }	n"| j                             | j        |||¦  «        }	|	S )N)Úabi_tagsÚuid)rì  ru   r    r)  Úget_overloadsrB   Úmanglerr   r'   r9  ro   r:  rZ   rn   r  Ú
startswithÚcall_internalÚcall_unresolved)
rL   rè  r¹  rà   rÈ  Úrec_ovr<  r9  Úmangled_namer‘  s
             rN   rü  zLower._lower_call_RecursiveCall9  sñ   € à×%Ò%Ø�)˜TœY¨¬°T´Xñ
ô 
ˆð ×#Ò# I¤NÑ3Ô3ˆØ”,Ô&Ð9­/ˆØ”;Ô'ˆØ�w˜vœ°	´Ø(0°f´jðBñ Bô Bˆð Œ<Ô Ô%×0Ò0°Ñ>Ô>ð 	Ø”,×,Ò,Ø”˜dœk¨9°gñô ˆCˆCð ”,×.Ò.Ø”˜l¨I°wñô ˆCð ˆ
rP   c                 ój  — |                       d¦  «         t          j        |¦  «        }|                     |¦  «        s't	          d|› dt          j        |¦  «        › �¦  «        ‚|                      |||j        |j        |j	        ¦  «        }|  
                    |j        |j        j        ||¦  «        S )Nz## calling first-class function typez%mismatch of function types: expected z	 but got )r¶   r
   rw  Úcheck_signaturer   rý  rì  ru   r    r)  Ú)_Lower__call_first_class_function_pointerÚftyperf   r  )rL   rè  r¹  rà   rå   rÈ  s         rN   rþ  zLower._lower_call_FunctionTypeN  sÒ   € Ø×ÒÐ>Ñ?Ô?Ð?ÝŒo˜iÑ(Ô(ˆØ×#Ò# IÑ.Ô.ð 	Gå"ðFØ!ðFð FÝ,1Ô,>¸sÑ,CÔ,CðFð FñGô Gð Gð ×%Ò%Ø�#�t”y $¤+¨t¬xñ
ô 
ˆð ×7Ò7ØŒJ˜œ	œ¨¨Wñ
ô 
ð 	
rP   c           	      óŠ  — | j         }| j        }|                      |¦  «        } t          j        |                      |¦  «        ¦  «        |||¬¦  «        }|j        }	d|› �|	_        |}
t          j        ||
 	                    |j
        ¦  «        ¦  «        }|                     t          j        ||	¦  «        d¬¦  «        }|5 \  }}|5  |                      |||¦  «        }|                     ||¦  «        }|                     ||¦  «         ddd¦  «         n# 1 swxY w Y   |5  |
j                             |j
        |j        ¦  «                             ¦   «         }|                     |	|¦  «        }|
j                             |||j
        |j        |¦  «        \  }}t          j        ||j        ¦  «        5  |j                             ||¦  «         ddd¦  «         n# 1 swxY w Y   |                     ||¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   |                     |¦  «        S )aã  
        Calls a first-class function pointer.

        This function is responsible for calling a first-class function pointer,
        which can either be a JIT-compiled function or a Python function. It
        determines if a JIT address is available, and if so, calls the function
        using the JIT address. Otherwise, it calls the function using a function
        pointer obtained from the `__get_first_class_function_pointer` method.

        Args:
            ftype: The type of the function.
            fname: The name of the function.
            sig: The signature of the function.
            argvals: The argument values to pass to the function.

        Returns:
            The result of calling the function.
        ©r  Újit_addr_of_F©ÚlikelyN)rB   rZ   rß   r   Úcreate_struct_proxyrÕ   Újit_addrr  Úalloca_onceÚget_value_typer¥  r  r  Ú(_Lower__get_first_class_function_pointerr  ÚstorerS   Úget_function_typeru   Ú
as_pointerÚbitcastÚcall_functionÚif_unlikelyr  Úreturn_status_propagateÚload)rL   rE  Úfnamerå   rÈ  rB   rZ   ÚfstructÚstructrL  ÚctxÚres_slotÚif_jit_addr_is_nullr#  r$  Úfunc_ptrr‘  ÚlltyÚstatuss                      rN   Ú#__call_first_class_function_pointerz)Lower.__call_first_class_function_pointer]  sO  € ð& ”,ˆØ”,ˆà—,’,˜uÑ%Ô%ˆØ@•Ô,¨T¯[ª[¸Ñ-?Ô-?Ñ@Ô@Ø�W Gð
ñ 
ô 
ˆð ”?ˆØ. uÐ.Ð.ˆŒàˆÝÔ& wØ'*×'9Ò'9¸#¼/Ñ'JÔ'JñLô Lˆð &ŸošoÝŒO˜G XÑ.Ô.Øð .ñ 
ô 
Ðð !ð 	-¡N T¨6Øð -ð -Ø×BÒBØ˜5 #ñ'ô '�à—l’l 8¨WÑ5Ô5�Ø—’˜c 8Ñ,Ô,Ð,ð	-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð ð -ð -Ø”}×6Ò6Ø”OØ”Hñô ÷ ’*‘,”,ð ð #Ÿ?š?¨8°TÑ:Ô:�à!œm×9Ò9Ø˜X s¤¸¼À'ñô ‘�˜õ Ô(¨°&´/ÑBÔBð Oð OØÔ%×=Ò=¸gÀvÑNÔNÐNðOð Oð Oñ Oô Oð Oð Oð Oð Oð Oð Oøøøð Oð Oð Oð Oà—’˜c 8Ñ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð( �|Š|˜HÑ%Ô%Ð%s€   ÃH%Ã	ADÄH%ÄD	ÄH%Ä D	Ä!H%Ä&BHÆ9G!ÇHÇ!G%Ç%HÇ(G%Ç)HÈH%ÈH	ÈH%ÈH	ÈH%È%H)È,H)c           	      óB  — ddl m} | j                             |¦  «        }|                      |¦  «        }| j                             |dd|z  ¬¦  «        }t          j        | j        |d|z  ¬¦  «        }| j         	                    t          j
        | j        |¦  «        d¬¦  «        5 \  }	}
|	5  |                      ¦   «          | j                             ¦   «         }| j                             |dd	|z  ¬¦  «        } || j        | j        ||d
¬¦  «        }| j                             t          j
        | j        |¦  «        d¬¦  «        5  |                      t           |› d�f| j        ¬¦  «         d d d ¦  «         n# 1 swxY w Y   | j                             |¦  «        }| j                             | j                             ||¦  «        |¦  «         | j                             |¦  «         | j                             |¦  «         d d d ¦  «         n# 1 swxY w Y   |
5  | j                             | j                             ||¦  «        |¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   | j                             |¦  «        S )Nr   )Úlower_get_wrapper_addressz
addr_of_%sr  z
fptr_of_%sFrI  rb   zpyaddr_of_%sÚignore)Úfailure_modez function address is null)r‹   r@   )Ú numba.experimental.function_typerc  rB   rN  rß   rZ   rÍ  r   rM  r  r  r`   rX   r  r  r‘   ÚRuntimeErrorr@   Úlong_as_voidptrrP  rS  r  r  rW  )rL   rE  rX  rå   rc  r_  rY  ÚaddrÚfptrr#  r$  r  ÚpyaddrÚaddr1Úaddr2s                  rN   Ú"__get_first_class_function_pointerz(Lower.__get_first_class_function_pointer˜  sÐ  € ØNÐNÐNÐNÐNÐNàŒ|×*Ò*¨5Ñ1Ô1ˆØ—,’,˜uÑ%Ô%ˆØŒ|×)Ò)¨'°1Ø/;¸uÑ/Eð *ñ Gô Gˆõ Ô" 4¤<°Ø(4¸Ñ(>ð@ñ @ô @ˆàŒ\×!Ò!Ý” ¤¨dÑ3Ô3Øð "ñ ô ð 	Ká!/ $¨Øð 2ð 2Ø—’Ñ!Ô!Ð!à œJ×1Ò1Ñ3Ô3�	Øœ×3Ò3Ø˜QØ'¨5Ñ1ð 4ñ 3ô 3�ð 2Ð1Ø”L $¤,°¸Ø!)ð+ñ +ô +�ð ”\×)Ò)Ýœ¨¬°eÑ<Ô<ÀUð *ñ Lô Lð &ð &à×)Ò)Ý$Ø%*Ð"EÐ"EÐ"EÐ!GØ œHð *ñ &ô &ð &ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð œ
×2Ò2°5Ñ9Ô9�Ø”×"Ò" 4¤<×#7Ò#7¸¸tÑ#DÔ#DÀdÑKÔKÐKØ”
×!Ò! %Ñ(Ô(Ð(Ø”
×&Ò& yÑ1Ô1Ð1ð-2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð. ð Kð KØ”×"Ò" 4¤<×#7Ò#7¸¸dÑ#CÔ#CÀTÑJÔJÐJðKð Kð Kñ Kô Kð Kð Kð Kð Kð Kð Køøøð Kð Kð Kð Kð5	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Køøøð 	Kð 	Kð 	Kð 	Kð8 Œ|× Ò  Ñ&Ô&Ð&s€   Â)I<Â/BHÅ'E>Å2HÅ>FÆHÆFÆBHÈI<ÈH	ÈI<ÈH	ÈI<È$5I%ÉI<É%I)	É)I<É,I)	É-I<É<J ÊJ c                 ó”  — |                       d                     |¦  «        ¦  «         |                       d                     |¦  «        ¦  «         t          |t          j        ¦  «        r|j        j        }n(|                      |||j        |j        |j	        ¦  «        }|j
        }|�4ddlm}  ||¦  «        }|j        j        }|                     ||¦  «        }	n| j                             ||¦  «        }	|j        r2|                      |j        j        ¦  «        }
|
gt)          |¦  «        z   } |	| j        || j        ¦  «        }|S )Nz# calling normal function: {0}z# signature: {0}r   )Úresolve_dispatcher_from_str)r¶   r·   r#  r
   rõ  rf   ru   rì  r    r)  r  Únumba.core.target_extensionrp  ÚtargetdescrÚtarget_contextrâ   rB   Úrecvrrß   r  rî  rZ   r@   )rL   rè  r¹  rà   rÈ  Útnamerp  ÚdispÚhw_ctxræ   Úthe_selfr‘  s               rN   rÿ  zLower._lower_call_normalÀ  sG  € à×ÒÐ9×@Ò@ÀÑFÔFÑGÔGÐGØ×ÒÐ+×2Ò2°9Ñ=Ô=Ñ>Ô>Ð>Ý�d�EÔ3Ñ4Ô4ð 	Ø”i”nˆGˆGà×)Ò)Ø�i ¤¨D¬K¸¼ñô ˆGð ”ˆØÐØOÐOÐOÐOÐOÐOØ.Ð.¨uÑ5Ô5ˆDØÔ%Ô4ˆFØ×&Ò& t¨YÑ7Ô7ˆDˆDà”<×,Ò,¨T°9Ñ=Ô=ˆDØŒ?ð 	1ð —|’| D¤I¤NÑ3Ô3ˆHà�j¥4¨¡=¤=Ñ0ˆGàˆd�4”< ¨$¬(Ñ3Ô3ˆØˆ
rP   c                 óæ  ‡ ‡— |j         dk    r‰                      ‰||j        ¦  «        S |j         dk    r^‰                      |j        j        ¦  «        }|j        r‰                      ‰||j        ¦  «        S ‰                      ‰||j        ¦  «        S |j         dk    r÷‰                      |j	        j        ¦  «        }‰                      |j	        j        ¦  «        }‰ j
        j                             |j        ¦  «        }‰ j        j        |         }‰ j
                             ||¦  «        }‰ j
                             ‰ j        |||j        d         ¦  «        } |‰ j        |g¦  «        }	‰ j
                             ‰ j        |	|j        ‰¦  «        }	|	S |j         dk    r‰                      ‰|¦  «        }	|	S |j         dk    rw‰                      |j	        j        ¦  «        }‰                      |j	        j        ¦  «        }
‰ j
                             ‰ j        ||
¦  «        }	‰                      ‰|	¦  «         |	S |j         dk    rw‰                      |j	        j        ¦  «        }‰                      |j	        j        ¦  «        }
‰ j
                             ‰ j        ||
¦  «        }	‰                      ‰|	¦  «         |	S |j         dv rÖ‰                      |j	        j        ¦  «        }‰                      |j	        j        ¦  «        }
‰ j        j        |         }‰ j
                             |j         |¦  «        }|j        \  }‰ j
                             ‰ j        ||
|¦  «        } |‰ j        |f¦  «        }	‰ j
                             ‰ j        |	|j        ‰¦  «        }	|	S |j         d	k    �r‰                      |j	        j        ¦  «        }‰                      |j	        j        ¦  «        }
t1          |
t2          j        ¦  «        r.‰ j
                             ‰ j        ||
|
j        ¦  «        }|
j        }
t1          |
t2          j        ¦  «        r |
‰k    sJ ‚‰                      |
|¦  «         |S |
j        j        }‰ j
                             ‰¦  «        }t3          j         |t2          j!        ¦  «        }tE          j#        |
j        |
¦  «        }‰ j
                             d
|¦  «        }tE          j#        ||
j        ¦  «        }‰ j
                             d|¦  «        } |‰ j        |f¦  «        }tI          |j%        ¦  «        D ]Ý} |‰ j        |f¦  «        }‰ j
                             ‰ j        ||¦  «        }tM          j'        ‰ j        ‰ j         (                    |¦  «        ¦  «        5  ‰  )                    tT          ‰ j+        ¬¦  «         d d d ¦  «         n# 1 swxY w Y   ‰ j
                             ‰ j        ||¦  «        }‰ j         ,                    |||¦  «        }ŒÞ |‰ j        |f¦  «        }‰ j
                             ‰ j        ||¦  «        }tM          j'        ‰ j        |¦  «        5  ‰  )                    tT          ‰ j+        ¬¦  «         d d d ¦  «         n# 1 swxY w Y   ‰  -                    |
j        |¦  «         |S |j         dk    �r_‰                      |j	        j        ¦  «        }‰                      |j	        j        ¦  «        }
t1          ‰t2          j.        ¦  «        re‰ j
                             ‰ j        ||
‰j/        ¦  «        }‰ j
         0                    ‰ j        |‰j/        ¦  «        }	‰                      ‰|	¦  «         |	S ‰ j
         1                    |
|j2        ¦  «        }‰ j
        j         3                    |
|j2        ¦  «        }|€‰ j
         4                    ¦   «         S  |‰ j
        ‰ j        |
||j2        ¦  «        }	‰ j
                             ‰ j        |	|‰¦  «        }	|	S |j         dk    rãtE          j#        ‰‰                      |j	        j        ¦  «        tk          |j6        ¦  «        ¦  «        }	 ‰ j
                             d|¦  «        } |‰ j        ‰                      |j	        j        ¦  «        |j6        f¦  «        S # tn          $ r@ |j8        €‚ ‰ j        j        |         }‰  9                    ‰||j	        |j8        |¦  «        cY S w xY w|j         dk    r¸tE          j#        ‰‰                      |j	        j        ¦  «        ‰                      |j6        j        ¦  «        ¦  «        }‰ j
                             d|¦  «        } |‰ j        ‰                      |j	        j        ¦  «        ‰                      |j6        j        ¦  «        f¦  «        S |j         dk    r5‰ j        j        |         }‰  9                    ‰||j	        |j6        |¦  «        S |j         dk    r|ˆ fd„|j:        D ¦   «         }ˆ fd„|j:        D ¦   «         }ˆ fd„tw          |‰|¦  «        D ¦   «         }‰ j
         <                    ‰ j        ‰|¦  «        }‰                      ‰|¦  «         |S |j         dk    rðˆ fd„|j:        D ¦   «         }ˆ fd„|j:        D ¦   «         }t1          ‰t2          j=        ¦  «        rrˆ fd„tw          |‰j        |¦  «        D ¦   «         }‰ j
         <                    ‰ j        t3          j>        ‰j        ¦  «        |¦  «        }‰                      ‰|¦  «         |S ˆˆ fd„tw          ||¦  «        D ¦   «         }‰ j
         ?                    ‰ j        ‰|¦  «        S |j         dk    rj|j:        d d d…         }ˆ fd„|D ¦   «         }ˆ fd„|D ¦   «         }ˆˆ fd„tw          ||¦  «        D ¦   «         }‰ j
         @                    ‰ j        ‰|¦  «        S |j         dk    �r+|j:        }g g } }g g }"}!|D ]Á\  }#}$‰                      |#j        ¦  «        }%‰                      |#j        ¦  «        }&‰                      |$j        ¦  «        }‰                      |$j        ¦  «        }'| A                    |%¦  «         |  A                    |¦  «         |! A                    |&¦  «         |" A                    |'¦  «         ŒÂ‰ j
         B                    ‰ j        ‰t‡          tw          |!|"¦  «        ¦  «        t‡          tw          || ¦  «        ¦  «        ¦  «        S |j         d k    rx‰                      |j	        j        ¦  «        }‰                      |j	        j        ¦  «        }
‰ j
                             ‰ j        ||
‰¦  «        }‰                      ‰|¦  «         |S |j         d!k    rt‰          d"¦  «        ‚|j         d#k    r‰ j
         E                    ‰¦  «        S |j         d$k    r‰ j
         E                    ‰¦  «        S |j         ‰ j
        jF        v r# ‰ j
        jF        |j                  ‰ |¦  «        }	|	S to          |¦  «        ‚)%NÚbinopÚinplace_binopÚunaryr   r  Ú
pair_firstÚpair_second)ÚgetiterÚiternextÚexhaust_iterr  r€  r½   ÚgetattrÚstatic_getitemÚtyped_getitemrÄ  Úbuild_tuplec                 óD   •— g | ]}‰                      |j        ¦  «        ‘ŒS rV   ©rß   r  ©rú   rÒ  rL   s     €rN   rÃ  z$Lower.lower_expr.<locals>.<listcomp>�  ó'   ø€ ÐAÐAÐA°˜Ÿš Q¤VÑ,Ô,ÐAÐAÐArP   c                 óD   •— g | ]}‰                      |j        ¦  «        ‘ŒS rV   ©rÕ   r  rˆ  s     €rN   rÃ  z$Lower.lower_expr.<locals>.<listcomp>‚  ó'   ø€ Ð?Ð?Ð?¨q�t—{’{ 1¤6Ñ*Ô*Ð?Ð?Ð?rP   c                 ó\   •— g | ](\  }}}‰j                              ‰j        |||¦  «        ‘Œ)S rV   r¿  ©rú   ri  ÚtotyÚfromtyrL   s       €rN   rÃ  z$Lower.lower_expr.<locals>.<listcomp>ƒ  sM   ø€ ð Pð Pð PÙ-˜C  vð œ×)Ò)¨$¬,¸¸VÀTÑJÔJð Pð Pð PrP   Ú
build_listc                 óD   •— g | ]}‰                      |j        ¦  «        ‘ŒS rV   r‡  rˆ  s     €rN   rÃ  z$Lower.lower_expr.<locals>.<listcomp>Š  r‰  rP   c                 óD   •— g | ]}‰                      |j        ¦  «        ‘ŒS rV   r‹  rˆ  s     €rN   rÃ  z$Lower.lower_expr.<locals>.<listcomp>‹  rŒ  rP   c                 ó\   •— g | ](\  }}}‰j                              ‰j        |||¦  «        ‘Œ)S rV   r¿  rŽ  s       €rN   rÃ  z$Lower.lower_expr.<locals>.<listcomp>�  sM   ø€ ð Cð Cð CÙ 1  T¨6ð !œL×-Ò-¨d¬l¸CÀÈÑNÔNð Cð Cð CrP   c                 ód   •— g | ],\  }}‰j                              ‰j        ||‰j        ¦  «        ‘Œ-S rV   ©rB   r<  rZ   Údtype©rú   ri  r�  r¦  rL   s      €€rN   rÃ  z$Lower.lower_expr.<locals>.<listcomp>–  sR   ø€ ð Gð Gð Gá +  Vð !œL×-Ò-¨d¬l¸CÀØ.3¬kñ;ô ;ð Gð Gð GrP   Ú	build_setr%   c                 óD   •— g | ]}‰                      |j        ¦  «        ‘ŒS rV   r‡  rˆ  s     €rN   rÃ  z$Lower.lower_expr.<locals>.<listcomp>ž  s'   ø€ Ð<Ð<Ð<°˜Ÿš Q¤VÑ,Ô,Ð<Ð<Ð<rP   c                 óD   •— g | ]}‰                      |j        ¦  «        ‘ŒS rV   r‹  rˆ  s     €rN   rÃ  z$Lower.lower_expr.<locals>.<listcomp>Ÿ  s'   ø€ Ð:Ð:Ð:¨q�t—{’{ 1¤6Ñ*Ô*Ð:Ð:Ð:rP   c                 ód   •— g | ],\  }}‰j                              ‰j        ||‰j        ¦  «        ‘Œ-S rV   r–  r˜  s      €€rN   rÃ  z$Lower.lower_expr.<locals>.<listcomp>   sR   ø€ ð Cð Cð Cá'˜C ð œ×)Ò)¨$¬,¸¸VØ*/¬+ñ7ô 7ð Cð Cð CrP   Ú	build_mapr<  ÚphizPHI not strippedÚnullÚundef)Gr  r¼  ri   rÕ   r´  r  ÚmutableÚimmutable_fnrß   r  rB   rY  rZ  r'   rL  râ   r<  rZ   ru   r¥  r  r}  r€  r~  r#  r
   rF  r>  rß  Úiterator_typerœ  Úget_constant_undefÚPairr=  r   rà   rä  Úcountr   rU  Únot_r‘   Ú
ValueErrorr@   Úinsert_valuer  ÚBoundFunctionÚthisÚget_bound_functionÚget_getattrr_  Úresolve_getattrrÞ   r¸  r!   rM  rO  rË  r/   rÅ  Ú
make_tupleÚLiteralListÚTupler‘  r™  r�  r�  rî  r   Úget_constant_nullÚspecial_ops)(rL   r¦  r¹  rº  ri  r„  Úfunc_tyrà   ræ   r‘  rh  ÚftyÚcastvalÚitemtyÚtupÚpairtyÚgetiter_sigÚgetiter_implÚiternext_sigÚiternext_implÚiterobjrÒ  ÚpairÚis_validÚitemÚcastedÚattrtyÚitemvalsÚitemtysrÊ  r/   r>   r  Ú	key_typesÚvalue_typesrû   rü   rU  ÚkeytypeÚvaltypes(   ``                                      rN   rŒ  zLower.lower_exprÜ  sº  øø€ ØŒ7�gÒÐØ×#Ò# E¨4°´Ñ9Ô9Ð9ØŒW˜Ò'Ð'Ø—+’+˜dœhœmÑ,Ô,ˆCØŒ{ð HØ×'Ò'¨¨t°T´WÑ=Ô=Ð=ð ×'Ò'¨¨t°TÔ5FÑGÔGÐGØŒW˜ÒÐØ—,’,˜tœzœÑ/Ô/ˆCØ—+’+˜dœjœoÑ.Ô.ˆCØ”lÔ1×DÒDÀTÄWÑMÔMˆGàœÔ-¨dÔ3ˆIØ”<×,Ò,¨W°iÑ@Ô@ˆDà”,×#Ò# D¤L°#°s¸I¼NÈ1Ô<MÑNÔNˆCØ�$�t”| c UÑ+Ô+ˆCØ”,×#Ò# D¤L°#Ø$-Ô$9¸5ñBô BˆCàˆJàŒW˜ÒÐØ—/’/ %¨Ñ.Ô.ˆCØˆJàŒW˜Ò$Ð$Ø—,’,˜tœzœÑ/Ô/ˆCØ—’˜TœZœ_Ñ-Ô-ˆBØ”,×)Ò)¨$¬,¸¸RÑ@Ô@ˆCØ�KŠK˜˜sÑ#Ô#Ð#ØˆJàŒW˜Ò%Ð%Ø—,’,˜tœzœÑ/Ô/ˆCØ—’˜TœZœ_Ñ-Ô-ˆBØ”,×*Ò*¨4¬<¸¸bÑAÔAˆCØ�KŠK˜˜sÑ#Ô#Ð#ØˆJàŒWÐ/Ð/Ð/Ø—,’,˜tœzœÑ/Ô/ˆCØ—’˜TœZœ_Ñ-Ô-ˆBØœÔ-¨dÔ3ˆIØ”<×,Ò,¨T¬W°iÑ@Ô@ˆDØ”N‰EˆSØ”l×'Ò'¨¬°c¸2¸sÑCÔCˆGØ�$�t”| g ZÑ0Ô0ˆCØ”,×#Ò# D¤L°#°yÔ7LØ$)ñ+ô +ˆCàˆJàŒW˜Ò&Ñ&Ø—,’,˜tœzœÑ/Ô/ˆCØ—’˜TœZœ_Ñ-Ô-ˆBå˜"�eœnÑ-Ô-ð Ø”l×'Ò'¨¬°c¸2¸r¼wÑGÔG�Ø”W�õ ˜"�eœoÑ.Ô.ð Ø˜U’{�{�{�{Ø—’˜B Ñ$Ô$Ð$Ø�
àÔ%Ô0ˆFØ”,×1Ò1°%Ñ8Ô8ˆCÝ”Z ­¬Ñ6Ô6ˆFÝ Ô*¨2Ô+;¸RÑ@Ô@ˆKØœ<×4Ò4°YØ5@ñBô BˆLå!Ô+¨F°BÔ4DÑEÔEˆLØ œL×5Ò5°jØ6BñDô DˆMà"�l 4¤<°#°Ñ8Ô8ˆGå˜4œ:Ñ&Ô&ð 	>ð 	>�Ø$�} T¤\°G°:Ñ>Ô>�Øœ<×3Ò3°D´LØ48¸&ñBô B�åÔ(¨¬Ø)-¬×):Ò):¸8Ñ)DÔ)DñFô Fð Dð Dà×)Ò)­*¸$¼(Ð)ÑCÔCÐCðDð Dð Dñ Dô Dð Dð Dð Dð Dð Dð Døøøð Dð Dð Dð Dð ”|×.Ò.¨t¬|Ø/3°Vñ=ô =�à”l×/Ò/°°T¸1Ñ=Ô=��ð !�= ¤°¨zÑ:Ô:ˆDØ”|×/Ò/°´Ø04°fñ>ô >ˆHåÔ$ T¤\°8Ñ<Ô<ð @ð @Ø×%Ò%¥j°d´hÐ%Ñ?Ô?Ð?ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @ð �KŠK˜Ô(¨'Ñ2Ô2Ð2ØˆJàŒW˜	Ò!Ñ!Ø—,’,˜tœzœÑ/Ô/ˆCØ—’˜TœZœ_Ñ-Ô-ˆBå˜%¥Ô!4Ñ5Ô5ð ð œ×*Ò*¨4¬<¸¸bÀ%Ä*ÑMÔM�Ø”l×5Ò5°d´lÀFØ6;´jñBô B�à—’˜E 3Ñ'Ô'Ð'Ø�
à”|×/Ò/°°D´IÑ>Ô>�ØœÔ4×DÒDÀRØEIÄYñPô P�ð �<àœ<×7Ò7Ñ9Ô9Ð9à˜$˜tœ|¨T¬\¸2¸sÀDÄIÑNÔN�Cð ”l×'Ò'¨¬°c¸6À5ÑIÔI�Ø�
àŒWÐ(Ò(Ð(ÝÔ(ØØ—’˜DœJœOÑ,Ô,Ý ¤
Ñ+Ô+ñô ˆIð
Eð ”|×0Ò0Ð1AÀ9ÑMÔM�Ø�t˜DœLØ!Ÿ\š\¨$¬*¬/Ñ:Ô:¸D¼JÐGñIô Ið Iøå&ð Eð Eð EØ”>Ð)Øð !œKÔ1°$Ô7�	Ø×)Ò)¨%°°t´zØ*.¬.¸)ñEô Eð Eð Eð EðEøøøð ŒW˜Ò'Ð'ÝÔ(ØØ—’˜DœJœOÑ,Ô,Ø—’˜DœJœOÑ,Ô,ñô ˆIð
 ”<×,Ò,¨_¸iÑHÔHˆDØ�4˜œ t§|¢|°D´J´OÑ'DÔ'DØŸš T¤Z¤_Ñ5Ô5ð'7ñ 8ô 8ð 8àŒW˜	Ò!Ð!ØœÔ-¨dÔ3ˆIØ×%Ò% e¨T°4´:¸t¼zØ&/ñ1ô 1ð 1ð ŒW˜Ò%Ð%ØAÐAÐAÐA°d´jÐAÑAÔAˆHØ?Ð?Ð?Ð?°D´JÐ?Ñ?Ô?ˆGðPð Pð Pð PÝ14°X¸uÀgÑ1NÔ1NðPñ Pô PˆHà”,×)Ò)¨$¬,¸¸xÑHÔHˆCØ�KŠK˜˜sÑ#Ô#Ð#ØˆJàŒW˜Ò$Ð$ØAÐAÐAÐA°d´jÐAÑAÔAˆHØ?Ð?Ð?Ð?°D´JÐ?Ñ?Ô?ˆGÝ˜%¥Ô!2Ñ3Ô3ð NðCð Cð Cð CÝ58¸À5Ä;Ø9@ñ6Bô 6BðCñ Cô C�ð ”l×-Ò-¨d¬lÝ.3¬k¸%¼+Ñ.FÔ.FØ.6ñ8ô 8�ð —’˜E 3Ñ'Ô'Ð'Ø�
ðGð Gð Gð Gð Gå/2°8¸WÑ/EÔ/EðGñ Gô G�ð ”|×.Ò.¨t¬|¸UÀHÑMÔMÐMàŒW˜Ò#Ð#à”J˜t˜t ˜tÔ$ˆEØ<Ð<Ð<Ð<°eÐ<Ñ<Ô<ˆHØ:Ð:Ð:Ð:°EÐ:Ñ:Ô:ˆGðCð Cð Cð Cð Cå+.¨x¸Ñ+AÔ+AðCñ Cô CˆHð ”<×)Ò)¨$¬,¸¸xÑHÔHÐHàŒW˜Ò#Ñ#Ø”JˆEØ˜r�&ˆDØ%'¨�{ˆIØð ,ð ,‘��1Ø—l’l 1¤6Ñ*Ô*�ØŸ+š+ a¤fÑ-Ô-�Ø—l’l 1¤6Ñ*Ô*�ØŸ+š+ a¤fÑ-Ô-�Ø—’˜CÑ Ô Ð Ø—’˜cÑ"Ô"Ð"Ø× Ò  Ñ)Ô)Ð)Ø×"Ò" 7Ñ+Ô+Ð+Ð+Ø”<×)Ò)¨$¬,¸Ý*.­s°9¸kÑ/JÔ/JÑ*KÔ*KÝ*.­s°4¸Ñ/@Ô/@Ñ*AÔ*AñCô Cð Cð ŒW˜ÒÐØ—,’,˜tœzœÑ/Ô/ˆCØ—’˜TœZœ_Ñ-Ô-ˆBØ”l×'Ò'¨¬°c¸2¸uÑEÔEˆGØ�KŠK˜˜wÑ'Ô'Ð'ØˆNàŒW˜ÒÐÝÐ 2Ñ3Ô3Ð3àŒW˜ÒÐØ”<×1Ò1°%Ñ8Ô8Ð8àŒW˜ÒÐð ”<×1Ò1°%Ñ8Ô8Ð8àŒW˜œÔ0Ð0Ð0Ø3�$”,Ô*¨4¬7Ô3°D¸$Ñ?Ô?ˆCØˆJå! $Ñ'Ô'Ð's8   Ö#"W×W	×W	Ù'"ZÚZÚZá9Ac	 ã	Adädc                 ó€   — || j         v rdS || j        vs| j        r"|                      ||¦  «        }|| j         |<   dS dS )zT
        Ensure the given variable has an allocated stack slot (if needed).
        N)r<   r  rõ   Úalloca)rL   r  r,  Úptrs       rN   r  zLower._alloca_varÎ  s`   € ð �4”;ÐÐàˆFð ˜Ô3Ð3Ð3ØÔ+ð 4ð —+’+˜d FÑ+Ô+ˆCà #ˆDŒK˜ÑÐÐð 4Ð3rP   c                 óº   — | j         s|| j        vsJ ‚|| j        vsJ ‚|| j        vr)|                      ||                      |¦  «        ¦  «         | j        |         S )z=
        Get a pointer to the given variable's slot.
        )rõ   r  r  r<   r  rÕ   )rL   r  s     rN   ÚgetvarzLower.getvarÞ  su   € ð Ô*ð 	:Ø˜tÔ5Ð5Ð5Ð5Ð5Ø˜tÔ9Ð9Ð9Ð9Ð9Ø�t”{Ð"Ð"ð ×Ò˜T 4§;¢;¨tÑ#4Ô#4Ñ5Ô5Ð5ØŒ{˜4Ô Ð rP   c                 óP  — || j         v r| j        s| j         |         S |                      |¦  «        }|| j        j        v rMt          j        | j        ¦  «        5  | j                             |¦  «        cddd¦  «         S # 1 swxY w Y   dS | j                             |¦  «        S )z2
        Load the given variable's value.
        N)	r  rõ   rÎ  r0   Ú	arg_namesr   r¯   rZ   rW  )rL   r  rÌ  s      rN   rß   zLower.loadvarì  sí   € ð �4Ô)Ð)Ð)°$Ô2MÐ)ØÔ)¨$Ô/Ð/Ø�kŠk˜$ÑÔˆð �4”<Ô)Ð)Ð)ÝÔ+¨D¬LÑ9Ô9ð .ð .Ø”|×(Ò(¨Ñ-Ô-ð.ð .ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð .ð .ð ”<×$Ò$ SÑ)Ô)Ð)s   ÁBÂBÂBNc           
      óZ  — |                       |¦  «        }|                      ||¦  «         || j        v r| j        s|| j        |<   dS |€+|                      |¦  «        }|                      ||¦  «         |                      |¦  «        }|j        |j        j	        k    r(d 
                    ||||¬¦  «        }t          |¦  «        ‚|�Çt          j        | j        ¦  «        5  | j                             ||¦  «         ddd¦  «         n# 1 swxY w Y   | j        }| j                             |¦  «        }	| j                             |	¦  «        }
| j        j        |         }| j                             | j        |||	|
|j        ||¬¦  «         dS | j                             ||¦  «         dS )z:
        Store the value into the given variable.
        NzNStoring {value.type} to ptr of {ptr.type.pointee} ('{name}'). FE type {fetype})r  rÌ  r,  r  )r  ÚlltypeÚsizerd   Ú	datamodelr2  )rÕ   r  r  rõ   r  rß   r  rÎ  r>  Úpointeer·   ÚAssertionErrorr   r¯   rZ   rP  rG   rB   rN  Úget_abi_sizeofÚdata_model_managerÚmark_variablerd   )rL   r  r  r2  r,  ÚoldrÌ  rl   r@   rÒ  ÚsizeofrÔ  s               rN   r9  zLower.storevarþ  s  € ð —’˜TÑ"Ô"ˆà×Ò˜˜vÑ&Ô&Ð&ð �DÔ.Ð.Ð.ØÔ/ð /à+0ˆDÔ" 4Ñ(Ð(Ð(àˆ~ð —l’l 4Ñ(Ô(�Ø—’˜F CÑ(Ô(Ð(ð —+’+˜dÑ#Ô#ˆCØŒz˜SœXÔ-Ò-Ð-ð6ß7=²vÀEØBEØEKØCGð 8>ñ 8Iô 8Ið õ
 % SÑ)Ô)Ð)ð
 Ð!ÝÔ/°´Ñ=Ô=ð 3ð 3Ø”L×&Ò& u¨cÑ2Ô2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3à”m�Øœ×4Ò4°VÑ<Ô<�Øœ×4Ò4°VÑ<Ô<�Ø œLÔ;¸FÔC�	Ø”×,Ò,¨T¬\¸3ÀTØ4:ÀØ25´(ÀiØ4:ð -ñ <ô <ð <ð <ð <ð
 ”×"Ò" 5¨#Ñ.Ô.Ð.Ð.Ð.s   Ã"D
Ä
DÄDc                 ó  — |                       |¦  «        }|| j        vr*| j        s#|| j        v r| j                             |¦  «         |                      ||¦  «         || j        v r,| j        s%| j        |         }|                      ||¦  «         dS |                      |¦  «        }|                      || j         	                    |¦  «        ¦  «         | j         
                    t          |j        j        d¦  «        |¦  «         dS )z,
        Delete the given variable.
        N)rÕ   r  rõ   r  Údiscardr  r  rÎ  rZ   rW  rP  r   r>  rÕ  )rL   r  r,  ÚllvalrÌ  s        rN   r\  zLower.delvar,  s  € ð —’˜TÑ"Ô"ˆð ˜Ô.Ð.Ð.ØÔ/ð /à�tÔ1Ð1Ð1ØÔ*×2Ò2°4Ñ8Ô8Ð8ð 	×Ò˜˜vÑ&Ô&Ð&à�4Ô)Ð)Ð)°$Ô2MÐ)ØÔ*¨4Ô0ˆEØ�KŠK˜ Ñ&Ô&Ð&Ð&Ð&à—+’+˜dÑ#Ô#ˆCØ�KŠK˜ ¤× 1Ò 1°#Ñ 6Ô 6Ñ7Ô7Ð7àŒL×Ò�x¨¬Ô(8¸$Ñ?Ô?ÀÑEÔEÐEÐEÐErP   c                 óŠ   — | j                              |¦  «        }| j         j        |         }|                      |||¬¦  «        S )N)rÔ  )rB   rN  rØ  Úalloca_lltype)rL   r  r>  rÒ  rÔ  s        rN   rË  zLower.allocaE  sA   € Ø”×,Ò,¨TÑ2Ô2ˆØ”LÔ3°DÔ9ˆ	Ø×!Ò! $¨¸)Ð!ÑDÔDÐDrP   c           	      ó   — |                      d¦  «         }t          j        | j        ||d¬¦  «        }|rX|| j        j        vrJ| j                             |¦  «        }| j         	                    | j        ||||| j
        j        |¬¦  «         |S )Nú$F)r  Úzfill)r  rÒ  rÓ  rd   rÔ  )r=  r   rM  rZ   r0   rÐ  rB   r×  r   rÙ  r@   rd   )rL   r  rÒ  rÔ  Ú
is_uservarÚaptrrÛ  s          rN   rà  zLower.alloca_lltypeJ  sª   € àŸš¨Ñ-Ô-Ð-ˆ
åÔ" 4¤<°Ø(,°Eð;ñ ;ô ;ˆð ð 		Cð ˜4œ<Ô1Ð1Ð1Øœ×4Ò4°VÑ<Ô<�Ø”×,Ò,¨T¬\¸4ÀdØ4:ÀØ26´(´-Ø7@ð -ñ Cô Cð Cð ˆrP   c                 ón   — | j         j        sd S | j         j                             | j        ||¦  «         d S rR   )rB   Ú
enable_nrtÚnrtr€  rZ   ©rL   r„  ri  s      rN   r€  zLower.incref^  s9   € ØŒ|Ô&ð 	ØˆFàŒÔ×Ò ¤¨c°3Ñ7Ô7Ð7Ð7Ð7rP   c                 óÒ   — | j         j        sd S t          j        | j        ¦  «        5  | j         j                             | j        ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rR   )rB   rç  r   r¯   rZ   rè  r  ré  s      rN   r  zLower.decrefd  s¬   € ØŒ|Ô&ð 	ØˆFõ
 Ô'¨¬Ñ5Ô5ð 	<ð 	<ØŒLÔ×#Ò# D¤L°#°sÑ;Ô;Ð;ð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<ð 	<ð 	<s   ¨'AÁA Á#A rR   ),rè   ré   rê   r   r�   rK   rì   rõ   rò   r‚   r…   rÁ   rN  rc  ra  re  rg  r7  r�  r¼  rË  rÏ  rì  rQ  r  rö  rø  rú  rü  rþ  rD  rO  rÿ  rŒ  r  rÎ  rß   r9  r\  rË  rà  r€  r  Ú__classcell__)ró   s   @rN   rï   rï   Z  s§  ø€ € € € € ØÔ.€Nð.ð .ð .ð .ð .ð
 ðKð Kñ „XðKð-$ð -$ð -$ð^$ð $ð $ð $ð $ðLð ð ðJ2ð J2ð J2ðX:ð :ð :ð>*ð *ð *ð
Eð Eð Eð&Oð Oð OðLð Lð Lð06ð 06ð 06ðdLð Lð Lð4D ð D ð D ðL(ð (ð (ð,?ð ?ð ?ð%ð %ð %ðN$ð $ð $ð:((ð ((ð ((ðT>ð >ð >ð@
ð 
ð 
ð+ð +ð +ðZð ð ð*
ð 
ð 
ð9&ð 9&ð 9&ðv&'ð &'ð &'ðPð ð ð8p(ð p(ð p(ðd$ð $ð $ð !ð !ð !ð*ð *ð *ð$,/ð ,/ð ,/ð ,/ð\Fð Fð Fð2Eð Eð Eð
ð ð ð ð(8ð 8ð 8ð<ð <ð <ð <ð <ð <ð <rP   rï   c                 ót   — 	 t          j        | ¦  «        S # t          $ r t          j        | ¦  «        cY S w xY w)zjReturns a Literal instance if the type of value is supported;
    otherwise, return `Omitted(value)`.
    )r
   rÝ   r   r�  rG  s    rN   r¸  r¸  o  sH   € ð$ÝŒ}˜UÑ#Ô#Ð#øÝð $ð $ð $ÝŒ}˜UÑ#Ô#Ð#Ð#Ð#ð$øøøs   ‚ –7¶7).Úcollectionsr   r   rW  rg   Ú	functoolsr   Úllvmlite.irr?  r   r   Ú
numba.corer   r	   r
   r   r   r   r   r   r   r   r   Únumba.core.errorsr   r   r   r   r   r   Únumba.core.funcdescr   Únumba.core.environmentr   Únumba.core.analysisr   r   Únumba.misc.firstlinefinderr   Únumba.misc.coverage_supportr   r   Úobjectr#   rï   r¸  rV   rP   rN   ú<module>rø     s,  ðØ /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +ð&ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &ð6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 0Ð /Ð /Ð /Ð /Ð /Ø .Ð .Ð .Ð .Ð .Ð .Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ AÐ AÐ AÐ AÐ AÐ AØ AÐ AÐ AÐ AÐ AÐ Að ˆj˜Ð(;Ñ<Ô<€ð~!ð ~!ð ~!ð ~!ð ~!�ñ ~!ô ~!ð ~!ðB
R<ð R<ð R<ð R<ð R<ˆIñ R<ô R<ð R<ðj($ð $ð $ð $ð $rP   