§
    ŠŠtj¬� ã                   óº  — 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 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)Ú
NamedTupleÚ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© ó    ú^/var/www/html/CA-Chatbot/venv/lib/python3.11/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#Representation 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                 óà  — t          | ¦  «        dk    rt          dt          | ¦  «        › �¦  «        ‚t          |¦  «        dk    rt          dt          |¦  «        › �¦  «        ‚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!shape1 must have length > 0, got z!shape2 must have length > 0, got z.Non-equal-rank broadcast is not supported yet.r   zCannot broadcast shapes: z and )ÚlenÚAssertionErrorrø   r  ÚzipÚappendrù   )Úshape1Úshape2Ús1Ús2ÚretÚd1Úd2s          r%   Úbroadcast_shapesr-  ë   ss  € Ý
ˆ6�{„{�aÒÐÝÐNÅÀVÁÄÐNÐNÑOÔOÐOÝ
ˆ6�{„{�aÒÐÝÐNÅÀVÁÄÐNÐNÑOÔOÐOÝ	ˆ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                 óž  — |t           j        u r| S |t           j        u r8t          | d         gt	          | dd …         ¦  «        z   | d         gz   ¦  «        S |t           j        u rGt          | ¦  «        dk    s2t          | ¦  «        dk    st          dt          | ¦  «        › �¦  «        ‚| S |t           j        u r| S t          d|›d�¦  «        ‚)Nr   r   r   z4SCALAR_OR_VECTOR requires len(shape) == 0 or 1, got zBad dim_order: ú.)
r  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Ô-Ð-Ð-Ý�E‘
”
˜a’�¥3 u¡:¤:°¢? ?Ý ØSÅsÈ5ÁzÄzÐSÐSñô ð ð ˆØ•HÔ-Ð-Ð-àˆÝ
Ð4 iÐ4Ð4Ð4Ñ
5Ô
5Ð5r$   c                 óŽ   — | t           j        t           j        fv r|S | t           j        u r
g d¢|         S t	          d| › �¦  «        ‚)N©r   r   r	   r   z%expected DimOrder.CHANNELS_LAST, got )r  r  r  r  r#  )r  rõ   s     r%   Úreverse_map_dimrA  :  sR   € ð
 •XÔ1µ8Ô3LÐMÐMÐMØˆØ•HÔ*Ð*Ð*Øˆ|ˆ|˜AŒÐÝ
ÐLÀÐLÐLÑ
MÔ
MÐMr$   c                 ó   — d| › d|› �S )NÚs_Ú_r#   )Úop_idÚdims     r%   Ú	flex_namerG  F  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__M  s�   € ØˆŒØˆŒØˆŒØˆŒØ ˆÔØˆŒØˆŒØ02ˆÔ-àˆŒØˆŒØ "ˆÔØ"$ˆÔØ!#ˆÔØˆÔØˆÔØ$8ˆÔ!àˆ>ØˆFˆFˆFð ˆ>r$   c                 ó*   — t          | j        ¦  «        S ré   )r"  rL  r  s    r%   Úget_next_operand_idz$_NnapiSerializer.get_next_operand_idc  s   € Ý�4”=Ñ!Ô!Ð!r$   c                 ó  — t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚|| j        v rt          d|›�¦  «        ‚|                      ¦   «         }| j                             |¦  «         || j        |<   |S )Núexpected Operand, got zDuplicate tensor: )	Ú
isinstancer  r#  ÚtyperW  r  r_  rL  r%  )r  ÚjitvalÚoperÚ
operand_ids       r%   Úadd_tensor_operandz#_NnapiSerializer.add_tensor_operandi  s‘   € Ý˜$¥Ñ(Ô(ð 	HÝ Ð!F½$¸t¹*¼*Ð!FÐ!FÑGÔGÐGØ�TÔ,Ð,Ð,ÝÐ;°Ð;Ð;Ñ<Ô<Ð<à×-Ò-Ñ/Ô/ˆ
ØŒ×Ò˜TÑ"Ô"Ð"Ø*4ˆÔ Ñ'ØÐr$   c                 óÊ   — t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚|                      ¦   «         }| j                             |¦  «         |S )Nra  )rb  r  r#  rc  r_  rL  r%  )r  re  rf  s      r%   Úadd_anonymous_tensor_operandz-_NnapiSerializer.add_anonymous_tensor_operandw  s_   € Ý˜$¥Ñ(Ô(ð 	HÝ Ð!F½$¸t¹*¼*Ð!FÐ!FÑGÔGÐGØ×-Ò-Ñ/Ô/ˆ
ØŒ×Ò˜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    rMt          j        }|                     ¦   «         }|                     ¦   «         }|dk    rt          d	|› �¦  «        ‚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Úqint32z!qint32 zero_point must be 0, got Ú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#  r[  Ú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_operand~  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Ø˜QŠˆÝ$Ð%UÈÐ%UÐ%UÑVÔVÐVð à�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  rQ  r%  Ú	enumerater  Úcompute_operand_shape)	r  Úarg_idxrd  r}  r  Útoperrf  rF  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"  rL  r%  rö   rñ   r  rM  rà   râ   rY  rO  Ú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t          dt          |¦  «        › �¦  «        ‚||f}|| j        vr“t          | j        ¦  «        }| j                             t          ||t          j
        dd¦  «        ¦  «         | j                             |t          j        f¦  «         | j                             |¦  «         || j        |<   | j        |         S )Nzdims must be a tuple, got rl  r   )rb  rù   r#  rc  rX  r"  rL  r%  r  r  r  rM  rà   rá   rO  )r  Úcoderü   rò   Ú	cache_keyrf  s         r%   Úadd_immediate_operandz&_NnapiSerializer.add_immediate_operandÒ  sÓ   € Ý˜$¥Ñ&Ô&ð 	LÝ Ð!J½dÀ4¹j¼jÐ!JÐ!JÑKÔKÐKØ˜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é   )rW  )r  rd  s     r%   Úhas_operand_for_jitvalz'_NnapiSerializer.has_operand_for_jitvalô  s   € Ø˜Ô0Ð0Ð0r$   c                 ó:   — | j         |         }|| j        |         fS ré   )rW  rL  )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  rE  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)rW  ÚgetÚget_constant_valuer�  rL  )r  rd  r  rf  rD  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�  rL  )r  rd  rD  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é   )rN  r%  r"  rP  Úextend)r  ÚopcoderQ  rR  s       r%   Úadd_operationz_NnapiSerializer.add_operation  sM   € ØŒ×Ò ­¨F©¬µS¸±\´\ÐBÑCÔCÐCØÔ×"Ò" 6¨GÑ#3Ñ4Ô4Ð4Ð4Ð4r$   c                 óR   — || j         v rt          d|›d�¦  «        ‚|| j         |<   d S )Nújitval z already in tensor_sequences)rV  r#  )r  rd  rM  s      r%   Úadd_tensor_sequencez$_NnapiSerializer.add_tensor_sequence  s=   € Ø�TÔ*Ð*Ð*Ý Ð!Q¨6Ð!QÐ!QÐ!QÑRÔRÐRØ(.ˆÔ˜fÑ%Ð%Ð%r$   c                 óV   — || j         v rt          d|›d�¦  «        ‚||f| j         |<   d S )Nrº  z already in constants)rU  r#  ©r  rd  Úctyperü   s       r%   Úadd_constant_valuez#_NnapiSerializer.add_constant_value   s?   € Ø�T”^Ð#Ð#Ý Ð!J¨6Ð!JÐ!JÐ!JÑKÔKÐKØ"'¨ ˆŒ�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  )rU  r°  r  Úkind)r  rd  ÚtypekindÚrecordr¾  rD  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                 óØ  — |€|j         }nYt          |¦  «        t          |j         ¦  «        k    r4t          dt          |¦  «        › dt          |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.Nzshape length z != oper.shape length ú(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ƒ  r%  ru  rG  r  Újoinrñ   r   r   r   r   r  r  r"   r   r[  )r  rE  re  r  Úshape_partsrõ   r«  Ú
shape_codes           r%   Úoperand_to_template_torchscriptz0_NnapiSerializer.operand_to_template_torchscript2  sK  € àˆ=Ø”JˆEˆEå�5‰zŒz�S ¤™_œ_Ò,Ð,Ý$ØW¥C¨¡J¤JÐWÐWÅcÈ$Ì*ÁoÄoÐWÐWñô ð ð �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„  rG  )r  Ú	out_op_idÚout_dimÚin_op_idÚin_dims        r%   Úforward_operand_shapez&_NnapiSerializer.forward_operand_shapeh  s*   € Ø×"Ò" 9¨gµyÀÈ6Ñ7RÔ7RÑSÔSÐSÐSÐSr$   c                 ó`   — | j                              t          ||¦  «        › d|› �¦  «         d S )Nz = )rS  r%  rG  )r  rE  rF  Úexprs       r%   r„  z&_NnapiSerializer.compute_operand_shapek  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   r@  r   )
r  r  Ú_replacer  r  r¤  ri  r¸  r'   rŸ   )r  Úin_idre  Úout_operrQ  rR  s         r%   Útranspose_to_nhwcz"_NnapiSerializer.transpose_to_nhwcp  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_broadcast„  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                 óR  — |                       |¦  «        \  }}|                     ¦   «         dk    rb|                     ¦   «                              ¦   «         dk    r6t          d|                     ¦   «                              ¦   «         › �¦  «        ‚|S t	          d|›d|›d�¦  «        ‚)NÚListTypeÚIntTypez"expected ListType of IntType, got zCan't handle size arg of type 'z' for 'rt  )r±  rÁ  ÚgetElementTyper#  r  r½  s       r%   Úget_size_argz_NnapiSerializer.get_size_arg“  s³   € Ø×.Ò.¨vÑ6Ô6‰ˆˆuØ�:Š:‰<Œ<˜:Ò%Ð%Ø×#Ò#Ñ%Ô%×*Ò*Ñ,Ô,°	Ò9Ð9Ý$ØX¸×9MÒ9MÑ9OÔ9O×9TÒ9TÑ9VÔ9VÐXÐXñô ð ð ˆLÝØI¨eÐIÐI¸fÐIÐIÐIñ
ô 
ð 	
r$   c                 ó¼  — d„ |D ¦   «         }|d         dk    rt          d|d         › �¦  «        ‚|d         |d         g}|d         |d         g}|d         |d	         g}|d
         |d         g}|d         }t          |¦  «        dk    rt          dt          |¦  «        › �¦  «        ‚|ddgk    rt          d|› �¦  «        ‚|                      |||||¦  «        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   zexpected pc[0] == 2, got r   r	   r
   r   r   r   r   r   r   zexpected len(pc) == 11, got z'expected output_padding == [0, 0], got )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  € Ø.Ð. Ð.Ñ.Ô.ˆØˆaŒ5�AŠ:ˆ:Ý Ð!D¸RÀ¼UÐ!DÐ!DÑEÔEÐEØ�a”5˜"˜Qœ%�.ˆØ�q”E˜2˜aœ5�>ˆØ˜”U˜B˜qœE�Nˆ	Ø˜Qœ%  A¤˜ˆØ�q”Eˆ	åˆr‰7Œ7�bŠ=ˆ=Ý Ð!IÅÀBÁÄÐ!IÐ!IÑJÔJÐJØ˜a ˜VÒ#Ð#Ý ØJ¸.ÐJÐJñô ð ð ×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ò  rD  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    rt          dt          |¦  «        › �¦  «        ‚t          |¦  «        dk    rt          dt          |¦  «        › �¦  «        ‚t          |¦  «        dk    rt          dt          |¦  «        › �¦  «        ‚t          |¦  «        dk    rt          dt          |¦  «        › �¦  «        ‚|\  }}||||g}	t          ||z   |	z   |z   |gz   Ž S )Nr   z expected len(kernels) == 2, got z expected len(strides) == 2, got z!expected len(paddings) == 2, got z"expected len(dilations) == 2, got )rø   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  € õ �{Ñ#Ô#ˆåˆw‰<Œ<˜1ÒÐÝ Ð!RÅCÈÁLÄLÐ!RÐ!RÑSÔSÐSÝˆw‰<Œ<˜1ÒÐÝ Ð!RÅCÈÁLÄLÐ!RÐ!RÑSÔSÐSÝˆx‰=Œ=˜AÒÐÝ Ð!TÅSÈÁ]Ä]Ð!TÐ!TÑUÔUÐUÝˆy‰>Œ>˜QÒÐÝ Ð!VÅcÈ)ÁnÄnÐ!VÐ!VÑWÔWÐWð ‰ˆˆ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    r$t)          d|                     ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t)          d|                     ¦   «         › �¦  «        ‚|                     d¦  «        }dg}|                     ¦   «                              ¦   «         d	k    r|g}d
}nk|                     ¦   «                              ¦   «         dk    r| j        |         }t3          |¦  «        }n$t5          d|                     ¦   «         › �¦  «        ‚|�Ot3          |¦  «        t3          |¦  «        k    r/t)          dt3          |¦  «        › dt3          |¦  «        › �¦  «        ‚t          |¦  «        D ]š\  }}| j        |         }
| j         
                    |
¦  «         | 
                    | j        |
         j        j        ¦  «         |r||         nd }| 
                    |                      |
| j        |
         |¦  «        dz   ¦  «         Œ›| 
                    d¦  «         g }d}t=          j        d|t3          | j        ¦  «        t3          | j         ¦  «        t3          | j!        ¦  «        t3          | j        ¦  «        t3          | j        ¦  «        ¦  «        }| 
                    |¦  «         |  "                    ¦   «         \  }}| #                    d„ | j        D ¦   «         ¦  «         | #                    |¦  «         | #                    d„ | j!        D ¦   «         ¦  «         d $                    |¦  «        g}t3          |d         ¦  «        }|dz  dk    rt)          d|› �¦  «        ‚tK          |dz  ¦  «        }t          | j        ¦  «        D ]º\  }
\  }}}}}tM          ||¦  «        }t          |¦  «        D ]N\  }}|dk    r>tO          ||¦  «        }| j(         
                    d|› dtS          |
|¦  «        › �¦  «         |dz  }ŒOtU          d„ |D ¦   «         ¦  «        }| 
                    |  +                    |¦  «        ¦  «         Œ»| #                    |¦  «         | 
                    |  +                    | j,        ¦  «        ¦  «         | 
                    |  +                    | j        ¦  «        ¦  «         | 
                    |  +                    | j        ¦  «        ¦  «         | j(         #                    |¦  «         t[          j-        dd $                    |¦  «        ¦  «        | j.        ||| j(        |fS )NFTr   zProcessing node #%d: %rz%expected retn.inputsSize() == 1, got r   z&expected retn.outputsSize() == 0, got zreturn [r¯  rÆ  Ú	TupleTypezUnsupported return type: zreturn_shapes length z != return_values length 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)model_offset must be divisible by 4, got 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>D  s.   è è € Ð=Ð=°!˜q Bšw˜w˜!˜!¨AÐ=Ð=Ð=Ð=Ð=Ð=r$   r–  )/rŸ  ÚnextÚgraphrQ  r¿  rc  rƒ  r$  rø   r‡  r%  rL  r  rü   Únodesr¶   ÚdebugÚadd_nodeÚreturn_nodeÚ
inputsSizer#  ÚoutputsSizeÚinputsAtrÁ  rV  r"  r  rW  rR  rÍ  rŠ  r‹  rM  rN  Úserialize_valuesr¶  rÊ  r  r>  rA  rS  rG  rù   Úserialize_intsrP  r¢  rY  ) r  ÚmodelrQ  Úreturn_shapesÚinp_dim_ordersÚout_dim_ordersÚself_jitvalr…  Úinput_valueÚinput_tensorrE  ÚidxÚnodeÚretnÚ
retn_inputÚtemplate_return_linesÚreturn_valuesÚretval_countr–  Úvr  ÚversionÚheaderÚserialized_valuesÚserialized_value_dataÚmodel_offsetrD  rò   r  rõ   r«  Úpt_ds                                    r%   Úserialize_modelz _NnapiSerializer.serialize_modelÛ  sá  € Ø×&Ò& 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˜$ÑÔÐÐàŒ{×&Ò&Ñ(Ô(ˆØ�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð —]’] 1Ñ%Ô%ˆ
Ø!+ ÐØ�?Š?ÑÔ×!Ò!Ñ#Ô# |Ò3Ð3Ø'˜LˆMØˆLˆLØ�_Š_ÑÔ×#Ò#Ñ%Ô%¨Ò4Ð4Ø Ô1°*Ô=ˆMÝ˜}Ñ-Ô-ˆLˆLåØ?¨J¯OªOÑ,=Ô,=Ð?Ð?ñô ð ð Ð$Ý�=Ñ!Ô!¥S¨Ñ%7Ô%7Ò7Ð7Ý$Øm­C°Ñ,>Ô,>ÐmÐmÕY\Ð]jÑYkÔYkÐmÐmñô ð õ ˜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‘}”}ˆð ˜!Ñ˜qÒ Ð Ý ØJ¸LÐJÐJñô ð õ ˜<¨!Ñ+Ñ,Ô,ˆå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           	      óæ  — g }g }t          | j        ¦  «        t          | j        ¦  «        k    r9t          dt          | j        ¦  «        › dt          | j        ¦  «        › �¦  «        ‚t	          | j        | j        ¦  «        D ]l\  \  }}}t          |¦  «        }|dz
  dz  dz   }|d||z
  z  z   }|                     t          j        d|||¦  «        ¦  «         |                     |¦  «         Œm||fS )Nzvalues length z != value_data length r   r	   rž  r‰  )r"  rM  rO  r#  r$  r%  rŠ  r‹  )	r  r)  r*  Úop_indexÚsource_typeÚdataÚsource_lengthÚphysical_lengthÚpadded_datas	            r%   r  z!_NnapiSerializer.serialize_valuesW  s  € ØÐØ "ÐÝˆtŒ{ÑÔ�s 4¤?Ñ3Ô3Ò3Ð3Ý Ø_¥ T¤[Ñ!1Ô!1Ð_Ð_ÍÈTÌ_ÑI]ÔI]Ð_Ð_ñô ð õ .1°´¸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_intsl  s    € åŒ{˜3 Ñ%Ô%×-Ò-Ñ/Ô/Ð/r$   zprim::GetAttrc                 ó,   — |                       |¦  «        S ré   )Úadd_getattr©r  r   s     r%   ú<lambda>z_NnapiSerializer.<lambda>q  ó   € ¨D×,<Ò,<¸TÑ,BÔ,B€ r$   zprim::Constantc                 ó,   — |                       |¦  «        S ré   )Úadd_constant_noder9  s     r%   r:  z_NnapiSerializer.<lambda>r  s   € ¨T×-CÒ-CÀDÑ-IÔ-I€ r$   zprim::ListConstructc                 ó,   — |                       |¦  «        S ré   )Úadd_list_constructr9  s     r%   r:  z_NnapiSerializer.<lambda>s  s   € °$×2IÒ2IÈ$Ñ2OÔ2O€ r$   zprim::TupleConstructc                 ó,   — |                       |¦  «        S ré   )Úadd_tuple_constructr9  s     r%   r:  z_NnapiSerializer.<lambda>t  s   € °4×3KÒ3KÈDÑ3QÔ3Q€ r$   zaten::unsqueezec                 ó,   — |                       |¦  «        S ré   )Úadd_unsqueezer9  s     r%   r:  z_NnapiSerializer.<lambda>u  s   € ¨d×.@Ò.@ÀÑ.FÔ.F€ r$   zaten::toc                 ó,   — |                       |¦  «        S ré   )Úadd_tor9  s     r%   r:  z_NnapiSerializer.<lambda>v  s   €  t§{¢{°4Ñ'8Ô'8€ r$   zaten::detachc                 ó,   — |                       |¦  «        S ré   ©Ú	_identityr9  s     r%   r:  z_NnapiSerializer.<lambda>w  s   € ¨4¯>ª>¸$Ñ+?Ô+?€ r$   zaten::reshapec                 ó,   — |                       |¦  «        S ré   )Úadd_reshaper9  s     r%   r:  z_NnapiSerializer.<lambda>x  r;  r$   zaten::flattenc                 ó,   — |                       |¦  «        S ré   )Úadd_flattenr9  s     r%   r:  z_NnapiSerializer.<lambda>y  r;  r$   zaten::slicec                 ó,   — |                       |¦  «        S ré   )Ú	add_slicer9  s     r%   r:  z_NnapiSerializer.<lambda>z  ó   € ¨$¯.ª.¸Ñ*>Ô*>€ r$   z
aten::sizec                 ó,   — |                       |¦  «        S ré   )Úadd_sizer9  s     r%   r:  z_NnapiSerializer.<lambda>{  ó   € ¨¯ª°tÑ)<Ô)<€ r$   z	aten::catc                 ó,   — |                       |¦  «        S ré   )Úadd_catr9  s     r%   r:  z_NnapiSerializer.<lambda>|  s   € ¨¯ª°TÑ(:Ô(:€ r$   z
aten::meanc                 ó,   — |                       |¦  «        S ré   )Úadd_meanr9  s     r%   r:  z_NnapiSerializer.<lambda>}  rR  r$   zaten::quantize_per_tensorc                 ó,   — |                       |¦  «        S ré   )Úadd_quantizer9  s     r%   r:  z_NnapiSerializer.<lambda>~  s   € ¸×8IÒ8IÈ$Ñ8OÔ8O€ r$   zaten::dequantizec                 ó,   — |                       |¦  «        S ré   )Úadd_dequantizer9  s     r%   r:  z_NnapiSerializer.<lambda>  ó   € ¨t×/BÒ/BÀ4Ñ/HÔ/H€ r$   z	aten::addc                 óX   — |                       |t          j        t          j        ¦  «        S ré   )Úadd_add_sub_opr'   rz   rÚ   rÛ   r9  s     r%   r:  z_NnapiSerializer.<lambda>€  ó$   € ¨×(;Ò(;ØÕ%Ô)­>Ô+Dñ)
ô )
€ r$   z	aten::subc                 óX   — |                       |t          j        t          j        ¦  «        S ré   )r]  r'   rž   rÚ   rÛ   r9  s     r%   r:  z_NnapiSerializer.<lambda>ƒ  r^  r$   z	aten::mulc                 óX   — |                       |t          j        t          j        ¦  «        S ré   )Ú(add_pointwise_simple_binary_broadcast_opr'   rŒ   rÚ   rÛ   r9  s     r%   r:  z_NnapiSerializer.<lambda>†  ó$   € ¨×(UÒ(UØÕ%Ô)­>Ô+Dñ)
ô )
€ r$   z	aten::divc                 óX   — |                       |t          j        t          j        ¦  «        S ré   )ra  r'   r˜   rÚ   rÛ   r9  s     r%   r:  z_NnapiSerializer.<lambda>‰  rb  r$   z
aten::reluc                 óB   — |                       |t          j        ¦  «        S ré   )Úadd_pointwise_simple_unary_opr'   r�   r9  s     r%   r:  z_NnapiSerializer.<lambda>Œ  s   € ¨×)KÒ)KØÕ%Ô*ñ*
ô *
€ r$   zaten::sigmoidc                 óB   — |                       |t          j        ¦  «        S ré   )re  r'   rˆ   r9  s     r%   r:  z_NnapiSerializer.<lambda>�  s   € ¨D×,NÒ,NØÕ%Ô.ñ-
ô -
€ r$   zaten::softmaxc                 ó,   — |                       |¦  «        S ré   )Úadd_softmaxr9  s     r%   r:  z_NnapiSerializer.<lambda>’  r;  r$   zaten::hardtanhc                 ó,   — |                       |¦  «        S ré   )Úadd_hardtanhr9  s     r%   r:  z_NnapiSerializer.<lambda>“  s   € ¨T×->Ò->¸tÑ-DÔ-D€ r$   zaten::avg_pool2dc                 ó,   — |                       |¦  «        S ré   )Úadd_avg_pool2dr9  s     r%   r:  z_NnapiSerializer.<lambda>”  r[  r$   zaten::max_pool2dc                 óB   — |                       |t          j        ¦  «        S ré   )Úadd_pool2d_noder'   r‹   r9  s     r%   r:  z_NnapiSerializer.<lambda>•  s   € ¨t×/CÒ/CØÕ%Ô1ñ0
ô 0
€ r$   zaten::adaptive_avg_pool2dc                 ó,   — |                       |¦  «        S ré   )Úadd_adaptive_avg_pool2dr9  s     r%   r:  z_NnapiSerializer.<lambda>˜  s   € ¸×8TÒ8TØñ9
ô 9
€ r$   zaten::upsample_nearest2dc                 ó,   — |                       |¦  «        S ré   )Úadd_upsample_nearest2dr9  s     r%   r:  z_NnapiSerializer.<lambda>›  s   € °t×7RÒ7RØñ8
ô 8
€ r$   zaten::preluc                 ó,   — |                       |¦  «        S ré   )Úadd_prelu_opr9  s     r%   r:  z_NnapiSerializer.<lambda>ž  s   € ¨$×*;Ò*;¸DÑ*AÔ*A€ r$   zaten::addmmc                 ó,   — |                       |¦  «        S ré   )Ú	add_addmmr9  s     r%   r:  z_NnapiSerializer.<lambda>Ÿ  rO  r$   zaten::linearc                 ó,   — |                       |¦  «        S ré   )Ú
add_linearr9  s     r%   r:  z_NnapiSerializer.<lambda>   ó   € ¨4¯?ª?¸4Ñ+@Ô+@€ r$   zaten::_convolutionc                 ó,   — |                       |¦  «        S ré   )Úadd_conv_underscorer9  s     r%   r:  z_NnapiSerializer.<lambda>¡  s   € °×1IÒ1IÈ$Ñ1OÔ1O€ r$   zaten::conv2dc                 ó,   — |                       |¦  «        S ré   )Ú
add_conv2dr9  s     r%   r:  z_NnapiSerializer.<lambda>¢  ry  r$   zaten::log_softmaxc                 ó,   — |                       |¦  «        S ré   )Úadd_log_softmaxr9  s     r%   r:  z_NnapiSerializer.<lambda>£  s   € °×0DÒ0DÀTÑ0JÔ0J€ r$   zquantized::linearc                 ó,   — |                       |¦  «        S ré   )Úadd_qlinearr9  s     r%   r:  z_NnapiSerializer.<lambda>¤  s   € °×0@Ò0@ÀÑ0FÔ0F€ r$   c                 óB   — |                       |t          j        ¦  «        S ré   ©Úadd_qconv2drÚ   rÛ   r9  s     r%   r:  z_NnapiSerializer.<lambda>¥  s   € °×0@Ò0@Ø•.Ô+ñ1
ô 1
€ r$   c                 óB   — |                       |t          j        ¦  «        S ré   )r„  rÚ   rÜ   r9  s     r%   r:  z_NnapiSerializer.<lambda>¨  s   € °T×5EÒ5EØ•.Ô+ñ6
ô 6
€ r$   c                 óF   — |                       |t          j        d¬¦  «        S )NT)r2  rƒ  r9  s     r%   r:  z_NnapiSerializer.<lambda>«  s&   € ¸$×:JÒ:JØ•.Ô+°tð ;Kñ ;
ô ;
€ r$   c                 óX   — |                       |t          j        t          j        ¦  «        S ré   )Úadd_qaddr'   rz   rÚ   rÛ   r9  s     r%   r:  z_NnapiSerializer.<lambda>®  ó"   € ¨T¯]ª]ØÕ%Ô)­>Ô+Dñ.
ô .
€ r$   c                 óX   — |                       |t          j        t          j        ¦  «        S ré   )rˆ  r'   rz   rÚ   rÜ   r9  s     r%   r:  z_NnapiSerializer.<lambda>±  s"   € °$·-²-ØÕ%Ô)­>Ô+Dñ3
ô 3
€ r$   c                 óX   — |                       |t          j        t          j        ¦  «        S ré   )rˆ  r'   rŒ   rÚ   rÛ   r9  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 rK  )r¨  r  Ú	outputsAtrW  )r  r   rØ  Ú_in_operrd  s        r%   rH  z_NnapiSerializer._identityÁ  sI   € Ø×;Ò;¸D¿MºMÈ!Ñ<LÔ<LÑMÔM‰ˆˆxØ—’ Ñ"Ô"ˆØ*/ˆÔ Ñ'Ð'Ð'r$   c                 ó~  — |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                      |                     d¦  «        ¦  «        \  }}t          |¦  «                             d¦  «        st          d|› �¦  «        ‚|                     d¦  «        }t          ||¦  «        }| 	                    d¦  «        }| 
                    ¦   «         }|                      |||¦  «         d S )Nr   ú%expected node.inputsSize() == 1, got ú&expected node.outputsSize() == 1, got r   z
__torch__.z3expected obj_ctype to start with '__torch__.', got Úname)r  r#  r  r±  r  ru  Ú
startswithr«  rz  r�  rc  r¿  )r  r   Ú	obj_ctypeÚobjr•  rü   Úoutputr¾  s           r%   r8  z_NnapiSerializer.add_getattrÆ  s:  € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð ×0Ò0°·²¸qÑ1AÔ1AÑBÔB‰ˆ	�3Ý�9‰~Œ~×(Ò(¨Ñ6Ô6ð 	Ý ØQÀiÐQÐQñô ð ð �vŠv�f‰~Œ~ˆÝ˜˜TÑ"Ô"ˆØ—’ Ñ"Ô"ˆØ—’‘”ˆØ×Ò ¨¨uÑ5Ô5Ð5Ð5Ð5r$   c                 óž  — |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                     d¦  «        }|                     ¦   «         }|                     ¦   «         }|                      |||¦  «         d S )Nr   z%expected node.inputsSize() == 0, got r   r”  )r  r#  r  r�  rc  ÚtoIValuer¿  )r  r   r™  r¾  rü   s        r%   r=  z"_NnapiSerializer.add_constant_nodeÚ  sÍ   € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð —’ Ñ"Ô"ˆØ—’‘”ˆØ—’Ñ!Ô!ˆØ×Ò ¨¨uÑ5Ô5Ð5Ð5Ð5r$   c                 ó–  — |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                     d¦  «        }|                     ¦   «         }g }g }|                     ¦   «         D ]�}|�7|| j        v r.|                      |¦  «        \  }}|                     |¦  «         nd }|�@|                     ¦   «                              ¦   «         dk    r|                     |¦  «         Œd }Œ‚|�|  	                    |||¦  «         |�|  
                    ||¦  «         |€|€t          d|›�¦  «        ‚d S d S )Nr   r”  r   r¯  zMUnable to handle ListConstruct node.  Neither all constants nor all tensors. )r  r#  r�  rc  rQ  rU  r±  r%  rÁ  r¿  r»  r  )	r  r   r™  r¾  Ú
const_valsÚtensorsÚinprD  Úvals	            r%   r?  z#_NnapiSerializer.add_list_constructè  sv  € Ø×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð —’ Ñ"Ô"ˆØ—’‘”ˆØ"$ˆ
Ø!ˆØ—;’;‘=”=ð 		ð 		ˆ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    r$t          d|                      ¦   «         › �¦  «        ‚|                     d¦  «        }t          |                     ¦   «         ¦  «        }|                      ||¦  «         d S )Nr   r”  r   )r  r#  r�  rø   rQ  r»  )r  r   r™  rM  s       r%   rA  z$_NnapiSerializer.add_tuple_construct  s†   € Ø×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð —’ Ñ"Ô"ˆÝ�d—k’k‘m”mÑ$Ô$ˆØ× Ò  ¨Ñ0Ô0Ð0Ð0Ð0r$   c                 óÊ  — |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                      |                     d¦  «        ¦  «        \  }}|                      |                     d¦  «        d¦  «        \  }}|j        t          j        k    rt          d|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   ú%expected node.inputsSize() == 2, got r   r”  r   rä  z,expected dim_order PRESUMED_CONTIGUOUS, got ©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_operrD  rF  Úreal_dimÚout_shape_listr9  rÙ  rQ  rR  s               r%   rC  z_NnapiSerializer.add_unsqueeze  sè  € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð ×EÒEÀdÇmÂmÐTUÑFVÔFVÑWÔW‰ˆˆwà×(Ò(¨¯ª°qÑ)9Ô)9¸9ÑEÔE‰ˆˆ3ØÔ¥Ô <Ò<Ð<Ý ØR¸wÔ?PÐRÐRñô ð ð  š(˜(�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é   rG  r9  s     r%   rE  z_NnapiSerializer.add_to1  s   € à�Š�tÑÔÐÐÐr$   c                 ó  — |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                      |                     d¦  «        ¦  «        \  }}|                      |                     d¦  «        ¦  «        \  }}|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                     ¦   «                              ¦   «         dk    r6t          d	|                     ¦   «                              ¦   «         › �¦  «        ‚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ã  z#expected shape_ctype ListType, got rä  z)expected shape element type IntType, got 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  r  ÚtorchÚzerosÚexpandr  Úreshaper×  r¤  rg  r�  r¸  r'   r�   )r  r   rØ  r¦  Úshape_ctyper  Úis_trivial_reshaper9  rÙ  rQ  rR  s              r%   rJ  z_NnapiSerializer.add_reshape5  s€  € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð ×EÒEÀdÇmÂmÐTUÑFVÔFVÑWÔW‰ˆˆwà!×4Ò4°T·]²]À1Ñ5EÔ5EÑFÔFÑˆ�UØ×ÒÑÔ Ò+Ð+Ý ØJ°k×6FÒ6FÑ6HÔ6HÐJÐJñô ð ð ×%Ò%Ñ'Ô'×,Ò,Ñ.Ô.°)Ò;Ð;Ý Øa¸K×<VÒ<VÑ<XÔ<X×<]Ò<]Ñ<_Ô<_ÐaÐañô ð õ ! ™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           	      óö  — |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                      |                     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¦  «        ¦  «         Œ<t1          d„ |	D ¦   «         ¦  «        }d gdz  }||d<   |                      |¦  «        |d<   d gdz  }||d<   |                      t6          j        ||¦  «         d S )Nr	   ú%expected node.inputsSize() == 3, got r   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ê  rF  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>”  s.   è è € ÐFÐF°S  q¢ ˜˜¨bÐFÐFÐFÐFÐFÐFr$   )r  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_flattenr9  Únon_flattened_dimsrÙ  Úout_idr  rF  Úinputs_1rQ  rR  s                     r%   rL  z_NnapiSerializer.add_flatten`  s­  € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð ×:Ò:¸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    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                      |                     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   ú%expected node.inputsSize() == 5, got r   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–  rF  Ú	dim_valueÚout_lens      €€r%   r  z-_NnapiSerializer.add_slice.<locals>.<genexpr>Ê  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>Û  s%   ø€ ÐUÐUÐU°a˜A šN˜Nˆ[ˆ[°ÐUÐUÐUr$   c                 ó*   •— g | ]\  }}|‰k    r‰n|‘ŒS r#   r#   )rê  r–  rF  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  r±  ÚsysÚmaxsizer  rH  r  rù   rƒ  rg  r�  r×  rÓ  r¤  Úranger"  r˜  r¸  r'   r�   )r  r   rØ  r¦  rD  r9  rÂ  Úend_maskr  rF  rQ  rR  rÇ  rÈ  rÊ  rÎ  rÌ  s               @@@@@r%   rN  z_NnapiSerializer.add_slicež  so  øøøøø€ Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð ×:Ò:¸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    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                      |                     d¦  «        ¦  «        \  }}| j        |                     d¦  «                 \  }}|j        |         }|                     d¦  «        }|                      || 	                    ¦   «         |¦  «         d S )Nr   r£  r   r”  r   )
r  r#  r  r¬  r  rU  r  r�  r¿  rc  )r  r   rD  r¦  rü   Úresr™  s          r%   rQ  z_NnapiSerializer.add_sizeï  s  € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð ×AÒAÀ$Ç-Â-ÐPQÑBRÔBRÑSÔS‰
ˆˆ7Ø”> $§-¢-°Ñ"2Ô"2Ô3‰ˆˆ5ØŒm˜EÔ"ˆØ—’ Ñ"Ô"ˆØ×Ò ¨¯ª©¬°sÑ;Ô;Ð;Ð;Ð;r$   c                 ó~  ‡— |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚| j        |                     d¦  «                 }|                      |                     d¦  «        d¦  «        \  }Št          |¦  «        dk    rt          dt          |¦  «        › �¦  «        ‚g }d }d}|D �]7}|                      |¦  «        \  }}	|€,t          |	j	        ‰d¦  «        }
|	 
                    |
¬	¦  «        }|	j        |j        k    rt          d
|	j        › d|j        › �¦  «        ‚|	j        |j        k    rt          d|	j        › d|j        › �¦  «        ‚t          |	j	        ‰d¦  «        t          |j	        ‰d¦  «        k    r=t          dt          |	j	        ‰d¦  «        › dt          |j	        ‰d¦  «        › �¦  «        ‚|                     |¦  «         ||	j	        ‰         z  }�Œ9|€t          d¦  «        ‚| 
                    t          |j	        ‰|¦  «        ¬	¦  «        }|	j        t          j        k    rGt          |j	        ¦  «        dk    r$t          dt          |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<   |                      t0          j        ||¦  «         d S )Nr   r£  r   r”  r   rä  zexpected len(tensors) > 0, got rÆ  r¤  zin_oper.op_type z != out_oper.op_type zin_oper.dim_order z != out_oper.dim_order zshape mismatch: z != zout_oper must not be Noner
   z9expected len(out_oper.shape) == 4 for CHANNELS_LAST, got ©r   r	   r   r   ú + c              3   ó8   •K  — | ]}t          |‰¦  «        V — Œd S ré   )rG  )rê  Úip_idrF  s     €r%   r  z+_NnapiSerializer.add_cat.<locals>.<genexpr><  s-   øè è € Ð&QÐ&QÀ¥y°¸Ñ'<Ô'<Ð&QÐ&QÐ&QÐ&QÐ&QÐ&Qr$   )r  r#  r  rV  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ž  rD  Úin_idsrÙ  Úout_dim_sizerŸ  rØ  r¦  r9  Ú	nnapi_dimrÂ  r  rõ   r  rQ  rR  rF  s                     @r%   rT  z_NnapiSerializer.add_catÿ  s  ø€ Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð Ô'¨¯ª°aÑ(8Ô(8Ô9ˆØ×(Ò(¨¯ª°qÑ)9Ô)9¸9ÑEÔE‰ˆˆ3åˆw‰<Œ<˜1ÒÐÝ Ð!QÅ3ÀwÁ<Ä<Ð!QÐ!QÑRÔRÐRØˆØˆØˆØð 	/ñ 	/ˆCØ!×>Ò>¸sÑCÔC‰NˆE�7ØÐÝ*¨7¬=¸#¸rÑBÔB�	Ø"×+Ò+°)Ð+Ñ<Ô<�ØŒ (Ô"2Ò2Ð2Ý$Ø_ w¤Ð_Ð_ÈXÔM]Ð_Ð_ñô ð ð Ô  HÔ$6Ò6Ð6Ý$Øg¨Ô):ÐgÐgÐS[ÔSeÐgÐgñô ð õ ˜gœm¨S°"Ñ5Ô5½Ø”  Rñ:ô :ò ð õ %Ø|¥~°g´mÀSÈ"Ñ'MÔ'MÐ|Ð|ÕSaÐbjÔbpÐruÐwyÑSzÔSzÐ|Ð|ñô ð ð �MŠM˜%Ñ Ô Ð à˜GœM¨#Ô.Ñ.ˆL‰LàÐÝ Ð!<Ñ=Ô=Ð=Ø×$Ò$Ý  ¤°°lÑCÔCð %ñ 
ô 
ˆð Ô¥Ô 6Ò6Ð6Ý�8”>Ñ"Ô" aÒ'Ð'Ý$ØeÕPSÐT\ÔTbÑPcÔPcÐeÐeñô ð ð %˜˜ 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                 óZ  — |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                      |                     d¦  «        ¦  «        \  }}|                      |                     d¦  «        ¦  «        \  }}|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                     ¦   «                              ¦   «         dk    r6t          d	|                     ¦   «                              ¦   «         › �¦  «        ‚|                      |                     d
¦  «        d¦  «        \  }}|                      |                     d¦  «        d¦  «         |j        t          j
        k    rIt          |j        ¦  «        dk    r$t          dt          |j        ¦  «        › �¦  «        ‚d„ |D ¦   «         }n|}t          ¦   «         }	|D ]4}
|
dk     r|
t          |j        ¦  «        z  }
|	                     |
¦  «         Œ5|j        t          j
        k    r8|s6|	                     d
dh¦  «        st          d|	› �¦  «        ‚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<   |                      t2          j        ||¦  «         d S )Nr
   ú%expected node.inputsSize() == 4, got r   r”  r   rã  z!expected dim_ctype ListType, got rä  z'expected dim element type IntType, got r   ÚBoolTyper	   ÚNoneTypez8expected len(in_oper.shape) == 4 for CHANNELS_LAST, got c                 ó"   — g | ]}g d ¢|         ‘ŒS )rÖ  r#   r  s     r%   rë  z-_NnapiSerializer.add_mean.<locals>.<listcomp>c  s    € Ð6Ð6Ð6¨Q˜˜˜ aœÐ6Ð6Ð6r$   z/expected collapsed_dims to include {2, 3}, got r=  )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_ctyperF  rD  Úkeep_dimrÜ  Úcollapsed_dimsrõ   Úout_dim_orderr9  r–  r«  rÙ  rQ  rR  s                     r%   rV  z_NnapiSerializer.add_meanH  sÅ  € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð ×EÒEÀdÇmÂmÐTUÑFVÔFVÑWÔW‰ˆˆwØ×0Ò0°·²¸qÑ1AÔ1AÑBÔB‰ˆ	�3Ø�>Š>ÑÔ˜zÒ)Ð)Ý Ð!WÀYÇ^Â^ÑEUÔEUÐ!WÐ!WÑXÔXÐXØ×#Ò#Ñ%Ô%×*Ò*Ñ,Ô,°	Ò9Ð9Ý Ø]¸)×:RÒ:RÑ:TÔ:T×:YÒ:YÑ:[Ô:[Ð]Ð]ñô ð ð ×-Ò-¨d¯mªm¸AÑ.>Ô.>À
ÑKÔK‰ˆˆ8à×Ò §¢¨aÑ 0Ô 0°*Ñ=Ô=Ð=àÔ¥Ô 6Ò6Ð6Ý�7”=Ñ!Ô! QÒ&Ð&Ý$ØcÍsÐSZÔS`ÑOaÔOaÐcÐcñô ð ð 7Ð6°#Ð6Ñ6Ô6ˆIˆIàˆIå™œˆØð 	"ð 	"ˆAØ�1ŠuˆuØ•S˜œÑ'Ô'Ñ'�Ø×Ò˜qÑ!Ô!Ð!Ð!àÔ¥Ô 6Ò6Ð6¸xÐ6Ø!×,Ò,¨a°¨VÑ4Ô4ð Ý$ØXÈÐXÐXñô ð õ %Ô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    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                      |                     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   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   r×  rg  r�  r¸  r'   rÂ   )r  r   rØ  r¦  rD  r  r  Úscalar_typerñ   rÙ  rQ  rR  s               r%   rX  z_NnapiSerializer.add_quantize‰  sþ  € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð ×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                 óL  — |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                      |                     d¦  «        ¦  «        \  }}|                     t          j        dd¬¦  «        }d gdz  }||d<   d gdz  }|                      | 	                    d¦  «        |¦  «        |d<   |  
                    t          j        ||¦  «         d S )Nr   r“  r”  r   rl  rë  )r  r#  r  r¬  r  r×  r   r   rg  r�  r¸  r'   r€   )r  r   rØ  r¦  rÙ  rQ  rR  s          r%   rZ  z_NnapiSerializer.add_dequantize±  s4  € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð ×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    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                      |                     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“  r”  r   g      p?)r  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  rF  rQ  rR  s              r%   re  z._NnapiSerializer.add_pointwise_simple_unary_opÊ  sŽ  € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð ×:Ò:¸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    r$t          d|                      ¦   «         › �¦  «        ‚|                     d¦  «                             ¦   «                              ¦   «         dk    rIt          d|                     d¦  «                             ¦   «                              ¦   «         › �¦  «        ‚|                     d¦  «                             ¦   «                              ¦   «         dk    rIt          d|                     d¦  «                             ¦   «                              ¦   «         › �¦  «        ‚|                      |                     d¦  «        ¦  «        r]|                      |                     d¦  «        ¦  «        \  }}|                      |                     d¦  «        |j        ¦  «        \  }}n˜|                      |                     d¦  «        ¦  «        r]|                      |                     d¦  «        ¦  «        \  }}|                      |                     d¦  «        |j        ¦  «        \  }}nt          d|› d�¦  «        ‚|j
        |j
        k    rt          d	|j
        › d
|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   r¯  ú%expected inputsAt(0) TensorType, got ú%expected inputsAt(1) TensorType, got zCan't do a NNAPI binary op: z on two constantszin0_oper.op_type z != in1_oper.op_type r¤  N©r  r  zassert z == r	   r   )r  r#  r  rc  rÁ  r¦  r¨  r²  r  r  rñ   rá  r-  r  r×  rg  r�  rƒ  r$  rÓ  rS  r%  rG  r˜  r¸  )r  r   r·  Ú	fuse_coderð  rÜ  rÝ  rÞ  rß  r9  rÙ  r  ÚzprÂ  r  Úd0r+  rQ  rR  s                      r%   Ú_do_add_binaryz_NnapiSerializer._do_add_binaryì  ss  € à×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð �=Š=˜ÑÔ× Ò Ñ"Ô"×'Ò'Ñ)Ô)¨\Ò9Ð9Ý ØX¸¿ºÀaÑ8HÔ8H×8MÒ8MÑ8OÔ8O×8TÒ8TÑ8VÔ8VÐXÐXñô ð ð �=Š=˜ÑÔ× Ò Ñ"Ô"×'Ò'Ñ)Ô)¨\Ò9Ð9Ý ØX¸¿ºÀaÑ8HÔ8H×8MÒ8MÑ8OÔ8O×8TÒ8TÑ8VÔ8VÐXÐXñô ð ð ×&Ò& 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ñô ð ð Ô˜xÔ/Ò/Ð/Ý Ø] HÔ$4Ð]Ð]È8ÔK[Ð]Ð]ñô ð ð .2×-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                 ó¬   — |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                      |||¦  «         d S )Nr   r£  )r  r#  rø  )r  r   r·  rõ  s       r%   ra  z9_NnapiSerializer.add_pointwise_simple_binary_broadcast_op/  s^   € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð 	×Ò˜D &¨)Ñ4Ô4Ð4Ð4Ð4r$   c                 ó.  — |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                      |                     d¦  «        d¦  «        \  }}|dk    rt	          d¦  «        ‚|                      |||¦  «         d S )Nr	   r²  r   rä  r   z*NNAPI does not support add/sub with alpha.)r  r#  r±  r  r  rø  )r  r   r·  rõ  rD  Úalphas         r%   r]  z_NnapiSerializer.add_add_sub_op6  s£   € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×*Ò*¨4¯=ª=¸Ñ+;Ô+;¸YÑGÔG‰ˆˆ5Ø�AŠ:ˆ:ÝØ<ñô ð ð 	×Ò˜D &¨)Ñ4Ô4Ð4Ð4Ð4r$   c                 ód  — |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                      |                     d¦  «        d¦  «        \  }}|                      |                     d¦  «        d¦  «        \  }}|                      |||||f¬¦  «         d S )Nr
   rÞ  r   rê  r	   rä  rï  )r  r#  r±  r  rø  )r  r   r·  rõ  rD  r  r  s          r%   rˆ  z_NnapiSerializer.add_qaddD  s²   € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×*Ò*¨4¯=ª=¸Ñ+;Ô+;¸[ÑIÔI‰ˆˆ5Ø×/Ò/°·²¸aÑ0@Ô0@À)ÑLÔL‰ˆˆ:à×Ò˜D &¨)¸eÀZÐ=PÐÑQÔQÐQÐQÐQr$   c                 ó¼  — |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                      |                     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   rä  g      ð?r   )r  r#  r¨  r  r±  rg  r�  rƒ  r  rÓ  r›  r˜  r¸  r'   r“   )r  r   rØ  r¦  rD  Úsoftmax_dimrÂ  rF  rô   rQ  rR  s              r%   rh  z_NnapiSerializer.add_softmaxO  sk  € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×:Ò:¸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    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                      |                     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   )r   r   z9NNAPI only supports hardtanh with args (-1, 1) or (0, 6).)r  r#  r  r¬  r  r±  r'   rŽ   r�   r°  r  rg  r�  r¸  )r  r   rØ  r¦  rD  Úmin_valÚmax_valÚop_mapr·  rQ  rR  s              r%   rj  z_NnapiSerializer.add_hardtanhi  s   € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð ×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    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                     d¦  «                             ¦   «                              ¦   «         dk    rIt          d|                     d¦  «                             ¦   «                              ¦   «         › �¦  «        ‚|                     d¦  «                             ¦   «                              ¦   «         dk    rIt          d|                     d¦  «                             ¦   «                              ¦   «         › �¦  «        ‚|                      |                     d¦  «        ¦  «        \  }}|                      |                     d¦  «        ¦  «        \  }}t          |j	        ¦  «        dk    r$t          d	t          |j	        ¦  «        › �¦  «        ‚|j	        d         dk    rt          d
|j	        d         › �¦  «        ‚|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”  r   r¯  rò  ró  z%expected len(w_oper.shape) == 1, got z"expected w_oper.shape[0] > 0, got z8Per-channel PReLU only supports channels_last right now.z.PReLU requires fixed size for dim 0 and dim 1.)r  r#  r  r  rc  rÁ  r¨  r´  r"  r  r  r  rg  r�  rƒ  rÓ  r¸  r'   rÁ   )r  r   rØ  r¦  Úw_idÚw_operrÂ  rF  rô   rQ  rR  s              r%   rt  z_NnapiSerializer.add_prelu_opŠ  s1  € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð �=Š=˜ÑÔ× Ò Ñ"Ô"×'Ò'Ñ)Ô)¨\Ò9Ð9Ý ØX¸¿ºÀaÑ8HÔ8H×8MÒ8MÑ8OÔ8O×8TÒ8TÑ8VÔ8VÐXÐXñô ð ð �=Š=˜ÑÔ× Ò Ñ"Ô"×'Ò'Ñ)Ô)¨\Ò9Ð9Ý ØX¸¿ºÀaÑ8HÔ8H×8MÒ8MÑ8OÔ8O×8TÒ8TÑ8VÔ8VÐXÐXñô ð ð ×:Ò:¸4¿=º=ÈÑ;KÔ;KÑLÔL‰ˆˆwØ×9Ò9¸$¿-º-ÈÑ:JÔ:JÑKÔK‰ˆˆfÝˆvŒ|ÑÔ Ò!Ð!Ý ØK½¸F¼LÑ8IÔ8IÐKÐKñô ð ð Œ<˜Œ?˜aÒÐÝ Ð!WÀfÄlÐSTÄoÐ!WÐ!WÑXÔXÐXØŒ<˜Œ?˜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                 óü  — |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                     ¦   «         \  }}}}}}|p|}|                      |                      |¦  «        |||¦  «        }	|	j        dk    s|	j        dk    rt          d¦  «        ‚|  	                    |¦  «        \  }
}t          |j        ¦  «        dk    r$t          dt          |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   z%expected node.inputsSize() == 6, got r   r”  z'NNAPI does not support dilated pooling.r
   ú)expected len(image_oper.shape) == 4, got Fr   r   r   r	   r   r   r   r   r   r¤  )r  r#  r  rQ  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_moder0  Úimage_idÚ
image_operr9  r  rQ  rR  s                   r%   rn  z _NnapiSerializer.add_pool2d_nodeÀ  s  € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð @D¿{º{¹}¼}Ñ<ˆˆv�v˜w¨°*àÐ!˜6ˆð ×2Ò2Ø×Ò˜fÑ%Ô% v¨w¸ñ
ô 
ˆð Œ?˜aÒÐ 4¤?°aÒ#7Ð#7ÝÐEÑFÔFÐFà#×KÒKÈEÑRÔRÑˆ�*ÝˆzÔÑ Ô  AÒ%Ð%Ý ØS½CÀ
Ô@PÑ<QÔ<QÐSÐSñô ð õ (ØÔ˜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                 óx  — |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                     ¦   «         \  }}}}}}}|                      |¦  «        \  }	}
|                      |¦  «        \  }	}|
r|rt          d¦  «        ‚|                      |                      |¦  «        ||¦  «        }|                      |¦  «        \  }}t          |j
        ¦  «        dk    r$t          dt          |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   ú%expected node.inputsSize() == 7, got r   r”  zANNAPI doesn't support count_include_pad=False or divisor_overrider
   r  Fr   r   r   r	   r   r   r   r   r   r¤  ) r  r#  r  rQ  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_overriderD  Úcount_include_pad_valueÚdivisor_override_valuer0  r  r  r9  r  rQ  rR  rÂ  s                       r%   rl  z_NnapiSerializer.add_avg_pool2dô  sT  € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð �KŠK‰MŒMñ	
ØØØØØØØð &*×%<Ò%<Ð=NÑ%OÔ%OÑ"ˆÐ"Ø$(×$;Ò$;Ð<LÑ$MÔ$MÑ!ˆÐ!Ø&ð 	Ð*@ð 	ÝØSñô ð ð ×2Ò2Ø×Ò˜fÑ%Ô% v¨wñ
ô 
ˆð  $×@Ò@ÀÑGÔGÑˆ�*ÝˆzÔÑ Ô  AÒ%Ð%Ý ØS½CÀ
Ô@PÑ<QÔ<QÐSÐSñô ð õ (ØÔ˜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                 óê  — |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                      |                     d¦  «        ¦  «        \  }}t          |j        ¦  «        dk    r$t          dt          |j        ¦  «        › �¦  «        ‚|                      |                     d¦  «        ¦  «        \  }}|                     ¦   «         dk    r$t          d	|                     ¦   «         › �¦  «        ‚| 	                    ¦   «                              ¦   «         d
k    r6t          d| 	                    ¦   «                              ¦   «         › �¦  «        ‚|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
   r  rã  ú"expected size_ctype ListType, got rä  ú(expected size element type IntType, got 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Û   rŸ  rg  r�  r×  r¸  r'   r{   )
r  r   r  r  Ú
size_ctypeÚsize_argr9  r  rQ  rR  s
             r%   rp  z(_NnapiSerializer.add_adaptive_avg_pool2d3  ss  € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð  $×KÒKØ�MŠM˜!ÑÔñ 
ô  
Ñˆ�*õ ˆzÔÑ Ô  AÒ%Ð%Ý ØS½CÀ
Ô@PÑ<QÔ<QÐSÐSñô ð ð  $×6Ò6°t·}²}ÀQÑ7GÔ7GÑHÔHÑˆ
�HØ�?Š?ÑÔ 
Ò*Ð*Ý ØH°Z·_²_Ñ5FÔ5FÐHÐHñô ð ð ×$Ò$Ñ&Ô&×+Ò+Ñ-Ô-°Ò:Ð:Ý Ø_¸:×;TÒ;TÑ;VÔ;V×;[Ò;[Ñ;]Ô;]Ð_Ð_ñô ð ð ˜˜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$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                      ¦   «         dk    r|                     ¦   «         \  }}}n|                     ¦   «         \  }}}}|                      |¦  «        \  }}|                      ¦   «         dk    r|                      |¦  «        \  }	}
n¬|                      |¦  «        \  }}|                      |¦  «        \  }}|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|}	|}
|                      |¦  «        \  }}t          |j        ¦  «        dk    r$t          d	t          |j        ¦  «        › �¦  «        ‚|                     ¦   «         dk    r'|	                     ¦   «         dk    rt          d
¦  «        ‚|                     ¦   «         dk    �rß|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚| 
                    ¦   «                              ¦   «         dk    r6t          d| 
                    ¦   «                              ¦   «         › �¦  «        ‚|	                     ¦   «         dk    r$t          d|	                     ¦   «         › �¦  «        ‚|
�t          d|
› �¦  «        ‚t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚|st          d¦  «        ‚t          d„ |D ¦   «         ¦  «        st          d¦  «        ‚t          |¦  «        dk    r|dz  }t          |¦  «        dk    rt          dt          |¦  «        › �¦  «        ‚|d         }|d         }|                      |¦  «        }|                      |¦  «        }�nH|	                     ¦   «         dk    �r |	                     ¦   «         dk    r$t          d|	                     ¦   «         › �¦  «        ‚|	 
                    ¦   «                              ¦   «         dk    r6t          d|	 
                    ¦   «                              ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|�t          d|› �¦  «        ‚t          |
t          ¦  «        st          dt          |
¦  «        › �¦  «        ‚|
st          d¦  «        ‚t          d„ |
D ¦   «         ¦  «        st          d ¦  «        ‚t          |
¦  «        dk    r|
dz  }
t          |
¦  «        dk    rt          d!t          |
¦  «        › �¦  «        ‚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<   |                      t4          j        ||¦  «         d S ))Nr	   r
   z*expected node.inputsSize() == 3 or 4, got r   r”  rà  z%expected scale_h_ctype NoneType, got z%expected scale_w_ctype NoneType, got r  z'Size and scale cannot both be non-None.rã  r  rä  r  z#expected scale_ctype NoneType, got zexpected scale_arg None, got z"expected size_arg to be list, got z!expected size_arg to be non-emptyc              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S ré   )rb  r  ©rê  r   s     r%   r  z:_NnapiSerializer.add_upsample_nearest2d.<locals>.<genexpr>«  s,   è è € Ð@Ð@°•z #¥sÑ+Ô+Ð@Ð@Ð@Ð@Ð@Ð@r$   z&expected all size_arg values to be intr   z!expected len(size_arg) == 2, got r   z#expected scale_ctype ListType, got rê  z+expected scale element type FloatType, got z"expected size_ctype NoneType, got zexpected size_arg None, got z#expected scale_arg to be list, got z"expected scale_arg to be non-emptyc              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S ré   )rb  r   r  s     r%   r  z:_NnapiSerializer.add_upsample_nearest2d.<locals>.<genexpr>Ì  s,   è è € ÐCÐC°#•z #¥uÑ-Ô-ÐCÐCÐCÐCÐCÐCr$   z)expected all scale_arg values to be floatz"expected len(scale_arg) == 2, got z#Size and scale cannot both be None.r¤  z(Flexible batch or channels not supported)r   r	   zint(z * rÉ  )r  r#  r  rQ  r±  rÁ  r¨  r"  r  r  rå  rb  rø   rc  Úallr˜  r  r›  r  rg  r�  r×  r„  rG  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  r7  r8  Úarg_hÚarg_wr9  r  rÂ  rF  rQ  rR  s                              r%   rr  z'_NnapiSerializer.add_upsample_nearest2dj  sÉ  € Ø—’Ñ!Ô! QÒ&Ð&¨$¯/ª/Ñ*;Ô*;¸qÒ*@Ð*@Ý ØP¸T¿_º_Ñ=NÔ=NÐPÐPñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð �?Š?ÑÔ Ò!Ð!Ø)-¯ª©¬Ñ&ˆE�8˜Y˜Yà8<¿º¹¼Ñ5ˆE�8˜[¨+Ø#×6Ò6°xÑ@Ô@Ñˆ
�Hà�?Š?ÑÔ Ò!Ð!Ø%)×%<Ò%<¸YÑ%GÔ%GÑ"ˆK˜˜à)-×)@Ò)@ÀÑ)MÔ)MÑ&ˆM˜;Ø*.×*AÒ*AÀ+Ñ*NÔ*NÑ'ˆM˜<ð
 ×!Ò!Ñ#Ô# zÒ1Ð1Ý$ØR¸M×<NÒ<NÑ<PÔ<PÐRÐRñô ð ð ×!Ò!Ñ#Ô# zÒ1Ð1Ý$ØR¸M×<NÒ<NÑ<PÔ<PÐRÐRñô ð ð (ˆKØ#ˆIà#×@Ò@ÀÑGÔGÑˆ�*ÝˆzÔÑ Ô  AÒ%Ð%Ý ØS½CÀ
Ô@PÑ<QÔ<QÐSÐSñô ð ð �?Š?ÑÔ 
Ò*Ð*¨{×/?Ò/?Ñ/AÔ/AÀZÒ/OÐ/OÝÐEÑFÔFÐFØ�_Š_ÑÔ *Ò,Ñ,Ø�ŠÑ Ô  JÒ.Ð.Ý$ØL¸¿ºÑ9JÔ9JÐLÐLñô ð ð ×(Ò(Ñ*Ô*×/Ò/Ñ1Ô1°YÒ>Ð>Ý$Øc¸z×?XÒ?XÑ?ZÔ?Z×?_Ò?_Ñ?aÔ?aÐcÐcñô ð ð ×ÒÑ!Ô! ZÒ/Ð/Ý$ØN¸+×:JÒ:JÑ:LÔ:LÐNÐNñô ð ð Ð$Ý$Ð%PÀYÐ%PÐ%PÑQÔQÐQÝ˜h­Ñ-Ô-ð Ý$ØI½¸h¹¼ÐIÐIñô ð ð ð JÝ$Ð%HÑIÔIÐIÝÐ@Ð@°xÐ@Ñ@Ô@Ñ@Ô@ð OÝ$Ð%MÑNÔNÐNÝ�8‰}Œ} Ò!Ð!Ø# a™<�Ý�8‰}Œ} Ò!Ð!Ý$ØG½¸H¹¼ÐGÐGñô ð ð ˜Q”KˆEØ˜Q”KˆEØ×1Ò1°%Ñ8Ô8ˆEØ×1Ò1°%Ñ8Ô8ˆE‰EØ×ÒÑÔ :Ò-Ñ-Ø×ÒÑ!Ô! ZÒ/Ð/Ý$ØN¸+×:JÒ:JÑ:LÔ:LÐNÐNñô ð ð ×)Ò)Ñ+Ô+×0Ò0Ñ2Ô2°kÒAÐAÝ$ØgÀ+×B\ÒB\ÑB^ÔB^×BcÒBcÑBeÔBeÐgÐgñô ð ð �ŠÑ Ô  JÒ.Ð.Ý$ØL¸¿ºÑ9JÔ9JÐLÐLñô ð ð Ð#Ý$Ð%NÀHÐ%NÐ%NÑOÔOÐOÝ˜i­Ñ.Ô.ð Ý$ØK½$¸y¹/¼/ÐKÐKñô ð ð ð KÝ$Ð%IÑJÔJÐJÝÐCÐC¸ÐCÑCÔCÑCÔCð RÝ$Ð%PÑQÔQÐQÝ�9‰~Œ~ Ò"Ð"Ø%¨™M�	Ý�9‰~Œ~ Ò"Ð"Ý$ØI½¸Y¹¼ÐIÐIñô ð õ ˜	 !œ 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                 ó8  — |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                     ¦   «         \  }}}}}||fD ]i}|                      |¦  «        \  }}	|                     ¦   «         dvr$t          d|                     ¦   «         › �¦  «        ‚|	dk    rt          d¦  «        ‚Œj|                      |d|||¦  «         d S )	Nr   rÅ  r   r”  )rä  rê  z/expected scale_ctype IntType or FloatType, got z6NNAPI Fully-Connected does not support alpha and beta.T)r  r#  r  rQ  r±  rÁ  r  Úadd_addmm_or_linear)
r  r   Újit_biasÚ	jit_inputÚ
jit_weightÚjit_betaÚ	jit_alphard  r"  Úscale_values
             r%   rv  z_NnapiSerializer.add_addmm  sT  € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð @D¿{º{¹}¼}Ñ<ˆ�)˜Z¨°9à Ð+ð 		ð 		ˆFØ'+×'>Ò'>¸vÑ'FÔ'FÑ$ˆK˜Ø×ÒÑ!Ô!Ð)AÐAÐAÝ$ØZÀk×FVÒFVÑFXÔFXÐZÐZñô ð ð ˜aÒÐÝØLñô ð ð  ð
 	× Ò   t¨Y¸
ÀHÑMÔMÐMÐMÐMr$   c                 óX  — |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                     ¦   «         \  }}}|                      |d|||¦  «         d S )Nr	   r²  r   r”  F)r  r#  r  rQ  r+  )r  r   r-  r.  r,  s        r%   rx  z_NnapiSerializer.add_linear  s¸   € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð +/¯+ª+©-¬-Ñ'ˆ	�:˜xà× Ò   u¨i¸ÀXÑNÔNÐNÐNÐNr$   c                 ó„  — |                       |¦  «        \  }}|                      |¦  «        \  }}	t          |j        ¦  «        dk    r$t	          dt          |j        ¦  «        › �¦  «        ‚t          |	j        ¦  «        dk    r$t	          dt          |	j        ¦  «        › �¦  «        ‚|                      |d¦  «        \  }
}t          |j        ¦  «        dk    r$t	          dt          |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   ú)expected len(input_oper.shape) == 2, got r   ú(expected len(bias_oper.shape) == 1, got r¯  z,expected len(weight_tensor.shape) == 2, got r   r¤  r
   r	   )r¨  r´  r"  r  r#  r±  r  Ú
contiguousr�  rL  rg  r�  r×  rÓ  r˜  rÚ   rÛ   r¸  r'   rƒ   )r  r   Útranspose_weightr-  r.  r,  Úinput_idÚ
input_operÚbias_idÚ	bias_operrD  Úweight_tensorÚnnapi_weight_tensorÚ	weight_idÚweight_operr9  rÂ  rQ  rR  s                      r%   r+  z$_NnapiSerializer.add_addmm_or_linear&  s[  € ð  $×@Ò@ÀÑKÔKÑˆ�*Ø!×?Ò?ÀÑIÔIÑˆ�åˆzÔÑ Ô  AÒ%Ð%Ý ØS½CÀ
Ô@PÑ<QÔ<QÐSÐSñô ð õ ˆyŒÑÔ 1Ò$Ð$Ý ØQ½3¸y¼Ñ;OÔ;OÐQÐQñô ð ð
  ×2Ò2°:¸|ÑLÔLÑˆˆ=Ýˆ}Ô"Ñ#Ô# qÒ(Ð(Ý ØY½sÀ=ÔCVÑ?WÔ?WÐYÐYñô ð ð ð 	=Ø"/§/¢/Ñ"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                 ó\
  — |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                     ¦   «         \  }}}}|                      |¦  «        \  }}t          |j        ¦  «        dk    r$t          dt          |j        ¦  «        › �¦  «        ‚|                      |d¦  «        \  }}	|                      |d¦  «        \  }}
|                      |¦  «        \  }}|                     ¦   «         d	k    r$t          d
|                     ¦   «         › �¦  «        ‚| 	                    ¦   «         d         \  }}|€t          d¦  «        ‚t          |j        ¦  «        dk    r$t          dt          |j        ¦  «        › �¦  «        ‚t          |j        ¦  «        dk    r$t          dt          |j        ¦  «        › �¦  «        ‚|j        d         |j        d         k    r+t          d|j        d         › d|j        d         › �¦  «        ‚|j        d         |j        d         k    r+t          d|j        d         › d|j        d         › �¦  «        ‚| 
                    ¦   «         t          j        k    r$t          d| 
                    ¦   «         › �¦  «        ‚|j        t          j        k    r|}n®|j        t          j        k    rt          d|j        › �¦  «        ‚t          j        |                     ¦   «                              ¦   «         dz                        t          j        ¦  «        |                     ¦   «         |                     ¦   «         dz   ¬¦  «        }|                     ¦   «         }|j        |z  }t          j        ||dt          j        ¦  «        }|                      |¦  «        }|j        |z  |	z  }|dk    rt          d|› �¦  «        ‚|dk    rt7          d¦  «        ‚|                     ¦   «         }|                      |¦  «        }| j        |         }|j        d         |j        d         f}|                     ||	|
¬¦  «        }d gdz  }||d<   ||d<   ||d<   |                      t@          j!        ¦  «        |d<   d gdz  }|  "                    | #                    d¦  «        |¦  «        |d<   |  $                    tJ          j&        ||¦  «         d S )Nr
   rÞ  r   r”  r   r4  rê  rä  ÚLinearPackedParamsBasez2expected weight_ctype LinearPackedParamsBase, got r   úraw_bias must not be Nonez)expected len(raw_weight.shape) == 2, got z'expected len(raw_bias.shape) == 1, got zraw_bias.shape[0] z != raw_weight.shape[0] zraw_weight.shape[1] z != input_oper.shape[1] ú5expected raw_weight.qscheme() per_tensor_affine, got ú%expected raw_weight.dtype qint8, got é€   rô  úexpected multiplier > 0, got ú°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#  r  rQ  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  r6  rL  r×  r˜  rÚ   rÛ   rg  r�  r¸  r'   rƒ   )r  r   r-  Újit_packed_weightÚ	jit_scaleÚjit_zero_pointr8  r9  rD  Ú	out_scaleÚout_zero_pointÚweight_ctypeÚpacked_weightÚ
raw_weightÚraw_biasÚunsigned_weightÚweight_scaleÚ
bias_scaleÚint_biasr:  Ú
multiplierr=  r>  r?  r9  rÙ  rQ  rR  s                               r%   r�  z_NnapiSerializer.add_qlinearU  sv  € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð �KŠK‰MŒMñ	
ØØØØð  $×KÒKÈIÑVÔVÑˆ�*åˆzÔÑ Ô  AÒ%Ð%Ý ØS½CÀ
Ô@PÑ<QÔ<QÐSÐSñô ð ð ×.Ò.¨y¸+ÑFÔF‰ˆˆ9Ø ×3Ò3°NÀIÑNÔNÑˆˆ>Ø&*×&=Ò&=Ð>OÑ&PÔ&PÑ#ˆ�mØ×ÒÑÔÐ":Ò:Ð:Ý ØZÀ\×EVÒEVÑEXÔEXÐZÐZñô ð ð  -×9Ò9Ñ;Ô;¸AÔ>Ñˆ
�HØÐÝ Ð!<Ñ=Ô=Ð=åˆzÔÑ Ô  AÒ%Ð%Ý ØS½CÀ
Ô@PÑ<QÔ<QÐSÐSñô ð õ ˆxŒ~ÑÔ !Ò#Ð#Ý ØO½#¸h¼nÑ:MÔ:MÐOÐOñô ð ð Œ>˜!Ô 
Ô 0°Ô 3Ò3Ð3Ý Øe X¤^°AÔ%6ÐeÐeÐPZÔP`ÐabÔPcÐeÐeñô ð ð Ô˜AÔ *Ô"2°1Ô"5Ò5Ð5Ý Øi zÔ'7¸Ô':ÐiÐiÐT^ÔTdÐefÔTgÐiÐiñô ð ð ×ÒÑÔ¥5Ô#:Ò:Ð:Ý Ø^È
×HZÒHZÑH\ÔH\Ð^Ð^ñô ð ð Ô�uœ|Ò+Ð+Ø(ˆOˆOàÔ¥5¤;Ò.Ð.Ý$ØN¸JÔ<LÐNÐNñô ð õ $Ô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Ñ@ˆ
Ø˜Š?ˆ?Ý Ð!MÀÐ!MÐ!MÑNÔNÐNØ˜Š?ˆ?Ýð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�  rL  r´  )
r  r,  r<  r2  r¾  Ú_valueÚbias_idxÚnnapi_bias_tensorr:  r;  s
             r%   Úget_optional_biasz"_NnapiSerializer.get_optional_bias¾  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                 óN  — |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                     ¦   «         \  }}}}}}}|                      |d¦  «        \  }	}
|                      ||
¦  «        \  }}|                      |
j        dd…         ||||¦  «        }|                      | 	                    d¦  «        d	d||
||d
t          j        ¦	  «	        S )Nr   r  r   r”  r¯  r   r
   r   rl  F©r  r#  r  rQ  r±  rd  rú  r  Úadd_conv2d_commonr�  rÚ   rÛ   )r  r   Ú	jit_imager.  r,  Ú
jit_strideÚjit_padÚjit_dilationÚ
jit_groupsrD  r<  r:  Ú
_bias_operr0  s                 r%   r}  z_NnapiSerializer.add_conv2dË  sM  € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð �KŠK‰MŒMñ	
ØØØØØØØð  ×2Ò2°:¸|ÑLÔLÑˆˆ=Ø"×4Ò4°X¸}ÑMÔMÑˆ�Ø×2Ò2ØÔ  ! Ô$ j°'¸<Èñ
ô 
ˆð ×%Ò%Ø�NŠN˜1ÑÔØØØØØØØÝÔ%ñ

ô 

ð 
	
r$   c                 óŒ  — |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                     ¦   «         \  }}}}}}}}	}
}	}	}	}	|                      |d¦  «        \  }	}|                      |¦  «        \  }	}|                      |||¦  «        \  }}|                      |j        dd…         ||||
¦  «        }|                      | 	                    d¦  «        d	d|||||t          j        ¦	  «	        S )
Nr(   z&expected node.inputsSize() == 13, got r   r”  r¯  r   r
   r   rl  rf  )r  r   rh  r.  r,  ri  rj  rk  Újit_transposerD  rl  r<  r2  r:  rm  r0  s                   r%   r{  z$_NnapiSerializer.add_conv_underscoreñ  sx  € Ø�?Š?ÑÔ Ò"Ð"Ý ØL¸¿ºÑ9JÔ9JÐLÐLñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð$ �KŠK‰MŒMñ	
ØØØØØØØØØØØØØð  ×2Ò2°:¸|ÑLÔLÑˆˆ=Ø×.Ò.¨}Ñ=Ô=‰ˆˆ9Ø"×4Ò4°X¸}ÈiÑXÔXÑˆ�Ø×2Ò2ØÔ  ! Ô$ j°'¸<Èñ
ô 
ˆð ×%Ò%Ø�NŠN˜1ÑÔØØØØØØØÝÔ%ñ

ô 

ð 
	
r$   c                 óÚ  — |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                     ¦   «         \  }}}|                      |¦  «        \  }}|                      |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¤  )r  r#  r  rQ  r¬  r±  r  r›  r˜  rg  r�  r×  r¸  r'   rº   )r  r   r-  Újit_dimÚ_jit_half_to_floatr8  r9  rD  rF  r9  rQ  rR  s               r%   r  z _NnapiSerializer.add_log_softmax	  s|  € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð 26·²±´Ñ.ˆ	�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                 óÚ  — |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                     ¦   «         \  }}}}|                      |d¦  «        \  }}	|                      |d¦  «        \  }}
|                      |¦  «        \  }}|                     ¦   «         dk    r$t          d|                     ¦   «         › �¦  «        ‚|                     ¦   «         d	         \  }}}|d
k    rt          d|›�¦  «        ‚|\  }}|\  }|€t          d¦  «        ‚|                      |j        dd…         |¦  «        }| 	                    ¦   «         t          j        k    r$t          d| 	                    ¦   «         › �¦  «        ‚|j        t          j        k    r|}n®|j        t          j        k    rt          d|j        › �¦  «        ‚t          j        |                     ¦   «                              ¦   «         dz                        t          j        ¦  «        |                     ¦   «         |                     ¦   «         dz   ¬¦  «        }|                     ¦   «         }|                      |¦  «        \  }}|j        |z  }t          j        ||d	t          j        ¦  «        }|                      |¦  «        }|j        |z  |	z  }|d	k    rt          d|› �¦  «        ‚|dk    rt7          d¦  «        ‚|                      |                     d	¦  «        |	|
||||||¦	  «	        S )Nr
   rÞ  r   r”  rê  rä  ÚConv2dPackedParamsBasez2expected weight_ctype Conv2dPackedParamsBase, got r   Ú2zexpected pack_version '2', got rB  r   rC  rD  rE  rô  rF  rG  )r  r#  r  rQ  r±  r•  rI  rõ  r  rJ  r«  rK  rv  ro  rL  rM  rN  r  rO  rP  rx  ry  r¨  r  rQ  rp  r�  r  rg  r�  )r  r   rõ  r2  rh  rR  rS  rT  rD  rU  rV  rW  rX  Úpack_versionrž  Úopt_tensorsrî  rY  rZ  r0  r[  r\  r  r]  r^  r:  r_  s                              r%   r„  z_NnapiSerializer.add_qconv2d:	  s¯  € Ø�?Š?ÑÔ Ò!Ð!Ý ØK¸¿ºÑ8IÔ8IÐKÐKñô ð ð ×ÒÑÔ Ò"Ð"Ý ØM¸×9IÒ9IÑ9KÔ9KÐMÐMñô ð ð �KŠK‰MŒMñ	
ØØØØð ×.Ò.¨y¸+ÑFÔF‰ˆˆ9Ø ×3Ò3°NÀIÑNÔNÑˆˆ>Ø&*×&=Ò&=Ð>OÑ&PÔ&PÑ#ˆ�mØ×ÒÑÔÐ":Ò:Ð:Ý ØZÀ\×EVÒEVÑEXÔEXÐZÐZñô ð ð ×&Ò&Ñ(Ô(¨Ô+ñ		
ØØØà˜3ÒÐÝ Ð!SÀ<Ð!SÐ!SÑTÔTÐTØ$+Ñ!ˆ�zØ!‰ˆØÐÝ Ð!<Ñ=Ô=Ð=Ø×3Ò3ØÔ˜Q˜q˜SÔ! =ñ
ô 
ˆð ×ÒÑÔ¥5Ô#:Ò:Ð:Ý Ø^È
×HZÒHZÑH\ÔH\Ð^Ð^ñô ð ð Ô�uœ|Ò+Ð+Ø(ˆOˆOàÔ¥5¤;Ò.Ð.Ý$ØN¸JÔ<LÐNÐNñô ð õ $Ô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Ñ@ˆ
Ø˜Š?ˆ?Ý Ð!MÀÐ!MÐ!MÑNÔNÐNØ˜Š?ˆ?ÝðNñô ð ð ×%Ò%Ø�NŠN˜1ÑÔØØØØØØØØñ

ô 

ð 
	
r$   c
                 ó  — |                       |¦  «        \  }
}|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    rY|j        t          j
        k    rt          d|j        › �¦  «        ‚|j        t          j
        k    rt          d|j        › �¦  «        ‚nð|j        t          j        k    rÄ|j        t          j        k    rt          d	|j        › �¦  «        ‚|j        t          j        k    rt          d
|j        › �¦  «        ‚t          |j        |j        z  |j        ¦  «        s't          d|j        |j        z  › d|j        › �¦  «        ‚|j        dk    rt          d|j        › �¦  «        ‚nt          d|j        › �¦  «        ‚t#          |j        ¦  «        dk    r$t          dt#          |j        ¦  «        › �¦  «        ‚t#          |j        ¦  «        dk    r$t          dt#          |j        ¦  «        › �¦  «        ‚t#          |j        ¦  «        dk    r$t          dt#          |j        ¦  «        › �¦  «        ‚|r{|j        \  }}}}|dk    rt          d|› �¦  «        ‚||z  dk    rt          d|› d|› �¦  «        ‚||z  }|dk    rt          d|› �¦  «        ‚||k    rt          d|› d|› �¦  «        ‚n'|j        \  }}}}||k    rt          d|› d|› �¦  «        ‚||j        d         k    r t          d|› d|j        d         › �¦  «        ‚|                     ¦   «         }|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   r@  Tz$Group convolution not supported yet.z)expected weight_oper TENSOR_FLOAT32, got z'expected bias_oper TENSOR_FLOAT32, got z.expected weight_oper TENSOR_QUANT8_ASYMM, got z%expected bias_oper TENSOR_INT32, got z#scale mismatch: image*weight scale z != bias scale r   z(expected bias_oper.zero_point == 0, got z#Unsupported input type for conv2d: r
   r  z*expected len(weight_oper.shape) == 4, got r5  z(expected weight_oper.shape[0] == 1, got zout_c z must be divisible by in_c z"channel_multiplier must be 1, got z	 != in_c zkern_d z != bias_oper.shape[0] r   r   r   r	   r   r   r   r   r   r   rH  )$r¨  r  r  r  rŒ  r6  r�  rL  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  Újit_outrU  rV  rh  r<  r:  r0  r2  rõ  r  r  Úin_cÚ	depthwiseÚweight_permutationr=  r>  r?  r;  ÚoneÚ_kern_hÚ_kern_wÚout_cÚchannel_multiplierÚkern_dr  Únum_argsr·  rQ  rR  r9  rÙ  rÂ  s!                                    r%   rg  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ØÔ"Õ&7Ô&FÒFÐFÝ$ØUÀÔ@SÐUÐUñô ð ð Ô Õ$5Ô$DÒDÐDÝ$ØQ¸iÔ>OÐQÐQñô ð ð Eð ÔÕ#4Ô#HÒHÐHØÔ"Õ&7Ô&KÒKÐKÝ$ØZÀ[ÔEXÐZÐZñô ð ð Ô Õ$5Ô$BÒBÐBÝ$ØO¸IÔ<MÐOÐOñô ð õ   
Ô 0°;Ô3DÑ DÀiÄoÑVÔVð Ý$ð A¸*Ô:JÈ[ÔM^Ñ:^ð  Að  AÐoxÔo~ð  Að  Añô ð ð Ô# qÒ(Ð(Ý$ØU¸yÔ?SÐUÐUñô ð ð )õ
 ØJ°jÔ6HÐJÐJñô ð õ ˆzÔÑ Ô  AÒ%Ð%Ý ØS½CÀ
Ô@PÑ<QÔ<QÐSÐSñô ð õ ˆ{Ô Ñ!Ô! QÒ&Ð&Ý ØU½SÀÔARÑ=SÔ=SÐUÐUñô ð õ ˆyŒÑÔ 1Ò$Ð$Ý ØQ½3¸y¼Ñ;OÔ;OÐQÐQñô ð ð ð 	Hà+6Ô+<Ñ(ˆC�˜' 5Ø�aŠxˆxÝ$Ð%UÐPSÐ%UÐ%UÑVÔVÐVØ�t‰|˜qÒ Ð Ý$Ð%V¨eÐ%VÐ%VÐPTÐ%VÐ%VÑWÔWÐWØ!&¨$¡ÐØ! QÒ&Ð&Ý$ØMÐ9KÐMÐMñô ð ð ˜Š}ˆ}Ý$Ð%D¨eÐ%DÐ%D¸dÐ%DÐ%DÑEÔEÐEð ð /:Ô.?Ñ+ˆE�7˜G VØ˜Š~ˆ~Ý$Ð%F¨vÐ%FÐ%FÀÐ%FÐ%FÑGÔGÐGà�I”O AÔ&Ò&Ð&Ý ØK˜ÐKÐK°y´ÀqÔ7IÐKÐKñô ð ð ×&Ò&Ñ(Ô(ˆàð 	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„  rG  r  r  r  r  r  r  r  r  )r  rÂ  rh  r0  r2  r  r  r3  Úin_chr5  r6  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]  r_  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  rH  r8  r=  r?  rA  rC  rE  rJ  rL  rN  rQ  rT  rV  rX  rZ  re  rø  ra  r]  rˆ  rh  rj  rt  rn  rl  rp  rr  rv  rx  r+  r�  rd  r}  r{  r  r„  rg  r  r#   r$   r%   rI  rI  L  s  € € € € € ðð ð ð ð,"ð "ð "ð	ð 	ð 	ðð ð ð1
ð 1
ð 1
ðfð ð ð" !)Ô 9ðð ð ð ð"
1ð 
1ð 
1ð
ð 
ð 
ð

ð 
ð 
ð

ð 
ð 
ð

ð 
ð 
ð1ð 1ð 1ð7ð 7ð 7ðð ð ð !)Ô <ð7ð 7ð 7ð 7ð7ð 7ð 7ð
5ð 5ð 5ð/ð /ð /ð
0ð 0ð 0ð
ð ð ð ð4
ð 4
ð 4
ð 4
ðlTð Tð Tð
ð 
ð 
ð
$ð $ð $ð(
ð 
ð 
ð

ð 

ð 

ð
ð 
ð 
ð, BFð
ð 
ð 
ð 
ð"
ð 
ð 
ð,z
ð z
ð z
ð z
ðx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ðð ð ð>1ð 1ð 1ðMð Mð MðBð ð ð)Ið )Ið )IðV<Ið <Ið <Ið|OOð OOð OOðb<ð <ð <ð GOð GOð GOðR?Fð ?Fð ?FðB&Jð &Jð &JðPLð Lð Lð2 4ð  4ð  4ðD BFð A4ð A4ð A4ð A4ð A4ðF5ð 5ð 5ð5ð 5ð 5ð	Rð 	Rð 	RðIð Ið Ið44ð 4ð 4ðB4Gð 4Gð 4Gðl24ð 24ð 24ðh=Qð =Qð =Qð~5Qð 5Qð 5QðnUYð UYð UYðnNð Nð Nð0Oð Oð Oð-Qð -Qð -Qð^gQð gQð gQðR@ð @ð @ð @ð$
ð $
ð $
ðL+
ð +
ð +
ðZMð Mð Mð8Q
ð Q
ð Q
ð Q
ðfR4ð R4ð R4ðh"ð "ð "ð "ð "r$   rI  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
    )rI  r-  )ÚmodulerQ  r\  r  r[  s        r%   r-  r-  F
  s.   € õ ˜FÐ$8Ñ9Ô9×IÒIØ�˜ñô ð r$   )rç   )r¢  Úenumr¶  Úloggingr¸  rŠ  rÏ  Útypingr   r«  Ú	getLoggerr¶   r   r'   rÚ   rà   ÚEnumrå   rï   rö   rþ   r   r  r  r-  r:  r>  rA  rG  rI  r-  r#   r$   r%   ú<module>rŽ     s¬  ðà €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ð Ð à €€€ð €gÔÐ)Ñ*Ô*€ðð ð ð ð ñ ô ð ð _!ð _!ð _!ð _!ð _!ñ _!ô _!ð _!ðDð ð ð ð ñ ô ð ðð ð ð ð ñ ô ð ðð ð ð ð �t”yñ ô ð ð7ð 7ð 7ð 7ðð ð ðð ð ðð ð ð ð �Zñ ô ð ð ð ð ð ð ˆtŒyñ ô ð ð-ð -ð -ð -ð -ˆjñ -ô -ð -ð@ ð  ð  ðFð ð ð06ð 6ð 6ð(	Nð 	Nð 	Nðð ð ðw#ð w#ð w#ð w#ð w#ñ w#ô w#ð w#ðvG #°$ÈUðð ð ð ð ð ð r$   