§
    Ÿ²Åj�L ã                   óÆ  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
mZ d dlZ ej        d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d	¦  «        Z G d
„ d¦  «        Z G d„ dej        ¦  «        Zd"d„Zd„ Zd„ Z G d„ de	¦  «        Z G d„ dej        ¦  «        Z G d„ de	¦  «        Zd„ Zd„ Zd„ Zd„ Zd„ Z G d„ d¦  «        Z dddd œd!„Z!dS )#é    N)ÚListÚ
NamedTupleÚOptionalÚTupleÚnnapi_serializec                   óB   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdS )ÚNNAPI_OperandCoder   é   é   é   é   é   é   é   é   é	   é
   é   é   N)Ú__name__Ú
__module__Ú__qualname__ÚFLOAT32ÚINT32ÚUINT32ÚTENSOR_FLOAT32ÚTENSOR_INT32ÚTENSOR_QUANT8_ASYMMÚBOOLÚTENSOR_QUANT16_SYMMÚTENSOR_FLOAT16ÚTENSOR_BOOL8ÚFLOAT16ÚTENSOR_QUANT8_SYMM_PER_CHANNELÚTENSOR_QUANT16_ASYMM© ó    úQC:\Projects\Historical\venv\Lib\site-packages\torch/backends/_nnapi/serializer.pyr	   r	      sU   € € € € € Ø€GØ€EØ€FØ€NØ€LØÐØ€DØÐØ€NØ€LØ€GØ%'Ð"ØÐÐÐr'   r	   c                   óŠ  — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-d,Z.d-Z/d.Z0d/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8d7Z9d8Z:d9Z;d:Z<d;Z=d<Z>d=Z?d>Z@d?ZAd@ZBdAZCdBZDdCZEdDZFdEZGdFZHdGZIdHZJdIZKdJZLdKZMdLZNdMZOdNZPdOZQdPZRdQZSdRZTdSZUdTZVdUZWdVZXdWZYdXZZdYZ[dZZ\d[Z]d\Z^d]Z_d^Z`d_Zad`S )aÚNNAPI_OperationCoder   r
   r   r   r   r   r   r   r   r   r   r   r   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é    é!   é"   é#   é$   é%   é&   é'   é(   é)   é*   é+   é,   é-   é.   é/   é0   é1   é2   é3   é4   é5   é6   é7   é8   é9   é:   é;   é<   é=   é>   é?   é@   éA   éB   éC   éD   éE   éF   éG   éH   éI   éJ   éK   éL   éM   éN   éO   éP   éQ   éR   éS   éT   éU   éV   éW   éX   éY   éZ   é[   é\   é]   é^   N)br   r   r   ÚADDÚAVERAGE_POOL_2DÚCONCATENATIONÚCONV_2DÚDEPTHWISE_CONV_2DÚDEPTH_TO_SPACEÚ
DEQUANTIZEÚEMBEDDING_LOOKUPÚFLOORÚFULLY_CONNECTEDÚHASHTABLE_LOOKUPÚL2_NORMALIZATIONÚ
L2_POOL_2DÚLOCAL_RESPONSE_NORMALIZATIONÚLOGISTICÚLSH_PROJECTIONÚLSTMÚMAX_POOL_2DÚMULÚRELUÚRELU1ÚRELU6ÚRESHAPEÚRESIZE_BILINEARÚRNNÚSOFTMAXÚSPACE_TO_DEPTHÚSVDFÚTANHÚBATCH_TO_SPACE_NDÚDIVÚMEANÚPADÚSPACE_TO_BATCH_NDÚSQUEEZEÚSTRIDED_SLICEÚSUBÚ	TRANSPOSEÚABSÚARGMAXÚARGMINÚAXIS_ALIGNED_BBOX_TRANSFORMÚBIDIRECTIONAL_SEQUENCE_LSTMÚBIDIRECTIONAL_SEQUENCE_RNNÚBOX_WITH_NMS_LIMITÚCASTÚCHANNEL_SHUFFLEÚDETECTION_POSTPROCESSINGÚEQUALÚEXPÚEXPAND_DIMSÚGATHERÚGENERATE_PROPOSALSÚGREATERÚGREATER_EQUALÚGROUPED_CONV_2DÚHEATMAP_MAX_KEYPOINTÚINSTANCE_NORMALIZATIONÚLESSÚ
LESS_EQUALÚLOGÚLOGICAL_ANDÚLOGICAL_NOTÚ
LOGICAL_ORÚLOG_SOFTMAXÚMAXIMUMÚMINIMUMÚNEGÚ	NOT_EQUALÚPAD_V2ÚPOWÚPRELUÚQUANTIZEÚQUANTIZED_16BIT_LSTMÚRANDOM_MULTINOMIALÚ
REDUCE_ALLÚ
REDUCE_ANYÚ
REDUCE_MAXÚ
REDUCE_MINÚREDUCE_PRODÚ
REDUCE_SUMÚ	ROI_ALIGNÚROI_POOLINGÚRSQRTÚSELECTÚSINÚSLICEÚSPLITÚSQRTÚTILEÚTOPK_V2ÚTRANSPOSE_CONV_2DÚUNIDIRECTIONAL_SEQUENCE_LSTMÚUNIDIRECTIONAL_SEQUENCE_RNNÚRESIZE_NEAREST_NEIGHBORr&   r'   r(   r*   r*   %   s   € € € € € Ø
€CØ€OØ€MØ€GØÐØ€NØ€JØÐØ€EØ€OØÐØÐØ€JØ#%Ð Ø€HØ€NØ€DØ€KØ
€CØ€DØ€EØ€EØ€GØ€OØ
€CØ€GØ€NØ€DØ€DØÐØ
€CØ€DØ
€CØÐØ€GØ€MØ
€CØ€IØ
€CØ€FØ€FØ"$ÐØ"$ÐØ!#ÐØÐØ€DØ€OØ!ÐØ€EØ
€CØ€KØ€FØÐØ€GØ€MØ€OØÐØÐØ€DØ€JØ
€CØ€KØ€KØ€JØ€KØ€GØ€GØ
€CØ€IØ€FØ
€CØ€EØ€HØÐØÐØ€JØ€JØ€JØ€JØ€KØ€JØ€IØ€KØ€EØ€FØ
€CØ€EØ€EØ€DØ€DØ€GØÐØ#%Ð Ø"$ÐØ ÐÐÐr'   r*   c                   ó   — e Zd ZdZdZdZdZdS )ÚNNAPI_FuseCoder   r
   r   r   N)r   r   r   Ú
FUSED_NONEÚ
FUSED_RELUÚFUSED_RELU1ÚFUSED_RELU6r&   r'   r(   rÝ   rÝ   ‡   s"   € € € € € Ø€JØ€JØ€KØ€K€K€Kr'   rÝ   c                   ó   — e Zd ZdZdZdZdS )ÚOperandValueSourceTyper   r   r   N)r   r   r   Ú	IMMEDIATEÚNUMBERED_BUFFERÚNUMBERED_MEMORYr&   r'   r(   rã   rã   Ž   s   € € € € € Ø€IØ€OØ€O€O€Or'   rã   c                   ó   — e Zd ZdZdS )ÚTorchScalarTypesr+   N)r   r   r   ÚQUINT8r&   r'   r(   rè   rè   ˜   s   € € € € € Ø€F€F€Fr'   rè   ç�íµ ÷Æ°>c                 óP   — t          | |z
  ¦  «        |t          | |¦  «        z  k    S ©N)ÚabsÚmin)ÚlhsÚrhsÚ	tolerances      r(   Úapprox_equalrò   œ   s$   € Ýˆs�S‰y‰>Œ>˜Y­¨S°#©¬Ñ6Ò6Ð6r'   c           
      ó¦   — t           j        dt           j        dt           j        dt           j        dt           j        di}||          }|D ]}||z  }Œ|S )Nr   r
   r   )r	   r   r   r   r    r%   )Úop_typeÚdimsÚ
ITEM_SIZESÚsizeÚds        r(   Útensor_sizerù       s\   € åÔ(¨!ÝÔ&¨ÝÔ-¨qÝÔ-¨qÝÔ.°ð€Jð �gÔ€DØð ð ˆØ�‰	ˆˆØ€Kr'   c                 óH   — t          | ¦  «        }|||<   t          |¦  «        S rì   )ÚlistÚtuple)ÚtupÚindexÚvalueÚlss       r(   Úchange_elementr  ®   s"   € Ý	ˆc‰Œ€BØ€B€u�IÝ�‰9Œ9Ðr'   c                   ó‚   — e Zd ZU dZeed<   eed<   eed<   eed<   eed<   eed<   eed<   eed	<   eed
<   eed<   eed<   dS )ÚConvPoolArgs2dz*Configuration arguments for a convolution.Úkernel_hÚkernel_wÚstride_hÚstride_wÚpad_tÚpad_bÚpad_lÚpad_rÚ
dilation_hÚ
dilation_wÚgroupN)r   r   r   Ú__doc__ÚintÚ__annotations__r&   r'   r(   r  r  ´   sy   € € € € € € Ø4Ð4à€M€M�MØ€M€M�MØ€M€M�MØ€M€M�MØ€J€J�JØ€J€J�JØ€J€J�JØ€J€J�JØ€O€O�OØ€O€O�OØ€J€J�J€J€Jr'   r  c                   ó   — e Zd ZdZdZdZdZdS )ÚDimOrderr   r
   r   iç  N)r   r   r   ÚPRESUMED_CONTIGUOUSÚCHANNELS_LASTÚSCALAR_OR_VECTORÚUNKNOWN_CONSTANTr&   r'   r(   r  r  Ä   s'   € € € € € ØÐØ€MØÐØÐÐÐr'   r  c                   ó\   — e Zd ZU dZeed<   eedf         ed<   eed<   eed<   eed<   d„ Z	d	S )
ÚOperandz"Represenation of an NNAPI operand.rô   .ÚshapeÚ	dim_orderÚscaleÚ
zero_pointc                 ót   — | j         t          j        u rdS | j         t          j        u rdS t	          d¦  «        ‚)NTFzUnknown dim order)r  r  r  r  Ú	Exception©Úselfs    r(   Úuse_nchwzOperand.use_nchwã   s;   € ØŒ>�XÔ9Ð9Ð9Ø�4ØŒ>�XÔ3Ð3Ð3Ø�5ÝÐ+Ñ,Ô,Ð,r'   N)
r   r   r   r  r  r  r   r  Úfloatr"  r&   r'   r(   r  r  Ë   sn   € € € € € € Ø,Ð,ð €L€L�Lð
 ��c�Œ?ÐÐÑð ÐÐÑð €L€L�LØ€O€O�Oð-ð -ð -ð -ð -r'   r  c                 ól  — t          | ¦  «        dk    sJ ‚t          |¦  «        dk    sJ ‚t          | ¦  «        }t          |¦  «        }t          |¦  «        t          |¦  «        k    rt          d¦  «        ‚t          |¦  «        t          |¦  «        k    rt          d¦  «        ‚g }t          ||¦  «        D ]m\  }}|dk    r|                     |¦  «         Œ!|dk    r|                     |¦  «         Œ=||k    r|                     |¦  «         ŒYt          d| › d|› �¦  «        ‚t          |¦  «        S )Nr   z.Non-equal-rank broadcast is not supported yet.r
   zCannot broadcast shapes: z and )Úlenrû   r  ÚzipÚappendrü   )Úshape1Úshape2Ús1Ús2ÚretÚd1Úd2s          r(   Úbroadcast_shapesr/  ë   s=  € Ýˆv‰;Œ;˜Š?ˆ?ˆ?ˆ?Ýˆv‰;Œ;˜Š?ˆ?ˆ?ˆ?Ý	ˆf‰Œ€BÝ	ˆf‰Œ€Bõ ˆ2�w„w•�R‘”ÒÐåØ<ñ
ô 
ð 	
õ ˆ2�w„w•�R‘”ÒÐåØ<ñ
ô 
ð 	
ð €CÝ�b˜"‘+”+ð 
ð 
‰ˆˆBØ�Š7ˆ7Ø�JŠJ�r‰NŒNˆNˆNØ�1ŠWˆWØ�JŠJ�r‰NŒNˆNˆNØ�2ŠXˆXØ�JŠJ�r‰NŒNˆNˆNåØA¨FÐAÐA¸ÐAÐAñô ð õ �‰:Œ:Ðr'   c                 ó¸  — | \  }}}}|j         dk    s|j        dk    rt          d¦  «        ‚|rK|dz
  |j        z  |j        z   |j        z
  |j        z
  }|dz
  |j        z  |j        z   |j	        z
  |j	        z
  }	nJ||j        z
  |j        z   |j        z   |j        z  dz   }||j        z
  |j	        z   |j
        z   |j        z  dz   }	|dk    rd}|dk    rd}	||||	f}
|
S )Nr
   zDilation not supported yet.r   )r  r  r  r  r  r  r	  r  r  r
  r  )Úimage_shapeÚargsÚout_chÚ	transposeÚbatchÚ_in_cÚin_hÚin_wÚout_hÚout_wÚ	out_shapes              r(   Úget_conv_pool_shaper<    s  € Ø*Ñ€Eˆ5�$˜ð „˜!ÒÐ˜tœ°!Ò3Ð3ÝÐ5Ñ6Ô6Ð6àð VØ˜‘˜Tœ]Ñ*¨T¬]Ñ:¸T¼ZÑGÈ$Ì*ÑTˆØ˜‘˜Tœ]Ñ*¨T¬]Ñ:¸T¼ZÑGÈ$Ì*ÑTˆˆà˜œÑ%¨¬
Ñ2°T´ZÑ?ÀDÄMÑQÐTUÑUˆØ˜œÑ%¨¬
Ñ2°T´ZÑ?ÀDÄMÑQÐTUÑUˆð ˆq‚y€yØˆØˆq‚y€yØˆà˜  uÐ-€IØÐr'   c                 ód  — |t           j        u r| S |t           j        u r8t          | d         gt	          | dd …         ¦  «        z   | d         gz   ¦  «        S |t           j        u r*t          | ¦  «        dk    st          | ¦  «        dk    sJ ‚| S |t           j        u r| S t          d|›d�¦  «        ‚)Nr   r   r
   zBad dim_order: ú.)	r  r  r  rü   rû   r  r%  r  r  ©r  r  s     r(   Ú	fix_shaper@  $  s¹   € ð •HÔ0Ð0Ð0ØˆØ•HÔ*Ð*Ð*Ý�e˜A”h�Z¥$ u¨Q¨R¨R¤y¡/¤/Ñ1°U¸1´X°JÑ>Ñ?Ô?Ð?Ø•HÔ-Ð-Ð-Ý�5‰zŒz˜QŠˆ¥# e¡*¤*°¢/ / /Ð1ØˆØ•HÔ-Ð-Ð-àˆÝ
Ð4 iÐ4Ð4Ð4Ñ
5Ô
5Ð5r'   c                 ón   — | t           j        t           j        fv r|S | t           j        u sJ ‚g d¢|         S )N©r   r   r   r
   )r  r  r  r  )r  rø   s     r(   Úreverse_map_dimrC  5  sA   € ð
 •XÔ1µ8Ô3LÐMÐMÐMØˆØ�Ô.Ð.Ð.Ð.Ð.Øˆ<ˆ<˜Œ?Ðr'   c                 ó   — d| › d|› �S )NÚs_Ú_r&   )Úop_idÚdims     r(   Ú	flex_namerI  @  s   € ð �ÐÐ˜ÐÐÐr'   c                   ó6  — e Zd Zd—d„Zd„ Zd„ Zd„ Zd„ Zd„ Ze	j
        fd„Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Ze	j        fd„Zd„ Zd„ Zd„ Zd„ Zd˜d„Zd˜d„Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!	 d™d„Z"d „ Z#d˜d!„Z$d"„ Z%e&d#„ ¦   «         Z'i d$d%„ “d&d'„ “d(d)„ “d*d+„ “d,d-„ “d.d/„ “d0d1„ “d2d3„ “d4d5„ “d6d7„ “d8d9„ “d:d;„ “d<d=„ “d>d?„ “d@dA„ “dBdC„ “dDdE„ “i dFdG„ “dHdI„ “dJdK„ “dLdM„ “dNdO„ “dPdQ„ “dRdS„ “dTdU„ “dVdW„ “dXdY„ “dZd[„ “d\d]„ “d^d_„ “d`da„ “dbdc„ “ddde„ “dfdg„ “¥dh„ di„ dj„ dk„ dl„ dm„ dnœ¥Z(do„ Z)dp„ Z*dq„ Z+dr„ Z,ds„ Z-dt„ Z.du„ Z/dv„ Z0dw„ Z1dx„ Z2dy„ Z3dz„ Z4d{„ Z5d|„ Z6d}„ Z7d~„ Z8d„ Z9dd€œd�„Z:d‚„ Z;dƒ„ Z<d„„ Z=d…„ Z>d†„ Z?d‡„ Z@dˆ„ ZAd‰„ ZBdŠ„ ZCd‹„ ZDdŒ„ ZEd�„ ZFdŽ„ ZGd�„ ZHd—d�„ZId‘„ ZJd’„ ZKd“„ ZLd—d”„ZMd•„ ZNd–„ ZOdS )šÚ_NnapiSerializerFc                 óò   — g | _         g | _        g | _        g | _        g | _        g | _        g | _        g | _        i | _        i | _	        i | _
        i | _        i | _        g | _        d| _        || _        |€i }d S d S ©Nr   )ÚoperandsÚvaluesÚ
operationsÚ
value_dataÚoperation_argsÚinputsÚoutputsÚ flexible_shape_computation_linesÚmodulesÚ	constantsÚtensor_sequencesÚjitval_operand_mapÚcached_immediatesÚused_weightsÚweight_offsetÚuse_int16_for_qint16)r!  Úconfigr]  s      r(   Ú__init__z_NnapiSerializer.__init__G  s�   € ØˆŒØˆŒØˆŒØˆŒØ ˆÔØˆŒØˆŒØ02ˆÔ-àˆŒØˆŒØ "ˆÔØ"$ˆÔØ!#ˆÔØˆÔØˆÔØ$8ˆÔ!àˆ>ØˆFˆFˆFð ˆ>r'   c                 ó*   — t          | j        ¦  «        S rì   )r%  rN  r   s    r(   Úget_next_operand_idz$_NnapiSerializer.get_next_operand_id]  s   € Ý�4”=Ñ!Ô!Ð!r'   c                 óÚ   — t          |t          ¦  «        sJ ‚|| j        v rt          d|›�¦  «        ‚|                      ¦   «         }| j                             |¦  «         || j        |<   |S )NzDuplicate tensor: )Ú
isinstancer  rY  r  ra  rN  r'  )r!  ÚjitvalÚoperÚ
operand_ids       r(   Úadd_tensor_operandz#_NnapiSerializer.add_tensor_operandc  sw   € Ý˜$¥Ñ(Ô(Ð(Ð(Ð(Ø�TÔ,Ð,Ð,ÝÐ;°Ð;Ð;Ñ<Ô<Ð<à×-Ò-Ñ/Ô/ˆ
ØŒ×Ò˜TÑ"Ô"Ð"Ø*4ˆÔ Ñ'ØÐr'   c                 ó�   — t          |t          ¦  «        sJ ‚|                      ¦   «         }| j                             |¦  «         |S rì   )rc  r  ra  rN  r'  )r!  re  rf  s      r(   Úadd_anonymous_tensor_operandz-_NnapiSerializer.add_anonymous_tensor_operandp  sE   € Ý˜$¥Ñ(Ô(Ð(Ð(Ð(Ø×-Ò-Ñ/Ô/ˆ
ØŒ×Ò˜TÑ"Ô"Ð"ØÐr'   c                 óü  — t          |j        ¦  «                             dd¦  «        }d}d}|dk    rt          j        }�n|dk    rt          j        }�n|dk    r5t          j        }|                     ¦   «         }|                     ¦   «         }nÈ|dk    r=t          j        }|                     ¦   «         }|                     ¦   «         }|dk    sJ ‚n…|d	k    rg| j	        rQt          |d
d ¦  «        }t          j        t          j        f}||v r|}|j        }|j        }n:t          d|› d�¦  «        ‚t          d¦  «        ‚t          d|j        › d�¦  «        ‚t!          t#          |j        ¦  «        ||||¬¦  «        S )Nztorch.Ú ç        r   Úfloat32Úint32Úquint8Úqint32Úint16Únnapi_dtypez `nnapi_type` needs to be one of z for `int16`úy`int16` isn't supported. If you're trying to represent NNAPI qint16 with Pytorch int16, set `use_int16_for_qint16 = True`zCan't handle input with dtype 'ú')r  rô   r  r  r  )ÚstrÚdtypeÚreplacer	   r   r   r   Úq_scaleÚq_zero_pointr]  Úgetattrr    r%   Únnapi_scaleÚnnapi_zero_pointr  r  rü   r  )	r!  Útensorr  rv  r  r  rô   rr  Úop_codess	            r(   Útorch_tensor_to_operandz(_NnapiSerializer.torch_tensor_to_operandv  sº  € Ý�F”LÑ!Ô!×)Ò)¨(°BÑ7Ô7ˆØˆØˆ
Ø�IÒÐÝ'Ô6ˆG‰GØ�gÒÐÝ'Ô4ˆG‰GØ�hÒÐÝ'Ô;ˆGØ—N’NÑ$Ô$ˆEØ×,Ò,Ñ.Ô.ˆJˆJØ�hÒÐÝ'Ô4ˆGØ—N’NÑ$Ô$ˆEØ×,Ò,Ñ.Ô.ˆJØ ’?�?�?�?�?Ø�gÒÐØÔ(ð Ý% f¨m¸TÑBÔB�å%Ô9Ý%Ô:ð�ð  (Ð*Ð*Ø)�GØ"Ô.�EØ!'Ô!8�J�Jå#ØQ¸8ÐQÐQÐQñô ð õ  ðTñô ð õ
 ØA°&´,ÐAÐAÐAñô ð õ Ý˜œÑ%Ô%ØØØØ!ð
ñ 
ô 
ð 	
r'   c           
      ó`  — t          |dd¦  «        rt          j        nt          j        }|                      ||¦  «        }|                      ||¦  «        }| j                             |¦  «         t          |j	        ¦  «        D ])\  }}|dk    r|  
                    ||d|› d|› d�¦  «         Œ*|S )NÚ
nnapi_nhwcFr   zargs[z].shape[ú])rz  r  r  r  r  rg  rS  r'  Ú	enumerater  Úcompute_operand_shape)	r!  Úarg_idxrd  r}  r  Útoperrf  rH  r÷   s	            r(   Úadd_tensor_operand_for_inputz-_NnapiSerializer.add_tensor_operand_for_input§  sÏ   € õ �v˜|¨UÑ3Ô3ð.�HÔ"Ð"åÔ-ð 	ð
 ×,Ò,¨V°YÑ?Ô?ˆØ×,Ò,¨V°UÑ;Ô;ˆ
ØŒ×Ò˜:Ñ&Ô&Ð&Ý" 6¤<Ñ0Ô0ð 	ð 	‰IˆC�Ø�qŠyˆyØ×*Ò*Ø Ð%D¨WÐ%DÐ%D¸cÐ%DÐ%DÐ%Dñô ð øð Ðr'   c                 ó  — |                       ||¦  «        }t          | j        ¦  «        }| j                             |¦  «         t	          |j        |j        ¦  «        }| j                             |t          j	        f¦  «         t          | j
        ¦  «        }d}| j                             t          j        d|||¦  «        ¦  «         |t          j        k    r|                     dddd¦  «        }| j
                             |¦  «         |S )Nr   Úiiir   r   r
   )r  r%  rN  r'  rù   rô   r  rO  rã   rå   r[  rQ  ÚstructÚpackr  r  Úpermute)r!  r}  r  r†  rf  ÚtsizeÚbuf_numÚoffsets           r(   Úadd_tensor_operand_for_weightz._NnapiSerializer.add_tensor_operand_for_weight·  sí   € ð ×,Ò,¨V°YÑ?Ô?ˆÝ˜œÑ'Ô'ˆ
ØŒ×Ò˜UÑ#Ô#Ð#Ý˜EœM¨5¬;Ñ7Ô7ˆØŒ×Ò˜JÕ(>Ô(NÐOÑPÔPÐPÝ�dÔ'Ñ(Ô(ˆØˆØŒ×Ò�vœ{¨5°'¸6À5ÑIÔIÑJÔJÐJà�Ô.Ò.Ð.Ø—^’^ A q¨!¨QÑ/Ô/ˆFØÔ× Ò  Ñ(Ô(Ð(ØÐr'   c           	      óŠ  — t          |t          ¦  «        sJ ‚||f}|| j        vr“t          | j        ¦  «        }| j                             t          ||t          j        dd¦  «        ¦  «         | j	                             |t          j        f¦  «         | j                             |¦  «         || j        |<   | j        |         S )Nrl  r   )rc  rü   rZ  r%  rN  r'  r  r  r  rO  rã   rä   rQ  )r!  Úcoderÿ   rõ   Ú	cache_keyrf  s         r(   Úadd_immediate_operandz&_NnapiSerializer.add_immediate_operandÈ  s¹   € Ý˜$¥Ñ&Ô&Ð&Ð&Ð&Ø˜5�Mˆ	Ø˜DÔ2Ð2Ð2Ý˜Tœ]Ñ+Ô+ˆJØŒM× Ò ¥¨¨tµXÔ5NÐPSÐUVÑ!WÔ!WÑXÔXÐXØŒK×Ò 
Õ,BÔ,LÐMÑNÔNÐNØŒO×"Ò" 5Ñ)Ô)Ð)Ø0:ˆDÔ" 9Ñ-ØÔ% iÔ0Ð0r'   c                 ój   — |                       t          j        t          j        d|¦  «        d¦  «        S )NÚir&   )r”  r	   r   rŠ  r‹  ©r!  rÿ   s     r(   Úadd_immediate_int_scalarz)_NnapiSerializer.add_immediate_int_scalarÓ  s0   € Ø×)Ò)ÝÔ#¥V¤[°°eÑ%<Ô%<¸bñ
ô 
ð 	
r'   c                 ój   — |                       t          j        t          j        d|¦  «        d¦  «        S )NÚfr&   )r”  r	   r   rŠ  r‹  r—  s     r(   Úadd_immediate_float_scalarz+_NnapiSerializer.add_immediate_float_scalarØ  s0   € Ø×)Ò)ÝÔ%¥v¤{°3¸Ñ'>Ô'>Àñ
ô 
ð 	
r'   c                 óL   — |                       t          j        |rdndd¦  «        S )Nó   ó    r&   )r”  r	   r   r—  s     r(   Úadd_immediate_bool_scalarz*_NnapiSerializer.add_immediate_bool_scalarÝ  s-   € Ø×)Ò)ÝÔ"¨uÐ$A G G¸'À2ñ
ô 
ð 	
r'   c                 óª   — |                       t          j        t          j        d|¦  «                             ¦   «         t          |¦  «        f¦  «        S ©Nr–  )r”  r	   r   ÚarrayÚtobytesr%  r—  s     r(   Úadd_immediate_int_vectorz)_NnapiSerializer.add_immediate_int_vectorâ  sF   € Ø×)Ò)ÝÔ*ÝŒK˜˜UÑ#Ô#×+Ò+Ñ-Ô-Ý�‰ZŒZˆMñ
ô 
ð 	
r'   c                 ó   — || j         v S rì   )rY  )r!  rd  s     r(   Úhas_operand_for_jitvalz'_NnapiSerializer.has_operand_for_jitvalé  s   € Ø˜Ô0Ð0Ð0r'   c                 ó:   — | j         |         }|| j        |         fS rì   )rY  rN  )r!  rd  rf  s      r(   Úget_tensor_operand_by_jitvalz-_NnapiSerializer.get_tensor_operand_by_jitvalì  s!   € ØÔ,¨VÔ4ˆ
Ø˜DœM¨*Ô5Ð6Ð6r'   c                 óº   — |                       |¦  «        \  }}|j        D ]8}|dk    rt          d¦  «        ‚|dk     rt                               d|¦  «         Œ9||fS )Nr   z0Flexible size is not supported for this operand.z!Operand %s has runtime flex shape)r¨  r  r  r¹   Úwarning)r!  rd  rG  re  Úss        r(   Ú'get_tensor_operand_by_jitval_fixed_sizez8_NnapiSerializer.get_tensor_operand_by_jitval_fixed_sizeð  sw   € Ø×7Ò7¸Ñ?Ô?‰ˆˆtØ”ð 		Gð 		GˆAØ�AŠvˆvõ  ØFñô ð ð �1Šuˆuå—’Ð?ÀÑFÔFÐFøØ�dˆ{Ðr'   c                 ó¶   — | j                              |¦  «        }|€/|                      |d¦  «        \  }}|                      ||¦  «        }|| j        |         fS ©NÚ
TensorType)rY  ÚgetÚget_constant_valuer�  rN  )r!  rd  r  rf  rF  rÿ   s         r(   Úget_tensor_operand_or_constantz/_NnapiSerializer.get_tensor_operand_or_constantþ  s`   € ð Ô,×0Ò0°Ñ8Ô8ˆ
ØÐØ×.Ò.¨v°|ÑDÔD‰HˆAˆuØ×;Ò;¸EÀ9ÑMÔMˆJØ˜DœM¨*Ô5Ð6Ð6r'   c                 ó|   — |                       |d¦  «        \  }}|                      |¦  «        }|| j        |         fS r®  )r±  r�  rN  )r!  rd  rF  rÿ   rf  s        r(   Úget_tensor_operand_for_weightz._NnapiSerializer.get_tensor_operand_for_weight  s@   € Ø×*Ò*¨6°<Ñ@Ô@‰ˆˆ5Ø×7Ò7¸Ñ>Ô>ˆ
Ø˜DœM¨*Ô5Ð6Ð6r'   c                 ó®   — | j                              |t          |¦  «        t          |¦  «        f¦  «         | j                             ||z   ¦  «         d S rì   )rP  r'  r%  rR  Úextend)r!  ÚopcoderS  rT  s       r(   Úadd_operationz_NnapiSerializer.add_operation  sM   € ØŒ×Ò ­¨F©¬µS¸±\´\ÐBÑCÔCÐCØÔ×"Ò" 6¨GÑ#3Ñ4Ô4Ð4Ð4Ð4r'   c                 ó0   — || j         vsJ ‚|| j         |<   d S rì   )rX  )r!  rd  rO  s      r(   Úadd_tensor_sequencez$_NnapiSerializer.add_tensor_sequence  s)   € Ø˜TÔ2Ð2Ð2Ð2Ð2Ø(.ˆÔ˜fÑ%Ð%Ð%r'   c                 ó4   — || j         vsJ ‚||f| j         |<   d S rì   )rW  ©r!  rd  Úctyperÿ   s       r(   Úadd_constant_valuez#_NnapiSerializer.add_constant_value  s+   € Ø˜Tœ^Ð+Ð+Ð+Ð+Ø"'¨ ˆŒ�vÑÐÐr'   Nc           	      óø   — | j                              |¦  «        }|€t          d|›d�¦  «        ‚|\  }}|�C|                     ¦   «         |k    r+t          d|› d|                     ¦   «         › d|›d�¦  «        ‚|S )Nz#Could not find constant value for 'z'.z Expected constant value of type z
, but got z for value 'rt  )rW  r°  r  Úkind)r!  rd  ÚtypekindÚrecordr½  rF  s         r(   r±  z#_NnapiSerializer.get_constant_value  sŸ   € Ø”×#Ò# FÑ+Ô+ˆØˆ>ÝØB°fÐBÐBÐBñô ð ð ‰ˆˆqØÐ E§J¢J¡L¤L°HÒ$<Ð$<ÝØl°8ÐlÐlÀuÇzÂzÁ|Ä|ÐlÐlÐagÐlÐlÐlñô ð ð ˆr'   c                 ót  — |€|j         }n't          |¦  «        t          |j         ¦  «        k    sJ ‚dg}t          |¦  «        D ]˜\  }}|dk    r#|                     t	          |¦  «        ¦  «         nU|dk    r$|                     t          ||¦  «        ¦  «         n+|dk    r|                     d¦  «         nt          d¦  «        ‚|                     d¦  «         Œ™|                     d¦  «         d	                     |¦  «        }|j        t          j
        k    rd
|› d�S |j        t          j        k    rd
|› d�S |j        t          j        k    rd|j        › d|j        › d|› d�S |j        t          j        t          j        fv r| j        rd
|› d�S t          d¦  «        ‚t          d|j        › �¦  «        ‚)zHReturn a TorchScript expression to build a template for a given operand.Nú(r   éÿÿÿÿÚ0z-Unknown dim value, dimensions should be >= -1ú,ú)rk  ztorch.zeros(z, dtype=torch.float32)z, dtype=torch.int32)z0torch.quantize_per_tensor(torch.zeros(1), scale=z, zero_point=z, dtype=torch.quint8).expand(z).contiguous()z, dtype=torch.int16)rs  z!Unsupported output operand type: )r  r%  rƒ  r'  ru  rI  r  Újoinrô   r	   r   r   r   r  r  r%   r    r]  )r!  rG  re  r  Úshape_partsrø   r«  Ú
shape_codes           r(   Úoperand_to_template_torchscriptz0_NnapiSerializer.operand_to_template_torchscript%  s  € àˆ=Ø”JˆEˆEå�u‘:”:¥ T¤Z¡¤Ò0Ð0Ð0Ð0à�eˆÝ˜eÑ$Ô$ð 	$ð 	$‰DˆAˆqØ�1Šuˆuà×"Ò"¥3 q¡6¤6Ñ*Ô*Ð*Ð*Ø�a’�à×"Ò"¥9¨U°AÑ#6Ô#6Ñ7Ô7Ð7Ð7Ø�b’�à×"Ò" 3Ñ'Ô'Ð'Ð'åØCñô ð ð ×Ò˜sÑ#Ô#Ð#Ð#Ø×Ò˜3ÑÔÐØ—W’W˜[Ñ)Ô)ˆ
ØŒ<Õ,Ô;Ò;Ð;ØD *ÐDÐDÐDÐDØŒ\Õ.Ô;Ò;Ð;ØB *ÐBÐBÐBÐBØŒ\Õ.ÔBÒBÐBð6Ø)-¬ð6ð 6ØBFÄ/ð6ð 6à%ð6ð 6ð 6ðð
 Œ\ÝÔ2ÝÔ1ð
ð 
ð 
ð Ô(ð ØF jÐFÐFÐFÐFåðTñô ð õ
 Ø>°´Ð>Ð>ñ
ô 
ð 	
r'   c                 óP   — |                       ||t          ||¦  «        ¦  «         d S rì   )r„  rI  )r!  Ú	out_op_idÚout_dimÚin_op_idÚin_dims        r(   Úforward_operand_shapez&_NnapiSerializer.forward_operand_shapeX  s*   € Ø×"Ò" 9¨gµyÀÈ6Ñ7RÔ7RÑSÔSÐSÐSÐSr'   c                 ó`   — | j                              t          ||¦  «        › d|› �¦  «         d S )Nz = )rU  r'  rI  )r!  rG  rH  Úexprs       r(   r„  z&_NnapiSerializer.compute_operand_shape[  sB   € ØÔ-×4Ò4Ý˜ Ñ$Ô$Ð/Ð/¨Ð/Ð/ñ	
ô 	
ð 	
ð 	
ð 	
r'   c                 ób  — |j         dd …         dk    rt          d¦  «        ‚|                     t          j        ¬¦  «        }d gdz  }||d<   |                      g d¢¦  «        |d<   d gdz  }|                      |¦  «        |d<   |                      t          j	        ||¦  «         |d         |fS )Nr   )r
   r
   z1Automatic transpose only supported for H,W == 1,1)r  r   rB  r
   )
r  r  Ú_replacer  r  r¤  ri  r¸  r*   r¢   )r!  Úin_idre  Úout_operrS  rT  s         r(   Útranspose_to_nhwcz"_NnapiSerializer.transpose_to_nhwc`  sÀ   € ØŒ:�a�b�bŒ>˜VÒ#Ð#ÝØCñô ð ð —=’=­8Ô+A�=ÑBÔBˆà�˜!‘ˆØˆˆq‰	Ø×1Ò1°,°,°,Ñ?Ô?ˆˆq‰	à�&˜1‘*ˆØ×6Ò6°xÑ@Ô@ˆ�‰
à×ÒÕ.Ô8¸&À'ÑJÔJÐJà�qŒz˜8Ð#Ð#r'   c                 ód  — |j         |j         k    r||||fS |j         |j         f}|t          j        t          j        fk    r|                      ||¦  «        ||fz   S |t          j        t          j        fk    r||f|                      ||¦  «        z   S t          d|j         ›d|j         ›�¦  «        ‚)Nz2Automatic transpose not supported for dim_orders: z, )r  r  r  r  rÙ  r  )r!  Úin0_idÚin0_operÚin1_idÚin1_operÚorderss         r(   Útranspose_for_broadcastz(_NnapiSerializer.transpose_for_broadcastt  sÌ   € ØÔ Ô!3Ò3Ð3Ø˜8 V¨XÐ5Ð5ð Ô$ hÔ&8Ð9ˆØ•hÔ2µHÔ4JÐKÒKÐKØ×)Ò)¨&°(Ñ;Ô;¸vÀxÐ>PÑPÐPØ•hÔ,­hÔ.JÐKÒKÐKØ˜HÐ%¨×(>Ò(>¸vÀxÑ(PÔ(PÑPÐPåØoÀÔASÐoÐoÐYaÔYkÐoÐoñ
ô 
ð 	
r'   c                 óê   — |                       |¦  «        \  }}|                     ¦   «         dk    r.|                     ¦   «                              ¦   «         dk    sJ ‚|S t          d|›d|›d�¦  «        ‚)NÚListTypeÚIntTypezCan't handle size arg of type 'z' for 'rt  )r±  rÀ  ÚgetElementTyper  r¼  s       r(   Úget_size_argz_NnapiSerializer.get_size_argƒ  s‚   € Ø×.Ò.¨vÑ6Ô6‰ˆˆuØ�:Š:‰<Œ<˜:Ò%Ð%Ø×'Ò'Ñ)Ô)×.Ò.Ñ0Ô0°IÒ=Ð=Ð=Ð=ØˆLÝØI¨eÐIÐI¸fÐIÐIÐIñ
ô 
ð 	
r'   c                 ó6  — d„ |D ¦   «         }|d         dk    sJ ‚|d         |d         g}|d         |d         g}|d         |d         g}|d	         |d
         g}|d         }t          |¦  «        dk    sJ ‚|ddgk    sJ ‚|                      |||||¦  «        S )Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r&   )Úitem)Ú.0r–  s     r(   ú
<listcomp>zD_NnapiSerializer.get_conv_pool_args_2d_from_pack.<locals>.<listcomp>�  s    € Ð.Ð.Ð.˜1ˆa�fŠf‰hŒhÐ.Ð.Ð.r'   r   r   r
   r   r   r   r   r   r   r   r   )r%  Úget_conv_pool_args_2d_common)	r!  Úkernel_sizeÚpacked_configÚpcÚstridesÚpaddingsÚ	dilationsÚoutput_paddingÚ	group_nums	            r(   Úget_conv_pool_args_2d_from_packz0_NnapiSerializer.get_conv_pool_args_2d_from_packŒ  s¾   € Ø.Ð. Ð.Ñ.Ô.ˆØ�!Œu˜ŠzˆzˆzˆzØ�a”5˜"˜Qœ%�.ˆØ�q”E˜2˜aœ5�>ˆØ˜”U˜B˜qœE�Nˆ	Ø˜Qœ%  A¤˜ˆØ�q”Eˆ	å�2‰wŒw˜"Š}ˆ}ˆ}ˆ}Ø ! Q Ò'Ð'Ð'Ð'à×0Ò0Ø˜ (¨I°yñ
ô 
ð 	
r'   c                 óü   — |                       |¦  «        }|                       |¦  «        }|€ddg}n|                       |¦  «        }|�|                      |d¦  «        \  }	}
nd }
|                      |||||
¦  «        S )Nr
   rã  )rå  r±  rë  )r!  rì  ÚstrideÚpaddingÚdilationr  rï  rð  rñ  rF  ró  s              r(   Úget_conv_pool_args_2d_from_jitz/_NnapiSerializer.get_conv_pool_args_2d_from_jitœ  s—   € ð ×#Ò# FÑ+Ô+ˆØ×$Ò$ WÑ-Ô-ˆØÐØ˜A˜ˆIˆIà×)Ò)¨(Ñ3Ô3ˆIØÐØ×2Ò2°5¸)ÑDÔD‰LˆAˆyˆyàˆIØ×0Ò0Ø˜ (¨I°yñ
ô 
ð 	
r'   c                 ó
  — t          |¦  «        }t          |¦  «        dk    sJ ‚t          |¦  «        dk    sJ ‚t          |¦  «        dk    sJ ‚t          |¦  «        dk    sJ ‚|\  }}||||g}	t          ||z   |	z   |z   |gz   Ž S ©Nr   )rû   r%  r  )
r!  rì  rï  rð  rñ  ró  ÚkernelsÚphÚpwÚreal_paddingss
             r(   rë  z-_NnapiSerializer.get_conv_pool_args_2d_common­  s¬   € õ �{Ñ#Ô#ˆå�7‰|Œ|˜qÒ Ð Ð Ð Ý�7‰|Œ|˜qÒ Ð Ð Ð Ý�8‰}Œ} Ò!Ð!Ð!Ð!Ý�9‰~Œ~ Ò"Ð"Ð"Ð"ð ‰ˆˆBØ˜R  RÐ(ˆåØ˜Ñ -Ñ/°)Ñ;¸y¸kÑIð
ð 	
r'   c                 ó®  — |                       d¦  «         |                       d¦  «         g }g }t          |j                             ¦   «         ¦  «        }|                      ||                     ¦   «         |¦  «         t          t          t          |j                             ¦   «         ¦  «        dd …         |¦  «        ¦  «        D ]I\  }\  }}	|  	                    |||	¦  «        }
| 
                    | j        |
         j        j        ¦  «         ŒJt          |j                             ¦   «         ¦  «        D ]6\  }}t                               d||¦  «         |                      |¦  «         Œ7|j                             ¦   «         }|                     ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                     d¦  «        }dg}|                     ¦   «                              ¦   «         dk    r|g}d}nk|                     ¦   «                              ¦   «         d	k    r| j        |         }t1          |¦  «        }n$t3          d
|                     ¦   «         › �¦  «        ‚|�"t1          |¦  «        t1          |¦  «        k    sJ ‚t          |¦  «        D ]š\  }}| j        |         }
| j         
                    |
¦  «         | 
                    | j        |
         j        j        ¦  «         |r||         nd }| 
                    |                      |
| j        |
         |¦  «        dz   ¦  «         Œ›| 
                    d¦  «         g }d}t;          j        d|t1          | j        ¦  «        t1          | j        ¦  «        t1          | j         ¦  «        t1          | j        ¦  «        t1          | j        ¦  «        ¦  «        }| 
                    |¦  «         |  !                    ¦   «         \  }}| "                    d„ | j        D ¦   «         ¦  «         | "                    |¦  «         | "                    d„ | j         D ¦   «         ¦  «         d #                    |¦  «        g}t1          |d         ¦  «        }|dz  dk    sJ ‚tI          |dz  ¦  «        }t          | j        ¦  «        D ]º\  }
\  }}}}}tK          ||¦  «        }t          |¦  «        D ]N\  }}|dk    r>tM          ||¦  «        }| j'         
                    d|› dtQ          |
|¦  «        › �¦  «         |dz  }ŒOtS          d„ |D ¦   «         ¦  «        }| 
                    |  *                    |¦  «        ¦  «         Œ»| "                    |¦  «         | 
                    |  *                    | j+        ¦  «        ¦  «         | 
                    |  *                    | j        ¦  «        ¦  «         | 
                    |  *                    | j        ¦  «        ¦  «         | j'         "                    |¦  «         tY          j,        dd #                    |¦  «        ¦  «        | j-        ||| j'        |fS )NFTr
   zProcessing node #%d: %rr   zreturn [r¯  rÅ  Ú	TupleTypezUnsupported return type: rÇ  r‚  Úiiiiiic              3   ól   K  — | ]/\  }}}}}t          j        d |t          |¦  «        ||¦  «        V — Œ0dS )ÚiifiN)rŠ  r‹  r%  )ré  Útrø   Ú_mr«  Úzs         r(   ú	<genexpr>z3_NnapiSerializer.serialize_model.<locals>.<genexpr>  sU   è è € ð 
ð 
Ù5E°a¸¸BÀÀ1�FŒK˜ ¥3 q¡6¤6¨1¨aÑ0Ô0ð
ð 
ð 
ð 
ð 
ð 
r'   c              3   ó:   K  — | ]}t          j        d g|¢R Ž V — ŒdS )r‰  N)rŠ  r‹  )ré  Úxs     r(   r  z3_NnapiSerializer.serialize_model.<locals>.<genexpr>  s4   è è € ÐEÐE°•V”[ Ð+¨Ð+Ð+Ð+ÐEÐEÐEÐEÐEÐEr'   r'   r   z
ser_model[z] = c              3   ó*   K  — | ]}|d k    r|ndV — ŒdS )rÅ  r   Nr&   ©ré  rø   s     r(   r  z3_NnapiSerializer.serialize_model.<locals>.<genexpr>  s.   è è € Ð=Ð=°!˜q Bšw˜w˜!˜!¨AÐ=Ð=Ð=Ð=Ð=Ð=r'   r–  ).rŸ  ÚnextÚgraphrS  r¾  Útyperƒ  r&  rû   r‡  r'  rN  r  rÿ   Únodesr¹   ÚdebugÚadd_nodeÚreturn_nodeÚ
inputsSizeÚoutputsSizeÚinputsAtrÀ  rX  r%  r  rY  rT  rÌ  rŠ  r‹  rO  rP  Úserialize_valuesr¶  rÉ  r  r@  rC  rU  rI  rü   Úserialize_intsrR  r¢  r[  ) r!  ÚmodelrS  Úreturn_shapesÚinp_dim_ordersÚout_dim_ordersÚself_jitvalr…  Úinput_valueÚinput_tensorrG  ÚidxÚnodeÚretnÚ
retn_inputÚtemplate_return_linesÚreturn_valuesÚretval_countr–  Úvr  ÚversionÚheaderÚserialized_valuesÚserialized_value_dataÚmodel_offsetrF  rõ   r  rø   r«  Úpt_ds                                    r(   Úserialize_modelz _NnapiSerializer.serialize_model¿  sM  € Ø×&Ò& uÑ-Ô-Ð-Ø×&Ò& tÑ,Ô,Ð,àˆØˆå˜5œ;×-Ò-Ñ/Ô/Ñ0Ô0ˆØ×Ò ¨[×-=Ò-=Ñ-?Ô-?ÀÑGÔGÐGå4=Ý•�U”[×'Ò'Ñ)Ô)Ñ*Ô*¨1¨2¨2Ô.°Ñ7Ô7ñ5
ô 5
ð 	Hð 	HÑ0ˆGÑ0�k <ð ×5Ò5Ø˜ lñô ˆEð ×!Ò! $¤-°Ô"6Ô"@Ô"FÑGÔGÐGÐGå" 5¤;×#4Ò#4Ñ#6Ô#6Ñ7Ô7ð 	 ð 	 ‰IˆC�Ý�IŠIÐ/°°dÑ;Ô;Ð;Ø�MŠM˜$ÑÔÐÐàŒ{×&Ò&Ñ(Ô(ˆØ�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&Ø—]’] 1Ñ%Ô%ˆ
Ø!+ ÐØ�?Š?ÑÔ×!Ò!Ñ#Ô# |Ò3Ð3Ø'˜LˆMØˆLˆLØ�_Š_ÑÔ×#Ò#Ñ%Ô%¨Ò4Ð4Ø Ô1°*Ô=ˆMÝ˜}Ñ-Ô-ˆLˆLåØ?¨J¯OªOÑ,=Ô,=Ð?Ð?ñô ð ð Ð$Ý�}Ñ%Ô%­¨]Ñ);Ô);Ò;Ð;Ð;Ð;Ý˜mÑ,Ô,ð 	ð 	‰DˆAˆqØÔ+¨AÔ.ˆEØŒL×Ò Ñ&Ô&Ð&Ø×!Ò! $¤-°Ô"6Ô"@Ô"FÑGÔGÐGØ(5Ð?�M !Ô$Ð$¸4ˆEØ!×(Ò(Ø×4Ò4°U¸D¼MÈ%Ô<PÐRWÑXÔXØññô ð ð ð 	×$Ò$ SÑ)Ô)Ð)àˆàˆÝ”ØØÝ�”ÑÔÝ�”ÑÔÝ�”Ñ Ô Ý�”ÑÔÝ�”ÑÔñ
ô 
ˆð 	�Š�VÑÔÐà37×3HÒ3HÑ3JÔ3JÑ0ÐÐ0à�Šð 
ð 
ØIMÌð
ñ 
ô 
ñ 	
ô 	
ð 	
ð 	�ŠÐ&Ñ'Ô'Ð'Ø�ŠÐEÐE°T´_ÐEÑEÔEÑEÔEÐEð —’˜%‘”Ð!ˆÝ˜5 œ8‘}”}ˆð ˜aÑ 1Ò$Ð$Ð$Ð$Ý˜<¨!Ñ+Ñ,Ô,ˆå1:¸4¼=Ñ1IÔ1Ið 	5ð 	5Ñ-ˆEÑ-�A�t˜Y¨¨1Ý˜d IÑ.Ô.ˆEÝ! %Ñ(Ô(ð "ð "‘��1Ø˜’6�6Ý*¨9°aÑ8Ô8�DØÔ9×@Ò@ØO \ÐOÐOµyÀÈÑ7MÔ7MÐOÐOñô ð ð  Ñ!��õ Ð=Ð=°uÐ=Ñ=Ô=Ñ=Ô=ˆEØ�LŠL˜×,Ò,¨UÑ3Ô3Ñ4Ô4Ð4Ð4à�ŠÐ*Ñ+Ô+Ð+Ø�Š�T×(Ò(¨Ô)<Ñ=Ô=Ñ>Ô>Ð>Ø�Š�T×(Ò(¨¬Ñ5Ô5Ñ6Ô6Ð6Ø�Š�T×(Ò(¨¬Ñ6Ô6Ñ7Ô7Ð7àÔ-×4Ò4Ð5JÑKÔKÐKõ ŒK˜˜SŸXšX e™_œ_Ñ-Ô-ØÔØØØÔ1Øð
ð 	
r'   c           	      óx  — g }g }t          | j        ¦  «        t          | j        ¦  «        k    sJ ‚t          | j        | j        ¦  «        D ]l\  \  }}}t          |¦  «        }|dz
  dz  dz   }|d||z
  z  z   }|                     t          j        d|||¦  «        ¦  «         |                     |¦  «         Œm||fS )Nr
   r   rž  r‰  )r%  rO  rQ  r&  r'  rŠ  r‹  )	r!  r*  r+  Úop_indexÚsource_typeÚdataÚsource_lengthÚphysical_lengthÚpadded_datas	            r(   r  z!_NnapiSerializer.serialize_values/  sß   € ØÐØ "ÐÝ�4”;ÑÔ¥3 t¤Ñ#7Ô#7Ò7Ð7Ð7Ð7Ý-0°´¸d¼oÑ-NÔ-Nð 
	6ð 
	6Ñ)Ñ#ˆX�{ TÝ ™IœIˆMð !.°Ñ 1°SÑ8¸AÑ=ˆOØ %¨?¸]Ñ+JÑ"KÑLˆKà×$Ò$Ý”˜E 8¨[¸-ÑHÔHñô ð ð "×(Ò(¨Ñ5Ô5Ð5Ð5à Ð"7Ð7Ð7r'   c                 óP   — t          j         d| ¦  «                             ¦   «         S r¡  )r¢  r£  )Úintss    r(   r  z_NnapiSerializer.serialize_intsA  s    € åŒ{˜3 Ñ%Ô%×-Ò-Ñ/Ô/Ð/r'   zprim::GetAttrc                 ó,   — |                       |¦  «        S rì   )Úadd_getattr©r!  r!  s     r(   ú<lambda>z_NnapiSerializer.<lambda>F  ó   € ¨D×,<Ò,<¸TÑ,BÔ,B€ r'   zprim::Constantc                 ó,   — |                       |¦  «        S rì   )Úadd_constant_noder:  s     r(   r;  z_NnapiSerializer.<lambda>G  s   € ¨T×-CÒ-CÀDÑ-IÔ-I€ r'   zprim::ListConstructc                 ó,   — |                       |¦  «        S rì   )Úadd_list_constructr:  s     r(   r;  z_NnapiSerializer.<lambda>H  s   € °$×2IÒ2IÈ$Ñ2OÔ2O€ r'   zprim::TupleConstructc                 ó,   — |                       |¦  «        S rì   )Úadd_tuple_constructr:  s     r(   r;  z_NnapiSerializer.<lambda>I  s   € °4×3KÒ3KÈDÑ3QÔ3Q€ r'   zaten::unsqueezec                 ó,   — |                       |¦  «        S rì   )Úadd_unsqueezer:  s     r(   r;  z_NnapiSerializer.<lambda>J  s   € ¨d×.@Ò.@ÀÑ.FÔ.F€ r'   zaten::toc                 ó,   — |                       |¦  «        S rì   )Úadd_tor:  s     r(   r;  z_NnapiSerializer.<lambda>K  s   €  t§{¢{°4Ñ'8Ô'8€ r'   zaten::detachc                 ó,   — |                       |¦  «        S rì   ©Ú	_identityr:  s     r(   r;  z_NnapiSerializer.<lambda>L  s   € ¨4¯>ª>¸$Ñ+?Ô+?€ r'   zaten::reshapec                 ó,   — |                       |¦  «        S rì   )Úadd_reshaper:  s     r(   r;  z_NnapiSerializer.<lambda>M  r<  r'   zaten::flattenc                 ó,   — |                       |¦  «        S rì   )Úadd_flattenr:  s     r(   r;  z_NnapiSerializer.<lambda>N  r<  r'   zaten::slicec                 ó,   — |                       |¦  «        S rì   )Ú	add_slicer:  s     r(   r;  z_NnapiSerializer.<lambda>O  ó   € ¨$¯.ª.¸Ñ*>Ô*>€ r'   z
aten::sizec                 ó,   — |                       |¦  «        S rì   )Úadd_sizer:  s     r(   r;  z_NnapiSerializer.<lambda>P  ó   € ¨¯ª°tÑ)<Ô)<€ r'   z	aten::catc                 ó,   — |                       |¦  «        S rì   )Úadd_catr:  s     r(   r;  z_NnapiSerializer.<lambda>Q  s   € ¨¯ª°TÑ(:Ô(:€ r'   z
aten::meanc                 ó,   — |                       |¦  «        S rì   )Úadd_meanr:  s     r(   r;  z_NnapiSerializer.<lambda>R  rS  r'   zaten::quantize_per_tensorc                 ó,   — |                       |¦  «        S rì   )Úadd_quantizer:  s     r(   r;  z_NnapiSerializer.<lambda>S  s   € ¸×8IÒ8IÈ$Ñ8OÔ8O€ r'   zaten::dequantizec                 ó,   — |                       |¦  «        S rì   )Úadd_dequantizer:  s     r(   r;  z_NnapiSerializer.<lambda>T  ó   € ¨t×/BÒ/BÀ4Ñ/HÔ/H€ r'   z	aten::addc                 óX   — |                       |t          j        t          j        ¦  «        S rì   )Úadd_add_sub_opr*   r}   rÝ   rÞ   r:  s     r(   r;  z_NnapiSerializer.<lambda>U  ó$   € ¨×(;Ò(;ØÕ%Ô)­>Ô+Dñ)
ô )
€ r'   z	aten::subc                 óX   — |                       |t          j        t          j        ¦  «        S rì   )r^  r*   r¡   rÝ   rÞ   r:  s     r(   r;  z_NnapiSerializer.<lambda>X  r_  r'   z	aten::mulc                 óX   — |                       |t          j        t          j        ¦  «        S rì   )Ú(add_pointwise_simple_binary_broadcast_opr*   r�   rÝ   rÞ   r:  s     r(   r;  z_NnapiSerializer.<lambda>[  ó$   € ¨×(UÒ(UØÕ%Ô)­>Ô+Dñ)
ô )
€ r'   z	aten::divc                 óX   — |                       |t          j        t          j        ¦  «        S rì   )rb  r*   r›   rÝ   rÞ   r:  s     r(   r;  z_NnapiSerializer.<lambda>^  rc  r'   z
aten::reluc                 óB   — |                       |t          j        ¦  «        S rì   )Úadd_pointwise_simple_unary_opr*   r�   r:  s     r(   r;  z_NnapiSerializer.<lambda>a  s   € ¨×)KÒ)KØÕ%Ô*ñ*
ô *
€ r'   zaten::sigmoidc                 óB   — |                       |t          j        ¦  «        S rì   )rf  r*   r‹   r:  s     r(   r;  z_NnapiSerializer.<lambda>d  s   € ¨D×,NÒ,NØÕ%Ô.ñ-
ô -
€ r'   zaten::softmaxc                 ó,   — |                       |¦  «        S rì   )Úadd_softmaxr:  s     r(   r;  z_NnapiSerializer.<lambda>g  r<  r'   zaten::hardtanhc                 ó,   — |                       |¦  «        S rì   )Úadd_hardtanhr:  s     r(   r;  z_NnapiSerializer.<lambda>h  s   € ¨T×->Ò->¸tÑ-DÔ-D€ r'   zaten::avg_pool2dc                 ó,   — |                       |¦  «        S rì   )Úadd_avg_pool2dr:  s     r(   r;  z_NnapiSerializer.<lambda>i  r\  r'   zaten::max_pool2dc                 óB   — |                       |t          j        ¦  «        S rì   )Úadd_pool2d_noder*   rŽ   r:  s     r(   r;  z_NnapiSerializer.<lambda>j  s   € ¨t×/CÒ/CØÕ%Ô1ñ0
ô 0
€ r'   zaten::adaptive_avg_pool2dc                 ó,   — |                       |¦  «        S rì   )Úadd_adaptive_avg_pool2dr:  s     r(   r;  z_NnapiSerializer.<lambda>m  s   € ¸×8TÒ8TØñ9
ô 9
€ r'   zaten::upsample_nearest2dc                 ó,   — |                       |¦  «        S rì   )Úadd_upsample_nearest2dr:  s     r(   r;  z_NnapiSerializer.<lambda>p  s   € °t×7RÒ7RØñ8
ô 8
€ r'   zaten::preluc                 ó,   — |                       |¦  «        S rì   )Úadd_prelu_opr:  s     r(   r;  z_NnapiSerializer.<lambda>s  s   € ¨$×*;Ò*;¸DÑ*AÔ*A€ r'   zaten::addmmc                 ó,   — |                       |¦  «        S rì   )Ú	add_addmmr:  s     r(   r;  z_NnapiSerializer.<lambda>t  rP  r'   zaten::linearc                 ó,   — |                       |¦  «        S rì   )Ú
add_linearr:  s     r(   r;  z_NnapiSerializer.<lambda>u  ó   € ¨4¯?ª?¸4Ñ+@Ô+@€ r'   zaten::_convolutionc                 ó,   — |                       |¦  «        S rì   )Úadd_conv_underscorer:  s     r(   r;  z_NnapiSerializer.<lambda>v  s   € °×1IÒ1IÈ$Ñ1OÔ1O€ r'   zaten::conv2dc                 ó,   — |                       |¦  «        S rì   )Ú
add_conv2dr:  s     r(   r;  z_NnapiSerializer.<lambda>w  rz  r'   zaten::log_softmaxc                 ó,   — |                       |¦  «        S rì   )Úadd_log_softmaxr:  s     r(   r;  z_NnapiSerializer.<lambda>x  s   € °×0DÒ0DÀTÑ0JÔ0J€ r'   zquantized::linearc                 ó,   — |                       |¦  «        S rì   )Úadd_qlinearr:  s     r(   r;  z_NnapiSerializer.<lambda>y  s   € °×0@Ò0@ÀÑ0FÔ0F€ r'   c                 óB   — |                       |t          j        ¦  «        S rì   ©Úadd_qconv2drÝ   rÞ   r:  s     r(   r;  z_NnapiSerializer.<lambda>z  s   € °×0@Ò0@Ø•.Ô+ñ1
ô 1
€ r'   c                 óB   — |                       |t          j        ¦  «        S rì   )r…  rÝ   rß   r:  s     r(   r;  z_NnapiSerializer.<lambda>}  s   € °T×5EÒ5EØ•.Ô+ñ6
ô 6
€ r'   c                 óF   — |                       |t          j        d¬¦  «        S )NT)r4  r„  r:  s     r(   r;  z_NnapiSerializer.<lambda>€  s&   € ¸$×:JÒ:JØ•.Ô+°tð ;Kñ ;
ô ;
€ r'   c                 óX   — |                       |t          j        t          j        ¦  «        S rì   )Úadd_qaddr*   r}   rÝ   rÞ   r:  s     r(   r;  z_NnapiSerializer.<lambda>ƒ  ó"   € ¨T¯]ª]ØÕ%Ô)­>Ô+Dñ.
ô .
€ r'   c                 óX   — |                       |t          j        t          j        ¦  «        S rì   )r‰  r*   r}   rÝ   rß   r:  s     r(   r;  z_NnapiSerializer.<lambda>†  s"   € °$·-²-ØÕ%Ô)­>Ô+Dñ3
ô 3
€ r'   c                 óX   — |                       |t          j        t          j        ¦  «        S rì   )r‰  r*   r�   rÝ   rÞ   r:  s     r(   r;  z_NnapiSerializer.<lambda>‰  rŠ  r'   )zquantized::conv2dzquantized::conv2d_reluzquantized::conv_transpose2dzquantized::addzquantized::add_reluzquantized::mulc                 óÈ   — | j                              |                     ¦   «         ¦  «        }|s't          d|                     ¦   «         ›d|›�¦  «        ‚ || |¦  «         d S )NzUnsupported node kind (z
) in node )Ú	ADDER_MAPr°  rÀ  r  )r!  r!  Úadders      r(   r  z_NnapiSerializer.add_nodeŽ  sn   € Ø”×"Ò" 4§9¢9¡;¤;Ñ/Ô/ˆØð 	ÝØK¨$¯)ª)©+¬+ÐKÐKÀ4ÐKÐKñô ð ð 	ˆˆd�DÑÔÐÐÐr'   c                 óš   — |                       |                     d¦  «        ¦  «        \  }}|                     d¦  «        }|| j        |<   d S rM  )r¨  r  Ú	outputsAtrY  )r!  r!  r×  Ú_in_operrd  s        r(   rI  z_NnapiSerializer._identity–  sI   € Ø×;Ò;¸D¿MºMÈ!Ñ<LÔ<LÑMÔM‰ˆˆxØ—’ Ñ"Ô"ˆØ*/ˆÔ Ñ'Ð'Ð'r'   c                 óÖ  — |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                      |                     d¦  «        ¦  «        \  }}t	          |¦  «                             d¦  «        sJ ‚|                     d¦  «        }t          ||¦  «        }|                     d¦  «        }| 	                    ¦   «         }|  
                    |||¦  «         d S )Nr
   r   z
__torch__.Úname)r  r  r±  r  ru  Ú
startswithr«  rz  r‘  r  r¾  )r!  r!  Ú	obj_ctypeÚobjr”  rÿ   Úoutputr½  s           r(   r9  z_NnapiSerializer.add_getattr›  s×   € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&Ø×0Ò0°·²¸qÑ1AÔ1AÑBÔB‰ˆ	�3Ý�9‰~Œ~×(Ò(¨Ñ6Ô6Ð6Ð6Ð6Ø�vŠv�f‰~Œ~ˆÝ˜˜TÑ"Ô"ˆØ—’ Ñ"Ô"ˆØ—’‘”ˆØ×Ò ¨¨uÑ5Ô5Ð5Ð5Ð5r'   c                 ó  — |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                     d¦  «        }|                     ¦   «         }|                     ¦   «         }|                      |||¦  «         d S )Nr   r
   )r  r  r‘  r  ÚtoIValuer¾  )r!  r!  r˜  r½  rÿ   s        r(   r>  z"_NnapiSerializer.add_constant_node¦  s…   € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&Ø—’ Ñ"Ô"ˆØ—’‘”ˆØ—’Ñ!Ô!ˆØ×Ò ¨¨uÑ5Ô5Ð5Ð5Ð5r'   c                 óR  — |                      ¦   «         dk    sJ ‚|                     d¦  «        }|                     ¦   «         }g }g }|                     ¦   «         D ]�}|�7|| j        v r.|                      |¦  «        \  }}|                     |¦  «         nd }|�@|                     ¦   «                              ¦   «         dk    r|                     |¦  «         Œd }Œ‚|�|                      |||¦  «         |�|  	                    ||¦  «         |€|€t          d|›�¦  «        ‚d S d S )Nr
   r   r¯  zMUnable to handle ListConstruct node.  Neither all constants nor all tensors. )r  r‘  r  rS  rW  r±  r'  rÀ  r¾  rº  r  )	r!  r!  r˜  r½  Ú
const_valsÚtensorsÚinprF  Úvals	            r(   r@  z#_NnapiSerializer.add_list_construct®  sQ  € Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&Ø—’ Ñ"Ô"ˆØ—’‘”ˆØ%'ˆ
Ø"$ˆØ—;’;‘=”=ð 		ð 		ˆCØÐ%¨#°´Ð*?Ð*?Ø×0Ò0°Ñ5Ô5‘��3Ø×!Ò! #Ñ&Ô&Ð&Ð&à!�
ØÐ" s§x¢x¡z¤z§¢Ñ'8Ô'8¸LÒ'HÐ'HØ—’˜sÑ#Ô#Ð#Ð#à��àÐ!ð ×#Ò# F¨E°:Ñ>Ô>Ð>ØÐØ×$Ò$ V¨WÑ5Ô5Ð5ØÐ ' /ÝØhÐ`dÐhÐhñô ð ð Ð / /r'   c                 óÒ   — |                      ¦   «         dk    sJ ‚|                     d¦  «        }t          |                     ¦   «         ¦  «        }|                      ||¦  «         d S )Nr
   r   )r  r‘  rû   rS  rº  )r!  r!  r˜  rO  s       r(   rB  z$_NnapiSerializer.add_tuple_constructÊ  sa   € Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&Ø—’ Ñ"Ô"ˆÝ�d—k’k‘m”mÑ$Ô$ˆØ× Ò  ¨Ñ0Ô0Ð0Ð0Ð0r'   c                 ó  — |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                      |                     d¦  «        ¦  «        \  }}|                      |                     d¦  «        d¦  «        \  }}|j        t          j        k    sJ ‚|dk    r|n|t          |j	        ¦  «        z   dz   }t          |j	        ¦  «        }|                     |d¦  «         t          |¦  «        }|                     |¬¦  «        }	d gdz  }
||
d<   |                      |¦  «        |
d<   d gdz  }|                      |                     d¦  «        |	¦  «        |d<   |                      t$          j        |
|¦  «         d S )Nr   r
   r   rã  ©r  )r  r  r¬  r  r±  r  r  r  r%  r  rû   Úinsertrü   rÖ  r˜  rg  r‘  r¸  r*   r¯   )r!  r!  r×  Úin_operrF  rH  Úreal_dimÚout_shape_listr;  rØ  rS  rT  s               r(   rD  z_NnapiSerializer.add_unsqueezeÐ  s„  € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&à×EÒEÀdÇmÂmÐTUÑFVÔFVÑWÔW‰ˆˆwà×(Ò(¨¯ª°qÑ)9Ô)9¸9ÑEÔE‰ˆˆ3ØÔ ¥HÔ$@Ò@Ð@Ð@Ð@à š(˜(�3�3¨­c°'´-Ñ.@Ô.@Ñ(@À1Ñ(DˆÝ˜gœmÑ,Ô,ˆØ×Ò˜h¨Ñ*Ô*Ð*Ý˜.Ñ)Ô)ˆ	Ø×#Ò#¨)Ð#Ñ4Ô4ˆà�˜!‘ˆØˆˆq‰	Ø×1Ò1°#Ñ6Ô6ˆˆq‰	à�&˜1‘*ˆØ×,Ò,¨T¯^ª^¸AÑ->Ô->ÀÑIÔIˆ�‰
à×ÒÕ.Ô:¸FÀGÑLÔLÐLÐLÐLr'   c                 ó0   — |                       |¦  «         d S rì   rH  r:  s     r(   rF  z_NnapiSerializer.add_toè  s   € à�Š�tÑÔÐÐÐr'   c                 óæ  — |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                      |                     d¦  «        ¦  «        \  }}|                      |                     d¦  «        ¦  «        \  }}|                     ¦   «         dk    sJ ‚|                     ¦   «                              ¦   «         dk    sJ ‚t          |¦  «        dk    o|d         dk    }|j        t          j
        k    r|st          d¦  «        ‚t          j        d¦  «                             |j        ¦  «                             |¦  «        j        }|                     |t          j
        ¬¦  «        }d gdz  }	||	d<   |                      |¦  «        |	d<   d gdz  }
|                      |                     d¦  «        |¦  «        |
d<   |                      t,          j        |	|
¦  «         d S )	Nr   r
   r   râ  rã  rÅ  zSCurrently, reshape is only supported on NHWC tensors if the target size is [X, -1].r?  )r  r  r¬  r  r±  rÀ  rä  r%  r  r  r  r  ÚtorchÚzerosÚexpandr  ÚreshaperÖ  r¤  rg  r‘  r¸  r*   r“   )r!  r!  r×  r¤  Úshape_ctyper  Úis_trivial_reshaper;  rØ  rS  rT  s              r(   rK  z_NnapiSerializer.add_reshapeì  sâ  € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&à×EÒEÀdÇmÂmÐTUÑFVÔFVÑWÔW‰ˆˆwà!×4Ò4°T·]²]À1Ñ5EÔ5EÑFÔFÑˆ�UØ×ÒÑ!Ô! ZÒ/Ð/Ð/Ð/Ø×)Ò)Ñ+Ô+×0Ò0Ñ2Ô2°iÒ?Ð?Ð?Ð?Ý  ™ZœZ¨1š_Ð?°°q´¸R²ÐàÔ¥Ô <Ò<Ð<ÐEWÐ<ÝØeñô ð õ
 ”K ‘N”N×)Ò)¨'¬-Ñ8Ô8×@Ò@ÀÑGÔGÔMˆ	Ø×#Ò#Ø¥xÔ'Cð $ñ 
ô 
ˆð �˜!‘ˆØˆˆq‰	Ø×1Ò1°%Ñ8Ô8ˆˆq‰	à�&˜1‘*ˆØ×,Ò,¨T¯^ª^¸AÑ->Ô->ÀÑIÔIˆ�‰
à×ÒÕ.Ô6¸ÀÑHÔHÐHÐHÐHr'   c           	      ón  — |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                      |                     d¦  «        ¦  «        \  }}|                      |                     d¦  «        d¦  «        \  }}|                      |                     d¦  «        d¦  «        \  }}t          |j        ¦  «        dk    o2|j        d         dk    p!|j        d         dk    o|j        d         dk    }|j        t          j	        k    r|st          d¦  «        ‚|dk     r|t          |j        ¦  «        z  }|dk     r|t          |j        ¦  «        z  }|j        d |…         t          j        t          j        |j        ||dz   …         ¦  «        fz   |j        |dz   d …         z   }	t          d„ |j        ||dz   …         D ¦   «         ¦  «        rt          d	¦  «        ‚|j        d |…         |j        |dz   d …         z   }
|
                     d¦  «        dk    rt          d
¦  «        ‚|                     |	t          j	        ¬¦  «        }|                      |                     d¦  «        |¦  «        }t)          |	¦  «        D ];\  }}|dk    r0|                      ||||j                             d¦  «        ¦  «         Œ<t/          d„ |	D ¦   «         ¦  «        }d gdz  }||d<   |                      |¦  «        |d<   d gdz  }||d<   |                      t4          j        ||¦  «         d S )Nr   r
   r   rã  r   r   zGCurrently, flatten is not supported on NHWC tensors unless C=1 or H=W=1c              3   ó"   K  — | ]
}|d k    V — ŒdS )r   Nr&   ©ré  rH  s     r(   r  z/_NnapiSerializer.add_flatten.<locals>.<genexpr>(  s&   è è € ÐJÐJ˜Cˆs�aŠxÐJÐJÐJÐJÐJÐJr'   z-Flattening flexible dims is not supported yetzOnly 1 dim can be flexibler?  c              3   ó*   K  — | ]}|d k    r|ndV — ŒdS )r   rÅ  Nr&   r±  s     r(   r  z/_NnapiSerializer.add_flatten.<locals>.<genexpr>9  s.   è è € ÐFÐF°S  q¢ ˜˜¨bÐFÐFÐFÐFÐFÐFr'   )r  r  r¨  r  r±  r%  r  r  r  r  r  Ú	functoolsÚreduceÚoperatorÚmulÚanyÚcountrÖ  rg  r‘  rƒ  rÒ  rþ   rü   r¤  r¸  r*   r“   )r!  r!  r×  r¤  Ú_start_ctypeÚ	start_dimÚ
_end_ctypeÚend_dimÚis_trivial_flattenr;  Únon_flattened_dimsrØ  Úout_idr   rH  Úinputs_1rS  rT  s                     r(   rM  z_NnapiSerializer.add_flatten  se  € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&à×:Ò:¸4¿=º=ÈÑ;KÔ;KÑLÔL‰ˆˆwà"&×"9Ò"9¸$¿-º-ÈÑ:JÔ:JÈIÑ"VÔ"VÑˆ�iØ"×5Ò5°d·m²mÀAÑ6FÔ6FÈ	ÑRÔRÑˆ
�Gõ ! ¤Ñ/Ô/°1Ò4ð 
ØŒM˜!Ô Ò!ÐV g¤m°AÔ&6¸!Ò&;Ð&UÀÄÈaÔ@PÐTUÒ@Uð 	ð Ô¥Ô <Ò<Ð<ÐEWÐ<ÝØYñô ð ð �qŠ=ˆ=Ø�˜Wœ]Ñ+Ô+Ñ+ˆIØ�QŠ;ˆ;Ø•s˜7œ=Ñ)Ô)Ñ)ˆGð ŒM˜*˜9˜*Ô%ÝÔ¥¤¨g¬m¸IÈÐRSÉÐ<SÔ.TÑUÔUÐWñXàŒm˜G a™K˜M˜MÔ*ñ+ð 	õ ÐJÐJ 7¤=°¸WÀq¹[Ð1HÔ#IÐJÑJÔJÑJÔJð 	ÝØ?ñô ð ð %œ]¨:¨I¨:Ô6¸¼ÀwÐQRÁ{À}À}Ô9UÑUÐØ×#Ò# AÑ&Ô&¨Ò*Ð*ÝÐ8Ñ9Ô9Ð9à×#Ò#Ø¥xÔ'Cð $ñ 
ô 
ˆð ×(Ò(¨¯ª¸Ñ):Ô):¸HÑEÔEˆå! )Ñ,Ô,ð 	Wð 	W‰HˆC�Ø�aŠxˆxØ×*Ò*¨6°3¸¸w¼}×?RÒ?RÐSTÑ?UÔ?UÑVÔVÐVøåÐFÐF¸IÐFÑFÔFÑFÔFˆØ�˜!‘ˆØˆˆq‰	Ø×1Ò1°(Ñ;Ô;ˆˆq‰	à�&˜1‘*ˆØˆ�‰
à×ÒÕ.Ô6¸ÀÑHÔHÐHÐHÐHr'   c                 ó¤  ‡‡‡‡‡— |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                      |                     d¦  «        ¦  «        \  }}|                      |                     d¦  «        ¦  «        \  }Š|                      |                     d¦  «        ¦  «        \  }Š|                      |                     d¦  «        ¦  «        \  }Š|                      |                     d¦  «        ¦  «        \  }Š‰€dŠ‰€t
          j        Š‰dk     r‰|j        ‰         z  Šn‰t
          j        k    rdŠ‰dk    r'‰t
          j        k    r|                      |¦  «         d S |j        ‰         dk    rt          d¦  «        ‚‰dk     r‰|j        ‰         z  Šn‰t
          j        k    r|j        ‰         Š‰‰k    rt          d¦  «        ‚‰‰z
  ‰z  Št          ˆˆfd	„t          |j        ¦  «        D ¦   «         ¦  «        }|                      |                     d¦  «        |                     |¬
¦  «        ¦  «        }d}t          |¦  «        D ]+\  }}	|	dk    r |                      ||||¦  «         |d|z  z  }Œ,d gdz  }
||
d<   |                      ˆˆfd„t#          t%          |j        ¦  «        ¦  «        D ¦   «         ¦  «        |
d<   |                      ˆˆfd„t          |j        ¦  «        D ¦   «         ¦  «        |
d<   |                      ˆˆfd„t#          t%          |j        ¦  «        ¦  «        D ¦   «         ¦  «        |
d<   |                      d¦  «        |
d<   |                      |¦  «        |
d<   |                      d¦  «        |
d<   d gdz  }||d<   |                      t*          j        |
|¦  «         d S )Nr   r
   r   r   r   r   z#Unable to slice with flexible shapez0Slice start value should be less than stop valuec              3   ó2   •K  — | ]\  }}|‰k    r‰n|V — Œd S rì   r&   )ré  r–  rH  Ú	dim_valueÚout_lens      €€r(   r  z-_NnapiSerializer.add_slice.<locals>.<genexpr>i  sD   øè è € ð 
ð 
Ù39°1°c�q˜I’~�~ˆGˆG¨3ð
ð 
ð 
ð 
ð 
ð 
r'   r¢  r   c                 ó$   •— g | ]}|‰k    r‰nd ‘ŒS )r   r&   )ré  r–  rÃ  Ústart_values     €€r(   rê  z._NnapiSerializer.add_slice.<locals>.<listcomp>z  s%   ø€ ÐUÐUÐU°a˜A šN˜Nˆ[ˆ[°ÐUÐUÐUr'   c                 ó*   •— g | ]\  }}|‰k    r‰n|‘ŒS r&   r&   )ré  r–  rH  rÃ  Ú
stop_values      €€r(   rê  z._NnapiSerializer.add_slice.<locals>.<listcomp>}  s9   ø€ ð ð ð á�A�sð   9šn˜n�
�
°#ðð ð r'   c                 ó$   •— g | ]}|‰k    r‰nd ‘ŒS )r
   r&   )ré  r–  rÃ  Ú
step_values     €€r(   rê  z._NnapiSerializer.add_slice.<locals>.<listcomp>ƒ  s%   ø€ ÐTÐTÐT°Q˜1 	š>˜>ˆZˆZ¨qÐTÐTÐTr'   r   )r  r  r¨  r  r±  ÚsysÚmaxsizer  rI  r  rü   rƒ  rg  r‘  rÖ  rÒ  r¤  Úranger%  r˜  r¸  r*   r    )r!  r!  r×  r¤  rF  r;  r¿  Úend_maskr   rH  rS  rT  rÃ  rÄ  rÆ  rÊ  rÈ  s               @@@@@r(   rO  z_NnapiSerializer.add_sliceC  s'  øøøøø€ Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&à×:Ò:¸4¿=º=ÈÑ;KÔ;KÑLÔL‰ˆˆwØ×.Ò.¨t¯}ª}¸QÑ/?Ô/?Ñ@Ô@‰ˆˆ9Ø×0Ò0°·²¸qÑ1AÔ1AÑBÔB‰ˆˆ;Ø×/Ò/°·²¸aÑ0@Ô0@ÑAÔA‰ˆˆ:Ø×/Ò/°·²¸aÑ0@Ô0@ÑAÔA‰ˆˆ:àÐØˆKØÐÝœˆJà˜Š?ˆ?Ø˜7œ=¨Ô3Ñ3ˆKˆKØ�CœKÒ'Ð'ØˆKà˜!ÒÐ 
­c¬kÒ 9Ð 9Ø�NŠN˜4Ñ Ô Ð ØˆFàŒ=˜Ô# qÒ(Ð(ÝÐAÑBÔBÐBà˜Š>ˆ>Ø˜'œ-¨	Ô2Ñ2ˆJˆJØ�3œ;Ò&Ð&Ø œ yÔ1ˆJà˜*Ò$Ð$ÝØBñô ð ð  Ñ+°
Ñ:ˆÝð 
ð 
ð 
ð 
ð 
Ý=FÀwÄ}Ñ=UÔ=Uð
ñ 
ô 
ñ 
ô 
ˆ	ð ×(Ò(Ø�NŠN˜1ÑÔ˜w×/Ò/°iÐ/Ñ@Ô@ñ
ô 
ˆð
 ˆÝ! )Ñ,Ô,ð 	%ð 	%‰HˆC�Ø�aŠxˆxØ×*Ò*¨6°3¸¸sÑCÔCÐCØ˜A ™HÑ$�øà�˜!‘ˆØˆˆq‰	Ø×1Ò1ØUÐUÐUÐUÐU½5ÅÀWÄ]ÑASÔASÑ;TÔ;TÐUÑUÔUñ
ô 
ˆˆq‰	ð ×1Ò1ðð ð ð ð å'¨¬Ñ6Ô6ðñ ô ñ
ô 
ˆˆq‰	ð ×1Ò1ØTÐTÐTÐTÐT½%ÅÀGÄMÑ@RÔ@RÑ:SÔ:SÐTÑTÔTñ
ô 
ˆˆq‰	ð ×1Ò1°!Ñ4Ô4ˆˆq‰	Ø×1Ò1°(Ñ;Ô;ˆˆq‰	Ø×1Ò1°!Ñ4Ô4ˆˆq‰	à�&˜1‘*ˆØˆ�‰
à×ÒÕ.Ô<¸fÀgÑNÔNÐNÐNÐNr'   c                 ó   — |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                      |                     d¦  «        ¦  «        \  }}| j        |                     d¦  «                 \  }}|j        |         }|                     d¦  «        }|                      ||                     ¦   «         |¦  «         d S )Nr   r
   r   )	r  r  r¬  r  rW  r  r‘  r¾  r  )r!  r!  rF  r¤  rÿ   Úresr˜  s          r(   rR  z_NnapiSerializer.add_sizeŽ  s½   € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&à×AÒAÀ$Ç-Â-ÐPQÑBRÔBRÑSÔS‰
ˆˆ7Ø”> $§-¢-°Ñ"2Ô"2Ô3‰ˆˆ5ØŒm˜EÔ"ˆØ—’ Ñ"Ô"ˆØ×Ò ¨¯ª©¬°sÑ;Ô;Ð;Ð;Ð;r'   c                 óp  ‡— |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚| j        |                     d¦  «                 }|                      |                     d¦  «        d¦  «        \  }Št          |¦  «        dk    sJ ‚g }d }d}|D ]Á}|                      |¦  «        \  }}	|€,t          |	j        ‰d¦  «        }
|	 	                    |
¬¦  «        }|	j
        |j
        k    sJ ‚|	j        |j        k    sJ ‚t          |	j        ‰d¦  «        t          |j        ‰d¦  «        k    sJ ‚|                     |¦  «         ||	j        ‰         z  }ŒÂ|€J ‚| 	                    t          |j        ‰|¦  «        ¬¦  «        }|	j        t          j        k    r%t          |j        ¦  «        dk    sJ ‚g d¢‰         }n‰}|                      |                     d¦  «        |¦  «        }t#          |j        ¦  «        D ]h\  }}|dk    r]|‰k    r9d	                     ˆfd
„|D ¦   «         ¦  «        }|                      |||¦  «         ŒJ|                      |||d         |¦  «         Œi||                      |¦  «        gz   }d gdz  }||d<   |                      t.          j        ||¦  «         d S )Nr   r
   r   rã  rÅ  r¢  r   ©r   r   r
   r   ú + c              3   ó8   •K  — | ]}t          |‰¦  «        V — Œd S rì   )rI  )ré  Úip_idrH  s     €r(   r  z+_NnapiSerializer.add_cat.<locals>.<genexpr>Á  s-   øè è € Ð&QÐ&QÀ¥y°¸Ñ'<Ô'<Ð&QÐ&QÐ&QÐ&QÐ&QÐ&Qr'   )r  r  rX  r  r±  r%  r¨  r  r  rÖ  rô   r  r'  r  r  rg  r‘  rƒ  rÉ  r„  rÒ  r˜  r¸  r*   r   )r!  r!  r�  rF  Úin_idsrØ  Úout_dim_sizerž  r×  r¤  r;  Ú	nnapi_dimr¿  r   rø   r  rS  rT  rH  s                     @r(   rU  z_NnapiSerializer.add_cat˜  sÿ  ø€ Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&àÔ'¨¯ª°aÑ(8Ô(8Ô9ˆØ×(Ò(¨¯ª°qÑ)9Ô)9¸9ÑEÔE‰ˆˆ3å�7‰|Œ|˜aÒÐÐÐØˆØˆØˆØð 	/ð 	/ˆCØ!×>Ò>¸sÑCÔC‰NˆE�7ØÐÝ*¨7¬=¸#¸rÑBÔB�	Ø"×+Ò+°)Ð+Ñ<Ô<�Ø”? hÔ&6Ò6Ð6Ð6Ð6ØÔ$¨Ô(:Ò:Ð:Ð:Ð:Ý! '¤-°°bÑ9Ô9½^Ø”  Rñ>ô >ò ð ð ð ð �MŠM˜%Ñ Ô Ð à˜GœM¨#Ô.Ñ.ˆLˆLàÐ#Ð#Ð#Ø×$Ò$Ý  ¤°°lÑCÔCð %ñ 
ô 
ˆð Ô¥Ô 6Ò6Ð6Ý�x”~Ñ&Ô&¨!Ò+Ð+Ð+Ð+Ø$˜˜ SÔ)ˆIˆIàˆIà×(Ò(¨¯ª¸Ñ):Ô):¸HÑEÔEˆÝ ¤Ñ/Ô/ð 	Lð 	L‰FˆC�Ø�AŠvˆvØ˜#’:�:Ø!ŸJšJÐ&QÐ&QÐ&QÐ&QÈ&Ð&QÑ&QÔ&QÑQÔQ�EØ×.Ò.¨v°s¸EÑBÔBÐBÐBà×.Ò.¨v°s¸FÀ1¼IÀsÑKÔKÐKøà˜4×8Ò8¸ÑCÔCÐDÑDˆà�&˜1‘*ˆØˆ�‰
à×ÒÕ.Ô<¸fÀgÑNÔNÐNÐNÐNr'   c                 óÂ  — |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                      |                     d¦  «        ¦  «        \  }}|                      |                     d¦  «        ¦  «        \  }}|                     ¦   «         dk    sJ ‚|                     ¦   «                              ¦   «         dk    sJ ‚|                      |                     d¦  «        d¦  «        \  }}|                      |                     d¦  «        d	¦  «         |j        t          j	        k    r't          |j        ¦  «        dk    sJ ‚d
„ |D ¦   «         }n|}t          ¦   «         }	|D ]4}
|
dk     r|
t          |j        ¦  «        z  }
|	                     |
¦  «         Œ5|j        t          j	        k    r(|s&|	                     ddh¦  «        sJ ‚t          j        }n|j        }g }t!          |j        ¦  «        D ]6\  }}||	vr|                     |¦  «         Œ|r|                     d¦  «         Œ7|                     ||¬¦  «        }d gdz  }||d<   |                      |¦  «        |d<   |                      |¦  «        |d<   d gdz  }|                      |                     d¦  «        |¦  «        |d<   |                      t0          j        ||¦  «         d S )Nr   r
   r   râ  rã  r   ÚBoolTyper   ÚNoneTypec                 ó"   — g | ]}g d ¢|         ‘ŒS )rÒ  r&   r  s     r(   rê  z-_NnapiSerializer.add_mean.<locals>.<listcomp>Û  s    € Ð6Ð6Ð6¨Q˜˜˜ aœÐ6Ð6Ð6r'   r?  )r  r  r¬  r  r±  rÀ  rä  r  r  r  r%  r  ÚsetÚaddÚ
issupersetr  rƒ  r'  rÖ  r¤  r˜  rg  r‘  r¸  r*   rœ   )r!  r!  r×  r¤  Ú	dim_ctyperH  rF  Úkeep_dimrØ  Úcollapsed_dimsrø   Úout_dim_orderr;  r–  r«  rØ  rS  rT  s                     r(   rW  z_NnapiSerializer.add_meanÍ  sñ  € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&à×EÒEÀdÇmÂmÐTUÑFVÔFVÑWÔW‰ˆˆwØ×0Ò0°·²¸qÑ1AÔ1AÑBÔB‰ˆ	�3Ø�~Š~ÑÔ :Ò-Ð-Ð-Ð-Ø×'Ò'Ñ)Ô)×.Ò.Ñ0Ô0°IÒ=Ð=Ð=Ð=Ø×-Ò-¨d¯mªm¸AÑ.>Ô.>À
ÑKÔK‰ˆˆ8à×Ò §¢¨aÑ 0Ô 0°*Ñ=Ô=Ð=àÔ¥Ô 6Ò6Ð6Ý�w”}Ñ%Ô%¨Ò*Ð*Ð*Ð*Ø6Ð6°#Ð6Ñ6Ô6ˆIˆIàˆIå™œˆØð 	"ð 	"ˆAØ�1ŠuˆuØ•S˜œÑ'Ô'Ñ'�Ø×Ò˜qÑ!Ô!Ð!Ð!àÔ¥Ô 6Ò6Ð6¸xÐ6Ø!×,Ò,¨a°¨VÑ4Ô4Ð4Ð4Ð4Ý$Ô8ˆMˆMà#Ô-ˆMàˆ	Ý˜gœmÑ,Ô,ð 	$ð 	$‰DˆAˆqØ˜Ð&Ð&Ø× Ò  Ñ#Ô#Ð#Ð#Øð $Ø× Ò  Ñ#Ô#Ð#øà×#Ò#¨)¸}Ð#ÑMÔMˆà�˜!‘ˆØˆˆq‰	Ø×1Ò1°)Ñ<Ô<ˆˆq‰	Ø×1Ò1°(Ñ;Ô;ˆˆq‰	à�&˜1‘*ˆØ×,Ò,¨T¯^ª^¸AÑ->Ô->ÀÑIÔIˆ�‰
à×ÒÕ.Ô3°V¸WÑEÔEÐEÐEÐEr'   c                 ó`  — |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                      |                     d¦  «        ¦  «        \  }}|j        t
          j        k    rt          d¦  «        ‚|                      |                     d¦  «        d¦  «        \  }}|                      |                     d¦  «        d¦  «        \  }}|                      |                     d¦  «        d¦  «        \  }}|t          j
        j        k    rt          d	¦  «        ‚t          j        }|                     |||¬
¦  «        }	d gdz  }
||
d<   d gdz  }|                      |                     d¦  «        |	¦  «        |d<   |                      t$          j        |
|¦  «         d S )Nr   r
   r   zqMost hardware backends prefer NHWC quantized tensors.  Try setting `t.nnapi_nhwc = True` on your tensor inputs.  Ú	FloatTyper   rã  r   zKPyTorch NNAPI export only supports quantized tensors with the quint8 dtype.©rô   r  r  )r  r  r¬  r  r  r  r  r  r±  rè   ré   rÿ   r	   r   rÖ  rg  r‘  r¸  r*   rÅ   )r!  r!  r×  r¤  rF  r  r  Úscalar_typerô   rØ  rS  rT  s               r(   rY  z_NnapiSerializer.add_quantizeþ  s¶  € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&à×EÒEÀdÇmÂmÐTUÑFVÔFVÑWÔW‰ˆˆwØÔ¥Ô 6Ò6Ð6ÝðMñô ð ð ×*Ò*¨4¯=ª=¸Ñ+;Ô+;¸[ÑIÔI‰ˆˆ5Ø×/Ò/°·²¸aÑ0@Ô0@À)ÑLÔL‰ˆˆ:Ø×0Ò0°·²¸qÑ1AÔ1AÀ9ÑMÔM‰ˆˆ;ØÕ*Ô1Ô7Ò7Ð7Ýð)ñô ð õ $Ô7ˆà×#Ò#ØØØ!ð $ñ 
ô 
ˆð �˜!‘ˆØˆˆq‰	à�&˜1‘*ˆØ×,Ò,¨T¯^ª^¸AÑ->Ô->ÀÑIÔIˆ�‰
à×ÒÕ.Ô7¸ÀÑIÔIÐIÐIÐIr'   c                 óÄ  — |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                      |                     d¦  «        ¦  «        \  }}|                     t
          j        dd¬¦  «        }d gdz  }||d<   d gdz  }|                      |                     d¦  «        |¦  «        |d<   |  	                    t          j        ||¦  «         d S )Nr
   r   rl  ræ  )r  r  r¬  r  rÖ  r	   r   rg  r‘  r¸  r*   rƒ   )r!  r!  r×  r¤  rØ  rS  rT  s          r(   r[  z_NnapiSerializer.add_dequantize   sì   € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&à×EÒEÀdÇmÂmÐTUÑFVÔFVÑWÔW‰ˆˆwØ×#Ò#Ý%Ô4ØØð $ñ 
ô 
ˆð �˜!‘ˆØˆˆq‰	à�&˜1‘*ˆØ×,Ò,¨T¯^ª^¸AÑ->Ô->ÀÑIÔIˆ�‰
à×ÒÕ.Ô9¸6À7ÑKÔKÐKÐKÐKr'   c                 ó\  — |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                      |                     d¦  «        ¦  «        \  }}|}|t          j        k    r,|j        t          j        k    r| 	                    dd¬¦  «        }|  
                    |                     d¦  «        |¦  «        }t          |j        ¦  «        D ]#\  }}|dk    r|                      ||||¦  «         Œ$d gdz  }	||	d<   d gdz  }
||
d<   |                      ||	|
¦  «         d S )Nr
   r   g      p?)r  r  )r  r  r¨  r  r*   r‹   rô   r	   r   rÖ  rg  r‘  rƒ  r  rÒ  r¸  )r!  r!  r·  r×  r¤  rØ  r¿  r   rH  rS  rT  s              r(   rf  z._NnapiSerializer.add_pointwise_simple_unary_op3  sF  € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&à×:Ò:¸4¿=º=ÈÑ;KÔ;KÑLÔL‰ˆˆwàˆØÕ(Ô1Ò1Ð1ð ŒÕ"3Ô"GÒGÐGØ"×+Ò+°qÀ	Ð+ÑJÔJ�à×(Ò(¨¯ª¸Ñ):Ô):¸HÑEÔEˆå! '¤-Ñ0Ô0ð 	Dð 	D‰HˆC�Ø�aŠxˆxØ×*Ò*¨6°3¸¸sÑCÔCÐCøà�˜!‘ˆØˆˆq‰	à�&˜1‘*ˆØˆ�‰
à×Ò˜6 6¨7Ñ3Ô3Ð3Ð3Ð3r'   ©Úqparamsc          
      ó  — |                      ¦   «         dk    sJ ‚|                     d¦  «                             ¦   «                              ¦   «         dk    sJ ‚|                     d¦  «                             ¦   «                              ¦   «         dk    sJ ‚|                      |                     d¦  «        ¦  «        r]|                      |                     d¦  «        ¦  «        \  }}|                      |                     d¦  «        |j        ¦  «        \  }}n˜|                      |                     d¦  «        ¦  «        r]|                      |                     d¦  «        ¦  «        \  }}|                      |                     d¦  «        |j        ¦  «        \  }}nt          d|› d�¦  «        ‚|j	        |j	        k    sJ ‚|  
                    ||||¦  «        \  }}}}t          |j        |j        ¦  «        }	|                     |	¬¦  «        }
|�|\  }}|
                     ||¬¦  «        }
|                      |                     d¦  «        |
¦  «        }t!          t#          |j        |j        ¦  «        ¦  «        D ]²\  }\  }}|dk    r|dk    r|                      ||||¦  «         Œ-|dk    r|dk    r|                      ||||¦  «         ŒR|dk    rZ|dk    rT| j                             d	t+          ||¦  «        › d
t+          ||¦  «        › �¦  «         |                      ||||¦  «         Œ³dgdz  }||d<   ||d<   |                      |¦  «        |d<   dgdz  }||d<   |                      |||¦  «         dS )zFHelper for pointwise binary broadcast ops with superfluous extra args.r
   r   r¯  zCan't do a NNAPI binary op: z on two constantsr¢  N©r  r  zassert z == r   r   )r  r  r  rÀ  r¦  r¨  r²  r  r  rô   rà  r/  r  rÖ  rg  r‘  rƒ  r&  rÒ  rU  r'  rI  r˜  r¸  )r!  r!  r·  Ú	fuse_coderë  rÛ  rÜ  rÝ  rÞ  r;  rØ  r  Úzpr¿  r   Úd0r-  rS  rT  s                      r(   Ú_do_add_binaryz_NnapiSerializer._do_add_binaryO  s­  € à×ÒÑ!Ô! QÒ&Ð&Ð&Ð&à�}Š}˜QÑÔ×$Ò$Ñ&Ô&×+Ò+Ñ-Ô-°Ò=Ð=Ð=Ð=Ø�}Š}˜QÑÔ×$Ò$Ñ&Ô&×+Ò+Ñ-Ô-°Ò=Ð=Ð=Ð=à×&Ò& t§}¢}°QÑ'7Ô'7Ñ8Ô8ð 	Ø#×@Ò@ÀÇÂÈqÑAQÔAQÑRÔRÑˆF�HØ#×BÒBØ—’˜aÑ Ô  (Ô"4ñ ô  ÑˆF�H�Hð ×(Ò(¨¯ª°qÑ)9Ô)9Ñ:Ô:ð 	Ø#×@Ò@ÀÇÂÈqÑAQÔAQÑRÔRÑˆF�HØ#×BÒBØ—’˜aÑ Ô  (Ô"4ñ ô  ÑˆF�H�Hõ ØH¨vÐHÐHÐHñô ð ð Ô 8Ô#3Ò3Ð3Ð3Ð3Ø-1×-IÒ-IØ�H˜f hñ.
ô .
Ñ*ˆ�˜& (õ % X¤^°X´^ÑDÔDˆ	Ø×$Ò$¨9Ð$Ñ5Ô5ˆØÐØ‰IˆE�2Ø×(Ò(¨uÀÐ(ÑDÔDˆHà×(Ò(¨¯ª¸Ñ):Ô):¸HÑEÔEˆÝ&¥s¨8¬>¸8¼>Ñ'JÔ'JÑKÔKð 		Eð 		E‰MˆC‘�"�bØ�QŠwˆw˜2 š7˜7Ø×*Ò*¨6°3¸ÀÑDÔDÐDÐDØ�q’�˜R 1šW˜WØ×*Ò*¨6°3¸ÀÑDÔDÐDÐDØ�q’�˜R 1šW˜WØÔ5×<Ò<ØR�i¨°Ñ4Ô4ÐRÐR½)ÀFÈCÑ:PÔ:PÐRÐRñô ð ð ×*Ò*¨6°3¸ÀÑDÔDÐDøà�˜!‘ˆØˆˆq‰	Øˆˆq‰	Ø×1Ò1°)Ñ<Ô<ˆˆq‰	à�&˜1‘*ˆØˆ�‰
à×Ò˜6 6¨7Ñ3Ô3Ð3Ð3Ð3r'   c                 óh   — |                      ¦   «         dk    sJ ‚|                      |||¦  «         d S rû  )r  rñ  )r!  r!  r·  rî  s       r(   rb  z9_NnapiSerializer.add_pointwise_simple_binary_broadcast_op†  s;   € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×Ò˜D &¨)Ñ4Ô4Ð4Ð4Ð4r'   c                 óê   — |                      ¦   «         dk    sJ ‚|                      |                     d¦  «        d¦  «        \  }}|dk    rt          d¦  «        ‚|                      |||¦  «         d S )Nr   r   rã  r
   z*NNAPI does not support add/sub with alpha.)r  r±  r  r  rñ  )r!  r!  r·  rî  rF  Úalphas         r(   r^  z_NnapiSerializer.add_add_sub_opŠ  s€   € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%à×*Ò*¨4¯=ª=¸Ñ+;Ô+;¸YÑGÔG‰ˆˆ5Ø�AŠ:ˆ:ÝØ<ñô ð ð 	×Ò˜D &¨)Ñ4Ô4Ð4Ð4Ð4r'   c                 ó   — |                      ¦   «         dk    sJ ‚|                      |                     d¦  «        d¦  «        \  }}|                      |                     d¦  «        d¦  «        \  }}|                      |||||f¬¦  «         d S )Nr   r   rå  r   rã  rê  )r  r±  r  rñ  )r!  r!  r·  rî  rF  r  r  s          r(   r‰  z_NnapiSerializer.add_qadd•  s�   € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%à×*Ò*¨4¯=ª=¸Ñ+;Ô+;¸[ÑIÔI‰ˆˆ5Ø×/Ò/°·²¸aÑ0@Ô0@À)ÑLÔL‰ˆˆ:à×Ò˜D &¨)¸eÀZÐ=PÐÑQÔQÐQÐQÐQr'   c                 óx  — |                      ¦   «         dk    sJ ‚|                      |                     d¦  «        ¦  «        \  }}|                      |                     d¦  «        d¦  «        \  }}|                      |                     d¦  «        |¦  «        }t          |j        ¦  «        D ]#\  }}|dk    r|                      ||||¦  «         Œ$d gdz  }	||	d<   |  	                    d¦  «        |	d<   |  
                    |¦  «        |	d<   d gdz  }
||
d<   |                      t          j        |	|
¦  «         d S )Nr   r   r
   rã  g      ð?r   )r  r¨  r  r±  rg  r‘  rƒ  r  rÒ  r›  r˜  r¸  r*   r–   )r!  r!  r×  r¤  rF  Úsoftmax_dimr¿  rH  r÷   rS  rT  s              r(   ri  z_NnapiSerializer.add_softmax�  sH  € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×:Ò:¸4¿=º=ÈÑ;KÔ;KÑLÔL‰ˆˆwà×0Ò0°·²¸qÑ1AÔ1AÀ9ÑMÔM‰ˆˆ;à×(Ò(¨¯ª¸Ñ):Ô):¸GÑDÔDˆÝ" 7¤=Ñ1Ô1ð 	Dð 	D‰IˆC�Ø�qŠyˆyØ×*Ò*¨6°3¸¸sÑCÔCÐCøà�˜!‘ˆØˆˆq‰	Ø×3Ò3Øñ
ô 
ˆˆq‰	ð ×1Ò1°+Ñ>Ô>ˆˆq‰	à�&˜1‘*ˆØˆ�‰
à×ÒÕ.Ô6¸ÀÑHÔHÐHÐHÐHr'   c                 óž  — |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                      |                     d¦  «        ¦  «        \  }}|                      |                     d¦  «        d¦  «        \  }}|                      |                     d¦  «        d¦  «        \  }}t
          j        t
          j        dœ}|                     ||f¦  «        }|€t          d¦  «        ‚d gdz  }	||	d<   d gdz  }
|  
                    |                     d¦  «        |¦  «        |
d<   |                      ||	|
¦  «         d S )Nr   r
   r   rå  r   ))rÅ  r
   )r   r   z9NNAPI only supports hardtanh with args (-1, 1) or (0, 6).)r  r  r¬  r  r±  r*   r‘   r’   r°  r  rg  r‘  r¸  )r!  r!  r×  r¤  rF  Úmin_valÚmax_valÚop_mapr·  rS  rT  s              r(   rk  z_NnapiSerializer.add_hardtanh´  sX  € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&à×EÒEÀdÇmÂmÐTUÑFVÔFVÑWÔW‰ˆˆwØ×,Ò,¨T¯]ª]¸1Ñ-=Ô-=¸{ÑKÔK‰
ˆˆ7Ø×,Ò,¨T¯]ª]¸1Ñ-=Ô-=¸{ÑKÔK‰
ˆˆ7õ )Ô.Ý'Ô-ð
ð 
ˆð
 —’˜W gÐ.Ñ/Ô/ˆØˆ>ÝØKñô ð ð �˜!‘ˆØˆˆq‰	à�&˜1‘*ˆØ×,Ò,¨T¯^ª^¸AÑ->Ô->ÀÑHÔHˆ�‰
à×Ò˜6 6¨7Ñ3Ô3Ð3Ð3Ð3r'   c                 ó>  — |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                     d¦  «                             ¦   «                              ¦   «         dk    sJ ‚|                     d¦  «                             ¦   «                              ¦   «         dk    sJ ‚|                      |                     d¦  «        ¦  «        \  }}|                      |                     d¦  «        ¦  «        \  }}t          |j        ¦  «        dk    sJ ‚|j        d         dk    sJ ‚|j        d         dk    r#| 	                    ¦   «         rt          d¦  «        ‚|                      |                     d¦  «        |¦  «        }t          |j        ¦  «        D ]9\  }}|dk    rŒ|dk    rt          d¦  «        ‚|                      ||||¦  «         Œ:d gdz  }	||	d<   ||	d<   d gdz  }
||
d<   |                      t           j        |	|
¦  «         d S )Nr   r
   r   r¯  z8Per-channel PReLU only supports channels_last right now.z.PReLU requires fixed size for dim 0 and dim 1.)r  r  r  r  rÀ  r¨  r´  r%  r  r"  r  rg  r‘  rƒ  rÒ  r¸  r*   rÄ   )r!  r!  r×  r¤  Úw_idÚw_operr¿  rH  r÷   rS  rT  s              r(   ru  z_NnapiSerializer.add_prelu_opÏ  s4  € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&à�}Š}˜QÑÔ×$Ò$Ñ&Ô&×+Ò+Ñ-Ô-°Ò=Ð=Ð=Ð=Ø�}Š}˜QÑÔ×$Ò$Ñ&Ô&×+Ò+Ñ-Ô-°Ò=Ð=Ð=Ð=à×:Ò:¸4¿=º=ÈÑ;KÔ;KÑLÔL‰ˆˆwØ×9Ò9¸$¿-º-ÈÑ:JÔ:JÑKÔK‰ˆˆfÝ�6”<Ñ Ô  AÒ%Ð%Ð%Ð%ØŒ|˜AŒ Ò"Ð"Ð"Ð"ØŒ<˜Œ?˜QÒÐØ×ÒÑ!Ô!ð åØNñô ð ð ×(Ò(¨¯ª¸Ñ):Ô):¸GÑDÔDˆÝ" 7¤=Ñ1Ô1ð 	Dð 	D‰IˆC�Ø�aŠxˆxØØ˜’�ÝØDñô ð ð ×*Ò*¨6°3¸¸sÑCÔCÐCÐCà�˜!‘ˆØˆˆq‰	Øˆˆq‰	à�&˜1‘*ˆØˆ�‰
à×ÒÕ.Ô4°f¸gÑFÔFÐFÐFÐFr'   c                 ó0  — |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         \  }}}}}}|p|}|                      |                      |¦  «        |||¦  «        }	|	j        dk    s|	j        dk    rt          d¦  «        ‚|                      |¦  «        \  }
}t          |j
        ¦  «        dk    sJ ‚t          |j
        |	|j
        d         d¦  «        }|                     ¦   «         }d gdz  }|
|d<   |                      |	j        ¦  «        |d<   |                      |	j        ¦  «        |d<   |                      |	j        ¦  «        |d	<   |                      |	j        ¦  «        |d<   |                      |	j        ¦  «        |d
<   |                      |	j        ¦  «        |d<   |                      |	j        ¦  «        |d<   |                      |	j        ¦  «        |d<   |                      t,          j        ¦  «        |d<   |                      |¦  «        |d<   d gdz  }|                      |                     d¦  «        |                     |¬¦  «        ¦  «        |d<   |                      |||¦  «         d S )Nr   r
   z'NNAPI does not support dilated pooling.r   Fr   r   r   r   r   r   r   r   r   r¢  )r  r  rS  rù  rå  r  r  r  r¬  r%  r  r<  r"  r˜  r
  r  r  r	  r  r  r  r  rÝ   rÞ   rŸ  rg  r‘  rÖ  r¸  )r!  r!  r·  ÚimageÚkernelrö  r÷  rø  Ú
_ceil_moder2  Úimage_idÚ
image_operr;  r"  rS  rT  s                   r(   ro  z _NnapiSerializer.add_pool2d_nodeõ  s“  € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&Ø?C¿{º{¹}¼}Ñ<ˆˆv�v˜w¨°*àÐ!˜6ˆð ×2Ò2Ø×Ò˜fÑ%Ô% v¨w¸ñ
ô 
ˆð Œ?˜aÒÐ 4¤?°aÒ#7Ð#7ÝÐEÑFÔFÐFà#×KÒKÈEÑRÔRÑˆ�*Ý�:Ô#Ñ$Ô$¨Ò)Ð)Ð)Ð)å'ØÔ˜d JÔ$4°QÔ$7¸ñ
ô 
ˆ	ð ×&Ò&Ñ(Ô(ˆà�˜"‘ˆØˆˆq‰	Ø×1Ò1°$´*Ñ=Ô=ˆˆq‰	Ø×1Ò1°$´*Ñ=Ô=ˆˆq‰	Ø×1Ò1°$´*Ñ=Ô=ˆˆq‰	Ø×1Ò1°$´*Ñ=Ô=ˆˆq‰	Ø×1Ò1°$´-Ñ@Ô@ˆˆq‰	Ø×1Ò1°$´-Ñ@Ô@ˆˆq‰	Ø×1Ò1°$´-Ñ@Ô@ˆˆq‰	Ø×1Ò1°$´-Ñ@Ô@ˆˆq‰	Ø×1Ò1µ.Ô2KÑLÔLˆˆq‰	Ø×3Ò3°HÑ=Ô=ˆˆr‰
à�&˜1‘*ˆØ×,Ò,Ø�NŠN˜1ÑÔ˜z×2Ò2¸Ð2ÑCÔCñ
ô 
ˆ�‰
ð 	×Ò˜6 6¨7Ñ3Ô3Ð3Ð3Ð3r'   c                 ó¬  — |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         \  }}}}}}}|                      |¦  «        \  }	}
|                      |¦  «        \  }	}|
r|rt	          d¦  «        ‚|                      |                      |¦  «        ||¦  «        }|                      |¦  «        \  }}t          |j	        ¦  «        dk    sJ ‚t          |j	        ||j	        d         d¦  «        }|                     ¦   «         }d gdz  }||d<   |                      |j        ¦  «        |d<   |                      |j        ¦  «        |d<   |                      |j        ¦  «        |d	<   |                      |j        ¦  «        |d<   |                      |j        ¦  «        |d
<   |                      |j        ¦  «        |d<   |                      |j        ¦  «        |d<   |                      |j        ¦  «        |d<   |                      t*          j        ¦  «        |d<   |                      |¦  «        |d<   d gdz  }|                      |                     d¦  «        |                     |¬¦  «        ¦  «        }|                      |||d¦  «         ||d<   |                      t:          j        ||¦  «         d S )Nr   r
   zANNAPI doesn't support count_include_pad=False or divisor_overrider   Fr   r   r   r   r   r   r   r   r   r¢  )r  r  rS  r±  r  rù  rå  r¨  r%  r  r<  r"  r˜  r
  r  r  r	  r  r  r  r  rÝ   rÞ   rŸ  rg  r‘  rÖ  Ú _handle_conv_pool_flexible_inputr¸  r*   r~   )r!  r!  r   r  rö  r÷  r  Úcount_include_padÚdivisor_overriderF  Úcount_include_pad_valueÚdivisor_override_valuer2  r  r  r;  r"  rS  rT  r¿  s                       r(   rm  z_NnapiSerializer.add_avg_pool2d   sê  € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&ð �KŠK‰MŒMñ	
ØØØØØØØð &*×%<Ò%<Ð=NÑ%OÔ%OÑ"ˆÐ"Ø$(×$;Ò$;Ð<LÑ$MÔ$MÑ!ˆÐ!Ø&ð 	Ð*@ð 	ÝØSñô ð ð ×2Ò2Ø×Ò˜fÑ%Ô% v¨wñ
ô 
ˆð  $×@Ò@ÀÑGÔGÑˆ�*Ý�:Ô#Ñ$Ô$¨Ò)Ð)Ð)Ð)å'ØÔ˜d JÔ$4°QÔ$7¸ñ
ô 
ˆ	ð ×&Ò&Ñ(Ô(ˆà�˜"‘ˆØˆˆq‰	Ø×1Ò1°$´*Ñ=Ô=ˆˆq‰	Ø×1Ò1°$´*Ñ=Ô=ˆˆq‰	Ø×1Ò1°$´*Ñ=Ô=ˆˆq‰	Ø×1Ò1°$´*Ñ=Ô=ˆˆq‰	Ø×1Ò1°$´-Ñ@Ô@ˆˆq‰	Ø×1Ò1°$´-Ñ@Ô@ˆˆq‰	Ø×1Ò1°$´-Ñ@Ô@ˆˆq‰	Ø×1Ò1°$´-Ñ@Ô@ˆˆq‰	Ø×1Ò1µ.Ô2KÑLÔLˆˆq‰	Ø×3Ò3°HÑ=Ô=ˆˆr‰
à�&˜1‘*ˆØ×(Ò(Ø�NŠN˜1ÑÔ˜z×2Ò2¸Ð2ÑCÔCñ
ô 
ˆð 	×-Ò-¨f°e¸TÀ5ÑIÔIÐIØˆ�‰
à×ÒÕ.Ô>ÀÈÑPÔPÐPÐPÐPr'   c                 ór  — |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                      |                     d¦  «        ¦  «        \  }}t	          |j        ¦  «        dk    sJ ‚|                      |                     d¦  «        ¦  «        \  }}|                     ¦   «         dk    sJ ‚|                     ¦   «                              ¦   «         dk    sJ ‚|ddgk    rt          d¦  «        ‚|j        dd…         t          |¦  «        z   }|                     ¦   «         }d gdz  }||d<   |                      d¦  «        |d<   |                      d¦  «        |d<   |                      d¦  «        |d	<   |                      d¦  «        |d<   |                      d¦  «        |d
<   |                      d¦  «        |d<   |                      |j        d	         ¦  «        |d<   |                      |j        d         ¦  «        |d<   |                      t          j        ¦  «        |d<   |                      |¦  «        |d<   d gdz  }	|                      |                     d¦  «        |                     |¬¦  «        ¦  «        |	d<   |                      t(          j        ||	¦  «         d S )Nr   r
   r   r   râ  rã  z@NNAPI only supports adaptive_avg_pool2d with output size (1, 1).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Ÿ  rg  r‘  rÖ  r¸  r*   r~   )
r!  r!  r  r  Ú
size_ctypeÚsize_argr;  r"  rS  rT  s
             r(   rq  z(_NnapiSerializer.add_adaptive_avg_pool2dV  s³  € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&à#×KÒKØ�MŠM˜!ÑÔñ 
ô  
Ñˆ�*õ �:Ô#Ñ$Ô$¨Ò)Ð)Ð)Ð)à#×6Ò6°t·}²}ÀQÑ7GÔ7GÑHÔHÑˆ
�HØ�ŠÑ Ô  JÒ.Ð.Ð.Ð.Ø×(Ò(Ñ*Ô*×/Ò/Ñ1Ô1°YÒ>Ð>Ð>Ð>Ø˜˜1�vÒÐÝØRñô ð ð Ô$ Q q SÔ)­E°(©O¬OÑ;ˆ	Ø×&Ò&Ñ(Ô(ˆà�˜"‘ˆØˆˆq‰	Ø×1Ò1°!Ñ4Ô4ˆˆq‰	Ø×1Ò1°!Ñ4Ô4ˆˆq‰	Ø×1Ò1°!Ñ4Ô4ˆˆq‰	Ø×1Ò1°!Ñ4Ô4ˆˆq‰	Ø×1Ò1°!Ñ4Ô4ˆˆq‰	Ø×1Ò1°!Ñ4Ô4ˆˆq‰	Ø×1Ò1°*Ô2BÀ1Ô2EÑFÔFˆˆq‰	Ø×1Ò1°*Ô2BÀ1Ô2EÑFÔFˆˆq‰	Ø×1Ò1µ.Ô2KÑLÔLˆˆq‰	Ø×3Ò3°HÑ=Ô=ˆˆr‰
à�&˜1‘*ˆØ×,Ò,Ø�NŠN˜1ÑÔ˜z×2Ò2¸Ð2ÑCÔCñ
ô 
ˆ�‰
ð 	×ÒÕ.Ô>ÀÈÑPÔPÐPÐPÐPr'   c                 óÌ  — |                      ¦   «         dk    s|                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                      ¦   «         dk    r|                     ¦   «         \  }}}n|                     ¦   «         \  }}}}|                      |¦  «        \  }}|                      ¦   «         dk    r|                      |¦  «        \  }	}
nh|                      |¦  «        \  }}|                      |¦  «        \  }}|                     ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|}	|}
|                      |¦  «        \  }}t          |j        ¦  «        dk    sJ ‚|                     ¦   «         dk    r'|	                     ¦   «         dk    rt          d¦  «        ‚|                     ¦   «         dk    �r|                     ¦   «         dk    sJ ‚| 	                    ¦   «                              ¦   «         dk    sJ ‚|	                     ¦   «         dk    sJ ‚|
�J ‚t          |t          ¦  «        sJ ‚|sJ ‚t          d„ |D ¦   «         ¦  «        sJ ‚t          |¦  «        dk    r|d	z  }t          |¦  «        d	k    sJ ‚|d
         }|d         }|                      |¦  «        }|                      |¦  «        }�nl|	                     ¦   «         dk    �rD|	                     ¦   «         dk    sJ ‚|	 	                    ¦   «                              ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|�J ‚t          |
t          ¦  «        sJ ‚|
sJ ‚t          d„ |
D ¦   «         ¦  «        sJ ‚t          |
¦  «        dk    r|
d	z  }
t          |
¦  «        d	k    sJ ‚t          |
d
         |j        d	         z  ¦  «        }t          |
d         |j        d         z  ¦  «        }|                      |
d
         ¦  «        }|                      |
d         ¦  «        }nt          d¦  «        ‚|j        d
         |j        d         ||f}|                     ¦   «         }|                      |                     d
¦  «        |                     |¬¦  «        ¦  «        }|j        d
         d
k    s|j        d         d
k    rt          d¦  «        ‚dD ]©}|j        |         d
k    r–|                     ¦   «         dk    r!|                      ||||d	z
           ¦  «         ŒL|	                     ¦   «         dk    r6|                      ||d|
|d	z
           › dt+          ||¦  «        › d�¦  «         Œšt          d¦  «        ‚Œªd gdz  }||d
<   ||d<   ||d	<   |                      |¦  «        |d<   d gdz  }||d
<   |                      t0          j        ||¦  «         d S )Nr   r   r
   rÛ  z'Size and scale cannot both be non-None.râ  rã  c              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S rì   )rc  r  ©ré  rŸ  s     r(   r  z:_NnapiSerializer.add_upsample_nearest2d.<locals>.<genexpr>¢  s,   è è € Ð@Ð@°•z #¥sÑ+Ô+Ð@Ð@Ð@Ð@Ð@Ð@r'   r   r   rå  c              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S rì   )rc  r#  r  s     r(   r  z:_NnapiSerializer.add_upsample_nearest2d.<locals>.<genexpr>±  s,   è è € ÐCÐC°#•z #¥uÑ-Ô-ÐCÐCÐCÐCÐCÐCr'   z#Size and scale cannot both be None.r¢  z(Flexible batch or channels not supported)r   r   zint(z * rÈ  )r  r  rS  r±  rÀ  r¨  r%  r  r  rä  rc  rû   Úallr˜  r  r›  r"  rg  r‘  rÖ  r„  rI  rŸ  r¸  r*   rÛ   )r!  r!  r   Úsize_jitÚ	scale_jitÚscale_h_jitÚscale_w_jitr  r  Úscale_ctypeÚ	scale_argÚscale_h_ctypeÚscale_h_argÚscale_w_ctypeÚ_scale_w_argr  r  r9  r:  Úarg_hÚarg_wr;  r"  r¿  rH  rS  rT  s                              r(   rs  z'_NnapiSerializer.add_upsample_nearest2d~  sK  € Ø�ŠÑ Ô  AÒ%Ð%¨¯ªÑ):Ô):¸aÒ)?Ð)?Ð)?Ð?Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&Ø�?Š?ÑÔ Ò!Ð!Ø)-¯ª©¬Ñ&ˆE�8˜Y˜Yà8<¿º¹¼Ñ5ˆE�8˜[¨+Ø#×6Ò6°xÑ@Ô@Ñˆ
�Hà�?Š?ÑÔ Ò!Ð!Ø%)×%<Ò%<¸YÑ%GÔ%GÑ"ˆK˜˜à)-×)@Ò)@ÀÑ)MÔ)MÑ&ˆM˜;Ø*.×*AÒ*AÀ+Ñ*NÔ*NÑ'ˆM˜<ð
 !×%Ò%Ñ'Ô'¨:Ò5Ð5Ð5Ð5Ø ×%Ò%Ñ'Ô'¨:Ò5Ð5Ð5Ð5à'ˆKØ#ˆIà#×@Ò@ÀÑGÔGÑˆ�*Ý�:Ô#Ñ$Ô$¨Ò)Ð)Ð)Ð)à�?Š?ÑÔ 
Ò*Ð*¨{×/?Ò/?Ñ/AÔ/AÀZÒ/OÐ/OÝÐEÑFÔFÐFØ�_Š_ÑÔ *Ò,Ñ,Ø—?’?Ñ$Ô$¨
Ò2Ð2Ð2Ð2Ø×,Ò,Ñ.Ô.×3Ò3Ñ5Ô5¸ÒBÐBÐBÐBØ×#Ò#Ñ%Ô%¨Ò3Ð3Ð3Ð3ØÐ$Ð$Ð$Ý˜h­Ñ-Ô-Ð-Ð-Ð-ØˆOˆO�8ÝÐ@Ð@°xÐ@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ý�8‰}Œ} Ò!Ð!Ø# a™<�Ý�x‘=”= AÒ%Ð%Ð%Ð%Ø˜Q”KˆEØ˜Q”KˆEØ×1Ò1°%Ñ8Ô8ˆEØ×1Ò1°%Ñ8Ô8ˆE‰EØ×ÒÑÔ :Ò-Ñ-Ø×#Ò#Ñ%Ô%¨Ò3Ð3Ð3Ð3Ø×-Ò-Ñ/Ô/×4Ò4Ñ6Ô6¸+ÒEÐEÐEÐEØ—?’?Ñ$Ô$¨
Ò2Ð2Ð2Ð2ØÐ#Ð#Ð#Ý˜i­Ñ.Ô.Ð.Ð.Ð.ØÐÐ�9ÝÐCÐC¸ÐCÑCÔCÑCÔCÐCÐCÐCÝ�9‰~Œ~ Ò"Ð"Ø%¨™M�	Ý�y‘>”> QÒ&Ð&Ð&Ð&Ý˜	 !œ zÔ'7¸Ô':Ñ:Ñ;Ô;ˆEÝ˜	 !œ zÔ'7¸Ô':Ñ:Ñ;Ô;ˆEØ×3Ò3°I¸a´LÑAÔAˆEØ×3Ò3°I¸a´LÑAÔAˆEˆEåÐAÑBÔBÐBàÔ% aÔ(¨*Ô*:¸1Ô*=¸uÀeÐLˆ	Ø×&Ò&Ñ(Ô(ˆØ×(Ò(Ø�NŠN˜1ÑÔ˜z×2Ò2¸Ð2ÑCÔCñ
ô 
ˆð Ô˜AÔ !Ò#Ð# zÔ'7¸Ô':¸aÒ'?Ð'?ÝÐFÑGÔGÐGð ð 	ð 	ˆCØÔ Ô$¨Ò)Ð)Ø—?’?Ñ$Ô$¨
Ò2Ð2Ø×.Ò.¨v°s¸HÀSÈ1ÁWÔ<MÑNÔNÐNÐNØ ×%Ò%Ñ'Ô'¨:Ò5Ð5Ø×.Ò.ØØØQ˜y¨¨q©Ô1ÐQÐQµiÀÈ#Ñ6NÔ6NÐQÐQÐQñô ð ð õ $Ø=ñô ð ð *ð �˜!‘ˆØˆˆq‰	Øˆˆq‰	Øˆˆq‰	Ø×2Ò2°8Ñ<Ô<ˆˆq‰	à�&˜1‘*ˆØˆ�‰
à×ÒÕ.ÔFÈÐPWÑXÔXÐXÐXÐXr'   c                 ól  — |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         \  }}}}}||fD ]G}|                      |¦  «        \  }}	|                     ¦   «         dv sJ ‚|	dk    rt          d¦  «        ‚ŒH|                      |d|||¦  «         d S )Nr   r
   )rã  rå  z6NNAPI Fully-Connected does not support alpha and beta.T)r  r  rS  r±  rÀ  r  Úadd_addmm_or_linear)
r!  r!  Újit_biasÚ	jit_inputÚ
jit_weightÚjit_betaÚ	jit_alphard  r  Úscale_values
             r(   rw  z_NnapiSerializer.add_addmmà  så   € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&Ø?C¿{º{¹}¼}Ñ<ˆ�)˜Z¨°9à Ð+ð 	ð 	ˆFØ'+×'>Ò'>¸vÑ'FÔ'FÑ$ˆK˜Ø×#Ò#Ñ%Ô%Ð)AÐAÐAÐAÐAØ˜aÒÐÝØLñô ð ð  ð
 	× Ò   t¨Y¸
ÀHÑMÔMÐMÐMÐMr'   c                 óÐ   — |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         \  }}}|                      |d|||¦  «         d S )Nr   r
   F)r  r  rS  r   )r!  r!  r"  r#  r!  s        r(   ry  z_NnapiSerializer.add_linearï  sp   € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&Ø*.¯+ª+©-¬-Ñ'ˆ	�:˜xà× Ò   u¨i¸ÀXÑNÔNÐNÐNÐNr'   c                 ó¸  — |                       |¦  «        \  }}|                      |¦  «        \  }}	t          |j        ¦  «        dk    sJ ‚t          |	j        ¦  «        dk    sJ ‚|                      |d¦  «        \  }
}t          |j        ¦  «        dk    sJ ‚|r'|                     ¦   «                              ¦   «         }n|                     ¦   «         }|                      |¦  «        }| j        |         }|j        d         |j        d         f}|  	                    | 
                    d¦  «        |                     |¬¦  «        ¦  «        }|j        d         dk    r|                      |d|d¦  «         d gdz  }||d<   ||d<   ||d<   |                      t          j        ¦  «        |d<   d gdz  }||d<   |                      t"          j        ||¦  «         d S )Nr   r
   r¯  r   r¢  r   r   )r¨  r´  r%  r  r±  r  Ú
contiguousr�  rN  rg  r‘  rÖ  rÒ  r˜  rÝ   rÞ   r¸  r*   r†   )r!  r!  Útranspose_weightr"  r#  r!  Úinput_idÚ
input_operÚbias_idÚ	bias_operrF  Úweight_tensorÚnnapi_weight_tensorÚ	weight_idÚweight_operr;  r¿  rS  rT  s                      r(   r   z$_NnapiSerializer.add_addmm_or_linearö  sò  € ð  $×@Ò@ÀÑKÔKÑˆ�*Ø!×?Ò?ÀÑIÔIÑˆ�å�:Ô#Ñ$Ô$¨Ò)Ð)Ð)Ð)Ý�9”?Ñ#Ô# qÒ(Ð(Ð(Ð(ð  ×2Ò2°:¸|ÑLÔLÑˆˆ=Ý�=Ô&Ñ'Ô'¨1Ò,Ð,Ð,Ð,Øð 	=Ø"/§/¢/Ñ"3Ô"3×">Ò">Ñ"@Ô"@ÐÐà"/×":Ò":Ñ"<Ô"<ÐØ×6Ò6Ð7JÑKÔKˆ	Ø”m IÔ.ˆàÔ% aÔ(¨+Ô*;¸AÔ*>Ð?ˆ	Ø×(Ò(Ø�NŠN˜1ÑÔ˜z×2Ò2¸Ð2ÑCÔCñ
ô 
ˆð Ô˜AÔ !Ò#Ð#Ø×&Ò& v¨q°(¸AÑ>Ô>Ð>à�˜!‘ˆØˆˆq‰	Øˆˆq‰	Øˆˆq‰	Ø×1Ò1µ.Ô2KÑLÔLˆˆq‰	à�&˜1‘*ˆØˆ�‰
à×ÒÕ.Ô>ÀÈÑPÔPÐPÐPÐPr'   c                 óx  — |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         \  }}}}|                      |¦  «        \  }}t	          |j        ¦  «        dk    sJ ‚|                      |d¦  «        \  }}	|                      |d¦  «        \  }}
|                      |¦  «        \  }}|                     ¦   «         dk    sJ ‚|                     ¦   «         d         \  }}|€J ‚t	          |j        ¦  «        dk    sJ ‚t	          |j        ¦  «        dk    sJ ‚|j        d         |j        d         k    sJ ‚|j        d         |j        d         k    sJ ‚| 	                    ¦   «         t          j        k    sJ ‚|j        t          j        k    r|}n™|j        t          j        k    sJ ‚t          j        |                     ¦   «                              ¦   «         dz                        t          j        ¦  «        |                     ¦   «         |                     ¦   «         dz   ¬	¦  «        }|                     ¦   «         }|j        |z  }t          j        ||dt          j        ¦  «        }|                      |¦  «        }|j        |z  |	z  }|dk    sJ ‚|dk    rt5          d
¦  «        ‚|                     ¦   «         }|                      |¦  «        }| j        |         }|j        d         |j        d         f}|                     ||	|
¬¦  «        }d gdz  }||d<   ||d<   ||d<   |                      t>          j         ¦  «        |d<   d gdz  }|  !                    | "                    d¦  «        |¦  «        |d<   |  #                    tH          j%        ||¦  «         d S )Nr   r
   r   rå  rã  ÚLinearPackedParamsBaser   é€   rí  ú°Quantized convolution multiplier is greater than 1.  This is supported by NNAPI, but not by most hardware backends.  Try training a model without quantization-aware training.  ©r  r  r  r   )&r  r  rS  r¬  r%  r  r±  r”  Ú__getstate__Úqschemer©  Úper_tensor_affinerv  ro  Úqint8Ú!_make_per_tensor_quantized_tensorÚint_reprr  ÚtoÚuint8rx  ry  r  Úquantize_per_tensorrp  r�  r  r)  rN  rÖ  r˜  rÝ   rÞ   rg  r‘  r¸  r*   r†   )r!  r!  r"  Újit_packed_weightÚ	jit_scaleÚjit_zero_pointr+  r,  rF  Ú	out_scaleÚout_zero_pointÚweight_ctypeÚpacked_weightÚ
raw_weightÚraw_biasÚunsigned_weightÚweight_scaleÚ
bias_scaleÚint_biasr-  Ú
multiplierr0  r1  r2  r;  rØ  rS  rT  s                               r(   r‚  z_NnapiSerializer.add_qlinear  sÞ  € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&ð �KŠK‰MŒMñ	
ØØØØð  $×KÒKÈIÑVÔVÑˆ�*å�:Ô#Ñ$Ô$¨Ò)Ð)Ð)Ð)à×.Ò.¨y¸+ÑFÔF‰ˆˆ9Ø ×3Ò3°NÀIÑNÔNÑˆˆ>Ø&*×&=Ò&=Ð>OÑ&PÔ&PÑ#ˆ�mØ× Ò Ñ"Ô"Ð&>Ò>Ð>Ð>Ð>Ø,×9Ò9Ñ;Ô;¸AÔ>Ñˆ
�HØÐ#Ð#Ð#å�:Ô#Ñ$Ô$¨Ò)Ð)Ð)Ð)Ý�8”>Ñ"Ô" aÒ'Ð'Ð'Ð'ØŒ~˜aÔ  JÔ$4°QÔ$7Ò7Ð7Ð7Ð7ØÔ Ô" jÔ&6°qÔ&9Ò9Ð9Ð9Ð9à×!Ò!Ñ#Ô#¥uÔ'>Ò>Ð>Ð>Ð>ØÔ�uœ|Ò+Ð+Ø(ˆOˆOàÔ#¥u¤{Ò2Ð2Ð2Ð2Ý#ÔEØ×$Ò$Ñ&Ô&×*Ò*Ñ,Ô,¨sÑ2×6Ò6µu´{ÑCÔCØ ×(Ò(Ñ*Ô*Ø%×2Ò2Ñ4Ô4°sÑ:ðñ ô ˆOð
 '×.Ò.Ñ0Ô0ˆØÔ%¨Ñ4ˆ
ÝÔ,¨X°zÀ1ÅeÄlÑSÔSˆØ×4Ò4°XÑ>Ô>ˆàÔ%¨Ñ4°yÑ@ˆ
Ø˜AŠ~ˆ~ˆ~ˆ~Ø˜Š?ˆ?ÝðNñô ð ð .×8Ò8Ñ:Ô:ÐØ×6Ò6Ð7JÑKÔKˆ	Ø”m IÔ.ˆàÔ% aÔ(¨+Ô*;¸AÔ*>Ð?ˆ	Ø×&Ò&ØØØ%ð 'ñ 
ô 
ˆð �˜!‘ˆØˆˆq‰	Øˆˆq‰	Øˆˆq‰	Ø×1Ò1µ.Ô2KÑLÔLˆˆq‰	à�&˜1‘*ˆØ×,Ò,¨T¯^ª^¸AÑ->Ô->ÀÑIÔIˆ�‰
à×ÒÕ.Ô>ÀÈÑPÔPÐPÐPÐPr'   c                 óJ  — |                       |¦  «        \  }}|                     ¦   «         dk    r_|rdnd}t          j        |                     ¦   «         |         |j        ¬¦  «        }|                      |¦  «        }| j        |         }	||	fS |                      |¦  «        S )NrÛ  r
   r   )rv  )	r±  rÀ  r©  rª  r÷   rv  r�  rN  r´  )
r!  r!  r/  r4  r½  Ú_valueÚbias_idxÚnnapi_bias_tensorr-  r.  s
             r(   Úget_optional_biasz"_NnapiSerializer.get_optional_biase  s«   € Ø×/Ò/°Ñ9Ô9‰ˆˆvØ�:Š:‰<Œ<˜:Ò%Ð%Ø%Ð,�q�q¨1ˆHÝ %¤Ø×"Ò"Ñ$Ô$ XÔ.°mÔ6Ið!ñ !ô !Ðð ×8Ò8Ð9JÑKÔKˆGØœ gÔ.ˆIØ˜IÐ%Ð%à×5Ò5°hÑ?Ô?Ð?r'   c                 óÆ  — |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         \  }}}}}}}|                      |d¦  «        \  }	}
|                      ||
¦  «        \  }}|                      |
j        dd…         ||||¦  «        }|                      |                     d¦  «        dd||
||dt          j
        ¦	  «	        S )	Nr   r
   r¯  r   r   r   rl  F©r  r  rS  r±  rS  rù  r  Úadd_conv2d_commonr‘  rÝ   rÞ   )r!  r!  Ú	jit_imager#  r!  Ú
jit_strideÚjit_padÚjit_dilationÚ
jit_groupsrF  r/  r-  Ú
_bias_operr2  s                 r(   r~  z_NnapiSerializer.add_conv2dr  s  € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&ð �KŠK‰MŒMñ	
ØØØØØØØð  ×2Ò2°:¸|ÑLÔLÑˆˆ=Ø"×4Ò4°X¸}ÑMÔMÑˆ�Ø×2Ò2ØÔ  ! Ô$ j°'¸<Èñ
ô 
ˆð ×%Ò%Ø�NŠN˜1ÑÔØØØØØØØÝÔ%ñ

ô 

ð 
	
r'   c                 ó  — |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         \  }}}}}}}}	}
}	}	}	}	|                      |d¦  «        \  }	}|                      |¦  «        \  }	}|                      |||¦  «        \  }}|                      |j        dd…         ||||
¦  «        }|                      |                     d¦  «        dd|||||t          j
        ¦	  «	        S )Nr+   r
   r¯  r   r   r   rl  rU  )r!  r!  rW  r#  r!  rX  rY  rZ  Újit_transposerF  r[  r/  r4  r-  r\  r2  s                   r(   r|  z$_NnapiSerializer.add_conv_underscore’  s2  € Ø�ŠÑ Ô  BÒ&Ð&Ð&Ð&Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&ð  �KŠK‰MŒMñ	
ØØØØØØØØØØØØØð  ×2Ò2°:¸|ÑLÔLÑˆˆ=Ø×.Ò.¨}Ñ=Ô=‰ˆˆ9Ø"×4Ò4°X¸}ÈiÑXÔXÑˆ�Ø×2Ò2ØÔ  ! Ô$ j°'¸<Èñ
ô 
ˆð ×%Ò%Ø�NŠN˜1ÑÔØØØØØØØÝÔ%ñ

ô 

ð 
	
r'   c                 óR  — |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         \  }}}|                      |¦  «        \  }}|                      |d¦  «        \  }}|j        }	d gdz  }
||
d<   |                      d¦  «        |
d<   |                      |¦  «        |
d<   d gdz  }|                      | 	                    d¦  «        | 
                    |	¬¦  «        ¦  «        |d<   |                      t          j        |
|¦  «         d S )Nr   r
   rã  r   r   r¢  )r  r  rS  r¬  r±  r  r›  r˜  rg  r‘  rÖ  r¸  r*   r½   )r!  r!  r"  Újit_dimÚ_jit_half_to_floatr+  r,  rF  rH  r;  rS  rT  s               r(   r€  z _NnapiSerializer.add_log_softmax¹  s4  € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&à15·²±´Ñ.ˆ	�7Ð.Ø#×KÒKÈIÑVÔVÑˆ�*Ø×(Ò(¨°)Ñ<Ô<‰ˆˆ3àÔ$ˆ	à�˜!‘ˆØˆˆq‰	à×3Ò3°AÑ6Ô6ˆˆq‰	Ø×1Ò1°#Ñ6Ô6ˆˆq‰	à�&˜1‘*ˆØ×,Ò,Ø�NŠN˜1ÑÔ˜z×2Ò2¸Ð2ÑCÔCñ
ô 
ˆ�‰
ð 	×ÒÕ.Ô:¸FÀGÑLÔLÐLÐLÐLr'   c                 óF  — |                      ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         \  }}}}|                      |d¦  «        \  }}	|                      |d¦  «        \  }}
|                      |¦  «        \  }}|                     ¦   «         dk    sJ ‚|                     ¦   «         d         \  }}}|dk    sJ ‚|\  }}|\  }|€J ‚|                      |j        dd…         |¦  «        }|                     ¦   «         t          j
        k    sJ ‚|j        t          j        k    r|}n™|j        t          j        k    sJ ‚t          j        |                     ¦   «                              ¦   «         d	z                        t          j        ¦  «        |                     ¦   «         |                     ¦   «         d	z   ¬
¦  «        }|                     ¦   «         }|                      |¦  «        \  }}|j        |z  }t          j        ||dt          j        ¦  «        }|                      |¦  «        }|j        |z  |	z  }|dk    sJ ‚|dk    rt5          d¦  «        ‚|                      |                     d¦  «        |	|
||||||¦	  «	        S )Nr   r
   rå  rã  ÚConv2dPackedParamsBaser   Ú2r   r5  rí  r6  )r  r  rS  r±  r”  r8  rô  r  r9  r©  r:  rv  ro  r;  r<  r=  r  r>  r?  rx  ry  r¨  r  r@  rp  r�  r  rV  r‘  )r!  r!  rî  r4  rW  rA  rB  rC  rF  rD  rE  rF  rG  Úpack_versionr�  Úopt_tensorsrí  rH  rI  r2  rJ  rK  r  rL  rM  r-  rN  s                              r(   r…  z_NnapiSerializer.add_qconv2dÏ  sØ  € Ø�ŠÑ Ô  AÒ%Ð%Ð%Ð%Ø×ÒÑ!Ô! QÒ&Ð&Ð&Ð&ð �KŠK‰MŒMñ	
ØØØØð ×.Ò.¨y¸+ÑFÔF‰ˆˆ9Ø ×3Ò3°NÀIÑNÔNÑˆˆ>Ø&*×&=Ò&=Ð>OÑ&PÔ&PÑ#ˆ�mØ× Ò Ñ"Ô"Ð&>Ò>Ð>Ð>Ð>ð
 ×&Ò&Ñ(Ô(¨Ô+ñ		
ØØØà˜sÒ"Ð"Ð"Ð"Ø$+Ñ!ˆ�zØ!‰ˆØÐ#Ð#Ð#Ø×3Ò3ØÔ˜Q˜q˜SÔ! =ñ
ô 
ˆð ×!Ò!Ñ#Ô#¥uÔ'>Ò>Ð>Ð>Ð>ØÔ�uœ|Ò+Ð+Ø(ˆOˆOàÔ#¥u¤{Ò2Ð2Ð2Ð2Ý#ÔEØ×$Ò$Ñ&Ô&×*Ò*Ñ,Ô,¨sÑ2×6Ò6µu´{ÑCÔCØ ×(Ò(Ñ*Ô*Ø%×2Ò2Ñ4Ô4°sÑ:ðñ ô ˆOð
 '×.Ò.Ñ0Ô0ˆØ×9Ò9¸)ÑDÔD‰ˆˆ:ØÔ%¨Ñ4ˆ
ÝÔ,¨X°zÀ1ÅeÄlÑSÔSˆØ×4Ò4°XÑ>Ô>ˆàÔ%¨Ñ4°yÑ@ˆ
Ø˜AŠ~ˆ~ˆ~ˆ~Ø˜Š?ˆ?ÝðNñô ð ð ×%Ò%Ø�NŠN˜1ÑÔØØØØØØØØñ

ô 

ð 
	
r'   c
                 óD  — |                       |¦  «        \  }
}|j        d         }|j        dk    r
d}|rd}n"d}n|j        |k    rd}d}nt          d¦  «        ‚ |j        |Ž                      ¦   «         }|                      |¦  «        }| j        |         }| j        |         }|j        t          j
        k    r/|j        t          j
        k    sJ ‚|j        t          j
        k    sJ ‚nŒ|j        t          j        k    r`|j        t          j        k    sJ ‚|j        t          j        k    sJ ‚t          |j        |j        z  |j        ¦  «        sJ ‚|j        dk    sJ ‚nt          d|j        › �¦  «        ‚t!          |j        ¦  «        d	k    sJ ‚t!          |j        ¦  «        d	k    sJ ‚t!          |j        ¦  «        dk    sJ ‚|r5|j        \  }}}}|dk    sJ ‚||z  dk    sJ ‚||z  }|dk    sJ ‚||k    sJ ‚n|j        \  }}}}||k    sJ ‚||j        d         k    sJ ‚|                     ¦   «         }|rd
}t$          j        }nd}|rt$          j        }nt$          j        }d g|z  }|
|d<   ||d<   ||d<   |                      |j        ¦  «        |d<   |                      |j        ¦  «        |d	<   |                      |j        ¦  «        |d<   |                      |j        ¦  «        |d<   |                      |j        ¦  «        |d<   |                      |j        ¦  «        |d<   |rI|                      d¦  «        |d<   |                      |	¦  «        |d<   |                      |¦  «        |d<   n0|                      |	¦  «        |d<   |                      |¦  «        |d<   d gdz  }t=          |j        |||¦  «        }|                     |||¬¦  «        }|                       ||¦  «        } |  !                    | |||¦  «         | |d<   |  "                    |||¦  «         d S )Nr
   F)r
   r   r   r   rB  Tz$Group convolution not supported yet.r   z#Unsupported input type for conv2d: r   r   r   r   r   r   r   r   r   r   r   r7  )#r¨  r  r  r  rŒ  r)  r�  rN  rô   r	   r   r   r   rò   r  r  r%  r"  r*   r�   rØ   r€   r˜  r
  r  r  r	  r  r  rŸ  r<  rÖ  rg  r  r¸  )!r!  Újit_outrD  rE  rW  r/  r-  r2  r4  rî  r  r  Úin_cÚ	depthwiseÚweight_permutationr0  r1  r2  r.  ÚoneÚ_kern_hÚ_kern_wÚout_cÚchannel_multiplierÚkern_dr"  Únum_argsr·  rS  rT  r;  rØ  r¿  s!                                    r(   rV  z"_NnapiSerializer.add_conv2d_common  s¹  € ð  $×@Ò@ÀÑKÔKÑˆ�*ØÔ Ô"ˆàŒ:˜Š?ˆ?àˆIØð 2Ø%1Ð"Ð"à%1Ð"Ð"ØŒZ˜4ÒÐàˆIØ!-ÐÐåÐBÑCÔCÐCð 4˜mÔ3Ð5GÐH×SÒSÑUÔUÐØ×6Ò6Ð7JÑKÔKˆ	Ø”m IÔ.ˆà”M 'Ô*ˆ	àÔÕ!2Ô!AÒAÐAØÔ&Õ*;Ô*JÒJÐJÐJÐJØÔ$Õ(9Ô(HÒHÐHÐHÐHÐHØÔÕ#4Ô#HÒHÐHØÔ&Õ*;Ô*OÒOÐOÐOÐOØÔ$Õ(9Ô(FÒFÐFÐFÐFÝ 
Ô 0°;Ô3DÑ DÀiÄoÑVÔVÐVÐVÐVØÔ'¨1Ò,Ð,Ð,Ð,Ð,åØJ°jÔ6HÐJÐJñô ð õ �:Ô#Ñ$Ô$¨Ò)Ð)Ð)Ð)Ý�;Ô$Ñ%Ô%¨Ò*Ð*Ð*Ð*Ý�9”?Ñ#Ô# qÒ(Ð(Ð(Ð(àð 	"à+6Ô+<Ñ(ˆC�˜' 5Ø˜!’8�8�8�8Ø˜4‘< 1Ò$Ð$Ð$Ð$Ø!&¨$¡ÐØ%¨Ò*Ð*Ð*Ð*Ø˜D’=�=�=�=�=ð /:Ô.?Ñ+ˆE�7˜G VØ˜T’>�>�>�>à˜	œ¨Ô*Ò*Ð*Ð*Ð*à×&Ò&Ñ(Ô(ˆàð 	5ØˆHÝ(Ô:ˆFˆFàˆHØð 5Ý,Ô>��å,Ô4�à�˜(Ñ"ˆØˆˆq‰	Øˆˆq‰	Øˆˆq‰	Ø×1Ò1°$´*Ñ=Ô=ˆˆq‰	Ø×1Ò1°$´*Ñ=Ô=ˆˆq‰	Ø×1Ò1°$´*Ñ=Ô=ˆˆq‰	Ø×1Ò1°$´*Ñ=Ô=ˆˆq‰	Ø×1Ò1°$´-Ñ@Ô@ˆˆq‰	Ø×1Ò1°$´-Ñ@Ô@ˆˆq‰	Øð 	BØ×5Ò5°aÑ8Ô8ˆF�1‰IØ×6Ò6°yÑAÔAˆF�2‰JØ×7Ò7¸ÑAÔAˆF�2‰JˆJà×5Ò5°iÑ@Ô@ˆF�1‰IØ×7Ò7¸ÑAÔAˆF�2‰Jà�&˜1‘*ˆÝ'¨
Ô(8¸$ÀÀyÑQÔQˆ	Ø×&Ò&ØØØ%ð 'ñ 
ô 
ˆð
 ×(Ò(¨°(Ñ;Ô;ˆØ×-Ò-¨f°iÀÀyÑQÔQÐQàˆ�‰
Ø×Ò˜6 6¨7Ñ3Ô3Ð3Ð3Ð3r'   c                 ó8  — |                       |¦  «        \  }}|j        \  }}}	}
|dk    r|                      |d|d¦  «         |dk    rt          d¦  «        ‚|r |	dk    rH|                      |ddt          |d¦  «        › d|j        › d|j        › d|j        › d|j	        › �
¦  «         |
dk    rJ|                      |ddt          |d¦  «        › d|j
        › d|j        › d|j        › d|j        › �
¦  «         d S d S |	dk    rI|                      |ddt          |d¦  «        › d|j        › d|j        › d|j	        › d	|j        › d
�¦  «         |
dk    rK|                      |ddt          |d¦  «        › d|j        › d|j        › d|j        › d	|j
        › d
�¦  «         d S d S )Nr   z Input channels can't be flexibler   rÄ  z - 1) * rÓ  z - r   z) // z + 1)r¨  r  rÒ  r  r„  rI  r  r  r  r	  r  r  r
  r  )r!  r¿  rW  r2  r4  r  r  r5  Úin_chr7  r8  s              r(   r  z1_NnapiSerializer._handle_conv_pool_flexible_input  s<  € Ø#×@Ò@ÀÑKÔKÑˆ�*Ø#-Ô#3Ñ ˆˆu�d˜Dà�AŠ:ˆ:Ø×&Ò& v¨q°(¸AÑ>Ô>Ð>Ø�AŠ:ˆ:ÝÐ>Ñ?Ô?Ð?àð 	Ø�qŠyˆyØ×*Ò*ØØØw�	 (¨AÑ.Ô.ÐwÐw¸¼ÐwÐwÈ$Ì-ÐwÐwÐ\`Ô\fÐwÐwÐkoÔkuÐwÐwñô ð ð
 �qŠyˆyØ×*Ò*ØØØw�	 (¨AÑ.Ô.ÐwÐw¸¼ÐwÐwÈ$Ì-ÐwÐwÐ\`Ô\fÐwÐwÐkoÔkuÐwÐwñô ð ð ð ð ˆyð �qŠyˆyØ×*Ò*ØØØx�	 (¨AÑ.Ô.ÐxÐx°4´=ÐxÐxÀTÄZÐxÐxÐTXÔT^ÐxÐxÐeiÔerÐxÐxÐxñô ð ð
 �qŠyˆyØ×*Ò*ØØØx�	 (¨AÑ.Ô.ÐxÐx°4´=ÐxÐxÀTÄZÐxÐxÐTXÔT^ÐxÐxÐeiÔerÐxÐxÐxñô ð ð ð ð ˆyr'   )Frì   )NN)Pr   r   r   r_  ra  rg  ri  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à  rå  rô  rù  rë  r.  r  Ústaticmethodr  rŽ  r  rI  r9  r>  r@  rB  rD  rF  rK  rM  rO  rR  rU  rW  rY  r[  rf  rñ  rb  r^  r‰  ri  rk  ru  ro  rm  rq  rs  rw  ry  r   r‚  rS  r~  r|  r€  r…  rV  r  r&   r'   r(   rK  rK  F  sò  € € € € € ðð ð ð ð,"ð "ð "ðð ð ðð ð ð/
ð /
ð /
ðbð ð ð" !)Ô 9ðð ð ð ð"	1ð 	1ð 	1ð
ð 
ð 
ð

ð 
ð 
ð

ð 
ð 
ð

ð 
ð 
ð1ð 1ð 1ð7ð 7ð 7ðð ð ð !)Ô <ð7ð 7ð 7ð 7ð7ð 7ð 7ð
5ð 5ð 5ð/ð /ð /ð0ð 0ð 0ðð ð ð ð1
ð 1
ð 1
ð 1
ðfTð Tð Tð
ð 
ð 
ð
$ð $ð $ð(
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð" BFð
ð 
ð 
ð 
ð"
ð 
ð 
ð$n
ð n
ð n
ð n
ð`8ð 8ð 8ð$ ð0ð 0ñ „\ð0ðGØÐBÐBðGàÐIÐIðGð 	ÐOÐOðGð 	Ð QÐ Qð	Gð
 	ÐFÐFðGð 	Ð8Ð8ðGð 	Ð?Ð?ðGð 	ÐBÐBðGð 	ÐBÐBðGð 	Ð>Ð>ðGð 	Ð<Ð<ðGð 	Ð:Ð:ðGð 	Ð<Ð<ðGð 	$Ð%OÐ%OðGð 	ÐHÐHðGð  	ð 
ð 
ð!Gð& 	ð 
ð 
ð'Gð Gð, 	ð 
ð 
ð-Gð2 	ð 
ð 
ð3Gð8 	ð 
ð 
ð9Gð> 	ð 
ð 
ð?GðD 	ÐBÐBðEGðF 	ÐDÐDðGGðH 	ÐHÐHðIGðJ 	ð 
ð 
ðKGðP 	$ð &
ð &
ðQGðV 	#ð %
ð %
ðWGð\ 	ÐAÐAð]Gð^ 	Ð>Ð>ð_Gð` 	Ð@Ð@ðaGðb 	ÐOÐOðcGðd 	Ð@Ð@ðeGðf 	ÐJÐJðgGðh 	ÐFÐFðiGð Gðj
ð 
ð#
ð #
ð(
ð (
ð
ð 
ð 
ð  
ð
ð 
ðIGð Gð G€IðRð ð ð0ð 0ð 0ð
	6ð 	6ð 	6ð6ð 6ð 6ðð ð ð81ð 1ð 1ðMð Mð Mð0ð ð ðIð Ið Ið>6Ið 6Ið 6IðpIOð IOð IOðV<ð <ð <ð3Oð 3Oð 3Oðj/Fð /Fð /Fðb Jð  Jð  JðDLð Lð Lð&4ð 4ð 4ð8 BFð 54ð 54ð 54ð 54ð 54ðn5ð 5ð 5ð	5ð 	5ð 	5ðRð Rð RðIð Ið Ið.4ð 4ð 4ð6$Gð $Gð $GðL)4ð )4ð )4ðV4Qð 4Qð 4Qðl&Qð &Qð &QðP`Yð `Yð `YðDNð Nð NðOð Oð Oð$Qð $Qð $QðLGQð GQð GQðR@ð @ð @ð @ð
ð 
ð 
ð@%
ð %
ð %
ðNMð Mð Mð,?
ð ?
ð ?
ð ?
ðBm4ð m4ð m4ð^"ð "ð "ð "ð "r'   rK  F)r^  r  r]  c                óL   — t          ||¦  «                             | ||¦  «        S )aô  Convert to NNAPI and serialize torchscript module.

    Parameters:
        module: Torchscript module to convert
        inputs: Tensors used to specify input details for NNAPI
        config (optional): Optional config to attach to module
        return_shapes (optional): Specify shape of outputs if
            your module uses runtime flexible shapes to set output
            buffer size for NNAPI
        use_int16_for_qint16 (optional): Use Pytorch int16 to represent NNAPI qint16 values
    )rK  r.  )ÚmodulerS  r^  r  r]  s        r(   r.  r.  ¤  s.   € õ ˜FÐ$8Ñ9Ô9×IÒIØ�˜ñô ð r'   )rê   )"r¢  Úenumr³  Úloggingrµ  rŠ  rË  Útypingr   r   r   r   r©  Ú	getLoggerr¹   r	   r*   rÝ   rã   ÚEnumrè   rò   rù   r  r  r  r  r/  r<  r@  rC  rI  rK  r.  r&   r'   r(   ú<module>r}     sº  ðà €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø 
€
€
€
Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4à €€€ð €gÔÐ)Ñ*Ô*€ðð ð ð ð ñ ô ð ð _!ð _!ð _!ð _!ð _!ñ _!ô _!ð _!ðDð ð ð ð ñ ô ð ðð ð ð ð ñ ô ð ðð ð ð ð �t”yñ ô ð ð7ð 7ð 7ð 7ðð ð ðð ð ðð ð ð ð �Zñ ô ð ð ð ð ð ð ˆtŒyñ ô ð ð-ð -ð -ð -ð -ˆjñ -ô -ð -ð@ð ð ðBð ð ð06ð 6ð 6ð"ð ð ðð ð ð[ð [ð [ð [ð [ñ [ô [ð [ð~: #°$ÈUðð ð ð ð ð ð r'   