§
    2@ÄjJC ã            
       óä0  — d Z ddlZddlZddlZddlZddlm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 ddl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! 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/ ddl0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6m7Z7 ddl8m9Z9m:Z: ddl;m<Z< ddl=m>Z>m?Z? ddl@mAZAmBZB ddl2mCZC ddlDmEZFmGZHmIZImJZJmKZK ddlLmZM d„ ZNd„ ZOd„ ZPd„ ZQd„ ZRd„ ZSd„ ZTd„ ZUd„ ZV	 �ddd„ZWd„ ZXd„ ZY e4eY¦  «        d „ ¦   «         ZZd!„ Z[ e4e[¦  «        d"„ ¦   «         Z\ e#d#ej]        ¦  «        d$„ ¦   «         Z^d%„ Z_ e#d&ej`        ¦  «         e)e-ja        ¦  «        d'„ ¦   «         ¦   «         Zb	 �ddd(„Zcd)„ Zdd*„ Ze e#ejf        ej]        ejg        ¦  «         e#ejf        ej]        ejh        ¦  «         e#ejf        ej]        eji        ¦  «        d+„ ¦   «         ¦   «         ¦   «         Zj e#ejf        ej]        ejk        ¦  «        d,„ ¦   «         Zl e#ejm        ej]        ejn        ejn        ¦  «        d-„ ¦   «         Zo e#epej]        ¦  «        d.„ ¦   «         Zq e#d/ejr        ¦  «        d0„ ¦   «         Zse!d1k     r  e#d2ejr        ejn        ¦  «        d3„ ¦   «         Zt G d4„ d5eu¦  «        Zv G d6„ d7ev¦  «        Zw G d8„ d9ev¦  «        Zx G d:„ d;ev¦  «        Zy G d<„ d=ev¦  «        Zz G d>„ d?ev¦  «        Z{ G d@„ dAev¦  «        Z| G dB„ dCeu¦  «        Z}dD„ Z~dE„ Z e#ejf        ej]        ejr        ¦  «        dF„ ¦   «         Z€dG„ Z�dH„ Z‚dI„ ZƒdJ„ Z„dK„ Z…dL„ Z†dM„ Z‡dN„ Zˆe6dO„ ¦   «         Z‰e6dP„ ¦   «         ZŠe3dQ„ ¦   «         Z‹dR„ ZŒ e4e
j�        ¦  «        dS„ ¦   «         ZŽe3dT„ ¦   «         Z� e4e
j�        ¦  «        dU„ ¦   «         Z‘ e4e
j’        ¦  «        dV„ ¦   «         Z“dW„ Z” e4e”dX¬Y¦  «        dZ„ ¦   «         Z• e4e”d[¬Y¦  «        d\„ ¦   «         Z–d]„ Z—d^„ Z˜ e#d_ejr        ¦  «        d`„ ¦   «         Z™da„ Zš e#d_ejr        ejk        ¦  «        db„ ¦   «         Z› e#d_ejr         ejœ        ejn        ¦  «        ¦  «        dc„ ¦   «         Z� e4e
jž        ¦  «        �dddd„¦   «         ZŸ e$ejr        de¦  «        df„ ¦   «         Z  e4e
j¡        ¦  «        �dedh„¦   «         Z¢ e4e
j£        ¦  «        �dedi„¦   «         Z¤ e4e
j¥        ¦  «        �dfdk„¦   «         Z¦dl„ Z§dm„ Z¨ e#dnejr        ejk        ¦  «        do„ ¦   «         Z© e#dnejr         ejœ        ejn        ¦  «        ¦  «        dp„ ¦   «         Zªe!dqk     r e4e
j«        ¦  «        dr„ ¦   «         Z¬n e4e
j«        ¦  «        ds„ ¦   «         Z¬ e4e
j­        ¦  «        dt„ ¦   «         Z® e4e
j¯        ¦  «        �dddu„¦   «         Z° e#dvejr        ¦  «        dw„ ¦   «         Z± e#e
j²        ejr        ¦  «        dx„ ¦   «         Z³ e#dyejr        ¦  «        dz„ ¦   «         Z´e3d{„ ¦   «         Zµe3d|„ ¦   «         Z¶e3d}„ ¦   «         Z· e4e
j¸        ¦  «        �ddd~„¦   «         Z¹ e5ejr        d¦  «        �dgd€„¦   «         Zºd�„ Z» e4e
j¼        ¦  «        d‚„ ¦   «         Z½ e4e
j¾        ¦  «        dƒ„ ¦   «         Z¿ e4e
jÀ        ¦  «        d„„ ¦   «         ZÁ e4e
jÂ        ¦  «        d…„ ¦   «         ZÃe3d†„ ¦   «         ZÄ ej5        ejr        d‡¦  «        dˆ„ ¦   «         ZÅe6d‰„ ¦   «         ZÆdŠ„ ZÇ e4eÇdX¬Y¦  «        d‹„ ¦   «         ZÈ e#dŒejr        ejÉ        ¦  «        d�„ ¦   «         ZÊ e$ejr        dŽ¦  «        d�„ ¦   «         ZË e$ejr        d�¦  «         e$ejÌ        d�¦  «        d‘„ ¦   «         ¦   «         ZÍ e$ejr        d’¦  «         e$ejÌ        d’¦  «        d“„ ¦   «         ¦   «         ZÎ e$ejr        d”¦  «         e$ejÌ        d”¦  «        d•„ ¦   «         ¦   «         ZÏ e$ejr        d–¦  «        d—„ ¦   «         ZÐ e$ejr        d˜¦  «         e$ejÌ        d˜¦  «        d™„ ¦   «         ¦   «         ZÑ e$ejr        dš¦  «         e$ejÌ        dš¦  «        d›„ ¦   «         ¦   «         ZÒ e$ejÌ        dœ¦  «        d�„ ¦   «         ZÓ e$ejÌ        dž¦  «        dŸ„ ¦   «         ZÔ e$ejÌ        d ¦  «        d¡„ ¦   «         ZÕ e$ejÌ        d¢¦  «        d£„ ¦   «         ZÖ e$ejr        d¤¦  «        d¥„ ¦   «         Z× e$ejØ        d¦¦  «        d§„ ¦   «         ZÙ e'ejØ        ejÚ        ¦  «         e'ejØ        ejÛ        ¦  «        d¨„ ¦   «         ¦   «         ZÜd©„ ZÝ e$ejr        dª¦  «        d«„ ¦   «         ZÞ e$ejß        dœ¦  «         e$ejß        dž¦  «        d¬„ ¦   «         ¦   «         Zà e$ejß        d ¦  «        d­„ ¦   «         Zá e$ejr        d®¦  «        d¯„ ¦   «         Zâ e$ejr        d°¦  «        d±„ ¦   «         Zãd²„ Zä e5ejr        d³¦  «         e5ejr        d´¦  «        dµ„ ¦   «         ¦   «         Zåd¶„ Zæ  e$ejç        d·¦  «        eæ¦  «           e$ejç        d¸¦  «        eæ¦  «          e#d¹ejè        ejn        ¦  «        dº„ ¦   «         Zé e%ejr        ¦  «        d»„ ¦   «         Zê e#d¹ejr        ej1        ¦  «        d¼„ ¦   «         Zë e%ejì        ¦  «        d½„ ¦   «         Zí e&ejì        ¦  «        d¾„ ¦   «         Zî e#d¹ejì        ej1        ¦  «        d¿„ ¦   «         Zï e#d¹ejì        ejð        ¦  «        dÀ„ ¦   «         Zñ e#dÁejì        ej1        ejn        ¦  «        dÂ„ ¦   «         Zò e#dÁejì        ejð        ejn        ¦  «        dÃ„ ¦   «         Zó e(ejr        ¦  «        dÄ„ ¦   «         Zô e(ejì        ¦  «        dÅ„ ¦   «         Zõ e(ejö        ¦  «        dÆ„ ¦   «         Z÷ e#ejø        ejr        ejr        ¦  «        dÇ„ ¦   «         Zù e7ejr        dÈ¦  «        dÉ„ ¦   «         ZúdÊ„ ZûdË„ Zü	 	 �dgdÌ„Zý	 �dddÍ„ZþdÎ„ ZÿdÏ„ �Z dÐ„ �Z e$ejr        dÑ¦  «        dÒ„ ¦   «         �Z e#d&e�j        ¦  «         e)e-ja        ¦  «        dÓ„ ¦   «         ¦   «         �Z e#ejf        e�j        ejg        ¦  «        dÔ„ ¦   «         �Z e#ejm        e�j        ejg        ejn        ¦  «        dÕ„ ¦   «         �Z e#epe�j        ¦  «        dÖ„ ¦   «         �Z e#e
�j        ejr        ¦  «        d×„ ¦   «         �Z	 e#d&e�j
        ¦  «         e)e-ja        ¦  «        dØ„ ¦   «         ¦   «         �Z e#e ejœ        ejg        ¦  «        ¦  «         e#e
�j         ejœ        ejg        ¦  «        ¦  «        dÙ„ ¦   «         ¦   «         �Z e#eejk        ¦  «         e#e
�j        ejk        ¦  «        dÚ„ ¦   «         ¦   «         �Z e#d&e�j        ¦  «         e)e-ja        ¦  «        dÛ„ ¦   «         ¦   «         �Z e#e
�j        ejn        ¦  «        dÜ„ ¦   «         �Z e#d&e�j        ¦  «         e)e-ja        ¦  «        dÝ„ ¦   «         ¦   «         �Z e#e�j        ejç        ejç        ¦  «        dÞ„ ¦   «         �Zdß„ �Z eCejr        dàd[¬Y¦  «        dá„ ¦   «         �Zdâ„ �Ze6dã„ ¦   «         �Zdä„ �Zdå„ �Zdæ„ �Zdç„ �Ze6dè„ ¦   «         �Z e4e
�j         ¦  «        �e!fdé„¦   «         �Z"e6dê„ ¦   «         �Z# e4e
�j$        ¦  «        �dddë„¦   «         �Z%e6dì„ ¦   «         �Z& e5ejr        dí¦  «        dî„ ¦   «         �Z' e4e
�j(        ¦  «        �e!fdï„¦   «         �Z) e4e
�j*        ¦  «        �dddð„¦   «         �Z+ e4e
�j,        ¦  «        �dddñ„¦   «         �Z- e4e
�j.        ¦  «        �dddò„¦   «         �Z/ e4e
�j0        ¦  «        �dddó„¦   «         �Z1 e4e
�j2        ¦  «        �dddô„¦   «         �Z3 e4e
�j4        ¦  «        �dddõ„¦   «         �Z5dö„ �Z6 ej4        �e6¦  «        d÷„ ¦   «         �Z7 ej4        e
�j8        ¦  «        dd�e!fdø„¦   «         �Z9 e4e
�j:        ¦  «        �dhdù„¦   «         �Z; e4e
�j<        ¦  «        dú„ ¦   «         �Z= e4e
�j>        ¦  «        �dhdû„¦   «         �Z?dü„ �Z@ e4e
�jA        ¦  «         e5ejr        dý¦  «        �dddþ„¦   «         ¦   «         �ZBdÿ„ �ZC e4e
�jD        ¦  «        �dg�d „¦   «         �ZE e4e
�jF        ¦  «        �de�d„¦   «         �ZG�d„ �ZHe6�d„ ¦   «         �ZI e#�dejr        ¦  «        �d„ ¦   «         �ZJ e4e
�jK        ¦  «        �d„ ¦   «         �ZL�d„ �ZMe6�d„ ¦   «         �ZN e4e
�jO        ¦  «        �d	„ ¦   «         �ZP e4e
�jQ        ¦  «        �d
„ ¦   «         �ZR e#�dejr        ejÉ        ¦  «         e#�dejr        ej1        ¦  «        �d„ ¦   «         ¦   «         �ZSe6�d„ ¦   «         �ZT e5ejr        �d¦  «        �d„ ¦   «         �ZUe6�d„ ¦   «         �ZV e4e
�jW        ¦  «        �e!�ddf�d„¦   «         �ZX e4e¦  «        �dd�d„¦   «         �ZY e4e¦  «        �dd�d„¦   «         �ZZ�d„ �Z[�d„ �Z\�d„ �Z]�d„ �Z^�d„ �Z_�d„ �Z`�d„ �Za�d„ �Zbe6�d„ ¦   «         �Zc e4e
�jd        ¦  «        �dd�d„¦   «         �Ze�d„ �Zf�d „ �Zg�d!„ �Zh�d"„ �Zie6�d#„ ¦   «         �Zj e4e
�ji        ¦  «        �d$„ ¦   «         �Zk�d%„ �Zl�d&„ �Zm e4e
�jn        ¦  «        �d'„ ¦   «         �Zo e4e
�jp        ¦  «        �d(„ ¦   «         �Zq e4e
�jr        ¦  «        �d)„ ¦   «         �Zs�d*„ �Zt�d+„ �Zu�d,„ �Zv�d-„ �Zwe6�d.„ ¦   «         �Zx e4e
�jy        ¦  «        �dh�d/„¦   «         �Zz�d0„ �Z{e6�d1„ ¦   «         �Z| e4e
�j}        ¦  «        �d2„ ¦   «         �Z~�d3„ �Ze6�d4„ ¦   «         �Z€ e4e
�j�        ¦  «        �dh�d5„¦   «         �Z‚�d6„ �Zƒe6�d7„ ¦   «         �Z„ e4e
�j…        ¦  «        �d8„ ¦   «         �Z†e6�d9„ ¦   «         �Z‡ e4e
�jˆ        ¦  «        �d:„ ¦   «         �Z‰e!d1k    r"e!�d;k     r  e4e
�jŠ        ¦  «        �e‰¦  «         e6�d<„ ¦   «         �Z‹ e4e
�jŒ        ¦  «        �d=„ ¦   «         �Z� ej5        ejr        �d>¦  «        �d?„ ¦   «         �ZŽ ej5        ejr        �d@¦  «        �dA„ ¦   «         �Z� e4e
�j�        ¦  «        �dB„ ¦   «         �Z‘ e4e
�j’        ¦  «        �dC„ ¦   «         �Z“e6�dD„ ¦   «         �Z” e4e
�j•        ¦  «        �dE„ ¦   «         �Z– e4e
�j—        ¦  «        �dh�dF„¦   «         �Z˜ e4e
�j™        ¦  «        �dh�dG„¦   «         �Zš e4e
�j›        ¦  «        �dH„ ¦   «         �Zœ e4e
�j�        ¦  «        �dI„ ¦   «         �Zž e4e
�jŸ        ¦  «        �dJ„ ¦   «         �Z i �Z¡�dK„ �Z¢�di�dM„�Z£�dN„ �Z¤ e#�dOejr        ej1        ¦  «        �dP„ ¦   «         �Z¥ e4e
�j¦        ¦  «        �dQ„ ¦   «         �Z§ e#�dRejr        ej1        ¦  «         e#e
�j¨        ejr        ej1        ¦  «        �dS„ ¦   «         ¦   «         �Z© e'ejr        ejr        ¦  «        �dT„ ¦   «         �Zª e'ejr        e�j«        ¦  «         e'ejr        e�j¬        ¦  «         e'ejr        ejg        ¦  «         e'ejr        e�j­        ¦  «         e'ejr        e�j®        ¦  «         e'ejr        eM�j¯        ¦  «         e'ejr        eM�j°        ¦  «        �dU„ ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         �Z± e'ejr        e�j«        ¦  «        �dV„ ¦   «         �Z²�dW„ �Z³ e�j´        �e³¦  «        �dX„ ¦   «         �Zµ e#�e³ejr        ejk        ejk        ¦  «        �dY„ ¦   «         �Z¶ ej4        e
�j·        �j¸        �j¹        ¦  «        �dj�dZ„¦   «         �Z¹ ej4        e
�j·        �j¸        �jº        ¦  «        �dd�d[„¦   «         �Zº e4�e»¦  «        �d\„ ¦   «         �Z¼ e4e
�j½        ¦  «        �d]„ ¦   «         �Z¾ e4e
�j¿        ¦  «        �d^„ ¦   «         �ZÀe3�d_„ ¦   «         �ZÁ e4e
�jÂ        ¦  «        �d`„ ¦   «         �ZÃ e4e
�jÄ        ¦  «        �dk�dc„¦   «         �ZÅdS (l  z[
Implementation of operations on Array objects and objects supporting
the buffer protocol.
é    N)Úir)ÚConstant)ÚpndindexÚliteral_unroll)ÚtypesÚtypingÚerrorsÚcgutilsÚ	extending)
Úas_dtypeÚ
from_dtypeÚcarrayÚfarrayÚis_contiguousÚ
is_fortranÚcheck_is_integerÚtype_is_scalarÚ
lt_complexÚ	lt_floats)Útype_can_asarrayÚis_nonelikeÚnumpy_version)Úlower_builtinÚlower_getattrÚlower_getattr_genericÚlower_setattr_genericÚ
lower_castÚlower_constantÚiternext_implÚimpl_ret_borrowedÚimpl_ret_new_refÚimpl_ret_untrackedÚRefType)Ú	signature)ÚStringLiteral)Úregister_jitableÚoverloadÚoverload_methodÚ	intrinsicÚoverload_attribute)Ú	quicksortÚ	mergesort)Úslicing)Ú_make_constant_bytesÚ
bytes_type)Útuple_setitemÚbuild_full_slice_tuple)Úoverload_classmethod)Úparse_dtypeÚparse_shapeÚ_parse_nested_sequenceÚ_sequence_of_arraysÚ_choose_concatenation_layout)r   c                 óº   — t          |j        |¦  «        t          |j        |¦  «        g}| j                             |¦  «        }|                     d|¦  «         dS )zz
    Set the "range" metadata on a load instruction.
    Note the interval is in the form [lower_bound, upper_bound).
    ÚrangeN)r   ÚtypeÚmoduleÚadd_metadataÚset_metadata)ÚbuilderÚloadÚlower_boundÚupper_boundÚrange_operandsÚmds         úBC:\Projects\Historical\venv\Lib\site-packages\numba/np/arrayobj.pyÚset_range_metadatarE   /   sZ   € õ
 ˜tœy¨+Ñ6Ô6Ý˜tœy¨+Ñ6Ô6ð8€Nà	Œ×	$Ò	$ ^Ñ	4Ô	4€BØ×Ò�g˜rÑ"Ô"Ð"Ð"Ð"ó    c                 óT   — d|j         j        dz
  z  dz
  }t          | |d|¦  «         dS )zF
    Mark the result of a load instruction as positive (or zero).
    é   r   N)r:   ÚwidthrE   )r>   r?   rA   s      rD   Úmark_positiverJ   :   s6   € ð ˜œœ¨1Ñ,Ñ-°Ñ2€KÝ�w  a¨Ñ5Ô5Ð5Ð5Ð5rF   c                 ó|   ‡ ‡‡‡‡— ‰ j         Št          j        ‰¦  «        Š‰j        Š G ˆˆ ˆˆˆfd„d‰¦  «        Š‰S )zë
    Return the Structure representation of the given *array_type*
    (an instance of types.ArrayCompatible).

    Note this does not call __array_wrap__ in case a new array structure
    is being created (rather than populated).
    c                   óB   •‡ — e Zd Zˆˆ ˆˆfd„Zeˆˆfd„¦   «         Zˆ xZS )úmake_array.<locals>.ArrayStructc                 ó€  •— t          ‰
‰	¦  «        }	 | j                             d|¦  «        }n3# t          $ r& t	          ‰| ¦  «                             |¦  «        cY S w xY w| j        j        ‰	         }|                      |¦  «        }|€t          j	        | j
        |d¬¦  «        }n|} || j
        |f¦  «        }||fS )NÚ	__array__T)Úzfill)r$   Ú_contextÚget_functionÚNotImplementedErrorÚsuperÚ
_make_refsÚdata_model_managerÚ_get_be_typer
   Úalloca_onceÚ_builder)ÚselfÚrefÚsigÚ
array_implÚ	datamodelÚbe_typeÚ	outer_refÚArrayStructÚ	__class__Ú
array_typeÚreal_array_types          €€€€rD   rU   z*make_array.<locals>.ArrayStruct._make_refsP   sç   ø€ Ý˜O¨ZÑ8Ô8ˆCð@Ø!œ]×7Ò7¸ÀSÑIÔI�
�
øÝ&ð @ð @ð @Ý˜[¨$Ñ/Ô/×:Ò:¸3Ñ?Ô?Ð?Ð?Ð?ð@øøøð œÔ8¸ÔDˆIØ×'Ò'¨	Ñ2Ô2ˆGØˆ{Ý#Ô/°´¸wØ6:ð<ñ <ô <�	�	ð  �	ð �*˜Tœ]¨Y¨LÑ9Ô9ˆCØ˜c�>Ð!s   “/ ¯-AÁAc                 óh  •— | j         }‰dk    r‰                     | d¦  «        S |                      d¦  «        }g }t          ‰¦  «        D ]S}t	          j        ||d|¦  «        }|                     |¦  «        }|                     |¦  «         t          ||¦  «         ŒTt	          j	        ||¦  «        S )z\
            Override .shape to inform LLVM that its elements are all positive.
            r   Úshape)
rY   Ú__getattr__Ú_get_ptr_by_namer9   r
   Úgep_inboundsr?   ÚappendrJ   Ú
pack_array)	rZ   r>   ÚptrÚdimsÚiÚdimptrr?   ÚbaseÚndims	          €€rD   rf   z%make_array.<locals>.ArrayStruct.shaped   s¹   ø€ ð
 ”mˆGØ�qŠyˆyØ×'Ò'¨¨gÑ6Ô6Ð6ð ×'Ò'¨Ñ0Ô0ˆCØˆDÝ˜4‘[”[ð -ð -�Ý Ô-¨g°s¸A¸qÑAÔA�Ø—|’| FÑ+Ô+�Ø—’˜DÑ!Ô!Ð!Ý˜g tÑ,Ô,Ð,Ð,åÔ% g¨tÑ4Ô4Ð4rF   )Ú__name__Ú
__module__Ú__qualname__rU   Úpropertyrf   Ú__classcell__)rb   ra   rc   rp   rq   rd   s   @€€€€€rD   ra   rM   N   sr   øø€ € € € € ð	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð( 
ð	5ð 	5ð 	5ð 	5ð 	5ñ 
Œð	5ð 	5ð 	5ð 	5ð 	5rF   ra   )Úas_arrayr
   Úcreate_struct_proxyrq   )rc   ra   rp   rq   rd   s   `@@@@rD   Ú
make_arrayry   B   sz   øøøøø€ ð !Ô)€OÝÔ& Ñ7Ô7€DØÔ€Dð+5ð +5ð +5ð +5ð +5ð +5ð +5ð +5ð +5ð +5ð +5�dñ +5ô +5ð +5ðZ ÐrF   c                 ó`   — |                       |j        ¦  «        }|                      |¦  «        S )zB
    Return the item size for the given array or buffer type.
    )Úget_data_typeÚdtypeÚget_abi_sizeof)Úcontextrc   Úlltys      rD   Úget_itemsizer€   ~   s.   € ð × Ò  Ô!1Ñ2Ô2€DØ×!Ò! $Ñ'Ô'Ð'rF   c                 óT   — |j         rdnd}|                      ||j        ||¬¦  «        S )z3
    Load the item at the given array pointer.
    NrH   ©Úalign)ÚalignedÚunpack_valuer|   )r~   r>   Úarraytyrl   rƒ   s        rD   Ú	load_itemr‡   †   s<   € ð ”OÐ*ˆDˆD¨€EØ×Ò ¨¬¸Ø&+ð  ñ -ô -ð -rF   c                 óV   — |j         rdnd}|                      ||j        |||¬¦  «        S )z4
    Store the item at the given array pointer.
    NrH   r‚   )r„   Ú
pack_valuer|   )r~   r>   r†   Úvalrl   rƒ   s         rD   Ú
store_itemr‹   �   s5   € ð ”OÐ*ˆDˆD¨€EØ×Ò˜g w¤}°c¸3ÀeÐÑLÔLÐLrF   c                 óÊ   — |j         r9|                      |||t          j        ¦  «        }t	          j        |||¦  «        }n"|                      |||t          j        ¦  «        }|S )zM
    Fix the integer index' type and value for the given dimension size.
    )ÚsignedÚcastr   Úintpr-   Ú	fix_indexÚuintp)r~   r>   ÚidxtyÚidxÚsizeÚinds         rD   Úfix_integer_indexr–   —   s[   € ð „|ð =Ø�lŠl˜7 C¨µ´
Ñ;Ô;ˆÝÔ ¨¨dÑ3Ô3ˆˆà�lŠl˜7 C¨µ´Ñ<Ô<ˆØ€JrF   c                 ó
  — t          |t          j        ¦  «        rf|j        dk    r[t          |j        t          j        ¦  «        sJ ‚ t          |¦  «        | ||¦  «        }t          | |||j        ¦  «        }|j        |fS ||fS )zS
    Normalize the index type and value.  0-d arrays are converted to scalars.
    r   )	Ú
isinstancer   ÚArrayrq   r|   ÚIntegerry   r‡   Údata)r~   r>   r’   r“   ÚidxaryÚidxvals         rD   Únormalize_indexrž   £   sƒ   € õ �%�œÑ%Ô%ð ¨%¬*¸ª/¨/Ý˜%œ+¥u¤}Ñ5Ô5Ð5Ð5Ð5Ø"•˜EÑ"Ô" 7¨G°SÑ9Ô9ˆÝ˜7 G¨U°F´KÑ@Ô@ˆØŒ{˜FÐ"Ð"à�cˆzÐrF   c                 óz   ‡ ‡— t          |¦  «        r't          ˆˆ fd„t          ||¦  «        D ¦   «         Ž \  }}||fS )z^
    Same as normalize_index(), but operating on sequences of
    index types and values.
    c                 ó:   •— g | ]\  }}t          ‰‰||¦  «        ‘ŒS © )rž   )Ú.0r’   r“   r>   r~   s      €€rD   ú
<listcomp>z%normalize_indices.<locals>.<listcomp>¶   s@   ø€ ð %'ð %'ð %'á)3¨°õ &5°W¸gÀuØ58ñ&:ô &:ð %'ð %'ð %'rF   )ÚlenÚzip)r~   r>   Úindex_typesÚindicess   ``  rD   Únormalize_indicesr¨   °   se   øø€ õ
 ˆ7�|„|ð (Ý"ð %'ð %'ð %'ð %'ð %'å7:¸;ÈÑ7PÔ7Pð%'ñ %'ô %'ð  (Ñˆ�Wð ˜ÐÐrF   c                 ót  — | j         }| j        }| j        }	t          j        t          j        dd¦  «        }
|j        |
         }t          |j        ¦  «        }t          |	j        ¦  «        }||z  |k    r:||z
  }d| j	        › dt          |¦  «        dk    rdnd› d|› d�}t          |¦  «        ‚|€6t          |                     |	                     d
¦  «        ¦  «        d	¦  «        }|                     t          j        ¦  «        }t!          |t"          t$          f¦  «        rt'          j        |||¦  «        }t!          |t"          t$          f¦  «        rt'          j        |||¦  «        }t!          |t*          ¦  «        r ||¦  «        }t-          |||||¬¦  «        }|€:t          |                     |	                     d¦  «        ¦  «        d	¦  «        |d<   n||d<   |                     t          j        d¦  «        }t'          j        |||j        j        ¦  «        }|D ]}|                     ||dg¬¦  «        }Œ||d<   t          |                     ¦   «         ¦  «        }||k    r%t          d                     ||z
  ¦  «        ¦  «        ‚|                     ¦   «         D ]\  }}t?          | ||¦  «         Œ| S )z¤
    Helper function for populating array structures.
    This avoids forgetting to set fields.

    *shape* and *strides* can be Python tuples or LLVM arrays.
    rH   ÚCzThe datamodel for type z is missing fieldÚsÚ ú ú.NÚmeminfo)rf   Ústridesr›   Úitemsizer¯   ÚparentÚnsw©ÚflagsÚnitemszmissing {0}) rQ   rY   Ú
_datamodelr   r™   Úfloat64rV   ÚsetÚ_fieldsÚ_fe_typer¤   Ú
ValueErrorr   Úget_value_typeÚget_typer�   r˜   ÚtupleÚlistr
   rk   ÚintÚdictÚget_constantÚunpack_tupler:   ÚcountÚmulÚkeysÚformatÚitemsÚsetattr)Úarrayr›   rf   r°   r±   r¯   r²   r~   r>   r^   Ústandard_arrayÚstandard_array_type_datamodelÚrequired_fieldsÚdatamodel_fieldsÚmissingÚmsgÚintp_tÚattrsr¶   Úunpacked_shapeÚaxlenÚ
got_fieldsÚkÚvs                           rD   Úpopulate_arrayrÙ   ½   sí  € ð Œn€GØŒn€GØÔ €Iõ ”[¥¤°°3Ñ7Ô7€NØ$+Ô$>¸~Ô$NÐ!ÝÐ7Ô?Ñ@Ô@€OÝ˜9Ô,Ñ-Ô-Ðð 	Ð*Ñ*¨Ò>Ð>Ø!Ð$4Ñ4ˆðD¨¬ð Dð DÝ! '™lœl¨QÒ.Ð.�s�s°BðDð DØ9@ðDð Dð Dˆå˜‰oŒoÐà€Ý˜7×1Ò1Ø×Ò˜yÑ)Ô)ñ+ô +Ø,0ñ2ô 2ˆð ×#Ò#¥E¤JÑ/Ô/€FÝ�%�%¥˜Ñ'Ô'ð ;ÝÔ" 7¨E°6Ñ:Ô:ˆÝ�'�E¥4˜=Ñ)Ô)ð ?ÝÔ$ W¨g°vÑ>Ô>ˆÝ�(�CÑ Ô ð $Ø�6˜(Ñ#Ô#ˆå�uØ ØØ"Ø ð	#ñ #ô #€Eð €~Ý" 7×#9Ò#9Ø×Ò˜xÑ(Ô(ñ$*ô $*Ø+/ñ1ô 1ˆˆh‰ˆð !ˆˆh‰à×!Ò!¥%¤*¨aÑ0Ô0€FÝÔ)¨'°5¸%¼*Ô:JÑKÔK€Nàð ;ð ;ˆØ—’˜V U°5°'�Ñ:Ô:ˆˆØ€Eˆ(�Oõ �U—Z’Z‘\”\Ñ"Ô"€JØ�_Ò$Ð$Ý˜×-Ò-¨oÀ
Ñ.JÑKÔKÑLÔLÐLð —’‘”ð ð ‰ˆˆ1Ý��q˜!ÑÔÐÐà€LrF   c                 óR  — |j         }|j        }|                     t          j        d¦  «        }t          j        ||j        | j        ¦  «        }|D ]}| 	                    ||dg¬¦  «        }Œ||_
        |                     t          j        t          || ¦  «        ¦  «        |_        dS )z‡
    Update some auxiliary information in *array* after some of its fields
    were changed.  `itemsize` and `nitems` are updated.
    rH   r³   r´   N)rQ   rY   rÃ   r   r�   r
   rÄ   rf   rq   rÆ   r¶   r€   r±   )ÚarytyrË   r~   r>   r¶   rÔ   rÕ   s          rD   Úupdate_array_inforÜ     s¢   € ð
 Œn€GØŒn€Gð ×!Ò!¥%¤*¨aÑ0Ô0€FÝÔ)¨'°5´;ÀÄ
ÑKÔK€NØð ;ð ;ˆØ—’˜V U°5°'�Ñ:Ô:ˆˆØ€E„Là×)Ò)­%¬*Ý*6°wÀÑ*FÔ*FñHô H€E„N€N€NrF   c                 ó   — t          ¦   «         ‚)z/Constrain axis values to valid positive values.©rS   ©Ú	func_nameÚarg_namerq   Úaxiss       rD   Únormalize_axisrã     ó   € å
Ñ
Ô
ÐrF   c                 óÚ   ‡— t          | t          ¦  «        st          j        d¦  «        ‚t          |t          ¦  «        st          j        d¦  «        ‚| j        › d|j        › d�Šˆfd„}|S )Nú func_name must be a str literal.úarg_name must be a str literal.ú: Argument ú* out of bounds for dimensions of the arrayc                 óT   •— |dk     r||z  }|dk     s||k    rt          ‰¦  «        ‚|S ©Nr   ©r¼   )rà   rá   rq   râ   rÑ   s       €rD   Úimplz&normalize_axis_overloads.<locals>.impl&  s7   ø€ Ø�!Š8ˆ8Ø�D‰LˆDØ�!Š8ˆ8�t˜t’|�|Ý˜S‘/”/Ð!àˆrF   )r˜   r%   r	   ÚTypingErrorÚliteral_value)rà   rá   rq   râ   rí   rÑ   s        @rD   Únormalize_axis_overloadsrð     s˜   ø€ å�i¥Ñ/Ô/ð EÝÔ Ð!CÑDÔDÐDÝ�h¥Ñ.Ô.ð DÝÔ Ð!BÑCÔCÐCð Ô"ð 	4ð 	4¨xÔ/Eð 	4ð 	4ð 	4ð ð
ð ð ð ð ð €KrF   c                 ó   — t          ¦   «         ‚)zFNormalizes an axis argument into a tuple of non-negative integer axes.rÞ   rß   s       rD   Únormalize_axis_tuplerò   1  rä   rF   c                 ór  ‡‡‡‡— t          | t          ¦  «        st          j        d¦  «        ‚t          |t          ¦  «        st          j        d¦  «        ‚| j        › d|j        › d�Š| j        › d|j        › d�Št          |t
          j        ¦  «        rˆfd„}nt          |¦  «        Šd‰z  Šˆˆˆˆfd	„}|S )
Nræ   rç   rè   ré   z: repeated axis in z	 argumentc                 óV   •— |dk     r||z  }|dk     s||k    rt          ‰¦  «        ‚|fS rë   rì   )rà   rá   rq   râ   Úinvalid_axis_msgs       €rD   rí   z,normalize_axis_tuple_overloads.<locals>.implI  s<   ø€ Ø�aŠxˆxØ˜‘�Ø�aŠxˆx˜4 4š<˜<Ý Ð!1Ñ2Ô2Ð2à�7ˆNrF   ©r   c                 ó  •— ‰	}t          |¦  «        D ]<\  }}|dk     r||z  }|dk     s||k    rt          ‰¦  «        ‚t          |||¦  «        }Œ=t          t	          |¦  «        ¦  «        ‰k    rt          ‰
¦  «        ‚|S rë   )Ú	enumerater¼   r0   r¤   r¹   )rà   rá   rq   râ   Ú	norm_axisrn   ÚaxÚaxis_lenrõ   Únorm_axis_initÚrepeated_axis_msgs          €€€€rD   rí   z,normalize_axis_tuple_overloads.<locals>.implU  s”   ø€ Ø&ˆIÝ" 4™œð <ð <‘��2Ø˜’6�6Ø˜$‘J�BØ˜’6�6˜R 4šZ˜ZÝ$Ð%5Ñ6Ô6Ð6Ý)¨)°Q¸Ñ;Ô;�	�	å•3�y‘>”>Ñ"Ô" hÒ.Ð.Ý Ð!2Ñ3Ô3Ð3àÐrF   )r˜   r%   r	   rî   rï   r   rš   r¤   )	rà   rá   rq   râ   rí   rû   rõ   rü   rý   s	        @@@@rD   Únormalize_axis_tuple_overloadsrþ   6  s   øøøø€ å�i¥Ñ/Ô/ð EÝÔ Ð!CÑDÔDÐDÝ�h¥Ñ.Ô.ð DÝÔ Ð!BÑCÔCÐCð Ô"ð 	4ð 	4¨xÔ/Eð 	4ð 	4ð 	4ð ð Ô"ð 	-ð 	-ØÔ!ð	-ð 	-ð 	-ð õ
 �$�œÑ&Ô&ð ð	ð 	ð 	ð 	ð 	ð 	õ �t‘9”9ˆØ ™ˆð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð €KrF   Úgetiterc                 óx  — |j         \  }|\  }|                      ||j        ¦  «        }|                      t          j        d¦  «        }t          j        ||¦  «        }||_        ||_	        | j
        r| j                             |||¦  «         |                     ¦   «         }	t          | ||j        |	¦  «        }
|
S rë   )ÚargsÚmake_helperÚreturn_typerÃ   r   r�   r
   Úalloca_once_valueÚindexrË   Ú
enable_nrtÚnrtÚincrefÚ	_getvaluer!   )r~   r>   r\   r  r†   rË   ÚiterobjÚzeroÚindexptrÚresÚouts              rD   Úgetiter_arrayr  f  s´   € à”�I€WØ�G€Uà×!Ò! '¨3¬?Ñ;Ô;€Gà×Ò¥¤
¨AÑ.Ô.€DÝÔ(¨°$Ñ7Ô7€Hà€G„MØ€G„Mð Ôð 4ØŒ×Ò˜7 G¨UÑ3Ô3Ð3à
×
Ò
Ñ
Ô
€Cõ ˜7 G¨S¬_¸cÑ
BÔ
B€CØ€JrF   c           
      óÐ  — t          j        ||j        |j        ¬¦  «        }t          j        ||j        |j        ¬¦  «        }|                     |d         |¦  «        }t          j        ||j        |¦  «        }	|dd…         }
|dd…         }t          |t          j
        ¦  «        r*t          | |||||	|
|¦  «        }|                     ¦   «         S |
rJ ‚t          | |||	¦  «        S )z1 Evaluate `ary[idx]`, where idx is a single int. ©rÅ   r   rH   N)r
   rÄ   rf   rq   r°   rÆ   Úpointer_addr›   r˜   r   ÚBufferÚ	make_viewr	  r‡   )r~   r>   r  rÛ   Úaryr“   Úshapesr°   ÚoffsetÚdataptrÚview_shapesÚview_stridesÚretarys                rD   Ú_getitem_array_single_intr  ~  sè   € õ Ô! '¨3¬9¸E¼JÐGÑGÔG€FÝÔ" 7¨C¬K¸u¼zÐJÑJÔJ€GØ�[Š[˜ œ SÑ)Ô)€FÝÔ! '¨3¬8°VÑ<Ô<€GØ˜˜˜”*€KØ˜1˜2˜2”;€Lå�+�uœ|Ñ,Ô,ð ;å˜7 G¨U°C¸Ø" K°ñ?ô ?ˆà×ÒÑ!Ô!Ð!ð ÐÐˆÝ˜ '¨5°'Ñ:Ô:Ð:rF   Úiternextc           	      ó~  — |j         \  }|\  }|j        }|                      |||¬¦  «        } t          |¦  «        | ||j        ¬¦  «        }	t          j        ||	j        d¬¦  «        \  }
|                     |j	        ¦  «        }| 
                    d||
¦  «        }|                     |¦  «         |                     |¦  «        5  t          | ||j        ||	|¦  «        }|                     |¦  «         t          j        ||¦  «        }|                     ||j	        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N©ÚvaluerH   r  ú<)r  rc   r  ry   rË   r
   rÄ   rf   r?   r  Úicmp_signedÚ	set_validÚif_thenr  Ú
yield_typeÚyield_Úincrement_indexÚstore)r~   r>   r\   r  ÚresultÚitertyÚiterr†   r
  r  r¶   r  Úis_validr   Únindexs                  rD   Úiternext_arrayr.  “  s€  € ð Œx�H€VØ�F€TØÔ€Gà×!Ò! '¨6¸Ð!Ñ>Ô>€GØ
�*�WÑ
Ô
˜g w°g´mÐ
DÑ
DÔ
D€CåÔ" 7¨C¬I¸QÐ?Ñ?Ô?�G€Fà�LŠL˜œÑ'Ô'€EØ×"Ò" 3¨¨vÑ6Ô6€HØ
×Ò�XÑÔÐà	�Š˜Ñ	"Ô	"ð -ð -Ý)Ø�W˜fÔ/°¸#¸uñ
ô 
ˆð 	�Š�eÑÔÐÝÔ(¨°%Ñ8Ô8ˆØ�Š�f˜gœmÑ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -s   ÃAD2Ä2D6Ä9D6c           	      óÀ  — |                       t          j        d¦  «        }|                       t          j        d¦  «        }t          j        ||j        |j        ¦  «        }	t          j        ||j        |j        ¦  «        }
g }g }g }t          d„ |D ¦   «         ¦  «        }d}t          ||¦  «        D �].\  }}|t          j
        u r€|j        t          |¦  «        z
  dz   |z   }t          |¦  «        D ]R}|                     |¦  «         |                     |	|         ¦  «         |                     |
|         ¦  «         |dz  }ŒSŒ”t          |t          j        ¦  «        rÁ|                      |||¬¦  «        }t!          j        | |||¦  «         t!          j        |||	|         ¦  «         |                     |j        ¦  «         t!          j        ||¦  «        }t!          j        |||
|         ¦  «        }|                     |¦  «         |                     |¦  «         nºt          |t          j        ¦  «        rOt/          | ||||	|         ¦  «        }|rt          j        | |||	|         |¦  «         |                     |¦  «         nQt3          |¦  «        r0|                     |¦  «         |                     |¦  «         |dz  }nt5          d|›�¦  «        ‚|dz  }�Œ0||j        k    sJ ‚||j        k     rF|                     |	|         ¦  «         |                     |
|         ¦  «         |dz  }||j        k     °Ft          j        | ||||dd¬¦  «        }|||fS )z“
    Perform basic indexing on the given array.
    A (data pointer, shapes, strides) tuple is returned describing
    the corresponding view.
    r   rH   c                 ó0   — g | ]}t          |¦  «        ¯|‘ŒS r¡   ©r   ©r¢   r“   s     rD   r£   z"basic_indexing.<locals>.<listcomp>À  s%   € ÐFÐFÐF˜sµ[ÀÑ5EÔ5EÐF�sÐFÐFÐFrF   r  úunexpected index type: F©Ú
wraparoundÚboundscheck)rÃ   r   r�   r
   rÄ   rf   rq   r°   r¤   r¥   Úellipsisr9   rj   r˜   Ú	SliceTyper  r-   Úguard_invalid_sliceÚ	fix_sliceÚstartÚget_slice_lengthÚ
fix_striderš   r–   Údo_boundscheckr   rS   Úget_item_pointer)r~   r>   rÛ   r  r¦   r§   r6  r  Úoner  r°   Úoutput_indicesÚoutput_shapesÚoutput_stridesÚnum_newaxesrú   Úindexvalr’   Ú	n_missingrn   ÚsliceÚshÚstr•   r  s                            rD   Úbasic_indexingrJ  ¯  s�  € ð ×Ò¥¤
¨AÑ.Ô.€DØ
×
Ò
�uœz¨1Ñ
-Ô
-€CåÔ! '¨3¬9°e´jÑAÔA€FÝÔ" 7¨C¬K¸¼ÑDÔD€Gà€NØ€MØ€NåÐFÐF kÐFÑFÔFÑGÔG€KØ	
€BÝ˜w¨Ñ4Ô4ð  ñ  ‰ˆ�%Ø•E”NÐ"Ð"àœ
¥S¨¡\¤\Ñ1°AÑ5¸ÑCˆIÝ˜9Ñ%Ô%ð ð �Ø×%Ò% dÑ+Ô+Ð+Ø×$Ò$ V¨B¤ZÑ0Ô0Ð0Ø×%Ò% g¨b¤kÑ2Ô2Ð2Ø�a‘��Øå�e�Uœ_Ñ-Ô-ð 	NØ×'Ò'¨°¸hÐ'ÑGÔGˆEÝÔ'¨°¸%ÀÑGÔGÐGÝÔ˜g u¨f°R¬jÑ9Ô9Ð9Ø×!Ò! %¤+Ñ.Ô.Ð.ÝÔ)¨'°5Ñ9Ô9ˆBÝÔ# G¨U°G¸B´KÑ@Ô@ˆBØ× Ò  Ñ$Ô$Ð$Ø×!Ò! "Ñ%Ô%Ð%Ð%Ý˜�uœ}Ñ-Ô-ð 	NÝ# G¨W°e¸XØ$*¨2¤Jñ0ô 0ˆCàð NÝÔ& w°¸¸fÀR¼jÈ"ÑMÔMÐMØ×!Ò! #Ñ&Ô&Ð&Ð&Ý˜ÑÔð 	NØ× Ò  Ñ%Ô%Ð%Ø×!Ò! $Ñ'Ô'Ð'Ø�!‰GˆBˆBå%Ð%ÀUÀUÐ&LÑMÔMÐMØ
ˆa‰ˆ‰ð �”ÒÐÐÐØ
ˆuŒzŠ/ˆ/Ø×Ò˜V BœZÑ(Ô(Ð(Ø×Ò˜g bœkÑ*Ô*Ð*Ø
ˆa‰ˆð ˆuŒzŠ/ˆ/õ Ô& w°¸ÀØ'5Ø27ÀUðLñ Lô L€Gð �] NÐ3Ð3rF   c           	      ó‚   —  t          |¦  «        | |¦  «        }t          |||||j        |j        |j        ¬¦  «         |S )zF
    Build a view over the given array with the given parameters.
    ©r›   rf   r°   r±   r¯   r²   )ry   rÙ   r±   r¯   r²   )	r~   r>   rÛ   r  r  r›   r  r°   r  s	            rD   r  r  ó  sU   € ð
 %�Z˜Ñ$Ô$ W¨gÑ6Ô6€FÝ�6ØØØ"ØœLØœ;Øœ*ð&ñ &ô &ð &ð €MrF   c           
      óô   — t          | |||||| j        ¬¦  «        \  }}}	t          |t          j        ¦  «        r*t          | |||||||	¦  «        }
|
                     ¦   «         S |rJ ‚t          | |||¦  «        S )zp
    Return the result of indexing *ary* with the given *indices*,
    returning either a scalar or a view.
    ©r6  )rJ  Úenable_boundscheckr˜   r   r  r  r	  r‡   )r~   r>   r  rÛ   r  r¦   r§   r  r  r  r  s              rD   Ú_getitem_array_genericrP    sœ   € õ 	�w ¨°°[À'Ø#*Ô#=ð	?ñ 	?ô 	?ñ '€Gˆ[˜,õ �+�uœ|Ñ,Ô,ð ;å˜7 G¨U°C¸Ø" K°ñ?ô ?ˆà×ÒÑ!Ô!Ð!ð ÐÐˆÝ˜ '¨5°'Ñ:Ô:Ð:rF   c           	      ó  — |j         \  }}|\  }}t          |t          j        ¦  «        s|j        dk    sJ ‚ t          |¦  «        | ||¦  «        }t          | ||j        |||f|f¦  «        }t          | ||j        |¦  «        S )z9
    Basic indexing with an integer, slice, or None.
    rH   )	r  r˜   r   ÚNoneTyperq   ry   rP  r  r    ©	r~   r>   r\   r  rÛ   r’   r  r“   r  s	            rD   Úgetitem_arraynd_intprT    s’   € ð ”8�L€Eˆ5Ø�H€Cˆõ �e�Uœ^Ñ,Ô,ð ØŒz˜QŠˆˆˆØ
�*�UÑ
Ô
˜G W¨cÑ
2Ô
2€Cå
  ¨'°3´?Ø!&¨¨e¨X¸°vñ?ô ?€Cå˜W g¨s¬ÀÑDÔDÐDrF   c           
      ó”  — |j         \  }}|\  }} t          |¦  «        | ||¦  «        }|j        }t          j        ||t          |¦  «        ¬¦  «        }	t          | |||	¦  «        \  }}	t          d„ |D ¦   «         ¦  «        rt          | |||||||	¦  «        S t          | ||j
        ||||	¦  «        }
t          | ||j
        |
¦  «        S )z2
    Basic or advanced indexing with a tuple.
    r  c              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S ©N©r˜   r   r™   )r¢   Útys     rD   ú	<genexpr>z&getitem_array_tuple.<locals>.<genexpr>;  s.   è è € Ð
=Ð
=¨2�:�b�%œ+Ñ&Ô&Ð
=Ð
=Ð
=Ð
=Ð
=Ð
=rF   )r  ry   r   r
   rÄ   r¤   r¨   ÚanyÚfancy_getitemrP  r  r    )r~   r>   r\   r  rÛ   Útuptyr  Útupr¦   r§   r  s              rD   Úgetitem_array_tupler_  ,  sô   € ð
 ”8�L€Eˆ5Ø�H€CˆØ
�*�UÑ
Ô
˜G W¨cÑ
2Ô
2€Cà”+€KÝÔ" 7¨Cµs¸5±z´zÐBÑBÔB€Gå,¨W°gØ-8¸'ñCô CÑ€K�õ Ð
=Ð
=°Ð
=Ñ
=Ô
=Ñ=Ô=ð ?å˜W g¨s°DØ" C¨°gñ?ô ?ð 	?õ ! ¨'°3´?Ø!&¨¨[¸'ñCô C€Cå˜W g¨s¬ÀÑDÔDÐDrF   c           	      ó.  — |j         \  }}}|\  }}}	t          |t          j        ¦  «        r,|j        }
t	          j        ||t          |¦  «        ¬¦  «        }n|f}
|f} t          |¦  «        | ||¦  «        }t          | ||
|¦  «        \  }
}	 t          | ||||
|| j
        ¬¦  «        \  }}}t          |¦  «        }n# t          $ r d}Y nw xY w|rt          | ||||
|¦  «        S |                      ||	||j        ¦  «        }	t!          | |||	|¦  «         dS )zH
    array[a] = scalar_or_array
    array[a,..,b] = scalar_or_array
    r  rN  TN)r  r˜   r   Ú	BaseTupler
   rÄ   r¤   ry   r¨   rJ  rO  ÚboolrS   Úfancy_setslicerŽ   r|   r‹   )r~   r>   r\   r  rÛ   r’   Úvaltyr  r“   rŠ   r¦   r§   r  r  r°   Úuse_fancy_indexings                   rD   Úsetitem_arrayrf  E  st  € ð œ(Ñ€Eˆ5�%Ø�M€Cˆˆcå�%�œÑ)Ô)ð Ø”kˆÝÔ& w°½3¸u¹:¼:ÐFÑFÔFˆˆà�hˆØ�&ˆà
�*�UÑ
Ô
˜G W¨cÑ
2Ô
2€Cõ -¨W°gØ-8¸'ñCô CÑ€K�ð*å˜7 G¨U°C¸ÀgØ'.Ô'AðCñ Cô Cñ 	!ˆ�˜õ " &™\œ\ÐÐøõ ð "ð "ð "Ø!ÐÐÐð"øøøð
 ð 4õ ˜g w°°TØ)¨7ñ4ô 4ð 	4ð �,Š,�w  U¨E¬KÑ
8Ô
8€CÝˆw˜ ¨¨WÑ5Ô5Ð5Ð5Ð5s   ÂB= Â=CÃCc                 ó¼   — |j         \  }|\  }t          |¦  «        } || ||¦  «        }|j        }|                     |d¦  «        }t	          | ||j        |¦  «        S rë   )r  ry   rf   Úextract_valuer"   r  )	r~   r>   r\   r  rÛ   r  ÚarysttyÚshapearyr  s	            rD   Ú	array_lenrk  n  sd   € àŒx�H€UØ�F€SÝ˜ÑÔ€GØ
ˆ'�'˜7 CÑ
(Ô
(€CØŒy€HØ
×
Ò
 ¨!Ñ
,Ô
,€CÝ˜g w°´ÀÑEÔEÐErF   z
array.itemc           	      ó‚  — |j         \  }|\  } t          |¦  «        | ||¦  «        }|j        }|                     |                     d||                     d¦  «        ¦  «        d¬¦  «        5  d}| j                             |t          |f¦  «         d d d ¦  «         n# 1 swxY w Y   t          | |||j
        ¦  «        S )Nú!=rH   F©Úlikelyz>item(): can only convert an array of size 1 to a Python scalar)r  ry   r¶   r$  r"  r:   Ú	call_convÚreturn_user_excr¼   r‡   r›   )r~   r>   r\   r  rÛ   r  r¶   rÑ   s           rD   Ú
array_itemrr  y  s  € àŒX�F€EØ�D€CØ
�*�UÑ
Ô
˜G W¨cÑ
2Ô
2€CàŒZ€FØ	�Š˜×,Ò,¨T°6¸6¿;º;Àq¹>¼>ÑJÔJØ %ð 
ñ 
'ô 
'ð Gð GàNˆØÔ×)Ò)¨'µ:À¸vÑFÔFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gõ
 �W˜g u¨c¬hÑ7Ô7Ð7s   Á.%BÂB#Â&B#©é   r   zarray.itemsetc           	      óÊ  — |j         \  }}|\  }}||j        k    sJ ‚ t          |¦  «        | ||¦  «        }|j        }|                     |                     d||                     d¦  «        ¦  «        d¬¦  «        5  d}	| j                             |t          |	f¦  «         d d d ¦  «         n# 1 swxY w Y   t          | ||||j        ¦  «         |                      ¦   «         S )Nrm  rH   Frn  z/itemset(): can only write to an array of size 1)r  r|   ry   r¶   r$  r"  r:   rp  rq  r¼   r‹   r›   Úget_dummy_value)
r~   r>   r\   r  rÛ   rd  r  rŠ   r¶   rÑ   s
             rD   Úarray_itemsetrw  ‰  s9  € à”x‰ˆˆuØ‰ˆˆSØ˜œÒ#Ð#Ð#Ð#Ø�j˜ÑÔ ¨°#Ñ6Ô6ˆà”ˆØ�_Š_˜W×0Ò0°°v¸v¿{º{È1¹~¼~ÑNÔNØ$)ð ñ +ô +ð 	Kð 	KàCˆCØÔ×-Ò-¨gµzÀCÀ6ÑJÔJÐJð	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Køøøð 	Kð 	Kð 	Kð 	Kõ
 	�7˜G U¨C°´Ñ:Ô:Ð:Ø×&Ò&Ñ(Ô(Ð(s   Á=%B.Â.B2Â5B2c                   ó<   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚIndexerzq
    Generic indexer interface, for generating indices over a fancy indexed
    array on a single dimension.
    c                 ó   — t           ‚)ze
        Prepare the indexer by initializing any required variables, basic
        blocks...
        rÞ   ©rZ   s    rD   ÚpreparezIndexer.prepare¤  ó
   € õ
 "Ð!rF   c                 ó   — t           ‚)z=
        Return this dimension's size as an integer.
        rÞ   r{  s    rD   Úget_sizezIndexer.get_size«  ó
   € õ "Ð!rF   c                 ó   — t           ‚)z;
        Return this dimension's shape as a tuple.
        rÞ   r{  s    rD   Ú	get_shapezIndexer.get_shape±  r€  rF   c                 ó   — t           ‚)z}
        Return a half-open [lower, upper) range of indices this dimension
        is guaranteed not to step out of.
        rÞ   r{  s    rD   Úget_index_boundszIndexer.get_index_bounds·  r}  rF   c                 ó   — t           ‚)z—
        Start indexation loop.  Returns a index.
        *index* is an integer LLVM value representing the index over this
        dimension.
        rÞ   r{  s    rD   Ú	loop_headzIndexer.loop_head¾  s
   € õ "Ð!rF   c                 ó   — t           ‚)z)
        Finish indexation loop.
        rÞ   r{  s    rD   Ú	loop_tailzIndexer.loop_tailÆ  r€  rF   c                 ó   — t           ‚)zL
        Return the source index for this dimension, if applicable.
        rÞ   r{  s    rD   Úget_src_idxzIndexer.get_src_idxÌ  r€  rF   N)rr   rs   rt   Ú__doc__r|  r  r‚  r„  r†  rˆ  rŠ  r¡   rF   rD   ry  ry  ž  s‡   € € € € € ðð ð
"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð "ð "rF   ry  c                   óB   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
S )ÚEntireIndexerz:
    Compute indices along an entire array dimension.
    c                 óž   — || _         || _        || _        || _        || _        | j                              t          j        ¦  «        | _        d S rW  )	r~   r>   rÛ   r  Údimr½   r   r�   Úll_intp)rZ   r~   r>   rÛ   r  r�  s         rD   Ú__init__zEntireIndexer.__init__Ø  sB   € ØˆŒØˆŒØˆŒ
ØˆŒØˆŒØ”|×2Ò2µ5´:Ñ>Ô>ˆŒˆˆrF   c                 ó
  — | j         }|                     | j        j        | j        ¦  «        | _        t          j        || j        ¦  «        | _	        | 
                    ¦   «         | _        | 
                    ¦   «         | _        d S rW  )r>   rh  r  rf   r�  r”   r
   rX   r�  r  Úappend_basic_blockÚbb_startÚbb_end©rZ   r>   s     rD   r|  zEntireIndexer.prepareà  sf   € Ø”,ˆØ×)Ò)¨$¬(¬.¸$¼(ÑCÔCˆŒ	ÝÔ(¨°$´,Ñ?Ô?ˆŒ
Ø×2Ò2Ñ4Ô4ˆŒØ×0Ò0Ñ2Ô2ˆŒˆˆrF   c                 ó   — | j         S rW  ©r”   r{  s    rD   r  zEntireIndexer.get_sizeç  ó
   € ØŒyÐrF   c                 ó   — | j         fS rW  r˜  r{  s    rD   r‚  zEntireIndexer.get_shapeê  s   € Ø”	ˆ|ÐrF   c                 ó:   — |                       d¦  «        | j        fS rë   ©r�  r”   r{  s    rD   r„  zEntireIndexer.get_index_boundsí  ó   € à—’˜Q‘” ¤Ð+Ð+rF   c                 óÜ  — | j         }| j                              t          | j        d¦  «        | j        ¦  «         |                     | j        ¦  «         |                     | j        ¦  «         |                     | j        ¦  «        }| 	                    | 
                    d|| j        ¦  «        d¬¦  «        5  |                     | j        ¦  «         d d d ¦  «         n# 1 swxY w Y   |S )Nr   ú>=Frn  )r>   r(  r   r�  r  Úbranchr”  Úposition_at_endr?   r$  r"  r”   r•  )rZ   r>   Ú	cur_indexs      rD   r†  zEntireIndexer.loop_headñ  s  € Ø”,ˆàŒ×Ò�8 D¤L°!Ñ4Ô4°d´jÑAÔAÐAØ�Š�t”}Ñ%Ô%Ð%Ø×Ò ¤Ñ.Ô.Ð.Ø—L’L ¤Ñ,Ô,ˆ	Ø�_Š_˜W×0Ò0°°yÀ$Ä)ÑLÔLØ$)ð ñ +ô +ð 	(ð 	(à�NŠN˜4œ;Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð Ðs   Â:C!Ã!C%Ã(C%c                 ó  — | j         }t          j        ||                     | j        ¦  «        ¦  «        }|                     || j        ¦  «         |                     | j        ¦  «         |                     | j	        ¦  «         d S rW  )
r>   r
   r'  r?   r  r(  r   r”  r¡  r•  )rZ   r>   Ú
next_indexs      rD   rˆ  zEntireIndexer.loop_tailý  so   € Ø”,ˆÝÔ,¨W°g·l²lÀ4Ä:Ñ6NÔ6NÑOÔOˆ
Ø�Š�j $¤*Ñ-Ô-Ð-Ø�Š�t”}Ñ%Ô%Ð%Ø×Ò ¤Ñ,Ô,Ð,Ð,Ð,rF   c                 óB   — | j                              | j        ¦  «        fS rW  )r>   r?   r  r{  s    rD   rŠ  zEntireIndexer.get_src_idx  s   € Ø”×!Ò! $¤*Ñ-Ô-Ð/Ð/rF   N©rr   rs   rt   r‹  r‘  r|  r  r‚  r„  r†  rˆ  rŠ  r¡   rF   rD   r�  r�  Ó  s–   € € € € € ðð ð?ð ?ð ?ð3ð 3ð 3ðð ð ðð ð ð,ð ,ð ,ð
ð 
ð 
ð-ð -ð -ð0ð 0ð 0ð 0ð 0rF   r�  c                   óB   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
S )ÚIntegerIndexerz0
    Compute indices from a single integer.
    c                 ó‚   — || _         || _        || _        | j                              t          j        ¦  «        | _        d S rW  )r~   r>   r“   r½   r   r�   r�  )rZ   r~   r>   r“   s       rD   r‘  zIntegerIndexer.__init__  s4   € ØˆŒØˆŒØˆŒØ”|×2Ò2µ5´:Ñ>Ô>ˆŒˆˆrF   c                 ó   — d S rW  r¡   r{  s    rD   r|  zIntegerIndexer.prepare  ó   € ØˆrF   c                 ó,   — t          | j        d¦  «        S ©NrH   )r   r�  r{  s    rD   r  zIntegerIndexer.get_size  s   € Ý˜œ aÑ(Ô(Ð(rF   c                 ó   — dS ©Nr¡   r¡   r{  s    rD   r‚  zIntegerIndexer.get_shape  ó   € ØˆrrF   c                 ót   — | j         | j                             | j         |                      ¦   «         ¦  «        fS rW  )r“   r>   Úaddr  r{  s    rD   r„  zIntegerIndexer.get_index_bounds  s+   € à”˜$œ,×*Ò*¨4¬8°T·]²]±_´_ÑEÔEÐFÐFrF   c                 ó   — | j         S rW  )r“   r{  s    rD   r†  zIntegerIndexer.loop_head   s	   € ØŒxˆrF   c                 ó   — d S rW  r¡   r{  s    rD   rˆ  zIntegerIndexer.loop_tail#  r«  rF   c                 ó   — dS r¯  r¡   r{  s    rD   rŠ  zIntegerIndexer.get_src_idx&  r°  rF   Nr¦  r¡   rF   rD   r¨  r¨    s™   € € € € € ðð ð?ð ?ð ?ðð ð ð)ð )ð )ðð ð ðGð Gð Gðð ð ðð ð ðð ð ð ð rF   r¨  c                   óB   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
S )ÚIntegerArrayIndexerz;
    Compute indices from an array of integer indices.
    c                 óø   — || _         || _        || _        t          j        ||j        ¦  «        | _        || _        | j                              t          j
        ¦  «        | _        || _        || _        d | _        d S rW  )r~   r>   Úglobal_ary_idx_listr
   rÄ   rf   Ú	idx_shaper”   r½   r   r�   r�  r’   rœ   Úsrc_idx)rZ   r~   r>   r’   rœ   r”   r¹  s          rD   r‘  zIntegerArrayIndexer.__init__/  sg   € àˆŒØˆŒØ#6ˆÔ å Ô-¨g°v´|ÑDÔDˆŒØˆŒ	Ø”|×2Ò2µ5´:Ñ>Ô>ˆŒàˆŒ
ØˆŒØˆŒˆˆrF   c                 ó
  — | j         }|                      d¦  «        | _        | j        D ]'}| j                              | j        |¦  «        | _        Œ(|                     ¦   «         | _        |                     ¦   «         | _        d S r­  )r>   r�  Úidx_sizerº  rÆ   r“  r”  r•  )rZ   r>   Ú_shapes      rD   r|  zIntegerArrayIndexer.prepare=  st   € Ø”,ˆØŸš Q™œˆŒØ”nð 	Dð 	DˆFØ œL×,Ò,¨T¬]¸FÑCÔCˆDŒMˆMØ×2Ò2Ñ4Ô4ˆŒØ×0Ò0Ñ2Ô2ˆŒˆˆrF   c                 ó   — | j         S rW  )r½  r{  s    rD   r  zIntegerArrayIndexer.get_sizeE  s
   € ØŒ}ÐrF   c                 ó   — dS r¯  r¡   r{  s    rD   r‚  zIntegerArrayIndexer.get_shapeH  r°  rF   c                 ó:   — |                       d¦  «        | j        fS rë   rœ  r{  s    rD   r„  z$IntegerArrayIndexer.get_index_boundsK  r�  rF   c                 óP  ‡ ‡‡— ‰ j         Š‰                     ‰ j        ¦  «         ‰                     ‰ j        ¦  «         ˆfd„‰ j        t          ‰ j        ¦  «        t          ‰ j        ¦  «        z
  d …         D ¦   «         Šˆˆˆ fd„t          t          ‰ j        ¦  «        ¦  «        D ¦   «         Št          ‰ j	        ‰ j         ‰ j
        j        ‰ j
        ‰ j        d„ ‰ j        D ¦   «         t          ‰¦  «        ¦  «        }t          ‰ j	        ‰‰ j
        j        |‰ j        ¦  «        }|S )Nc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r¡   ©r?   )r¢   r“   r>   s     €rD   r£   z1IntegerArrayIndexer.loop_head.<locals>.<listcomp>V  s2   ø€ ð 
ð 
ð 
Ø"%ˆG�LŠL˜ÑÔð
ð 
ð 
rF   c                 ó^   •— g | ])}‰                      ‰|         ‰j        |         ¦  «        ‘Œ*S r¡   )Úsremrº  )r¢   rn   r>   r§   rZ   s     €€€rD   r£   z1IntegerArrayIndexer.loop_head.<locals>.<listcomp>Z  sB   ø€ ð 
ð 
ð 
àð �LŠL˜ œ T¤^°AÔ%6Ñ7Ô7ð
ð 
ð 
rF   c                 ó&   — g | ]}t           j        ‘ŒS r¡   ©r   r�   )r¢   Ú_s     rD   r£   z1IntegerArrayIndexer.loop_head.<locals>.<listcomp>b  s   € Ð0Ð0Ð0˜A�UŒZÐ0Ð0Ð0rF   )r>   r   r”  r¡  r¹  r¤   rº  r9   rP  r~   r’   r|   rœ   r¿   r–   r”   )rZ   r  r>   r§   s   ` @@rD   r†  zIntegerArrayIndexer.loop_headO  s?  øøø€ Ø”,ˆà�Š�t”}Ñ%Ô%Ð%Ø×Ò ¤Ñ.Ô.Ð.ð
ð 
ð 
ð 
Ø)-Ô)AÝ�DÔ,Ñ-Ô-µ°D´NÑ0CÔ0CÑCÐDÐDô*Fð
ñ 
ô 
ˆð
ð 
ð 
ð 
ð 
ð 
å�3˜tœ~Ñ.Ô.Ñ/Ô/ð
ñ 
ô 
ˆõ
 'ØŒL˜$œ,¨¬
Ô(8ØŒJ˜œØ0Ð0 ¤Ð0Ñ0Ô0µ%¸±.´.ñ
ô 
ˆõ
 " $¤,°Ø"&¤*Ô"2°E¸4¼9ñFô FˆàˆrF   c                 ó|   — | j         }|                     | j        ¦  «         |                     | j        ¦  «         d S rW  )r>   r   r•  r¡  r–  s     rD   rˆ  zIntegerArrayIndexer.loop_tailh  s9   € Ø”,ˆØ�Š�t”{Ñ#Ô#Ð#Ø×Ò ¤Ñ,Ô,Ð,Ð,Ð,rF   c                 ó   — dS r¯  r¡   r{  s    rD   rŠ  zIntegerArrayIndexer.get_src_idxm  r°  rF   Nr¦  r¡   rF   rD   r·  r·  *  s–   € € € € € ðð ðð ð ð3ð 3ð 3ðð ð ðð ð ð,ð ,ð ,ðð ð ð2-ð -ð -ð
ð ð ð ð rF   r·  c                   óB   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
S )ÚBooleanArrayIndexerz>
    Compute indices from an array of boolean predicates.
    c                 óÞ   — || _         || _        || _        || _        |j        dk    sJ ‚| j                              t          j        ¦  «        | _        t          | j        d¦  «        | _
        d S ©NrH   r   )r~   r>   r’   rœ   rq   r½   r   r�   r�  r   r  )rZ   r~   r>   r’   rœ   s        rD   r‘  zBooleanArrayIndexer.__init__v  s]   € ØˆŒØˆŒØˆŒ
ØˆŒØŒz˜QŠˆˆˆØ”|×2Ò2µ5´:Ñ>Ô>ˆŒÝ˜Tœ\¨1Ñ-Ô-ˆŒ	ˆ	ˆ	rF   c                 óz  — | j         }t          j        || j        j        ¦  «        d         | _        t          j        || j        ¦  «        | _        t          j        || j        ¦  «        | _	        | 
                    ¦   «         | _        | 
                    ¦   «         | _        | 
                    ¦   «         | _        d S rë   )r>   r
   rÄ   rœ   rf   r”   rX   r�  Ú	idx_indexr»  r“  r”  Úbb_tailr•  r–  s     rD   r|  zBooleanArrayIndexer.prepare  s�   € Ø”,ˆÝÔ(¨°$´+Ô2CÑDÔDÀQÔGˆŒ	Ý Ô,¨W°d´lÑCÔCˆŒÝÔ*¨7°D´LÑAÔAˆŒà×2Ò2Ñ4Ô4ˆŒØ×1Ò1Ñ3Ô3ˆŒØ×0Ò0Ñ2Ô2ˆŒˆˆrF   c           	      óê  — | j         }t          j        || j        ¦  «        }t          j        || j        ¦  «        5 }|                     |¦  «        }t          | j        || j	        j
        | j	        | j        |j        ¦  «        }|                     ||                     ||j        ¦  «        ¦  «        }|                     ||¦  «         d d d ¦  «         n# 1 swxY w Y   |                     |¦  «        S rW  )r>   r
   r  r  Ú	for_ranger”   r?   r  r~   r’   r|   rœ   r  r²  Úzextr:   r(  )rZ   r>   rÅ   ÚloopÚcÚpreds         rD   r  zBooleanArrayIndexer.get_size‰  s  € Ø”,ˆÝÔ)¨'°4´9Ñ=Ô=ˆåÔ˜w¨¬	Ñ2Ô2ð 	$°dØ—’˜UÑ#Ô#ˆAÝ,Ø”˜g t¤zÔ'7Ø”
˜DœK¨¬ñô ˆDð —’˜A˜wŸ|š|¨D°!´&Ñ9Ô9Ñ:Ô:ˆAØ�MŠM˜!˜UÑ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð �|Š|˜EÑ"Ô"Ð"s   ¼BCÃCÃCc                 ó,   — |                       ¦   «         fS rW  ©r  r{  s    rD   r‚  zBooleanArrayIndexer.get_shape˜  ó   € Ø—’‘”Ð!Ð!rF   c                 ó:   — |                       d¦  «        | j        fS rë   rœ  r{  s    rD   r„  z$BooleanArrayIndexer.get_index_bounds›  s   € ð —’˜Q‘” ¤Ð+Ð+rF   c                 ó  — | j         }| j                              | j        | j        ¦  «         | j                              | j        | j        ¦  «         |                     | j        ¦  «         |                     | j        ¦  «         |                     | j        ¦  «        }| 	                    | 
                    d|| j        ¦  «        d¬¦  «        5  |                     | j        ¦  «         d d d ¦  «         n# 1 swxY w Y   t          | j        || j        j        | j        | j        |¦  «        }| 	                    |                     |¦  «        ¦  «        5  |                     | j        ¦  «         d d d ¦  «         n# 1 swxY w Y   |S )NrŸ  Frn  )r>   r(  r  rÑ  r»  r   r”  r¡  r?   r$  r"  r”   r•  r  r~   r’   r|   rœ   Únot_rÒ  )rZ   r>   r¢  rØ  s       rD   r†  zBooleanArrayIndexer.loop_head   sÒ  € Ø”,ˆàŒ×Ò˜4œ9 d¤nÑ5Ô5Ð5ØŒ×Ò˜4œ9 d¤lÑ3Ô3Ð3Ø�Š�t”}Ñ%Ô%Ð%Ø×Ò ¤Ñ.Ô.Ð.Ø—L’L ¤Ñ0Ô0ˆ	Ø�_Š_˜W×0Ò0°°yÀ$Ä)ÑLÔLØ$)ð ñ +ô +ð 	(ð 	(à�NŠN˜4œ;Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(õ )ØŒL˜' 4¤:Ô#3°T´ZÀÄØñ
ô 
ˆð �_Š_˜WŸ\š\¨$Ñ/Ô/Ñ0Ô0ð 	)ð 	)Ø�NŠN˜4œ<Ñ(Ô(Ð(ð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)àÐs$   ÃC8Ã8C<Ã?C<ÅE?Å?FÆFc                 ó  — | j         }t          j        ||                     | j        ¦  «        ¦  «        }|                     || j        ¦  «         |                     | j        ¦  «         |                     | j        ¦  «         t          j        ||                     | j	        ¦  «        ¦  «        }|                     || j	        ¦  «         |                     | j
        ¦  «         |                     | j        ¦  «         d S rW  )r>   r
   r'  r?   r»  r(  r   rÒ  r¡  rÑ  r”  r•  )rZ   r>   r»  r¤  s       rD   rˆ  zBooleanArrayIndexer.loop_tail´  sß   € Ø”,ˆÝÔ)ØØ�LŠL˜œÑ&Ô&ñ
ô 
ˆð 	�Š�g˜tœ|Ñ,Ô,Ð,Ø�Š�t”|Ñ$Ô$Ð$Ø×Ò ¤Ñ-Ô-Ð-ÝÔ,ØØ�LŠL˜œÑ(Ô(ñ
ô 
ˆ
ð 	�Š�j $¤.Ñ1Ô1Ð1Ø�Š�t”}Ñ%Ô%Ð%Ø×Ò ¤Ñ,Ô,Ð,Ð,Ð,rF   c                 óB   — | j                              | j        ¦  «        fS rW  ©r>   r?   r»  r{  s    rD   rŠ  zBooleanArrayIndexer.get_src_idxÅ  ó   € à”×!Ò! $¤,Ñ/Ô/Ð1Ð1rF   Nr¦  r¡   rF   rD   rÍ  rÍ  q  s–   € € € € € ðð ð.ð .ð .ð3ð 3ð 3ð#ð #ð #ð"ð "ð "ð,ð ,ð ,ð
ð ð ð(-ð -ð -ð"2ð 2ð 2ð 2ð 2rF   rÍ  c                   óB   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
S )ÚSliceIndexerz(
    Compute indices along a slice.
    c                 óî   — || _         || _        || _        || _        || _        || _        || _        | j                              t          j	        ¦  «        | _
        t          | j
        d¦  «        | _        d S rë   )r~   r>   rÛ   r  r�  r’   rG  r½   r   r�   r�  r   r  )rZ   r~   r>   rÛ   r  r�  r’   rG  s           rD   r‘  zSliceIndexer.__init__Ï  sc   € ØˆŒØˆŒØˆŒ
ØˆŒØˆŒØˆŒ
ØˆŒ
Ø”|×2Ò2µ5´:Ñ>Ô>ˆŒÝ˜Tœ\¨1Ñ-Ô-ˆŒ	ˆ	ˆ	rF   c                 ó  — | j         }|                     | j        j        | j        ¦  «        | _        t          j        | j        || j	        | j
        ¦  «         t          j        || j
        | j        ¦  «         t          j        || j
        j        ¦  «        | _        t          j        || j        ¦  «        | _        t          j        || j        ¦  «        | _        |                     ¦   «         | _        |                     ¦   «         | _        d S rW  )r>   rh  r  rf   r�  Údim_sizer-   r9  r~   r’   rG  r:  r
   Ú
is_neg_intÚstepÚis_step_negativerX   r�  r  r»  r“  r”  r•  r–  s     rD   r|  zSliceIndexer.prepareÚ  sÒ   € Ø”,ˆà×-Ò-¨d¬h¬n¸d¼hÑGÔGˆŒÝÔ# D¤L°'¸4¼:Ø$(¤Jñ	0ô 	0ð 	0åÔ˜' 4¤:¨t¬}Ñ=Ô=Ð=Ý 'Ô 2°7¸D¼J¼OÑ LÔ LˆÔåÔ(¨°$´,Ñ?Ô?ˆŒ
ÝÔ*¨7°D´LÑAÔAˆŒà×2Ò2Ñ4Ô4ˆŒØ×0Ò0Ñ2Ô2ˆŒˆˆrF   c                 ó@   — t          j        | j        | j        ¦  «        S rW  )r-   r<  r>   rG  r{  s    rD   r  zSliceIndexer.get_sizeé  s   € ÝÔ'¨¬°d´jÑAÔAÐArF   c                 ó,   — |                       ¦   «         fS rW  rÚ  r{  s    rD   r‚  zSliceIndexer.get_shapeì  rÛ  rF   c                 óN   — t          j        | j        | j        ¦  «        \  }}||fS rW  )r-   Úget_slice_boundsr>   rG  )rZ   ÚlowerÚuppers      rD   r„  zSliceIndexer.get_index_boundsï  s&   € ÝÔ/°´¸d¼jÑIÔI‰ˆˆuØ�eˆ|ÐrF   c           	      ó”  — | j         }| j                              | j        j        | j        ¦  «         | j                              | j        | j        ¦  «         |                     | j        ¦  «         | 	                    | j        ¦  «         | 
                    | j        ¦  «        }|                     | j        |                     d|| j        j        ¦  «        |                     d|| j        j        ¦  «        ¦  «        }|                     |d¬¦  «        5  |                     | j        ¦  «         d d d ¦  «         n# 1 swxY w Y   |S )Nz<=rŸ  Frn  )r>   r(  rG  r;  r  r  r»  r   r”  r¡  r?   Úselectrê  r"  Ústopr$  r•  )rZ   r>   r¢  Úis_finisheds       rD   r†  zSliceIndexer.loop_headó  sb  € Ø”,ˆàŒ×Ò˜4œ:Ô+¨T¬ZÑ8Ô8Ð8ØŒ×Ò˜4œ9 d¤lÑ3Ô3Ð3Ø�Š�t”}Ñ%Ô%Ð%Ø×Ò ¤Ñ.Ô.Ð.Ø—L’L ¤Ñ,Ô,ˆ	Ø—n’n TÔ%:Ø%,×%8Ò%8¸¸yØ9=¼¼ñ&Jô &Jà%,×%8Ò%8¸¸yØ9=¼¼ñ&Jô &JñKô Kˆð
 �_Š_˜[°ˆ_Ñ7Ô7ð 	(ð 	(Ø�NŠN˜4œ;Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(àÐs   ÄD=Ä=EÅEc                 óæ  — | j         }|                     |                     | j        ¦  «        | j        j        dg¬¦  «        }|                     |                     | j        ¦  «        |                      d¦  «        dg¬¦  «        }|                     || j        ¦  «         |                     || j        ¦  «         | 	                    | j
        ¦  «         |                     | j        ¦  «         d S )Nr³   r´   rH   )r>   r²  r?   r  rG  ré  r»  r�  r(  r   r”  r¡  r•  )rZ   r>   r¤  Únext_src_idxs       rD   rˆ  zSliceIndexer.loop_tail  sÙ   € Ø”,ˆØ—[’[Ø�LŠL˜œÑ$Ô$ØŒJŒOØ�'ð !ñ 
ô 
ˆ
ð
 —{’{Ø�LŠL˜œÑ&Ô&Ø�LŠL˜‰OŒOØ�'ð #ñ 
ô 
ˆð
 	�Š�l D¤LÑ1Ô1Ð1Ø�Š�j $¤*Ñ-Ô-Ð-Ø�Š�t”}Ñ%Ô%Ð%Ø×Ò ¤Ñ,Ô,Ð,Ð,Ð,rF   c                 óB   — | j                              | j        ¦  «        fS rW  rá  r{  s    rD   rŠ  zSliceIndexer.get_src_idx  râ  rF   Nr¦  r¡   rF   rD   rä  rä  Ê  s™   € € € € € ðð ð	.ð 	.ð 	.ð3ð 3ð 3ðBð Bð Bð"ð "ð "ðð ð ðð ð ð"-ð -ð -ð"2ð 2ð 2ð 2ð 2rF   rä  c                   ó>   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚSubspaceIndexerc                 ó"  — || _         || _        || _        || _        | j                              t
          j        ¦  «        | _        |                      d¦  «        | _        | j        D ]'}| j         	                    | j        |¦  «        | _        Œ(d S r­  )
r~   r>   r¹  Úshape_tupler½   r   r�   r�  r”   rÆ   )rZ   r~   r>   rû  r¹  r¾  s         rD   r‘  zSubspaceIndexer.__init__  sƒ   € ØˆŒØˆŒØ#6ˆÔ à&ˆÔØ”|×2Ò2µ5´:Ñ>Ô>ˆŒØ—L’L ‘O”OˆŒ	ØÔ&ð 	<ð 	<ˆFØœ×(Ò(¨¬°FÑ;Ô;ˆDŒIˆIð	<ð 	<rF   c                 óv   ‡— | j         Šˆfd„| j        D ¦   «         | _        ˆfd„| j        D ¦   «         | _        d S )Nc                 ó8   •— g | ]}‰                      ¦   «         ‘ŒS r¡   ©r“  ©r¢   rÉ  r>   s     €rD   r£   z+SubspaceIndexer.prepare.<locals>.<listcomp>(  s2   ø€ ð 
ð 
ð 
Ø-.ˆG×&Ò&Ñ(Ô(ð
ð 
ð 
rF   c                 ó8   •— g | ]}‰                      ¦   «         ‘ŒS r¡   rþ  rÿ  s     €rD   r£   z+SubspaceIndexer.prepare.<locals>.<listcomp>+  s2   ø€ ð 
ð 
ð 
Ø-.ˆG×&Ò&Ñ(Ô(ð
ð 
ð 
rF   )r>   r¹  Ú	bb_startsÚbb_endsr–  s    @rD   r|  zSubspaceIndexer.prepare&  sh   ø€ Ø”,ˆð
ð 
ð 
ð 
Ø26Ô2Jð
ñ 
ô 
ˆŒð
ð 
ð 
ð 
Ø26Ô2Jð
ñ 
ô 
ˆŒˆˆrF   c                 ó   — | j         S rW  r˜  r{  s    rD   r  zSubspaceIndexer.get_size/  r™  rF   c                 ó   — | j         S rW  )rû  r{  s    rD   r‚  zSubspaceIndexer.get_shape2  s   € ØÔÐrF   c                 ó:   — |                       d¦  «        | j        fS rë   rœ  r{  s    rD   r„  z SubspaceIndexer.get_index_bounds5  r�  rF   c           	      óp  — | j         }t          t          | j        ¦  «        ¦  «        D �]}|                     | j        |         ¦  «         |                     | j        |         ¦  «         |                     | j        |         ¦  «        }|                     | 	                    d|| j
        |         ¦  «        d¬¦  «        5  | j                              t          | j        d¦  «        | j        |         ¦  «         |                     | j        |         ¦  «         d d d ¦  «         n# 1 swxY w Y   �Œd S )NrŸ  Frn  r   )r>   r9   r¤   r¹  r   r  r¡  r?   r$  r"  rû  r(  r   r�  r  )rZ   r>   rn   r¢  s       rD   r†  zSubspaceIndexer.loop_head9  se  € ð ”,ˆõ •s˜4Ô3Ñ4Ô4Ñ5Ô5ð 	0ñ 	0ˆAØ�NŠN˜4œ>¨!Ô,Ñ-Ô-Ð-Ø×#Ò# D¤N°1Ô$5Ñ6Ô6Ð6ØŸš TÔ%=¸aÔ%@ÑAÔAˆIØ—’Ø×#Ò# D¨)°TÔ5EÀaÔ5HÑIÔIØð !ñ ô ð 0ð 0ð ”×"Ò"Ý˜Tœ\¨1Ñ-Ô-ØÔ,¨QÔ/ñô ð ð —’˜tœ|¨AœÑ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ùð		0ð 	0s   ÃAD)Ä)D-	Ä0D-	c                 óž  — | j         }t          t          t          | j        ¦  «        ¦  «        ¦  «        D ]–}t          j        ||                     | j        |         ¦  «        ¦  «        }|                     || j        |         ¦  «         | 	                    | j
        |         ¦  «         |                     | j        |         ¦  «         Œ—d S rW  )r>   Úreversedr9   r¤   r¹  r
   r'  r?   r(  r   r  r¡  r  )rZ   r>   rn   r¤  s       rD   rˆ  zSubspaceIndexer.loop_tailQ  s½   € Ø”,ˆÝ�%¥ DÔ$<Ñ =Ô =Ñ>Ô>Ñ?Ô?ð 	5ð 	5ˆAÝ Ô0ØØ—’˜TÔ5°aÔ8Ñ9Ô9ñô ˆJð �MŠM˜* dÔ&>¸qÔ&AÑBÔBÐBØ�NŠN˜4œ>¨!Ô,Ñ-Ô-Ð-Ø×#Ò# D¤L°¤OÑ4Ô4Ð4Ð4ð	5ð 	5rF   c                 óD   ‡ — t          ˆ fd„‰ j        D ¦   «         ¦  «        S )Nc              3   óL   •K  — | ]}‰j                              |¦  «        V — Œd S rW  )r>   r?   )r¢   r“   rZ   s     €rD   rZ  z.SubspaceIndexer.get_src_idx.<locals>.<genexpr>]  s3   øè è € ÐPÐP°�T”\×&Ò& sÑ+Ô+ÐPÐPÐPÐPÐPÐPrF   )r¿   r¹  r{  s   `rD   rŠ  zSubspaceIndexer.get_src_idx\  s)   ø€ ÝÐPÐPÐPÐP°tÔ7OÐPÑPÔPÑPÔPÐPrF   N)rr   rs   rt   r‘  r|  r  r‚  r„  r†  rˆ  rŠ  r¡   rF   rD   rù  rù    s‘   € € € € € ð	<ð 	<ð 	<ð
ð 
ð 
ðð ð ð ð  ð  ð,ð ,ð ,ð0ð 0ð 0ð0	5ð 	5ð 	5ðQð Qð Qð Qð QrF   rù  c                   ó<   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚFancyIndexerz4
    Perform fancy indexing on the given array.
    c           
      óD	  ‡ ‡— |‰ _         ‰‰ _        |‰ _        t          j        ‰|j        |j        ¦  «        ‰ _        t          j        ‰|j        |j        ¦  «        ‰ _        ‰ j          	                    t          j        ¦  «        ‰ _        |‰ _        ˆˆ fd„t          t          |¦  «        ¦  «        D ¦   «         ‰ _        ‰ j        D ]0}‰ j                             t%          ‰ j        d¦  «        |¦  «         Œ1g }	t          d„ |D ¦   «         ¦  «        }
d}d}g ‰ _        t)          ||¦  «        D �]E\  }}|t          j        u rb|j        t          |¦  «        z
  dz   |
z   }t          |¦  «        D ]4}t-          |‰|||¦  «        }|	                     |¦  «         |dz  }|dz  }Œ5Œvt1          |t          j        ¦  «        rC|                     ‰||¦  «        }t7          |‰|||||¦  «        }|	                     |¦  «         �nht1          |t          j        ¦  «        rKt;          |‰||‰ j        |         ¦  «        }t=          |‰|¦  «        }|	                     |¦  «         |dz  }�nt1          |t          j        ¦  «        r¨ tA          |¦  «        |‰|¦  «        }t1          |j!        t          j        ¦  «        r%tE          |‰||‰ j        |         ‰ j        ¦  «        }n4t1          |j!        t          j#        ¦  «        rtI          |‰||¦  «        }nJ ‚|	                     |¦  «         nAtK          |¦  «        r ‰ j                             |¦  «         |dz  }ntM          d|›�¦  «        ‚|dz  }|dz  }�ŒG||j        k    sJ ||j        f¦   «         ‚||j        k     r8t-          |‰|||¦  «        }|	                     |¦  «         |dz  }||j        k     °8t          |	¦  «        |j        k    sJ t          |	¦  «        |j        f¦   «         ‚tO          |‰|‰ j        ¦  «        ‰ _(        d}d}d }tS          d„ |	D ¦   «         ¦  «        rMtU          |	¦  «        D ]3\  }}t1          |tD          t<          f¦  «        r|sd}|dz  }|€|}Œ/|rd}Œ4|r|dk    rd}|‰ _+        |	‰ _,        d S )	Nc                 óD   •— g | ]}t          j        ‰‰j        ¦  «        ‘ŒS r¡   )r
   rX   r�  )r¢   rÉ  r>   rZ   s     €€rD   r£   z)FancyIndexer.__init__.<locals>.<listcomp>n  s8   ø€ ð $
ð $
ð $
àõ Ô ¨¬Ñ6Ô6ð$
ð $
ð $
rF   r   c                 ó0   — g | ]}t          |¦  «        ¯|‘ŒS r¡   r1  r2  s     rD   r£   z)FancyIndexer.__init__.<locals>.<listcomp>u  s%   € ÐJÐJÐJ 3½ÀSÑ9IÔ9IÐJ˜3ÐJÐJÐJrF   rH   r3  Fc                 ó8   — g | ]}t          |t          ¦  «        ‘ŒS r¡   )r˜   r·  )r¢   rn   s     rD   r£   z)FancyIndexer.__init__.<locals>.<listcomp>¶  s#   € ÐEÐEÐE°q•
˜1Õ1Ñ2Ô2ÐEÐEÐErF   T)-r~   r>   rÛ   r
   rÄ   rf   rq   r  r°   r½   r   r�   r�  Úsubspace_shaper9   r¤   r¹  r(  r   Únewaxesr¥   r7  r�  rj   r˜   r8  r  rä  rš   r–   r¨  r™   ry   r|   r·  ÚBooleanrÍ  r   ÚAssertionErrorrù  Úsubspace_indexerr[  rø   Úsubspace_indexÚindexers)rZ   r~   r>   rÛ   r  r¦   r§   Úsubspace_shape_tupler“   r  rD  rú   Únew_axrE  r’   rF  rn   ÚindexerrG  r•   rœ   Únum_subspacesÚin_subspacer  s   ` `                     rD   r‘  zFancyIndexer.__init__e  s  øø€ àˆŒØˆŒØˆŒ
ÝÔ*¨7°C´I¸u¼zÑJÔJˆŒÝÔ+¨G°S´[À%Ä*ÑMÔMˆŒØ”|×2Ò2µ5´:Ñ>Ô>ˆŒØ2ˆÔð$
ð $
ð $
ð $
ð $
å�3Ð3Ñ4Ô4Ñ5Ô5ð$
ñ $
ô $
ˆÔ ð Ô+ð 	?ð 	?ˆCØŒL×Ò�x¨¬°aÑ8Ô8¸#Ñ>Ô>Ð>Ð>ØˆÝÐJÐJ¨+ÐJÑJÔJÑKÔKˆØˆØˆØˆŒå" 7¨KÑ8Ô8ð *	ñ *	‰OˆH�eØ�œÐ&Ð&à!œJ­¨W©¬Ñ5¸Ñ9¸KÑG�	Ý˜yÑ)Ô)ð  ð  �AÝ+¨G°W¸eÀSÈ"ÑMÔM�GØ—O’O GÑ,Ô,Ð,Ø˜!‘G�BØ˜a‘K�F�FØõ ˜%¥¤Ñ1Ô1ð MØ×+Ò+¨G°U¸HÑEÔE�Ý& w°¸ÀÀRØ',¨eñ5ô 5�à—’ Ñ(Ô(Ð(Ñ(Ý˜E¥5¤=Ñ1Ô1ð MÝ'¨°¸%ÀØ(,¬°B¬ñ9ô 9�å(¨°'¸3Ñ?Ô?�Ø—’ Ñ(Ô(Ð(Ø˜!‘�‘Ý˜E¥5¤;Ñ/Ô/ð MØ*� EÑ*Ô*¨7°G¸XÑFÔF�Ý˜eœk­5¬=Ñ9Ô9ð 	Ý1°'¸7Ø27¸Ø26´+¸b´/Ø26Ô2JñLô L�G�Gõ   ¤­U¬]Ñ;Ô;ð Ý1°'¸7Ø27¸ñAô A�G�Gð ˜1Ø—’ Ñ(Ô(Ð(Ð(Ý˜UÑ#Ô#ð MØ”×#Ò# FÑ+Ô+Ð+Ø�a‘��å$�nÀEÀEÐ%KÑLÔLÐLØ�!‰GˆBØ�a‰KˆF‰Fð �U”ZÒÐÐ " e¤jÐ!1ÑÔÐØ�5”:ŠoˆoÝ# G¨W°e¸SÀ"ÑEÔEˆGØ�OŠO˜GÑ$Ô$Ð$Ø�!‰GˆBð �5”:Šoˆoõ
 �8‰}Œ} ¤
Ò*Ð*Ð*­S°©]¬]¸E¼JÐ,GÑ*Ô*Ð*å /Ø�WÐ2°DÔ4Lñ!
ô !
ˆÔð ˆØˆØˆÝÐEÐE¸HÐEÑEÔEÑFÔFð 	'Ý# HÑ-Ô-ð 	,ð 	,‘��QÝ˜aÕ"5µ~Ð!FÑGÔGð ,Ø&ð +Ø&*˜Ø%¨Ñ*˜Ø%Ð-Ø),˜øà"ð ,Ø&+˜øàð 'Ø  1Ò$Ð$Ø%&�Nà,ˆÔØ ˆŒˆˆrF   c                 ót  — | j                              t          j        d¦  «        }t	          | j        ¦  «        D ]=\  }}|| j        k    r| j                             ¦   «          |                     ¦   «          Œ>g }| j        D ]6}| 	                    t          |                     ¦   «         ¦  «        ¦  «         Œ7| j        �?|                     | j        t          | j                             ¦   «         ¦  «        ¦  «         t          |g ¦  «        | _        | j        D ]}| j                             ||¦  «         Œd S r­  )r~   rÃ   r   r�   rø   r  r  r  r|  rj   rÀ   r‚  ÚinsertÚsumÚindexers_shaper  )rZ   r@  r“   rn   Ú	res_shapes        rD   r|  zFancyIndexer.prepareÉ  s7  € ØŒl×'Ò'­¬
°AÑ6Ô6ˆÝ ¤Ñ.Ô.ð 	ð 	‰FˆC�Ø�dÔ)Ò)Ð)ØÔ%×-Ò-Ñ/Ô/Ð/Ø�IŠI‰KŒKˆKˆKð ˆ	Ø”ð 	2ð 	2ˆAØ×Ò�T !§+¢+¡-¤-Ñ0Ô0Ñ1Ô1Ð1Ð1àÔÐ*Ø×ÒØÔ#Ý�TÔ*×4Ò4Ñ6Ô6Ñ7Ô7ñô ð õ " )¨RÑ0Ô0ˆÔð ”ð 	/ð 	/ˆAØÔ×&Ò& q¨#Ñ.Ô.Ð.Ð.ð	/ð 	/rF   c                 ó   — | j         S )z?
        Get the resulting data shape as Python tuple.
        )r   r{  s    rD   r‚  zFancyIndexer.get_shapeå  s   € ð Ô"Ð"rF   c           	      ót  — t          |¦  «        | j        j        k    sJ ‚| j        }t          j        }|                      d¦  «        }|                      d¦  «        }|}|}t          | j        | j	        |¦  «        D ]õ\  }	}
}| 
                    ||                     d|
|¦  «        ¦  «        }|	                     ¦   «         \  }}|                     ||¦  «        }|                     ||                     ||¦  «        ¦  «        }|                     d||¦  «        }|                     ||                     |||¦  «        ¦  «        }|                     ||                     |||¦  «        ¦  «        }Œö|                     ||¦  «        }|                     |||¦  «        }|                     |||¦  «        }||fS )zÊ
        Get a half-open [lower, upper) range of byte offsets spanned by
        the indexer with the given strides and itemsize.  The indexer is
        guaranteed to not go past those bounds.
        r   rH   ú==r!  )r¤   rÛ   rq   r>   r
   Ú	false_bitr�  r¥   r  r   Úor_Úicmp_unsignedr„  rÆ   Úsubr"  r²  rò  )rZ   r°   r±   r>   Úis_emptyr  r@  rï  rð  r  rf   ÚstrideÚlower_indexÚupper_indexÚlower_offsetÚupper_offsetÚis_downwardss                    rD   Úget_offset_boundszFancyIndexer.get_offset_boundsë  sº  € õ �7‰|Œ|˜tœzœÒ.Ð.Ð.Ð.Ø”,ˆÝÔ$ˆØ�|Š|˜A‰ŒˆØ�lŠl˜1‰oŒoˆØˆØˆÝ&)¨$¬-¸Ô9LØ*1ñ'3ô '3ð 	>ð 	>Ñ"ˆG�U˜Fà—{’{ 8Ø#*×#8Ò#8¸¸uÀdÑ#KÔ#KñMô MˆHð (/×'?Ò'?Ñ'AÔ'AÑ$ˆK˜Ø"Ÿ;š; v¨{Ñ;Ô;ˆLØ"Ÿ;š; v¨w¯{ª{¸;ÈÑ/LÔ/LÑMÔMˆLà"×.Ò.¨s°F¸DÑAÔAˆLØ—K’K Ø '§¢¨|Ø/;Ø/;ñ!=ô !=ñ>ô >ˆEð —K’K Ø '§¢¨|Ø/;Ø/;ñ!=ô !=ñ>ô >ˆEˆEð
 —’˜E 8Ñ,Ô,ˆà—’˜x¨¨uÑ5Ô5ˆØ—’˜x¨¨uÑ5Ô5ˆØ�eˆ|ÐrF   c                 óî   — g }t          | j        ¦  «        D ]P\  }}|| j        k    r| j                             ¦   «          |                     |                     ¦   «         ¦  «         ŒQt          |¦  «        S rW  )rø   r  r  r  r†  rj   r¿   )rZ   r§   r“   rn   s       rD   Úbegin_loopszFancyIndexer.begin_loops  sp   € ØˆÝ ¤Ñ.Ô.ð 	*ð 	*‰FˆC�Ø�dÔ)Ò)Ð)ØÔ%×/Ò/Ñ1Ô1Ð1Ø�NŠN˜1Ÿ;š;™=œ=Ñ)Ô)Ð)Ð)Ý�W‰~Œ~ÐrF   c                 óÜ   — t          | j        ¦  «        dz
  }t          | j        ¦  «        D ]?}|                     ¦   «          || j        k    r| j                             ¦   «          |dz  }Œ@d S r­  )r¤   r  r  rˆ  r  r  )rZ   r“   rn   s      rD   Ú	end_loopszFancyIndexer.end_loops  st   € Ý�$”-Ñ Ô  1Ñ$ˆÝ˜$œ-Ñ(Ô(ð 	ð 	ˆAØ�KŠK‰MŒMˆMØ�dÔ)Ò)Ð)ØÔ%×/Ò/Ñ1Ô1Ð1Ø�1‰HˆCˆCð		ð 	rF   c                 óT  — d„ | j         D ¦   «         }| j        �?|                     | j        t          | j                             ¦   «         ¦  «        ¦  «         t          |g ¦  «        }| j        D ]+}|                     ||                      d¦  «        ¦  «         Œ,t          |¦  «        S )Nc                 óP   — g | ]#}t          |                     ¦   «         ¦  «        ‘Œ$S r¡   )rÀ   rŠ  r2  s     rD   r£   z0FancyIndexer.get_src_indices.<locals>.<listcomp>"  s*   € ÐDÐDÐD¨s•4˜ŸšÑ)Ô)Ñ*Ô*ÐDÐDÐDrF   r   )
r  r  r  rÀ   r  rŠ  r  r  r�  r¿   )rZ   r§   rn   s      rD   Úget_src_indiceszFancyIndexer.get_src_indices!  s¥   € ØDÐD°d´mÐDÑDÔDˆØÔÐ*Ø�NŠNØÔ#Ý�TÔ*×6Ò6Ñ8Ô8Ñ9Ô9ñô ð õ �g˜rÑ"Ô"ˆØ”ð 	/ð 	/ˆAØ�NŠN˜1˜dŸlšl¨1™oœoÑ.Ô.Ð.Ð.å�W‰~Œ~ÐrF   N)rr   rs   rt   r‹  r‘  r|  r‚  r0  r2  r4  r7  r¡   rF   rD   r  r  `  sŒ   € € € € € ðð ðb!ð b!ð b!ðH/ð /ð /ð8#ð #ð #ð$ð $ð $ðLð ð ðð ð ðð ð ð ð rF   r  c                 óº  — t          d„ |D ¦   «         ¦  «        }d„ }t          j        t          d„ |D ¦   «         ¦  «        ¦  «        }t          j        t          j        |¬¦  «        }|                      ||t          ||¦  «        t          j	        |t          d„ |D ¦   «         ¦  «        ¦  «        f¦  «        }t          t          j
        ||¦  «        ¦  «        }|S )Nc                 ó(   — g | ]}|d          j         ‘ŒS )rt  ©rq   )r¢   r  s     rD   r£   z&get_subspace_shape.<locals>.<listcomp>0  s   € Ð9Ð9Ð9 C�C˜”F”KÐ9Ð9Ð9rF   c                  ó   — t          j        | Ž S rW  )ÚnpÚbroadcast_shapes©r  s    rD   Úbdcast_idx_shapesz-get_subspace_shape.<locals>.bdcast_idx_shapes2  s   € ÝÔ" DÐ)Ð)rF   c              3   ól   K  — | ]/}t          j        t           j        |d          j        ¬¦  «        V — Œ0dS )rt  r  N)r   ÚUniTupler�   rq   ©r¢   Úary_idxs     rD   rZ  z%get_subspace_shape.<locals>.<genexpr>6  sT   è è € ð (ð (àõ ŒnÝŒJ˜g aœjœoð
ñ 
ô 
ð (ð (ð (ð (ð (ð (rF   r  c                 ó(   — g | ]}|d          j         ‘ŒS )é   ©rf   rB  s     rD   r£   z&get_subspace_shape.<locals>.<listcomp>>  s   € ÐJÐJÐJ°˜G AœJÔ,ÐJÐJÐJrF   )Úmaxr   ÚStarArgTupler¿   rA  r�   Úcompile_internalr$   r
   Úpack_structrÄ   )r~   r>   Úarray_indicesÚmax_dimsr?  ÚinptyÚrettyr  s           rD   Úget_subspace_shaperO  /  sü   € ÝÐ9Ð9¨=Ð9Ñ9Ô9Ñ:Ô:€Hð*ð *ð *õ ÔÝð (ð (à&ð(ñ (ô (ñ 	(ô 	(ñô €Eõ
 ŒN�5œ:¨XÐ6Ñ6Ô6€EØ×-Ò-ØÐ"¥I¨e°UÑ$;Ô$;Ý	Ô	Ø•UÐJÐJ¸MÐJÑJÔJÑKÔKñ

ô 

ð 	ñô €Nõ �7Ô/°¸ÑHÔHÑIÔI€NàÐrF   c                 óp  — t          j        ||j        ¦  «        }t          j        ||j        ¦  «        }	|j        }
g }t          |¦  «        D ]Z\  }}||         }t          |t          j        ¦  «        r3 t          |¦  «        | ||¦  «        }| 
                    ||||f¦  «         Œ[t          | ||¦  «        }t          | ||||||¦  «        }|                     ¦   «          |j        }|                     ¦   «         }t!          | |||¦  «        }|j        }t          j        ||                      t          j        d¦  «        ¦  «        }|                     ¦   «         }t          j        | ||
||	|j        |d| j        ¬¦	  «	        }t1          | |||¦  «        }|                     |¦  «        }|                     ||g¦  «        }t7          | ||||¦  «         t          j        ||¦  «        }|                     ||¦  «         |                     ¦   «          t?          | |||                      ¦   «         ¦  «        S )Nr   Fr4  )!r
   rÄ   rf   r°   r›   rø   r˜   r   r™   ry   rj   rO  r  r|  r  r‚  Ú_empty_nd_implr  rÃ   r�   r2  Úget_item_pointer2ÚlayoutrO  r‡   r?   Úgepr‹   r'  r(  r4  r!   r	  )r~   r>   r\   r  rÛ   r  r¦   r§   r  r°   r›   rK  rn   r’   r“   Úidx_maker  r  Úout_tyÚ
out_shapesr  Úout_dataÚout_idxrl   rŠ   ÚcurÚnext_idxs                              rD   r\  r\  G  s:  € õ Ô! '¨3¬9Ñ5Ô5€FÝÔ" 7¨C¬KÑ8Ô8€GØŒ8€Dà€MÝ˜kÑ*Ô*ð <ð <‰ˆˆ5Ø�aŒjˆÝ�e�Uœ[Ñ)Ô)ð 	<Ø(•z %Ñ(Ô(¨°'¸3Ñ?Ô?ˆHØ× Ò  ! S¨%°Ð!:Ñ;Ô;Ð;øå-¨g°wÀÑNÔNÐå˜7 G¨U°CØ&¨Ð1EñGô G€Gà‡O‚OÑÔÐð Œ_€FØ×"Ò"Ñ$Ô$€Jå
˜ '¨6°:Ñ
>Ô
>€CØŒx€HÝÔ'¨Ø(/×(<Ò(<½U¼ZÈÑ(KÔ(KñMô M€Gð ×!Ò!Ñ#Ô#€Gõ Ô
# G¨W°d¸FÀGØ$)¤L°'ÀeØ07Ô0JðLñ Lô L€Cõ �G˜W e¨SÑ
1Ô
1€Cð �,Š,�wÑ
Ô
€CØ
�+Š+�h  Ñ
&Ô
&€CÝˆw˜ ¨¨cÑ2Ô2Ð2ÝÔ& w°Ñ4Ô4€HØ‡M‚M�(˜GÑ$Ô$Ð$à×ÒÑÔÐå˜G W¨f°c·m²m±o´oÑFÔFÐFrF   c           
      ó*  — |j         \  }}|\  }} t          |¦  «        | ||¦  «        }|j        dk    rHt          | |||¦  «        \  }}t	          | ||j        |||f|f¦  «        }t          | ||j        |¦  «        S t          | ||||||f|f¦  «        S )z3
    Advanced or basic indexing with an array.
    r   )r  ry   rq   rž   rP  r  r    r\  rS  s	            rD   Úfancy_getitem_arrayr]  {  sº   € ð
 ”8�L€Eˆ5Ø�H€CˆØ
�*�UÑ
Ô
˜G W¨cÑ
2Ô
2€CØ„z�Q‚€å$ W¨g°u¸cÑBÔB‰
ˆˆsÝ$ W¨g°s´Ø%*¨C°%°¸C¸6ñCô Cˆå  ¨'°3´?ÀCÑHÔHÐHõ ˜W g¨s°DØ" C¨%¨°C°6ñ;ô ;ð 	;rF   c           	      óø  — |j         }|                     d¦  «        }|                     d¦  «        }|j        dv r|}	|                     ||j        ¦  «        }
�n|}	|}
t          |j        ¦  «        D ]¥}|                     ||         |                     ||         |¦  «        ¦  «        }|                     d||¦  «        }| 	                    || 
                    |
|¦  «        |
¦  «        }
| 	                    ||	| 
                    |	|¦  «        ¦  «        }	Œ¦| 
                    |
|¦  «        }
|                     d|j        |¦  «        }| 	                    |||
¦  «        }
| 	                    |||	¦  «        }	|	|
fS )zï
    Compute a half-open range [lower, upper) of byte offsets from the
    array's data pointer, that bound the in-memory extent of the array.

    This mimics offset_bounds_from_strides() from
    numpy/core/src/private/mem_overlap.c
    r   rH   ÚCFrŸ  r$  )r±   r:   rS  rÆ   r¶   r9   rq   r(  r"  rò  r²  )r~   r>   ÚarrtyÚarrr  r°   r±   r  r@  rï  rð  rn   Úmax_axis_offsetÚ
is_upwardsr)  s                  rD   Úoffset_bounds_from_stridesrd  �  s~  € ð Œ|€HØ�=Š=˜ÑÔ€DØ
�)Š)�A‰,Œ,€CØ„|�tÐÐð ˆØ—’˜H c¤jÑ1Ô1ˆ‰ð ˆØˆÝ�u”zÑ"Ô"ð 	Oð 	OˆAð &Ÿkšk¨'°!¬*Ø*1¯+ª+°f¸Q´iÀÑ*EÔ*EñGô GˆOà ×,Ò,¨T°?ÀDÑIÔIˆJà—N’N :Ø#*§;¢;¨u°oÑ#FÔ#FÈñOô OˆEà—N’N :Ø#(¨'¯+ª+°e¸_Ñ*MÔ*MñOô OˆEˆEð —’˜E 8Ñ,Ô,ˆà×&Ò& t¨S¬Z¸Ñ>Ô>ˆØ—’˜x¨¨uÑ5Ô5ˆØ—’˜x¨¨uÑ5Ô5ˆà�%ˆ<ÐrF   c                 ó˜   — |                      ||j        ¦  «        }|                     ||¦  «        }|                     ||¦  «        }||fS )z…
    Given [lower, upper) byte offsets and a base data pointer,
    compute the memory pointer bounds as pointer-sized integers.
    )Úptrtointr:   r²  )r~   r>   rï  rð  r›   Údata_ptr_as_intr;  Úends           rD   Úcompute_memory_extentsri  ¹  sK   € ð
 ×&Ò& t¨U¬ZÑ8Ô8€OØ�KŠK˜¨Ñ/Ô/€EØ
�+Š+�o uÑ
-Ô
-€CØ�#ˆ:ÐrF   c                 óV   — t          | |||||¦  «        \  }}t          | ||||¦  «        S )zr
    Compute a half-open range [start, end) of pointer-sized integers
    which fully contain the array data.
    )rd  ri  )	r~   r>   r`  ra  r  r°   r›   rï  rð  s	            rD   Úget_array_memory_extentsrk  Ä  s:   € õ .¨g°wÀÀsØ.4°gñ?ô ?�L€Eˆ5å! '¨7°E¸5À$ÑGÔGÐGrF   c                 ó†   — |                      |                     d||¦  «        |                     d||¦  «        ¦  «        }|S )z[
    Whether two memory extents [a_start, a_end) and [b_start, b_end)
    may overlap.
    r!  )Úand_r'  )r~   r>   Úa_startÚa_endÚb_startÚb_endÚmay_overlaps          rD   Úextents_may_overlaprs  Ï  sI   € ð —,’,Ø×Ò˜c 7¨EÑ2Ô2Ø×Ò˜c 7¨EÑ2Ô2ñô €Kð ÐrF   c	                 ó6  ‡ ‡‡‡‡‡‡‡‡‡‡‡‡‡— ‰j         ŠdŠt          j        ‰‰¦  «        Š‰Šd Š‰                     ‰d¬¦  «        5  ‰                     |j        |j        ¦  «        }	‰ j                             ‰|	¦  «        }
|
j         Š‰ 	                    |
‰¦  «        }
‰ 
                    |
‰¦  «         ‰                      t          j        ¦  «        }t          j        ‰‰|¦  «        5 }t          j        ‰ ‰‰‰‰‰j        |¦  «        }t          j        ‰ ‰|
‰‰‰|¦  «        }‰ 
                    ‰                     |¦  «        |¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   ˆˆ ˆˆˆˆˆˆˆˆˆˆˆfd„}ˆˆ ˆˆˆfd„}||fS )Nrª   Frn  c                  óÄ  •‡— t          j        ‰‰¦  «        } ‰                     ¦   «         t          ‰¦  «         d …         Št          ‰¦  «        t          ‰¦  «        k    rS‰                     t
          j        d¦  «        }|gt          ‰¦  «        t          ‰¦  «        z
  z  t          ‰¦  «        z   Šˆˆˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         Š‰ 	                    ‰d¬¦  «        5 \  }}|5  ‰ 
                    t          j        ‰‰‰                     ‰¦  «        ‰	‰
‰‰d¬¦  «        | ¦  «         d d d ¦  «         n# 1 swxY w Y   |5  ‰ 
                    t          j        ‰‰‰‰‰‰j        ‰d¬¦  «        | ¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   t          ‰‰‰‰                     | ¦  «        ¦  «        S )Nr   c                 óT   •— g | ]$}‰                      ‰|         ‰|         ¦  «        ‘Œ%S r¡   )rÆ  )r¢   rn   r>   Úsrc_indicesÚ
src_shapess     €€€rD   r£   z:maybe_copy_source.<locals>.src_getitem.<locals>.<listcomp>  s?   ø€ ð 
ð 
ð 
àð �LŠL˜ Qœ¨°A¬Ñ7Ô7ð
ð 
ð 
rF   Frn  ©r5  )r
   rX   r7  r¤   rÃ   r   r�   rÀ   r9   Úif_elser(  rR  r?   rS  r‡   )Úsrc_ptrr  Úif_copyÚ	otherwiserw  r>   r~   Ú	copy_dataÚcopy_layoutÚcopy_shapesÚcopy_stridesr  ÚptrtyÚsrc_datarx  Úsrc_stridesÚsrctyÚuse_copys       @€€€€€€€€€€€€€rD   Úsrc_getitemz&maybe_copy_source.<locals>.src_getitemû  sÉ  øø€ ÝÔ% g¨uÑ5Ô5ˆØ×-Ò-Ñ/Ô/µ°Z±´Ð0@Ð0AÐ0AÔBˆÝˆz‰?Œ?�S Ñ-Ô-Ò-Ð-ð ×'Ò'­¬
°AÑ6Ô6ˆDà��#˜j™/œ/Ý˜kÑ*Ô*ñ+ñ ,Ý.2°;Ñ.?Ô.?ñ@ð ð

ð 
ð 
ð 
ð 
ð 
å�3˜z™?œ?Ñ+Ô+ð
ñ 
ô 
ˆð �_Š_˜X¨eˆ_Ñ4Ô4ð 	Ñ8L¸À)Øð ð Ø—’ÝÔ-¨g°wØ.5¯lªl¸9Ñ.EÔ.EØ.9¸<Ø.9¸;Ø9>ð	@ñ @ô @ð
 ñô ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð ð Ø—’ÝÔ-¨g°wÀØ.8¸+Ø.3¬l¸KØ9>ð@ñ @ô @ð ñô ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ  ˜ '¨5°'·,²,¸wÑ2GÔ2GÑHÔHÐHs[   Ã6F2Ã<AEÅ F2ÅE	ÅF2ÅE	ÅF2Å6FÆF2ÆF	ÆF2Æ"F	Æ#F2Æ2F6Æ9F6c                  óô   •— ‰                      ‰d¬¦  «        5  ‰                     ‰¦  «        } ‰                     | ‰¦  «        } ‰j                             ‰| ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NFrn  )r$  r?   Úbitcastr  Úfree)r›   r>   r~   r~  r†  Ú	voidptrtys    €€€€€rD   Úsrc_cleanupz&maybe_copy_source.<locals>.src_cleanup  s¹   ø€ à�_Š_˜X¨eˆ_Ñ4Ô4ð 	,ð 	,Ø—<’< 	Ñ*Ô*ˆDØ—?’? 4¨Ñ3Ô3ˆDØŒK×Ò˜W dÑ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ð 	,ð 	,s   ™AA-Á-A1Á4A1)r:   r
   r  r$  rÆ   r±   r¶   r  Úallocater‰  r(  r½   r   r�   Ú	loop_nestrR  rS  r?   )r~   r>   r†  r  r…  Úsrcrx  r„  rƒ  Ú	allocsizer›   rÒ   r§   r{  Údest_ptrr‡  rŒ  r~  r  r€  r�  r‚  r‹  s   ````` ```        @@@@@@rD   Úmaybe_copy_sourcer’  Ü  sŽ  øøøøøøøøøøøøøø€ àŒM€Eà€KÝÔ)¨'°8Ñ<Ô<€IØ€KØ€Là	�Š˜¨%ˆÑ	0Ô	0ð ;ð ;ð —K’K ¤¨c¬jÑ9Ô9ˆ	ØŒ{×#Ò# G¨YÑ7Ô7ˆØ”Iˆ	Ø�Š˜t UÑ+Ô+ˆØ�Š�d˜IÑ&Ô&Ð&ð ×'Ò'­¬
Ñ3Ô3ˆåÔ˜w¨
°FÑ;Ô;ð 	;¸wÝÔ/°¸À(Ø0:¸KØ05´¸gñGô GˆGõ Ô0°¸'À4Ø1<¸lØ1<¸gñGô GˆHð �MŠM˜'Ÿ,š, wÑ/Ô/°Ñ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð,!Ið !Ið !Ið !Ið !Ið !Ið !Ið !Ið !Ið !Ið !Ið !Ið !Ið !Ið !Ið !Ið !IðF,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ˜Ð#Ð#s8   ÁB$E2Ã,A#EÅE2ÅE	ÅE2Å"E	Å#E2Å2E6Å9E6c                 ó  ‡‡
— |                       t          j        d¦  «        }|                       t          j        d¦  «        Š
t          |¦  «        t          |¦  «        k    r2t          |¦  «        t          |¦  «        z
  }‰
g|z  |z   }|g|z  |z   }nõt          |¦  «        t          |¦  «        k     rÕt          |¦  «        t          |¦  «        z
  }ˆˆ
fd„|d|…         D ¦   «         }t	          j        ‰j        |t          j        ¦  «        }‰ 	                    ‰ 
                    |¦  «        d¬¦  «        5  d}	| j                             ‰t          |	f¦  «         ddd¦  «         n# 1 swxY w Y   ||d…         }||d…         }||fS )ae  
    Preprocess dimension for broadcasting.
    Returns (shapes, strides) such that the ndim match *target_shape*.
    When expanding to higher ndim, the returning shapes and strides are
    prepended with ones and zeros, respectively.
    When truncating to lower ndim, the shapes are checked (in runtime).
    All extra dimension must have size of 1.
    r   rH   c                 ó>   •— g | ]}‰                      d |‰¦  «        ‘ŒS ©r$  )r'  )r¢   rH  r>   r@  s     €€rD   r£   z(_bc_adjust_dimension.<locals>.<listcomp>>  s;   ø€ ð 2ð 2ð 2Øð ×+Ò+¨D°"°cÑ:Ô:ð 2ð 2ð 2rF   NFrn  z,cannot broadcast source array for assignment)rÃ   r   r‘   r¤   Ú	functoolsÚreducerm  r
   Útrue_bitr$  rÞ  rp  rq  r¼   )r~   r>   r  r°   Útarget_shaper  Únd_diffÚ
dim_is_oneÚacceptedrÑ   r@  s    `        @rD   Ú_bc_adjust_dimensionr�  (  sã  øø€ ð ×Ò¥¤¨QÑ/Ô/€DØ
×
Ò
�uœ{¨AÑ
.Ô
.€Cõ ˆ<ÑÔ�3˜v™;œ;Ò&Ð&Ý�lÑ#Ô#¥c¨&¡k¤kÑ1ˆà�˜‘ 6Ñ)ˆØ�&˜7Ñ" WÑ,ˆˆå	ˆ\Ñ	Ô	�S ™[œ[Ò	(Ð	(å�f‘+”+¥ LÑ 1Ô 1Ñ1ˆð2ð 2ð 2ð 2ð 2Ø & x¨ xÔ 0ð2ñ 2ô 2ˆ
åÔ# G¤L°*Ý$+Ô$4ñ6ô 6ˆð �_Š_˜WŸ\š\¨(Ñ3Ô3¸Eˆ_ÑBÔBð 	Kð 	KØ@ˆCØÔ×-Ò-¨gµzÀCÀ6ÑJÔJÐJð	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Køøøð 	Kð 	Kð 	Kð 	Kð ˜˜˜Ô!ˆØ˜'˜(˜(Ô#ˆà�7ˆ?Ðs   Ä:%E+Å+E/Å2E/c                 óš  ‡‡
‡— g }g }|                       t          j        d¦  «        Š|                       t          j        d¦  «        Š
ˆfd„t          ||¦  «        D ¦   «         }ˆˆ
fd„|D ¦   «         }ˆfd„t          ||¦  «        D ¦   «         }	ˆfd„t          |	||¦  «        D ¦   «         }ˆˆfd„t          |	|¦  «        D ¦   «         }||fS )zü
    Broadcast shapes and strides to target_shape given that their ndim already
    matches.  For each location where the shape is 1 and does not match the
    dim for target, it is set to the value at the target and the stride is
    set to zero.
    r   rH   c                 óD   •— g | ]\  }}‰                      d ||¦  «        ‘ŒS )rm  ©r"  )r¢   ÚtarÚoldr>   s      €rD   r£   z,_bc_adjust_shape_strides.<locals>.<listcomp>Y  s?   ø€ ð ;ð ;ð ;Ù�C˜ð ×#Ò# D¨#¨sÑ3Ô3ð ;ð ;ð ;rF   c                 ó>   •— g | ]}‰                      d |‰¦  «        ‘ŒS r•  r   )r¢   r¢  r>   r@  s     €€rD   r£   z,_bc_adjust_shape_strides.<locals>.<listcomp>[  s+   ø€ ÐHÐHÐH¸#�'×%Ò% d¨C°Ñ5Ô5ÐHÐHÐHrF   c                 óB   •— g | ]\  }}‰                      ||¦  «        ‘ŒS r¡   )rm  )r¢   ÚxÚyr>   s      €rD   r£   z,_bc_adjust_shape_strides.<locals>.<listcomp>\  s+   ø€ ÐFÐFÐF¡D A qˆW�\Š\˜!˜QÑÔÐFÐFÐFrF   c                 óF   •— g | ]\  }}}‰                      |||¦  «        ‘ŒS r¡   ©rò  )r¢   Úpr¡  r¢  r>   s       €rD   r£   z,_bc_adjust_shape_strides.<locals>.<listcomp>]  sE   ø€ ð Fð Fð FÙ �Q˜˜Sð —’  3¨Ñ,Ô,ð Fð Fð FrF   c                 óD   •— g | ]\  }}‰                      |‰|¦  «        ‘ŒS r¡   r¨  )r¢   r©  r¢  r>   r  s      €€rD   r£   z,_bc_adjust_shape_strides.<locals>.<listcomp>_  s=   ø€ ð 5ð 5ð 5Ù�a˜ð —.’.  D¨#Ñ.Ô.ð 5ð 5ð 5rF   )rÃ   r   r‘   r¥   )r~   r>   r  r°   r™  Ú	bc_shapesÚ
bc_stridesÚmismatchÚ
src_is_oneÚpredsr@  r  s    `        @@rD   Ú_bc_adjust_shape_stridesr°  M  s-  øøø€ ð €IØ€JØ×Ò¥¤¨QÑ/Ô/€DØ
×
Ò
�uœ{¨AÑ
.Ô
.€Cð;ð ;ð ;ð ;Ý # L°&Ñ 9Ô 9ð;ñ ;ô ;€HàHÐHÐHÐHÐHÀÐHÑHÔH€JØFÐFÐFÐF­C°¸*Ñ,EÔ,EÐFÑFÔF€EðFð Fð Fð FÝ$'¨¨|¸VÑ$DÔ$DðFñ Fô F€Ið5ð 5ð 5ð 5ð 5Ý # E¨7Ñ 3Ô 3ð5ñ 5ô 5€Jà�jÐ Ð rF   c           	      óä  — t          j        ||j        ¦  «        }t          j        ||j        ¦  «        }t	          | ||||¦  «        \  }}t          | ||||¦  «        \  }}|                     t          |¦  «        d¬¦  «        } t          |¦  «        | |¦  «        }t          ||j
        t          j        ||¦  «        t          j        ||¦  «        |j        |j        |j        ¬¦  «         ||fS )zX
    Broadcast the given array to the target_shape.
    Returns (array_type, array)
    ÚA©rq   rS  rL  )r
   rÄ   rf   r°   r�  r°  Úcopyr¤   ry   rÙ   r›   rk   r±   r¯   r²   )	r~   r>   Úarrtypera  r™  r  r°   Únew_arrtypeÚnew_arrs	            rD   Ú_broadcast_to_shaper¸  d  sú   € õ Ô! '¨3¬9Ñ5Ô5€FÝÔ" 7¨C¬KÑ8Ô8€Gå*¨7°G¸VÀWØ+7ñ9ô 9�O€FˆGå.¨w¸ÀØ/6¸ñFô F�O€FˆGà—,’,¥C¨Ñ$5Ô$5¸c�,ÑBÔB€Kà%�j˜Ñ%Ô% g¨wÑ7Ô7€GÝ�7ØœÝ Ô+¨G°VÑ<Ô<Ý"Ô-¨g°wÑ?Ô?ØœLØœ;Øœ*ð&ñ &ô &ð &ð ˜ÐÐrF   c                 ób   — |                      |j        dd¬¦  «        } |||¦  «        }d„ }||fS )Nr²  T)rq   rS  Úreadonlyc                 óš  — |\  }}|j         d         } t          |¦  «        | ||¦  «        }t          j        ||¦  «        }t	          | ||||¦  «        \  }}t          |dt          |                      |j         	                    d¦  «        ¦  «        d ¦  «        ¦  «         | 
                    ¦   «         }	t          | ||j        |	¦  «        S )Nr   r²   )r  ry   r
   rÄ   r¸  rÊ   r   r½   r·   r¾   r	  r    r  )
r~   r>   r\   r  r�  Úshape_r…  rÉ  Údestr  s
             rD   Úcodegenz$_numpy_broadcast_to.<locals>.codegenƒ  sË   € Ø‰ˆˆVØ”˜”ˆà�j˜ÑÔ ¨°#Ñ6Ô6ˆÝÔ% g¨vÑ6Ô6ˆÝ% g¨w¸¸sÀFÑLÔL‰ˆˆ4õ 	��h¥Ø×&Ò& t¤×'?Ò'?ÀÑ'IÔ'IÑJÔJØñ!ô !ñ 	ô 	ð 	ð �nŠnÑÔˆÝ  ¨'°3´?ÀCÑHÔHÐHrF   )r´  rÅ   )Ú	typingctxrË   rf   Úretr\   r¾  s         rD   Ú_numpy_broadcast_torÁ  ~  sJ   € à
�*Š*˜%œ+¨c¸Dˆ*Ñ
AÔ
A€CØ
ˆ#ˆe�UÑ
Ô
€CðIð Ið Ið �ˆ<ÐrF   c                 óR   — |                      d¬¦  «        } ||¦  «        }d„ }||fS )NT©rº  c                 óô   — |\  }|j         d         } t          |¦  «        | ||¦  «        }t          j        |j        j        ¦  «        |_        |                     ¦   «         }t          | ||j        |¦  «        S rë   )	r  ry   r
   Úget_null_valuer²   r:   r	  r    r  )r~   r>   r\   r  r�  r…  r½  r  s           rD   r¾  z#get_readonly_array.<locals>.codegen›  sk   € Ø‰ˆØ”˜”ˆà �z˜%Ñ Ô  ¨'°3Ñ7Ô7ˆåÔ,¨T¬[Ô-=Ñ>Ô>ˆŒØ�nŠnÑÔˆÝ  ¨'°3´?ÀCÑHÔHÐHrF   )r´  )r¿  ra  rÀ  r\   r¾  s        rD   Úget_readonly_arrayrÆ  •  sB   € ð �(Š(˜Dˆ(Ñ
!Ô
!€CØ
ˆ#ˆc‰(Œ(€CðIð Ið Ið �ˆ<ÐrF   c                 óD  — | j         }t          |¦  «        }t          |¦  «        }||k    rt          d¦  «        ‚|D ]}|dk     rt          d¦  «        ‚Œd}||z
  }||k     r>||         }||         }	||	k    s|dk    r|dz  }|dz  }nt          d¦  «        ‚||k     °<d S d S )NzDinput operand has more dimensions than allowed by the axis remappingr   z4all elements of broadcast shape must be non-negativerH   z=operands could not be broadcast together with remapped shapes)rf   r¤   r¼   )
rË   Ú
dest_shapeÚ	src_shapeÚsrc_ndimÚ	dest_ndimr”   Ú	src_indexÚ
dest_indexÚsrc_dimÚdest_dims
             rD   Ú_can_broadcastrÐ  §  sþ   € à”€IÝ�9‰~Œ~€HÝ�J‘”€IØ�)ÒÐÝð 1ñ 2ô 2ð 	2àð -ð -ˆØ�!Š8ˆ8Ýð ,ñ -ô -ð -ð ð
 €IØ˜XÑ%€JØ
�hÒ
Ð
Ø˜IÔ&ˆØ˜jÔ)ˆð �hÒÐ '¨Q¢, ,Ø˜‰NˆIØ˜!‰OˆJˆJåð 4ñ 5ô 5ð 5ð �hÒ
Ð
Ð
Ð
Ð
Ð
rF   c                 ój   — t          j        | ¦  «        } t          | |¦  «         t          | |¦  «        S rW  )r<  ÚasarrayrÐ  rÁ  ©rË   rf   s     rD   Ú_default_broadcast_to_implrÔ  Ç  s1   € ÝŒJ�uÑÔ€EÝ�5˜%Ñ Ô Ð Ý˜u eÑ,Ô,Ð,rF   c                 ó  — t          | ¦  «        st          j        d¦  «        ‚t          |t          j        ¦  «        rd„ }|S t          |t          j        ¦  «        r<t          |j        t          j        ¦  «        sd}t          j        |¦  «        ‚t          S t          |t          j	        ¦  «        rE|j
        dk    r:t          d„ |D ¦   «         ¦  «        sd|› d�}t          j        |¦  «        ‚t          S t          |t          j	        ¦  «        r\|j
        dk    rQt          | t          j        ¦  «        o
| j        dk    }t          | ¦  «        s|rd„ }|S d	}t          j        |¦  «        ‚d
|z  }t          j        |¦  «        ‚)Nz-The first argument "array" must be array-likec                 ó.   — t          j        | |f¦  «        S rW  )r<  Úbroadcast_torÓ  s     rD   rí   z numpy_broadcast_to.<locals>.implÔ  s   € Ý”? 5¨5¨(Ñ3Ô3Ð3rF   z7The second argument "shape" must be a tuple of integersr   c                 óB   — g | ]}t          |t          j        ¦  «        ‘ŒS r¡   )r˜   r   ÚIntegerLiteral)r¢   Útyps     rD   r£   z&numpy_broadcast_to.<locals>.<listcomp>à  s%   € ÐKÐKÐK¸c•J˜s¥EÔ$8Ñ9Ô9ÐKÐKÐKrF   ú"z," object cannot be interpreted as an integerc                 óH   — t          j        | ¦  «        } t          | ¦  «        S rW  )r<  rÒ  rÆ  rÓ  s     rD   rí   z numpy_broadcast_to.<locals>.implè  s!   € õ œ
 5Ñ)Ô)�Ý)¨%Ñ0Ô0Ð0rF   z/Cannot broadcast a non-scalar to a scalar arrayz:The argument "shape" must be a tuple or an integer. Got %s)r   r	   rî   r˜   r   rš   rA  r|   rÔ  ÚTuplerÅ   Úallr™   rq   r   )rË   rf   rí   rÑ   Úis_scalar_arrays        rD   Únumpy_broadcast_torà  Í  s¢  € å˜EÑ"Ô"ð 2ÝÔ ð "1ñ 2ô 2ð 	2õ �%�œÑ'Ô'ð "&ð	4ð 	4ð 	4àˆå	�E�5œ>Ñ	*Ô	*ð &Ý˜%œ+¥u¤}Ñ5Ô5ð 	*ØKˆCÝÔ$ SÑ)Ô)Ð)Ý)Ð)å	�E�5œ;Ñ	'Ô	'ð &¨E¬K¸!ªO¨OåÐKÐKÀUÐKÑKÔKÑLÔLð 	*ØI�eÐIÐIÐIˆCÝÔ$ SÑ)Ô)Ð)Ý)Ð)Ý	�E�5œ;Ñ	'Ô	'ð &¨E¬K¸1Ò,<Ð,<Ý$ U­E¬KÑ8Ô8ÐL¸U¼ZÈ1º_ˆÝ˜%Ñ Ô ð 	* Oð 	*ð1ð 1ð 1ð
 ˆKð DˆCÝÔ$ SÑ)Ô)Ð)ðØñ ˆåÔ  Ñ%Ô%Ð%rF   c                 ó  — t          t          |¦  «        ¦  «        D ]h}|t          |¦  «        z
  |z   }||         }|dk     rt          d¦  «        ‚|dk    rŒ;| |         dk    r|| |<   ŒM| |         |k    rt          d¦  «        ‚Œid S )Nr   ú#negative dimensions are not allowedrH   z=shape mismatch: objects cannot be broadcast to a single shape)r9   r¤   r¼   )ÚrÚmrf   rn   r×   Útmps         rD   Únumpy_broadcast_shapes_listræ  ø  s«   € å•3�u‘:”:ÑÔð 3ð 3ˆØ•�E‘
”
‰N˜QÑˆØ�AŒhˆØ�Š7ˆ7ÝÐBÑCÔCÐCØ�!Š8ˆ8ØØˆQŒ4�1Š9ˆ9ØˆAˆa‰DˆDØˆqŒT�SŠ[ˆ[Ýð 2ñ 3ô 3ð 3ð ð3ð 3rF   c                  ó|  ‡‡	— t          | ¦  «        D ]¬\  }}t          |t          j        ¦  «        }t          |t          j        ¦  «        ot          |j        t          j        ¦  «        }t          |t          j        ¦  «        ot          |j        ¦  «        dk    }|s |s|sd|› d|› �}t          j	        |¦  «        ‚Œ­dŠ| D ]d}t          |t          j        ¦  «        rt          ‰d¦  «        ŠŒ-t          |t          j        ¦  «        rt          ‰t          |¦  «        ¦  «        ŠŒe‰dk    rd„ S d‰z  Š	ˆˆ	fd„}|S )Nr   z	Argument z* must be either an int or tuple[int]. Got rH   c                  ó   — dS r¯  r¡   r>  s    rD   ú<lambda>z+ol_numpy_broadcast_shapes.<locals>.<lambda>  s   € ˜R€ rF   ©rH   c                  óJ  •— dg‰z  }‰}t          | ¦  «        D ]c}t          |t          ¦  «        r%t          |¦  «        dk    rt	          |‰|¦  «         Œ<t          |t
          ¦  «        rt	          |‰|f¦  «         Œdt          |¦  «        D ]\  }}t          |||¦  «        }Œ|S rÏ  )r   r˜   r¿   r¤   ræ  rÁ   rø   r0   )r  rã  r^  Úargr“   Úelemrä  Útup_inits         €€rD   rí   z'ol_numpy_broadcast_shapes.<locals>.impl#  s·   ø€ à��a‘ˆAØˆCÝ% dÑ+Ô+ð >ð >�Ý˜c¥5Ñ)Ô)ð >­c°#©h¬h¸ªl¨lÝ/°°1°cÑ:Ô:Ð:Ð:Ý ¥SÑ)Ô)ð >Ý/°°1°s°fÑ=Ô=Ð=øÝ& q™\œ\ð 4ð 4‘	��TÝ# C¨¨dÑ3Ô3��ØˆJrF   )rø   r˜   r   rš   rA  r|   rÝ  r¤   r	   rî   rG  ra  )
r  r“   rì  Úis_intÚis_int_tupleÚis_empty_tuplerÑ   rí   rä  rî  s
           @@rD   Úol_numpy_broadcast_shapesrò  	  sh  øø€ õ ˜d‘O”Oð *ð *‰ˆˆSÝ˜C¥¤Ñ/Ô/ˆÝ! #¥u¤~Ñ6Ô6ð 1Ý�s”y¥%¤-Ñ0Ô0ð 	å# C­¬Ñ5Ô5ÐM½#¸c¼i¹.¼.ÈAÒ:MˆØð 	*˜,ð 	*¨.ð 	*ð ˜sð  ð  Øð ð  ˆCåÔ$ SÑ)Ô)Ð)øð 	
€AØð !ð !ˆÝ�c�5œ=Ñ)Ô)ð 	!Ý�A�q‘	”	ˆAˆAÝ˜�Uœ_Ñ-Ô-ð 	!Ý�A•s˜3‘x”xÑ Ô ˆAøàˆA‚v€vØÐÐà˜!‘8ˆð	ð 	ð 	ð 	ð 	ð 	ð ˆrF   c                  óŒ  ‡‡— t          | ¦  «        D ],\  }}t          |¦  «        st          j        d|› d�¦  «        ‚Œ-d }d }| D ]T}t	          |t
          j        t
          j        f¦  «        r|j        }n|}|€|}Œ7||k    rt          j        d| › �¦  «        ‚ŒUdŠt          | ¦  «        D ]�\  }}t	          |t
          j	        ¦  «        rt          ‰|j        ¦  «        ŠŒ5t	          |t
          j        t
          j        t
          j        f¦  «        rt          ‰d¦  «        ŠŒwt          j        d|› �¦  «        ‚d‰z  Šˆˆfd„}|S )	Nz
Argument "z" must be array-likezTMismatch of argument types. Numba cannot broadcast arrays with different types. Got r   rH   zUnhandled type rö   c                  óz  •— dg‰z  }t          | ¦  «        D ]*}t          |‰t          j        |¦  «        j        ¦  «         Œ+‰}t          ‰¦  «        D ]}t          ||||         ¦  «        }Œg }t          | ¦  «        D ]<}|                     t          j        t          j        |¦  «        |¦  «        ¦  «         Œ=|S r­  )	r   ræ  r<  rÒ  rf   r9   r0   rj   r×  )r  rf   rË   r^  rn   Úoutsrä  rî  s         €€rD   rí   z$numpy_broadcast_arrays.<locals>.implU  sÌ   ø€ ð
 ��a‘ˆÝ# DÑ)Ô)ð 	Kð 	KˆEÝ'¨¨qµ"´*¸UÑ2CÔ2CÔ2IÑJÔJÐJÐJàˆå�q‘”ð 	2ð 	2ˆAÝ  Q¨¨a¬Ñ1Ô1ˆCˆCð ˆÝ# DÑ)Ô)ð 	Að 	AˆEØ�KŠK�œ­¬
°5Ñ(9Ô(9¸3Ñ?Ô?Ñ@Ô@Ð@Ð@ØˆrF   )rø   r   r	   rî   r˜   r   r™   ra  r|   ÚArrayCompatiblerG  rq   ÚNumberr  )r  r“   rì  Úunified_dtypeÚdtrí   rä  rî  s         @@rD   Únumpy_broadcast_arraysrú  2  s¥  øø€ õ ˜d‘O”Oð 6ð 6‰ˆˆSÝ Ñ$Ô$ð 	6ÝÔ$ð &5°#ð &5ð &5ð &5ñ 6ô 6ð 6ð	6ð €MØ	€BØð 4ð 4ˆÝ�c�EœK­¬Ð9Ñ:Ô:ð 	Ø”ˆBˆBàˆBàÐ ØˆMˆMØ˜bÒ Ð ÝÔ$ð &3à,0ð&3ð &3ñ 4ô 4ð 4ð !ð 	
€AÝ˜d‘O”Oð >ð >‰ˆˆSÝ�c�5Ô0Ñ1Ô1ð 	>Ý�A�s”xÑ Ô ˆAˆAÝ˜�eœl­E¬M½5¼?ÐKÑLÔLð 	>Ý�A�q‘	”	ˆAˆAåÔ$Ð%<°sÐ%<Ð%<Ñ=Ô=Ð=à�a‰x€Hðð ð ð ð ð ð( €KrF   c                 ó   — t           ‚)z¶Targets should implement this if they wish to specialize the error
    handling/messages. The overload implementation takes two tuples as arguments
    and should raise a ValueError.rÞ   ©rx  Úindex_shapes     rD   Úraise_with_shape_contextrþ  l  ó
   € õ ÐrF   Úgeneric)Útargetc                 óâ   — t          | t          j        ¦  «        rNt          |t          j        ¦  «        r6| j        |j        k    r(t          | j        t          j        ¦  «        rd„ }|S d S d S d S d S )Nc                 ó    — t          d¦  «        ‚)Nz0cannot assign slice from input of different sizerì   rü  s     rD   rí   z1ol_raise_with_shape_context_generic.<locals>.impl|  s   € ÝÐOÑPÔPÐPrF   ©r˜   r   rA  r|   rš   ©rx  rý  rí   s      rD   Ú#ol_raise_with_shape_context_genericr  s  s‹   € õ 	�:�uœ~Ñ.Ô.ð Ý�;¥¤Ñ/Ô/ðàÔ˜KÔ-Ò-Ð-Ý�zÔ'­¬Ñ7Ô7ð 	.ð	Qð 	Qð 	Qàˆðð ð ð à-Ð-Ð-Ð-rF   ÚCPUc                 óâ   — t          | t          j        ¦  «        rNt          |t          j        ¦  «        r6| j        |j        k    r(t          | j        t          j        ¦  «        rd„ }|S d S d S d S d S )Nc                 ó<  — t          | ¦  «        dk    rd| d         › d�}n#dd                     d„ | D ¦   «         ¦  «        › d�}t          |¦  «        dk    rd|d         › d�}n#dd                     d„ |D ¦   «         ¦  «        › d�}d	|› d
|› �}t          |¦  «        ‚)NrH   ú(r   z,)ú, c                 ó,   — g | ]}t          |¦  «        ‘ŒS r¡   ©Ústr©r¢   r¥  s     rD   r£   zAol_raise_with_shape_context_cpu.<locals>.impl.<locals>.<listcomp>Œ  s   € Ð*FÐ*FÐ*F°a­3¨q©6¬6Ð*FÐ*FÐ*FrF   ú)c                 ó,   — g | ]}t          |¦  «        ‘ŒS r¡   r  r  s     rD   r£   zAol_raise_with_shape_context_cpu.<locals>.impl.<locals>.<listcomp>�  s   € Ð*GÐ*GÐ*G°a­3¨q©6¬6Ð*GÐ*GÐ*GrF   zcannot assign slice of shape z from input of shape )r¤   Újoinr¼   )rx  rý  Ú	shape_strÚ	index_strrÑ   s        rD   rí   z-ol_raise_with_shape_context_cpu.<locals>.implˆ  sÔ   € Ý�:‰Œ !Ò#Ð#Ø1 
¨1¤Ð1Ð1Ð1�	�	àJ §	¢	Ð*FÐ*F¸:Ð*FÑ*FÔ*FÑ GÔ GÐJÐJÐJ�	Ý�;ÑÔ 1Ò$Ð$Ø2 ¨A¤Ð2Ð2Ð2�	�	àK §	¢	Ð*GÐ*G¸;Ð*GÑ*GÔ*GÑ HÔ HÐKÐKÐK�	ð(°9ð (ð (Ø%ð(ð (ˆCå˜S‘/”/Ð!rF   r  r  s      rD   Úol_raise_with_shape_context_cpur  �  sˆ   € å�:�uœ~Ñ.Ô.ð Ý�;¥¤Ñ/Ô/ðàÔ˜KÔ-Ò-Ð-Ý�zÔ'­¬Ñ7Ô7ð 	.ð	"ð 	"ð 	"ð ˆð#ð ð ð à-Ð-Ð-Ð-rF   c                 óh  ‡ ‡‡-‡.‡/— |j         \  }}Š/|\  }}Š- t          |¦  «        ‰ ‰|¦  «        }t          j        ‰|j        ¦  «        }	t          j        ‰|j        ¦  «        }
|j        }g }t          |¦  «        D ]Z\  }}||         }t          |t          j
        ¦  «        r3 t          |¦  «        ‰ ‰|¦  «        }|                     ||||f¦  «         Œ[t          |¦  «        rt          ‰ ‰|¦  «        }nd}t          ‰ ‰|||||¦  «        }|                     ¦   «          d„ }t          ‰/t          j        ¦  «        �rH‰/j        Š.|                     ¦   «         } t          ‰/¦  «        ‰ ‰‰-¦  «        Š-t          j        ‰‰-j        ¦  «        }t          j        ‰‰-j        ¦  «        }‰-j        }‰                      t          j        d¦  «        }t          |¦  «        t          |¦  «        k    rC|ft          |¦  «        t          |¦  «        z
  z  t+          |¦  «        z   }t+          |¦  «        }n�t          |¦  «        t          |¦  «        k     rC|ft          |¦  «        t          |¦  «        z
  z  t+          |¦  «        z   }t+          |¦  «        }nt+          |¦  «        }t+          |¦  «        }t-          t          |¦  «        ¦  «        D ]¨}‰                     d||         ||         ¦  «        }‰                     d||         |¦  «        }‰                     ‰                     ||¦  «        ¦  «        }‰                     |d¬¦  «        5   |‰ ‰||¦  «         ddd¦  «         n# 1 swxY w Y   Œ©t7          ‰ ‰‰/‰-|||¦  «        \  }}|                     |
|j        ¦  «        \  } }!t=          ‰ ‰| |!|¦  «        \  }"}#t?          ‰ ‰|||"|#¦  «        }$tA          ‰ ‰|$|‰/‰-|||¦	  «	        \  }%}&| !                    ¦   «         }'t          j"        ‰ ‰||	|
|j#        |'d‰ j$        ¬¦	  «	        }( |%¦   «         })‰  %                    ‰|)‰.|j        ¦  «        })tM          ‰ ‰||)|(¦  «         | '                    ¦   «           |&¦   «          �nt          ‰/t          j(        ¦  «        �r™‰/j        Š.|                     ¦   «         }t          |¦  «        dk    sJ ‚‰  )                    t          tU          t          j+        ‰/¦  «        ¦  «        }* |*‰‰-f¦  «        }+‰                     d	|d
         |+¦  «        }‰                     |d¬¦  «        5   |‰ ‰|+f|d
         f¦  «         ddd¦  «         n# 1 swxY w Y   ˆˆ ˆ-ˆ.ˆ/fd„}%t          j,        ‰‰                      t          j+        d
¦  «        ¦  «        },| !                    ¦   «         }'t          j"        ‰ ‰||	|
|j#        |'d‰ j$        ¬¦	  «	        }( |%|,¦  «        })‰  %                    ‰|)‰.|j        ¦  «        })tM          ‰ ‰||)|(¦  «         | '                    ¦   «          nb| !                    ¦   «         }'t          j"        ‰ ‰||	|
|j#        |'d‰ j$        ¬¦	  «	        }(tM          ‰ ‰|‰-|(¦  «         | '                    ¦   «          ‰  -                    ¦   «         S )zÇ
    Implement slice assignment for arrays.  This implementation works for
    basic as well as fancy indexing, since there's no functional difference
    between the two for indexed assignment.
    r¡   c           	      óô  — | j                              t          ¦  «        }t          j        t          j        t          |¦  «        ¦  «        t          j        t          j        t          |¦  «        ¦  «        f}|                     | j         |i ¦  «        }|                      ||¦  «        } |||  	                    ||j
        d         |¦  «        |  	                    ||j
        d         |¦  «        f¦  «         d S ©Nr   rH   )Útyping_contextÚresolve_value_typerþ  r   rA  Úint64r¤   Úget_call_typerR   Ú
make_tupler  )r~   r>   rx  rý  ÚfntyÚargtysÚ	raise_sigÚfuncs           rD   Úraise_shape_mismatch_errorz2fancy_setslice.<locals>.raise_shape_mismatch_error·  sì   € ð Ô%×8Ò8Ý$ñ&ô &ˆå”.¥¤­c°*©o¬oÑ>Ô>Ý”.¥¤­c°+Ñ.>Ô.>Ñ?Ô?ðAˆà×&Ò& wÔ'=¸vÀrÑJÔJˆ	Ø×#Ò# D¨)Ñ4Ô4ˆØˆˆW�w×)Ò)¨'°9´>À!Ô3DØ*4ñ6ô 6à×)Ò)¨'°9´>À!Ô3DØ*5ñ7ô 7ð8ñ 	9ô 	9ð 	9ð 	9ð 	9rF   rH   r$  Frn  Nr4  rm  r   c                 ó  •— ‰                      | ¦  «        }‰                     t          j        t	          ‰‰	t
          j        ¦  «        ¦  «        } |‰‰|f¦  «        }t          j        ‰|¦  «        }‰ 	                    || ¦  «         |S rW  )
r?   rR   ÚoperatorÚgetitemr$   r   r�   r
   r'  r(  )
r»  rZ  Úgetitem_implrŠ   r[  r>   r~   r�  Ú	src_dtyper…  s
        €€€€€rD   r‡  z#fancy_setslice.<locals>.src_getitem  s‚   ø€ Ø—,’,˜wÑ'Ô'ˆCØ"×/Ò/ÝÔ Ý˜) U­E¬JÑ7Ô7ñô ˆLð �,˜w¨¨c¨
Ñ3Ô3ˆCÝÔ.¨w¸Ñ<Ô<ˆHØ�MŠM˜( GÑ,Ô,Ð,ØˆJrF   ).r  ry   r
   rÄ   rf   r°   r›   rø   r˜   r   r™   rj   r¤   rO  r  r|  r  r|   r‚  rÃ   r‘   r¿   r9   r"  rÞ  r&  r$  rk  r0  r±   ri  rs  r’  r2  rR  rS  rO  rŽ   r‹   r4  ÚSequencerR   r$   r�   r  rv  )0r~   r>   r\   r  r¦   r§   rÛ   rÉ  r  Údest_shapesÚdest_stridesÚ	dest_datarK  rn   r’   r“   rU  r  r  r"  rý  rx  r„  rƒ  r@  Únew_src_shapesÚnew_index_shapeÚ	dim_matchÚsrc_dim_is_oneÚshape_errorÚ	src_startÚsrc_endÚ
dest_lowerÚ
dest_upperÚ
dest_startÚdest_endr†  r‡  rŒ  Údest_indicesr‘  rŠ   Úlen_implÚseq_lenr»  r�  r'  r…  s0   ``                                           @@@rD   rc  rc  —  s½  øøøøø€ ð ”h�O€Eˆ1ˆeØ�K€CˆˆCà
�*�UÑ
Ô
˜G W¨cÑ
2Ô
2€CÝÔ& w°´	Ñ:Ô:€KÝÔ'¨°´Ñ=Ô=€LØ”€Ià€MÝ˜kÑ*Ô*ð <ð <‰ˆˆ5Ø�aŒjˆÝ�e�Uœ[Ñ)Ô)ð 	<Ø(•z %Ñ(Ô(¨°'¸3Ñ?Ô?ˆHØ× Ò  ! S¨%°Ð!:Ñ;Ô;Ð;øå
ˆ=ÑÔð "Ý1Ø�W˜mñ 
ô  
ÐÐð  "Ðå˜7 G¨U°CØ&¨Ð1EñGô G€Gà‡O‚OÑÔÐð9ð 9ð 9õ �%�œÑ&Ô&ñ @à”Kˆ	Ø×'Ò'Ñ)Ô)ˆØ�j˜ÑÔ ¨°#Ñ6Ô6ˆÝÔ)¨'°3´9Ñ=Ô=ˆ
ÝÔ*¨7°C´KÑ@Ô@ˆØ”8ˆð ×"Ò"¥5¤;°Ñ2Ô2ˆÝˆ{ÑÔ�c *™oœoÒ-Ð-Ø!˜VÝ�KÑ Ô ¥3 z¡?¤?Ñ2ñå�jÑ!Ô!ñ"ˆNõ $ KÑ0Ô0ˆOˆOÝ�ÑÔ¥ J¡¤Ò/Ð/Ø"˜fÝ�J‘”¥# kÑ"2Ô"2Ñ2ñå�kÑ"Ô"ñ#ˆOõ # :Ñ.Ô.ˆNˆNå" :Ñ.Ô.ˆNÝ# KÑ0Ô0ˆOõ
 •s˜>Ñ*Ô*Ñ+Ô+ð 
	ð 
	ˆAØ×+Ò+Ø�n QÔ'¨¸Ô);ñô ˆIð %×0Ò0°°~ÀaÔ7HÈ#ÑNÔNˆNØ!Ÿ,š, w§{¢{°9¸nÑ'MÔ'MÑNÔNˆKà—’ °U�Ñ;Ô;ð ð Ø*Ð*Ø˜W j°+ñô ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øõ 6°g¸wÈØ69¸:Ø6AÀ8ñMô MÑˆ	�7ð ")×!:Ò!:¸<Ø;>¼<ñ"Iô "IÑˆ
�Jå5°g¸wØ6@À*Ø6?ñ Aô  AÑˆ
�Hõ ' w°¸ÀGØ'1°8ñ=ô =ˆå#4°W¸gÀxØ5<Ø5:¸CÀØ5@À(ñ$Lô $LÑ ˆ�[ð ×*Ò*Ñ,Ô,ˆõ Ô,Ø�W˜i¨°lØŒL˜,°5ØÔ2ð4ñ 4ô 4ˆð
 ˆk‰mŒmˆØ�lŠl˜7 C¨°E´KÑ@Ô@ˆÝ�7˜G U¨C°Ñ:Ô:Ð:à×ÒÑÔÐØˆ‰Œˆ‰å	�E�5œ>Ñ	*Ô	*ñ 6Ø”Kˆ	ð ×'Ò'Ñ)Ô)ˆÝ�;ÑÔ 1Ò$Ð$Ð$Ð$Ø×'Ò'­­Yµu´zÀ5Ñ-IÔ-IÑJÔJˆØ�(˜7 S FÑ+Ô+ˆà×)Ò)¨$°¸A´ÀÑHÔHˆà�_Š_˜[°ˆ_Ñ7Ô7ð 	:ð 	:Ø&Ð& w°¸'¸Ø(3°A¬Ð'8ñ:ô :ð :ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:ð		ð 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		õ Ô+¨GØ,3×,@Ò,@ÅÄÈQÑ,OÔ,OñQô Qˆð ×*Ò*Ñ,Ô,ˆõ Ô,Ø�W˜i¨°lØŒL˜,°5ØÔ2ð4ñ 4ô 4ˆð
 ˆk˜'Ñ"Ô"ˆØ�lŠl˜7 C¨°E´KÑ@Ô@ˆÝ�7˜G U¨C°Ñ:Ô:Ð:à×ÒÑÔÐÐð ×*Ò*Ñ,Ô,ˆõ Ô,Ø�W˜i¨°lØŒL˜,°5ØÔ2ð4ñ 4ô 4ˆõ 	�7˜G U¨C°Ñ:Ô:Ð:Ø×ÒÑÔÐà×"Ò"Ñ$Ô$Ð$s$   ÍM/Í/M3	Í6M3	Õ	U,Õ,U0Õ3U0c                 ó~  ‡ ‡— |j         d         }|j         dd …         }|d         }|dd …         }ˆˆ fd„t          ||¦  «        D ¦   «         }t          j        ‰||d         j        ¦  «        }t          j        t
          j        t          |¦  «        ¬¦  «        }	t          j
        |j        ||	¦  «        }
||f}|
|fS )Nr   rH   c                 óZ   •— g | ]'\  }}‰                      ‰||t          j        ¦  «        ‘Œ(S r¡   ©rŽ   r   r�   )r¢   rY  rŠ   r>   r~   s      €€rD   r£   z#vararg_to_tuple.<locals>.<listcomp>U  sA   ø€ ð .ð .ð .Ù��Cð �LŠL˜ # r­5¬:Ñ6Ô6ð .ð .ð .rF   ©r|   rÅ   )r  r¥   r
   rk   r:   r   rA  r�   r¤   r   r$   r  )r~   r>   r\   r  rÛ   Údimtysr  rm   rf   ÚshapetyÚnew_sigÚnew_argss   ``          rD   Úvararg_to_tuplerB  N  sÍ   øø€ ØŒH�QŒK€EØŒX�a�b�bŒ\€Fà
ˆqŒ'€CØ���Œ8€Dð.ð .ð .ð .ð .Ý˜v tÑ,Ô,ð.ñ .ô .€Dõ Ô˜w¨¨d°1¬g¬lÑ;Ô;€EåŒn¥5¤:µS¸±Y´YÐ?Ñ?Ô?€GÝÔ˜sœ°°wÑ?Ô?€GØ�Eˆz€Hà�HÐÐrF   zarray.transposec                 óH   — t          | ||j        d         |d         ¦  «        S rë   )Úarray_Tr  ©r~   r>   r\   r  s       rD   Úarray_transposerF  a  s    € å�7˜G S¤X¨a¤[°$°q´'Ñ:Ô:Ð:rF   c                 ó*  — t          | ¦  «        t          t          | ¦  «        ¦  «        k    rt          d¦  «        ‚t          |¦  «        }| D ]*}||k    st          |¦  «        |k    rt          d¦  «        ‚Œ+||          |d d …<   ||          |d d …<   d S )Nzrepeated axis in transposez2axis is out of bounds for array of given dimension)r¤   r¹   r¼   Úabs)râ   rf   r°   r�  r¥  s        rD   Úpermute_arraysrI  f  s£   € Ý
ˆ4�y„y•C�˜D™	œ	‘N”NÒ"Ð"ÝÐ5Ñ6Ô6Ð6Ý
ˆe‰*Œ*€CØð 0ð 0ˆØ�Š8ˆ8•s˜1‘v”v ’|�|Ýð /ñ 0ô 0ð 0ð $ð �TŒ{€Eˆ!ˆ!ˆ!�HØ˜”€GˆAˆAˆA�J€J€JrF   c           
      ó  ‡ ‡‡‡— |j         d         } t          |¦  «        ‰ ‰|d         ¦  «        }|j         d         |d         }}|j        |j        }	}‰                      t
          j        ¦  «        }
t          j        |
|¦  «        Š||j	        |j
        g}ˆˆfd„|D ¦   «         }t          ||¦  «        D ]\  }}‰                     ||¦  «         Œt          j        |	dd¬¦  «        Š‰                      t
          j        ‰                      |
¦  «        ¦  «        }ˆˆ ˆfd„|D ¦   «         }t          ||¦  «        D ]`\  }}t!          |‰                     ||
                     ¦   «         ¦  «        ‰                      t
          j        |¦  «        g|g|d ¬¦  «         Œa‰                      ‰t(          t+          j        t
          j        ‰‰‰¦  «        d„ |D ¦   «         ¦  «          t          |j        ¦  «        ‰ ‰¦  «        }t!          ||j        ‰                     |d         ¦  «        ‰                     |d	         ¦  «        |j        |j        |j        ¬
¦  «         |                     ¦   «         }t?          ‰ ‰|j        |¦  «        S )Nr   rH   c                 ó:   •— g | ]}t          j        ‰‰¦  «        ‘ŒS r¡   ©r
   rX   )r¢   rÉ  r>   Úll_ary_sizes     €€rD   r£   z)array_transpose_tuple.<locals>.<listcomp>‚  s&   ø€ ÐGÐGÐG¸Q�wÔ" 7¨KÑ8Ô8ÐGÐGÐGrF   rª   ©r|   rq   rS  c                 óB   •— g | ]} t          ‰¦  «        ‰‰¦  «        ‘ŒS r¡   ©ry   )r¢   rÉ  r>   r~   Ú	np_ary_tys     €€€rD   r£   z)array_transpose_tuple.<locals>.<listcomp>�  s.   ø€ ÐEÐEÐE¸1Ð$�z˜)Ñ$Ô$ W¨gÑ6Ô6ÐEÐEÐErF   ©r›   rf   r°   r±   r¯   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r¡   ©r	  ©r¢   Úas     rD   r£   z)array_transpose_tuple.<locals>.<listcomp>�  s    € Ð=Ð=Ð=°˜aŸkšk™mœmÐ=Ð=Ð=rF   rt  rL  ) r  ry   rÅ   r|   r½   r   r�   r   Ú	ArrayTyperf   r°   r¥   r(  r™   rÃ   r}   rÙ   r‰  Ú
as_pointerrI  rI  r   r$   Úvoidr  r›   r?   r±   r¯   r²   r	  r    )r~   r>   r\   r  rÛ   r  Úaxistyrâ   Únum_axisr|   r�  ÚarysÚll_arysr�  ÚdstÚnp_itemsizeÚnp_arysÚnp_aryÚll_aryrÀ  r  rM  rQ  s   ``                   @@rD   Úarray_transpose_tuplerc  u  sœ  øøøø€ àŒH�QŒK€EØ
�*�UÑ
Ô
˜G W¨d°1¬gÑ
6Ô
6€Cà”8˜A”;  Q¤ˆD€FØ”l F¤Lˆe€Hà×$Ò$¥U¤ZÑ0Ô0€GÝ”,˜w¨Ñ1Ô1€Kð �#”)˜Sœ[Ð)€DØGÐGÐGÐGÐGÀ$ÐGÑGÔG€Gõ ˜˜gÑ&Ô&ð  ð  ‰ˆˆSØ�Š�c˜3ÑÔÐÐå” %¨a¸Ð<Ñ<Ô<€IØ×&Ò&¥u¤zØ'.×'=Ò'=¸gÑ'FÔ'FñHô H€Kð FÐEÐEÐEÐEÐEÀÐEÑEÔE€Gõ ˜g wÑ/Ô/ð %ð %‰ˆ�Ý�vØ#ŸOšO¨F°G×4FÒ4FÑ4HÔ4HÑIÔIØ%×2Ò2µ5´:¸xÑHÔHÐIØ +˜}Ø +Ø#ð	%ñ 	%ô 	%ð 	%ð 	%ð ×Ò˜W¥nÝ#Ô-­e¬jØ.7¸ÀIñOô Oà=Ð=°WÐ=Ñ=Ô=ñ?ô ?ð ?ð &�*�S”_Ñ
%Ô
% g¨wÑ
7Ô
7€CÝ�3ØœØ Ÿš g¨a¤jÑ1Ô1Ø"Ÿ<š<¨°¬
Ñ3Ô3ØœLØœ;Øœ*ð&ñ &ô &ð &ð �-Š-‰/Œ/€CÝ˜W g¨s¬ÀÑDÔDÐDrF   c                 óP   — t          | |||¦  «        \  }}t          | |||¦  «        S rW  )rB  rc  ©r~   r>   r\   r  r@  rA  s         rD   Úarray_transpose_varargrf  ¬  s.   € å'¨°¸#¸tÑDÔDÑ€GˆXÝ  ¨'°7¸HÑEÔEÐErF   c                 óx   — t          | t          j        ¦  «        rt          j        d¦  «        ‚|€dd„}ndd„}|S )Nz#np.transpose does not accept tuplesc                 ó*   — |                       ¦   «         S rW  ©Ú	transpose©rV  Úaxess     rD   Únp_transpose_implz*numpy_transpose.<locals>.np_transpose_impl¸  s   € Ø—;’;‘=”=Ð rF   c                 ó,   — |                       |¦  «        S rW  ri  rk  s     rD   rm  z*numpy_transpose.<locals>.np_transpose_impl»  s   € Ø—;’;˜tÑ$Ô$Ð$rF   rW  )r˜   r   ra  r	   rî   )rV  rl  rm  s      rD   Únumpy_transposero  ²  sc   € å�!•U”_Ñ%Ô%ð HÝÔ Ð!FÑGÔGÐGà€|ð	!ð 	!ð 	!ð 	!ð 	!ð	%ð 	%ð 	%ð 	%ð ÐrF   ÚTc                 ó  — |j         dk    r|}né t          |¦  «        | ||¦  «        } t          |¦  «        | |¦  «        }t          j        ||j        |j         ¦  «        }t          j        ||j        |j         ¦  «        }t          ||j        t          j        ||d d d…         ¦  «        t          j        ||d d d…         ¦  «        |j	        |j
        |j        ¬¦  «         |                     ¦   «         }t          | |||¦  «        S )NrH   éÿÿÿÿrL  )rq   ry   r
   rÄ   rf   r°   rÙ   r›   rk   r±   r¯   r²   r	  r    )	r~   r>   rÚ  r   r  r  rÀ  r  r°   s	            rD   rD  rD  Á  sø   € à
„x�1‚}€}Øˆˆà�j˜‰oŒo˜g w°Ñ6Ô6ˆØ�j˜‰oŒo˜g wÑ/Ô/ˆÝÔ% g¨s¬y¸#¼(ÑCÔCˆÝÔ& w°´¸S¼XÑFÔFˆÝ�sØœHÝ$Ô/°¸ÀÀÀ"À¼ÑFÔFÝ&Ô1°'¸7À4À4ÀRÀ4¼=ÑIÔIØ #¤Ø"œ{Ø!œjð	*ñ 	*ô 	*ð 	*ð �mŠm‰oŒoˆÝ˜W g¨s°CÑ8Ô8Ð8rF   é2   c                 ó0  — t          | t          j        ¦  «        st          j        d¦  «        ‚t          |t          j        ¦  «        st          j        d¦  «        ‚t          |t
          t          j        f¦  «        st          j        d¦  «        ‚dd„}|S )Nz+The first argument "start" must be a numberz+The second argument "stop" must be a numberz+The third argument "num" must be an integerrs  c                 óX   — t          j        | ||¦  «        }t          j        d|¦  «        S )Ng      $@)r<  ÚlinspaceÚpower)r;  ró  Únumr¦  s       rD   rí   znumpy_logspace.<locals>.implÞ  s'   € ÝŒK˜˜t SÑ)Ô)ˆÝŒx˜˜aÑ Ô Ð rF   ©rs  )r˜   r   r÷  r	   rî   rÁ   rš   )r;  ró  rx  rí   s       rD   Únumpy_logspacerz  Õ  s—   € å�e�Uœ\Ñ*Ô*ð PÝÔ Ð!NÑOÔOÐOÝ�d�EœLÑ)Ô)ð PÝÔ Ð!NÑOÔOÐOÝ�c�C¥¤Ð/Ñ0Ô0ð PÝÔ Ð!NÑOÔOÐOð!ð !ð !ð !ð €KrF   c                 óü  ‡— t          | t          j        ¦  «        sd}t          j        |¦  «        ‚t          |t          j        ¦  «        sd}t          j        |¦  «        ‚t          |t
          t          j        f¦  «        sd}t          j        |¦  «        ‚t          d„ | |fD ¦   «         ¦  «        rDt          t          j
        t          | ¦  «        t          |¦  «        d ¦  «        ¦  «        Šdˆfd„	}ndd„}|S )	Nz%The argument "start" must be a numberz$The argument "stop" must be a numberú%The argument "num" must be an integerc              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S rW  ©r˜   r   ÚComplex©r¢   rì  s     rD   rZ  z"numpy_geomspace.<locals>.<genexpr>ó  ó.   è è € Ð
CÐ
C¨c�:�c�5œ=Ñ)Ô)Ð
CÐ
CÐ
CÐ
CÐ
CÐ
CrF   rs  c                 ó:  •— | dk    s|dk    rt          d¦  «        ‚ ‰	| ¦  «        }  ‰	|¦  «        }t          dk     rh| j        dk    |j        dk    z  }t          j        | ¦  «        dk    t          j        |¦  «        dk    z  }d}|r| j        } |j        }d}|r	|  } | }| }nt          j        | ¦  «        }| |z  } ||z  }t          j        | ¦  «        }t          j        |¦  «        }t          j        |||¦  «        }|dk    r| |d<   |dk    r||d<   ||z  S )Nr   ú&Geometric sequence cannot include zerors  rr  rH   y              ð?)r¼   r   Úrealr<  ÚsignÚimagÚlog10Úlogspace)
r;  ró  rx  Úboth_imaginaryÚboth_negativeÚout_signÚlogstartÚlogstopr)  Úresult_dtypes
            €rD   rí   znumpy_geomspace.<locals>.impl÷  sC  ø€ Ø˜Šzˆz˜T QšY˜YÝ Ð!IÑJÔJÐJØ �L Ñ'Ô'ˆEØ�< Ñ%Ô%ˆDÝ˜vÒ%Ð%Ø"'¤*°¢/°d´iÀ1²nÑ!E�Ý!#¤¨¡¤°2Ò!5½"¼'À$¹-¼-È2Ò:MÑ N�Ø�Ø!ð "Ø!œJ�EØœ9�DØ!�HØ ð )Ø"˜F�EØ ˜5�DØ (˜y�Høåœ7 5™>œ>�Ø˜Ñ!�Ø˜Ñ �å”x ‘”ˆHÝ”h˜t‘n”nˆGÝ”[ ¨7°CÑ8Ô8ˆFð �QŠwˆwØ!��q‘	Ø˜’7�7Ø!%�F˜2‘JØ˜fÑ$Ð$rF   c                 óf  — | dk    s|dk    rt          d¦  «        ‚t          j        | ¦  «        dk    t          j        |¦  «        dk    z  }d}|r	|  } | }| }t          j        | ¦  «        }t          j        |¦  «        }t          j        |||¦  «        }|dk    r| |d<   |dk    r||d<   ||z  S )Nr   rƒ  rr  rH   )r¼   r<  r…  r‡  rˆ  )r;  ró  rx  rŠ  r‹  rŒ  r�  r)  s           rD   rí   znumpy_geomspace.<locals>.impl	  sÆ   € Ø˜Šzˆz˜T QšY˜YÝ Ð!IÑJÔJÐJÝœW U™^œ^¨rÒ1µb´g¸d±m´mÀrÒ6IÑJˆMØˆHØð %Ø˜�Ø�u�Ø$˜9�Ý”x ‘”ˆHÝ”h˜t‘n”nˆGÝ”[ ¨7°CÑ8Ô8ˆFð �QŠwˆwØ!��q‘	Ø˜’7�7Ø!%�F˜2‘JØ˜fÑ$Ð$rF   ry  )r˜   r   r÷  r	   rî   rÁ   rš   r[  r   r<  Úresult_typer   )r;  ró  rx  rÑ   rí   rŽ  s        @rD   Únumpy_geomspacer‘  å  s  ø€ å�e�Uœ\Ñ*Ô*ð &Ø5ˆÝÔ  Ñ%Ô%Ð%å�d�EœLÑ)Ô)ð &Ø4ˆÝÔ  Ñ%Ô%Ð%å�c�C¥¤Ð/Ñ0Ô0ð &Ø5ˆÝÔ  Ñ%Ô%Ð%å
Ð
CÐ
C°e¸T°]Ð
CÑ
CÔ
CÑCÔCð :%Ý!¥"¤.µ¸%±´Ý19¸$±´Àñ#Gô #Gñ Hô Hˆð 	%ð  	%ð  	%ð  	%ð  	%ð  	%ð  	%ðF	%ð 	%ð 	%ð 	%ð* €KrF   rH   c                 ó  — t          |t          t          j        f¦  «        st	          j        d¦  «        ‚t          | t          j        ¦  «        st	          j        d¦  «        ‚| j        dk     rt	          j        d¦  «        ‚dd„}|S )Nz*The second argument "k" must be an integerz'The first argument "m" must be an arrayrt  úInput must be >= 2-d.rH   c                 óJ  — |dz  }|dk    r
| d d …         S |dk    r(t          j        t          j        | ¦  «        dd¦  «        S |dk    r&t          j        t          j        | ¦  «        ¦  «        S |dk    r(t          j        t          j        | dd¦  «        ¦  «        S t          ‚)Né   r   rH   rt  rE  )r<  ÚswapaxesÚfliplrÚflipudr  )rä  r×   s     rD   rí   znumpy_rot90.<locals>.impl=	  s”   € Ø�‰EˆØ�Š6ˆ6Ø�Q�Q�Q”4ˆKØ�!ŠVˆVÝ”;�rœy¨™|œ|¨Q°Ñ2Ô2Ð2Ø�!ŠVˆVÝ”9�RœY q™\œ\Ñ*Ô*Ð*Ø�!ŠVˆVÝ”9�Rœ[¨¨A¨qÑ1Ô1Ñ2Ô2Ð2å Ð rF   rê  )	r˜   rÁ   r   rš   r	   rî   r™   rq   ÚNumbaValueError)rä  r×   rí   s      rD   Únumpy_rot90rš  2	  s�   € õ �a�#�uœ}Ð-Ñ.Ô.ð OÝÔ Ð!MÑNÔNÐNÝ�a�œÑ%Ô%ð LÝÔ Ð!JÑKÔKÐKà„v�‚z€zÝÔ$Ð%<Ñ=Ô=Ð=ð!ð !ð !ð !ð €KrF   c                 ó°  — |                       t          j        ¦  «        }|                     ¦   «         }|                       t          j        ¦  «        }	t          j        |	||||||||	g¦  «        }
t          j        |j	        |
d¦  «        } ||j
        ¦  «        }t          j        ||                     d¦  «        dd¦  «        }t          j        ||                     d¦  «        dd¦  «        } ||¦  «        }t          j        ||dd¦  «        }t          j        ||dd¦  «        } |	d¦  «        }|                     ||||||||j        |g¦  «        }|S )a  
    Call into Numba_attempt_nocopy_reshape() for the given array type
    and instance, and the specified new shape.

    Return value is non-zero if successful, and the array pointed to
    by *newstrides* will be filled up with the computed results.
    Únumba_attempt_nocopy_reshaperf   r   r°   )r½   r   r�   rX  Úintcr   ÚFunctionTyper
   Úget_or_insert_functionr;   rq   ri   rh   Úcallr±   )r~   r>   rÛ   r  ÚnewndÚnewshapeÚ
newstridesr�  Úll_intp_starÚll_intcr  ÚfnÚndrf   r°   Ú
is_f_orderr  s                    rD   Ú_attempt_nocopy_reshaper©  M	  sd  € ð ×$Ò$¥U¤ZÑ0Ô0€GØ×%Ò%Ñ'Ô'€LØ×$Ò$¥U¤ZÑ0Ô0€GÝŒ?˜7à�˜|à�˜|à�ð%ñ ô €Dõ 
Ô	'¨¬¸Ø(Fñ
Hô 
H€Bð 
ˆ�”Ñ	Ô	€BÝÔ  ¨#×*>Ò*>¸wÑ*GÔ*GÈÈAÑNÔN€EÝÔ" 7¨C×,@Ò,@ÀÑ,KÔ,KØ#$ añ)ô )€GàˆG�E‰NŒN€EÝÔ# G¨X°q¸!Ñ<Ô<€HÝÔ% g¨z¸1¸aÑ@Ô@€JØ�˜‘”€JØ
�,Š,�r˜B  wØ! 8¨ZØœL¨*ð6ñ 7ô 7€Cð €JrF   c                 ó(  — d}d}t          |¦  «        D ]\  }}|dk     r|dz  }|}Œ||z  }Œ|dk    r| |k    rt          d¦  «        ‚d S |dk    r5|dk    r	d}| dk    }n| |z  }| |z  dk    }|st          d¦  «        ‚|||<   d S t          d¦  «        ‚)Nr   rH   z)total size of new array must be unchangedzmultiple negative shape values)rø   r¼   )	Úorigsizerf   Únum_neg_valueÚ
known_sizerú   r«   Úneg_axÚinferredÚoks	            rD   Únormalize_reshape_valuer±  q	  sî   € Ø€MØ€JÝ˜5Ñ!Ô!ð ð ‰ˆˆAØˆqŠ5ˆ5Ø˜QÑˆMØˆFˆFà˜!‰OˆJˆJà˜ÒÐØ�zÒ!Ð!ÝÐHÑIÔIÐIð "Ð!ð 
˜!Ò	Ð	à˜Š?ˆ?ØˆHØ˜Q’ˆBˆBà :Ñ-ˆHØ˜JÑ&¨!Ò+ˆBØð 	JÝÐHÑIÔIÐIØ ˆˆf‰ˆˆõ Ð9Ñ:Ô:Ð:rF   zarray.reshapec           	      ó,  — |j         d         }|j        }|j         d         }|d         }|                      t          j        ¦  «        }t          j        ||j        ¦  «        }	 t          |¦  «        | ||d         ¦  «        }
t          j
        ||	¦  «        }|                     ||¦  «         t          j        |j        dd¬¦  «        } t          |¦  «        | |¦  «        }|                      t          j        |                      |¦  «        ¦  «        }t!          ||                     ||                     ¦   «         ¦  «        |                      t          j        |j        ¦  «        g|g|d ¬¦  «         |
j        }|                      |t*          t-          j        t          j        t          j        |¦  «        ||                     ¦   «         g¦  «         |j        }t          j
        ||	¦  «        }t7          | |||
|||¦  «        }|                     d||                     d¦  «        ¦  «        }|                     |¦  «        5  d}| j                              |tB          |f¦  «         d d d ¦  «         n# 1 swxY w Y    t          |¦  «        | |¦  «        }t!          ||
j"        | #                    |¦  «        | #                    |¦  «        |
j$        |
j%        |
j&        ¬¦  «         |                     ¦   «         }tO          | ||j        |¦  «        S )	Nr   rH   rª   rN  rR  r$  zincompatible shape for arrayrL  )(r  r  r½   r   r�   r   rW  rÅ   ry   r
   rX   r(  r™   r|   rÃ   r}   rÙ   r‰  rX  r¶   rI  r±  r   r$   rY  r‘   r	  r©  r'  r:   r$  rp  rq  rS   r›   r?   r±   r¯   r²   r    )r~   r>   r\   r  rÛ   rN  r?  rf   r�  Úll_shaper  r¢  Úshape_ary_tyÚ	shape_aryÚshape_itemsizer”   r¡  r£  r°  ÚfailrÑ   rÀ  r  s                          rD   Úarray_reshaper¸  �	  s+  € àŒH�QŒK€EØŒO€EàŒh�qŒk€GØ�ŒG€Eà×$Ò$¥U¤ZÑ0Ô0€GÝŒ|˜G W¤]Ñ3Ô3€Hà
�*�UÑ
Ô
˜G W¨d°1¬gÑ
6Ô
6€Cõ Ô" 7¨HÑ5Ô5€HØ‡M‚M�%˜Ñ"Ô"Ð"õ ”; W¤]¸À3ÐGÑGÔG€LØ(•
˜<Ñ(Ô(¨°'Ñ:Ô:€IØ×)Ò)­%¬*Ø*1×*@Ò*@ÀÑ*IÔ*IñKô K€Nå�9ØŸš¨°'×2DÒ2DÑ2FÔ2FÑGÔGØ!×.Ò.­u¬z¸7¼=ÑIÔIÐJØ*Ð+Ø*Øð!ñ !ô !ð !ð Œ:€Dð ×Ò˜WÕ&=Ý#Ô-­e¬jÝ.3¬k¸<ñIô Ià" I×$7Ò$7Ñ$9Ô$9Ð:ñ<ô <ð <ð ŒM€EÝÔ$ W¨hÑ7Ô7€Jå	  ¨'°5¸#¸uØ!)¨:ñ
7ô 
7€Bà× Ò   r¨2¯7ª7°1©:¬:Ñ6Ô6€Dà	�Š˜Ñ	Ô	ð Pð PØ,ˆØÔ×)Ò)¨'Õ3FÈÈÑOÔOÐOðPð Pð Pñ Pô Pð Pð Pð Pð Pð Pð Pøøøð Pð Pð Pð Pð �*�UÑ
Ô
˜G WÑ
-Ô
-€CÝ�3ØœØ Ÿš hÑ/Ô/Ø"Ÿ<š<¨
Ñ3Ô3ØœLØœ;Øœ*ð&ñ &ô &ð &ð �-Š-‰/Œ/€CÝ˜W g¨s¬ÀÑDÔDÐDs   É%I7É7I;É>I;c                 óP   — t          | |||¦  «        \  }}t          | |||¦  «        S rW  )rB  r¸  re  s         rD   Úarray_reshape_varargrº  Ð	  s.   € å'¨°¸#¸tÑDÔDÑ€GˆXÝ˜ '¨7°HÑ=Ô=Ð=rF   )rt  rH   c                 ó   — d„ }|S )Nc                 ó,   — |                       |¦  «        S rW  ©Úreshape)rV  r¢  s     rD   Únp_reshape_implz#np_reshape.<locals>.np_reshape_implÙ	  s   € Ø—9’9˜XÑ&Ô&Ð&rF   r¡   )rV  r¢  r¿  s      rD   Ú
np_reshaperÀ  ×	  s   € ð	'ð 	'ð 	'àÐrF   c                 ó   — d„ }|S )Nc                 ó,   — |                       |¦  «        S rW  r½  )rV  rf   s     rD   r¿  z#np_reshape.<locals>.np_reshape_implß	  s   € Ø—9’9˜UÑ#Ô#Ð#rF   r¡   )rV  rf   r¿  s      rD   rÀ  rÀ  Ý	  s   € ð	$ð 	$ð 	$àÐrF   c                 ó(  — t          | ¦  «        sd}t          j        |¦  «        ‚t          |t          j        ¦  «        rt          |j        t          j        ¦  «        s0t          |t          j        ¦  «        sd}t          j        |¦  «        ‚d„ }|S )Nú#The argument "a" must be array-likezBThe argument "new_shape" must be an integer or a tuple of integersc                 ó8  — t          j        | ¦  «        } t          j        | ¦  «        } t          |t          ¦  «        r6d}t          j        |¦  «        D ]}||z  }|dk     rd}t          |¦  «        ‚Œn|dk     rd}t          |¦  «        ‚|}| j        dk    r,t          j        |¦  «                             | j	        ¦  «        S | | j        z   }| }t          |dz
  ¦  «        D ]}t          j        || f¦  «        }Œ|d |…         }t          j        ||¦  «        S )NrH   r   z0All elements of `new_shape` must be non-negative)r<  rÒ  Úravelr˜   r¿   r¼   r”   ÚzerosÚastyper|   r9   Úconcatenater¾  )	rV  Ú	new_shapeÚnew_sizeÚ
dim_lengthrÑ   Úmsg2Úrepeatsr  rn   s	            rD   rí   znumpy_resize.<locals>.implô	  s-  € ÝŒJ�q‰MŒMˆÝŒH�Q‰KŒKˆå�i¥Ñ'Ô'ð 	!ØˆHÝ œj¨Ñ3Ô3ð *ð *�
Ø˜JÑ&�Ø ’>�>ØL�CÝ$ S™/œ/Ð)ð "ð*ð ˜1Š}ˆ}ØI�Ý  Ñ&Ô&Ð&Ø ˆHàŒ6�QŠ;ˆ;Ý”8˜IÑ&Ô&×-Ò-¨a¬gÑ6Ô6Ð6à�I ¤Ñ'Ð(ˆØˆÝ�w ‘{Ñ#Ô#ð 	+ð 	+ˆAÝ”. # q Ñ*Ô*ˆCˆCØ�)�8�)ŒnˆåŒz˜#˜yÑ)Ô)Ð)rF   )r   r	   rî   r˜   r   rA  r|   rš   )rV  rÊ  rÑ   rí   s       rD   Únumpy_resizerÏ  ä	  s˜   € õ ˜AÑÔð &Ø3ˆÝÔ  Ñ%Ô%Ð%å˜	¥5¤>Ñ2Ô2ð &å˜	œ­¬Ñ7Ô7ð&õ �y¥%¤-Ñ0Ô0ð	&ð
%ˆåÔ  Ñ%Ô%Ð%ð*ð *ð *ð8 €KrF   c                 ó  — t          | ¦  «        st          j        d¦  «        ‚t          |¦  «        st          j        d¦  «        ‚t          |¦  «        rdd„}n2t	          |t
          j        ¦  «        st          j        d¦  «        ‚dd„}|S )Nz+The first argument "arr" must be array-likez/The second argument "values" must be array-likec                 óÆ   — t          j        t          j        | ¦  «        ¦  «        } t          j        t          j        |¦  «        ¦  «        }t          j        | |f¦  «        S rW  )r<  rÆ  rÒ  rÉ  ©ra  Úvaluesrâ   s      rD   rí   znp_append.<locals>.impl
  sF   € Ý”(�2œ: c™?œ?Ñ+Ô+ˆCÝ”X�bœj¨Ñ0Ô0Ñ1Ô1ˆFÝ”> 3¨ -Ñ0Ô0Ð0rF   z,The third argument "axis" must be an integerc                 ó2   — t          j        | |f|¬¦  «        S ©N©râ   ©r<  rÉ  rÒ  s      rD   rí   znp_append.<locals>.impl(
  s   € Ý”> 3¨ -°dÐ;Ñ;Ô;Ð;rF   rW  )r   r	   rî   r   r˜   r   rš   )ra  rÓ  râ   rí   s       rD   Ú	np_appendrØ  
  sÅ   € õ ˜CÑ Ô ð PÝÔ Ð!NÑOÔOÐOå˜FÑ#Ô#ð /ÝÔ ð ".ñ /ô /ð 	/õ �4ÑÔð <ð	1ð 	1ð 	1ð 	1ð 	1õ ˜$¥¤Ñ.Ô.ð 	0ÝÔ$ð &/ñ 0ô 0ð 0ð	<ð 	<ð 	<ð 	<à€KrF   zarray.ravelc                 ó¦   — d„ }d„ }|j         d         j        dk    r|}n|}|                      ||||¦  «        }t          | ||j        |¦  «        }|S )Nc                 ó6   — |                       | j        ¦  «        S )zNo copy version)r¾  r”   ©r  s    rD   Ú
imp_nocopyzarray_ravel.<locals>.imp_nocopy0
  s   € à�{Š{˜3œ8Ñ$Ô$Ð$rF   c                 ó*   — |                       ¦   «         S )zCopy version)ÚflattenrÛ  s    rD   Úimp_copyzarray_ravel.<locals>.imp_copy4
  s   € à�{Š{‰}Œ}ÐrF   r   rª   )r  rS  rI  r!   r  )r~   r>   r\   r  rÜ  rß  Úimpr  s           rD   Úarray_ravelrá  -
  sw   € ð%ð %ð %ðð ð ð
 „x�„{Ô˜SÒ Ð Øˆˆð ˆà
×
"Ò
" 7¨C°°dÑ
;Ô
;€CÝ
˜7 G¨S¬_¸cÑ
BÔ
B€CØ€JrF   c                 ó8   — d„ }|                       ||||¦  «        S )Nc                 ó*   — |                       ¦   «         S rW  )rÆ  ©rV  s    rD   Únp_ravel_implznp_ravel.<locals>.np_ravel_implF
  s   € Ø�wŠw‰yŒyÐrF   )rI  )r~   r>   r\   r  rå  s        rD   Únp_ravelræ  D
  s-   € ðð ð ð ×#Ò# G¨]¸CÀÑFÔFÐFrF   zarray.flattenc                 ój   — d„ }|                       ||||¦  «        }t          | ||j        |¦  «        }|S )Nc                 óZ   — |                       ¦   «                              | j        ¦  «        S rW  )r´  r¾  r”   rÛ  s    rD   rà  zarray_flatten.<locals>.impO
  s    € Ø�xŠx‰zŒz×!Ò! #¤(Ñ+Ô+Ð+rF   )rI  r!   r  )r~   r>   r\   r  rà  r  s         rD   Úarray_flattenré  L
  sF   € ð,ð ,ð ,ð ×
"Ò
" 7¨C°°dÑ
;Ô
;€CÝ
˜7 G¨S¬_¸cÑ
BÔ
B€CØ€JrF   c                 óf   — |€t          j        | ¦  «        S |j        |k    rt          d¦  «        ‚|S )NzIclip: the shape of the 'out' array does not match the shape of the result)r<  Ú
empty_likerf   r¼   )rV  rf   r  s      rD   Ú_np_clip_prepare_outrì  W
  sB   € ð €{ÝŒ}˜QÑÔÐØ
„y�EÒÐÝð 9ñ :ô :ð 	:à€JrF   c                 ó  — t          j        | ||¦  «        \  }}}t          | |j        |¦  «        }t          j        |j        ¦  «        D ];}||         }	||         }
||         }t          t          |	|
¦  «        |¦  «        ||<   Œ<|S rW  )r<  Úbroadcast_arraysrì  rf   ÚndindexÚminrG  )rV  Úa_minÚa_maxr  Úa_bÚa_min_bÚa_max_brÀ  r  Úval_aÚ	val_a_minÚ	val_a_maxs               rD   Ú_np_clip_implrù  f
  sŒ   € õ Ô/°°5¸%Ñ@Ô@Ñ€Cˆ�'Ý
˜q #¤)¨SÑ
1Ô
1€CÝ”˜CœIÑ&Ô&ð ;ð ;ˆØ�E”
ˆØ˜E”Nˆ	Ø˜E”Nˆ	Ý�˜U IÑ.Ô.°	Ñ:Ô:ˆˆE‰
ˆ
à€JrF   c                 ó°   — t          j        | j        ¦  «        D ];}| |         }||         }|rt          ||¦  «        ||<   Œ(t	          ||¦  «        ||<   Œ<|S rW  )r<  rï  rf   rð  rG  )rV  ÚbÚuse_minr  r  rö  Úval_bs          rD   Ú_np_clip_impl_nonerþ  t
  sf   € å”˜AœGÑ$Ô$ð +ð +ˆØ�%”ˆØ�%”ˆØð 	+Ý˜U EÑ*Ô*ˆC�‰JˆJå˜U EÑ*Ô*ˆC�‰JˆJØ€JrF   c                 óä  — t          | ¦  «        st          j        d¦  «        ‚t          |t          j        ¦  «        s#t          |¦  «        st          j        d¦  «        ‚t          |t          j        ¦  «        s#t          |¦  «        st          j        d¦  «        ‚t          |t          j        ¦  «        s%t          |¦  «        sd}t          j        |¦  «        ‚t          d„ | ||fD ¦   «         ¦  «        }t          |t          j        ¦  «        r!|j	        |k    rd}t          j        |¦  «        ‚|d u pt          |t          j        ¦  «        }|d u pt          |t          j        ¦  «        }|r|rdd„}|S t          |t          j
        ¦  «        }	t          |t          j
        ¦  «        }
|	r|
rdd„}|S |	r|
s|rdd	„}|S dd
„}|S |	s|
r|rdd„}|S dd„}|S |rdd„}|S |rdd„}|S dd„}|S )NrÄ  z6The argument "a_min" must be a number or an array-likez6The argument "a_max" must be a number or an array-likez5The argument "out" must be an array if it is providedc              3   ó8   K  — | ]}t          |d d¦  «        V — ŒdS )rq   r   N)Úgetattr©r¢   Úts     rD   rZ  znp_clip.<locals>.<genexpr>•
  s.   è è € ÐGÐG°•g˜a ¨Ñ+Ô+ÐGÐGÐGÐGÐGÐGrF   zHThe argument "out" must have the same number of dimensions as the resultc                 ó    — t          d¦  «        ‚)Nz&array_clip: must set either max or minrì   ©rV  rñ  rò  r  s       rD   Ú
np_clip_nnznp_clip.<locals>.np_clip_nn¡
  s   € ÝÐEÑFÔFÐFrF   c                 ó¼   — t          | | j        |¦  «        }t          j        | j        ¦  «        D ]+}| |         }t	          t          ||¦  «        |¦  «        ||<   Œ,|S rW  )rì  rf   r<  rï  rð  rG  ©rV  rñ  rò  r  rÀ  r  rö  s          rD   Ú
np_clip_ssznp_clip.<locals>.np_clip_ssª
  s_   € õ ' q¨!¬'°3Ñ7Ô7ˆCÝœ A¤GÑ,Ô,ð ;ð ;�Ø˜%œ�Ý ¥ U¨EÑ!2Ô!2°EÑ:Ô:��E‘
�
àˆJrF   c                 ó    — t          | | j        |¦  «        }t          j        | j        ¦  «        D ]}| |         }t	          ||¦  «        ||<   Œ|S rW  )rì  rf   r<  rï  rG  r  s          rD   Ú
np_clip_snznp_clip.<locals>.np_clip_sn¸
  óU   € õ +¨1¨a¬g°sÑ;Ô;�ÝœZ¨¬Ñ0Ô0ð 3ð 3�EØ˜eœH�EÝ!$ U¨EÑ!2Ô!2�C˜‘J�Jà�
rF   c                 óP   — t          j        | |¦  «        }t          | |||¦  «        S rW  ©r<  Ú	full_likerù  )rV  rñ  rò  r  Ú
a_min_fulls        rD   Ú
np_clip_saznp_clip.<locals>.np_clip_saÅ
  s)   € õ
  œ\¨!¨UÑ3Ô3�
Ý$ Q¨
°E¸3Ñ?Ô?Ð?rF   c                 ó    — t          | | j        |¦  «        }t          j        | j        ¦  «        D ]}| |         }t	          ||¦  «        ||<   Œ|S rW  )rì  rf   r<  rï  rð  r  s          rD   Ú
np_clip_nsznp_clip.<locals>.np_clip_nsÐ
  r  rF   c                 óP   — t          j        | |¦  «        }t          | |||¦  «        S rW  r  )rV  rñ  rò  r  Ú
a_max_fulls        rD   Ú
np_clip_asznp_clip.<locals>.np_clip_asÝ
  s)   € õ
  œ\¨!¨UÑ3Ô3�
Ý$ Q¨¨z¸3Ñ?Ô?Ð?rF   c                 ó‚   — t          j        | |¦  «        \  }}t          | |j        |¦  «        }t	          ||d|¦  «        S )NT©r<  rî  rì  rf   rþ  )rV  rñ  rò  r  ró  rõ  rÀ  s          rD   Ú
np_clip_naznp_clip.<locals>.np_clip_naé
  s?   € å!Ô2°1°eÑ<Ô<‘��WÝ*¨1¨c¬i¸Ñ=Ô=�Ý)¨#¨w¸¸cÑBÔBÐBrF   c                 ó‚   — t          j        | |¦  «        \  }}t          | |j        |¦  «        }t	          ||d|¦  «        S )NFr  )rV  rñ  rò  r  ró  rô  rÀ  s          rD   Ú
np_clip_anznp_clip.<locals>.np_clip_anñ
  s?   € å!Ô2°1°eÑ<Ô<‘��WÝ*¨1¨c¬i¸Ñ=Ô=�Ý)¨#¨w¸¸sÑCÔCÐCrF   c                 ó&   — t          | |||¦  «        S rW  )rù  r  s       rD   Ú
np_clip_aaznp_clip.<locals>.np_clip_aaù
  s   € õ % Q¨¨u°cÑ:Ô:Ð:rF   rW  )r   r	   rî   r˜   r   rR  r™   r   rG  rq   r÷  )rV  rñ  rò  r  rÑ   Úresult_ndimÚa_min_is_noneÚa_max_is_noner  Úa_min_is_scalarÚa_max_is_scalarr	  r  r  r  r  r  r  r  s                      rD   Únp_clipr#  €
  s  € å˜AÑÔð HÝÔ Ð!FÑGÔGÐGå�u�eœnÑ-Ô-ð 6Ý  Ñ'Ô'ð6åÔ ð #4ñ 6ô 6ð 	6õ �u�eœnÑ-Ô-ð 5Ý  Ñ'Ô'ð5åÔ ð "4ñ 5ô 5ð 	5õ �s�EœKÑ(Ô(ð &­K¸Ñ,<Ô,<ð &ØEˆÝÔ  Ñ%Ô%Ð%õ ÐGÐG°a¸ÀÐ5FÐGÑGÔGÑGÔG€KÝ�#•u”{Ñ#Ô#ð &¨¬°KÒ(?Ð(?ðˆåÔ  Ñ%Ô%Ð%ð ˜T�MÐF¥Z°µu´~Ñ%FÔ%F€MØ˜T�MÐF¥Z°µu´~Ñ%FÔ%F€Màð ˜ð ð	Gð 	Gð 	Gð 	Gð Ðå  ­¬Ñ5Ô5€OÝ  ­¬Ñ5Ô5€Oàð V˜?ð Vð		ð 		ð 		ð 		ð ÐØ	ð I ð IØð 	ð	ð 	ð 	ð 	ð Ðð@ð @ð @ð @ð ÐØð 1 ð 1Øð 	ð	ð 	ð 	ð 	ð Ðð@ð @ð @ð @ð Ðð ð 	ðCð Cð Cð Cð ÐØð 	ðDð Dð Dð Dð Ðð;ð ;ð ;ð ;ð ÐrF   Úclipc                 ó   — dd„}|S )Nc                 ó0   — t          j        | |||¦  «        S rW  )r<  r$  r  s       rD   rí   zarray_clip.<locals>.impl  s   € ÝŒw�q˜% ¨Ñ,Ô,Ð,rF   ©NNNr¡   )rV  rñ  rò  r  rí   s        rD   Ú
array_clipr(    s   € ð-ð -ð -ð -à€KrF   c           	      ó„  ‡‡‡‡— |j         |j         k    sJ ‚|j        |j        k    sJ ‚t          |j        ¦  «        }t          d¦  «        Št          d¦  «        Št          d¦  «        Št          j        Šˆˆˆˆfd„}|                      t          j        t          | |¦  «        ¦  «        }|                      t          j        t          | |¦  «        ¦  «        }|                      t          j        |j         ¦  «        }	t          j	        || 
                    d¦  «        dd¦  «        }
t          j	        || 
                    d¦  «        dd¦  «        }t          j        t          j        dd¬	¦  «        }|                      |¦  «        }t          j        ||                      t          j        |j         ¦  «        g¦  «        }|                      |                      t          j        ¦  «        ¦  «        }|                      t          j        |¦  «        }t          j        ||g¦  «        } || |¦  «        }t!          ||
|||d
¬¦  «          || |¦  «        }t!          |||||d
¬¦  «         |                     ¦   «         }|                     ¦   «         }|	|||||                      t          j        |¦  «        g}t%          t          j        t          j        ||t          j        t          j        t          j        ¦  «        }|                      ||||¦  «        }t+          ||¦  «         t-          | ||j        |¦  «        }|S )a  
    Attempt to fix up *ary* for switching from *oldty* to *newty*.

    See Numpy's array_descr_set()
    (np/core/src/multiarray/getset.c).
    Attempt to fix the array's shape and strides for a new dtype.
    False is returned on failure, True on success.
    r²  rª   ÚFc                 ód  •— |‰	k    r/|d         |k    r ‰‰
¦  «        }n|d         |k    r ‰‰¦  «        }||k    r|‰	k    s| dk    rdS |‰
k    r| dz
  }nd}||k     r&||z  dk    rdS ||z  }||xx         |z  cc<   |||<   n+||k    r$||         |z  }||z  dk    rdS ||z  ||<   |||<   n	 dS )Nrr  r   FrH   Tr¡   )r§  rm   r°   Úold_itemsizeÚnew_itemsizerS  rn   ÚnewdimÚ
bytelengthÚ
any_layoutÚc_layoutÚf_layoutÚint8s            €€€€rD   rà  z_change_dtype.<locals>.imp  s'  ø€ ð �ZÒÐà�rŒ{˜lÒ*Ð*à˜˜h™œ��à˜”˜|Ò+Ð+à˜˜h™œ�à˜<Ò'Ð'¨V°zÒ-AÐ-AÀRÈ1ÂWÀWØ�5à�XÒÐØ�Q‘ˆAˆAàˆAà˜,Ò&Ð&ð ˜|Ñ+°Ò1Ð1Ø�uà! \Ñ1ˆFØ�ˆGˆGŒG�vÑˆGˆG‰GØ%ˆG�A‰JˆJà˜LÒ(Ð(ð ˜aœ <Ñ/ˆJØ˜\Ñ)¨aÒ/Ð/Ø�uà  LÑ0ˆD�‰GØ%ˆG�A‰JˆJð
 àˆtrF   rf   r   r°   rH   rN  NrR  )rq   rS  Úordr   r3  rÃ   r�   r€   r
   ri   rh   r™   ry   rk   r}   r{   rÙ   r	  r$   ÚbooleanrI  rÜ   r    r  )r~   r>   ÚoldtyÚnewtyr  Ú
new_layoutrà  r,  r-  r§  Ú
shape_dataÚstrides_dataÚshape_strides_array_typeÚaryclsÚshape_constantÚsizeof_intpÚstrides_constantrµ  Ústrides_aryrf   r°   r  r\   r  r0  r1  r2  r3  s                           @@@@rD   Ú_change_dtyperA  	  s@  øøøø€ ð Œ:˜œÒ#Ð#Ð#Ð#ØŒ<˜5œ<Ò'Ð'Ð'Ð'å�U”\Ñ"Ô"€JÝ�S‘”€JÝ�3‰xŒx€HÝ�3‰xŒx€HåŒ:€Dð.ð .ð .ð .ð .ð .ð .ð .ð` ×'Ò'­¬
Ý(4°W¸eÑ(DÔ(DñFô F€Là×'Ò'­¬
Ý(4°W¸eÑ(DÔ(DñFô F€Lð 
×	Ò	�eœj¨%¬*Ñ	5Ô	5€BÝÔ% g¨s×/CÒ/CÀGÑ/LÔ/LØ&'¨ñ,ô ,€JåÔ'¨Ø(+×(<Ò(<¸YÑ(GÔ(GÈÈAñOô O€Lõ  %œ{µ´À!ÈCÐPÑPÔPÐØ×ÒÐ 8Ñ9Ô9€FåÔ'¨Ø)0×)=Ò)=½e¼jØ>C¼jñ*Jô *Jð )KñLô L€Nð ×(Ò(¨×)>Ò)>½u¼zÑ)JÔ)JÑKÔK€KØ×&Ò&¥u¤z°;Ñ?Ô?€KÝÔ)¨'°K°=ÑAÔAÐà��w Ñ(Ô(€Iå�9Ø"Ø'Ø+Ø'Øð!ñ !ô !ð !ð �&˜ 'Ñ*Ô*€KÝ�;Ø$Ø'Ø+Ø'Øð!ñ !ô !ð !ð ×ÒÑ!Ô!€EØ×#Ò#Ñ%Ô%€GØ��w ¨lØ× Ò ¥¤¨ZÑ8Ô8ð:€Dõ •E”MÝ”JØ,Ø,Ý”JÝ”JÝ”Jñô €Cð ×
"Ò
" 7¨C°°dÑ
;Ô
;€CÝ�e˜SÑ!Ô!Ð!Ý
˜G W¨c¬o¸sÑ
CÔ
C€CØ€JrF   c                 óR   — t          | ¦  «        st          j        d¦  «        ‚d„ }|S )Nz+The argument to np.shape must be array-likec                 ó4   — t          j        | ¦  «        j        S rW  )r<  rÒ  rf   rä  s    rD   rí   znp_shape.<locals>.implŒ  s   € ÝŒz˜!‰}Œ}Ô"Ð"rF   ©r   r	   rî   ©rV  rí   s     rD   Únp_shaperF  ‡  s9   € å˜AÑÔð PÝÔ Ð!NÑOÔOÐOð#ð #ð #à€KrF   c                 óR   — t          | ¦  «        st          j        d¦  «        ‚d„ }|S )Nz*The argument to np.size must be array-likec                 ó4   — t          j        | ¦  «        j        S rW  )r<  rÒ  r”   rä  s    rD   rí   znp_size.<locals>.impl–  s   € ÝŒz˜!‰}Œ}Ô!Ð!rF   rD  rE  s     rD   Únp_sizerI  ‘  s9   € å˜AÑÔð OÝÔ Ð!MÑNÔNÐNð"ð "ð "à€KrF   c                 ó   — d„ }|S )Nc                 óü   ‡‡— d„ Št          j        |                      ¦   «         ¦  «        Št          ‰d d…         ¦  «        }ˆˆfd„t	          ‰dd …         ¦  «        D ¦   «         }t          j        ||z   ¦  «        S )Nc                 ó   — | | k     S rW  r¡   )r¥  s    rD   Úisnanz0np_unique.<locals>.np_unique_impl.<locals>.isnan   s   € à˜Qš�<ÐrF   rH   c                 ój   •— g | ]/\  }}‰|         |k    ¯ ‰‰|         ¦  «        r ‰|¦  «        °-|‘Œ0S r¡   r¡   )r¢   rn   r¥  rû  rM  s      €€rD   r£   z5np_unique.<locals>.np_unique_impl.<locals>.<listcomp>¥  sN   ø€ ð 
ð 
ð 
Ù�!�QØ�Œt�qŠyˆy % %¨¨!¬¡+¤+ˆy°%°%¸±(´(ˆyð ØˆyˆyrF   )r<  ÚsortrÆ  rÀ   rø   rË   )ÚarÚheadÚtailrû  rM  s      @@rD   Únp_unique_implz!np_unique.<locals>.np_unique_implŸ  s’   øø€ ð	 ð 	 ð 	 õ ŒG�B—H’H‘J”JÑÔˆÝ�A�b�q�b”E‰{Œ{ˆð
ð 
ð 
ð 
ð 
Ý# A a b b¤EÑ*Ô*ð
ñ 
ô 
ˆõ Œx˜˜t™Ñ$Ô$Ð$rF   r¡   )rP  rS  s     rD   Ú	np_uniquerT  �  s   € ð
%ð 
%ð 
%ð ÐrF   c                 ó’  — d„ }t          | t          j        t          j        t          j        t          j        t          j        f¦  «        r|t          |t          j        ¦  «        rt          S t          |t          j        t          j        f¦  «        r!t          |j	        t          j        ¦  «        r|S t          j        d¦  «        ‚d S )Nc                 óN  — t          j        |t           j        ¬¦  «        }|j        d         dk    rt	          | |d         ¦  «        S t          j        |dk     ¦  «        rt          d¦  «        ‚t          j        | ¦  «        }|                     ¦   «         }|j        d         }|j        |j        k    rt          d¦  «        ‚t          j        t          j	        |¦  «        |j
        ¬¦  «        }d}t          |¦  «        D ]#}||         |||||         z   …<   |||         z  }Œ$|S )N©r|   r   rH   râ  z(operands could not be broadcast together)r<  rÒ  r  rf   Únp_repeat_impl_repeats_scalerr[  r¼   rÆ  Úemptyr  r|   r9   )	rV  rÎ  Úrepeats_arrayÚasaÚaravelÚnÚ	to_returnÚposrn   s	            rD   Ú!np_repeat_impl_repeats_array_likez4np_repeat.<locals>.np_repeat_impl_repeats_array_like²  s  € åœ
 7µ"´(Ð;Ñ;Ô;ˆàÔ˜qÔ! QÒ&Ð&Ý0°°MÀ!Ô4DÑEÔEÐEÝŒ6�- !Ò#Ñ$Ô$ð 	DÝÐBÑCÔCÐCÝŒj˜‰mŒmˆØ—’‘”ˆØŒL˜ŒOˆØŒ<˜=Ô.Ò.Ð.ÝØ:ñ<ô <ð <å”H�RœV MÑ2Ô2¸#¼)ÐDÑDÔDˆ	ØˆÝ�q‘”ð 	$ð 	$ˆAØ6<¸Q´iˆI�c˜C -°Ô"2Ñ2Ð2Ñ3Ø�= Ô#Ñ#ˆCˆCØÐrF   zIThe repeats argument must be an integer or an array-like of integer dtype)r˜   r   r™   ÚListra  r÷  r  rš   rX  r|   r	   rî   )rV  rÎ  r`  s      rD   Ú	np_repeatrb  ­  s»   € ð
ð ð õ, �!•e”kÝ”jÝ”oÝ”lÝ”mð	ñ ô ð 1õ �g�uœ}Ñ-Ô-ð 	9Ý0Ð0Ý˜¥%¤+­u¬zÐ!:Ñ;Ô;ð 	9Ý˜'œ-­¬Ñ7Ô7ð 9Ø8Ð8åÔ ð0ñ1ô 1ð 	1ð1ð 1rF   c                 óœ  — |dk     rt          d¦  «        ‚t          j        | ¦  «        }|                     ¦   «         }|j        d         }|dk    rt          j        d|j        ¬¦  «        S |dk    rt          j        |¦  «        S t          j        ||z  |j        ¬¦  «        }t          |¦  «        D ]}||         |||z  |dz   |z  …<   Œ|S )Nr   râ  rW  rH   )	r¼   r<  rÒ  rÆ  rf   rY  r|   r´  r9   )rV  rÎ  r[  r\  r]  r^  rn   s          rD   rX  rX  Ú  sÐ   € à�‚{€{ÝÐ>Ñ?Ô?Ð?Ý
Œ*�Q‰-Œ-€CØ�YŠY‰[Œ[€FØŒ�QŒ€AØ�!‚|€|ÝŒx˜ ¤Ð+Ñ+Ô+Ð+Ø	�AŠˆÝŒw�v‰ŒÐå”H˜Q ™[°´	Ð:Ñ:Ô:ˆ	Ý�q‘”ð 	Cð 	CˆAØ9?À¼ˆI�a˜'‘k Q¨¡U¨gÑ$5Ð5Ñ6Ð6ØÐrF   Úrepeatc                 ó   — d„ }|S )Nc                 ó,   — t          j        | |¦  «        S rW  )r<  rd  )rV  rÎ  s     rD   Úarray_repeat_implz'array_repeat.<locals>.array_repeat_implî  s   € ÝŒy˜˜GÑ$Ô$Ð$rF   r¡   )rV  rÎ  rg  s      rD   Úarray_repeatrh  ì  s   € ð%ð %ð %ð ÐrF   c                 ó8   — t          j        |¦  «        }d„ }||fS )z"Computes the itemsize of the dtypec                 ó¼   — |                       |j        d         j        ¦  «        }|                       |j        ¦  «        } ||                      |¦  «        ¦  «        S rë   )r{   r  r|   r  r}   )Úcgctxr>   r\   Úllargsr   Úllintps         rD   r¾  z%_intrin_get_itemsize.<locals>.codegenù  sQ   € Ø×"Ò" 3¤8¨A¤;Ô#4Ñ5Ô5ˆØ×$Ò$ S¤_Ñ5Ô5ˆØˆv�e×*Ò*¨4Ñ0Ô0Ñ1Ô1Ð1rF   rÈ  )Útyctxr|   r\   r¾  s       rD   Ú_intrin_get_itemsizero  ô  s.   € õ Œ*�UÑ
Ô
€Cð2ð 2ð 2ð �ˆ<ÐrF   c                 ó   — d S rW  r¡   )rV  r|   s     rD   Ú_compatible_viewrq     ó   € Ø€DrF   c                 ó   — d„ }|S )zDDetermines if the array and dtype are compatible for forming a view.c                 óà  — t          |¦  «        }|| j        k    rÑ| j        dk    rd}t          |¦  «        ‚	 | j        dz
  }| j        |         dk    }| j        dk    }| j        |         | j        k    }|r|r|rd}t          |¦  «        ‚|| j        k     r'|dk    s| j        |z  dk    rd}	t          |	¦  «        ‚d S | j        |         | j        z  }
|
|z  dk    rd}t          |¦  «        ‚d S d S )Nr   zOChanging the dtype of a 0d array is only supported if the itemsize is unchangedrH   zJTo change to a dtype of a different size, the last axis must be contiguouszZWhen changing to a smaller dtype, its size must be a divisor of the size of original dtypezuWhen changing to a larger dtype, its size must be a divisor of the total size in bytes of the last axis of the array.)ro  r±   rq   r¼   rf   r”   r°   )rV  r|   Ú
dtype_sizeÚmsg1râ   Úp1Úp2Úp3rÍ  Úmsg3r.  Úmsg4s               rD   rí   z ol_compatible_view.<locals>.impl
  s8  € Ý)¨%Ñ0Ô0ˆ
Ø˜œÒ#Ð#àŒv˜Š{ˆ{ð7�å  Ñ&Ô&Ð&ð ð ”6˜A‘:ˆDØ”˜” !Ò#ˆBØ”˜1’ˆBØ”˜4” A¤JÒ.ˆBØð '�rð '˜bð 'ð2�å  Ñ&Ô&Ð&à˜AœJÒ&Ð&Ø ’?�? a¤j°:Ñ&=ÀÒ&BÐ&BðI�Då$ TÑ*Ô*Ð*ð 'CÐ&Bð
 œ œ¨¬Ñ3�Ø˜JÑ&¨!Ò+Ð+ð1�Dõ % TÑ*Ô*Ð*ðA $Ð#ð8 ,Ð+rF   r¡   ©rV  r|   rí   s      rD   Úol_compatible_viewr}    s   € ð"+ð "+ð "+ðF €KrF   z
array.viewc                 óÜ  — |j         d         }|j        } t          |¦  «        | ||d         ¦  «        } t          |¦  «        | |¦  «        }t          |j        j        ¦  «        }t          |¦  «        D ]Q}	t          ||	¦  «        }
|	dk    r(|j        j	        }| 
                    |
|¦  «        |_        Œ@t          ||	|
¦  «         ŒRt          dk    rb| j        }|                     t          ¦  «        }|                     |g |j         ¢R i ¦  «        }|                      ||¦  «        } |||¦  «         t%          | ||||¦  «        }|                     d|t)          |j	        d¦  «        ¦  «        }|                     |¦  «        5  d}| j                             |t0          |f¦  «         d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         }t5          | ||j        |¦  «        S )Nr   r›   )rH   é   r$  z"new type not compatible with array)r  r  ry   r¹   r·   rº   Úsortedr  r›   r:   r‰  rÊ   r   r  r  rq  r  rR   rA  r'  r   r$  rp  rq  r¼   r	  r    )r~   r>   r\   r  rÛ   rN  r  rÀ  Úfieldsr×   rŠ   r‚  rn  r  Ú_compatible_view_sigrí   r°  r·  rÑ   r  s                       rD   Ú
array_viewrƒ  0  s&  € àŒH�QŒK€EØŒO€Eà
�*�UÑ
Ô
˜G W¨d°1¬gÑ
6Ô
6€CØ
�*�UÑ
Ô
˜G WÑ
-Ô
-€Cå�”Ô'Ñ(Ô(€FÝ�F‰^Œ^ð !ð !ˆÝ�c˜1‰oŒoˆØ�Š;ˆ;Ø”H”MˆEØ—’ s¨EÑ2Ô2ˆCŒHˆHå�C˜˜CÑ Ô Ð Ð å˜ÒÐð Ô&ˆØ×'Ò'Õ(8Ñ9Ô9ˆØ#×1Ò1°%¸¸3¼8¸¸ÀrÑJÔJÐØ×#Ò# DÐ*>Ñ?Ô?ˆØˆˆW�dÑÔÐå	�w ¨°°sÑ	;Ô	;€BØ× Ò   r­8°B´G¸QÑ+?Ô+?Ñ@Ô@€Dà	�Š˜Ñ	Ô	ð Gð GØ2ˆØÔ×)Ò)¨'µ:À¸vÑFÔFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gð �-Š-‰/Œ/€CÝ˜W g¨s¬ÀÑDÔDÐDs   Æ%F8Æ8F<Æ?F<r|   c                 óN   — |                       ¦   «         }t          | |||¦  «        S rW  )rv  r"   ©r~   r>   rÚ  r   r  s        rD   Úarray_dtyper†  [  s'   € à
×
!Ò
!Ñ
#Ô
#€CÝ˜g w°°SÑ9Ô9Ð9rF   rf   c                 ól   — t          |¦  «        } || ||¦  «        }|j        }t          | |||¦  «        S rW  )ry   rf   r"   ©r~   r>   rÚ  r   r†   rË   r  s          rD   Úarray_shaper‰  a  s=   € õ ˜‰oŒo€GØˆG�G˜W eÑ,Ô,€EØ
Œ+€CÝ˜g w°°SÑ9Ô9Ð9rF   r°   c                 ól   — t          |¦  «        } || ||¦  «        }|j        }t          | |||¦  «        S rW  )ry   r°   r"   rˆ  s          rD   Úarray_stridesr‹  j  s=   € õ ˜‰oŒo€GØˆG�G˜W eÑ,Ô,€EØ
Œ-€CÝ˜g w°°SÑ9Ô9Ð9rF   rq   c                 óp   — |                       t          j        |j        ¦  «        }t	          | |||¦  «        S rW  )rÃ   r   r�   rq   r"   r…  s        rD   Ú
array_ndimr�  s  s1   € ð ×
Ò
�uœz¨3¬8Ñ
4Ô
4€CÝ˜g w°°SÑ9Ô9Ð9rF   r”   c                 ól   — t          |¦  «        } || ||¦  «        }|j        }t          | |||¦  «        S rW  )ry   r¶   r"   rˆ  s          rD   Ú
array_sizer�  z  s;   € å˜‰oŒo€GØˆG�G˜W eÑ,Ô,€EØ
Œ,€CÝ˜g w°°SÑ9Ô9Ð9rF   r±   c                 ól   — t          |¦  «        } || ||¦  «        }|j        }t          | |||¦  «        S rW  )ry   r±   r"   rˆ  s          rD   Úarray_itemsizer‘  ‚  s=   € õ ˜‰oŒo€GØˆG�G˜W eÑ,Ô,€EØ
Œ.€CÝ˜g w°°SÑ9Ô9Ð9rF   Únbytesc                 óž   — t          |¦  «        } || ||¦  «        }|                     |j        |j        ¦  «        }t	          | |||¦  «        S )z"
    nbytes = size * itemsize
    )ry   rÆ   r¶   r±   r"   rˆ  s          rD   Úarray_nbytesr”  ‹  sM   € õ ˜‰oŒo€GØˆG�G˜W eÑ,Ô,€EØ
�+Š+�e”l E¤NÑ
3Ô
3€CÝ˜g w°°SÑ9Ô9Ð9rF   Ú
contiguousc                 óp   — |                       t          j        |j        ¦  «        }t	          | |||¦  «        S rW  )rÃ   r   r5  Ú	is_contigr"   r…  s        rD   Úarray_contiguousr˜  —  s/   € à
×
Ò
�uœ}¨c¬mÑ
<Ô
<€CÝ˜g w°°SÑ9Ô9Ð9rF   Úc_contiguousc                 óp   — |                       t          j        |j        ¦  «        }t	          | |||¦  «        S rW  )rÃ   r   r5  Úis_c_contigr"   r…  s        rD   Úarray_c_contiguousrœ  �  ó/   € à
×
Ò
�uœ}¨c¬oÑ
>Ô
>€CÝ˜g w°°SÑ9Ô9Ð9rF   Úf_contiguousc                 óp   — |                       t          j        |j        ¦  «        }t	          | |||¦  «        S rW  )rÃ   r   r5  Úis_f_contigr"   r…  s        rD   Úarray_f_contiguousr¡  £  r�  rF   rº  c                 ór   — |                       t          j        |j         ¦  «        }t	          | |||¦  «        S rW  )rÃ   r   r5  Úmutabler"   r…  s        rD   Úarray_readonlyr¤  ©  s1   € à
×
Ò
�uœ}°#´+¨oÑ
>Ô
>€CÝ˜g w°°SÑ9Ô9Ð9rF   Úctypesc                 ó
  — t          |¦  «        } || ||¦  «        }t          j        |¦  «        }|                      ||¦  «        }|j        |_        |j        |_        |                     ¦   «         }t          | |||¦  «        S rW  )ry   r   ÚArrayCTypesr  r›   r¯   r	  r    )	r~   r>   rÚ  r   r†   rË   ÚactÚctinfor  s	            rD   Úarray_ctypesrª  ±  s|   € å˜‰oŒo€GØˆG�G˜W eÑ,Ô,€Eå
Ô
˜CÑ
 Ô
 €CØ× Ò  ¨#Ñ.Ô.€FØ”*€F„KØ”]€F„NØ
×
Ò
Ñ
Ô
€CÝ˜W g¨s°CÑ8Ô8Ð8rF   r›   c                 óÊ   — |                       |||¬¦  «        }|j        }|                     ||                      t          j        ¦  «        ¦  «        }t          | |||¦  «        S ©Nr  )r  r›   rf  r½   r   r�   r"   )r~   r>   rÚ  r   r©  r  s         rD   Úarray_ctypes_datar­  ¾  s\   € à× Ò  ¨#°UÐ Ñ;Ô;€FØ
Œ+€Cà
×
Ò
˜3 × 6Ò 6µu´zÑ BÔ BÑ
CÔ
C€CÝ˜g w°°SÑ9Ô9Ð9rF   c                 ó¶   — |                       |||¬¦  «        }|j        }|                     ||                      |¦  «        ¦  «        }t	          | |||¦  «        S r¬  )r  r›   r‰  r½   r"   )r~   r>   ÚfromtyÚtotyrŠ   r©  r  s          rD   Úarray_ctypes_to_pointerr±  Ç  sZ   € ð × Ò  ¨&¸Ð Ñ<Ô<€FØ
Œ+€CØ
�/Š/˜#˜w×5Ò5°dÑ;Ô;Ñ
<Ô
<€CÝ˜g w°°cÑ:Ô:Ð:rF   c                 ó´  —  t          |¦  «        |||¬¦  «        }t          j        t          j        |j        ¦  «        }|                     |                     |j        ¦  «        ¦  «        }t          t          j	        ||t          j        ¦  «        }|j
        |j        |                     t          j        |¦  «        g}|                     || ||¦  «        }	|	S )a)  Helper to invoke the contiguous checker function on an array

    Args
    ----
    checker :
        ``numba.numpy_supports.is_contiguous``, or
        ``numba.numpy_supports.is_fortran``.
    context : target context
    builder : llvm ir builder
    aryty : numba type
    ary : llvm value
    r  )ry   r   rA  r�   rq   r}   r½   r|   r$   Úbool_rf   r°   rÃ   rI  )
Úcheckerr~   r>   rÛ   r  Útup_intpr±   Ú	check_sigÚ
check_argsr—  s
             rD   Ú_call_contiguous_checkr¸  Ð  sº   € ð �*�UÑ
Ô
˜G W°CÐ
8Ñ
8Ô
8€CÝŒ~�eœj¨%¬*Ñ5Ô5€HØ×%Ò% g×&<Ò&<¸U¼[Ñ&IÔ&IÑJÔJ€HÝ�%œ+ x°½5¼:ÑFÔF€IØ”)˜Sœ[Ø×&Ò&¥u¤z°8Ñ<Ô<ð>€Jà×(Ò(¨°'¸9Ø)3ñ5ô 5€IàÐrF   rµ   c                 óä   — |                       |t          j        |¦  «        ¦  «        }||_        |                     ¦   «         }| j                             |||¦  «         t          | |||¦  «        S rW  )r  r   Ú
ArrayFlagsr²   r	  r  r  r!   )r~   r>   rÚ  r   Úflagsobjr  s         rD   Úarray_flagsr¼  ê  sh   € à×"Ò" 7­EÔ,<¸SÑ,AÔ,AÑBÔB€HØ€H„OØ
×
Ò
Ñ
Ô
€CØ„K×Ò�w  UÑ+Ô+Ð+Ý˜G W¨c°3Ñ7Ô7Ð7rF   c                 ó  — |j         j        dk    r;|                      |||¬¦  «        }t          t          | ||j         |j        ¦  «        }n0|j         j        dk    }|                      t          j        |¦  «        }t          | |||¦  «        S )Nrª   r  )
rc   rS  r  r¸  r   r²   rÃ   r   r5  r"   )r~   r>   rÚ  r   r»  r  rŠ   s          rD   Úarray_flags_c_contiguousr¾  ó  sŒ   € ð „~Ô Ò#Ð#à×&Ò& w°¸5Ð&ÑAÔAˆÝ$¥]°G¸WØ%(¤^°X´_ñFô Fˆˆð ŒnÔ# sÒ*ˆØ×"Ò"¥5¤=°#Ñ6Ô6ˆÝ˜g w°°SÑ9Ô9Ð9rF   c                 óH  — |j         j        dk    r;|                      |||¬¦  «        }t          t          | ||j         |j        ¦  «        }nF|j         j        }|j         j        dk    r|dk    n|dv }|                      t          j	        |¦  «        }t          | |||¦  «        S )Nr*  r  rH   r_  )rc   rS  r  r¸  r   r²   rq   rÃ   r   r5  r"   )r~   r>   rÚ  r   r»  r  rS  rŠ   s           rD   Úarray_flags_f_contiguousrÀ    s¥   € à
„~Ô Ò#Ð#à×&Ò& w°¸5Ð&ÑAÔAˆÝ$¥Z°¸'Ø%(¤^°X´_ñFô Fˆˆð ”Ô&ˆØ"œ~Ô2°QÒ6Ð6ˆf˜Šmˆm¸FÀd¸NˆØ×"Ò"¥5¤=°#Ñ6Ô6ˆÝ˜g w°°SÑ9Ô9Ð9rF   r„  c                 óò   — |j         t          j        v rt          | |||d¬¦  «        S |j         t          j        v rt          | |||¦  «        S t          d                     t          j         ¦  «        ¦  «        ‚)Nr„  ©Úattrzunsupported .real for {})	r|   r   Úcomplex_domainÚarray_complex_attrÚnumber_domainr    rS   rÈ   r:   )r~   r>   rÚ  r   s       rD   Úarray_real_partrÇ    sn   € à
„y•EÔ(Ð(Ð(Ý! '¨7°C¸ÀVÐLÑLÔLÐLØ	Œ•eÔ)Ð	)Ð	)å  ¨'°3¸Ñ>Ô>Ð>å!Ð"<×"CÒ"CÅDÄJÑ"OÔ"OÑPÔPÐPrF   r†  c                 ó,  — |j         t          j        v rt          | |||d¬¦  «        S |j         t          j        v r¯t          |                     d¬¦  «        |¦  «        }t          | |||g¦  «        \  }}t          | |||¦  «        }t          j
        ||j        |                     |j        |j        ¦  «        d¦  «         t          | ||j        |                     ¦   «         ¦  «        S t%          d                     t(          j         ¦  «        ¦  «        ‚)Nr†  rÂ  TrÃ  r   zunsupported .imag for {})r|   r   rÄ  rÅ  rÆ  r$   r´  Ú_parse_empty_like_argsrQ  r
   Úmemsetr›   rÆ   r±   r¶   r!   r  r	  rS   rÈ   r:   )r~   r>   rÚ  r   r\   rµ  r  r  s           rD   Úarray_imag_partrË    s  € à
„y•EÔ(Ð(Ð(Ý! '¨7°C¸ÀVÐLÑLÔLÐLØ	Œ•eÔ)Ð	)Ð	)å˜Ÿš¨$˜Ñ/Ô/°Ñ5Ô5ˆÝ0°¸'À3ÈÈÑPÔP‰ˆ�Ý˜W g¨w¸Ñ?Ô?ˆÝŒ�w ¤¨'¯+ª+°c´lØ69´jñ+Bô +BØCDñ	Fô 	Fð 	Få ¨°#´/Ø #§¢¡¤ñ1ô 1ð 	1õ "Ð"<×"CÒ"CÅDÄJÑ"OÔ"OÑPÔPÐPrF   c                 ó2  — |dvs|j         t          j        vr"t          d                     |¦  «        ¦  «        ‚t          |¦  «        } || ||¦  «        }|j         j        }|                      |                      |¦  «        ¦  «        }|j	         
                    |¦  «        }	|                      |¦  «                             ¦   «         }
|                     |j        |
¦  «        }|dk    r2|                     | t!          j        d¦  «        d¦  «        g¦  «        }|                     |d¬¦  «        } t          |¦  «        | |¦  «        }t'          ||	¬¦  «        }t)          j        |||¦  «         t-          | |||                     ¦   «         ¦  «        S )	a¼  
    Given a complex array, it's memory layout is:

        R C R C R C
        ^   ^   ^

    (`R` indicates a float for the real part;
     `C` indicates a float for the imaginary part;
     the `^` indicates the start of each element)

    To get the real part, we can simply change the dtype and itemsize to that
    of the underlying float type.  The new layout is:

        R x R x R x
        ^   ^   ^

    (`x` indicates unused)

    A load operation will use the dtype to determine the number of bytes to
    load.

    To get the imaginary part, we shift the pointer by 1 float offset and
    change the dtype and itemsize.  The new layout is:

        x C x C x C
          ^   ^   ^
    )r„  r†  zcannot get attribute `{}`r†  é    rH   r²  ©r|   rS  )r›   r±   )r|   r   rÄ  rS   rÈ   ry   Úunderlying_floatr}   r{   r±   r:   r½   rX  r‰  r›   rT  r   ÚIntTyper´  rÂ   r
   Úcopy_structr    r	  )r~   r>   rÚ  r   rÃ  r†   rË   ÚfltyÚsizeof_fltyr±   Ú
llfltptrtyr  Úresulttyr)  Úrepls                  rD   rÅ  rÅ  .  s|  € ð8 Ð#Ð#Ð# s¤y½Ô8LÐ'LÐ'LÝ!Ð"=×"DÒ"DÀTÑ"JÔ"JÑKÔKÐKå˜‰oŒo€GØˆG�G˜W eÑ,Ô,€Eð Œ9Ô%€DØ×(Ò(¨×)>Ò)>¸tÑ)DÔ)DÑEÔE€KØŒ~×"Ò" ;Ñ/Ô/€Hð ×'Ò'¨Ñ-Ô-×8Ò8Ñ:Ô:€JØ�oŠo˜eœj¨*Ñ5Ô5€Gð ˆv‚~€~Ø—+’+˜g¨­¬
°2©¬°qÑ(9Ô(9Ð':Ñ;Ô;ˆð �xŠx˜d¨3ˆxÑ/Ô/€HØ!�Z˜Ñ!Ô! '¨7Ñ3Ô3€FÝ�W xÐ0Ñ0Ô0€DÝÔ˜  tÑ,Ô,Ð,Ý˜W g¨x¸×9IÒ9IÑ9KÔ9KÑLÔLÐLrF   ÚconjÚ	conjugatec                 ó   — d„ }|S )Nc                 ó*   — t          j        | ¦  «        S rW  )r<  r×  ©ra  s    rD   rí   zarray_conj.<locals>.implh  s   € ÝŒw�s‰|Œ|ÐrF   r¡   ©ra  rí   s     rD   Ú
array_conjrÝ  e  s   € ðð ð à€KrF   c                 ó*   — |                       ¦   «         S rW  )rv  )r~   r>   ÚdtypetyÚdtypevals       rD   Ú
dtype_typerá  p  s   € à×"Ò"Ñ$Ô$Ð$rF   r:   ÚkindÚstatic_getitemc                 óÐ   — |j         }t          |t          j        ¦  «        r0 |                      |¦  «        d¦  «        }t          | |||¦  «        S d}t          j        |¦  «        ‚)zåThis handles the "static_getitem" when a Numba type is subscripted e.g:
    var = typed.List.empty_list(float64[::1, :])
    It only allows this on simple numerical types. Compound types, like
    records, are not supported.
    NzlUnreachable; the definition of __getitem__ on the numba.types.abstract.Type metaclass should prevent access.)r  r˜   r   r™   r½   r"   r	   ÚLoweringError)r~   r>   r\   r  rN  r  rÑ   s          rD   Ústatic_getitem_number_clazzræ  }  sk   € ð ŒO€EÝ�%�œÑ%Ô%ð 
(ð ,ˆg×$Ò$ UÑ+Ô+¨DÑ1Ô1ˆÝ! '¨7°E¸3Ñ?Ô?Ð?ðLˆåÔ" 3Ñ'Ô'Ð'rF   c           
      ó  ‡ — t          |¦  «        } |‰ ||¦  «        }|j        }t          |t          j        ¦  «        st          d|›d|›d�¦  «        ‚|                     |¦  «        }|                     |¦  «        }	t          |t          j        ¦  «        r+| 	                    |j        |j
        |j
        z   d¬¦  «        }
n| 	                    |d¬¦  «        }
t          |
¦  «        } |‰ |¦  «        }‰                      t          j        |	¦  «        }t          j        ||j        ||j        j        ¬¦  «        }t          |t          j        ¦  «        ršt          j        ||j        |j
        ¦  «        }|ˆ fd„|j        D ¦   «         z  }t          j        ||j        |j
        ¦  «        }|ˆ fd	„|j        D ¦   «         z  }‰                      ‰                      |j        ¦  «        ¦  «        }n6|j        }|j        }‰                      ‰                      |¦  «        ¦  «        }t-          ||||‰                      t          j        |¦  «        |j        |j        ¬
¦  «         |                     ¦   «         }t5          ‰ ||
|¦  «        S )zq
    Generic getattr() implementation for record arrays: fetch the given
    record member, i.e. a subarray.
    z
attribute z of z not definedr²  rN  rÎ  )r  c                 óP   •— g | ]"}‰                      t          j        |¦  «        ‘Œ#S r¡   ©rÃ   r   r�   ©r¢   rn   r~   s     €rD   r£   z(array_record_getattr.<locals>.<listcomp>·  s+   ø€ ÐKÐKÐK¸!�'×&Ò&¥u¤z°1Ñ5Ô5ÐKÐKÐKrF   c                 óP   •— g | ]"}‰                      t          j        |¦  «        ‘Œ#S r¡   ré  rê  s     €rD   r£   z(array_record_getattr.<locals>.<listcomp>º  s+   ø€ ÐOÐOÐO¸A�G×(Ò(­¬°QÑ7Ô7ÐOÐOÐOrF   rL  )ry   r|   r˜   r   ÚRecordrS   Útypeofr  ÚNestedArrayr´  rq   rÃ   r�   r
   r  r›   r:   rÄ   rf   r°   r}   r{   rÙ   r¯   r²   r	  r    )r~   r>   rÚ  r   rÃ  r†   rË   Úrectyper|   r  ÚrestyÚrarytyÚraryÚconstoffsetÚ
newdataptrrf   r°   Údatasizer  s   `                  rD   Úarray_record_getattrrö  •  s‚  ø€ õ ˜‰oŒo€GØˆG�G˜W eÑ,Ô,€EàŒi€GÝ�g�uœ|Ñ,Ô,ð 1Ý!Ð!Ø%) T T¨3¨3¨3ð#0ñ 1ô 1ð 	1à�NŠN˜4Ñ Ô €EØ�^Š^˜DÑ!Ô!€Få�%�Ô*Ñ+Ô+ð 2Ø—’Ø”+ C¤H¨u¬zÑ$9À#ð ñ Gô Gˆˆð —’˜u¨S�Ñ1Ô1ˆå˜ÑÔ€Fàˆ6�'˜7Ñ#Ô#€Dà×&Ò&¥u¤z°6Ñ:Ô:€KåÔ$Ø�”˜[°t´y´~ðñ ô €Jõ �%�Ô*Ñ+Ô+ð HåÔ$ W¨e¬k¸3¼8ÑDÔDˆØÐKÐKÐKÐK¸u¼{ÐKÑKÔKÑKˆåÔ& w°´¸s¼xÑHÔHˆØÐOÐOÐOÐOÀÄÐOÑOÔOÑOˆà×)Ò)¨'×*?Ò*?ÀÄÑ*LÔ*LÑMÔMˆˆð ”ˆØ”-ˆØ×)Ò)¨'×*?Ò*?ÀÑ*FÔ*FÑGÔGˆÝ�4Ø"ØØ"Ø#×0Ò0µ´¸XÑFÔFØ œ=Øœ,ð(ñ (ô (ð (ð �.Š.Ñ
Ô
€CÝ˜W g¨u°cÑ:Ô:Ð:rF   c                 ó’   — |d         }t          |t          ¦  «        st          ‚t          | ||j        d         |d         |¦  «        S rÏ  )r˜   r  rS   rö  r  )r~   r>   r\   r  r  s        rD   Úarray_record_getitemrø  Í  sC   € à�ŒG€EÝ�e�SÑ!Ô!ð "å!Ð!Ý ¨°#´(¸1´+¸tÀA¼wÈÑNÔNÐNrF   c           
      ód  ‡ — ‰                       ||¦  «         |                     |¦  «        }|                     |¦  «        }t          |t          j        ¦  «        r÷t          |¦  «        } |‰ |¦  «        }|j        }	ˆ fd„|j        D ¦   «         }
ˆ fd„|j	        D ¦   «         }t          j        |||‰                      |	¦  «        ¦  «        }t          ||t          j        ||
¦  «        t          j        ||¦  «        ‰                      t          j        |j        ¦  «        dd¬¦  «         |                     ¦   «         }t'          ‰ |||¦  «        S t          j        |||‰                      |¦  «        ¦  «        }|j        rdnd}‰                      ||||¦  «        }t'          ‰ |||¦  «        S )zT
    Generic getattr() implementation for records: get the given record member.
    c                 óP   •— g | ]"}‰                      t          j        |¦  «        ‘Œ#S r¡   ré  ©r¢   r«   r~   s     €rD   r£   z"record_getattr.<locals>.<listcomp>å  s7   ø€ ð "ð "ð "¸A�G×(Ò(­¬°QÑ7Ô7ð "ð "ð "rF   c                 óP   •— g | ]"}‰                      t          j        |¦  «        ‘Œ#S r¡   ré  rû  s     €rD   r£   z"record_getattr.<locals>.<listcomp>ç  s7   ø€ ð &ð &ð &¸a�g×*Ò*­5¬:°qÑ9Ô9ð &ð &ð &rF   NrL  rH   )Úsentry_record_alignmentr  rí  r˜   r   rî  ry   r|   rf   r°   r
   Úget_record_memberr{   rÙ   rk   rÃ   r�   r”   r	  r    r„   r…   )r~   r>   rÚ  r   rÃ  r  ÚelemtyrÛ   r  r|   r¢  r£  Únewdatar  Údptrrƒ   s   `               rD   Úrecord_getattrr  Ö  sÝ  ø€ ð
 ×#Ò# C¨Ñ.Ô.Ð.Ø�ZŠZ˜ÑÔ€FØ�ZŠZ˜ÑÔ€Få�&�%Ô+Ñ,Ô,ð =õ ˜6Ñ"Ô"ˆØˆe�G˜WÑ%Ô%ˆØ”ˆð"ð "ð "ð "Ø”Lð"ñ "ô "ˆð&ð &ð &ð &Ø”nð&ñ &ô &ˆ
åÔ+¨G°U¸FØ,3×,AÒ,AÀ%Ñ,HÔ,HñJô JˆåØØÝÔ$ W¨hÑ7Ô7ÝÔ& w°
Ñ;Ô;Ø×)Ò)­%¬*°f´kÑBÔBØØð	
ñ 	
ô 	
ð 	
ð �mŠm‰oŒoˆÝ  ¨'°3¸Ñ<Ô<Ð<åÔ(¨°%¸Ø)0×)>Ò)>¸vÑ)FÔ)FñHô HˆàœÐ*��¨ˆØ×"Ò" 7¨F°D¸%Ñ@Ô@ˆÝ  ¨'°3¸Ñ<Ô<Ð<rF   c           	      óº  — |j         \  }}|\  }}|                      ||¦  «         |                     |¦  «        }	|                     |¦  «        }
t	          |
t
          j        ¦  «        rŠ t          j        |¦  «        | ||d         ¬¦  «        }|j	        }t          j
        |||	|j        j        ¦  «        }t          j        ||||                      t
          j        |
j        ¦  «        ¦  «         dS t          j
        |||	|                      |
¦  «        ¦  «        }|                      ||||
¦  «        }|j        rdnd}|                      ||
|||¬¦  «         dS )zT
    Generic setattr() implementation for records: set the given record member.
    rH   r  Nr‚   )r  rý  r  rí  r˜   r   rî  r
   rx   r›   rþ  r:   ÚpointeeÚmemcpyrÃ   r�   r¶   r{   rŽ   r„   r‰   )r~   r>   r\   r  rÃ  rÚ  rd  r  rŠ   r  rÿ  Ú
val_structr�  r½  r  rƒ   s                   rD   Úrecord_setattrr  þ  su  € ð
 ”�J€CˆØ�K€FˆCà×#Ò# C¨Ñ.Ô.Ð.Ø�ZŠZ˜ÑÔ€FØ�ZŠZ˜ÑÔ€Få�&�%Ô+Ñ,Ô,ð Dà7•WÔ0°Ñ7Ô7¸ÀØ>BÀ1¼gðGñ Gô Gˆ
àŒoˆÝÔ(¨°&¸&Ø),¬Ô)9ñ;ô ;ˆåŒ�w  cØ×+Ò+­E¬J¸¼ÑFÔFñ	Hô 	Hð 	Hð 	Hð 	Hõ Ô(¨°&¸&Ø)0×)>Ò)>¸vÑ)FÔ)FñHô Hˆà�lŠl˜7 C¨°Ñ7Ô7ˆØœÐ*��¨ˆØ×Ò˜7 F¨C°¸UÐÑCÔCÐCÐCÐCrF   c                 óœ   — |                       |j        d         |d         ¦  «        } || ||j        d         |d         |d         ¦  «        S )ú3
    Record.__getitem__ redirects to getattr()
    r   rH   )Úget_getattrr  )r~   r>   r\   r  rí   s        rD   Úrecord_static_getitem_strr    sI   € ð
 ×Ò˜sœx¨œ{¨D°¬GÑ4Ô4€DØˆ4�˜ #¤(¨1¤+¨t°A¬w¸¸Q¼Ñ@Ô@Ð@rF   c                 ó4  — |j         d         j        }t          |j         d         j        ¦  «        }|                      |j        ||         ¦  «        }|                      |j         d         |¦  «        } || ||j         d         |d         ||         ¦  «        S )r	  rH   r   )r  rï   rÀ   r�  Úinsert_const_stringr;   r
  )r~   r>   r\   r  r“   r�  Úll_fieldrí   s           rD   Úrecord_static_getitem_intr  %  s„   € ð
 Œ(�1Œ+Ô
#€CÝ�#”(˜1”+Ô$Ñ%Ô%€FØ×*Ò*¨7¬>¸6À#¼;ÑGÔG€HØ×Ò˜sœx¨œ{¨HÑ5Ô5€DØˆ4�˜ #¤(¨1¤+¨t°A¬w¸¸s¼ÑDÔDÐDrF   Ústatic_setitemc                 ó    — |j         \  }}}|\  }}}	t          |j        ||¦  «        }
|                      ||
¦  «        }|€J ‚ ||||	f¦  «        S )ú3
    Record.__setitem__ redirects to setattr()
    )r  r$   r  Úget_setattr)r~   r>   r\   r  ÚrectyrÉ  rd  Úrecr“   rŠ   Úgetattr_sigrí   s               rD   Úrecord_static_setitem_strr  1  sf   € ð
 ”h�O€Eˆ1ˆeØ�M€CˆˆcÝ˜CœO¨U°EÑ:Ô:€KØ×Ò˜s KÑ0Ô0€DØÐÐÐØˆ4�˜#˜s˜Ñ$Ô$Ð$rF   c                 óê   — |j         \  }}}|\  }}}	t          |j        ||¦  «        }
t          |j         d         j        ¦  «        }|                      ||         |
¦  «        }|€J ‚ ||||	f¦  «        S )r  r   )r  r$   r  rÀ   r�  r  )r~   r>   r\   r  r  rÉ  rd  r  r“   rŠ   r  r�  rí   s                rD   Úrecord_static_setitem_intr  >  s€   € ð
 ”h�O€Eˆ1ˆeØ�M€CˆˆcÝ˜CœO¨U°EÑ:Ô:€KÝ�#”(˜1”+Ô$Ñ%Ô%€FØ×Ò˜v cœ{¨KÑ8Ô8€DØÐÐÐØˆ4�˜#˜s˜Ñ$Ô$Ð$rF   c                 ó0   — |                       |||¦  «        S )zB
    Create a constant array (mechanism is target-dependent).
    )Úmake_constant_array)r~   r>   rY  Úpyvals       rD   Úconstant_arrayr  P  s   € ð
 ×&Ò& w°°EÑ:Ô:Ð:rF   c                 óØ   — t          j        t          j        d¦  «        |j        ¦  «        } |t	          |                     ¦   «         ¦  «        ¦  «        }t          j        ||¦  «        S )zG
    Create a record constant as a stack-allocated array of bytes.
    é   )r   rW  rÐ  r’  Ú	bytearrayÚtobytesr
   r  )r~   r>   rY  r  ÚltyrŠ   s         rD   Úconstant_recordr#  X  sQ   € õ
 Œ,•r”z !‘}”} e¤lÑ
3Ô
3€CØ
ˆ#�i˜Ÿš™œÑ(Ô(Ñ
)Ô
)€CÝÔ$ W¨cÑ2Ô2Ð2rF   c                 óŠ   — t          j        t          |¦  «        t           j        ¬¦  «        }|                      |||¦  «        S )zM
    Create a constant array from bytes (mechanism is target-dependent).
    rW  )r<  rË   r   Úuint8r  )r~   r>   rY  r  Úbufs        rD   Úconstant_bytesr'  b  s:   € õ
 Œ(•9˜UÑ#Ô#­2¬8Ð
4Ñ
4Ô
4€CØ×&Ò& w°°CÑ8Ô8Ð8rF   c                 óp   — |j         \  }}||k    rt          j        S d„ }|                      ||||¦  «        S )Nc                 óv   — | j         |j         k    o)| j        |j        k    o| j        j        |j        j        k    S rW  )rf   r°   r¥  r›   ©rV  rû  s     rD   Úarray_is_implzarray_is.<locals>.array_is_implt  s9   € Ø”˜1œ7Ò"ð /Ø”	˜QœYÒ&ð/à”” ¤¤Ò.ð	0rF   )r  r
   r%  rI  )r~   r>   r\   r  ÚatyÚbtyr+  s          rD   Úarray_isr.  n  sJ   € àŒx�H€CˆØ
ˆc‚z€zÝÔ Ð ð0ð 0ð 0ð
 ×#Ò# G¨]¸CÀÑFÔFÐFrF   Ú__hash__c                 ó   — d„ S )Nc                 ó   — d S rW  r¡   rÛ  s    rD   ré  zol_array_hash.<locals>.<lambda>�  s   € �t€ rF   r¡   rÛ  s    rD   Úol_array_hashr2    s   € àÐÐrF   c                 ó"   — t          | d¦  «        S )zq
    Return the Structure representation of the given *flatiterty* (an
    instance of types.NumpyFlatType).
    Úflat©Ú_make_flattening_iter_cls)Ú
flatitertys    rD   Úmake_array_flat_clsr8  ‡  s   € õ
 % Z°Ñ8Ô8Ð8rF   c                 ó"   — t          | d¦  «        S )zv
    Return the Structure representation of the given *nditerty* (an
    instance of types.NumpyNdEnumerateType).
    Úndenumerater5  ©Únditertys    rD   Úmake_array_ndenumerate_clsr=  �  s   € õ
 % X¨}Ñ=Ô=Ð=rF   c                 óT  — |                       t          j        d¦  «        }|                     d¦  «        }	|� |                     t
          j        |¦  «         t          t          |¦  «        ¦  «        D ]ç}
t          j	        |||
¦  «        }t          j
        ||                     |¦  «        ¦  «        }||
         }|                     d||¦  «        }t          j        ||¦  «        5  |                     ||¦  «         |� ||
¦  «         |                     |	¦  «         d d d ¦  «         n# 1 swxY w Y   |                     ||¦  «         |� ||
¦  «         Œè|� |                     t
          j        |¦  «         |                     |	¦  «         |                     |	¦  «         d S )Nr   Úend_incrementr!  )rÃ   r   r�   r“  r(  r
   Ú
false_byter  r9   ri   r'  r?   r"  Ú	if_likelyr   Ú	true_byter¡  )r~   r>   rq   rf   r§   Úend_flagÚloop_continueÚ
loop_breakr  Úbbendr�  Úidxptrr“   rÅ   Ú	in_boundss                  rD   Ú_increment_indicesrI  —  sÏ  € à×Ò¥¤
¨AÑ.Ô.€Dà×&Ò& Ñ7Ô7€EàÐØ�Š•gÔ(¨(Ñ3Ô3Ð3å�˜d™œÑ$Ô$ð ð ˆÝÔ% g¨w¸Ñ<Ô<ˆÝÔ% g¨w¯|ª|¸FÑ/CÔ/CÑDÔDˆà�c”
ˆØ×'Ò'¨¨S°%Ñ8Ô8ˆ	ÝÔ˜w¨	Ñ2Ô2ð 	"ð 	"à�MŠM˜#˜vÑ&Ô&Ð&ØÐ(Ø�˜cÑ"Ô"Ð"Ø�NŠN˜5Ñ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	�Š�d˜FÑ#Ô#Ð#ØÐ!ØˆJ�s‰OŒOˆOøàÐØ�Š•gÔ'¨Ñ2Ô2Ð2Ø‡N‚N�5ÑÔÐà×Ò˜EÑ"Ô"Ð"Ð"Ð"s   Ã(9D-Ä-D1	Ä4D1	c                 óx   — t          j        ||j        |j        ¦  «        }t	          | ||j        |||¦  «         d S rW  )r
   rÄ   rf   rq   rI  )r~   r>   r`  ra  r§   rC  rf   s          rD   Ú_increment_indices_arrayrK  ¸  s:   € åÔ  ¨#¬)°U´ZÑ@Ô@€EÝ�w ¨¬°U¸GÀXÑNÔNÐNÐNÐNrF   c                 ó€  ‡ ‡‡‡‡‡‡‡	‡
‡— ‰ j         Š
‰ j        Št          ‰ j        ¦  «        Š	‰ j        r‰
ndŠ G d„ dt
          ¦  «        } G d„ d|¦  «        Š G ˆ fd„d|¦  «        Š G d„ d	|¦  «        Š G d
„ d|¦  «        Š G d„ d|¦  «        Š G ˆˆˆˆˆˆˆ	ˆ
ˆ ˆf
d„dt          j        ‰ ¦  «        ¦  «        }|S )zq
    Return the Structure representation of the given *nditerty* (an
    instance of types.NumpyNdIterType).
    rH   c                   óP   — e Zd ZdZd„ Zd„ Zej        d„ ¦   «         Zd„ Z	d„ Z
d„ ZdS )	ú$make_nditer_cls.<locals>.BaseSubIterzF
        Base class for sub-iterators of a nditer() instance.
        c                 óR   — || _         || _        || _        || _        ||z
  | _        d S rW  )ÚnditerÚmember_nameÚ	start_dimÚend_dimrq   )rZ   rP  rQ  rR  rS  s        rD   r‘  z-make_nditer_cls.<locals>.BaseSubIter.__init__Í  s/   € Ø ˆDŒKØ*ˆDÔØ&ˆDŒNØ"ˆDŒLØ )Ñ+ˆDŒIˆIˆIrF   c                 ó<   — t          | j        | j        |¦  «         d S rW  )rÊ   rP  rQ  )rZ   rl   s     rD   Úset_member_ptrz3make_nditer_cls.<locals>.BaseSubIter.set_member_ptrÔ  s   € Ý�D”K Ô!1°3Ñ7Ô7Ð7Ð7Ð7rF   c                 ó6   — t          | j        | j        ¦  «        S rW  )r  rP  rQ  r{  s    rD   Ú
member_ptrz/make_nditer_cls.<locals>.BaseSubIter.member_ptr×  s   € å˜4œ;¨Ô(8Ñ9Ô9Ð9rF   c                 ó   — d S rW  r¡   )rZ   r~   r>   s      rD   Úinit_specificz2make_nditer_cls.<locals>.BaseSubIter.init_specificÛ  ó   € ØˆDrF   c                 ó   — d S rW  r¡   ©rZ   r~   r>   Úlogical_dims       rD   rD  z2make_nditer_cls.<locals>.BaseSubIter.loop_continueÞ  rZ  rF   c                 ó   — d S rW  r¡   r\  s       rD   rE  z/make_nditer_cls.<locals>.BaseSubIter.loop_breaká  rZ  rF   N)rr   rs   rt   r‹  r‘  rU  r–  Úcached_propertyrW  rY  rD  rE  r¡   rF   rD   ÚBaseSubIterrN  È  sˆ   € € € € € ð	ð 	ð	,ð 	,ð 	,ð	8ð 	8ð 	8ð 
Ô	"ð	:ð 	:ñ 
#Ô	"ð	:ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð 	ð 	rF   r`  c                   ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )ú$make_nditer_cls.<locals>.FlatSubIterzŸ
        Sub-iterator walking a contiguous array in physical order, with
        support for broadcasting (the index is reset on the outer dimension).
        c                 ó–   — |                      t          j        d¦  «        }|                      t	          j        ||¦  «        ¦  «         d S rë   )rÃ   r   r�   rU  r
   r  )rZ   r~   r>   r  s       rD   rY  z2make_nditer_cls.<locals>.FlatSubIter.init_specificê  s@   € Ø×'Ò'­¬
°AÑ6Ô6ˆDØ×Ò¥Ô 9¸'À4Ñ HÔ HÑIÔIÐIÐIÐIrF   c                 ón   — |                      | j        ¦  «        }|                     |j        |g¦  «        S rW  )r?   rW  rT  r›   )rZ   r~   r>   r§   r`  ra  r  s          rD   Úcompute_pointerz4make_nditer_cls.<locals>.FlatSubIter.compute_pointerî  s-   € Ø—L’L ¤Ñ1Ô1ˆEØ—;’;˜sœx¨%¨Ñ1Ô1Ð1rF   c                 óº   — || j         dz
  k    rL|                     | j        ¦  «        }t          j        ||¦  «        }|                     || j        ¦  «         d S d S r­  )rq   r?   rW  r
   r'  r(  )rZ   r~   r>   r]  r  s        rD   rD  z2make_nditer_cls.<locals>.FlatSubIter.loop_continueò  s\   € Ø˜dœi¨!™mÒ+Ð+àŸš T¤_Ñ5Ô5�ÝÔ/°¸Ñ?Ô?�Ø—’˜e T¤_Ñ5Ô5Ð5Ð5Ð5ð	 ,Ð+rF   c                 ó@  — |dk    r=|                      t          j        d¦  «        }|                     || j        ¦  «         d S || j        dz
  k    rL|                     | j        ¦  «        }t          j        ||¦  «        }|                     || j        ¦  «         d S d S r  )	rÃ   r   r�   r(  rW  rq   r?   r
   r'  )rZ   r~   r>   r]  r  r  s         rD   rE  z/make_nditer_cls.<locals>.FlatSubIter.loop_breakù  sš   € Ø˜aÒÐà×+Ò+­E¬J¸Ñ:Ô:�Ø—’˜d D¤OÑ4Ô4Ð4Ð4Ð4Ø ¤	¨A¡Ò-Ð-àŸš T¤_Ñ5Ô5�ÝÔ/°¸Ñ?Ô?�Ø—’˜e T¤_Ñ5Ô5Ð5Ð5Ð5ð	 .Ð-rF   N)rr   rs   rt   r‹  rY  re  rD  rE  r¡   rF   rD   ÚFlatSubIterrb  ä  s]   € € € € € ð	ð 	ð
	Jð 	Jð 	Jð	2ð 	2ð 	2ð	6ð 	6ð 	6ð		6ð 		6ð 		6ð 		6ð 		6rF   rh  c                   ó$   •— e Zd ZdZˆ fd„Zd„ ZdS )ú+make_nditer_cls.<locals>.TrivialFlatSubIterzx
        Sub-iterator walking a contiguous array in physical order,
        *without* support for broadcasting.
        c                 ó   •— ‰j         rJ ‚d S rW  )Úneed_shaped_indexing)rZ   r~   r>   r<  s      €rD   rY  z9make_nditer_cls.<locals>.TrivialFlatSubIter.init_specific
  s   ø€ ØÔ4Ð4Ð4Ð4Ð4Ð4rF   c                 óŒ   — t          |¦  «        dk    sJ t          |¦  «        ¦   «         ‚|                     |j        |¦  «        S r­  )r¤   rT  r›   ©rZ   r~   r>   r§   r`  ra  s         rD   re  z;make_nditer_cls.<locals>.TrivialFlatSubIter.compute_pointer  s=   € Ý�w‘<”< 1Ò$Ð$Ð$¥c¨'¡l¤lÑ$Ô$Ð$Ø—;’;˜sœx¨Ñ1Ô1Ð1rF   N)rr   rs   rt   r‹  rY  re  r;  s   €rD   ÚTrivialFlatSubIterrj    sG   ø€ € € € € ð	ð 	ð
	5ð 	5ð 	5ð 	5ð 	5ð	2ð 	2ð 	2ð 	2ð 	2rF   ro  c                   ó   — e Zd ZdZd„ ZdS )ú'make_nditer_cls.<locals>.IndexedSubIterzA
        Sub-iterator walking an array in logical order.
        c                 ój   — t          |¦  «        | j        k    sJ ‚t          j        |||||d¬¦  «        S ©NFry  )r¤   rq   r
   r?  rn  s         rD   re  z7make_nditer_cls.<locals>.IndexedSubIter.compute_pointer  sF   € Ý�w‘<”< 4¤9Ò,Ð,Ð,Ð,ÝÔ+¨G°W¸eÀSØ,3ÀðGñ Gô Gð GrF   N©rr   rs   rt   r‹  re  r¡   rF   rD   ÚIndexedSubIterrq    s2   € € € € € ð	ð 	ð	Gð 	Gð 	Gð 	Gð 	GrF   ru  c                   ó   — e Zd ZdZd„ ZdS )ú'make_nditer_cls.<locals>.ZeroDimSubIterz5
        Sub-iterator "walking" a 0-d array.
        c                 ó   — |j         S rW  )r›   rn  s         rD   re  z7make_nditer_cls.<locals>.ZeroDimSubIter.compute_pointer   s	   € Ø”8ˆOrF   Nrt  r¡   rF   rD   ÚZeroDimSubIterrw    s-   € € € € € ð	ð 	ð	ð 	ð 	ð 	ð 	rF   ry  c                   ó   — e Zd ZdZd„ ZdS )ú&make_nditer_cls.<locals>.ScalarSubIterz8
        Sub-iterator "walking" a scalar value.
        c                 ó   — |S rW  r¡   rn  s         rD   re  z6make_nditer_cls.<locals>.ScalarSubIter.compute_pointer(  s   € ØˆJrF   Nrt  r¡   rF   rD   ÚScalarSubIterr{  #  s-   € € € € € ð	ð 	ð	ð 	ð 	ð 	ð 	rF   r}  c                   ó„   •
— e Zd ZdZej        ˆ ˆˆˆˆˆfd„¦   «         Zˆˆˆˆ	fd„Zˆfd„Zd„ Z	d„ Z
ˆˆˆˆ	fd„Zd„ Zd	„ Zd
S )úmake_nditer_cls.<locals>.NdIterz½
        .nditer() implementation.

        Note: 'F' layout means the shape is iterated in reverse logical order,
        so indices and shapes arrays have to be reversed as well.
        c           	      óÊ   •— g }‰j         r‰n‰‰‰‰dœ}t          ‰j        ¦  «        D ]:\  }}|\  }}}}d|z  }	||         }
|                      |
| |	||¦  «        ¦  «         Œ;|S )N)r4  ÚindexedÚ0dÚscalarzindex%d)rl  rø   r  rj   )rZ   ÚlÚ	factoriesrn   r(  râ  rR  rS  rÉ  rQ  Úfactoryrh  ru  r}  ro  ry  r<  s              €€€€€€rD   Úsubitersz(make_nditer_cls.<locals>.NdIter.subiters3  s›   ø€ àˆAØ08Ô0Mð "1  Ø0Ø$2Ø-Ø#0ð	ð ˆIõ $ HÔ$5Ñ6Ô6ð Ið I‘��3Ø.1Ñ+��i ¨!Ø'¨!™m�Ø# Dœ/�Ø—’˜˜  {°I¸wÑGÔGÑHÔHÐHÐHØˆHrF   c                 ó¼  •— |                      t          j        d¦  «        }|                     |t          j        |¦  «        |¦  «        | _        t          |¦  «        D ]P\  }}t          |t          j        ¦  «        s1d|z  }t          j
        |||         ¦  «        }	t          | ||	¦  «         ŒQ|                      ||||¦  «        }t          j        t          j        ‰¦  «        }
d}d}t          |¦  «        D ]F\  }}t          |t          j        ¦  «        r'|j        ‰k    r||         j        }||         j        } n@ŒG‰dk    sJ ‚|                     ||
d¦  «        }|                      t          j        d¦  «        }d„ }t#          ||¦  «        D ]†\  }}t          |t          j        ¦  «        rg|j        dk    r\t%          t          j        t          j        t          j        |j        ¦  «        |
¦  «        }|                     ||||j        |f¦  «         Œ‡t          j        ||¦  «        }‰dk    r|ddd…         }|                     d	||¦  «        }|                     |t          j        t          j        ¦  «        }‰j        s|f}t7          |¦  «        ‰k    sJ ‚t          j        ||j        ‰¬
¦  «        }t=          ‰¦  «        D ].}t          j        |||¦  «        }|                      ||¦  «         Œ/|| _!        t          j"        |||j        ¦  «        | _        t          j
        ||¦  «        | _#        | j$        D ]}| %                    ||¦  «         ŒdS )zY
            Initialize the nditer() instance for the specific array inputs.
            r   úscalar%dNr¡   rH   c                 ó°   — t          | ¦  «        }t          |¦  «        D ]6}| |         |t          |¦  «        |z
  |z            k    rt          d¦  «        ‚Œ7d S )Nz2nditer(): operands could not be broadcast together)r¤   r9   r¼   )rf   Ú
main_shaper]  rn   s       rD   Úcheck_shapezBmake_nditer_cls.<locals>.NdIter.init_specific.<locals>.check_shapef  sm   € Ý˜‘J”J�Ý˜q™œð ?ð ?�AØ˜Q”x :­c°*©o¬oÀÑ.AÀAÑ.EÔ#FÒFÐFÝ(ð *>ñ ?ô ?ð ?ð Gð?ð ?rF   r*  rr  r$  r˜  )&rÃ   r   r�   r  rÝ  Úarraysrø   r˜   r™   r
   r  rÊ   Ú_arrays_or_scalarsrA  rq   rf   r¶   r¥   r$   ÚnonerI  rÄ   r"  rò  rB  r@  rl  r¤   rX   r:   r9   ri   r(  r§   rk   Ú	exhaustedr‡  rY  )rZ   r~   r>   Úarrtysr�  r  rn   rY  rQ  ÚslotÚmain_shape_tyr‹  Úmain_nitemsr`  rŒ  ra  r\   r  Úshape_is_emptyr�  r§   r�  rG  ÚsubiterrS  rq   r<  Únshapess                           €€€€rD   rY  z-make_nditer_cls.<locals>.NdIter.init_specificC  sr  ø€ ð ×'Ò'­¬
°AÑ6Ô6ˆDð "×,Ò,¨Wµe´kÀ&Ñ6IÔ6IØ-3ñ5ô 5ˆDŒKõ # 6Ñ*Ô*ð 5ð 5‘��2Ý! "¥e¤kÑ2Ô2ð 5Ø",¨q¡.�Kå"Ô4°W¸fÀQ¼iÑHÔH�DÝ˜D +¨tÑ4Ô4Ð4øà×,Ò,¨W°g¸vÀvÑNÔNˆFõ "œN­5¬:°tÑ<Ô<ˆMØˆJØˆKÝ% fÑ-Ô-ð 	Bð 	B‘��5Ý˜e¥U¤[Ñ1Ô1ð °e´jÀDÒ6HÐ6HØ!'¨¤¤�JØ"(¨¤)Ô"2�KØ�Eøð ˜q’y�y�y�yØ$×/Ò/°¸ÈÑKÔK�
Ø%×2Ò2µ5´:¸qÑAÔA�ð?ð ?ð ?õ " &¨&Ñ1Ô1ð Kð K‘
��sÝ˜e¥U¤[Ñ1Ô1ð K°e´jÀ1²n°nÝ#¥E¤JÝ$)¤Nµ5´:¸u¼zÑ$JÔ$JØ$1ñ3ô 3�Cð ×,Ò,¨W°kØ-0°3´9¸jÐ2IñKô Kð Køõ Ô)¨'°:Ñ>Ô>ˆFØ˜Š}ˆ}Ø   " œ�ð %×0Ò0°°{ÀDÑIÔIˆNØŸš ~µwÔ7HÝ'.Ô'9ñ;ô ;ˆIð Ô0ð (ð &˜�Ý�v‘;”; 'Ò)Ð)Ð)Ð)åÔ)¨'°4´9À7ÐKÑKÔKˆGÝ˜W‘~”~ð ,ð ,�Ý Ô-¨g°wÀÑDÔD�Ø—’˜d FÑ+Ô+Ð+Ð+à"ˆDŒLÝ Ô+¨G°V¸T¼YÑGÔGˆDŒJÝ$Ô6°wÀ	ÑJÔJˆDŒNð  œ=ð 8ð 8�Ø×%Ò% g¨wÑ7Ô7Ð7Ð7ð8ð 8rF   c                 ó&  •— |                      d¦  «        }t          j        ||                     | j        ¦  «        ¦  «        }t          j        ||¦  «        5  |                     d¦  «         |                     |¦  «         ddd¦  «         n# 1 swxY w Y   ‰j        }t          j	        || j        ¦  «        }|  
                    ||||¦  «        }| j        }|                     d¦  «         |                      |||||¦  «        }	d„ |	D ¦   «         }	t          |	¦  «        dk    r|                     |	d         ¦  «         n/|                     |                     |‰j        |	¦  «        ¦  «         t          j	        || j        ¦  «        }
t%          ||t          |
¦  «        |
|| j        t'          j        | j        ||¦  «        t'          j        | j        ||¦  «        ¦  «         |                     |¦  «         |                     |¦  «         dS )zJ
            Compute next iteration of the nditer() instance.
            rh  FNTc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r¡   rT  ©r¢   rØ   s     rD   r£   zEmake_nditer_cls.<locals>.NdIter.iternext_specific.<locals>.<listcomp>§  s    € Ð2Ð2Ð2 q�Q—[’[‘]”]Ð2Ð2Ð2rF   rH   r   )r“  r
   Úas_bool_bitr?   r�  Úif_unlikelyr#  r   r�  rÄ   rŽ  r§   Ú_make_viewsr¤   r&  r  r%  rf   rI  r–  ÚpartialÚ_loop_continueÚ_loop_breakr¡  )rZ   r~   r>   r)  rF  r�  r‘  r�  r§   Úviewsrf   r<  s              €rD   Úiternext_specificz1make_nditer_cls.<locals>.NdIter.iternext_specific’  sM  ø€ ð ×.Ò.¨uÑ5Ô5ˆEõ  Ô+¨GØ,3¯LªL¸¼Ñ,HÔ,HñJô JˆIåÔ$ W¨iÑ8Ô8ð &ð &Ø× Ò  Ñ'Ô'Ð'Ø—’˜uÑ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð ”_ˆFÝÔ)¨'°4´;Ñ?Ô?ˆFØ×,Ò,¨W°g¸vÀvÑNÔNˆFØ”lˆGð ×Ò˜TÑ"Ô"Ð"Ø×$Ò$ W¨g°wÀÈÑOÔOˆEØ2Ð2¨EÐ2Ñ2Ô2ˆEÝ�5‰zŒz˜QŠˆØ—’˜e AœhÑ'Ô'Ð'Ð'à—’˜g×0Ò0°¸(Ô:MØ16ñ8ô 8ñ 9ô 9ð 9õ Ô(¨°$´*Ñ=Ô=ˆEÝ˜w¨µ°U±´¸UØ&¨¬Ý(Ô0°Ô1DØ18Ø18ñ :ô  :õ  )Ô0°Ô1AØ18Ø18ñ :ô  :ñ!ô !ð !ð �NŠN˜5Ñ!Ô!Ð!Ø×#Ò# EÑ*Ô*Ð*Ð*Ð*s   Á+BÂBÂBc                 óŒ   — | j         D ];}|j        |cxk    r|j        k     r"n Œ|                     ||||j        z
  ¦  «         Œ<d S rW  )r‡  rR  rS  rD  ©rZ   r~   r>   r�  r(  s        rD   rŸ  z.make_nditer_cls.<locals>.NdIter._loop_continue¼  sg   € Ø”}ð Mð M�Ø”= CÐ5Ð5Ò5Ð5¨#¬+Ò5Ð5Ð5Ð5Ð5Ø×%Ò% g¨w¸¸c¼mÑ8KÑLÔLÐLøðMð MrF   c                 óŒ   — | j         D ];}|j        |cxk    r|j        k     r"n Œ|                     ||||j        z
  ¦  «         Œ<d S rW  )r‡  rR  rS  rE  r¤  s        rD   r   z+make_nditer_cls.<locals>.NdIter._loop_breakÁ  se   € Ø”}ð Jð J�Ø”= CÐ5Ð5Ò5Ð5¨#¬+Ò5Ð5Ð5Ð5Ð5Ø—N’N 7¨G°S¸3¼=Ñ5HÑIÔIÐIøðJð JrF   c                 ó  •‡‡— dg‰z  }‰j         }| j        }‰j        }	t          |	t          j        ¦  «        rt          |	¦  «        }	n|	g}	ˆˆfd„t          ‰¦  «        D ¦   «         Št          ||¦  «        D ]p\  }
}|
\  }}}}‰|j	        |j
        …         }‰dk    r|ddd…         }|D ]<}||         �J ‚|                      |‰||	|         ||         ||         |¦  «        ||<   Œ=Œqt          d„ |D ¦   «         ¦  «        sJ ‚|S )z:
            Compute the views to be yielded.
            Nc           	      ób   •— g | ]+}‰                      t          j        ‰‰|¦  «        ¦  «        ‘Œ,S r¡   ©r?   r
   ri   )r¢   rn   r>   r§   s     €€rD   r£   z?make_nditer_cls.<locals>.NdIter._make_views.<locals>.<listcomp>Ò  sD   ø€ ð 0ð 0ð 0Øð —|’|¥GÔ$8¸À'È1Ñ$MÔ$MÑNÔNð 0ð 0ð 0rF   r*  rr  c              3   ó   K  — | ]}|V — Œd S rW  r¡   rš  s     rD   rZ  z>make_nditer_cls.<locals>.NdIter._make_views.<locals>.<genexpr>ß  s"   è è € Ð(Ð(˜Q�qÐ(Ð(Ð(Ð(Ð(Ð(rF   )r  r‡  r%  r˜   r   ra  rÀ   r9   r¥   rR  rS  Ú
_make_viewrÞ  )rZ   r~   r>   r§   r‘  r�  r¡  r  r‡  Úrettysr(  r–  rÉ  rK  Úsub_indicesrn   rS  Únarraysr<  r—  s     ``            €€€€rD   r�  z+make_nditer_cls.<locals>.NdIter._make_viewsÆ  si  øøø€ ð �F˜WÑ$ˆEØÔ(ˆHØ”}ˆHØÔ(ˆFÝ˜&¥%¤/Ñ2Ô2ð "Ý˜f™œ��à ˜�ð0ð 0ð 0ð 0ð 0Ý % g¡¤ð0ñ 0ô 0ˆGõ !$ H¨hÑ 7Ô 7ð 	Nð 	N‘��WØ),Ñ&��1�a˜Ø% gÔ&7¸¼Ð&GÔH�Ø˜S’=�=Ø"-¨d¨d°¨dÔ"3�KØ&ð Nð N�AØ  œ8Ð+Ð+Ð+Ø#Ÿš¨w¸ÀØ/5°a¬yØ/5°a¬y¸&À¼)ÀWñ Nô  N�E˜!‘H�HðNõ
 Ð(Ð( %Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(ØˆLrF   c                 óÞ  — t          |t          j        ¦  «        r|j        dk    sJ ‚|                     |||||¦  «        } |                     |¦  «        ||¦  «        }	t          ||¦  «        }
|                     |t          j        t          j	        d¦  «        d¦  «        }|                     |t          j        t          j	        d¦  «        d¦  «        }t          |	||||
d¬¦  «         |	S )zD
            Compute a 0d view for a given input array.
            r   r¡   N)r¯   )r˜   r   r™   rq   re  ry   r€   r  rA  r�   rÙ   )rZ   r~   r>   r§   rN  r`  ra  r–  rl   Úviewr±   rf   r°   s                rD   rª  z*make_nditer_cls.<locals>.NdIter._make_viewâ  sä   € õ
 ˜e¥U¤[Ñ1Ô1ÐE°e´jÀA²o°o°oÐEà×)Ò)¨'°7¸GÀUÈCÑPÔPˆCØ,�7×%Ò% eÑ,Ô,¨W°gÑ>Ô>ˆDå# G¨UÑ3Ô3ˆHØ×&Ò& wµ´½u¼zÈ1Ñ0MÔ0MØ')ñ+ô +ˆEà×(Ò(¨µ%´.ÅÄÈQÑ2OÔ2OØ)+ñ-ô -ˆGõ ˜4  e¨W°hÈÐMÑMÔMÐMØˆKrF   c                 ó@  — g }t          t          ||¦  «        ¦  «        D ]}\  }\  }}t          |t          j        ¦  «        r5|                      |                     |¦  «        |||¬¦  «        ¦  «         ŒW|                     t          | d|z  ¦  «        ¦  «         Œ~|S )Nr  r‰  )rø   r¥   r˜   r   r™   rj   ry   r  )	rZ   r~   r>   r‘  r�  r„  rn   r`  ra  s	            rD   rŽ  z2make_nditer_cls.<locals>.NdIter._arrays_or_scalarsö  s¼   € ð ˆAÝ#,­S°¸Ñ-@Ô-@Ñ#AÔ#Að <ð <‘�‘<�E˜3Ý˜e¥U¤[Ñ1Ô1ð <Ø—H’HÐ6˜W×/Ò/°Ñ6Ô6°wØ7>Ø=@ðBñ Bô Bñ Cô Cð Cð Cð —H’H�W T¨:¸©>Ñ:Ô:Ñ;Ô;Ð;Ð;ØˆHrF   N)rr   rs   rt   r‹  r–  r_  r‡  rY  r¢  rŸ  r   r�  rª  rŽ  )
rh  ru  r}  ro  ry  rS  r­  rq   r<  r—  s
   €€€€€€€€€€rD   ÚNdIterr  +  s  ø€ € € € € ð	ð 	ð 
Ô	"ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ñ 
#Ô	"ð	ðM	8ð M	8ð M	8ð M	8ð M	8ð M	8ð M	8ð M	8ð^(	+ð (	+ð (	+ð (	+ð (	+ðT	Mð 	Mð 	Mð
	Jð 	Jð 	Jð
	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð8	ð 	ð 	ð(	ð 	ð 	ð 	ð 	rF   r±  )rq   rS  r¤   r�  rl  Úobjectr
   rx   )r<  r`  r±  rh  ru  r}  ro  ry  rS  r­  rq   r—  s   `  @@@@@@@@@rD   Úmake_nditer_clsr³  ¾  sÒ  øøøøøøøøøø€ ð
 Œ=€DØŒ_€FÝ�(”/Ñ"Ô"€GØÔ3Ð:ˆdˆd¸€Gðð ð ð ð •fñ ô ð ð86ð 6ð 6ð 6ð 6�kñ 6ô 6ð 6ð@2ð 2ð 2ð 2ð 2ð 2ð 2˜[ñ 2ô 2ð 2ðGð Gð Gð Gð G˜ñ Gô Gð Gðð ð ð ð ˜ñ ô ð ðð ð ð ð ˜ñ ô ð ðVð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð V•Ô,¨XÑ6Ô6ñ Vô Vð Vðp €MrF   c                 óZ   ‡— | j         Š G ˆfd„dt          j        | ¦  «        ¦  «        }|S )zr
    Return the Structure representation of the given *nditerty* (an
    instance of types.NumpyNdIndexType).
    c                   ó(   •— e Zd ZdZˆ fd„Zˆ fd„ZdS )ú%make_ndindex_cls.<locals>.NdIndexIterz,
        .ndindex() implementation.
        c                 óª  •— |                      t          j        d¦  «        }t          j        ||j        |                      t          j        ‰¦  «        ¬¦  «        }t          j        |t          j        ¦  «        }t          ‰¦  «        D ]š}t          j	        |||¦  «        }| 
                    ||¦  «         ||         }	|                     d|	|¦  «        }
t          j        ||
¦  «        5  | 
                    t          j        |¦  «         d d d ¦  «         n# 1 swxY w Y   Œ›|| _        || _        t          j        |||j        ¦  «        | _        d S ©Nr   r˜  r$  )rÃ   r   r�   r
   rX   r:   r  r@  r9   ri   r(  r'  rœ  rB  r§   r�  rk   rf   )rZ   r~   r>   r  r  r§   r�  r�  rG  rç  Údim_is_emptyrq   s              €rD   rY  z3make_ndindex_cls.<locals>.NdIndexIter.init_specific  s‹  ø€ Ø×'Ò'­¬
°AÑ6Ô6ˆDÝÔ)¨'°4´9Ø/6×/CÒ/CÅEÄJØDHñ0Jô 0JðKñ Kô KˆGõ  Ô1°'½7Ô;MÑNÔNˆIå˜T‘{”{ð 	@ð 	@�Ý Ô-¨g°wÀÑDÔD�Ø—’˜d FÑ+Ô+Ð+ð " #œ;�Ø&×4Ò4°T¸8ÀTÑJÔJ�ÝÔ(¨°,Ñ?Ô?ð @ð @Ø—M’M¥'Ô"3°YÑ?Ô?Ð?ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @øð #ˆDŒLØ&ˆDŒNÝ Ô+¨G°V¸T¼YÑGÔGˆDŒJˆJˆJs   Ã,!DÄD	Ä D	c                 ó,  •‡ ‡— |                      t          j        d¦  «        }‰                     d¦  «        }t	          j        ‰‰                     ‰ j        ¦  «        ¦  «        }t	          j        ‰|¦  «        5  | 	                    d¦  «         ‰ 
                    |¦  «         d d d ¦  «         n# 1 swxY w Y   ˆˆ fd„t          ‰
¦  «        D ¦   «         }|D ]}t          ‰|¦  «         Œ|                     t	          j        ‰||j        ¦  «        ¦  «         | 	                    d¦  «         t	          j        ‰‰ j        ‰
¦  «        }	t%          |‰‰
|	‰ j        ‰ j        ¦  «         ‰ 
                    |¦  «         ‰                     |¦  «         d S )Nr   rh  Fc           	      ól   •— g | ]0}‰                      t          j        ‰‰j        |¦  «        ¦  «        ‘Œ1S r¡   )r?   r
   ri   r§   )r¢   r�  r>   rZ   s     €€rD   r£   zKmake_ndindex_cls.<locals>.NdIndexIter.iternext_specific.<locals>.<listcomp>3  sR   ø€ ð /ð /ð /ð ð —|’|¥GÔ$8¸Ø9=¼Ø9<ñ%>ô %>ñ ?ô ?ð /ð /ð /rF   T)rÃ   r   r�   r“  r
   r›  r?   r�  rœ  r#  r   r9   rJ   r&  rk   r:   rÄ   rf   rI  r§   r¡  )rZ   r~   r>   r)  r  rF  r�  r§   r?   rf   rq   s   ` `       €rD   r¢  z7make_ndindex_cls.<locals>.NdIndexIter.iternext_specific(  sÛ  øøø€ Ø×'Ò'­¬
°AÑ6Ô6ˆDà×.Ò.¨uÑ5Ô5ˆEåÔ+¨GØ,3¯LªL¸¼Ñ,HÔ,HñJô JˆIåÔ$ W¨iÑ8Ô8ð &ð &Ø× Ò  Ñ'Ô'Ð'Ø—’˜uÑ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð/ð /ð /ð /ð /õ #(¨¡+¤+ð/ñ /ô /ˆGð  ð -ð -�Ý˜g tÑ,Ô,Ð,Ð,à�MŠM�'Ô,¨W°g¸t¼yÑIÔIÑJÔJÐJØ×Ò˜TÑ"Ô"Ð"åÔ(¨°$´*¸dÑCÔCˆEÝ˜w¨°°uØ#œ|¨T¬^ñ=ô =ð =ð �NŠN˜5Ñ!Ô!Ð!Ø×#Ò# EÑ*Ô*Ð*Ð*Ð*s   Á;+B2Â2B6Â9B6N)rr   rs   rt   r‹  rY  r¢  r:  s   €rD   ÚNdIndexIterr¶    sV   ø€ € € € € ð	ð 	ð	Hð 	Hð 	Hð 	Hð 	Hð,	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+rF   r¼  )rq   r
   rx   )r<  r¼  rq   s     @rD   Úmake_ndindex_clsr½    sT   ø€ ð
 Œ=€Dð5+ð 5+ð 5+ð 5+ð 5+ð 5+ð 5+•gÔ1°(Ñ;Ô;ñ 5+ô 5+ð 5+ðn ÐrF   c                 óÄ   ‡— ‰dv sJ ‚| j         }|j        dk    r$ G ˆfd„dt          j        | ¦  «        ¦  «        }|S  G ˆfd„dt          j        | ¦  «        ¦  «        }|S )N)r4  r:  rª   c                   ó4   •— e Zd ZdZˆ fd„Zˆ fd„Zd„ Zd„ ZdS )ú6_make_flattening_iter_cls.<locals>.CContiguousFlatIterzZ
            .flat() / .ndenumerate() implementation for C-contiguous arrays.
            c                 ó¶  •— |                      t          j        d¦  «        }t          j        ||¦  «        | _        |j        | _        ‰	dk    r‹t          j        ||j	        |                      t          j        |j
        ¦  «        ¬¦  «        }t          |j
        ¦  «        D ].}t          j        |||¦  «        }|                     ||¦  «         Œ/|| _        d S d S )Nr   r:  r˜  )rÃ   r   r�   r
   r  r  r±   r*  rX   r:   rq   r9   ri   r(  r§   )
rZ   r~   r>   r`  ra  r  r§   r�  rG  râ  s
            €rD   rY  zD_make_flattening_iter_cls.<locals>.CContiguousFlatIter.init_specificR  sÕ   ø€ Ø×+Ò+­E¬J¸Ñ:Ô:�Ý$Ô6°wÀÑEÔE�”
ð "œl�”à˜=Ò(Ð(å%Ô1Ø ¤Ø$×1Ò1µ%´*¸e¼jÑIÔIðKñ Kô K�Gõ  % U¤ZÑ0Ô0ð 4ð 4˜Ý!(Ô!5°g¸wÈÑ!LÔ!L˜ØŸš d¨FÑ3Ô3Ð3Ð3à#*�D”L�L�Lð )Ð(rF   c                 ó,  •‡‡— |j         }|j        }‰                     | j        ¦  «        }‰                     d||¦  «        }	|                     |	¦  «         t          j        ‰|	¦  «        5  ‰                     |j	        |g¦  «        }
t          |‰||
¦  «        }‰dk    r|                     |¦  «         n”| j        Šˆˆfd„t          |¦  «        D ¦   «         }t          j        ‰||                     t           j        ¦  «        ¬¦  «        }|                     t          j        ‰||g¦  «        ¦  «         t'          |‰||‰¦  «         t          j        ‰|¦  «        }‰                     || j        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr!  r4  c           	      ób   •— g | ]+}‰                      t          j        ‰‰|¦  «        ¦  «        ‘Œ,S r¡   r¨  ©r¢   r�  r>   r§   s     €€rD   r£   z\_make_flattening_iter_cls.<locals>.CContiguousFlatIter.iternext_specific.<locals>.<listcomp>{  sT   ø€ ð #;ð #;ð #;ð (+ð $+§<¢<µÔ0DÀWØELØEHñ1Jô 1Jñ $Kô $Kð #;ð #;ð #;rF   ©rY  )rq   r¶   r?   r  r"  r#  r
   rA  rT  r›   r‡   r&  r§   r9   rk   r{   r   r�   Úmake_anonymous_structrK  r'  r(  )rZ   r~   r>   r`  ra  r)  rq   r¶   r  r,  rl   r   ÚidxvalsÚidxtupler§   râ  s     `           @€rD   r¢  zH_make_flattening_iter_cls.<locals>.CContiguousFlatIter.iternext_specifick  s  øøø€ Ø”z�Øœ�àŸš T¤ZÑ0Ô0�Ø"×.Ò.¨s°E¸6ÑBÔB�Ø× Ò  Ñ*Ô*Ð*åÔ& w°Ñ9Ô9ð 5ð 5Ø!Ÿ+š+ c¤h°°Ñ8Ô8�CÝ% g¨w¸¸sÑCÔC�EØ˜v’~�~ØŸš eÑ,Ô,Ð,Ð,ð #'¤,˜ð#;ð #;ð #;ð #;ð #;õ /4°D©k¬kð#;ñ #;ô #;˜õ $+Ô#5°g¸wØ9@×9NÒ9NÝ:?¼*ñ:Fô :Fð$Gñ $Gô $G˜ð ŸšÝ#Ô9¸'Ø;CÀUÐ:KñMô MñNô Nð Nõ 1°¸'À5Ø14°gñ?ô ?ð ?õ $Ô3°G¸UÑCÔC�EØ—M’M %¨¬Ñ4Ô4Ð4ð-5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5ð 5ð 5s   Á-DF	Æ	FÆFc                 ó^   — |                      |j        |g¦  «        }t          ||||¦  «        S rW  )rT  r›   r‡   ©rZ   r~   r>   r`  ra  r  rl   s          rD   r%  z>_make_flattening_iter_cls.<locals>.CContiguousFlatIter.getitem‹  s-   € Ø—k’k #¤(¨U¨GÑ4Ô4�Ý  ¨'°5¸#Ñ>Ô>Ð>rF   c                 ód   — |                      |j        |g¦  «        }t          |||||¦  «         d S rW  )rT  r›   r‹   ©rZ   r~   r>   r`  ra  r  r   rl   s           rD   Úsetitemz>_make_flattening_iter_cls.<locals>.CContiguousFlatIter.setitem�  s5   € Ø—k’k #¤(¨U¨GÑ4Ô4�Ý˜7 G¨U°E¸3Ñ?Ô?Ð?Ð?Ð?rF   N)rr   rs   rt   r‹  rY  r¢  r%  rÍ  ©râ  s   €rD   ÚCContiguousFlatIterrÀ  M  su   ø€ € € € € ðð ð+ð +ð +ð +ð +ð25ð 5ð 5ð 5ð 5ð@?ð ?ð ?ð@ð @ð @ð @ð @rF   rÏ  c                   ó6   •— e Zd ZdZd„ Zˆ fd„Zd„ Zd„ Zd„ ZdS )ú+_make_flattening_iter_cls.<locals>.FlatIterzÛ
            Generic .flat() / .ndenumerate() implementation for
            non-contiguous arrays.
            It keeps track of pointers along each dimension in order to
            minimize computations.
            c                 ó¨  — |                      t          j        d¦  «        }|j        }|j        }t          j        ||j        |¦  «        }t          j        ||j	        |                      t          j        |j        ¦  «        ¬¦  «        }	t          j        ||j	        |                      t          j        |j        ¦  «        ¬¦  «        }
t          j
        |t
          j        ¦  «        }t          |¦  «        D ]Æ}t          j        ||	|¦  «        }t          j        ||
|¦  «        }|                     ||¦  «         |                     ||¦  «         ||         }|                     d||¦  «        }t          j        ||¦  «        5  |                     t
          j        |¦  «         d d d ¦  «         n# 1 swxY w Y   ŒÇ|	| _        |
| _        || _        d S r¸  )rÃ   r   r�   r›   rq   r
   rÄ   rf   rX   r:   r  r@  r9   ri   r(  r'  rœ  rB  r§   Úpointersr�  )rZ   r~   r>   r`  ra  r  r›   rq   r  r§   rÓ  r�  r�  rG  Úptrptrrç  r¹  s                    rD   rY  z9_make_flattening_iter_cls.<locals>.FlatIter.init_specificž  s  € Ø×+Ò+­E¬J¸Ñ:Ô:�Ø”x�Ø”z�Ý Ô-¨g°s´yÀ$ÑGÔG�å!Ô-Ø˜TœY¨W×-AÒ-AÅ%Ä*ØBGÄ*ñ.Nô .NðOñ Oô O�õ #Ô.Ø˜TœY¨W×-AÒ-AÅ%Ä*ØBGÄ*ñ.Nô .NðOñ Oô O�õ $Ô5°gÝ6=Ô6HñJô J�	õ ! ™;œ;ð Dð D�CÝ$Ô1°'¸7ÀCÑHÔH�FÝ$Ô1°'¸8ÀSÑIÔI�FØ—M’M $¨Ñ/Ô/Ð/Ø—M’M $¨Ñ/Ô/Ð/ð  & cœ{�HØ#*×#8Ò#8¸¸xÈÑ#NÔ#N�LÝ Ô,¨W°lÑCÔCð Dð DØŸš¥gÔ&7¸ÑCÔCÐCðDð Dð Dñ Dô Dð Dð Dð Dð Dð Dð Døøøð Dð Dð Dð Døð  '�”Ø (�”Ø!*�”��s   Æ!F1Æ1F5	Æ8F5	c                 ód  •‡‡— |j         }t          j        ‰|j        |¦  «        }t          j        ‰|j        |¦  «        }| j        Š| j        }	|                     t          j	        d¦  «        }
‰ 
                    d¦  «        }t          j        ‰‰                     | j        ¦  «        ¦  «        }t          j        ‰|¦  «        5  |                     d¦  «         ‰                     |¦  «         d d d ¦  «         n# 1 swxY w Y   |                     d¦  «         t          j        ‰|	|dz
  ¦  «        }‰                     |¦  «        }t%          |‰||¦  «        }‰dk    r|                     |¦  «         n[ˆˆfd„t)          |¦  «        D ¦   «         }t          j        ‰|¦  «        }|                     t          j        ‰||g¦  «        ¦  «         t/          t)          |¦  «        ¦  «        D �]o}t          j        ‰‰|¦  «        }t          j        ‰‰                     |¦  «        ¦  «        }||         }||         }‰                     d||¦  «        }t          j        ‰|¦  «        5  ‰                     ||¦  «         t          j        ‰|	|¦  «        }‰                     |¦  «        }t          j        ‰||¦  «        }‰                     ||¦  «         t)          |dz   |¦  «        D ].}t          j        ‰|	|¦  «        }‰                     ||¦  «         Œ/‰                     |¦  «         d d d ¦  «         n# 1 swxY w Y   ‰                     |
|¦  «         �Œq‰                     t          j        | j        ¦  «         ‰                     |¦  «         ‰                     |¦  «         d S )	Nr   rh  FTrH   r4  c           	      ób   •— g | ]+}‰                      t          j        ‰‰|¦  «        ¦  «        ‘Œ,S r¡   r¨  rÄ  s     €€rD   r£   zQ_make_flattening_iter_cls.<locals>.FlatIter.iternext_specific.<locals>.<listcomp>Ú  sT   ø€ ð 7ð 7ð 7ð $'ð  'Ÿ|š|­GÔ,@ÀØAHØADñ-Fô -Fñ  Gô  Gð 7ð 7ð 7rF   r!  )rq   r
   rÄ   rf   r°   r§   rÓ  rÃ   r   r�   r“  r›  r?   r�  rœ  r#  r   ri   r‡   r&  r9   rk   rÆ  r  r'  r"  rA  r(  r  rB  r¡  )rZ   r~   r>   r`  ra  r)  rq   r  r°   rÓ  r  rF  Úis_exhaustedÚlast_ptrrl   r   rÇ  rÈ  r�  rG  r“   rÅ   r*  rH  rÔ  Ú	inner_dimr§   râ  s     `                       @€rD   r¢  z=_make_flattening_iter_cls.<locals>.FlatIter.iternext_specific¿  s%  øøø€ Ø”z�Ý Ô-¨g°s´yÀ$ÑGÔG�Ý!Ô.¨w¸¼ÀTÑJÔJ�Øœ,�Øœ=�à×+Ò+­E¬J¸Ñ:Ô:�à×2Ò2°5Ñ9Ô9�õ  'Ô2Ø˜WŸ\š\¨$¬.Ñ9Ô9ñ ;ô  ;�åÔ(¨°,Ñ?Ô?ð *ð *Ø×$Ò$ UÑ+Ô+Ð+Ø—N’N 5Ñ)Ô)Ð)ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *ð × Ò  Ñ&Ô&Ð&õ #Ô/°¸À4È!Á8ÑLÔL�Ø—l’l 8Ñ,Ô,�Ý! '¨7°E¸3Ñ?Ô?�Ø˜6’>�>Ø—M’M %Ñ(Ô(Ð(Ð(ð7ð 7ð 7ð 7ð 7õ +0°©+¬+ð7ñ 7ô 7�Gõ  'Ô1°'¸7ÑCÔC�HØ—M’MÝÔ5°gØ7?ÀÐ6GñIô IñJô Jð Jõ $¥E¨$¡K¤KÑ0Ô0ð 0ñ 0�CÝ$Ô1°'¸7ÀCÑHÔH�FÝ!Ô1°'Ø29·,²,¸vÑ2FÔ2FñHô H�Cð # 3œK�EØ$ Sœ\�FØ '× 3Ò 3°C¸¸eÑ DÔ D�IÝ Ô*¨7°IÑ>Ô>ð .ð .àŸš c¨6Ñ2Ô2Ð2Ý!(Ô!5°g¸xÈÑ!MÔ!M˜Ø%Ÿlšl¨6Ñ2Ô2˜Ý%Ô1°'¸3ÀÑGÔG˜ØŸš c¨6Ñ2Ô2Ð2å).¨s°Q©w¸Ñ)=Ô)=ð 7ð 7˜IÝ%,Ô%9¸'Ø:BØ:Cñ&Eô &E˜Fð $ŸMšM¨#¨vÑ6Ô6Ð6Ð6ØŸš uÑ-Ô-Ð-ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð —M’M $¨Ñ/Ô/Ð/Ñ/ð —’�gÔ/°´Ñ@Ô@Ð@Ø—’˜uÑ%Ô%Ð%à×'Ò'¨Ñ.Ô.Ð.Ð.Ð.s%   Ã+C=Ã=DÄDÉ-CL>Ì>M	ÍM	c           	      óÌ  — |j         }t          j        ||j        |¬¦  «        }t          j        ||j        |¬¦  «        }g }	t          t          |¦  «        ¦  «        D ]M}
|	                     |                     |||
         ¦  «        ¦  «         | 	                    |||
         ¦  «        }ŒN|	 
                    ¦   «          t          j        |||j        |||j        |	¦  «        }|S )Nr  )rq   r
   rÄ   rf   r°   r  r9   rj   ÚuremÚudivÚreverserR  r›   rS  )rZ   r~   r>   r`  ra  r  rq   r  r°   r§   r�  rl   s               rD   Ú_ptr_for_indexz:_make_flattening_iter_cls.<locals>.FlatIter._ptr_for_index  sÙ   € Ø”z�Ý Ô-¨g°s´yÈÐMÑMÔM�Ý!Ô.¨w¸¼È4ÐPÑPÔP�ð �Ý#¥E¨$¡K¤KÑ0Ô0ð =ð =�CØ—N’N 7§<¢<°°v¸c´{Ñ#CÔ#CÑDÔDÐDØ#ŸLšL¨°°s´Ñ<Ô<�E�EØ—’Ñ!Ô!Ð!åÔ/°¸À#Ä(Ø06¸ÀÄØ07ñ9ô 9�ð �
rF   c                 óX   — |                       |||||¦  «        }t          ||||¦  «        S rW  )rÞ  r‡   rÊ  s          rD   r%  z3_make_flattening_iter_cls.<locals>.FlatIter.getitem  s1   € Ø×)Ò)¨'°7¸EÀ3ÈÑNÔN�Ý  ¨'°5¸#Ñ>Ô>Ð>rF   c                 ó^   — |                       |||||¦  «        }t          |||||¦  «         d S rW  )rÞ  r‹   rÌ  s           rD   rÍ  z3_make_flattening_iter_cls.<locals>.FlatIter.setitem  s9   € Ø×)Ò)¨'°7¸EÀ3ÈÑNÔN�Ý˜7 G¨U°E¸3Ñ?Ô?Ð?Ð?Ð?rF   N)	rr   rs   rt   r‹  rY  r¢  rÞ  r%  rÍ  rÎ  s   €rD   ÚFlatIterrÑ  –  s€   ø€ € € € € ðð ð+ð +ð +ðBC/ð C/ð C/ð C/ð C/ðJð ð ð"?ð ?ð ?ð@ð @ð @ð @ð @rF   rá  )rc   rS  r
   rx   )r7  râ  rc   rÏ  rá  s    `   rD   r6  r6  G  sâ   ø€ ØÐ*Ð*Ð*Ð*Ð*àÔ&€JàÔ˜CÒÐðD	@ð D	@ð D	@ð D	@ð D	@ð D	@ð D	@¥'Ô"=¸jÑ"IÔ"Iñ D	@ô D	@ð D	@ðL #Ð"ðE	@ð E	@ð E	@ð E	@ð E	@ð E	@ð E	@•wÔ2°:Ñ>Ô>ñ E	@ô E	@ð E	@ðN ˆrF   r4  c                 óv  — t          t          j        |¦  «        ¦  «        } || |¦  «        }||_        |                      |¦  «        } || ||                     d¦  «        ¬¦  «        }|                     | |||¦  «         |                     ¦   «         }t          | |t          j        |¦  «        |¦  «        S ©NrË   )r[   )	r8  r   ÚNumpyFlatTyperË   ry   rh   rY  r	  r    )r~   r>   r`  ra  ÚflatiterclsÚflatiterÚarrclsr  s           rD   Úmake_array_flatiterrè     s³   € å%¥eÔ&9¸%Ñ&@Ô&@ÑAÔA€KØˆ{˜7 GÑ,Ô,€Hà€H„Nà×Ò Ñ&Ô&€FØ
ˆ&�˜' x×'@Ò'@ÀÑ'IÔ'IÐ
JÑ
JÔ
J€Cà×Ò˜7 G¨U°CÑ8Ô8Ð8à
×
Ò
Ñ
Ô
€CÝ˜W g­uÔ/BÀ5Ñ/IÔ/IÈ3ÑOÔOÐOrF   c                 óê   — |j         \  }|\  }t          |¦  «        } || ||¬¦  «        }|j        }|                      |¦  «        }	 |	| ||j        ¬¦  «        }
|                     | |||
|¦  «         d S r¬  )r  r8  rc   ry   rË   r¢  )r~   r>   r\   r  r)  r7  ræ  rå  r`  rç  ra  s              rD   Úiternext_numpy_flatiterrê  0  sŒ   € ð ”8�L€ZØ�J€Xå% jÑ1Ô1€KØˆ{˜7 G°8Ð<Ñ<Ô<€HàÔ!€EØ×Ò Ñ&Ô&€FØ
ˆ&�˜'¨¬Ð
8Ñ
8Ô
8€Cà×Ò˜w¨°¸¸VÑDÔDÐDÐDÐDrF   c                 ó  — |j         d         }|\  }}t          |¦  «        } || ||¬¦  «        }|j        }|                      |¦  «        }	 |	| ||j        ¬¦  «        }
|                     | |||
|¦  «        }t          | ||j        |¦  «        S ©Nr   r  )r  r8  rc   ry   rË   r%  r    r  )r~   r>   r\   r  r7  ræ  r  rå  r`  rç  ra  r  s               rD   Úiternext_numpy_getitemrí  @  s�   € à”˜!”€JØ�O€Hˆeå% jÑ1Ô1€KØˆ{˜7 G°8Ð<Ñ<Ô<€HàÔ!€EØ×Ò Ñ&Ô&€FØ
ˆ&�˜'¨¬Ð
8Ñ
8Ô
8€Cà
×
Ò
˜7 G¨U°C¸Ñ
?Ô
?€CÝ˜W g¨s¬ÀÑDÔDÐDrF   c                 ó  — |j         d         }|\  }}}t          |¦  «        } || ||¬¦  «        }|j        }	|                      |	¦  «        }
 |
| ||j        ¬¦  «        }|                     | ||	|||¦  «         |                      ¦   «         S rì  )r  r8  rc   ry   rË   rÍ  rv  )r~   r>   r\   r  r7  ræ  r  r   rå  r`  rç  ra  s               rD   Úiternext_numpy_getitem_anyrï  P  s¡   € ð ”˜!”€JØ!Ñ€Hˆe�Uå% jÑ1Ô1€KØˆ{˜7 G°8Ð<Ñ<Ô<€HàÔ!€EØ×Ò Ñ&Ô&€FØ
ˆ&�˜'¨¬Ð
8Ñ
8Ô
8€Cà×Ò�W˜g u¨c°5¸%Ñ@Ô@Ð@Ø×"Ò"Ñ$Ô$Ð$rF   c                 óÊ   — |j         d         }t          |¦  «        } || ||d         ¬¦  «        }|                      |j        ¦  «        } || ||j        ¬¦  «        }|j        S rì  )r  r8  ry   rc   rË   r¶   )	r~   r>   r\   r  r7  rå  ræ  rç  ra  s	            rD   Úiternext_numpy_getitem_flatrñ  a  sj   € à”˜!”€JÝ% jÑ1Ô1€KØˆ{˜7 G°4¸´7Ð;Ñ;Ô;€Hà×Ò 
Ô 5Ñ6Ô6€FØ
ˆ&�˜'¨¬Ð
8Ñ
8Ô
8€CØŒ:ÐrF   c                 óv  — |j         \  }|\  }t          t          j        |¦  «        ¦  «        } || |¦  «        }||_        |                      |¦  «        } || ||                     d¦  «        ¬¦  «        }|                     | |||¦  «         |                     ¦   «         }	t          | ||j
        |	¦  «        S rã  )r  r=  r   ÚNumpyNdEnumerateTyperË   ry   rh   rY  r	  r    r  )
r~   r>   r\   r  r`  ra  Ú	nditerclsrP  rç  r  s
             rD   Úmake_array_ndenumeraterõ  l  sº   € àŒX�F€EØ�D€CÝ*­5Ô+EÀeÑ+LÔ+LÑMÔM€IØˆY�w Ñ(Ô(€Fà€F„Là×Ò Ñ&Ô&€FØ
ˆ&�˜' v×'>Ò'>¸wÑ'GÔ'GÐ
HÑ
HÔ
H€Cà
×Ò˜ '¨5°#Ñ6Ô6Ð6à
×
Ò
Ñ
Ô
€CÝ˜W g¨s¬ÀÑDÔDÐDrF   c                 óê   — |j         \  }|\  }t          |¦  «        } || ||¬¦  «        }|j        }|                      |¦  «        }	 |	| ||j        ¬¦  «        }
|                     | |||
|¦  «         d S r¬  )r  r=  rc   ry   rË   r¢  )r~   r>   r\   r  r)  r<  rP  rô  r`  rç  ra  s              rD   Úiternext_numpy_nditerr÷  ~  sŒ   € ð ”�J€XØ�H€Vå*¨8Ñ4Ô4€IØˆY�w ¨vÐ6Ñ6Ô6€FàÔ€EØ×Ò Ñ&Ô&€FØ
ˆ&�˜'¨¬Ð
6Ñ
6Ô
6€Cà
×Ò˜W g¨u°c¸6ÑBÔBÐBÐBÐBrF   c                 óB  ‡ ‡— ˆˆ fd„t          |j        |¦  «        D ¦   «         }t          t          j        t          |¦  «        ¦  «        ¦  «        } |‰ ‰¦  «        }|                     ‰ ‰|¦  «         |                     ¦   «         }t          ‰ ‰|j	        |¦  «        S )zndindex(*shape)c                 óZ   •— g | ]'\  }}‰                      ‰||t          j        ¦  «        ‘Œ(S r¡   r<  )r¢   Úargtyrì  r>   r~   s      €€rD   r£   z&make_array_ndindex.<locals>.<listcomp>’  sA   ø€ ð 4ð 4ð 4Ù�˜ð �\Š\˜' 3¨­u¬zÑ:Ô:ð 4ð 4ð 4rF   )
r¥   r  r½  r   ÚNumpyNdIndexTyper¤   rY  r	  r    r  )r~   r>   r\   r  rf   rô  rP  r  s   ``      rD   Úmake_array_ndindexrü  Ž  s­   øø€ ð4ð 4ð 4ð 4ð 4Ý" 3¤8¨TÑ2Ô2ð4ñ 4ô 4€Eõ !¥Ô!7½¸E¹
¼
Ñ!CÔ!CÑDÔD€IØˆY�w Ñ(Ô(€FØ
×Ò˜ '¨5Ñ1Ô1Ð1à
×
Ò
Ñ
Ô
€CÝ˜W g¨s¬ÀÑDÔDÐDrF   c                 óª  ‡ ‡‡
— |j         j        }|dk    rA|j        d         j        Š
|d         }t	          j        ‰||¦  «        }ˆˆ ˆ
fd„|D ¦   «         }ng }t          t          j        t          |¦  «        ¦  «        ¦  «        } |‰ ‰¦  «        }| 
                    ‰ ‰|¦  «         |                     ¦   «         }	t          ‰ ‰|j         |	¦  «        S )zndindex(shape)r   c                 óT   •— g | ]$}‰                      ‰|‰t          j        ¦  «        ‘Œ%S r¡   r<  )r¢   r“   r>   r~   r’   s     €€€rD   r£   z,make_array_ndindex_tuple.<locals>.<listcomp>§  s=   ø€ ð #ð #ð #Øð —’˜g s¨Eµ5´:Ñ>Ô>ð #ð #ð #rF   )r  rq   r  r|   r
   rÄ   r½  r   rû  r¤   rY  r	  r    )r~   r>   r\   r  rq   r^  rf   rô  rP  r  r’   s   ``        @rD   Úmake_array_ndindex_tuplerÿ  �  sî   øøø€ ð Œ?Ô€DØˆa‚x€xØ”˜”Ô!ˆØ�1ŒgˆåÔ$ W¨c°4Ñ8Ô8ˆð#ð #ð #ð #ð #ð #Ø!ð#ñ #ô #ˆˆð ˆå ¥Ô!7½¸E¹
¼
Ñ!CÔ!CÑDÔD€IØˆY�w Ñ(Ô(€FØ
×Ò˜ '¨5Ñ1Ô1Ð1à
×
Ò
Ñ
Ô
€CÝ˜W g¨s¬ÀÑDÔDÐDrF   c                 óˆ   — |j         \  }|\  }t          |¦  «        } || ||¬¦  «        }|                     | ||¦  «         d S r¬  )r  r½  r¢  )r~   r>   r\   r  r)  r<  rP  rô  s           rD   Úiternext_numpy_ndindexr  ´  sU   € ð ”�J€XØ�H€Vå  Ñ*Ô*€IØˆY�w ¨vÐ6Ñ6Ô6€Fà
×Ò˜W g¨vÑ6Ô6Ð6Ð6Ð6rF   c                 ó`  — |j         }|j        }t          |j        d         t          j        ¦  «        rt          j        ||d         ¦  «        }n	|d         g} t          |¦  «        | |¦  «        }| 	                    | |||¦  «         | 
                    ¦   «         }t          | |||¦  «        S )z
    nditer(...)
    r   )r  r�  r˜   r  r   ra  r
   rÄ   r³  rY  r	  r    )	r~   r>   r\   r  r<  r‘  r�  rP  r  s	            rD   Úmake_array_nditerr  À  s§   € ð
 Œ€HØŒ_€Få�#”(˜1”+�uœÑ/Ô/ð ÝÔ% g¨t°A¬wÑ7Ô7ˆˆà�q”'�ˆà&�_˜XÑ&Ô& w°Ñ8Ô8€FØ
×Ò˜ '¨6°6Ñ:Ô:Ð:à
×
Ò
Ñ
Ô
€CÝ˜W g¨x¸Ñ=Ô=Ð=rF   c                 ó„   — |j         \  }|\  } t          |¦  «        | ||¬¦  «        }|                     | ||¦  «         d S r¬  )r  r³  r¢  )r~   r>   r\   r  r)  r<  rP  s          rD   Úiternext_numpy_nditer2r  Ô  sP   € ð ”�J€XØ�H€Và&�_˜XÑ&Ô& w°¸vÐFÑFÔF€FØ
×Ò˜W g¨vÑ6Ô6Ð6Ð6Ð6rF   c                 ó´   — |j         \  }}t          j        t          j        d¦  «        t	          ||k    ¦  «        ¦  «        }t          | ||j        |¦  «        S r­  )r  r   r   rÐ  rÁ   r"   r  )r~   r>   r\   r  Úarg1Úarg2r  s          rD   Údtype_eq_implr	  Þ  sH   € à”�J€Dˆ$Ý
Œ+•b”j ‘m”m¥S¨°ªÑ%6Ô%6Ñ
7Ô
7€CÝ˜g w°´ÀÑEÔEÐErF   c                 óH  — t          |¦  «        } || |¦  «        }|                      |j        ¦  «        }|                      t          j        t          | |¦  «        ¦  «        }|                      t          j        d¦  «        }t          t          j	        d¦  «        d¦  «        }	|D ]X}
| 
                    ||
¦  «        }|                     |d¦  «        }|                     |	|                     |d¦  «        ¦  «        }	ŒY|j        dk    rd}nõ|j        dk    ri|g}t          |dd…         ¦  «        D ]1}|                     |                     |d         |¦  «        ¦  «         Œ2t%          t          |¦  «        ¦  «        }n�|j        dk    rO|g}|dd…         D ]1}|                     |                     |d         |¦  «        ¦  «         Œ2t%          |¦  «        }n't'          d                     |j        ¦  «        ¦  «        ‚| 
                    ||¦  «        }|                     |d¦  «        }|                     |	|                     |d¦  «        ¦  «        }	|                     |	d	¬
¦  «        5  | j                             |t0          d¦  «         ddd¦  «         n# 1 swxY w Y   |j        }|                      |¦  «        }|                      t          j        |¦  «        }|                      ¦   «         ||f}t	          j        t          j        ¦  «        }t	          j        t?          |¦  «        ¦  «        }tA          ||t          j        t          j        ¦  «        }|  !                    |tD          ||¦  «        }| j#         $                    ||¦  «        }|  %                    t          j        ¦  «        }tM          j'        |||¬¦  «        }tM          j'        |||¬¦  «        }tQ          || )                    || *                    ¦   «         ¦  «        ||||¬¦  «         |S )a	  Utility function used for allocating a new array during LLVM code
    generation (lowering).  Given a target context, builder, array
    type, and a tuple or list of lowered dimension sizes, returns a
    LLVM value pointing at a Numba runtime allocated array.
    rH   r   r¡   rª   Nrr  r*  z3Don't know how to allocate array with layout '{0}'.Frn  )z[array is too big; `arr.size * arr.dtype.itemsize` is larger than the maximum possible size.rÅ  rR  )+ry   r{   r|   rÃ   r   r�   r€   r   r   rÐ  Úsmul_with_overflowrh  r&  rq   rS  r  rj   rÆ   r¿   rS   rÈ   r$  rp  rq  r¼   Úget_preferred_array_alignmentÚuint32rv  ÚMemInfoPointerÚvoidptrÚTypeRefr:   r$   rI  Ú_call_allocatorr  Úmeminfo_datar½   r
   rk   rÙ   r‰  rX  )r~   r>   rµ  r  r<  r  Údatatyper±   ÚarrlenÚoverflowr«   Úarrlen_multr°   Údimension_sizeÚallocsize_multr�  r|   Ú	align_valrƒ   r  ÚmipÚarytypeclassÚargtypesr¯   r›   rÒ   Úshape_arrayÚstrides_arrays                               rD   rQ  rQ  è  s%  € õ ˜Ñ Ô €FØ
ˆ&�˜'Ñ
"Ô
"€Cà×$Ò$ W¤]Ñ3Ô3€HØ×#Ò#¥E¤Jµ¸WÀgÑ0NÔ0NÑOÔO€Hð ×!Ò!¥%¤*¨aÑ0Ô0€FÝ�œ
 1™œ qÑ)Ô)€HØð 
ð 
ˆØ×0Ò0°¸Ñ;Ô;ˆØ×&Ò& {°AÑ6Ô6ˆØ—;’;Ø�g×+Ò+¨K¸Ñ;Ô;ñ
ô 
ˆˆð „|�qÒÐØˆˆØ	Œ˜3Ò	Ð	Ø�*ˆÝ& v¨a¨b¨b¤zÑ2Ô2ð 	Eð 	EˆNØ�NŠN˜7Ÿ;š; w¨r¤{°NÑCÔCÑDÔDÐDÐDÝ� Ñ)Ô)Ñ*Ô*ˆˆØ	Œ˜3Ò	Ð	Ø�*ˆØ$ S b Sœkð 	Eð 	EˆNØ�NŠN˜7Ÿ;š; w¨r¤{°NÑCÔCÑDÔDÐDÐDÝ˜‘.”.ˆˆå!ØA×HÒHØ”ñ ô  ñ!ô !ð 	!ð
 ×/Ò/°¸ÑAÔA€NØ×%Ò% n°aÑ8Ô8€IØ�{Š{˜8 W×%:Ò%:¸>È1Ñ%MÔ%MÑNÔN€Hà	�Š˜¨%ˆÑ	0Ô	0ð 
ð 
ð 	Ô×)Ò)Ø•Zð-ñ	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð ŒM€EØ×5Ò5°eÑ<Ô<€IØ× Ò ¥¤¨yÑ9Ô9€EØ×#Ò#Ñ%Ô% y°%Ð8€Då
Ô
�uœ}Ñ
-Ô
-€CÝ”=¥ g¡¤Ñ/Ô/€LÝ˜˜l­E¬J½¼ÑEÔE€Hà×&Ò& wµÀÈ4ÑPÔP€GØŒ;×#Ò# G¨WÑ5Ô5€Dà×#Ò#¥E¤JÑ/Ô/€FÝÔ$ W¨f¸Ð@Ñ@Ô@€KÝÔ& w°¸FÐCÑCÔC€Må�3ØŸš¨¨h×.AÒ.AÑ.CÔ.CÑDÔDØ$Ø(Ø$Ø"ð$ñ $ô $ð $ð €Js   É1"JÊJ#Ê&J#Ú	_allocatec                 ó   — d„ }|S )zTImplements a Numba-only default target (cpu) classmethod on the array
    type.
    c                 ó"   — t          ||¦  «        S rW  )Úintrin_alloc)Úclsr�  rƒ   s      rD   rí   z _ol_array_allocate.<locals>.impl<  s   € Ý˜I uÑ-Ô-Ð-rF   r¡   )r#  r�  rƒ   rí   s       rD   Ú_ol_array_allocater$  7  s   € ð
.ð .ð .à€KrF   c                 ó.   — |                       ||¦  «        S )z9Trampoline to call the intrinsic used for allocation
    )r  )rµ  r”   rƒ   s      rD   r  r  A  s   € ð ×Ò˜T 5Ñ)Ô)Ð)rF   c                 ón   — d„ }t          j        t           j        ¦  «        }t          |||¦  «        }||fS )z3Intrinsic to call into the allocator for Array
    c                 óH   — |\  }}| j                              |||¦  «        }|S rW  )r  Úmeminfo_alloc_aligned)r~   r>   r$   r  r�  rƒ   r¯   s          rD   r¾  zintrin_alloc.<locals>.codegenK  s*   € Ø!Ñˆ�EØ”+×3Ò3°G¸YÈÑNÔNˆØˆrF   )r   r  r  r$   )r¿  r�  rƒ   r¾  r  r\   s         rD   r"  r"  G  s@   € ðð ð õ
 Ô
�uœ}Ñ
-Ô
-€CÝ
�C˜ EÑ
*Ô
*€CØ�ˆ<ÐrF   c           	      ó–  — d„ }t          |t          j        ¦  «        r&d}|                      |||t          j        ¦  «        g}n:t          |t          j        ¦  «        sJ ‚|j        }t          j        |||¬¦  «        }g }|D ](}| 	                     || ||j
        |¦  «        ¦  «         Œ)|                      |t          j        d¦  «        }	t          |¦  «        D ]m}
|                     d||
         |	¦  «        }t          j        ||¦  «        5  | j                             |t"          d¦  «         ddd¦  «         n# 1 swxY w Y   Œn|S )z;
    Parse the shape argument to an array constructor.
    c                 ó  — |                       t          j        ¦  «        }|j        }t	          j        |¦  «        }t          |d|dz
  z  dz
  ¦  «        }|j        |k     r|                     ||¦  «        }n–|j        |k    r‹|                     d||¦  «        }	| 	                    |	d¬¦  «        5  | j
                             |t          d¦  «         ddd¦  «         n# 1 swxY w Y   |j        |k    r|                     ||¦  «        }n|}|S )z0Cast src to intp only if value can be maintainedrH   ú>Frn  )z#Cannot safely convert value to intpN)r½   r   r�   rI   r   rÐ  r   Úsextr"  r$  rp  rq  r¼   Útrunc)
r~   r>   Úsrc_tr�  rÒ   Ú
intp_widthÚintp_irÚmaxvalr  Ú	is_largers
             rD   Úsafecast_intpz#_parse_shape.<locals>.safecast_intpY  sL  € à×'Ò'­¬
Ñ3Ô3ˆØ”\ˆ
Ý”*˜ZÑ(Ô(ˆÝ˜' Q¨*°q©.Ñ%8¸AÑ$=Ñ?Ô?ˆØŒ;˜Ò#Ð#Ø—,’,˜s GÑ,Ô,ˆCˆCØŒ[˜JÒ&Ð&Ø×+Ò+¨C°°fÑ=Ô=ˆIØ—’ °5�Ñ9Ô9ð ð ØÔ!×1Ò1Ø�ZØ<ñô ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð
 Œ{˜ZÒ'Ð'Ø—m’m C¨Ñ1Ô1��à�Øˆ
s   Â/"CÃC!Ã$C!rH   r  r   r!  )znegative dimensions not allowedN)r˜   r   rš   rŽ   r�   ra  rÅ   r
   rÄ   rj   r:   Úget_constant_genericr9   r"  rœ  rp  rq  r¼   )r~   r>   rY  rŠ   r3  rq   Úpassed_shapesr  r«   r  r�  Úis_negs               rD   Ú_parse_shaper7  U  sš  € ðð ð õ* �"•e”mÑ$Ô$ð GØˆØ Ÿš g¨s°B½¼
ÑCÔCÐDˆˆå˜"�eœoÑ.Ô.Ð.Ð.Ð.ØŒxˆÝÔ,¨W°cÀÐFÑFÔFˆà€FØð Bð BˆØ�Š�m�m G¨W°a´f¸aÑ@Ô@ÑAÔAÐAÐAà×'Ò'¨µ´¸QÑ?Ô?€DÝ�T‰{Œ{ð ð ˆØ×$Ò$ S¨&°¬+°tÑ<Ô<ˆÝÔ  ¨&Ñ1Ô1ð 	ð 	ØÔ×-Ò-Ø�Ð%Iñô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	øð
 €Ms   Ä"D=Ä=E	ÅE	c                 ób   — |j         d         }|d         }|j        }|t          | |||¦  «        fS )zL
    Parse the arguments of a np.empty(), np.zeros() or np.ones() call.
    r   )r  r  r7  )r~   r>   r\   r  ÚarrshapetypeÚarrshaperµ  s          rD   Ú_parse_empty_argsr;  …  s8   € ð ”8˜A”;€LØ�AŒw€HØŒo€GØ•L ¨'°<ÀÑJÔJÐJÐJrF   c                 óø   — |j         d         }t          |t          j        ¦  «        rK t	          |¦  «        | ||d         ¬¦  «        }t          j        ||j        |j        ¬¦  «        }|j	        |fS |j	        dfS )z_
    Parse the arguments of a np.empty_like(), np.zeros_like() or
    np.ones_like() call.
    r   r  r  r¡   )
r  r˜   r   r™   ry   r
   rÄ   rf   rq   r  )r~   r>   r\   r  Úarytyper  r  s          rD   rÉ  rÉ  �  sz   € ð
 Œh�qŒk€GÝ�'�5œ;Ñ'Ô'ð #Ø!�j˜Ñ!Ô! '¨7¸$¸q¼'ÐBÑBÔBˆÝÔ% g¨s¬yÀÄÐMÑMÔMˆØŒ Ð&Ð&àŒ Ð"Ð"rF   c                 ón   — t          |t          j        ¦  «        rd| › d�}t          j        |¦  «        ‚d S )NzIf np.z0 dtype is a string it must be a string constant.)r˜   r   ÚUnicodeTyper	   rî   )Úfnamer|   rÑ   s      rD   Ú_check_const_str_dtyperA  �  sB   € Ý�%�Ô*Ñ+Ô+ð &ØN�uÐNÐNÐNˆÝÔ  Ñ%Ô%Ð%ð&ð &rF   c                 ó8   — |j         } ||||¦  «        }d„ }||fS )Nc                 óx   — t          | |||¦  «        \  }}t          | |||¦  «        }|                     ¦   «         S rW  )r;  rQ  r	  ©rk  r>   r\   rl  rµ  r  r  s          rD   r¾  znumpy_empty_nd.<locals>.codegen¨  s:   € Ý+¨E°7¸CÀÑHÔH‰ˆ�Ý˜U G¨W°fÑ=Ô=ˆØ�}Š}‰ŒÐrF   ©Úinstance_type)rn  Úty_shapeÚty_dtypeÚty_retty_refÚty_rettyr\   r¾  s          rD   Únumpy_empty_ndrK  £  s8   € àÔ)€HØ
ˆ(�8˜X |Ñ
4Ô
4€Cðð ð ð �ˆ<ÐrF   c                 ó†  ‡— t          d|¦  «         |t          u s7t          |t          j        ¦  «        r|j        t          u st          |¦  «        rt          j        }nt          |¦  «        }t          | ¦  «        }|�'|�%t          j
        ||d¬¦  «        Št          fˆfd„	}|S d| › d|› d�}t          j        |¦  «        ‚)NrY  rª   rN  c                 ó&   •— t          | |‰¦  «        S rW  )rK  )rf   r|   rN  s     €rD   rí   zol_np_empty.<locals>.impl½  s   ø€ Ý! %¨°Ñ6Ô6Ð6rF   z.Cannot parse input types to function np.empty(r  r  )rA  Úfloatr˜   r   ÚFunctionÚ
typing_keyr   ÚdoubleÚty_parse_dtypeÚty_parse_shaper™   r	   rî   )rf   r|   Únb_dtyperq   rí   rÑ   rN  s         @rD   Úol_np_emptyrU  ¯  sâ   ø€ å˜7 EÑ*Ô*Ð*Ø•ˆˆÝ	�E�5œ>Ñ	*Ô	*ð 	Ø/4Ô/?Å5Ð/HÐ/HÝ˜ÑÔð 0Iå”<ˆˆå! %Ñ(Ô(ˆå˜%Ñ Ô €DØÐ Ð 0Ý” (°¸cÐBÑBÔBˆå#ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7àˆàP¸uÐPÐPÈÐPÐPÐPˆÝÔ  Ñ%Ô%Ð%rF   c                 ó8   — |j         } ||||¦  «        }d„ }||fS )Nc                 óx   — t          | |||¦  «        \  }}t          | |||¦  «        }|                     ¦   «         S rW  )rÉ  rQ  r	  rD  s          rD   r¾  z$numpy_empty_like_nd.<locals>.codegenÊ  s:   € Ý0°¸ÀÀfÑMÔM‰ˆ�Ý˜U G¨W°fÑ=Ô=ˆØ�}Š}‰ŒÐrF   rE  )rn  Úty_prototyperH  rI  rJ  r\   r¾  s          rD   Únumpy_empty_like_ndrY  Å  s8   € àÔ)€HØ
ˆ(�< ¨<Ñ
8Ô
8€Cðð ð ð �ˆ<ÐrF   c                 ó´  ‡— t          d|¦  «         t          |¦  «        st          |¦  «        }n$t          | t          j        ¦  «        r| j        }n| }|�^t          | t          j        ¦  «        r-| j        dk    r| j        nd}|                      ||d¬¦  «        Šn4t	          j        |dd¦  «        Šnd| › d|› d	�}t          j
        |¦  «        ‚dˆfd
„	}|S )Nrë  r²  rª   F)r|   rS  rº  r   z3Cannot parse input types to function np.empty_like(r  r  c                 ó&   •— t          | |‰¦  «        S rW  )rY  )ra  r|   rN  s     €rD   rí   zol_np_empty_like.<locals>.implå  s   ø€ Ý" 3¨¨uÑ5Ô5Ð5rF   rW  )rA  r   rR  r˜   r   r™   r|   rS  r´  r	   rî   )ra  r|   rT  rS  rÑ   rí   rN  s         @rD   Úol_np_empty_liker\  Ñ  s  ø€ å˜<¨Ñ/Ô/Ð/Ý�uÑÔð Ý! %Ñ(Ô(ˆˆÝ	�C�œÑ	%Ô	%ð Ø”9ˆˆàˆØÐÝ�c�5œ;Ñ'Ô'ð 	2Ø#&¤:°Ò#4Ð#4�S”Z�Z¸#ˆFØ—H’H 8°FÀU�HÑKÔKˆEˆEå”K ¨!¨SÑ1Ô1ˆEˆEð0Ø #ð0ð 0Ø',ð0ð 0ð 0ˆåÔ  Ñ%Ô%Ð%ð6ð 6ð 6ð 6ð 6ð 6à€KrF   c                 ó8   — t          j        |¦  «        }d„ }||fS )Nc                 óÐ   —  t          |j        d         ¦  «        | ||d         ¦  «        }t          j        ||j        |                     |j        |j        ¦  «        d¦  «         d S rë   )ry   r  r
   rÊ  r›   rÆ   r±   r¶   )rk  r>   r\   rl  r  s        rD   r¾  z(_zero_fill_array_method.<locals>.codegenî  sb   € Ø%�j˜œ !œÑ%Ô% e¨W°f¸Q´iÑ@Ô@ˆÝŒ�w ¤¨'¯+ª+°c´lÀCÄJÑ*OÔ*OØñ	ô 	ð 	ð 	ð 	rF   )r   r�  )rn  rZ   r\   r¾  s       rD   Ú_zero_fill_array_methodr_  ê  s,   € å
Œ*�TÑ
Ô
€Cðð ð ð �ˆ<ÐrF   Ú
_zero_fillc                 ó   — d„ }|S )z?Adds a `._zero_fill` method to zero fill an array using memset.c                 ó$   — t          | ¦  «         d S rW  )r_  r{  s    rD   rí   z ol_array_zero_fill.<locals>.implø  s   € Ý Ñ%Ô%Ð%Ð%Ð%rF   r¡   )rZ   rí   s     rD   Úol_array_zero_fillrc  õ  s   € ð&ð &ð &à€KrF   c                 ó:   — t          d|¦  «         t          fd„}|S )NrÇ  c                 óZ   — t          j        | |¬¦  «        }|                     ¦   «          |S ©NrW  )r<  rY  r`  )rf   r|   ra  s      rD   rí   zol_np_zeros.<locals>.impl  s+   € ÝŒh�u EÐ*Ñ*Ô*ˆØ�ŠÑÔÐØˆ
rF   )rA  rN  ©rf   r|   rí   s      rD   Úol_np_zerosrh  ý  s0   € å˜7 EÑ*Ô*Ð*åð ð ð ð ð €KrF   c                 ó.   — t          d|¦  «         dd„}|S )NÚ
zeros_likec                 óZ   — t          j        | |¬¦  «        }|                     ¦   «          |S rf  )r<  rë  r`  )rV  r|   ra  s      rD   rí   zol_np_zeros_like.<locals>.impl  s+   € ÝŒm˜A UÐ+Ñ+Ô+ˆØ�ŠÑÔÐØˆ
rF   rW  ©rA  r|  s      rD   Úol_np_zeros_likerm    s-   € å˜<¨Ñ/Ô/Ð/ðð ð ð ð €KrF   c                 ó.   — t          d|¦  «         dd„}|S )NÚ	ones_likec                 óˆ   — t          j        | |¬¦  «        }|j        }t          t	          |¦  «        ¦  «        D ]}d||<   Œ|S ©NrW  rH   ©r<  rë  r4  r9   r¤   )rV  r|   ra  Úarr_flatr“   s        rD   rí   zol_np_ones_like.<locals>.impl  sJ   € ÝŒm˜A UÐ+Ñ+Ô+ˆØ”8ˆÝ�˜X™œÑ'Ô'ð 	ð 	ˆCØˆH�S‰MˆMØˆ
rF   rW  rl  r|  s      rD   Úol_np_ones_likert    s-   € å˜;¨Ñ.Ô.Ð.ðð ð ð ð €KrF   c                 óv   ‡— t          d|¦  «         t          |¦  «        st          |¦  «        Šn|Šdˆfd„	}|S )NÚfullc                 óˆ   •— t          j        | ‰¦  «        }|j        }t          t	          |¦  «        ¦  «        D ]}|||<   Œ|S rW  ©r<  rY  r4  r9   r¤   )rf   Ú
fill_valuer|   ra  rs  r“   rT  s         €rD   rv  zimpl_np_full.<locals>.full*  sH   ø€ ÝŒh�u˜hÑ'Ô'ˆØ”8ˆÝ�˜X™œÑ'Ô'ð 	'ð 	'ˆCØ&ˆH�S‰MˆMØˆ
rF   rW  )rA  r   rR  )rf   ry  r|   rv  rT  s       @rD   Úimpl_np_fullrz  "  s\   ø€ å˜6 5Ñ)Ô)Ð)Ý�uÑÔð Ý! %Ñ(Ô(ˆˆàˆðð ð ð ð ð ð €KrF   c                 ó.   — t          d|¦  «         dd„}|S )Nr  c                 ó†   — t          j        | |¦  «        }|j        }t          t	          |¦  «        ¦  «        D ]}|||<   Œ|S rW  rr  )rV  ry  r|   ra  rs  r“   s         rD   r  z$impl_np_full_like.<locals>.full_like7  sG   € ÝŒm˜A˜uÑ%Ô%ˆØ”8ˆÝ�˜X™œÑ'Ô'ð 	'ð 	'ˆCØ&ˆH�S‰MˆMØˆ
rF   rW  rl  )rV  ry  r|   r  s       rD   Úimpl_np_full_liker}  3  s.   € å˜;¨Ñ.Ô.Ð.ðð ð ð ð ÐrF   c                 ó.   — t          d|¦  «         dd„}|S )NÚonesc                 óˆ   — t          j        | |¬¦  «        }|j        }t          t	          |¦  «        ¦  «        D ]}d||<   Œ|S rq  rx  )rf   r|   ra  rs  r“   s        rD   rí   zol_np_ones.<locals>.implG  sJ   € ÝŒh�u EÐ*Ñ*Ô*ˆØ”8ˆÝ�˜X™œÑ'Ô'ð 	ð 	ˆCØˆH�S‰MˆMØˆ
rF   rW  rl  rg  s      rD   Ú
ol_np_onesr�  A  s/   € õ ˜6 5Ñ)Ô)Ð)ðð ð ð ð €KrF   c                 óŠ   ‡— t          d|¦  «         t          |¦  «        st          |¦  «        Šnt          j        Šdˆfd„	}|S )NÚidentityc                 óh   •— t          j        | | f‰¦  «        }t          | ¦  «        D ]	}d|||f<   Œ
|S r­  )r<  rÇ  r9   )r]  r|   ra  rn   rT  s       €rD   rƒ  z"impl_np_identity.<locals>.identityX  sA   ø€ ÝŒh˜˜1�v˜xÑ(Ô(ˆÝ�q‘”ð 	ð 	ˆAØˆC��1�‰IˆIØˆ
rF   rW  )rA  r   rR  r   rQ  )r]  r|   rƒ  rT  s      @rD   Úimpl_np_identityr…  P  s^   ø€ å˜: uÑ-Ô-Ð-Ý�uÑÔð  Ý! %Ñ(Ô(ˆˆå”<ˆðð ð ð ð ð ð
 €OrF   c                 ó   — d S rW  r¡   ©ÚNÚMs     rD   Ú_eye_none_handlerrŠ  `  rr  rF   c                 óH   — t          |t          j        ¦  «        rd„ }nd„ }|S )Nc                 ó   — | S rW  r¡   r‡  s     rD   rí   z$_eye_none_handler_impl.<locals>.implg  ó   € ØˆHrF   c                 ó   — |S rW  r¡   r‡  s     rD   rí   z$_eye_none_handler_impl.<locals>.implj  r�  rF   ©r˜   r   rR  )rˆ  r‰  rí   s      rD   Ú_eye_none_handler_implr�  d  s>   € å�!•U”^Ñ$Ô$ð ð	ð 	ð 	ð 	ð	ð 	ð 	à€KrF   c                 óB  ‡— |�t          |t          j        ¦  «        rt          j        t
          ¦  «        ŠnYt          |t          j        t          j        f¦  «        rt          t          |d|¦  «        ¦  «        Šnt          j        |¦  «        Šd dt
          fˆfd„	}|S )Nr|   r   c                 ó   •— t          | |¦  «        }t          j        | |f‰¦  «        }|dk    r0t          | ||z
  ¦  «        }t	          |¦  «        D ]}d||||z   f<   Œn/t          | |z   |¦  «        }t	          |¦  «        D ]}d|||z
  |f<   Œ|S r  )rŠ  r<  rÇ  rð  r9   )	rˆ  r‰  r×   r|   Ú_Mra  Údrn   rù  s	           €rD   rí   znumpy_eye.<locals>.implz  s®   ø€ Ý˜q !Ñ$Ô$ˆÝŒh˜˜2�w Ñ#Ô#ˆØ�Š6ˆ6Ý�A�r˜A‘v‘”ˆAÝ˜1‘X”Xð "ð "�Ø !��A�q˜1‘u�H‘�ð"õ �A˜‘E˜2‘”ˆAÝ˜1‘X”Xð "ð "�Ø !��A˜‘E˜1�H‘�Øˆ
rF   )
r˜   r   rR  r<  r|   rN  Ú	DTypeSpecr÷  r   r  )rˆ  r‰  r×   r|   rí   rù  s        @rD   Ú	numpy_eyer–  o  s˜   ø€ ð €}�
 5­%¬.Ñ9Ô9€}ÝŒX•e‰_Œ_ˆˆÝ	�E�EœO­U¬\Ð:Ñ	;Ô	;ð å•g˜e W¨eÑ4Ô4Ñ5Ô5ˆˆåŒX�e‰_Œ_ˆà˜!¥5ð ð ð ð ð ð ð €KrF   c                 óÆ   — t          | ¦  «        st          j        d¦  «        ‚t          | t          j        ¦  «        r#| j        dvrt          j        d¦  «        ‚dd„}|S d S )Nú#The argument "v" must be array-like)rH   rt  zInput must be 1- or 2-d.r   c                 ó~  — | j         dk    rŽ| j        }|d         t          |¦  «        z   }t          j        ||f| j        ¦  «        }|dk    r&t          ||z
  ¦  «        D ]}| |         ||||z   f<   Œn%t          ||z   ¦  «        D ]}| |         |||z
  |f<   Œ|S | j        \  }}|dk     r||z   }|dk    r||z
  }t          t          ||¦  «        d¦  «        }t          j	        || j        ¦  «        }|dk    r#t          |¦  «        D ]}| |||z   f         ||<   Œn"t          |¦  «        D ]}| ||z
  |f         ||<   Œ|S rÏ  )
rq   rf   rH  r<  rÇ  r|   r9   rG  rð  rY  )rØ   r×   r«   r]  rÀ  rn   ÚrowsÚcolss           rD   Ú	diag_implzimpl_np_diag.<locals>.diag_impl’  sy  € ØŒv˜Š{ˆ{Ø”G�Ø�a”D�3˜q™6œ6‘M�Ý”h  1˜v q¤wÑ/Ô/�Ø˜’6�6Ý" 1 q¡5™\œ\ð -ð -˜Ø()¨!¬˜˜A˜q 1™u˜H™˜ð-õ # 1 q¡5™\œ\ð -ð -˜Ø()¨!¬˜˜A ™E 1˜H™˜Ø�
àœW‘
��dØ�q’5�5Ø !™8�DØ�q’5�5Ø !™8�DÝ�˜D $™œ¨Ñ+Ô+�Ý”h˜q !¤'Ñ*Ô*�Ø˜’6�6Ý" 1™XœXð -ð -˜Ø!" 1 a¨!¡e 8¤˜˜A™˜ð-õ # 1™XœXð -ð -˜Ø!" 1 q¡5¨! 8¤˜˜A™˜Ø�
rF   rö   )r   r	   rî   r˜   r   r™   rq   ÚNumbaTypeError)rØ   r×   rœ  s      rD   Úimpl_np_diagrž  ‰  s~   € å˜AÑÔð HÝÔ Ð!FÑGÔGÐGå�!•U”[Ñ!Ô!ð ØŒ6˜ÐÐÝÔ'Ð(BÑCÔCÐCð	ð 	ð 	ð 	ð6 Ðð?ð rF   c                 ó  ‡‡— t          | t          j        ¦  «        sd}t          j        |¦  «        ‚t          | j        t          j        ¦  «        sd}t          j        |¦  «        ‚t          | ¦  «        Šd‰z  Šˆˆfd„}|S )Nz5The argument "dimensions" must be a tuple of integersrê  c                 óö   •— t          j        ‰f| z   t           j        ¬¦  «        }d}| D ]N}t          j        |t           j        ¬¦  «                             t          ‰||¦  «        ¦  «        }|||<   |dz  }ŒO|S )NrW  r   rH   )r<  rY  r  Úaranger¾  r0   )Ú
dimensionsr  rn   r�  r“   rˆ  rf   s        €€rD   rí   znumpy_indices.<locals>.impl½  s„   ø€ ÝŒh˜�t˜jÑ(µ´Ð9Ñ9Ô9ˆØˆØð 	ð 	ˆCÝ”)˜C¥r¤xÐ0Ñ0Ô0×8Ò8Ý˜e Q¨Ñ,Ô,ñô ˆCð ˆC�‰FØ�‰FˆAˆAàˆ
rF   )r˜   r   rA  r	   rî   r|   rš   r¤   )r¢  rÑ   rí   rˆ  rf   s      @@rD   Únumpy_indicesr£  °  s”   øø€ å�j¥%¤.Ñ1Ô1ð &ØEˆÝÔ  Ñ%Ô%Ð%å�jÔ&­¬Ñ6Ô6ð &ØEˆÝÔ  Ñ%Ô%Ð%åˆJ‰Œ€AØ�1‰H€Eð
ð 
ð 
ð 
ð 
ð 
ð €KrF   c                 óÆ   — t          | ¦  «        sd}t          j        |¦  «        ‚t          |t          t
          j        f¦  «        sd}t          j        |¦  «        ‚dd„}|S )Nr˜  z#The argument "k" must be an integerr   c                 ót  — t          j        | ¦  «        } |                      ¦   «         } t          | ¦  «        }t	          |¦  «        }||z   }t          j        ||f| j        ¦  «        }t          j        d| ¦  «        }t          j        d|¦  «        }t          |¦  «        D ]}| |         |||z   ||z   f<   Œ|S rë   )	r<  rÒ  rÆ  r¤   rH  rÇ  r|   Úmaximumr9   )	rØ   r×   r«   Úabs_kr]  r  rn   Újr  s	            rD   rí   znumpy_diagflat.<locals>.implÖ  s­   € ÝŒJ�q‰MŒMˆØ�GŠG‰IŒIˆÝ�‰FŒFˆÝ�A‘”ˆØ�‰IˆÝŒh˜˜1�v˜qœwÑ'Ô'ˆÝŒJ�q˜1˜"ÑÔˆÝŒJ�q˜!ÑÔˆÝ�q‘”ð 	%ð 	%ˆAØ ! !¤ˆC��A‘�q˜1‘u�ÑÐàˆ
rF   rö   )r   r	   rî   r˜   rÁ   r   rš   )rØ   r×   rÑ   rí   s       rD   Únumpy_diagflatr©  Ì  sr   € å˜AÑÔð &Ø3ˆÝÔ  Ñ%Ô%Ð%å�a�#�uœ}Ð-Ñ.Ô.ð &Ø3ˆÝÔ  Ñ%Ô%Ð%ðð ð ð ð €KrF   c                 ó¬  — |dv sJ ‚|dk    r:d}t          d| ¦  «        D ]&}d|z  }|d|› dd                     |¦  «        › d	�z  }Œ'n9d
}t          d| ¦  «        D ]&}d|z  }|d|› dd                     |¦  «        › d�z  }Œ't          j        |¦  «        }t	          |t          ¦   «         ¦  «         t          ¦   «         d|› �         }t          |¦  «        S )N)r%  rÍ  r%  zv
            def _getitem(a, idx, axis):
                if axis == 0:
                    return a[idx, ...]
        rH   )ú:z
                elif axis == z:
                    return a[r  z, idx, ...]
            z|
            def _setitem(a, idx, axis, vals):
                if axis == 0:
                    a[idx, ...] = vals
        z:
                    a[z, idx, ...] = vals
            rÉ  )r9   r  ÚtextwrapÚdedentÚexecÚglobalsr&   )rq   râ  r¦  rn   Úlsts        rD   Ú"generate_getitem_setitem_with_axisr±  ç  s1  € ØÐ)Ð)Ð)Ð)Ð)àˆyÒÐðˆõ
 �q˜$‘”ð 	ð 	ˆAØ˜1‘*ˆCØð Øðð à"Ÿiši¨™nœnðð ð ñ ˆBˆBð	ðˆõ �q˜$‘”ð 	ð 	ˆAØ˜1‘*ˆCØð Øðð à—y’y ‘~”~ðð ð ñ ˆBˆBõ
 
Œ˜Ñ	Ô	€BÝˆ�W‰YŒYÑÔÐÝ	‰Œ�:�t�:�:Ô	€BÝ˜BÑÔÐrF   Útakec                 ó~  ‡‡‡‡‡	— t          j        |¦  «        rËt          | t          j        ¦  «        r t          |t          j        ¦  «        rdd„}|S t          | t          j        ¦  «        r-t          |t          j        ¦  «        r|j        dk    Šdˆfd„	}|S t          | t          j        ¦  «        r,t          |t          j        t          j        f¦  «        rdd„}|S d S d S t          | t          j        ¦  «        rAt          |t          j        ¦  «        r'd| j	        dz
  z  Š	t          ˆ	fd„¦   «         Šdˆfd„	}|S t          | t          j        ¦  «        rat          |t          j        t          j        t          j        f¦  «        r2| j	        }t          |d	¦  «        Št          |d
¦  «        Šdˆˆfd„	}|S d S d S )Nc                 óˆ   — || j         dz
  k    s|| j          k     rt          d¦  «        ‚|                      ¦   «         |         S )NrH   úIndex out of bounds)r”   Ú
IndexErrorrÆ  )rV  r§   râ   s      rD   Ú	take_implznumpy_take.<locals>.take_impl  sC   € Ø˜aœf q™jÒ)Ð)¨W¸¼°wÒ->Ð->Ý$Ð%:Ñ;Ô;Ð;Ø—w’w‘y”y Ô)Ð)rF   r*  c                 óz  •— t          j        |j        | j        ¬¦  «        }‰	r|                     ¦   «         }n|}t          j        |¦  «        }d}|                      ¦   «         }|D ];}|| j        dz
  k    s|| j         k     rt          d¦  «        ‚||         ||<   |dz   }Œ<|                     |j	        ¦  «        S )NrW  r   rH   rµ  )
r<  rY  r”   r|   r´  rP  rÆ  r¶  r¾  rf   )
rV  r§   râ   rÀ  ÚwalkerÚitrn   r4  r¥  ÚF_orders
            €rD   r·  znumpy_take.<locals>.take_impl  s¿   ø€ Ý”h˜wœ|°1´7Ð;Ñ;Ô;�Øð %Ø$Ÿ\š\™^œ^�F�Fà$�FÝ”Y˜vÑ&Ô&�Ø�Ø—w’w‘y”y�Øð ð �AØ˜AœF Q™JÒ'Ð'¨1°´¨wª;¨;Ý(Ð)>Ñ?Ô?Ð?Ø! !œW�C˜‘FØ˜A™�A�AØ—{’{ 7¤=Ñ1Ô1Ð1rF   c                 óT   — t          j        |¦  «        }t          j        | |¦  «        S rW  )r<  rË   r²  )rV  r§   râ   Úconverts       rD   r·  znumpy_take.<locals>.take_impl,  s#   € Ýœ( 7Ñ+Ô+�Ý”w˜q 'Ñ*Ô*Ð*rF   rö   rH   c                 óZ  •— t          ‰¦  «        }d}|t          | j        ¦  «        k     r| j        |         dk    sJ | j        ¦   «         ‚t          t          | j        ¦  «        ¦  «        D ]+}| j        |         }||k    rt	          |||¦  «        }|dz  }Œ,|                      |¦  «        S r  )r¿   r¤   rf   r9   r0   r¾  )rã  râ   r^  r¨  r“   r«   r  s         €rD   Ú_squeezeznumpy_take.<locals>._squeeze7  s¤   ø€ å˜A‘h”h�Ø�Ø�c !¤'™lœlÒ*Ð*¨q¬w°t¬}ÀÒ/AÐ/AÐ/AÀ1Ä7Ñ/AÔ/AÐAÝ ¥ Q¤W¡¤Ñ.Ô.ð ð �CØœ œ�AØ˜d’{�{Ý+¨C°°AÑ6Ô6˜Ø˜Q™˜øØ—y’y ‘~”~Ð%rF   c                 ó’   •— t          j        | |f|¬¦  «        }| j        dk    r|d         S |dk     r
|| j        z  } ‰||¦  «        S )NrÖ  rH   r   )r<  r²  rq   )rV  r§   râ   rã  r¿  s       €rD   r·  znumpy_take.<locals>.take_implC  sW   ø€ Ý”G˜A ˜z°Ð5Ñ5Ô5�Ø”6˜Q’;�;ð ˜Qœ4�KØ˜!’8�8Ø˜AœF‘N�DØ�x  4Ñ(Ô(Ð(rF   r%  rÍ  c                 ó‚  •— |}|dk     r
|| j         z  }|dk     s|| j         k    rd|› d| j         › �}t          |¦  «        ‚t          | j        |t	          |¦  «        ¦  «        }t          j        || j        ¬¦  «        }t          t	          |¦  «        ¦  «        D ]#} ‰	| ||         |¦  «        } ‰
||||¦  «         Œ$|S )Nr   zaxis z) is out of bounds for array of dimension rW  )	rq   r¼   r0   rf   r¤   r<  rY  r|   r9   )rV  r§   râ   rú   rÑ   rf   r  rn   r¦  Ú_getitemÚ_setitems            €€rD   r·  znumpy_take.<locals>.take_implZ  sÞ   ø€ Ø�Ø˜!’8�8Ø˜AœF‘N�Dà˜!’8�8˜t q¤vš~˜~ð4 2ð 4ð 4Ø+,¬6ð4ð 4�Cå$ S™/œ/Ð)å% a¤g¨tµS¸±\´\ÑBÔB�Ý”h˜u¨A¬GÐ4Ñ4Ô4�Ý�s 7™|œ|Ñ,Ô,ð .ð .�AØ ˜  G¨A¤J°Ñ5Ô5�AØ�H˜S ! T¨1Ñ-Ô-Ð-Ð-Ø�
rF   rW  )r
   r   r˜   r   r™   rš   rS  ra  ra  rq   r&   r±  )
rV  r§   râ   r·  rq   r»  rÂ  rÃ  r¿  r  s
        @@@@@rD   Ú
numpy_takerÄ  
  s6  øøøøø€ õ Ô˜4Ñ Ô ð \Ý�a�œÑ%Ô%ð 	­*°W½e¼mÑ*LÔ*Lð 	ð*ð *ð *ð *ð Ðå�a�œÑ%Ô%ð 	­*°W½e¼kÑ*JÔ*Jð 	Ø”n¨Ò+ˆGð2ð 2ð 2ð 2ð 2ð 2ð Ðå�a�œÑ%Ô%ð 	Ý˜7¥U¤Zµ´Ð$AÑBÔBð	ð+ð +ð +ð +ð Ðð	ð 	ð 	ð 	õ �a�œÑ%Ô%ð 	­*°W½e¼mÑ*LÔ*Lð 	Ø˜œ ™
Ñ#ˆAõ
 ð	&ð 	&ð 	&ð 	&ñ Ôð	&ð)ð )ð )ð )ð )ð )ð Ðå�a�œÑ%Ô%ð 	Ý˜7¥U¤[µ%´*½e¼oÐ$NÑOÔOð	ð ”6ˆDå9¸$À	ÑJÔJˆHÝ9¸$À	ÑJÔJˆHðð ð ð ð ð ð ð  Ðð1	ð 	ð 	ð 	rF   c                  ób  — d„ | D ¦   «         }t          d„ |D ¦   «         ¦  «        rt          j        }n|t          d„ |D ¦   «         ¦  «        rt          j        }nVt	          t          ddt          j        t          ¦  «        j        z  z  ¦  «        }d„ |D ¦   «         }t          ||gz   ¦  «        }|S )Nc                 óF   — g | ]}t          |t          j        ¦  «        °|‘ŒS r¡   r�  rU  s     rD   r£   z!_arange_dtype.<locals>.<listcomp>n  s)   € ÐCÐCÐC�A¥Z°µ5´>Ñ%BÔ%BÐCˆaÐCÐCÐCrF   c              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S rW  r~  rU  s     rD   rZ  z _arange_dtype.<locals>.<genexpr>p  s.   è è € Ð
8Ð
8¨A�:�a�œÑ'Ô'Ð
8Ð
8Ð
8Ð
8Ð
8Ð
8rF   c              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S rW  )r˜   r   ÚFloatrU  s     rD   rZ  z _arange_dtype.<locals>.<genexpr>r  s.   è è € Ð8Ð8¨A�Z˜�5œ;Ñ'Ô'Ð8Ð8Ð8Ð8Ð8Ð8rF   zint%sr  c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r¡   )r   Ú	unliteralr  s     rD   r£   z!_arange_dtype.<locals>.<listcomp>�  s"   € Ð?Ð?Ð?°1�EœO¨AÑ.Ô.Ð?Ð?Ð?rF   )
r[  r   Ú
complex128r¸   r  r<  r|   rÁ   r±   rG  )r  Úboundsr|   ÚNPY_TYÚunliteral_boundss        rD   Ú_arange_dtyperÐ  m  s½   € ØCÐC˜ÐCÑCÔC€Få
Ð
8Ð
8°Ð
8Ñ
8Ô
8Ñ8Ô8ð 2ÝÔ ˆˆÝ	Ð8Ð8°Ð8Ñ8Ô8Ñ	8Ô	8ð 2Ý”ˆˆõ � ¨1­r¬x½©}¬}Ô/EÑ+EÑ FÑGÔGˆð @Ð?¸Ð?Ñ?Ô?ÐÝÐ$¨ yÑ0Ñ1Ô1ˆà€LrF   c                ó^  ‡‡‡‡‡	— t          |t          j        ¦  «        r|j        }t          |t          j        ¦  «        r|j        }t          |t          j        ¦  «        r|j        }|€t          j        }|€t          j        }|€t          j        }t          | t          j        ¦  «        rrt          |t          j        t          j        f¦  «        rLt          |t          j        t          j        f¦  «        r&t          |t          j        t          j        f¦  «        sd S t          |t          j        ¦  «        rt          | ||¦  «        Šn|j	        Št          d„ | ||fD ¦   «         ¦  «        Š	t          | dd ¦  «        Št          |dd ¦  «        Št          |dd ¦  «        Šdˆˆˆˆˆ	fd„	}|S )Nc                 óB   — g | ]}t          |t          j        ¦  «        ‘ŒS r¡   r~  r  s     rD   r£   znp_arange.<locals>.<listcomp>£  s4   € ð 5ð 5ð 5Øõ " !¥U¤]Ñ3Ô3ð 5ð 5ð 5rF   rï   c                óî  •— ‰�‰n| }‰�‰n|}‰�‰n|}|�|nd}|€d|}	}n||}	}|dk    rt          d¦  «        ‚|	|z
  |z  }
t          t          j        |
j        ¦  «        ¦  «        }‰du rEt          t          j        |
j        ¦  «        ¦  «        }t          t          ||¦  «        d¦  «        }nt          |d¦  «        }t          j	        |‰¦  «        }|}t          |¦  «        D ]}|||z  z   ||<   Œ|S )NrH   r   zMaximum allowed size exceededT)r¼   rÁ   ÚmathÚceilr„  r†  rG  rð  r<  rY  r9   )r;  ró  ré  r|   Ú	lit_startÚlit_stopÚlit_stepÚ_stepÚ_startÚ_stopÚnitems_cÚnitems_rÚnitems_ir¶   ra  rŠ   rn   Ústart_valueÚ
step_valueÚ
stop_valueÚ
true_dtypeÚuse_complexs                    €€€€€rD   rí   znp_arange.<locals>.implª  s(  ø€ à#.Ð#:�K�KÀˆ	Ø!+Ð!7�:�:¸TˆØ!+Ð!7�:�:¸Tˆà$Ð0��°aˆØÐØ˜y�EˆFˆFà% x�EˆFà�AŠ:ˆ:ÝÐ<Ñ=Ô=Ð=à˜F‘N eÑ+ˆÝ•t”y ¤Ñ/Ô/Ñ0Ô0ˆð ˜$ÐÐÝ�4œ9 X¤]Ñ3Ô3Ñ4Ô4ˆHÝ�˜X xÑ0Ô0°!Ñ4Ô4ˆFˆFå˜ 1Ñ%Ô%ˆFÝŒh�v˜zÑ*Ô*ˆØˆÝ�v‘”ð 	'ð 	'ˆAØ˜A ™IÑ&ˆC�‰FˆFØˆ
rF   r'  )r˜   r   ÚOptionalr:   r�  r÷  rR  r•  rÐ  r|   r[  r  )
r;  ró  ré  r|   rí   rß  rà  rá  râ  rã  s
        @@@@@rD   Ú	np_arangerå  ‡  s¸  øøøøø€ å�$�œÑ'Ô'ð ØŒyˆÝ�$�œÑ'Ô'ð ØŒyˆÝ�%�œÑ(Ô(ð Ø”
ˆà€|ÝŒzˆØ€|ÝŒzˆØ€}Ý”
ˆå�u�eœlÑ+Ô+ð Ý�t�eœn­e¬lÐ;Ñ<Ô<ðå�t�eœn­e¬lÐ;Ñ<Ô<ðõ ˜5¥5¤>µ5´?Ð"CÑDÔDðð
 	ˆå�%�œÑ(Ô(ð !Ý" 5¨$°Ñ5Ô5ˆ
ˆ
à”[ˆ
åð 5ð 5Ø!&¨¨dÐ 3ð5ñ 5ô 5ñ 6ô 6€Kõ ˜% °$Ñ7Ô7€KÝ˜˜°Ñ5Ô5€JÝ˜˜°Ñ5Ô5€Jðð ð ð ð ð ð ð ð ð ð< €KrF   c                 ó$  ‡— t          d„ | |fD ¦   «         ¦  «        sd S t          |t          t          j        f¦  «        sd}t          j        |¦  «        ‚t          d„ | |fD ¦   «         ¦  «        rt          j        Šnt          j	        Šdˆfd„	}|S )Nc              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S rW  )r˜   r   r÷  r€  s     rD   rZ  z!numpy_linspace.<locals>.<genexpr>Í  s.   è è € ÐFÐF°�z˜#�uœ|Ñ,Ô,ÐFÐFÐFÐFÐFÐFrF   r|  c              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S rW  r~  r€  s     rD   rZ  z!numpy_linspace.<locals>.<genexpr>Ô  r�  rF   rs  c                 óþ   •— t          j        |‰¦  «        }| dz  } |dz  }|dk    r|S |dz
  }|dk    r9|| z
  }t          j        ||¦  «        }t          d|¦  «        D ]}| ||z  z   ||<   Œn| |d<   |dk    r||d<   |S )Ng      ð?r   rH   rr  )r<  rY  Údivider9   )	r;  ró  rx  ra  ÚdivÚdeltaré  rn   r|   s	           €rD   rv  z numpy_linspace.<locals>.linspaceÚ  s´   ø€ ÝŒh�s˜EÑ"Ô"ˆð ˜‘ˆØ�c‰zˆØ�!Š8ˆ8ØˆJØ�A‰gˆØ�Š7ˆ7Ø˜5‘LˆEÝ”9˜U CÑ(Ô(ˆDÝ˜1˜c‘]”]ð ,ð ,�Ø ! d¡(Ñ+��A‘�ð,ð ˆC�‰FØ�Š7ˆ7ØˆC�‰GØˆ
rF   ry  )
rÞ  r˜   rÁ   r   rš   r	   rî   r[  rÌ  r¸   )r;  ró  rx  rÑ   rv  r|   s        @rD   Únumpy_linspacerí  Ë  s³   ø€ åÐFÐF¸À¸ÐFÑFÔFÑFÔFð Øˆå�c�C¥¤Ð/Ñ0Ô0ð &Ø5ˆÝÔ  Ñ%Ô%Ð%å
Ð
CÐ
C°e¸T°]Ð
CÑ
CÔ
CÑCÔCð ÝÔ ˆˆå”ˆðð ð ð ð ð ð, €OrF   c           
      ó‚  — |j         d         } t          |¦  «        | ||d         ¬¦  «        }t          j        ||j        ¦  «        }|j        }t          | |||¦  «        }|j        }	|j        }
|j        dv sJ ‚|j        |j        k    r%t          j	        ||
|	|j
        |j        d¬¦  «         nèt          j        ||j        ¦  «        }t          j        ||j        ¦  «        }|                      t          j        ¦  «        }t          j        |||¦  «        5 }t          j        | ||	|||j        |¦  «        }t          j        | ||
|||j        |¦  «        }|                     |                     |¦  «        |¦  «         ddd¦  «         n# 1 swxY w Y   t)          | ||j        |                     ¦   «         ¦  «        S )z
    Array copy.
    r   r  r_  rH   r‚   N)r  ry   r
   rÄ   rf   r  rQ  r›   rS  Ú
raw_memcpyr¶   r±   r°   r½   r   r�   rŽ  rR  r(  r?   r!   r	  )r~   r>   r\   r  r=  r  r  ÚrettyperÀ  rƒ  r+  r„  r*  rÒ   r§   r{  r‘  s                    rD   Ú_array_copyrñ  ó  sõ  € ð Œh�qŒk€GØ
�*�WÑ
Ô
˜g w°d¸1´gÐ
>Ñ
>Ô
>€CÝÔ! '¨3¬9Ñ5Ô5€FàŒo€GÝ
˜ '¨7°FÑ
;Ô
;€CàŒx€HØ”€IàŒ>˜TÐ!Ð!Ð!Ð!Ø„~˜œÒ'Ð'åÔ˜7 I¨x¸¼Øœ<¨qð	2ñ 	2ô 	2ð 	2ð 	2õ Ô*¨7°C´KÑ@Ô@ˆÝÔ+¨G°S´[ÑAÔAˆØ×'Ò'­¬
Ñ3Ô3ˆåÔ˜w¨°Ñ7Ô7ð 	;¸7ÝÔ/°¸À(Ø06¸Ø07´ÀñIô IˆGõ Ô0°¸'À9Ø17¸Ø18´ÀñJô JˆHð �MŠM˜'Ÿ,š, wÑ/Ô/°Ñ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;õ ˜G W¨c¬o¸s¿}º}¹¼ÑOÔOÐOs   ÄA(FÆFÆFc                 ó®   — t          |t          j        ¦  «        sJ ‚|j        dk    rdnd}|                     |d¬¦  «        } ||¦  «        }|t
          fS )Nr*  rª   F)rS  rº  )r˜   r   r™   rS  r´  rñ  )r¿  rV  rS  rÀ  r\   s        rD   Ú_array_copy_intrinsicró    sZ   € å�a�œÑ%Ô%Ð%Ð%Ð%Ø”H ’O�OˆSˆS¨€FØ
�&Š&˜¨ˆ&Ñ
/Ô
/€CØ
ˆ#ˆa‰&Œ&€CØ•ÐÐrF   z
array.copyc                 ó&   — t          | |||¦  «        S rW  )rñ  rE  s       rD   Ú
array_copyrõ  !  s   € å�w ¨¨dÑ3Ô3Ð3rF   c                 óŽ   — t          | ¦  «        st          j        d¦  «        ‚t          | t          j        ¦  «        rd„ }nd„ }|S )NrÄ  c                 ó    — t          | ¦  «        S rW  )ró  rä  s    rD   Ú
numpy_copyz#impl_numpy_copy.<locals>.numpy_copy-  s   € Ý(¨Ñ+Ô+Ð+rF   c                 ó*   — t          j        | ¦  «        S rW  )r<  rÒ  rä  s    rD   rø  z#impl_numpy_copy.<locals>.numpy_copy0  s   € å”:˜a‘=”=Ð rF   )r   r	   rî   r˜   r   r™   )rV  rø  s     rD   Úimpl_numpy_copyrú  &  sm   € å˜AÑÔð 2ÝÔ ð "1ñ 2ô 2ð 	2õ �!•U”[Ñ!Ô!ð !ð	,ð 	,ð 	,ð 	,ð	!ð 	!ð 	!ð ÐrF   c           	      óR  — |j         }|j        d         }|j        |k    s
J d¦   «         ‚|j        dk    �r|j        dk    sJ ‚ t	          |¦  «        | ||d         ¬¦  «        } t	          |¦  «        | |¦  «        }|                      |t          j        t          j        d¦  «        d¦  «        }	|  	                    |t          j        t          j        d¦  «        |j
        f¦  «        }
t          ||j        |	|
|j
        |j        |j        ¦  «         t          | |||                     ¦   «         ¦  «        S |j        |j        k    s|j        dk    r!|j        dv rt          | |||d         ¦  «        S |j        dk    �r|dv sJ ‚|dk    rt"          nt$          }t'          || |||d         ¦  «        }|                     |¦  «        5 \  }}|5  t          | |||d         ¦  «        }|j        }d	d	d	¦  «         n# 1 swxY w Y   |5  t-          | |||¦  «        }|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 t-          | |||¦  «        S )
zd
    Common logic for layout conversion function;
    e.g. ascontiguousarray and asfortranarray
    r   z return-type has incorrect layoutrH   r  rê  r_  r²  rª   N)r  r  rS  rq   ry   r4  r   rA  r�   r  r±   rÙ   r›   r¯   r²   r    r	  r   r   r¸  rz  Úblockrñ  Úphir:   Úadd_incoming)r~   r>   r\   r  Úoutput_layoutrN  rÛ   r  rÀ  rf   r°   Ú
check_funcr—  ÚthenÚorelseÚout_thenÚthen_blkÚ
out_orelseÚ
orelse_blkÚret_phis                       rD   Ú_as_layout_arrayr  6  sx  € ð
 ŒO€EØŒH�QŒK€EØŒ<˜=Ò(Ð(Ð(Ð*LÑ(Ô(Ð(à„z�Q‚�àŒz˜QŠˆˆˆØ�j˜ÑÔ ¨¸¸Q¼Ð@Ñ@Ô@ˆØ�j˜ÑÔ ¨Ñ1Ô1ˆà×,Ò,Ø•U”^¥E¤J°Ñ2Ô2°Dñ
ô 
ˆð ×$Ò$ WÝ%*¤^µE´JÀÑ%BÔ%BØ&)¤l _ñ6ô 6ˆõ 	�s˜CœH e¨W°c´lØ”{ C¤Jñ	0ô 	0ð 	0å  ¨'°5¸#¿-º-¹/¼/ÑJÔJÐJà
Œ,˜%œ,Ò
&Ð
&Ø”
˜a’� E¤L°DÐ$8Ð$8å  ¨'°5¸$¸q¼'ÑBÔBÐBð Œ<˜3ÒÑð ! DÐ(Ð(Ð(Ð(Ø*7¸3Ò*>Ð*>�˜ÅJˆJÝ.¨zØ/6Ø/6Ø/4Ø/3°A¬wñ	8ô 8ˆIð
 —’ Ñ+Ô+ð 	/©~°°fàð -ð -Ý0°¸'À5Ø15°a´ñ :ô  :�Hà&œ}�Hð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð
 ð /ð /Ý!,¨W°g¸sÀDÑ!IÔ!I�JØ!(¤�Jð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð —k’k (¤-Ñ0Ô0ˆGØ× Ò  ¨8Ñ4Ô4Ð4Ø× Ò  ¨ZÑ8Ô8Ð8ØˆNõ ˜w¨°°dÑ;Ô;Ð;sZ   ÇIÇ G:Ç.IÇ:G>	Ç>IÈG>	ÈIÈH-È!IÈ-H1	È1IÈ4H1	È5IÉIÉIc                 óæ   ‡— t          ‰t          j        ¦  «        st          j        ‰¦  «        ‚|                     ‰j        t          |j        d¦  «        d¬¦  «        } ||‰¦  «        }|ˆfd„fS )NrH   F)rS  rq   rº  c                 ó6   •— t          | |||‰j        ¬¦  «        S )N)rÿ  )r  rï   )r×  rû  r«   rV  rÿ  s       €rD   ré  z,_as_layout_array_intrinsic.<locals>.<lambda>ƒ  s%   ø€ Õ#3Ø	ˆ1ˆa� -Ô"=ð$?ñ $?ô $?€ rF   )	r˜   r   r%   r	   ÚRequireLiteralValuer´  rï   rG  rq   )r¿  rV  rÿ  rÀ  r\   s     `  rD   Ú_as_layout_array_intrinsicr  w  s�   ø€ å�m¥UÔ%8Ñ9Ô9ð 8ÝÔ(¨Ñ7Ô7Ð7ð �&Š&ØÔ*Ý�”˜‰^Œ^Øð ñ ô €Cð ˆ#ˆa�Ñ
Ô
€Càð ?ð ?ð ?ð ?ð ?ð ?rF   c                 óÚ   — t          | ¦  «        st          j        d¦  «        ‚t          | t          j        t          j        f¦  «        rd„ }nt          | t          j        ¦  «        rd„ }|S )NrÄ  c                 óN   — t          j        t          j        | ¦  «        ¦  «        S rW  )r<  ÚascontiguousarrayrË   rä  s    rD   rí   z%array_ascontiguousarray.<locals>.impl�  s   € ÝÔ'­¬°©¬Ñ4Ô4Ð4rF   c                 ó"   — t          | d¦  «        S ©Nrª   ©r  rä  s    rD   rí   z%array_ascontiguousarray.<locals>.impl�  ó   € Ý-¨a°Ñ5Ô5Ð5rF   ©r   r	   rî   r˜   r   r÷  r  r™   rE  s     rD   Úarray_ascontiguousarrayr  ‡  s|   € å˜AÑÔð HÝÔ Ð!FÑGÔGÐGå�!•e”l¥E¤MÐ3Ñ4Ô4ð 6ð	5ð 	5ð 	5ð 	5å	�A•u”{Ñ	#Ô	#ð 6ð	6ð 	6ð 	6à€KrF   c                 óà   — t          | ¦  «        st          j        d¦  «        ‚t          | t          j        t          j        f¦  «        rd„ }|S t          | t          j        ¦  «        rd„ }|S d S )NrÄ  c                 óN   — t          j        t          j        | ¦  «        ¦  «        S rW  )r<  ÚasfortranarrayrË   rä  s    rD   rí   z"array_asfortranarray.<locals>.impl›  s   € ÝÔ$¥R¤X¨a¡[¤[Ñ1Ô1Ð1rF   c                 ó"   — t          | d¦  «        S )Nr*  r  rä  s    rD   rí   z"array_asfortranarray.<locals>.implŸ  r  rF   r  rE  s     rD   Úarray_asfortranarrayr  •  s†   € å˜AÑÔð HÝÔ Ð!FÑGÔGÐGå�!•e”l¥E¤MÐ3Ñ4Ô4ð ð	2ð 	2ð 	2àˆÝ	�A•u”{Ñ	#Ô	#ð ð	6ð 	6ð 	6àˆðð rF   zarray.astypec           
      ó>  — |j         d         } t          |¦  «        | ||d         ¬¦  «        }t          j        ||j        ¦  «        }|j        }t          | |||¦  «        }|j        }	|j        }
t          j        ||j        ¦  «        }t          j        ||j        ¦  «        }|  	                    t          j        ¦  «        }t          j        |||¦  «        5 }t          j        | ||	|||j        |¦  «        }t          j        | ||
|||j        |¦  «        }t          | |||¦  «        }|                      |||j        |j        ¦  «        }t%          | ||||¦  «         d d d ¦  «         n# 1 swxY w Y   t'          | ||j        |                     ¦   «         ¦  «        S rì  )r  ry   r
   rÄ   rf   r  rQ  r›   r°   r½   r   r�   rŽ  rR  rS  r‡   rŽ   r|   r‹   r!   r	  )r~   r>   r\   r  r=  r  r  rð  rÀ  rƒ  r+  r„  r*  rÒ   r§   r{  r‘  Úitems                     rD   Úarray_astyper  ¤  sÅ  € ð Œh�qŒk€GØ
�*�WÑ
Ô
˜g w°d¸1´gÐ
>Ñ
>Ô
>€CÝÔ! '¨3¬9Ñ5Ô5€FàŒo€GÝ
˜ '¨7°FÑ
;Ô
;€CàŒx€HØ”€IåÔ& w°´Ñ<Ô<€KÝÔ'¨°´Ñ=Ô=€LØ×#Ò#¥E¤JÑ/Ô/€Få	Ô	˜7 F¨FÑ	3Ô	3ð 	>°wÝÔ+¨G°W¸hØ,2°KØ,3¬N¸GñEô Eˆõ Ô,¨W°g¸yØ-3°\Ø-4¬^¸WñFô Fˆõ ˜ '¨7°GÑ<Ô<ˆØ�|Š|˜G T¨7¬=¸'¼-ÑHÔHˆÝ�7˜G W¨d°HÑ=Ô=Ð=ð	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>õ ˜G W¨c¬o¸s¿}º}¹¼ÑOÔOÐOs   ÃBE+Å+E/Å2E/c                 óf   — t          |t          j        ¦  «        sJ ‚t          |¦  «        }d„ }||fS )Nc           
      óþ  — |j         \  }t          |¦  «        } || ||d         ¦  «        }|j        }|                     ||j        ¦  «        }t          | ||¦  «        }	|j        r4|j        dk    r)t          j	        ||	j
        |j
        |j        |¦  «         �nQt          j        ||j        ¦  «        }
t          j        ||j        ¦  «        }|j        }|                      t          j        ¦  «        }t          j        ||dd¬¦  «        }t          j        ||
|¦  «        5 }t          j        | ||j
        |
|||¦  «        }|                     ||	j
        j        ¦  «        }|                     |¦  «        }|                     |	j
        |g¦  «        }t          j        ||||¦  «         |                     |                     ||¦  «        |¦  «         d d d ¦  «         n# 1 swxY w Y   |	                     ¦   «         S )Nr   rª   ÚbyteptrT)ÚnamerP   )r  ry   r±   rÆ   r¶   r.   r›  rS  r
   rï  r›   rÄ   rf   r°   r½   r   r�   rX   rŽ  rR  r‰  r:   r?   rT  r  r(  r²  r	  )r~   r>   r\   r  rY  r`  ra  r±   r’  Úbstrrf   r°   rS  rÒ   Úbyteidxr§   rl   Úsrcptrr“   Údestptrs                       rD   r¾  z)_array_tobytes_intrinsic.<locals>.codegenÈ  s)  € ØŒx‰ˆÝ˜2‘”ˆØˆe�G˜W d¨1¤gÑ.Ô.ˆà”<ˆØ—’˜X s¤zÑ2Ô2ˆå# G¨W°fÑ=Ô=ˆàŒNð 	C˜rœy¨CÒ/Ð/ÝÔ˜w¨¬	°3´8¸S¼ZØ'ñ)ô )ð )ñ )õ Ô(¨°#´)Ñ<Ô<ˆEÝÔ*¨7°C´KÑ@Ô@ˆGØ”YˆFØ×+Ò+­E¬JÑ7Ô7ˆFåÔ)Ø˜ i°tðñ ô ˆGõ Ô" 7¨E°6Ñ:Ô:ð 
C¸gÝÔ/Ø˜W c¤h°°wÀÈñô �ð !Ÿš¨¨d¬i¬nÑ=Ô=�à—l’l 7Ñ+Ô+�Ø!Ÿ+š+ d¤i°#°Ñ7Ô7�å”˜w¨°¸ÑBÔBÐBØ—’˜gŸkšk¨#¨xÑ8Ô8¸'ÑBÔBÐBð
Cð 
Cð 
Cñ 
Cô 
Cð 
Cð 
Cð 
Cð 
Cð 
Cð 
Cøøøð 
Cð 
Cð 
Cð 
Cð �~Š~ÑÔÐs   Ä"B2G Ç G$Ç'G$)r˜   r   r™   r/   )r¿  rû  r\   r¾  s       rD   Ú_array_tobytes_intrinsicr&  Ã  sA   € å�a�œÑ%Ô%Ð%Ð%Ð%Ý
�Q‰-Œ-€Cð" ð " ð " ðF �ˆ<ÐrF   r!  c                 óD   — t          | t          j        ¦  «        rd„ }|S d S )Nc                 ó    — t          | ¦  «        S rW  )r&  rÛ  s    rD   rí   z impl_array_tobytes.<locals>.implñ  s   € Ý+¨CÑ0Ô0Ð0rF   rX  rÜ  s     rD   Úimpl_array_tobytesr)  î  s4   € å�#•u”{Ñ#Ô#ð ð	1ð 	1ð 	1àˆðð rF   c                 ó<   — |j         } ||||||¦  «        }d„ }||fS )Nc           	      óT  — |j         d         }|d         }|d         }|j        } t          |¦  «        | ||d         ¬¦  «        }t          |¦  «        }	 |	| |¦  «        }
|
j        }t	          | |¦  «        }t          |j        j        |¦  «        }|                     |j	        |j        ¦  «        }|                     ||¦  «        }| 
                    ||¦  «        }|                     d|t          j        |j        d¦  «        ¦  «        }d}|                     |d¬¦  «        5  | j                             |t           |f¦  «         d d d ¦  «         n# 1 swxY w Y   |                     d|t          j        |j        d¦  «        ¦  «        }|                     ||¦  «        }t%          j        ||¦  «        }|                     |d¬¦  «        5  d	}| j                             |t           |f¦  «         d d d ¦  «         n# 1 swxY w Y   |                     |¦  «        5 \  }}|5  |j        }|                     ||¦  «        }d d d ¦  «         n# 1 swxY w Y   |5  |j        }d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |                     |j        ¦  «        }|                     ||¦  «         |                     ||¦  «         |                     ||¦  «        }|                     d
||¦  «        }|                     |d¬¦  «        5  d}| j                             |t           |f¦  «         d d d ¦  «         n# 1 swxY w Y   t%          j        ||g¦  «        }t%          j        ||g¦  «        }|                     |j        |g¦  «        }|                     ||                      |                     d¦  «        ¦  «        ¦  «        }tA          |
|||||j!        |j"        ¬¦  «         |
 #                    ¦   «         } tI          | ||j        | ¦  «        S )Nr   rt  rE  r  r!  z=offset must be non-negative and no greater than buffer lengthFrn  z.buffer size must be a multiple of element sizer+  z%buffer is smaller than requested sizer›   rL  )%r  r  ry   r·   r€   r   r±   r:   rÆ   r¶   r(  r"  r   r$  rp  rq  r¼   rÆ  r
   Úis_not_nullrz  Úbasic_blockÚsdivrý  rþ  r'  rk   rT  r›   r‰  r½   r¾   rÙ   r¯   r²   r	  r    )!r~   r>   r\   r  ÚbuftyÚ	arg_countÚ
arg_offsetrÛ   r&  Ú
out_ary_tyÚout_aryÚout_datamodelr±   Úll_itemsizer’  Úll_offset_sizeÚnbytes_is_negativerÑ   Úll_count_is_negativeÚremÚis_incompatibleÚ
then_blockÚ
else_blockÚbb_ifÚ	num_wholeÚbb_elseÚll_itemcountÚll_required_sizeÚis_too_largerf   r°   r›   r  s!                                    rD   r¾  znp_frombuffer.<locals>.codegenû  s´  € Ø”˜”ˆØ˜”Gˆ	Ø˜!”Wˆ
Ø”ˆà�j˜ÑÔ ¨¸¸Q¼Ð@Ñ@Ô@ˆÝ Ñ&Ô&ˆ
Ø�*˜W gÑ.Ô.ˆØÔ*ˆå ¨Ñ/Ô/ˆÝ˜sœ|Ô0°(Ñ;Ô;ˆØ—’˜SœZ¨¬Ñ6Ô6ˆØ Ÿš Z°Ñ=Ô=ˆØ—’˜V ^Ñ4Ô4ˆà$×0Ò0ØØÝŒK˜	œ¨Ñ*Ô*ñ
ô 
Ðð NˆØ�_Š_Ð/¸ˆ_Ñ>Ô>ð 	Kð 	KØÔ×-Ò-¨gµzÀCÀ6ÑJÔJÐJð	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Køøøð 	Kð 	Kð 	Kð 	Kð  '×2Ò2ØØÝŒK˜	œ¨Ñ*Ô*ñ 
ô  
Ðð �lŠl˜6 ;Ñ/Ô/ˆÝ!Ô-¨g°sÑ;Ô;ˆØ�_Š_˜_°Uˆ_Ñ;Ô;ð 	Kð 	KØBˆCØÔ×-Ò-¨gµzÀCÀ6ÑJÔJÐJð	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Køøøð 	Kð 	Kð 	Kð 	Kð
 �_Š_Ð1Ñ2Ô2ð 	.Ñ6N°zÀ:Øð >ð >ØÔ+�Ø#ŸLšL¨°Ñ=Ô=�	ð>ð >ð >ñ >ô >ð >ð >ð >ð >ð >ð >øøøð >ð >ð >ð >ð ð .ð .Ø!Ô-�ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð		.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð —{’{ 9¤>Ñ2Ô2ˆØ×!Ò! )¨UÑ3Ô3Ð3Ø×!Ò! )¨WÑ5Ô5Ð5ð #Ÿ;š; |°[ÑAÔAÐØ×,Ò,¨SÐ2BÀFÑKÔKˆà�_Š_˜\°%ˆ_Ñ8Ô8ð 	Kð 	KØ9ˆCØÔ×-Ò-¨gµzÀCÀ6ÑJÔJÐJð	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Køøøð 	Kð 	Kð 	Kð 	Kõ
 Ô" 7¨\¨NÑ;Ô;ˆÝÔ$ W¨{¨mÑ<Ô<ˆà�{Š{˜3œ8 j \Ñ2Ô2ˆØ�ŠØ�'×(Ò(¨×)?Ò)?ÀÑ)GÔ)GÑHÔHñ
ô 
ˆõ 	�wØ Ø"Ø&Ø +Ø"œ{Ø!œjð	*ñ 	*ô 	*ð 	*ð ×ÒÑ!Ô!ˆÝ  ¨'°3´?ÀCÑHÔHÐHs�   Ä&#EÅEÅEÇ%HÈHÈ	HÈ"J
È(IÉJ
ÉI	ÉJ
ÉI	ÉJ
ÉI3É'J
É3I7	É7J
É:I7	É;J
Ê
JÊJÌ%MÍMÍMrE  )	r¿  Úbufferr|   rÅ   r  rN  rY  r\   r¾  s	            rD   Únp_frombufferrD  ö  sC   € à	Ô	€BØ
ˆ"ˆV�U˜E 6¨5Ñ
1Ô
1€CðNIð NIð NIð` �ˆ<ÐrF   rr  c                 óô  ‡— t          d|¦  «         t          | t          j        ¦  «        r| j        dk    rd| › �}t          j        |¦  «        ‚|t          u s7t          |t          j        ¦  «        r|j	        t          u st          |¦  «        rt          j        }nt          |¦  «        }|�t          j        |dd| j         ¬¦  «        Šnd| › d|› d�}t          j        |¦  «        ‚t          d	d
fˆfd„	}|S )NÚ
frombufferrª   z+Argument "buffer" must be buffer-like. Got rH   )r|   rq   rS  rº  z3Cannot parse input types to function np.frombuffer(r  r  rr  r   c                 ó*   •— t          | |||‰¦  «        S rW  )rD  )rC  r|   rÅ   r  rN  s       €rD   rí   z impl_np_frombuffer.<locals>.imple  s   ø€ Ý˜V U¨E°6¸5ÑAÔAÐArF   )rA  r˜   r   r  rS  r	   rî   rN  rO  rP  r   rQ  rR  r™   r£  )rC  r|   rÅ   r  rÑ   rT  rí   rN  s          @rD   Úimpl_np_frombufferrH  N  s8  ø€ å˜<¨Ñ/Ô/Ð/å�f�eœlÑ+Ô+ð &¨v¬}ÀÒ/CÐ/CØD¸FÐDÐDˆÝÔ  Ñ%Ô%Ð%à•ˆˆÝ˜�uœ~Ñ.Ô.ð 	Ø38Ô3CÅuÐ3LÐ3LÝ˜ÑÔð 4Må”<ˆˆå! %Ñ(Ô(ˆàÐÝ” (°¸3Ø)/¬Ð%7ð9ñ 9ô 9ˆˆð3Ø &ð3ð 3Ø*/ð3ð 3ð 3ˆåÔ  Ñ%Ô%Ð%å ¨°1ð Bð Bð Bð Bð Bð Bð €KrF   c                 óº   ‡— t          |¦  «        rt          dd ¦  «        Šdˆfd„	}|S t          |t          j        ¦  «        rt          d|¦  «        Šdˆfd„	}|S d S )Nrª   c                 ó   •—  ‰| |¦  «        S rW  r¡   ©rl   rf   r|   Úintrinsic_cfarrays      €rD   rí   zimpl_carray.<locals>.implp  ó   ø€ Ø$Ð$ S¨%Ñ0Ô0Ð0rF   c                 ó   •—  ‰| |¦  «        S rW  r¡   rK  s      €rD   rí   zimpl_carray.<locals>.implv  rM  rF   rW  ©r   Úget_cfarray_intrinsicr˜   r   r•  ©rl   rf   r|   rí   rL  s       @rD   Úimpl_carrayrR  k  ó—   ø€ å�5ÑÔð Ý1°#°tÑ<Ô<Ðð	1ð 	1ð 	1ð 	1ð 	1ð 	1àˆÝ	�E�5œ?Ñ	+Ô	+ð Ý1°#°uÑ=Ô=Ðð	1ð 	1ð 	1ð 	1ð 	1ð 	1àˆðð rF   c                 óº   ‡— t          |¦  «        rt          dd ¦  «        Šdˆfd„	}|S t          |t          j        ¦  «        rt          d|¦  «        Šdˆfd„	}|S d S )Nr*  c                 ó   •—  ‰| |¦  «        S rW  r¡   rK  s      €rD   rí   zimpl_farray.<locals>.impl€  rM  rF   c                 ó   •—  ‰| |¦  «        S rW  r¡   rK  s      €rD   rí   zimpl_farray.<locals>.impl†  rM  rF   rW  rO  rQ  s       @rD   Úimpl_farrayrW  {  rS  rF   c                 ó0   ‡ ‡— t           ˆˆ fd„¦   «         }|S )Nc                 óP  •— |t           j        u rd }n<t          |t           j        ¦  «        r|j        }nd|› d�}t          j        |¦  «        ‚‰	€|€d}t          j        |¦  «        ‚|}nat          ‰	t           j        ¦  «        r-‰	j        }|�#||k    rd|› d|› d�}t          j        |¦  «        ‚nd‰	› d�}t          j        |¦  «        ‚t          |¦  «        }|€d|› d�}t          j        |¦  «        ‚t          j	        ||‰
¦  «        }t          |||¦  «        }|t          fS )Nz pointer argument expected, got 'ú'z*explicit dtype required for void* argumentzmismatching dtype 'z' for pointer type 'zinvalid dtype spec 'zinvalid shape ')r   r  r˜   ÚCPointerr|   r	   r�  r•  rS  r™   r$   Ú
np_cfarray)r¿  rl   rf   Ú	ptr_dtyperÑ   r|   rq   rN  r\   Údtype_rS  s            €€rD   rL  z0get_cfarray_intrinsic.<locals>.intrinsic_cfarrayŒ  sT  ø€ à•%”-ÐÐØˆIˆIÝ˜�Uœ^Ñ,Ô,ð 	-Øœ	ˆIˆIà;°SÐ;Ð;Ð;ˆCÝÔ'¨Ñ,Ô,Ð,àˆ>ØÐ ØB�ÝÔ+¨CÑ0Ô0Ð0ØˆEˆEÝ˜¥¤Ñ0Ô0ð 	-Ø”LˆEØÐ$¨°)Ò);Ð);ØM¨EÐMÐMÀsÐMÐMÐM�ÝÔ+¨CÑ0Ô0Ð0øà2¨Ð2Ð2Ð2ˆCÝÔ'¨Ñ,Ô,Ð,å˜eÑ$Ô$ˆØˆ<Ø, EÐ,Ð,Ð,ˆCÝÔ'¨Ñ,Ô,Ð,å”˜E 4¨Ñ0Ô0ˆÝ˜˜s EÑ*Ô*ˆØ•JˆÐrF   ©r)   )rS  r^  rL  s   `` rD   rP  rP  ‹  s4   øø€ Ýðð ð ð ð ñ „Yðð> ÐrF   c                 óª  ‡ ‡— |j         dd…         \  }}|dd…         \  }}|j        }|j        dv sJ ‚ t          |¦  «        ‰ ‰¦  «        }	t	          ‰ |¦  «        }
t          j        |
¦  «        }t          |t          j	        ¦  «        rt          j
        ‰|¦  «        }n|f}|f}ˆˆ fd„t          ||¦  «        D ¦   «         }|}g }|j        dk    r1|D ]-}|                     |¦  «         ‰                     ||¦  «        }Œ.nQt          |¦  «        D ]-}|                     |¦  «         ‰                     ||¦  «        }Œ.|                     ¦   «          ‰                     |‰                      |j        ¦  «                             ¦   «         ¦  «        }t)          |	||||d¬¦  «         |	                     ¦   «         }t-          ‰ ‰|j        |¦  «        S )zR
    numba.numpy_support.carray(...) and
    numba.numpy_support.farray(...).
    Nrt  r_  c                 óZ   •— g | ]'\  }}‰                      ‰||t          j        ¦  «        ‘Œ(S r¡   r<  )r¢   r¯  r   r>   r~   s      €€rD   r£   znp_cfarray.<locals>.<listcomp>Ä  sA   ø€ ð 9ð 9ð 9Ù�&˜%ð �lŠl˜7 E¨6µ5´:Ñ>Ô>ð 9ð 9ð 9rF   r*  rR  )r  r  rS  ry   r€   r
   rÒ   r˜   r   ra  rÄ   r¥   rj   rÆ   r  rÝ  r‰  r{   r|   rX  rÙ   r	  r!   )r~   r>   r\   r  r‚  r?  rl   rf   rÛ   r3  r±   r5  r  Úoffr°   r«   r›   r  s   ``                rD   r\  r\  ¯  s  øø€ ð
 ”X˜b˜q˜b”\�N€Eˆ7Ø�b�q�b”�J€CˆàŒO€EØŒ<˜4ÐÐÐÐà�j˜ÑÔ ¨Ñ1Ô1€Gå˜G UÑ+Ô+€HÝ”. Ñ*Ô*€Kå�'�5œ?Ñ+Ô+ð ÝÔ% g¨uÑ5Ô5ˆˆà�*ˆØ�ˆð9ð 9ð 9ð 9ð 9Ý#& w°Ñ#7Ô#7ð9ñ 9ô 9€Fð €CØ€GØ„|�sÒÐØð 	&ð 	&ˆAØ�NŠN˜3ÑÔÐØ—+’+˜c 1Ñ%Ô%ˆCˆCð	&õ ˜&Ñ!Ô!ð 	&ð 	&ˆAØ�NŠN˜3ÑÔÐØ—+’+˜c 1Ñ%Ô%ˆCˆCØ�ŠÑÔÐà�?Š?˜3Ø"×0Ò0°´Ñ=Ô=×HÒHÑJÔJñLô L€Dõ �7ØØØ"Ø'àðñ ô ð ð ×
Ò
Ñ
Ô
€CÝ˜G W¨c¬o¸sÑCÔCÐCrF   c                 óH  — t          |t          j        ¦  «        r-|                      t          j        t          |¦  «        ¦  «        S t          |t          j        ¦  «        r@|                      t
          t          t          j        |¦  «        ¦  «        } |||f¦  «        S J ‚rW  )	r˜   r   ra  rÃ   r�   r¤   r(  rR   r$   )r~   r>   ÚseqtyÚseqr8  s        rD   Ú_get_seq_sizerf  ã  s‚   € Ý�%�œÑ)Ô)ð Ø×#Ò#¥E¤Jµ°E±
´
Ñ;Ô;Ð;Ý	�E�5œ>Ñ	*Ô	*ð Ø×'Ò'­­Yµu´zÀ5Ñ-JÔ-JÑKÔKˆØˆx˜ # Ñ(Ô(Ð(àˆqrF   c                 óš   ‡ ‡‡— |j         Š‰                      t          j        t	          ‰|t
          j        ¦  «        ¦  «        Šˆ ˆˆfd„}|S )zK
    Return a getitem() implementation that doesn't incref its result.
    c                 óf   •—  ‰| |¦  «        }‰j         r‰j                             | ‰|¦  «         |S rW  )r  r  Údecref)r>   r  rÀ  r~   r&  rN  s      €€€rD   Úwrapz$_get_borrowing_getitem.<locals>.wrapõ  s>   ø€ Øˆl˜7 DÑ)Ô)ˆØÔð 	4ØŒK×Ò˜w¨¨sÑ3Ô3Ð3Øˆ
rF   )r|   rR   r$  r%  r$   r   r�   )r~   rd  rj  r&  rN  s   `  @@rD   Ú_get_borrowing_getitemrk  í  se   øøø€ ð ŒK€EØ×'Ò'­Ô(8Ý(1°%¸ÅÄ
Ñ(KÔ(KñMô M€Lðð ð ð ð ð ð ð €KrF   c           	      ó6  ‡ ‡‡— ‰                       t          j        ¦  «        }t          |d¦  «        Šˆˆ ˆfd„}g }||}	}t	          |¦  «        D ]<}
|
dk    r |||	¦  «        \  }}	|                     t          ‰ ‰||	¦  «        ¦  «         Œ=t          |¦  «        S )zF
    Compute the likely shape of a nested sequence (possibly 0d).
    r   c                 óè   •— t          | t          j        ¦  «        r3t          | ¦  «        dk    rdS | d         ‰                     |d¦  «        fS t          ‰| ¦  «        }| j         |‰|‰f¦  «        fS )Nr   ©NN)r˜   r   ra  r¤   rh  rk  r|   )rd  re  r&  r>   r~   r  s      €€€rD   Úget_first_itemz.compute_sequence_shape.<locals>.get_first_item  sw   ø€ Ý�e�Uœ_Ñ-Ô-ð 	CÝ�5‰zŒz˜QŠˆØ!�zà˜Q”x ×!6Ò!6°s¸AÑ!>Ô!>Ð>Ð>å1°'¸5ÑAÔAˆLØ”;  ¨W°s¸D°kÑ BÔ BÐBÐBrF   )r½   r   r�   r   r9   rj   rf  r¿   )r~   r>   rq   rd  re  rÒ   ro  r  ÚinnertyÚinnerrn   r  s   ``         @rD   Úcompute_sequence_shaperr  þ  sÉ   øøø€ ð ×#Ò#¥E¤JÑ/Ô/€FÝ�F˜AÑÔ€DðCð Cð Cð Cð Cð Cð Cð €FØ˜CˆU€Gå�4‰[Œ[ð Gð GˆØˆqŠ5ˆ5Ø+˜^¨G°UÑ;Ô;‰NˆG�UØ�Š•m G¨W°g¸uÑEÔEÑFÔFÐFÐFå�‰=Œ=ÐrF   c                 óD   ‡ ‡‡‡— ˆˆ fd„Šˆˆˆˆ fd„Š ‰|||¦  «         dS )z?
    Check the nested sequence matches the given *shapes*.
    c                  óJ   •— ‰j                              ‰ t          d¦  «         d S )N)zincompatible sequence shape)rp  rq  r¼   )r>   r~   s   €€rD   Ú_failz#check_sequence_shape.<locals>._fail!  s4   ø€ ØÔ×)Ò)¨'µ:Ø*Jñ	Lô 	Lð 	Lð 	Lð 	LrF   c                 ó.  •— t          |¦  «        dk    rd S t          ‰‰| |¦  «        }|d         }‰                     d||¦  «        }‰                     |d¬¦  «        5   ‰¦   «          d d d ¦  «         n# 1 swxY w Y   t          |¦  «        dk    rd S t	          | t
          j        ¦  «        rot          ‰| ¦  «        }t          j	        ‰|¦  «        5 }| j
        } |‰||j        f¦  «        }	 ‰||	|dd …         ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S t	          | t
          j        ¦  «        rTt          t          | ¦  «        ¦  «        D ]5}
| |
         }‰                     ||
¦  «        }	 ‰||	|dd …         ¦  «         Œ6d S J | ¦   «         ‚)Nr   rm  Frn  rH   )r¤   rf  r"  r$  r˜   r   r(  rk  r
   rÔ  r|   r  ra  r9   rh  )rd  re  r  r”   Úexpectedr­  r&  rÖ  rp  rq  rn   ru  r>   Úcheck_seq_sizer~   s              €€€€rD   rx  z,check_sequence_shape.<locals>.check_seq_size%  s3  ø€ Ýˆv‰;Œ;˜!ÒÐØˆFå˜W g¨u°cÑ:Ô:ˆØ˜!”9ˆØ×&Ò& t¨T°8Ñ<Ô<ˆØ�_Š_˜X¨eˆ_Ñ4Ô4ð 	ð 	ØˆE‰GŒGˆGð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ ˆv‰;Œ;˜!ÒÐØˆFå�e�Uœ^Ñ,Ô,ð 	Ý1°'¸5ÑAÔAˆLÝÔ" 7¨DÑ1Ô1ð ;°TØœ+�Ø$˜ W¨s°D´JÐ.?Ñ@Ô@�Ø�˜w¨¨v°a°b°b¬zÑ:Ô:Ð:ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð ;ð ;õ
 ˜�uœÑ/Ô/ð 	Ý�3˜u™:œ:Ñ&Ô&ð ;ð ;�Ø œ(�Ø×-Ò-¨c°1Ñ5Ô5�Ø�˜w¨¨v°a°b°b¬zÑ:Ô:Ð:Ð:ð;ð ;ð �e‰OŒO�1s$   ÁA6Á6A:Á=A:Ã0DÄDÄDNr¡   )r~   r>   rd  re  r  ru  rx  s   ``   @@rD   Úcheck_sequence_shapery    sn   øøøø€ ð
Lð Lð Lð Lð Lð Lðð ð ð ð ð ð ð ð: €N�5˜#˜vÑ&Ô&Ð&Ð&Ð&rF   c                 óV   ‡ ‡‡‡‡‡‡‡	— ˆˆˆ ˆˆˆfd„Š	ˆˆ	ˆˆ fd„Š ‰||‰d¦  «         dS )zl
    Assign a nested sequence contents to an array.  The shape must match
    the sequence's structure.
    c           
      óª   •— t          j        ‰‰‰‰‰	‰j        | d¬¦  «        }‰                     ‰||‰j        ¦  «        }t          ‰‰‰||¦  «         d S rs  )r
   rR  rS  rŽ   r|   r‹   )
r§   rd  rŠ   rl   r`  r>   r~   r›   r  r°   s
       €€€€€€rD   Úassign_itemz-assign_sequence_to_array.<locals>.assign_itemL  se   ø€ ÝÔ'¨°¸$ÀÈØ(-¬°gÈ%ðQñ Qô Qˆà�lŠl˜7 C¨°´Ñ<Ô<ˆÝ�7˜G U¨C°Ñ5Ô5Ð5Ð5Ð5rF   c                 ó  •— t          |¦  «        dk    r7t          | t          j        t          j        f¦  «        rJ ‚ ‰|| |¦  «         d S |d         }t          | t          j        ¦  «        ryt          ‰| ¦  «        }t          j        ‰|¦  «        5 }| j        } |‰||j	        f¦  «        } ‰|||dd …         ||j	        fz   ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S t          | t          j        ¦  «        ryt          t          | ¦  «        ¦  «        D ]Z}	| |	         }‰                     ||	¦  «        }‰                     t          j        |	¦  «        }
 ‰|||dd …         ||
fz   ¦  «         Œ[d S J | ¦   «         ‚r  )r¤   r˜   r   r(  ra  rk  r
   rÔ  r|   r  r9   rh  rÃ   r�   )rd  re  r  r§   r”   r&  rÖ  rp  rq  rn   r  Úassignr|  r>   r~   s              €€€€rD   r~  z(assign_sequence_to_array.<locals>.assignR  sð  ø€ Ýˆv‰;Œ;˜!ÒÐÝ! %­%¬.½%¼/Ð)JÑKÔKÐKÐKÐKØˆK˜ ¨Ñ,Ô,Ð,ØˆFà�aŒyˆå�e�Uœ^Ñ,Ô,ð 	Ý1°'¸5ÑAÔAˆLÝÔ" 7¨DÑ1Ô1ð L°TØœ+�Ø$˜ W¨s°D´JÐ.?Ñ@Ô@�Ø��w  v¨a¨b¨b¤z°7¸d¼j¸]Ñ3JÑKÔKÐKðLð Lð Lñ Lô Lð Lð Lð Lð Lð Lð Lð Løøøð Lð Lð Lð Lð Lð Lõ
 ˜�uœÑ/Ô/ð 	Ý�3˜u™:œ:Ñ&Ô&ð Gð G�Ø œ(�Ø×-Ò-¨c°1Ñ5Ô5�Ø×,Ò,­U¬Z¸Ñ;Ô;�Ø��w  v¨a¨b¨b¤z°7¸e¸XÑ3EÑFÔFÐFÐFð	Gð Gð �e‰OŒO�1s   Â:CÃCÃ!Cr¡   Nr¡   )
r~   r>   r›   r  r°   r`  rd  re  r~  r|  s
   ``````  @@rD   Úassign_sequence_to_arrayr  E  s‚   øøøøøøøø€ ð6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ðð ð ð ð ð ð ð ð2 €Fˆ5�#�v˜rÑ"Ô"Ð"Ð"Ð"rF   c                 óž   — t          | |¦  «        \  }}t          |¦  «        r|}nt          |¦  «        }|€d S t          j        ||d¦  «        S r  )r5   r   rR  r   r™   )r¿  r²  r|   rq   Ú	seq_dtypes        rD   Únp_array_typerr‚  n  sW   € Ý,¨Y¸Ñ?Ô?�O€Dˆ)Ý�5ÑÔð Øˆˆå˜uÑ%Ô%ˆØˆ=ØˆFÝŒ;�u˜d CÑ(Ô(Ð(rF   c                 ój   — t          d|¦  «         t          | ||¦  «        } |||¦  «        }d„ }||fS )NrË   c           
      ót  — |j         }|j        }|j        d         }|d         }t          | ||||¦  «        }t	          |¦  «        |k    sJ ‚t          | ||||¦  «         t          | |||¦  «        }	t          | ||	j        ||	j	        |||¦  «         t          | ||j         |	                     ¦   «         ¦  «        S rë   )r  rq   r  rr  r¤   ry  rQ  r  r›   r°   r!   r	  )
r~   r>   r\   r  r`  rq   rd  re  r  ra  s
             rD   r¾  znp_array.<locals>.codegen  sÊ   € Ø”ˆØŒzˆØ”˜”ˆØ�1Œgˆå'¨°¸$ÀÀsÑKÔKˆÝ�6‰{Œ{˜dÒ"Ð"Ð"Ð"å˜W g¨u°c¸6ÑBÔBÐBÝ˜W g¨u°fÑ=Ô=ˆÝ  ¨'°3´8¸VØ!$¤¨e°U¸Cñ	Aô 	Að 	Aõ   ¨°#´/Ø #§¢¡¤ñ1ô 1ð 	1rF   )rA  r‚  )r¿  Úobjr|   rÀ  r\   r¾  s         rD   Únp_arrayr†  y  sM   € å˜7 EÑ*Ô*Ð*Ý
˜ C¨Ñ
/Ô
/€CØ
ˆ#ˆc�5‰/Œ/€Cð1ð 1ð 1ð" �ˆ<ÐrF   c                 óÜ   — t          d|¦  «         t          | ¦  «        st          j        d¦  «        ‚t	          |¦  «        s%t          |¦  «        €d}t          j        |¦  «        ‚dd„}|S )NrË   z(The argument "object" must be array-likez:The argument "dtype" must be a data-type if it is providedc                 ó"   — t          | |¦  «        S rW  )r†  )r²  r|   s     rD   rí   zimpl_np_array.<locals>.impl�  s   € Ý˜ Ñ&Ô&Ð&rF   rW  )rA  r   r	   rî   r   rR  )r²  r|   rÑ   rí   s       rD   Úimpl_np_arrayr‰  “  sˆ   € å˜7 EÑ*Ô*Ð*Ý˜FÑ#Ô#ð 2ÝÔ ð "1ñ 2ô 2ð 	2å�uÑÔð &¥.°Ñ"7Ô"7Ð"?ØJˆÝÔ  Ñ%Ô%Ð%ð'ð 'ð 'ð 'à€KrF   c                 ó
  — |                      d¦  «        }|                      |¦  «        }|                     d||¦  «        }|                     ||                     ||¦  «        |¦  «        }|                     |                     d||¦  «        |                     d||¦  «        ¦  «        }|                     |d¬¦  «        5  d|z  }	| j                             |t          |	f¦  «         d d d ¦  «         n# 1 swxY w Y   |S )Nr   r!  rŸ  Frn  z%s(): axis out of bounds)	r:   r"  rò  r²  r&  r$  rp  rq  r¶  )
r~   r>   rà   rq   râ   r  Úll_ndimÚis_neg_axisÚaxis_out_of_boundsrÑ   s
             rD   Ú_normalize_axisrŽ  ¢  sI  € Ø�9Š9�Q‰<Œ<€DØ�iŠi˜‰oŒo€Gð ×%Ò% c¨4°Ñ6Ô6€KØ�>Š>˜+ w§{¢{°4¸Ñ'AÔ'AÀ4ÑHÔH€Dð !ŸšØ×Ò˜C  tÑ,Ô,Ø×Ò˜D $¨Ñ0Ô0ñ2ô 2Ðð 
�ŠÐ+°EˆÑ	:Ô	:ð Gð GØ(¨9Ñ4ˆØÔ×)Ò)¨'µ:À¸vÑFÔFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gð €Ks   Ã(C8Ã8C<Ã?C<c           
      ó¤  — t          |¦  «        |dz
  k    sJ ‚t          j        t          j        |¦  «        }t          j        ||¦  «        }t          j        d¦  «        }t          |dz
  ¦  «        D ]‹}t          j        |¦  «        }	|                     d|	|¦  «        }
||         }|                     |
| 	                    |	|¦  «        |	¦  «        }| 
                    |t          j        ||d|¦  «        ¦  «         ŒŒ| 
                    |t          j        ||d|¦  «        ¦  «         t          j        ||                     |¦  «        ¦  «        S )z’
    Compute shape with the new axis inserted
    e.g. given original shape (2, 3, 4) and axis=2,
    the returned new shape is (2, 3, 1, 4).
    rH   rŸ  r   ©r¤   r   rW  r
   rÒ   rX   r9   r"  rò  r²  r(  ri   rÄ   r?   )r~   r>   Ú
orig_shaperq   râ   Úll_shtyr  r@  r�  Úll_dimÚ
after_axisrH  r“   s                rD   Ú_insert_axis_in_shaper•  µ  s8  € õ ˆz‰?Œ?˜d Q™hÒ&Ð&Ð&Ð&åŒl�7œ>¨4Ñ0Ô0€GÝÔ  ¨'Ñ2Ô2€Få
Œ.˜Ñ
Ô
€Cõ �T˜A‘X‰Œð Ið IˆÝ” Ñ$Ô$ˆØ×(Ò(¨¨v°tÑ<Ô<ˆ
Ø˜Œ_ˆØ�nŠn˜ZØ$Ÿ[š[¨°Ñ5Ô5Ø#ñ%ô %ˆð 	�Š�b�'Ô.¨w¸ÀÀ3ÑGÔGÑHÔHÐHÐHð ‡M‚M�#•wÔ+¨G°V¸QÀÑEÔEÑFÔFÐFåÔ ¨¯ª°fÑ)=Ô)=Ñ>Ô>Ð>rF   c           
      óÈ  — t          |¦  «        |dz
  k    sJ ‚t          j        t          j        |¦  «        }t          j        ||¦  «        }t          j        d¦  «        }t          j        d¦  «        }t          |dz
  ¦  «        D ]‰}	t          j        |	¦  «        }
|                     d|
|¦  «        }|                     || 	                    |
|¦  «        |
¦  «        }| 
                    ||	         t          j        ||d|¦  «        ¦  «         ŒŠ| 
                    |t          j        ||d|¦  «        ¦  «         t          j        ||                     |¦  «        ¦  «        S )zD
    Same as _insert_axis_in_shape(), but with a strides array.
    rH   r   rŸ  r�  )r~   r>   Úorig_stridesrq   râ   r’  r°   r@  r  r�  r“  r”  r“   s                rD   Ú_insert_axis_in_stridesr˜  Ò  sR  € õ ˆ|ÑÔ  q¡Ò(Ð(Ð(Ð(åŒl�7œ>¨4Ñ0Ô0€GÝÔ! '¨7Ñ3Ô3€Gå
Œ.˜Ñ
Ô
€CÝŒ>˜!ÑÔ€Dõ �T˜A‘X‰Œð Fð FˆÝ” Ñ$Ô$ˆØ×(Ò(¨¨v°tÑ<Ô<ˆ
Ø�nŠn˜ZØ$Ÿ[š[¨°Ñ5Ô5Ø#ñ%ô %ˆð 	�Š�l 3Ô'ÝÔ*¨7°G¸QÀÑDÔDñ	Fô 	Fð 	Fð 	Fð
 ‡M‚M�$�Ô,¨W°g¸qÀ$ÑGÔGÑHÔHÐHåÔ ¨¯ª°gÑ)>Ô)>Ñ?Ô?Ð?rF   c           	      óÜ  — |j         }|j        }|j        d         } t          |¦  «        | ||d         ¬¦  «        } t          |¦  «        | |¦  «        }	t	          j        ||j        ¦  «        }
t	          j        ||j        ¦  «        }t          | ||
||¦  «        }t          | ||||¦  «        }t          |	|j        |||j        |j        |j        ¬¦  «         |	                     ¦   «         S )z/
    np.expand_dims() with the given axis.
    r   r  rL  )r  rq   r  ry   r
   rÄ   rf   r°   r•  r˜  rÙ   r›   r±   r¯   r²   r	  )r~   r>   r\   r  râ   rN  rq   r`  ra  rÀ  r  r°   Ú
new_shapesÚnew_stridess                 rD   Úexpand_dimsrœ  ï  sí   € ð ŒO€EØŒ:€DØŒH�QŒK€Eà
�*�UÑ
Ô
˜G W°D¸´GÐ
<Ñ
<Ô
<€CØ
�*�UÑ
Ô
˜G WÑ
-Ô
-€CåÔ! '¨3¬9Ñ5Ô5€FÝÔ" 7¨C¬KÑ8Ô8€Gå& w°¸ÀÀtÑLÔL€JÝ)¨'°7¸GÀTÈ4ÑPÔP€Kå�3ØœØ#Ø&ØœLØœ;Øœ*ð&ñ &ô &ð &ð �=Š=‰?Œ?ÐrF   c                 óŽ   — |j         dk    r|j        nd}|                     |j         dz   |¬¦  «        } |||¦  «        }d„ }||fS )NrH   r²  r³  c                 óö   — |                       ||d         |j        d         t          j        ¦  «        }t	          | |d|j        j        |¦  «        }t          | ||||¦  «        }t          | ||j        |¦  «        S )NrH   znp.expand_dims)	rŽ   r  r   r�   rŽ  r  rq   rœ  r    )r~   r>   r\   r  râ   rÀ  s         rD   r¾  znp_expand_dims.<locals>.codegen  sr   € Ø�|Š|˜G T¨!¤W¨c¬h°q¬k½5¼:ÑFÔFˆÝ˜w¨Ð1AØ"œÔ3°Tñ;ô ;ˆõ ˜' 7¨C°°tÑ<Ô<ˆÝ  ¨'°3´?ÀCÑHÔHÐHrF   )rq   rS  r´  )r¿  rV  râ   rS  rÀ  r\   r¾  s          rD   Únp_expand_dimsrŸ    s_   € àœ 1š˜ˆQŒXˆX¨#€FØ
�&Š&�a”f˜q‘j¨ˆ&Ñ
0Ô
0€CØ
ˆ#ˆa�‰,Œ,€CðIð Ið Ið �ˆ<ÐrF   c                 óØ   — t          | t          j        ¦  «        sd| › �}t          j        |¦  «        ‚t          |t          j        ¦  «        sd|› �}t          j        |¦  «        ‚d„ }|S )Nz)First argument "a" must be an array. Got z(Argument "axis" must be an integer. Got c                 ó"   — t          | |¦  «        S rW  )rŸ  )rV  râ   s     rD   rí   z!impl_np_expand_dims.<locals>.impl&  s   € Ý˜a Ñ&Ô&Ð&rF   )r˜   r   r™   r	   rî   rš   )rV  râ   rÑ   rí   s       rD   Úimpl_np_expand_dimsr¢    sz   € å�a�œÑ%Ô%ð &Ø=¸!Ð=Ð=ˆÝÔ  Ñ%Ô%Ð%å�d�EœMÑ*Ô*ð &Ø?¸Ð?Ð?ˆÝÔ  Ñ%Ô%Ð%ð'ð 'ð 'à€KrF   c                 ó8   ‡ ‡‡— t           ˆˆ fd„¦   «         Šˆfd„S )Nc                 óð   •‡‡— |Šˆfd„|D ¦   «         Šˆˆˆˆfd„}t          t          ‰¦  «        dk    rt          j        ‰¦  «        n‰d         t          j                             |¦  «        ¦  «        |fS )Nc                 ób   •— g | ]+}|                      t          |j        ‰¦  «        ¬ ¦  «        ‘Œ,S )r:  )r´  rG  rq   )r¢   rì  Úminimums     €rD   r£   z-_atleast_nd.<locals>.impl.<locals>.<listcomp>/  s3   ø€ ÐHÐHÐH¸C�#—(’(¥ C¤H¨gÑ 6Ô 6�(Ñ7Ô7ÐHÐHÐHrF   c                 ó<  •‡ ‡‡— t          ‰
‰	¦  «        Št          j        ‰|d         ¦  «        }ˆˆ ˆfd„t          |‰‰¦  «        D ¦   «         }t	          |¦  «        dk    r‰                      ‰|j        |¦  «        }n|d         }t          ‰ ‰|j        |¦  «        S )Nr   c           	      ó6   •— g | ]\  }}} ‰‰‰|||¦  «        ‘ŒS r¡   r¡   )r¢   ra  r`  rN  r>   r~   Ú	transforms       €€€rD   r£   z>_atleast_nd.<locals>.impl.<locals>.codegen.<locals>.<listcomp>5  sG   ø€ ð Hð Hð HÙ)˜˜U Eð �I˜g w°°U¸EÑBÔBð Hð Hð HrF   rH   )Ú_atleast_nd_transformr
   rÄ   r¥   r¤   r  r  r    )r~   r>   r\   r  ÚarrsÚretsrÀ  r©  r‘  rl  r¦  r«  s   ``     @€€€€rD   r¾  z*_atleast_nd.<locals>.impl.<locals>.codegen1  s½   øøøø€ Ý-¨g°tÑ<Ô<ˆIÝÔ'¨°°a´Ñ9Ô9ˆDðHð Hð Hð Hð Hð HÝ-0°°v¸vÑ-FÔ-FðHñ Hô HˆDõ �4‰yŒy˜1Š}ˆ}Ø×(Ò(¨°#´/À4ÑHÔH��à˜1”g�Ý$ W¨g°s´ÈÑLÔLÐLrF   rH   r   )r$   r¤   r   rÝ  rH  Ú
from_types)Útypingcontextr  r¾  r‘  r«  rl  r¦  s      @@€€rD   rí   z_atleast_nd.<locals>.impl,  s¨   øøø€ àˆØHÐHÐHÐHÀ4ÐHÑHÔHˆð	Mð 	Mð 	Mð 	Mð 	Mð 	Mð 	Mð 	Mõ µ°F±´¸a²°�œ VÑ,Ô,Ð,ÀVÈAÄYÝÔ+×6Ò6°tÑ<Ô<ñ>ô >Ø?FðGð 	GrF   c                  ó   •—  ‰| Ž S rW  r¡   )r  rí   s    €rD   ré  z_atleast_nd.<locals>.<lambda>A  s   ø€ ˜˜˜t˜€ rF   r_  )r¦  rl  rí   s   ``@rD   Ú_atleast_ndr°  +  sD   øøø€ ÝðGð Gð Gð Gð Gñ „YðGð( %Ð$Ð$Ð$Ð$rF   c                 ó@   ‡ ‡— ‰ t          ‰¦  «        k    sJ ‚ˆˆ fd„}|S )z`
    Return a callback successively inserting 1-sized dimensions at the
    following axes.
    c           	      ó  •— t          ‰
¦  «        D ]s}|dz   }|j        |k     rat          j        ‰	|         ¦  «        }|                     |j        dz   ¬¦  «        }t          | |t          j        ||¦  «        |f|¦  «        }|}Œt|S )NrH   r:  )r9   rq   r
   rÒ   r´  rœ  r   r$   )r~   r>   ra  r`  rN  rn   rq   râ   Únewarrtyrl  Úmin_ndims            €€rD   r©  z(_atleast_nd_transform.<locals>.transformK  s‘   ø€ Ý�x‘”ð 	!ð 	!ˆAØ�q‘5ˆDØŒz˜DÒ Ð Ý”~ d¨1¤gÑ.Ô.�Ø Ÿ:š:¨5¬:¸©>˜:Ñ:Ô:�Ý! '¨7Ý"(Ô"2°8¸UÑ"CÔ"CÀcÀVØ"&ñ(ô (�ð !�øàˆ
rF   )r¤   )r´  rl  r©  s   `` rD   rª  rª  D  sC   øø€ ð
 •s˜4‘y”yÒ Ð Ð Ð ðð ð ð ð ð ð ÐrF   c                  óZ   — t          d„ | D ¦   «         ¦  «        rt          ddg¦  «        S d S )Nc              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S rW  rX  r€  s     rD   rZ  z np_atleast_1d.<locals>.<genexpr>]  ó.   è è € Ð
8Ð
8¨C�:�c�5œ;Ñ'Ô'Ð
8Ð
8Ð
8Ð
8Ð
8Ð
8rF   rH   r   ©rÞ  r°  r>  s    rD   Únp_atleast_1dr¹  [  s=   € å
Ð
8Ð
8°4Ð
8Ñ
8Ô
8Ñ8Ô8ð #Ý˜1˜q˜cÑ"Ô"Ð"ð#ð #rF   c                  ó\   — t          d„ | D ¦   «         ¦  «        rt          dddg¦  «        S d S )Nc              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S rW  rX  r€  s     rD   rZ  z np_atleast_2d.<locals>.<genexpr>c  r·  rF   rt  r   r¸  r>  s    rD   Únp_atleast_2dr¼  a  s?   € å
Ð
8Ð
8°4Ð
8Ñ
8Ô
8Ñ8Ô8ð &Ý˜1˜q !˜fÑ%Ô%Ð%ð&ð &rF   c                  ó\   — t          d„ | D ¦   «         ¦  «        rt          dg d¢¦  «        S d S )Nc              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S rW  rX  r€  s     rD   rZ  z np_atleast_3d.<locals>.<genexpr>i  r·  rF   rE  )r   r   rt  r¸  r>  s    rD   Únp_atleast_3dr¿  g  s?   € å
Ð
8Ð
8°4Ð
8Ñ
8Ô
8Ñ8Ô8ð )Ý˜1˜i˜i˜iÑ(Ô(Ð(ð)ð )rF   c	                 óˆ  — t          |¦  «        t          |¦  «        cxk    r't          |¦  «        cxk    rt          |¦  «        k    sn J ‚t          j        d¦  «        }	t          | |||¦  «        }
t          j        ||
j        ¦  «        }g }|D ]ª}|	}t          t          ||¦  «        ¦  «        D ]s\  }\  }}|                     d| 	                    |¦  «        |¦  «        }| 
                    ||¦  «        }|                     ||                     ||¦  «        |¦  «        }Œt|                     |¦  «         Œ«|
j        }t          |||||¦  «        D ]ë\  }}}}}|j        }t          j        ||t          j        |j        ¬¦  «        }|5 }t          j        | |||||j        |¦  «        }t%          | |||¦  «        }|                      |||j        |j        ¦  «        }t          j        | |||||j        |¦  «        }t+          | ||||¦  «         ddd¦  «         n# 1 swxY w Y   t          j        |||¦  «        }Œì|
S )z2
    Concatenate arrays along the given axis.
    r   r$  )ÚorderN)r¤   r
   rÒ   rQ  rÄ   r°   rø   r¥   r"  r:   rÆ   rò  r²  rj   r›   rŽ  rS  rR  r‡   rŽ   r|   r‹   r  )r~   r>   râ   r‘  r«  Ú
arr_shapesÚarr_stridesrN  Ú
ret_shapesr  rÀ  Úret_stridesÚcopy_offsetsÚarr_shr  r�  r”   r*  Úis_axisÚaddendÚret_datar`  ra  Úarr_stÚarr_datarŽ  r§   r{  rŠ   r‘  s                                 rD   Ú_do_concatenaterÍ  m  sº  € õ ˆv‰;Œ;�#˜d™)œ)ÐJÐJÒJÐJ¥s¨:¡¤ÐJÐJÒJÐJ½#¸kÑ:JÔ:JÒJÐJÐJÐJÐJÐJåŒ>˜!ÑÔ€Dõ ˜ '¨5°*Ñ
=Ô
=€CÝÔ& w°´Ñ<Ô<€Kð €Làð 	$ð 	$ˆàˆÝ#,­S°¸Ñ-EÔ-EÑ#FÔ#Fð 	,ð 	,ÑˆC‘�$˜Ø×)Ò)¨$°·	²	¸#±´ÀÑEÔEˆGØ—[’[  vÑ.Ô.ˆFØ—^’^ GØ$+§K¢K°¸Ñ$?Ô$?Ø$*ñ,ô ,ˆFˆFð 	×Ò˜FÑ#Ô#Ð#Ð#ð Œx€Hå.1°&¸$À
Ø2=¸|ñ/Mô /Mð Bð BÑ*ˆˆs�F˜F Fà”8ˆõ Ô% g¨vµw´~Ø,1¬Lð:ñ :ô :ˆ	ð ð 		?˜'ÝÔ/°¸À(Ø06¸Ø05´¸gñGô GˆGõ ˜G W¨e°WÑ=Ô=ˆCØ—,’,˜w¨¨U¬[¸%¼+ÑFÔFˆCÝÔ0°¸'À8Ø1;¸[Ø16´¸wñHô HˆHõ �w ¨°°XÑ>Ô>Ð>ð		?ð 		?ð 		?ñ 		?ô 		?ð 		?ð 		?ð 		?ð 		?ð 		?ð 		?øøøð 		?ð 		?ð 		?ð 		?õ Ô& w°¸&ÑAÔAˆˆà€Js   ÆBH È H$	È'H$	c                 óÀ  ‡ ‡‡— |j         }ˆˆ fd„t          ||¦  «        D ¦   «         }t          ‰ ‰d||¦  «        }ˆfd„|D ¦   «         }ˆfd„|D ¦   «         }ˆfd„|d         D ¦   «         }	t          |¦  «        D �]›Š‰                     d|                     ‰¦  «        |¦  «        }
|	‰         }‰                     |¦  «        }ˆfd„|d	d …         D ¦   «         }‰                     |
¦  «        5 \  }}|5  t          j	        ‰j
        ||gz   ¦  «        }‰                     ||¦  «         d d d ¦  «         n# 1 swxY w Y   |5  t          j        }|D ]-}‰                     |‰                     d||¦  «        ¦  «        }Œ.‰                     ‰                     |¦  «        d
¬¦  «        5  ‰ j                             ‰t&          d‰z  f¦  «         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   �Œ�ˆfd„|	D ¦   «         }	t)          ‰ ‰|||||||	¦	  «	        }t+          ‰ ‰||                     ¦   «         ¦  «        S )Nc                 óL   •— g | ] \  }} t          |¦  «        ‰‰|¬ ¦  «        ‘Œ!S ©r  rP  ©r¢   r,  rV  r>   r~   s      €€rD   r£   z#_np_concatenate.<locals>.<listcomp>­  óD   ø€ ð -ð -ð -Ù��Qð �J�s‰OŒO˜G W°AÐ6Ñ6Ô6ð -ð -ð -rF   únp.concatenatec                 óD   •— g | ]}t          j        ‰|j        ¦  «        ‘ŒS r¡   )r
   rÄ   rf   ©r¢   ra  r>   s     €rD   r£   z#_np_concatenate.<locals>.<listcomp>³  s(   ø€ ÐKÐKÐK¸s•'Ô& w°´	Ñ:Ô:ÐKÐKÐKrF   c                 óD   •— g | ]}t          j        ‰|j        ¦  «        ‘ŒS r¡   ©r
   rÄ   r°   rÕ  s     €rD   r£   z#_np_concatenate.<locals>.<listcomp>´  s(   ø€ ÐNÐNÐNÀ#•7Ô'¨°´Ñ=Ô=ÐNÐNÐNrF   c                 ó:   •— g | ]}t          j        ‰|¦  «        ‘ŒS r¡   )r
   r  ©r¢   rH  r>   s     €rD   r£   z#_np_concatenate.<locals>.<listcomp>¹  s6   ø€ ð +ð +ð +Øõ Ô+¨G°RÑ8Ô8ð +ð +ð +rF   r   r$  c                 ó    •— g | ]
}|‰         ‘ŒS r¡   r¡   )r¢   rH  r�  s     €rD   r£   z#_np_concatenate.<locals>.<listcomp>À  s   ø€ Ð9Ð9Ð9 B˜˜3œÐ9Ð9Ð9rF   rH   Frn  z<np.concatenate(): input sizes over dimension %d do not matchc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r¡   rÄ  rÙ  s     €rD   r£   z#_np_concatenate.<locals>.<listcomp>Ô  s%   ø€ Ð8Ð8Ð8 r�'—,’,˜rÑ"Ô"Ð8Ð8Ð8rF   )rq   r¥   rŽ  r9   r"  r:   r?   rz  r–  r—  r²  r(  r
   r˜  rm  r$  rÞ  rp  rq  r¼   rÍ  r!   r	  )r~   r>   r‘  r«  rN  râ   rq   rÂ  rÃ  rÄ  rÈ  Úret_shape_ptrÚret_shÚother_shapesÚon_axisÚon_other_dimrH  Úis_okrÀ  r�  s   ``                 @rD   Ú_np_concatenaterâ  ª  sÔ  øøø€ ØŒ:€Dð-ð -ð -ð -ð -Ý˜f dÑ+Ô+ð-ñ -ô -€Dõ ˜7 GÐ-=¸tÀTÑJÔJ€Dð LÐKÐKÐKÀdÐKÑKÔK€JØNÐNÐNÐNÈÐNÑNÔN€Kð
+ð +ð +ð +Ø& qœMð+ñ +ô +€Jõ �T‰{Œ{ð >ñ >ˆØ×%Ò% d¨D¯IªI°c©N¬N¸DÑAÔAˆØ" 3œˆØ—’˜mÑ,Ô,ˆØ9Ð9Ð9Ð9¨*°Q°R°R¬.Ð9Ñ9Ô9ˆà�_Š_˜WÑ%Ô%ð 	>Ñ)@¨'°<Øð 1ð 1ÝÔ%Ø”KØ  F 8Ñ+ñ-ô -�ð —’˜b -Ñ0Ô0Ð0ð	1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð ð 	>ð 	>ÝÔ(�Ø&ð Pð P�BØ#ŸLšL¨Ø)0×)<Ò)<¸TÀ2ÀvÑ)NÔ)NñPô P�E�Eà—_’_ W§\¢\°%Ñ%8Ô%8À�_ÑGÔGð >ð >ØÔ%×5Ò5Ø¥ð5Ø7:ñ;ð =ñ>ô >ð >ð>ð >ð >ñ >ô >ð >ð >ð >ð >ð >ð >øøøð >ð >ð >ð >ð	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>ð	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>ùð$ 9Ð8Ð8Ð8¨ZÐ8Ñ8Ô8€Jå
˜' 7¨DØ  $¨
°KØ ñ-ô -€Cõ ˜G W¨e°S·]²]±_´_ÑEÔEÐEs   Ã/H
Ã55D6Ä*H
Ä6D:Ä:H
Ä=D:Ä>H
ÅA'G3Æ*&G	ÇG3ÇG Ç G3Ç#G Ç$G3Ç'H
Ç3G7Ç7H
Ç:G7Ç;H
È
H	ÈH	c                 ó¶	  ‡ ‡‡— |j         }t          j        d¦  «        }t          j        d¦  «        }t          j        t          |¦  «        ¦  «        }	ˆˆ fd„t	          ||¦  «        D ¦   «         }t          ‰ ‰d||¦  «        }t          j        ‰|d         j        ¦  «        }
|dd …         D ]Ê}t          j        }t	          t          j        ‰|j        ¦  «        |
¦  «        D ]“\  }}‰ 	                    |‰ 
                    d||¦  «        ¦  «        }‰                     ‰                     |¦  «        d¬¦  «        5  ‰ j                             ‰t          d¦  «         d d d ¦  «         n# 1 swxY w Y   Œ”ŒËˆfd	„|D ¦   «         }t!          j        t          j        |¦  «        Št          j        ‰‰¦  «        }t          j        ‰‰¦  «        }t'          |dz
  ¦  «        D ]¶}t          j        |¦  «        }‰ 
                    d
||¦  «        }|
|         }‰                     |‰                     ||¦  «        |¦  «        }‰                     |t          j        ‰|d|¦  «        ¦  «         ‰                     |t          j        ‰|d|¦  «        ¦  «         Œ·‰                     |t          j        ‰|d|¦  «        ¦  «         ‰                     |	t          j        ‰|d|¦  «        ¦  «         t          j        ‰‰                     |¦  «        ¦  «        }|gt          |¦  «        z  }t          j        ‰‰                     |¦  «        ¦  «        }ˆˆfd„t'          t          |¦  «        ¦  «        D ¦   «         }t'          |dz
  ¦  «        D ]´}t          j        |¦  «        }‰ 
                    d
||¦  «        }‰                     |‰                     ||¦  «        |¦  «        }t'          t          |¦  «        ¦  «        D ]?}‰                     ||         |         t          j        ‰||         d|¦  «        ¦  «         Œ@Œµt'          t          |¦  «        ¦  «        D ]3}‰                     |t          j        ‰||         d|¦  «        ¦  «         Œ4ˆfd„|D ¦   «         }t3          ‰ ‰|||||||¦	  «	        }t5          ‰ ‰||                     ¦   «         ¦  «        S )Nr   rH   c                 óL   •— g | ] \  }} t          |¦  «        ‰‰|¬ ¦  «        ‘Œ!S rÐ  rP  rÑ  s      €€rD   r£   z_np_stack.<locals>.<listcomp>ã  rÒ  rF   únp.stackr$  Frn  )z5np.stack(): all input arrays must have the same shapec                 óD   •— g | ]}t          j        ‰|j        ¦  «        ‘ŒS r¡   r×  rÕ  s     €rD   r£   z_np_stack.<locals>.<listcomp>õ  s(   ø€ ÐOÐOÐOÀ3•GÔ(¨°#´+Ñ>Ô>ÐOÐOÐOrF   rŸ  c                 ó:   •— g | ]}t          j        ‰‰¦  «        ‘ŒS r¡   rL  )r¢   rn   r>   r’  s     €€rD   r£   z_np_stack.<locals>.<listcomp>  s6   ø€ ð 0ð 0ð 0Øõ Ô(¨°'Ñ:Ô:ð 0ð 0ð 0rF   c                 ó`   •— g | ]*}t          j        ‰‰                     |¦  «        ¦  «        ‘Œ+S r¡   )r
   rÄ   r?   )r¢   rI  r>   s     €rD   r£   z_np_stack.<locals>.<listcomp>+  sB   ø€ ð .ð .ð .Øõ Ô)¨'°7·<²<ÀÑ3CÔ3CÑDÔDð .ð .ð .rF   )rq   r
   rÒ   r¤   r¥   rŽ  rÄ   rf   r˜  rm  r"  r$  rÞ  rp  rq  r¼   r   rW  rX   r9   rò  r²  r(  ri   r?   rÍ  r!   r	  )r~   r>   r‘  r«  rN  râ   rq   r  r@  Ú
ll_narraysr‘  ra  rá  rH  Úorig_shr—  Úinput_shapesrÄ  r�  r“  r”  r“   Úinput_stridesrn   rÀ  r’  s   ``                       @rD   Ú	_np_stackrí  Ü  sh  øøø€ ØŒ:€DåŒ>˜!ÑÔ€DÝ
Œ.˜Ñ
Ô
€CÝ”¥ D¡	¤	Ñ*Ô*€Jð-ð -ð -ð -ð -Ý˜f dÑ+Ô+ð-ñ -ô -€Dõ ˜7 G¨Z¸¸tÑDÔD€Dõ Ô% g¨t°A¬w¬}Ñ=Ô=€Jà�A�B�BŒxð Pð PˆÝÔ ˆÝ�wÔ3°G¸S¼YÑGÔGØ)ñ+ô +ð 	Pð 	P‰KˆB�à—L’L ¨×(;Ò(;¸DÀ"ÀgÑ(NÔ(NÑOÔOˆEØ—’ §¢¨eÑ!4Ô!4¸U�ÑCÔCð Pð PØÔ!×1Ò1Ø�ZØNñPô Pð PðPð Pð Pñ Pô Pð Pð Pð Pð Pð Pð Pøøøð Pð Pð Pð Pøð	Pð PÐOÐOÐOÈ$ÐOÑOÔO€Lõ
 Œl�7œ>¨4Ñ0Ô0€GåÔ& w°Ñ8Ô8€LÝÔ$ W¨gÑ6Ô6€Jõ �T˜A‘X‰Œð Mð MˆÝ” Ñ$Ô$ˆØ×(Ò(¨¨v°tÑ<Ô<ˆ
Ø˜Œ_ˆØ�nŠn˜ZØ$Ÿ[š[¨°Ñ5Ô5Ø#ñ%ô %ˆð 	�Š�b�'Ô.¨w¸ÀaÈÑMÔMÑNÔNÐNØ�Š�b�'Ô.¨w¸
ÀAÀsÑKÔKÑLÔLÐLÐLð ‡M‚M�#•wÔ+¨G°\À1ÀdÑKÔKÑLÔLÐLØ‡M‚M�*�gÔ2°7Ø3=Ø34Ø37ñ9ô 9ñ :ô :ð :õ
 Ô'¨°·²¸lÑ1KÔ1KÑLÔL€LØ �>¥C¨¡I¤IÑ-€LÝÔ% g¨w¯|ª|¸JÑ/GÔ/GÑHÔH€Jð0ð 0ð 0ð 0ð 0Ý#¥C¨¡I¤IÑ.Ô.ð0ñ 0ô 0€Mõ �T˜A‘X‰Œð 	5ð 	5ˆÝ” Ñ$Ô$ˆØ×(Ò(¨¨v°tÑ<Ô<ˆ
Ø�nŠn˜ZØ$Ÿ[š[¨°Ñ5Ô5Ø#ñ%ô %ˆõ •s˜4‘y”yÑ!Ô!ð 	5ð 	5ˆAØ�MŠM˜, qœ/¨#Ô.Ý!Ô.¨w¸ÀaÔ8HÈ!Ø/2ñ4ô 4ñ5ô 5ð 5ð 5ð	5õ •3�t‘9”9ÑÔð 8ð 8ˆØ�Š�d�GÔ0°¸-ÈÔ:JÈAØ15ñ7ô 7ñ 	8ô 	8ð 	8ð 	8ð.ð .ð .ð .Ø,ð.ñ .ô .€Mõ ˜' 7¨DØ  $¨°mØ ñ-ô -€Cõ ˜G W¨e°S·]²]±_´_ÑEÔEÐEs   Ä>"E,Å,E0Å3E0c                 óè   — |�t          |t          j        ¦  «        sd S t          | d|¦  «        \  }}|dk    rd}t	          j        |¦  «        ‚t          |¦  «        }t          j        |||¦  «        S )NrÓ  r   z.zero-dimensional arrays cannot be concatenated)r˜   r   rš   r6   r	   r�  r7   r™   )r¿  r�  râ   r|   rq   rÑ   rS  s          rD   Únp_concatenate_typerrï  5  s~   € ØÐ¥
¨4µ´Ñ ?Ô ?Ðð 	ˆõ & iØ&6¸ñ@ô @�K€Eˆ4àˆq‚y€yØ>ˆÝÔ# CÑ(Ô(Ð(å)¨&Ñ1Ô1€FåŒ;�u˜d FÑ+Ô+Ð+rF   c                 ó‚   — t          | ||¦  «        }t          |t          j        ¦  «        sJ ‚ |||¦  «        }d„ }||fS )Nc           
      óü   — |                       ||d         |j        d         t          j        ¦  «        }t	          | |t          |j        d         ¦  «        t          j        ||d         ¦  «        |j        |¦  «        S rÏ  )	rŽ   r  r   r�   râ  rÀ   r
   rÄ   r  ©r~   r>   r\   r  râ   s        rD   r¾  znp_concatenate.<locals>.codegenM  sh   € Ø�|Š|˜G T¨!¤W¨c¬h°q¬k½5¼:ÑFÔFˆÝ˜w¨Ý# C¤H¨Q¤KÑ0Ô0Ý&Ô3°G¸TÀ!¼WÑEÔEØ"œØ#ñ	%ô %ð 	%rF   )rï  r˜   r   r™   )r¿  r�  râ   rÀ  r\   r¾  s         rD   Únp_concatenateró  G  sW   € å
˜y¨&°$Ñ
7Ô
7€CÝ�c�5œ;Ñ'Ô'Ð'Ð'Ð'Ø
ˆ#ˆf�dÑ
Ô
€Cð%ð %ð %ð �ˆ<ÐrF   c                 óF   — t          | t          j        ¦  «        rdd„}|S d S )Nr   c                 ó"   — t          | |¦  «        S rW  )ró  ©r�  râ   s     rD   rí   z!impl_np_concatenate.<locals>.impl[  s   € Ý! &¨$Ñ/Ô/Ð/rF   rö   ©r˜   r   ra  ©r�  râ   rí   s      rD   Úimpl_np_concatenaterù  X  s9   € å�&�%œ/Ñ*Ô*ð ð	0ð 	0ð 	0ð 	0àˆðð rF   c                 óh   — |D ].}|j         dk     s|j         dk    rd}t          j        |¦  «        ‚Œ/dS )NrH   rt  z7np.column_stack() is only defined on 1-d and 2-d arrays)rq   r	   r�  )r~   rà   r�  rV  rÑ   s        rD   Ú_column_stack_dimsrû  `  sH   € àð -ð -ˆØŒ6�AŠ:ˆ:˜œ !š˜ØKˆCÝÔ'¨Ñ,Ô,Ð,ð $ð ˆ1rF   c                 ó¦   — t          | d|t          ¬¦  «        \  }}t          |¦  «        }t          j        |||¦  «        } ||¦  «        }d„ }||fS )Nznp.column_stack)Údim_chooserc                 ój  — t          |j        d         ¦  «        }t          j        ||d         ¦  «        }g }g }|                      t
          j        d¦  «        }t          ||¦  «        D ]±\  }	}
|	j        dk    r+| 	                    |	¦  «         | 	                    |
¦  «         Œ;|	j        dk    sJ ‚|	 
                    d¬¦  «        }t          j        ||	¦  «        }t          | |||
f|¦  «        }| 	                    |¦  «         | 	                    |¦  «         Œ²t          | ||||j        |¦  «        S )Nr   rH   rt  r:  )rÀ   r  r
   rÄ   rÃ   r   r�   r¥   rq   rj   r´  r   r$   rœ  râ  r  )r~   r>   r\   r  Úorig_arrtysÚ	orig_arrsr‘  r«  râ   r`  ra  r7  Ú
expand_sigÚnewarrs                 rD   r¾  z np_column_stack.<locals>.codegenr  s0  € Ý˜3œ8 Aœ;Ñ'Ô'ˆÝÔ(¨°$°q´'Ñ:Ô:ˆ	àˆØˆà×#Ò#¥E¤J°Ñ2Ô2ˆå˜k¨9Ñ5Ô5ð 	$ð 	$‰JˆE�3ØŒz˜QŠˆØ—’˜eÑ$Ô$Ð$Ø—’˜CÑ Ô Ð Ð ð ”z Q’���ØŸ
š
¨˜
Ñ*Ô*�Ý#Ô-¨e°UÑ;Ô;�
Ý$ W¨g°zÀCÀ6È4ÑPÔP�à—’˜eÑ$Ô$Ð$Ø—’˜FÑ#Ô#Ð#Ð#å˜w¨°¸Ø"œ°ñ6ô 6ð 	6rF   )r6   rû  r7   r   r™   )r¿  r^  r|   rq   rS  rÀ  r\   r¾  s           rD   Únp_column_stackr  i  sq   € å% iØ&7¸Ý2DðFñ Fô F�K€Eˆ4õ *¨#Ñ.Ô.€FÝ
Œ+�e˜T 6Ñ
*Ô
*€CØ
ˆ#ˆc‰(Œ(€Cð6ð 6ð 6ð4 �ˆ<ÐrF   c                 óD   — t          | t          j        ¦  «        rd„ }|S d S )Nc                 ó    — t          | ¦  «        S rW  )r  ©r^  s    rD   rí   zimpl_column_stack.<locals>.impl’  s   € Ý" 3Ñ'Ô'Ð'rF   r÷  ©r^  rí   s     rD   Úimpl_column_stackr  �  s4   € å�#•u”Ñ'Ô'ð ð	(ð 	(ð 	(àˆðð rF   c           
      ó–   — t          | |t          |j        d         ¦  «        t          j        ||d         ¦  «        |j        |¦  «        S )z/
    np.stack() with the given axis value.
    r   )rí  rÀ   r  r
   rÄ   r  rò  s        rD   Ú_np_stack_commonr
  —  sG   € õ �W˜gÝ˜#œ( 1œ+Ñ&Ô&ÝÔ)¨'°4¸´7Ñ;Ô;Ø”_Øñ	ô ð rF   c                 ó¼   — t          | d|¦  «        \  }}t          d„ |D ¦   «         ¦  «        rdnd}t          j        ||dz   |¦  «        } |||¦  «        }d„ }||fS )Nrå  c              3   ó,   K  — | ]}|j         d k    V — ŒdS )r*  N)rS  rU  s     rD   rZ  z"np_stack_common.<locals>.<genexpr>§  s(   è è € Ð8Ð8¨A˜œ CšÐ8Ð8Ð8Ð8Ð8Ð8rF   r*  rª   rH   c                 óŽ   — |                       ||d         |j        d         t          j        ¦  «        }t	          | ||||¦  «        S r­  )rŽ   r  r   r�   r
  rò  s        rD   r¾  z np_stack_common.<locals>.codegen«  s;   € Ø�|Š|˜G T¨!¤W¨c¬h°q¬k½5¼:ÑFÔFˆÝ ¨°#°t¸TÑBÔBÐBrF   )r6   rÞ  r   r™   )	r¿  r�  râ   r|   rq   rS  rÀ  r\   r¾  s	            rD   Únp_stack_commonr  ¢  s‰   € õ & iØ&0°&ñ:ô :�K€Eˆ4åÐ8Ð8°Ð8Ñ8Ô8Ñ8Ô8ÐAˆSˆS¸c€FÝ
Œ+�e˜T A™X vÑ
.Ô
.€CØ
ˆ#ˆf�dÑ
Ô
€CðCð Cð Cð �ˆ<ÐrF   c                 óF   — t          | t          j        ¦  «        rdd„}|S d S )Nr   c                 ó"   — t          | |¦  «        S rW  )r  rö  s     rD   rí   zimpl_np_stack.<locals>.implµ  s   € Ý" 6¨4Ñ0Ô0Ð0rF   rö   r÷  rø  s      rD   Úimpl_np_stackr  ²  s9   € å�&�%œ/Ñ*Ô*ð ð	1ð 	1ð 	1ð 	1àˆðð rF   c                 ó˜   — t          | ||¦  «        \  }}t          ||¦  «        }t          |¦  «        }t          j        |||¦  «        }|S rW  )r6   rG  r7   r   r™   )r¿  rà   r�  Úndim_minr|   rq   rS  rÀ  s           rD   ÚNdStack_typerr  º  sK   € å% i°¸FÑCÔC�K€Eˆ4Ýˆt�XÑÔ€DÝ)¨&Ñ1Ô1€FÝ
Œ+�e˜T 6Ñ
*Ô
*€CØ€JrF   c                 óJ   — t          | d|d¦  «        } ||¦  «        }d„ }||fS )Nz	np.hstackrH   c                 óø   ‡— |j         d         }|d         j        }|dk    r3|                      t          j        d¦  «        Št          | |||‰¦  «        S |dk    rdndŠˆfd„}|                      ||||¦  «        S )Nr   rH   c                 ó0   •— t          j        | ‰¬¦  «        S rÕ  r×  rö  s    €rD   Únp_hstack_implz3_np_hstack.<locals>.codegen.<locals>.np_hstack_implÖ  s   ø€ Ý”~ f°4Ð8Ñ8Ô8Ð8rF   ©r  rq   rÃ   r   r�   r
  rI  )r~   r>   r\   r  r]  rq   r  râ   s          @rD   r¾  z_np_hstack.<locals>.codegenÈ  s—   ø€ Ø”˜”ˆØ�QŒxŒ}ˆà�1Š9ˆ9à×'Ò'­¬
°AÑ6Ô6ˆDÝ# G¨W°c¸4ÀÑFÔFÐFð
  š	˜	�1�1 qˆDð9ð 9ð 9ð 9ð 9ð ×+Ò+¨G°^ÀSÈ$ÑOÔOÐOrF   ©r  ©r¿  r^  rÀ  r\   r¾  s        rD   Ú
_np_hstackr  Ã  s@   € å
˜	 ;°°QÑ
7Ô
7€CØ
ˆ#ˆc‰(Œ(€CðPð Pð Pð& �ˆ<ÐrF   c                 óD   — t          | t          j        ¦  «        rd„ }|S d S )Nc                 ó    — t          | ¦  «        S rW  )r  r  s    rD   rí   zimpl_np_hstack.<locals>.implá  ó   € Ý˜c‘?”?Ð"rF   r÷  r  s     rD   Úimpl_np_hstackr   Þ  ó4   € å�#•u”Ñ'Ô'ð ð	#ð 	#ð 	#àˆðð rF   c                 óJ   — t          | d|d¦  «        } ||¦  «        }d„ }||fS )Nz	np.vstackrt  c                 óò   — |j         d         }|d         j        }|dk    rd„ }n<|dk    r3|                      t          j        d¦  «        }t          | ||||¦  «        S d„ }|                      ||||¦  «        S )Nr   c                 óP   — t          j        t          j        | ¦  «        d¦  «        S r­  )r<  rœ  Úhstack©r�  s    rD   Únp_vstack_implz3_np_vstack.<locals>.codegen.<locals>.np_vstack_implð  s   € Ý”~¥b¤i°Ñ&7Ô&7¸Ñ;Ô;Ð;rF   rH   c                 ó.   — t          j        | d¬¦  «        S )Nr   rÖ  r×  r&  s    rD   r'  z3_np_vstack.<locals>.codegen.<locals>.np_vstack_implù  ó   € Ý”~ f°1Ð5Ñ5Ô5Ð5rF   r  )r~   r>   r\   r  r]  rq   r'  râ   s           rD   r¾  z_np_vstack.<locals>.codegenë  s˜   € Ø”˜”ˆØ�QŒxŒ}ˆà�1Š9ˆ9ð<ð <ð <ð <ð �QŠYˆYà×'Ò'­¬
°AÑ6Ô6ˆDÝ# G¨W°c¸4ÀÑFÔFÐFð6ð 6ð 6ð ×'Ò'¨°ÀÀdÑKÔKÐKrF   r  r  s        rD   Ú
_np_vstackr*  æ  s@   € å
˜	 ;°°QÑ
7Ô
7€CØ
ˆ#ˆc‰(Œ(€CðLð Lð Lð& �ˆ<ÐrF   c                 óD   — t          | t          j        ¦  «        rd„ }|S d S )Nc                 ó    — t          | ¦  «        S rW  )r*  r  s    rD   rí   zimpl_np_vstack.<locals>.impl  r  rF   r÷  r  s     rD   Úimpl_np_vstackr-    r!  rF   )rt  é   c                 óJ   — t          | d|d¦  «        } ||¦  «        }d„ }||fS )Nz	np.dstackrE  c                 óœ  — |j         d         }|j        }|d         j        }|dk    rd„ }|                      ||||¦  «        S |dk    r±|                      t
          j        d¦  «        }|                     |j        dz
  ¬¦  «        }	t          j	        |	g|j         ¢R Ž }
t          | ||
||¦  «        }|                      t
          j        d¦  «        }t          j	        ||	¦  «        }t          | |||f|¦  «        S |dk    r3|                      t
          j        d¦  «        }t          | ||||¦  «        S d„ }|                      ||||¦  «        S )Nr   c                 óT   — t          j        | ¦  «                             ddd¦  «        S )NrH   rr  )r<  r%  r¾  r&  s    rD   r'  z3_np_dstack.<locals>.codegen.<locals>.np_vstack_impl  s$   € Ý”y Ñ(Ô(×0Ò0°°A°rÑ:Ô:Ð:rF   rH   r:  rt  c                 ó.   — t          j        | d¬¦  «        S )Nrt  rÖ  r×  r&  s    rD   r'  z3_np_dstack.<locals>.codegen.<locals>.np_vstack_impl0  r)  rF   )r  r  rq   rI  rÃ   r   r�   r´  r   r$   r
  rœ  )r~   r>   r\   r  r]  rN  rq   r'  râ   Ústack_rettyÚ	stack_sigÚ	stack_retr  s                rD   r¾  z_np_dstack.<locals>.codegen  sd  € Ø”˜”ˆØ”ˆØ�QŒxŒ}ˆà�1Š9ˆ9ð;ð ;ð ;ð ×+Ò+¨G°^ÀSÈ$ÑOÔOÐOà�QŠYˆYà×'Ò'­¬
°AÑ6Ô6ˆDØŸ*š*¨%¬*°q©.˜*Ñ9Ô9ˆKÝÔ(¨Ð@°s´xÐ@Ð@Ð@ˆIÝ(¨°'¸9ÀdØ)-ñ/ô /ˆIð ×'Ò'­¬
°AÑ6Ô6ˆDÝÔ)¨%°Ñ=Ô=ˆJÝ˜w¨°¸i¸\È4ÑPÔPÐPà�QŠYˆYà×'Ò'­¬
°AÑ6Ô6ˆDÝ# G¨W°c¸4ÀÑFÔFÐFð6ð 6ð 6ð ×+Ò+¨G°^ÀSÈ$ÑOÔOÐOrF   r  r  s        rD   Ú
_np_dstackr6    sA   € å
˜	 ;°°QÑ
7Ô
7€CØ
ˆ#ˆc‰(Œ(€Cð Pð  Pð  PðD �ˆ<ÐrF   c                 óD   — t          | t          j        ¦  «        rd„ }|S d S )Nc                 ó    — t          | ¦  «        S rW  )r6  r  s    rD   rí   zimpl_np_dstack.<locals>.impl;  r  rF   r÷  r  s     rD   Úimpl_np_dstackr9  8  r!  rF   Úfillc                 ó   — d„ }|S )Nc                 ó   — || d d …<   d S rW  r¡   )ra  rŠ   s     rD   Ú	fill_implzarr_fill.<locals>.fill_implC  s   € ØˆˆAˆAˆA‰ØˆtrF   r¡   )ra  rŠ   r=  s      rD   Úarr_fillr>  @  s   € ðð ð ð ÐrF   Údotc                 ó   — d„ }|S )Nc                 ó,   — t          j        | |¦  «        S rW  )r<  r?  )ra  Úothers     rD   Údot_implzarray_dot.<locals>.dot_implL  s   € ÝŒv�c˜5Ñ!Ô!Ð!rF   r¡   )ra  rB  rC  s      rD   Ú	array_dotrD  J  s   € ð"ð "ð "ð €OrF   c                 óX   — t          | ¦  «        st          j        d| z  ¦  «        ‚d„ }|S )NzCannot np.fliplr on %s typec                 ó~   — t          j        | ¦  «        }|j        dk     rt          d¦  «        ‚|d d …d d d…df         S )Nrt  r“  rr  .©r<  rÒ  rq   r¼   ©rä  r²  s     rD   rí   znp_flip_lr.<locals>.implX  sF   € ÝŒJ�q‰MŒMˆð Œ6�AŠ:ˆ:ÝÐ4Ñ5Ô5Ð5Ø����T�T�r�T˜3�ÔÐrF   rD  ©rä  rí   s     rD   Ú
np_flip_lrrJ  R  sB   € õ ˜AÑÔð DÝÔ Ð!>ÀÑ!BÑCÔCÐCð ð  ð  ð €KrF   c                 óX   — t          | ¦  «        st          j        d| z  ¦  «        ‚d„ }|S )NzCannot np.flipud on %s typec                 óx   — t          j        | ¦  «        }|j        dk     rt          d¦  «        ‚|d d d…df         S )NrH   zInput must be >= 1-d.rr  .rG  rH  s     rD   rí   znp_flip_ud.<locals>.impli  s?   € ÝŒJ�q‰MŒMˆð Œ6�AŠ:ˆ:ÝÐ4Ñ5Ô5Ð5Ø���2��s�Œ|ÐrF   rD  rI  s     rD   Ú
np_flip_udrM  c  sB   € õ ˜AÑÔð DÝÔ Ð!>ÀÑ!BÑCÔCÐCðð ð ð €KrF   c                 óô   ‡‡— t          |t          j        ¦  «        st          j        |¦  «        ‚t          |j        ¦  «        Št          j        t          j        ‰¬¦  «        Š ‰|¦  «        }ˆˆfd„}||fS )zY Creates a tuple of slices for np.flip indexing like
    `(slice(None, None, -1),) * sz` r=  c                 ó   •— d„ }t           j        ‰g}t          j        ‰g|¢R Ž }|                      t           j        ¦  «        }|                      ‰¦  «        } |‰¦  «        |g}	|                      ||||	¦  «        }
|
S )Nc           
      ón   — |}t          | ¦  «        D ]"}t          ||t          d d d¦  «        ¦  «        }Œ#|S ©Nrr  )r9   r0   rG  )ÚlengthÚempty_tupler  rn   s       rD   rí   z6_build_flip_slice_tuple.<locals>.codegen.<locals>.impl  sB   € ØˆCÝ˜6‘]”]ð Cð C�Ý# C¨­E°$¸¸bÑ,AÔ,AÑBÔB��ØˆJrF   )r   r�   r   r$   r½   Úget_constant_undefrI  )r~   r>   r$   r  rí   Úinner_argtypesÚ	inner_sigÚll_idx_typerS  Ú
inner_argsr  r”   Ú
tuple_types              €€rD   r¾  z(_build_flip_slice_tuple.<locals>.codegen~  s’   ø€ ð	ð 	ð 	õ  œ* jÐ1ˆÝÔ$ ZÐA°.ÐAÐAÐAˆ	Ø×,Ò,­U¬ZÑ8Ô8ˆà×0Ò0°Ñ<Ô<ˆØ!�k $Ñ'Ô'¨Ð5ˆ
à×&Ò& w°°iÀÑLÔLˆØˆ
rF   )	r˜   r   rÙ  r	   r  rÁ   rï   rA  Úslice3_type)rn  Úszr\   r¾  r”   rY  s       @@rD   Ú_build_flip_slice_tupler\  t  sŠ   øø€ õ �b�%Ô.Ñ/Ô/ð -ÝÔ(¨Ñ,Ô,Ð,ÝˆrÔÑ Ô €DÝ”¥eÔ&7¸tÐDÑDÔD€JØ
ˆ*�R‰.Œ.€Cðð ð ð ð ð ð" �ˆ<ÐrF   c                 ón   — t          | t          j        ¦  «        st          j        d| z  ¦  «        ‚d„ }|S )NzCannot np.flip on %s typec                 ó:   — t          | j        ¦  «        }| |         S rW  )r\  rq   )rä  Úsls     rD   rí   znp_flip.<locals>.impl™  s   € Ý$ Q¤VÑ,Ô,ˆØ�ŒuˆrF   )r˜   r   r™   r	   rî   rI  s     rD   Únp_flipr`  ’  sF   € õ �a�œÑ%Ô%ð BÝÔ Ð!<¸qÑ!@ÑAÔAÐAðð ð ð €KrF   c                 ó¼  — t          | t          j        t          j        t          j        f¦  «        rdd„}|S t          |t          j        ¦  «        rdd„}|S t          |t          j        ¦  «        r*t          |j        j        t          j        ¦  «        rdd„}|S t          |t          j	        ¦  «        r$t          d„ |j        D ¦   «         ¦  «        rdd„}|S d S d S )Nr   c                 óT   — t          j        t          j        | ¦  «        ||¬¦  «        S rÕ  )r<  Úarray_splitrÒ  ©r  Úindices_or_sectionsrâ   s      rD   rí   znp_array_split.<locals>.impl£  s,   € Ý”>Ý”
˜3‘”Ø#Øðñ ô ð rF   c                 óà   — t          | j        |         |¦  «        \  }}t          j        t          j        |dz   g|z  |g||z
  dz
  z  z   ¦  «        ¦  «        }t          j        | ||¬¦  «        S )NrH   rÖ  )Údivmodrf   r<  ÚcumsumrË   rc  )r  re  râ   r„  r9  r§   s         rD   rí   znp_array_split.<locals>.impl­  s{   € Ý˜CœI dœOÐ-@ÑAÔA‰FˆAˆsÝ”i¥¤Ø�Q‘�˜#‘Ø�Ð*¨SÑ0°1Ñ4Ñ5ñ6ñ!ô !ñ ô ˆGõ ”> # w°TÐ:Ñ:Ô:Ð:rF   c                 óV  — t          | j        ¦  «        }t          dd| j        |¦  «        }g }d}|D ]>}t          ||t	          ||¦  «        ¦  «        }|                     | |         ¦  «         |}Œ?|                     | t          ||t	          |d ¦  «        ¦  «                 ¦  «         |S ©Nznp.splitrâ   r   )r1   rq   rã   r0   rG  rj   ©r  re  râ   Ú	slice_tupr  ÚprevrZ  r“   s           rD   rí   znp_array_split.<locals>.impl¾  s©   € Ý.¨s¬xÑ8Ô8ˆIÝ! *¨f°c´hÀÑEÔEˆDØˆCØˆDØ*ð ð �Ý# I¨tµU¸4ÀÑ5EÔ5EÑFÔF�Ø—
’
˜3˜sœ8Ñ$Ô$Ð$Ø��Ø�JŠJ�s�=¨°D½%ÀÀTÑ:JÔ:JÑKÔKÔLÑMÔMÐMØˆJrF   c              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S rW  ©r˜   r   rš   r  s     rD   rZ  z!np_array_split.<locals>.<genexpr>Î  s.   è è € ÐPÐP°•
˜1�eœmÑ,Ô,ÐPÐPÐPÐPÐPÐPrF   c                 óp  — t          | j        ¦  «        }t          dd| j        |¦  «        }g }d}t          |¦  «        D ]>}t	          ||t          ||¦  «        ¦  «        }|                     | |         ¦  «         |}Œ?|                     | t	          ||t          |d ¦  «        ¦  «                 ¦  «         |S rj  )r1   rq   rã   r   r0   rG  rj   rk  s           rD   rí   znp_array_split.<locals>.implÐ  s²   € Ý.¨s¬xÑ8Ô8ˆIÝ! *¨f°c´hÀÑEÔEˆDØˆCØˆDÝ%Ð&9Ñ:Ô:ð ð �Ý# I¨tµU¸4ÀÑ5EÔ5EÑFÔF�Ø—
’
˜3˜sœ8Ñ$Ô$Ð$Ø��Ø�JŠJ�s�=¨°D½%ÀÀTÑ:JÔ:JÑKÔKÔLÑMÔMÐMØˆJrF   rö   )r˜   r   rA  ÚListTypera  rš   ÚIterableTypeÚiterator_typer%  rÝ  rÞ  ©r  re  râ   rí   s       rD   Únp_array_splitru     s(  € å�#�œ­¬½¼
ÐCÑDÔDð ð	ð 	ð 	ð 	ð ˆåÐ%¥u¤}Ñ5Ô5ð 0ð	;ð 	;ð 	;ð 	;ð ˆõ 	Ð&­Ô(:Ñ;Ô;ð%åØÔ-Ô8ÝŒMñ
ô 
ð%ð
	ð 
	ð 
	ð 
	ð ˆõ 	Ð&­¬Ñ4Ô4ðåÐPÐPÐ6IÔ6OÐPÑPÔPÑPÔPðð
	ð 
	ð 
	ð 
	ð ˆð!ð ð ð rF   c                 óÔ   — t          | t          j        t          j        t          j        f¦  «        rdd„}|S t          |t          j        ¦  «        rdd„}|S t          | ||¬¦  «        S )Nr   c                 óT   — t          j        t          j        | ¦  «        ||¬¦  «        S rÕ  )r<  ÚsplitrÒ  rd  s      rD   rí   znp_split.<locals>.implä  s"   € Ý”8�BœJ s™OœOÐ-@ÀtÐLÑLÔLÐLrF   c                 ó–   — t          | j        |         |¦  «        \  }}|dk    rt          d¦  «        ‚t          j        | ||¬¦  «        S )Nr   z0array split does not result in an equal divisionrÖ  )rg  rf   r¼   r<  rc  )r  re  râ   rÉ  r9  s        rD   rí   znp_split.<locals>.implê  s]   € Ý˜CœI dœOÐ-@ÑAÔA‰FˆAˆsØ�aŠxˆxÝ ØFñô ð õ ”>ØÐ(¨tðñ ô ð rF   rÖ  rö   )r˜   r   rA  rq  ra  rš   ru  rt  s       rD   Únp_splitrz  ß  s‹   € õ �#�œ­¬½¼
ÐCÑDÔDð ð	Mð 	Mð 	Mð 	Mð ˆåÐ%¥u¤}Ñ5Ô5ð Cð	ð 	ð 	ð 	ð ˆõ ˜cÐ#6¸TÐBÑBÔBÐBrF   c                 ó  — t          | t          j        ¦  «        sd}t          j        |¦  «        ‚t          |t          j        t          j        t          j        t          j        f¦  «        sd}t          j        |¦  «        ‚d„ }|S )Nú#The argument "ary" must be an arrayú:The argument "indices_or_sections" must be int or 1d-arrayc                 ód   — | j         dk     rt          d¦  «        ‚t          j        | |d¬¦  «        S )Nrt  z3vsplit only works on arrays of 2 or more dimensionsr   rÖ  ©rq   r¼   r<  rx  ©r  re  s     rD   rí   znumpy_vsplit.<locals>.impl  s?   € ØŒ8�aŠ<ˆ<Ýð ?ñ Aô Að AåŒx˜Ð0°qÐ9Ñ9Ô9Ð9rF   ©r˜   r   r™   r	   rî   rš   ra  rA  ©r  re  rÑ   rí   s       rD   Únumpy_vsplitrƒ  ú  ó†   € å�c�5œ;Ñ'Ô'ð &Ø3ˆÝÔ  Ñ%Ô%Ð%åÐ)­E¬M½5¼;Ý,1¬J½¼ð,Hñ Iô Ið &àKˆÝÔ  Ñ%Ô%Ð%ð:ð :ð :ð €KrF   c                 ó  — t          | t          j        ¦  «        sd}t          j        |¦  «        ‚t          |t          j        t          j        t          j        t          j        f¦  «        sd}t          j        |¦  «        ‚d„ }|S )Nr|  r}  c                 ó¨   — | j         dk    rt          d¦  «        ‚| j         dk    rt          j        | |d¬¦  «        S t          j        | |d¬¦  «        S )Nr   z3hsplit only works on arrays of 1 or more dimensionsrH   rÖ  r  r€  s     rD   rí   znumpy_hsplit.<locals>.impl  sb   € ØŒ8�qŠ=ˆ=Ýð ?ñ Aô Að AàŒ8�aŠ<ˆ<Ý”8˜CÐ!4¸1Ð=Ñ=Ô=Ð=ÝŒx˜Ð0°qÐ9Ñ9Ô9Ð9rF   r�  r‚  s       rD   Únumpy_hsplitr‡    s†   € å�c�5œ;Ñ'Ô'ð &Ø3ˆÝÔ  Ñ%Ô%Ð%åÐ)­E¬M½5¼;Ý,1¬J½¼ð,Hñ Iô Ið &àKˆÝÔ  Ñ%Ô%Ð%ð:ð :ð :ð €KrF   c                 ó  — t          | t          j        ¦  «        sd}t          j        |¦  «        ‚t          |t          j        t          j        t          j        t          j        f¦  «        sd}t          j        |¦  «        ‚d„ }|S )Nr|  r}  c                 ód   — | j         dk     rt          d¦  «        ‚t          j        | |d¬¦  «        S )NrE  z3dsplit only works on arrays of 3 or more dimensionsrt  rÖ  r  r€  s     rD   rí   znumpy_dsplit.<locals>.impl/  s<   € ØŒ8�aŠ<ˆ<Ýð *ñ +ô +ð +åŒx˜Ð0°qÐ9Ñ9Ô9Ð9rF   r�  r‚  s       rD   Únumpy_dsplitrŠ  $  r„  rF   c                 ó   — | |k     S )z7
    Trivial comparison function between two keys.
    r¡   r*  s     rD   Ú
default_ltrŒ  >  s   € ð ˆqŠ5€LrF   Fc                 ó
  — | dk    rd} | |j         |f}	 t          |         S # t          $ rW | dk    rt          j        ||d¬¦  «        }|j        }n#| dk    rt          j        ||¬¦  «        }|j        }|t          |<   |cY S w xY w)z6
    Get a sort implementation of the given kind.
    Ústabler,   r+   T)ÚltÚ
is_argsortÚis_np_array)r�  r�  )	rr   Ú_sortsÚKeyErrorr+   Úmake_jit_quicksortÚrun_quicksortr,   Úmake_jit_mergesortÚrun_mergesort)râ  Últ_implr�  ÚkeyrO  r!  s         rD   Úget_sort_funcrš  E  sÈ   € ð ˆxÒÐàˆØ
�Ô  *Ð
,€CðÝ�cŒ{ÐøÝð ð ð Ø�;ÒÐÝÔ/ØØ%Ø ð"ñ "ô "ˆDð Ô%ˆDˆDØ�[Ò Ð ÝÔ/ØØ%ð'ñ 'ô 'ˆDð Ô%ˆDØ�ˆs‰Øˆˆˆðøøøs   ”! ¡ABÂBc                 ó”   — t          | t          j        ¦  «        rt          S t          | t          j        ¦  «        rt
          S t          S rW  )r˜   r   rÉ  r   r  r   rŒ  rW  s    rD   Últ_implementationrœ  `  s<   € Ý�%�œÑ%Ô%ð ÝÐÝ	�E�5œ=Ñ	)Ô	)ð ÝÐåÐrF   z
array.sortc                 ó*  ‡	— |j         \  }}|j        }t          |t          |j        ¦  «        ¬¦  «        Š	|dv r|j        dk    rˆ	fd„}nˆ	fd„}|                     |j         d d…         ¬¦  «        }|d d…         }|                      ||||¦  «        S )N)râ  r˜  )r,   rŽ  rH   c                 ór   •— t          j        | j        d d…         ¦  «        D ]} ‰| |         ¦  «         Œd S rQ  )r<  rï  rf   )ra  r“   Ú	sort_funcs     €rD   Úarray_sort_implz#array_sort.<locals>.array_sort_implr  sI   ø€ õ ”z #¤)¨C¨R¨C¤.Ñ1Ô1ð $ð $�Ø�	˜#˜cœ(Ñ#Ô#Ð#Ð#ð$ð $rF   c                 ó   •—  ‰| ¦  «         d S rW  r¡   ©ra  rŸ  s    €rD   r   z#array_sort.<locals>.array_sort_implx  s   ø€ àˆI�c‰NŒNˆNˆNˆNrF   r>  )r  rï   rš  rœ  r|   rq   ÚreplacerI  )
r~   r>   r\   r  r=  râ  r   ÚinnersigÚ	innerargsrŸ  s
            @rD   Ú
array_sortr¦  i  sÚ   ø€ à”H�M€GˆTØÔ€Då 4Ý&7¸¼Ñ&FÔ&FðHñ Hô H€Ið Ð&Ð&Ð&¨7¬<¸!Ò+;Ð+;ð	$ð 	$ð 	$ð 	$ð 	$ð 	$ð	ð 	ð 	ð 	ð 	ð �{Š{ ¤¨¨!¨¤ˆ{Ñ-Ô-€HØ�R�a�R”€IØ×#Ò# G¨_Ø$,¨iñ9ô 9ð 9rF   c                 óR   — t          | ¦  «        st          j        d¦  «        ‚d„ }|S )NzArgument "a" must be array-likec                 óV   — |                       ¦   «         }|                     ¦   «          |S rW  )r´  rO  )rV  r  s     rD   Únp_sort_implz"impl_np_sort.<locals>.np_sort_implˆ  s!   € Ø�fŠf‰hŒhˆØ�Š‰
Œ
ˆ
Øˆ
rF   rD  )rV  r©  s     rD   Úimpl_np_sortrª  ‚  sC   € å˜AÑÔð 2ÝÔ ð "1ñ 2ô 2ð 	2ðð ð ð ÐrF   zarray.argsortc                 óþ   ‡	— |j         \  }}t          |j        t          |j        ¦  «        d¬¦  «        Š	ˆ	fd„}|                     |j         d d…         ¬¦  «        }|d d…         }|                      ||||¦  «        S )NT)râ  r˜  r�  c                 ó   •—  ‰| ¦  «        S rW  r¡   r¢  s    €rD   Úarray_argsort_implz)array_argsort.<locals>.array_argsort_impl˜  s   ø€ Øˆy˜‰~Œ~ÐrF   rH   r>  )r  rš  rï   rœ  r|   r£  rI  )
r~   r>   r\   r  r=  râ  r­  r¤  r¥  rŸ  s
            @rD   Úarray_argsortr®  �  s    ø€ ð ”H�M€GˆTå 4Ô#5Ý&7¸¼Ñ&FÔ&FØ)-ð/ñ /ô /€Iðð ð ð ð ð �{Š{ ¤¨¨!¨¤ˆ{Ñ-Ô-€HØ�R�a�R”€IØ×#Ò# GÐ-?Ø$,¨iñ9ô 9ð 9rF   c                 ó@   — |j         |j         k    s|j        dk    sJ ‚|S )Nr²  )r£  rS  )r~   r>   r¯  r°  rŠ   s        rD   Úarray_to_arrayr°  ¤  s*   € ð Œ>˜Tœ\Ò)Ð)¨T¬[¸CÒ-?Ð-?Ð-?Ð?Ø€JrF   c                 óˆ   — d„ }t          ||¦  «        }|                      ||||g¦  «        }t          | ||j        |¦  «        S )Nc                 ó,   — |                       d¦  «        S rë   )r²  rä  s    rD   rí   zarray0d_to_scalar.<locals>.impl³  s   € à�vŠv�a‰yŒyÐrF   )r$   rI  r"   r  ©r~   r>   r¯  r°  rŠ   rí   r\   r  s           rD   Úarray0d_to_scalarr´  «  sS   € ðð ð õ �D˜&Ñ
!Ô
!€CØ
×
"Ò
" 7¨D°#¸°uÑ
=Ô
=€CÝ˜g w°´ÀÑEÔEÐErF   c                 óˆ   — d„ }t          ||¦  «        }|                      ||||g¦  «        }t          | ||j        |¦  «        S )Nc                 ó,   — t          | d         ¦  «        S r¯  r  rä  s    rD   rí   z array_to_unichrseq.<locals>.impl¾  s   € Ý�1�R”5‰zŒzÐrF   )r$   rI  r    r  r³  s           rD   Úarray_to_unichrseqr·  ¼  sS   € ðð ð õ �D˜&Ñ
!Ô
!€CØ
×
"Ò
" 7¨D°#¸°uÑ
=Ô
=€CÝ˜W g¨s¬ÀÑDÔDÐDrF   c                 ó   — t           ‚)zR
    An intrinsic returning a derived array with the given shape and strides.
    rÞ   )rV  rf   r°   s      rD   Úreshape_uncheckedr¹  É  rÿ  rF   c                 ó   ‡— d„ Šˆfd„}|S )Nc                 óh   — t          | t          j        ¦  «        ot          d„ | D ¦   «         ¦  «        S )Nc              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S rW  ro  rš  s     rD   rZ  z>type_reshape_unchecked.<locals>.check_shape.<locals>.<genexpr>Ô  s.   è è € Ð@Ð@°Q•J˜q¥%¤-Ñ0Ô0Ð@Ð@Ð@Ð@Ð@Ð@rF   )r˜   r   ra  rÞ  rF  s    rD   rŒ  z+type_reshape_unchecked.<locals>.check_shapeÒ  s7   € Ý˜5¥%¤/Ñ2Ô2ð AÝÐ@Ð@¸%Ð@Ñ@Ô@Ñ@Ô@ð	BrF   c                 óø   •— t          | t          j        ¦  «        sd S  ‰|¦  «        r ‰|¦  «        sd S t          |¦  «        t          |¦  «        k    rd S |                      t          |¦  «        d¬¦  «        S )Nr²  r³  )r˜   r   r™   r¤   r´  )rV  rf   r°   rŒ  s      €rD   Útyperz%type_reshape_unchecked.<locals>.typerÖ  s|   ø€ Ý˜!�Uœ[Ñ)Ô)ð 	ØˆFØˆ{˜5Ñ!Ô!ð 	¨¨°WÑ)=Ô)=ð 	ØˆFÝˆu‰:Œ:�˜W™œÒ%Ð%ØˆFØ�vŠv�3˜u™:œ:¨cˆvÑ2Ô2Ð2rF   r¡   )r~   r¾  rŒ  s     @rD   Útype_reshape_uncheckedr¿  Ð  s5   ø€ ðBð Bð Bð3ð 3ð 3ð 3ð 3ð €LrF   c                 óœ  — |j         d         }|j        } t          |¦  «        | ||d         ¦  «        } t          |¦  «        | |¦  «        }t          j        ||d         ¦  «        }t          j        ||d         ¦  «        }	t          ||j        ||	|j        |j        ¬¦  «         | 	                    ¦   «         }
t          | |||
¦  «        S )Nr   rH   rt  rR  )r  r  ry   r
   rÄ   rÙ   r›   r±   r¯   r	  r    )r~   r>   r\   r  rÛ   rN  r  r  rf   r°   r  s              rD   Úimpl_shape_uncheckedrÁ  â  sÉ   € àŒH�QŒK€EØŒO€Eà
�*�UÑ
Ô
˜G W¨d°1¬gÑ
6Ô
6€CØ
�*�UÑ
Ô
˜G WÑ
-Ô
-€CÝÔ  ¨$¨q¬'Ñ2Ô2€EÝÔ" 7¨D°¬GÑ4Ô4€Gå�3ØœØØ"ØœLØœ;ðñ ô ð ð �-Š-‰/Œ/€CÝ˜W g¨u°cÑ:Ô:Ð:rF   c                 óâ   ‡‡— |d t           j        fv rt          d„ ¦   «         Šnt          d„ ¦   «         Š|d t           j        fv rt          j        d¦  «        ‚t          d„ ¦   «         Šdˆˆfd„	}|S )Nc                 ó   — | j         S rW  rF  ©r¥  rf   s     rD   r‚  zas_strided.<locals>.get_shapeû  s	   € à”7ˆNrF   c                 ó   — |S rW  r¡   rÄ  s     rD   r‚  zas_strided.<locals>.get_shapeÿ  s   € àˆLrF   z,as_strided() strides argument cannot be Nonec                 ó   — |S rW  r¡   )r¥  r°   s     rD   Úget_strideszas_strided.<locals>.get_strides
  s   € àˆNrF   c                 óR   •— t          |  ‰| |¦  «         ‰| |¦  «        ¦  «        } | S rW  )r¹  )r¥  rf   r°   r‚  rÇ  s      €€rD   Úas_strided_implz#as_strided.<locals>.as_strided_impl  s1   ø€ Ý˜a  ¨1¨eÑ!4Ô!4°k°kÀ!ÀWÑ6MÔ6MÑNÔNˆØˆrF   rn  )r   r�  r&   r	   rî   )r¥  rf   r°   rÉ  r‚  rÇ  s       @@rD   Ú
as_stridedrÊ  ø  s¾   øø€ à�•u”zÐ"Ð"Ð"Ý	ð	ð 	ñ 
Ô	ð	ð 	õ 
ð	ð 	ñ 
Ô	ð	ð �4�œÐ$Ð$Ð$õ
 Ô Ð!OÑPÔPÐPå	ð	ð 	ñ 
Ô	ð	ðð ð ð ð ð ð ð ÐrF   c                 óØ  ‡‡‡‡— t          |t          j        ¦  «        rYt          t	          | j        dz   ¦  «        ¦  «        Št          t	          | j        dz   ¦  «        ¦  «        Št          d„ ¦   «         ŠnÀt          |t          j        ¦  «        r’t          |j        t          j        ¦  «        rst          t	          | j        t          |¦  «        z   ¦  «        ¦  «        Št          t	          | j        t          |¦  «        z   ¦  «        ¦  «        Št          d„ ¦   «         Šnt          j        d¦  «        ‚t          |¦  «        rt          d„ ¦   «         Šn‰t          |t          j        ¦  «        rt          d„ ¦   «         Šn^t          |t          j        ¦  «        r0t          |j        t          j        ¦  «        rt          d„ ¦   «         Šnt          j        d¦  «        ‚d
ˆˆˆˆfd	„	}|S )NrH   c                 ó   — | fS rW  r¡   ©Úwindow_shapes    rD   Úget_window_shapez-sliding_window_view.<locals>.get_window_shape  s
   € à �?Ð"rF   c                 ó   — | S rW  r¡   rÍ  s    rD   rÏ  z-sliding_window_view.<locals>.get_window_shape(  s   € àÐrF   z4window_shape must be an integer or tuple of integersc                 ó:   — t          t          |¦  «        ¦  «        S rW  )rÀ   r9   ©rÎ  râ   rq   s      rD   Úget_axisz%sliding_window_view.<locals>.get_axis3  s   € å�˜d™œÑ$Ô$Ð$rF   c                 ó(   — t          dd||¦  «        gS )NÚsliding_window_viewrâ   ©rã   rÒ  s      rD   rÓ  z%sliding_window_view.<locals>.get_axis8  s    € õ Ð4°f¸dÀDÑIÔIðð rF   c                 ó    ‡— ˆfd„|D ¦   «         S )Nc                 ó4   •— g | ]}t          d d‰|¦  «        ‘ŒS )rÕ  râ   rÖ  )r¢   rV  rq   s     €rD   r£   z9sliding_window_view.<locals>.get_axis.<locals>.<listcomp>B  s8   ø€ ð #ð #ð #Øõ #Ð#8¸&À$ÈÑJÔJð #ð #ð #rF   r¡   rÒ  s     `rD   rÓ  z%sliding_window_view.<locals>.get_axis@  s.   ø€ ð#ð #ð #ð #Ø!ð#ñ #ô #ð #rF   z2axis must be None, an integer or tuple of integersc                 ó¤  •—  ‰|¦  «        } ‰
||| j         ¦  «        }t          |¦  «        t          |¦  «        k    rt          d¦  «        ‚‰}‰}t          | j         ¦  «        D ]:}t	          ||| j        |         ¦  «        }t	          ||| j        |         ¦  «        }Œ;| j         }t          ||¦  «        D ]†\  }}|dk     rt          d¦  «        ‚||         |k     rt          d¦  «        ‚||         |z
  dz   }t	          |||¦  «        }t	          |||¦  «        }t	          ||| j        |         ¦  «        }|dz  }Œ‡t          | ||¦  «        }	|	S )Nz2Must provide matching length window_shape and axisr   z-`window_shape` cannot contain negative valuesz4window_shape cannot be larger than input array shaperH   )	rq   r¤   r¼   r9   r0   rf   r°   r¥   r¹  )r¥  rÎ  râ   Ú	out_shapeÚout_stridesrn   rú   r�  Útrimmedr¯  rÓ  rÏ  Úshape_bufferÚstride_buffers             €€€€rD   Úsliding_window_view_implz5sliding_window_view.<locals>.sliding_window_view_implJ  s†  ø€ Ø'Ð'¨Ñ5Ô5ˆØˆx˜ d¨A¬FÑ3Ô3ˆÝˆ|ÑÔ¥ D¡	¤	Ò)Ð)ÝØDñô ð ð
 !ˆ	Ø#ˆÝ�q”v‘”ð 	Fð 	FˆAÝ% i°°A´G¸A´JÑ?Ô?ˆIÝ'¨°Q¸¼	À!¼ÑEÔEˆKˆKð ŒFˆÝ˜4 Ñ.Ô.ð 	ð 	‰GˆB�Ø�QŠwˆwÝ ØCñô ð ð ˜Œ}˜sÒ"Ð"Ý ØJñô ð ð   ”m cÑ)¨AÑ-ˆGÝ% i°°WÑ=Ô=ˆIÝ% i°°CÑ8Ô8ˆIÝ'¨°Q¸¼	À"¼ÑFÔFˆKØ�‰FˆAˆAõ !  I¨{Ñ;Ô;ˆØˆrF   rW  )r˜   r   rš   r¿   r9   rq   r&   rA  r|   r¤   r	   rî   r   )r¥  rÎ  râ   rß  rÓ  rÏ  rÝ  rÞ  s       @@@@rD   rÕ  rÕ    s   øøøø€ õ �,¥¤Ñ.Ô.ð 
Ý�U 1¤6¨A¡:Ñ.Ô.Ñ/Ô/ˆÝ�e A¤F¨Q¡JÑ/Ô/Ñ0Ô0ˆå	ð	#ð 	#ñ 
Ô	ð	#ð 	#õ �\¥5¤>Ñ
2Ô
2ð 
Ý�|Ô)­5¬=Ñ9Ô9ð
å�U 1¤6­C°Ñ,=Ô,=Ñ#=Ñ>Ô>Ñ?Ô?ˆÝ�e A¤F­S°Ñ->Ô->Ñ$>Ñ?Ô?Ñ@Ô@ˆå	ð	 ð 	 ñ 
Ô	ð	 ð 	 õ Ô ØBñ
ô 
ð 	
õ
 �4ÑÔð 
Ý	ð	%ð 	%ñ 
Ô	ð	%ð 	%õ 
�D�%œ-Ñ	(Ô	(ð 
Ý	ð	ð 	ñ 
Ô	ð	ð 	õ
 �T�5œ>Ñ
*Ô
*ð 

Ý�t”z¥5¤=Ñ1Ô1ð

å	ð	#ð 	#ñ 
Ô	ð	#ð 	#õ
 Ô Ø@ñ
ô 
ð 	
ð%ð %ð %ð %ð %ð %ð %ð %ð %ðN $Ð#rF   c                 óD   — t          | t          j        ¦  «        rd„ }|S d S )Nc                 óÈ   — | j         dk    rt          dk     rdS t          d¦  «        ‚| j         dk    r"t          |                      d¦  «        ¦  «        S t          d¦  «        ‚)Nr   )rt  rt  FziThe truth value of an empty array is ambiguous. Use `array.size > 0` to check that an array is not empty.rH   z[The truth value of an array with more than one element is ambiguous. Use a.any() or a.all())r”   r   r¼   rb  r²  rÛ  s    rD   rí   zol_bool.<locals>.implw  st   € ØŒx˜1Š}ˆ}Ý  6Ò)Ð)Ø ˜5å$ð 'Jñ Lô Lð Lð ”˜Q’�Ý˜CŸHšH Q™KœKÑ(Ô(Ð(å ð #-ñ /ô /ð /rF   rX  rÜ  s     rD   Úol_boolrâ  t  s6   € å�#•u”{Ñ#Ô#ð ð	/ð 	/ð 	/ð ˆðð rF   c                 óŒ  ‡‡— t          |t          t          j        f¦  «        st	          j        d¦  «        ‚t          |t          t          j        f¦  «        st	          j        d¦  «        ‚t          | t          j        ¦  «        st	          j        d¦  «        ‚| j        Št          t          ‰¦  «        ¦  «        Šˆˆfd„}|S )Nz.The second argument "axis1" must be an integerz-The third argument "axis2" must be an integerú'The first argument "a" must be an arrayc                 óº   •— t          dd‰|¦  «        }t          dd‰|¦  «        }t          ‰||¦  «        }t          |||¦  «        }t          j        | |¦  «        S )Nznp.swapaxesÚaxis1Úaxis2)rã   r0   r<  rj  )rV  ræ  rç  Ú
axes_tupleÚ	axes_listrq   s       €€rD   rí   znumpy_swapaxes.<locals>.impl—  s]   ø€ Ý˜}¨g°t¸UÑCÔCˆÝ˜}¨g°t¸UÑCÔCˆÝ" 9¨e°UÑ;Ô;ˆ
Ý" :¨u°eÑ<Ô<ˆ
ÝŒ|˜A˜zÑ*Ô*Ð*rF   )
r˜   rÁ   r   rš   r	   rî   r™   rq   r¿   r9   )rV  ræ  rç  rí   ré  rq   s       @@rD   Únumpy_swapaxesrê  ˆ  sÒ   øø€ å�e�c¥5¤=Ð1Ñ2Ô2ð ,ÝÔ ð "+ñ ,ô ,ð 	,å�e�c¥5¤=Ð1Ñ2Ô2ð ,ÝÔ ð "+ñ ,ô ,ð 	,å�a�œÑ%Ô%ð LÝÔ Ð!JÑKÔKÐKð Œ6€DÝ•e˜D‘k”kÑ"Ô"€Ið+ð +ð +ð +ð +ð +ð €KrF   c                 ó0  ‡‡— t          | t          j        ¦  «        st          j        d¦  «        ‚t          |t          j        ¦  «        sMt          |t          j        ¦  «        rt          |j        t          j        ¦  «        st          j        d¦  «        ‚t          |t          j        ¦  «        sMt          |t          j        ¦  «        rt          |j        t          j        ¦  «        st          j        d¦  «        ‚| j        Šd| j        z  Šˆˆfd„}|S )Nrä  zGThe second argument "source" must be an integer or sequence of integerszKThe third argument "destination" must be an integer or sequence of integersrê  c                 óØ  •‡— t          dd‰	‰¦  «        Št          dd‰	|¦  «        }t          ‰¦  «        t          |¦  «        k    rt          d¦  «        ‚ˆfd„t          | j        ¦  «        D ¦   «         }t          t          |‰¦  «        ¦  «        D ]\  }}|                     ||¦  «         Œ‰
}t          |¦  «        D ]\  }}t          |||¦  «        }Œ|  
                    |¦  «        S )Nznp.moveaxisÚsourceÚdestinationzL`source` and `destination` arguments must have the same number of parametersc                 ó   •— g | ]}|‰v¯|‘Œ	S r¡   r¡   )r¢   r]  rí  s     €rD   r£   z0numpy_moveaxis.<locals>.impl.<locals>.<listcomp>Ê  s   ø€ ÐBÐBÐB˜A°!¸6°/°/�a°/°/°/rF   )rò   r¤   r¼   r9   rq   r€  r¥   r  rø   r0   rj  )rV  rí  rî  Ú
order_listr½  r�  rÁ  rn   Úorq   Ú
order_inits    `       €€rD   rí   znumpy_moveaxis.<locals>.impl¿  s  øø€ Ý% m°X¸tÀVÑLÔLˆÝ*Ø˜=¨$°ñ
ô 
ˆõ ˆv‰;Œ;�#˜kÑ*Ô*Ò*Ð*Ýð0ñô ð ð
 CÐBÐBÐB¥ q¤v¡¤ÐBÑBÔBˆ
å¥ K°Ñ 8Ô 8Ñ9Ô9ð 	)ð 	)‰IˆD�#Ø×Ò˜d CÑ(Ô(Ð(Ð(àˆÝ˜jÑ)Ô)ð 	/ð 	/‰DˆAˆqÝ! %¨¨AÑ.Ô.ˆEˆEà�{Š{˜5Ñ!Ô!Ð!rF   )	r˜   r   r™   r	   rî   rš   r(  r|   rq   )rV  rí  rî  rí   rq   rò  s       @@rD   Únumpy_moveaxisró  ¡  s#  øø€ å�a�œÑ%Ô%ð LÝÔ Ð!JÑKÔKÐKå�6�5œ=Ñ)Ô)ð

õ �v�uœ~Ñ.Ô.ð

õ ˜6œ<­¬Ñ7Ô7ð	

õ Ô ð&ñ
ô 
ð 	
õ
 	�;¥¤Ñ.Ô.ð

õ �{¥E¤NÑ3Ô3ð

õ ˜;Ô,­e¬mÑ<Ô<ð	

õ Ô ð&ñ
ô 
ð 	
ð
 Œ6€DØ˜œ‘€Jð"ð "ð "ð "ð "ð "ð, €KrF   c                 ó~  — t          dd| j        |¦  «        }t          | j        ¦  «        }d||<   t	          t          ||j        ¦  «        ¦  «        D ]B\  }\  }}	|dk    r|	}
n |	dk    r|}
n||	k    rt          d¦  «        ‚|}
t          |||
¦  «        }ŒCt          ||| j        |         ¦  «        }t          j	        | |¦  «        } t          j	        ||¦  «        }|}t          |¦  «        dk    r;t          t          |¦  «        ¦  «        D ]}t          ||| j        |         ¦  «        }Œ|}t          |¦  «        dk    rAt          t          |¦  «        ¦  «        D ]$}t          ||| j        |dz   |z            ¦  «        }Œ%|j        |         }t          j        ||fz   |z   | j        ¦  «        }t          d d d ¦  «        f}t          j        |¦  «        D ]f}t          j        |¦  «        D ]O}| ||z   |z            }|||z   |z            }|||z   |z            }t          |¦  «        D ]}|||                  ||<   ŒŒPŒg|S )Nznp.take_along_axisrâ   rH   z*`arr` and `indices` dimensions don't matchr   )rã   rq   rÀ   rf   rø   r¥   r¼   r0   r<  r×  r¤   r9   rY  r|   rG  rï  )ra  r§   râ   ÚNi_origÚNk_origÚindices_broadcast_shapeÚ	arr_shapern   Úd1Úd2Únew_valÚarr_broadcast_shapeÚNiÚNkÚJr  Únp_s_ÚiiÚkkÚa_1dÚ
indices_1dÚout_1dr¨  s                          rD   Ú_take_along_axis_implr	  Ø  sy  € õ Ð.°¸¼À$ÑGÔG€Dõ �S”Y‘”€IØ€Iˆd�OÝ ¥ Y°´Ñ!>Ô!>Ñ?Ô?ð 
ð 
‰ˆ‰8ˆB�Ø�Š7ˆ7ØˆGˆGØ�1ŠWˆWØˆGˆGà�RŠxˆxÝ Ø@ñô ð ð ˆGÝ"/Ø# Q¨ñ#
ô #
ÐÐõ (Ø  s¤y°¤ñô Ðõ Œ/˜#Ð2Ñ
3Ô
3€CÝŒo˜gÐ'>Ñ?Ô?€Gà	€BÝ
ˆ7�|„|�aÒÐÝ•s˜2‘w”w‘”ð 	4ð 	4ˆAÝ˜r 1 c¤i°¤lÑ3Ô3ˆBˆBØ	€BÝ
ˆ7�|„|�aÒÐÝ•s˜2‘w”w‘”ð 	?ð 	?ˆAÝ˜r 1 c¤i°°q±¸1±Ô&=Ñ>Ô>ˆBˆBàŒ�dÔ€AÝ
Œ(�2˜˜‘9˜r‘> 3¤9Ñ
-Ô
-€Cå�4˜˜tÑ$Ô$Ð&€EåŒj˜‰nŒnð 0ð 0ˆÝ”*˜R‘.”.ð 	0ð 	0ˆBØ�r˜E‘z B‘Ô'ˆDØ   e¡¨b¡Ô1ˆJØ˜˜e™ b™Ô)ˆFÝ˜1‘X”Xð 0ð 0�Ø  ¨A¤Ô/��q‘	�	ð0ð		0ð €JrF   c                 óŠ  ‡‡‡— t          | t          j        ¦  «        st          j        d¦  «        ‚t          |t          j        ¦  «        st          j        d¦  «        ‚t          |j        t          j        ¦  «        st          j        d¦  «        ‚t          |¦  «        rd}n| j        }||j        k    rt          j        d¦  «        ‚t          t          |j        ¦  «        ¦  «        Št          |¦  «        rˆfd„}nÂt          |d¦  «         t          |t          j        ¦  «        st          j        d¦  «        ‚|j        }|d	k     r
| j        |z   }|d	k     s|| j        k    rt          j        d
¦  «        ‚t          t          |¦  «        ¦  «        Št          t          |dz   | j        ¦  «        ¦  «        Šˆˆˆfd„}|S )Nz)The first argument "arr" must be an arrayz.The second argument "indices" must be an arrayz'The indices array must contain integersrH   z;`indices` and `arr` must have the same number of dimensionsc                 óP   •— t          |                      ¦   «         |ddd‰¦  «        S )Nr   r¡   )r	  rÞ  )ra  r§   râ   r÷  s      €rD   Útake_along_axis_implz1arr_take_along_axis.<locals>.take_along_axis_impl)  s-   ø€ Ý(¨¯ª©¬¸ÀÀBÈØ)@ñBô Bð BrF   râ   zaxis must be a literal valuer   zaxis is out of boundsc                 ó,   •— t          | ||‰‰‰¦  «        S rW  )r	  )ra  r§   râ   rý  rþ  r÷  s      €€€rD   r		  z1arr_take_along_axis.<locals>.take_along_axis_impl:  s%   ø€ Ý(¨¨g°t¸RÀØ)@ñBô Bð BrF   )r˜   r   r™   r	   rî   r|   rš   r   rq   r¿   r9   r   rÙ  r™  rï   )ra  r§   râ   Úarr_ndimr		  rý  rþ  r÷  s        @@@rD   Úarr_take_along_axisr	    sò  øøø€ å�c�5œ;Ñ'Ô'ð NÝÔ Ð!LÑMÔMÐMÝ�g�uœ{Ñ+Ô+ð >ÝÔ Ø<ñ>ô >ð 	>å�g”m¥U¤]Ñ3Ô3ð LÝÔ Ð!JÑKÔKÐKÝ�4ÑÔð Øˆˆà”8ˆØ�7”<ÒÐåÔ ØIñ
ô 
ð 	
õ $¥E¨'¬,Ñ$7Ô$7Ñ8Ô8ÐÝ�4ÑÔð Bð	Bð 	Bð 	Bð 	Bð 	Bð 	Bõ 	˜˜vÑ&Ô&Ð&Ý˜$¥Ô 4Ñ5Ô5ð 	IÝÔ(Ð)GÑHÔHÐHØÔ!ˆØ�!Š8ˆ8Ø”8˜d‘?ˆDà�!Š8ˆ8�t˜sœxÒ'Ð'ÝÔ(Ð)@ÑAÔAÐAå•5˜‘;”;ÑÔˆÝ•5˜ ™ 3¤8Ñ,Ô,Ñ-Ô-ˆð	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð  ÐrF   Tç        c                 ób  — t          | t          j        ¦  «        rqt          | t          j        ¦  «        rdd„}nõt          | t          j        ¦  «        rdd„}nÖt          | t          j        ¦  «        rdd„}n·t          j        d¦  «        ‚t          | ¦  «        r€t          | j	        t          j        ¦  «        rdd„}npt          | j	        t          j        ¦  «        rdd„}nLt          | j	        t          j        ¦  «        rdd	„}n(t          j        d¦  «        ‚t          j        d
¦  «        ‚|S )NTr	  c                 ó   — | S rW  r¡   ©r¥  r´  ÚnanÚposinfÚneginfs        rD   rí   znan_to_num_impl.<locals>.implE  ó   € Ø�rF   c                 ó2  — |�|n%t          j        t          | ¦  «        ¦  «        j        }|�|n%t          j        t          | ¦  «        ¦  «        j        }t          j        | ¦  «        r|S t          j        | ¦  «        r|S t          j        | ¦  «        r|S | S rW  )r<  Úfinfor:   rð  rG  rM  ÚisneginfÚisposinf)r¥  r´  r	  r	  r	  Úmin_infÚmax_infs          rD   rí   znan_to_num_impl.<locals>.implI  sœ   € ð Ð)ð �Fåœ¥$ q¡'¤'Ñ*Ô*Ô.ð ð Ð)ð �Fåœ¥$ q¡'¤'Ñ*Ô*Ô.ð õ ”8˜A‘;”;ð #Ø�JÝ”[ ‘^”^ð #Ø"�NÝ”[ ‘^”^ð #Ø"�NØ�rF   c                 ó–   — t          j        | j        |||¬¦  «        }t          j        | j        |||¬¦  «        }t	          ||¦  «        S )N)r	  r	  r	  )r<  Ú
nan_to_numr„  r†  Úcomplex)r¥  r´  r	  r	  r	  rã  r×  s          rD   rí   znan_to_num_impl.<locals>.impl]  sD   € Ý”M !¤&¨c¸&ÈÐPÑPÔP�Ý”M !¤&¨c¸&ÈÐPÑPÔP�Ý˜q !‘}”}Ð$rF   z4Only Integer, Float, and Complex values are acceptedc                 ó   — | S rW  r¡   r	  s        rD   rí   znan_to_num_impl.<locals>.impli  r	  rF   c                 óà  — |�|nt          j        | j        ¦  «        j        }|�|nt          j        | j        ¦  «        j        }t          j        | ¦  «        }|rt          j        |¦  «        n|}|j        }	t          |j	        ¦  «        D ]a}
t          j
        |	|
         ¦  «        r||	|
<   Œ"t          j        |	|
         ¦  «        r||	|
<   ŒBt          j        |	|
         ¦  «        r||	|
<   Œb|S rW  )r<  r	  r|   rð  rG  rÒ  r´  r4  r9   r”   rM  r	  r	  )r¥  r´  r	  r	  r	  r	  r	  Úx_ÚoutputÚoutput_flatrn   s              rD   rí   znan_to_num_impl.<locals>.impll  sú   € ð Ð)ð �Fåœ !¤'Ñ*Ô*Ô.ð ð Ð)ð �Fåœ !¤'Ñ*Ô*Ô.ð õ ”Z ‘]”]�Ø(,Ð4�œ ™œ˜°"�à$œk�Ý˜vœ{Ñ+Ô+ð 1ð 1�AÝ”x ¨A¤Ñ/Ô/ð 1Ø),˜ A™˜Ýœ [°¤^Ñ4Ô4ð 1Ø)0˜ A™˜Ýœ [°¤^Ñ4Ô4ð 1Ø)0˜ A™øØ�rF   c                 óÖ   — t          j        | ¦  «        }|rt          j        |¦  «        n|}t          j        |j        d|||¬¦  «         t          j        |j        d|||¬¦  «         |S )NF)r´  r	  r	  r	  )r<  rÒ  r´  r	  r„  r†  )r¥  r´  r	  r	  r	  r 	  r!	  s          rD   rí   znan_to_num_impl.<locals>.impl…  s‚   € Ý”Z ‘]”]�Ø(,Ð4�œ ™œ˜°"�å”Ø”KØØØ!Ø!ðñ ô ð õ ”Ø”KØØØ!Ø!ðñ ô ð ð �rF   z4The first argument must be a scalar or an array-like©Tr	  NN)
r˜   r   r÷  rš   rÉ  r  r	   rî   r   r|   )r¥  r´  r	  r	  r	  rí   s         rD   Únan_to_num_implr%	  @  s˜  € å�!•U”\Ñ"Ô"ð \/Ý�a�œÑ'Ô'ð !	ðð ð ð ð õ ˜�5œ;Ñ'Ô'ð 	ðð ð ð ð õ& ˜�5œ=Ñ)Ô)ð 	ð%ð %ð %ð %ð %õ
 Ô$ØFñô ð õ 
˜!Ñ	Ô	ð 8/Ý�a”g�uœ}Ñ-Ô-ð 4	ðð ð ð ð å˜œ¥¤Ñ-Ô-ð 0	ðð ð ð ð õ0 ˜œ¥¤Ñ/Ô/ð 	ðð ð ð ð õ( Ô$ØFñô ð õ Ô ð ".ñ /ô /ð 	/à€KrF   rW  ry  rê  r'  rö   )Frn  r$	  (Æ  r‹  r–  rÔ  r$  r¬  Úllvmliter   Úllvmlite.irr   Únumpyr<  Únumbar   r   Ú
numba.corer   r   r	   r
   r   Únumba.np.numpy_supportr   r   r   r   r   r   r   r   r   r   r   r   r   Únumba.core.imputilsr   r   r   r   r   r   r   r    r!   r"   r#   Únumba.core.typingr$   Únumba.core.typesr%   Únumba.core.extendingr&   r'   r(   r)   r*   Ú
numba.miscr+   r,   Únumba.cpythonr-   Únumba.cpython.charseqr.   r/   Únumba.cpython.unsafe.tupler0   r1   r2   Únumba.core.typing.npydeclr3   rR  r4   rS  r5   r6   r7   Únumba.npÚ	npy_typesrE   rJ   ry   r€   r‡   r‹   r–   rž   r¨   rÙ   rÜ   rã   rð   rò   rþ   r  r  r  ÚArrayIteratorÚBORROWEDr.  rJ  r  rP  r%  rš   r8  rR  rT  ra  r_  rÍ  ÚAnyrf  r¤   rk  r™   rr  rw  r²  ry  r�  r¨  r·  rÍ  rä  rù  r  rO  r\  r]  rd  ri  rk  rs  r’  r�  r°  r¸  rÁ  rÆ  rÐ  rÔ  r×  rà  ræ  r=  rò  rî  rú  rþ  r  r  rc  rB  rF  rI  rc  ÚVarArgrf  rj  ro  rD  rˆ  rz  Ú	geomspacer‘  Úrot90rš  r©  r±  r¸  rº  r¾  rÀ  ÚresizerÏ  rj   rØ  rá  rÆ  ræ  ré  rì  rù  rþ  r$  r#  r(  rA  rf   rF  r”   rI  ÚuniquerT  rd  rb  rX  rh  ro  rq  r}  r•  rƒ  r†  Ú
MemoryViewr‰  r‹  r�  r�  r‘  r”  r˜  rœ  r¡  r¤  rª  r§  r­  r[  r  r±  r¸  r¼  rº  r¾  rÀ  rÇ  rË  rÅ  rÝ  rá  ÚDTypeÚNumberClassræ  rö  rø  rì  r  r  r  rÙ  r  r  r  r  r#  ÚBytesr'  Úis_r.  r2  r8  r=  rI  rK  r³  r½  r6  rè  rä  rê  rí  rï  rñ  r:  rõ  ró  r÷  rï  rü  rÿ  rû  r  rP  r  ÚNumpyNdIterTyper  Úeqr	  rQ  r$  r  r"  r7  r;  rÉ  rA  rK  rY  rN  rU  rY  rë  r\  r_  rc  rÇ  rh  rj  rm  ro  rt  rv  rz  r  r}  r  r�  rƒ  r…  rŠ  r�  Úeyer–  Údiagrž  r§   r£  Údiagflatr©  r±  r²  rÄ  rÐ  r¡  rå  rv  rí  rñ  ró  rõ  r´  rú  r  r  r  r  r  r  r  r&  r)  rD  rF  rH  rR  rW  rP  r\  rf  rk  rr  ry  r  r‚  r†  rË   r‰  rŽ  r•  r˜  rœ  rŸ  r¢  r°  rª  Ú
atleast_1dr¹  Ú
atleast_2dr¼  Ú
atleast_3dr¿  rÍ  râ  rí  rï  ró  rÉ  rù  rû  r  Úcolumn_stackr  r
  r  Ústackr  r  r  r%  r   r*  Úvstackr-  Ú	row_stackr6  Údstackr9  r>  rD  r—  rJ  r˜  rM  r\  Úflipr`  rc  ru  rx  rz  Úvsplitrƒ  Úhsplitr‡  ÚdsplitrŠ  r’  rŒ  rš  rœ  r¦  rO  rª  Úargsortr®  r°  ÚUnicodeCharSeqrÉ  r  r  ÚNPTimedeltaÚ
NPDatetimer´  r·  r¹  Útype_callabler¿  rÁ  ÚlibÚstride_tricksrÊ  rÕ  rb  râ  r–  rê  Úmoveaxisró  r	  Útake_along_axisr	  r	  r%	  r¡   rF   rD   ú<module>r^	     s$+  ððð ð
 Ð Ð Ð Ø €€€Ø €€€Ø €€€à Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð à *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @ð;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð PÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ Oð*ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð (Ð 'Ð 'Ð 'Ð 'Ð 'Ø *Ð *Ð *Ð *Ð *Ð *ðAð Að Að Að Að Að Að Að Að Að Að Að Að Aà +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø !Ð !Ð !Ð !Ð !Ð !Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ 5Ð 5Ð 5Ð 5Ð 5Ð 5ðEð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð
 (Ð 'Ð 'Ð 'Ð 'Ð 'ð#ð #ð #ð6ð 6ð 6ð9ð 9ð 9ðx(ð (ð (ð-ð -ð -ðMð Mð Mð	ð 	ð 	ð
ð 
ð 
ð
 ð 
 ð 
 ð ñBð Bð Bð BðJHð Hð Hð& ð  ð  ð
 
€ˆ.ÑÔðð ñ Ôðð, ð  ð  ð
 
€Ð
ÑÔð,ð ,ñ  Ôð,ð^ €ˆy˜%œ,Ñ'Ô'ðð ñ (Ô'ðð.;ð ;ð ;ð* €ˆz˜5Ô.Ñ/Ô/Ø€ˆwÔÑ Ô ð-ð -ñ !Ô ñ 0Ô/ð-ð6  $ñA4ð A4ð A4ð A4ðHð ð ð ;ð ;ð ;ð* €ˆxÔ ¤¨u¬}Ñ=Ô=Ø€ˆxÔ ¤¨u¬Ñ?Ô?Ø€ˆxÔ ¤¨u¬~Ñ>Ô>ðEð Eñ ?Ô>ñ @Ô?ñ >Ô=ðEð" €ˆxÔ ¤¨u¬Ñ?Ô?ðEð Eñ @Ô?ðEð0 €ˆxÔ ¤¨u¬y¸%¼)ÑDÔDð%6ð %6ñ EÔDð%6ðP €ˆs�E”LÑ!Ô!ðFð Fñ "Ô!ðFð €ˆ|˜Uœ[Ñ)Ô)ð8ð 8ñ *Ô)ð8ð �6ÒÐØ€]�? E¤K°´Ñ;Ô;ð)ð )ñ <Ô;ð)ð(2"ð 2"ð 2"ð 2"ð 2"ˆfñ 2"ô 2"ð 2"ðj20ð 20ð 20ð 20ð 20�Gñ 20ô 20ð 20ðjð ð ð ð �Wñ ô ð ðDDð Dð Dð Dð D˜'ñ Dô Dð DðNV2ð V2ð V2ð V2ð V2˜'ñ V2ô V2ð V2ðrM2ð M2ð M2ð M2ð M2�7ñ M2ô M2ð M2ð`CQð CQð CQð CQð CQ�gñ CQô CQð CQðLLð Lð Lð Lð L�6ñ Lô Lð Lð^ð ð ð01Gð 1Gð 1Gðh €ˆxÔ ¤¨u¬{Ñ;Ô;ð;ð ;ñ <Ô;ð;ð&'ð 'ð 'ðTð ð ðHð Hð Hð
ð 
ð 
ðI$ð I$ð I$ðX"ð "ð "ðJ!ð !ð !ð. ð  ð  ð4 ðð ñ „ðð, ðð ñ „ðð" ð5ð 5ñ Ôð5ð>-ð -ð -ð 
€ˆ"Œ/ÑÔð'&ð '&ñ Ôð'&ðT ð3ð 3ñ Ôð3ð  
€ˆ"Ô
ÑÔð%ð %ñ Ôð%ðP 
€ˆ"Ô
ÑÔð6ð 6ñ Ôð6ðrð ð ð 
€Ð
"¨9Ð5Ñ5Ô5ð
ð 
ñ 6Ô5ð
ð 
€Ð
"¨5Ð1Ñ1Ô1ðð ñ 2Ô1ðð*q%ð q%ð q%ðnð ð ð& €Ð  %¤+Ñ.Ô.ð;ð ;ñ /Ô.ð;ð
ð 
ð 
ð €Ð  %¤+¨u¬Ñ?Ô?ð3Eð 3Eñ @Ô?ð3Eðl €Ð  %¤+¨|¨u¬|¸E¼IÑ/FÔ/FÑGÔGðFð Fñ HÔGðFð
 
€ˆ"Œ,ÑÔñð ð ñ Ôðð €ˆuŒ{˜CÑ Ô ð9ð 9ñ !Ô ð9ð& 
€ˆ"Œ+ÑÔñð ð ñ Ôðð 
€ˆ"Œ,ÑÔñIð Ið Iñ ÔðIðX 
€ˆ"Œ(ÑÔñð ð ñ Ôðð4!ð !ð !ðH;ð ;ð ;ð< €ˆ ¤¨U¬_Ñ=Ô=ð=Eð =Eñ >Ô=ð=Eð@ €ˆ ¤¨\¨U¬\¸%¼)Ñ-DÔ-DÑEÔEð>ð >ñ FÔEð>ð
 �6ÒÐØ€XˆbŒjÑÔðð ñ Ôðð ð
 €XˆbŒjÑÔðð ñ Ôðð 
€ˆ"Œ)ÑÔð+ð +ñ Ôð+ð\ 
€ˆ"Œ)ÑÔñð ð ñ Ôðð2 €ˆ}˜eœkÑ*Ô*ðð ñ +Ô*ðð, €ˆrŒx˜œÑ%Ô%ðGð Gñ &Ô%ðGð €ˆ ¤Ñ,Ô,ðð ñ -Ô,ðð ðð ñ Ôðð ð
ð 
ñ Ôð
ð ðð ñ Ôðð 
€ˆ"Œ'ÑÔñ~ð ~ð ~ñ Ôð~ðB €�”˜fÑ%Ô%ñð ð ñ &Ô%ðð{ð {ð {ð| 
€ˆ"Œ(ÑÔðð ñ Ôðð 
€ˆ"Œ'ÑÔðð ñ Ôðð 
€ˆ"Œ)ÑÔðð ñ Ôðð 
€ˆ"Œ)ÑÔð)1ð )1ñ Ôð)1ðX ðð ñ Ôðð" €Ô˜5œ;¨Ñ1Ô1ðð ñ 2Ô1ðð ðð ñ „ðð	ð 	ð 	ð 
€Ð
 9Ð-Ñ-Ô-ð(ð (ñ .Ô-ð(ðV €ˆ|˜Uœ[¨%¬/Ñ:Ô:ð$Eð $Eñ ;Ô:ð$EðT €ˆuŒ{˜GÑ$Ô$ð:ð :ñ %Ô$ð:ð
 €ˆuŒ{˜GÑ$Ô$Ø€ˆuÔ Ñ)Ô)ð:ð :ñ *Ô)ñ %Ô$ð:ð €ˆuŒ{˜IÑ&Ô&Ø€ˆuÔ Ñ+Ô+ð:ð :ñ ,Ô+ñ 'Ô&ð:ð €ˆuŒ{˜FÑ#Ô#Ø€ˆuÔ Ñ(Ô(ð:ð :ñ )Ô(ñ $Ô#ð:ð
 €ˆuŒ{˜FÑ#Ô#ð:ð :ñ $Ô#ð:ð €ˆuŒ{˜JÑ'Ô'Ø€ˆuÔ Ñ,Ô,ð:ð :ñ -Ô,ñ (Ô'ð:ð €ˆuŒ{˜HÑ%Ô%Ø€ˆuÔ Ñ*Ô*ð:ð :ñ +Ô*ñ &Ô%ð:ð €ˆuÔ Ñ.Ô.ð:ð :ñ /Ô.ð:ð
 €ˆuÔ Ñ0Ô0ð:ð :ñ 1Ô0ð:ð
 €ˆuÔ Ñ0Ô0ð:ð :ñ 1Ô0ð:ð
 €ˆuÔ Ñ,Ô,ð:ð :ñ -Ô,ð:ð €ˆuŒ{˜HÑ%Ô%ð	9ð 	9ñ &Ô%ð	9ð €ˆuÔ  &Ñ)Ô)ð:ð :ñ *Ô)ð:ð €ˆEÔ˜uœ~Ñ.Ô.Ø€ˆEÔ˜uœ}Ñ-Ô-ð;ð ;ñ .Ô-ñ /Ô.ð;ðð ð ð4 €ˆuŒ{˜GÑ$Ô$ð8ð 8ñ %Ô$ð8ð €ˆuÔ Ñ.Ô.Ø€ˆuÔ Ñ0Ô0ð	:ð 	:ñ 1Ô0ñ /Ô.ð	:ð €ˆuÔ Ñ0Ô0ð
:ð 
:ñ 1Ô0ð
:ð  €ˆuŒ{˜FÑ#Ô#ðQð Qñ $Ô#ðQð €ˆuŒ{˜FÑ#Ô#ðQð Qñ $Ô#ðQð 4Mð 4Mð 4Mðn €�”˜fÑ%Ô%Ø€�”˜kÑ*Ô*ðð ñ +Ô*ñ &Ô%ðð%ð %ð %ð
 #€€ˆeŒk˜6Ñ "Ô " :Ñ .Ô .Ð .Ø "€€ˆeŒk˜6Ñ "Ô " :Ñ .Ô .Ð .ð €Ð Ô!2°E´IÑ>Ô>ð(ð (ñ ?Ô>ð(ð. Ð�u”{Ñ#Ô#ð4;ð 4;ñ $Ô#ð4;ðn €Ð ¤¨eÔ.AÑBÔBðOð Oñ CÔBðOð Ð�u”|Ñ$Ô$ð$=ð $=ñ %Ô$ð$=ðN Ð�u”|Ñ$Ô$ðDð Dñ %Ô$ðDð: €Ð ¤¨uÔ/BÑCÔCðAð Añ DÔCðAð €Ð ¤¨uÔ/CÑDÔDðEð Eñ EÔDðEð €Ð ¤¨uÔ/BÀEÄIÑNÔNð	%ð 	%ñ OÔNð	%ð €Ð ¤¨uÔ/CÀUÄYÑOÔOð
%ð 
%ñ PÔOð
%ð" €�”ÑÔð;ð ;ñ Ôð;ð €�”ÑÔð3ð 3ñ Ôð3ð €�”ÑÔð9ð 9ñ Ôð9ð €ˆxŒ|˜Uœ[¨%¬+Ñ6Ô6ð
Gð 
Gñ 7Ô6ð
Gð  Ð�E”K Ñ,Ô,ðð ñ -Ô,ðð9ð 9ð 9ð>ð >ð >ð IMØ6:ñ#ð #ð #ð #ðD '+ñOð Oð Oð OðEð Eð EðP
>ð >ñ >ðBVð Vñ Vðr €ˆuŒ{˜FÑ#Ô#ðPð Pñ $Ô#ñPð €ˆz˜5Õ.Ñ/Ô/Ø€ˆwÔÑ Ô ðEð Eñ !Ô ñ 0Ô/ñEð €ˆxÔ Õ!4°e´mÑDÔDðEð Eñ EÔDñEð €ˆxÔ Õ!4°e´mØŒyñô ð%ð %ñô ñ%ð €ˆs�EÕ'Ñ(Ô(ðð ñ )Ô(ñð €ˆr�~˜uœ{Ñ+Ô+ðEð Eñ ,Ô+ñEð" €ˆz˜5Õ5Ñ6Ô6Ø€ˆwÔÑ Ô ðCð Cñ !Ô ñ 7Ô6ñCð €ˆx˜˜œ e¤mÑ4Ô4Ñ5Ô5Ø€ˆr�z˜<˜5œ<¨¬Ñ6Ô6Ñ7Ô7ð
Eð 
Eñ 8Ô7ñ 6Ô5ñ
Eð €ˆx˜œÑ)Ô)Ø€ˆr�z˜5œ?Ñ+Ô+ðEð Eñ ,Ô+ñ *Ô)ñEð* €ˆz˜5Õ1Ñ2Ô2Ø€ˆwÔÑ Ô ð7ð 7ñ !Ô ñ 3Ô2ñ7ð €ˆr�y˜%œ)Ñ$Ô$ð>ð >ñ %Ô$ñ>ð& €ˆz˜5Õ0Ñ1Ô1Ø€ˆwÔÑ Ô ð7ð 7ñ !Ô ñ 2Ô1ñ7ð €ˆx�{˜EœK¨¬Ñ5Ô5ðFð Fñ 6Ô5ñFðLð Lñ Lð^ Ð�e”k ;°uÐ=Ñ=Ô=ðð ñ >Ô=ñð*ð *ñ *ð ð
ð 
ñ „ñ
ð-ð -ñ -ð`Kð Kñ Kð#ð #ñ #ð&ð &ñ &ð ðð ñ „ñð 
€ˆ"�(ÑÔÙ"ð &ð &ð &ñ Ôñ&ð* ðð ñ „ñð 
€ˆ"�-ÑÔñð ð ñ Ôñð0 ðð ñ „ñð €�”˜lÑ+Ô+ðð ñ ,Ô+ñð 
€ˆ"�(ÑÔÙ"ð ð ð ñ Ôñð 
€ˆ"�-ÑÔñð ð ñ Ôñð 
€ˆ"�,ÑÔñ
ð 
ð 
ñ Ôñ
ð 
€ˆ"�'ÑÔñð ð ñ Ôñð  
€ˆ"�,ÑÔñ
ð 
ð 
ñ Ôñ
ð 
€ˆ"�'ÑÔñð ð ñ Ôñð 
€ˆ"�+ÑÔñð ð ñ Ôñð	ð 	ñ 	ð €ÔÑ%Ñ&Ô&ðð ñ 'Ô&ñð €Ô�B•FÑÔØ˜1¡Eð ð ð ñ Ôñð2 
€ˆ"�'ÑÔñ#ð #ð #ñ Ôñ#ðL 
€ˆ"�*ÑÔðð ñ Ôñð6 
€ˆ"�+ÑÔñð ð ñ Ôñð4  ð   ñ   ðF 
€ˆ"�'ÑÔØ€�”˜fÑ%Ô%ñ^ð ^ð ^ñ &Ô%ñ Ôñ^ðBð ñ ð4 
€ˆ"�)ÑÔñ@ñ @ð @ñ Ôñ@ðF 
€ˆ"�+ÑÔñ$ñ $ð $ñ Ôñ$ñN"Pð "Pñ "PðJ ñð ñ „ñð €‰|˜Uœ[Ñ)Ô)ñ4ð 4ñ *Ô)ñ4ð 
€ˆ"�'ÑÔñð ñ Ôññ><ð ><ñ ><ðB ñ?ð ?ñ „ñ?ð 
€ˆ"Õ
ÑÔñ
ð 
ñ  Ôñ
ð 
€ˆ"Õ
ÑÔñð ñ Ôñð €‰~˜uœ{¨E¬OÑ<Ô<Ø€‰~˜uœ{¨EÔ,?Ñ@Ô@ñPð Pñ AÔ@ñ =Ô<ñPð: ñ'ð 'ñ „ñ'ðT €�”™iÑ(Ô(ñð ñ )Ô(ñð ñTð Tñ „ñTðn 
€ˆ"�-ÑÔÙ%*±"¸Qð ñ ð ñ Ôñð8 
€ˆ&ÑÔññ ð ñ Ôñð 
€ˆ&ÑÔññ ð ñ Ôññ!ð !ñ !ñH1Dð 1Dñ 1Dñhð ñ ñð ñ ñ"ð ñ ñ<&'ð &'ñ &'ñR&#ð &#ñ &#ñR)ð )ñ )ð ñð ñ „ñð2 
€ˆ"�(ÑÔññ ð ñ Ôññð ñ ñ&?ð ?ñ ?ñ:@ð @ñ @ñ:ð ñ ð8 ñð ñ „ñð  
€ˆ"�.ÑÔñð ñ Ôññ%ð %ñ %ñ2ð ñ ð. 
€ˆ"�-ÑÔñ#ð #ñ Ôñ#ð
 
€ˆ"�-ÑÔñ&ð &ñ Ôñ&ð
 
€ˆ"�-ÑÔñ)ð )ñ Ôñ)ñ
:ð :ñ :ñz/Fð /Fñ /FñdVFð VFñ VFñr,ð ,ñ ,ð$ ñð ñ „ñð  
€ˆ"�.ÑÔññ ð ñ Ôññð ñ ð ñ"ð "ñ „ñ"ðJ 
€ˆ"�/ÑÔñð ñ Ôññð ñ ð ñð ñ „ñð 
€ˆ"�(ÑÔññ ð ñ Ôññð ñ ð ñð ñ „ñð4 
€ˆ"�)ÑÔñð ñ Ôñð ñð ñ „ñð4 
€ˆ"�)ÑÔñð ñ Ôñð �FÒÐ˜}©vÒ5Ð5à€H€HˆR�\ÑÔ™>Ñ*Ô*Ð*ð ñ&ð &ñ „ñ&ðR 
€ˆ"�)ÑÔñð ñ Ôñð €Ô˜5œ;©Ñ/Ô/ñð ñ 0Ô/ñð €Ô˜5œ;©Ñ.Ô.ñð ñ /Ô.ñð 
€ˆ"�)ÑÔñð ñ Ôñð  
€ˆ"�)ÑÔñð ñ Ôñð  ñð ñ „ñð: 
€ˆ"�'ÑÔñ
ð 
ñ Ôñ
ð 
€ˆ"�.ÑÔñ;ñ ;ð ;ñ Ôñ;ð| 
€ˆ"�(ÑÔñCñ Cð Cñ ÔñCð4 
€ˆ"�)ÑÔñð ñ Ôñð& 
€ˆ"�)ÑÔñð ñ Ôñð* 
€ˆ"�)ÑÔñð ñ Ôñð, 
�ñð ñ ññ ð ñ ñ6ð ñ ð €‰|˜Uœ[¨%Ô*=Ñ>Ô>ñ9ð 9ñ ?Ô>ñ9ð0 
€ˆ"�'ÑÔñ	ð 	ñ Ôñ	ð €‰ ¤¨UÔ-@ÑAÔAØ€ˆr�z˜5œ;¨Ô(;Ñ<Ô<ñ9ð 9ñ =Ô<ñ BÔAñ9ð& €ˆEŒK˜œÑ%Ô%ñð ñ &Ô%ñð €ˆEŒK˜Õ-Ñ.Ô.Ø€ˆEŒK˜�Ñ%Ô%Ø€ˆEŒK˜œÑ'Ô'Ø€ˆEŒK˜�Ñ'Ô'Ø€ˆEŒK˜�Ñ'Ô'Ø€ˆEŒK˜Õ.Ñ/Ô/Ø€ˆEŒK˜Õ-Ñ.Ô.ñFð Fñ /Ô.ñ 0Ô/ñ (Ô'ñ (Ô'ñ (Ô'ñ &Ô%ñ /Ô.ñFð €ˆEŒK˜Õ-Ñ.Ô.ñEð Eñ /Ô.ñEñð ñ ð €ÕÑ*Ñ+Ô+ñð ñ ,Ô+ñð" €Ñ  %¤+¨u¬ÀÄÑPÔPñ;ð ;ñ QÔPñ;ð* €Ô�B•FÕ(Õ3Ñ4Ô4ññ ð ñ 5Ô4ñð8 €Ô�B•FÕ(Õ<Ñ=Ô=ñ[$ñ [$ð [$ñ >Ô=ñ[$ð| 
€‰$�„ñð ñ „ñð& 
€ˆ"�+ÑÔñð ñ Ôñð0 
€ˆ"�+ÑÔñ3ð 3ñ Ôñ3ðl ñ8ð 8ñ Ôñ8ðv 
€ˆ"Õ
ÑÔñ( ð ( ñ Ôñ( ðV 
€ˆ"�-ÑÔñ^ñ ^ð ^ñ Ôñ^ð ^ð ^rF   