
    Si                    D    S SK Jr  S SKrS SKJr  SS jr " S S\5      rg)    )annotationsN)OpRunc                X   US:X  a  S nOUS:X  a  S nOUS:X  a  S nOS nUS:  a  U R                   U-   n[        U R                  5      S	:X  a>  US:X  a8  [        R                  " U 5      n[        XS
S9 H  u  pxU" Xg   U5      Xg'   M     U$ [        UR                  5      S:X  a  [        R                  " U 5      nUS:X  a]  [        UR                  S   5       H?  n	[        UR                  S	   5       H   n
U" XaX4   U
4   X)U
4   5      XaX4   U
4'   M"     MA     U$ [        UR                  S   5       H?  n	[        UR                  S	   5       H   n
U" XiXU
4   4   X)U
4   5      XiXU
4   4'   M"     MA     U$ [        UR                  5      S:X  Ga  [        R                  " U 5      nUS:X  a~  [        UR                  S   5       H`  n	[        UR                  S	   5       HA  n
[        UR                  S   5       H"  nU" XaXU4   X4   X)X4   5      XaXU4   X4'   M$     MC     Mb     U$ US	:X  a~  [        UR                  S   5       H`  n	[        UR                  S	   5       HA  n
[        UR                  S   5       H"  nU" XiXX4   U4   X)X4   5      XiXX4   U4'   M$     MC     Mb     U$ US:X  a|  [        UR                  S   5       H`  n	[        UR                  S	   5       HA  n
[        UR                  S   5       H"  nU" XiXXU4   4   X)X4   5      XiXXU4   4'   M$     MC     Mb     U$ [        UR                  5      S:X  a  [        R                  " U 5      n[        UR                  S   5       H  n[        UR                  S	   5       Hk  n	[        UR                  S   5       HL  n
[        UR                  S   5       H-  nXX/nXXU4   X'   [        U5      nU" Xn   X,XU4   5      Xn'   M/     MN     Mm     M     U$ [        SUR                   SU S35      e)zScatter elements.

::
    for 3-dim and axis=0
        output[indices[i][j][k]][j][k] = updates[i][j][k]
    for axis 1
        output[i][indices[i][j][k]][k] = updates[i][j][k]
    and so on.
addc                
    X-   $ N xys     e/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnx/reference/ops/op_scatter_elements.pyfscatter_elements.<locals>.f   s	    5L    minc                    [        X5      $ r   )r   r
   s     r   r   r          q9r   maxc                    [        X5      $ r   )r   r
   s     r   r   r   !   r   r   c                    U$ r   r	   r
   s     r   r   r   &   s    Hr   r      T)strict         z-ScatterND is not implement for indices.shape=z
 and axis=.)	ndimlenshapenpcopyziprangetupleNotImplementedError)dataindicesupdatesaxis	reductionr   	scatteredposupijkaindextuple_indexs                  r   scatter_elementsr4      sL    E	 
e		 
e		
	 axyy4
4::!	GGDM	7D9GCy~r2IN :
7==QGGDM	197==+,w}}Q/0A23!!$-"23WT]3IadmQ./ 1 -  7==+,w}}Q/0A23!WT]"23WT]3IA./ 1 -
 
7==QGGDM	197==+,w}}Q/0A"7==#34<=%aAg&6&<=w!w?O=	!'"2A"89 5 1 -(  QY7==+,w}}Q/0A"7==#34<=%A)91&<=w!w?O=	WW%5q"89 5 1 -  QY7==+,w}}Q/0A"7==#34<=%A!G,<&<=w!w?O=	Qa(8"89 5 1 - 
7==QGGDM	w}}Q'(A7==+,w}}Q/0A"7==#34!"q&-qj&9&+El12%2#qQJ/2	.	 5 1 - ) 

7jQUPVVWX r   c                      \ rS rSrSS jrSrg)ScatterElementso   Nc                    [        XX4US9nU4$ )N)r)   r*   )r4   )selfr&   r'   r(   r)   r*   ress          r   _runScatterElements._runp   s    tgIVvr   r	   )NN)__name__
__module____qualname____firstlineno__r;   __static_attributes__r	   r   r   r6   r6   o   s    r   r6   )r   N)
__future__r   numpyr    onnx.reference.op_runr   r4   r6   r	   r   r   <module>rE      s#    #  'aHe r   