ó
    „ñ:i\ï ã            
       ó 0  • S r SSKrSSKrSSKrSSKrSSKJr  SSKJr  SSK	r
SSKJrJr  SSKJrJrJrJrJrJr  SSKJrJrJrJrJrJrJrJrJrJr  SSKJ r J!r!J"r"  SS	K#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.  SS
K/J0r0  SSK1J2r2  SSK3J4r4J5r5J6r6J7r7J8r8  SSK9J:r:J;r;  SSK<J=r=  SSK>J?r?J@r@  SSKAJBrBJCrC  SSK3JDrD  SSKEJFrGJHrIJJrJJKrKJLrL  S rMS rNS rOS rPS rQS rRS rSS rTS rU GSVS jrVS rWS rX\5" \X5      S 5       rY\$" S \R´                  5      S! 5       r[S" r\\$" S#\Rº                  5      \*" \.R¼                  5      S$ 5       5       r_ GSVS% jr`S& raS' rb\$" \RÆ                  \R´                  \RÈ                  5      \$" \RÆ                  \R´                  \RÊ                  5      S( 5       5       rf\$" \RÆ                  \R´                  \RÎ                  5      S) 5       rh\$" \RÒ                  \R´                  \RÔ                  \RÔ                  5      S* 5       rk\$" \l\R´                  5      S+ 5       rm\$" S,\RÜ                  5      S- 5       ro\"S.:  a$  \$" S/\RÜ                  \RÔ                  5      S0 5       rp " S1 S2\q5      rr " S3 S4\r5      rs " S5 S6\r5      rt " S7 S8\r5      ru " S9 S:\r5      rv " S; S<\r5      rw " S= S>\q5      rxS? ry\$" \RÆ                  \R´                  \RÜ                  5      S@ 5       rzSA r{SB r|SC r}SD r~SE rSF r€SG r�SH r‚\7SI 5       rƒ\7SJ 5       r„\4SK 5       r…SL r†\5" \
GR                  5      SM 5       rˆ\4SN 5       r‰\5" \
GR                  5      SO 5       r‹\5" \
GR                  5      SP 5       r�SQ rŽ\5" \ŽSRSS9ST 5       r�\5" \ŽSUSS9SV 5       r�SW r‘SX r’\$" SY\RÜ                  5      SZ 5       r“S[ r”\$" SY\RÜ                  \RÎ                  5      S\ 5       r•\$" SY\RÜ                  \GR,                  " \RÔ                  5      5      S] 5       r—\5" \
GR0                  5      GSVS^ j5       r™\%" \RÜ                  S_5      S` 5       rš\5" \
GR6                  5      GSWSa j5       rœ\5" \
GR:                  5      GSWSb j5       rž\5" \
GR>                  5      GSXSc j5       r Sd r¡Se r¢\$" Sf\RÜ                  \RÎ                  5      Sg 5       r£\$" Sf\RÜ                  \GR,                  " \RÔ                  5      5      Sh 5       r¤\"Si:  a  \5" \
GRJ                  5      Sj 5       r¦O\5" \
GRJ                  5      Sk 5       r¦\5" \
GRN                  5      Sl 5       r¨\5" \
GRR                  5      GSVSm j5       rª\$" Sn\RÜ                  5      So 5       r«\$" \
GRX                  \RÜ                  5      Sp 5       r­\$" Sq\RÜ                  5      Sr 5       r®\4Ss 5       r¯\4St 5       r°\5" \
GRb                  5      GSVSu j5       r²\6" \RÜ                  Sv5      GSYSw j5       r³Sx r´\5" \
GRj                  5      Sy 5       r¶\5" \
GRn                  5      Sz 5       r¸\5" \
GRr                  5      S{ 5       rº\5" \
GRv                  5      S| 5       r¼\4S} 5       r½\Rl                  " \RÜ                  S~5      S 5       r¾\7S€ 5       r¿S� rÀ\5" \ÀSRSS9S‚ 5       rÁ\$" Sƒ\RÜ                  \GR„                  5      S„ 5       rÃ\%" \RÜ                  S…5      S† 5       rÄ\%" \RÜ                  S‡5      \%" \GRŠ                  S‡5      Sˆ 5       5       rÆ\%" \RÜ                  S‰5      \%" \GRŠ                  S‰5      SŠ 5       5       rÇ\%" \RÜ                  S‹5      \%" \GRŠ                  S‹5      SŒ 5       5       rÈ\%" \RÜ                  S�5      SŽ 5       rÉ\%" \RÜ                  S�5      \%" \GRŠ                  S�5      S� 5       5       rÊ\%" \RÜ                  S‘5      \%" \GRŠ                  S‘5      S’ 5       5       rË\%" \GRŠ                  S“5      S” 5       rÌ\%" \GRŠ                  S•5      S– 5       rÍ\%" \GRŠ                  S—5      S˜ 5       rÎ\%" \GRŠ                  S™5      Sš 5       rÏ\%" \RÜ                  S›5      Sœ 5       rÐ\%" \GR¢                  S�5      Sž 5       rÒ\(" \GR¢                  \GR¦                  5      \(" \GR¢                  \GR¨                  5      SŸ 5       5       rÕS  rÖ\%" \RÜ                  S¡5      S¢ 5       r×\%" \GR°                  S“5      \%" \GR°                  S•5      S£ 5       5       rÙ\%" \GR°                  S—5      S¤ 5       rÚ\%" \RÜ                  S¥5      S¦ 5       rÛ\%" \RÜ                  S§5      S¨ 5       rÜS© rÝ\6" \RÜ                  Sª5      \6" \RÜ                  S«5      S¬ 5       5       rÞS­ rß\%" \GRÀ                  S®5      " \ß5        \%" \GRÀ                  S¯5      " \ß5        \$" S°\GRÂ                  \RÔ                  5      S± 5       râ\&" \RÜ                  5      S² 5       rã\$" S°\RÜ                  \Rd                  5      S³ 5       rä\&" \GRÊ                  5      S´ 5       ræ\'" \GRÊ                  5      Sµ 5       rç\$" S°\GRÊ                  \Rd                  5      S¶ 5       rè\$" S°\GRÊ                  \GRÒ                  5      S· 5       rê\$" S¸\GRÊ                  \Rd                  \RÔ                  5      S¹ 5       rë\$" S¸\GRÊ                  \GRÒ                  \RÔ                  5      Sº 5       rì\)" \RÜ                  5      S» 5       rí\)" \GRÊ                  5      S¼ 5       rî\)" \GRÞ                  5      S½ 5       rð\$" \GRâ                  \RÜ                  \RÜ                  5      S¾ 5       rò\8" \RÜ                  S¿5      SÀ 5       róSÁ rôSÂ rõ  GSYSÃ jrö GSVSÄ jr÷SÅ røSÆ rùSÇ rú\%" \RÜ                  SÈ5      SÉ 5       rû\$" S#\GRø                  5      \*" \.R¼                  5      SÊ 5       5       rý\$" \RÆ                  \GRø                  \RÈ                  5      SË 5       rþ\$" \RÒ                  \GRø                  \RÈ                  \RÔ                  5      SÌ 5       rÿ\$" \l\GRø                  5      SÍ 5       Gr \$" \
GR                  \RÜ                  5      SÎ 5       Gr\$" S#\GR                  5      \*" \.R¼                  5      SÏ 5       5       Gr\$" \\GR,                  " \RÈ                  5      5      \$" \
GR
                  \GR,                  " \RÈ                  5      5      SÐ 5       5       Gr\$" \\RÎ                  5      \$" \
GR
                  \RÎ                  5      SÑ 5       5       Gr\$" S#\GR                  5      \*" \.R¼                  5      SÒ 5       5       Gr	\$" \
GR                  \RÔ                  5      SÓ 5       Gr\$" S#\GR                  5      \*" \.R¼                  5      SÔ 5       5       Gr\$" \GR                  \GRÀ                  \GRÀ                  5      SÕ 5       GrSÖ Gr\D" \RÜ                  S×SUSS9SØ 5       GrSÙ Gr\7SÚ 5       GrSÛ GrSÜ GrSÝ GrSÞ Gr\7Sß 5       Gr\5" \
GR2                  5      G\4Sà j5       Gr\7Sá 5       Gr\5" \
GR:                  5      GSVSâ j5       Gr\7Sã 5       Gr\6" \RÜ                  Sä5      Så 5       Gr \5" \
GRB                  5      G\4Sæ j5       Gr"\5" \
GRF                  5      GSVSç j5       Gr$\5" \
GRJ                  5      GSVSè j5       Gr&\5" \
GRN                  5      GSVSé j5       Gr(\5" \
GRR                  5      GSVSê j5       Gr*\5" \
GRV                  5      GSVSë j5       Gr,\5" \
GRZ                  5      GSVSì j5       Gr.Sí Gr/\Rj                  " G\/5      Sî 5       Gr0\Rj                  " \
GRb                  5      SSG\4Sï j5       Gr2\5" \
GRf                  5      GSZSð j5       Gr4\5" \
GRj                  5      Sñ 5       Gr6\5" \
GRn                  5      GSZSò j5       Gr8Só Gr9\5" \
GRt                  5      \6" \RÜ                  Sô5      GSVSõ j5       5       Gr;Sö Gr<\5" \
GRz                  5      GSYS÷ j5       Gr>\5" \
GR~                  5      GSWSø j5       Gr@Sù GrA\7Sú 5       GrB\$" Sû\RÜ                  5      Sü 5       GrC\5" \
GRˆ                  5      Sý 5       GrESþ GrF\7Sÿ 5       GrG\5" \
GR�                  5      GS  5       GrI\5" \
GR”                  5      GS 5       GrK\$" GS\RÜ                  \GR„                  5      \$" GS\RÜ                  \Rd                  5      GS 5       5       GrL\7GS 5       GrM\6" \RÜ                  GS5      GS 5       GrN\7GS 5       GrO\5" \
GR                   5      G\GSS4GS	 j5       GrQ\5" \5      GSVGS
 j5       GrR\5" \5      GSVGS j5       GrSGS GrTGS GrUGS GrVGS GrWGS GrXGS GrYGS GrZGS Gr[\7GS 5       Gr\\5" \
GRº                  5      GSVGS j5       Gr^GS Gr_GS Gr`GS GraGS Grb\7GS 5       Grc\5" \
GRÄ                  5      GS 5       GrdGS GreGS Grf\5" \
GRÎ                  5      GS 5       Grh\5" \
GRÒ                  5      GS 5       Grj\5" \
GRÖ                  5      GS  5       GrlGS! GrmGS" GrnGS# GroGS$ Grp\7GS% 5       Grq\5" \
GRä                  5      GSZGS& j5       GrsGS' Grt\7GS( 5       Gru\5" \
GRì                  5      GS) 5       GrwGS* Grx\7GS+ 5       Gry\5" \
GRô                  5      GSZGS, j5       Gr{GS- Gr|\7GS. 5       Gr}\5" \
GRü                  5      GS/ 5       Gr\7GS0 5       Gr€\5" \
GR                  5      GS1 5       Gr‚\"S.:¼  a  \5" \
GR                  5      " G\‚5        \7GS2 5       Gr„\5" \
GR
                  5      GS3 5       Gr†\Rl                  " \RÜ                  GS45      GS5 5       Gr‡\Rl                  " \RÜ                  GS65      GS7 5       Grˆ\5" \
GR                  5      GS8 5       GrŠ\5" \
GR                  5      GS9 5       GrŒ\7GS: 5       Gr�\5" \
GR                  5      GS; 5       Gr�\5" \
GR                   5      GSZGS< j5       Gr‘\5" \
GR$                  5      GSZGS= j5       Gr“\5" \
GR(                  5      GS> 5       Gr•\5" \
GR,                  5      GS? 5       Gr—\5" \
GR0                  5      GS@ 5       Gr™0 GršGSA Gr›GS[GSB jGrœGSC Gr�\$" GSD\RÜ                  5      GSE 5       Grž\5" \
GR>                  5      GSF 5       Gr \$" GSG\RÜ                  \Rd                  5      \$" \
GRB                  \RÜ                  \Rd                  5      GSH 5       5       Gr¢\(" \RÜ                  \RÜ                  5      GSI 5       Gr£\(" \RÜ                  \GRH                  5      \(" \RÜ                  \GRJ                  5      \(" \RÜ                  \RÈ                  5      \(" \RÜ                  \GRL                  5      \(" \RÜ                  \GRN                  5      \(" \RÜ                  \GRP                  5      \(" \RÜ                  \GRR                  5      GSJ 5       5       5       5       5       5       5       Grª\(" \RÜ                  \GRH                  5      GSK 5       Gr«GSL Gr¬\GRZ                  " G\¬5      GSM 5       Gr®\$" G\¬\RÜ                  \RÎ                  \RÎ                  5      GSN 5       Gr¯\Rj                  " \
GR`                  GRb                  GRd                  5      GS\GSO j5       Gr²\Rj                  " \
GR`                  GRb                  GRf                  5      GSVGSP j5       Gr³\5" G\´5      GSQ 5       Grµ\5" \
GRl                  5      GSR 5       Gr·\4GSS 5       Gr¸\5" \
GRr                  5      GST 5       Grº\5" \
GRv                  5      GS]GSU j5       Gr¼g(^  z[
Implementation of operations on Array objects and objects supporting
the buffer protocol.
é    N)Úir)ÚConstant)ÚpndindexÚliteral_unroll)ÚtypesÚtypingÚerrorsÚcgutilsÚ	extendingÚconfig)
Ú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_layoutc                 ó¶   • [        UR                  U5      [        UR                  U5      /nU R                  R                  U5      nUR	                  SU5        g)zn
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         ÚT/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/numba/np/arrayobj.pyÚset_range_metadatarF   .   sK   € ô
 ˜tŸy™y¨+Ó6Ü˜tŸy™y¨+Ó6ð8€Nà	�‰×	$Ñ	$ ^Ó	4€BØ×Ñ�g˜rÕ"ó    c                 ó\   • SUR                   R                  S-
  -  S-
  n[        XSU5        g)z>
Mark the result of a load instruction as positive (or zero).
é   r   N)r;   ÚwidthrF   )r?   r@   rB   s      rE   Úmark_positiverK   9   s,   € ð ˜Ÿ™Ÿ™¨1Ñ,Ñ-°Ñ2€KÜ�w a¨Õ5rG   c                 ó�   ^ ^^^^• T R                   m[        R                  " T5      mTR                  m " UU UUU4S jST5      mT$ )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                   óH   >^ • \ rS rSrUU UU4S jr\UU4S j5       rSrU =r$ )Úmake_array.<locals>.ArrayStructéM   c                 ób  >• [        T
T	5      n U R                  R                  SU5      nU R                  R                  T	   nU R                  U5      nUc!  [        R                  " U R                  USS9nOUnU" U R                  U45      nXa4$ ! [         a    [        TU ]  U5      s $ f = f)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          €€€€rE   rW   Ú*make_array.<locals>.ArrayStruct._make_refsO   s¹   ø€ Ü˜O¨ZÓ8ˆCð@Ø!Ÿ]™]×7Ñ7¸ÀSÓI�
ð
 Ÿ™×8Ñ8¸ÑDˆIØ×'Ñ'¨	Ó2ˆGØ‰{Ü#×/Ò/°·±¸wØ6:ñ<‘	ð  �	ñ ˜TŸ]™]¨Y¨LÓ9ˆCØ�>Ð!øô 'ó @Ü˜[¨$Ñ:¸3Ó?Ò?ð@ús   �B ÂB.Â-B.c                 óL  >• U R                   nTS:X  a  TR                  U S5      $ U R                  S5      n/ n[        T5       HH  n[        R
                  " XSU5      nUR                  U5      nUR                  U5        [        X5        MJ     [        R                  " X5      $ )zD
Override .shape to inform LLVM that its elements are all positive.
r   Úshape)
r[   Ú__getattr__Ú_get_ptr_by_namer:   r
   Úgep_inboundsr@   ÚappendrK   Ú
pack_array)	r\   r?   ÚptrÚdimsÚiÚdimptrr@   ÚbaseÚndims	          €€rE   ri   Ú%make_array.<locals>.ArrayStruct.shapec   s–   ø€ ð
 —m‘mˆGØ�q‹yØ×'Ñ'¨¨gÓ6Ð6ð ×'Ñ'¨Ó0ˆCØˆDÜ˜4–[�Ü ×-Ò-¨g¸A¸qÓA�Ø—|‘| FÓ+�Ø—‘˜DÔ!Ü˜gÖ,ñ	 !ô ×%Ò% gÓ4Ð4rG   © )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rW   Úpropertyri   Ú__static_attributes__Ú__classcell__)rd   rc   re   rs   rt   rf   s   @€€€€€rE   rc   rN   M   s!   ù† ÷	"ð 	"ð( 
õ	5ó 
ö	5rG   rc   )Úas_arrayr
   Úcreate_struct_proxyrt   )re   rc   rs   rt   rf   s   `@@@@rE   Ú
make_arrayr€   A   sE   ü€ ð !×)Ñ)€OÜ×&Ò& Ó7€DØ×Ñ€D÷+5ó +5�dô +5ðZ ÐrG   c                 óZ   • U R                  UR                  5      nU R                  U5      $ )z:
Return the item size for the given array or buffer type.
)Úget_data_typeÚdtypeÚget_abi_sizeof)Úcontextre   Úlltys      rE   Úget_itemsizer‡   }   s+   € ð × Ñ  ×!1Ñ!1Ó2€DØ×!Ñ! $Ó'Ð'rG   c                 ób   • UR                   (       a  SOSnU R                  XR                  UUS9$ )z+
Load the item at the given array pointer.
NrI   ©Úalign)ÚalignedÚunpack_valuerƒ   )r…   r?   Úarraytyro   rŠ   s        rE   Ú	load_itemrŽ   …   s4   € ð —O—O‰D¨€EØ×Ñ ¯©¸Ø&+ð  ð -ð -rG   c                 ób   • UR                   (       a  SOSnU R                  XR                  X4US9$ )z,
Store the item at the given array pointer.
NrI   r‰   )r‹   Ú
pack_valuerƒ   )r…   r?   r�   Úvalro   rŠ   s         rE   Ú
store_itemr’   Ž   s-   € ð —O—O‰D¨€EØ×Ñ˜g§}¡}°cÀeÐÐLÐLrG   c                 óÞ   • UR                   (       a:  U R                  XU[        R                  5      n[        R
                  " XU5      nU$ U R                  XU[        R                  5      nU$ )zE
Fix the integer index' type and value for the given dimension size.
)ÚsignedÚcastr   Úintpr.   Ú	fix_indexÚuintp)r…   r?   ÚidxtyÚidxÚsizeÚinds         rE   Úfix_integer_indexr�   –   sW   € ð ‡|‡|Ø�l‰l˜7¨´·
±
Ó;ˆÜ×Ò ¨dÓ3ˆð €Jð �l‰l˜7¨´·±Ó<ˆØ€JrG   c                 ó(  • [        U[        R                  5      (       aq  UR                  S:X  aa  [        UR                  [        R
                  5      (       d   e[        U5      " XU5      n[        XX$R                  5      nUR                  U4$ X#4$ )zK
Normalize the index type and value.  0-d arrays are converted to scalars.
r   )	Ú
isinstancer   ÚArrayrt   rƒ   ÚIntegerr€   rŽ   Údata)r…   r?   r™   rš   ÚidxaryÚidxvals         rE   Únormalize_indexr¥   ¢   sr   € ô �%œŸ™×%Ñ%¨%¯*©*¸«/Ü˜%Ÿ+™+¤u§}¡}×5Ñ5Ð5Ð5Ü˜EÔ" 7°SÓ9ˆÜ˜7¨U·K±KÓ@ˆØ�{‰{˜FÐ"Ð"àˆzÐrG   c                 óš   • [        U5      (       a3  [        [        X#5       VVs/ s H  u  pE[        XUU5      PM     snn6 u  p#X#4$ s  snnf )zR
Same as normalize_index(), but operating on sequences of
index types and values.
)ÚlenÚzipr¥   )r…   r?   Úindex_typesÚindicesr™   rš   s         rE   Únormalize_indicesr«   ¯   sX   € ô
 ˆ7‡|�|Ü"ä7:¸;Ô7Pô%'â7P©¨ô &5°WÀuØ58ö&:á7Pò%'ð  (Ñˆð ÐÐùó	%'s   ¤A
c                 óD  • U R                   nU R                  nU R                  n	[        R                  " [        R
                  SS5      n
UR                  U
   n[        UR                  5      n[        U	R                  5      nXÍ-  U:w  a6  XÍ-
  nSU R                   S[        U5      S:”  a  SOS SU S3n[        U5      eUc*  [        UR                  U	R                  S
5      5      S	5      nUR                  [        R                  5      n[!        U["        [$        45      (       a  [&        R(                  " X‚U5      n[!        U["        [$        45      (       a  [&        R(                  " XƒU5      n[!        U[*        5      (       a  U" U5      n[-        UUUUUS9nUc.  [        UR                  U	R                  S5      5      S	5      US'   OUUS'   UR/                  [        R                  S5      n[&        R0                  " X‚UR2                  R4                  5      nU H  nUR7                  UUS/S9nM     UUS'   [        UR9                  5       5      nUU:w  a  [        SR;                  UU-
  5      5      eUR=                  5        H  u  nn[?        U UU5        M     U $ )z”
Helper function for populating array structures.
This avoids forgetting to set fields.

*shape* and *strides* can be Python tuples or LLVM arrays.
rI   ÚCzThe datamodel for type z is missing fieldÚsÚ Ú Ú.NÚmeminfo)ri   Ústridesr¢   Úitemsizer²   ÚparentÚnsw©ÚflagsÚnitemszmissing {0}) rS   r[   Ú
_datamodelr   r    Úfloat64rX   ÚsetÚ_fieldsÚ_fe_typer§   Ú
ValueErrorr   Úget_value_typeÚget_typer–   rŸ   ÚtupleÚlistr
   rn   ÚintÚdictÚget_constantÚunpack_tupler;   ÚcountÚmulÚkeysÚformatÚitemsÚsetattr)Úarrayr¢   ri   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                           rE   Úpopulate_arrayrÜ   ¼   sn  € ð �n‰n€GØ�n‰n€GØ× Ñ €Iô —[’[¤§¡°°3Ó7€NØ$+×$>Ñ$>¸~Ñ$NÐ!ÜÐ7×?Ñ?Ó@€OÜ˜9×,Ñ,Ó-Ðð 	Ñ*¨Ó>Ø!Ñ4ˆØ(¨¯©Ð(8ð 9Ü! '›l¨QÓ.‘s°BÐ7°q¸¸	ÀðDˆä˜‹oÐà�Ü˜7×1Ñ1Ø×Ñ˜yÓ)ó+Ø,0ó2ˆð ×#Ñ#¤E§J¡JÓ/€FÜ�%œ%¤˜×'Ñ'Ü×"Ò" 7°6Ó:ˆÜ�'œE¤4˜=×)Ñ)Ü×$Ò$ W°vÓ>ˆÜ�(œC× Ñ Ù˜(Ó#ˆä�uØ ØØ"Ø ñ	#€Eð �~Ü" 7×#9Ñ#9Ø×Ñ˜xÓ(ó$*Ø+/ó1ˆˆhŠð !ˆˆh‰à×!Ñ!¤%§*¡*¨aÓ0€FÜ×)Ò)¨'¸%¿*¹*×:JÑ:JÓK€NãˆØ—‘˜V U°5°'�Ð:Šñ  à€Eˆ(�Oô �U—Z‘Z“\Ó"€JØ�_Ó$Ü˜×-Ñ-¨oÀ
Ñ.JÓKÓLÐLð —‘–‰ˆˆ1Ü��q˜!Öñ ð €LrG   c                 óf  • UR                   nUR                  nUR                  [        R                  S5      n[
        R                  " X1R                  U R                  5      nU H  nUR                  XFS/S9nM     XAl
        UR                  [        R                  [        X 5      5      Ul        g)z{
Update some auxiliary information in *array* after some of its fields
were changed.  `itemsize` and `nitems` are updated.
rI   r¶   r·   N)rS   r[   rÆ   r   r–   r
   rÇ   ri   rt   rÉ   r¹   r‡   r´   )ÚarytyrÎ   r…   r?   r¹   r×   rØ   s          rE   Úupdate_array_inforß     sŒ   € ð
 �n‰n€GØ�n‰n€Gð ×!Ñ!¤%§*¡*¨aÓ0€FÜ×)Ò)¨'·;±;ÀÇ
Á
ÓK€NÛˆØ—‘˜V°5°'�Ð:Šñ  à„Là×)Ñ)¬%¯*©*Ü*6°wÓ*FóH€E…NrG   c                 ó   • [        5       e)z/Constrain axis values to valid positive values.©rU   )Ú	func_nameÚarg_namert   Úaxiss       rE   Únormalize_axisrå     s   € ä
Ó
ÐrG   c                 óø   ^• [        U [        5      (       d  [        R                  " S5      e[        U[        5      (       d  [        R                  " S5      eU R                   SUR                   S3mU4S jnU$ )Nz func_name must be a str literal.zarg_name must be a str literal.z: Argument z* out of bounds for dimensions of the arrayc                 óH   >• US:  a  X2-  nUS:  d  X2:¼  a  [        T5      eU$ ©Nr   ©r¿   )râ   rã   rt   rä   rÔ   s       €rE   ÚimplÚ&normalize_axis_overloads.<locals>.impl%  s+   ø€ Ø�!‹8Ø‰LˆDØ�!‹8�t“|Ü˜S“/Ð!àˆrG   )rŸ   r&   r	   ÚTypingErrorÚliteral_value)râ   rã   rt   rä   rê   rÔ   s        @rE   Únormalize_axis_overloadsrî     sx   ø€ ä�i¤×/Ñ/Ü× Ò Ð!CÓDÐDÜ�h¤×.Ñ.Ü× Ò Ð!BÓCÐCð ×"Ñ"Ð
# ;¨x×/EÑ/EÐ.Fð G4ð 	4ð õ
ð €KrG   Úgetiterc                 óŒ  • UR                   u  nUu  nU R                  XR                  5      nU R                  [        R
                  S5      n[        R                  " X5      nX†l        XVl	        U R                  (       a  U R                  R                  XU5        UR                  5       n	[        XUR                  U	5      n
U
$ 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              rE   Úgetiter_arrayrÿ   0  sž   € à—‘�I€WØ�G€Uà×!Ñ! '¯?©?Ó;€Gà×Ñ¤§
¡
¨AÓ.€DÜ×(Ò(¨Ó7€Hà„MØ„Mð ××Ø�‰×Ñ˜7¨UÔ3à
×
Ñ
Ó
€Cô ˜7¨S¯_©_¸cÓ
B€CØ€JrG   c           
      óÌ  • [         R                  " XR                  UR                  S9n[         R                  " XR                  UR                  S9nUR                  US   U5      n[         R                  " XR                  U5      n	USS n
USS n[        U[        R                  5      (       a  [        XX4UXšU5      nUR                  5       $ U
(       a   e[        XX95      $ )z0Evaluate `ary[idx]`, where idx is a single int. ©rÈ   r   rI   N)r
   rÇ   ri   rt   r³   rÉ   Úpointer_addr¢   rŸ   r   ÚBufferÚ	make_viewrù   rŽ   )r…   r?   ró   rÞ   Úaryrš   Úshapesr³   ÚoffsetÚdataptrÚview_shapesÚview_stridesÚretarys                rE   Ú_getitem_array_single_intr  H  sÄ   € ô ×!Ò! '¯9©9¸E¿J¹JÑG€FÜ×"Ò" 7¯K©K¸u¿z¹zÑJ€GØ�[‰[˜ ™ SÓ)€FÜ×!Ò! '¯8©8°VÓ<€GØ˜˜�*€KØ˜1˜2�;€Lä�+œuŸ|™|×,Ñ,ä˜7¨U¸Ø"°ó?ˆà×ÑÓ!Ð!ö ÐˆÜ˜¨5Ó:Ð:rG   Úiternextc           	      ó\  • UR                   u  nUu  nUR                  nU R                  XUS9n[        U5      " XUR                  S9n	[
        R                  " XR                  SS9u  n
UR                  UR                  5      nUR                  SXº5      nUR                  U5        UR                  U5         [        XUR                  XyU5      nUR                  U5        [
        R                   " X5      nUR#                  XèR                  5        S S S 5        g ! , (       d  f       g = f)N©ÚvaluerI   r  Ú<)rñ   re   rò   r€   rÎ   r
   rÇ   ri   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                  rE   Úiternext_arrayr  ]  sô   € ð �x‰x�H€VØ�F€TØ×Ñ€Gà×!Ñ! '¸Ð!Ð>€GÜ
�WÔ
˜g°g·m±mÑ
D€Cä×"Ò" 7¯I©I¸QÑ?�G€Fà�L‰L˜Ÿ™Ó'€EØ×"Ñ" 3¨Ó6€HØ
×Ñ�XÔà	�‰˜Õ	"Ü)Ø˜f×/Ñ/°¸uó
ˆð 	�‰�eÔÜ×(Ò(¨Ó8ˆØ�‰�fŸm™mÔ,÷ 
#×	"Ö	"ús   Â9ADÄ
D+c           
      óÚ  • U R                  [        R                  S5      nU R                  [        R                  S5      n[        R                  " XR
                  UR                  5      n	[        R                  " XR                  UR                  5      n
/ n/ n/ n[        U Vs/ s H  n[        U5      (       d  M  UPM     sn5      nSn[        XT5       GH  u  nnU[        R                  L ap  UR                  [        U5      -
  S-   U-   n[        U5       HA  nUR                  U5        UR                  U	U   5        UR                  U
U   5        US-  nMC     MŠ  [        U[        R                  5      (       a´  U R!                  UUUS9n["        R$                  " XUU5        ["        R&                  " UUU	U   5        UR                  UR(                  5        ["        R*                  " UU5      n["        R,                  " UUU
U   5      nUR                  U5        UR                  U5        O¬[        U[        R.                  5      (       aF  [1        XUUU	U   5      nU(       a  [        R2                  " XUU	U   U5        UR                  U5        OG[        U5      (       a(  UR                  U5        UR                  U5        US-  nO[5        SU< 35      eUS-  nGM     UUR                  ::  d   eUUR                  :  a?  UR                  U	U   5        UR                  U
U   5        US-  nUUR                  :  a  M?  [        R6                  " XX#USSS9nUXÍ4$ s  snf )zƒ
Perform basic indexing on the given array.
A (data pointer, shapes, strides) tuple is returned describing
the corresponding view.
r   rI   r  úunexpected index type: F©Ú
wraparoundÚboundscheck)rÆ   r   r–   r
   rÇ   ri   rt   r³   r§   r   r¨   Úellipsisr:   rm   rŸ   Ú	SliceTyperò   r.   Úguard_invalid_sliceÚ	fix_sliceÚstartÚget_slice_lengthÚ
fix_strider¡   r�   Údo_boundscheckrU   Úget_item_pointer)r…   r?   rÞ   r  r©   rª   r#  rû   Úoner  r³   Úoutput_indicesÚoutput_shapesÚoutput_stridesrš   Únum_newaxesÚaxÚindexvalr™   Ú	n_missingrq   ÚsliceÚshÚstrœ   r  s                             rE   Úbasic_indexingr8  y  sð  € ð ×Ñ¤§
¡
¨AÓ.€DØ
×
Ñ
œuŸz™z¨1Ó
-€Cä×!Ò! '¯9©9°e·j±jÓA€FÜ×"Ò" 7¯K©K¸¿¹ÓD€Gà€NØ€MØ€Nä¡kÓF¢k˜s´[À×5E—s¡kÑFÓG€KØ	
€BÜ˜w×4‰ˆ�%Ø”E—N‘NÒ"àŸ
™
¤S¨£\Ñ1°AÑ5¸ÑCˆIÜ˜9Ö%�Ø×%Ñ% dÔ+Ø×$Ñ$ V¨B¡ZÔ0Ø×%Ñ% g¨b¡kÔ2Ø�a‘’ñ	 &ñ
 ä�eœUŸ_™_×-Ñ-Ø×'Ñ'¨°¸hÐ'ÐGˆEÜ×'Ò'¨¸%ÀÔGÜ×Ò˜g u¨f°R©jÔ9Ø×!Ñ! %§+¡+Ô.Ü×)Ò)¨'°5Ó9ˆBÜ×#Ò# G¨U°G¸B±KÓ@ˆBØ× Ñ  Ô$Ø×!Ñ! "Õ%Ü˜œuŸ}™}×-Ñ-Ü# G°e¸XØ$*¨2¡Jó0ˆCæÜ×&Ò& w¸¸fÀR¹jÈ"ÔMØ×!Ñ! #Õ&Ü˜×ÑØ× Ñ  Ô%Ø×!Ñ! $Ô'Ø�!‰G‰Bå%ÂUÐ&LÓMÐMØ
ˆa‰‹ñA 5ðF �—‘ÓÐÐØ
ˆu�z‰z‹/Ø×Ñ˜V B™ZÔ(Ø×Ñ˜g b™kÔ*Ø
ˆa‰ˆð ˆu�z‰z�/ô ×&Ò& w¸Ø'5Ø27ÀUñL€Gð �]Ð3Ð3ùòa Gs   Â&M(Â>M(c           
      ó‚   • [        U5      " X5      n[        UUUUUR                  UR                  UR                  S9  U$ )z>
Build a view over the given array with the given parameters.
©r¢   ri   r³   r´   r²   rµ   )r€   rÜ   r´   r²   rµ   )	r…   r?   rÞ   r  ró   r¢   r  r³   r  s	            rE   r  r  ½  sB   € ô
 ˜Ô$ WÓ6€FÜ�6ØØØ"ØŸL™LØŸ;™;ØŸ*™*ò&ð €MrG   c           
      óÚ   • [        XX4XVU R                  S9u  pxn	[        U[        R                  5      (       a  [        XX4UXxU	5      n
U
R                  5       $ U(       a   e[        XX75      $ )zd
Return the result of indexing *ary* with the given *indices*,
returning either a scalar or a view.
©r#  )r8  Úenable_boundscheckrŸ   r   r  r  rù   rŽ   )r…   r?   ró   rÞ   r  r©   rª   r  r	  r
  r  s              rE   Ú_getitem_array_genericr>  Í  sr   € ô 	�w¨°[Ø#*×#=Ñ#=ñ	?ñ '€G˜,ô �+œuŸ|™|×,Ñ,ä˜7¨U¸Ø"°ó?ˆà×ÑÓ!Ð!ö ÐˆÜ˜¨5Ó:Ð:rG   c           	      óÒ   • UR                   u  pEUu  pgUR                  S:¼  d   e[        U5      " XU5      n[        XUR                  XFU4U45      n[        XUR                  U5      $ )z,
Basic indexing with an integer or a slice.
rI   )rñ   rt   r€   r>  ró   r!   ©	r…   r?   r^   rñ   rÞ   r™   r  rš   rý   s	            rE   Úgetitem_arraynd_intprA  â  sg   € ð —8‘8�L€EØ�H€Cà�:‰:˜‹?Ðˆ?Ü
�UÔ
˜G¨cÓ
2€Cä
  °3·?±?Ø!&¨e¨X¸°vó?€Cä˜W¨s¯©ÀÓDÐDrG   c           
      ób  • UR                   u  pEUu  pg[        U5      " XU5      nUR                  n[        R                  " X[        U5      S9n	[        XX‰5      u  p‰[        S U 5       5      (       a  [        XX#XFX‰5      $ [        XUR                  XFX‰5      n
[        XUR                  U
5      $ )z*
Basic or advanced indexing with a tuple.
r  c              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7f©N©rŸ   r   r    )Ú.0Útys     rE   Ú	<genexpr>Ú&getitem_array_tuple.<locals>.<genexpr>  s   é € Ð
=²¨2Œ:�bœ%Ÿ+™+×&Ð&²ùó   ‚'))rñ   r€   r   r
   rÇ   r§   r«   ÚanyÚfancy_getitemr>  ró   r!   )r…   r?   r^   rñ   rÞ   Útuptyr  Útupr©   rª   rý   s              rE   Úgetitem_array_tuplerO  ó  s¯   € ð
 —8‘8�L€EØ�H€CÜ
�UÔ
˜G¨cÓ
2€Cà—+‘+€KÜ×"Ò" 7´s¸5³zÑB€Gä,¨WØ-8óCÑ€Kô Ñ
=±Ó
=×=Ñ=ä˜W¨sØ"¨ó?ð 	?ô ! °3·?±?Ø!&¨[óC€Cä˜W¨s¯©ÀÓDÐDrG   c           
      óô  • UR                   u  pEnUu  pxn	[        U[        R                  5      (       a+  UR                  n
[        R
                  " X[        U5      S9nOU4n
U4n[        U5      " XU5      n[        XX«5      u  p« [        XXGX«U R                  S9u  pÍn[        U5      nU(       a  [        XX#X«5      $ U R                  XXdR                  5      n	[!        XXIW5        g! [         a    Sn NLf = f)z<
array[a] = scalar_or_array
array[a,..,b] = scalar_or_array
r  r<  TN)rñ   rŸ   r   Ú	BaseTupler
   rÇ   r§   r€   r«   r8  r=  ÚboolrU   Úfancy_setslicer•   rƒ   r’   )r…   r?   r^   rñ   rÞ   r™   Úvaltyr  rš   r‘   r©   rª   r  r  r³   Úuse_fancy_indexings                   rE   Úsetitem_arrayrV    s  € ð Ÿ(™(Ñ€E�%Ø�M€Cˆcä�%œŸ™×)Ñ)Ø—k‘kˆÜ×&Ò& w¼3¸u»:ÑF‰à�hˆØ�&ˆä
�UÔ
˜G¨cÓ
2€Cô -¨WØ-8óCÑ€Kð*ä˜7¨U¸Ø'.×'AÑ'AñCñ 	!ˆ˜ô " &›\Ðæô ˜g°Ø)ó4ð 	4ð �,‰,�w U¯K©KÓ
8€CÜˆw ¨WÕ5øô ó "Ø!Òð"ús   ÂC( Ã(C7Ã6C7c                 ó¸   • UR                   u  nUu  n[        U5      nU" XU5      nUR                  nUR                  US5      n[	        XUR
                  U5      $ rè   )rñ   r€   ri   Úextract_valuer#   ró   )	r…   r?   r^   rñ   rÞ   r  ÚarysttyÚshapearyrý   s	            rE   Ú	array_lenr[  5  sX   € à�x‰x�H€UØ�F€SÜ˜Ó€GÙ
�' CÓ
(€CØ�y‰y€HØ
×
Ñ
 ¨!Ó
,€CÜ˜g°·±ÀÓEÐErG   z
array.itemc           	      óh  • UR                   u  nUu  n[        U5      " XU5      nUR                  nUR                  UR	                  SXfR                  S5      5      SS9   SnU R                  R                  U[        U45        S S S 5        [        XXER                  5      $ ! , (       d  f       N$= f)Nú!=rI   F©Úlikelyz>item(): can only convert an array of size 1 to a Python scalar)rñ   r€   r¹   r  r  r;   Ú	call_convÚreturn_user_excr¿   rŽ   r¢   )r…   r?   r^   rñ   rÞ   r  r¹   rÔ   s           rE   Ú
array_itemrb  @  s›   € à�X‰X�F€EØ�D€CÜ
�UÔ
˜G¨cÓ
2€Cà�Z‰Z€FØ	�‰˜×,Ñ,¨T°6¿;¹;Àq»>ÓJØ %ð 
ò 
'àNˆØ×Ñ×)Ñ)¨'´:À¸vÔF÷
'ô
 �W u¯h©hÓ7Ð7÷
'õ 
'ús   Á %B#Â#
B1©é   r   zarray.itemsetc           	      ó¬  • UR                   u  pEUu  pgXTR                  :X  d   e[        U5      " XU5      nUR                  nUR	                  UR                  SXˆR                  S5      5      SS9   Sn	U R                  R                  U[        U	45        S S S 5        [        XXGUR                  5        U R                  5       $ ! , (       d  f       N5= f)Nr]  rI   Fr^  z/itemset(): can only write to an array of size 1)rñ   rƒ   r€   r¹   r  r  r;   r`  ra  r¿   r’   r¢   Úget_dummy_value)
r…   r?   r^   rñ   rÞ   rT  r  r‘   r¹   rÔ   s
             rE   Úarray_itemsetrg  P  s¹   € à—x‘x‰ˆØ‰ˆØŸ™Ó#Ð#Ð#Ü˜Ô °#Ó6ˆà—‘ˆØ�_‰_˜W×0Ñ0°°v¿{¹{È1»~ÓNØ$)ð ò +àCˆCØ×Ñ×-Ñ-¨g´zÀCÀ6ÔJ÷+ô
 	�7 U°·±Ô:Ø×&Ñ&Ó(Ð(÷+õ +ús   Á1%CÃ
Cc                   ó<   • \ rS rSrSrS rS rS rS rS r	S r
S	rg
)ÚIndexerie  ze
Generic indexer interface, for generating indices over a fancy indexed
array on a single dimension.
c                 ó   • [         e)zM
Prepare the indexer by initializing any required variables, basic
blocks...
rá   ©r\   s    rE   ÚprepareÚIndexer.preparek  ó
   € ô
 "Ð!rG   c                 ó   • [         e)z-
Return this dimension's size as an integer.
rá   rk  s    rE   Úget_sizeÚIndexer.get_sizer  ó
   € ô "Ð!rG   c                 ó   • [         e)z+
Return this dimension's shape as a tuple.
rá   rk  s    rE   Ú	get_shapeÚIndexer.get_shapex  rr  rG   c                 ó   • [         e)ze
Return a half-open [lower, upper) range of indices this dimension
is guaranteed not to step out of.
rá   rk  s    rE   Úget_index_boundsÚIndexer.get_index_bounds~  rn  rG   c                 ó   • [         e)a  
Start indexation loop.  Return a (index, count) tuple.
*index* is an integer LLVM value representing the index over this
dimension.
*count* is either an integer LLVM value representing the current
iteration count, or None if this dimension should be omitted from
the indexation result.
rá   rk  s    rE   Ú	loop_headÚIndexer.loop_head…  s
   € ô "Ð!rG   c                 ó   • [         e)z
Finish indexation loop.
rá   rk  s    rE   Ú	loop_tailÚIndexer.loop_tail�  rr  rG   rv   N)rw   rx   ry   rz   Ú__doc__rl  rp  rt  rw  rz  r}  r|   rv   rG   rE   ri  ri  e  s%   † ñò
"ò"ò"ò"ò	"õ"rG   ri  c                   óB   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)ÚEntireIndexeri—  z2
Compute indices along an entire array dimension.
c                 óœ   • Xl         X l        X0l        X@l        XPl        U R                   R                  [        R                  5      U l        g rD  )	r…   r?   rÞ   r  ÚdimrÀ   r   r–   Úll_intp)r\   r…   r?   rÞ   r  rƒ  s         rE   Ú__init__ÚEntireIndexer.__init__œ  s5   € ØŒØŒØŒ
ØŒØŒØ—|‘|×2Ñ2´5·:±:Ó>ˆ�rG   c                 ó$  • U R                   nUR                  U R                  R                  U R                  5      U l        [        R                  " XR                  5      U l	        UR                  5       U l        UR                  5       U l        g rD  )r?   rX  r  ri   rƒ  r›   r
   rZ   r„  rõ   Úappend_basic_blockÚbb_startÚbb_end©r\   r?   s     rE   rl  ÚEntireIndexer.prepare¤  sa   € Ø—,‘,ˆØ×)Ñ)¨$¯(©(¯.©.¸$¿(¹(ÓCˆŒ	Ü×(Ò(¨·,±,Ó?ˆŒ
Ø×2Ñ2Ó4ˆŒØ×0Ñ0Ó2ˆ�rG   c                 ó   • U R                   $ rD  ©r›   rk  s    rE   rp  ÚEntireIndexer.get_size«  s   € Ø�y‰yÐrG   c                 ó   • U R                   4$ rD  rŽ  rk  s    rE   rt  ÚEntireIndexer.get_shape®  s   € Ø—	‘	ˆ|ÐrG   c                 ó<   • U R                  S5      U R                  4$ rè   ©r„  r›   rk  s    rE   rw  ÚEntireIndexer.get_index_bounds±  ó   € à—‘˜Q“ §¡Ð+Ð+rG   c                 óø  • U R                   nU R                   R                  [        U R                  S5      U R                  5        UR                  U R                  5        UR                  U R                  5        UR                  U R                  5      nUR                  UR                  SX R                  5      SS9   UR                  U R                  5        S S S 5        X"4$ ! , (       d  f       X"4$ = f©Nr   ú>=Fr^  )r?   r  r   r„  rõ   Úbranchr‰  Úposition_at_endr@   r  r  r›   rŠ  )r\   r?   Ú	cur_indexs      rE   rz  ÚEntireIndexer.loop_headµ  s¿   € Ø—,‘,ˆà�‰×Ñœ8 D§L¡L°!Ó4°d·j±jÔAØ�‰�t—}‘}Ô%Ø×Ñ §¡Ô.Ø—L‘L §¡Ó,ˆ	Ø�_‰_˜W×0Ñ0°°yÇ)Á)ÓLØ$)ð ò +à�N‰N˜4Ÿ;™;Ô'÷+ð Ð#Ð#÷+ô +ð Ð#Ð#ús   ÃC)Ã)
C9c                 ó  • U R                   n[        R                  " XR                  U R                  5      5      nUR                  X R                  5        UR                  U R                  5        UR                  U R                  5        g rD  )
r?   r
   r  r@   rõ   r  r™  r‰  rš  rŠ  ©r\   r?   Ú
next_indexs      rE   r}  ÚEntireIndexer.loop_tailÁ  sZ   € Ø—,‘,ˆÜ×,Ò,¨W·l±lÀ4Ç:Á:Ó6NÓOˆ
Ø�‰�j§*¡*Ô-Ø�‰�t—}‘}Ô%Ø×Ñ §¡Õ,rG   )
r  rÞ   rŠ  r‰  r?   r…   rƒ  rõ   r„  r›   N©rw   rx   ry   rz   r  r…  rl  rp  rt  rw  rz  r}  r|   rv   rG   rE   r�  r�  —  s*   † ñò?ò3òòò,ò
$õ-rG   r�  c                   óB   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)ÚIntegerIndexeriÉ  z(
Compute indices from a single integer.
c                 ó„   • Xl         X l        X0l        U R                   R                  [        R
                  5      U l        g rD  )r…   r?   rš   rÀ   r   r–   r„  )r\   r…   r?   rš   s       rE   r…  ÚIntegerIndexer.__init__Î  s+   € ØŒØŒØŒØ—|‘|×2Ñ2´5·:±:Ó>ˆ�rG   c                 ó   • g rD  rv   rk  s    rE   rl  ÚIntegerIndexer.prepareÔ  ó   € ØrG   c                 ó.   • [        U R                  S5      $ ©NrI   )r   r„  rk  s    rE   rp  ÚIntegerIndexer.get_size×  s   € Ü˜Ÿ™ aÓ(Ð(rG   c                 ó   • g©Nrv   rv   rk  s    rE   rt  ÚIntegerIndexer.get_shapeÚ  s   € ØrG   c                 ó‚   • U R                   U R                  R                  U R                   U R                  5       5      4$ rD  )rš   r?   Úaddrp  rk  s    rE   rw  ÚIntegerIndexer.get_index_boundsÝ  s,   € à—‘˜$Ÿ,™,×*Ñ*¨4¯8©8°T·]±]³_ÓEÐFÐFrG   c                 ó   • U R                   S 4$ rD  )rš   rk  s    rE   rz  ÚIntegerIndexer.loop_headá  s   € Ø�x‰x˜ˆ~ÐrG   c                 ó   • g rD  rv   rk  s    rE   r}  ÚIntegerIndexer.loop_tailä  r¨  rG   )r?   r…   rš   r„  Nr¡  rv   rG   rE   r£  r£  É  s+   † ñò?òò)òòGòõrG   r£  c                   óB   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)ÚIntegerArrayIndexeriè  z3
Compute indices from an array of integer indices.
c                 óÀ   • Xl         X l        X0l        X@l        XPl        UR
                  S:X  d   eU R                   R                  [        R                  5      U l	        g rª  )
r…   r?   r™   r£   r›   rt   rÀ   r   r–   r„  )r\   r…   r?   r™   r£   r›   s         rE   r…  ÚIntegerArrayIndexer.__init__í  sE   € ØŒØŒØŒ
ØŒØŒ	Ø�z‰z˜Q‹ÐˆØ—|‘|×2Ñ2´5·:±:Ó>ˆ�rG   c                 ó  • U R                   n[        R                  " XR                  R                  5      S   U l        [        R                  " XR                  5      U l        UR                  5       U l
        UR                  5       U l        g rè   )r?   r
   rÇ   r£   ri   Úidx_sizerZ   r„  Ú	idx_indexrˆ  r‰  rŠ  r‹  s     rE   rl  ÚIntegerArrayIndexer.prepareö  sb   € Ø—,‘,ˆÜ×,Ò,¨W·k±k×6GÑ6GÓHÈÑKˆŒÜ ×,Ò,¨W·l±lÓCˆŒØ×2Ñ2Ó4ˆŒØ×0Ñ0Ó2ˆ�rG   c                 ó   • U R                   $ rD  ©r»  rk  s    rE   rp  ÚIntegerArrayIndexer.get_sizeý  s   € Ø�}‰}ÐrG   c                 ó   • U R                   4$ rD  r¿  rk  s    rE   rt  ÚIntegerArrayIndexer.get_shape   s   € Ø—‘ÐÐrG   c                 ó<   • U R                  S5      U R                  4$ rè   r“  rk  s    rE   rw  Ú$IntegerArrayIndexer.get_index_bounds  r•  rG   c                 óâ  • U R                   nU R                   R                  [        U R                  S5      U R                  5        UR                  U R                  5        UR                  U R                  5        UR                  U R                  5      nUR                  UR                  SX R                  5      SS9   UR                  U R                  5        S S S 5        [        U R                  XR                  R                   U R                  U R"                  U5      n[%        U R                  UU R                  R                   X0R&                  5      nX24$ ! , (       d  f       Nˆ= f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õ   s       rE   rz  ÚIntegerArrayIndexer.loop_head  s  € Ø—,‘,ˆà�‰×Ñœ8 D§L¡L°!Ó4°d·n±nÔEØ�‰�t—}‘}Ô%Ø×Ñ §¡Ô.Ø—L‘L §¡Ó0ˆ	Ø�_‰_Ø×Ñ  i·±Ó?Øð ò 
ð �N‰N˜4Ÿ;™;Ô'÷	
ô *Ø�L‰L˜'§:¡:×#3Ñ#3°T·Z±ZÀÇÁØó
ˆô " $§,¡,°Ø"&§*¡*×"2Ñ"2°E¿9¹9óFˆàÐÐ÷
õ 
ús   ÃE Å 
E.c                 ó  • U R                   n[        R                  " UUR                  U R                  5      5      nUR                  X R                  5        UR                  U R                  5        UR                  U R                  5        g rD  )
r?   r
   r  r@   r¼  r  r™  r‰  rš  rŠ  rž  s      rE   r}  ÚIntegerArrayIndexer.loop_tail  s`   € Ø—,‘,ˆÜ×,Ò,¨WØ-4¯\©\¸$¿.¹.Ó-IóKˆ
à�‰�j§.¡.Ô1Ø�‰�t—}‘}Ô%Ø×Ñ §¡Õ,rG   )
rŠ  r‰  r?   r…   r¼  r»  r£   r™   r„  r›   Nr¡  rv   rG   rE   r·  r·  è  s*   † ñò?ò3òò ò,ò õ*-rG   r·  c                   óB   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)ÚBooleanArrayIndexeri%  z6
Compute indices from an array of boolean predicates.
c                 óê   • Xl         X l        X0l        X@l        UR                  S:X  d   eU R                   R                  [        R                  5      U l        [        U R                  S5      U l
        g ©NrI   r   )r…   r?   r™   r£   rt   rÀ   r   r–   r„  r   rû   )r\   r…   r?   r™   r£   s        rE   r…  ÚBooleanArrayIndexer.__init__*  sR   € ØŒØŒØŒ
ØŒØ�z‰z˜Q‹ÐˆØ—|‘|×2Ñ2´5·:±:Ó>ˆŒÜ˜TŸ\™\¨1Ó-ˆ�	rG   c                 ó’  • U R                   n[        R                  " XR                  R                  5      S   U l        [        R                  " XR                  5      U l        [        R                  " XR                  5      U l	        UR                  5       U l        UR                  5       U l        UR                  5       U l        g rè   )r?   r
   rÇ   r£   ri   r›   rZ   r„  r¼  rÈ   rˆ  r‰  Úbb_tailrŠ  r‹  s     rE   rl  ÚBooleanArrayIndexer.prepare3  sˆ   € Ø—,‘,ˆÜ×(Ò(¨·+±+×2CÑ2CÓDÀQÑGˆŒ	Ü ×,Ò,¨W·l±lÓCˆŒÜ×(Ò(¨·,±,Ó?ˆŒ
Ø×2Ñ2Ó4ˆŒØ×1Ñ1Ó3ˆŒØ×0Ñ0Ó2ˆ�rG   c           	      ó  • U R                   n[        R                  " XR                  5      n[        R                  " XR
                  5       nUR                  U5      n[        U R                  XR                  R                  U R                  U R                  UR                  5      nUR                  XAR                  XTR                  5      5      nUR!                  XB5        S S S 5        UR                  U5      $ ! , (       d  f       N= frD  )r?   r
   rô   rû   Ú	for_ranger›   r@   r  r…   r™   rƒ   r£   rõ   r°  Úzextr;   r  )r\   r?   rÈ   ÚloopÚcÚpreds         rE   rp  ÚBooleanArrayIndexer.get_size<  s¹   € Ø—,‘,ˆÜ×)Ò)¨'·9±9Ó=ˆä×Ò˜w¯	©	Ô2°dØ—‘˜UÓ#ˆAÜ,Ø—‘˜g§z¡z×'7Ñ'7Ø—
‘
˜DŸK™K¨¯©óˆDð —‘˜AŸ|™|¨D·&±&Ó9Ó:ˆAØ�M‰M˜!Ô#÷ 3ð �|‰|˜EÓ"Ð"÷ 3Õ2ús   ÁBC>Ã>
Dc                 ó$   • U R                  5       4$ rD  ©rp  rk  s    rE   rt  ÚBooleanArrayIndexer.get_shapeK  ó   € Ø—‘“Ð!Ð!rG   c                 ó<   • U R                  S5      U R                  4$ rè   r“  rk  s    rE   rw  Ú$BooleanArrayIndexer.get_index_boundsN  s   € ð —‘˜Q“ §¡Ð+Ð+rG   c                 ó  • U R                   nU R                   R                  U R                  U R                  5        U R                   R                  U R                  U R                  5        UR                  U R                  5        UR                  U R                  5        UR                  U R                  5      nUR                  U R                  5      nUR                  UR                  SX R                  5      SS9   UR                  U R                  5        S S S 5        [        U R                  XR                  R                   U R                  U R"                  U5      nUR                  UR%                  U5      5         UR                  U R&                  5        S S S 5        [(        R*                  " X5      nUR                  XPR                  5        X#4$ ! , (       d  f       NÇ= f! , (       d  f       NS= f)Nr˜  Fr^  )r?   r  rû   r¼  rÈ   r™  r‰  rš  r@   r  r  r›   rŠ  r  r…   r™   rƒ   r£   Únot_rÏ  r
   r  )r\   r?   r›  Ú	cur_countrÖ  Ú
next_counts         rE   rz  ÚBooleanArrayIndexer.loop_headS  s^  € Ø—,‘,ˆà�‰×Ñ˜4Ÿ9™9 d§n¡nÔ5Ø�‰×Ñ˜4Ÿ9™9 d§j¡jÔ1Ø�‰�t—}‘}Ô%Ø×Ñ §¡Ô.Ø—L‘L §¡Ó0ˆ	Ø—L‘L §¡Ó,ˆ	Ø�_‰_˜W×0Ñ0°°yÇ)Á)ÓLØ$)ð ò +à�N‰N˜4Ÿ;™;Ô'÷+ô )Ø�L‰L˜'§:¡:×#3Ñ#3°T·Z±ZÀÇÁØó
ˆð �_‰_˜WŸ\™\¨$Ó/Õ0Ø�N‰N˜4Ÿ<™<Ô(÷ 1ô ×,Ò,¨WÓ@ˆ
Ø�‰�j§*¡*Ô-ØÐ#Ð#÷+õ +ú÷ 1Õ0ús   ÄG ÆG1Ç 
G.Ç1
G?c                 óŠ  • U R                   nUR                  U R                  5        UR                  U R                  5        [        R
                  " UUR                  U R                  5      5      nUR                  X R                  5        UR                  U R                  5        UR                  U R                  5        g rD  )r?   r™  rÏ  rš  r
   r  r@   r¼  r  r‰  rŠ  rž  s      rE   r}  ÚBooleanArrayIndexer.loop_tailk  s‚   € Ø—,‘,ˆØ�‰�t—|‘|Ô$Ø×Ñ §¡Ô-Ü×,Ò,¨WØ-4¯\©\¸$¿.¹.Ó-IóKˆ
à�‰�j§.¡.Ô1Ø�‰�t—}‘}Ô%Ø×Ñ §¡Õ,rG   )rŠ  r‰  rÏ  r?   r…   rÈ   r¼  r£   r™   r„  r›   rû   Nr¡  rv   rG   rE   rÊ  rÊ  %  s*   † ñò.ò3ò#ò"ò,ò
$õ0-rG   rÊ  c                   óB   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)ÚSliceIndexeriv  z 
Compute indices along a slice.
c                 óê   • Xl         X l        X0l        X@l        XPl        X`l        Xpl        U R                   R                  [        R                  5      U l
        [        U R                  S5      U l        g rè   )r…   r?   rÞ   r  rƒ  r™   r5  rÀ   r   r–   r„  r   rû   )r\   r…   r?   rÞ   r  rƒ  r™   r5  s           rE   r…  ÚSliceIndexer.__init__{  sQ   € ØŒØŒØŒ
ØŒØŒØŒ
ØŒ
Ø—|‘|×2Ñ2´5·:±:Ó>ˆŒÜ˜TŸ\™\¨1Ó-ˆ�	rG   c                 óŽ  • U R                   nUR                  U R                  R                  U R                  5      U l        [        R                  " U R                  XR                  U R                  5        [        R                  " XR                  U R
                  5        [        R                  " XR                  R                  5      U l        [        R                   " XR"                  5      U l        [        R                   " XR"                  5      U l        UR)                  5       U l        UR)                  5       U l        g rD  )r?   rX  r  ri   rƒ  Údim_sizer.   r&  r…   r™   r5  r'  r
   Ú
is_neg_intÚstepÚis_step_negativerZ   r„  rõ   rÈ   rˆ  r‰  rŠ  r‹  s     rE   rl  ÚSliceIndexer.prepare†  sË   € Ø—,‘,ˆà×-Ñ-¨d¯h©h¯n©n¸d¿h¹hÓGˆŒÜ×#Ò# D§L¡L°'¿:¹:Ø$(§J¡Jô	0ä×Ò˜'§:¡:¨t¯}©}Ô=Ü '× 2Ò 2°7¿J¹J¿O¹OÓ LˆÔä×(Ò(¨·,±,Ó?ˆŒ
Ü×(Ò(¨·,±,Ó?ˆŒ
Ø×2Ñ2Ó4ˆŒØ×0Ñ0Ó2ˆ�rG   c                 óX   • [         R                  " U R                  U R                  5      $ rD  )r.   r)  r?   r5  rk  s    rE   rp  ÚSliceIndexer.get_size”  s   € Ü×'Ò'¨¯©°d·j±jÓAÐArG   c                 ó$   • U R                  5       4$ rD  rÙ  rk  s    rE   rt  ÚSliceIndexer.get_shape—  rÛ  rG   c                 ób   • [         R                  " U R                  U R                  5      u  pX4$ rD  )r.   Úget_slice_boundsr?   r5  )r\   ÚlowerÚuppers      rE   rw  ÚSliceIndexer.get_index_boundsš  s&   € Ü×/Ò/°·±¸d¿j¹jÓI‰ˆØˆ|ÐrG   c           	      ó(  • U R                   nU R                   R                  U R                  R                  U R                  5        U R                   R                  U R
                  U R                  5        UR                  U R                  5        UR                  U R                  5        UR                  U R                  5      nUR                  U R                  5      nUR                  U R                  UR                  SUU R                  R                  5      UR                  SUU R                  R                  5      5      nUR                  USS9   UR                  U R                   5        S S S 5        X#4$ ! , (       d  f       X#4$ = f)Nz<=r˜  Fr^  )r?   r  r5  r(  rõ   rû   rÈ   r™  r‰  rš  r@   Úselectrí  r  Ústopr  rŠ  )r\   r?   r›  rà  Úis_finisheds        rE   rz  ÚSliceIndexer.loop_headž  s$  € Ø—,‘,ˆà�‰×Ñ˜4Ÿ:™:×+Ñ+¨T¯Z©ZÔ8Ø�‰×Ñ˜4Ÿ9™9 d§j¡jÔ1Ø�‰�t—}‘}Ô%Ø×Ñ §¡Ô.Ø—L‘L §¡Ó,ˆ	Ø—L‘L §¡Ó,ˆ	Ø—n‘n T×%:Ñ%:Ø%,×%8Ñ%8¸¸yØ9=¿¹¿¹ó&Jà%,×%8Ñ%8¸¸yØ9=¿¹¿¹ó&JóKˆð
 �_‰_˜[°ˆ_Ò7Ø�N‰N˜4Ÿ;™;Ô'÷ 8àÐ#Ð#÷ 8Ô7àÐ#Ð#ús   ÅFÆ
Fc                 óÐ  • U R                   nUR                  UR                  U R                  5      U R                  R
                  S/S9nUR                  X R                  5        [        R                  " XR                  U R                  5      5      nUR                  X0R                  5        UR                  U R                  5        UR                  U R                  5        g )Nr¶   r·   )r?   r°  r@   rõ   r5  rì  r  r
   r  rÈ   r™  r‰  rš  rŠ  )r\   r?   rŸ  rá  s       rE   r}  ÚSliceIndexer.loop_tail°  s›   € Ø—,‘,ˆØ—[‘[ §¡¨d¯j©jÓ!9¸4¿:¹:¿?¹?Ø(- wð !ð 0ˆ
à�‰�j§*¡*Ô-Ü×,Ò,¨W·l±lÀ4Ç:Á:Ó6NÓOˆ
Ø�‰�j§*¡*Ô-Ø�‰�t—}‘}Ô%Ø×Ñ §¡Õ,rG   )r  rÞ   rŠ  r‰  r?   r…   rÈ   rƒ  rê  r™   rõ   rí  r„  r5  rû   Nr¡  rv   rG   rE   ræ  ræ  v  s+   † ñò	.ò3òBò"òò$õ$-rG   ræ  c                   ó<   • \ rS rSrSrS rS rS rS rS r	S r
S	rg
)ÚFancyIndexeri»  z,
Perform fancy indexing on the given array.
c           
      ót  • Xl         X l        X0l        [        R                  " X$R
                  UR                  5      U l        [        R                  " X$R                  UR                  5      U l        U R                   R                  [        R                  5      U l        / U l        / n[        U Vs/ s H  n[        U5      (       d  M  UPM     sn5      n	Sn
Sn[!        Xe5       GH)  u  pÍU[        R"                  L aZ  UR                  [        U5      -
  S-   U	-   n[%        U5       H+  n['        XX4U
5      nUR)                  U5        U
S-  n
US-  nM-     Ms  [+        U[        R,                  5      (       a4  UR/                  X-U5      n[1        XX4U
UU5      nUR)                  U5        GOY[+        U[        R2                  5      (       a9  [5        XXÜU R                  U
   5      n[7        XU5      nUR)                  U5        GO[+        U[        R8                  5      (       a¢  [;        U5      " XU5      n[+        UR<                  [        R2                  5      (       a  [?        XUUU R                  U
   5      nO9[+        UR<                  [        R@                  5      (       a  [C        XUU5      nO eUR)                  U5        O@[        U5      (       a!  U R                  R)                  U5        U
S-  n
O[E        SU< 35      eU
S-  n
US-  nGM,     X£R                  ::  d   X£R                  45       eX£R                  :  a4  ['        XX4U
5      nUR)                  U5        U
S-  n
X£R                  :  a  M4  [        U5      UR                  :X  d   [        U5      UR                  45       eXpl#        g s  snf )Nr   rI   r   )$r…   r?   rÞ   r
   rÇ   ri   rt   r  r³   rÀ   r   r–   r„  Únewaxesr§   r   r¨   r$  r:   r�  rm   rŸ   r%  rò   ræ  r¡   r�   r£  r    r€   rƒ   r·  ÚBooleanrÊ  ÚAssertionErrorÚindexers)r\   r…   r?   rÞ   r  r©   rª   r  rš   r1  r2  Únew_axr3  r™   r4  rq   Úindexerr5  rœ   r£   s                       rE   r…  ÚFancyIndexer.__init__À  sý  € ØŒØŒØŒ
Ü×*Ò*¨7·I±I¸u¿z¹zÓJˆŒÜ×+Ò+¨G·[±[À%Ç*Á*ÓMˆŒØ—|‘|×2Ñ2´5·:±:Ó>ˆŒØˆŒàˆÜ©+ÓJª+ 3¼ÀS×9IŸ3©+ÑJÓKˆàˆØˆÜ" 7×8‰OˆHØœŸ™Ò&à!ŸJ™J¬¨W«Ñ5¸Ñ9¸KÑG�	Ü˜yÖ)�AÜ+¨G¸eÈ"ÓM�GØ—O‘O GÔ,Ø˜!‘G�BØ˜a‘K’Fñ	 *ñ
 ô ˜%¤§¡×1Ñ1Ø×+Ñ+¨G¸HÓE�Ü& w¸ÀRØ',¨eó5�à—‘ Ö(Ü˜E¤5§=¡=×1Ñ1Ü'¨¸%Ø(,¯©°B©ó9�ä(¨¸3Ó?�Ø—‘ Ö(Ü˜E¤5§;¡;×/Ñ/Ü# EÔ*¨7¸XÓF�Ü˜eŸk™k¬5¯=©=×9Ñ9Ü1°'Ø27¸Ø26·+±+¸b±/óC‘Gô   §¡¬U¯]©]×;Ñ;Ü1°'Ø27¸óA‘Gð ˜1Ø—‘ Õ(Ü˜U×#Ñ#Ø—‘×#Ñ# FÔ+Ø�a‘‘å$ÂEÐ%KÓLÐLØ�!‰GˆBØ�a‰K‹FñQ  9ðV —Z‘ZÓÐ1 "§j¡jÐ!1Ó1ÐØ—:‘:‹oÜ# G°eÀ"ÓEˆGØ�O‰O˜GÔ$Ø�!‰GˆBð —:‘:�oô
 �8‹} §
¡
Ó*ÐG¬S°«]¸E¿J¹JÐ,GÓGÐ*Ø �ùòm Ks   Â3N5ÃN5c                 óf  • U R                    H  nUR                  5         M     U R                  R                  [        R
                  S5      nU R                    Vs/ s H  oR                  5       PM     nnU R                   H  nUR                  X45        M     [        US5      U l
        g s  snf )NrI   rv   )r  rl  r…   rÆ   r   r–   rt  r  ÚinsertÚsumÚindexers_shape)r\   rq   r-  Ú	res_shapes       rE   rl  ÚFancyIndexer.prepare  s‰   € Ø—”ˆAØ�I‰IŽKñ ð �l‰l×'Ñ'¬¯
©
°AÓ6ˆð -1¯MªMÓ:ªM q—[‘[–]©Mˆ	Ð:ð —”ˆAØ×Ñ˜Q Ö'ñ ô " )¨RÓ0ˆÕùò ;s   ÁB.c                 ó   • U R                   $ )z/
Get the resulting data shape as Python tuple.
)r  rk  s    rE   rt  ÚFancyIndexer.get_shape  s   € ð ×"Ñ"Ð"rG   c           	      ó  • [        U5      U R                  R                  :X  d   eU R                  n[        R
                  nU R                  S5      nU R                  S5      nUnUn[        U R                  U R                  U5       HÃ  u  pšnUR                  UUR                  SX¥5      5      nU	R                  5       u  pÍUR                  X¼5      nUR                  X³R                  XÖ5      5      nUR                  SXµ5      nUR!                  UUR#                  UUU5      5      nUR!                  UUR#                  UUU5      5      nMÅ     UR!                  X‚5      nUR#                  XEU5      nUR#                  XEU5      nXx4$ )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   rI   ú==r  )r§   rÞ   rt   r?   r
   Ú	false_bitr„  r¨   r  r  Úor_Úicmp_unsignedrw  rÉ   Úsubr  r°  rù  )r\   r³   r´   r?   Úis_emptyrû   r-  rõ  rö  r  ri   ÚstrideÚlower_indexÚupper_indexÚlower_offsetÚupper_offsetÚis_downwardss                    rE   Úget_offset_boundsÚFancyIndexer.get_offset_bounds  sh  € ô �7‹|˜tŸz™zŸ™Ó.Ð.Ð.Ø—,‘,ˆÜ×$Ñ$ˆØ�|‰|˜A‹ˆØ�l‰l˜1‹oˆØˆØˆÜ&)¨$¯-©-¸×9LÑ9LØ*1ö'3Ñ"ˆG˜Fà—{‘{ 8Ø#*×#8Ñ#8¸¸uÓ#KóMˆHð (/×'?Ñ'?Ó'AÑ$ˆKØ"Ÿ;™; vÓ;ˆLØ"Ÿ;™; v¯{©{¸;Ó/LÓMˆLà"×.Ñ.¨s°FÓAˆLØ—K‘K Ø '§¡¨|Ø/;Ø/;ó!=ó>ˆEð —K‘K Ø '§¡¨|Ø/;Ø/;ó!=ó>ŠEñ'3ð& —‘˜EÓ,ˆà—‘˜x¨uÓ5ˆØ—‘˜x¨uÓ5ˆØˆ|ÐrG   c                 ó>   • [        S U R                   5       6 u  pX4$ )Nc              3   ó@   #   • U  H  oR                  5       v •  M     g 7frD  )rz  )rF  rq   s     rE   rH  Ú+FancyIndexer.begin_loops.<locals>.<genexpr>B  s   é € ÐE²}°!§¡§ ²}ùs   ‚)r¨   r  )r\   rª   Úcountss      rE   Úbegin_loopsÚFancyIndexer.begin_loopsA  s    € ÜÑE°t·}²}ÓEÐF‰ˆØˆÐrG   c                 ó\   • [        U R                  5       H  nUR                  5         M     g rD  )Úreversedr  r}  )r\   rq   s     rE   Ú	end_loopsÚFancyIndexer.end_loopsE  s   € Ü˜$Ÿ-™-Ö(ˆAØ�K‰KŽMò )rG   )	rÞ   r?   r…   r  r  r„  r  r  r³   N)rw   rx   ry   rz   r  r…  rl  rt  r  r$  r(  r|   rv   rG   rE   r   r   »  s(   † ñò@!òD1ò&#ò$òLõrG   r   c                 óL  • [         R                  " XR                  5      n[         R                  " XR                  5      n	UR                  n
[        XXEXg5      nUR                  5         UR                  nUR                  5       n[        XXÍ5      nUR                  n[         R                  " UU R                  [        R                  S5      5      nUR                  5       u  nn[         R                  " XX¨U	UR                   USU R"                  S9	n[%        XUU5      nUR'                  U5      nUR)                  UU/5      n[+        XUUU5        [         R,                  " UU5      nUR/                  UU5        UR1                  5         [3        XXÎR5                  5       5      $ )Nr   Fr!  )r
   rÇ   ri   r³   r¢   r   rl  ró   rt  Ú_empty_nd_implrô   rÆ   r   r–   r$  Úget_item_pointer2Úlayoutr=  rŽ   r@   Úgepr’   r  r  r(  r"   rù   )r…   r?   r^   rñ   rÞ   r  r©   rª   r  r³   r¢   r  Úout_tyÚ
out_shapesrþ   Úout_dataÚout_idxÚ_ro   r‘   ÚcurÚnext_idxs                         rE   rL  rL  J  se  € ô ×!Ò! '¯9©9Ó5€FÜ×"Ò" 7¯K©KÓ8€GØ�8‰8€Dä˜7¨UØ&ó1€Gà‡O�OÔð �_‰_€FØ×"Ñ"Ó$€Jä
˜¨6Ó
>€CØ�x‰x€HÜ×'Ò'¨Ø(/×(<Ñ(<¼U¿Z¹ZÈÓ(KóM€Gð ×$Ñ$Ó&�J€GˆQô ×
#Ò
# G°dÀGØ$)§L¡L°'ÀeØ07×0JÑ0JñL€Cô �G e¨SÓ
1€Cð �,‰,�wÓ
€CØ
�+‰+�h  Ó
&€CÜˆw ¨¨cÔ2Ü×&Ò& w°Ó4€HØ‡M�M�(˜GÔ$à×ÑÔä˜G¨f·m±m³oÓFÐFrG   c           
      ó  • UR                   u  pEUu  pg[        U5      " XU5      nUR                  S:X  a@  [        XXW5      u  pW[	        XUR
                  XFU4U45      n[        XUR
                  U5      $ [        XX#XFU4U45      $ )z+
Advanced or basic indexing with an array.
r   )rñ   r€   rt   r¥   r>  ró   r!   rL  r@  s	            rE   Úfancy_getitem_arrayr7  u  s�   € ð
 —8‘8�L€EØ�H€CÜ
�UÔ
˜G¨cÓ
2€CØ‡z�z�Qƒä$ W°uÓB‰
ˆÜ$ W°s·±Ø%*°%°¸C¸6óCˆä  °3·?±?ÀCÓHÐHô ˜W¨sØ"¨%¨°C°6ó;ð 	;rG   c           	      óž  • UR                   nUR                  S5      nUR                  S5      nUR                  S;   a   Un	UR                  XcR                  5      n
Xš4$ Un	Un
[        UR                  5       H~  nUR                  X[   UR                  XK   U5      5      nUR                  SXÇ5      nUR                  UUR                  X¬5      U
5      n
UR                  UX‘R                  Xœ5      5      n	M€     UR                  X¦5      n
UR                  SUR                  U5      nUR                  XçU
5      n
UR                  XçU	5      n	Xš4$ )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   rI   ÚCFr˜  r  )r´   r;   r-  rÉ   r¹   r:   rt   r  r  rù  r°  )r…   r?   ÚarrtyÚarrr  r³   r´   rû   r-  rõ  rö  rq   Úmax_axis_offsetÚ
is_upwardsr  s                  rE   Úoffset_bounds_from_stridesr>  ‰  s9  € ð �|‰|€HØ�=‰=˜Ó€DØ
�)‰)�A‹,€CØ‡|�|�tÓð ˆØ—‘˜H§j¡jÓ1ˆð0 ˆ<Ðð+ ˆØˆÜ�u—z‘zÖ"ˆAð &Ÿk™k¨'©*Ø*1¯+©+°f±iÀÓ*EóGˆOà ×,Ñ,¨T°?ÓIˆJà—N‘N :Ø#*§;¡;¨uÓ#FÈóOˆEà—N‘N :Ø#(¯+©+°eÓ*MóOŠEñ #ð —‘˜EÓ,ˆà×&Ñ& t¨S¯Z©Z¸Ó>ˆØ—‘˜x¨uÓ5ˆØ—‘˜x¨uÓ5ˆàˆ<ÐrG   c                 ó‚   • UR                  XBR                  5      nUR                  XR5      nUR                  XS5      nXg4$ )zy
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           rE   Úcompute_memory_extentsrC  ³  s<   € ð
 ×&Ñ& t¯Z©ZÓ8€OØ�K‰K˜Ó/€EØ
�+‰+�oÓ
-€CØˆ:ÐrG   c                 ó:   • [        XX#XE5      u  px[        XXxU5      $ )zf
Compute a half-open range [start, end) of pointer-sized integers
which fully contain the array data.
)r>  rC  )	r…   r?   r:  r;  r  r³   r¢   rõ  rö  s	            rE   Úget_array_memory_extentsrE  ¾  s&   € ô .¨gÀØ.4ó?�L€Eä! '°EÀ$ÓGÐGrG   c                 ój   • UR                  UR                  SX%5      UR                  SXC5      5      nU$ )zO
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          rE   Úextents_may_overlaprM  É  s:   € ð —,‘,Ø×Ñ˜c 7Ó2Ø×Ñ˜c 7Ó2ó€Kð ÐrG   c                 óJ  ^ ^^^^^^^^^^^^• TR                   mSm[        R                  " TT5      mTmS mTR                  TSS9   TR	                  UR
                  UR                  5      nT R                  R                  TU5      n	U	R                   mTR                  U	T5      n	TR                  U	T5        T R                  [        R                  5      n
[        R                  " TTU
5       n[        R                  " T TTTTTR                   U5      n[        R                  " T TU	TTTU5      nTR                  TR#                  U5      U5        S S S 5        S S S 5        UU UUUUUUUUUU4S jnUU UUU4S jnXï4$ ! , (       d  f       N4= f! , (       d  f       N== f)Nr­   Fr^  c                 ó  >• [         R                  " TT
5      nTR                  TSS9 u  p#U   TR                  [         R                  " TTTR                  T5      TT	TU SS9U5        S S S 5        U   TR                  [         R                  " TTTTTTR                  U SS9U5        S S S 5        S S S 5        [        TTTTR                  U5      5      $ ! , (       d  f       Ns= f! , (       d  f       ND= f! , (       d  f       NM= f)NFr^  ©r"  )r
   rZ   Úif_elser  r,  r@   r-  rŽ   )Úsource_indicesÚsrc_ptrÚif_copyÚ	otherwiser?   r…   Ú	copy_dataÚcopy_layoutÚcopy_shapesÚcopy_stridesÚptrtyÚsrc_dataÚ
src_shapesÚsrc_stridesÚsrctyÚuse_copys       €€€€€€€€€€€€rE   Úsrc_getitemÚ&maybe_copy_source.<locals>.src_getitemõ  sê   ø€ Ü×%Ò% g¨uÓ5ˆØ�_‰_˜X¨eˆ_Ñ4Ñ8L¸ÚØ—‘Ü×-Ò-¨g°wØ.5¯l©l¸9Ó.EØ.9¸<Ø.9¸>Ø9>ñ	@ð
 ô÷ ò Ø—‘Ü×-Ò-¨g°wÀØ.8¸+Ø.3¯l©l¸NØ9>ñ@ð ô÷ ÷ 5ô  ˜ '¨5°'·,±,¸wÓ2GÓHÐH÷ •ú÷ •ú÷ 5Õ4ús:   ©C8®;CÁ)
C8Á36C'Â)C8Ã
C$	Ã C8Ã'
C5	Ã1C8Ã8
Dc                  óØ   >• TR                  TSS9   TR                  T5      n TR                  U T5      n TR                  R	                  TU 5        S S S 5        g ! , (       d  f       g = f)NFr^  )r  r@   Úbitcastr÷   Úfree)r¢   r?   r…   rV  r_  Ú	voidptrtys    €€€€€rE   Úsrc_cleanupÚ&maybe_copy_source.<locals>.src_cleanup	  sQ   ø€ à�_‰_˜X¨eˆ_Ò4Ø—<‘< 	Ó*ˆDØ—?‘? 4¨Ó3ˆDØ�K‰K×Ñ˜W dÔ+÷ 5×4Ö4ús   ’A AÁ
A))r;   r
   rô   r  rÉ   r´   r¹   r÷   Úallocaterc  r  rÀ   r   r–   Ú	loop_nestr,  r-  r@   )r…   r?   r_  r^  Úsrcr\  r]  r[  Ú	allocsizer¢   rÕ   rª   rS  Údest_ptrr`  rf  rV  rW  rX  rY  rZ  re  s   ```` ```        @@@@@@rE   Úmaybe_copy_sourcerm  Ö  sd  ÿü€ à�M‰M€Eà€KÜ×)Ò)¨'°8Ó<€IØ€KØ€Là	�‰˜¨%ˆÒ	0ð —K‘K §¡¨c¯j©jÓ9ˆ	Ø�{‰{×#Ñ# G¨YÓ7ˆØ—I‘Iˆ	Ø�‰˜t UÓ+ˆØ�‰�d˜IÔ&ð ×'Ñ'¬¯
©
Ó3ˆä×Ò˜w¨
°FÔ;¸wÜ×/Ò/°¸À(Ø0:¸KØ05·±¸góGˆGô ×0Ò0°¸'À4Ø1<¸lØ1<¸góGˆHð �M‰M˜'Ÿ,™, wÓ/°Ô:÷ <÷ 
1÷,I÷ Ið I÷(,ñ ,ð Ð#Ð#÷I <Õ;ú÷ 
1Õ	0ús&   ÁB*FÃ1A$FÅFÆ
F	ÆFÆ
F"c                 óì  • U R                  [        R                  S5      nU R                  [        R                  S5      n[        U5      [        U5      :”  a,  [        U5      [        U5      -
  nU/U-  U-   nU/U-  U-   nX#4$ [        U5      [        U5      :  aÀ  [        U5      [        U5      -
  nUSU  Vs/ s H  nUR	                  SX†5      PM     n	n[
        R                  " UR                  U	[        R                  5      n
UR                  UR                  U
5      SS9   SnU R                  R                  U[        U45        SSS5        X'S nX7S nX#4$ s  snf ! , (       d  f       N= f)aI  
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   rI   Nr  Fr^  z,cannot broadcast source array for assignment)rÆ   r   r˜   r§   r  Ú	functoolsÚreducerG  r
   Útrue_bitr  rß  r`  ra  r¿   )r…   r?   r  r³   Útarget_shaperû   r-  Únd_diffr6  Ú
dim_is_oneÚacceptedrÔ   s               rE   Ú_bc_adjust_dimensionrv    si  € ð ×Ñ¤§¡¨QÓ/€DØ
×
Ñ
œuŸ{™{¨AÓ
.€Cô ˆ<Óœ3˜v›;Ó&Ü�lÓ#¤c¨&£kÑ1ˆà�˜‘ 6Ñ)ˆØ�&˜7Ñ" WÑ,ˆð" ˆ?Ðô 
ˆ\Ó	œS ›[Ó	(ä�f“+¤ LÓ 1Ñ1ˆà & x¨Ñ 0ó2Ú 0˜"ð ×+Ñ+¨D°"Ö:Ù 0ð 	ð 2ä×#Ò# G§L¡L°*Ü$+×$4Ñ$4ó6ˆð �_‰_˜WŸ\™\¨(Ó3¸Eˆ_ÒBØ@ˆCØ×Ñ×-Ñ-¨g´zÀCÀ6ÔJ÷ Cð ˜Ð!ˆØ˜(Ð#ˆàˆ?Ðùò2÷
 CÕBús   Â;E Ä(%E%Å%
E3c           
      óŽ  • / n/ nU R                  [        R                  S5      nU R                  [        R                  S5      n[        XB5       V	V
s/ s H  u  pšUR	                  SXš5      PM     nn	n
U V
s/ s H  o¡R	                  SX¨5      PM     nn
[        X¼5       VVs/ s H  u  pÞUR                  XÞ5      PM     nnn[        XôU5       VV	V
s/ s H  u  npšUR                  UXš5      PM     nn	nn
[        Xó5       VV
s/ s H  u  nn
UR                  UXz5      PM     nnn
XV4$ s  sn
n	f s  sn
f s  snnf s  sn
n	nf s  sn
nf )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   rI   r]  r  )rÆ   r   r˜   r¨   r  rG  rù  )r…   r?   r  r³   rr  Ú	bc_shapesÚ
bc_stridesrû   r-  ÚtarÚoldÚmismatchÚ
src_is_oneÚxÚyÚpredsÚps                    rE   Ú_bc_adjust_shape_stridesr‚  8  sB  € ð €IØ€JØ×Ñ¤§¡¨QÓ/€DØ
×
Ñ
œuŸ{™{¨AÓ
.€Cô !$ LÔ 9ô;Ú 9‘H�Cð ×#Ñ# D¨#Ö3Ù 9ð ñ ;áAGÓHÂ¸#×%Ñ% d¨CÖ5Á€JÐHÜ,/°Ô,EÔFÒ,E¡D AˆW�\‰\˜!ÖÑ,E€EÑFä$'¨¸VÔ$DõFÚ$D‘[�Q˜ð —‘  3Ö,Ù$Dð ò Fô !$ EÔ 3ô5Ú 3‘f�a˜ð —.‘.  DÖ.Ù 3ð ñ 5àÐ Ð ùó;ùâHùÛFùôFùó5s   ÁD)Á8D/Â#D4ÃD:ÄEc           
      óÖ  • [         R                  " XR                  5      n[         R                  " XR                  5      n[	        XXVU5      u  pV[        XUXd5      u  pVUR                  [        U5      SS9n[        U5      " X5      n[        UUR                  [         R                  " X5      [         R                  " X5      UR                  UR                  UR                  S9  Xx4$ )zL
Broadcast the given array to the target_shape.
Returns (array_type, array)
ÚA©rt   r-  r:  )r
   rÇ   ri   r³   rv  r‚  Úcopyr§   r€   rÜ   r¢   rn   r´   r²   rµ   )	r…   r?   Úarrtyper;  rr  r  r³   Únew_arrtypeÚnew_arrs	            rE   Ú_broadcast_to_shaperŠ  O  sÆ   € ô ×!Ò! '¯9©9Ó5€FÜ×"Ò" 7¯K©KÓ8€Gä*¨7¸VØ+7ó9�O€Fä.¨wÀØ/6óF�O€Fà—,‘,¤C¨Ó$5¸c�,ÐB€Kä˜Ô% gÓ7€GÜ�7ØŸ™Ü ×+Ò+¨GÓ<Ü"×-Ò-¨gÓ?ØŸL™LØŸ;™;ØŸ*™*ò&ð ÐÐrG   c                 óT   • UR                  UR                  SSS9nU" X5      nS nXE4$ )Nr„  T)rt   r-  Úreadonlyc                 ób  • Uu  pEUR                   S   n[        U5      " XU5      n[        R                  " X5      n[	        XXdU5      u  px[        US[        U R                  UR                  R                  S5      5      S 5      5        UR                  5       n	[        XUR                  U	5      $ )Nr   rµ   )rñ   r€   r
   rÇ   rŠ  rÍ   r   rÀ   rº   rÁ   rù   r!   ró   )
r…   r?   r^   rñ   rj  Úshape_r^  r3  Údestrý   s
             rE   ÚcodegenÚ$_numpy_broadcast_to.<locals>.codegenn  s�   € Ø‰ˆØ—‘˜‘ˆä˜Ô °#Ó6ˆÜ×%Ò% gÓ6ˆÜ% g¸ÀFÓL‰ˆô 	��h¤Ø×&Ñ& t§¡×'?Ñ'?ÀÓ'IÓJØó!ô 	ð �n‰nÓˆÜ  °3·?±?ÀCÓHÐHrG   )r†  rÈ   )Ú	typingctxrÎ   ri   Úretr^   r�  s         rE   Ú_numpy_broadcast_tor”  i  s4   € à
�*‰*˜%Ÿ+™+¨c¸Dˆ*Ð
A€CÙ
ˆeÓ
€CòIð ˆ<ÐrG   c                 ó<   • UR                  SS9nU" U5      nS nX44$ )NT©rŒ  c                 óø   • Uu  nUR                   S   n[        U5      " XU5      n[        R                  " UR                  R
                  5      Ul        UR                  5       n[        XUR                  U5      $ rè   )	rñ   r€   r
   Úget_null_valuerµ   r;   rù   r!   ró   )r…   r?   r^   rñ   rj  r^  r�  rý   s           rE   r�  Ú#get_readonly_array.<locals>.codegen†  sb   € Ø‰ˆØ—‘˜‘ˆä˜%Ô  °3Ó7ˆä×,Ò,¨T¯[©[×-=Ñ-=Ó>ˆŒØ�n‰nÓˆÜ  °3·?±?ÀCÓHÐHrG   )r†  )r’  r;  r“  r^   r�  s        rE   Úget_readonly_arrayrš  €  s-   € ð �(‰(˜Dˆ(Ð
!€CÙ
ˆc‹(€CòIð ˆ<ÐrG   c                 ó  • U R                   n[        U5      n[        U5      nX4:”  a  [        S5      eU H  nUS:  d  M  [        S5      e   SnXC-
  nXc:  a1  X&   nX   n	X‰:X  d  US:X  a  US-  nUS-  nO[        S5      eXc:  a  M0  g g )NzDinput operand has more dimensions than allowed by the axis remappingr   z4all elements of broadcast shape must be non-negativerI   z=operands could not be broadcast together with remapped shapes)ri   r§   r¿   )
rÎ   Ú
dest_shapeÚ	src_shapeÚsrc_ndimÚ	dest_ndimr›   Ú	src_indexÚ
dest_indexÚsrc_dimÚdest_dims
             rE   Ú_can_broadcastr¤  ’  s·   € à—‘€IÜ�9‹~€HÜ�J“€IØÓÜð 1ó 2ð 	2ãˆØ�!�8Üð ,ó -ð -ñ ð €IØÑ%€JØ
Ó
ØÑ&ˆØÑ)ˆð Ó '¨Q£,Ø˜‰NˆIØ˜!‰O‰Jäð 4ó 5ð 5ð ×
rG   c                 óZ   • [         R                  " U 5      n [        X5        [        X5      $ rD  )ÚnpÚasarrayr¤  r”  ©rÎ   ri   s     rE   Ú_default_broadcast_to_implr©  ²  s#   € Ü�JŠJ�uÓ€EÜ�5Ô Ü˜uÓ,Ð,rG   c           	      óÜ  • [        U 5      (       d  [        R                  " S5      e[        U[        R
                  5      (       a  S nU$ [        U[        R                  5      (       aG  [        UR                  [        R
                  5      (       d  Sn[        R                  " U5      e[        $ [        U[        R                  5      (       ak  UR                  S:”  a[  [        U Vs/ s H  n[        U[        R                  5      PM     sn5      (       d  SU S3n[        R                  " U5      e[        $ [        U[        R                  5      (       at  UR                  S:X  ad  [        U [        R                  5      =(       a    U R                  S:H  n[        U 5      (       d  U(       a  S nU$ Sn[        R                  " U5      eS	U-  n[        R                  " U5      es  snf )
Nz-The first argument "array" must be array-likec                 ó0   • [         R                  " X45      $ rD  )r¦  Úbroadcast_tor¨  s     rE   rê   Ú numpy_broadcast_to.<locals>.impl¿  s   € Ü—?’? 5¨(Ó3Ð3rG   z7The second argument "shape" must be a tuple of integersr   Ú"z," object cannot be interpreted as an integerc                 óD   • [         R                  " U 5      n [        U 5      $ rD  )r¦  r§  rš  r¨  s     rE   rê   r­  Ó  s   € ô Ÿ
š
 5Ó)�Ü)¨%Ó0Ð0rG   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¡   ÚUniTuplerƒ   r©  ÚTuplerÈ   ÚallÚIntegerLiteralr    rt   r   )rÎ   ri   rê   rÔ   ÚtypÚis_scalar_arrays         rE   Únumpy_broadcast_tor¶  ¸  s}  € ä˜E×"Ñ"Ü× Ò ð "1ó 2ð 	2ô �%œŸ™×'Ñ'ò	4àˆä	�Eœ5Ÿ>™>×	*Ñ	*Ü˜%Ÿ+™+¤u§}¡}×5Ñ5ØKˆCÜ×$Ò$ SÓ)Ð)Ü)Ð)ä	�Eœ5Ÿ;™;×	'Ñ	'¨E¯K©K¸!«OäÁUÓKÂU¸c”J˜s¤E×$8Ñ$8Ö9ÁUÑK×LÑLØ�e�WÐHÐIˆCÜ×$Ò$ SÓ)Ð)Ü)Ð)Ü	�Eœ5Ÿ;™;×	'Ñ	'¨E¯K©K¸1Ó,<Ü$ U¬E¯K©KÓ8×L¸U¿Z¹ZÈ1¹_ˆÜ˜%× Ñ ¦Oò1ð
 ˆKð DˆCÜ×$Ò$ SÓ)Ð)ðØñ ˆä× Ò  Ó%Ð%ùò+ Ls   Ã)$G)c                 óØ   • [        [        U5      5       HR  nU[        U5      -
  U-   nX#   nUS:  a  [        S5      eUS:X  a  M1  X   S:X  a  XPU'   M?  X   U:w  d  MI  [        S5      e   g )Nr   ú#negative dimensions are not allowedrI   z=shape mismatch: objects cannot be broadcast to a single shape)r:   r§   r¿   )ÚrÚmri   rq   rÚ   Útmps         rE   Únumpy_broadcast_shapes_listr¼  ã  sv   € ä”3�u“:ÖˆØ”�E“
‰N˜QÑˆØ‰hˆØ�‹7ÜÐBÓCÐCØ�!‹8ÙØ‰4�1‹9Øˆa‹DØ‰T�S�[Üð 2ó 3ð 3ò rG   c                  óÖ  ^^	• [        U 5       HÔ  u  p[        U[        R                  5      n[        U[        R                  5      =(       a$    [        UR
                  [        R                  5      n[        U[        R                  5      =(       a    [        UR                  5      S:H  nU(       a  M¦  U(       a  M¯  U(       a  M¸  SU SU 3n[        R                  " U5      e   SmU  Hf  n[        U[        R                  5      (       a  [        TS5      mM0  [        U[        R                  5      (       d  MQ  [        T[        U5      5      mMh     TS:X  a  S $ ST-  m	UU	4S jnU$ )Nr   z	Argument z* must be either an int or tuple[int]. Got rI   c                  ó   • gr­  rv   ©rñ   s    rE   Ú<lambda>Ú+ol_numpy_broadcast_shapes.<locals>.<lambda>
  s   € ˜RrG   ©rI   c                  ó,  >• S/T-  nTn[        U 5       H[  n[        U[        5      (       a  [        U5      S:”  a  [	        UTU5        M6  [        U[
        5      (       d  MM  [	        UTU45        M]     [        U5       H  u  pE[        X$U5      nM     U$ rÌ  )r   rŸ   rÂ   r§   r¼  rÄ   Ú	enumerater1   )rñ   r¹  rN  Úargrš   Úelemrº  Útup_inits         €€rE   rê   Ú'ol_numpy_broadcast_shapes.<locals>.impl  sƒ   ø€ à��a‘ˆAØˆCÜ% dÖ+�Ü˜c¤5×)Ñ)¬c°#«h¸«lÜ/°°1°cÖ:Ü ¤S×)Ó)Ü/°°1°s°fÖ=ñ	 ,ô
 ' qž\‘	�Ü# C¨dÓ3’ñ *àˆJrG   )rÄ  rŸ   r   r¡   r°  rƒ   r±  r§   r	   rì   ÚmaxrQ  )
rñ   rš   rÅ  Úis_intÚis_int_tupleÚis_empty_tuplerÔ   rê   rº  rÇ  s
           @@rE   Úol_numpy_broadcast_shapesrÍ  ô  s  ù€ ô ˜d–O‰ˆÜ˜C¤§¡Ó/ˆÜ! #¤u§~¡~Ó6÷ 1Ü�s—y‘y¤%§-¡-Ó0ð 	ä# C¬¯©Ó5×M¼#¸c¿i¹i».ÈAÑ:Mˆß�Ÿ,˜,¯.¨.Ø˜s˜eð $Ø˜ð ˆCä×$Ò$ SÓ)Ð)ñ $ð 	
€AÛˆÜ�cœ5Ÿ=™=×)Ñ)Ü�A�q“	ŠAÜ˜œUŸ_™_×-Ó-Ü�A”s˜3“xÓ ŠAñ	 ð 	ˆAƒvÙÐà˜!‘8ˆö	ð ˆrG   c                  óÞ  ^^• [        U 5       H/  u  p[        U5      (       a  M  [        R                  " SU S35      e   S nS nU  Hf  n[	        U[
        R                  [
        R                  45      (       a  UR                  nOUnUc  UnMH  X4:w  d  MO  [        R                  " SU  35      e   Sm[        U 5       HŸ  u  p[	        U[
        R                  5      (       a  [        TUR                  5      mM<  [	        U[
        R                  [
        R                  [
        R                  45      (       a  [        TS5      mMˆ  [        R                  " SU 35      e   ST-  mUU4S jnU$ )	Nz
Argument "z" must be array-likezTMismatch of argument types. Numba cannot broadcast arrays with different types. Got r   rI   zUnhandled type ©r   c                  ón  >• S/T-  n[        U 5       H.  n[        UT[        R                  " U5      R                  5        M0     Tn[        T5       H  n[        X4X   5      nM     / n[        U 5       H=  nUR                  [        R                  " [        R                  " U5      U5      5        M?     U$ rª  )	r   r¼  r¦  r§  ri   r:   r1   rm   r¬  )rñ   ri   rÎ   rN  rq   Úoutsrº  rÇ  s         €€rE   rê   Ú$numpy_broadcast_arrays.<locals>.impl@  s˜   ø€ ð
 ��a‘ˆÜ# DÖ)ˆEÜ'¨¨q´"·*²*¸UÓ2C×2IÑ2IÖJñ *ð ˆä�q–ˆAÜ ¨©Ó1ŠCñ ð ˆÜ# DÖ)ˆEØ�K‰KœŸš¬¯
ª
°5Ó(9¸3Ó?Ö@ñ *àˆrG   )rÄ  r   r	   rì   rŸ   r   r    rQ  rƒ   ÚArrayCompatiblerÉ  rt   ÚNumberr  )rñ   rš   rÅ  Úunified_dtypeÚdtrê   rº  rÇ  s         @@rE   Únumpy_broadcast_arraysr×    sH  ù€ ô ˜d–O‰ˆÜ ×$Ó$Ü×$Ò$ z°#°ð 75ð &5ó 6ð 6ñ $ð
 €MØ	€BÛˆÜ�cœEŸK™K¬¯©Ð9×:Ñ:Ø—‘‰BàˆBàÑ ØŠMØÕ Ü×$Ò$ð &,à,0¨6ð&3ó 4ð 4ñ ð 	
€AÜ˜d–O‰ˆÜ�cœ5×0Ñ0×1Ñ1Ü�A�s—x‘xÓ ŠAÜ˜œeŸl™l¬E¯M©M¼5¿?¹?ÐK×LÑLÜ�A�q“	ŠAä×$Ò$ °s°eÐ%<Ó=Ð=ñ $ð �a‰x€Höð( €KrG   c                 ó   • [         e)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á   ©r\  Úindex_shapes     rE   Úraise_with_shape_contextrÛ  W  ó
   € ô ÐrG   Úgeneric)Útargetc                 ó  • [        U [        R                  5      (       aj  [        U[        R                  5      (       aJ  U R                  UR                  :X  a/  [        U R                  [        R                  5      (       a  S nU$ g g g g )Nc                 ó   • [        S5      e)Nz0cannot assign slice from input of different sizeré   rÙ  s     rE   rê   Ú1ol_raise_with_shape_context_generic.<locals>.implg  s   € ÜÐOÓPÐPrG   ©rŸ   r   r°  rƒ   r¡   ©r\  rÚ  rê   s      rE   Ú#ol_raise_with_shape_context_genericrä  ^  sp   € ô 	�:œuŸ~™~×.Ñ.Ü�;¤§¡×/Ñ/Ø×Ñ˜K×-Ñ-Ó-Ü�z×'Ñ'¬¯©×7Ñ7ò	Qàˆð	 8ð 	.ð 	0ð 	/rG   ÚCPUc                 ó  • [        U [        R                  5      (       aj  [        U[        R                  5      (       aJ  U R                  UR                  :X  a/  [        U R                  [        R                  5      (       a  S nU$ g g g g )Nc           	      ó\  • [        U 5      S:X  a
  SU S    S3nO/SSR                  U  Vs/ s H  n[        U5      PM     sn5       S3n[        U5      S:X  a
  SUS    S3nO/SSR                  U Vs/ s H  n[        U5      PM     sn5       S3nSU SU 3n[        U5      es  snf s  snf )	NrI   Ú(r   z,)ú, Ú)zcannot assign slice of shape z from input of shape )r§   ÚjoinÚstrr¿   )r\  rÚ  Ú	shape_strr~  Ú	index_strrÔ   s         rE   rê   Ú-ol_raise_with_shape_context_cpu.<locals>.impls  sÄ   € Ü�:‹ !Ó#Ø 
¨1¡˜¨bÐ1‘	à §	¡	¹:Ó*Fº:°a¬3¨q®6¹:Ñ*FÓ GÐHÈÐJ�	Ü�;Ó 1Ó$Ø ¨A¡Ð/¨rÐ2‘	à §	¡	¹;Ó*Gº;°a¬3¨q®6¹;Ñ*GÓ HÐIÈÐK�	Ø2°9°+ð >Ø%˜;ð(ˆCä˜S“/Ð!ùò +Gùò +Hs   ªB$
Á2B)
râ  rã  s      rE   Úol_raise_with_shape_context_cpurð  l  so   € ä�:œuŸ~™~×.Ñ.Ü�;¤§¡×/Ñ/Ø×Ñ˜K×-Ñ-Ó-Ü�z×'Ñ'¬¯©×7Ñ7ò	"ð ˆð 8ð 	.ð 	0ð 	/rG   c                 óŒ  ^ ^^(^)^*• UR                   u  pgm*Uu  p‡m([        U5      " T TU5      n[        R                  " TUR                  5      n	[        R                  " TUR
                  5      n
UR                  n[        T TXhXE5      nUR                  5         S n[        T*[        R                  5      (       Ga€  T*R                  m)UR                  5       n[        T*5      " T TT(5      m([        T TT*T(U5      u  m*m([        R                  " TT(R                  5      n[        R                  " TT(R
                  5      nT(R                  n[        R                  n[!        U5      [!        U5      :X  d   e[#        Xþ5       H)  u  nnTR%                  UTR'                  SUU5      5      nM+     TR)                  USS9   U" T TUU5        SSS5        [+        T TT*T(UUU5      u  nnUR-                  U
UR.                  5      u  nn[1        T TUUU5      u  nn[3        T TUUUU5      n[5        T TUT*T(UUU5      u  nnOÜ[        T*[        R6                  5      (       a²  T*R                  m)UR                  5       n[!        U5      S:X  d   eT R9                  [         [;        [        R<                  T*5      5      nU" TT(45      nTR'                  SUS   U5      nTR)                  USS9   U" T TU4US   45        SSS5        UU U(U)U*4S jnS	 nOT*m)U(4S
 jnS nT R?                  [        R@                  S5      n URC                  5       u  n!n"[E        U"5      n"URF                   H  n#U"RI                  U#U 5        M     U" V$s/ s H
  n$U$c  M  U$PM     n%n$U" U%5      n&T RK                  TU&T)UR                  5      n&[        RL                  " T TUXšURN                  U!ST RP                  S9	n'[S        T TUU&U'5        URU                  5         U" 5         T RW                  5       $ ! , (       d  f       GN[= f! , (       d  f       GN?= fs  sn$f )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.
c           	      óÞ  • U R                   R                  [        5      n[        R                  " [        R
                  [        U5      5      [        R                  " [        R
                  [        U5      5      4nUR                  U R                   U0 5      nU R                  XF5      nU" XR                  XR                  S   U5      U R                  XR                  S   U5      45        g ©Nr   rI   )Útyping_contextÚresolve_value_typerÛ  r   r°  Úint64r§   Úget_call_typerT   Ú
make_tuplerñ   )r…   r?   r\  rÚ  ÚfntyÚargtysÚ	raise_sigÚfuncs           rE   Úraise_shape_mismatch_errorÚ2fancy_setslice.<locals>.raise_shape_mismatch_error”  sÀ   € ð ×%Ñ%×8Ñ8Ü$ó&ˆä—.’.¤§¡¬c°*«oÓ>Ü—.’.¤§¡¬c°+Ó.>Ó?ðAˆà×&Ñ& w×'=Ñ'=¸vÀrÓJˆ	Ø×#Ñ# DÓ4ˆÙˆW×)Ñ)¨'·>±>À!Ñ3DØ*4ó6à×)Ñ)¨'·>±>À!Ñ3DØ*5ó7ð8õ 	9rG   r]  Fr^  NrI   r   c                 ó”   >• U u  nTR                  [        R                  [        TT[        R
                  5      5      nU" TTU45      $ rD  )rT   ÚoperatorÚgetitemr%   r   r–   )rR  rš   Úgetitem_implr?   r…   rj  Ú	src_dtyper^  s      €€€€€rE   r`  Ú#fancy_setslice.<locals>.src_getitemÜ  sF   ø€ Ø!‰DˆCØ"×/Ñ/Ü× Ñ Ü˜) U¬E¯J©JÓ7óˆLñ   ¨#¨s¨Ó4Ð4rG   c                  ó   • g rD  rv   rv   rG   rE   rf  Ú#fancy_setslice.<locals>.src_cleanupä  ó   € ØrG   c                 ó   >• T$ rD  rv   )rR  rj  s    €rE   r`  r  ì  s   ø€ ØˆJrG   c                  ó   • g rD  rv   rv   rG   rE   rf  r  ï  r  rG   r!  ),rñ   r€   r
   rÇ   ri   r³   r¢   r   rl  rŸ   r   r  rƒ   rt  rŠ  r  r§   r¨   r  r  r  rE  r  r´   rC  rM  rm  ÚSequencerT   r%   r–   rÆ   r˜   r$  rÃ   r  r
  r•   r,  r-  r=  r’   r(  rf  )+r…   r?   r^   rñ   r©   rª   rÞ   r3  r  Údest_shapesÚdest_stridesÚ	dest_datar  rý  rÚ  r\  r]  r[  Úshape_errorÚurÛ   Ú	src_startÚsrc_endÚ
dest_lowerÚ
dest_upperÚ
dest_startÚdest_endr_  r`  rf  Úlen_implÚseq_lenrû   Údest_indicesr#  rq   rÕ  rR  r‘   rl  rj  r  r^  s+   ``                                      @@@rE   rS  rS  ‚  s  ü€ ð —h‘h�O€EˆeØ�K€CˆCä
�UÔ
˜G W¨cÓ
2€CÜ×&Ò& w°·	±	Ó:€KÜ×'Ò'¨°·±Ó=€LØ—‘€Iä˜7 G¨UØ&ó1€Gà‡O�OÔò9ô �%œŸ™×&Ò&à—K‘Kˆ	Ø×'Ñ'Ó)ˆÜ˜Ô ¨°#Ó6ˆä(¨°'¸5À#Ø)4ó6‰
ˆˆsä×)Ò)¨'°3·9±9Ó=ˆ
Ü×*Ò*¨7°C·K±KÓ@ˆØ—8‘8ˆô ×'Ñ'ˆÜ�;Ó¤3 z£?Ó2Ð2Ð2ä˜
Ö0‰DˆAˆqØ!Ÿ+™+ kØ&-×&9Ñ&9¸$ÀÀ1Ó&EóGŠKñ 1ð �_‰_˜[°ˆ_Ò7Ù& w°¸Ø'2ô4÷ 8ô
 6°g¸wÈØ69¸:Ø6AÀ8óMÑˆ	�7ð ")×!:Ñ!:¸<Ø;>¿<¹<ó"IÑˆ
�Jä5°g¸wØ6@À*Ø6?ó AÑˆ
�Hô ' w°¸ÀGØ'1°8ó=ˆô $5°W¸gÀxØ5:¸CÀØ5@À(ó$LÑ ˆ‘[ô 
�Eœ5Ÿ>™>×	*Ñ	*Ø—K‘Kˆ	ð ×'Ñ'Ó)ˆÜ�;Ó 1Ó$Ð$Ð$Ø×'Ñ'¬¬Y´u·z±zÀ5Ó-IÓJˆÙ˜7 S FÓ+ˆà×)Ñ)¨$°¸A±ÀÓHˆà�_‰_˜[°ˆ_Ò7Ù& w°¸'¸Ø(3°A©Ð'8ô:÷ 8÷	5ñ 	5ó	ð ˆ	õ	ò	ð ×Ñ¤§¡¨QÓ/€Dà"×.Ñ.Ó0Ñ€L�&ô �&‹\€Fð
 �_Œ_ˆØ�‰�a˜Öñ ñ "(Ó9¢˜A¨1—a¡€NÐ9á
�nÓ
%€Cð �,‰,�w  Y°·±Ó
<€Cô ×(Ò(¨°'¸9Ø)4Ø).¯©°|Ø49Ø5<×5OÑ5Oñ	Q€Hô
 ˆw˜ ¨¨XÔ6à×ÑÔá„Mà×"Ñ"Ó$Ð$÷A 8Ö7ú÷B 8Ö7üòV :s$   Æ=PË&P/Í?QÎ
QÐ
P,Ð/
P>c           
      óÈ  • UR                   S   nUR                   SS  nUS   nUSS  n[        XW5       VV	s/ s H&  u  p‰U R                  XU[        R                  5      PM(     nnn	[
        R                  " XUS   R                  5      n
[        R                  " [        R                  [        U5      S9n[        R                  " UR                  XK5      nXj4nXÍ4$ s  sn	nf )Nr   rI   ©rƒ   rÈ   )rñ   r¨   r•   r   r–   r
   rn   r;   r°  r§   r   r%   ró   )r…   r?   r^   rñ   rÞ   Údimtysr  rp   rG  r‘   ri   ÚshapetyÚnew_sigÚnew_argss                 rE   Úvararg_to_tupler    sË   € Ø�H‰H�Q‰K€EØ�X‰X�a�bˆ\€Fà
ˆq‰'€CØ��ˆ8€Dô ˜vÔ,ô.Ú,‘�ð �L‰L˜ r¬5¯:©:Ö6Ù,ð 	ñ .ô ×Ò˜w¨d°1©g¯l©lÓ;€Eä�nŠn¤5§:¡:´S¸³YÑ?€GÜ×Ò˜sŸ™°Ó?€GØˆz€HàÐÐùó.s   ·-Czarray.transposec                 ó<   • [        XUR                  S   US   5      $ rè   )Úarray_Trñ   ©r…   r?   r^   rñ   s       rE   Úarray_transposer#  0  s   € ä�7 S§X¡X¨a¡[°$°q±'Ó:Ð:rG   c                 óÞ   • [        U 5      [        [        U 5      5      :w  a  [        S5      e[        U5      nU  H"  nXC:¼  d  [        U5      U:”  d  M  [        S5      e   X   US S & X    US S & g )Nzrepeated axis in transposez2axis is out of bounds for array of given dimension)r§   r¼   r¿   Úabs)rä   ri   r³   rƒ  r~  s        rE   Úpermute_arraysr&  5  sn   € Ü
ˆ4ƒy”Cœ˜D›	“NÓ"ÜÐ5Ó6Ð6Ü
ˆe‹*€CÛˆØ‹8”s˜1“v •|Üð /ó 0ð 0ñ ð
 ‰{€E‰!€HØ‘€G‰A�JrG   c           
      ór  • UR                   S   n[        U5      " XUS   5      nUR                   S   US   pvUR                  UR                  p˜U R	                  [
        R                  5      n
[        R                  " X¨5      nXuR                  UR                  /nU Vs/ s H  n[        R                  " X5      PM     nn[        XÎ5       H  u  nnUR                  UU5        M     [
        R                  " U	SSS9nU R!                  [
        R                  U R#                  U
5      5      nU Vs/ s H  n[        U5      " X5      PM     nn[        UU5       HR  u  nn[%        UUR'                  UU
R)                  5       5      U R!                  [
        R                  U5      /U/US S9  MT     U R+                  U[,        [.        R0                  " [
        R2                  UUU5      U Vs/ s H  nUR5                  5       PM     sn5        [        UR6                  5      " X5      n[%        UUR8                  UR;                  US   5      UR;                  US   5      UR<                  UR>                  UR@                  S9  UR5                  5       n[C        XUR6                  U5      $ s  snf s  snf s  snf )Nr   rI   r­   ©rƒ   rt   r-  ©r¢   ri   r³   r´   r²   rd  r:  )"rñ   r€   rÈ   rƒ   rÀ   r   r–   r   Ú	ArrayTyperi   r³   r
   rZ   r¨   r  r    rÆ   r„   rÜ   rc  Ú
as_pointerÚcompile_internalr&  r   r%   Úvoidrù   ró   r¢   r@   r´   r²   rµ   r!   )r…   r?   r^   rñ   rÞ   r  Úaxistyrä   Únum_axisrƒ   r„  Úll_ary_sizeÚarysr3  Úll_arysrj  ÚdstÚ	np_ary_tyÚnp_itemsizeÚnp_arysÚnp_aryÚll_aryÚar“  rý   s                            rE   Úarray_transpose_tupler:  D  sH  € à�H‰H�Q‰K€EÜ
�UÔ
˜G¨d°1©gÓ
6€Cà—8‘8˜A‘;  Q¡ˆDØ—l‘l F§L¡Lˆeà×$Ñ$¤U§Z¡ZÓ0€GÜ—,’,˜wÓ1€Kð —)‘)˜SŸ[™[Ð)€DÙBFÓGÂ$¸QŒw×"Ò" 7Ö8Á$€GÐGô ˜Ö&‰ˆˆSØ�‰�c˜3Öñ 'ô —’ %¨a¸Ñ<€IØ×&Ñ&¤u§z¡zØ'.×'=Ñ'=¸gÓ'FóH€Kñ AEÓEÂ¸1Œz˜)Ô$ WÖ6Á€GÐEô ˜g wÖ/‰ˆ�Ü�vØ#ŸO™O¨F°G×4FÑ4FÓ4HÓIØ%×2Ñ2´5·:±:¸xÓHÐIØ +˜}Ø +Ø#ô	%ñ 0ð ×Ñ˜W¤nÜ#×-Ò-¬e¯j©jØ.7¸ÀIóOá5<Ó=²W°˜aŸk™kžm±WÑ=ô?ô �S—_‘_Ô
% gÓ
7€CÜ�3ØŸ™Ø Ÿ™ g¨a¡jÓ1Ø"Ÿ<™<¨°©
Ó3ØŸL™LØŸ;™;ØŸ*™*ò&ð �-‰-‹/€CÜ˜W¨s¯©ÀÓDÐDùòO Hùò Fùò  >s   Â  J*Ä2J/Ç,J4c                 ó6   • [        XX#5      u  pE[        XXE5      $ rD  )r  r:  ©r…   r?   r^   rñ   r  r  s         rE   Úarray_transpose_varargr=  {  s   € ä'¨¸#ÓDÑ€GÜ  °7ÓEÐErG   c                 óŽ   • [        U [        R                  5      (       a  [        R                  " S5      eUc  SS jnU$ SS jnU$ )Nz#np.transpose does not accept tuplesc                 ó"   • U R                  5       $ rD  ©Ú	transpose©r9  Úaxess     rE   Únp_transpose_implÚ*numpy_transpose.<locals>.np_transpose_impl‡  s   € Ø—;‘;“=Ð rG   c                 ó$   • U R                  U5      $ rD  r@  rB  s     rE   rD  rE  Š  s   € Ø—;‘;˜tÓ$Ð$rG   rD  )rŸ   r   rQ  r	   rì   )r9  rC  rD  s      rE   Únumpy_transposerG  �  sD   € ä�!”U—_‘_×%Ñ%Ü× Ò Ð!FÓGÐGà�|ô	!ð Ðô	%ð ÐrG   ÚTc                 ó(  • UR                   S::  a  UnOô[        U5      " XU5      n[        U5      " X5      n[        R                  " XR                  UR                   5      n[        R                  " XR
                  UR                   5      n[        UUR                  [        R                  " XS S S2   5      [        R                  " XS S S2   5      UR                  UR                  UR                  S9  UR                  5       n[        XX$5      $ )NrI   éÿÿÿÿr:  )rt   r€   r
   rÇ   ri   r³   rÜ   r¢   rn   r´   r²   rµ   rù   r!   )	r…   r?   r´  r  rý   r  r“  r  r³   s	            rE   r!  r!  �  sÐ   € à
‡x�x�1ƒ}Ø‰ä˜Œo˜g°Ó6ˆÜ˜Œo˜gÓ/ˆÜ×%Ò% g¯y©y¸#¿(¹(ÓCˆÜ×&Ò& w·±¸S¿X¹XÓFˆÜ�sØŸH™HÜ$×/Ò/°ÁÀ"À¹ÓFÜ&×1Ò1°'Á4ÀRÀ4¹=ÓIØ #§¡Ø"Ÿ{™{Ø!Ÿj™jò	*ð �m‰m‹oˆÜ˜W¨sÓ8Ð8rG   c                 óZ  • [        U [        R                  5      (       d  [        R                  " S5      e[        U[        R                  5      (       d  [        R                  " S5      e[        U[
        [        R                  45      (       d  [        R                  " S5      eSS jnU$ )Nz+The first argument "start" must be a numberz+The second argument "stop" must be a numberz+The third argument "num" must be an integerc                 ó^   • [         R                  " XU5      n[         R                  " SU5      $ )Ng      $@)r¦  ÚlinspaceÚpower)r(  rú  Únumr  s       rE   rê   Únumpy_logspace.<locals>.impl­  s#   € Ü�KŠK˜ SÓ)ˆÜ�xŠx˜˜aÓ Ð rG   ©é2   )rŸ   r   rÔ  r	   rì   rÄ   r¡   )r(  rú  rO  rê   s       rE   Únumpy_logspacerS  ¤  s|   € ä�eœUŸ\™\×*Ñ*Ü× Ò Ð!NÓOÐOÜ�dœEŸL™L×)Ñ)Ü× Ò Ð!NÓOÐOÜ�cœC¤§¡Ð/×0Ñ0Ü× Ò Ð!NÓOÐOô!ð €KrG   c                 ó  ^• [        U [        R                  5      (       d  Sn[        R                  " U5      e[        U[        R                  5      (       d  Sn[        R                  " U5      e[        U[
        [        R                  45      (       d  Sn[        R                  " U5      e[        S X4 5       5      (       a=  [        [        R                  " [        U 5      [        U5      S 5      5      mSU4S jjnU$ SS jnU$ )Nz%The argument "start" must be a numberz$The argument "stop" must be a numberú%The argument "num" must be an integerc              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frD  ©rŸ   r   ÚComplex©rF  rÅ  s     rE   rH  Ú"numpy_geomspace.<locals>.<genexpr>Â  ó   é € Ð
C²]¨cŒ:�cœ5Ÿ=™=×)Ð)²]ùrJ  c                 ód  >• U S:X  d  US:X  a  [        S5      eT	" U 5      n T	" U5      n[        S:  a†  U R                  S:H  UR                  S:H  -  n[        R                  " U 5      S:H  [        R                  " U5      S:H  -  nSnU(       a  U R
                  n UR
                  nSnU(       a	  U * n U* nU* nO[        R                  " U 5      nX-  n X-  n[        R                  " U 5      n[        R                  " U5      n[        R                  " XgU5      nUS:”  a  XS'   US:”  a  XS'   XX-  $ )Nr   ú&Geometric sequence cannot include zerorc  rJ  rI   y              ð?)r¿   r   Úrealr¦  ÚsignÚimagÚlog10Úlogspace)
r(  rú  rO  Úboth_imaginaryÚboth_negativeÚout_signÚlogstartÚlogstopr  Úresult_dtypes
            €rE   rê   Únumpy_geomspace.<locals>.implÆ  s  ø€ Ø˜‹z˜T Q›YÜ Ð!IÓJÐJÙ  Ó'ˆEÙ Ó%ˆDÜ˜vÓ%Ø"'§*¡*°¡/°d·i±iÀ1±nÑ!E�Ü!#§¢¨£°2Ñ!5¼"¿'º'À$»-È2Ñ:MÑ N�Ø�Þ!Ø!ŸJ™J�EØŸ9™9�DØ!�HÞ Ø"˜F�EØ ˜5�DØ (˜y�HøäŸ7š7 5›>�ØÑ!�ØÑ �ä—x’x “ˆHÜ—h’h˜t“nˆGÜ—[’[ °CÓ8ˆFð �Q‹wØ!�q‘	Ø˜“7Ø!%˜2‘JØÑ$Ð$rG   c                 óp  • U S:X  d  US:X  a  [        S5      e[        R                  " U 5      S:H  [        R                  " U5      S:H  -  nSnU(       a	  U * n U* nU* n[        R                  " U 5      n[        R                  " U5      n[        R                  " XVU5      nUS:”  a  XS'   US:”  a  XS'   XG-  $ )Nr   r]  rJ  rI   )r¿   r¦  r_  ra  rb  )r(  rú  rO  rd  re  rf  rg  r  s           rE   rê   ri  é  s­   € Ø˜‹z˜T Q›YÜ Ð!IÓJÐJÜŸWšW U›^¨rÑ1´b·g²g¸d³mÀrÑ6IÑJˆMØˆHÞØ˜�Ø�u�Ø$˜9�Ü—x’x “ˆHÜ—h’h˜t“nˆGÜ—[’[ °CÓ8ˆFð �Q‹wØ!�q‘	Ø˜“7Ø!%˜2‘JØÑ$Ð$rG   rQ  )rŸ   r   rÔ  r	   rì   rÄ   r¡   rK  r   r¦  Úresult_typer   )r(  rú  rO  rÔ   rê   rh  s        @rE   Únumpy_geomspacerl  ´  sÏ   ø€ ä�eœUŸ\™\×*Ñ*Ø5ˆÜ× Ò  Ó%Ð%ä�dœEŸL™L×)Ñ)Ø4ˆÜ× Ò  Ó%Ð%ä�cœC¤§¡Ð/×0Ñ0Ø5ˆÜ× Ò  Ó%Ð%ä
Ñ
C°e±]Ó
C×CÑCÜ!¤"§.¢.´¸%³Ü19¸$³Àó#Gó Hˆ÷ 	%ðp €Kô+	%ð* €KrG   c                 ó<  • [        U[        [        R                  45      (       d  [        R
                  " S5      e[        U [        R                  5      (       d  [        R
                  " S5      eU R                  S:  a  [        R                  " S5      eSS jnU$ )Nz*The second argument "k" must be an integerz'The first argument "m" must be an arrayrd  úInput must be >= 2-d.c                 óV  • US-  nUS:X  a  U S S  $ US:X  a,  [         R                  " [         R                  " U 5      SS5      $ US:X  a*  [         R                  " [         R                  " U 5      5      $ US:X  a,  [         R                  " [         R                  " U SS5      5      $ [        e)Né   r   rI   rd  é   )r¦  ÚswapaxesÚfliplrÚflipudr  )rº  rÚ   s     rE   rê   Únumpy_rot90.<locals>.impl  s„   € Ø�‰EˆØ�‹6Ø‘Q�4ˆKØ�!‹VÜ—;’;œrŸyšy¨›|¨Q°Ó2Ð2Ø�!‹VÜ—9’9œRŸYšY q›\Ó*Ð*Ø�!‹VÜ—9’9œRŸ[š[¨¨A¨qÓ1Ó2Ð2ä Ð rG   rÂ  )	rŸ   rÄ   r   r¡   r	   rì   r    rt   ÚNumbaValueError)rº  rÚ   rê   s      rE   Únumpy_rot90rw    sx   € ô �aœ#œuŸ}™}Ð-×.Ñ.Ü× Ò Ð!MÓNÐNÜ�aœŸ™×%Ñ%Ü× Ò Ð!JÓKÐKà‡v�v�ƒzÜ×$Ò$Ð%<Ó=Ð=ô!ð €KrG   c                 ó   • U R                  [        R                  5      nUR                  5       nU R                  [        R                  5      n	[
        R                  " U	XxUXxUXy/5      n
[        R                  " UR                  U
S5      nU" UR                  5      n[        R                  " XR                  S5      SS5      n[        R                  " XR                  S5      SS5      nU" U5      n[        R                  " XSS5      n[        R                  " XSS5      nU	" S5      nUR                  X¼XÞXEUUR                  U/5      nU$ )zí
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_reshaperi   r   r³   )rÀ   r   r–   r+  Úintcr   ÚFunctionTyper
   Úget_or_insert_functionr<   rt   rl   rk   Úcallr´   )r…   r?   rÞ   r  ÚnewndÚnewshapeÚ
newstridesr„  Úll_intp_starÚll_intcrù  ÚfnÚndri   r³   Ú
is_f_orderrý   s                    rE   Ú_attempt_nocopy_reshaper†    s1  € ð ×$Ñ$¤U§Z¡ZÓ0€GØ×%Ñ%Ó'€LØ×$Ñ$¤U§Z¡ZÓ0€GÜ�?Š?˜7à˜|à˜|àð%ó €Dô 
×	'Ò	'¨¯©¸Ø(Fó
H€Bñ 
�—‘Ó	€BÜ× Ò  ×*>Ñ*>¸wÓ*GÈÈAÓN€EÜ×"Ò" 7×,@Ñ,@ÀÓ,KØ#$ aó)€Gá�E‹N€EÜ×#Ò# G°q¸!Ó<€HÜ×%Ò% g¸1¸aÓ@€JÙ˜“€JØ
�,‰,�r Ø!¨ZØŸL™L¨*ð6ó 7€Cð €JrG   c                 ó  • SnSn[        U5       H  u  pEUS:  a	  US-  nUnM  X5-  nM     US:X  a  X:w  a  [        S5      eg US:X  a0  US:X  a  SnU S:H  nOX-  nX-  S:H  nU(       d  [        S5      eXqW'   g [        S5      e)Nr   rI   z)total size of new array must be unchangedzmultiple negative shape values)rÄ  r¿   )	Úorigsizeri   Únum_neg_valueÚ
known_sizer2  r®   Úneg_axÚinferredÚoks	            rE   Únormalize_reshape_valuerŽ  @  s³   € Ø€MØ€JÜ˜5Ö!‰ˆØˆq‹5Ø˜QÑˆMØŠFà‰OŠJñ "ð ˜ÓØÓ!ÜÐHÓIÐIð "ð 
˜!Ó	à˜‹?ØˆHØ˜Q‘‰BàÑ-ˆHØÑ&¨!Ñ+ˆBÞÜÐHÓIÐIØ ˆfŠô Ð9Ó:Ð:rG   zarray.reshapec           
      óè  • UR                   S   nUR                  nUR                   S   nUS   nU R                  [        R                  5      n[
        R                  " X†R                  5      n	[        U5      " XUS   5      n
[        R                  " X5      nUR                  X{5        [        R                  " UR                  SSS9n[        U5      " X5      nU R                  [        R                  U R                  U5      5      n[!        UUR#                  X¸R%                  5       5      U R                  [        R                  UR                  5      /U/US S9  U
R&                  nU R)                  U[*        [,        R.                  " [        R0                  [        R2                  U5      XýR5                  5       /5        UR                  n[        R                  " X5      n[7        XXJUUU5      nUR9                  SUUR;                  S5      5      nUR=                  U5         SnU R>                  RA                  U[B        U45        S S S 5        [        U5      " X5      n[!        UU
RD                  URG                  U5      URG                  U5      U
RH                  U
RJ                  U
RL                  S9  UR5                  5       n[O        XUR                  U5      $ ! , (       d  f       N›= f)	Nr   rI   r­   r(  r)  r  zincompatible shape for arrayr:  )(rñ   ró   rÀ   r   r–   r   r*  rÈ   r€   r
   rZ   r  r    rƒ   rÆ   r„   rÜ   rc  r+  r¹   r,  rŽ  r   r%   r-  r˜   rù   r†  r  r;   r  r`  ra  rU   r¢   r@   r´   r²   rµ   r!   )r…   r?   r^   rñ   rÞ   Úrettyr  ri   r„  Úll_shaper  r  Úshape_ary_tyÚ	shape_aryÚshape_itemsizer›   r~  r€  r�  ÚfailrÔ   r“  rý   s                          rE   Úarray_reshaper–  ^  s[  € à�H‰H�Q‰K€EØ�O‰O€Eà�h‰h�q‰k€GØ�‰G€Eà×$Ñ$¤U§Z¡ZÓ0€GÜ�|Š|˜G§]¡]Ó3€Hä
�UÔ
˜G¨d°1©gÓ
6€Cô ×"Ò" 7Ó5€HØ‡M�M�%Ô"ô —;’; W§]¡]¸À3ÑG€LÜ˜<Ô(¨Ó:€IØ×)Ñ)¬%¯*©*Ø*1×*@Ñ*@ÀÓ*IóK€Nä�9ØŸ™¨×2DÑ2DÓ2FÓGØ!×.Ñ.¬u¯z©z¸7¿=¹=ÓIÐJØ*Ð+Ø*Øò!ð �:‰:€Dð ×Ñ˜WÔ&=Ü#×-Ò-¬e¯j©jÜ.3¯k©k¸<óIà"×$7Ñ$7Ó$9Ð:ô<ð �M‰M€EÜ×$Ò$ WÓ7€Jä	  °5¸uØ!)¨:ó
7€Bà× Ñ   r¨2¯7©7°1«:Ó6€Dà	�‰˜Õ	Ø,ˆØ×Ñ×)Ñ)¨'Ô3FÈÈÔO÷ 
ô �UÔ
˜GÓ
-€CÜ�3ØŸ™Ø Ÿ™ hÓ/Ø"Ÿ<™<¨
Ó3ØŸL™LØŸ;™;ØŸ*™*ò&ð �-‰-‹/€CÜ˜W¨s¯©ÀÓDÐD÷ 
Õ	ús   È)%K#Ë#
K1c                 ó6   • [        XX#5      u  pE[        XXE5      $ rD  )r  r–  r<  s         rE   Úarray_reshape_varargr˜  Ÿ  s   € ä'¨¸#ÓDÑ€GÜ˜¨7Ó=Ð=rG   )rd  rI   c                 ó   • S nU$ )Nc                 ó$   • U R                  U5      $ rD  ©Úreshape)r9  r  s     rE   Únp_reshape_implÚ#np_reshape.<locals>.np_reshape_impl¨  s   € Ø—9‘9˜XÓ&Ð&rG   rv   )r9  r  r�  s      rE   Ú
np_reshaperŸ  ¦  s   € ò	'àÐrG   c                 ó   • S nU$ )Nc                 ó$   • U R                  U5      $ rD  r›  )r9  ri   s     rE   r�  rž  ®  s   € Ø—9‘9˜UÓ#Ð#rG   rv   )r9  ri   r�  s      rE   rŸ  rŸ  ¬  s   € ò	$àÐrG   c                 óZ  • [        U 5      (       d  Sn[        R                  " U5      e[        U[        R
                  5      (       a)  [        UR                  [        R                  5      (       d7  [        U[        R                  5      (       d  Sn[        R                  " U5      eS nU$ )Nú#The argument "a" must be array-likezBThe argument "new_shape" must be an integer or a tuple of integersc                 óN  • [         R                  " U 5      n [         R                  " U 5      n [        U[        5      (       a7  Sn[         R                  " U5       H  nX#-  nUS:  d  M  Sn[        U5      e   OUS:  a  Sn[        U5      eUnU R                  S:X  a/  [         R                  " U5      R                  U R                  5      $ U* U R                  -  * nU n[        US-
  5       H  n[         R                  " Xp45      nM     US U n[         R                  " Xq5      $ )NrI   r   z0All elements of `new_shape` must be non-negative)r¦  r§  ÚravelrŸ   rÂ   r¿   r›   ÚzerosÚastyperƒ   r:   Úconcatenaterœ  )	r9  Ú	new_shapeÚnew_sizeÚ
dim_lengthrÔ   Úmsg2Úrepeatsrý   rq   s	            rE   rê   Únumpy_resize.<locals>.implÃ  sû   € Ü�JŠJ�q‹MˆÜ�HŠH�Q‹Kˆä�i¤×'Ñ'ØˆHÜ Ÿjšj¨Ö3�
ØÑ&�Ø •>ØL�CÜ$ S›/Ð)ò	 4ð ˜1‹}ØI�Ü  Ó&Ð&Ø ˆHà�6‰6�Q‹;Ü—8’8˜IÓ&×-Ñ-¨a¯g©gÓ6Ð6à�I §¡Ñ'Ð(ˆØˆÜ�w ‘{Ö#ˆAÜ—.’. # Ó*ŠCñ $à�)�8ˆnˆä�zŠz˜#Ó)Ð)rG   )r   r	   rì   rŸ   r   r°  rƒ   r¡   )r9  r©  rÔ   rê   s       rE   Únumpy_resizer¯  ³  s€   € ô ˜A×ÑØ3ˆÜ× Ò  Ó%Ð%ä˜	¤5§>¡>×2Ñ2ä˜	Ÿ™¬¯©×7Ñ7ä�y¤%§-¡-×0Ñ0ð%ˆä× Ò  Ó%Ð%ò*ð8 €KrG   c                 ó@  • [        U 5      (       d  [        R                  " S5      e[        U5      (       d  [        R                  " S5      e[        U5      (       a  SS jnU$ [	        U[
        R                  5      (       d  [        R                  " S5      eSS jnU$ )Nz+The first argument "arr" must be array-likez/The second argument "values" must be array-likec                 óØ   • [         R                  " [         R                  " U 5      5      n [         R                  " [         R                  " U5      5      n[         R                  " X45      $ rD  )r¦  r¥  r§  r¨  ©r;  Úvaluesrä   s      rE   rê   Únp_append.<locals>.implí  s@   € Ü—(’(œ2Ÿ:š: c›?Ó+ˆCÜ—X’XœbŸjšj¨Ó0Ó1ˆFÜ—>’> 3 -Ó0Ð0rG   z,The third argument "axis" must be an integerc                 ó.   • [         R                  " X4US9$ ©N©rä   ©r¦  r¨  r²  s      rE   rê   r´  ÷  s   € Ü—>’> 3 -°dÑ;Ð;rG   rD  )r   r	   rì   r   rŸ   r   r¡   )r;  r³  rä   rê   s       rE   Ú	np_appendr¹  â  s’   € ô ˜C× Ñ Ü× Ò Ð!NÓOÐOä˜F×#Ñ#Ü× Ò ð ".ó /ð 	/ô �4×Ñô	1ð €Kô ˜$¤§¡×.Ñ.Ü×$Ò$ð &/ó 0ð 0ô	<à€KrG   zarray.ravelc                 ó¨   • S nS nUR                   S   R                  S:X  a  UnOUnU R                  XX#5      n[        XUR                  U5      nU$ )Nc                 ó8   • U R                  U R                  5      $ )zNo copy version)rœ  r›   ©r  s    rE   Ú
imp_nocopyÚarray_ravel.<locals>.imp_nocopyÿ  s   € à�{‰{˜3Ÿ8™8Ó$Ð$rG   c                 ó"   • U R                  5       $ )zCopy version)Úflattenr¼  s    rE   Úimp_copyÚarray_ravel.<locals>.imp_copy	  s   € à�{‰{‹}ÐrG   r   r­   )rñ   r-  r,  r"   ró   )r…   r?   r^   rñ   r½  rÁ  Úimprý   s           rE   Úarray_ravelrÄ  ü  sY   € ò%òð
 ‡x�x��{×Ñ˜SÓ Ø‰ð ˆà
×
"Ñ
" 7°Ó
;€CÜ
˜7¨S¯_©_¸cÓ
B€CØ€JrG   c                 ó,   • S nU R                  XX#5      $ )Nc                 ó"   • U R                  5       $ rD  )r¥  ©r9  s    rE   Únp_ravel_implÚnp_ravel.<locals>.np_ravel_impl	  s   € Ø�w‰w‹yÐrG   )r,  )r…   r?   r^   rñ   rÈ  s        rE   Únp_ravelrÊ  	  s   € òð ×#Ñ# G¸CÓFÐFrG   zarray.flattenc                 ó^   • S nU R                  XX#5      n[        XUR                  U5      nU$ )Nc                 óT   • U R                  5       R                  U R                  5      $ rD  )r†  rœ  r›   r¼  s    rE   rÃ  Úarray_flatten.<locals>.imp	  s   € Ø�x‰x‹z×!Ñ! #§(¡(Ó+Ð+rG   )r,  r"   ró   )r…   r?   r^   rñ   rÃ  rý   s         rE   Úarray_flattenrÎ  	  s2   € ò,ð ×
"Ñ
" 7°Ó
;€CÜ
˜7¨S¯_©_¸cÓ
B€CØ€JrG   c                 ó  • Uc  [         R                  " U 5      OUn[         R                  " XU5      u  pVn[         R                  " UR                  5       H&  nXX   n	Xh   n
Xx   n[        [        Xš5      U5      XH'   M(     U$ rD  )r¦  Ú
empty_likeÚbroadcast_arraysÚndindexri   ÚminrÉ  )r9  Úa_minÚa_maxrþ   r“  Úa_bÚa_min_bÚa_max_brõ   Úval_aÚ	val_a_minÚ	val_a_maxs               rE   Ú_np_clip_implrÜ  &	  su   € ð "™kŒ"�-Š-˜Ô
¨s€CÜ×/Ò/°¸%Ó@Ñ€C�'Ü—’˜CŸI™IÖ&ˆØ‘
ˆØ‘Nˆ	Ø‘Nˆ	Üœ˜UÓ.°	Ó:ˆ‹
ñ	 'ð €JrG   c                 óª   • [         R                  " U R                  5       H.  nX   nX   nU(       a  [        XV5      X4'   M!  [	        XV5      X4'   M0     U$ rD  )r¦  rÒ  ri   rÓ  rÉ  )r9  ÚbÚuse_minrþ   rõ   rÙ  Úval_bs          rE   Ú_np_clip_impl_nonerá  4	  sI   € ä—’˜AŸG™GÖ$ˆØ‘ˆØ‘ˆÞÜ˜UÓ*ˆC‹Jä˜UÓ*ˆC‹Jñ %ð €JrG   c                 ó  • [        U 5      (       d  [        R                  " S5      e[        U[        R
                  5      (       d&  [        U5      (       d  [        R                  " S5      e[        U[        R
                  5      (       d&  [        U5      (       d  [        R                  " S5      e[        U[        R                  5      (       d(  [        U5      (       d  Sn[        R                  " U5      eUS L =(       d    [        U[        R
                  5      nUS L =(       d    [        U[        R
                  5      nU(       a  U(       a  SS jnU$ [        U[        R                  5      n[        U[        R                  5      n	U(       a  U	(       a  SS jn
U
$ U(       a  U	(       d  U(       a  SS jnU$ SS jnU$ U(       d  U	(       a  U(       a  SS	 jnU$ SS
 jnU$ U(       a  SS jnU$ U(       a  SS jnU$ SS jnU$ )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                 ó   • [        S5      e)Nz&array_clip: must set either max or minré   ©r9  rÔ  rÕ  rþ   s       rE   Ú
np_clip_nnÚnp_clip.<locals>.np_clip_nnY	  s   € ÜÐEÓFÐFrG   c                 óÀ   • Uc  [         R                  " U 5      OUn[         R                  " U R                  5       H  nX   n[	        [        Xa5      U5      XE'   M      U$ rD  )r¦  rÐ  rÒ  ri   rÓ  rÉ  ©r9  rÔ  rÕ  rþ   r“  rõ   rÙ  s          rE   Ú
np_clip_ssÚnp_clip.<locals>.np_clip_ssb	  sP   € ð '*¡k”"—-’- Ô"°sˆCÜŸš A§G¡GÖ,�Ø™�Ü ¤ UÓ!2°EÓ:�“
ñ -ð ˆJrG   c                 ó¬   • Uc  [         R                  " U 5      OUn[         R                  " U R                  5       H  nX   n[	        Xa5      XE'   M     U$ rD  )r¦  rÐ  rÒ  ri   rÉ  rè  s          rE   Ú
np_clip_snÚnp_clip.<locals>.np_clip_snp	  óI   € ð +.©+”b—m’m AÔ&¸3�ÜŸZšZ¨¯©Ö0�EØ™H�EÜ!$ UÓ!2�C“Jñ 1ð �
rG   c                 óF   • [         R                  " X5      n[        XX#5      $ rD  ©r¦  Ú	full_likerÜ  )r9  rÔ  rÕ  rþ   Ú
a_min_fulls        rE   Ú
np_clip_saÚnp_clip.<locals>.np_clip_sa}	  s   € ô
  Ÿ\š\¨!Ó3�
Ü$ Q°EÓ?Ð?rG   c                 ó¬   • Uc  [         R                  " U 5      OUn[         R                  " U R                  5       H  nX   n[	        Xb5      XE'   M     U$ rD  )r¦  rÐ  rÒ  ri   rÓ  rè  s          rE   Ú
np_clip_nsÚnp_clip.<locals>.np_clip_nsˆ	  rî  rG   c                 óF   • [         R                  " X5      n[        XXC5      $ rD  rð  )r9  rÔ  rÕ  rþ   Ú
a_max_fulls        rE   Ú
np_clip_asÚnp_clip.<locals>.np_clip_as•	  s   € ô
  Ÿ\š\¨!Ó3�
Ü$ Q¨zÓ?Ð?rG   c                 ó‚   • Uc  [         R                  " U 5      OUn[         R                  " X5      u  pV[        XVSU5      $ )NT©r¦  rÐ  rÑ  rá  )r9  rÔ  rÕ  rþ   r“  rÖ  rØ  s          rE   Ú
np_clip_naÚnp_clip.<locals>.np_clip_na¡	  s7   € à*-©+”b—m’m AÔ&¸3�Ü!×2Ò2°1Ó<‘�Ü)¨#¸¸cÓBÐBrG   c                 ó‚   • Uc  [         R                  " U 5      OUn[         R                  " X5      u  pV[        XVSU5      $ )NFrý  )r9  rÔ  rÕ  rþ   r“  rÖ  r×  s          rE   Ú
np_clip_anÚnp_clip.<locals>.np_clip_an©	  s7   € à*-©+”b—m’m AÔ&¸3�Ü!×2Ò2°1Ó<‘�Ü)¨#¸¸sÓCÐCrG   c                 ó   • [        XX#5      $ rD  )rÜ  rä  s       rE   Ú
np_clip_aaÚnp_clip.<locals>.np_clip_aa±	  s   € ô % Q¨uÓ:Ð:rG   rD  )	r   r	   rì   rŸ   r   ÚNoneTyper    r   rÔ  )r9  rÔ  rÕ  rþ   rÔ   Úa_min_is_noneÚa_max_is_nonerå  Úa_min_is_scalarÚa_max_is_scalarré  rì  ró  rö  rú  rþ  r  r  s                     rE   Únp_clipr  @	  s¬  € ä˜A×ÑÜ× Ò Ð!FÓGÐGä�uœeŸn™n×-Ñ-Ü  ×'Ñ'Ü× Ò ð #4ó 6ð 	6ô �uœeŸn™n×-Ñ-Ü  ×'Ñ'Ü× Ò ð "4ó 5ð 	5ô �sœEŸK™K×(Ñ(¬K¸×,<Ñ,<ØEˆÜ× Ò  Ó%Ð%ð ˜T�M×F¤Z°´u·~±~Ó%F€MØ˜T�M×F¤Z°´u·~±~Ó%F€Mæžô	Gð Ðä  ¬¯©Ó5€OÜ  ¬¯©Ó5€Oæž?ô		ð ÐÞ	¦Þô	ð Ðô@ð ÐÞ¦Þô	ð Ðô@ð Ðö ôCð ÐÞôDð Ðô;ð ÐrG   Úclipc                 ó   • SS jnU$ )Nc                 ó0   • [         R                  " XX#5      $ rD  )r¦  r  rä  s       rE   rê   Úarray_clip.<locals>.impl¼	  s   € Ü�wŠw�q Ó,Ð,rG   ©NNNrv   )r9  rÔ  rÕ  rþ   rê   s        rE   Ú
array_clipr  º	  s   € ô-à€KrG   c           	      ó`  ^^^^• UR                   UR                   :X  d   eUR                  UR                  :X  d   e[        UR                  5      n[        S5      m[        S5      m[        S5      m[        R                  mUUUU4S jnU R                  [        R                  [        X5      5      nU R                  [        R                  [        X5      5      nU R                  [        R                  UR                   5      n	[        R                  " XR                  S5      SS5      n
[        R                  " UUR                  S5      SS5      n[        R                  " [        R                  SSS	9nU R                  U5      n[        R                  " UU R                  [        R                  UR                   5      /5      nU R                  U R                  [        R                  5      5      nU R                  [        R                  U5      n[        R                  " X/5      nU" X5      n[!        UU
UUUS
S9  U" X5      n[!        UUUUUS
S9  UR#                  5       nUR#                  5       nU	UUXxU R                  [        R                  U5      /n[%        [        R&                  [        R                  UU[        R                  [        R                  [        R                  5      nU R)                  XUU5      n[+        X45        [-        XUR.                  U5      nU$ )zï
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                 ó   >• UT	:X  a#  US   U:X  a	  T" T
5      nOUS   U:X  a  T" T5      nX4:w  a  UT	:X  d  U S:X  a  gUT
:X  a  U S-
  nOSnXC:  a  X4-  S:w  a  gX4-  nX==   U-  ss'   XBU'   gXC:”  a  X   U-  nX„-  S:w  a  gX„-  X'   XBU'   g g)NrJ  r   FrI   Trv   )r„  rp   r³   Úold_itemsizeÚnew_itemsizer-  rq   ÚnewdimÚ
bytelengthÚ
any_layoutÚc_layoutÚf_layoutÚint8s            €€€€rE   rÃ  Ú_change_dtype.<locals>.impÔ	  sÛ   ø€ ð �ZÓà�r‰{˜lÓ*á˜h›‘à˜‘˜|Ó+á˜h›�àÓ'¨V°zÓ-AÀRÈ1ÃWØà�XÓØ�Q‘‰AàˆAàÓ&ð Ñ+°Ó1Øà!Ñ1ˆFØ‹G�vÑ‹GØ%�A‰Jð" ð Ó(ð ™ <Ñ/ˆJØÑ)¨aÓ/Øà Ñ0ˆD‰GØ%�A‰Jð ð àrG   ri   r   r³   rI   r(  Nr)  )rt   r-  Úordr   r  rÆ   r–   r‡   r
   rl   rk   r    r€   rn   r„   r‚   rÜ   rù   r%   Úbooleanr,  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_aryri   r³   rñ   r^   rý   r  r  r  r  s                           @@@@rE   Ú_change_dtyper+  Á	  s­  û€ ð �:‰:˜Ÿ™Ó#Ð#Ð#Ø�<‰<˜5Ÿ<™<Ó'Ð'Ð'ä�U—\‘\Ó"€JÜ�S“€JÜ�3‹x€HÜ�3‹x€Hä�:‰:€D÷.ð .ð` ×'Ñ'¬¯
©
Ü(4°WÓ(DóF€Là×'Ñ'¬¯
©
Ü(4°WÓ(DóF€Lð 
×	Ñ	œeŸj™j¨%¯*©*Ó	5€BÜ×%Ò% g×/CÑ/CÀGÓ/LØ&'¨ó,€Jä×'Ò'¨Ø(+×(<Ñ(<¸YÓ(GÈÈAóO€Lô  %Ÿ{š{´·±À!ÈCÑPÐØ×ÑÐ 8Ó9€Fä×'Ò'¨Ø)0×)=Ñ)=¼e¿j¹jØ>C¿j¹jó*Jð )KóL€Nð ×(Ñ(¨×)>Ñ)>¼u¿z¹zÓ)JÓK€KØ×&Ñ&¤u§z¡z°;Ó?€KÜ×)Ò)¨'°=ÓAÐá�wÓ(€Iä�9Ø"Ø'Ø+Ø'Øò!ñ ˜Ó*€KÜ�;Ø$Ø'Ø+Ø'Øò!ð ×ÑÓ!€EØ×#Ñ#Ó%€GØ��w Ø× Ñ ¤§¡¨ZÓ8ð:€Dô ”E—M‘MÜ—J‘JØ,Ø,Ü—J‘JÜ—J‘JÜ—J‘Jó€Cð ×
"Ñ
" 7°°dÓ
;€CÜ�eÔ!Ü
˜G¨c¯o©o¸sÓ
C€CØ€JrG   c                 óX   • [        U 5      (       d  [        R                  " S5      eS nU$ )Nz+The argument to np.shape must be array-likec                 óB   • [         R                  " U 5      R                  $ rD  )r¦  r§  ri   rÇ  s    rE   rê   Únp_shape.<locals>.implD
  s   € Ü�zŠz˜!‹}×"Ñ"Ð"rG   ©r   r	   rì   ©r9  rê   s     rE   Únp_shaper1  ?
  s)   € ä˜A×ÑÜ× Ò Ð!NÓOÐOò#à€KrG   c                 óX   • [        U 5      (       d  [        R                  " S5      eS nU$ )Nz*The argument to np.size must be array-likec                 óB   • [         R                  " U 5      R                  $ rD  )r¦  r§  r›   rÇ  s    rE   rê   Únp_size.<locals>.implN
  s   € Ü�zŠz˜!‹}×!Ñ!Ð!rG   r/  r0  s     rE   Únp_sizer5  I
  s)   € ä˜A×ÑÜ× Ò Ð!MÓNÐNò"à€KrG   c                 ó   • S nU$ )Nc                 ó<  • S n[         R                  " U R                  5       5      n[        US S 5      n[	        USS  5       VVs/ s H/  u  pEX$   U:w  d  M  U" X$   5      (       a  U" U5      (       a  M-  UPM1     nnn[         R
                  " X6-   5      $ s  snnf )Nc                 ó   • X :X  + $ rD  rv   )r~  s    rE   ÚisnanÚ0np_unique.<locals>.np_unique_impl.<locals>.isnanX
  s
   € à’<ÐrG   rI   )r¦  Úsortr¥  rÃ   rÄ  rÎ   )Úarr9  rÞ  Úheadrq   r~  Útails          rE   Únp_unique_implÚ!np_unique.<locals>.np_unique_implW
  s�   € ò	 ô �GŠG�B—H‘H“JÓˆÜ�A�b�q�E‹{ˆä# A a b EÔ*ô
Ú*‘$�!Ø‰t�q‰yó Ù"'¨©§+¡+±%¸·(÷ Ñ*ð 	ñ 
ô �xŠx˜™Ó$Ð$ùó	
s   ÁBÁBÁ7Brv   )r<  r?  s     rE   Ú	np_uniquerA  U
  s   € ò
%ð ÐrG   c                 óì  • S n[        U [        R                  [        R                  [        R                  [        R
                  [        R                  45      (       a•  [        U[        R                  5      (       a  [        $ [        U[        R                  [        R                  45      (       a+  [        UR                  [        R                  5      (       a  U$ [        R                  " S5      eg )Nc                 óF  • [         R                  " U[         R                  S9nUR                  S   S:X  a  [	        XS   5      $ [         R
                  " US:  5      (       a  [        S5      e[         R                  " U 5      nUR                  5       nUR                  S   nUR                  UR                  :w  a  [        S5      e[         R                  " [         R                  " U5      UR                  S9nSn[        U5       H  nXH   XgXrU   -   & XrU   -  nM     U$ )N©rƒ   r   rI   r¸  z(operands could not be broadcast together)r¦  r§  rö  ri   Únp_repeat_impl_repeats_scalerrK  r¿   r¥  Úemptyr  rƒ   r:   )	r9  r­  Úrepeats_arrayÚasaÚaravelÚnÚ	to_returnÚposrq   s	            rE   Ú!np_repeat_impl_repeats_array_likeÚ4np_repeat.<locals>.np_repeat_impl_repeats_array_likej
  sù   € äŸ
š
 7´"·(±(Ñ;ˆà×Ñ˜qÑ! QÓ&Ü0°À!Ñ4DÓEÐEÜ�6Š6�- !Ñ#×$Ñ$ÜÐBÓCÐCÜ�jŠj˜‹mˆØ—‘“ˆØ�L‰L˜‰OˆØ�<‰<˜=×.Ñ.Ó.ÜØ:ó<ð <ä—H’HœRŸVšV MÓ2¸#¿)¹)ÑDˆ	ØˆÜ�q–ˆAØ6<±iˆI˜C°Ñ"2Ñ2Ð3Ø Ñ#Ñ#ŠCñ ð ÐrG   zIThe repeats argument must be an integer or an array-like of integer dtype)rŸ   r   r    ÚListrQ  rÔ  r  r¡   rE  rƒ   r	   rì   )r9  r­  rM  s      rE   Ú	np_repeatrP  e
  sª   € ò
ô, �!”e—k‘kÜ—j‘jÜ—o‘oÜ—l‘lÜ—m‘mð	÷ ñ ô �gœuŸ}™}×-Ñ-Ü0Ð0Ü˜¤%§+¡+¬u¯z©zÐ!:×;Ñ;Ü˜'Ÿ-™-¬¯©×7Ñ7Ø8Ð8ä× Ò ð0ó1ð 	1ðrG   c                 ó˜  • US:  a  [        S5      e[        R                  " U 5      nUR                  5       nUR                  S   nUS:X  a  [        R
                  " SUR                  S9$ US:X  a  [        R                  " U5      $ [        R
                  " XA-  UR                  S9n[        U5       H  nX6   XVU-  US-   U-  & M     U$ )Nr   r¸  rD  rI   )	r¿   r¦  r§  r¥  ri   rF  rƒ   r†  r:   )r9  r­  rH  rI  rJ  rK  rq   s          rE   rE  rE  ’
  s®   € à�ƒ{ÜÐ>Ó?Ð?Ü
�*Š*�Q‹-€CØ�Y‰Y‹[€FØ�‰�Q‰€AØ�!ƒ|Ü�xŠx˜ §¡Ñ+Ð+Ø	�A‹Ü�wŠw�v‹Ðä—H’H˜Q™[°·	±	Ñ:ˆ	Ü�q–ˆAØ9?¹ˆI˜'‘k Q¨¡U¨gÑ$5Ò6ñ àÐrG   Úrepeatc                 ó   • S nU$ )Nc                 ó.   • [         R                  " X5      $ rD  )r¦  rR  )r9  r­  s     rE   Úarray_repeat_implÚ'array_repeat.<locals>.array_repeat_impl¦
  s   € Ü�yŠy˜Ó$Ð$rG   rv   )r9  r­  rU  s      rE   Úarray_repeatrW  ¤
  s   € ò%ð ÐrG   c                 ó:   • [         R                  " U5      nS nX#4$ )z"Computes the itemsize of the dtypec                 ó¶   • U R                  UR                  S   R                  5      nU R                  UR                  5      nU" U R	                  U5      5      $ rè   )r‚   rñ   rƒ   ró   r„   )Úcgctxr?   r^   Úllargsr†   Úllintps         rE   r�  Ú%_intrin_get_itemsize.<locals>.codegen±
  sJ   € Ø×"Ñ" 3§8¡8¨A¡;×#4Ñ#4Ó5ˆØ×$Ñ$ S§_¡_Ó5ˆÙ�e×*Ñ*¨4Ó0Ó1Ð1rG   )r   r–   )Útyctxrƒ   r^   r�  s       rE   Ú_intrin_get_itemsizer_  ¬
  s!   € ô �*Š*�UÓ
€Cò2ð ˆ<ÐrG   c                 ó   • g rD  rv   )r9  rƒ   s     rE   Ú_compatible_viewra  ¸
  ó   € ØrG   c                 ó   • S nU$ )zDDetermines if the array and dtype are compatible for forming a view.c                 ó   • [        U5      nX R                  :w  aô  U R                  S:X  a  Sn[        U5      e U R                  S-
  nU R                  U   S:g  nU R
                  S:g  nU R                  U   U R                  :g  nU(       a  U(       a  U(       a  Sn[        U5      eX R                  :  a'  US:X  d  U R                  U-  S:w  a  Sn	[        U	5      eg U R                  U   U R                  -  n
X¢-  S:w  a  Sn[        U5      eg g )Nr   zOChanging the dtype of a 0d array is only supported if the itemsize is unchangedrI   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.)r_  r´   rt   r¿   ri   r›   r³   )r9  rƒ   Ú
dtype_sizeÚmsg1rä   Úp1Úp2Úp3r¬  Úmsg3r  Úmsg4s               rE   rê   Ú ol_compatible_view.<locals>.implÂ
  s  € Ü)¨%Ó0ˆ
ØŸ™Ó#à�v‰v˜‹{ð7�ä  Ó&Ð&ð ð —6‘6˜A‘:ˆDØ—‘˜‘ !Ñ#ˆBØ—‘˜1‘ˆBØ—‘˜4‘ A§J¡JÑ.ˆBÞ–ržbð2�ä  Ó&Ð&àŸJ™JÓ&Ø “? a§j¡j°:Ñ&=ÀÓ&BðI�Dä$ TÓ*Ð*ð 'Cð
 Ÿ™ ™¨¯©Ñ3�ØÑ&¨!Ó+ð1�Dô % TÓ*Ð*ð	 ,ð9 $rG   rv   ©r9  rƒ   rê   s      rE   Úol_compatible_viewrn  ¼
  s   € ò"+ðF €KrG   z
array.viewc                 ó˜  • UR                   S   nUR                  n[        U5      " XUS   5      n[        U5      " X5      n[        UR                  R
                  5      n[        U5       HN  n	[        Xi5      n
U	S:X  a.  UR                  R                  nUR                  X«5      Ul        MB  [        XyU
5        MP     [        S:¼  aZ  U R                  nUR                  [        5      nUR!                  U/ UR                   Q70 5      nU R#                  XÞ5      nU" X5        [%        XXEU5      nUR'                  SU[)        UR                  S5      5      nUR+                  U5         SnU R,                  R/                  U[0        U45        S S S 5        UR3                  5       n[5        XUR                  U5      $ ! , (       d  f       N5= f)Nr   r¢   )rI   é   r  z"new type not compatible with array)rñ   ró   r€   r¼   rº   r½   ÚsortedÚgetattrr¢   r;   rc  rÍ   r   rô  rõ  ra  r÷  rT   r+  r  r   r  r`  ra  r¿   rù   r!   )r…   r?   r^   rñ   rÞ   r�  r  r“  ÚfieldsrÚ   r‘   rZ  r^  rù  Ú_compatible_view_sigrê   r�  r•  rÔ   rý   s                       rE   Ú
array_viewru  è
  sx  € à�H‰H�Q‰K€EØ�O‰O€Eä
�UÔ
˜G¨d°1©gÓ
6€CÜ
�UÔ
˜GÓ
-€Cä�—‘×'Ñ'Ó(€FÜ�FŽ^ˆÜ�c‹oˆØ�‹;Ø—H‘H—M‘MˆEØ—‘ sÓ2ˆCŽHä�C˜CÖ ñ ô ˜Óð ×&Ñ&ˆØ×'Ñ'Ô(8Ó9ˆØ#×1Ñ1°%¸¸3¿8¹8¹ÀrÓJÐØ×#Ñ# DÓ?ˆÙˆWÔä	�w¨°sÓ	;€BØ× Ñ   r¬8°B·G±G¸QÓ+?Ó@€Dà	�‰˜Õ	Ø2ˆØ×Ñ×)Ñ)¨'´:À¸vÔF÷ 
ð �-‰-‹/€CÜ˜W¨s¯©ÀÓDÐD÷ 
Õ	ús   Å'%F;Æ;
G	rƒ   c                 ó:   • U R                  5       n[        XX$5      $ rD  )rf  r#   ©r…   r?   r´  r  rý   s        rE   Úarray_dtyperx    s   € à
×
!Ñ
!Ó
#€CÜ˜g°Ó9Ð9rG   ri   c                 óZ   • [        U5      nU" XU5      nUR                  n[        XX&5      $ rD  )r€   ri   r#   ©r…   r?   r´  r  r�   rÎ   rý   s          rE   Úarray_shaper{    s/   € ô ˜‹o€GÙ�G eÓ,€EØ
�+‰+€CÜ˜g°Ó9Ð9rG   r³   c                 óZ   • [        U5      nU" XU5      nUR                  n[        XX&5      $ rD  )r€   r³   r#   rz  s          rE   Úarray_stridesr}  "  s/   € ô ˜‹o€GÙ�G eÓ,€EØ
�-‰-€CÜ˜g°Ó9Ð9rG   rt   c                 ón   • U R                  [        R                  UR                  5      n[	        XX$5      $ rD  )rÆ   r   r–   rt   r#   rw  s        rE   Ú
array_ndimr  +  s+   € ð ×
Ñ
œuŸz™z¨3¯8©8Ó
4€CÜ˜g°Ó9Ð9rG   r›   c                 óZ   • [        U5      nU" XU5      nUR                  n[        XX&5      $ rD  )r€   r¹   r#   rz  s          rE   Ú
array_sizer�  2  s-   € ä˜‹o€GÙ�G eÓ,€EØ
�,‰,€CÜ˜g°Ó9Ð9rG   r´   c                 óZ   • [        U5      nU" XU5      nUR                  n[        XX&5      $ rD  )r€   r´   r#   rz  s          rE   Úarray_itemsizerƒ  :  s/   € ô ˜‹o€GÙ�G eÓ,€EØ
�.‰.€CÜ˜g°Ó9Ð9rG   Únbytesc                 óŽ   • [        U5      nU" XU5      nUR                  UR                  UR                  5      n[	        XX&5      $ )z
nbytes = size * itemsize
)r€   rÉ   r¹   r´   r#   rz  s          rE   Úarray_nbytesr†  C  s>   € ô ˜‹o€GÙ�G eÓ,€EØ
�+‰+�e—l‘l E§N¡NÓ
3€CÜ˜g°Ó9Ð9rG   Ú
contiguousc                 ón   • U R                  [        R                  UR                  5      n[	        XX$5      $ rD  )rÆ   r   r  Ú	is_contigr#   rw  s        rE   Úarray_contiguousrŠ  O  s)   € à
×
Ñ
œuŸ}™}¨c¯m©mÓ
<€CÜ˜g°Ó9Ð9rG   Úc_contiguousc                 ón   • U R                  [        R                  UR                  5      n[	        XX$5      $ rD  )rÆ   r   r  Úis_c_contigr#   rw  s        rE   Úarray_c_contiguousrŽ  U  ó)   € à
×
Ñ
œuŸ}™}¨c¯o©oÓ
>€CÜ˜g°Ó9Ð9rG   Úf_contiguousc                 ón   • U R                  [        R                  UR                  5      n[	        XX$5      $ rD  )rÆ   r   r  Úis_f_contigr#   rw  s        rE   Úarray_f_contiguousr“  [  r�  rG   rŒ  c                 óx   • U R                  [        R                  UR                  (       + 5      n[	        XX$5      $ rD  )rÆ   r   r  Úmutabler#   rw  s        rE   Úarray_readonlyr–  a  s+   € à
×
Ñ
œuŸ}™}°#·+±+¬oÓ
>€CÜ˜g°Ó9Ð9rG   Úctypesc                 óô   • [        U5      nU" XU5      n[        R                  " U5      nU R                  X5      nUR                  Ul        UR
                  Ul        UR                  5       n[        XXh5      $ rD  )r€   r   ÚArrayCTypesrò   r¢   r²   rù   r!   )	r…   r?   r´  r  r�   rÎ   ÚactÚctinforý   s	            rE   Úarray_ctypesrœ  i  sh   € ä˜‹o€GÙ�G eÓ,€Eä
×
Ò
˜CÓ
 €CØ× Ñ  Ó.€FØ—*‘*€F„KØ—]‘]€F„NØ
×
Ñ
Ó
€CÜ˜W¨sÓ8Ð8rG   r¢   c                 ó®   • U R                  XUS9nUR                  nUR                  XPR                  [        R
                  5      5      n[        XX%5      $ ©Nr  )rò   r¢   r@  rÀ   r   r–   r#   )r…   r?   r´  r  r›  rý   s         rE   Úarray_ctypes_datarŸ  v  sL   € à× Ñ  °UÐ Ð;€FØ
�+‰+€Cà
×
Ñ
˜3× 6Ñ 6´u·z±zÓ BÓ
C€CÜ˜g°Ó9Ð9rG   c                 ó’   • U R                  XUS9nUR                  nUR                  X`R                  U5      5      n[	        XX65      $ rž  )rò   r¢   rc  rÀ   r#   )r…   r?   ÚfromtyÚtotyr‘   r›  rý   s          rE   Úarray_ctypes_to_pointerr£    sH   € ð × Ñ  ¸Ð Ð<€FØ
�+‰+€CØ
�/‰/˜#×5Ñ5°dÓ;Ó
<€CÜ˜g°Ó:Ð:rG   c                 ó¾  • [        U5      " XUS9n[        R                  " [        R                  UR                  5      nUR                  UR                  UR                  5      5      n[        [        R                  XU[        R                  5      nUR                  UR                  UR                  [        R                  U5      /nUR                  X UU5      n	U	$ )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  )r€   r   r°  r–   rt   r„   rÀ   rƒ   r%   Úbool_ri   r³   rÆ   r,  )
Úcheckerr…   r?   rÞ   r  Útup_intpr´   Ú	check_sigÚ
check_argsr‰  s
             rE   Ú_call_contiguous_checkrª  ˆ  s§   € ô �UÔ
˜G°CÑ
8€CÜ�~Š~œeŸj™j¨%¯*©*Ó5€HØ×%Ñ% g×&<Ñ&<¸U¿[¹[Ó&IÓJ€HÜœ%Ÿ+™+ x¼5¿:¹:ÓF€IØ—)‘)˜SŸ[™[Ø×&Ñ&¤u§z¡z°8Ó<ð>€Jà×(Ñ(¨¸9Ø)3ó5€IàÐrG   r¸   c                 óÊ   • U R                  U[        R                  " U5      5      nX4l        UR	                  5       nU R
                  R                  XU5        [        XX%5      $ rD  )rò   r   Ú
ArrayFlagsrµ   rù   r÷   rø   r"   )r…   r?   r´  r  Úflagsobjrý   s         rE   Úarray_flagsr®  ¢  sS   € à×"Ñ" 7¬E×,<Ò,<¸SÓ,AÓB€HØ„OØ
×
Ñ
Ó
€CØ‡K�K×Ñ�w UÔ+Ü˜G¨cÓ7Ð7rG   c                 ó.  • UR                   R                  S:w  a7  U R                  XUS9n[        [        XUR                   UR
                  5      nO9UR                   R                  S:H  nU R                  [        R                  U5      n[        XX%5      $ )Nr­   r  )
re   r-  rò   rª  r   rµ   rÆ   r   r  r#   )r…   r?   r´  r  r­  rý   r‘   s          rE   Úarray_flags_c_contiguousr°  «  s€   € ð ‡~�~×Ñ Ó#à×&Ñ& w¸5Ð&ÐAˆÜ$¤]°GØ%(§^¡^°X·_±_óF‰ð �n‰n×#Ñ# sÑ*ˆØ×"Ñ"¤5§=¡=°#Ó6ˆÜ˜g°Ó9Ð9rG   c                 óp  • UR                   R                  S:w  a7  U R                  XUS9n[        [        XUR                   UR
                  5      nOZUR                   R                  nUR                   R                  S:”  a  US:H  OUS;   nU R                  [        R                  U5      n[        XX%5      $ )Nr  r  rI   r9  )re   r-  rò   rª  r   rµ   rt   rÆ   r   r  r#   )r…   r?   r´  r  r­  rý   r-  r‘   s           rE   Úarray_flags_f_contiguousr²  ¹  s™   € à
‡~�~×Ñ Ó#à×&Ñ& w¸5Ð&ÐAˆÜ$¤Z°Ø%(§^¡^°X·_±_óF‰ð —‘×&Ñ&ˆØ"Ÿ~™~×2Ñ2°QÓ6ˆf˜Šm¸FÀd¹NˆØ×"Ñ"¤5§=¡=°#Ó6ˆÜ˜g°Ó9Ð9rG   r^  c                 óø   • UR                   [        R                  ;   a  [        XX#SS9$ UR                   [        R                  ;   a  [        XX#5      $ [        SR                  [        R                   5      5      e)Nr^  ©Úattrzunsupported .real for {})	rƒ   r   Úcomplex_domainÚarray_complex_attrÚnumber_domainr!   rU   rË   r;   )r…   r?   r´  r  s       rE   Úarray_real_partr¹  Ê  s]   € à
‡y�y”E×(Ñ(Ó(Ü! '°CÀVÑLÐLØ	�‰”e×)Ñ)Ó	)ä  °3Ó>Ð>ä!Ð"<×"CÑ"CÄDÇJÁJÓ"OÓPÐPrG   r`  c                 ó  • UR                   [        R                  ;   a  [        XX#SS9$ UR                   [        R                  ;   aŸ  [        UR                  SS9U5      n[        XXC/5      u  pV[        XXV5      n[        R                  " XR                  UR                  UR                  UR                  5      S5        [        XUR                   UR#                  5       5      $ [%        SR'                  [(        R                   5      5      e)Nr`  r´  Tr–  r   zunsupported .imag for {})rƒ   r   r¶  r·  r¸  r%   r†  Ú_parse_empty_like_argsr+  r
   Úmemsetr¢   rÉ   r´   r¹   r"   ró   rù   rU   rË   r;   )r…   r?   r´  r  r^   r‡  r  r  s           rE   Úarray_imag_partr½  Õ  sÒ   € à
‡y�y”E×(Ñ(Ó(Ü! '°CÀVÑLÐLØ	�‰”e×)Ñ)Ó	)ä˜Ÿ™¨$˜Ð/°Ó5ˆÜ0°À3ÈÓP‰ˆÜ˜W¨wÓ?ˆÜ�Š�w§¡¨'¯+©+°c·l±lØ69·j±jó+BØCDô	Fä °#·/±/Ø #§¡£ó1ð 	1ô "Ð"<×"CÑ"CÄDÇJÁJÓ"OÓPÐPrG   c                 óÚ  • US;  d  UR                   [        R                  ;  a  [        SR	                  U5      5      e[        U5      nU" XU5      nUR                   R                  nU R                  U R                  U5      5      nUR                  R                  U5      n	U R                  U5      R                  5       n
UR                  UR                  U
5      nUS:X  a-  UR                  U[         R"                  " S5      " S5      /5      nUR%                  USS9n[        U5      " X5      n['        X¹S9n[(        R*                  " XÖU5        [-        XXÍR/                  5       5      $ )	at  
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`  é    rI   r„  ©rƒ   r-  )r¢   r´   )rƒ   r   r¶  rU   rË   r€   Úunderlying_floatr„   r‚   r´   r;   rÀ   r+  rc  r¢   r.  r   ÚIntTyper†  rÅ   r
   Úcopy_structr!   rù   )r…   r?   r´  r  rµ  r�   rÎ   ÚfltyÚsizeof_fltyr´   Ú
llfltptrtyr  Úresulttyr  Úrepls                  rE   r·  r·  æ  s5  € ð8 Ð#Ó# s§y¡y¼×8LÑ8LÓ'LÜ!Ð"=×"DÑ"DÀTÓ"JÓKÐKä˜‹o€GÙ�G eÓ,€Eð �9‰9×%Ñ%€DØ×(Ñ(¨×)>Ñ)>¸tÓ)DÓE€KØ�~‰~×"Ñ" ;Ó/€Hð ×'Ñ'¨Ó-×8Ñ8Ó:€JØ�o‰o˜eŸj™j¨*Ó5€Gð ˆvƒ~Ø—+‘+˜g¬¯
ª
°2¬°qÓ(9Ð':Ó;ˆð �x‰x˜d¨3ˆxÐ/€HÜ˜Ô! 'Ó3€FÜ�WÑ0€DÜ×Ò˜ tÔ,Ü˜W¨x×9IÑ9IÓ9KÓLÐLrG   ÚconjÚ	conjugatec                 ó   • S nU$ )Nc                 ó.   • [         R                  " U 5      $ rD  )r¦  rÉ  ©r;  s    rE   rê   Úarray_conj.<locals>.impl   s   € Ü�wŠw�s‹|ÐrG   rv   ©r;  rê   s     rE   Ú
array_conjrÐ    s   € òà€KrG   c                 ó"   • U R                  5       $ rD  )rf  )r…   r?   ÚdtypetyÚdtypevals       rE   Ú
dtype_typerÔ  (  s   € à×"Ñ"Ó$Ð$rG   r;   ÚkindÚstatic_getitemc                 óÎ   • UR                   n[        U[        R                  5      (       a#  U R	                  U5      " S5      n[        XXE5      $ Sn[        R                  " U5      e)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ñ   r�  rý   rÔ   s          rE   Ústatic_getitem_number_clazzrÙ  5  s[   € ð �O‰O€EÜ�%œŸ™×%Ñ%ð ×$Ñ$ UÔ+¨DÓ1ˆÜ! '°EÓ?Ð?ðLˆä×"Ò" 3Ó'Ð'rG   c           
      óò  • [        U5      nU" XU5      nUR                  n[        U[        R                  5      (       d  [        SU< SU< S35      eUR                  U5      nUR                  U5      n	[        U[        R                  5      (       a3  UR                  UR                  UR                  UR                  -   SS9n
OUR                  USS9n
[        U
5      nU" X5      nU R                  [        R                  U	5      n[        R                  " XR                  XÜR                  R                   S9n[        U[        R                  5      (       aü  [        R"                  " XR$                  UR                  5      nXøR$                   Vs/ s H#  nU R                  [        R                  U5      PM%     sn-  n[        R"                  " XR&                  UR                  5      nUUR&                   Vs/ s H#  nU R                  [        R                  U5      PM%     sn-  nU R)                  U R+                  UR                  5      5      nO8UR$                  nUR&                  nU R)                  U R+                  U5      5      n[-        UUUUU R                  [        R                  U5      UR.                  UR0                  S9  UR3                  5       n[5        XU
U5      $ s  snf s  snf )	ze
Generic getattr() implementation for record arrays: fetch the given
record member, i.e. a subarray.
z
attribute z of z not definedr„  r(  rÀ  )ró   r:  )r€   rƒ   rŸ   r   ÚRecordrU   Útypeofr  ÚNestedArrayr†  rt   rÆ   r–   r
   r  r¢   r;   rÇ   ri   r³   r„   r‚   rÜ   r²   rµ   rù   r!   )r…   r?   r´  r  rµ  r�   rÎ   Úrectyperƒ   r  ÚrestyÚrarytyÚraryÚconstoffsetÚ
newdataptrri   rq   r³   Údatasizerý   s                       rE   Úarray_record_getattrrå  M  sS  € ô ˜‹o€GÙ�G eÓ,€Eà�i‰i€GÜ�gœuŸ|™|×,Ñ,Ý!Û%)«3ð#0ó 1ð 	1à�N‰N˜4Ó €EØ�^‰^˜DÓ!€Fä�%œ×*Ñ*×+Ñ+Ø—‘Ø—+‘+ C§H¡H¨u¯z©zÑ$9À#ð ð G‰ð —‘˜u¨S�Ð1ˆä˜Ó€Fá�'Ó#€Dà×&Ñ&¤u§z¡z°6Ó:€Kä×$Ò$Ø—‘˜[·y±y·~±~ñ€Jô �%œ×*Ñ*×+Ñ+ä×$Ò$ W¯k©k¸3¿8¹8ÓDˆØ¿{º{ÓKº{¸!�'×&Ñ&¤u§z¡z°1Ö5¹{ÑKÑKˆä×&Ò& w·±¸s¿x¹xÓHˆØÀÇÂÓOÂ¸A�G×(Ñ(¬¯©°QÖ7ÁÑOÑOˆà×)Ñ)¨'×*?Ñ*?ÀÇÁÓ*LÓM‰ð —‘ˆØ—-‘-ˆØ×)Ñ)¨'×*?Ñ*?ÀÓ*FÓGˆÜ�4Ø"ØØ"Ø#×0Ñ0´·±¸XÓFØ Ÿ=™=ØŸ,™,ò(ð �.‰.Ó
€CÜ˜W¨u°cÓ:Ð:ùò' Lùò Ps   Æ*K/Ç?*K4c                 ó~   • US   n[        U[        5      (       d  [        e[        XUR                  S   US   U5      $ rÌ  )rŸ   rì  rU   rå  rñ   )r…   r?   r^   rñ   rõ   s        rE   Úarray_record_getitemrç  …  s;   € à�‰G€EÜ�eœS×!Ñ!ä!Ð!Ü °#·(±(¸1±+¸tÀA¹wÈÓNÐNrG   c           
      óØ  • U R                  X$5        UR                  U5      nUR                  U5      n[        U[        R
                  5      (       Ga3  [        U5      nU" X5      nUR                  n	UR                   V
s/ s H"  o R                  [        R                  U
5      PM$     nn
UR                   V
s/ s H"  o R                  [        R                  U
5      PM$     nn
[        R                  " XUU R                  U	5      5      n[        UU[        R                   " X5      [        R                   " X5      U R                  [        R                  UR"                  5      SSS9  UR%                  5       n['        XX.5      $ [        R                  " XUU R                  U5      5      nUR(                  (       a  SOSnU R+                  XUU5      n['        XX.5      $ s  sn
f s  sn
f )zL
Generic getattr() implementation for records: get the given record member.
Nr:  rI   )Úsentry_record_alignmentr  rÜ  rŸ   r   rÝ  r€   rƒ   ri   rÆ   r–   r³   r
   Úget_record_memberr‚   rÜ   rn   r›   rù   r!   r‹   rŒ   )r…   r?   r´  r  rµ  r  ÚelemtyrÞ   r  rƒ   r®   r  r€  Únewdatarý   ÚdptrrŠ   s                    rE   Úrecord_getattrrî  Ž  s©  € ð
 ×#Ñ# CÔ.Ø�Z‰Z˜Ó€FØ�Z‰Z˜Ó€Fä�&œ%×+Ñ+×,Ò,ô ˜6Ó"ˆÙ�GÓ%ˆØ—‘ˆà—L’Ló"Ú ð =>×(Ñ(¬¯©°QÖ7Ù ð 	ð "ð —n’nó&Ú$ð ?@×*Ñ*¬5¯:©:°qÖ9Ù$ð 	ð &ä×+Ò+¨G¸FØ,3×,AÑ,AÀ%Ó,HóJˆäØØÜ×$Ò$ WÓ7Ü×&Ò& wÓ;Ø×)Ñ)¬%¯*©*°f·k±kÓBØØò	
ð �m‰m‹oˆÜ  °3Ó<Ð<ä×(Ò(¨¸Ø)0×)>Ñ)>¸vÓ)FóHˆàŸŸ‘¨ˆØ×"Ñ" 7°D¸%Ó@ˆÜ  °3Ó<Ð<ùò-"ùò&s   Â)G"Â:)G'c           	      ó¸  • UR                   u  pVUu  pxU R                  XT5        UR                  U5      n	UR                  U5      n
[	        U
[
        R                  5      (       a—  [        R                  " U5      " XUS   S9nUR                  n[        R                  " XU	UR                  R                  5      n[        R                  " XUU R                  [
        R                  U
R                   5      5        g[        R                  " XU	U R#                  U
5      5      nU R%                  XXj5      nUR&                  (       a  SOSnU R)                  XXŽUS9  g)zL
Generic setattr() implementation for records: set the given record member.
rI   r  Nr‰   )rñ   ré  r  rÜ  rŸ   r   rÝ  r
   r   r¢   rê  r;   ÚpointeeÚmemcpyrÆ   r–   r¹   r‚   r•   r‹   r�   )r…   r?   r^   rñ   rµ  r´  rT  rÞ  r‘   r  rë  Ú
val_structrj  r�  rí  rŠ   s                   rE   Úrecord_setattrró  ¶  s  € ð
 —‘�J€CØ�K€Fà×#Ñ# CÔ.Ø�Z‰Z˜Ó€FØ�Z‰Z˜Ó€Fä�&œ%×+Ñ+×,Ñ,ä×0Ò0°Ô7¸Ø>BÀ1¹gñGˆ
à�o‰oˆÜ×(Ò(¨¸&Ø),¯©×)9Ñ)9ó;ˆä�Š�w cØ×+Ñ+¬E¯J©J¸¿¹ÓFõ	Hô ×(Ò(¨¸&Ø)0×)>Ñ)>¸vÓ)FóHˆà�l‰l˜7¨Ó7ˆØŸŸ‘¨ˆØ×Ñ˜7¨C¸UÐÒCrG   c                 ó‚   • U R                  UR                  S   US   5      nU" XUR                  S   US   US   5      $ )ú+
Record.__getitem__ redirects to getattr()
r   rI   )Úget_getattrrñ   )r…   r?   r^   rñ   rê   s        rE   Úrecord_static_getitem_strr÷  Ô  sC   € ð
 ×Ñ˜sŸx™x¨™{¨D°©GÓ4€DÙ� #§(¡(¨1¡+¨t°A©w¸¸Q¹Ó@Ð@rG   c                 ó,  • UR                   S   R                  n[        UR                   S   R                  5      nU R	                  UR
                  XT   5      nU R                  UR                   S   U5      nU" XUR                   S   US   XT   5      $ )rõ  rI   r   )rñ   rí   rÃ   rs  Úinsert_const_stringr<   rö  )r…   r?   r^   rñ   rš   rs  Úll_fieldrê   s           rE   Úrecord_static_getitem_intrû  Ý  s€   € ð
 �(‰(�1‰+×
#Ñ
#€CÜ�#—(‘(˜1‘+×$Ñ$Ó%€FØ×*Ñ*¨7¯>©>¸6¹;ÓG€HØ×Ñ˜sŸx™x¨™{¨HÓ5€DÙ� #§(¡(¨1¡+¨t°A©w¸¹ÓDÐDrG   Ústatic_setitemc                 ó–   • UR                   u  pEnUu  pxn	[        UR                  XF5      n
U R                  XŠ5      nUc   eU" XU	45      $ )ú+
Record.__setitem__ redirects to setattr()
)rñ   r%   ró   Úget_setattr)r…   r?   r^   rñ   Úrectyr3  rT  Úrecrš   r‘   Úgetattr_sigrê   s               rE   Úrecord_static_setitem_strr  é  sU   € ð
 —h‘h�O€EˆeØ�M€CˆcÜ˜CŸO™O¨UÓ:€KØ×Ñ˜sÓ0€DØÑÐÐÙ�˜s˜Ó$Ð$rG   c                 óà   • UR                   u  pEnUu  pxn	[        UR                  XF5      n
[        UR                   S   R                  5      nU R                  X¸   U
5      nUc   eU" XU	45      $ )rþ  r   )rñ   r%   ró   rÃ   rs  rÿ  )r…   r?   r^   rñ   r   r3  rT  r  rš   r‘   r  rs  rê   s                rE   Úrecord_static_setitem_intr  ö  sq   € ð
 —h‘h�O€EˆeØ�M€CˆcÜ˜CŸO™O¨UÓ:€KÜ�#—(‘(˜1‘+×$Ñ$Ó%€FØ×Ñ˜v™{¨KÓ8€DØÑÐÐÙ�˜s˜Ó$Ð$rG   c                 ó&   • U R                  XU5      $ )z:
Create a constant array (mechanism is target-dependent).
)Úmake_constant_array)r…   r?   rG  Úpyvals       rE   Úconstant_arrayr	    s   € ð
 ×&Ñ& w°EÓ:Ð:rG   c                 óÖ   • [         R                  " [         R                  " S5      UR                  5      nU" [	        UR                  5       5      5      n[        R                  " X5      $ )z?
Create a record constant as a stack-allocated array of bytes.
é   )r   r*  rÂ  r„  Ú	bytearrayÚtobytesr
   rô   )r…   r?   rG  r  Últyr‘   s         rE   Úconstant_recordr    sF   € ô
 �,Š,”r—z’z !“} e§l¡lÓ
3€CÙ
Œi˜Ÿ™›Ó(Ó
)€CÜ×$Ò$ WÓ2Ð2rG   c                 ó~   • [         R                  " [        U5      [         R                  S9nU R	                  XU5      $ )zE
Create a constant array from bytes (mechanism is target-dependent).
rD  )r¦  rÎ   r  Úuint8r  )r…   r?   rG  r  Úbufs        rE   Úconstant_bytesr    s0   € ô
 �(Š(”9˜UÓ#¬2¯8©8Ñ
4€CØ×&Ñ& w°CÓ8Ð8rG   c                 ór   • UR                   u  pEXE:w  a  [        R                  $ S nU R                  XX#5      $ )Nc                 óÜ   • U R                   UR                   :H  =(       aM    U R                  UR                  :H  =(       a-    U R                  R                  UR                  R                  :H  $ rD  )ri   r³   r—  r¢   ©r9  rÞ  s     rE   Úarray_is_implÚarray_is.<locals>.array_is_impl,  sI   € Ø—‘˜1Ÿ7™7Ñ"÷ /Ø—	‘	˜QŸY™YÑ&÷/à—‘—‘ §¡§¡Ñ.ð	0rG   )rñ   r
   r  r,  )r…   r?   r^   rñ   ÚatyÚbtyr  s          rE   Úarray_isr  &  s8   € à�x‰x�H€CØ
ƒzÜ× Ñ Ð ò0ð
 ×#Ñ# G¸CÓFÐFrG   Ú__hash__c                 ó   • S $ )Nc                 ó   • g rD  rv   rÍ  s    rE   rÀ  Úol_array_hash.<locals>.<lambda>9  s   € �trG   rv   rÍ  s    rE   Úol_array_hashr   7  s   € áÐrG   c                 ó   • [        U S5      $ )ze
Return the Structure representation of the given *flatiterty* (an
instance of types.NumpyFlatType).
Úflat©Ú_make_flattening_iter_cls)Ú
flatitertys    rE   Úmake_array_flat_clsr&  ?  s   € ô
 % Z°Ó8Ð8rG   c                 ó   • [        U S5      $ )zj
Return the Structure representation of the given *nditerty* (an
instance of types.NumpyNdEnumerateType).
Úndenumerater#  ©Únditertys    rE   Úmake_array_ndenumerate_clsr+  G  s   € ô
 % X¨}Ó=Ð=rG   c                 ó  • U R                  [        R                  S5      nUR                  S5      n	Ub   UR	                  [
        R                  U5        [        [        U5      5       H¿  n
[
        R                  " XU
5      n[
        R                  " XR                  U5      5      nX:   nUR                  SXÍ5      n[
        R                  " X5         UR	                  XË5        Ub  U" U
5        UR                  U	5        S S S 5        UR	                  X‹5        Uc  M·  U" U
5        MÁ     Ub   UR	                  [
        R                  U5        UR                  U	5        UR!                  U	5        g ! , (       d  f       Nv= f)Nr   Úend_incrementr  )rÆ   r   r–   rˆ  r  r
   Ú
false_byter'  r:   rl   r  r@   r  Ú	if_likelyr™  Ú	true_byterš  )r…   r?   rt   ri   rª   Úend_flagÚloop_continueÚ
loop_breakrû   Úbbendrƒ  Úidxptrrš   rÈ   Ú	in_boundss                  rE   Ú_increment_indicesr7  O  s,  € à×Ñ¤§
¡
¨AÓ.€Dà×&Ñ& Ó7€EàÑØ�‰”g×(Ñ(¨(Ô3äœ˜d›Ö$ˆÜ×%Ò% g¸Ó<ˆÜ×%Ò% g¯|©|¸FÓ/CÓDˆà‘
ˆØ×'Ñ'¨¨SÓ8ˆ	Ü×Ò˜wÕ2à�M‰M˜#Ô&ØÑ(Ù˜cÔ"Ø�N‰N˜5Ô!÷ 3ð 	�‰�dÔ#ØÓ!Ù�sŽOñ %ð" ÑØ�‰”g×'Ñ'¨Ô2Ø‡N�N�5Ôà×Ñ˜EÕ"÷ 3Õ2ús   Ã.E2Å2
F 	c                 óŠ   • [         R                  " XR                  UR                  5      n[	        XUR                  XdU5        g rD  )r
   rÇ   ri   rt   r7  )r…   r?   r:  r;  rª   r1  ri   s          rE   Ú_increment_indices_arrayr9  p  s.   € ä× Ò  ¯)©)°U·Z±ZÓ@€EÜ�w¨¯©°UÀXÕNrG   c                 ó†  ^ ^^^^^^^	^
^• T R                   m
T R                  m[        T R                  5      m	T R                  (       a  T
OSm " S S[
        5      n " S SU5      m " U 4S jSU5      m " S S	U5      m " S
 SU5      m " S SU5      m " UUUUUUU	U
U U4
S jS[        R                  " T 5      5      nU$ )ze
Return the Structure representation of the given *nditerty* (an
instance of types.NumpyNdIterType).
rI   c                   óZ   • \ rS rSrSrS rS r\R                  S 5       r	S r
S rS rS	rg
)Ú$make_nditer_cls.<locals>.BaseSubIteri€  z6
Base class for sub-iterators of a nditer() instance.
c                 óF   • Xl         X l        X0l        X@l        XC-
  U l        g rD  )ÚnditerÚmember_nameÚ	start_dimÚend_dimrt   )r\   r>  r?  r@  rA  s        rE   r…  Ú-make_nditer_cls.<locals>.BaseSubIter.__init__…  s!   € Ø ŒKØ*ÔØ&ŒNØ"ŒLØÑ+ˆD�IrG   c                 óF   • [        U R                  U R                  U5        g rD  )rÍ   r>  r?  )r\   ro   s     rE   Úset_member_ptrÚ3make_nditer_cls.<locals>.BaseSubIter.set_member_ptrŒ  s   € Ü�D—K‘K ×!1Ñ!1°3Õ7rG   c                 óB   • [        U R                  U R                  5      $ rD  )rr  r>  r?  rk  s    rE   Ú
member_ptrÚ/make_nditer_cls.<locals>.BaseSubIter.member_ptr�  s   € ä˜4Ÿ;™;¨×(8Ñ(8Ó9Ð9rG   c                 ó   • g rD  rv   )r\   r…   r?   s      rE   Úinit_specificÚ2make_nditer_cls.<locals>.BaseSubIter.init_specific“  r  rG   c                 ó   • g rD  rv   ©r\   r…   r?   Úlogical_dims       rE   r2  Ú2make_nditer_cls.<locals>.BaseSubIter.loop_continue–  r  rG   c                 ó   • g rD  rv   rM  s       rE   r3  Ú/make_nditer_cls.<locals>.BaseSubIter.loop_break™  r  rG   )rA  r?  rt   r>  r@  N)rw   rx   ry   rz   r  r…  rD  ro  Úcached_propertyrG  rJ  r2  r3  r|   rv   rG   rE   ÚBaseSubIterr<  €  s:   † ñ	ò	,ò	8ð 
×	"Ñ	"ñ	:ó 
#ð	:ò	ò	õ	rG   rS  c                   ó0   • \ rS rSrSrS rS rS rS rSr	g)	Ú$make_nditer_cls.<locals>.FlatSubIteriœ  z‡
Sub-iterator walking a contiguous array in physical order, with
support for broadcasting (the index is reset on the outer dimension).
c                 óŽ   • UR                  [        R                  S5      nU R                  [        R
                  " X#5      5        g rè   )rÆ   r   r–   rD  r
   rô   )r\   r…   r?   rû   s       rE   rJ  Ú2make_nditer_cls.<locals>.FlatSubIter.init_specific¢  s1   € Ø×'Ñ'¬¯
©
°AÓ6ˆDØ×Ñ¤× 9Ò 9¸'Ó HÕIrG   c                 ór   • UR                  U R                  5      nUR                  UR                  U/5      $ rD  )r@   rG  r.  r¢   )r\   r…   r?   rª   r:  r;  rõ   s          rE   Úcompute_pointerÚ4make_nditer_cls.<locals>.FlatSubIter.compute_pointer¦  s+   € Ø—L‘L §¡Ó1ˆEØ—;‘;˜sŸx™x¨%¨Ó1Ð1rG   c                 óÂ   • X0R                   S-
  :X  aM  UR                  U R                  5      n[        R                  " X$5      nUR                  X@R                  5        g g rª  )rt   r@   rG  r
   r  r  )r\   r…   r?   rN  rõ   s        rE   r2  Ú2make_nditer_cls.<locals>.FlatSubIter.loop_continueª  sG   € ØŸi™i¨!™mÓ+àŸ™ T§_¡_Ó5�Ü×/Ò/°Ó?�Ø—‘˜e§_¡_Õ5ð	 ,rG   c                 óF  • US:X  a<  UR                  [        R                  S5      nUR                  X@R                  5        g X0R
                  S-
  :X  aM  UR                  U R                  5      n[        R                  " X%5      nUR                  XPR                  5        g g ró  )	rÆ   r   r–   r  rG  rt   r@   r
   r  )r\   r…   r?   rN  rû   rõ   s         rE   r3  Ú/make_nditer_cls.<locals>.FlatSubIter.loop_break±  su   € Ø˜aÓà×+Ñ+¬E¯J©J¸Ó:�Ø—‘˜d§O¡OÕ4Ø§	¡	¨A¡Ó-àŸ™ T§_¡_Ó5�Ü×/Ò/°Ó?�Ø—‘˜e§_¡_Õ5ð	 .rG   rv   N)
rw   rx   ry   rz   r  rJ  rY  r2  r3  r|   rv   rG   rE   ÚFlatSubIterrU  œ  s   † ñ	ò
	Jò	2ò	6õ		6rG   r_  c                   ó,   >• \ rS rSrSrU 4S jrS rSrg)Ú+make_nditer_cls.<locals>.TrivialFlatSubIteri¼  z`
Sub-iterator walking a contiguous array in physical order,
*without* support for broadcasting.
c                 ó,   >• TR                   (       a   eg rD  )Úneed_shaped_indexing)r\   r…   r?   r*  s      €rE   rJ  Ú9make_nditer_cls.<locals>.TrivialFlatSubIter.init_specificÂ  s   ø€ Ø×4×4Ð4Ð4Ð4rG   c                 óx   • [        U5      S::  d   [        U5      5       eUR                  UR                  U5      $ rª  )r§   r.  r¢   ©r\   r…   r?   rª   r:  r;  s         rE   rY  Ú;make_nditer_cls.<locals>.TrivialFlatSubIter.compute_pointerÅ  s2   € Ü�w“< 1Ó$Ð2¤c¨'£lÓ2Ð$Ø—;‘;˜sŸx™x¨Ó1Ð1rG   rv   N)rw   rx   ry   rz   r  rJ  rY  r|   r)  s   €rE   ÚTrivialFlatSubIterra  ¼  s   ø† ñ	õ
	5õ	2rG   rh  c                   ó   • \ rS rSrSrS rSrg)Ú'make_nditer_cls.<locals>.IndexedSubIteriÉ  z1
Sub-iterator walking an array in logical order.
c           	      óf   • [        U5      U R                  :X  d   e[        R                  " XXEUSS9$ ©NFrP  )r§   rt   r
   r,  rf  s         rE   rY  Ú7make_nditer_cls.<locals>.IndexedSubIter.compute_pointerÎ  s6   € Ü�w“< 4§9¡9Ó,Ð,Ð,Ü×+Ò+¨G¸eØ,3ÀñGð GrG   rv   N©rw   rx   ry   rz   r  rY  r|   rv   rG   rE   ÚIndexedSubIterrj  É  s   † ñ	õ	GrG   ro  c                   ó   • \ rS rSrSrS rSrg)Ú'make_nditer_cls.<locals>.ZeroDimSubIteriÓ  z%
Sub-iterator "walking" a 0-d array.
c                 ó   • UR                   $ rD  )r¢   rf  s         rE   rY  Ú7make_nditer_cls.<locals>.ZeroDimSubIter.compute_pointerØ  s   € Ø—8‘8ˆOrG   rv   Nrn  rv   rG   rE   ÚZeroDimSubIterrq  Ó  s   † ñ	õ	rG   rt  c                   ó   • \ rS rSrSrS rSrg)Ú&make_nditer_cls.<locals>.ScalarSubIteriÛ  z(
Sub-iterator "walking" a scalar value.
c                 ó   • U$ rD  rv   rf  s         rE   rY  Ú6make_nditer_cls.<locals>.ScalarSubIter.compute_pointerà  s   € ØˆJrG   rv   Nrn  rv   rG   rE   ÚScalarSubIterrv  Û  s   † ñ	õ	rG   ry  c                   ó–   >
• \ rS rSrSr\R                  U UUUUU4S j5       rUUUU	4S jrU4S jr	S r
S rUUUU	4S jrS	 rS
 rSrg)Úmake_nditer_cls.<locals>.NdIteriã  z�
.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           	      óÈ   >• / nTR                   (       a  TOTTTTS.n[        TR                  5       H+  u  p4Uu  pVpxSU-  n	X%   n
UR                  U
" X	Xg5      5        M-     U$ )N)r"  ÚindexedÚ0dÚscalarzindex%d)rc  rÄ  r  rm   )r\   ÚlÚ	factoriesrq   r  rÕ  r@  rA  r3  r?  Úfactoryr_  ro  ry  rh  rt  r*  s              €€€€€€rE   ÚsubitersÚ(make_nditer_cls.<locals>.NdIter.subitersë  ss   ø€ àˆAØ08×0M×0M¡Ø0Ø$2Ø-Ø#0ñ	ˆIô $ H×$5Ñ$5Ö6‘�Ø.1Ñ+� Ø'¨!™m�Ø#™/�Ø—‘™ °IÓGÖHñ	 7ð
 ˆHrG   c                 ó  >• UR                  [        R                  S5      nUR                  U[        R                  " U5      U5      U l        [        U5       HP  u  pg[        U[        R                  5      (       a  M&  SU-  n[        R                  " X$U   5      n	[        XU	5        MR     U R                  XX45      n[        R                  " [        R                  T5      n
SnSn[        U5       HT  u  pm[        U[        R                  5      (       d  M&  UR                  T:X  d  M8  XF   R                  nXF   R                   n  O<   TS:X  d   eUR                  X*S5      nUR                  [        R                  S5      nS n[#        X45       HŸ  u  pß[        U[        R                  5      (       d  M&  UR                  S:”  d  M8  [%        [        R&                  [        R                  " [        R                  UR                  5      U
5      nUR)                  X.UUR                  U45        M¡     [        R*                  " X+5      nTS:X  a  USSS2   nUR-                  S	XÅ5      nUR/                  U[        R0                  [        R2                  5      nTR4                  (       d  U4n[7        U5      T:X  d   e[        R8                  " X%R:                  TS
9n[=        T5       H-  n[        R>                  " UUU5      nURA                  UU5        M/     UU l!        [        RD                  " UUUR:                  5      U l        [        R                  " UU5      U l#        U RH                   H  nURK                  X5        M     g)zA
Initialize the nditer() instance for the specific array inputs.
r   úscalar%dNrv   rI   c                 óˆ   • [        U 5      n[        U5       H(  nX   U[        U5      U-
  U-      :w  d  M  [        S5      e   g )Nz2nditer(): operands could not be broadcast together)r§   r:   r¿   )ri   Ú
main_shaperJ  rq   s       rE   Úcheck_shapeÚBmake_nditer_cls.<locals>.NdIter.init_specific.<locals>.check_shape  sH   € Ü˜“J�Ü˜qž�AØ‘x :¬c°*«oÀÑ.AÀAÑ.EÑ#FÕFÜ(ð *>ó ?ð ?ò "rG   r  rJ  r  rŽ  )&rÆ   r   r–   rø  r±  ÚarraysrÄ  rŸ   r    r
   rô   rÍ   Ú_arrays_or_scalarsr°  rt   ri   r¹   r¨   r%   Únoner,  rÇ   r  rù  r0  r.  rc  r§   rZ   r;   r:   rl   r  rª   rn   Ú	exhaustedrƒ  rJ  )r\   r…   r?   Úarrtysr‹  rû   rq   rG  r?  ÚslotÚmain_shape_tyrˆ  Úmain_nitemsr:  r‰  r;  r^   r  Úshape_is_emptyrŽ  rª   rƒ  r5  Úsubiterr-  rt   r*  Únshapess                           €€€€rE   rJ  Ú-make_nditer_cls.<locals>.NdIter.init_specificû  sÕ  ø€ ð ×'Ñ'¬¯
©
°AÓ6ˆDð "×,Ñ,¨W´e·k²kÀ&Ó6IØ-3ó5ˆDŒKô # 6Ö*‘�Ü! "¤e§k¡k×2Ó2Ø",¨q¡.�Kä"×4Ò4°WÀQ¹iÓH�DÜ˜D¨tÖ4ñ +ð ×,Ñ,¨W¸vÓNˆFô "ŸNšN¬5¯:©:°tÓ<ˆMØˆJØˆKÜ% fÖ-‘�Ü˜e¤U§[¡[×1Ó1°e·j±jÀDÕ6HØ!'¡§¡�JØ"(¡)×"2Ñ"2�KÙñ	 .ð ˜q“yÐ �yØ$×/Ñ/°ÈÓK�
Ø%×2Ñ2´5·:±:¸qÓA�ò?ô " &Ö1‘
�Ü˜e¤U§[¡[×1Ó1°e·j±jÀ1µnÜ#¤E§J¡JÜ$)§N¢N´5·:±:¸u¿z¹zÓ$JØ$1ó3�Cð ×,Ñ,¨WØ-0°3·9±9¸jÐ2IöKñ 2ô ×)Ò)¨'Ó>ˆFØ˜‹}Ø¡ " ™�ð %×0Ñ0°°{ÓIˆNØŸ™ ~´w×7HÑ7HÜ'.×'9Ñ'9ó;ˆIð ×0×0ð &˜�Ü�v“; 'Ó)Ð)Ð)ä×)Ò)¨'·9±9À7ÑKˆGÜ˜W–~�Ü ×-Ò-¨g°wÀÓD�Ø—‘˜d FÖ+ñ &ð #ˆDŒLÜ ×+Ò+¨G°V¸T¿Y¹YÓGˆDŒJÜ$×6Ò6°wÀ	ÓJˆDŒNð  Ÿ=œ=�Ø×%Ñ% gÖ7ò )rG   c                 ó<  >• UR                  S5      n[        R                  " UUR                  U R                  5      5      n[        R
                  " X%5         UR                  S5        UR                  U5        SSS5        TR                  n[        R                  " X R                  5      nU R                  XXg5      nU R                  nUR                  S5        U R                  XX†U5      n	U	 V
s/ s H  oªR                  5       PM     n	n
[        U	5      S:X  a  UR                  U	S   5        O,UR                  UR!                  UTR"                  U	5      5        [        R                  " X R$                  5      n['        X[        U5      UX€R                  [(        R*                  " U R,                  UU5      [(        R*                  " U R.                  UU5      5        UR                  U5        UR1                  U5        g! , (       d  f       GN’= fs  sn
f )z2
Compute next iteration of the nditer() instance.
rB  FNTrI   r   )rˆ  r
   Úas_bool_bitr@   rŽ  Úif_unlikelyr  r™  r‹  rÇ   rŒ  rª   Ú_make_viewsrù   r§   r  rø  r  ri   r7  ro  ÚpartialÚ_loop_continueÚ_loop_breakrš  )r\   r…   r?   r  r4  rŽ  r�  r‹  rª   ÚviewsrÛ   ri   r*  s               €rE   Úiternext_specificÚ1make_nditer_cls.<locals>.NdIter.iternext_specificJ  s°  ø€ ð ×.Ñ.¨uÓ5ˆEô  ×+Ò+¨GØ,3¯L©L¸¿¹Ó,HóJˆIä×$Ò$ WÕ8Ø× Ñ  Ô'Ø—‘˜uÔ%÷ 9ð —_‘_ˆFÜ×)Ò)¨'·;±;Ó?ˆFØ×,Ñ,¨W¸vÓNˆFØ—l‘lˆGð ×Ñ˜TÔ"Ø×$Ñ$ W°wÈÓOˆEÙ,1Ó2ªE q—[‘[–]©EˆEÐ2Ü�5‹z˜Q‹Ø—‘˜e A™hÕ'à—‘˜g×0Ñ0°¸(×:MÑ:MØ16ó8ô 9ô ×(Ò(¨·*±*Ó=ˆEÜ˜w´°U³¸UØ&¯©Ü(×0Ò0°×1DÑ1DØ18Ø18ó :ô  )×0Ò0°×1AÑ1AØ18Ø18ó :ô!ð �N‰N˜5Ô!Ø×#Ñ# EÕ*÷? 9Ö8üò 3s   Á#HÃ6HÈ
Hc                 ó´   • U R                    HH  nUR                  Us=::  a  UR                  :  d  M&  O  M*  UR                  XX4R                  -
  5        MJ     g rD  )rƒ  r@  rA  r2  ©r\   r…   r?   rƒ  r  s        rE   rœ  Ú.make_nditer_cls.<locals>.NdIter._loop_continuet  s?   € Ø—}”}�Ø—=‘= CÕ5¨#¯+©+×5Ñ5Ø×%Ñ% g¸¿m¹mÑ8KÖLò %rG   c                 ó´   • U R                    HH  nUR                  Us=::  a  UR                  :  d  M&  O  M*  UR                  XX4R                  -
  5        MJ     g rD  )rƒ  r@  rA  r3  r¢  s        rE   r�  Ú+make_nditer_cls.<locals>.NdIter._loop_breaky  s=   € Ø—}”}�Ø—=‘= CÕ5¨#¯+©+×5Ñ5Ø—N‘N 7°S¿=¹=Ñ5HÖIò %rG   c                 óN  >• S/T-  nTR                   nU R                  nTR                  n	[        U	[        R
                  5      (       a  [        U	5      n	OU	/n	[        T5       V
s/ s H)  n
UR                  [        R                  " X#U
5      5      PM+     nn
[        Xx5       H_  u  p¼Uu      pÞX<R                  UR                   nTS:X  a  USSS2   nU H(  n
Xj   b   eU R                  XUXš   XJ   XZ   U5      Xj'   M*     Ma     [        S U 5       5      (       d   eU$ s  sn
f )z"
Compute the views to be yielded.
Nr  rJ  c              3   ó$   #   • U  H  ov •  M     g 7frD  rv   ©rF  rÛ   s     rE   rH  Ú>make_nditer_cls.<locals>.NdIter._make_views.<locals>.<genexpr>—  s   é € Ð(¢%˜Q”q¢%ùs   ‚)r  rƒ  r  rŸ   r   rQ  rÃ   r:   r@   r
   rl   r¨   r@  rA  Ú
_make_viewr²  )r\   r…   r?   rª   r�  r‹  rž  r  rƒ  Úrettysrq   r  r”  r3  Úarray_indicesÚsub_indicesr-  Únarraysr*  r•  s                   €€€€rE   rš  Ú+make_nditer_cls.<locals>.NdIter._make_views~  s3  ø€ ð �F˜WÑ$ˆEØ×(Ñ(ˆHØ—}‘}ˆHØ×(Ñ(ˆFÜ˜&¤%§/¡/×2Ñ2Ü˜f›‘à ˜�ä % g¤ó0Ú .˜1ð —|‘|¤G×$8Ò$8¸È1Ó$MÖNÙ .ð ð 0ô !$ HÖ 7‘�Ø),Ñ&��1�aØ%×&7Ñ&7¸¿¹ÐH�Ø˜S“=Ø"-©d°¨dÑ"3�KÛ&�AØ ™8Ñ+Ð+Ð+Ø#Ÿ™¨wÀØ/5©yØ/5©y¸&¹)ÀWó N�E“Hó 'ñ !8ô Ñ(¡%Ó(×(Ñ(Ð(Ð(ØˆLùò0s   Á'0D"c           	      óÂ  • [        U[        R                  5      (       a  UR                  S:X  d   eUR	                  XX5U5      nUR                  U5      " X5      n	[        X5      n
UR                  U[        R                  " [        R                  S5      S5      nUR                  U[        R                  " [        R                  S5      S5      n[        X˜X¼U
SS9  U	$ )z,
Compute a 0d view for a given input array.
r   rv   N)r²   )rŸ   r   r    rt   rY  r€   r‡   rø  r°  r–   rÜ   )r\   r…   r?   rª   r�  r:  r;  r”  ro   Úviewr´   ri   r³   s                rE   rª  Ú*make_nditer_cls.<locals>.NdIter._make_viewš  s¹   € ô
 ˜e¤U§[¡[×1Ñ1°e·j±jÀA³oÐEÐEà×)Ñ)¨'¸GÈCÓPˆCØ×%Ñ% eÔ,¨WÓ>ˆDä# GÓ3ˆHØ×&Ñ& w´·²¼u¿z¹zÈ1Ó0MØ')ó+ˆEà×(Ñ(¨´%·.².ÄÇÁÈQÓ2OØ)+ó-ˆGô ˜4 e°hÈÒMØˆKrG   c           	      ó  • / n[        [        X45      5       Hm  u  nu  px[        U[        R                  5      (       a(  UR                  UR                  U5      " UUUS95        MO  UR                  [        U SU-  5      5        Mo     U$ )Nr  r†  )rÄ  r¨   rŸ   r   r    rm   r€   rr  )	r\   r…   r?   r�  r‹  r€  rq   r:  r;  s	            rE   rŒ  Ú2make_nditer_cls.<locals>.NdIter._arrays_or_scalars®  s}   € ð ˆAÜ#,¬S°Ó-@Ö#A‘�‘<�EÜ˜e¤U§[¡[×1Ñ1Ø—H‘H˜W×/Ñ/°Ô6°wØ7>Ø=@ñBö Cð —H‘HœW T¨:¸©>Ó:Ö;ñ $Bð ˆHrG   )r‹  rŽ  rª   ri   N)rw   rx   ry   rz   r  ro  rR  rƒ  rJ  rŸ  rœ  r�  rš  rª  rŒ  r|   )
r_  ro  ry  rh  rt  r-  r®  rt   r*  r•  s
   €€€€€€€€€€rE   ÚNdIterr{  ã  sZ   ø† ñ	ð 
×	"Ñ	"÷	ñ 	ó 
#ð	÷M	8ð M	8õ^(	+òT	Mò
	J÷
	ð 	ò8	õ(	rG   rµ  )rt   r-  r§   r‹  rc  Úobjectr
   r   )r*  rS  rµ  r_  ro  ry  rh  rt  r-  r®  rt   r•  s   `  @@@@@@@@@rE   Úmake_nditer_clsr·  v  s­   ÿù€ ð
 �=‰=€DØ�_‰_€FÜ�(—/‘/Ó"€GØ×3×3‰d¸€Gô”fô ô86�kô 6÷@2˜[ô 2ôG˜ô Gô˜ô ô˜ô ÷V÷ Vð V”×,Ò,¨XÓ6ô Vðp €MrG   c                 ód   ^• U R                   m " U4S jS[        R                  " U 5      5      nU$ )zf
Return the Structure representation of the given *nditerty* (an
instance of types.NumpyNdIndexType).
c                   ó2   >• \ rS rSrSrU 4S jrU 4S jrSrg)Ú%make_ndindex_cls.<locals>.NdIndexIteriÅ  z
.ndindex() implementation.
c                 ó°  >• UR                  [        R                  S5      n[        R                  " X$R
                  UR                  [        R                  T5      S9n[        R                  " U[        R                  5      n[        T5       H€  n[        R                  " X%U5      nUR                  XH5        X7   n	UR                  SX”5      n
[        R                  " X*5         UR                  [        R                  U5        S S S 5        M‚     XPl        X`l        [        R                   " X#UR
                  5      U l        g ! , (       d  f       MÆ  = f©Nr   rŽ  r  )rÆ   r   r–   r
   rZ   r;   rô   r.  r:   rl   r  r  r™  r0  rª   rŽ  rn   ri   )r\   r…   r?   r  rû   rª   rŽ  rƒ  r5  rê  Údim_is_emptyrt   s              €rE   rJ  Ú3make_ndindex_cls.<locals>.NdIndexIter.init_specificÊ  s  ø€ Ø×'Ñ'¬¯
©
°AÓ6ˆDÜ×)Ò)¨'·9±9Ø/6×/CÑ/CÄEÇJÁJØDHó0JñKˆGô  ×1Ò1°'¼7×;MÑ;MÓNˆIä˜T–{�Ü ×-Ò-¨gÀÓD�Ø—‘˜dÔ+ð "™;�Ø&×4Ñ4°T¸8ÓJ�Ü×(Ò(¨Õ?Ø—M‘M¤'×"3Ñ"3°YÔ?÷ @Ñ?ñ #ð #ŒLØ&ŒNÜ ×+Ò+¨G¸T¿Y¹YÓGˆD�J÷ @Ö?ús   Ã&!EÅ
E	c           
      ó‚  >• UR                  [        R                  S5      nUR                  S5      n[        R
                  " UUR                  U R                  5      5      n[        R                  " X&5         UR                  S5        UR                  U5        S S S 5        [        T5       Vs/ s H4  nUR                  [        R                  " UU R                  U5      5      PM6     nnU H  n	[        X)5        M     UR                  [        R                   " X(UR"                  5      5        UR                  S5        [        R$                  " X R&                  T5      n
[)        XTU
U R                  U R                  5        UR                  U5        UR+                  U5        g ! , (       d  f       GN= fs  snf )Nr   rB  FT)rÆ   r   r–   rˆ  r
   r˜  r@   rŽ  r™  r  r™  r:   rl   rª   rK   r  rn   r;   rÇ   ri   r7  rš  )r\   r…   r?   r  rû   r4  rŽ  rƒ  rª   r@   ri   rt   s              €rE   rŸ  Ú7make_ndindex_cls.<locals>.NdIndexIter.iternext_specificà  s`  ø€ Ø×'Ñ'¬¯
©
°AÓ6ˆDà×.Ñ.¨uÓ5ˆEä×+Ò+¨GØ,3¯L©L¸¿¹Ó,HóJˆIä×$Ò$ WÕ8Ø× Ñ  Ô'Ø—‘˜uÔ%÷ 9ô #(¨¤+ó/ò #.˜3ð —|‘|¤G×$8Ò$8¸Ø9=¿¹Ø9<ó%>ö ?ñ #.ð ð /ó  �Ü˜gÖ,ñ  ð �M‰Mœ'×,Ò,¨W¸t¿y¹yÓIÔJØ×Ñ˜TÔ"ä×(Ò(¨·*±*¸dÓCˆEÜ˜w°°uØ#Ÿ|™|¨T¯^©^ô=ð �N‰N˜5Ô!Ø×#Ñ# EÕ*÷' 9Ö8üò/s   Á9#F*Â1;F<Æ*
F9)rŽ  rª   ri   N)rw   rx   ry   rz   r  rJ  rŸ  r|   ©rt   s   €rE   ÚNdIndexIterrº  Å  s   ø† ñ	õ	H÷,	+ð 	+rG   rÂ  )rt   r
   r   )r*  rÂ  rt   s     @rE   Úmake_ndindex_clsrÃ  ¾  s.   ø€ ð
 �=‰=€D÷5+”g×1Ò1°(Ó;ô 5+ðn ÐrG   c                 óÜ   ^• TS;   d   eU R                   nUR                  S:X  a$   " U4S jS[        R                  " U 5      5      nU$  " U4S jS[        R                  " U 5      5      nU$ )N)r"  r(  r­   c                   ó>   >• \ rS rSrSrU 4S jrU 4S jrS rS rSr	g)	Ú6_make_flattening_iter_cls.<locals>.CContiguousFlatIteri  zB
.flat() / .ndenumerate() implementation for C-contiguous arrays.
c                 óÎ  >• UR                  [        R                  S5      n[        R                  " X%5      U l        UR                  U l        T	S:X  a’  [        R                  " X%R                  UR                  [        R                  UR                  5      S9n[        UR                  5       H+  n[        R                  " X&U5      nUR                  XX5        M-     X`l        g g )Nr   r(  rŽ  )rÆ   r   r–   r
   rô   rõ   r´   r  rZ   r;   rt   r:   rl   r  rª   )
r\   r…   r?   r:  r;  rû   rª   rƒ  r5  rÕ  s
            €rE   rJ  ÚD_make_flattening_iter_cls.<locals>.CContiguousFlatIter.init_specific
  s¯   ø€ Ø×+Ñ+¬E¯J©J¸Ó:�Ü$×6Ò6°wÓE�”
ð "Ÿl™l�”à˜=Ó(ä%×1Ò1Ø§¡Ø$×1Ñ1´%·*±*¸e¿j¹jÓIñK�Gô  % U§Z¡ZÖ0˜Ü!(×!5Ò!5°gÈÓ!L˜ØŸ™ dÖ3ñ  1ð $+•Lð )rG   c                 ód  >• UR                   nUR                  nUR                  U R                  5      nUR	                  SX‡5      n	UR                  U	5        [        R                  " X)5         UR                  UR                  U/5      n
[        XX:5      nTS:X  a  UR                  U5        O²U R                  n[        U5       Vs/ s H*  nUR                  [        R                  " UUU5      5      PM,     nn[        R                  " X.UR!                  ["        R$                  5      S9nUR                  [        R&                  " UXû/5      5        [)        XUXL5        [        R*                  " X(5      nUR-                  X€R                  5        S S S 5        g s  snf ! , (       d  f       g = f)Nr  r"  ©rG  )rt   r¹   r@   rõ   r  r  r
   r/  r.  r¢   rŽ   r  rª   r:   rl   rn   r‚   r   r–   Úmake_anonymous_structr9  r  r  )r\   r…   r?   r:  r;  r  rt   r¹   rõ   r  ro   r  rª   rƒ  ÚidxvalsÚidxtuplerÕ  s                   €rE   rŸ  ÚH_make_flattening_iter_cls.<locals>.CContiguousFlatIter.iternext_specific#  sy  ø€ Ø—z‘z�ØŸ™�àŸ™ T§Z¡ZÓ0�Ø"×.Ñ.¨s°EÓB�Ø× Ñ  Ô*ä×&Ò& wÕ9Ø!Ÿ+™+ c§h¡h°°Ó8�CÜ% g¸ÓC�EØ˜v“~ØŸ™ eÕ,ð #'§,¡,˜ô /4°D¬kó#;ò /: sð $+§<¡<´×0DÒ0DÀWØELØEHó1Jö $Kñ /:ð  ð #;ô $+×#5Ò#5°gØ9@×9NÑ9NÜ:?¿*¹*ó:Fñ$G˜ð Ÿ™Ü#×9Ò9¸'Ø;CÐ:KóMôNô 1°À5Ø14ô?ô $×3Ò3°GÓC�EØ—M‘M %¯©Ô4÷- :Ð9ùò#;÷ :Õ9ús    Á.AF!Ã	1FÃ:BF!ÆF!Æ!
F/c                 óT   • UR                  UR                  U/5      n[        XX65      $ rD  )r.  r¢   rŽ   ©r\   r…   r?   r:  r;  rõ   ro   s          rE   r  Ú>_make_flattening_iter_cls.<locals>.CContiguousFlatIter.getitemC  s%   € Ø—k‘k #§(¡(¨U¨GÓ4�Ü  °5Ó>Ð>rG   c                 óX   • UR                  UR                  U/5      n[        XX6U5        g rD  )r.  r¢   r’   ©r\   r…   r?   r:  r;  rõ   r  ro   s           rE   ÚsetitemÚ>_make_flattening_iter_cls.<locals>.CContiguousFlatIter.setitemG  s$   € Ø—k‘k #§(¡(¨U¨GÓ4�Ü˜7¨U¸3Õ?rG   )rõ   rª   r  N)
rw   rx   ry   rz   r  rJ  rŸ  r  rÔ  r|   ©rÕ  s   €rE   ÚCContiguousFlatIterrÆ    s   ø† ñõ+õ25ò@?õ@rG   r×  c                   ó>   >• \ rS rSrSrS rU 4S jrS rS rS r	Sr
g	)
Ú+_make_flattening_iter_cls.<locals>.FlatIteriN  zŸ
Generic .flat() / .ndenumerate() implementation for
non-contiguous arrays.
It keeps track of pointers along each dimension in order to
minimize computations.
c                 óÔ  • UR                  [        R                  S5      nUR                  nUR                  n[
        R                  " X$R                  U5      n[
        R                  " X%R                  UR                  [        R                  UR                  5      S9n	[
        R                  " X&R                  UR                  [        R                  UR                  5      S9n
[
        R                  " U[
        R                  5      n[        U5       H©  n[
        R                  " X)U5      n[
        R                  " X*U5      nUR                  Xn5        UR                  X]5        XŒ   nUR                  SXõ5      n[
        R                   " UU5         UR                  [
        R"                  U5        S S S 5        M«     X�l        X l        X°l        g ! , (       d  f       MÏ  = fr¼  )rÆ   r   r–   r¢   rt   r
   rÇ   ri   rZ   r;   rô   r.  r:   rl   r  r  r™  r0  rª   ÚpointersrŽ  )r\   r…   r?   r:  r;  rû   r¢   rt   r  rª   rÛ  rŽ  rƒ  r5  Úptrptrrê  r½  s                    rE   rJ  Ú9_make_flattening_iter_cls.<locals>.FlatIter.init_specificV  su  € Ø×+Ñ+¬E¯J©J¸Ó:�Ø—x‘x�Ø—z‘z�Ü ×-Ò-¨g·y±yÀ$ÓG�ä!×-Ò-ØŸY™Y¨W×-AÑ-AÄ%Ç*Á*ØBGÇ*Á*ó.NñO�ô #×.Ò.ØŸY™Y¨W×-AÑ-AÄ%Ç*Á*ØBGÇ*Á*ó.NñO�ô $×5Ò5°gÜ6=×6HÑ6HóJ�	ô ! ž;�CÜ$×1Ò1°'ÀCÓH�FÜ$×1Ò1°'ÀSÓI�FØ—M‘M $Ô/Ø—M‘M $Ô/ð  &™{�HØ#*×#8Ñ#8¸¸xÓ#N�LÜ ×,Ò,¨W°lÕCØŸ™¤g×&7Ñ&7¸ÔC÷ DÑCñ 'ð  '”Ø (”Ø!*•÷ DÖCús   Æ!GÇ
G'	c           
      ót  >• UR                   n[        R                  " X$R                  U5      n[        R                  " X$R                  U5      nU R
                  n	U R                  n
UR                  [        R                  S5      nUR                  S5      n[        R                  " X"R                  U R                  5      5      n[        R                  " X-5         UR                  S5        UR!                  U5        S S S 5        UR                  S5        [        R"                  " X*US-
  5      nUR                  U5      n[%        XX?5      nTS:X  a  UR'                  U5        O[)        U5       Vs/ s H*  nUR                  [        R"                  " UU	U5      5      PM,     nn[        R*                  " UU5      nUR'                  [        R,                  " UUU/5      5        [/        [)        U5      5       GHD  n[        R"                  " X)U5      n[        R0                  " UUR                  U5      5      nUU   nUU   nUR3                  SUU5      n[        R4                  " UU5         UR7                  UU5        [        R"                  " X*U5      nUR                  U5      n[        R8                  " X/U5      nUR7                  UU5        [)        US-   U5       H-  n[        R"                  " UU
U5      nUR7                  UU5        M/     UR!                  U5        S S S 5        UR7                  UU5        GMG     UR7                  [        R:                  U R                  5        UR!                  U5        UR=                  U5        g ! , (       d  f       GN˜= fs  snf ! , (       d  f       N‰= f)Nr   rB  FTrI   r"  r  )rt   r
   rÇ   ri   r³   rª   rÛ  rÆ   r   r–   rˆ  r˜  r@   rŽ  r™  r  r™  rl   rŽ   r  r:   rn   rË  r'  r  r  r/  r  r  r0  rš  )r\   r…   r?   r:  r;  r  rt   r  r³   rª   rÛ  rû   r4  Úis_exhaustedÚlast_ptrro   r  rƒ  rÌ  rÍ  r5  rš   rÈ   r  r6  rÜ  Ú	inner_dimrÕ  s                              €rE   rŸ  Ú=_make_flattening_iter_cls.<locals>.FlatIter.iternext_specificw  s  ø€ Ø—z‘z�Ü ×-Ò-¨g·y±yÀ$ÓG�Ü!×.Ò.¨w¿¹ÀTÓJ�ØŸ,™,�ØŸ=™=�à×+Ñ+¬E¯J©J¸Ó:�à×2Ñ2°5Ó9�ô  '×2Ò2ØŸ\™\¨$¯.©.Ó9ó ;�ä×(Ò(¨Õ?Ø×$Ñ$ UÔ+Ø—N‘N 5Ô)÷ @ð × Ñ  Ô&ô #×/Ò/°À4È!Á8ÓL�Ø—l‘l 8Ó,�Ü! '°EÓ?�Ø˜6“>Ø—M‘M %Õ(ô +0°¬+ó7ò +6 3ð  'Ÿ|™|¬G×,@Ò,@ÀØAHØADó-Fö  Gñ +6ð ð 7ô  '×1Ò1°'¸7ÓC�HØ—M‘MÜ×5Ò5°gØ7?ÀÐ6GóIôJô $¤E¨$£K×0�CÜ$×1Ò1°'ÀCÓH�FÜ!×1Ò1°'Ø29·,±,¸vÓ2FóH�Cð # 3™K�EØ$ S™\�FØ '× 3Ñ 3°C¸¸eÓ D�IÜ ×*Ò*¨7°IÕ>àŸ™ c¨6Ô2Ü!(×!5Ò!5°gÈÓ!M˜Ø%Ÿl™l¨6Ó2˜Ü%×1Ò1°'ÀÓG˜ØŸ™ c¨6Ô2ä).¨s°Q©w¸Ö)=˜IÜ%,×%9Ò%9¸'Ø:BØ:Có&E˜Fð $ŸM™M¨#¨vÖ6ñ	 *>ð
  Ÿ™ uÔ-÷ ?ð —M‘M $¨×/ñ/ 1ð4 —‘œg×/Ñ/°·±Ô@Ø—‘˜uÔ%à×'Ñ'¨Õ.÷k @Ö?üò7÷& ?Õ>ús   Ã#NÅ61N$É1B5N)Î
N!Î)
N7	c           	      ó¾  • UR                   n[        R                  " X$R                  US9n[        R                  " X$R                  US9n/ n	[        [        U5      5       H:  n
U	R                  UR                  XWU
   5      5        UR                  XWU
   5      nM<     U	R                  5         [        R                  " XUR                  XxUR                  U	5      nU$ )Nr  )rt   r
   rÇ   ri   r³   r'  r:   rm   ÚuremÚudivÚreverser,  r¢   r-  )r\   r…   r?   r:  r;  rõ   rt   r  r³   rª   rƒ  ro   s               rE   Ú_ptr_for_indexÚ:_make_flattening_iter_cls.<locals>.FlatIter._ptr_for_index¼  s³   € Ø—z‘z�Ü ×-Ò-¨g·y±yÈÑM�Ü!×.Ò.¨w¿¹È4ÑP�ð �Ü#¤E¨$£KÖ0�CØ—N‘N 7§<¡<°¸c±{Ó#CÔDØ#ŸL™L¨°s±Ó<’Eñ 1ð —‘Ô!ä×/Ò/°À#Ç(Á(Ø06ÀÇÁØ07ó9�ð �
rG   c                 ó@   • U R                  XX4U5      n[        XX65      $ rD  )rç  rŽ   rÐ  s          rE   r  Ú3_make_flattening_iter_cls.<locals>.FlatIter.getitemÍ  s#   € Ø×)Ñ)¨'¸EÈÓN�Ü  °5Ó>Ð>rG   c                 óD   • U R                  XX4U5      n[        XX6U5        g rD  )rç  r’   rÓ  s           rE   rÔ  Ú3_make_flattening_iter_cls.<locals>.FlatIter.setitemÑ  s"   € Ø×)Ñ)¨'¸EÈÓN�Ü˜7¨U¸3Õ?rG   )rŽ  rª   rÛ  N)rw   rx   ry   rz   r  rJ  rŸ  rç  r  rÔ  r|   rÖ  s   €rE   ÚFlatIterrÙ  N  s%   ø† ñò+õBC/òJò"?õ@rG   rí  )re   r-  r
   r   )r%  rÕ  re   r×  rí  s    `   rE   r$  r$  ÿ  sr   ø€ ØÐ*Ó*Ð*Ð*à×&Ñ&€Jà×Ñ˜CÓ÷D	@¤'×"=Ò"=¸jÓ"Iô D	@ðL #Ð"÷E	@”w×2Ò2°:Ó>ô E	@ðN ˆrG   r"  c                 ó0  • [        [        R                  " U5      5      nU" X5      nX5l        U R	                  U5      nU" XUR                  S5      S9nUR                  XX#5        UR                  5       n[        X[        R                  " U5      U5      $ ©NrÎ   )r]   )	r&  r   ÚNumpyFlatTyperÎ   r€   rk   rJ  rù   r!   )r…   r?   r:  r;  ÚflatiterclsÚflatiterÚarrclsrý   s           rE   Úmake_array_flatiterrô  Ø  s…   € ä%¤e×&9Ò&9¸%Ó&@ÓA€KÙ˜7Ó,€Hà„Nà×Ñ Ó&€FÙ
� x×'@Ñ'@ÀÓ'IÑ
J€Cà×Ñ˜7¨UÔ8à
×
Ñ
Ó
€CÜ˜W¬u×/BÒ/BÀ5Ó/IÈ3ÓOÐOrG   c                 óÎ   • UR                   u  nUu  n[        U5      nU" XUS9nUR                  nU R                  U5      n	U	" XUR                  S9n
UR                  XXŠU5        g rž  )rñ   r&  re   r€   rÎ   rŸ  )r…   r?   r^   rñ   r  r%  rò  rñ  r:  ró  r;  s              rE   Úiternext_numpy_flatiterrö  è  si   € ð —8‘8�L€ZØ�J€Xä% jÓ1€KÙ˜7°8Ñ<€Hà×!Ñ!€EØ×Ñ Ó&€FÙ
�¨¯©Ñ
8€Cà×Ñ˜w°¸VÕDrG   c                 óü   • UR                   S   nUu  pV[        U5      nU" XUS9nUR                  nU R                  U5      n	U	" XUR                  S9n
UR                  XXŠU5      n[        XUR                  U5      $ ©Nr   r  )rñ   r&  re   r€   rÎ   r  r!   ró   )r…   r?   r^   rñ   r%  rò  rõ   rñ  r:  ró  r;  rý   s               rE   Úiternext_numpy_getitemrù  ø  s~   € à—‘˜!‘€JØ�O€Hä% jÓ1€KÙ˜7°8Ñ<€Hà×!Ñ!€EØ×Ñ Ó&€FÙ
�¨¯©Ñ
8€Cà
×
Ñ
˜7¨U¸Ó
?€CÜ˜W¨s¯©ÀÓDÐDrG   c                 óð   • UR                   S   nUu  pVn[        U5      nU" XUS9nUR                  n	U R                  U	5      n
U
" XUR                  S9nUR                  XX›Xg5        U R                  5       $ rø  )rñ   r&  re   r€   rÎ   rÔ  rf  )r…   r?   r^   rñ   r%  rò  rõ   r  rñ  r:  ró  r;  s               rE   Úiternext_numpy_getitem_anyrû    s}   € ð —‘˜!‘€JØ!Ñ€H�Uä% jÓ1€KÙ˜7°8Ñ<€Hà×!Ñ!€EØ×Ñ Ó&€FÙ
�¨¯©Ñ
8€Cà×Ñ�W u°5Ô@Ø×"Ñ"Ó$Ð$rG   c                 óº   • UR                   S   n[        U5      nU" XUS   S9nU R                  UR                  5      nU" XUR                  S9nUR
                  $ rø  )rñ   r&  r€   re   rÎ   r¹   )	r…   r?   r^   rñ   r%  rñ  rò  ró  r;  s	            rE   Úiternext_numpy_getitem_flatrý    sY   € à—‘˜!‘€JÜ% jÓ1€KÙ˜7°4¸±7Ñ;€Hà×Ñ 
× 5Ñ 5Ó6€FÙ
�¨¯©Ñ
8€CØ�:‰:ÐrG   c                 ó@  • UR                   u  nUu  n[        [        R                  " U5      5      nU" X5      nXWl        U R                  U5      nU" XUR                  S5      S9nUR                  XXE5        UR                  5       n	[        XUR                  U	5      $ rï  )rñ   r+  r   ÚNumpyNdEnumerateTyperÎ   r€   rk   rJ  rù   r!   ró   )
r…   r?   r^   rñ   r:  r;  Ú	nditerclsr>  ró  rý   s
             rE   Úmake_array_ndenumerater  $  s�   € à�X‰X�F€EØ�D€CÜ*¬5×+EÒ+EÀeÓ+LÓM€IÙ�wÓ(€Fà„Là×Ñ Ó&€FÙ
� v×'>Ñ'>¸wÓ'GÑ
H€Cà
×Ñ˜¨5Ô6à
×
Ñ
Ó
€CÜ˜W¨s¯©ÀÓDÐDrG   c                 óÎ   • UR                   u  nUu  n[        U5      nU" XUS9nUR                  nU R                  U5      n	U	" XUR                  S9n
UR                  XXŠU5        g rž  )rñ   r+  re   r€   rÎ   rŸ  )r…   r?   r^   rñ   r  r*  r>  r   r:  ró  r;  s              rE   Úiternext_numpy_nditerr  6  si   € ð —‘�J€XØ�H€Vä*¨8Ó4€IÙ�w¨vÑ6€Fà×Ñ€EØ×Ñ Ó&€FÙ
�¨¯©Ñ
6€Cà
×Ñ˜W¨u¸6ÕBrG   c           
      ór  • [        UR                  U5       VVs/ s H&  u  pEU R                  XU[        R                  5      PM(     nnn[        [        R                  " [        U5      5      5      nU" X5      nUR                  XU5        UR                  5       n	[        XUR                  U	5      $ s  snnf )zndindex(*shape))r¨   rñ   r•   r   r–   rÃ  ÚNumpyNdIndexTyper§   rJ  rù   r!   ró   )
r…   r?   r^   rñ   ÚargtyrÅ  ri   r   r>  rý   s
             rE   Úmake_array_ndindexr  F  s�   € ô
  # 3§8¡8¨TÔ2ô4Ú2‘�ð �\‰\˜'¨¬u¯z©zÖ:Ù2ð 
ñ 4ô !¤×!7Ò!7¼¸E»
Ó!CÓD€IÙ�wÓ(€FØ
×Ñ˜¨5Ô1à
×
Ñ
Ó
€CÜ˜W¨s¯©ÀÓDÐDùó4s   š-B3c           	      óè  • UR                   R                  nUS:”  ag  UR                  S   R                  nUS   n[        R
                  " XU5      nU Vs/ s H$  nU R                  XU[        R                  5      PM&     nnO/ n[        [        R                  " [        U5      5      5      n	U	" X5      n
U
R                  XU5        U
R                  5       n[        XUR                   U5      $ s  snf )zndindex(shape)r   )ró   rt   rñ   rƒ   r
   rÇ   r•   r   r–   rÃ  r  r§   rJ  rù   r!   )r…   r?   r^   rñ   rt   r™   rN  ri   rš   r   r>  rý   s               rE   Úmake_array_ndindex_tupler	  U  sÛ   € ð �?‰?×Ñ€DØˆaƒxØ—‘˜‘×!Ñ!ˆØ�1‰gˆä×$Ò$ W°4Ó8ˆá!ó#Ú!�Sð —‘˜g¨E´5·:±:Ö>Ù!ð 	ð #ˆð ˆä ¤×!7Ò!7¼¸E»
Ó!CÓD€IÙ�wÓ(€FØ
×Ñ˜¨5Ô1à
×
Ñ
Ó
€CÜ˜W¨s¯©ÀÓDÐDùò#s   Á+C/c                 óp   • UR                   u  nUu  n[        U5      nU" XUS9nUR                  XU5        g rž  )rñ   rÃ  rŸ  )r…   r?   r^   rñ   r  r*  r>  r   s           rE   Úiternext_numpy_ndindexr  l  s<   € ð —‘�J€XØ�H€Vä  Ó*€IÙ�w¨vÑ6€Fà
×Ñ˜W¨vÕ6rG   c                 óH  • UR                   nUR                  n[        UR                  S   [        R
                  5      (       a  [        R                  " XS   5      nOUS   /n[        U5      " X5      nUR                  XXV5        UR                  5       n[        XXH5      $ )z
nditer(...)
r   )ró   r‹  rŸ   rñ   r   rQ  r
   rÇ   r·  rJ  rù   r!   )	r…   r?   r^   rñ   r*  r�  r‹  r>  rý   s	            rE   Úmake_array_nditerr  x  sˆ   € ð
 �‰€HØ�_‰_€Fä�#—(‘(˜1‘+œuŸ™×/Ñ/Ü×%Ò% g°A©wÓ7‰à�q‘'�ˆä˜XÔ& wÓ8€FØ
×Ñ˜¨6Ô:à
×
Ñ
Ó
€CÜ˜W¨xÓ=Ð=rG   c                 ól   • UR                   u  nUu  n[        U5      " XUS9nUR                  XU5        g rž  )rñ   r·  rŸ  )r…   r?   r^   rñ   r  r*  r>  s          rE   Úiternext_numpy_nditer2r  Œ  s7   € ð —‘�J€XØ�H€Vä˜XÔ& w¸vÑF€FØ
×Ñ˜W¨vÕ6rG   c                 ó¸   • UR                   u  pE[        R                  " [        R                  " S5      [	        XE:H  5      5      n[        XUR                  U5      $ rª  )rñ   r   r   rÂ  rÄ   r#   ró   )r…   r?   r^   rñ   Úarg1Úarg2rý   s          rE   Údtype_eq_implr  –  s?   € à—‘�J€DÜ
�+Š+”b—j’j “m¤S¨©Ó%6Ó
7€CÜ˜g°·±ÀÓEÐErG   c           	      óˆ  • [        U5      nU" X5      nU R                  UR                  5      nU R                  [        R
                  [        X5      5      nU R                  [        R
                  S5      n[        [        R                  " S5      S5      n	U HG  n
UR                  XŠ5      nUR                  US5      nUR                  X‘R                  US5      5      n	MI     UR                  S:X  a  SnOÔUR                  S:X  aQ  U/n[        USS 5       H'  nUR!                  UR#                  US   U5      5        M)     [%        [        U5      5      nOsUR                  S:X  a?  U/nUSS  H'  nUR!                  UR#                  US   U5      5        M)     [%        U5      nO$['        SR)                  UR                  5      5      eUR                  X‡5      nUR                  US5      nUR                  X‘R                  US5      5      n	UR+                  U	S	S
9   U R,                  R/                  U[0        S5        SSS5        UR                  nU R3                  U5      nU R                  [        R4                  U5      nU R7                  5       UU4n[        R8                  " [        R:                  5      n[        R<                  " [?        U5      5      n[A        UU[        R
                  [        R4                  5      nU RC                  U[D        UU5      nU RF                  RI                  UU5      nU RK                  [        R
                  5      n[L        RN                  " XUS9n[L        RN                  " XUS9n[Q        UURS                  UURU                  5       5      UUUUS9  U$ ! , (       d  f       GNw= f)zù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.
rI   r   rv   r­   NrJ  r  z3Don't know how to allocate array with layout '{0}'.Fr^  )z[array is too big; `arr.size * arr.dtype.itemsize` is larger than the maximum possible size.rÊ  r)  )+r€   r‚   rƒ   rÆ   r   r–   r‡   r   r   rÂ  Úsmul_with_overflowrX  r  rt   r-  r'  rm   rÉ   rÂ   rU   rË   r  r`  ra  r¿   Úget_preferred_array_alignmentÚuint32rf  ÚMemInfoPointerÚvoidptrÚTypeRefr;   r%   r,  Ú_call_allocatorr÷   Úmeminfo_datarÀ   r
   rn   rÜ   rc  r+  )r…   r?   r‡  r  r&  r  Údatatyper´   ÚarrlenÚoverflowr®   Úarrlen_multr³   Údimension_sizeÚallocsize_multrk  rƒ   Ú	align_valrŠ   rñ   ÚmipÚarytypeclassÚargtypesr²   r¢   rÕ   Úshape_arrayÚstrides_arrays                               rE   r+  r+     s%  € ô ˜Ó €FÙ
�Ó
"€Cà×$Ñ$ W§]¡]Ó3€HØ×#Ñ#¤E§J¡J´¸WÓ0NÓO€Hð ×!Ñ!¤%§*¡*¨aÓ0€FÜœŸ
š
 1› qÓ)€HÛˆØ×0Ñ0°Ó;ˆØ×&Ñ& {°AÓ6ˆØ—;‘;Ø×+Ñ+¨K¸Ó;ó
Šñ ð ‡|�|�qÓØ‰Ø	�‰˜3Ó	Ø�*ˆÜ& v¨a¨b zÖ2ˆNØ�N‰N˜7Ÿ;™; w¨r¡{°NÓCÖDñ 3äœ Ó)Ó*‰Ø	�‰˜3Ó	Ø�*ˆØ$ S b›kˆNØ�N‰N˜7Ÿ;™; w¨r¡{°NÓCÖDñ *ä˜“.‰ä!ØA×HÑHØ—‘ó ó!ð 	!ð
 ×/Ñ/°ÓA€NØ×%Ñ% n°aÓ8€IØ�{‰{˜8×%:Ñ%:¸>È1Ó%MÓN€Hà	�‰˜¨%ˆÒ	0ð 	×Ñ×)Ñ)Ø”Zð-ô	
÷ 
1ð �M‰M€EØ×5Ñ5°eÓ<€IØ× Ñ ¤§¡¨yÓ9€EØ×#Ñ#Ó% y°%Ð8€Dä
×
Ò
œuŸ}™}Ó
-€CÜ—=’=¤ g£Ó/€LÜ˜˜l¬E¯J©J¼¿¹ÓE€Hà×&Ñ& w´ÀÈ4ÓP€GØ�;‰;×#Ñ# G¨WÓ5€Dà×#Ñ#¤E§J¡JÓ/€FÜ×$Ò$ W¸Ñ@€KÜ×&Ò& w¸FÑC€Mä�3ØŸ™¨¨h×.AÑ.AÓ.CÓDØ$Ø(Ø$Ø"ò$ð €J÷A 
1Ö	0ús   È "N2Î2
OÚ	_allocatec                 ó   • S nU$ )zLImplements a Numba-only default target (cpu) classmethod on the array
type.
c                 ó   • [        X5      $ rD  )Úintrin_alloc)Úclsrk  rŠ   s      rE   rê   Ú _ol_array_allocate.<locals>.implô  s   € Ü˜IÓ-Ð-rG   rv   )r-  rk  rŠ   rê   s       rE   Ú_ol_array_allocater/  ï  s   € ò
.à€KrG   c                 ó$   • U R                  X5      $ )z9Trampoline to call the intrinsic used for allocation
    )r)  )r‡  r›   rŠ   s      rE   r  r  ù  s   € ð ×Ñ˜TÓ)Ð)rG   c                 ón   • S n[         R                  " [         R                  5      n[        XAU5      nXS4$ )z3Intrinsic to call into the allocator for Array
    c                 óF   • Uu  pEU R                   R                  XU5      nU$ rD  )r÷   Úmeminfo_alloc_aligned)r…   r?   r%   rñ   rk  rŠ   r²   s          rE   r�  Úintrin_alloc.<locals>.codegen  s%   € Ø!ÑˆØ—+‘+×3Ñ3°GÈÓNˆØˆrG   )r   r  r  r%   )r’  rk  rŠ   r�  r$  r^   s         rE   r,  r,  ÿ  s1   € òô
 ×
Ò
œuŸ}™}Ó
-€CÜ
�C EÓ
*€CØˆ<ÐrG   c           	      ó¨  • S n[        U[        R                  5      (       a%  SnU R                  XU[        R                  5      /nOB[        U[        R
                  5      (       d   eUR                  n[        R                  " XUS9n/ nU H&  nUR                  U" XUR                  U5      5        M(     U R                  U[        R                  S5      n	[        U5       HX  n
UR                  SXz   U	5      n[        R                  " X5         U R                  R!                  U["        S5        SSS5        MZ     U$ ! , (       d  f       Mm  = f)z3
Parse the shape argument to an array constructor.
c                 ó  • U R                  [        R                  5      nUR                  n[        R
                  " U5      n[        USUS-
  -  S-
  5      nUR                  U:  a  UR                  X65      nU$ UR                  U:¼  aq  UR                  SX75      n	UR                  U	SS9   U R                  R                  U[        S5        SSS5        UR                  U:”  a  UR                  X65      nU$ UnW$ ! , (       d  f       N5= f)z0Cast src to intp only if value can be maintainedrI   Ú>Fr^  )z#Cannot safely convert value to intpN)rÀ   r   r–   rJ   r   rÂ  r   Úsextr  r  r`  ra  r¿   Útrunc)
r…   r?   Úsrc_trj  rÕ   Ú
intp_widthÚintp_irÚmaxvalrý   Ú	is_largers
             rE   Úsafecast_intpÚ#_parse_shape.<locals>.safecast_intp  sñ   € à×'Ñ'¬¯
©
Ó3ˆØ—\‘\ˆ
Ü—*’*˜ZÓ(ˆÜ˜' Q¨*°q©.Ñ%8¸AÑ$=Ó?ˆØ�;‰;˜Ó#Ø—,‘,˜sÓ,ˆCð ˆ
ð �[‰[˜JÓ&Ø×+Ñ+¨C°Ó=ˆIØ—‘ °5�Ò9Ø×!Ñ!×1Ñ1ØœZØ<ô÷ :ð
 �{‰{˜ZÓ'Ø—m‘m CÓ1�ð ˆ
ð �Øˆ
÷ :Õ9ús   Â,"C=Ã=
DrI   r  r   r  )znegative dimensions not allowedN)rŸ   r   r¡   r•   r–   rQ  rÈ   r
   rÇ   rm   r;   Úget_constant_genericr:   r  r™  r`  ra  r¿   )r…   r?   rG  r‘   r?  rt   Úpassed_shapesr  r®   rû   rƒ  Úis_negs               rE   Ú_parse_shaperD    s  € òô* �"”e—m‘m×$Ñ$ØˆØ Ÿ™ g°B¼¿
¹
ÓCÐD‰ä˜"œeŸo™o×.Ñ.Ð.Ð.Ø�x‰xˆÜ×,Ò,¨WÀÑFˆà€FÛˆØ�‰‘m G°a·f±f¸aÓ@ÖAñ ð ×'Ñ'¨´·±¸QÓ?€DÜ�TŽ{ˆØ×$Ñ$ S¨&©+°tÓ<ˆÜ× Ò  Õ1Ø×Ñ×-Ñ-ØœÐ%Iô÷ 2Ñ1ñ ð €M÷ 2Ö1ús   Ä"EÅ
E	c                 ó^   • UR                   S   nUS   nUR                  nU[        XXE5      4$ )zD
Parse the arguments of a np.empty(), np.zeros() or np.ones() call.
r   )rñ   ró   rD  )r…   r?   r^   rñ   ÚarrshapetypeÚarrshaper‡  s          rE   Ú_parse_empty_argsrH  =  s5   € ð —8‘8˜A‘;€LØ�A‰w€HØ�o‰o€GØ”L °<ÓJÐJÐJrG   c                 ó  • UR                   S   n[        U[        R                  5      (       aJ  [	        U5      " XUS   S9n[
        R                  " XR                  UR                  S9nUR                  U4$ UR                  S4$ )zS
Parse the arguments of a np.empty_like(), np.zeros_like() or
np.ones_like() call.
r   r  r  rv   )
rñ   rŸ   r   r    r€   r
   rÇ   ri   rt   ró   )r…   r?   r^   rñ   Úarytyper  r  s          rE   r»  r»  G  so   € ð
 �h‰h�q‰k€GÜ�'œ5Ÿ;™;×'Ñ'Ü˜Ô! '¸$¸q¹'ÑBˆÜ×%Ò% g¯y©yÀÇÁÑMˆØ�‰ Ð&Ð&à�‰ Ð"Ð"rG   c                 óz   • [        U[        R                  5      (       a  SU  S3n[        R                  " U5      eg )NzIf np.z0 dtype is a string it must be a string constant.)rŸ   r   ÚUnicodeTyper	   rì   )Úfnamerƒ   rÔ   s      rE   Ú_check_const_str_dtyperN  U  s:   € Ü�%œ×*Ñ*×+Ñ+Ø�u�gÐMÐNˆÜ× Ò  Ó%Ð%ð ,rG   c                 ó8   • UR                   nU" XU5      nS nXV4$ )Nc                 óV   • [        XX#5      u  pE[        XXE5      nUR                  5       $ rD  )rH  r+  rù   ©rZ  r?   r^   r[  r‡  r  r  s          rE   r�  Únumpy_empty_nd.<locals>.codegen`  s(   € Ü+¨E¸CÓH‰ˆÜ˜U¨WÓ=ˆØ�}‰}‹ÐrG   ©Úinstance_type)r^  Úty_shapeÚty_dtypeÚty_retty_refÚty_rettyr^   r�  s          rE   Únumpy_empty_ndrY  [  s(   € à×)Ñ)€HÙ
�8 |Ó
4€Còð ˆ<ÐrG   c                 ó’  ^• [        SU5        U[        L dB  [        U[        R                  5      (       a  UR
                  [        L d  [        U5      (       a  [        R                  nO[        U5      n[        U 5      nUb'  Ub$  [        R                  " X#SS9m[        4U4S jjnU$ SU  SU S3n[        R                  " U5      e)NrF  r­   r(  c                 ó   >• [        XT5      $ rD  )rY  )ri   rƒ   r�  s     €rE   rê   Úol_np_empty.<locals>.implu  s   ø€ Ü! %°Ó6Ð6rG   z.Cannot parse input types to function np.empty(ré  rê  )rN  ÚfloatrŸ   r   ÚFunctionÚ
typing_keyr   ÚdoubleÚty_parse_dtypeÚty_parse_shaper    r	   rì   )ri   rƒ   Únb_dtypert   rê   rÔ   r�  s         @rE   Úol_np_emptyrd  g  s§   ø€ ä˜7 EÔ*Ø”ŠÜ	�Eœ5Ÿ>™>×	*Ñ	*¨u×/?Ñ/?Ä5Ò/HÜ˜×ÑÜ—<‘<‰ä! %Ó(ˆä˜%Ó €DØÑ Ñ 0Ü—’ (¸cÑBˆä#÷ 	7àˆà>¸u¸gÀRÈÀwÈaÐPˆÜ× Ò  Ó%Ð%rG   c                 ó8   • UR                   nU" XU5      nS nXV4$ )Nc                 óV   • [        XX#5      u  pE[        XXE5      nUR                  5       $ rD  )r»  r+  rù   rQ  s          rE   r�  Ú$numpy_empty_like_nd.<locals>.codegen‚  s(   € Ü0°ÀÓM‰ˆÜ˜U¨WÓ=ˆØ�}‰}‹ÐrG   rS  )r^  Úty_prototyperV  rW  rX  r^   r�  s          rE   Únumpy_empty_like_ndri  }  s(   € à×)Ñ)€HÙ
�<¨<Ó
8€Còð ˆ<ÐrG   c                 óÖ  ^• [        SU5        [        U5      (       d  [        U5      nO.[        U [        R
                  5      (       a  U R                  nOU nUbg  [        U [        R
                  5      (       a/  U R                  S:w  a  U R                  OSnU R                  X#SS9mO8[        R
                  " USS5      mOSU  SU S	3n[        R                  " U5      eSU4S
 jjnU$ )NrÐ  r„  r­   F)rƒ   r-  rŒ  r   z3Cannot parse input types to function np.empty_like(ré  rê  c                 ó   >• [        XT5      $ rD  )ri  )r;  rƒ   r�  s     €rE   rê   Úol_np_empty_like.<locals>.impl�  s   ø€ Ü" 3¨uÓ5Ð5rG   rD  )rN  r   ra  rŸ   r   r    rƒ   r-  r†  r	   rì   )r;  rƒ   rc  r-  rÔ   rê   r�  s         @rE   Úol_np_empty_likerm  ‰  sÆ   ø€ ä˜<¨Ô/Ü�u×ÑÜ! %Ó(‰Ü	�CœŸ™×	%Ñ	%Ø—9‘9‰àˆØÑÜ�cœ5Ÿ;™;×'Ñ'Ø#&§:¡:°Ó#4�S—Z’Z¸#ˆFØ—H‘H 8ÀU�HÐK‰Eä—K’K ¨!¨SÓ1‰Eð Ø #˜u B u g¨Qð0ˆä× Ò  Ó%Ð%÷6à€KrG   c                 ó:   • [         R                  " U5      nS nX#4$ )Nc                 óÔ   • [        UR                  S   5      " XUS   5      n[        R                  " XR                  UR                  UR                  UR                  5      S5        g rè   )r€   rñ   r
   r¼  r¢   rÉ   r´   r¹   )rZ  r?   r^   r[  r  s        rE   r�  Ú(_zero_fill_array_method.<locals>.codegen¦  sI   € Ü˜Ÿ™ !™Ô% e°f¸Q±iÓ@ˆÜ�Š�w§¡¨'¯+©+°c·l±lÀCÇJÁJÓ*OØõ	rG   )r   r�  )r^  r\   r^   r�  s       rE   Ú_zero_fill_array_methodrq  ¢  s   € ä
�*Š*�TÓ
€Còð ˆ<ÐrG   Ú
_zero_fillc                 ó   • S nU$ )z?Adds a `._zero_fill` method to zero fill an array using memset.c                 ó   • [        U 5        g rD  )rq  rk  s    rE   rê   Ú ol_array_zero_fill.<locals>.impl°  s
   € Ü Õ%rG   rv   )r\   rê   s     rE   Úol_array_zero_fillrv  ­  s   € ò&à€KrG   c                 ó2   • [        SU5        [        4S jnU$ )Nr¦  c                 óN   • [         R                  " XS9nUR                  5         U$ ©NrD  )r¦  rF  rr  )ri   rƒ   r;  s      rE   rê   Úol_np_zeros.<locals>.impl¹  s   € Ü�hŠh�uÑ*ˆØ�‰ÔØˆ
rG   )rN  r]  ©ri   rƒ   rê   s      rE   Úol_np_zerosr|  µ  s   € ä˜7 EÔ*äô ð €KrG   c                 ó(   • [        SU5        SS jnU$ )NÚ
zeros_likec                 óN   • [         R                  " XS9nUR                  5         U$ ry  )r¦  rÐ  rr  )r9  rƒ   r;  s      rE   rê   Úol_np_zeros_like.<locals>.implÅ  s   € Ü�mŠm˜AÑ+ˆØ�‰ÔØˆ
rG   rD  ©rN  rm  s      rE   Úol_np_zeros_liker‚  À  s   € ä˜<¨Ô/ôð €KrG   c                 ó(   • [        SU5        SS jnU$ )NÚ	ones_likec                 ó„   • [         R                  " XS9nUR                  n[        [	        U5      5       H  nSX4'   M	     U$ ©NrD  rI   ©r¦  rÐ  r"  r:   r§   )r9  rƒ   r;  Úarr_flatrš   s        rE   rê   Úol_np_ones_like.<locals>.implÑ  s8   € Ü�mŠm˜AÑ+ˆØ—8‘8ˆÜœ˜X›Ö'ˆCØˆH‹Mñ (àˆ
rG   rD  r�  rm  s      rE   Úol_np_ones_likerŠ  Ì  s   € ä˜;¨Ô.ôð €KrG   c                 ól   ^• [        SU5        [        U5      (       d  [        U5      mOUmSU4S jjnU$ )NÚfullc                 óŒ   >• [         R                  " U T5      nUR                  n[        [	        U5      5       H  nXU'   M	     U$ rD  ©r¦  rF  r"  r:   r§   )ri   Ú
fill_valuerƒ   r;  rˆ  rš   rc  s         €rE   rŒ  Úimpl_np_full.<locals>.fullâ  s;   ø€ Ü�hŠh�u˜hÓ'ˆØ—8‘8ˆÜœ˜X›Ö'ˆCØ&�S‹Mñ (àˆ
rG   rD  )rN  r   ra  )ri   r�  rƒ   rŒ  rc  s       @rE   Úimpl_np_fullr‘  Ú  s3   ø€ ä˜6 5Ô)Ü�u×ÑÜ! %Ó(‰àˆ÷ð €KrG   c                 ó(   • [        SU5        SS jnU$ )Nrñ  c                 óˆ   • [         R                  " X5      nUR                  n[        [	        U5      5       H  nXU'   M	     U$ rD  r‡  )r9  r�  rƒ   r;  rˆ  rš   s         rE   rñ  Ú$impl_np_full_like.<locals>.full_likeï  s8   € Ü�mŠm˜AÓ%ˆØ—8‘8ˆÜœ˜X›Ö'ˆCØ&�S‹Mñ (àˆ
rG   rD  r�  )r9  r�  rƒ   rñ  s       rE   Úimpl_np_full_liker•  ë  s   € ä˜;¨Ô.ôð ÐrG   c                 ó(   • [        SU5        SS jnU$ )NÚonesc                 ó„   • [         R                  " XS9nUR                  n[        [	        U5      5       H  nSX4'   M	     U$ r†  rŽ  )ri   rƒ   r;  rˆ  rš   s        rE   rê   Úol_np_ones.<locals>.implÿ  s8   € Ü�hŠh�uÑ*ˆØ—8‘8ˆÜœ˜X›Ö'ˆCØˆH‹Mñ (àˆ
rG   rD  r�  r{  s      rE   Ú
ol_np_onesrš  ù  s   € ô ˜6 5Ô)ôð €KrG   c                 óˆ   ^• [        SU5        [        U5      (       d  [        U5      mO[        R                  mSU4S jjnU$ )NÚidentityc                 óh   >• [         R                  " X 4T5      n[        U 5       H	  nSX#U4'   M     U$ rª  )r¦  r¦  r:   )rJ  rƒ   r;  rq   rc  s       €rE   rœ  Ú"impl_np_identity.<locals>.identity  s3   ø€ Ü�hŠh˜�v˜xÓ(ˆÜ�q–ˆAØˆC�1�‹Iñ àˆ
rG   rD  )rN  r   ra  r   r`  )rJ  rƒ   rœ  rc  s      @rE   Úimpl_np_identityrŸ    s7   ø€ ä˜: uÔ-Ü�u×ÑÜ! %Ó(‰ä—<‘<ˆ÷ð
 €OrG   c                 ó   • g rD  rv   ©ÚNÚMs     rE   Ú_eye_none_handlerr¤    rb  rG   c                 óT   • [        U[        R                  5      (       a  S nU$ S nU$ )Nc                 ó   • U $ rD  rv   r¡  s     rE   rê   Ú$_eye_none_handler_impl.<locals>.impl  ó   € ØˆHrG   c                 ó   • U$ rD  rv   r¡  s     rE   rê   r§  "  r¨  rG   )rŸ   r   r  )r¢  r£  rê   s      rE   Ú_eye_none_handler_implrª    s)   € ä�!”U—^‘^×$Ñ$ò	ð
 €Kò	à€KrG   c                 óX  ^• Ub  [        U[        R                  5      (       a  [        R                  " [
        5      mO\[        U[        R                  [        R                  45      (       a  [        [        USU5      5      mO[        R                  " U5      mS S[
        4U4S jjnU$ )Nrƒ   r   c                 ó   >• [        X5      n[        R                  " X4T5      nUS:¼  a*  [        XU-
  5      n[	        U5       H  nSXWXr-   4'   M     U$ [        X-   U5      n[	        U5       H  nSXWU-
  U4'   M     U$ ró  )r¤  r¦  r¦  rÓ  r:   )	r¢  r£  rÚ   rƒ   Ú_Mr;  Údrq   rÖ  s	           €rE   rê   Únumpy_eye.<locals>.impl2  s†   ø€ Ü˜qÓ$ˆÜ�hŠh˜�w Ó#ˆØ�‹6Ü�A˜A‘v“ˆAÜ˜1–X�Ø !��q‘u�H“ñ ð ˆ
ô �A‘E˜2“ˆAÜ˜1–X�Ø !�˜‘E˜1�H“ñ àˆ
rG   )
rŸ   r   r  r¦  rƒ   r]  Ú	DTypeSpecrÔ  r   rr  )r¢  r£  rÚ   rƒ   rê   rÖ  s        @rE   Ú	numpy_eyer±  '  st   ø€ ð �}œ
 5¬%¯.©.×9Ñ9Ü�XŠX”e‹_‰Ü	�EœEŸO™O¬U¯\©\Ð:×	;Ñ	;ä”g˜e W¨eÓ4Ó5‰ä�XŠX�e‹_ˆà˜!¤5÷ ð €KrG   c                 óè   • [        U 5      (       d  [        R                  " S5      e[        U [        R
                  5      (       a-  U R                  S;  a  [        R                  " S5      eSS jnU$ g )Nú#The argument "v" must be array-like)rI   rd  zInput must be 1- or 2-d.c                 ób  • U R                   S:X  a†  U R                  nUS   [        U5      -   n[        R                  " X34U R
                  5      nUS:¼  a   [        X1-
  5       H  nX   XEX-   4'   M     U$ [        X1-   5       H  nX   XEU-
  U4'   M     U$ U R                  u  pgUS:  a  Xa-   nUS:”  a  Xq-
  n[        [        Xg5      S5      n[        R                  " X0R
                  5      nUS:¼  a  [        U5       H  nXX-   4   XE'   M     U$ [        U5       H  nXU-
  U4   XE'   M     U$ rÌ  )
rt   ri   r%  r¦  r¦  rƒ   r:   rÉ  rÓ  rF  )rÛ   rÚ   r®   rJ  r“  rq   ÚrowsÚcolss           rE   Ú	diag_implÚimpl_np_diag.<locals>.diag_implJ  s,  € Ø�v‰v˜‹{Ø—G‘G�Ø�a‘Dœ3˜q›6‘M�Ü—h’h ˜v q§w¡wÓ/�Ø˜“6Ü" 1¡5ž\˜Ø()©˜˜q™u˜H›ñ *ð
 �
ô # 1¡5ž\˜Ø()©˜ ™E 1˜H›ñ *à�
àŸW™W‘
�Ø�q“5Ø™8�DØ�q“5Ø™8�DÜœ˜D›¨Ó+�Ü—h’h˜q§'¡'Ó*�Ø˜“6Ü" 1žX˜Ø!" a¡e 8¡˜›ñ &ð
 �
ô # 1žX˜Ø!" q¡5¨! 8¡˜›ñ &à�
rG   rÏ  )r   r	   rì   rŸ   r   r    rt   ÚNumbaTypeError)rÛ   rÚ   r·  s      rE   Úimpl_np_diagrº  A  s`   € ä˜A×ÑÜ× Ò Ð!FÓGÐGä�!”U—[‘[×!Ñ!Ø�6‰6˜ÓÜ×'Ò'Ð(BÓCÐCô	ð6 Ðð? "rG   c                 ó(  ^^• [        U [        R                  5      (       d  Sn[        R                  " U5      e[        U R
                  [        R                  5      (       d  Sn[        R                  " U5      e[        U 5      mST-  mUU4S jnU$ )Nz5The argument "dimensions" must be a tuple of integersrÂ  c                 óö   >• [         R                  " T4U -   [         R                  S9nSnU  HH  n[         R                  " U[         R                  S9R	                  [        TX#5      5      nXAU'   US-  nMJ     U$ )NrD  r   rI   )r¦  rF  rö  Úarangerœ  r1   )Ú
dimensionsrý   rq   rƒ  rš   r¢  ri   s        €€rE   rê   Únumpy_indices.<locals>.implu  so   ø€ Ü�hŠh˜�t˜jÑ(´·±Ñ9ˆØˆÛˆCÜ—)’)˜C¤r§x¡xÑ0×8Ñ8Ü˜e QÓ,óˆCð �‰FØ�‰FŠAñ ð ˆ
rG   )rŸ   r   r°  r	   rì   rƒ   r¡   r§   )r¾  rÔ   rê   r¢  ri   s      @@rE   Únumpy_indicesrÀ  h  su   ù€ ä�j¤%§.¡.×1Ñ1ØEˆÜ× Ò  Ó%Ð%ä�j×&Ñ&¬¯©×6Ñ6ØEˆÜ× Ò  Ó%Ð%äˆJ‹€AØ�1‰H€Eö
ð €KrG   c                 óÚ   • [        U 5      (       d  Sn[        R                  " U5      e[        U[        [
        R                  45      (       d  Sn[        R                  " U5      eSS jnU$ )Nr³  z#The argument "k" must be an integerc                 óf  • [         R                  " U 5      n U R                  5       n [        U 5      n[	        U5      nX#-   n[         R
                  " XD4U R                  5      n[         R                  " SU* 5      n[         R                  " SU5      n[        U5       H  nX   XVU-   Xx-   4'   M     U$ rè   )	r¦  r§  r¥  r§   r%  r¦  rƒ   Úmaximumr:   )	rÛ   rÚ   r®   Úabs_krJ  rý   rq   ÚjÚts	            rE   rê   Únumpy_diagflat.<locals>.implŽ  s”   € Ü�JŠJ�q‹MˆØ�G‰G‹IˆÜ�‹FˆÜ�A“ˆØ‰IˆÜ�hŠh˜�v˜qŸw™wÓ'ˆÜ�JŠJ�q˜1˜"ÓˆÜ�JŠJ�q˜!ÓˆÜ�q–ˆAØ !¡ˆC�A‘�q‘u�Óñ ð ˆ
rG   rÏ  )r   r	   rì   rŸ   rÄ   r   r¡   )rÛ   rÚ   rÔ   rê   s       rE   Únumpy_diagflatrÈ  „  s[   € ä˜A×ÑØ3ˆÜ× Ò  Ó%Ð%ä�aœ#œuŸ}™}Ð-×.Ñ.Ø3ˆÜ× Ò  Ó%Ð%ôð €KrG   c                 ó~  • US;   d   eUS:X  a6  Sn[        SU 5       H#  nSU-  nUSU SSR                  U5       S	3-  nM%     O5S
n[        SU 5       H#  nSU-  nUSU SSR                  U5       S3-  nM%     [        R                  " U5      n[	        U[        5       5        [        5       SU 3   n[        U5      $ )N)r  rÔ  r  zv
            def _getitem(a, idx, axis):
                if axis == 0:
                    return a[idx, ...]
        rI   )Ú: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
            r3  )r:   rë  ÚtextwrapÚdedentÚexecÚglobalsr'   )rt   rÕ  rƒ  rq   Úlsts        rE   Ú"generate_getitem_setitem_with_axisrÐ  Ÿ  sø   € ØÐ)Ó)Ð)Ð)àˆyÓðˆô
 �q˜$–ˆAØ˜1‘*ˆCØð Ø˜Sð !Ø"Ÿi™i¨›nÐ-ð .ðñ ŠBò  ðˆô �q˜$–ˆAØ˜1‘*ˆCØð Ø˜Sð !Ø—y‘y “~Ð&ð 'ðñ ŠBñ  ô 
�Š˜Ó	€BÜˆŒW‹YÔÜ	‹�Q�t�f�:Ñ	€BÜ˜BÓÐrG   Útakec                 ó  ^^^^^	• [         R                  " U5      (       aó  [        U [        R                  5      (       a&  [        U[        R
                  5      (       a  SS jnU$ [        U [        R                  5      (       a8  [        U[        R                  5      (       a  UR                  S:H  mSU4S jjnU$ [        U [        R                  5      (       a7  [        U[        R                  [        R                  45      (       a  SS jnU$ g g [        U [        R                  5      (       aJ  [        U[        R
                  5      (       a+  SU R                  S-
  -  m	[        U	4S j5       mSU4S jjnU$ [        U [        R                  5      (       an  [        U[        R                  [        R                  [        R                  45      (       a/  U R                  n[        US	5      m[        US
5      mSUU4S jjnU$ g g )Nc                 ó‚   • XR                   S-
  :”  d  XR                   * :  a  [        S5      eU R                  5       U   $ )NrI   úIndex out of bounds)r›   Ú
IndexErrorr¥  )r9  rª   rä   s      rE   Ú	take_implÚnumpy_take.<locals>.take_implÈ  s8   € ØŸf™f q™jÓ)¨W¿¹°wÓ->Ü$Ð%:Ó;Ð;Ø—w‘w“y Ñ)Ð)rG   r  c                 ó’  >• [         R                  " UR                  U R                  S9nT	(       a  UR	                  5       nOUn[         R
                  " U5      nSnU R                  5       nU H;  nX€R                  S-
  :”  d  X€R                  * :  a  [        S5      eXx   X6'   US-   nM=     UR                  UR                  5      $ )NrD  r   rI   rÔ  )
r¦  rF  r›   rƒ   r†  r>  r¥  rÕ  rœ  ri   )
r9  rª   rä   r“  ÚwalkerÚitrq   r"  r~  ÚF_orders
            €rE   rÖ  r×  Ñ  s¡   ø€ Ü—h’h˜wŸ|™|°1·7±7Ñ;�ÞØ$Ÿ\™\›^‘Fà$�FÜ—Y’Y˜vÓ&�Ø�Ø—w‘w“y�Û�AØŸF™F Q™JÓ'¨1·±¨w«;Ü(Ð)>Ó?Ð?Ø!™W�C‘FØ˜A™’Añ	 ð
 —{‘{ 7§=¡=Ó1Ð1rG   c                 óZ   • [         R                  " U5      n[         R                  " X5      $ rD  )r¦  rÎ   rÑ  )r9  rª   rä   Úconverts       rE   rÖ  r×  ä  s   € ÜŸ(š( 7Ó+�Ü—w’w˜qÓ*Ð*rG   rÏ  rI   c                 óR  >• [        T5      nSnU[        U R                  5      :  a  U R                  U   S:X  d   U R                  5       e[        [        U R                  5      5       H*  nU R                  U   nXA:w  d  M  [	        X#U5      nUS-  nM,     U R                  U5      $ ró  )rÂ   r§   ri   r:   r1   rœ  )r¹  rä   rN  rÅ  rš   r®   rÆ  s         €rE   Ú_squeezeÚnumpy_take.<locals>._squeezeï  s�   ø€ ä˜A“h�Ø�Øœc !§'¡'›lÓ*¨q¯w©w°t©}ÀÓ/AÐJÀ1Ç7Á7ÓJÐAÜ ¤ Q§W¡W£Ö.�CØŸ™ ™�AØ•{Ü+¨C°AÓ6˜Ø˜Q™šñ	 /ð
 —y‘y “~Ð%rG   c                 ó’   >• [         R                  " X4US9nU R                  S:X  a  US   $ US:  a  X R                  -  nT" X25      $ )Nr·  rI   r   )r¦  rÑ  rt   )r9  rª   rä   r¹  rß  s       €rE   rÖ  r×  û  sH   ø€ Ü—G’G˜A˜z°Ñ5�Ø—6‘6˜Q“;ð ˜Q™4�KØ˜!“8ØŸF™F‘N�DÙ Ó(Ð(rG   r  rÔ  c                 ót  >• UnUS:  a  X R                   -  nUS:  d  X R                   :¼  a  SU SU R                    3n[        U5      e[        U R                  U[	        U5      5      n[
        R                  " XPR                  S9n[        [	        U5      5       H  nT	" XU   U5      nT
" XgX(5        M     U$ )Nr   zaxis z) is out of bounds for array of dimension rD  )	rt   r¿   r1   ri   r§   r¦  rF  rƒ   r:   )r9  rª   rä   r2  rÔ   ri   rþ   rq   r  Ú_getitemÚ_setitems            €€rE   rÖ  r×    s«   ø€ Ø�Ø˜!“8ØŸF™F‘N�Dà˜!“8˜t§v¡v›~Ø" 2 $ð '+Ø+,¯6©6¨(ð4�Cä$ S›/Ð)ä% a§g¡g¨t´S¸³\ÓB�Ü—h’h˜u¯G©GÑ4�Üœs 7›|Ö,�AÙ  ¨A¡J°Ó5�AÙ˜S TÖ-ñ -ð �
rG   rD  )r
   r   rŸ   r   r    r¡   r-  rO  rQ  rt   r'   rÐ  )
r9  rª   rä   rÖ  rt   rÛ  rã  rä  rß  rÆ  s
        @@@@@rE   Ú
numpy_takerå  Â  sˆ  ü€ ô ×Ò˜4× Ñ Ü�aœŸ™×%Ñ%¬*°W¼e¿m¹m×*LÑ*Lô*ð Ðä�aœŸ™×%Ñ%¬*°W¼e¿k¹k×*JÑ*JØ—n‘n¨Ñ+ˆG÷2ð Ðä�aœŸ™×%Ñ%Ü˜7¤U§Z¡Z´·±Ð$A×BÑBô+ð Ðð	 Cð &ô �aœŸ™×%Ñ%¬*°W¼e¿m¹m×*LÑ*LØ˜Ÿ™ ™
Ñ#ˆAô
 ô	&ó ð	&÷)ð Ðä�aœŸ™×%Ñ%Ü˜7¤U§[¡[´%·*±*¼e¿o¹oÐ$N×OÑOà—6‘6ˆDä9¸$À	ÓJˆHÜ9¸$À	ÓJˆH÷ð ð  Ðð/ Pð &rG   c                  óü  • U  Vs/ s H&  n[        U[        R                  5      (       a  M$  UPM(     nn[        S U 5       5      (       a  [        R                  nU$ [        S U 5       5      (       a  [        R
                  nU$ [        [        SS[        R                  " [        5      R                  -  -  5      nU Vs/ s H  n[        R                  " U5      PM     nn[        Xd/-   5      nU$ s  snf s  snf )Nc              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frD  rW  ©rF  r9  s     rE   rH  Ú _arange_dtype.<locals>.<genexpr>(  s   é € Ð
8²¨AŒ:�aœŸ™×'Ð'²ùrJ  c              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frD  )rŸ   r   ÚFloatrè  s     rE   rH  ré  *  s   é € Ð8²¨AŒZ˜œ5Ÿ;™;×'Ð'²ùrJ  zint%sr  )rŸ   r   r  rK  Ú
complex128r»   rr  r¦  rƒ   rÄ   r´   Ú	unliteralrÉ  )rñ   r9  Úboundsrƒ   ÚNPY_TYr~  Úunliteral_boundss          rE   Ú_arange_dtyperñ  %  sÐ   € ÙÓCš�A¤Z°´5·>±>×%B�a™€FÐCä
Ñ
8±Ó
8×8Ñ8Ü× Ñ ˆð& €Lô% 
Ñ8±Ó8×	8Ñ	8Ü—‘ˆð" €Lô œ ¨1¬r¯xªx¼«}×/EÑ/EÑ+EÑ FÓGˆñ 9?Ó?º°1œEŸOšO¨AÖ.¹ÐÐ?ÜÐ$ yÑ0Ó1ˆà€Lùò- Dùò& @s   …#C4¬C4Ã C9c          	      ó*  ^^^^	^
• [        U[        R                  5      (       a  UR                  n[        U[        R                  5      (       a  UR                  n[        U[        R                  5      (       a  UR                  nUc  [        R                  nUc  [        R                  nUc  [        R                  n[        U [        R
                  5      (       a�  [        U[        R                  [        R
                  45      (       a^  [        U[        R                  [        R
                  45      (       a/  [        U[        R                  [        R                  45      (       d  g [        U[        R                  5      (       a  [        XU5      m	OUR                  m	[        XU4 Vs/ s H  n[        U[        R                  5      PM     sn5      m
[        U SS 5      m[        USS 5      m[        USS 5      mSUUUU	U
4S jjnU$ s  snf )Nrí   c                óà  >• Tb  TOU nTb  TOUnTb  TOUnUb  UOSnUc  SUp˜OXEp˜US:X  a  [        S5      eX˜-
  U-  n
[        [        R                  " U
R                  5      5      nTSL a?  [        [        R                  " U
R
                  5      5      n[        [        XË5      S5      nO[        US5      n[        R                  " UT5      nUn[        U5       H  nUUU-  -   UU'   M     U$ )NrI   r   zMaximum allowed size exceededT)r¿   rÄ   ÚmathÚceilr^  r`  rÉ  rÓ  r¦  rF  r:   )r(  rú  rì  rƒ   Ú	lit_startÚlit_stopÚlit_stepÚ_stepÚ_startÚ_stopÚnitems_cÚnitems_rÚnitems_ir¹   r;  r‘   rq   Ústart_valueÚ
step_valueÚ
stop_valueÚ
true_dtypeÚuse_complexs                    €€€€€rE   rê   Únp_arange.<locals>.implb  só   ø€ à#.Ñ#:‘KÀˆ	Ø!+Ñ!7‘:¸TˆØ!+Ñ!7‘:¸Tˆà$Ñ0‘°aˆØÑØ˜y‘Eà%�Eà�A‹:ÜÐ<Ó=Ð=à‘N eÑ+ˆÜ”t—y’y §¡Ó/Ó0ˆð ˜$ÒÜœ4Ÿ9š9 X§]¡]Ó3Ó4ˆHÜœ˜XÓ0°!Ó4‰Fä˜ 1Ó%ˆFÜ�hŠh�v˜zÓ*ˆØˆÜ�v–ˆAØ˜A ™IÑ&ˆC�‹Fñ àˆ
rG   r  )rŸ   r   ÚOptionalr;   r�  rÔ  r  r°  rñ  rƒ   rK  rX  rr  )r(  rú  rì  rƒ   r~  rê   rÿ  r   r  r  r  s         @@@@@rE   Ú	np_aranger  ?  s{  ü€ ä�$œŸ™×'Ñ'Ø�y‰yˆÜ�$œŸ™×'Ñ'Ø�y‰yˆÜ�%œŸ™×(Ñ(Ø—
‘
ˆà�|Ü�z‰zˆØ�|Ü�z‰zˆØ�}Ü—
‘
ˆä�uœeŸl™l×+Ñ+Ü�tœeŸn™n¬e¯l©lÐ;×<Ñ<Ü�tœeŸn™n¬e¯l©lÐ;×<Ñ<Ü˜5¤5§>¡>´5·?±?Ð"C×DÑDàä�%œŸ™×(Ñ(Ü" 5°Ó5‰
à—[‘[ˆ
äØ!&¨dÑ 3ó5Ú 3˜1ô " !¤U§]¡]Ö3Ù 3ñ5ó 6€Kô ˜% °$Ó7€KÜ˜˜°Ó5€JÜ˜˜°Ó5€J÷ó ð< €KùòK5s   Æ0$Hc                 ó‚  ^• [        S X4 5       5      (       d  g [        U[        [        R                  45      (       d  Sn[
        R                  " U5      e[        S X4 5       5      (       a7  [        R                  (       a  [        R                  mO![        R                  mO[        R                  mSU4S jjnU$ )Nc              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frD  )rŸ   r   rÔ  rY  s     rE   rH  Ú!numpy_linspace.<locals>.<genexpr>…  s   é € ÐFº°Œz˜#œuŸ|™|×,Ð,ºùrJ  rU  c              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frD  rW  rY  s     rE   rH  r	  Œ  r[  rJ  c                 óú   >• [         R                  " UT5      nU S-  n US-  nUS:X  a  U$ US-
  nUS:”  a7  X-
  n[         R                  " XT5      n[        SU5       H  nXU-  -   X7'   M     OXS'   US:”  a  XS'   U$ )Ng      ð?r   rI   rJ  )r¦  rF  Údivider:   )	r(  rú  rO  r;  ÚdivÚdeltarì  rq   rƒ   s	           €rE   rM  Ú numpy_linspace.<locals>.linspace•  s’   ø€ Ü�hŠh�s˜EÓ"ˆð ˜‘ˆØ�c‰zˆØ�!‹8ØˆJØ�A‰gˆØ�‹7Ø‘LˆEÜ—9’9˜UÓ(ˆDÜ˜1˜c–]�Ø d¡(Ñ+�“ò #ð �‰FØ�‹7Ø�‰GØˆ
rG   rQ  )r²  rŸ   rÄ   r   r¡   r	   rì   rK  r   ÚUSE_LEGACY_TYPE_SYSTEMrì  Únp_complex128r»   )r(  rú  rO  rÔ   rM  rƒ   s        @rE   Únumpy_linspacer  ƒ  sŒ   ø€ äÑF¸¹ÓF×FÑFØä�cœC¤§¡Ð/×0Ñ0Ø5ˆÜ× Ò  Ó%Ð%ä
Ñ
C°e±]Ó
C×CÑCÜ×(×(Ü×$Ñ$‰Eä×'Ñ'‰Eä—‘ˆ÷ð, €OrG   c           
      óÒ  • UR                   S   n[        U5      " XUS   S9n[        R                  " XR                  5      nUR
                  n[        XXv5      nUR                  n	UR                  n
UR                  S;   d   eUR                  UR                  :X  a,  [        R                  " XX•R                  UR                  SS9  Oè[        R                  " XR                  5      n[        R                  " XR                  5      nU R                  [        R                  5      n[        R                   " XU5       n[        R"                  " XU	XkUR                  U5      n[        R"                  " XU
XlUR                  U5      nUR%                  UR'                  U5      U5        SSS5        [)        XUR
                  UR+                  5       5      $ ! , (       d  f       N3= f)z
Array copy.
r   r  r9  rI   r‰   N)rñ   r€   r
   rÇ   ri   ró   r+  r¢   r-  Ú
raw_memcpyr¹   r´   r³   rÀ   r   r–   ri  r,  r  r@   r"   rù   )r…   r?   r^   rñ   rJ  r  r  Úrettyper“  r[  r  r]  r  rÕ   rª   rS  rl  s                    rE   Ú_array_copyr  ®  sx  € ð �h‰h�q‰k€GÜ
�WÔ
˜g°d¸1±gÑ
>€CÜ×!Ò! '¯9©9Ó5€Fà�o‰o€GÜ
˜¨7Ó
;€Cà�x‰x€HØ—‘€Ià�>‰>˜TÓ!Ð!Ð!Ø‡~�~˜Ÿ™Ó'ä×Ò˜7¨x¿¹ØŸ<™<¨qó	2ô ×*Ò*¨7·K±KÓ@ˆÜ×+Ò+¨G·[±[ÓAˆØ×'Ñ'¬¯
©
Ó3ˆä×Ò˜w°Ô7¸7Ü×/Ò/°À(Ø06Ø07·±ÀóIˆGô ×0Ò0°À9Ø17Ø18·±ÀóJˆHð �M‰M˜'Ÿ,™, wÓ/°Ô:÷ 8ô ˜G¨c¯o©o¸s¿}¹}»ÓOÐO÷ 8Õ7ús   ÅA*GÇ
G&c                 ó¬   • [        U[        R                  5      (       d   eUR                  S:X  a  SOSnUR	                  USS9nU" U5      nU[
        4$ )Nr  r­   F)r-  rŒ  )rŸ   r   r    r-  r†  r  )r’  r9  r-  r“  r^   s        rE   Ú_array_copy_intrinsicr  Ó  sP   € ä�aœŸ™×%Ñ%Ð%Ð%Ø—H‘H “O‰S¨€FØ
�&‰&˜¨ˆ&Ð
/€CÙ
ˆa‹&€CØ”ÐÐrG   z
array.copyc                 ó   • [        XX#5      $ rD  )r  r"  s       rE   Ú
array_copyr  Ü  s   € ä�w¨Ó3Ð3rG   c                 ó    • [        U 5      (       d  [        R                  " S5      e[        U [        R
                  5      (       a  S nU$ S nU$ )Nr£  c                 ó   • [        U 5      $ rD  )r  rÇ  s    rE   Ú
numpy_copyÚ#impl_numpy_copy.<locals>.numpy_copyè  s   € Ü(¨Ó+Ð+rG   c                 ó.   • [         R                  " U 5      $ rD  )r¦  r§  rÇ  s    rE   r  r  ë  s   € ä—:’:˜a“=Ð rG   )r   r	   rì   rŸ   r   r    )r9  r  s     rE   Úimpl_numpy_copyr   á  sR   € ä˜A×ÑÜ× Ò ð "1ó 2ð 	2ô �!”U—[‘[×!Ñ!ò	,ð Ðò	!ð ÐrG   c           	      óX  • UR                   nUR                  S   nUR                  U:X  d   S5       eUR                  S:X  aþ  UR                  S:X  d   e[	        U5      " XUS   S9n[	        U5      " X5      nU R                  U[        R                  " [        R                  S5      S5      n	U R                  U[        R                  " [        R                  S5      UR                  45      n
[        X‡R                  XšUR                  UR                  UR                  5        [        XXXR!                  5       5      $ UR                  UR                  :X  d   UR                  S:X  a  UR                  S;   a  [        XXSS   5      $ UR                  S:X  aÓ  US;   d   eUS:X  a  ["        O[$        n['        UU UUUS   5      nUR)                  U5       u  pÞU   [        XUUS   5      nUR*                  nS	S	S	5        U   [-        XX#5      nUR*                  nS	S	S	5        S	S	S	5        UR/                  WR0                  5      nUR3                  UW5        UR3                  WW5        U$ [-        XX#5      $ ! , (       d  f       N†= f! , (       d  f       Nt= f! , (       d  f       N}= f)
zX
Common logic for layout conversion function;
e.g. ascontiguousarray and asfortranarray
r   z return-type has incorrect layoutrI   r  rÂ  r9  r„  r­   N)ró   rñ   r-  rt   r€   rA  r   r°  r–   rø  r´   rÜ   r¢   r²   rµ   r!   rù   r   r   rª  rQ  Úblockr  Úphir;   Úadd_incoming)r…   r?   r^   rñ   Úoutput_layoutr�  rÞ   r  r“  ri   r³   Ú
check_funcr‰  ÚthenÚorelseÚout_thenÚthen_blkÚ
out_orelseÚ
orelse_blkÚret_phis                       rE   Ú_as_layout_arrayr.  ñ  s:  € ð
 �O‰O€EØ�H‰H�Q‰K€EØ�<‰<˜=Ó(ÐLÐ*LÓLÐ(à‡z�z�Qƒà�z‰z˜Q‹ÐˆÜ˜Ô ¸¸Q¹Ñ@ˆÜ˜Ô Ó1ˆà×,Ñ,Ø”U—^’^¤E§J¡J°Ó2°Dó
ˆð ×$Ñ$ WÜ%*§^¢^´E·J±JÀÓ%BØ&)§l¡l _ó6ˆô 	�sŸH™H e°c·l±lØ—{‘{ C§J¡Jô	0ä  °5¿-¹-»/ÓJÐJà
�,‰,˜%Ÿ,™,Ó
&Ø—
‘
˜a“ E§L¡L°DÓ$8ä  °5¸q¹'ÓBÐBð �<‰<˜3Óð ! DÓ(Ð(Ð(Ø*7¸3Ó*>�ÄJˆJÜ.¨zØ/6Ø/6Ø/4Ø/3°A©wó	8ˆIð
 —‘ Ô+©~°âÜ0°À5Ø15°a±ó :�Hà&Ÿ}™}�H÷ ò
 Ü!,¨W¸sÓ!I�JØ!(§¡�J÷ ÷ ,ð —k‘k (§-¡-Ó0ˆGØ× Ñ  ¨8Ô4Ø× Ñ  ¨ZÔ8ØˆNô ˜w°Ó;Ð;÷! •Tú÷
 •Vú÷ ,Õ+ús<   ÇJÇI9Ç9
JÈJ
ÈJÉ9
J	ÊJÊ

J	ÊJÊ
J)c                 óì   ^• [        T[        R                  5      (       d  [        R                  " T5      eUR                  TR                  [        UR                  S5      S9nU" UT5      nUU4S j4$ )NrI   )r-  rt   c                 ó.   >• [        XX#TR                  S9$ )N)r%  )r.  rí   )rÕ  rÞ  r®   r9  r%  s       €rE   rÀ  Ú,_as_layout_array_intrinsic.<locals>.<lambda>:  s   ø€ Ô#3Ø	ˆa -×"=Ñ"=ò$?rG   )	rŸ   r   r&   r	   ÚRequireLiteralValuer†  rí   rÉ  rt   )r’  r9  r%  r“  r^   s     `  rE   Ú_as_layout_array_intrinsicr3  2  sg   ø€ ä�m¤U×%8Ñ%8×9Ñ9Ü×(Ò(¨Ó7Ð7à
�&‰&˜×3Ñ3¼#¸a¿f¹fÀa».ˆ&Ð
I€CÙ
ˆa�Ó
€Càô ?ð ?ð ?rG   c                 óþ   • [        U 5      (       d  [        R                  " S5      e[        U [        R
                  [        R                  45      (       a  S nU$ [        U [        R                  5      (       a  S nW$ )Nr£  c                 óV   • [         R                  " [         R                  " U 5      5      $ rD  )r¦  ÚascontiguousarrayrÎ   rÇ  s    rE   rê   Ú%array_ascontiguousarray.<locals>.implD  s   € Ü×'Ò'¬¯ª°«Ó4Ð4rG   c                 ó   • [        U S5      $ ©Nr­   ©r3  rÇ  s    rE   rê   r7  G  ó   € Ü-¨a°Ó5Ð5rG   ©r   r	   rì   rŸ   r   rÔ  r  r    r0  s     rE   Úarray_ascontiguousarrayr=  >  sb   € ä˜A×ÑÜ× Ò Ð!FÓGÐGä�!”e—l‘l¤E§M¡MÐ3×4Ñ4ò	5ð
 €Kô 
�A”u—{‘{×	#Ñ	#ò	6à€KrG   c                 ó   • [        U 5      (       d  [        R                  " S5      e[        U [        R
                  [        R                  45      (       a  S nU$ [        U [        R                  5      (       a  S nU$ g )Nr£  c                 óV   • [         R                  " [         R                  " U 5      5      $ rD  )r¦  ÚasfortranarrayrÎ   rÇ  s    rE   rê   Ú"array_asfortranarray.<locals>.implR  s   € Ü×$Ò$¤R§X¢X¨a£[Ó1Ð1rG   c                 ó   • [        U S5      $ )Nr  r:  rÇ  s    rE   rê   rA  V  r;  rG   r<  r0  s     rE   Úarray_asfortranarrayrC  L  sc   € ä˜A×ÑÜ× Ò Ð!FÓGÐGä�!”e—l‘l¤E§M¡MÐ3×4Ñ4ò	2àˆÜ	�A”u—{‘{×	#Ñ	#ò	6àˆð 
$rG   zarray.astypec           
      ód  • UR                   S   n[        U5      " XUS   S9n[        R                  " XR                  5      nUR
                  n[        XXv5      nUR                  n	UR                  n
[        R                  " XR                  5      n[        R                  " XR                  5      nU R                  [        R                  5      n[        R                  " XU5       n[        R                  " XU	XkUR                  U5      n[        R                  " XU
XlUR                  U5      n[        XXO5      nU R!                  UUUR"                  UR"                  5      n[%        XUUU5        S S S 5        ['        XUR
                  UR)                  5       5      $ ! , (       d  f       N3= frø  )rñ   r€   r
   rÇ   ri   ró   r+  r¢   r³   rÀ   r   r–   ri  r,  r-  rŽ   r•   rƒ   r’   r"   rù   )r…   r?   r^   rñ   rJ  r  r  r  r“  r[  r  r]  r  rÕ   rª   rS  rl  Úitems                     rE   Úarray_astyperF  [  sT  € ð �h‰h�q‰k€GÜ
�WÔ
˜g°d¸1±gÑ
>€CÜ×!Ò! '¯9©9Ó5€Fà�o‰o€GÜ
˜¨7Ó
;€Cà�x‰x€HØ—‘€Iä×&Ò& w·±Ó<€KÜ×'Ò'¨·±Ó=€LØ×#Ñ#¤E§J¡JÓ/€Fä	×	Ò	˜7¨FÔ	3°wÜ×+Ò+¨G¸hØ,2Ø,3¯N©N¸GóEˆô ×,Ò,¨W¸yØ-3Ø-4¯^©^¸WóFˆô ˜¨7Ó<ˆØ�|‰|˜G T¨7¯=©=¸'¿-¹-ÓHˆÜ�7 W¨d°HÔ=÷ 
4ô ˜G¨c¯o©o¸s¿}¹}»ÓOÐO÷ 
4Õ	3ús   Ã)BF!Æ!
F/c                 óf   • [        U[        R                  5      (       d   e[        U5      nS nX#4$ )Nc           
      óˆ  • UR                   u  n[        U5      nU" XUS   5      nUR                  nUR                  XvR                  5      n[        XU5      n	UR                  (       aW  UR                  S:X  aG  [        R                  " XR                  UR                  UR                  U5        U	R7                  5       $ [        R                  " XR                  5      n
[        R                  " XR                  5      nUR                  nU R                  [        R                   5      n[        R"                  " XSSS9n[        R$                  " XU5       n[        R&                  " XUR                  X«XÏ5      nUR)                  UU	R                  R*                  5      nUR-                  U5      nUR/                  U	R                  U/5      n[        R0                  " UUUU5        UR3                  UR5                  UU5      U5        S S S 5        U	R7                  5       $ ! , (       d  f       U	R7                  5       $ = f)Nr   r­   ÚbyteptrT)ÚnamerR   )rñ   r€   r´   rÉ   r¹   r/   r�  r-  r
   r  r¢   rÇ   ri   r³   rÀ   r   r–   rZ   ri  r,  rc  r;   r@   r.  rñ  r  r°  rù   )r…   r?   r^   rñ   rG  r:  r;  r´   r„  Úbstrri   r³   r-  rÕ   Úbyteidxrª   ro   Úsrcptrrš   Údestptrs                       rE   r�  Ú)_array_tobytes_intrinsic.<locals>.codegen  sµ  € Ø�x‰x‰ˆÜ˜2“ˆÙ�G d¨1¡gÓ.ˆà—<‘<ˆØ—‘˜X§z¡zÓ2ˆä# G°fÓ=ˆà�N�N˜rŸy™y¨CÓ/Ü×Ò˜w¯	©	°3·8±8¸S¿Z¹ZØ'ô)ð. �~‰~ÓÐô) ×(Ò(¨·)±)Ó<ˆEÜ×*Ò*¨7·K±KÓ@ˆGØ—Y‘YˆFØ×+Ñ+¬E¯J©JÓ7ˆFä×)Ò)Ø i°tñˆGô ×"Ò" 7°6Ô:¸gÜ×/Ò/Ø c§h¡h°Àó�ð !Ÿ™¨¨d¯i©i¯n©nÓ=�à—l‘l 7Ó+�Ø!Ÿ+™+ d§i¡i°#°Ó7�ä—’˜w¨°¸ÔBØ—‘˜gŸk™k¨#¨xÓ8¸'ÔB÷ ;ð �~‰~ÓÐ÷ ;Ô:ð �~‰~ÓÐús   ÅB3H$È$
I)rŸ   r   r    r0   )r’  rÞ  r^   r�  s       rE   Ú_array_tobytes_intrinsicrP  z  s2   € ä�aœŸ™×%Ñ%Ð%Ð%Ü
�Q‹-€Cò" ðF ˆ<ÐrG   r  c                 óL   • [        U [        R                  5      (       a  S nU$ g )Nc                 ó   • [        U 5      $ rD  )rP  rÍ  s    rE   rê   Ú impl_array_tobytes.<locals>.impl¨  s   € Ü+¨CÓ0Ð0rG   rE  rÏ  s     rE   Úimpl_array_tobytesrT  ¥  s"   € ä�#”u—{‘{×#Ñ#ò	1àˆð $rG   c                 ó:   • UR                   nU" XX4U5      nS nXx4$ )Nc           
      ó   • UR                   S   nUS   nUS   nUR                  n[        U5      " XUS   S9n[        U5      n	U	" X5      n
U
R                  n[	        X5      n[        UR                  R                  U5      nUR                  UR                  UR                  5      nUR                  Xm5      nUR                  Xï5      nUR                  SU[        R
                  " UR                  S5      5      nSnUR                  USS9   U R                  R                  U[         U45        S S S 5        UR                  SU[        R
                  " UR                  S5      5      nUR#                  Xí5      n[$        R&                  " UU5      nUR                  USS9   S	nU R                  R                  U[         U45        S S S 5        UR)                  U5       u  nnU   UR*                  nUR-                  Xí5      nS S S 5        U   UR*                  nS S S 5        S S S 5        UR/                  UR                  5      nUR1                  WW5        UR1                  UW5        UR                  UU5      nUR3                  S
UU5      nUR                  USS9   SnU R                  R                  U[         U45        S S S 5        [$        R4                  " UU/5      n[$        R4                  " X/5      nUR7                  UR8                  U/5      nUR;                  UU R=                  UR?                  S5      5      5      n[A        U
UUUUURB                  URD                  S9  U
RG                  5       n [I        XUR                  U 5      $ ! , (       d  f       GNi= f! , (       d  f       GNä= f! , (       d  f       GN¹= f! , (       d  f       GN´= f! , (       d  f       GN¾= f! , (       d  f       GN/= f)Nr   rd  rq  r  r  z=offset must be non-negative and no greater than buffer lengthFr^  z.buffer size must be a multiple of element sizer7  z%buffer is smaller than requested sizer¢   r:  )%rñ   ró   r€   rº   r‡   r   r´   r;   rÉ   r¹   r  r  r   r  r`  ra  r¿   Úsremr
   Úis_not_nullrQ  Úbasic_blockÚsdivr#  r$  r  rn   r.  r¢   rc  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_largeri   r³   r¢   rý   s!                                    rE   r�  Únp_frombuffer.<locals>.codegen²  sZ  € Ø—‘˜‘ˆØ˜‘Gˆ	Ø˜!‘Wˆ
Ø—‘ˆä˜Ô ¸¸Q¹Ñ@ˆÜ Ó&ˆ
Ù˜WÓ.ˆØ×*Ñ*ˆä Ó/ˆÜ˜sŸ|™|×0Ñ0°(Ó;ˆØ—‘˜SŸZ™Z¨¯©Ó6ˆØ Ÿ™ ZÓ=ˆØ—‘˜VÓ4ˆà$×0Ñ0ØØÜ�KŠK˜	Ÿ™¨Ó*ó
Ðð NˆØ�_‰_Ð/¸ˆ_Ò>Ø×Ñ×-Ñ-¨g´zÀCÀ6ÔJ÷ ?ð  '×2Ñ2ØØÜ�KŠK˜	Ÿ™¨Ó*ó 
Ðð �l‰l˜6Ó/ˆÜ!×-Ò-¨g°sÓ;ˆØ�_‰_˜_°Uˆ_Ò;ØBˆCØ×Ñ×-Ñ-¨g´zÀCÀ6ÔJ÷ <ð
 �_‰_Ð1Ô2Ñ6N°zÀ:ÚØ×+Ñ+�Ø#ŸL™L¨Ó=�	÷ ò Ø!×-Ñ-�÷ ÷	 3ð —{‘{ 9§>¡>Ó2ˆØ×!Ñ! )¨UÔ3Ø×!Ñ! )¨WÔ5ð #Ÿ;™; |°[ÓAÐØ×,Ñ,¨SÐ2BÀFÓKˆà�_‰_˜\°%ˆ_Ò8Ø9ˆCØ×Ñ×-Ñ-¨g´zÀCÀ6ÔJ÷ 9ô
 ×"Ò" 7¨\¨NÓ;ˆÜ×$Ò$ W¨mÓ<ˆà�{‰{˜3Ÿ8™8 j \Ó2ˆØ�‰Ø�'×(Ñ(¨×)?Ñ)?ÀÓ)GÓHó
ˆô 	�wØ Ø"Ø&Ø +Ø"Ÿ{™{Ø!Ÿj™jò	*ð ×ÑÓ!ˆÜ  °3·?±?ÀCÓHÐH÷m ?Ö>ú÷ <Ö;ú÷ –ú÷ –ú÷	 3Ö2ú÷ 9Ö8ús`   Ä#NÆ$%N&Ç"OÇ(N8È
OÈO
ÈOÊ!%O.Î
N#Î&
N5Î8
O	ÏOÏ

O	ÏOÏ
O+Ï.
O=rS  )	r’  Úbufferrƒ   rÈ   r  r�  rG  r^   r�  s	            rE   Únp_frombufferrq  ­  s-   € à	×	Ñ	€BÙ
ˆV˜E¨5Ó
1€CòNIð` ˆ<ÐrG   rJ  c                 ó2  ^• [        SU5        [        U [        R                  5      (       a  U R                  S:w  a  SU  3n[
        R                  " U5      eU[        L dB  [        U[        R                  5      (       a  UR                  [        L d  [        U5      (       a  [        R                  nO[        U5      nUb'  [        R                  " USSU R                  (       + S9mOSU  SU S3n[
        R                  " U5      e[        S	S
4U4S jjnU$ )NÚ
frombufferr­   z+Argument "buffer" must be buffer-like. Got rI   )rƒ   rt   r-  rŒ  z3Cannot parse input types to function np.frombuffer(ré  rê  rJ  r   c                 ó   >• [        XX#T5      $ rD  )rq  )rp  rƒ   rÈ   r  r�  s       €rE   rê   Ú impl_np_frombuffer.<locals>.impl  s   ø€ Ü˜V¨E¸5ÓAÐArG   )rN  rŸ   r   r  r-  r	   rì   r]  r^  r_  r   r`  ra  r    r•  )rp  rƒ   rÈ   r  rÔ   rc  rê   r�  s          @rE   Úimpl_np_frombufferrv    së   ø€ ä˜<¨Ô/ä�fœeŸl™l×+Ñ+¨v¯}©}ÀÓ/CØ;¸F¸8ÐDˆÜ× Ò  Ó%Ð%à”ŠÜ˜œuŸ~™~×.Ñ.°5×3CÑ3CÄuÒ3LÜ˜×ÑÜ—<‘<‰ä! %Ó(ˆàÑÜ—’ (°¸3Ø)/¯©Ô%7ñ9‰ð Ø &˜x r¨%¨°ð3ˆä× Ò  Ó%Ð%ä ¨°1÷ Bð €KrG   c                 ó¼   ^• [        U5      (       a  [        SS 5      mSU4S jjnU$ [        U[        R                  5      (       a  [        SU5      mSU4S jjnU$ g )Nr­   c                 ó   >• T" X5      $ rD  rv   ©ro   ri   rƒ   Úintrinsic_cfarrays      €rE   rê   Úimpl_carray.<locals>.impl'  ó   ø€ Ù$ SÓ0Ð0rG   c                 ó   >• T" X5      $ rD  rv   ry  s      €rE   rê   r{  -  r|  rG   rD  ©r   Úget_cfarray_intrinsicrŸ   r   r°  ©ro   ri   rƒ   rê   rz  s       @rE   Úimpl_carrayr�  "  óR   ø€ ä�5×ÑÜ1°#°tÓ<Ð÷	1àˆÜ	�Eœ5Ÿ?™?×	+Ñ	+Ü1°#°uÓ=Ð÷	1àˆð 
,rG   c                 ó¼   ^• [        U5      (       a  [        SS 5      mSU4S jjnU$ [        U[        R                  5      (       a  [        SU5      mSU4S jjnU$ g )Nr  c                 ó   >• T" X5      $ rD  rv   ry  s      €rE   rê   Úimpl_farray.<locals>.impl7  r|  rG   c                 ó   >• T" X5      $ rD  rv   ry  s      €rE   rê   r…  =  r|  rG   rD  r~  r€  s       @rE   Úimpl_farrayr‡  2  r‚  rG   c                 ó*   ^ ^• [         UU 4S j5       nU$ )Nc                 óŠ  >• U[         R                  L a  S nOH[        U[         R                  5      (       a  UR                  nOSU S3n[
        R                  " U5      eT	c  Uc  Sn[
        R                  " U5      eUnOo[        T	[         R                  5      (       a4  T	R                  nUb$  XS:w  a  SU SU S3n[
        R                  " U5      eOST	 S3n[
        R                  " U5      e[        U5      nUc  SU S3n[
        R                  " U5      e[         R                  " XVT
5      n[        XqU5      nU[        4$ )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°  rb  r    r%   Ú
np_cfarray)r’  ro   ri   Ú	ptr_dtyperÔ   rƒ   rt   r�  r^   Údtype_r-  s            €€rE   rz  Ú0get_cfarray_intrinsic.<locals>.intrinsic_cfarrayC  s2  ø€ à”%—-‘-ÒØ‰IÜ˜œUŸ^™^×,Ñ,ØŸ	™	‰Ià4°S°E¸Ð;ˆCÜ×'Ò'¨Ó,Ð,à‰>ØÑ ØB�Ü×+Ò+¨CÓ0Ð0Ø‰EÜ˜¤§¡×0Ñ0Ø—L‘LˆEØÑ$¨Ó);Ø+¨E¨7Ð2FÀsÀeÈ1ÐM�Ü×+Ò+¨CÓ0Ð0øà(¨¨°Ð2ˆCÜ×'Ò'¨Ó,Ð,ä˜eÓ$ˆØ‰<Ø# E 7¨!Ð,ˆCÜ×'Ò'¨Ó,Ð,ä—’˜E¨Ó0ˆÜ˜ EÓ*ˆØ”JˆÐrG   ©r*   )r-  rŽ  rz  s   `` rE   r  r  B  s   ù€ Üõó ðð> ÐrG   c           
      óº  • UR                   SS u  pEUSS u  pgUR                  nUR                  S;   d   e[        U5      " X5      n	[	        X5      n
[
        R                  " U
5      n[        U[        R                  5      (       a  [
        R                  " X5      nOU4nU4n[        X\5       VVs/ s H&  u  pÞU R                  XU[        R                  5      PM(     nnnUn/ nUR                  S:X  a-  U H&  nUR                  U5        UR                  UU5      nM(     OE[!        U5       H&  nUR                  U5        UR                  UU5      nM(     UR#                  5         UR%                  UU R'                  UR(                  5      R+                  5       5      n[-        U	UUUUSS9  U	R/                  5       n[1        XUR                  U5      $ s  snnf )zF
numba.numpy_support.carray(...) and
numba.numpy_support.farray(...).
Nrd  r9  r  r)  )rñ   ró   r-  r€   r‡   r
   rÕ   rŸ   r   rQ  rÇ   r¨   r•   r–   rm   rÉ   r'  ræ  rc  r‚   rƒ   r+  rÜ   rù   r"   )r…   r?   r^   rñ   rZ  r  ro   ri   rÞ   r_  r´   ra  r  r¡  r  Úoffr³   r®   r¢   rý   s                       rE   rŒ  rŒ  f  s±  € ð
 —X‘X˜b˜q�\�N€EØ�b�q��J€Cà�O‰O€EØ�<‰<˜4ÓÐÐä˜Ô Ó1€Gä˜GÓ+€HÜ—.’. Ó*€Kä�'œ5Ÿ?™?×+Ñ+Ü×%Ò% gÓ5‰à�*ˆØ�ˆä#& wÔ#7ô9Ú#7‘-�&ð �l‰l˜7¨6´5·:±:Ö>Ù#7ð ñ 9ð €CØ€GØ‡|�|�sÓÛˆAØ�N‰N˜3ÔØ—+‘+˜c 1Ó%ŠCò ô ˜&Ö!ˆAØ�N‰N˜3ÔØ—+‘+˜c 1Ó%ŠCñ "ð 	�‰Ôà�?‰?˜3Ø"×0Ñ0°·±Ó=×HÑHÓJóL€Dô �7ØØØ"Ø'àòð ×
Ñ
Ó
€CÜ˜G¨c¯o©o¸sÓCÐCùó99s   Â3-Gc                 óB  • [        U[        R                  5      (       a)  U R                  [        R                  [        U5      5      $ [        U[        R                  5      (       a7  U R                  [
        [        [        R                  U5      5      nU" X45      $  erD  )	rŸ   r   rQ  rÆ   r–   r§   r
  rT   r%   )r…   r?   ÚseqtyÚseqr  s        rE   Ú_get_seq_sizer–  š  sn   € Ü�%œŸ™×)Ñ)Ø×#Ñ#¤E§J¡J´°E³
Ó;Ð;Ü	�Eœ5Ÿ>™>×	*Ñ	*Ø×'Ñ'¬¬Y´u·z±zÀ5Ó-JÓKˆÙ˜ Ó(Ð(àˆqrG   c                 ó¦   ^ ^^• UR                   mT R                  [        R                  [	        TU[
        R                  5      5      mU UU4S jnU$ )zC
Return a getitem() implementation that doesn't incref its result.
c                 ót   >• T" X5      nTR                   (       a  TR                  R                  U TU5        U$ rD  )rö   r÷   Údecref)r?   rñ   r“  r…   r  r�  s      €€€rE   ÚwrapÚ$_get_borrowing_getitem.<locals>.wrap¬  s1   ø€ Ù˜7Ó)ˆØ××Ø�K‰K×Ñ˜w¨¨sÔ3Øˆ
rG   )rƒ   rT   r   r  r%   r   r–   )r…   r”  rš  r  r�  s   `  @@rE   Ú_get_borrowing_getitemrœ  ¤  sC   ú€ ð �K‰K€EØ×'Ñ'¬×(8Ñ(8Ü(1°%¸ÄÇ
Á
Ó(KóM€L÷ð €KrG   c           	      ó  ^ ^^• T R                  [        R                  5      n[        US5      mUU U4S jn/ nX4p˜[	        U5       H/  n
U
S:”  a
  U" X‰5      u  p‰UR                  [        T TX‰5      5        M1     [        U5      $ )z>
Compute the likely shape of a nested sequence (possibly 0d).
r   c                 óÖ   >• [        U [        R                  5      (       a'  [        U 5      S:X  a  gU S   TR	                  US5      4$ [        TU 5      nU R                  U" TUT45      4$ )Nr   ©NN)rŸ   r   rQ  r§   rX  rœ  rƒ   )r”  r•  r  r?   r…   rû   s      €€€rE   Úget_first_itemÚ.compute_sequence_shape.<locals>.get_first_item¼  sd   ø€ Ü�eœUŸ_™_×-Ñ-Ü�5‹z˜Q‹Ø!à˜Q‘x ×!6Ñ!6°s¸AÓ!>Ð>Ð>ä1°'¸5ÓAˆLØ—;‘;¡¨W°s¸D°kÓ BÐBÐBrG   )rÀ   r   r–   r   r:   rm   r–  rÂ   )r…   r?   rt   r”  r•  rÕ   r   r  ÚinnertyÚinnerrq   rû   s   ``         @rE   Úcompute_sequence_shaper¤  µ  sy   ú€ ð ×#Ñ#¤E§J¡JÓ/€FÜ�F˜AÓ€D÷Cð €FØˆUä�4Ž[ˆØˆq‹5Ù+¨GÓ;‰NˆGØ�‰”m G¨W°gÓEÖFñ ô
 �‹=ÐrG   c                 ó>   ^ ^^^• UU 4S jmUUUU 4S jmT" X#U5        g)z7
Check the nested sequence matches the given *shapes*.
c                  óH   >• TR                   R                  T [        S5        g )N)zincompatible sequence shape)r`  ra  r¿   )r?   r…   s   €€rE   Ú_failÚ#check_sequence_shape.<locals>._failØ  s   ø€ Ø×Ñ×)Ñ)¨'´:Ø*Jõ	LrG   c                 óÆ  >• [        U5      S:X  a  g [        TTX5      nUS   nTR                  SX45      nTR                  USS9   T" 5         S S S 5        [        U5      S:X  a  g [	        U [
        R                  5      (       aY  [        TU 5      n[        R                  " TU5       nU R                  nU" TXR                  45      n	T" X‰USS  5        S S S 5        g [	        U [
        R                  5      (       a=  [        [        U 5      5       H$  n
X
   nTR                  X5      n	T" X‰USS  5        M&     g  U 5       e! , (       d  f       Nù= f! , (       d  f       g = f)Nr   r]  Fr^  rI   )r§   r–  r  r  rŸ   r   r
  rœ  r
   rÒ  rƒ   rõ   rQ  r:   rX  )r”  r•  r  r›   Úexpectedr|  r  rÔ  r¢  r£  rq   r§  r?   Úcheck_seq_sizer…   s              €€€€rE   r«  Ú,check_sequence_shape.<locals>.check_seq_sizeÜ  s3  ø€ Üˆv‹;˜!ÓØä˜W g¨uÓ:ˆØ˜!‘9ˆØ×&Ñ& t¨TÓ<ˆØ�_‰_˜X¨eˆ_Ò4ÙŒG÷ 5ô ˆv‹;˜!ÓØä�eœUŸ^™^×,Ñ,Ü1°'¸5ÓAˆLÜ×"Ò" 7¨DÔ1°TØŸ+™+�Ù$ W¨s·J±JÐ.?Ó@�Ù˜w¨v°a°b¨zÔ:÷ 2Ð1ô
 ˜œuŸ™×/Ñ/Üœ3˜u›:Ö&�Ø™(�Ø×-Ñ-¨cÓ5�Ù˜w¨v°a°b¨zÖ:ò 'ð �e‹O�1÷) 5Õ4ú÷ 2Õ1ús   ÁEÂ(-EÅ
EÅ
E Nrv   )r…   r?   r”  r•  r  r§  r«  s   ``   @@rE   Úcheck_sequence_shaper­  Ó  s   û€ ö
L÷ð ñ: �5˜vÕ&rG   c                 óP   ^ ^^^^^^^	• UUU UUU4S jm	UU	UU 4S jmT" XgTS5        g)z`
Assign a nested sequence contents to an array.  The shape must match
the sequence's structure.
c                 ó¦   >• [         R                  " TTTTT	TR                  U SS9nTR                  TX!TR                  5      n[        TTTX#5        g rl  )r
   r,  r-  r•   rƒ   r’   )
rª   rT  r‘   ro   r:  r?   r…   r¢   r  r³   s
       €€€€€€rE   Úassign_itemÚ-assign_sequence_to_array.<locals>.assign_item  sM   ø€ Ü×'Ò'¨°¸$ÀÈØ(-¯©°gÈ%ñQˆà�l‰l˜7 C°·±Ó<ˆÜ�7˜G U¨CÕ5rG   c                 óÞ  >• [        U5      S:X  a;  [        U [        R                  [        R                  45      (       a   eT" X0U5        g US   n[        U [        R                  5      (       ag  [        TU 5      n[        R                  " TU5       nU R                  nU" TXR                  45      nT" XxUSS  X6R                  4-   5        S S S 5        g [        U [        R                  5      (       aa  [        [        U 5      5       HH  n	X	   nTR                  X5      nTR                  [        R                  U	5      n
T" XxUSS  X:4-   5        MJ     g  U 5       e! , (       d  f       g = fró  )r§   rŸ   r   r
  rQ  rœ  r
   rÒ  rƒ   rõ   r:   rX  rÆ   r–   )r”  r•  r  rª   r›   r  rÔ  r¢  r£  rq   rõ   Úassignr°  r?   r…   s              €€€€rE   r³  Ú(assign_sequence_to_array.<locals>.assign	  s1  ø€ Üˆv‹;˜!ÓÜ! %¬%¯.©.¼%¿/¹/Ð)J×KÑKÐKÐKÙ˜¨Ô,Øà�a‰yˆä�eœUŸ^™^×,Ñ,Ü1°'¸5ÓAˆLÜ×"Ò" 7¨DÔ1°TØŸ+™+�Ù$ W¨s·J±JÐ.?Ó@�Ù�w v¨a¨b z°7¿j¹j¸]Ñ3JÔK÷ 2Ð1ô
 ˜œuŸ™×/Ñ/Üœ3˜u›:Ö&�Ø™(�Ø×-Ñ-¨cÓ5�Ø×,Ñ,¬U¯Z©Z¸Ó;�Ù�w v¨a¨b z°7¸XÑ3EÖFò	 'ð �e‹O�1÷ 2Õ1ús   Â;EÅ
E,rv   Nrv   )
r…   r?   r¢   r  r³   r:  r”  r•  r³  r°  s
   ``````  @@rE   Úassign_sequence_to_arrayrµ  ü  s%   ÿ€ ÷6ò 6÷ð ñ2 ˆ5�v˜rÕ"rG   c                 óŽ   • [        X5      u  p4[        U5      (       a  UnO[        U5      nUc  g [        R                  " X#S5      $ r9  )r6   r   ra  r   r    )r’  r¶  rƒ   rt   Ú	seq_dtypes        rE   Únp_array_typerr¸  %  sA   € Ü,¨YÓ?�O€DÜ�5×ÑØ‰ä˜uÓ%ˆØ‰=ØÜ�;Š;�u CÓ(Ð(rG   c                 óN   • [        SU5        [        XU5      nU" X5      nS nXE4$ )NrÎ   c           
      óZ  • UR                   nUR                  nUR                  S   nUS   n[        XXVU5      n[	        U5      U:X  d   e[        XXgU5        [        XXH5      n	[        XU	R                  UU	R                  XFU5        [        XUR                   U	R                  5       5      $ rè   )ró   rt   rñ   r¤  r§   r­  r+  rµ  r¢   r³   r"   rù   )
r…   r?   r^   rñ   r:  rt   r”  r•  r  r;  s
             rE   r�  Únp_array.<locals>.codegen6  s    € Ø—‘ˆØ�z‰zˆØ—‘˜‘ˆØ�1‰gˆä'¨¸$ÀsÓKˆÜ�6‹{˜dÓ"Ð"Ð"ä˜W¨u¸6ÔBÜ˜W¨uÓ=ˆÜ  °3·8±8¸VØ!$§¡¨e¸Cô	Aô   °#·/±/Ø #§¡£ó1ð 	1rG   )rN  r¸  )r’  Úobjrƒ   r“  r^   r�  s         rE   Únp_arrayr½  0  s0   € ä˜7 EÔ*Ü
˜¨Ó
/€CÙ
ˆc‹/€Cò1ð" ˆ<ÐrG   c                 óÜ   • [        SU5        [        U 5      (       d  [        R                  " S5      e[	        U5      (       d$  [        U5      c  Sn[        R                  " U5      eSS jnU$ )NrÎ   z(The argument "object" must be array-likez:The argument "dtype" must be a data-type if it is providedc                 ó   • [        X5      $ rD  )r½  )r¶  rƒ   s     rE   rê   Úimpl_np_array.<locals>.implT  s   € Ü˜Ó&Ð&rG   rD  )rN  r   r	   rì   r   ra  )r¶  rƒ   rÔ   rê   s       rE   Úimpl_np_arrayrÁ  J  sd   € ä˜7 EÔ*Ü˜F×#Ñ#Ü× Ò ð "1ó 2ð 	2ä�u×Ñ¤.°Ó"7Ñ"?ØJˆÜ× Ò  Ó%Ð%ô'à€KrG   c                 ó¸  • UR                  S5      nUR                  U5      nUR                  SXE5      nUR                  XqR                  XF5      U5      nUR	                  UR                  SXE5      UR                  SXF5      5      nUR                  USS9   SU-  n	U R                  R                  U[        U	45        S S S 5        U$ ! , (       d  f       U$ = f)Nr   r  r˜  Fr^  z%s(): axis out of bounds)	r;   r  rù  r°  r  r  r`  ra  rÕ  )
r…   r?   râ   rt   rä   rû   Úll_ndimÚis_neg_axisÚaxis_out_of_boundsrÔ   s
             rE   Ú_normalize_axisrÆ  Y  sÍ   € Ø�9‰9�Q‹<€DØ�i‰i˜‹o€Gð ×%Ñ% c¨4Ó6€KØ�>‰>˜+§{¡{°4Ó'AÀ4ÓH€Dð !Ÿ™Ø×Ñ˜C Ó,Ø×Ñ˜D $Ó0ó2Ðð 
�‰Ð+°EˆÒ	:Ø(¨9Ñ4ˆØ×Ñ×)Ñ)¨'´:À¸vÔF÷ 
;ð €K÷	 
;Ô	:ð €Kús   Â(C
Ã

Cc           
      ó|  • [        U5      US-
  :X  d   e[        R                  " [        R                  U5      n[        R
                  " X5      n[        R                  " S5      n[        US-
  5       Hy  n[        R                  " U5      n	UR                  SX”5      n
X(   nUR                  U
UR                  X—5      U	5      nUR                  U[        R                  " XSU5      5        M{     UR                  U[        R                  " XSU5      5        [        R                  " XR                  U5      5      $ )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).
rI   r˜  r   ©r§   r   r*  r
   rÕ   rZ   r:   r  rù  r°  r  rl   rÇ   r@   )r…   r?   Ú
orig_shapert   rä   Úll_shtyr  r-  rƒ  Úll_dimÚ
after_axisr6  rš   s                rE   Ú_insert_axis_in_shaperÍ  l  sþ   € ô ˆz‹?˜d Q™hÓ&Ð&Ð&ä�lŠlœ7Ÿ>™>¨4Ó0€GÜ× Ò  Ó2€Fä
�.Š.˜Ó
€Cô �T˜A‘XŽˆÜ—’ Ó$ˆØ×(Ñ(¨¨vÓ<ˆ
Ø‰_ˆØ�n‰n˜ZØ$Ÿ[™[¨Ó5Ø#ó%ˆð 	�‰�bœ'×.Ò.¨wÀÀ3ÓGÖHñ ð ‡M�M�#”w×+Ò+¨G¸QÀÓEÔFä×Ò ¯©°fÓ)=Ó>Ð>rG   c           
      ó¤  • [        U5      US-
  :X  d   e[        R                  " [        R                  U5      n[        R
                  " X5      n[        R                  " S5      n[        R                  " S5      n[        US-
  5       Hw  n	[        R                  " U	5      n
UR                  SX¤5      nUR                  UUR                  X§5      U
5      nUR                  X)   [        R                  " XSU5      5        My     UR                  U[        R                  " XSU5      5        [        R                  " XR                  U5      5      $ )z<
Same as _insert_axis_in_shape(), but with a strides array.
rI   r   r˜  rÈ  )r…   r?   Úorig_stridesrt   rä   rÊ  r³   r-  rû   rƒ  rË  rÌ  rš   s                rE   Ú_insert_axis_in_stridesrÐ  ‰  s  € ô ˆ|Ó  q¡Ó(Ð(Ð(ä�lŠlœ7Ÿ>™>¨4Ó0€GÜ×!Ò! 'Ó3€Gä
�.Š.˜Ó
€CÜ�>Š>˜!Ó€Dô �T˜A‘XŽˆÜ—’ Ó$ˆØ×(Ñ(¨¨vÓ<ˆ
Ø�n‰n˜ZØ$Ÿ[™[¨Ó5Ø#ó%ˆð 	�‰�lÑ'Ü×*Ò*¨7¸QÀÓDö	Fñ ð ‡M�M�$œ×,Ò,¨W¸qÀ$ÓGÔHä×Ò ¯©°gÓ)>Ó?Ð?rG   c           
      óÚ  • UR                   nUR                  nUR                  S   n[        U5      " XUS   S9n[        U5      " X5      n	[        R
                  " XR                  5      n
[        R
                  " XR                  5      n[        XX¦U5      n[        XX¶U5      n[        U	UR                  UUUR                  UR                  UR                  S9  U	R                  5       $ )z'
np.expand_dims() with the given axis.
r   r  r:  )ró   rt   rñ   r€   r
   rÇ   ri   r³   rÍ  rÐ  rÜ   r¢   r´   r²   rµ   rù   )r…   r?   r^   rñ   rä   r�  rt   r:  r;  r“  r  r³   Ú
new_shapesÚnew_stridess                 rE   Úexpand_dimsrÔ  ¦  sÅ   € ð �O‰O€EØ�:‰:€DØ�H‰H�Q‰K€Eä
�UÔ
˜G°D¸±GÑ
<€CÜ
�UÔ
˜GÓ
-€Cä×!Ò! '¯9©9Ó5€FÜ×"Ò" 7¯K©KÓ8€Gä& w¸ÀtÓL€JÜ)¨'¸GÈ4ÓP€Kä�3ØŸ™Ø#Ø&ØŸL™LØŸ;™;ØŸ*™*ò&ð �=‰=‹?ÐrG   c                 ó”   • UR                   S::  a  UR                  OSnUR                  UR                   S-   US9nU" X5      nS nXV4$ )NrI   r„  r…  c                 óð   • U R                  XS   UR                  S   [        R                  5      n[	        XSUR
                  R                  U5      n[        XX#U5      n[        XUR
                  U5      $ )NrI   znp.expand_dims)	r•   rñ   r   r–   rÆ  ró   rt   rÔ  r!   )r…   r?   r^   rñ   rä   r“  s         rE   r�  Únp_expand_dims.<locals>.codegenÈ  se   € Ø�|‰|˜G¨!¡W¨c¯h©h°q©k¼5¿:¹:ÓFˆÜ˜wÐ1AØ"Ÿ™×3Ñ3°Tó;ˆô ˜'¨C°tÓ<ˆÜ  °3·?±?ÀCÓHÐHrG   )rt   r-  r†  )r’  r9  rä   r-  r“  r^   r�  s          rE   Únp_expand_dimsrØ  Â  sJ   € àŸ™ 1›ˆQ�XŠX¨#€FØ
�&‰&�a—f‘f˜q‘j¨ˆ&Ð
0€CÙ
ˆa‹,€CòIð ˆ<ÐrG   c                 óô   • [        U [        R                  5      (       d  SU  3n[        R                  " U5      e[        U[        R
                  5      (       d  SU 3n[        R                  " U5      eS nU$ )Nz)First argument "a" must be an array. Got z(Argument "axis" must be an integer. Got c                 ó   • [        X5      $ rD  )rØ  )r9  rä   s     rE   rê   Ú!impl_np_expand_dims.<locals>.implÝ  s   € Ü˜aÓ&Ð&rG   )rŸ   r   r    r	   rì   r¡   )r9  rä   rÔ   rê   s       rE   Úimpl_np_expand_dimsrÜ  Ó  sh   € ä�aœŸ™×%Ñ%Ø9¸!¸Ð=ˆÜ× Ò  Ó%Ð%ä�dœEŸM™M×*Ñ*Ø8¸¸Ð?ˆÜ× Ò  Ó%Ð%ò'à€KrG   c                 ó4   ^ ^^• [         UU 4S j5       mU4S j$ )Nc           	      ó4  >^^• UmU Vs/ s H%  o"R                  [        UR                  T5      S9PM'     snmUUUU4S jn[        [	        T5      S:”  a  [
        R                  " T5      OTS   [
        R                  R                  U5      5      U4$ s  snf )NrÁ  c                 óD  >• [        TT5      n[        R                  " XS   5      n[        UTT5       VVVs/ s H  u  pgnU" XXgU5      PM     n	nnn[	        U	5      S:”  a  U R                  XR                  U	5      n
OU	S   n
[        XUR                  U
5      $ s  snnnf ró  )Ú_atleast_nd_transformr
   rÇ   r¨   r§   rø  ró   r!   )r…   r?   r^   rñ   Ú	transformÚarrsr;  r:  r�  Úretsr“  r�  rC  Úminimumr«  s              €€€€rE   r�  Ú*_atleast_nd.<locals>.impl.<locals>.codegenè  s£   ø€ Ü-¨g°tÓ<ˆIÜ×'Ò'¨°a±Ó9ˆDô .1°°v¸vÔ-FõHÚ-FÑ)˜ Eñ ˜g°¸EÖBÙ-Fð ò Hô �4‹y˜1‹}Ø×(Ñ(¨·/±/À4ÓH‘à˜1‘g�Ü$ W°s·±ÈÓLÐLùôHs   ¸BrI   r   )	r†  rÉ  rt   r%   r§   r   r±  ÚStarArgTupleÚ
from_types)Útypingcontextrñ   rÅ  r�  r�  r«  rC  rä  s       @@€€rE   rê   Ú_atleast_nd.<locals>.implã  sŠ   ú€ àˆÙCGÓHÂ4¸C—(‘(¤ C§H¡H¨gÓ 6�(Ó7Á4ÑHˆ÷	Mð 	Mô ´°F³¸a³œŸš VÔ,ÀVÈAÁYÜ×+Ñ+×6Ñ6°tÓ<ó>Ø?FðGð 	Gùò Is   Š,Bc                  ó   >• T" U 6 $ rD  rv   )rñ   rê   s    €rE   rÀ  Ú_atleast_nd.<locals>.<lambda>ø  s	   ø€ ™˜t™rG   r�  )rä  rC  rê   s   ``@rE   Ú_atleast_ndrì  â  s   ú€ ÜõGó ðGô( %Ð$rG   c                 ó:   ^ ^• T [        T5      :X  d   eUU 4S jnU$ )zT
Return a callback successively inserting 1-sized dimensions at the
following axes.
c           	      ó  >• [        T
5       Ht  nUS-   nUR                  U:  d  M  [        R                  " T	U   5      nUR	                  UR                  S-   S9n[        X[        R                  " Xƒ5      U4U5      nUnMv     U$ )NrI   rÁ  )r:   rt   r
   rÕ   r†  rÔ  r   r%   )r…   r?   r;  r:  r�  rq   rt   rä   ÚnewarrtyrC  Úmin_ndims            €€rE   rá  Ú(_atleast_nd_transform.<locals>.transform  s   ø€ Ü�x–ˆAØ�q‘5ˆDØ�z‰z˜DÕ Ü—~’~ d¨1¡gÓ.�Ø Ÿ:™:¨5¯:©:¸©>˜:Ð:�Ü! 'Ü"(×"2Ò"2°8Ó"CÀcÀVØ"&ó(�ð !’ñ !ð ˆ
rG   )r§   )rð  rC  rá  s   `` rE   rà  rà  û  s$   ù€ ð
 ”s˜4“yÓ Ð Ð öð ÐrG   c                  óL   • [        S U  5       5      (       a  [        SS/5      $ g )Nc              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frD  rE  rY  s     rE   rH  Ú np_atleast_1d.<locals>.<genexpr>  ó   é € Ð
8²4¨CŒ:�cœ5Ÿ;™;×'Ð'²4ùrJ  rI   r   ©r²  rì  r¿  s    rE   Únp_atleast_1dr÷    s'   € ä
Ñ
8±4Ó
8×8Ñ8Ü˜1˜q˜cÓ"Ð"ð 9rG   c                  óN   • [        S U  5       5      (       a  [        SSS/5      $ g )Nc              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frD  rE  rY  s     rE   rH  Ú np_atleast_2d.<locals>.<genexpr>  rõ  rJ  rd  r   rö  r¿  s    rE   Únp_atleast_2drû    s)   € ä
Ñ
8±4Ó
8×8Ñ8Ü˜1˜q !˜fÓ%Ð%ð 9rG   c                  óN   • [        S U  5       5      (       a  [        S/ SQ5      $ g )Nc              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frD  rE  rY  s     rE   rH  Ú np_atleast_3d.<locals>.<genexpr>   rõ  rJ  rq  )r   r   rd  rö  r¿  s    rE   Únp_atleast_3drÿ    s%   € ä
Ñ
8±4Ó
8×8Ñ8Ü˜1šiÓ(Ð(ð 9rG   c	                 óp  • [        U5      [        U5      s=:X  a   [        U5      s=:X  a  [        U5      :X  d   e   e[        R                  " S5      n	[        XXx5      n
[        R                  " XR
                  5      n/ nU HŽ  nU	n[        [        XÛ5      5       H`  u  nu  nnUR                  SUR                  U5      U5      nUR                  UU5      nUR                  UUR                  UU5      U5      nMb     UR                  U5        M�     U
R                  n[        X4UXl5       Hò  u  nnnnnUR                  n[        R                  " X[        R                  UR                   S9nU n[        R"                  " XUUUUR                   U5      n[%        XUU5      nU R'                  UUUR(                  UR(                  5      n[        R"                  " XUX‹UR                   U5      n[+        XUUU5        SSS5        [        R,                  " UUU5      nMô     U
$ ! , (       d  f       N,= f)z*
Concatenate arrays along the given axis.
r   r  )ÚorderN)r§   r
   rÕ   r+  rÇ   r³   rÄ  r¨   r  r;   rÉ   rù  r°  rm   r¢   ri  r-  r,  rŽ   r•   rƒ   r’   r  )r…   r?   rä   r�  râ  Ú
arr_shapesÚarr_stridesr�  Ú
ret_shapesrû   r“  Úret_stridesÚcopy_offsetsÚarr_shr  rƒ  r›   r  Úis_axisÚaddendÚret_datar:  r;  Úarr_stÚarr_datari  rª   rS  r‘   rl  s                                 rE   Ú_do_concatenater  $  sý  € ô ˆv‹;œ#˜d›)ÕJ¤s¨:£ÕJ¼#¸kÓ:JÓJÐJÑJÐJÐJä�>Š>˜!Ó€Dô ˜¨5Ó
=€CÜ×&Ò& w·±Ó<€Kð €LãˆàˆÜ#,¬S°Ó-EÖ#FÑˆC‘�$˜Ø×)Ñ)¨$°·	±	¸#³ÀÓEˆGØ—[‘[  vÓ.ˆFØ—^‘^ GØ$+§K¡K°¸Ó$?Ø$*ó,ŠFñ $Gð 	×Ñ˜FÖ#ñ ð �x‰x€Hä.1°&À
Ø2=ö/MÑ*ˆˆs�F˜F Fà—8‘8ˆô ×%Ò% g´w·~±~Ø,1¯L©Lñ:ˆ	ñ ˜'Ü×/Ò/°À(Ø06¸Ø05·±¸góGˆGô ˜G¨e°WÓ=ˆCØ—,‘,˜w¨¨U¯[©[¸%¿+¹+ÓFˆCÜ×0Ò0°À8Ø1;Ø16·±¸wóHˆHô �w¨°°XÔ>÷ ô ×&Ò& w°¸&ÓAŠñ+/Mð. €J÷ �Yús   Å4BH'È'
H5	c                 óª  • UR                   n[        X#5       VVs/ s H  u  px[        U5      " XUS9PM     nnn[        XSXe5      nU V	s/ s H#  n	[        R
                  " XR                  5      PM%     n
n	U V	s/ s H#  n	[        R
                  " XR                  5      PM%     nn	U
S    Vs/ s H  n[        R                  " X5      PM     nn[        U5       GHE  nUR                  SUR                  U5      U5      nXÞ   nUR                  U5      nU
SS   Vs/ s H  oÌU   PM	     nnUR                  U5       u  nnU   [        R                  " UR                   UU/-   5      nUR#                  UU5        S S S 5        U   [        R$                  nU H&  nUR'                  UUR                  SUU5      5      nM(     UR)                  UR+                  U5      SS9   U R,                  R/                  U[0        SU-  45        S S S 5        S S S 5        S S S 5        GMH     U Vs/ s H  oÁR                  U5      PM     nn[3        XUX#X«XM5	      n[5        XUUR7                  5       5      $ s  snnf s  sn	f s  sn	f s  snf s  snf ! , (       d  f       GN= f! , (       d  f       N™= f! , (       d  f       N¢= f! , (       d  f       GMò  = fs  snf )	Nr  únp.concatenater   r  rI   Fr^  z<np.concatenate(): input sizes over dimension %d do not match)rt   r¨   r€   rÆ  r
   rÇ   ri   r³   rô   r:   r  r;   r@   rQ  ro  rp  r°  r  rq  rG  r  rß  r`  ra  r¿   r  r"   rù   )r…   r?   r�  râ  r�  rä   rt   r  r9  r;  r  r  r6  r  rƒ  r  Úret_shape_ptrÚret_shÚother_shapesÚon_axisÚon_other_dimÚis_okr“  s                          rE   Ú_np_concatenater  a  s”  € Ø�:‰:€Dô ˜fÔ+ô-Ú+‘�ô �sŒO˜G°AÔ6Ù+ð 	ñ -ô ˜7Ð-=¸tÓJ€Dñ GKÓKÂd¸s”'×&Ò& w·	±	Ö:Ád€JÐKÙIMÓNÊÀ#”7×'Ò'¨·±Ö=É€KÐNð ' qšMó+Ú)�bô ×+Ò+¨GÖ8Ù)ð ð +ô �T�{ˆØ×%Ñ% d¨D¯I©I°c«N¸DÓAˆØ"™ˆØ—‘˜mÓ,ˆØ*4°Q°R©.Ó9ª. B˜3œ©.ˆÐ9à�_‰_˜WÔ%Ñ)@¨'°<ÚÜ×%Ò%Ø—K‘KØ  F 8Ñ+ó-�ð —‘˜b -Ô0÷	 ò Ü×(Ñ(�Û&�BØ#ŸL™L¨Ø)0×)<Ñ)<¸TÀ2ÀvÓ)NóP’Eñ 'ð —_‘_ W§\¡\°%Ó%8À�_ÒGØ×%Ñ%×5Ñ5Ø¤ð5Ø7:ñ;ð =ô>÷ H÷ ÷ &Ò%ñ ñ0 .8Ó8ªZ r—,‘,˜rÖ"©Z€JÐ8ä
˜'¨DØ ¨
Øó-€Cô ˜G¨e°S·]±]³_ÓEÐEùóY-ùò LùÚNùò
+ùò :÷ –ú÷ HÕGú÷ •ú÷ &×%üò$ 9sx   ›I/Á*I5Á;*I:Â. I?ÄJÄ>J=Å8J	Å<
J=ÆAJ,Ç"&J	ÈJ,ÈJ=È)KÊ	
JÊJ=Ê
J)Ê%J,Ê,
J:Ê6J=Ê=
K	c                 ó
  • UR                   n[        R                  " S5      n[        R                  " S5      n[        R                  " [        U5      5      n	[	        X#5       V
Vs/ s H  u  p«[        U
5      " XUS9PM     nn
n[        XSXe5      n[        R                  " XS   R                  5      nUSS   H²  n[        R                  n[	        [        R                  " XR                  5      U5       Hq  u  nnUR                  XáR                  SUU5      5      nUR                  UR                  U5      SS9   U R                  R                  U[         S5        S S S 5        Ms     M´     U Vs/ s H#  n[        R                  " XR"                  5      PM%     nn[$        R&                  " [        R                  U5      n[        R(                  " UU5      n[        R(                  " UU5      n[+        US-
  5       H¦  n[        R                  " U5      nUR                  S	UU5      nUU   nUR-                  UUR/                  UU5      U5      nUR1                  U[        R2                  " UUSU5      5        UR1                  U[        R2                  " UUSU5      5        M¨     UR1                  U[        R2                  " UUSU5      5        UR1                  U	[        R2                  " UUSU5      5        [        R                  " XR5                  U5      5      nU/[        U5      -  n[        R                  " XR5                  U5      5      n[+        [        U5      5       Vs/ s H  n[        R(                  " UU5      PM     nn[+        US-
  5       Hœ  n[        R                  " U5      nUR                  S	UU5      nUR-                  UUR/                  UU5      U5      n[+        [        U5      5       H5  nUR1                  UU   U   [        R2                  " UUU   SU5      5        M7     Mž     [+        [        U5      5       H/  nUR1                  U[        R2                  " UUU   SU5      5        M1     U Vs/ s H(  n[        R                  " XR5                  U5      5      PM*     nn[7        XUX#UUUU5	      n[9        XUUR;                  5       5      $ s  snn
f ! , (       d  f       GM  = fs  snf s  snf s  snf )
Nr   rI   r  únp.stackr  Fr^  )z5np.stack(): all input arrays must have the same shaper˜  )rt   r
   rÕ   r§   r¨   r€   rÆ  rÇ   ri   rq  rG  r  r  rß  r`  ra  r¿   r³   r   r*  rZ   r:   rù  r°  r  rl   r@   r  r"   rù   )r…   r?   r�  râ  r�  rä   rt   rû   r-  Ú
ll_narraysr  r9  rÉ  r;  r  r6  Úorig_shrÏ  rÊ  Úinput_shapesr  rƒ  rË  rÌ  rš   rq   Úinput_stridesr7  r“  s                                rE   Ú	_np_stackr  “  s_  € Ø�:‰:€Dä�>Š>˜!Ó€DÜ
�.Š.˜Ó
€CÜ—’¤ D£	Ó*€Jô ˜fÔ+ô-Ú+‘�ô �sŒO˜G°AÔ6Ù+ð 	ñ -ô ˜7¨Z¸ÓD€Dô ×%Ò% g°A©w¯}©}Ó=€Jà�A�B‹xˆÜ× Ñ ˆÜœw×3Ò3°G¿Y¹YÓGØ)ö+‰KˆB�à—L‘L ×(;Ñ(;¸DÀ"ÀgÓ(NÓOˆEØ—‘ §¡¨eÓ!4¸U�ÒCØ×!Ñ!×1Ñ1ØœZØNôP÷ DÑCó+ñ ñ KOÓOÊ$À3”G×(Ò(¨·+±+Ö>É$€LÐOô
 �lŠlœ7Ÿ>™>¨4Ó0€Gä×&Ò& w°Ó8€LÜ×$Ò$ W¨gÓ6€Jô �T˜A‘XŽˆÜ—’ Ó$ˆØ×(Ñ(¨¨v°tÓ<ˆ
Ø˜‰_ˆØ�n‰n˜ZØ$Ÿ[™[¨°Ó5Ø#ó%ˆð 	�‰�bœ'×.Ò.¨w¸ÀaÈÓMÔNØ�‰�bœ'×.Ò.¨w¸
ÀAÀsÓKÖLñ ð ‡M�M�#”w×+Ò+¨G°\À1ÀdÓKÔLØ‡M�M�*œg×2Ò2°7Ø3=Ø34Ø37ó9ô :ô
 ×'Ò'¨·±¸lÓ1KÓL€LØ �>¤C¨£IÑ-€LÜ×%Ò% g¯|©|¸JÓ/GÓH€Jô $¤C¨£IÔ.ó0Ú.˜ô ×(Ò(¨°'Ö:Ù.ð ð 0ô �T˜A‘XŽˆÜ—’ Ó$ˆØ×(Ñ(¨¨v°tÓ<ˆ
Ø�n‰n˜ZØ$Ÿ[™[¨°Ó5Ø#ó%ˆô ”s˜4“yÖ!ˆAØ�M‰M˜, q™/¨#Ñ.Ü!×.Ò.¨w¸ÀaÑ8HÈ!Ø/2ó4ö5ó "ñ ô ”3�t“9ÖˆØ�‰�dœG×0Ò0°¸-ÈÑ:JÈAØ15ó7ö 	8ñ ñ
  -ó.Ú,˜ô ×)Ò)¨'·<±<ÀÓ3CÖDÙ,ð ð .ô ˜'¨DØ ¨°mØ ó-€Cô ˜G¨e°S·]±]³_ÓEÐEùó_-÷ D×Cüò
 PùòB0ùò*.s$   Á&S%Ä>"S+Å4*S>Í,!TÒ/TÓ+
S;c                 óæ   • Ub   [        U[        R                  5      (       d  g [        U SU5      u  p4US:X  a  Sn[        R
                  " U5      e[        U5      n[        R                  " X4U5      $ )Nr  r   z.zero-dimensional arrays cannot be concatenated)rŸ   r   r¡   r7   r	   r¹  r8   r    )r’  r‹  rä   rƒ   rt   rÔ   r-  s          rE   Únp_concatenate_typerr  ì  sk   € ØÑ¤
¨4´·±× ?Ñ ?ð 	ô & iØ&6¸ó@�K€EàˆqƒyØ>ˆÜ×#Ò# CÓ(Ð(ä)¨&Ó1€Fä�;Š;�u FÓ+Ð+rG   c                 óx   • [        XU5      n[        U[        R                  5      (       d   eU" X5      nS nXE4$ )Nc           
      óð   • U R                  XS   UR                  S   [        R                  5      n[	        X[        UR                  S   5      [        R                  " XS   5      UR                  U5      $ rÌ  )	r•   rñ   r   r–   r  rÃ   r
   rÇ   ró   ©r…   r?   r^   rñ   rä   s        rE   r�  Únp_concatenate.<locals>.codegen  s_   € Ø�|‰|˜G¨!¡W¨c¯h©h°q©k¼5¿:¹:ÓFˆÜ˜wÜ# C§H¡H¨Q¡KÓ0Ü&×3Ò3°GÀ!¹WÓEØ"Ÿ™Ø#ó	%ð 	%rG   )r  rŸ   r   r    )r’  r‹  rä   r“  r^   r�  s         rE   Únp_concatenater$  þ  s>   € ä
˜y°$Ó
7€CÜ�cœ5Ÿ;™;×'Ñ'Ð'Ð'Ù
ˆfÓ
€Cò%ð ˆ<ÐrG   c                 óP   • [        U [        R                  5      (       a  SS jnU$ g )Nc                 ó   • [        X5      $ rD  )r$  ©r‹  rä   s     rE   rê   Ú!impl_np_concatenate.<locals>.impl  s   € Ü! &Ó/Ð/rG   rÏ  ©rŸ   r   rQ  ©r‹  rä   rê   s      rE   Úimpl_np_concatenater+    s"   € ä�&œ%Ÿ/™/×*Ñ*ô	0àˆð +rG   c                 ó†   • U H;  nUR                   S:  d  UR                   S:”  d  M%  Sn[        R                  " U5      e   g)NrI   rd  z7np.column_stack() is only defined on 1-d and 2-d arrays)rt   r	   r¹  )r…   râ   r‹  r9  rÔ   s        rE   Ú_column_stack_dimsr-    s<   € ãˆØ�6‰6�A‹:˜Ÿ™ !�ØKˆCÜ×'Ò'¨Ó,Ð,ñ ð rG   c                 ó†   • [        U SU[        S9u  p#[        U5      n[        R                  " X#U5      nU" U5      nS nXg4$ )Nznp.column_stack)Údim_chooserc                 ó:  • [        UR                  S   5      n[        R                  " XS   5      n/ n/ nU R	                  [
        R                  S5      n[        XE5       H   u  pšU	R                  S:X  a$  UR                  U	5        UR                  U
5        M9  U	R                  S:X  d   eU	R                  SS9n[        R                  " X¹5      n[        XXÊ4U5      nUR                  U5        UR                  U5        M¢     [        XXgUR                  U5      $ )Nr   rI   rd  rÁ  )rÃ   rñ   r
   rÇ   rÆ   r   r–   r¨   rt   rm   r†  r   r%   rÔ  r  ró   )r…   r?   r^   rñ   Úorig_arrtysÚ	orig_arrsr�  râ  rä   r:  r;  r!  Ú
expand_sigÚnewarrs                 rE   r�  Ú np_column_stack.<locals>.codegen)  sò   € Ü˜3Ÿ8™8 A™;Ó'ˆÜ×(Ò(¨°q±'Ó:ˆ	àˆØˆà×#Ñ#¤E§J¡J°Ó2ˆä˜kÖ5‰JˆEØ�z‰z˜Q‹Ø—‘˜eÔ$Ø—‘˜CÖ ð —z‘z Q“Ð&�ØŸ
™
¨˜
Ð*�Ü#×-Ò-¨eÓ;�
Ü$ W°zÀ6È4ÓP�à—‘˜eÔ$Ø—‘˜FÖ#ñ 6ô ˜w°Ø"Ÿ™°ó6ð 	6rG   )r7   r-  r8   r   r    )r’  rN  rƒ   rt   r-  r“  r^   r�  s           rE   Únp_column_stackr6     sM   € ä% iØ&7¸Ü2DñF�K€Eô *¨#Ó.€FÜ
�+Š+�e 6Ó
*€CÙ
ˆc‹(€Cò6ð4 ˆ<ÐrG   c                 óL   • [        U [        R                  5      (       a  S nU$ g )Nc                 ó   • [        U 5      $ rD  )r6  ©rN  s    rE   rê   Úimpl_column_stack.<locals>.implI  s   € Ü" 3Ó'Ð'rG   r)  ©rN  rê   s     rE   Úimpl_column_stackr<  F  s"   € ä�#”u—‘×'Ñ'ò	(àˆð (rG   c           
      óŽ   • [        X[        UR                  S   5      [        R                  " XS   5      UR
                  U5      $ )z'
np.stack() with the given axis value.
r   )r  rÃ   rñ   r
   rÇ   ró   r"  s        rE   Ú_np_stack_commonr>  N  s?   € ô �WÜ˜#Ÿ(™( 1™+Ó&Ü×)Ò)¨'¸±7Ó;Ø—_‘_Øó	ð rG   c                 ó¦   • [        U SU5      u  p4[        S U 5       5      (       a  SOSn[        R                  " X4S-   U5      nU" X5      nS nXx4$ )Nr  c              3   ó>   #   • U  H  oR                   S :H  v •  M     g7f)r  N)r-  rè  s     rE   rH  Ú"np_stack_common.<locals>.<genexpr>^  s   é € Ð8²¨AŸ™ Cž²ùs   ‚r  r­   rI   c                 ó~   • U R                  XS   UR                  S   [        R                  5      n[	        XX#U5      $ rª  )r•   rñ   r   r–   r>  r"  s        rE   r�  Ú np_stack_common.<locals>.codegenb  s3   € Ø�|‰|˜G¨!¡W¨c¯h©h°q©k¼5¿:¹:ÓFˆÜ °#¸TÓBÐBrG   )r7   r²  r   r    )	r’  r‹  rä   rƒ   rt   r-  r“  r^   r�  s	            rE   Únp_stack_commonrD  Y  s\   € ô & iØ&0°&ó:�K€EäÑ8±Ó8×8Ñ8‰S¸c€FÜ
�+Š+�e A™X vÓ
.€CÙ
ˆfÓ
€CòCð ˆ<ÐrG   c                 óP   • [        U [        R                  5      (       a  SS jnU$ g )Nc                 ó   • [        X5      $ rD  )rD  r'  s     rE   rê   Úimpl_np_stack.<locals>.impll  s   € Ü" 6Ó0Ð0rG   rÏ  r)  r*  s      rE   Úimpl_np_stackrH  i  s"   € ä�&œ%Ÿ/™/×*Ñ*ô	1àˆð +rG   c                 ó|   • [        XU5      u  pE[        XS5      n[        U5      n[        R                  " XEU5      nU$ rD  )r7   rÉ  r8   r   r    )r’  râ   r‹  Úndim_minrƒ   rt   r-  r“  s           rE   ÚNdStack_typerrK  q  s9   € ä% i¸FÓC�K€EÜˆtÓ€DÜ)¨&Ó1€FÜ
�+Š+�e 6Ó
*€CØ€JrG   c                 ó:   • [        U SUS5      nU" U5      nS nX44$ )Nz	np.hstackrI   c                 óê   ^• UR                   S   nUS   R                  nUS:X  a-  U R                  [        R                  S5      m[        XX#T5      $ US:X  a  SOSmU4S jnU R                  XX#5      $ )Nr   rI   c                 ó.   >• [         R                  " U TS9$ r¶  r¸  r'  s    €rE   Únp_hstack_implÚ3_np_hstack.<locals>.codegen.<locals>.np_hstack_impl�  s   ø€ Ü—~’~ f°4Ñ8Ð8rG   ©rñ   rt   rÆ   r   r–   r>  r,  )r…   r?   r^   rñ   rM  rt   rO  rä   s          @rE   r�  Ú_np_hstack.<locals>.codegen  sr   ø€ Ø—‘˜‘ˆØ�Q‰x�}‰}ˆà�1‹9à×'Ñ'¬¯
©
°AÓ6ˆDÜ# G°cÀÓFÐFð
  ›	‘1 qˆDõ9ð ×+Ñ+¨GÀSÓOÐOrG   ©rK  ©r’  rN  r“  r^   r�  s        rE   Ú
_np_hstackrU  z  s+   € ä
˜	 ;°°QÓ
7€CÙ
ˆc‹(€CòPð& ˆ<ÐrG   c                 óL   • [        U [        R                  5      (       a  S nU$ g )Nc                 ó   • [        U 5      $ rD  )rU  r9  s    rE   rê   Úimpl_np_hstack.<locals>.impl˜  ó   € Ü˜c“?Ð"rG   r)  r;  s     rE   Úimpl_np_hstackrZ  •  ó"   € ä�#”u—‘×'Ñ'ò	#àˆð (rG   c                 ó:   • [        U SUS5      nU" U5      nS nX44$ )Nz	np.vstackrd  c                 óâ   • UR                   S   nUS   R                  nUS:X  a  S nO6US:X  a-  U R                  [        R                  S5      n[        XX#U5      $ S nU R                  XX#5      $ )Nr   c                 óX   • [         R                  " [         R                  " U 5      S5      $ rª  )r¦  rÔ  Úhstack©r‹  s    rE   Únp_vstack_implÚ3_np_vstack.<locals>.codegen.<locals>.np_vstack_impl§  s   € Ü—~’~¤b§i¢i°Ó&7¸Ó;Ð;rG   rI   c                 ó,   • [         R                  " U SS9$ )Nr   r·  r¸  r`  s    rE   ra  rb  °  ó   € Ü—~’~ f°1Ñ5Ð5rG   rQ  )r…   r?   r^   rñ   rM  rt   ra  rä   s           rE   r�  Ú_np_vstack.<locals>.codegen¢  sp   € Ø—‘˜‘ˆØ�Q‰x�}‰}ˆà�1‹9ó<ð �Q‹Yà×'Ñ'¬¯
©
°AÓ6ˆDÜ# G°cÀÓFÐFò6ð ×'Ñ'¨ÀÓKÐKrG   rS  rT  s        rE   Ú
_np_vstackrf  �  s+   € ä
˜	 ;°°QÓ
7€CÙ
ˆc‹(€CòLð& ˆ<ÐrG   c                 óL   • [        U [        R                  5      (       a  S nU$ g )Nc                 ó   • [        U 5      $ rD  )rf  r9  s    rE   rê   Úimpl_np_vstack.<locals>.impl»  rY  rG   r)  r;  s     rE   Úimpl_np_vstackrj  ¸  r[  rG   c                 ó:   • [        U SUS5      nU" U5      nS nX44$ )Nz	np.dstackrq  c                 ó„  • UR                   S   nUR                  nUS   R                  nUS:X  a  S nU R                  XX#5      $ US:X  a®  U R	                  [
        R                  S5      nUR                  UR                  S-
  S9n	[        R                  " U	/UR                   Q76 n
[        XX£U5      nU R	                  [
        R                  S5      n[        R                  " XY5      n[        XXË4U5      $ US:X  a-  U R	                  [
        R                  S5      n[        XX#U5      $ S nU R                  XX#5      $ )Nr   c                 óP   • [         R                  " U 5      R                  SSS5      $ )NrI   rJ  )r¦  r_  rœ  r`  s    rE   ra  Ú3_np_dstack.<locals>.codegen.<locals>.np_vstack_implÏ  s    € Ü—y’y Ó(×0Ñ0°°A°rÓ:Ð:rG   rI   rÁ  rd  c                 ó,   • [         R                  " U SS9$ )Nrd  r·  r¸  r`  s    rE   ra  rn  æ  rd  rG   )rñ   ró   rt   r,  rÆ   r   r–   r†  r   r%   r>  rÔ  )r…   r?   r^   rñ   rM  r�  rt   ra  rä   Ústack_rettyÚ	stack_sigÚ	stack_retr3  s                rE   r�  Ú_np_dstack.<locals>.codegenÉ  s$  € Ø—‘˜‘ˆØ—‘ˆØ�Q‰x�}‰}ˆà�1‹9ò;ð ×+Ñ+¨GÀSÓOÐOà�Q‹Yà×'Ñ'¬¯
©
°AÓ6ˆDØŸ*™*¨%¯*©*°q©.˜*Ð9ˆKÜ×(Ò(¨Ð@°s·x±xÒ@ˆIÜ(¨¸9Ø)-ó/ˆIð ×'Ñ'¬¯
©
°AÓ6ˆDÜ×)Ò)¨%Ó=ˆJÜ˜w°¸\È4ÓPÐPà�Q‹Yà×'Ñ'¬¯
©
°AÓ6ˆDÜ# G°cÀÓFÐFò6ð ×+Ñ+¨GÀSÓOÐOrG   rS  rT  s        rE   Ú
_np_dstackrt  Ä  s,   € ä
˜	 ;°°QÓ
7€CÙ
ˆc‹(€Cò PðD ˆ<ÐrG   c                 óL   • [        U [        R                  5      (       a  S nU$ g )Nc                 ó   • [        U 5      $ rD  )rt  r9  s    rE   rê   Úimpl_np_dstack.<locals>.implñ  rY  rG   r)  r;  s     rE   Úimpl_np_dstackrx  î  r[  rG   Úfillc                 ó   • S nU$ )Nc                 ó   • XS S & g rD  rv   )r;  r‘   s     rE   Ú	fill_implÚarr_fill.<locals>.fill_implù  s   € Ø‰AˆØrG   rv   )r;  r‘   r|  s      rE   Úarr_fillr~  ö  s   € òð ÐrG   Údotc                 ó   • S nU$ )Nc                 ó.   • [         R                  " X5      $ rD  )r¦  r  )r;  Úothers     rE   Údot_implÚarray_dot.<locals>.dot_impl  s   € Ü�vŠv�cÓ!Ð!rG   rv   )r;  r‚  rƒ  s      rE   Ú	array_dotr…     s   € ò"ð €OrG   c                 ó^   • [        U 5      (       d  [        R                  " SU -  5      eS nU$ )NzCannot np.fliplr on %s typec                 ó~   • [         R                  " U 5      nUR                  S:  a  [        S5      eUS S 2S S S2S4   $ )Nrd  rn  rJ  .©r¦  r§  rt   r¿   ©rº  r„  s     rE   rê   Únp_flip_lr.<locals>.impl  s=   € Ü�JŠJ�q‹Mˆð �6‰6�A‹:ÜÐ4Ó5Ð5Ø’‘T�r�T˜3�ÑÐrG   r/  ©rº  rê   s     rE   Ú
np_flip_lrrŒ    s2   € ô ˜A×ÑÜ× Ò Ð!>ÀÑ!BÓCÐCò ð €KrG   c                 ó^   • [        U 5      (       d  [        R                  " SU -  5      eS nU$ )NzCannot np.flipud on %s typec                 óx   • [         R                  " U 5      nUR                  S:  a  [        S5      eUS S S2S4   $ )NrI   zInput must be >= 1-d.rJ  .rˆ  r‰  s     rE   rê   Únp_flip_ud.<locals>.impl  s:   € Ü�JŠJ�q‹Mˆð �6‰6�A‹:ÜÐ4Ó5Ð5Ø‘�2��s�‰|ÐrG   r/  r‹  s     rE   Ú
np_flip_udr�    s2   € ô ˜A×ÑÜ× Ò Ð!>ÀÑ!BÓCÐCòð €KrG   c                 ó  ^^• [        U[        R                  5      (       d  [        R                  " U5      e[        UR                  5      m[        R                  " [        R                  TS9mT" U5      nUU4S jnX#4$ )zTCreates a tuple of slices for np.flip indexing like
`(slice(None, None, -1),) * sz` r  c                 óø   >• S n[         R                  T/n[        R                  " T/UQ76 nU R	                  [         R                  5      nU R                  T5      nU" T5      U/n	U R                  XXi5      n
U
$ )Nc           
      ó\   • Un[        U 5       H  n[        X#[        S S S5      5      nM     U$ )NrJ  )r:   r1   r5  )ÚlengthÚempty_tuplerþ   rq   s       rE   rê   Ú6_build_flip_slice_tuple.<locals>.codegen.<locals>.impl5  s/   € ØˆCÜ˜6–]�Ü# C¬E°$¸¸bÓ,AÓB’ñ #àˆJrG   )r   r–   r   r%   rÀ   Úget_constant_undefr,  )r…   r?   r%   rñ   rê   Úinner_argtypesÚ	inner_sigÚll_idx_typer•  Ú
inner_argsrý   r›   Ú
tuple_types              €€rE   r�  Ú(_build_flip_slice_tuple.<locals>.codegen4  sw   ø€ ò	ô  Ÿ*™* jÐ1ˆÜ×$Ò$ ZÐA°.ÒAˆ	Ø×,Ñ,¬U¯Z©ZÓ8ˆà×0Ñ0°Ó<ˆÙ! $Ó'¨Ð5ˆ
à×&Ñ& w°iÓLˆØˆ
rG   )	rŸ   r   r³  r	   r2  rÄ   rí   r°  Úslice3_type)r^  Úszr^   r�  r›   rœ  s       @@rE   Ú_build_flip_slice_tupler   *  sg   ù€ ô �bœ%×.Ñ.×/Ñ/Ü×(Ò(¨Ó,Ð,Üˆr×ÑÓ €DÜ—’¤e×&7Ñ&7¸tÑD€JÙ
�R‹.€Cöð" ˆ<ÐrG   c                 ó|   • [        U [        R                  5      (       d  [        R                  " SU -  5      eS nU$ )NzCannot np.flip on %s typec                 ó4   • [        U R                  5      nX   $ rD  )r   rt   )rº  Úsls     rE   rê   Únp_flip.<locals>.implO  s   € Ü$ Q§V¡VÓ,ˆØ‰uˆrG   )rŸ   r   r    r	   rì   r‹  s     rE   Únp_flipr¥  H  s8   € ô �aœŸ™×%Ñ%Ü× Ò Ð!<¸qÑ!@ÓAÐAòð €KrG   c                 ó  • [        U [        R                  [        R                  [        R                  45      (       a  SS jnU$ [        U[        R
                  5      (       a  SS jnU$ [        U[        R                  5      (       a:  [        UR                  R                  [        R
                  5      (       a  SS jnU$ [        U[        R                  5      (       a)  [        S UR                   5       5      (       a  SS jnU$ g g )Nc                 óV   • [         R                  " [         R                  " U 5      UUS9$ r¶  )r¦  Úarray_splitr§  ©r  Úindices_or_sectionsrä   s      rE   rê   Únp_array_split.<locals>.implY  s$   € Ü—>’>Ü—
’
˜3“Ø#Øñð rG   c                 óÜ   • [        U R                  U   U5      u  p4[        R                  " [        R                  " US-   /U-  U/X-
  S-
  -  -   5      5      n[        R
                  " XUS9$ )NrI   r·  )Údivmodri   r¦  ÚcumsumrÎ   r¨  )r  rª  rä   r€  re  rª   s         rE   rê   r«  c  sj   € Ü˜CŸI™I d™OÐ-@ÓA‰FˆAÜ—i’i¤§¢Ø�Q‘�˜#‘Ø�Ð*Ñ0°1Ñ4Ñ5ñ6ó!ó ˆGô —>’> #°TÑ:Ð:rG   c                 ó  • [        U R                  5      n[        SSU R                  U5      n/ nSnU H-  n[        X2[	        XV5      5      nUR                  X   5        UnM/     UR                  U [        X2[	        WS 5      5         5        U$ ©Nznp.spliträ   r   )r2   rt   rå   r1   r5  rm   ©r  rª  rä   Ú	slice_tuprþ   Úprevr4  rš   s           rE   rê   r«  t  s‚   € Ü.¨s¯x©xÓ8ˆIÜ! *¨f°c·h±hÀÓEˆDØˆCØˆDÛ*�Ü# I´U¸4Ó5EÓF�Ø—
‘
˜3™8Ô$Ø’ñ +ð �J‰J�sœ=¨¼%ÀÀTÓ:JÓKÑLÔMØˆJrG   c              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frD  ©rŸ   r   r¡   )rF  rÆ  s     rE   rH  Ú!np_array_split.<locals>.<genexpr>„  s    é € ÐPÒ6O°”
˜1œeŸm™m×,Ð,Ò6OùrJ  c                 ó0  • [        U R                  5      n[        SSU R                  U5      n/ nSn[        U5       H-  n[	        X2[        XV5      5      nUR                  X   5        UnM/     UR                  U [	        X2[        WS 5      5         5        U$ r°  )r2   rt   rå   r   r1   r5  rm   r±  s           rE   rê   r«  †  sˆ   € Ü.¨s¯x©xÓ8ˆIÜ! *¨f°c·h±hÀÓEˆDØˆCØˆDÜ%Ð&9Ö:�Ü# I´U¸4Ó5EÓF�Ø—
‘
˜3™8Ô$Ø’ñ ;ð �J‰J�sœ=¨¼%ÀÀTÓ:JÓKÑLÔMØˆJrG   rÏ  )rŸ   r   r°  ÚListTyperO  r¡   ÚIterableTypeÚiterator_typer  r±  r²  ©r  rª  rä   rê   s       rE   Únp_array_splitr¼  V  sÔ   € ä�#œŸ™¬¯©¼¿
¹
ÐC×DÑDô	ð ˆäÐ%¤u§}¡}×5Ñ5ô	;ð ˆô 	Ð&¬×(:Ñ(:×;Ñ;ÜØ×-Ñ-×8Ñ8Ü�M‰M÷
ñ 
ô

	ð ˆô 	Ð&¬¯©×4Ñ4ÜÑPÐ6I×6OÒ6OÓP×PÑPô
	ð ˆð Qð 	5rG   c                 óì   • [        U [        R                  [        R                  [        R                  45      (       a  SS jnU$ [        U[        R
                  5      (       a  SS jnU$ [        XUS9$ )Nc                 óT   • [         R                  " [         R                  " U 5      XS9$ r¶  )r¦  Úsplitr§  r©  s      rE   rê   Únp_split.<locals>.implš  s   € Ü—8’8œBŸJšJ s›OÐ-@ÑLÐLrG   c                 ó„   • [        U R                  U   U5      u  p4US:w  a  [        S5      e[        R                  " XUS9$ )Nr   z0array split does not result in an equal divisionr·  )r­  ri   r¿   r¦  r¨  )r  rª  rä   r3  re  s        rE   rê   rÀ     sH   € Ü˜CŸI™I d™OÐ-@ÓA‰FˆAØ�a‹xÜ ØFóð ô —>’>Ø¨tñð rG   r·  rÏ  )rŸ   r   r°  r¸  rO  r¡   r¼  r»  s       rE   Únp_splitrÂ  •  s^   € ô �#œŸ™¬¯©¼¿
¹
ÐC×DÑDô	Mð ˆäÐ%¤u§}¡}×5Ñ5ô	ð ˆô ˜c¸TÑBÐBrG   c                 óD  • [        U [        R                  5      (       d  Sn[        R                  " U5      e[        U[        R
                  [        R                  [        R                  [        R                  45      (       d  Sn[        R                  " U5      eS nU$ )Nú#The argument "ary" must be an arrayú:The argument "indices_or_sections" must be int or 1d-arrayc                 ób   • U R                   S:  a  [        S5      e[        R                  " XSS9$ )Nrd  z3vsplit only works on arrays of 2 or more dimensionsr   r·  ©rt   r¿   r¦  r¿  ©r  rª  s     rE   rê   Únumpy_vsplit.<locals>.impl»  s2   € Ø�8‰8�a‹<Üð ?ó Að Aä�xŠx˜°qÑ9Ð9rG   ©rŸ   r   r    r	   rì   r¡   rO  r°  ©r  rª  rÔ   rê   s       rE   Únumpy_vsplitrÌ  °  ó|   € ä�cœ5Ÿ;™;×'Ñ'Ø3ˆÜ× Ò  Ó%Ð%äÐ)¬E¯M©M¼5¿;¹;Ü,1¯J©J¼¿¹ð,H÷ Iñ IàKˆÜ× Ò  Ó%Ð%ò:ð €KrG   c                 óD  • [        U [        R                  5      (       d  Sn[        R                  " U5      e[        U[        R
                  [        R                  [        R                  [        R                  45      (       d  Sn[        R                  " U5      eS nU$ )NrÄ  rÅ  c                 ó¬   • U R                   S:X  a  [        S5      eU R                   S:”  a  [        R                  " XSS9$ [        R                  " XSS9$ )Nr   z3hsplit only works on arrays of 1 or more dimensionsrI   r·  rÇ  rÈ  s     rE   rê   Únumpy_hsplit.<locals>.implÏ  sN   € Ø�8‰8�q‹=Üð ?ó Að Aà�8‰8�a‹<Ü—8’8˜C¸1Ñ=Ð=Ü�xŠx˜°qÑ9Ð9rG   rÊ  rË  s       rE   Únumpy_hsplitrÑ  Ä  s|   € ä�cœ5Ÿ;™;×'Ñ'Ø3ˆÜ× Ò  Ó%Ð%äÐ)¬E¯M©M¼5¿;¹;Ü,1¯J©J¼¿¹ð,H÷ Iñ IàKˆÜ× Ò  Ó%Ð%ò:ð €KrG   c                 óD  • [        U [        R                  5      (       d  Sn[        R                  " U5      e[        U[        R
                  [        R                  [        R                  [        R                  45      (       d  Sn[        R                  " U5      eS nU$ )NrÄ  rÅ  c                 ób   • U R                   S:  a  [        S5      e[        R                  " XSS9$ )Nrq  z3dsplit only works on arrays of 3 or more dimensionsrd  r·  rÇ  rÈ  s     rE   rê   Únumpy_dsplit.<locals>.implå  s0   € Ø�8‰8�a‹<Üð *ó +ð +ä�xŠx˜°qÑ9Ð9rG   rÊ  rË  s       rE   Únumpy_dsplitrÕ  Ú  rÍ  rG   c                 ó
   • X:  $ )z/
Trivial comparison function between two keys.
rv   r  s     rE   Ú
default_ltr×  ô  s   € ð ‰5€LrG   c                 ó  • XR                   U4n [        U   $ ! [         a^    U S:X  a#  [        R                  " UUSS9nUR
                  nO'U S:X  a!  [        R                  " UUS9nUR                  nW[        U'   Us $ f = f)z.
Get a sort implementation of the given kind.
r,   T)ÚltÚ
is_argsortÚis_np_arrayr-   )rÙ  rÚ  )	rw   Ú_sortsÚKeyErrorr,   Úmake_jit_quicksortÚrun_quicksortr-   Úmake_jit_mergesortÚrun_mergesort)rÕ  Últ_implrÚ  Úkeyr;  rü  s         rE   Úget_sort_funcrä  û  s™   € ð × Ñ  *Ð
,€CðÜ�c‰{ÐøÜó Ø�;ÓÜ×/Ò/ØØ%Ø ñ"ˆDð ×%Ñ%‰DØ�[Ó Ü×/Ò/ØØ%ñ'ˆDð ×%Ñ%ˆDØŒˆs‰ØŠðús   � ™A%BÂ Bc                 ó¢   • [        U [        R                  5      (       a  [        $ [        U [        R                  5      (       a  [
        $ [        $ rD  )rŸ   r   rë  r   rX  r   r×  rD  s    rE   Últ_implementationræ    s6   € Ü�%œŸ™×%Ñ%ÜÐÜ	�Eœ5Ÿ=™=×	)Ñ	)ÜÐäÐrG   z
array.sortc                 óŒ   ^• UR                   S   n[        S[        UR                  5      S9mU4S jnU R	                  XX#5      $ )Nr   r,   )rÕ  râ  c                 ó   >• T" U 5        g rD  rv   ©r;  Ú	sort_funcs    €rE   Úarray_sort_implÚ#array_sort.<locals>.array_sort_impl#  s
   ø€ á�#�rG   )rñ   rä  ræ  rƒ   r,  )r…   r?   r^   rñ   rJ  rë  rê  s         @rE   Ú
array_sortrí    sC   ø€ à�h‰h�q‰k€Gä ;Ü&7¸¿¹Ó&FñH€Iõð ×#Ñ# G¸cÓHÐHrG   c                 óX   • [        U 5      (       d  [        R                  " S5      eS nU$ )NzArgument "a" must be array-likec                 óF   • U R                  5       nUR                  5         U$ rD  )r†  r;  )r9  rý   s     rE   Únp_sort_implÚ"impl_np_sort.<locals>.np_sort_impl0  s   € Ø�f‰f‹hˆØ�‰Œ
Øˆ
rG   r/  )r9  rð  s     rE   Úimpl_np_sortrò  *  s2   € ä˜A×ÑÜ× Ò ð "1ó 2ð 	2òð ÐrG   zarray.argsortc                 óâ   ^	• UR                   u  pE[        UR                  [        UR                  5      SS9m	U	4S jnUR                  UR                   S S S9nUS S nU R                  XXx5      $ )NT)rÕ  râ  rÚ  c                 ó   >• T" U 5      $ rD  rv   ré  s    €rE   Úarray_argsort_implÚ)array_argsort.<locals>.array_argsort_impl@  s   ø€ Ù˜‹~ÐrG   rI   r¿  )rñ   rä  rí   ræ  rƒ   Úreplacer,  )
r…   r?   r^   rñ   rJ  rÕ  rõ  ÚinnersigÚ	innerargsrê  s
            @rE   Úarray_argsortrú  7  su   ø€ ð —H‘H�M€Gä 4×#5Ñ#5Ü&7¸¿¹Ó&FØ)-ñ/€Iõð �{‰{ §¡¨¨! ˆ{Ð-€HØ�R�a�€IØ×#Ñ# GØ$,ó9ð 9rG   c                 ó^   • UR                   UR                   :w  d  UR                  S:X  d   eU$ )Nr„  )r•  r-  )r…   r?   r¡  r¢  r‘   s        rE   Úarray_to_arrayrü  L  s*   € ð �>‰>˜TŸ\™\Ó)¨T¯[©[¸CÓ-?Ð?Ð?Ø€JrG   c                 ór   • S n[        X25      nU R                  XXd/5      n[        XUR                  U5      $ )Nc                 ó$   • U R                  S5      $ rè   )rÑ  rÇ  s    rE   rê   Úarray0d_to_scalar.<locals>.impl[  s   € à�v‰v�a‹yÐrG   )r%   r,  r#   ró   ©r…   r?   r¡  r¢  r‘   rê   r^   rý   s           rE   Úarray0d_to_scalarr	  S  s:   € òô �DÓ
!€CØ
×
"Ñ
" 7°#°uÓ
=€CÜ˜g°·±ÀÓEÐErG   c                 ór   • S n[        X25      nU R                  XXd/5      n[        XUR                  U5      $ )Nc                 ó   • [        U S   5      $ r­  )rì  rÇ  s    rE   rê   Ú array_to_unichrseq.<locals>.implf  s   € Ü�1�R‘5‹zÐrG   )r%   r,  r!   ró   r 	  s           rE   Úarray_to_unichrseqr	  d  s:   € òô �DÓ
!€CØ
×
"Ñ
" 7°#°uÓ
=€CÜ˜W¨s¯©ÀÓDÐDrG   c                 ó   • [         e)zJ
An intrinsic returning a derived array with the given shape and strides.
rá   )r9  ri   r³   s      rE   Úreshape_uncheckedr	  q  rÜ  rG   c                 ó   ^• S mU4S jnU$ )Nc                 óh   • [        U [        R                  5      =(       a    [        S U  5       5      $ )Nc              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frD  rµ  r¨  s     rE   rH  Ú>type_reshape_unchecked.<locals>.check_shape.<locals>.<genexpr>|  s   é € Ð@º%°Q”J˜q¤%§-¡-×0Ð0º%ùrJ  )rŸ   r   rQ  r²  ©ri   s    rE   r‰  Ú+type_reshape_unchecked.<locals>.check_shapez  s*   € Ü˜5¤%§/¡/Ó2÷ AÜÑ@¹%Ó@Ó@ð	BrG   c                 óÞ   >• [        U [        R                  5      (       d  g T" U5      (       a  T" U5      (       d  g [        U5      [        U5      :w  a  g U R	                  [        U5      SS9$ )Nr„  r…  )rŸ   r   r    r§   r†  )r9  ri   r³   r‰  s      €rE   ÚtyperÚ%type_reshape_unchecked.<locals>.typer~  sY   ø€ Ü˜!œUŸ[™[×)Ñ)ØÙ˜5×!Ñ!©°W×)=Ñ)=ØÜˆu‹:œ˜W›Ó%ØØ�v‰vœ3˜u›:¨cˆvÐ2Ð2rG   rv   )r…   r	  r‰  s     @rE   Útype_reshape_uncheckedr	  x  s   ø€ òBõ3ð €LrG   c           	      óx  • UR                   S   nUR                  n[        U5      " XUS   5      n[        U5      " X5      n[        R                  " XS   5      n[        R                  " XS   5      n	[        UUR                  UU	UR                  UR                  S9  UR                  5       n
[        XXZ5      $ )Nr   rI   rd  r)  )rñ   ró   r€   r
   rÇ   rÜ   r¢   r´   r²   rù   r!   )r…   r?   r^   rñ   rÞ   r�  r  rþ   ri   r³   rý   s              rE   Úimpl_shape_uncheckedr	  Š  s£   € à�H‰H�Q‰K€EØ�O‰O€Eä
�UÔ
˜G¨d°1©gÓ
6€CÜ
�UÔ
˜GÓ
-€CÜ× Ò  ¨q©'Ó2€EÜ×"Ò" 7°©GÓ4€Gä�3ØŸ™ØØ"ØŸL™LØŸ;™;òð �-‰-‹/€CÜ˜W¨uÓ:Ð:rG   c                 óê   ^^• US [         R                  4;   a  [        S 5       mO[        S 5       mUS [         R                  4;   a  [        R                  " S5      e[        S 5       mSUU4S jjnU$ )Nc                 ó   • U R                   $ rD  r	  ©r~  ri   s     rE   rt  Úas_strided.<locals>.get_shape£  s   € à—7‘7ˆNrG   c                 ó   • U$ rD  rv   r	  s     rE   rt  r	  §  s   € àˆLrG   z,as_strided() strides argument cannot be Nonec                 ó   • U$ rD  rv   )r~  r³   s     rE   Úget_stridesÚas_strided.<locals>.get_strides²  s   € àˆNrG   c                 ó:   >• [        U T" X5      T" X5      5      n U $ rD  )r	  )r~  ri   r³   rt  r	  s      €€rE   Úas_strided_implÚ#as_strided.<locals>.as_strided_impl¶  s    ø€ Ü˜a¡¨1Ó!4±kÀ!Ó6MÓNˆØˆrG   rŸ  )r   r�  r'   r	   rì   )r~  ri   r³   r	  rt  r	  s       @@rE   Ú
as_stridedr	     s…   ù€ à�”u—z‘zÐ"Ó"Ü	ñ	ó 
ñ	ô 
ñ	ó 
ð	ð �4œŸ™Ð$Ó$ô
 × Ò Ð!OÓPÐPä	ñ	ó 
ð	÷ð ð ÐrG   c                 óæ  ^^^^• [        U[        R                  5      (       aO  [        [	        U R
                  S-   5      5      m[        [	        U R
                  S-   5      5      m[        S 5       mO¿[        U[        R                  5      (       aŠ  [        UR                  [        R                  5      (       aa  [        [	        U R
                  [        U5      -   5      5      m[        [	        U R
                  [        U5      -   5      5      m[        S 5       mO[        R                  " S5      e[        U5      (       a  [        S 5       mO—[        U[        R                  5      (       a  [        S 5       mOk[        U[        R                  5      (       a6  [        UR                  [        R                  5      (       a  [        S 5       mO[        R                  " S5      eS
UUUU4S	 jjnU$ )NrI   c                 ó   • U 4$ rD  rv   ©Úwindow_shapes    rE   Úget_window_shapeÚ-sliding_window_view.<locals>.get_window_shapeÇ  s
   € à �?Ð"rG   c                 ó   • U $ rD  rv   r"	  s    rE   r$	  r%	  Ð  s   € àÐrG   z4window_shape must be an integer or tuple of integersc                 ó*   • [        [        U5      5      $ rD  )rÃ   r:   ©r#	  rä   rt   s      rE   Úget_axisÚ%sliding_window_view.<locals>.get_axisÛ  s   € äœ˜d›Ó$Ð$rG   c                 ó   • [        SSX!5      /$ ©NÚsliding_window_viewrä   ©rå   r(	  s      rE   r)	  r*	  à  s   € ô Ð4°f¸dÓIðð rG   c           	      óH   • U Vs/ s H  n[        SSX#5      PM     sn$ s  snf r,	  r.	  )r#	  rä   rt   r9  s       rE   r)	  r*	  è  s3   € ñ "ó#Ú!˜ô #Ð#8¸&À$ÖJÙ!ñ#ð #ùò #s   …z2axis must be None, an integer or tuple of integersc                 óH  >• T" U5      nT
" XU R                   5      n[        U5      [        U5      :w  a  [        S5      eTnTn[        U R                   5       H5  n[	        X5U R
                  U   5      n[	        XEU R                  U   5      nM7     U R                   n[        X!5       Hi  u  pgUS:  a  [        S5      eX6   U:  a  [        S5      eX6   U-
  S-   n[	        X6U5      n[	        X5U5      n[	        XEU R                  U   5      nUS-  nMk     [        XU5      n	U	$ )Nz2Must provide matching length window_shape and axisr   z-`window_shape` cannot contain negative valuesz4window_shape cannot be larger than input array shaperI   )	rt   r§   r¿   r:   r1   ri   r³   r¨   r	  )r~  r#	  rä   Ú	out_shapeÚout_stridesrq   r2  rƒ  Útrimmedr±  r)	  r$	  Úshape_bufferÚstride_buffers             €€€€rE   Úsliding_window_view_implÚ5sliding_window_view.<locals>.sliding_window_view_implò  s.  ø€ Ù'¨Ó5ˆÙ˜¨A¯F©FÓ3ˆÜˆ|Ó¤ D£	Ó)ÜØDóð ð
 !ˆ	Ø#ˆÜ�q—v‘v–ˆAÜ% i°A·G±G¸A±JÓ?ˆIÜ'¨¸¿	¹	À!¹ÓEŠKñ ð �F‰FˆÜ˜4Ö.‰GˆBØ�Q‹wÜ ØCóð ð ‰}˜sÓ"Ü ØJóð ð  ‘m cÑ)¨AÑ-ˆGÜ% i°WÓ=ˆIÜ% i°CÓ8ˆIÜ'¨¸¿	¹	À"¹ÓFˆKØ�‰FŠAñ /ô$ ! ¨{Ó;ˆØˆrG   rD  )rŸ   r   r¡   rÂ   r:   rt   r'   r°  rƒ   r§   r	   rì   r   )r~  r#	  rä   r6	  r)	  r$	  r4	  r5	  s       @@@@rE   r-	  r-	  ½  s�  û€ ô �,¤§¡×.Ñ.ÜœU 1§6¡6¨A¡:Ó.Ó/ˆÜœe A§F¡F¨Q¡JÓ/Ó0ˆä	ñ	#ó 
ñ	#ô �\¤5§>¡>×
2Ñ
2Ü�|×)Ñ)¬5¯=©=×9Ñ9ÜœU 1§6¡6¬C°Ó,=Ñ#=Ó>Ó?ˆÜœe A§F¡F¬S°Ó->Ñ$>Ó?Ó@ˆä	ñ	 ó 
ñ	 ô × Ò ØBó
ð 	
ô
 �4×ÑÜ	ñ	%ó 
ñ	%ô 
�Dœ%Ÿ-™-×	(Ñ	(Ü	ñ	ó 
ñ	ô
 �Tœ5Ÿ>™>×
*Ñ
*Ü�t—z‘z¤5§=¡=×1Ñ1Ü	ñ	#ó 
ñ	#ô
 × Ò Ø@ó
ð 	
÷%ò %ðN $Ð#rG   c                 óL   • [        U [        R                  5      (       a  S nU$ g )Nc                 ó¸   • U R                   S:X  a  [        S:  a  g[        S5      eU R                   S:X  a  [        U R	                  S5      5      $ [        S5      e)Nr   )rd  rd  FziThe truth value of an empty array is ambiguous. Use `array.size > 0` to check that an array is not empty.rI   z[The truth value of an array with more than one element is ambiguous. Use a.any() or a.all())r›   r   r¿   rR  rÑ  rÍ  s    rE   rê   Úol_bool.<locals>.impl  s_   € Ø�x‰x˜1‹}Ü  6Ó)Ø ä$ð 'Jó Lð Lð —‘˜Q“Ü˜CŸH™H Q›KÓ(Ð(ä ð #-ó /ð /rG   rE  rÏ  s     rE   Úol_boolr;	    s$   € ä�#”u—{‘{×#Ñ#ò	/ð ˆð $rG   c                 ó®  ^^• [        U[        [        R                  45      (       d  [        R
                  " S5      e[        U[        [        R                  45      (       d  [        R
                  " S5      e[        U [        R                  5      (       d  [        R
                  " S5      eU R                  m[        [        T5      5      mUU4S jnU$ )Nz.The second argument "axis1" must be an integerz-The third argument "axis2" must be an integerz'The first argument "a" must be an arrayc                 óÄ   >• [        SSTU5      n[        SSTU5      nUS:  a  UT-  nUS:  a  UT-  n[        TX5      n[        X2U5      n[        R                  " X5      $ )Nznp.swapaxesÚaxis1Úaxis2r   )rå   r1   r¦  rA  )r9  r>	  r?	  Ú
axes_tupleÚ	axes_listrt   s       €€rE   rê   Únumpy_swapaxes.<locals>.impl?  sl   ø€ Ü˜}¨g°t¸UÓCˆÜ˜}¨g°t¸UÓCˆð �1‹9Ø�T‰MˆEØ�1‹9Ø�T‰MˆEä" 9¨eÓ;ˆ
Ü" :°eÓ<ˆ
Ü�|Š|˜AÓ*Ð*rG   )
rŸ   rÄ   r   r¡   r	   rì   r    rt   rÂ   r:   )r9  r>	  r?	  rê   rA	  rt   s       @@rE   Únumpy_swapaxesrC	  0  s§   ù€ ä�eœc¤5§=¡=Ð1×2Ñ2Ü× Ò ð "+ó ,ð 	,ä�eœc¤5§=¡=Ð1×2Ñ2Ü× Ò ð "+ó ,ð 	,ä�aœŸ™×%Ñ%Ü× Ò Ð!JÓKÐKð �6‰6€DÜ”e˜D“kÓ"€Iö+ð €KrG   c                 ó>  • [        SSU R                  U5      n[        U R                  5      nSXb'   [	        [        XaR                  5      5       H8  u  nu  p‰US:X  a  U	n
OU	S:X  a  Un
OX‰:w  a  [        S5      eUn
[        XWU
5      nM:     [        XRU R                  U   5      n[        R                  " X5      n [        R                  " X5      nUn[        U5      S:”  a4  [        [        U5      5       H  n[        XÇU R                  U   5      nM     Un[        U5      S:”  a:  [        [        U5      5       H"  n[        X×U R                  US-   U-      5      nM$     UR                  U   n[        R                  " XÎ4-   U-   U R                  5      n[        S S S 5      4n[        R                  " U5       H^  n[        R                  " U5       HA  nU UU-   U-      nUUU-   U-      nUUU-   U-      n[        U5       H  nUUU      UU'   M     MC     M`     U$ )Nznp.take_along_axisrä   rI   z*`arr` and `indices` dimensions don't matchr   )rå   rt   rÃ   ri   rÄ  r¨   r¿   r1   r¦  r¬  r§   r:   rF  rƒ   r5  rÒ  )r;  rª   rä   ÚNi_origÚNk_origÚindices_broadcast_shapeÚ	arr_shaperq   Úd1Úd2Únew_valÚarr_broadcast_shapeÚNiÚNkÚJrþ   Únp_s_ÚiiÚkkÚa_1dÚ
indices_1dÚout_1drÅ  s                          rE   Ú_take_along_axis_implrV	  P  sÿ  € ô Ð.°¸¿¹À$ÓG€Dô �S—Y‘Y“€IØ€I�OÜ ¤ Y·±Ó!>Ö?‰ˆ‰8ˆBØ�‹7Ø‰GØ�1‹WØ‰Gà‹xÜ Ø@óð ð ˆGÜ"/Ø#¨ó#
Òñ @ô (Ø s§y¡y°¡óÐô �/Š/˜#Ó
3€CÜ�oŠo˜gÓ?€Gà	€BÜ
ˆ7ƒ|�aÓÜ”s˜2“w–ˆAÜ˜r c§i¡i°¡lÓ3ŠBñ  à	€BÜ
ˆ7ƒ|�aÓÜ”s˜2“w–ˆAÜ˜r c§i¡i°°q±¸1±Ñ&=Ó>ŠBñ  ð 	�‰�dÑ€AÜ
�(Š(�2˜‘9˜r‘> 3§9¡9Ó
-€Cä�4˜˜tÓ$Ð&€Eä�jŠj˜ŽnˆÜ—*’*˜R–.ˆBØ�r˜E‘z B‘Ñ'ˆDØ   e¡¨b¡Ñ1ˆJØ˜˜e™ b™Ñ)ˆFÜ˜1–X�Ø  ¨A¡Ñ/��q“	ó ó	 !ñ ð €JrG   c                 óè  ^^^• [        U [        R                  5      (       d  [        R                  " S5      e[        U[        R                  5      (       d  [        R                  " S5      e[        UR
                  [        R                  5      (       d  [        R                  " S5      e[        U5      (       a  SnOU R                  nX1R                  :w  a  [        R                  " S5      e[        [        UR                  5      5      m[        U5      (       a  U4S jnU$ [        US5        [        U[        R                  5      (       d  [        R                  " S5      eUR                  nUS	:  a  U R                  U-   nUS	:  d  X R                  :¼  a  [        R                  " S
5      e[        [        U5      5      m[        [        US-   U R                  5      5      mUUU4S jnU$ )Nz)The first argument "arr" must be an arrayz.The second argument "indices" must be an arrayz'The indices array must contain integersrI   z;`indices` and `arr` must have the same number of dimensionsc                 ó@   >• [        U R                  5       USSST5      $ )Nr   rv   )rV	  rÀ  )r;  rª   rä   rG	  s      €rE   Útake_along_axis_implÚ1arr_take_along_axis.<locals>.take_along_axis_impl¡  s%   ø€ Ü(¨¯©«¸ÀÀBÈØ)@óBð BrG   rä   zaxis must be a literal valuer   zaxis is out of boundsc                 ó"   >• [        XUTTT5      $ rD  )rV	  )r;  rª   rä   rM	  rN	  rG	  s      €€€rE   rY	  rZ	  ²  s   ø€ Ü(¨°t¸RÀØ)@óBð BrG   )rŸ   r   r    r	   rì   rƒ   r¡   r   rt   rÂ   r:   r   r³  rv  rí   )r;  rª   rä   Úarr_ndimrY	  rM	  rN	  rG	  s        @@@rE   Úarr_take_along_axisr]	  Œ  sƒ  ú€ ä�cœ5Ÿ;™;×'Ñ'Ü× Ò Ð!LÓMÐMÜ�gœuŸ{™{×+Ñ+Ü× Ò Ø<ó>ð 	>ä�g—m‘m¤U§]¡]×3Ñ3Ü× Ò Ð!JÓKÐKÜ�4×ÑØ‰à—8‘8ˆØ—<‘<Óä× Ò ØIó
ð 	
ô $¤E¨'¯,©,Ó$7Ó8ÐÜ�4×Ñõ	Bð(  Ðô! 	˜˜vÔ&Ü˜$¤× 4Ñ 4×5Ñ5Ü×(Ò(Ð)GÓHÐHØ×!Ñ!ˆØ�!‹8Ø—8‘8˜d‘?ˆDà�!‹8�tŸx™xÓ'Ü×(Ò(Ð)@ÓAÐAä”5˜“;ÓˆÜ”5˜ ™ 3§8¡8Ó,Ó-ˆ÷	Bð  ÐrG   c                 óè  • [        U [        R                  5      (       aˆ  [        U [        R                  5      (       a  S	S jnU$ [        U [        R                  5      (       a  S	S jnU$ [        U [        R
                  5      (       a  S	S jnU$ [        R                  " S5      e[        U 5      (       a¦  [        U R                  [        R                  5      (       a  S	S jnU$ [        U R                  [        R                  5      (       a  S	S jnU$ [        U R                  [        R
                  5      (       a  S	S jnU$ [        R                  " S5      e[        R                  " S5      e)
Nc                 ó   • U $ rD  rv   ©r~  r†  ÚnanÚposinfÚneginfs        rE   rê   Únan_to_num_impl.<locals>.impl½  ó   € Ø�rG   c                 ól  • Ub  UO([         R                  " [        U 5      5      R                  nUb  UO([         R                  " [        U 5      5      R                  n[         R
                  " U 5      (       a  U$ [         R                  " U 5      (       a  U$ [         R                  " U 5      (       a  U$ U $ rD  )r¦  Úfinfor;   rÓ  rÉ  r9  ÚisneginfÚisposinf)r~  r†  ra	  rb	  rc	  Úmin_infÚmax_infs          rE   rê   rd	  Á  s�   € ð Ñ)ñ äŸš¤$ q£'Ó*×.Ñ.ð ð Ñ)ñ äŸš¤$ q£'Ó*×.Ñ.ð ô —8’8˜A—;‘;Ø�JÜ—[’[ —^‘^Ø"�NÜ—[’[ —^‘^Ø"�NØ�rG   c                 ó˜   • [         R                  " U R                  X#US9n[         R                  " U R                  X#US9n[	        XV5      $ )N)ra	  rb	  rc	  )r¦  Ú
nan_to_numr^  r`  Úcomplex)r~  r†  ra	  rb	  rc	  r¹  rÕ  s          rE   rê   rd	  Õ  s8   € Ü—M’M !§&¡&¨cÈÑP�Ü—M’M !§&¡&¨cÈÑP�Ü˜q“}Ð$rG   z4Only Integer, Float, and Complex values are acceptedc                 ó   • U $ rD  rv   r`	  s        rE   rê   rd	  á  re	  rG   c                 óN  • Ub  UO)[         R                  " U R                  5      R                  nUb  UO)[         R                  " U R                  5      R                  n[         R
                  " U 5      nU(       a  [         R                  " U5      OUnUR                  n	[        UR                  5       Hl  n
[         R                  " Xš   5      (       a  X)U
'   M&  [         R                  " Xš   5      (       a  XYU
'   MI  [         R                  " Xš   5      (       d  Mh  XiU
'   Mn     U$ rD  )r¦  rg	  rƒ   rÓ  rÉ  r§  r†  r"  r:   r›   r9  rh	  ri	  )r~  r†  ra	  rb	  rc	  rj	  rk	  Úx_ÚoutputÚoutput_flatrq   s              rE   rê   rd	  ä  sÝ   € ð Ñ)ñ äŸš !§'¡'Ó*×.Ñ.ð ð Ñ)ñ äŸš !§'¡'Ó*×.Ñ.ð ô —Z’Z “]�Þ(,œŸš œ°"�à$Ÿk™k�Ü˜vŸ{™{Ö+�AÜ—x’x ¡×/Ñ/Ø), A›ÜŸš [¡^×4Ñ4Ø)0 A›ÜŸš [¡^×4Ó4Ø)0 A›ñ ,ð �rG   c                 óø   • [         R                  " U 5      nU(       a  [         R                  " U5      OUn[         R                  " UR                  SUUUS9  [         R                  " UR
                  SUUUS9  U$ )NF)r†  ra	  rb	  rc	  )r¦  r§  r†  rm	  r^  r`  )r~  r†  ra	  rb	  rc	  rq	  rr	  s          rE   rê   rd	  ý  sg   € Ü—Z’Z “]�Þ(,œŸš œ°"�ä—’Ø—K‘KØØØ!Ø!òô —’Ø—K‘KØØØ!Ø!òð �rG   z4The first argument must be a scalar or an array-like©Tg        NN)
rŸ   r   rÔ  r¡   rë  rX  r	   rì   r   rƒ   )r~  r†  ra	  rb	  rc	  rê   s         rE   Únan_to_num_implrv	  ¸  s5  € ä�!”U—\‘\×"Ñ"Ü�aœŸ™×'Ñ'ôðt €Kôo ˜œ5Ÿ;™;×'Ñ'ôðl €KôG ˜œ5Ÿ=™=×)Ñ)ô%ðD €Kô{ ×$Ò$ØFóð ô 
˜!×	Ñ	Ü�a—g‘gœuŸ}™}×-Ñ-ôðl €Kôi ˜Ÿ™¤§¡×-Ñ-ôðf €Kô7 ˜Ÿ™¤§¡×/Ñ/ôð4 €Kô ×$Ò$ØFóð ô × Ò ð ".ó /ð 	/rG   rD  rQ  rÂ  r  rÏ  )FrŸ  ru	  (½  r  ro  rô  r   rË  Úllvmliter   Úllvmlite.irr   Únumpyr¦  Únumbar   r   Ú
numba.corer   r   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/   r0   Únumba.cpython.unsafe.tupler1   r2   r3   Únumba.core.typing.npydeclr4   ra  r5   rb  r6   r7   r8   rF   rK   r€   r‡   rŽ   r’   r�   r¥   r«   rÜ   rß   rå   rî   r  rÿ   r  ÚArrayIteratorÚBORROWEDr  r8  r  r>  r  r¡   r%  rA  rQ  rO  rÔ  ÚAnyrV  r§   r[  r    rb  rg  r¶  ri  r�  r£  r·  rÊ  ræ  r   rL  r7  r>  rC  rE  rM  rm  rv  r‚  rŠ  r”  rš  r¤  r©  r¬  r¶  r¼  Úbroadcast_shapesrÍ  rÑ  r×  rÛ  rä  rð  rS  r  r#  r&  r:  ÚVarArgr=  rA  rG  r!  rb  rS  Ú	geomspacerl  Úrot90rw  r†  rŽ  r–  r˜  rœ  rŸ  Úresizer¯  rm   r¹  rÄ  r¥  rÊ  rÎ  rÜ  rá  r  r  r  r+  ri   r1  r›   r5  ÚuniquerA  rR  rP  rE  rW  r_  ra  rn  r°  ru  rx  Ú
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  r   r&  r+  r7  r9  r·  rÃ  r$  rô  rð  rö  rù  rû  rý  r(  r  rÿ  r  rÒ  r  r	  r  r  r>  r  ÚNumpyNdIterTyper  Úeqr  r+  r/  r  r,  rD  rH  r»  rN  rY  rF  r]  rd  ri  rÐ  rm  rq  rv  r¦  r|  r~  r‚  r„  rŠ  rŒ  r‘  rñ  r•  r—  rš  rœ  rŸ  r¤  rª  Úeyer±  Údiagrº  rª   rÀ  ÚdiagflatrÈ  rÐ  rÑ  rå  rñ  r½  r  rM  r  r  r  r  r†  r   r.  r3  r6  r=  r@  rC  rF  rP  rT  rq  rs  rv  r�  r‡  r  rŒ  r–  rœ  r¤  r­  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-  r6  Úcolumn_stackr<  r>  rD  ÚstackrH  rK  rU  r_  rZ  rf  Úvstackrj  Ú	row_stackrt  Údstackrx  r~  r…  rs  rŒ  rt  r�  r   Úflipr¥  r¨  r¼  r¿  rÂ  ÚvsplitrÌ  ÚhsplitrÑ  ÚdsplitrÕ  rÜ  r×  rä  ræ  rí  r;  rò  Úargsortrú  rü  ÚUnicodeCharSeqrë  rX  r  ÚNPTimedeltaÚ
NPDatetimer	  r	  r	  Útype_callabler	  r	  ÚlibÚstride_tricksr	  r-	  rR  r;	  rr  rC	  rV	  Útake_along_axisr]	  rm	  rv	  rv   rG   rE   Ú<module>r­	     s  ðñó
 Û Û Û å Ý  ã ç *ß H× H÷;÷ ;÷ ;÷ PÑ O÷*÷ *÷ *ñ *õ (Ý *÷Aõ Aç +Ý !ß Bß LÝ 5÷Eõ Eò#ò6ò9òx(ò-òMò	ò
ò
 ð õBòJHò& ñ
 
ˆ.Óñó ðñ, ˆy˜%Ÿ,™,Ó'ñó (ðò.;ñ* ˆz˜5×.Ñ.Ó/Ùˆw×ÑÓ ñ-ó !ó 0ð-ð6  $õA4òHò ;ñ* ˆx×Ñ §¡¨u¯}©}Ó=Ùˆx×Ñ §¡¨u¯©Ó?ñEó @ó >ðEñ ˆx×Ñ §¡¨u¯©Ó?ñEó @ðEñ0 ˆx×Ñ §¡¨u¯y©y¸%¿)¹)ÓDñ%6ó Eð%6ñP ˆs�E—L‘LÓ!ñFó "ðFñ ˆ|˜UŸ[™[Ó)ñ8ó *ð8ð �6ÓÙ�? E§K¡K°·±Ó;ñ)ó <ð)ô(/"ˆfô /"ôd/-�Gô /-ôd�Wô ô>:-˜'ô :-ôzN-˜'ô N-ôbB-�7ô B-ôJL�6ô Lò^(GñV ˆx×Ñ §¡¨u¯{©{Ó;ñ;ó <ð;ò&'òTòHò
ò:$òz"òJ!ò. ð4 ñó ðð, ñó ðð" ñ5ó ð5ò>-ñ 
ˆ"�/Š/Óñ'&ó ð'&ðT ñ3ó ð3ñ  
ˆ"×
Ò
Óñ%ó ð%ñP 
ˆ"×
Ò
Óñ6ó ð6òrñ 
Ð
"¨9Ñ5ñ
ó 6ð
ñ 
Ð
"¨5Ñ1ñó 2ðò*U%òvñ& Ð  %§+¡+Ó.ñ;ó /ð;ò
ñ Ð  %§+¡+¨u¯©Ó?ñ3Eó @ð3Eñl Ð  %§+¡+¨u¯|«|¸E¿I¹IÓ/FÓGñFó HðFñ
 
ˆ"�,Š,Óôó ðñ ˆu�{‰{˜CÓ ñ9ó !ð9ñ& 
ˆ"�+Š+Óôó ðñ 
ˆ"�,Š,ÓôIó ðIñX 
ˆ"�(Š(Óôó ðò4!òH;ñ< ˆ §¡¨U¯_©_Ó=ñ=Eó >ð=Eñ@ ˆ §¡¨U¯\«\¸%¿)¹)Ó-DÓEñ>ó Fð>ð
 �6ÓÙˆb�jŠjÓñó ññ
 ˆb�jŠjÓñó ðñ 
ˆ"�)Š)Óñ+ó ð+ñ\ 
ˆ"�)Š)Óôó ðñ2 ˆ}˜eŸk™kÓ*ñó +ðñ, ˆr�xŠx˜Ÿ™Ó%ñGó &ðGñ ˆ §¡Ó,ñó -ðð ñ
ó ð
ð ñó ðñ 
ˆ"�'Š'Óôvó ðvñr �—‘˜fÓ%ôó &ðò{ñ| 
ˆ"�(Š(Óñó ðñ 
ˆ"�'Š'Óñó ðñ 
ˆ"�)Š)Óñó ðñ 
ˆ"�)Š)Óñ)1ó ð)1ðX ñó ðð" ×Ò˜5Ÿ;™;¨Ó1ñó 2ðð ñó ðò	ñ 
Ð
 9Ñ-ñ(ó .ð(ñV ˆ|˜UŸ[™[¨%¯/ª/Ó:ñ$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ñ:ó 1ð:ñ
 ˆu×Ò Ó0ñ:ó 1ð:ñ
 ˆu×Ò Ó,ñ:ó -ð:ñ ˆu�{‰{˜HÓ%ñ	9ó &ð	9ñ ˆu× Ò  &Ó)ñ:ó *ð:ñ ˆE×Ò˜uŸ~š~Ó.ÙˆE×Ò˜uŸ}š}Ó-ñ;ó .ó /ð;òñ4 ˆu�{‰{˜GÓ$ñ8ó %ð8ñ ˆu×Ò Ó.Ùˆu×Ò Ó0ñ	:ó 1ó /ð	:ñ ˆu×Ò Ó0ñ
:ó 1ð
:ñ  ˆu�{‰{˜FÓ#ñQó $ðQñ ˆu�{‰{˜FÓ#ñQó $ðQò 4Mñn �—‘˜fÓ%Ù�—‘˜kÓ*ñó +ó &ðò%ñ
 ˆe�kŠk˜6Ô " :Ô .Ù ˆe�kŠk˜6Ô " :Ô .ñ Ð ×!2Ò!2°E·I±IÓ>ñ(ó ?ð(ñ. �u—{‘{Ó#ñ4;ó $ð4;ñn Ð §¡¨e×.AÑ.AÓBñOó CðOñ �u—|’|Ó$ñ$=ó %ð$=ñN �u—|’|Ó$ñDó %ðDñ: Ð §¢¨u×/BÑ/BÓCñAó DðAñ Ð §¢¨u×/CÒ/CÓDñEó EðEñ Ð §¢¨u×/BÑ/BÀEÇIÁIÓNñ	%ó Oð	%ñ Ð §¢¨u×/CÒ/CÀUÇYÁYÓOñ
%ó Pð
%ñ" �—‘Óñ;ó ð;ñ �—’Óñ3ó ð3ñ �—’Óñ9ó ð9ñ ˆx�|Š|˜UŸ[™[¨%¯+©+Ó6ñ
Gó 7ð
Gñ  �E—K‘K Ó,ñó -ðò9ò>ð IMØ6:õ#ðD '+õOòEòP
>òBVñr ˆu�{‰{˜FÓ#ñPó $ðPñ ˆz˜5×.Ò.Ó/Ùˆw×ÑÓ ñEó !ó 0ðEñ ˆx×Ñ ×!4Ò!4°e·m±mÓDñEó EðEñ ˆx×Ñ ×!4Ò!4°e·m±mØ�y‰yóñ%óð%ñ ˆs�E×'Ò'Ó(ñó )ññ ˆr�~Š~˜uŸ{™{Ó+ñEó ,ñEñ" ˆz˜5×5Ò5Ó6Ùˆw×ÑÓ ñCó !ó 7ñCñ ˆx˜Ÿ› e§m¡mÓ4Ó5Ùˆr�zŠz˜5Ÿ<›<¨¯©Ó6Ó7ñ
Eó 8ó 6ñ
Eñ ˆx˜Ÿ™Ó)Ùˆr�zŠz˜5Ÿ?™?Ó+ñEó ,ó *ñEñ* ˆz˜5×1Ò1Ó2Ùˆw×ÑÓ ñ7ó !ó 3ñ7ñ ˆr�yŠy˜%Ÿ)™)Ó$ñ>ó %ñ>ñ& ˆz˜5×0Ò0Ó1Ùˆw×ÑÓ ñ7ó !ó 2ñ7ñ ˆx�{Š{˜EŸKšK¨¯ªÓ5ñFó 6ñFóLñ^ �e—k‘k ;°uÑ=ñó >ñó*ð ñ
ó ñ
ó-ó`Kó#ó&ð ñó ññ 
ˆ"�(Š(ÓÙ"ó &ó ñ&ð* ñó ññ 
ˆ"�-Š-Óôó ñð0 ñó ññ �—‘˜lÓ+ñó ,ññ 
ˆ"�(Š(ÓÙ"ó ó ññ 
ˆ"�-Š-Óôó ññ 
ˆ"�,Š,Óô
ó ñ
ñ 
ˆ"�'Š'Óôó ññ  
ˆ"�,Š,Óô
ó ñ
ñ 
ˆ"�'Š'Óôó ññ 
ˆ"�+Š+Óôó ñó	ð ×ÒÑ%Ó&ñó 'ñð ×Ò�B—F’FÓØ˜1¡Eó ó ññ2 
ˆ"�'Š'Óô#ó ñ#ñL 
ˆ"�*Š*Óñó ññ6 
ˆ"�+Š+Óôó ñó4  ñF 
ˆ"�'Š'ÓÙ�—‘˜fÓ%ô^ó &ó ñ^óBñ4 
ˆ"�)Š)Óô@ó ñ@ñF 
ˆ"�+Š+Óô'ó ñ'óT"PðJ ñó ññ ˆ|˜UŸ[™[Ó)ñ4ó *ñ4ñ 
ˆ"�'Š'Óñó ñó><ðB ñ?ó ñ?ñ 
ˆ"×
Ò
Óò
ó  ñ
ñ 
ˆ"×
Ò
Óòó ññ ‰~˜uŸ{™{¨E¯OªOÓ<Ù‰~˜uŸ{™{¨E×,?Ñ,?Ó@òPó Aó =ñPð: ò'ó ñ'ñT �—‘™iÓ(òó )ñð òTó ñTñn 
ˆ"�-Š-ÓÙ%*±"¸Qô ó ññ8 
ˆ&Óõó ññ 
ˆ&Óõó ñô!ôH1Dôhôô"ô<&'ôR&#ôR)ð òó ññ2 
ˆ"�(Š(Óõó ñôô&?ô:@ô:ð8 òó ññ  
ˆ"�.Š.Óòó ñô%ô2ñ. 
ˆ"�-Š-Óò#ó ñ#ñ
 
ˆ"�-Š-Óò&ó ñ&ñ
 
ˆ"�-Š-Óò)ó ñ)ô
:ôz/FôdVFôr,ð$ òó ññ  
ˆ"�.Š.Óõó ñôð ò"ó ñ"ñJ 
ˆ"�/Š/Óòó ñôð òó ññ 
ˆ"�(Š(Óõó ñôð òó ññ4 
ˆ"�)Š)Óòó ñð òó ññ4 
ˆ"�)Š)Óòó ñð �FÓÙˆR�\Š\Ô™>Ô*ð ò&ó ñ&ñR 
ˆ"�)Š)Óòó ñð ×Ò˜5Ÿ;™;©Ó/òó 0ñð ×Ò˜5Ÿ;™;©Ó.òó /ññ 
ˆ"�)Š)Óòó ññ  
ˆ"�)Š)Óòó ñð  òó ññ: 
ˆ"�'Š'Óò
ó ñ
ñ 
ˆ"�.Š.Óõ;ó ñ;ñ| 
ˆ"�(Š(ÓõCó ñCñ4 
ˆ"�)Š)Óòó ññ& 
ˆ"�)Š)Óòó ññ* 
ˆ"�)Š)Óòó ñð, 
�ô÷ô0ñ ‰|˜UŸ[™[Ó)ò
Ió *ñ
Iñ 
ˆ"�'Š'Óò	ó ñ	ñ ‰ §¡¨U×-@Ñ-@ÓAÙˆr�zŠz˜5Ÿ;™;¨×(;Ñ(;Ó<ò9ó =ó Bñ9ñ& ˆE�K‰K˜Ÿ™Ó%òó &ññ ˆE�K‰K˜×-Ò-Ó.ÙˆE�K‰K˜ŸšÓ%ÙˆE�K‰K˜Ÿ™Ó'ÙˆE�K‰K˜ŸšÓ'ÙˆE�K‰K˜ŸšÓ'ÙˆE�K‰K˜×*Ò*Ó+ÙˆE�K‰K˜×)Ò)Ó*òFó +ó ,ó (ó (ó (ó &ó /ñFñ ˆE�K‰K˜×-Ò-Ó.òEó /ñEôð ×ÓÑ*Ó+òó ,ññ" Ñ  %§+¡+¨u¯©ÀÇÁÓPò;ó Qñ;ð* ×Ò�B—F’F×(Ò(×3Ò3Ó4õó 5ñð8 ×Ò�B—F’F×(Ò(×<Ò<Ó=õ[$ó >ñ[$ñ| 
‰$ƒòó ññ& 
ˆ"�+Š+Óòó ñð> ò8ó ñ8ñv 
ˆ"×
Ò
Óò( ó ñ( ñV 
ˆ"�-Š-Óõ^ó ò^rG   