§
    ­˜ºh*± ã            !       óÌq  — U 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mZ d dl m	Z	m
Z
 d dlmZmZ d dlmZmZmZmZmZ d dlZd dlZd dlmZ d dlmZ d dlmc mZ d dlmZm Z m!Z! d dl"m#Z# d d	l$m%Z% d d
lm&Z&m'Z'm(Z(m)Z)m*Z* d dl+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z2 d dl3m4Z4 ej5        j6        Z6g Z7e8e9         e:d<   ej;        j<        j=        Z= G d„ de¦  «        Z>	 	 �d£dedej?        de@de@fd„ZA e	eAej?        jB        d¬¦  «        ZC e	eAej?        jB        ¬¦  «        ZD e	eAej?        jB        d¬¦  «        ZE e	eAej?        jF        ¬¦  «        ZGde!deHde!fd„ZI e#e=jJ        ¦  «         e/d¦  «        eDd e!d!e!fd"„¦   «         ¦   «         ¦   «         ZJ e#e=jK        ¦  «         e/d¦  «        eDd e!d!e!fd#„¦   «         ¦   «         ¦   «         ZK e#e=jL        ¦  «         e/d¦  «        eDd e!de!d$eMd%eMfd&„¦   «         ¦   «         ¦   «         ZL e#e=jN        ¦  «         e/d¦  «        eDd'e!d(eMd)eMd*eMd+e@d,e!fd-„¦   «         ¦   «         ¦   «         ZN e#e=jO        jP        g¦  «        d.„ ¦   «         ZQ e#e=jO        j!        g¦  «        d/e!fd0„¦   «         ZR e#e=jS        ¦  «         e/¦   «         eDd1e!de!fd2„¦   «         ¦   «         ¦   «         ZS e#e=jT        ¦  «         e/d¦  «        eDd'e!d1e!fd3„¦   «         ¦   «         ¦   «         ZT e#e=jU        ¦  «         e/d¦  «        d'e!d1e!d4eMd5eMfd6„¦   «         ¦   «         ZU e#e=jV        ¦  «         e/¦   «         eDd1e!de!fd7„¦   «         ¦   «         ¦   «         ZV e#e=jW        ¦  «         e/¦   «         eDd'e!d1e!de!fd8„¦   «         ¦   «         ¦   «         ZW e#e=jX        ¦  «         e/d¦  «        d'e!d1e!d%eMfd9„¦   «         ¦   «         ZX e#e=jY        ¦  «         e/d¦  «        eDd'e!d1e!d:eMd;e@fd<„¦   «         ¦   «         ¦   «         ZY e#e=jZ        ¦  «         e/d¦  «        eD�d¤d>e!d1e!d?e9fd@„¦   «         ¦   «         ¦   «         ZZ e#e=j[        ¦  «        eDd'e!dAe!fdB„¦   «         ¦   «         Z[ e#e=j\        ¦  «         e/¦   «         eDd1e!de!fdC„¦   «         ¦   «         ¦   «         Z\ e#e=j]        ¦  «         e/d¦  «        eDd'e!d1e!de!fdD„¦   «         ¦   «         ¦   «         Z] e#e=j^        ¦  «        d1e!dEe!de!fdF„¦   «         Z^ e#e=j_        ¦  «        d'e!d1e!dEe!de`e!e!f         fdG„¦   «         Z_ e#e=ja        ¦  «         e/¦   «         eDd'e!d1e!dHe!dIeMdJeMdKe@d;e@de!fdL„¦   «         ¦   «         ¦   «         Za e#e=jb        ¦  «         e/d¦  «        eDd'e!d1e!dMe!de!fdN„¦   «         ¦   «         ¦   «         ZbdOe!dPeHfdQ„ZcdRejd        fdS„Ze e#e=jf        ¦  «         e/¦   «         eDe>jg        jh        fd1e!dTe!dPeHde!fdU„¦   «         ¦   «         ¦   «         Zf e#e=ji        ¦  «         e/d¦  «        eDd'e!dAe!dTe!dPeHfdV„¦   «         ¦   «         ¦   «         Zi e#e=jj        ¦  «        �d¥dW„¦   «         Zk e#e=jl        ¦  «         e/¦   «         eDe>jg        jh        dXfd1e!dTe!dPeHd$eMfdY„¦   «         ¦   «         ¦   «         Zl e#e=jm        jn        ¦  «        eDd'e!d1e!dTe!dPeHd$eMf
dZ„¦   «         ¦   «         Zm e#e=jm        jo        ¦  «        eDd'e!d1e!dTe!dPeHd$eMde!fd[„¦   «         ¦   «         Zp e#e=jq        jn        ¦  «        eDd'e!d1e!dTe!dPeHd\eMf
d]„¦   «         ¦   «         Zq e#e=jq        jr        ¦  «        eDd'e!d1e!dTe!dPeHd\eMde!fd^„¦   «         ¦   «         Zsd'e!d1e!dTe!dEee!         dPeHd_eHd`e!de!fda„Zt e#e=ju        ¦  «         e/d¦  «        eDd'e!d1e!deHde!fdb„¦   «         ¦   «         ¦   «         Zu e#e=jv        ¦  «         e/d¦  «        d'e!d1e!dTe!dEee!         dPeHd_eHd`e!de!fdc„¦   «         ¦   «         Zv e#e=jw        ¦  «         e/d¦  «        d'e!d1e!dTe!dEee!         dPeHd_eHd`e!de!fdd„¦   «         ¦   «         Zw e#e=jx        ¦  «         e/¦   «         eDde>jg        jh        fd1e!dTe!dEee!         dPeHde!f
de„¦   «         ¦   «         ¦   «         Zx e#e=jy        ¦  «         e/d¦  «        eDde>jg        jh        fd'e!d1e!dTe!dEee!         dPeHde!fdf„¦   «         ¦   «         ¦   «         Zy e#e=jz        ¦  «         e/¦   «         eDe>jg        jh        fdAe!dTe!dPeHde!fdg„¦   «         ¦   «         ¦   «         Zz e#e=j{        ¦  «         e/d¦  «        eDe>jg        jh        fd'e!d1e!dTe!dPeHde!f
dh„¦   «         ¦   «         ¦   «         Z{ e#e=j|        ¦  «         e/¦   «         �d¦dAe!dje!dkeMfdl„¦   «         ¦   «         Z| e#e=j}        ¦  «         e/¦   «         dme!dne!de!fdo„¦   «         ¦   «         Z} e#e=j~        ¦  «         e/¦   «         d'e!dpe8eH         deHdqeHdreHdseHfdt„¦   «         ¦   «         Z~ e#e=j        j!        ¦  «        	 	 	 	 �d§d1e!deHdqeeH         dreeH         dseHf
dv„¦   «         Z€de!deHdqeeH         dreeH         de`eHeHf         f
dw„Z� e#e=j‚        ¦  «         e/¦   «         	 	 	 	 �d§dAe!dxe!deHdqeeH         dreeH         dseHfdy„¦   «         ¦   «         Z‚ e#e=jƒ        ¦  «         e/¦   «         d'e!dpe8eH         deHdzeHfd{„¦   «         ¦   «         Zƒ e#e=j„        ¦  «         e/¦   «         d'e!dpe8eH         d|eHd}eHd~eHf
d„¦   «         ¦   «         Z„d'e!de!d€ejd        fd�„Z… e#e=j†        ¦  «         e/d¦  «        eCd'e!d‚e!deHd€ejd        fdƒ„¦   «         ¦   «         ¦   «         Z† e#e=j‡        ¦  «         e/¦   «         eCd'e!d‚e!deHd€ejd        fd„„¦   «         ¦   «         ¦   «         Z‡d…„ Zˆ e#e=j‰        ¦  «         e/¦   «         dAe!d†e8eH         d‡e8eH         dˆe8eH         d‰e8eH         de!fdŠ„¦   «         ¦   «         Z‰ e#e=jŠ        ¦  «         e/¦   «         eDdAe!d‹e8eH         d†e8eH         d‡e8eH         dˆe8eH         d‰e8eH         de!fdŒ„¦   «         ¦   «         ¦   «         ZŠ e#e=j‹        ¦  «         e/¦   «         d'e!d�e!d)eMfdŽ„¦   «         ¦   «         Z‹ e#e=jŒ        ¦  «         e/¦   «         d>e!d�e8eH         d�eHd‘eHdseHde!fd’„¦   «         ¦   «         ZŒ e#e=j�        jn        ¦  «        eD	 �d¥d'e!d1e!d“eeM         de!fd”„¦   «         ¦   «         Z� e#e=jŽ        ¦  «        e=jŽ        jn         �                    e6j�        ¦  «        e=jŽ        jn         �                    e6j‘        ¦  «        dAe!dkeMd•ee@         fd–„¦   «         ¦   «         ¦   «         ZŽ e#e=j’        ¦  «         e/d—d˜¦  «        dAe!dkeMd•ee@         fd™„¦   «         ¦   «         Z’ e#e=j“        ¦  «         e/¦   «         de!deHdše@fd›„¦   «         ¦   «         Z“ e#e=j”        ¦  «         e/d¬œ¦  «        de!deHdše@fd�„¦   «         ¦   «         Z” e#e=j•        ¦  «         e/¦   «         	 	 	 �d¨dEe!dŸe!d eHd¡e@d¢e@de!fd£„¦   «         ¦   «         Z• e#e=j–        ¦  «         e/¦   «         d'e!dŸe!d¤eHd eHd¡e@f
d¥„¦   «         ¦   «         Z–de8eH         fd¦„Z—d§e8e!         deHd¨eHde8e!         fd©„Z˜d§e8e!         fdª„Z™d§e8e!         deHfd«„Zšd§e8e!         deHd¨eHfd¬„Z› e#e=jœ        jn        e=jœ        jr        g¦  «        	 �d¥d§e8e!         deHd¨eHd­ee!         de!f
d®„¦   «         Zœ e#e=j�        jn        e=j�        jr        g¦  «        	 	 �d©d1e!d¯e8eH         deHd­ee8e!                  dee8e!                  f
d°„¦   «         Z� e#e=jž        j!        ¦  «        �dªdAe!d±eHdeHde`e!d²f         fd³„¦   «         Zž e#e=jŸ        jn        ¦  «        	 �dªdAe!d¯e8eH         deHde`e!d²f         fd´„¦   «         ZŸ e#e=j         j!        ¦  «        �dªd1e!d±eHdeHde`e!d²f         fdµ„¦   «         Z e=j¡        j¢         �                    e6j�        ¦  «        	 �dªd1e!d¶e!deHde`e!d²f         fd·„¦   «         Z£ e#e=j¤        ¦  «         e/d¬œ¦  «        eD�d«d1e!d¸e!d¹e!d$eHd(eHf
dº„¦   «         ¦   «         ¦   «         Z¤ e#e=j¥        ¦  «         e/¦   «         eD	 	 	 �d¬d1e!d¸e!d¹e!d$eHd(eHd»e@fd¼„¦   «         ¦   «         ¦   «         Z¥ e#e=j¦        ¦  «         e/d¬œ¦  «        eD�d«d1e!d¸e!d½e!d$eHd(eHf
d¾„¦   «         ¦   «         ¦   «         Z¦ e#e=j§        jn        ¦  «        eDd'e!dAe!d¿e!dÀe!dÁee!         dÂeHdÃeHdÄeHdÅeHdÆe8e@         de`ee!         ee!         ee!         f         fdÇ„¦   «         ¦   «         Z§ e#e=j§        jr        ¦  «        d'e!dAe!d¿e!dÀe!dÁee!         dÂeHdÃeHdÄeHdÅeHdÆe8e@         d—ej!        d˜ej!        dÈej!        de`ee!         ee!         ee!         f         fdÉ„¦   «         Z¨dee!         dee!         fdÊ„Z© e#e=jª        jn        ¦  «        dËe!dAe!dÌe8eH         d¿e!dÀe!dEee!         dÍee!         dÆe8e@         de`ee!         ee!         ee!         f         fdÎ„¦   «         Zª e#e=jª        jr        ¦  «        dËe!dAe!dÌe8eH         d¿e!dÀe!dEee!         dÍee!         dÆe8e@         d—ej!        d˜ej!        dÈej!        de`ee!         ee!         ee!         f         fdÏ„¦   «         Z«dAe!dEee!         dÍee!         dÐee!         dÑee!         dKe@dÒeMd“eMdÓe@de`e!e!e!ee!         ee!         f         fdÔ„Z¬ e#e=j­        ¦  «         e/d­dÕdÖ¦  «        dAe!dEee!         dÍee!         dÐee!         dÑee!         dKe@dÒeMd“eMde`e!e!e!f         fd×„¦   «         ¦   «         Z­e=j­        jn         �                    e6j‘        ¦  «        e=j­        jn         �                    e6j�        ¦  «        dAe!dEee!         dÍee!         dÐee!         dÑee!         dKe@dÒeMd“eMde`e!e!e!f         fdØ„¦   «         ¦   «         Z®e=j¯        jn         �                    e6j�        ¦  «        �dªde8e!         fdÙ„¦   «         Z° e#e=j±        jn        ¦  «        dAe!dEee!         dÍee!         dÐe!dÑe!dÒeMd“eMde`e!e!e!f         fdÚ„¦   «         Z± e#e=j²        jn        ¦  «        dAe!dEee!         dÍee!         dÐe!dÑe!dKe@dÒeMd“eMde`e!e!e!f         fdÛ„¦   «         Z² e#e=j²        j³        ¦  «        dAe!dEee!         dÍee!         dKe@dÒeMd“eMde`e!e!e!f         fdÜ„¦   «         Z´ e#e=jµ        jn        ¦  «        dAe!dEee!         dÍee!         dÐe!dÑe!dKe@dÒeMd“eMde`e!e!e!e!e!f         fdÝ„¦   «         ZµdAe!dEee!         dÍee!         dÐe!dÑe!d“eMdKe@de!fdÞ„Z¶ e#e=j·        jn        ¦  «        dAe!dEee!         dÍee!         dÐe!dÑe!dÒeMd“eMde`e!e!e!e!f         fdß„¦   «         Z· e#e=j¸        jn        ¦  «        dAe!dEee!         dÍee!         dÐe!dÑe!dÒeMd“eMde`e!e!e!e!e!e!f         fdà„¦   «         Z¸ e#e=j¹        jn        ¦  «        dAe!dEee!         dÍee!         dÐe!dÑe!dÒeMd“eMde`e!e!e!e!f         fdá„¦   «         Z¹ e#e=jº        ¦  «         e/d—d˜¦  «        eD�d¥dâ„¦   «         ¦   «         ¦   «         Z» e#e=j¼        ¦  «         e/¦   «         dddddddãœdee!e'f         dReejd                 däeej½                 dåe@dæe@dçeej¾                 fdè„¦   «         ¦   «         Z¼ e#e=j¿        e=jÀ        e=jÁ        g¦  «         e/¦   «         dé„ ¦   «         ¦   «         ZÂe=jÃ        jn         �                    e6j‘        ¦  «         e#e=jÃ        ¦  «         e/d—d˜dÈdê¦  «        dAe!dEe!dÍee!         dÐee!         dÑee!         dKe@dëeMdìeMfdí„¦   «         ¦   «         ¦   «         ZÃdî„ ZÄ e#e=jÅ        jn        ¦  «        dËe!dAe!dEee!         dÐee!         dÑee!         dÕee!         dÖee!         d•e@d“eMdÆe8e@         dïe!de`e!ee!         ee!         f         fdð„¦   «         ZÅ e#e=jÆ        jn        ¦  «        dËe!dAe!dEee!         dÐee!         dÑee!         dÕee!         dÖee!         d•e@d“eMdÆe8e@         de`e!ee!         ee!         f         fdñ„¦   «         ZÆ e#e=jÆ        jr        ¦  «        dËe!dAe!dEee!         dÐee!         dÑee!         dÕee!         dÖee!         d•e@d“eMdÆe8e@         d—ej!        d˜ej!        dÈej!        de`e!ee!         ee!         f         fdò„¦   «         ZÇ e#e=jÈ        ¦  «         e/d—d˜dÈ¦  «        dAe!d'e!dEe!dÐee!         dÑee!         dÕee!         dóee!         dìeMfdô„¦   «         ¦   «         ZÈ e#e=jÉ        ¦  «         e/d—d˜dÈ¦  «        dAe!d'e!dEe!dÐee!         dÑee!         dÕee!         dóee!         dìeMdõe!fdö„¦   «         ¦   «         ZÉ e#e=jÊ        ¦  «         e/¦   «         eDdAe!d‹e`eHeHf         fd÷„¦   «         ¦   «         ¦   «         ZËd1e)dŸe)d‹e8eH         deHfdø„ZÌ e#e=jÍ        ¦  «         e/¦   «         d1e)dŸe)d‹e8eH         fdù„¦   «         ¦   «         ZÍ e#e=jÎ        ¦  «         e/¦   «         dAe)dŸe)d‹e8eH         d‰e8eH         dˆe8eH         f
dú„¦   «         ¦   «         ZÎ e#e=jÏ        ¦  «        dudûœde)deHdze)düe)d(e'f
dý„¦   «         ZÏ e#e=jÐ        ¦  «         e/¦   «         dudûœde)deHdze)düe)d(e'f
dþ„¦   «         ¦   «         ZÐdudûœde)deHdze)düe)dÿe@d(e'f�d „ZÑ e#e=jÒ        jn        ¦  «        e=jÒ        jn         �                    e6j�        ¦  «        �d­�d„¦   «         ¦   «         ZÒ e#e=jÓ        ¦  «        de)deHdze)düe)f�d„¦   «         ZÓ e#e=jÔ        ¦  «         e/¦   «         de)deHdze)düe)f�d„¦   «         ¦   «         ZÔde)deHdze)düe)dÿe@f
�d„ZÕ e#e=jÖ        ¦  «         e/d‚dM¦  «        eDd1e!de`e!e!f         f�d„¦   «         ¦   «         ¦   «         ZÖ e#e=j×        ¦  «         e/¦   «         	 	 	 �d®de!�dee@eHeMf         �dee@eHeMf         �d	eejØ                 f�d
„¦   «         ¦   «         Z× e#e=jÙ        ¦  «        �d¯�d„¦   «         ZÙ�d„ ZÚ�d„ ZÛ e#e=jÜ        jÝ        ¦  «         e#e=jÞ        jÝ        ¦  «         e#e=jß        jÝ        ¦  «        e=jÜ        jÝ         �                    e6j�        ¦  «        e=jÜ        jÝ         �                    e6j‘        ¦  «        e=jÞ        jÝ         �                    e6j�        ¦  «        e=jÞ        jÝ         �                    e6j‘        ¦  «        e=jß        jÝ         �                    e6j�        ¦  «        e=jß        jÝ         �                    e6j‘        ¦  «        dAe!d‹ee8eH                  �dee8eM                  de!f�d„¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         Zà e#e=já        jÝ        ¦  «         e#e=jâ        jÝ        ¦  «         e#e=jã        jÝ        ¦  «        e=já        jÝ         �                    e6j�        ¦  «        e=já        jÝ         �                    e6j‘        ¦  «        e=jâ        jÝ         �                    e6j�        ¦  «        e=jâ        jÝ         �                    e6j‘        ¦  «        e=jã        jÝ         �                    e6j�        ¦  «        e=jã        jÝ         �                    e6j‘        ¦  «        dAe!d‹ee8eH                  �dee8eM                  de!f�d„¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         Zä�d°�d„Zå e#e=jÜ        jn        e=jÜ        jr        g¦  «        e=jÜ        jn         �                    e6j�        ¦  «        e=jÜ        jn         �                    e6j‘        ¦  «         e/dd�¬¦  «        	 �d¥dAe!d‹e8eH         �deeM         de!f�d„¦   «         ¦   «         ¦   «         ¦   «         ZÜ e#e=já        jn        e=já        jr        g¦  «        e=já        jn         �                    e6j�        ¦  «        e=já        jn         �                    e6j‘        ¦  «         e/dd�¬¦  «        	 �d¥dAe!d‹e8eH         �deeM         de!f�d„¦   «         ¦   «         ¦   «         ¦   «         Zæ e#e=jÞ        jn        e=jÞ        jr        g¦  «        e=jÞ        jn         �                    e6j�        ¦  «        e=jÞ        jn         �                    e6j‘        ¦  «         e/dd�¬¦  «        	 	 �d±dAe!d‹e8eH         �deeM         �deeM         de!f
�d„¦   «         ¦   «         ¦   «         ¦   «         ZÞ e#e=jâ        jn        e=jâ        jr        g¦  «        e=jâ        jn         �                    e6j�        ¦  «        e=jâ        jn         �                    e6j‘        ¦  «         e/dd�¬¦  «        	 	 �d±dAe!d‹e8eH         �deeM         �deeM         de!f
�d„¦   «         ¦   «         ¦   «         ¦   «         Zâ e#e=jß        jn        e=jß        jr        g¦  «        e=jß        jn         �                    e6j�        ¦  «        e=jß        jn         �                    e6j‘        ¦  «         e/dd�¬¦  «        	 	 	 �d²dAe!d‹e8eH         �deeM         �deeM         �deeM         de!f�d„¦   «         ¦   «         ¦   «         ¦   «         Zß e#e=jã        jn        e=jã        jr        g¦  «        e=jã        jn         �                    e6j�        ¦  «        e=jã        jn         �                    e6j‘        ¦  «         e/dd�¬¦  «        	 	 	 �d²dAe!d‹e8eH         �deeM         �deeM         �deeM         de!f�d„¦   «         ¦   «         ¦   «         ¦   «         ZãeD	 �d°dAe!d‹e8eH         �de8eeM                  �de@de!f
�d„¦   «         Zç�d„ Zè�d „ Zé�d!„ Zê�d"„ Zë	 �d°�d#„Zì�d$„ Zí�d%„ Zî�d°�d&„Zï�d°�d'„Zð�d(„ Zñ e#e=jò        jó        ¦  «        e=jò        jó         �                    e6j�        ¦  «        e=jò        jó         �                    e6j‘        ¦  «        �d)„ ¦   «         ¦   «         ¦   «         Zô e#e=jõ        jó        ¦  «        e=jõ        jó         �                    e6j�        ¦  «        e=jõ        jó         �                    e6j‘        ¦  «        �d*„ ¦   «         ¦   «         ¦   «         Zö e#e=jõ        j÷        ¦  «        e=jõ        j÷         �                    e6j�        ¦  «        e=jõ        j÷         �                    e6j‘        ¦  «        �d+„ ¦   «         ¦   «         ¦   «         Zø e#e=jò        j÷        ¦  «        e=jò        j÷         �                    e6j�        ¦  «        e=jò        j÷         �                    e6j‘        ¦  «        �d,„ ¦   «         ¦   «         ¦   «         Zù�d-„ Zú�d°�d.„Zû�d°�d/„Zü�d0„ Zý e#e=jþ        jó        ¦  «        e=jþ        jó         �                    e6j�        ¦  «        e=jþ        jó         �                    e6j‘        ¦  «        �d1„ ¦   «         ¦   «         ¦   «         Zÿ e#e=jþ        j÷        ¦  «        e=jþ        j÷         �                    e6j�        ¦  «        e=jþ        j÷         �                    e6j‘        ¦  «        �d2„ ¦   «         ¦   «         ¦   «         �Z �d3„ �Z�d4„ �Z e#e=�j        j÷        ¦  «        e=�j        j÷         �                    e6j�        ¦  «        e=�j        j÷         �                    e6j‘        ¦  «        �d5„ ¦   «         ¦   «         ¦   «         �Z e#e=�j        jó        ¦  «        e=�j        jó         �                    e6j�        ¦  «        e=�j        jó         �                    e6j‘        ¦  «        �d6„ ¦   «         ¦   «         ¦   «         �Z e#e=�j        jÝ        ¦  «        e=�j        jÝ         �                    e6j�        ¦  «        e=�j        jÝ         �                    e6j‘        ¦  «        �d7„ ¦   «         ¦   «         ¦   «         �Z e#e=�j        jÝ        ¦  «        e=�j        jÝ         �                    e6j�        ¦  «        e=�j        jÝ         �                    e6j‘        ¦  «        �d8„ ¦   «         ¦   «         ¦   «         �Z	 e#e=�j
        jÝ        ¦  «         e#e=�j        jÝ        ¦  «        e=�j        jÝ         �                    e6j�        ¦  «        e=�j        jÝ         �                    e6j‘        ¦  «        e=�j
        jÝ         �                    e6j�        ¦  «        e=�j
        jÝ         �                    e6j‘        ¦  «        e=�j        jÝ         �                    e6j�        ¦  «        e=�j        jÝ         �                    e6j‘        ¦  «        �d9„ ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         �Z e#e=�j        jn        e=�j        jr        g¦  «         e/¦   «         	 �d¥dAe!d‹e8eH         �d:e@�deeM         de!f
�d;„¦   «         ¦   «         �Z e#e=�j
        jn        e=�j
        jr        g¦  «        e=�j
        jn         �                    e6j‘        ¦  «         e/¦   «         	 	 �d±dAe!d‹e8eH         �d:e@�deeM         �deeM         de!f�d<„¦   «         ¦   «         ¦   «         �Z
 e#e=�j        jn        e=�j        jr        g¦  «         e/¦   «         	 	 	 �d²dAe!d‹e8eH         �d:e@�deeM         �deeM         �deeM         de!f�d=„¦   «         ¦   «         �Z�d¥�d>„�Z�d?„ �Zdxee!         �d@ee!         �dAe!de!f�dB„�Z�d@e*de!f�dC„�ZeDdAe!d‹e8eH         �d:e@�de8eeM                  de!f
�dD„¦   «         �Z e#e=�j        jn        ¦  «        �dEe!�dFe!de@f�dG„¦   «         �Z e#e=�j        e=�j        g¦  «         e/¦   «         �dH„ ¦   «         ¦   «         �Z e#e=�j        g¦  «        �dI„ ¦   «         �Z e#e=�j        g¦  «        �d°�dJ„¦   «         �Z e#e=�j        g¦  «        �dK„ ¦   «         �Z e#e=�j        g¦  «        �dL„ ¦   «         �Zd1e!dTe!dEee!         dPeHd_eHde`e!e!f         f�dM„�Z e#e=�j        ¦  «         e/d‚d`¦  «        d1e!dTe!dEee!         dPeHd_eHde`e!e!f         f�dN„¦   «         ¦   «         �Z e#e=�j        ¦  «         e/d‚d`¦  «        d1e!dTe!dEee!         dPeHd_eHde`e!e!f         f�dO„¦   «         ¦   «         �Zde!�dPeMde!f�dQ„�Zde!�dPeMde!f�dR„�Z�dSe!de*f�dT„�Z�dUe*�dVe!de!f�dW„�Z �dVee!         de!f�dX„�Z!�dYeH�d:e@dRejd        däej½        f�dZ„�Z"�d[e!�d\eH�d]eH�d:e@f�d^„�Z#�d[e!�d_eH�d\eH�d]eH�d:e@f
�d`„�Z$�d[e!d‘e8eH         �d:e@f�da„�Z%�d[e!d‘e8eH         �d:e@f�db„�Z& e#e=�j'        ¦  «         e/¦   «         eD�d[e!d‘e8eH         �d:e@f�dc„¦   «         ¦   «         ¦   «         �Z'	 	 	 	 �d³�dEe!�dde!�deeH�dfeH�d:e@�dge@de!f�dh„�Z( e#e=�j)        ¦  «         e/¦   «         eD	 	 	 �d´�dEe!�dde!�deeH�dfeH�d:e@de!f�di„¦   «         ¦   «         ¦   «         �Z) e#e=�j*        ¦  «         e/d¬œ¦  «        eD�dj„ ¦   «         ¦   «         ¦   «         �Z* e#e=�j+        ¦  «         e/¦   «         dde>jg        jh        f�dk„¦   «         ¦   «         �Z+�dlej!        �dmej!        �dne@de@f�do„�Z,e=�j-        jn         �                    e6j�        ¦  «        e=�j-        jr         �                    e6j�        ¦  «         e/d�¬p¦  «        d�dqœ�dr„¦   «         ¦   «         ¦   «         �Z- e#e=�j.        jn        e=�j.        jr        g¦  «        e=�j.        jn         �                    e6j‘        ¦  «         e/¦   «         eD	 	 �d±dAe!d‹e`eHeHf         �d:e@�dseeM         �dteeM         de!f�du„¦   «         ¦   «         ¦   «         ¦   «         �Z/ e#e=�j.        jÝ        ¦  «        e=�j.        jÝ         �                    e6j�        ¦  «        e=�j.        jÝ         �                    e6j‘        ¦  «         e/¦   «         eD	 �d¥�dEe!d‹ee`eHeHf                  �d:e@�dee`eMeMf                  de!f
�dv„¦   «         ¦   «         ¦   «         ¦   «         ¦   «         �Z0 e#e=�j1        ¦  «         e#e=�j2        ¦  «         e#e=�j3        ¦  «        eD e/¦   «         �dEe!dˆe`eHd²f         de!f�dw„¦   «         ¦   «         ¦   «         ¦   «         ¦   «         �Z4 e#e=�j5        ¦  «         e#e=�j6        ¦  «         e#e=�j7        ¦  «        eD e/¦   «         �dEe!dˆe`eHd²f         de!f�dx„¦   «         ¦   «         ¦   «         ¦   «         ¦   «         �Z8�dEe!dˆe`eHd²f         �dyeeHeHeHge!f         de!f�dz„�Z9 e#e=�j:        ¦  «         e#e=�j;        ¦  «         e#e=�j<        ¦  «         e/d¦  «        �d{„ ¦   «         ¦   «         ¦   «         ¦   «         �Z= e#e=�j>        ¦  «         e/�d|�d}¦  «        dd�d~œ�d„¦   «         ¦   «         �Z> e#e=�j?        ¦  «         e/¦   «         �dµd�d€œ�d�„¦   «         ¦   «         �Z? e#e=�j@        jn        e=�j@        jr        g¦  «         e/¦   «         de�jA        dd�d‚œdre'dReejd                 �dƒe�jB        däeej½                 dåe@f
�d„„¦   «         ¦   «         �ZC e#e=�j@        �jD        g¦  «        de�jA        dd�d‚œdqe'dre'dReejd                 �dƒe�jB        däeej½                 dåe@f�d…„¦   «         �ZE e#e%¦  «        �d†„ ¦   «         �ZF e#e=�jG        ¦  «        e=�jG        jn         �                    e6j‘        ¦  «         e/¦   «         dudude>jg        jh        fdAe!dTe!dke'�d‡e'dEee!         dPeHde!f�dˆ„¦   «         ¦   «         ¦   «         �ZG e#e=�jH        ¦  «        e=�jH        jn         �                    e6j‘        ¦  «         e/d‚�d‰¦  «        dAe!dTe!dPeHde`e!e!f         f�dŠ„¦   «         ¦   «         ¦   «         �ZH e#e=�jI        jn        ¦  «        	 	 �d¶dd�d‹œ�dŒe!�d�e!d/e!�dŽeM�d�e@�d�ee!         d)eeM         de`e!e!f         f�d‘„¦   «         �ZJ�d’„ �ZK e#e=�jL        g¦  «         e/d¬œ¦  «        eD�d«�d“„¦   «         ¦   «         ¦   «         �ZL e#e=�jM        ¦  «         e/¦   «         �d”„ ¦   «         ¦   «         �ZM e#e=�jN        ¦  «        �d•„ ¦   «         �ZN e#e=�jO        jn        e=�jO        jr        g¦  «        dd�d–œd1e!dReejd                 d­ee!         de!f�d—„¦   «         �ZP e#e=�jQ        jn        e=�jQ        �jR        g¦  «        �d¥d1e!deeH         f�d˜„¦   «         �ZS e#ej<        j=        �jT        ¦  «        �dª�d™„¦   «         �ZT e#e=�jU        ¦  «         e/¦   «         dd�dšœ�d›„¦   «         ¦   «         �ZU e#e=�jV        jn        ¦  «        d�dœœd1ej!        �d	eejØ                 dej!        f�d�„¦   «         �ZVd�džœ�dŸ„�ZWdd�dšœ�d „�ZX e#e=�jY        ¦  «         e/¦   «         �d¡„ ¦   «         ¦   «         �ZY e#e=�jZ        ¦  «        �d¥�d¢„¦   «         �ZZ �eKe=�j[        e=�j\        ¦  «          �eKe=�j]        e=j¤        ¦  «          �eKe=�j^        e=j¦        ¦  «          �eKe=�j_        e=�jL        ¦  «          �eKe=�j`        e=jO        ¦  «          �eKe=�ja        e=�jb        ¦  «          �eKe=�jc        e=jV        ¦  «          �eKe=�jd        e=�je        ¦  «          �eKe=�jf        e=jS        ¦  «          �eKe=�jg        e=�jh        ¦  «          �eKe=�ji        e=�jj        ¦  «          �eKe=�jk        e=�jl        ¦  «          �eKe=�jm        e=�jn        ¦  «          �eKe=�jo        e=�jp        ¦  «          �eKe=�jq        e=�jr        ¦  «          �eKe=�js        e=�jt        ¦  «          �eKe=�ju        e=�jv        ¦  «          �eKe=�jw        e=�jx        ¦  «          �eKe=�jy        e=�jz        ¦  «          �eKe=�j{        e=�j|        ¦  «          �eKe=�j}        e=�j~        ¦  «          �eKe=�j        e=�j€        ¦  «          �eKe=�j�        e=�j‚        ¦  «          �eKe=�jƒ        e=�j„        ¦  «          �eKe=�j…        e=j\        ¦  «         dS (·  é    N)ÚIterable)ÚEnum)ÚpartialÚreduce)ÚchainÚproduct)ÚAnyÚCallableÚcastÚOptionalÚUnion)Ú	sym_floatÚsym_intÚTensor©Úregister_decomposition)Ú	out_dtype)ÚIntLikeÚ
NumberTypeÚsuggest_memory_formatÚ
TensorLikeÚTensorSequenceType)Ú_maybe_convert_to_dtypeÚ_maybe_resize_outÚ_safe_copy_outÚout_wrapper)Ú_pytree)Útree_mapÚ__all__c                   ó   — e Zd ZdZdZdZdS )Ú	Reductionr   é   é   N)Ú__name__Ú
__module__Ú__qualname__ÚNONEÚMEANÚSUM© ó    úd/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/torch/_decomp/decompositions.pyr!   r!   0   s   € € € € € Ø€DØ€DØ
€C€C€Cr+   r!   FÚfÚtype_promotionÚcompute_dtype_onlyÚinclude_non_tensor_argsc                 óR   ‡ ‡‡‡— t          j        ‰ ¦  «        ˆˆ ˆˆfd„¦   «         }|S )Nc                  ó4  •‡‡‡— ‰rt           t          j        j        fnt           fŠˆfd„t	          j        | i |¤ŽD ¦   «         }t          j        |d‰iŽ\  ŠŠˆfd„}ˆfd„} ‰
t          || ¦  «        i t          ||¦  «        ¤Ž}‰	r|S t          ||¦  «        S )Nc                 ó4   •— g | ]}t          |‰¦  «        ¯|‘ŒS r*   )Ú
isinstance)Ú.0ÚxÚallowed_typess     €r,   ú
<listcomp>z-type_casts.<locals>.inner.<locals>.<listcomp>D   s9   ø€ ð 
ð 
ð 
àÝ˜!˜]Ñ+Ô+ð
Øð
ð 
ð 
r+   Útype_promotion_kindc                 ó\   •— t          | t          ¦  «        r|                      ‰¦  «        S | S ©N©r4   r   Úto)r6   Úcomputation_dtypes    €r,   Úincrease_precz0type_casts.<locals>.inner.<locals>.increase_precN   s-   ø€ Ý˜!�VÑ$Ô$ð Ø—t’tÐ-Ñ.Ô.Ð.à�r+   c                 ó\   •— t          | t          ¦  «        r|                      ‰¦  «        S | S r;   r<   )r6   Úresult_dtypes    €r,   Údecrease_precz0type_casts.<locals>.inner.<locals>.decrease_precT   s,   ø€ Ý˜!�VÑ$Ô$ð Ø—t’t˜LÑ)Ô)Ð)à�r+   )	r   ÚtorchÚtypesÚ_NumberÚpytreeÚarg_tree_leavesÚutilsÚelementwise_dtypesr   )ÚargsÚkwargsÚ	flat_argsr?   rB   Úrr7   r>   rA   r/   r-   r0   r.   s         @@@€€€€r,   Úinnerztype_casts.<locals>.inner?   sý   øøøø€ ð .EÐS�V•U”[Ô(Ð)Ð)Í6È)ð 	ð
ð 
ð 
ð 
åÔ+¨TÐ<°VÐ<Ð<ð
ñ 
ô 
ˆ	õ
 +0Ô*BØð+
Ø,:ð+
ð +
Ñ'Ð˜<ð
	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð ˆA�x˜ tÑ,Ô,ÐPµ¸ÈÑ0OÔ0OÐPÐPˆØð 	.ØˆHå˜M¨1Ñ-Ô-Ð-r+   )Ú	functoolsÚwraps)r-   r.   r/   r0   rN   s   ```` r,   Ú
type_castsrQ   9   sM   øøøø€ õ „_�QÑÔð.ð .ð .ð .ð .ð .ð .ñ Ôð.ð@ €Lr+   T)r.   r/   )r.   )r.   r0   r6   ÚdimÚreturnc                 ó~   — t          ||                      ¦   «         z
  ¦  «        D ]}|                      d¦  «        } Œ| S ©Néÿÿÿÿ)ÚrangerR   Ú	unsqueeze)r6   rR   Ú_s      r,   Ú_unsqueeze_to_dimrZ   v   s;   € Ý�3˜Ÿš™œ‘=Ñ!Ô!ð ð ˆØ�KŠK˜‰OŒOˆˆØ€Hr+   Ú
grad_inputÚout_gradÚyc                 ó<   — | d||z  z
                        ¦   «         z  S ©Nr"   ©Úconj_physical©r\   r]   s     r,   Útanh_backwardrc   |   s#   € ð �q˜1˜q™5‘y×/Ò/Ñ1Ô1Ñ1Ð1r+   c                 ó<   — | |d|z
  z                        ¦   «         z  S r_   r`   rb   s     r,   Úsigmoid_backwardre   ƒ   s#   € ð �q˜A ™E‘{×1Ò1Ñ3Ô3Ñ3Ð3r+   ÚbetaÚ	thresholdc                 ó|   — ||z                        ¦   «         }t          j        ||z  |k    | | |z  |dz   z  ¦  «        S ©Nç      ð?)ÚexprC   Úwhere)r\   r6   rf   rg   Úzs        r,   Úsoftplus_backwardrn   Š   sA   € ð 
ˆT‰�ŠÑÔ€AÝŒ;˜˜D™ IÒ-¨x¸ÀA¹ÈÈSÉÑ9QÑRÔRÐRr+   Úgrad_outputÚalphaÚscaleÚinput_scaleÚ	is_resultÚself_or_resultc                 óÚ   — ||z  }|}|}|r&t          j        |dk    | |z  ||z   z  | |z  ¦  «        S t          j        |dk    | |z  |z  t          j        ||z  ¦  «        z  | |z  ¦  «        S ©Nr   )rC   rl   rk   )	ro   rp   rq   rr   rs   rt   ÚnegcoefÚposcoefÚ
negiptcoefs	            r,   Úelu_backwardrz   ’   sœ   € ð �e‰m€GØ€GØ€JØð 
ÝŒ{Ø˜aÒØ˜*Ñ$¨¸Ñ(@ÑAØ˜'Ñ!ñ
ô 
ð 	
õ Œ{Ø˜aÒØ˜*Ñ$ wÑ.µ´¸>ÈJÑ;VÑ1WÔ1WÑWØ˜'Ñ!ñ
ô 
ð 	
r+   c                 ó,   — t          j        | |¦  «        S r;   )rC   Ú	full_like©ÚselfÚvalues     r,   Úfill_scalarr€   ®   s   € åŒ?˜4 Ñ'Ô'Ð'r+   r   c                 ó–   ‡— t          j        ‰                     ¦   «         dk    ˆfd„¦  «         t                               | ‰¦  «        S )Nr   c                  ó4   •— d‰                       ¦   «         › d�S )Nz@fill only supports 0-dimension value tensor but got tensor with z dimensions©rR   )r   s   €r,   ú<lambda>zfill_tensor.<locals>.<lambda>·   s    ø€ ÐkÐSX×S\ÒS\ÑS^ÔS^ÐkÐkÐk€ r+   )rC   Ú_checkrR   ÚatenÚcopyr}   s    `r,   Úfill_tensorrˆ   ³   sI   ø€ å	„LØ�	Š	‰Œ�qÒØkÐkÐkÐkñô ð õ �9Š9�T˜5Ñ!Ô!Ð!r+   r~   c                 ób   — t          j        t          j        | dz   d¬¦  «        d¬¦  «        dz  S ©Né   r   ©Úminé   ©Úmax©rC   Úclamp©r~   s    r,   Úhardsigmoidr”   ¼   s1   € õ Œ;•u”{ 4¨!¡8°Ð3Ñ3Ô3¸Ð;Ñ;Ô;¸aÑ?Ð?r+   c                 óJ   — t          j        |dk    |dk     z  | dz  d¦  «        S )Ng      Àg      @gUUUUUUÅ?ç        ©rC   rl   ©ro   r~   s     r,   Úhardsigmoid_backwardr™   Ã   s3   € õ Œ;Ø	�Š˜ šÑ$Ø�yÑ!Øñô ð r+   Úmin_valÚmax_valc                 óD   — t          j        ||k    ||k    z  d| ¦  «        S )Nr–   r—   )ro   r~   rš   r›   s       r,   Úhardtanh_backwardr�   Î   s%   € õ
 Œ;˜ š¨D°GªOÑ<¸cÀ;ÑOÔOÐOr+   c                 óh   — | t          j        t          j        | dz   d¬¦  «        d¬¦  «        z  dz  S rŠ   r‘   r“   s    r,   Ú	hardswishrŸ   Ö   s6   € ð •%”+�eœk¨$°©(¸Ð:Ñ:Ô:ÀÐBÑBÔBÑBÀQÑFÐFr+   c           
      óx   — t          j        |dk    dt          j        |dk     | |dz  dz   z  | ¦  «        ¦  «        S )Néýÿÿÿr–   r‹   ç      à?r—   r˜   s     r,   Úhardswish_backwardr£   Ý   sE   € õ Œ;Ø�Š
ØÝŒ�D˜1’H˜k¨d°Q©h¸#Ñ-=Ñ>ÀÑLÔLñô ð r+   c                 ó6   — t          j        ||k    d| ¦  «        S rv   r—   )ro   r~   rg   s      r,   Úthreshold_backwardr¥   è   s   € õ Œ;�t˜yÒ(¨!¨[Ñ9Ô9Ð9r+   Únegative_slopeÚself_is_resultc                 ó<   — t          j        |dk    | | |z  ¦  «        S rv   r—   )ro   r~   r¦   r§   s       r,   Úleaky_relu_backwardr©   î   s!   € õ Œ;�t˜a’x ¨k¸NÑ.JÑKÔKÐKr+   ÚnoneÚgradÚapproximatec                 óˆ  — d}d}d}|dk    rh||z  dz  }d}||z  }||z  }	||||	z  z   z  }
t          j        |
¦  «        }d|z  }d|z   }d|z  }d||z  z
  }|dd|z  |z  z   z  }||z  |z  }| ||z   z  S |}||z  dz  }ddt          j        ||z  ¦  «        z   z  }|t          j        ||z  d	z  ¦  «        z  }| |||z  z   z  S )
NgÍ;fž ö?gÍ;fž æ?gm›BP×ò?Útanhr¢   g÷Hmâä¦?r"   r‹   g      à¿)rC   r®   Úerfrk   )r«   r~   r¬   ÚM_SQRT2Ú	M_SQRT1_2Ú
M_2_SQRTPIÚkBetaÚkKappaÚx_sqÚx_cuberN   Ú
tanh_innerÚleftÚrightÚleft_derivativeÚtanh_derivativeÚinner_derivativeÚright_derivativeÚkAlphaÚcdfÚpdfs                        r,   Úgelu_backwardrÁ   ÷   s-  € ð %€GØ&€IØ'€JØ�fÒÐØ˜*Ñ$ sÑ*ˆØˆØ�d‰{ˆØ˜‘ˆØ˜ ¨¡Ñ/Ñ0ˆÝ”Z Ñ&Ô&ˆ
à�T‰zˆØ�J‘ˆà ™+ˆà˜j¨:Ñ5Ñ5ˆØ  A¨¨F©
°TÑ(9Ñ$9Ñ:ÐØ /Ñ1Ð4DÑDÐà�Ð)9Ñ9Ñ:Ð:àˆØ˜YÑ&¨Ñ,ˆØ�Q�œ 4¨&¡=Ñ1Ô1Ñ1Ñ2ˆØ•e”i  t¡¨dÑ 2Ñ3Ô3Ñ3ˆØ�s˜T C™ZÑ'Ñ(Ð(r+   Úinputc                 ó¢   — t          j        t          j        |¦  «        ¦  «        }t          j        |¦  «        }||z  d||z  z
  z  }| ||z   z  S r_   )rC   r®   ÚFÚsoftplusÚsigmoid)ro   rÂ   Úinput_tanh_softplusÚinput_sigmoidÚouts        r,   Úmish_backwardrÊ     sY   € õ  œ*¥Q¤Z°Ñ%6Ô%6Ñ7Ô7ÐÝ”M %Ñ(Ô(€MØ
�-Ñ
 1Ð':Ð=PÑ'PÑ#PÑ
Q€CØÐ-°Ñ3Ñ4Ð4r+   c                 ó0   — | t          j        | ¦  «        z  S r;   )rC   rÆ   r“   s    r,   ÚsilurÌ   !  s   € ð •%”- Ñ%Ô%Ñ%Ð%r+   c                 óZ   — ddt          j        | ¦  «        z   z  }| |z  d|d|z
  z  z   z  S r_   )rC   rk   )ro   r~   rÆ   s      r,   Úsilu_backwardrÎ   (  s=   € ð �1•u”y $ Ñ'Ô'Ñ'Ñ(€GØ˜Ñ  A¨°°G±Ñ(<Ñ$<Ñ=Ð=r+   Úweightc                 ó<   — t          j        | dk    | || z  ¦  «        S rv   r—   )r~   rÏ   s     r,   Ú_prelu_kernelrÑ   0  s   € åŒ;�t˜a’x  v°¡}Ñ5Ô5Ð5r+   c                 ó~   — t          j        |dk    | || z  ¦  «        }t          j        |dk    d|| z  ¦  «        }||fS )Nr   r–   r—   )ro   r~   rÏ   Ú
input_gradÚweight_grads        r,   Ú_prelu_kernel_backwardrÕ   5  sG   € õ ”˜T AšX {°F¸[Ñ4HÑIÔI€JÝ”+˜d Qšh¨¨T°KÑ-?Ñ@Ô@€KØ˜Ð$Ð$r+   ÚnoiseÚlowerÚupperÚtrainingc                 óŒ   — |r||z
  dk    r|                       |¦  «        S ||z   dz  }t                               | |||¦  «        S )Ng�íµ ÷Æ°>r#   )Úmulr†   r©   )ro   r~   rÖ   r×   rØ   rÙ   r§   r¦   s           r,   Úrrelu_with_noise_backwardrÜ   @  s[   € ð ð 
�E˜E‘M DÒ(Ð(Ø�Š˜uÑ%Ô%Ð%à %™-¨1Ñ,ˆÝ×'Ò'Ø˜˜~¨~ñ
ô 
ð 	
r+   Úbufferc                 óÖ   — |dk     }t          j        |dd¦  «        }t          j        |dd¦  «        }t          j        t          j        |¦  «         ¦  «        }| |||d|z   z  z  z
  z  S )Nr   r"   rV   )rC   rl   rk   Úabs)ro   r~   rÝ   Úin_negativeÚ	max_derivÚsignrm   s          r,   Úlog_sigmoid_backwardrã   U  sj   € ð ˜’(€KÝ”˜K¨¨AÑ.Ô.€IÝŒ;�{ A rÑ*Ô*€DÝŒ	•5”9˜T‘?”?Ð"Ñ#Ô#€AØ˜) d¨a°1°q±5©kÑ&:Ñ:Ñ;Ð;r+   ÚlossÚ	reductionc                 óª   — |t           j        j        k    rt          j        | ¦  «        S |t           j        j        k    rt          j        | ¦  «        S | S r;   )r!   r(   r   rC   Úmeanr)   Úsum)rä   rå   s     r,   Úapply_loss_reductionré   b  sE   € Ø•I”NÔ(Ò(Ð(ÝŒz˜$ÑÔÐØ	•i”mÔ)Ò	)Ð	)ÝŒy˜‰ŒÐàˆr+   Údtypec                 ó®   — | t           j        k    rt           j        S | t           j        k    rt           j        S | t           j        k    rt           j        S d S r;   )rC   Ú	complex32Úfloat16Ú	complex64Úfloat32Ú
complex128Úfloat64©rê   s    r,   Úto_real_dtyperó   k  sJ   € Ø•”ÒÐÝŒ}ÐØ	•%”/Ò	!Ð	!ÝŒ}ÐØ	•%Ô"Ò	"Ð	"ÝŒ}Ðð 
#Ð	"r+   Útargetc                 ó2   — | |z
  dz  }t          ||¦  «        S )Nr#   )ré   )r~   rô   rå   rä   s       r,   Úmse_lossrö   z  s"   € ð �6‰M˜aÑ€DÝ  iÑ0Ô0Ð0r+   c                 ót   — |t           j        j        k    rd|                     ¦   «         z  nd}|||z
  z  | z  S )Nç       @)r!   r(   r   Únumel)ro   rÂ   rô   rå   Únorms        r,   Úmse_loss_backwardrû   „  s>   € ð #,­y¬~Ô/CÒ"CÐ"Cˆ3�—’‘”ÑÐÈ€DØ�5˜6‘>Ñ" [Ñ0Ð0r+   c                 óö   — t          j        | ||¬¦  «        }|                      t          d¦  «        ¦  «        }t          j        ||d¬¦  «        }t          j        |¦  «        }t          j        |||¦  «        S )N)rR   rê   z-infT©rR   Úkeepdim)rC   ÚsoftmaxÚeqÚfloatÚallÚ
zeros_likerl   )r~   rR   rê   rÉ   ÚmaskedÚmasked_rowsÚzeross          r,   Úsafe_softmaxr  Ž  si   € å
Œ-˜ #¨UÐ
3Ñ
3Ô
3€CØ�WŠW•U˜6‘]”]Ñ#Ô#€FÝ”)˜F¨°TÐ:Ñ:Ô:€KÝÔ˜SÑ!Ô!€EÝŒ;�{ E¨3Ñ/Ô/Ð/r+   rj   c                 ó¢   — | |z
                        ¦   «         }t          j        ||k     d|dz  z  |z  |d|z  z
  ¦  «        }t          ||¦  «        S )Nr¢   r#   )rß   rC   rl   ré   )r~   rô   rå   rf   rä   s        r,   Úsmooth_l1_lossr	  —  sV   € ð �6‰M×ÒÑ Ô €DÝŒ;�t˜d’{ C¨$°©'¡M°DÑ$8¸$ÀÀtÁÑ:KÑLÔL€DÝ  iÑ0Ô0Ð0r+   c                 ó  — |t           j        j        k    rd|                     ¦   «         z  nd}||z
  }t	          j        |¦  «        }|| z  }t	          j        ||k     ||z  |z  |t	          j        |¦  «        z  ¦  «        S ri   )r!   r(   r   rù   rC   rß   rl   râ   )	ro   r~   rô   rå   rf   rú   r6   Úabs_xÚ	norm_grads	            r,   Úsmooth_l1_loss_backwardr  ¥  s�   € ð
 "+­i¬nÔ.BÒ!BÐ!Bˆ3�—’‘”ÑÐÈ€DØˆv‰€AÝŒI�a‰LŒL€EØ�{Ñ"€IÝŒ;Ø�ŠØ�A‰˜ÑØ•E”J˜q‘M”MÑ!ñô ð r+   c                 óv   — t          | ||||¦  «        }t          ||j        ¦  «         t          ||d¬¦  «        S ©NT©Ú	copy_fromÚcopy_toÚexact_dtype)r  r   Úshaper   )ro   r~   rô   rå   rf   r[   Úresults          r,   Úsmooth_l1_loss_backward_outr  µ  s@   € õ % [°$¸À	È4ÑPÔP€FÝ�j &¤,Ñ/Ô/Ð/Ý F°JÈDÐQÑQÔQÐQr+   Údeltac           
      óô   — |t           j        j        k    rd|                     ¦   «         z  nd}||z
  }t	          j        || k     | | z  |z  t	          j        ||k    || z  |z  ||z  | z  ¦  «        ¦  «        S ri   )r!   r(   r   rù   rC   rl   )ro   r~   rô   rå   r  rú   r6   s          r,   Úhuber_loss_backwardr  Ä  s‡   € ð
 "+­i¬nÔ.BÒ!BÐ!Bˆ3�—’‘”ÑÐÈ€DØˆv‰€AÝŒ;Ø	ˆUˆFŠ
Ø	ˆ�Ñ˜eÑ#ÝŒ�A˜’I˜t kÑ1°EÑ9¸4À!¹8ÀkÑ;QÑRÔRñô ð r+   c                 óv   — t          | ||||¦  «        }t          ||j        ¦  «         t          ||d¬¦  «        S r  )r  r   r  r   )ro   r~   rô   rå   r  r[   r  s          r,   Úhuber_loss_backward_outr  Ó  s@   € õ ! ¨d°F¸IÀuÑMÔM€FÝ�j &¤,Ñ/Ô/Ð/Ý F°JÈDÐQÑQÔQÐQr+   Úignore_indexÚtotal_weightc                 ó   — |                      ¦   «         dk     rdnd}|t          j        j        k    r| |z  } |                     |¦  «        }t          j        ||k    |d¦  «        }t          j        |¦  «        }	t          j        |	||d¦  «        }	|	                      ¦   «         |                       ¦   «         cxk    rdk    rn n|                      |¦  «        } |�Ud„ t          |                      ¦   «         ¦  «        D ¦   «         }
|j
        d         |
|<   |                     |
¦  «        }| |z  } t          j        ||k    | d¦  «        } |	| z  S )Nr#   r   r"   g      ð¿c                 ó   — g | ]}d ‘ŒS ©r"   r*   ©r5   rY   s     r,   r8   z&_nll_loss_backward.<locals>.<listcomp>ø  s   € Ð2Ð2Ð2˜1�QÐ2Ð2Ð2r+   )rR   r!   r(   r   rX   rC   rl   r  ÚscatterrW   r  Úreshape)ro   r~   rô   rÏ   rå   r  r  Úchannel_dimÚsafe_targetr[   Ú	new_shapes              r,   Ú_nll_loss_backwardr'  â  sG  € ð —x’x‘z”z A’~�~�!�!¨1€KØ•I”NÔ(Ò(Ð(Ø! LÑ0ˆà×Ò˜kÑ*Ô*€FÝ”+˜f¨Ò4°f¸aÑ@Ô@€KÝÔ! $Ñ'Ô'€JÝ”˜z¨;¸ÀTÑJÔJ€Jà‡~‚~ÑÔ˜+Ÿ/š/Ñ+Ô+Ð/Ð/Ò/Ð/¨aÒ/Ð/Ð/Ð/Ð/Ø!×+Ò+¨KÑ8Ô8ˆàÐØ2Ð2¥ d§h¢h¡j¤jÑ 1Ô 1Ð2Ñ2Ô2ˆ	Ø!'¤¨a¤ˆ	�+ÑØ—’ 	Ñ*Ô*ˆØ! FÑ*ˆå”+˜f¨Ò4°kÀ1ÑEÔE€Kà˜Ñ#Ð#r+   c                 óÔ  — |                      ¦   «         dk    s
J d¦   «         ‚t          j        |                      ¦   «         |¦  «        }|                     |¦  «        }|dz  dk    sJ d|› d|› �¦   «         ‚|dz  }|                     |d|¦  «        }|                     |||¦  «        }t          j        |¦  «        }d|z
  |z  |z  | z  }	|| z  }t          j        ||	g|¬¦  «        S )Nr   z*glu does not support 0-dimensional tensorsr#   z.Halving dimension must be even, but dimension z	 is size rj   rƒ   )rR   rH   Úcanonicalize_dimÚsizeÚnarrowrC   rÆ   Úcat)
ro   r~   rR   Úwrap_dimÚnInÚ	inputSizeÚ	firstHalfÚ
secondHalfÚgradInputFirstHalfÚgradInputSecondHalfs
             r,   Úglu_backwardr4    s  € ð �8Š8‰:Œ:˜Š>ˆ>ˆ>ÐG‰>Œ>ˆ>ÝÔ% d§h¢h¡j¤j°#Ñ6Ô6€HØ
�)Š)�HÑ
Ô
€CØ�‰7�aŠ<ˆ<ˆ<ØQ¸ÐQÐQÈCÐQÐQñ Œ<ˆ<ð �q‘€IØ—’˜H a¨Ñ3Ô3€IØ—’˜X y°)Ñ<Ô<€JÝœ zÑ2Ô2Ðà	Ð!Ñ	!Ð%7Ñ7¸)ÑCÀkÑQð ð ,¨kÑ9ÐÝŒ9Ð(Ð*=Ð>ÀHÐMÑMÔMÐMr+   c           	      ó6  — d|                      ¦   «         cxk    rdk    sn J d¦   «         ‚|                      ¦   «         dk    s
J d¦   «         ‚|                      ¦   «         dk    o|                      ¦   «         dk    }|s7|j        d         |j        d         k    sJ d|j        › d|j        › d�¦   «         ‚|                     ¦   «         dk    s)J d	|j        › d
|                     ¦   «         › d�f¦   «         ‚|�-|                     ¦   «         |j        d         k    s
J d¦   «         ‚|t          j        j        k    rˆ|                      ¦   «         dk    rp|                       ¦   «         dk    r| j        d         |j        d         k    s;J d|j        d         › d|                       ¦   «         › d| j        d         › �¦   «         ‚nB|                       ¦   «         dk    r|                      ¦   «         dk    sJ d| j        › �¦   «         ‚t          | ||||||¦  «        S )Nr   r#   úinput tensor should be 1D or 2Dr"   ú;0D or 1D target tensor expected, multi-target not supportedúsize mismatch (got input: ú
, target: ú)ú:expected total_weight to be a single element tensor, got: z (z
 elements)rV   z<weight tensor should be defined either for all or no classesz7Expected a tensor of dimension 1 and tensor.size[0] == z but got: dimension z and tensor.size[0] == z7Expected a single element grad_output tensor, but got: )rR   r  rù   r!   r'   r   r'  )ro   r~   rô   rÏ   rå   r  r  Úno_batch_dims           r,   Únll_loss_backwardr=    sc  € ð �—’‘
”
ÐÐÒÐ˜aÒÐÐÐÐÐ!BÑÔÐØ�:Š:‰<Œ<˜1ÒÐÐØEñ ÔÐð —8’8‘:”: ’?Ð8 v§z¢z¡|¤|°qÒ'8€LØð ˜DœJ qœM¨V¬\¸!¬_Ò<Ð<Ð<ØJ T¤ZÐJÐJ¸6¼<ÐJÐJÐJñ =Ô<Ð<ð ×ÒÑÔ 1Ò$Ð$Ð$ØDØÔÐAÐA ×!3Ò!3Ñ!5Ô!5ÐAÐAÐAð'Ñ$Ô$Ð$ð
 ˆ>˜VŸ\š\™^œ^¨t¬z¸"¬~Ò=Ð=Ð=ØFñ >Ô=Ð=ð •I”NÔ(Ò(Ð(¨T¯XªX©Z¬Z¸1ª_¨_Ø�ŠÑ Ô  AÒ%Ð%¨+Ô*;¸AÔ*>À$Ä*ÈQÄ-Ò*OÐ*OÐ*Oð_ÀdÄjÐQRÄmð _ð _Ø)ŸošoÑ/Ô/ð_ð _ØHSÔHYÐZ[ÔH\ð_ð _ñ +PÔ*OÐ*OÐ*Oð
 �ŠÑ Ô  AÒ%Ð%¨+×*;Ò*;Ñ*=Ô*=ÀÒ*BÐ*BÐ*BØYÀkÔFWÐYÐYñ +CÔ*BÐ*Bõ Ø�T˜6 6¨9°lÀLñô ð r+   c           	      ód  — |                      ¦   «         dk    sJ d|                      ¦   «         › �¦   «         ‚|                      ¦   «         dk    sJ d|                      ¦   «         › �¦   «         ‚|j        d         |j        d         k    r8|j        d         |j        d         k    r|j        d         |j        d         k    sJ d|j        › d	|j        › �¦   «         ‚|                     ¦   «         dk    s(J d
|j        › d|                     ¦   «         › d�¦   «         ‚t          | ||||||¦  «        S )Né   zSonly batches of spatial inputs supported (4D tensors), but got input of dimension: r‹   zUonly batches of spatial targets supported (3D tensors) but got targets of dimension: r   r#   r"   r8  r9  r;  z ( z, elements))rR   r  rù   r'  )ro   r~   rô   rÏ   rå   r  r  s          r,   Únll_loss2d_backwardr@  C  sb  € ð �8Š8‰:Œ:˜Š?ˆ?ˆ?ØjÐ^b×^fÒ^fÑ^hÔ^hÐjÐjñ Œ?ˆ?ð �:Š:‰<Œ<˜1ÒÐÐØnÐ`f×`jÒ`jÑ`lÔ`lÐnÐnñ ÔÐð
 	Œ
�1Œ˜œ aœÒ(Ð(ØŒJ�qŒM˜Vœ\¨!œ_Ò,Ð,ØŒJ�qŒM˜Vœ\¨!œ_Ò,Ð,Ð,ØH D¤JÐHÐH¸&¼,ÐHÐHñ -Ô,Ð,ð ×ÒÑÔ 1Ò$Ð$Ð$ð	IØÔ"ð	Ið 	IØ'3×'9Ò'9Ñ';Ô';ð	Ið 	Ið 	Iñ %Ô$Ð$õ
 Ø�T˜6 6¨9°lÀLñô ð r+   c           	      ó2  — |dz
  t          j        t          j        |  ¦  «        |                      dd¦  «        ¦  «        z  |t          j        t          j        | ¦  «        |                      dd¦  «        ¦  «        z  z
  }|�||z  }t          ||¦  «        S )Nr"   r*   iœÿÿÿ)rC   ÚmaximumÚlog1pÚnew_fullÚlogré   )r~   rô   rÏ   rå   rä   s        r,   Úbinary_cross_entropyrF  f  s�   € ð �Q‰J�%œ-ÝŒ�T�EÑÔ˜DŸMšM¨"¨dÑ3Ô3ñô ñ à•”�uœy¨™œ°·²¸bÀ$Ñ0GÔ0GÑHÔHÑHñI€Dð ÐØ�f‰}ˆÝ  iÑ0Ô0Ð0r+   c                 óº   — d}| ||z
  z  t          j        |d|z
  z  |¬¦  «        z  }|�||z  }|t          j        j        k    r||                     ¦   «         z  }|S )Ngê-�™—q=r"   rŒ   )rC   r’   r!   r(   r   rù   )ro   r~   rô   rÏ   rå   ÚEPSILONr  s          r,   Úbinary_cross_entropy_backwardrI  |  sk   € ð €GØ˜D 6™MÑ*­U¬[¸ÀÀTÁÑ9JÐPWÐ-XÑ-XÔ-XÑX€FØÐØ˜&‘ˆØ•I”NÔ(Ò(Ð(Ø˜$Ÿ*š*™,œ,Ñ&ˆØ€Mr+   c                 óv   — t          j        t          j        |  |z  ¦  «        ¦  «        }t          ||¦  «        S r;   )rC   rC  rk   ré   )rÂ   rô   rå   rä   s       r,   Úsoft_margin_lossrK  �  s3   € õ Œ;•u”y % ¨&¡Ñ1Ô1Ñ2Ô2€DÝ  iÑ0Ô0Ð0r+   c                 óž   — || z  t          j        ||z  ¦  «        dz
  z  }|t          j        j        k    r||                     ¦   «         z  }|S r_   )rC   rÆ   r!   r(   r   rù   )ro   r~   rô   rå   r[   s        r,   Úsoft_margin_loss_backwardrM  ›  sN   € ð ˜+Ñ%­¬°vÀ±}Ñ)EÔ)EÈÑ)IÑJ€JØ•I”NÔ(Ò(Ð(Ø $§*¢*¡,¤,Ñ.ˆ
ØÐr+   r#   ÚotherÚpc                 ó@   — t                                | |z
  |¬¦  «        S )N)rO  )r†   rú   )rÂ   rN  rO  s      r,   ÚdistrQ  ª  s   € õ �9Š9�U˜U‘] aˆ9Ñ(Ô(Ð(r+   Úx1Úx2c                 ó.  — |                       d¦  «                             dd¦  «        }t          j        |t          j        ¬¦  «        }|                      d¦  «                             dd¦  «        }t          j        |t          j        ¬¦  «        }t          j        |                      d¦  «        ||gd¦  «        }t          j        |||gd¦  «        }|                     |j        ¦  «        }| 	                    d¦  «         
                    ¦   «         S )Nr#   rV   T©Úmemory_formatéþÿÿÿr   )Úpowrè   rC   Ú	ones_likeÚcontiguous_formatr,  rÛ   ÚmatmulÚmTÚ	clamp_minÚsqrt)	rR  rS  Úx1_normÚx1_padÚx2_normÚx2_padÚx1_Úx2_r  s	            r,   Ú_euclidean_distre  °  sÙ   € ð �fŠf�Q‰iŒi�mŠm˜B Ñ%Ô%€GÝŒ_˜WµEÔ4KÐLÑLÔL€FØ�fŠf�Q‰iŒi�mŠm˜B Ñ%Ô%€GÝŒ_˜WµEÔ4KÐLÑLÔL€FÝ
Œ)�R—V’V˜B‘Z”Z ¨&Ð1°2Ñ
6Ô
6€CÝ
Œ)�R˜ Ð)¨2Ñ
.Ô
.€CØ�ZŠZ˜œÑÔ€FØ×Ò˜AÑÔ×#Ò#Ñ%Ô%Ð%r+   Úinput_sizesÚstartÚendÚstepc                 ó^   — |                       |¦  «        }t          j        || ||||¦  «        S r;   )Ú	new_zerosrC   Úslice_scatter)ro   rf  rR   rg  rh  ri  r[   s          r,   Úslice_backwardrm  ½  s2   € ð ×&Ò& {Ñ3Ô3€JÝÔ˜z¨;¸¸UÀCÈÑNÔNÐNr+   r"   c                 óÔ  — ddl m}m} |                      ¦   «         }|dk    rt	          d¦  «        ‚t          j        |                      ¦   «         |¦  «        }t          |                      ¦   «         ¦  «        }t          |  	                    ¦   «         ¦  «        }	|dk    rt	          d¦  «        ‚|�|nd}
|�|nt          j        } ||
dk     ¦  «        r|
||         z  }
 ||dk     ¦  «        r|||         z  } ||
dk     ¦  «        rd}
n ||
||         k    ¦  «        r||         }
 ||t          j        k    ¦  «        r	||         }n/ |||
k     ¦  «        r|
}n ||||         k    ¦  «        r||         }|                      ¦   «         |
|	|         z  z   }||
z
  }||z   dz
  |z  ||<   |	|xx         |z  cc<   | j        rt          d¦  «        ‚|                      ||	|¦  «        S )Nr   )Úguard_size_obliviousÚstatically_known_truez,slice() cannot be applied to a 0-dim tensor.zslice step must be positiver"   z<Slice decomposition for quantized tensors aren't implemented)Ú%torch.fx.experimental.symbolic_shapesro  rp  rR   ÚRuntimeErrorrH   r)  Úlistr*  ÚstrideÚsysÚmaxsizeÚstorage_offsetÚis_quantizedÚNotImplementedErrorÚ
as_strided)r~   rR   rg  rh  ri  ro  rp  ÚndimÚsizesÚstridesÚ	start_valÚend_valrw  Úlens                 r,   Úslice_forwardr�  Ë  sM  € ðð ð ð ð ð ð ð ð
 �8Š8‰:Œ:€DØˆq‚y€yÝÐIÑJÔJÐJÝ
Ô
  §¢¡¤¨SÑ
1Ô
1€CÝ�—’‘”ÑÔ€EÝ�4—;’;‘=”=Ñ!Ô!€Gàˆq‚y€yÝÐ8Ñ9Ô9Ð9àÐ*��°€IØ�_ˆcˆc­#¬+€GàÐ˜I¨šMÑ*Ô*ð  Ø�U˜3”ZÑˆ	àÐ˜G ašKÑ(Ô(ð Ø�5˜”:ÑˆàÐ˜I¨šMÑ*Ô*ð Øˆ	ˆ	Ø	Ð	˜i¨%°¬*Ò4Ñ	5Ô	5ð Ø˜#”Jˆ	àÐ˜W­¬Ò3Ñ4Ô4ð Ø˜”*ˆˆØ	Ð	˜g¨	Ò1Ñ	2Ô	2ð ØˆˆØ	Ð	˜g¨¨c¬
Ò2Ñ	3Ô	3ð Ø˜”*ˆà×(Ò(Ñ*Ô*¨Y¸À¼Ñ-EÑE€NØ
�IÑ
€CØ˜‘*˜q‘. TÑ)€Eˆ#�JØˆC€L€L„L�DÑ€L€L�LàÔð ?Ý!ØJñ
ô 
ð 	
ð �Š˜u g¨~Ñ>Ô>Ð>r+   c                 óx   ‡— | j         |         Šdt          fˆfd„} ||d‰d¦  «        } |||‰‰¦  «        }||fS )zn
    Normalize start and end such that both are in the range
    [0, x.get_size()[dim]] and start <= end.
    rS   c                 ó^   •— | €|S | dk     r| ‰z   } t          t          | |¦  «        |¦  «        S rv   ©r�   r�   )Úvalr×   rØ   ÚdefaultÚdim_sizes       €r,   Ú
clamp_wrapz(_normalize_start_end.<locals>.clamp_wrap  s7   ø€ Øˆ;ØˆNØ�Š7ˆ7Ø˜‘.ˆCÝ•3�s˜E‘?”? EÑ*Ô*Ð*r+   r   )r  Úint)r6   rR   rg  rh  rˆ  r‡  s        @r,   Ú_normalize_start_endrŠ    sk   ø€ ð Œw�sŒ|€Hð+µ#ð +ð +ð +ð +ð +ð +ð ˆJ�u˜a ¨1Ñ-Ô-€EØ
ˆ*�S˜% ¨8Ñ
4Ô
4€CØ�#ˆ:Ðr+   Úsrcc           	      óš  — t          j        | j        |¦  «        }| j        |         }t	          | |||¦  «        \  }}t          | j        ¦  «        }||z
  |dz
  z   |z  ||<   |                     |¦  «        }|dk    r ||k    r|dk    r|                     ¦   «         S d g|                      ¦   «         z  }t          j
        || j        ¬¦  «        }	|	|z
  |z  ||<   t          j        || j        t          j        ¬¦  «        }
|dk    rt          j        |
|	|k    ¦  «        }
||k    rt          j        |
|	|k     ¦  «        }
|dk    rt          j        |
|	|z
  |z  dk    ¦  «        }
dg|                      ¦   «         z  }d||<   |
                     |¦  «        }
t                                |
t                                ||
|d¦  «        | ¦  «        S )Nr"   r   ©Údevice©rŽ  rê   rV   )rH   r)  r{  r  rŠ  rs  ÚexpandÚclonerR   rC   ÚarangerŽ  ÚonesÚboolÚlogical_andÚviewr†   rl   Ú_unsafe_masked_index)rÂ   r‹  rR   rg  rh  ri  r‡  Úsrc_sizeÚindicesÚidxÚmaskÚ
mask_shapes               r,   rl  rl    s²  € õ Ô
  ¤¨SÑ
1Ô
1€CØŒ{˜3Ô€HÝ% e¨S°%¸Ñ=Ô=�J€Eˆ3å�E”KÑ Ô €HØ˜5‘[ D¨1¡HÑ-°$Ñ6€HˆS�MØ
�*Š*�XÑ
Ô
€Cà�‚z€z�c˜X’o�o¨$°!ª)¨)Ø�yŠy‰{Œ{Ðàˆf�u—y’y‘{”{Ñ"€GÝ
Œ,�x¨¬Ð
5Ñ
5Ô
5€CØ˜%‘K DÑ(€GˆC�LåŒ:�h u¤|½5¼:ÐFÑFÔF€DØ�‚z€zÝÔ   s¨e¢|Ñ4Ô4ˆà
ˆh‚€ÝÔ   s¨S¢yÑ1Ô1ˆàˆq‚y€yÝÔ  ¨¨e©°tÑ';¸qÒ'@ÑAÔAˆà��u—y’y‘{”{Ñ"€JØ€Jˆs�OØ�9Š9�ZÑ Ô €DÝ�:Š:�d�D×5Ò5°c¸4ÀÈ!ÑLÔLÈeÑTÔTÐTr+   Úindexc                 óZ   — |                       |¦  «        }t          j        || ||¦  «        S r;   )rk  rC   Úselect_scatter)ro   rf  rR   r�  r[   s        r,   Úselect_backwardr   E  s.   € ð ×&Ò& {Ñ3Ô3€JÝÔ 
¨K¸¸eÑDÔDÐDr+   ÚoffsetÚdim1Údim2c                 ó\   — |                       |¦  «        }t          j        || |||¦  «        S r;   )rk  rC   Údiagonal_scatter)ro   rf  r¡  r¢  r£  r[   s         r,   Údiagonal_backwardr¦  L  s0   € ð
 ×&Ò& {Ñ3Ô3€JÝÔ! *¨k¸6À4ÈÑNÔNÐNr+   Úinput_dtypec                 óF   — | j         |k    r|                     |¦  «        }|S r;   )rê   r=   )ro   r[   r§  s      r,   Ú_cast_grad_to_input_dtyper©  U  s)   € ð Ô˜KÒ'Ð'Ø—]’] ;Ñ/Ô/ˆ
ØÐr+   Úoutputc                 óŒ   — | |z  }||t          j        ||d¬¦  «        z  z
  }t          | ||¦  «                             ¦   «         S ©NTrý   )rC   rè   r©  Ú
contiguous)ro   rª  rR   r§  Únew_grad_outputr[   s         r,   Ú_softmax_backward_datar¯  ]  sY   € ð " FÑ*€OØ  6­E¬IØ˜S¨$ð-ñ -ô -ñ $ñ €Jõ % [°*¸kÑJÔJ×UÒUÑWÔWÐWr+   c                 ó‚   — | t          j        |¦  «        t          j        | |d¬¦  «        z  z
  }t          | ||¦  «        S r¬  )rC   rk   rè   r©  )ro   rª  rR   r§  r[   s        r,   Ú_log_softmax_backward_datar±  o  sM   € ð �uœy¨Ñ0Ô0µ5´9Ø˜ dð4ñ 4ô 4ñ  ñ €Jõ % [°*¸kÑJÔJÐJr+   c                 ó   — | |dz  z   ||dz
  z  z
  }t          t          j        t          j        |¬¦  «        } |d||¦  «                             d¦  «        } |d||z  |¦  «                             d¦  «        }	||	z   S )z/Utility function to implement im2col and col2imr#   r"   ©rê   rŽ  r   rV   )r   rC   r’  Úint64rX   )
Úinput_dÚkernel_dÚ
dilation_dÚ	padding_dÚstride_drŽ  Úblocks_dÚ	arange_kwÚblocks_d_indicesÚkernel_grids
             r,   Ú _im2col_col2im_indices_along_dimr¾  {  s‘   € ð ˜ Q™Ñ&¨°xÀ!±|Ñ)DÑD€Hå�œ­E¬KÀÐGÑGÔG€Ið !�y  H¨hÑ7Ô7×AÒAÀ!ÑDÔDÐð �)˜A˜x¨*Ñ4°jÑAÔA×KÒKÈBÑOÔO€Kð ˜kÑ)Ð)r+   Úkernel_sizeÚdilationÚpaddingrt  c           
      óš  ‡‡‡‡‡‡— t          j        t          ‰¦  «        dk    d„ ¦  «         t          j        t          ‰¦  «        dk    d„ ¦  «         t          j        t          ‰¦  «        dk    d„ ¦  «         t          j        t          ‰¦  «        dk    d„ ¦  «         dd„} |‰d¦  «          |‰d	¦  «          |‰d
d¬¦  «          |‰d¦  «         | j        Št          ‰¦  «        }t          j        |dv o t	          d„ ‰dd …         D ¦   «         ¦  «        ˆfd„¦  «         t          d„ t          ‰dd …         ‰‰‰‰¦  «        D ¦   «         ¦  «        Št          j        t	          d„ ‰D ¦   «         ¦  «        ˆˆˆˆˆˆfd„¦  «         |dk    }|s|                      d¦  «        } | j        \  }}	}
}‰\  }}‰\  }}‰\  }}‰\  }}t          |
||||| j	        ¦  «        }t          |||||| j	        ¦  «        }t          j        | ||||f¦  «        }|                     d¦  «                             d¦  «        }|d d …d d …||f         }|                     dddddd¦  «        }|                     d¦  «        }|                     d¦  «        }|                     ||	|z  |z  ||z  ¦  «        }|s|                     d¦  «        }|S )Nr#   c                  ó   — dS )Nz"im2col(): only 2D kernel supportedr*   r*   r+   r,   r„   zim2col.<locals>.<lambda>—  s   € Ð0T€ r+   c                  ó   — dS )Nz$im2col(): only 2D dilation supportedr*   r*   r+   r,   r„   zim2col.<locals>.<lambda>˜  s   € Ð-S€ r+   c                  ó   — dS )Nz#im2col(): only 2D padding supportedr*   r*   r+   r,   r„   zim2col.<locals>.<lambda>™  s   € Ð,Q€ r+   c                  ó   — dS )Nz"im2col(): only 2D stride supportedr*   r*   r+   r,   r„   zim2col.<locals>.<lambda>š  s   € Ð+O€ r+   Tc                 óš   — |rt          d„ | D ¦   «         ¦  «        nt          d„ | D ¦   «         ¦  «        }t          j        |d„ ¦  «         d S )Nc              3   ó"   K  — | ]
}|d k    V — ŒdS ©r   Nr*   ©r5   rO  s     r,   ú	<genexpr>z1im2col.<locals>.check_positive.<locals>.<genexpr>�  ó&   è è € Ð(Ð(˜Q�1�q’5Ð(Ð(Ð(Ð(Ð(Ð(r+   c              3   ó"   K  — | ]
}|d k    V — ŒdS rÉ  r*   rÊ  s     r,   rË  z1im2col.<locals>.check_positive.<locals>.<genexpr>�  ó&   è è € Ð;RÐ;RÀq¸AÀºFÐ;RÐ;RÐ;RÐ;RÐ;RÐ;Rr+   c                  ó   — dS )Nz<{param_name} should be greater {'than' zero, but got {param}r*   r*   r+   r,   r„   z0im2col.<locals>.check_positive.<locals>.<lambda>Ÿ  s   € ÐX€ r+   ©r  rC   r…   ©ÚparamÚ
param_nameÚstrictÚconds       r,   Úcheck_positivezim2col.<locals>.check_positiveœ  sf   € Ø,2ÐR�sÐ(Ð( %Ð(Ñ(Ô(Ñ(Ô(Ð(½Ð;RÐ;RÈEÐ;RÑ;RÔ;RÑ8RÔ8RˆÝŒØÐXÐXñ	
ô 	
ð 	
ð 	
ð 	
r+   r¿  rÀ  rÁ  F©rÔ  rt  ©r‹   r?  c              3   ó"   K  — | ]
}|d k    V — ŒdS rÉ  r*   ©r5   Úds     r,   rË  zim2col.<locals>.<genexpr>ª  ó&   è è € Ð:Ð:¨!˜q AšvÐ:Ð:Ð:Ð:Ð:Ð:r+   r¡   c                  ó(   •— dt          ‰ ¦  «        › �S )NzmExpected 3D or 4D (batch mode) tensor for input with possible 0 batch size and non-zero dimensions, but got: ©Útuple©r  s   €r,   r„   zim2col.<locals>.<lambda>«  ó   ø€ ð <Ý-2°5©\¬\ð<ð <€ r+   c              3   óV   K  — | ]$\  }}}}}d |d|z  z   ||d z
  z  z
  d z
  |z  z   V — Œ%dS )r"   r#   Nr*   ©r5   rÉ   ÚpadÚdilÚkerÚsts         r,   rË  zim2col.<locals>.<genexpr>®  sd   è è € ð ð á"ˆC��c˜3 ð 	
ˆS�1�s‘7‰]˜S C¨!¡G™_Ñ,¨qÑ0°RÑ7Ñ7ðð ð ð ð ð r+   rW  c              3   ó"   K  — | ]
}|d k    V — ŒdS rÉ  r*   )r5   Úcs     r,   rË  zim2col.<locals>.<genexpr>µ  s&   è è € Ð'Ð'�aˆA�ŠEÐ'Ð'Ð'Ð'Ð'Ð'r+   c                  óX   •— dt          ‰dd …         ¦  «        › d‰› d‰ › d‰› d‰› d‰› d�S )	Nz!Given an input with spacial size rW  ú, kernel_size=ú, dilation=ú
, padding=ú	, stride=z9, the calculated shape of the array of sliding blocks is z*, but its components must be at least one.rÞ  )rÀ  r¿  Úoutput_sizerÁ  r  rt  s   €€€€€€r,   r„   zim2col.<locals>.<lambda>¶  s|   ø€ ð FµE¸%ÀÀÀ¼*Ñ4EÔ4Eð Fð FØ"ðFð FØ/7ðFð FàðFð Fà%+ðFð Fð ð	Fð Fð F€ r+   r?  r   rV   r"   r‹   é   ©T)rC   r…   r€  r  r  rß  ÚziprX   r¾  rŽ  rÄ   rä  Úpermuter*  r#  Úsqueeze)rÂ   r¿  rÀ  rÁ  rt  rÖ  r{  Úbatched_inputÚ	batch_dimr$  Úinput_hÚinput_wÚstride_hÚstride_wÚ	padding_hÚ	padding_wÚ
dilation_hÚ
dilation_wÚkernel_hÚkernel_wÚblocks_row_indicesÚblocks_col_indicesÚpadded_inputrª  Únum_blocks_rowÚnum_blocks_colrï  r  s    ````                     @@r,   Úim2colr  Ž  s‰  øøøøøø€ õ 
„L•�[Ñ!Ô! QÒ&Ð(TÐ(TÑUÔUÐUÝ	„L•�X‘” !Ò#Ð%SÐ%SÑTÔTÐTÝ	„L•�W‘” Ò"Ð$QÐ$QÑRÔRÐRÝ	„L•�V‘” Ò!Ð#OÐ#OÑPÔPÐPð
ð 
ð 
ð 
ð €N�; Ñ.Ô.Ð.Ø€N�8˜ZÑ(Ô(Ð(Ø€N�8˜Y¨uÐ5Ñ5Ô5Ð5Ø€N�6˜8Ñ$Ô$Ð$àŒK€EÝˆu‰:Œ:€DÝ	„LØ�ˆÐ:�3Ð:Ð:¨u°R°S°S¬zÐ:Ñ:Ô:Ñ:Ô:ð	<ð 	<ð 	<ð 	<ñô ð õ
 ð ð å&)Ø�"�#�#ŒJ˜ ¨;¸ñ'
ô '
ðñ ô ñ ô €Kõ 
„LÝÐ'Ð'˜;Ð'Ñ'Ô'Ñ'Ô'ð	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fñô ð ð ˜A’I€MØð #Ø—’ Ñ"Ô"ˆà/4¬{Ñ,€Iˆ{˜G WàÑ€HˆhØ"Ñ€IˆyØ%Ñ€J�
Ø$Ñ€Hˆhå9Ø�˜: y°(¸E¼Lñô Ðõ :Ø�˜: y°(¸E¼Lñô Ðõ ”5˜ ¨I°yÀ)Ð LÑMÔM€Là+×5Ò5°bÑ9Ô9×CÒCÀBÑGÔGÐØ˜!˜!˜!˜Q˜Q˜QÐ 2Ð4FÐFÔG€FØ�^Š^˜A˜q ! Q¨¨1Ñ-Ô-€FØ'×,Ò,¨QÑ/Ô/€NØ'×,Ò,¨QÑ/Ô/€NØ�^Š^Ø�; Ñ)¨HÑ4°nÀ~Ñ6Uñô €Fð ð #Ø—’ Ñ"Ô"ˆØ€Mr+   rï  c           
      óø  ‡‡‡‡‡‡‡— t          j        t          ‰¦  «        dk    d„ ¦  «         t          j        t          ‰¦  «        dk    d„ ¦  «         t          j        t          ‰¦  «        dk    d„ ¦  «         t          j        t          ‰¦  «        dk    d„ ¦  «         t          j        t          ‰¦  «        dk    d„ ¦  «         d d„} |‰d	¦  «          |‰d
¦  «          |‰dd¬¦  «          |‰d¦  «          |‰d¦  «         | j        Št          ‰¦  «        }t          j        |dv o t	          d„ ‰dd …         D ¦   «         ¦  «        ˆfd„¦  «         ‰d         ‰d         z  }t          j        ‰d         |z  dk    ˆˆfd„¦  «         d„ t          ‰‰‰‰‰¦  «        D ¦   «         }	|	d         |	d         z  Št          j        ‰d         ‰k    ˆˆˆˆˆˆˆfd„¦  «         t          j        ‰dk    ˆˆˆˆˆˆˆfd„¦  «         |dk    }
|
s|                      d¦  «        } | j        Š‰\  }}‰\  }}‰\  }}‰\  }}‰\  }}|                      ‰d         ‰d         |z  g‰z   |	z   ¦  «        } |                      dddddd¦  «        } t          |||||| j
        ¦  «        }t          |d¦  «        }t          |||||| j
        ¦  «        }d„ t          ‰‰¦  «        D ¦   «         }|                      ‰d         ‰d         t          ‰¦  «        z  g|z   ¦  «        }d d ||f}t                               ||| d¬¦  «        }t!          j        || | | | f¦  «        }|
s|                     d¦  «        }|S )!Nr#   c                  ó   — dS )Nzonly 2D output_size supportedr*   r*   r+   r,   r„   zcol2im.<locals>.<lambda>ë  s   € Ð0O€ r+   c                  ó   — dS )Nzonly 2D kernel supportedr*   r*   r+   r,   r„   zcol2im.<locals>.<lambda>ì  s   € Ð0J€ r+   c                  ó   — dS )Nzonly 2D dilation supportedr*   r*   r+   r,   r„   zcol2im.<locals>.<lambda>í  s   € Ð-I€ r+   c                  ó   — dS )Nzonly 2D padding supportedr*   r*   r+   r,   r„   zcol2im.<locals>.<lambda>î  s   € Ð,G€ r+   c                  ó   — dS )Nzonly 2D stride supportedr*   r*   r+   r,   r„   zcol2im.<locals>.<lambda>ï  s   € Ð+E€ r+   Tc                 óš   — |rt          d„ | D ¦   «         ¦  «        nt          d„ | D ¦   «         ¦  «        }t          j        |d„ ¦  «         d S )Nc              3   ó"   K  — | ]
}|d k    V — ŒdS rÉ  r*   rÊ  s     r,   rË  z1col2im.<locals>.check_positive.<locals>.<genexpr>ò  rÌ  r+   c              3   ó"   K  — | ]
}|d k    V — ŒdS rÉ  r*   rÊ  s     r,   rË  z1col2im.<locals>.check_positive.<locals>.<genexpr>ò  rÎ  r+   c                  ó   — dS )Nz9{param_name} should be greater than zero, but got {param}r*   r*   r+   r,   r„   z0col2im.<locals>.check_positive.<locals>.<lambda>ô  s   € ÐU€ r+   rÐ  rÑ  s       r,   rÖ  zcol2im.<locals>.check_positiveñ  sf   € Ø,2ÐR�sÐ(Ð( %Ð(Ñ(Ô(Ñ(Ô(Ð(½Ð;RÐ;RÈEÐ;RÑ;RÔ;RÑ8RÔ8RˆÝŒØÐUÐUñ	
ô 	
ð 	
ð 	
ð 	
r+   r¿  rÀ  rÁ  Fr×  rt  rï  )r#   r‹   c              3   ó"   K  — | ]
}|d k    V — ŒdS rÉ  r*   rÚ  s     r,   rË  zcol2im.<locals>.<genexpr>   rÜ  r+   rW  c                  ó(   •— dt          ‰ ¦  «        › �S )NzmExpected 2D or 3D (batch mode) tensor for input with possible 0 batch size and non-zero dimensions, but got: rÞ  rà  s   €r,   r„   zcol2im.<locals>.<lambda>  rá  r+   r   r"   c                  ó    •— d‰d         › d‰ › �S )Nz|Expected size of input's first non-batch dimension to be divisible by the product of kernel_size, but got input.shape[-2] = rW  z and kernel_size=r*   )r¿  r  s   €€r,   r„   zcol2im.<locals>.<lambda>  s(   ø€ ð %Ø=BÀ2¼Yð%ð %à"ð%ð %€ r+   c                 óN   — g | ]"\  }}}}}d |d|z  z   ||d z
  z  z
  d z
  |z  z   ‘Œ#S ©r"   r#   r*   rã  s         r,   r8   zcol2im.<locals>.<listcomp>  sV   € ð ð ð á"ˆC��c˜3 ð 	
ˆS�1�s‘7‰]˜S C¨!¡G™_Ñ,¨qÑ0°RÑ7Ñ7ðð ð r+   rV   c                  ó@   •— d‰› d‰› d‰› d‰› d‰› d‰ › d‰d         › d	�S ©
NzGiven output_size=rë  rì  rí  rî  z , expected input.size(-1) to be ú	 but got rV   ú.r*   ©ÚLrÀ  r¿  rï  rÁ  r  rt  s   €€€€€€€r,   r„   zcol2im.<locals>.<lambda>  ó|   ø€ ð B [ð Bð BÀð Bð BØðBð BØ(/ðBð BØ:@ðBð Bà)*ðBð Bà5:¸2´YðBð Bð B€ r+   c                  ó@   •— d‰› d‰› d‰› d‰› d‰› d‰ › d‰d         › d	�S r  r*   r  s   €€€€€€€r,   r„   zcol2im.<locals>.<lambda>  r  r+   r‹   r?  rð  c                 ó$   — g | ]\  }}|d |z  z   ‘ŒS ©r#   r*   )r5   ÚorO  s      r,   r8   zcol2im.<locals>.<listcomp>6  s$   € ÐJÐJÐJ©¨¨1˜!˜a !™e™)ÐJÐJÐJr+   ©Ú
accumulaterñ  )rC   r…   r€  r  r  rò  rX   r#  ró  r¾  rŽ  rZ   rk  Úprodr†   Ú_unsafe_index_putrÄ   rä  rô  )rÂ   rï  r¿  rÀ  rÁ  rt  rÖ  r{  Úprod_kernel_sizeÚcolrõ  Úout_hÚout_wrù  rú  rû  rü  rý  rþ  rÿ  r   Úindices_rowÚindices_colÚoutput_padded_sizerª  rš  r  r  s    `````                    @@r,   Úcol2imr,  à  s”  øøøøøøø€ õ 
„L•�[Ñ!Ô! QÒ&Ð(OÐ(OÑPÔPÐPÝ	„L•�[Ñ!Ô! QÒ&Ð(JÐ(JÑKÔKÐKÝ	„L•�X‘” !Ò#Ð%IÐ%IÑJÔJÐJÝ	„L•�W‘” Ò"Ð$GÐ$GÑHÔHÐHÝ	„L•�V‘” Ò!Ð#EÐ#EÑFÔFÐFð
ð 
ð 
ð 
ð €N�; Ñ.Ô.Ð.Ø€N�8˜ZÑ(Ô(Ð(Ø€N�7˜I¨eÐ4Ñ4Ô4Ð4Ø€N�6˜8Ñ$Ô$Ð$Ø€N�; Ñ.Ô.Ð.àŒK€EÝˆu‰:Œ:€DÝ	„LØ�ˆÐ:�3Ð:Ð:¨u°R°S°S¬zÐ:Ñ:Ô:Ñ:Ô:ð	<ð 	<ð 	<ð 	<ñô ð ð
 # 1”~¨°A¬Ñ6ÐÝ	„LØˆbŒ	Ð$Ñ$¨Ò)ð	%ð 	%ð 	%ð 	%ð 	%ñô ð ðð å&)Ø˜ (¨K¸ñ'
ô '
ðñ ô €Cð 	ˆAŒ��Q”‰€AÝ	„LØˆbŒ	�QŠð	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bñô ð õ 
„LØ	ˆAŠð	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bñô ð ð ˜A’I€MØð #Ø—’ Ñ"Ô"ˆàŒK€Eà�L€Eˆ5ØÑ€HˆhØ"Ñ€IˆyØ%Ñ€J�
Ø$Ñ€Hˆhð �MŠM˜5 œ8 U¨1¤XÐ1AÑ%AÐBÀ[ÑPÐSVÑVÑWÔW€EØ�MŠM˜!˜Q  1 a¨Ñ+Ô+€Eå2Øˆx˜ Y°¸%¼,ñô €Kõ $ K°Ñ3Ô3€KÝ2Øˆx˜ Y°¸%¼,ñô €Kð KÐJµ°KÀÑ0IÔ0IÐJÑJÔJÐØ�_Š_Ø	ˆqŒ�5˜”8�t KÑ0Ô0Ñ0Ð1Ð4FÑFñô €Fð ��{ KÐ
0€CÝ×#Ò# F¨C°À4Ð#ÑHÔH€FÝŒU�6˜Y˜J¨¨
°Y°JÀÀ
ÐKÑLÔL€Fàð #Ø—’ Ñ"Ô"ˆØ€Mr+   r›  c                 óˆ   — | |                      | ¦  «        |z  z                       t          j        | ¦  «        ¬¦  «        }|S ©NrU  )Útype_asr‘  rH   r   )ro   r›  rq   rM   s       r,   Únative_dropout_backwardr0  C  sJ   € ð 
˜Ÿš [Ñ1Ô1°EÑ9Ñ	:×AÒAÝÔ1°+Ñ>Ô>ð 	Bñ 	ô 	€Að €Hr+   Ú
input_sizeÚ	dimensionr*  c                 ó<  — t          |¦  «        dk    rt          j        | d¦  «        S t          j        t          |¦  «        |¦  «        }t          j        ||         | j        t          j        ¬¦  «        }|                     d||¦  «         	                    ¦   «         }|  
                    d|dz   ¦  «         	                    ||dz   ¦  «        } |                      |¦  «        }d|z  |fz   }t                               ||| d¬¦  «                             ¦   «         S )Nr   r�  rV   r"   r;   Tr!  )r€  rC   Úsqueeze_copyrH   r)  r’  rŽ  Úint32ÚunfoldÚflattenÚmovedimrk  r†   r$  r­  )	r«   r1  r2  r*  ri  rR   rš  r[   r�  s	            r,   Úunfold_backwardr9  R  sö   € õ
 ˆ:�„˜!ÒÐÝÔ! $¨Ñ*Ô*Ð*Ý
Ô
 ¥ Z¡¤°)Ñ
<Ô
<€CÝ
Œ,�z #”¨t¬{Å%Ä+Ð
NÑ
NÔ
N€CØ
�*Š*�Q˜˜dÑ
#Ô
#×
+Ò
+Ñ
-Ô
-€CØ�<Š<˜˜C !™GÑ$Ô$×,Ò,¨S°#¸±'Ñ:Ô:€Dð —’ 
Ñ+Ô+€JØ�c‰M˜S˜FÑ"€EÝ×!Ò! *¨e°TÀdÐ!ÑKÔK×VÒVÑXÔXÐXr+   Úepsc           
      ó>  — |�A|}d|z
  }t          j        t          j        ||k    ||k    ¦  «        | |d|z
  z  z  d¦  «        S t          j        t          j        |dk    |dk    ¦  «        | |d|z
  z  z  |                     dt	          d¦  «        ¦  «        ¦  «        S )Nrj   r–   r*   Únan)rC   rl   r•  rD  r  )ro   r~   r:  ÚloÚhis        r,   Úlogit_backwardr?  e  s­   € ð
 €ØˆØ�2‰XˆÝŒ{ÝÔ˜d bšj¨$°"ª*Ñ5Ô5Ø˜4 3¨¡:Ñ.Ñ/Øñ
ô 
ð 	
õ Œ{ÝÔ˜d cšk¨4°3ª;Ñ7Ô7Ø˜4 3¨¡:Ñ.Ñ/Ø�MŠM˜"�e E™lœlÑ+Ô+ñ
ô 
ð 	
r+   Útrainc                 ó~   — |r(|dk    r"t                                | ||¦  «        d         S |                      ¦   «         S rv   )r†   Únative_dropoutr‘  )rÂ   rO  r@  s      r,   ÚdropoutrC  z  s?   € ð ð ��a’�Ý×"Ò" 5¨!¨UÑ3Ô3°AÔ6Ð6à�{Š{‰}Œ}Ðr+   Úout0Úout1c                 ón  — |r’|dk    rŒ|dk    r4t          j        | ¦  «        t          j        | t           j        ¬¦  «        fS | j        j        st          d¦  «        ‚t          j        | ¦  «        |k    }|| z  t          dd|z
  z  ¦  «        z  }||fS | t          j        | t           j        ¬¦  «        fS )Nr   r"   rò   z?result type Float can't be cast to the desired output type Longrj   )	rC   r  r”  rê   Úis_floating_pointrr  Ú	rand_liker  rY  )rÂ   rO  r@  Ú	bool_maskÚress        r,   rB  rB  „  sÄ   € ð ð A��a’�Ø�Š6ˆ6ÝÔ$ UÑ+Ô+­UÔ-=¸eÍ5Ì:Ð-VÑ-VÔ-VÐWÐWØŒ{Ô,ð 	ÝØQñô ð õ ”O EÑ*Ô*¨QÒ.ˆ	Ø˜%Ñ¥%¨¨s°Q©w©Ñ"8Ô"8Ñ8ˆØ�YÐÐà•u” uµE´JÐ?Ñ?Ô?Ð@Ð@r+   Úhalf_to_floatc                 óò  — |                       ¦   «         } |r| j        t          j        k    sJ ‚t	          j        | t          j        j        ¬¦  «        \  }}|                      |¦  «        } |  	                    ¦   «         dk    rt          j
        | ¦  «        }n.t          j        | |d¬¦  «        }t          j
        | |z
  ¦  «        }|t          j        ||d¬¦  «        z  }|s|                     |¦  «        }|S ©N©r9   r   T)rþ   )r­  rê   rC   ÚhalfrH   rI   ÚELEMENTWISE_TYPE_PROMOTION_KINDÚDEFAULTr=   rù   rk   Úamaxrè   )r6   rR   rK  r>   rA   ÚunnormalizedÚx_maxr  s           r,   Ú_softmaxrU  •  sì   € ð
 	
�Š‰Œ€AØð %ØŒw�%œ*Ò$Ð$Ð$Ð$Ý&+Ô&>Ø	�uÔDÔLð'ñ 'ô 'Ñ#Ð�|ð 	
�ŠÐÑÔ€AØ‡w‚w�y„y�A‚~€~Ý”y ‘|”|ˆˆå”
˜1˜c¨4Ð0Ñ0Ô0ˆÝ”y  U¡Ñ+Ô+ˆØ�EœI l°CÀÐFÑFÔFÑF€FØð )Ø—’˜<Ñ(Ô(ˆØ€Mr+   )r  c                 óö  — |                       ¦   «         } |r| j        t          j        k    sJ ‚t	          j        | t          j        j        ¬¦  «        \  }}|                      |¦  «        } |  	                    ¦   «         dk    r| }nt          j
        | |d¬¦  «        }| |z
  }t          j        t          j        t          j        |¦  «        |d¬¦  «        ¦  «        }||z
  }|s|                     |¦  «        }|S rM  )r­  rê   rC   rO  rH   rI   rP  rQ  r=   rù   rR  rE  rè   rk   )	r6   rR   rK  r>   rA   ÚshiftedrT  Úshifted_logsumexpr  s	            r,   Ú_log_softmaxrY  ¬  sõ   € ð
 	
�Š‰Œ€AØð %ØŒw�%œ*Ò$Ð$Ð$Ð$Ý&+Ô&>Ø	�uÔDÔLð'ñ 'ô 'Ñ#Ð�|ð 	
�ŠÐÑÔ€AØ‡w‚w�y„y�A‚~€~Øˆˆå”
˜1˜c¨4Ð0Ñ0Ô0ˆØ�e‘)ˆÝœ	¥%¤)­E¬I°gÑ,>Ô,>ÀÈTÐ"RÑ"RÔ"RÑSÔSÐØÐ(Ñ(€FØð )Ø—’˜<Ñ(Ô(ˆØ€Mr+   rV   r™  Úpadding_idxÚscale_grad_by_freqÚsparsec                 óÜ   — |                       ¦   «         dk    s
J d¦   «         ‚|j        dk    r8|                      d|¦  «        }|j        dk    r|                     d¦  «        }|S | |         S )Nr#   z'weight' must be 2-Dr"   r   )rR   r{  Úindex_selectrô  )rÏ   r™  rZ  r[  r\  rÉ   s         r,   Ú	embeddingr_  Ä  ss   € ð �:Š:‰<Œ<˜1ÒÐÐÐ4ÑÔÐà„|�qÒÐà×!Ò! ! WÑ-Ô-ˆØŒ<˜1ÒÐØ—+’+˜a‘.”.ˆCØˆ
à�gŒÐr+   Únum_weightsc                 óž  — t          j        | t           j        j        ¬¦  «        \  }}|                      |¦  «        } t          |t          j        ¦  «        }|ri|                     |f¦  «        }t          j	        |¦  «        }t                               ||g|d¬¦  «        }||         }	| |	                     d¦  «        z  } t          ||k    | j        ¦  «        }
|                      |
d¦  «        }|                      |f| j        |j        d …         z   ¦  «        }t                               ||g|d¬¦  «                             |¦  «        S )NrN  Tr!  rV   r   )rH   rI   rP  rQ  r=   r   rC   Úlongrk  rY  r†   r$  rX   rZ   r{  Úmasked_fillr  )ro   r™  r`  rZ  r[  r>   rA   Úcountsr“  Úgrad_weights_scaler›  r«   Úgrad_weights                r,   Úembedding_dense_backwardrg  Ù  sN  € õ ',Ô&>Ø­Ô)NÔ)Vð'ñ 'ô 'Ñ#Ð�|ð —.’.Ð!2Ñ3Ô3€KÝ% g­u¬zÑ:Ô:€GØð EØ×"Ò" K >Ñ2Ô2ˆÝŒ˜wÑ'Ô'ˆÝ×'Ò'¨°°	¸4ÈDÐ'ÑQÔQˆØ# Gœ_ÐØ!Ð$6×$@Ò$@ÀÑ$DÔ$DÑDˆå˜W¨Ò3°[Ô5EÑFÔF€DØ×"Ò" 4¨Ñ+Ô+€DØ×'Ò'Ø	ˆ˜Ô*¨7¬<¨>¨>Ô:Ñ:ñô €Kõ ×!Ò! +°¨y¸$È4Ð!ÑPÔP×SÒSØñô ð r+   c                 ó   — d}| D ]}||z  }Œ|S r_   r*   )r6   rM   Úis      r,   r#  r#  ø  s&   € Ø	€AØð ð ˆØ	ˆQ‰ˆˆØ€Hr+   ÚtensorsÚ
num_chunksc                 óŠ  — g }| D ]½}|                      ¦   «         }||         |z   dz
  |z  |z  }|||         k    r>dgdz  |j        |z
  dz
  z  d|||         z
  gz   }t                               ||d¦  «        }|d |…         t	          j        |dg¦  «        z   }|                     |                     |¦  «        ¦  «         Œ¾|S )Nr"   r   r#   rV   )r*  r{  r†   Úconstant_pad_ndrC   ÚSizeÚappendr#  )	rj  rR   rk  Úpadded_tensorsÚtensorÚtensor_sizeÚpad_along_dimrä  Ú	view_sizes	            r,   Ú
_pad_chunkru  ÿ  sí   € ð
 €NØð 9ð 9ˆØ—k’k‘m”mˆØ$ SÔ)¨JÑ6¸Ñ:¸zÑIÈJÑVˆØ˜K¨Ô,Ò,Ð,à�#˜‘'˜Vœ[¨3Ñ.°Ñ2Ñ3ØØ ¨CÔ 0Ñ0ð7ñ ˆCõ ×)Ò)¨&°#°qÑ9Ô9ˆFØ   Ô%­¬
°JÀÐ3CÑ(DÔ(DÑDˆ	Ø×Ò˜fŸnšn¨YÑ7Ô7Ñ8Ô8Ð8Ð8ØÐr+   c                 óF   — | d         j         }| D ]}|j         |k    r dS ŒdS )Nr   FT©r{  )rj  r{  rq  s      r,   Úhave_same_ndimsrx    s:   € Ø�1Œ:Œ?€DØð ð ˆØŒ;˜$ÒÐØ�5�5ð àˆ4r+   c                 ó¼   — | d                               ¦   «         d |…         }| D ]6}t          j        |                      ¦   «         d |…         |k    d„ ¦  «         Œ7d S )Nr   c                  ó   — dS )NzG_chunk_cat expects same sizes of 0,...,dim-1 dimensions for all tensorsr*   r*   r+   r,   r„   z+leading_dimension_matches.<locals>.<lambda>!  s   € Ð]€ r+   )r*  rC   r…   )rj  rR   Úleading_dim_sizesrq  s       r,   Úleading_dimension_matchesr|    sq   € Ø œ
ŸšÑ)Ô)¨$¨3¨$Ô/ÐØð 
ð 
ˆÝŒØ�KŠK‰MŒM˜$˜3˜$ÔÐ#4Ò4Ø]Ð]ñ	
ô 	
ð 	
ð 	
ð
ð 
r+   c                 ó°  — t          j        |dk    d„ ¦  «         t          j        t          | ¦  «        dk    d„ ¦  «         | d         j        }| d         j        }| D ]l}t          j        |                     ¦   «         dk    d„ ¦  «         t          j        |j        |k    d„ ¦  «         t          j        |j        |k    d„ ¦  «         Œmt          | ¦  «        r.t          j        | d          	                    ¦   «         |¦  «        }n>t          j        |dk    d„ ¦  «         | D ]!}t          j        ||j
        k     d	„ ¦  «         Œ"t          | |¦  «         |S )
Nr"   c                  ó   — dS )Nz&_chunk_cat expects positive num_chunksr*   r*   r+   r,   r„   z._preprocess_chunk_cat_inputs.<locals>.<lambda>*  s   € Ð*R€ r+   r   c                  ó   — dS )Nz0_chunk_cat expects a non-empty input tensor listr*   r*   r+   r,   r„   z._preprocess_chunk_cat_inputs.<locals>.<lambda>,  s   € Ð"T€ r+   c                  ó   — dS )Nz#_chunk_cat expects non-empty tensorr*   r*   r+   r,   r„   z._preprocess_chunk_cat_inputs.<locals>.<lambda>1  s   € Ð1V€ r+   c                  ó   — dS )Nz8_chunk_cat expects all input tensors with the same dtyper*   r*   r+   r,   r„   z._preprocess_chunk_cat_inputs.<locals>.<lambda>4  ó   € ÐN€ r+   c                  ó   — dS )Nz8_chunk_cat expects all inputs tensors on the same devicer*   r*   r+   r,   r„   z._preprocess_chunk_cat_inputs.<locals>.<lambda>8  r‚  r+   c                  ó   — dS )NzK_chunk_cat expects non-negative dim when input tensors have different ndimsr*   r*   r+   r,   r„   z._preprocess_chunk_cat_inputs.<locals>.<lambda>?  s   € Ða€ r+   c                  ó   — dS )Nz3_chunk_cat expects dim < ndim for all input tensorsr*   r*   r+   r,   r„   z._preprocess_chunk_cat_inputs.<locals>.<lambda>D  ó   € ÐM€ r+   )rC   r…   r€  rê   rŽ  rù   rx  rH   r)  rR   r{  r|  )rj  rR   rk  Úexpected_dtypeÚexpected_devicerq  s         r,   Ú_preprocess_chunk_cat_inputsr‰  %  s‡  € õ
 
„L�˜q’Ð"RÐ"RÑSÔSÐSÝ	„LÝˆG‰Œ�qÒÐTÐTñô ð ð ˜Q”ZÔ%€NØ˜a”jÔ'€OØð 	
ð 	
ˆÝŒ�V—\’\‘^”^ aÒ'Ð)VÐ)VÑWÔWÐWÝŒØŒL˜NÒ*ØNÐNñ	
ô 	
ð 	
õ 	ŒØŒM˜_Ò,ØNÐNñ	
ô 	
ð 	
ð 	
õ �wÑÔð ÝÔ$ W¨Q¤Z§^¢^Ñ%5Ô%5°sÑ;Ô;ˆˆåŒØ�1ŠHØaÐañ	
ô 	
ð 	
ð ð 	ð 	ˆFÝŒLØ�f”kÒ!ØMÐMñô ð ð õ ˜g sÑ+Ô+Ð+Ø€Jr+   rÉ   c                 ó²   — t          | ||¦  «        }t          | ||¦  «        }|€t          j        ||dz   ¦  «        S t          j        ||dz   |¬¦  «         |S )Nr"   )rÉ   )r‰  ru  rC   r,  )rj  rR   rk  rÉ   rp  s        r,   Ú
_chunk_catr‹  J  sa   € õ ' w°°ZÑ
@Ô
@€CÝ ¨¨jÑ9Ô9€NØ
€{ÝŒy˜¨¨q©Ñ1Ô1Ð1åŒ	�. #¨¡'¨sÐ3Ñ3Ô3Ð3Øˆ
r+   Úsplit_sizesc                 óÖ   — t                                | ||¬¦  «        }|€d„ |D ¦   «         S t          ||¦  «        D ],\  }}t          ||j        ¦  «         t          ||d¬¦  «         Œ-d S )Nrƒ   c                 óN   — g | ]"}|                      t          j        ¬ ¦  «        ‘Œ#S )rU  )r‘  rC   rZ  )r5   Úss     r,   r8   z)split_with_sizes_copy.<locals>.<listcomp>f  s)   € ÐOÐOÐOÀ1�—’¥eÔ&=�Ñ>Ô>ÐOÐOÐOr+   Tr  )r†   Úsplit_with_sizesrò  r   r  r   )r~   rŒ  rR   rÉ   Úsplitsrª  Úsplits          r,   Úsplit_with_sizes_copyr“  [  s…   € õ ×"Ò" 4¨¸#Ð"Ñ>Ô>€FØ
€{ØOÐOÈÐOÑOÔOÐOå   fÑ-Ô-ð 	Nð 	N‰MˆF�EÝ˜f e¤kÑ2Ô2Ð2Ý U°FÈÐMÑMÔMÐMÐMØˆtr+   Ú
split_size.c                 óD   — t           j                             | ||¦  «        S r;   )r†   r’  r   )rÂ   r”  rR   s      r,   Úunsafe_splitr–  n  s   € åŒ:×Ò˜U J°Ñ4Ô4Ð4r+   c                 óD   — t           j                             | ||¦  «        S r;   )r†   r�  r†  )rÂ   rŒ  rR   s      r,   Úunsafe_split_with_sizesr˜  s  s   € õ Ô ×(Ò(¨°¸SÑAÔAÐAr+   c                 ó  ‡— | j         }||         }‰dk    r|dk    sJ ‚|                      ¦   «         fS |‰z   dz
  ‰z  }ddlm}  ||¦  «        }ˆfd„t	          |¦  «        D ¦   «         }‰‰|z  |z
  z
  |d<   t          j        | ||¦  «        S )Nr   r"   )Ú	guard_intc                 ó   •— g | ]}‰‘ŒS r*   r*   )r5   ri  r”  s     €r,   r8   zsplit.<locals>.<listcomp>‡  s   ø€ Ð5Ð5Ð5 !�:Ð5Ð5Ð5r+   rV   )r  Údetachrq  rš  rW   rC   r’  )r~   r”  rR   rf  r‡  Úchunksrš  rŒ  s    `      r,   r’  r’  z  s¾   ø€ à”*€KØ˜3Ô€HØ�Q‚€Ø˜1Š}ˆ}ˆ}ˆ}Ø—’‘”ÐÐØ˜Ñ# aÑ'¨JÑ6€Fð @Ð?Ð?Ð?Ð?Ð?àˆY�vÑÔ€FØ5Ð5Ð5Ð5¥u¨V¡}¤}Ð5Ñ5Ô5€KØ  J°Ñ$7¸(Ñ$BÑC€K��OÝŒ;�t˜[¨#Ñ.Ô.Ð.r+   Útensor_indices_or_sectionsc                 ó”  ‡— |j         j        dk    sJ ‚|j        t          j        k    sJ ‚|                     ¦   «         Št          j        ‰dk    p‰dk    ˆfd„¦  «         ‰dk    rA|                     ¦   «         }t          |t          ¦  «        sJ ‚|  
                    ||¦  «        S d„ |D ¦   «         }|  
                    ||¦  «        S )NÚcpur"   r   c                  ó   •— d‰ › d�S )Nz{tensor_split expected tensor_indices_or_sections to be a zero-dimensional or one-dimensional tensor, but got a tensor with z dimsr*   )Ú	split_dims   €r,   r„   zAtensor_split_tensor_indices_or_sections_py_impl.<locals>.<lambda>™  s    ø€ ð MØ<EðMð Mð M€ r+   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r*   )Úitem)r5   ri  s     r,   r8   zCtensor_split_tensor_indices_or_sections_py_impl.<locals>.<listcomp>¡  s    € Ð@Ð@Ð@ �1—6’6‘8”8Ð@Ð@Ð@r+   )rŽ  Útyperê   rC   r´  rR   r…   r¤  r4   r   Útensor_split)r~   rž  rR   Úsectionsr™  r¢  s        @r,   Ú/tensor_split_tensor_indices_or_sections_py_implr¨  Œ  só   ø€ ð &Ô,Ô1°UÒ:Ð:Ð:Ð:Ø%Ô+­u¬{Ò:Ð:Ð:Ð:Ø*×.Ò.Ñ0Ô0€IÝ	„LØ�QŠÐ(˜) qš.ð	Mð 	Mð 	Mð 	Mñô ð ð
 �A‚~€~Ø-×2Ò2Ñ4Ô4ˆÝ˜(¥GÑ,Ô,Ð,Ð,Ð,Ø× Ò  ¨3Ñ/Ô/Ð/à@Ð@Ð%?Ð@Ñ@Ô@ˆð × Ò  ¨#Ñ.Ô.Ð.r+   Úmat1Úmat2c                 óÞ   — |                       ¦   «         s2|                      ¦   «         st          |¦  «        }t          |¦  «        }|t          j        ||¦  «        z  }|dk    r|S ||| z  z   S rv   )rG  Ú
is_complexr‰  rC   Úmm)r~   r©  rª  rf   rp   rÉ   s         r,   Úaddmmr®  ¯  st   € ð ×!Ò!Ñ#Ô#ð ¨D¯OªOÑ,=Ô,=ð Ý�4‰yŒyˆÝ�E‘
”
ˆØ
•%”(˜4 Ñ&Ô&Ñ
&€CØˆq‚y€yØˆ
ð �˜‘ÑÐr+   Úuse_geluc                 óÚ   — t          | ||||¦  «        }|r=| j        rt                               |d¬¦  «        S t                               |¦  «        S t                               |¦  «        S )Nr®   )r¬   )r®  Úis_cudar†   ÚgeluÚrelu)r~   r©  rª  rf   rp   r¯  rÉ   s          r,   Ú_addmm_activationr´  Ã  sa   € õ ��d˜D $¨Ñ
.Ô
.€CØð "ØŒ<ð 	"Ý—9’9˜S¨f�9Ñ5Ô5Ð5å—9’9˜S‘>”>Ð!Ý�9Š9�S‰>Œ>Ðr+   Úvecc                 ó  — |                       ¦   «         s2|                      ¦   «         st          |¦  «        }t          |¦  «        }|t          j        ||¦  «        z  }|dk    r|S |                     ¦   «         dk    r|| z  S ||| z  z   S rv   )rG  r¬  r‰  rC   Úmvrù   )r~   r©  rµ  rf   rp   rÉ   s         r,   Úaddmvr¸  ×  s�   € ð ×!Ò!Ñ#Ô#ð ¨D¯OªOÑ,=Ô,=ð Ý�4‰yŒyˆÝ�E‘
”
ˆØ
•%”(˜4 Ñ%Ô%Ñ
%€CØˆq‚y€yØˆ
Ø
‡y‚y�{„{�aÒÐØ�d‰{ÐØ�˜‘ÑÐr+   rç   ÚrstdÚgammaÚNÚCÚHxWÚgroupÚoutput_maskc
           	      ó2	  ‡‡‡‡‡‡— t          j        | |‰|d¬¦  «         t          j        || d¬¦  «         t          j        ‰|d¬¦  «         t          j        |                     ¦   «         ‰‰z  ‰z  k    ˆˆˆfd„¦  «         t          j        ‰j        ‰‰fk    ˆˆˆfd„¦  «         t          j        ‰d u p‰                     ¦   «         ‰k    ˆˆfd„¦  «         t          ‰‰¦  «        \  }
}t          j        |dk    ˆˆfd„¦  «         t          j        | |¦  «         	                    ‰‰‰¦  «         
                    dg¬	¦  «        }|  	                    ‰‰‰¦  «         
                    dg¬	¦  «        }d }d }d }|	d         �rdd
‰|
z  z  }‰�Þt          j        |‰                     d¦  «        ¦  «                             ‰‰|
¦  «         
                    d¦  «        }t          j        |‰                     d¦  «        ¦  «                             ‰‰|
¦  «         
                    d¦  «        }t          j        |                     d¦  «        ‰                     d‰|
¦  «        ¦  «        }n˜|                     ‰‰|
¦  «         
                    d¦  «        }|                     ‰‰|
¦  «         
                    d¦  «        }t          j        |                     d¦  «        t          j        d‰|
f|j        ¬¦  «        ¦  «        }|‰z  |z
  |z  |z  |z  |z  }| ‰z  ||z  |z  z
  }|                     d¦  «        }t          |d¦  «        }t          |d¦  «        }t          j        |                      ‰‰|
‰¦  «        |¦  «        t          j        |                     ‰‰|
‰¦  «        |¦  «        z   |z   }|                     |j        ¦  «                             |j        ¦  «        }|	d         rƒ| 	                    ‰‰|
¦  «        | 	                    ‰‰|
¦  «        ‰                     d¦  «        z  z
  |                     d¦  «        z   
                    dg¬	¦  «                             ‰¦  «        }|	d         r| 
                    dg¬	¦  «        }|||fS )NF)Úallow_cpu_scalar_tensorsc                  ó   •— d‰‰ z  ‰z  › d�S )NzExpect input to have z	 elementsr*   )r¼  r½  r»  s   €€€r,   r„   z,native_group_norm_backward.<locals>.<lambda>û  s   ø€ Ð>¨¨A©°©Ð>Ð>Ð>€ r+   c                  ó$   •— d‰ › d‰› d‰j         › �S )NzExpect mean to have shape (ú, z
, but got rà  )r»  r¾  rç   s   €€€r,   r„   z,native_group_norm_backward.<locals>.<lambda>ÿ  s"   ø€ ÐP¨aÐPÐP°5ÐPÐPÀDÄJÐPÐP€ r+   c                  ó@   •— d‰ › d‰�‰                      ¦   «         nd› �S )NzExpect gamma to have z elements but got rV   )rù   )r¼  rº  s   €€r,   r„   z,native_group_norm_backward.<locals>.<lambda>  s*   ø€ Ði¨ÐiÐiÈeÐN_¸U¿[º[¹]¼]¸]ÐegÐiÐi€ r+   r   c                  ó   •— d‰ › d‰› �S )NzExpect number of channels z, to be evenly-divisible by number of groups r*   )r¼  r¾  s   €€r,   r„   z,native_group_norm_backward.<locals>.<lambda>	  s   ø€ Ðc¨QÐcÐcÐ\aÐcÐc€ r+   r#   rƒ   rj   rV   r"   r�  r?  )rH   Úcheck_same_deviceÚcheck_same_shaperC   r…   rù   r  ÚdivmodrÛ   r–  rè   rX   r#  r“  rŽ  rZ   r=   rê   )ro   rÂ   rç   r¹  rº  r»  r¼  r½  r¾  r¿  ÚcpgÚ_remÚdsÚdbÚd_inputÚd_gammaÚd_biasr�  Úds_valÚdb_valÚc1Úc2Úc3s     ` `````              r,   Únative_group_norm_backwardrÖ  æ  s¨  øøøøøø€ õ 
ÔØ�U˜D $Àðñ ô ð õ 
Ô˜5 +ÈÐNÑNÔNÐNÝ	Ô˜4 ÀÐFÑFÔFÐFÝ	„LØ�Š‰Œ˜˜Q™ ™Ò$Ø>Ð>Ð>Ð>Ð>Ð>ñô ð õ 
„LØŒ
�q˜%�jÒ ØPÐPÐPÐPÐPÐPñô ð õ 
„LØ�ˆÐ+˜Ÿš™œ¨!Ò+ØiÐiÐiÐiÐiñô ð õ
 �q˜%Ñ Ô �I€CˆÝ	„LØ�Š	ØcÐcÐcÐcÐcñô ð õ 
Œ�; Ñ	&Ô	&×	+Ò	+¨A¨q°#Ñ	6Ô	6×	:Ò	:À¸sÐ	:Ñ	CÔ	C€BØ	×	Ò	˜!˜Q Ñ	$Ô	$×	(Ò	(¨a¨SÐ	(Ñ	1Ô	1€Bà $€GØ $€GØ#€FØ�1„~ñ ?Ø�3˜‘9ÑˆØÐÝ”Y˜r 5§?¢?°1Ñ#5Ô#5Ñ6Ô6×>Ò>¸qÀ%ÈÑMÔM×QÒQÐRSÑTÔTˆFÝ”Y˜r 5§?¢?°1Ñ#5Ô#5Ñ6Ô6×>Ò>¸qÀ%ÈÑMÔM×QÒQÐRSÑTÔTˆFÝ”Ø—’˜rÑ"Ô"Ø—’˜a ¨Ñ,Ô,ñô ˆBˆBð
 —Z’Z  5¨#Ñ.Ô.×2Ò2°1Ñ5Ô5ˆFØ—Z’Z  5¨#Ñ.Ô.×2Ò2°1Ñ5Ô5ˆFÝ”Ø—’˜rÑ"Ô"Ý”
˜A˜u c˜?°4´;Ð?Ñ?Ô?ñô ˆBð �t‰m˜fÑ$¨Ñ,¨tÑ3°dÑ:¸QÑ>ˆØˆS�4‰Z˜& 4™-¨!Ñ+Ñ+ˆà�\Š\˜"ÑÔˆÝ˜r 1Ñ%Ô%ˆÝ˜r 1Ñ%Ô%ˆåŒI�k×)Ò)¨!¨U°C¸Ñ=Ô=¸rÑBÔBÝŒi˜Ÿš a¨°°SÑ9Ô9¸2Ñ>Ô>ñ?àñð 	ð
 —/’/ %¤+Ñ.Ô.×1Ò1°%´+Ñ>Ô>ˆØ�1„~ð 
ð —’˜˜E 3Ñ'Ô'¨"¯'ª'°!°U¸CÑ*@Ô*@À4Ç>Â>ÐRTÑCUÔCUÑ*UÑUØ—.’. Ñ$Ô$ñ%÷ ŠS�a�SˆS‰\Œ\ßŠW�Q‰ZŒZð 	ð �1„~ð !Ø—’˜Q˜C�‘”ˆà�W˜fÐ%Ð%r+   Úout2c
                óÔ   — t          | |||||||||	¦
  «
        }|
||f}t          |¦  «        D ]:\  }}|�3t          ||         |j        ¦  «         t	          |||         d¬¦  «         Œ;|S r  )rÖ  Ú	enumerater   r  r   )ro   rÂ   rç   r¹  rº  r»  r¼  r½  r¾  r¿  rD  rE  r×  r  r[   ri  rM   s                    r,   Únative_group_norm_backward_outrÚ  ?  sŽ   € õ" (Ø�U˜D $¨¨q°!°S¸%Àñô €Fð ˜˜dÐ#€JÝ˜&Ñ!Ô!ð Qð Q‰ˆˆ1Øˆ=Ý˜j¨œm¨Q¬WÑ5Ô5Ð5Ý Q°
¸1´È4ÐPÑPÔPÐPøàÐr+   c                 ó4   — | �|                       |¦  «        S | S r;   ©r=   )r6   rê   s     r,   Ú_maybe_castrÝ  \  s   € Ø€}Ø�tŠt�E‰{Œ{ÐØ€Hr+   Úgrad_outÚnormalized_shapeÚbiasc                 óú  ‡"— |j         }|                     ¦   «         }	t          j        |j        ¦  «        Š"ˆ"fd„| |||fD ¦   «         \  }
}}}|
€J ‚|	t          |¦  «        z
  }||d …         }|d |…         }g }g }t          |	¦  «        D ]3}||k    r|                     |¦  «         Œ|                     |¦  «         Œ4t          |¦  «        }t          |¦  «        }ddl	m
}  ||dk    ¦  «        s ||dk    ¦  «        rl|d         r|                     |¦  «        nd |d         r|                     ||d …         ¦  «        nd |d         r|                     ||d …         ¦  «        nd fS t          ||                     ¦   «         ¦  «        }t          ||                     ¦   «         ¦  «        }||z
  |z  }|�|
|z  }n|
}||z  }t          j        ||d¦  «        }t          j        ||¦  «        }t          j        ||d¦  «        }t          j        ||¦  «        }||z
  |z
  }d }d } d }!|d         r||z  |z  }|d         r4|�2t          |¦  «        dk    rt          j        |
|z  |d¦  «        } n|
|z  } |d         r@|�>t          |¦  «        dk    rt          j        |
|d¦  «        }!n|
                     ¦   «         }!t#          ||j        ¦  «        t#          | |j        ¦  «        t#          |!|j        ¦  «        fS )Nc              3   ób   •K  — | ])}|�!|                      ‰t          j        ¬¦  «        n|V — Œ*d S r.  )r=   rC   rZ  ©r5   r6   r>   s     €r,   rË  z-native_layer_norm_backward.<locals>.<genexpr>q  sZ   øè è € ð 9ð 9ð ð ˆ=ð 	
�ŠÐ­eÔ.EˆÑFÔFÐFàð9ð 9ð 9ð 9ð 9ð 9r+   r   ©ro  r"   r#   TF)r  rR   rH   Úget_computation_dtyperê   r€  rW   ro  r#  rq  ro  rk  rZ   rC   rè   rÛ   r‘  rÝ  )#rÞ  rÂ   rß  rç   r¹  rÏ   rà  r¿  Úinput_shapeÚ
input_ndimÚgrad_out_castÚ
input_castÚweight_castÚ	bias_castÚaxisÚ
inner_dimsÚ
outer_dimsÚinner_dim_indicesÚouter_dim_indicesri  r»  ÚMro  Úx_hatÚ
grad_x_hatÚaÚbrÓ  rÔ  rÕ  rN   rÎ  Úd_weightrÐ  r>   s#                                     @r,   Únative_layer_norm_backwardr÷  c  s~  ø€ ð ”+€KØ—’‘”€JÝÔ3°E´KÑ@Ô@Ðð9ð 9ð 9ð 9ð ˜E 6¨4Ð0ð	9ñ 9ô 9Ñ5€M�:˜{¨Ið Ð$Ð$Ð$à�Ð,Ñ-Ô-Ñ-€DØ˜T˜U˜UÔ#€JØ˜U˜d˜UÔ#€JØ#%ÐØ#%ÐÝ�:ÑÔð (ð (ˆØ�Š9ˆ9Ø×$Ò$ QÑ'Ô'Ð'Ð'à×$Ò$ QÑ'Ô'Ð'Ð'åˆZÑÔ€AÝˆZÑÔ€AØJÐJÐJÐJÐJÐJàÐ˜A šFÑ#Ô#ð 
Ð';Ð';¸AÀºFÑ'CÔ'Cð 
à,7¸¬NÐDˆE�OŠO˜KÑ(Ô(Ð(ÀØ3>¸q´>ÐKˆE�OŠO˜K¨¨¨Ô.Ñ/Ô/Ð/ÀtØ3>¸q´>ÐKˆE�OŠO˜K¨¨¨Ô.Ñ/Ô/Ð/Àtð
ð 	
õ
 ˜T :§>¢>Ñ#3Ô#3Ñ4Ô4€DÝ˜T :§>¢>Ñ#3Ô#3Ñ4Ô4€DØ˜$Ñ $Ñ&€EØÐØ" [Ñ0ˆ
ˆ
à"ˆ
Ø�Q‰€AÝŒ	�*Ð/°Ñ6Ô6€AÝ	Œ�:˜uÑ	%Ô	%€BÝ	Œ�2Ð(¨$Ñ	/Ô	/€BÝ	Œ�5˜"Ñ	Ô	€Bà�‰E�B‰J€EØ $€GØ!%€HØ#€FØ�1„~ð %Ø˜!‘8˜uÑ$ˆà�1„~ð -˜+Ð1ÝÐ Ñ!Ô! AÒ%Ð%Ý”y °Ñ!6Ð8IÈ5ÑQÔQˆHˆHà$ uÑ,ˆHà�1„~ð +˜)Ð/ÝÐ Ñ!Ô! AÒ%Ð%Ý”Y˜}Ð.?ÀÑGÔGˆFˆFà"×(Ò(Ñ*Ô*ˆFõ 	�G˜Uœ[Ñ)Ô)Ý�H˜eœkÑ*Ô*Ý�F˜EœKÑ(Ô(ðð r+   c          
      óÐ   — t          | |||||||¦  «        }||	|
f}t          |¦  «        D ]:\  }}|�3t          ||         |j        ¦  «         t	          |||         d¬¦  «         Œ;|S r  )r÷  rÙ  r   r  r   )rÞ  rÂ   rß  rç   r¹  rÏ   rà  r¿  rD  rE  r×  r  r[   ri  rM   s                  r,   Únative_layer_norm_backward_outrù  ¶  s‹   € õ (Ø�%Ð)¨4°°v¸tÀ[ñô €Fð ˜˜dÐ#€JÝ˜&Ñ!Ô!ð Qð Q‰ˆˆ1Øˆ=Ý˜j¨œm¨Q¬WÑ5Ô5Ð5Ý Q°
¸1´È4ÐPÑPÔPÐPøàÐr+   Úrunning_meanÚrunning_varÚmomentumÚ
functionalc	                 ó†  — dgt          t          d|                      ¦   «         ¦  «        ¦  «        z   }	t          j        | j        ¦  «        }
|}|}|�r$t          j        | j        ¦  «        }
|                      |
¬¦  «        }t          j        ||	dd¬¦  «        \  }}t          j	        ||z   ¦  «        }| |z
  |z  }t          j
        ||	¦  «        }t          j
        ||	¦  «        }|�%||z  d|z
  |z  z   }|s|                     |¦  «         |�g|                      ¦   «         | j        d         z  }t          j
        ||	¦  «        }|||dz
  z  z  }||z  d|z
  |z  z   }|s|                     |¦  «         nå|�|€J ‚|                     |
d¬¦  «        }|}|                     |
d¬¦  «        }|}|}dt          j        ||z   ¦  «        z  }| j        j        dk    r|}|}n*|                      d	¦  «        }|                      d	¦  «        }t%          ||                      ¦   «         dz
  ¦  «        }t%          ||                      ¦   «         dz
  ¦  «        }| |z
  |z  }|�>|                     ¦   «         }t%          ||                      ¦   «         dz
  ¦  «        }||z  }|�>|                     ¦   «         }t%          ||                      ¦   «         dz
  ¦  «        }||z   }| j        j        dk    r6|                     | j        ¬¦  «        }|                     | j        ¬¦  «        }|                     | j        ¬¦  «        ||||fS )
Nr   r#   rò   T)rR   Ú
correctionrþ   r"   )rê   r‡   r   ©r   )rs  rW   rR   rH   rå  rê   r=   rC   Úvar_meanÚrsqrtrô  Úcopy_rù   r  r^  rŽ  r¥  rk  rZ   r7  )rÂ   rÏ   rà  rú  rû  rÙ   rü  r:  rý  Úreduction_dimsr>   Únew_running_meanÚnew_running_varÚ	input_accÚ
biased_varrç   r¹  rª  Ú	save_meanÚ	save_rstdÚnÚsqueezed_varÚunbiased_varÚinvstds                           r,   Únative_batch_norm_helperr  Ñ  sP  € ð �S�4¥ a¨¯ª©¬Ñ 5Ô 5Ñ6Ô6Ñ6€NÝÔ3°E´KÑ@Ô@ÐØ#ÐØ!€OØñ +)Ý!Ô7¸¼ÑDÔDÐØ—H’HÐ#4�HÑ5Ô5ˆ	Ý œ>Ø˜>°aÀð
ñ 
ô 
Ñˆ
�Dõ Œ{˜:¨Ñ+Ñ,Ô,ˆà˜$‘, $Ñ&ˆå”M $¨Ñ7Ô7ˆ	Ý”M $¨Ñ7Ô7ˆ	ØÐ#Ø'¨)Ñ3°q¸8±|À|Ñ6SÑSÐØð 5Ø×"Ò"Ð#3Ñ4Ô4Ð4ØÐ"Ø—’‘” ¤¨A¤Ñ.ˆAõ !œ=¨°^ÑDÔDˆLØ'¨1°°A±©;Ñ7ˆLØ&¨Ñ5¸¸X¹ÈÑ8TÑTˆOØð 3Ø×!Ò! /Ñ2Ô2Ð2øàÐ'¨KÐ,CÐ,CÐ,CØ#—’Ð->ÀT�ÑJÔJˆØ'ÐØ!—n’nÐ+<À4�nÑHÔHˆØ%ˆØˆØ•e”j ¨sÑ!2Ñ3Ô3Ñ4ˆàŒ<Ô Ò%Ð%Ø$ˆIØˆIˆIàŸš¨Ñ-Ô-ˆIØŸš¨Ñ-Ô-ˆIÝ   u§y¢y¡{¤{°Q¡Ñ7Ô7ˆÝ" 6¨5¯9ª9©;¬;¸©?Ñ;Ô;ˆØ˜$‘, &Ñ(ˆàÐØ—’Ñ!Ô!ˆÝ" 6¨5¯9ª9©;¬;¸©?Ñ;Ô;ˆØ˜&‘ˆàÐØ�|Š|‰~Œ~ˆÝ   u§y¢y¡{¤{°Q¡Ñ7Ô7ˆØ˜$‘ˆà„|Ô˜EÒ!Ð!Ø—L’L u¤{�LÑ3Ô3ˆ	Ø—L’L u¤{�LÑ3Ô3ˆ	à�	Š	˜œˆ	Ñ$Ô$ØØØØðð r+   r	  Úsave_invstdc                 óF   — t          | |||||||d¦	  «	        \  }}	}
}}||	|
fS ©NF©r  ©rÂ   rÏ   rà  rú  rû  rÙ   rü  r:  rª  r	  r
  rY   s               r,   Únative_batch_normr  #  sB   € õ *BØˆv�t˜\¨;¸À(ÈCÐQVñ*ô *Ñ&€FˆI�y ! Qð �9˜iÐ'Ð'r+   c           
      ó  — |€!|€t                                | |||||¦  «        S |€t          d¦  «        ‚|€t          d¦  «        ‚|r!t                                | |||||||¦  «        S t                                | ||||||¦  «        S )Nz`running_mean is None, but running_var is provided. They should both be None or both be provided.z`running_var is None, but running_mean is provided. They should both be None or both be provided.)r†   Ú_native_batch_norm_legitrr  Ú$_native_batch_norm_legit_no_training)rÂ   rÏ   rà  rú  rû  rÙ   rü  r:  s           r,   Únative_batch_norm_decompositionr  ?  sÏ   € ð Ð Ð 3Ý×,Ò,Ø�6˜4 ¨8°Sñ
ô 
ð 	
ð ÐÝð<ñ
ô 
ð 	
ð ÐÝð<ñ
ô 
ð 	
ð ð 
å×,Ò,Ø�6˜4 ¨{¸HÀhÐPSñ
ô 
ð 	
õ ×8Ò8Ø�6˜4 ¨{¸HÀcñ
ô 
ð 	
r+   c                 óF  ‡— |                       |¦  «        }||z   dz
  |z  Š‰dk    rP|dk    rJˆfd„|D ¦   «         }‰‰|z  |z
  z
  ||dz
  <   t          j        j        j                             | ||¦  «        S t          j        j        j                             | ‰|¦  «        S )Nr"   r   c                 ó   •— g | ]}‰‘ŒS r*   r*   )r5   rY   r”  s     €r,   r8   z(unsafe_chunk_py_impl.<locals>.<listcomp>j  s   ø€ Ð2Ð2Ð2 a�zÐ2Ð2Ð2r+   )r*  rC   Úopsr†   r˜  r†  r–  r   )rq  r�  rR   r‡  rŒ  r”  s        @r,   Úunsafe_chunk_py_implr  d  s®   ø€ à�{Š{˜3ÑÔ€HØ˜VÑ# aÑ'¨FÑ2€Jà�Q‚€˜8 qš=˜=Ø2Ð2Ð2Ð2¨6Ð2Ñ2Ô2ˆØ",°
¸VÑ0CÀhÑ0NÑ"Oˆ�F˜Q‘JÑÝŒyŒ~Ô5×=Ò=¸fÀkÐSVÑWÔWÐWÝŒ9Œ>Ô&×-Ò-¨f°jÀ#ÑFÔFÐFr+   c           
      óN   — t           j                             | ||||d||¦  «        S r  )r†   r  r†  )rÂ   rÏ   rà  rú  rû  rü  r:  s          r,   r  r  p  s7   € õ Ô(×0Ò0ØØØØØØØØñ	ô 	ð 	r+   c                 óF   — t          | |||||||d¦	  «	        \  }}	}
}}||	|
fS r  r  r  s               r,   r  r  †  sB   € õ *BØˆv�t˜\¨;¸À(ÈCÐQVñ*ô *Ñ&€FˆI�y ! Qð �9˜iÐ'Ð'r+   c                 óF   — t          | ||d d |||d¦	  «	        \  }}}}	}	|||fS r  r  )
rÂ   rÏ   rà  rÙ   rü  r:  rª  r	  r
  rY   s
             r,   Ú!_native_batch_norm_legit_no_statsr!  —  sA   € õ *BØˆv�t˜T 4¨°8¸SÀ%ñ*ô *Ñ&€FˆI�y ! Qð �9˜iÐ'Ð'r+   c                 óz   — t          | |||||||d¦	  «	        \  }}	}
}}|€
J d¦   «         ‚|€
J d¦   «         ‚||	|
||fS )NTú#new_running_mean should not be Noneú"new_running_var should not be Noner  )rÂ   rÏ   rà  rú  rû  rÙ   rü  r:  rª  r	  r
  r  r  s                r,   Ú#_native_batch_norm_legit_functionalr%  ¦  sw   € õ" 	!Øˆv�t˜\¨;¸À(ÈCÐQUñ	ô 	ñØØØØØð Ð'Ð'Ð)NÑ'Ô'Ð'ØÐ&Ð&Ð(LÑ&Ô&Ð&Ø�9˜iÐ)9¸?ÐJÐJr+   c           	      ó  — t           j                             | ||||d|¦  «        }d}|t           j        j        j        k    r t           j                             | |¦  «        }t          j        |t           j        | j        | j	        ¬¦  «        S )a©  
    Return a reserve tensor for batch norm, used only by cudnn to pass forward state to the
    backward pass. This is needed for `_batch_norm_with_update` and `_batch_norm_no_update`,
    which support a variety of backends including cudnn. We create this tensor here to get
    the correct shape in the traced graph if we detect that will call the cudnn kernel,
    and rely on DCE to avoid materializing this tensor.
    Tr   )rê   ÚlayoutrŽ  )
rC   Ú_CÚ_select_batch_norm_backendÚ_BatchNormBackendÚCudnnÚ(_get_cudnn_batch_norm_reserve_space_sizeÚemptyÚuint8r'  rŽ  )	rÂ   rÏ   rà  rú  rû  r:  rÙ   ÚbackendÚreserve_sizes	            r,   Ú_get_batch_norm_reserve_tensorr1  ¿  sŠ   € õ  Œh×1Ò1Øˆv�t˜\¨;¸¸cñô €Gð €LØ•%”(Ô,Ô2Ò2Ð2Ý”x×HÒHØ�8ñ
ô 
ˆõ Œ;Ø�EœK°´ÀUÄ\ðñ ô ð r+   c                 ót   — t          | ||||d||d¦	  «	        \  }}}	}
}
t          | |||||d¬¦  «        }|||	|fS )NTF©rÙ   ©r  r1  ©rÂ   rÏ   rà  rú  rû  rü  r:  rª  r	  r
  rY   Úreserves               r,   Ú_batch_norm_with_updater7  Ü  sp   € õ *BØØØØØØØØØñ
*ô 
*Ñ&€FˆI�y ! Qõ -Øˆv�t˜\¨;¸Àdðñ ô €Gð �9˜i¨Ð0Ð0r+   c                 ó¨   — t          | ||||d||d¦	  «	        \  }}}	}
}t          | |||||d¬¦  «        }|
€
J d¦   «         ‚|€
J d¦   «         ‚|||	||
|fS )NTr3  r#  r$  r4  )rÂ   rÏ   rà  rú  rû  rü  r:  rª  r	  r
  Únew_rmÚnew_rvr6  s                r,   Ú"_batch_norm_with_update_functionalr;  ÷  sœ   € õ  	!Øˆv�t˜\¨;¸¸hÈÈTñ	ô 	ñØØØØØõ -Øˆv�t˜\¨;¸Àdðñ ô €Gð ÐÐÐDÑÔÐØÐÐÐCÑÔÐØ�I˜y¨'°6¸6ÐBÐBr+   c                 ót   — t          | ||||d||d¦	  «	        \  }}}	}
}
t          | |||||d¬¦  «        }|||	|fS )NFr3  r4  r5  s               r,   Ú_batch_norm_no_updater=    sp   € õ *BØØØØØØØØØñ
*ô 
*Ñ&€FˆI�y ! Qõ -Øˆv�t˜\¨;¸Àeðñ ô €Gð �9˜i¨Ð0Ð0r+   c                 óº   — |�J ‚t          j        | ¦  «        |k                          t           j        ¬¦  «        }|                     | ¦  «        | z  d|z  z  }||fS )Nrò   rj   )rC   rH  r=   r.  r/  )rÂ   rO  Ú	generatorr›  rJ  s        r,   Ú_fused_dropout_decompositionr@  -  s`   € ð ÐÐÐÝŒO˜EÑ"Ô" QÒ&×*Ò*µ´Ð*Ñ=Ô=€DØ
�,Š,�uÑ
Ô
 Ñ
%¨¨q©Ñ
1€CØ�ˆ;Ðr+   )rê   r'  rŽ  Ú
pin_memoryÚnon_blockingrV  rŽ  rA  rB  rV  c                óÈ  — |r|t           j        k    s
J d¦   «         ‚|r
J d¦   «         ‚t          | t           j        t          t
          t          t          f¦  «        sJ ‚|€4|€2|€0t          | t           j        ¦  «        r|                      ¦   «         S | S d}t          | t           j        ¦  «        r| }nt          j	        | ¦  «        }|�[||j
        k    rP|�-|j        dk    r"t           j                             ||¦  «        }d}t           j                             |||¦  «        }|�$|s"t           j                             ||¦  «        }d}|�t          j        ||¬¦  «        S |S )NÚTODOFr   TrU  )rC   Ústridedr4   r   r‰  r  r”  Úcomplexr‘  Úscalar_tensorrŽ  r¥  Ú_primsÚconvert_element_typeÚ
device_put)	r6   rê   r'  rŽ  rA  rB  rV  Údtype_convertedÚx_tensors	            r,   Ú_to_copyrM  7  s`  € ð Ð8˜¥5¤=Ò0Ð0Ð0°&Ñ0Ô0Ð0ØÐ!Ð!˜6Ñ!Ô!Ð!Ý�a�%œ,­­UµD½'ÐBÑCÔCÐCÐCÐCØ€~˜%˜-¨MÐ,AÝ�a�œÑ&Ô&ð 	Ø—7’7‘9”9ÐàˆHØ€Oå�!•U”\Ñ"Ô"ð *ØˆˆåÔ& qÑ)Ô)ˆàÐ˜f¨¬Ò7Ð7àÐ ¤°Ò!5Ð!5Ý”|×8Ò8¸À5ÑIÔIˆHØ"ˆOÝ”<×*Ò*¨8°V¸\ÑJÔJˆàÐ ÐÝ”<×4Ò4°X¸uÑEÔEˆØˆàÐ ÝŒ{˜8°=ÐAÑAÔAÐAØ€Or+   c                 ó6   — t                                | ¦  «        S r;   )r†   Úalias)r6   s    r,   Únop_decompositionrP  e  s   € õ �:Š:�a‰=Œ=Ðr+   Úout3Úexponential_average_factorÚepsilonc           
      ó0  — t                                | |||||||¦  «        \  }}	}
|r%||	|
|                      dt          j        ¬¦  «        fS ||                     d¦  «        |                     d¦  «        |                      dt          j        ¬¦  «        fS )Nr   rò   )r†   r  rk  rC   r.  )rÂ   rÏ   rà  rú  rû  rÙ   rR  rS  rô  rõ  ré  s              r,   Úcudnn_batch_normrU  m  s§   € õ ×$Ò$ØØØØØØØ"Øñ	ô 	�G€A€qˆ!ð ð CØ�1�a˜Ÿš¨µU´[˜ÑAÔAÐBÐBà	Ø×Ò˜ÑÔØ×Ò˜ÑÔØ�Š˜¥E¤KˆÑ0Ô0ð	ð r+   c                 óž   — t          |¦  «        D ]<\  }}|dk    r1|| j        k     r| j        |         |k    s|                      |¦  «        } Œ=| S r_   )rÙ  r{  r  rX   )r6   Úbroadcast_maskrì  r›  s       r,   Ú_broadcast_batch_norm_backwardrX  �  sW   € Ý Ñ/Ô/ð "ð "‰
ˆˆdØ�1Š9ˆ9˜d Q¤Všm˜m°´¸´ÀÒ0EÐ0EØ—’˜DÑ!Ô!ˆAøØ€Hr+   r6  c                 ó2   — t          | |||||||||	¦
  «
        S r;   )Únative_batch_norm_backward)rÞ  rÂ   rÏ   rú  rû  r	  r  r@  r:  r¿  r6  s              r,   Úbatch_norm_backwardr[  –  s4   € õ &ØØØØØØØØØØñô ð r+   c
                 ó>  ‡&— |j         }
|�|j         }n|
}t          j        |j         ¦  «        Š&ˆ&fd„| ||||||fD ¦   «         \  }}}}}}}|j        }|                     ¦   «         }|dk    s
J d¦   «         ‚d}t          t          |¦  «        ¦  «        ||         z  }|}|}|r|�|€J ‚n|�|€J ‚|}t          j        ||z   ¦  «        }dg|z  }||         ||<   g }t          |¦  «        D ]}||k    r| 
                    |¦  «         Œt          ||¦  «        }d|z  }t          j        ||¦  «        }t          j        |||z
  z  |¦  «        }t          ||z  |¦  «        }t          t          j        ||z  ||z  ¦  «        |¦  «        } |€t          ||¦  «        dz  }!nt          ||z  |¦  «        }!|r||z
  | z  }"||"z
  |z
  |!z  }#n||!z  }#|	d         r||z  }$nd }$|	d         r|}%nd }%|#                     |
¦  «        t          |$|¦  «        t          |%|¦  «        fS )Nc              3   óJ   •K  — | ]}|�|                      ‰¦  «        n|V — Œd S r;   rÜ  rã  s     €r,   rË  z-native_batch_norm_backward.<locals>.<genexpr>Í  sM   øè è € ð 	ð 	àð $% =ˆ�ŠÐÑÔÐ°að	ð 	ð 	ð 	ð 	ð 	r+   r#   z$rank of the input must be at least 2r"   rj   )rê   rH   rå  r  rR   r#  rs  rC   r  rW   ro  rX  rè   rÛ   r=   rÝ  )'rÞ  rÂ   rÏ   rú  rû  r	  r  r@  r:  r¿  r§  Úweight_dtyperè  ré  rê  Úrunning_mean_castÚrunning_var_castÚsave_mean_castÚsave_invstd_castræ  Ú
input_rankrì  Únum_featuresrç   r  rW  Úreduction_axesri  rú   Úgrad_output_sumÚdot_pÚ	grad_meanÚ
proj_scaleÚ
grad_scaleÚprojr[   rf  Ú	grad_biasr>   s'                                         @r,   rZ  rZ  ²  sÞ  ø€ ð ”+€KØÐØ”|ˆˆà"ˆÝÔ3°E´KÑ@Ô@Ðð	ð 	ð 	ð 	ð ØØØØØØð
ð	ñ 	ô 	ñØØØØØØØð ”+€KØ—’‘”€JØ˜Š?ˆ?ˆ?ÐB‰?Œ?ˆ?à€DÝ�˜[Ñ)Ô)Ñ*Ô*¨[¸Ô->Ñ>€LØ€DØ€FØð 5ØÐ FÐ$6Ð$6Ð$6Ð$6ð !Ð,Ð1AÐ1MÐ1MÐ1MØ ˆÝ”Ð-°Ñ3Ñ4Ô4ˆà!"  jÑ 0€NØ& tÔ,€N�4Ñà "€NÝ�:ÑÔð %ð %ˆØ�Š9ˆ9Ø×!Ò! !Ñ$Ô$Ð$øå)¨$°Ñ?Ô?€DØ�Ñ€DÝ”i ¨~Ñ>Ô>€OÝŒI�m z°DÑ'8Ñ9¸>ÑJÔJ€Eå.¨ÀÑ/EÀ~ÑVÔV€IÝ/ÝŒ	�%˜$‘, ¨¡Ñ0Ô0Øñô €Jð
 ÐÝ3°F¸NÑKÔKÈcÑQˆ
ˆ
å3Ø�[Ñ  .ñ
ô 
ˆ
ð ð 0Ø˜TÑ! ZÑ/ˆØ$ tÑ+¨yÑ8¸JÑFˆ
ˆ
à" ZÑ/ˆ
à�1„~ð Ø˜f‘nˆˆàˆà�1„~ð Ø#ˆ	ˆ	àˆ	ð 	�Š�kÑ"Ô"Ý�K Ñ.Ô.Ý�I˜|Ñ,Ô,ðð r+   c
                óÔ   — t          | |||||||||	¦
  «
        }|
||f}t          |¦  «        D ]:\  }}|�3t          ||         |j        ¦  «         t	          |||         d¬¦  «         Œ;|S r  )rZ  rÙ  r   r  r   )rÞ  rÂ   rÏ   rú  rû  r	  r  r@  r:  r¿  rD  rE  r×  r  r[   ri  rM   s                    r,   Únative_batch_norm_backward_outrn  	  s—   € õ" (ØØØØØØØØØØñô €Fð ˜˜dÐ#€JÝ˜&Ñ!Ô!ð Qð Q‰ˆˆ1Øˆ=Ý˜j¨œm¨Q¬WÑ5Ô5Ð5Ý Q°
¸1´È4ÐPÑPÔPÐPøàÐr+   Úsave_varc                 óL   — t                                || |||||d|g d¢¦
  «
        S ©NT)TTT©r†   rZ  )rÂ   ro   rÏ   rú  rû  r	  ro  rS  s           r,   Úmiopen_batch_norm_backwardrs  A	  s@   € õ ×*Ò*ØØØØØØØØØØÐÐñô ð r+   ÚreserveSpacec	                 óL   — t                                || |||||d|g d¢¦
  «
        S rq  rr  )	rÂ   ro   rÏ   rú  rû  r	  ro  rS  rt  s	            r,   Úcudnn_batch_norm_backwardrv  [	  s@   € õ ×*Ò*ØØØØØØØØØØÐÐñô ð r+   c                 ó^  ‡‡‡‡‡— | j         Š| j        Št          ‰¦  «        Št          j        ‰dv ˆfd„¦  «         | j        dd …         D ]}t          j        |dk    ˆfd„¦  «         Œ‰d         |d         z  dk    rš‰d         |d         z  dk    r…t          d„ t          ‰dd …         |¦  «        D ¦   «         ¦  «        }t          d„ t          ‰dd …         ||¦  «        D ¦   «         ¦  «        }t          j        j         	                    | ||¦  «        S d	„ Šd
„ Šˆˆˆfd„} |‰d         |d         ¦  «        \  }}}}	 |‰d         |d         ¦  «        \  }
}}}| dt          |d¦  «        |
f         }|	s|st          j        |d¬¦  «        S d„ } |||||	d¬¦  «        \  }} |||||d¬¦  «        \  }}d }t          t          |j        d         ¦  «        t          |j        d         ¦  «        ¦  «        D ]'\  }}|€|d|d d …|f         }Œ||d|d d …|f         z   }Œ(|||z  z  S )NrØ  c                  ó   •— d‰ › �S )Nz9adaptive_avg_pool2d(): Expected 3D or 4D tensor, but got r*   rw  s   €r,   r„   z%adaptive_avg_pool2d.<locals>.<lambda>€	  s   ø€ ÐRÈDÐRÐR€ r+   rW  r   c                  ó*   •— dt          ‰ ¦  «        › d�S )Nzjadaptive_avg_pool2d(): Expected input to have non-zero size for non-batch dimensions, but input has shape r  rÞ  rà  s   €r,   r„   z%adaptive_avg_pool2d.<locals>.<lambda>…	  s&   ø€ ð IÝ9>¸u¹¼ðIð Ið I€ r+   rV   c              3   ó&   K  — | ]\  }}||z  V — Œd S r;   r*   )r5   ri  r   s      r,   rË  z&adaptive_avg_pool2d.<locals>.<genexpr>‹	  s*   è è € ÐGÐG¡$ ! Q�q˜A‘vÐGÐGÐGÐGÐGÐGr+   c              3   ó4   K  — | ]\  }}}||d z
  |z  z
  V — ŒdS ©r"   Nr*   )r5   ri  r   r�  s       r,   rË  z&adaptive_avg_pool2d.<locals>.<genexpr>Œ	  sE   è è € ð 
ð 
Ù '  1 aˆA��Q‘˜!‘‰Oð
ð 
ð 
ð 
ð 
ð 
r+   c                 ó6   — t          j        | |z  |d¬¦  «        S )NÚtrunc©Úrounding_mode©rC   Údiv©rô  rõ  ré  s      r,   Ústart_indexz(adaptive_avg_pool2d.<locals>.start_index‘	  s   € ÝŒy˜˜Q™ °Ð9Ñ9Ô9Ð9r+   c                 óH   — t          j        | dz   |z  |z   dz
  |d¬¦  «        S )Nr"   r~  r  r�  rƒ  s      r,   Ú	end_indexz&adaptive_avg_pool2d.<locals>.end_index”	  s*   € ÝŒy˜!˜a™% 1™ q™¨1Ñ,¨a¸wÐGÑGÔGÐGr+   c                 óÞ  •— t          j        |‰t           j        ¬¦  «        } ‰||| ¦  «        }| |z  dz   }| |z  }|dk    p||z  dk     }|r|dz  }n|dk    r|dz  }t          j        |‰t           j        ¬¦  «        }|                     d¦  «        |z   }|rLt          j        | dz
  |j        |j        ¬¦  «        }	t          j        ||	¦  «        } ‰||| ¦  «        }
|
|z
  }n|}||||fS )Nr�  r"   r   rV   r³  )rC   r’  r´  rX   rG  rê   rŽ  Úminimum)Úin_sizeÚout_sizeÚorangeÚi0Ú	maxlengthÚin_size_modÚadaptiveÚ	range_maxrš  ÚmaxvalÚi1ÚlengthrŽ  r†  r„  s               €€€r,   Úcompute_idxz(adaptive_avg_pool2d.<locals>.compute_idx—	  s1  ø€ Ý”˜h¨v½U¼[ÐIÑIÔIˆØˆ[˜ ¨7Ñ3Ô3ˆð ˜xÑ'¨!Ñ+ˆ	Ø Ñ(ˆà# qÒ(ÐG¨H°{Ñ,BÀaÒ,GÐHˆØð 	Ø˜‰NˆIˆIØ˜AÒÐØ˜‰NˆIå”L °6ÅÄÐMÑMÔMˆ	Ø�lŠl˜2ÑÔ Ñ*ˆØð 	õ Ô(Ø˜!‘ 3¤9°S´Zðñ ô ˆFõ ”-  VÑ,Ô,ˆCð �˜6 8¨WÑ5Ô5ˆBØ˜"‘WˆFˆFàˆFØ�F˜I xÐ/Ð/r+   .r?  )r¡   rV   rƒ   c                 óø   — t          |t          ¦  «        r| |fS |dk     sJ ‚||                     d¦  «        k    }|dk    rt          |d¦  «        }t	          j        | |d¦  «        } t          || ¦  «        }| |fS )Nr   rV   rW  r?  r–   )r4   r   rX   rZ   rC   rc  )Úvalsr“  r�  r�  rR   r›  s         r,   Ú
maybe_maskz'adaptive_avg_pool2d.<locals>.maybe_mask¿	  sŒ   € Ý�f�gÑ&Ô&ð 	 Ø˜�<Ðð ˜’7�7�7�7à × 0Ò 0°Ñ 4Ô 4Ò4ˆDØ�bŠyˆyÝ(¨¨qÑ1Ô1�ÝÔ$ T¨4°Ñ5Ô5ˆDå& v°¨tÑ4Ô4ˆFØ˜�<Ðr+   )r�  rR   r¡   )rŽ  r  r€  rC   r…   rß  rò  Únnrý  Ú
avg_pool2drZ   rç   r   rW   )rÂ   rï  rÛ  rt  Úkernelr”  ÚidxhÚlength_hÚrange_max_hÚ
adaptive_hÚidxwÚlength_wÚrange_max_wÚ
adaptive_wr–  r—  Úretri  ÚjrŽ  r†  r{  r  r„  s                      @@@@@r,   Úadaptive_avg_pool2dr¥  v	  s  øøøøø€ ð
 Œ\€FØŒK€EÝˆu‰:Œ:€DÝ	„LØ�ˆØRÐRÐRÐRñô ð ð Œ[˜˜˜Ôð 
ð 
ˆÝŒØ�ŠFðIð Ið Ið Iñ	
ô 	
ð 	
ð 	
ð ˆR„y�;˜r”?Ñ" aÒ'Ð'¨E°"¬I¸ÀB¼Ñ,GÈ1Ò,LÐ,LÝÐGÐG­#¨e°B°C°C¬j¸+Ñ*FÔ*FÐGÑGÔGÑGÔGˆÝð 
ð 
Ý+.¨u°R°S°S¬z¸;ÈÑ+OÔ+Oð
ñ 
ô 
ñ 
ô 
ˆõ ŒxÔ"×-Ò-¨e°V¸VÑDÔDÐDð:ð :ð :ðHð Hð Hð0ð 0ð 0ð 0ð 0ð 0ð 0ð@ /:¨k¸%À¼)À[ÐQSÄ_Ñ.UÔ.UÑ+€Dˆ(�K Ø.9¨k¸%À¼)À[ÐQSÄ_Ñ.UÔ.UÑ+€Dˆ(�K à�Õ'¨¨aÑ0Ô0°$Ð6Ô7€Dàð .˜jð .ÝŒz˜$ HÐ-Ñ-Ô-Ð-ð ð  ð  ð  �ZØˆh˜¨j¸bðñ ô �N€Dˆ(ð  �ZØˆh˜¨j¸bðñ ô �N€Dˆ(ð
 €CÝ�˜dœj¨œnÑ-Ô-­u°T´ZÀ´^Ñ/DÔ/DÑEÔEð +ð +‰ˆˆ1Øˆ;Ø�s˜A˜q˜q˜q !�|Ô$ˆCˆCà˜˜S ! Q Q Q¨˜\Ô*Ñ*ˆCˆCØ�(˜XÑ%Ñ&Ð&r+   c                 óÌ  — t          j        d|› d�¦  «         t          t          j        | j        d | …         ¦  «        }t          t          j        |¦  «        }dg| j        z  }| j        d | …         |d | …<   |t                               || j	        ¬¦  «         
                    |¦  «        |z  z                        d¦  «        }|                      t          | j        d | …         ¦  «        t          |¦  «        z   ¦  «        }t                               |                     d¦  «        |g|                      d¦  «        d¬¦  «         
                    |j        ¦  «        S )NÚmax_unpoolingÚd_forward_outr"   r�  rV   Fr!  )rH   Úalert_not_deterministicr   ÚoperatorrÛ   r  r{  r†   r’  rŽ  r–  r#  rk  rs  r$  )	r~   r™  rï  rR   ÚncÚhwÚindices_nc_shapeÚindices_flatrª  s	            r,   Ú_max_unpoolndr¯  ß	  s>  € õ 
Ô!Ð"D°#Ð"DÐ"DÐ"DÑEÔEÐEÝ	•”˜dœj¨¨3¨$¨Ô/Ñ	0Ô	0€BÝ	•”˜kÑ	*Ô	*€BØ�s˜TœY‘ÐØ"œj¨¨3¨$¨Ô/Ð�U�s�d�UÑà•$—+’+˜b¨¬�+Ñ5Ô5×:Ò:Ð;KÑLÔLÈrÑQÑQß‚gˆb�k„kð ð �^Š^�D ¤¨E¨c¨T¨EÔ!2Ñ3Ô3µd¸;Ñ6GÔ6GÑGÑHÔH€FÝ×!Ò!Ø�Š�rÑÔ˜\˜N¨D¯LªL¸Ñ,<Ô,<Èð "ñ ô ç
‚dˆ6Œ<ÑÔðr+   c                 óò  ‡ ‡‡‡— t          j        ‰j        t           j        k    ˆfd„¦  «         t          j        t	          ‰¦  «        dk    ˆfd„¦  «         t          j        ‰ j        dv ˆ fd„¦  «         t          j        ‰ j        ‰j        k    ˆˆ fd„¦  «         t          d‰ j        ¦  «        D ]2Št          j        ‰                      ‰¦  «        dk    ˆˆ fd	„¦  «         Œ3t          ‰ ‰‰d¦  «        S )
Nc                  ó   •— d‰ j         › �S )Nz2elements in indices should be type int64 but got: rò   )r™  s   €r,   r„   zmax_unpool2d.<locals>.<lambda> 
  s   ø€ ÐTÀWÄ]ÐTÐT€ r+   r#   c                  ó*   •— dt          ‰ ¦  «        › d�S )NzMThere should be exactly two elements (height, width) in output_size, but got ú
 elements.©r€  ©rï  s   €r,   r„   zmax_unpool2d.<locals>.<lambda>
  ó'   ø€ ð4Ý˜;Ñ'Ô'ð4ð 4ð 4ð r+   rØ  c                  ó   •— d‰ j         › d�S )NzLInput to max_unpooling2d should be a 3d or 4d Tensor, but got a tensor with ú dimensions.rw  r“   s   €r,   r„   zmax_unpool2d.<locals>.<lambda>
  s!   ø€ ð=Ø%)¤Yð=ð =ð =ð r+   c                  ó(   •— d‰j         › d‰ j         › �S ©NzBExpected shape of indices to be same as that of the input tensor (z%) but got indices tensor with shape: rà  )r™  r~   s   €€r,   r„   zmax_unpool2d.<locals>.<lambda>
  s1   ø€ ðBÐQUÔQ[ð Bð BØ29´-ðBð Bð r+   r"   r   c                  ó    •— d‰j         › d‰ › d�S )NzZmax_unpooling2d(): Expected input to have non-zero size for non-batch dimensions, but got ú with dimension ú being empty.rà  )ri  r~   s   €€r,   r„   zmax_unpool2d.<locals>.<lambda>
  s4   ø€ ðHàœ:ðHð Hà78ðHð Hð Hð r+   )
rC   r…   rê   r´  r€  r{  r  rW   r*  r¯  )r~   r™  rï  ri  s   ```@r,   Úmax_unpool2dr¾  ÷	  sT  øøøø€ õ 
„LØŒ�œÒ$ØTÐTÐTÐTñô ð õ 
„LÝˆKÑÔ˜AÒð	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ	�VÐð	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ
�g”mÒ#ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ �1�d”iÑ Ô ð 
ð 
ˆÝŒØ�IŠI�a‰LŒL˜1Òðð ð ð ð ñ	
ô 	
ð 	
ð 	
õ ˜˜w¨°QÑ7Ô7Ð7r+   c                 ó
  ‡ ‡‡‡‡‡— t          j        ‰j        t           j        k    d„ ¦  «         t          j        ‰ j        dv ˆ fd„¦  «         t          j        t          ‰¦  «        dk    ˆfd„¦  «         t          j        t          ‰¦  «        dk    ˆfd„¦  «         t          j        t          ‰¦  «        dk    ˆfd„¦  «         t          j        ‰ j        ‰j        k    ˆˆ fd„¦  «         t          d	‰ j        ¦  «        D ]2Št          j        ‰                      ‰¦  «        d
k    ˆˆ fd„¦  «         Œ3t          j        ‰d
         d
k    o‰d	         d
k    o‰d         d
k    ˆfd„¦  «         t          ‰ ‰‰d¦  «        S )Nc                  ó   — dS )Nz(elements in indices should be type int64r*   r*   r+   r,   r„   zmax_unpool3d.<locals>.<lambda>0
  s   € Ð.X€ r+   ©r?  rð  c                  ó   •— d‰ j         › d�S )NzLInput to max_unpooling3d should be a 4d or 5d Tensor, but got a tensor with r¸  rw  ©rÂ   s   €r,   r„   zmax_unpool3d.<locals>.<lambda>4
  s   ø€ ÐwÐ_dÔ_iÐwÐwÐw€ r+   r‹   c                  ó*   •— dt          ‰ ¦  «        › d�S )NzVThere should be exactly three elements (depth, height, width) in output_size, but got r³  r´  rµ  s   €r,   r„   zmax_unpool3d.<locals>.<lambda>8
  r¶  r+   c                  ó*   •— dt          ‰ ¦  «        › d�S )NzRThere should be exactly three elements (depth, height, width) in stride, but got: r³  r´  ©rt  s   €r,   r„   zmax_unpool3d.<locals>.<lambda>?
  s   ø€ Ð|ÕehÐioÑepÔepÐ|Ð|Ð|€ r+   c                  ó*   •— dt          ‰ ¦  «        › d�S )NzSThere should be exactly three elements (depth, height, width) in padding, but got: r³  r´  )rÁ  s   €r,   r„   zmax_unpool3d.<locals>.<lambda>C
  s   ø€ Ð~ÕfiÐjqÑfrÔfrÐ~Ð~Ð~€ r+   c                  ó(   •— d‰j         › d‰ j         › �S rº  rà  )r™  rÂ   s   €€r,   r„   zmax_unpool3d.<locals>.<lambda>G
  s1   ø€ ðBÐQVÔQ\ð Bð BØ29´-ðBð Bð r+   r"   r   c                  ó    •— d‰j         › d‰ › d�S )NzZmax_unpooling3d(): Expected input to have non-zero size for non-batch dimensions, but got r¼  r½  rà  )ri  rÂ   s   €€r,   r„   zmax_unpool3d.<locals>.<lambda>P
  s4   ø€ ðIà œ;ðIð Ià89ðIð Ið Ið r+   r#   c                  ó   •— d‰ › �S )Nz5strides should be greater than zero, but got stride: r*   rÆ  s   €r,   r„   zmax_unpool3d.<locals>.<lambda>Y
  s   ø€ ÐPÈÐPÐP€ r+   )
rC   r…   rê   r´  r{  r€  r  rW   r*  r¯  )rÂ   r™  rï  rt  rÁ  ri  s   `````@r,   Úmax_unpool3drË  &
  sï  øøøøøø€ õ 
„LØŒ�œÒ$Ð&XÐ&Xñô ð õ 
„LØŒ
�fÐØwÐwÐwÐwñô ð õ 
„LÝˆKÑÔ˜AÒð	
ð 	
ð 	
ð 	
ñô ð õ 
„LÝˆF‰Œ�qÒØ|Ð|Ð|Ð|ñô ð õ 
„LÝˆG‰Œ˜ÒØ~Ð~Ð~Ð~ñô ð õ 
„LØŒ�w”}Ò$ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ �1�e”jÑ!Ô!ð 
ð 
ˆÝŒØ�JŠJ�q‰MŒM˜AÒðð ð ð ð ñ	
ô 	
ð 	
ð 	
õ 
„LØˆqŒ	�AŠÐ9˜& œ) aš-Ð9¨F°1¬I¸ªMØPÐPÐPÐPñô ð õ
 ˜ ¨°aÑ8Ô8Ð8r+   )rp   rq  c                ó,   — t          | |||d|¬¦  «        S )NT©Úinplacerp   ©Ú
_index_add©r6   rR   r�  rq  rp   s        r,   Ú
index_add_rÒ  _
  s   € õ �a˜˜e V°TÀÐGÑGÔGÐGr+   c                ó,   — t          | |||d|¬¦  «        S )NFrÍ  rÏ  rÑ  s        r,   Ú	index_addrÔ  k
  s   € õ �a˜˜e V°UÀ%ÐHÑHÔHÐHr+   rÎ  c                ó"  ‡‡‡‡‡‡— t          j        | j        ‰¦  «        Št          j        ‰j        dk    ˆfd„¦  «         ‰j        dk    r‰                     d¦  «        ndŠ|j        dk    r|                     ‰¦  «        ndŠt          j        ‰‰k    ˆˆˆfd„¦  «         ‰dk    rbt          j        | j        ¦  «        Št          j        ‰t          k    p!t          j	        t          ‰¦  «        ‰¦  «        ˆˆfd„¦  «         |‰z  }| j        dk    }|r|                      d¦  «        n| }d‰z  ‰fz   }|rt          j        nt          j        }	 |	|||d¬¦  «        }
|r| S |r|
                     d¦  «        n|
                     ¦   «         S )	Nr"   c                  ó   •— d‰ j         › d�S ©Nz(Index should have dimension 1 or 0 (got r:  rw  ©r�  s   €r,   r„   z_index_add.<locals>.<lambda>„
  ó   ø€ ÐH¸5¼:ÐHÐHÐH€ r+   r   c                  ó   •— d‰› d‰› d‰ ›�S )NzNumber of indices (z') should be equal to tensor.size(dim) (z), for dim=r*   )rR   Ú
index_sizerr  s   €€€r,   r„   z_index_add.<locals>.<lambda>Š
  s"   ø€ Ðs jÐsÐsÐYdÐsÐsÐmpÐsÐs€ r+   c                  ó0   •— dt          ‰ ¦  «        › d‰› d�S )Nzalpha argument of type z cannot be safely cast to type ú!)r¥  )rp   Úpython_types   €€r,   r„   z_index_add.<locals>.<lambda>‘
  s"   ø€ Ðh­d°5©k¬kÐhÐhÐZeÐhÐhÐh€ r+   r;   Tr!  )rH   Úcanonicalize_dimsr{  rC   r…   r*  Údtype_to_typerê   r”  Úis_weakly_lesser_typer¥  rX   r†   Ú
index_put_Ú	index_putrô  r­  )r6   rR   r�  rq  rÎ  rp   Úzero_dimrR  rš  rã  rÉ   rÛ  rÞ  rr  s    ``  `     @@@r,   rÐ  rÐ  x
  s±  øøøøøø€ õ Ô
! !¤&¨#Ñ
.Ô
.€CÝ	„LØŒ
�aŠØHÐHÐHÐHñô ð ð #(¤*°¢/ /�—’˜A‘”�°q€JØ&,¤k°A¢o o�&—+’+˜cÑ"Ô"Ð"¸1€KÝ	„LØ�zÒ!ØsÐsÐsÐsÐsÐsñô ð ð �‚z€zÝÔ)¨!¬'Ñ2Ô2ˆÝŒØ�4Òð EÝÔ*­4°©;¬;¸ÑDÔDØhÐhÐhÐhÐhñ	
ô 	
ð 	
ð
 ˜%‘ˆàŒv˜Š{€HØ#Ð	*ˆ�Š�Q‰Œˆ¨€BØ
�C‰-˜5˜(Ñ
"€CØ#*Ð>•”�µ´€IØ
ˆ)�B˜˜V°Ð
5Ñ
5Ô
5€CØð @Øˆà!)Ð?ˆs�{Š{˜1‰~Œ~ˆ~¨s¯~ª~Ñ/?Ô/?Ð?r+   r–   c           
      óˆ  — t          j        t          | ¦  «        dk    d„ ¦  «         t          | ¦  «        }| d                              ¦   «         }|dd …         }t	          d„ | D ¦   «         ¦  «        }|r||f}n||f}||z   }| d                              ||¦  «        }dt          |¦  «        z  }	t          |¦  «        D ]€}
| |
         }t                               ||	d||                     d¦  «        z
  fz   |¦  «        }|rt           	                    ||d|
¬¦  «        }Œbt           	                    ||d|
¬¦  «        }Œ�|S )Nr   c                  ó   — dS )Nz#received an empty list of sequencesr*   r*   r+   r,   r„   zpad_sequence.<locals>.<lambda>£
  s   € Ð-R€ r+   r"   c              3   ó@   K  — | ]}|                      d ¦  «        V — ŒdS rÉ  ©r*  )r5   r6   s     r,   rË  zpad_sequence.<locals>.<genexpr>§
  s,   è è € Ð/Ð/ �!—&’&˜‘)”)Ð/Ð/Ð/Ð/Ð/Ð/r+   )r   r   ©rR   r�  )
rC   r…   r€  r*  r�   rD  rW   r†   rm  rŸ  )Ú	sequencesÚbatch_firstÚpadding_valueÚsequences_sizeÚmax_sizeÚtrailing_dimsÚmax_lenÚout_dimsrÉ   Údim_paddingsri  ÚcurrseqÚrows                r,   Úpad_sequencerõ   
  sd  € õ 
„L•�Y‘” !Ò#Ð%RÐ%RÑSÔSÐSÝ˜‘^”^€NØ˜Œ|× Ò Ñ"Ô"€HØ˜Q˜R˜R”L€MÝÐ/Ð/ YÐ/Ñ/Ô/Ñ/Ô/€GØð -Ø" GÐ,ˆˆà˜^Ð,ˆØ˜-Ñ'€HØ
�AŒ,×
Ò
 ¨-Ñ
8Ô
8€CØ�C Ñ.Ô.Ñ.€LÝ�>Ñ"Ô"ð @ð @ˆØ˜A”,ˆÝ×"Ò"Ø�\ Q¨°'·,²,¸q±/´/Ñ(AÐ$BÑBÀMñ
ô 
ˆð ð 	@Ý×%Ò% c¨3°A¸QÐ%Ñ?Ô?ˆCˆCå×%Ò% c¨3°A¸QÐ%Ñ?Ô?ˆCˆCØ€Jr+   c                 ó*   — t          | |||d¬¦  «        S )NT©rÎ  ©Ú_index_copy©r6   rR   r�  rq  s       r,   Úindex_copy_rû  »
  s   € å�q˜#˜u f°dÐ;Ñ;Ô;Ð;r+   c                 ó*   — t          | |||d¬¦  «        S )NFr÷  rø  rú  s       r,   Ú
index_copyrý  À
  s   € õ �q˜#˜u f°eÐ<Ñ<Ô<Ð<r+   c                óÄ  ‡— t          j        | j        |¦  «        }t          j        ‰j        dk    ˆfd„¦  «         | j        dk    }|r|                      d¦  «        n| }‰j        dk    r‰                     d¦  «        n‰Šd|z  ‰fz   }|rt          j        nt          j        } ||||¦  «        }	|r| S |r|	 	                    d¦  «        n|	 
                    ¦   «         S )Nr"   c                  ó   •— d‰ j         › d�S r×  rw  rØ  s   €r,   r„   z_index_copy.<locals>.<lambda>Ì
  rÙ  r+   r   r;   )rH   rß  r{  rC   r…   rX   r†   râ  rã  rô  r­  )
r6   rR   r�  rq  rÎ  rä  rR  rš  rã  rÉ   s
     `       r,   rù  rù  Æ
  sí   ø€ õ Ô
! !¤&¨#Ñ
.Ô
.€CÝ	„LØŒ
�aŠØHÐHÐHÐHñô ð ð
 Œv˜Š{€HØ#Ð	*ˆ�Š�Q‰Œˆ¨€BØ"'¤*°¢/ /ˆE�OŠO˜AÑÔÐ°u€EØ
�C‰-˜5˜(Ñ
"€CØ#*Ð>•”�µ´€IØ
ˆ)�B˜˜VÑ
$Ô
$€CØð @Øˆà!)Ð?ˆs�{Š{˜1‰~Œ~ˆ~¨s¯~ª~Ñ/?Ô/?Ð?r+   c                 ó  — t          j        |                      d¦  «        | ¦  «        }t          j        t          j        | ¦  «         ¦  «        }| j        s| j        r|                      d¦  «        }n|}|t          j        |¦  «        z
  |fS )Nr*   r   )rC   rˆ  rk  rk   rß   r±  Úis_xpurC  )r~   r�   rm   rÝ   s       r,   Úlog_sigmoid_forwardr  Ü
  s~   € õ Œ-˜Ÿš rÑ*Ô*¨DÑ
1Ô
1€CÝŒ	•5”9˜T‘?”?Ð"Ñ#Ô#€AØ„|ð �t”{ð Ø—’ Ñ%Ô%ˆˆàˆØ•”˜Q‘”Ñ Ð'Ð'r+   ÚlowÚhighr?  c                 óˆ   — t          j        | j        t          |¦  «        t          |¦  «        | j        | j        |¬¦  «        S )N)r  r  rê   rŽ  r?  )ÚprimsÚ_uniform_helperr  r   rê   rŽ  )r6   r  r  r?  s       r,   Úuniformr  é
  sB   € õ Ô Ø	ŒÝ�c‰NŒNÝ�t‰_Œ_ØŒgØŒxØðñ ô ð r+   c                 óL   — |                       t          | |||¦  «        ¦  «        S r;   )r  r  )r~   r  r  r?  s       r,   Úuniform_r
  û
  s"   € à�:Š:•g˜d C¨¨yÑ9Ô9Ñ:Ô:Ð:r+   c                 óp  — t          | ¦  «        dz
  }|�At          j        |d u d„ ¦  «         t          j        t          |¦  «        |k    d„ ¦  «         |S |�Èt          j        |d u d„ ¦  «         t          j        t          |¦  «        |k    d„ ¦  «         g }t          |¦  «        D ]u\  }}t	          |¦  «        |k    r/|                     | |dz            t	          |¦  «        z  ¦  «         ŒG|                     t          | |dz            |z  ¦  «        ¦  «         Œv|S t          j        dd„ ¦  «         d S )Nr#   c                  ó   — dS ©Nz9Must specify exactly one of output_size and scale_factorsr*   r*   r+   r,   r„   z.upsample_compute_output_size.<locals>.<lambda>  ó   € ÐO€ r+   c                  ó   — dS ©NÚ r*   r*   r+   r,   r„   z.upsample_compute_output_size.<locals>.<lambda>  s   € ÀR€ r+   c                  ó   — dS r  r*   r*   r+   r,   r„   z.upsample_compute_output_size.<locals>.<lambda>  r  r+   c                  ó   — dS r  r*   r*   r+   r,   r„   z.upsample_compute_output_size.<locals>.<lambda>  s   € Àr€ r+   Fc                  ó   — dS r  r*   r*   r+   r,   r„   z.upsample_compute_output_size.<locals>.<lambda>  s   € ÐR€ r+   )r€  rC   r…   rÙ  r‰  ro  r   )r1  rï  Úscale_factorsÚspatial_dimensionsri  r�  s         r,   Úupsample_compute_output_sizer    sg  € Ý˜Z™œ¨1Ñ,ÐØÐÝŒØ˜TÐ!ØOÐOñ	
ô 	
ð 	
õ 	Œ•S˜Ñ%Ô%Ð);Ò;¸Z¸ZÑHÔHÐHØÐØÐ åŒØ˜4ÐØOÐOñ	
ô 	
ð 	
õ 	Œ•S˜Ñ'Ô'Ð+=Ò=¸z¸zÑJÔJÐJØˆÝ˜mÑ,Ô,ð 	Cð 	C‰DˆAˆqÝ�1‰vŒv˜Š{ˆ{Ø×"Ò" :¨a°!©eÔ#4µs¸1±v´vÑ#=Ñ>Ô>Ð>Ð>à×"Ò"¥7¨:°a¸!±eÔ+<¸qÑ+@Ñ#AÔ#AÑBÔBÐBÐBØÐÝ	„LØÐRÐRñô ð ð ð r+   c                 ó   — | €d S | |         S r;   r*   )Úscalesrš  s     r,   Úget_scale_valuer    s   € Ø€~ØˆtØ�#Œ;Ðr+   r  c                 ó˜   — t          |                      ¦   «         ||¦  «        }|r|nd gt          |¦  «        z  }t          | ||¦  «        S r;   ©r  r*  r€  Ú_upsample_nearest©rÂ   rï  r  Úosizer  s        r,   Ú_upsample_nearest_vecr   #  sO   € õ )¨¯ª©¬°{ÀMÑRÔR€Eà&Ð?ˆˆ¨T¨FµS¸±Z´ZÑ,?ð õ ˜U E¨6Ñ2Ô2Ð2r+   c                 óœ   — t          |                      ¦   «         ||¦  «        }|r|nd gt          |¦  «        z  }t          | ||d¬¦  «        S ©NT©Úexactr  r  s        r,   Ú_upsample_nearest_exact_vecr%  8  sT   € õ )¨¯ª©¬°{ÀMÑRÔR€Eà&Ð?ˆˆ¨T¨FµS¸±Z´ZÑ,?ð õ ˜U E¨6¸Ð>Ñ>Ô>Ð>r+   c                 óÚ  — g }t          |¦  «        }|rdnd}t          |¦  «        D ]Ã}||         }| j        | |z            }	||         �|	|	||         z  z  n|	|z  }
t          j        |t          j        | j        ¬¦  «        }||z   |
z                       t          j        ¦  «        }t          |dz
  |z
  ¦  «        D ]}| 	                    d¦  «        }Œ| 
                    |¦  «         ŒÄ|S )Nr¢   r–   r³  r"   rV   )r€  rW   r  rC   r’  rï   rŽ  r=   r´  rX   ro  )rÂ   rï  r  r$  r™  Únum_spatial_dimsr¡  rÛ  r  Úisizerq   Úoutput_indicesÚinput_indicesrY   s                 r,   Ú!_compute_upsample_nearest_indicesr+  M  s  € ð €GÝ˜;Ñ'Ô'ÐØÐ"ˆSˆS˜s€FåÐ#Ñ$Ô$ð &ð &ˆð ˜A”ˆØ”Ð-Ð-°Ñ1Ô2ˆØ/5°a¬yÐ/D�˜ ¨¤Ñ*Ñ+Ð+È%ÐRWÉ-ˆåœ eµ5´=ÈÌÐVÑVÔVˆØ(¨6Ñ1°UÑ:×>Ò>½u¼{ÑKÔKˆÝÐ'¨!Ñ+¨aÑ/Ñ0Ô0ð 	8ð 	8ˆAØ)×3Ò3°BÑ7Ô7ˆMˆMØ�Š�}Ñ%Ô%Ð%Ð%Ø€Nr+   )Úpreserve_memory_formatr  r  c                 ó&   — t          | ||g¦  «        S r;   ©r  ©rÂ   rï  r  s      r,   Úupsample_nearest1dr0  m  s   € õ ˜U K°&°Ñ:Ô:Ð:r+   c                 ó*   — t          | ||gd¬¦  «        S r"  r.  r/  s      r,   Úupsample_nearest_exact1dr2  y  s   € õ ˜U K°&°ÀÐFÑFÔFÐFr+   Úscales_hÚscales_wc                 ó(   — t          | |||g¦  «        S r;   r.  ©rÂ   rï  r3  r4  s       r,   Úupsample_nearest2dr7  ‡  s   € õ ˜U K°(¸HÐ1EÑFÔFÐFr+   c                 ó,   — t          | |||gd¬¦  «        S r"  r.  r6  s       r,   Ú_upsample_nearest_exact2dr9  ”  s    € õ ˜U K°(¸HÐ1EÈTÐRÑRÔRÐRr+   Úscales_dc                 ó*   — t          | ||||g¦  «        S r;   r.  ©rÂ   rï  r:  r3  r4  s        r,   Úupsample_nearest3dr=  £  s   € õ ˜U K°(¸HÀhÐ1OÑPÔPÐPr+   c                 ó.   — t          | ||||gd¬¦  «        S r"  r.  r<  s        r,   Ú_upsample_nearest_exact3dr?  ±  s+   € õ Øˆ{˜X x°Ð:À$ðñ ô ð r+   r$  c                 ó8  — t          | |||¬¦  «        }d d g|z   }t                               | |¦  «        }|j        dk    rYt	          j        | ¦  «        }| j        d         }| j        j        dk    r|dk     rt          j
        }|                     |¬¦  «        }|S )Nr#  r?  r"   ÚcudarU  )r+  r†   Ú_unsafe_indexr{  rH   r   r  rŽ  r¥  rC   rZ  r­  )	rÂ   rï  r  r$  Úspatial_indicesr™  r  rV  Ú
n_channelss	            r,   r  r  Ã  s«   € õ 8Øˆ{˜F¨%ðñ ô €Oð �Tˆl˜_Ñ,€GÝ×Ò  wÑ/Ô/€Fà„{�aÒÐåÔ3°EÑ:Ô:ˆð ”[ ”^ˆ
ØŒ<Ô Ò&Ð&¨:¸ª>¨>Ý!Ô3ˆMà×"Ò"°Ð"Ñ?Ô?ˆØ€Mr+   c                 óÜ   ‡ ‡— |r|rdŠn|rdŠn|rdŠndŠt          ‰ ¦  «        ‰z  dk    sJ t          ‰ ¦  «        ¦   «         ‚ˆˆ fd„t          dt          ‰ ¦  «        ‰¦  «        D ¦   «         S )Nrð  r?  r‹   r#   r   c                 óD   •— g | ]}t          ‰||‰z   …         ¦  «        ‘ŒS r*   rÞ  )r5   ri  Ú
group_sizeÚparamss     €€r,   r8   z!gather_params.<locals>.<listcomp>é  s<   ø€ ð ð ð Ø./�ˆf�Q˜˜Z™Ð'Ô(Ñ)Ô)ðð ð r+   )r€  rW   )rH  Ú
has_biasesÚhas_projectionsrG  s   `  @r,   Úgather_paramsrK  Þ  s©   øø€ Øð �oð Øˆ
ˆ
Ø	ð Øˆ
ˆ
Ø	ð Øˆ
ˆ
àˆ
åˆv‰;Œ;˜Ñ# qÒ(Ð(Ð(­#¨f©+¬+Ñ(Ô(Ð(ðð ð ð ð Ý38¸½CÀ¹K¼KÈÑ3TÔ3Tðñ ô ð r+   c                 ó¢   — |r3| d|z           |d|z           }}| d|z  dz            |d|z  dz            }}n| |         ||         }}d\  }}||||fS )Nr#   r"   ©NNr*   )rH  Úhiddensri  ÚbidirectionalÚ
cur_paramsÚ
cur_hiddenÚbidir_paramsÚbidir_hiddens           r,   Úparams_hiddensrT  î  sr   € Øð 0Ø!'¨¨A©¤°¸¸A¹´�Jˆ
Ø%+¨A°©E°A©IÔ%6¸ÀÀAÁÈÁ	Ô8J�lˆˆà!'¨¤¨G°A¬J�Jˆ
Ø%/Ñ"ˆ�là�z <°Ð=Ð=r+   c                 óš   — ||k    sJ ‚|                      |                      d|||z
  ¦  «        ¦  «         |                      dd|¦  «        S rv   )ro  r+  )rQ  Úlast_batch_sizeÚ
batch_sizerN  s       r,   Úupdate_hidden_for_packedrX  ù  sT   € Ø˜ZÒ'Ð'Ð'Ð'Ø‡N‚N�:×$Ò$ Q¨
°OÀjÑ4PÑQÔQÑRÔRÐRØ×Ò˜Q  :Ñ.Ô.Ð.r+   c           	      ó~   — ||k    r| S ||k     sJ ‚t          j        | |                     d|||z
  ¦  «        f¦  «        S rv   )rC   Úconcatr+  )rQ  rV  rW  Ú
inp_hiddens       r,   Ú update_hidden_for_packed_reverser\  ÿ  s\   € ð ˜*Ò$Ð$ØÐØ˜ZÒ'Ð'Ð'Ð'ÝŒ<àØ×Ò˜a °*¸Ñ2NÑOÔOð	
ñô ð r+   c           	      ó¼  — |d         }|d         }|r|d         nd }	|r|d         nd }
g }g }|r|d         n|d         }|                      dd|¦  «        }t          j        | t          |¦  «        ¦  «        }|r|d d d…         }|D ]d} | j        d         }||k    rn'|rt          ||||¦  «        }nt          ||||¦  «        } || |||	||
¦  «        }|}|                     |¦  «         Œe|r|                     ¦   «          n)|                     |¦  «         |                     ¦   «          t          j	        |d¦  «        }|st          j	        |d¦  «        n|}||fS )Nr   r"   r#   r‹   rV   )
r+  rC   r’  rs  r  r\  rX  ro  Úreverser,  )ÚinpÚhiddenrH  rI  Ú	hidden_fnÚbatch_sizesr^  Ú	ih_weightÚ	hh_weightÚih_biasÚhh_biasÚstep_outputrN  rV  rQ  Ú	split_inpri  rÉ   Ú
hidden_outs                      r,   Úone_layer_rnn_datarj    s¯  € ð �q”	€IØ�q”	€IØ%Ð/ˆf�QŒiˆi¨4€GØ%Ð/ˆf�QŒiˆi¨4€Gà€KØ"$€Gà)0ÐD�k "”o�o°kÀ!´n€OØ—’˜q ! _Ñ5Ô5€JÝ”˜C¥ kÑ!2Ô!2Ñ3Ô3€IØð $Ø˜d˜d ˜d”Oˆ	Øð 'ð 'ˆØŒI�aŒLˆà˜aÒÐØàð 	Ý9Ø˜O¨Q°ñô ˆJˆJõ 2Ø˜O¨Q°ñô ˆJð �Y˜s J°	¸7ÀIÈwÑWÔWˆ
ØˆØ×Ò˜:Ñ&Ô&Ð&Ð&àð Ø×ÒÑÔÐÐà�Š�zÑ"Ô"Ð"Ø�ŠÑÔÐå
Œ)�K Ñ
#Ô
#€CØ.5ÐE•”˜7 AÑ&Ô&Ð&¸:€JØ�
ˆ?Ðr+   c                 ó   ‡ — ˆ fd„}|S )Nc                 óH   •—  ‰t          j        |||¦  «        | z   ¦  «        S r;   ©rÄ   Úlinear©ri  rQ  rc  re  rd  rf  Únonlinearitys         €r,   rN   zrnn_cell.<locals>.inner<  s&   ø€ Øˆ|�AœH Z°¸GÑDÔDÀqÑHÑIÔIÐIr+   r*   ©rp  rN   s   ` r,   Úrnn_cellrr  ;  s(   ø€ ðJð Jð Jð Jð Jð €Lr+   c                 ó   ‡ — ˆ fd„}|S )Nc                 ót   •— t          j        | ||¦  «        }  ‰t          j        |||¦  «        | z   ¦  «        S r;   rm  ro  s         €r,   rN   zrnn_cell_data.<locals>.innerC  s9   ø€ ÝŒH�Q˜	 7Ñ+Ô+ˆØˆ|�AœH Z°¸GÑDÔDÀqÑHÑIÔIÐIr+   r*   rq  s   ` r,   Úrnn_cell_dataru  B  s(   ø€ ðJð Jð Jð Jð Jð €Lr+   c           	      ó¶  — |d         }|d         }|r|d         nd }|r|d         nd }	t          j        | ||¦  «        }
|r|
                     d¦  «        n|
}
|                     d¦  «        }g }|
D ]'} |||||||	¦  «        }|                     |¦  «         Œ(|r|                     ¦   «          t          j        |d¦  «        }||                     d¦  «        fS )Nr   r"   r#   r‹   )	rÄ   rn  ÚfliprX   ro  r^  rC   r,  rô  )r_  r`  rH  rI  ra  r^  rc  rd  re  rf  Úprecomputed_inputrQ  rg  ri  rÉ   s                  r,   Úone_layer_rnnry  J  s  € Ø�q”	€IØ�q”	€IØ%Ð/ˆf�QŒiˆi¨4€GØ%Ð/ˆf�QŒiˆi¨4€Gåœ  i°Ñ9Ô9ÐØ5<ÐSÐ)×.Ò.¨qÑ1Ô1Ð1ÐBSÐØ×!Ò! !Ñ$Ô$€JØ€KØð 'ð 'ˆØ�Y˜q *¨i¸À)ÈWÑUÔUˆ
Ø×Ò˜:Ñ&Ô&Ð&Ð&àð Ø×ÒÑÔÐå
Œ)�K Ñ
#Ô
#€Cà�
×"Ò" 1Ñ%Ô%Ð%Ð%r+   c                 óþ  — |d         }|d         }|r|d         }|d         }nLt          j        |                     ¦   «         ¦  «        }t          j        |                     ¦   «         ¦  «        }|d                              d¦  «        }	|d                              d¦  «        }
g }d}|	                     d¦  «        }d}d}d}d}|                      ¦   «         } |	                     ¦   «         }	|
                     ¦   «         }
t           j        j        j                             | |||||	|
|||||||||¦  «        }|d         |d         |d         }}}|| 	                    d¦  «        | 	                    d¦  «        ffS )Nr   r"   r#   r‹   F)
rC   r  r*  rX   r­  r  r†   Úmkldnn_rnn_layerr†  rô  )r_  r`  rH  rI  r^  Úw0Úw1Úw2Úw3ÚhxÚcxrb  ÚmodeÚhidden_sizeÚ
num_layersrO  rë  r@  Úoutputsr]   ÚhyÚcys                         r,   Úmkldnn_one_layer_lstmrˆ  `  sq  € Ø	�Œ€BØ	�Œ€BØð $Ø�AŒYˆØ�AŒYˆˆåŒ[˜Ÿš™œÑ#Ô#ˆÝŒ[˜Ÿš™œÑ#Ô#ˆà	�Œ×	Ò	˜QÑ	Ô	€BØ	�Œ×	Ò	˜QÑ	Ô	€Bà€KØ€DØ—'’'˜!‘*”*€KØ€Jð €MØ€Kà€Eð �.Š.Ñ
Ô
€CØ	�Š‰Œ€BØ	�Š‰Œ€BÝŒiŒnÔ-×5Ò5ØØ
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØñ!ô €Gð$ ˜”
˜G AœJ¨°¬
ˆ2€r€AØˆr�zŠz˜!‰}Œ}˜bŸjšj¨™mœmÐ,Ð,Ð,r+   c
                 ó8  — |r|                       dd¦  «        n| } g }
t          |¦  «        D ]Ñ}t          ||||¦  «        \  }}}}|r||dz
  k     r|nd} |	| |||¦  «        \  }}|
                     |¦  «         |r( |	| |||d¬¦  «        \  }}|
                     |¦  «         |r-t	          j        ||g|                     ¦   «         dz
  ¦  «        } n|} |dk    r"|r ||dz
  k     rt	          j        | |d¬¦  «        } ŒÒ|r|                       dd¦  «        n| } | |
fS )Nr   r"   r–   T)r^  )r@  )Ú	transposerW   rT  ro  rC   r,  rR   rC  )rÂ   r`  rH  rI  r„  rC  r@  rO  rë  Úlayer_fnÚfinal_hiddensri  rP  rQ  rR  rS  Úfwd_inpÚ
fwd_hiddenÚbwd_inpÚ
bwd_hiddens                       r,   Ú_rnn_helperr‘  ’  sz  € ð &1Ð;ˆE�OŠO˜A˜qÑ!Ô!Ð!°e€EØ€Må�:ÑÔð >ð >ˆÝ=KØ�F˜A˜}ñ>
ô >
Ñ:ˆ
�J ¨lð $ÐD¨
°Q¸±UÒ(:Ð(:�'�'ÀˆØ&˜h u¨j¸*ÀjÑQÔQÑˆ�Ø×Ò˜ZÑ(Ô(Ð(àð 	-Ø"* (Ø�| \°:Àtð#ñ #ô #ÑˆG�Zð × Ò  Ñ,Ô,Ð,àð 	Ý”I˜w¨Ð0°'·+²+±-´-À!Ñ2CÑDÔDˆEˆEàˆEà�aŠ<ˆ<˜Eˆ< a¨*°q©.Ò&8Ð&8Ý”M %¨¸Ð=Ñ=Ô=ˆEøà%0Ð;ˆE�OŠO˜A˜qÑ!Ô!Ð!°e€EØ�-ÐÐr+   c	                 ó  — |                      d¦  «        }	t          ||d¦  «        }t          | |	|||||||t          t          t          t          j        ¦  «        ¬¦  «        ¦
  «
        \  }
}|
t          j        |d¦  «        fS ©Nr   F©ra  )	ÚunbindrK  r‘  r   ry  rr  rC   r®   Ústack©rÂ   r€  rH  rI  r„  rC  r@  rO  rë  r`  rÉ   rŒ  s               r,   Úrnn_tanh_inputr˜  »  ó†   € ð �YŠY�q‰\Œ\€FÝ˜6 :¨uÑ5Ô5€FÝ$ØØØØØØØØØÝ•­µ%´*Ñ)=Ô)=Ð>Ñ>Ô>ñô Ñ€Cˆð •”˜M¨1Ñ-Ô-Ð-Ð-r+   c	                 ó  — |                      d¦  «        }	t          ||d¦  «        }t          | |	|||||||t          t          t          t          j        ¦  «        ¬¦  «        ¦
  «
        \  }
}|
t          j        |d¦  «        fS r“  )	r•  rK  r‘  r   ry  rr  rC   r³  r–  r—  s               r,   Úrnn_relu_inputr›  Ú  r™  r+   c	                 ó
  — |                      d¦  «        }	t          ||d¦  «        }t          | |	||||||dt          t          |t          t          j        ¦  «        ¬¦  «        ¦
  «
        \  }
}|
t          j        |d¦  «        fS ©Nr   F©rb  ra  )	r•  rK  r‘  r   rj  ru  rC   r³  r–  ©Údatarb  r€  rH  rI  r„  rC  r@  rO  r`  rÉ   rŒ  s               r,   Úrnn_relu_datar¡  ù  ó‘   € ð �YŠY�q‰\Œ\€FÝ˜6 :¨uÑ5Ô5€FÝ$ØØØØØØØØØÝÝØ#Ý#¥E¤JÑ/Ô/ð	
ñ 	
ô 	
ñô Ñ€Cˆð  •”˜M¨1Ñ-Ô-Ð-Ð-r+   c	                 ó
  — |                      d¦  «        }	t          ||d¦  «        }t          | |	||||||dt          t          |t          t          j        ¦  «        ¬¦  «        ¦
  «
        \  }
}|
t          j        |d¦  «        fS r�  )	r•  rK  r‘  r   rj  ru  rC   r®   r–  rŸ  s               r,   Úrnn_tanh_datar¤    r¢  r+   c                 ó°  — t          j        |||¦  «        | z   }|                     d|¦  «        }|d                              ¦   «         }	|d                              ¦   «         }
|d                              ¦   «         }|d                              ¦   «         }|
|z  |	|z  z   }||                     ¦   «         z  }|€|nt          j        ||d ¦  «        }||fS )Nr?  r   r"   r#   r‹   ©rÄ   rn  ÚchunkrÆ   r®   )r_  r€  r�  rd  rf  Ú	hr_weightÚ	chunk_dimÚgatesÚchunked_gatesÚin_gateÚforget_gateÚ	cell_gateÚout_gater‡  r†  s                  r,   Ú	lstm_cellr°  ?  sÐ   € ÝŒH�R˜ GÑ,Ô,¨sÑ2€EØ—K’K  9Ñ-Ô-€MØ˜AÔ×&Ò&Ñ(Ô(€GØ Ô"×*Ò*Ñ,Ô,€KØ˜aÔ ×%Ò%Ñ'Ô'€IØ˜QÔ×'Ò'Ñ)Ô)€HØ	�rÑ	˜W yÑ0Ñ	1€BØ	�B—G’G‘I”IÑ	€BØÐ ˆˆ¥a¤h¨r°9¸dÑ&CÔ&C€Bàˆrˆ6€Mr+   c           
      ó¤  — |d         }|d         }|r|d         nd }|r|d         nd }t          |¦  «        dk    r|d         nt          |¦  «        dk    r|d         nd }	|d                              d¦  «        }
|d                              d¦  «        }t          j        | ||¦  «        }|r|                     d¦  «        n|}g }|D ]0} t          | |
||||	d¬¦  «        \  }
}|                     |
¦  «         Œ1|r|                     ¦   «          t          j	        |d¦  «        }||
 
                    d¦  «        | 
                    d¦  «        ffS )Nr   r"   r#   r‹   rð  r?  ©r©  )r€  rX   rÄ   rn  rw  r°  ro  r^  rC   r,  rô  )r_  r`  rH  rI  r^  rc  rd  re  rf  r¨  r€  r�  rx  rg  rÉ   s                  r,   Úone_layer_lstmr³  M  so  € Ø�q”	€IØ�q”	€IØ%Ð/ˆf�QŒiˆi¨4€GØ%Ð/ˆf�QŒiˆi¨4€Gå˜‘[”[ AÒ%Ð%ˆˆqŒ	ˆ	½¸F¹¼ÀqÒ8HÐ8H¨6°!¬9¨9Èdð ð 
�Œ×	Ò	˜QÑ	Ô	€BØ	�Œ×	Ò	˜QÑ	Ô	€Båœ  i°Ñ9Ô9ÐØ5<ÐSÐ)×.Ò.¨qÑ1Ô1Ð1ÐBSÐØ€KØ ð ð ˆÝ˜3  B¨	°7¸IÐQRÐSÑSÔS‰ˆˆBØ×Ò˜2ÑÔÐÐàð Ø×ÒÑÔÐå
Œ)�K Ñ
#Ô
#€Cà�—’˜A‘” §
¢
¨1¡¤Ð.Ð.Ð.r+   c           
      ód  — |d         }|d         }|r|d         nd }|r|d         nd }	t          |¦  «        dk    r|d         nt          |¦  «        dk    r|d         nd }
g }g }|r|d         n|d         }t          j        | t          |¦  «        ¦  «        }|r|d d d…         }|d         }|d         }|                     dd|¦  «        |                     dd|¦  «        }}|D �]5} | j        d         }t          j        | ||¦  «        } ||k     ru|                     |                     d|||z
  ¦  «        |                     d|||z
  ¦  «        f¦  «         |                     dd|¦  «        |                     dd|¦  «        }}||k    r^t          j	        ||                     d|||z
  ¦  «        fd¦  «        }t          j	        ||                     d|||z
  ¦  «        fd¦  «        }t          | ||||	|
d¬¦  «        \  }}|}|                     |¦  «         �Œ7|r|                     ¦   «          ||f}na|                     ||f¦  «         |                     ¦   «          t          |Ž \  }}t          j        |d¦  «        t          j        |d¦  «        f}t          j        |d¦  «        }||fS )	Nr   r"   r#   r‹   rð  r?  rV   r²  )r€  rC   r’  rs  r+  r  rÄ   rn  ro  rZ  r°  r^  rò  r,  )r_  r`  rH  rI  rb  r^  rc  rd  re  rf  r¨  rg  rN  rV  rh  Úorig_hxÚorig_cxr€  r�  ri  ri  Úhidden0Úhidden1rÉ   s                           r,   Úone_layer_lstm_datar¹  h  sø  € Ø�q”	€IØ�q”	€IØ%Ð/ˆf�QŒiˆi¨4€GØ%Ð/ˆf�QŒiˆi¨4€Gå˜‘[”[ AÒ%Ð%ˆˆqŒ	ˆ	½¸F¹¼ÀqÒ8HÐ8H¨6°!¬9¨9Èdð ð €KØ€Gà)0ÐD�k "”o�o°kÀ!´n€OÝ”˜C¥ kÑ!2Ô!2Ñ3Ô3€IØð $Ø˜d˜d ˜d”Oˆ	à�QŒi€GØ�QŒi€Gà�Š�q˜!˜_Ñ-Ô-Ø�Š�q˜!˜_Ñ-Ô-ð 	€Bð
 ð ñ ˆØŒI�aŒLˆÝŒh�s˜I wÑ/Ô/ˆð ˆÒÐØ�NŠNà—I’I˜a  O°aÑ$7Ñ8Ô8Ø—I’I˜a  O°aÑ$7Ñ8Ô8ðñô ð ð —Y’Y˜q ! QÑ'Ô'¨¯ª°1°a¸Ñ);Ô);�ˆBð ˆÒÐÝ”Ø�W—^’^ A ¸¸OÑ8KÑLÔLÐMÈqñô ˆBõ ”Ø�W—^’^ A ¸¸OÑ8KÑLÔLÐMÈqñô ˆBõ ˜3  B¨	°7¸IÐQRÐSÑSÔS‰ˆˆBØˆØ×Ò˜2ÑÔÐÑàð BØ×ÒÑÔÐØ˜"�Xˆ
ˆ
à�Š˜˜B�xÑ Ô Ð Ø�ŠÑÔÐÝ ˜=Ñˆ�Ý”Y˜w¨Ñ*Ô*­E¬I°g¸qÑ,AÔ,AÐAˆ
å
Œ)�K Ñ
#Ô
#€CØ�
ˆ?Ðr+   c                 ó>   — d„ } || ||¦  «        rt           S t          S )a*  Check whether we could use decompose lstm with mkldnn_rnn_layer.
    All the below conditions need to be met:
        * ``torch._C._get_mkldnn_enabled()`` returns ``True``.
        * All the input args are on CPU.
        * The dtypes of args are either torch.float or torch.bfloat16.
        * Inference.
        * ``has_projections`` returns ``False``.

    Args:
        * input: the input sequence to LSTM
        * hx: a tuple of the input hidden state and cell state ``(h_0, c_0)`` to LSTM
        * params: the weight and bias tensors of LSTM
    c                 ó4  — t           j                             ¦   «         sdS | gt          |¦  «        z   t          t	          j        |¦  «        ¦  «        z   }d„ |D ¦   «         }t          |¦  «        dk    rdS |                     ¦   «         }|t          j        d¦  «        k    rdS d„ |D ¦   «         }|D ]}|t           j	        t           j
        fvr dS Œ | j        rdS |d                              d¦  «        |d                              d¦  «        k    }|rdS dS )	NFc                 ó   — h | ]	}|j         ’Œ
S r*   r�  ©r5   Úts     r,   ú	<setcomp>zEselect_one_layer_lstm_function.<locals>.use_mkldnn.<locals>.<setcomp>¼  s   € Ð-Ð-Ð- �1”8Ð-Ð-Ð-r+   r"   r   c                 ó   — h | ]	}|j         ’Œ
S r*   rò   r½  s     r,   r¿  zEselect_one_layer_lstm_function.<locals>.use_mkldnn.<locals>.<setcomp>Ä  s   € Ð+Ð+Ð+˜a�!”'Ð+Ð+Ð+r+   r   r#   T)rC   r(  Ú_get_mkldnn_enabledrs  r   Úfrom_iterabler€  ÚpoprŽ  r  Úbfloat16Úrequires_gradr*  )	rÂ   r€  rH  rj  ÚdevicesrŽ  Údtypesrê   rJ  s	            r,   Ú
use_mkldnnz2select_one_layer_lstm_function.<locals>.use_mkldnn·  s#  € ÝŒx×+Ò+Ñ-Ô-ð 	Ø�5à�'�D ™HœHÑ$¥t­EÔ,?ÀÑ,GÔ,GÑ'HÔ'HÑHˆØ-Ð- WÐ-Ñ-Ô-ˆÝˆw‰<Œ<˜1ÒÐØ�5à—’‘”ˆØ•U”\ %Ñ(Ô(Ò(Ð(Ø�5à+Ð+ 7Ð+Ñ+Ô+ˆØð 	ð 	ˆEØ�Uœ[­%¬.Ð9Ð9Ð9Ø�u�uð :ð Ôð 	Ø�5à˜Qœ%Ÿ*š* Q™-œ-¨2¨a¬5¯:ª:°a©=¬=Ò8ˆØð 	Ø�5àˆtr+   )rˆ  r³  )rÂ   r€  rH  rÈ  s       r,   Úselect_one_layer_lstm_functionrÉ  ¨  s5   € ðð ð ð: €z�%˜˜VÑ$Ô$ð Ý$Ð$åÐr+   c	                 ó  — t          |¦  «        dk    s
J d¦   «         ‚t          |||d                              d¦  «        |d                              d¦  «        k    ¦  «        }t          t	          |d         |d         ¦  «        ¦  «        }	t          | ||¦  «        }
t          | |	||||||||
¦
  «
        \  }}t          t	          |Ž ¦  «        }|t          j        |d         d¦  «        t          j        |d         d¦  «        fS )Nr#   úlstm expects two hidden statesr   r"   )	r€  rK  r*  rs  rò  rÉ  r‘  rC   r–  )rÂ   r€  rH  rI  r„  rC  r@  rO  rë  r`  r‹  rÉ   rŒ  s                r,   Ú	lstm_implrÌ  Ú  sö   € õ ˆr‰7Œ7�aŠ<ˆ<ˆ<Ð9‰<Œ<ˆ<Ý˜6 :¨r°!¬u¯zªz¸!©}¬}ÀÀ1ÄÇ
Â
È1ÁÄÒ/MÑNÔN€FÝ•#�b˜”e˜R œUÑ#Ô#Ñ$Ô$€FÝ-¨e°R¸Ñ@Ô@€HÝ$ØØØØØØØØØØñô Ñ€Cˆõ �˜mÐ,Ñ-Ô-€MØ•”˜M¨!Ô,¨aÑ0Ô0µ%´+¸mÈAÔ>NÐPQÑ2RÔ2RÐRÐRr+   c	                 ó  — t          |¦  «        dk    s
J d¦   «         ‚t          |||d                              d¦  «        |d                              d¦  «        k    ¦  «        }t          t	          |d         |d         ¦  «        ¦  «        }	t          | |	||||||dt          t          |¬¦  «        ¦
  «
        \  }
}t          t	          |Ž ¦  «        }|
t          j	        |d         d¦  «        t          j	        |d         d¦  «        fS )Nr#   rË  r   r"   F)rb  )
r€  rK  r*  rs  rò  r‘  r   r¹  rC   r–  rŸ  s               r,   Úlstm_data_implrÎ  ü  só   € õ ˆr‰7Œ7�aŠ<ˆ<ˆ<Ð9‰<Œ<ˆ<Ý˜6 :¨r°!¬u¯zªz¸!©}¬}ÀÀ1ÄÇ
Â
È1ÁÄÒ/MÑNÔN€FÝ•#�b˜”e˜R œUÑ#Ô#Ñ$Ô$€FÝ$ØØØØØØØØØÝÕ#°Ð=Ñ=Ô=ñô Ñ€Cˆõ �˜mÐ,Ñ-Ô-€MØ•”˜M¨!Ô,¨aÑ0Ô0µ%´+¸mÈAÔ>NÐPQÑ2RÔ2RÐRÐRr+   c                 óp  — |                       dd¦  «        }t          j        |||¦  «                              dd¦  «        }|d         |d         z                        ¦   «         }|d         |d         z                        ¦   «         }	|d         |d         |z  z                        ¦   «         }
||
z
  |	z  |
z   S )Nr‹   r"   r#   r   )r§  rÄ   rn  rÆ   r®   ©r_  rQ  rc  re  rd  rf  Úchunked_igatesÚchunked_hgatesÚ
reset_gateÚ
input_gateÚnew_gates              r,   Úgru_cellrÖ    s°   € Ø—Y’Y˜q !‘_”_€NÝ”X˜j¨)°WÑ=Ô=×CÒCÀAÀqÑIÔI€NØ  Ô# n°QÔ&7Ñ7×@Ò@ÑBÔB€JØ  Ô# n°QÔ&7Ñ7×@Ò@ÑBÔB€JØ˜qÔ! ^°AÔ%6¸Ñ%CÑD×JÒJÑLÔL€HØ˜Ñ! ZÑ/°(Ñ:Ð:r+   c                 ó˜  — t          j        | ||¦  «                             dd¦  «        }t          j        |||¦  «                             dd¦  «        }|d         |d         z                        ¦   «         }|d         |d         z                        ¦   «         }	|d         |d         |z  z                        ¦   «         }
||
z
  |	z  |
z   S )Nr‹   r"   r   r#   r¦  rÐ  s              r,   Úgru_cell_datarØ  &  sÂ   € Ý”X˜c 9¨gÑ6Ô6×<Ò<¸QÀÑBÔB€NÝ”X˜j¨)°WÑ=Ô=×CÒCÀAÀqÑIÔI€NØ  Ô# n°QÔ&7Ñ7×@Ò@ÑBÔB€JØ  Ô# n°QÔ&7Ñ7×@Ò@ÑBÔB€JØ˜qÔ! ^°AÔ%6¸Ñ%CÑD×JÒJÑLÔL€HØ˜Ñ! ZÑ/°(Ñ:Ð:r+   c	                 óâ   — t          ||d¦  «        }t          | |                     d¦  «        ||||||dt          t          |t
          ¬¦  «        ¦
  «
        \  }	}
|	t          j        |
d¦  «        fS )NFr   rž  )rK  r‘  r•  r   rj  rØ  rC   r–  )r   rb  r€  rH  rI  r„  rC  r@  rO  rÉ   rŒ  s              r,   Úgru_impl_datarÚ  /  sz   € õ ˜6 :¨uÑ5Ô5€FÝ$ØØ
�	Š	�!‰ŒØØØØØØØÝÕ"°Å}ÐUÑUÔUñô Ñ€Cˆð •”˜M¨1Ñ-Ô-Ð-Ð-r+   c	                 óà   — t          ||d¦  «        }t          | |                     d¦  «        |||||||t          t          t
          ¬¦  «        ¦
  «
        \  }	}
|	t          j        |
d¦  «        fS )NFr   r”  )rK  r‘  r•  r   ry  rÖ  rC   r–  )rÂ   r€  rH  rI  r„  rC  r@  rO  rë  rÉ   rŒ  s              r,   Úgru_implrÜ  M  sw   € õ ˜6 :¨uÑ5Ô5€FÝ$ØØ
�	Š	�!‰ŒØØØØØØØÝ•­Ð2Ñ2Ô2ñô Ñ€Cˆð •”˜M¨1Ñ-Ô-Ð-Ð-r+   c                 óØ   — t          |                      ¦   «         ||¦  «        }t          |d¦  «        }t          |d¦  «        }t          j        j                             | ||||¦  «        S ©Nr   r"   )r  r*  r  rC   r  r†   Ú_upsample_bilinear2d_aa©rÂ   rï  Úalign_cornersr  r  Úscale_hÚscale_ws          r,   Úupsample_bilinear2d_aa_vecrä  k  sb   € õ )¨¯ª©¬°{ÀMÑRÔR€EÝ˜m¨QÑ/Ô/€GÝ˜m¨QÑ/Ô/€GÝŒ9Œ>×1Ò1Øˆu�m W¨gñô ð r+   c                 óØ   — t          |                      ¦   «         ||¦  «        }t          |d¦  «        }t          |d¦  «        }t          j        j                             | ||||¦  «        S rÞ  )r  r*  r  rC   r  r†   Ú_upsample_bicubic2d_aarà  s          r,   Úupsample_bicubic2d_aa_vecrç  w  sb   € õ )¨¯ª©¬°{ÀMÑRÔR€EÝ˜m¨QÑ/Ô/€GÝ˜m¨QÑ/Ô/€GÝŒ9Œ>×0Ò0Øˆu�m W¨gñô ð r+   c                 óš   — t          |                      ¦   «         ||¦  «        }|r|nd gt          |¦  «        z  }t          | |||¦  «        S r;   )r  r*  r€  Ú_upsample_linear)rÂ   rï  rá  r  r  r  s         r,   Ú_upsample_linear_vecrê  ƒ  sL   € õ )¨¯ª©¬°{ÀMÑRÔR€EØ+ÐDˆ]ˆ]°$°½#¸e¹*¼*Ñ1D€FÝ˜E 5¨-¸Ñ@Ô@Ð@r+   rá  c                 ó(   — t          | |||g¦  «        S r;   ©ré  )rÂ   rï  rá  r4  s       r,   Úupsample_linear1drí  ‘  s   € õ ˜E ;°À¸zÑJÔJÐJr+   c                 ó*   — t          | ||||g¦  «        S r;   rì  )rÂ   rï  rá  r3  r4  s        r,   Úupsample_bilinear2drï  œ  s   € õ ˜E ;°ÀÈ(Ð?SÑTÔTÐTr+   c                 ó,   — t          | |||||g¦  «        S r;   rì  )rÂ   rï  rá  r:  r3  r4  s         r,   Úupsample_trilinear3drñ  «  s&   € õ Øˆ{˜M¨H°hÀÐ+Iñô ð r+   c                 óP   — |r|dk    r| dz
  |dz
  z  ndS |�|dk    rd|z  n| |z  S )Nr"   rj   r   r*   )r‰  rŠ  rá  rq   s       r,   Ú_compute_scaleró  ¼  sK   € Øð VØ5=À²\°\�˜#‘ (¨S¡.Ñ1Ð1ÀqÐHà#Ð/°E¸A²I°Iˆs�U‰{ˆ{À7ÈXÑCUÐUr+   c                 ó&   — |r| |z  S | |dz   z  dz
  S ©Nr¢   r*   )rq   Ú	dst_indexrá  s      r,   Ú_compute_source_indexr÷  Ã  s)   € Øð /Ø�yÑ Ð à˜	 C™Ñ(¨3Ñ.Ð.r+   ÚweightsÚweights_precisionc                 óÒ   — t          d„ t          | |¦  «        D ¦   «         ¦  «        d|dz
  z  z   }||z	  }t          j        |dd¦  «                             t          j        ¦  «        S )Nc              3   óš   K  — | ]F\  }}|                      t          j        ¦  «        |                      t          j        ¦  «        z  V — ŒGd S r;   )r=   rC   r5  )r5   r�  ré  s      r,   rË  z%_sum_tensors_uint8.<locals>.<genexpr>Í  sX   è è € ð ð Ù26°!°Qˆ�Š�UŒ[ÑÔ˜AŸDšD¥¤Ñ-Ô-Ñ-ðð ð ð ð ð r+   r"   r   éÿ   )Ú_sum_tensorsrò  rC   r’   r=   r.  )r‹  rø  rù  rª  s       r,   Ú_sum_tensors_uint8rþ  Ê  s}   € õ ð ð Ý:=¸cÀ7Ñ:KÔ:Kðñ ô ñ ô à	
Ð  1Ñ$Ñ	%ñ'€Fð Ð(Ñ(€FÝŒ;�v˜q #Ñ&Ô&×)Ò)­%¬+Ñ6Ô6Ð6r+   c                 óÞ   — t          j        | ¦  «                             ¦   «         }d}t          j        ||j        ¬¦  «        }d|d|dz   z  z  z   }|dk    }||                     ¦   «         z
  S )Né   r�  r¢   r"   i €  )rC   r–  r�   r’  rŽ  rè   )rø  Ú
max_weightÚmax_weight_precisionÚ
precisionsÚvaluesr›  s         r,   Ú_compute_weight_precisionr  Ô  sp   € Ý”˜WÑ%Ô%×)Ò)Ñ+Ô+€JØÐÝ”Ð2¸:Ô;LÐMÑMÔM€JØ�:  z°A¡~Ñ!6Ñ7Ñ7€FØ�gÒ€DØ $§(¢(¡*¤*Ñ,Ð,r+   c           	      ó¦  ‡ ‡‡‡‡‡‡‡‡— ‰ j         d         }‰ j         dd …         }t          |¦  «        Št          j        ‰ t          j        j        ¬¦  «        \  }Šˆˆˆ fd„Šˆˆfd„t          t          |||¦  «        ¦  «        D ¦   «         }t          t          |Ž ¦  «        \  }ŠŠg }	t          ddgg‰z  Ž D ]dŠd d gˆˆˆfd„t          ‰¦  «        D ¦   «         z   }
t                               ‰ |
¦  «        }t          |‰¦  «        }|	                     |¦  «         Œet          t          ‰¦  «        ¦  «        D ]h}||         ‰|         z
                       dd	¦  «                             ‰¦  «        Šˆfd
„t          |	d d d…         |	dd d…         ¦  «        D ¦   «         }	Œit          |	¦  «        dk    sJ ‚|	d         }t          j        ‰ ¦  «        }‰ j        j        dk    r|dk     rt*          j        }t/          |t*          j        ¦  «        sJ ‚|                     |¬¦  «        }‰                      ¦   «         s|                     ¦   «         }|S )Nr"   r#   rN  c                 óŠ  •— t          | |‰	|¦  «        }t          j        |‰j        ¬¦  «                             ‰
¬¦  «        }t          ||‰	¦  «                             d¬¦  «        } |j        |j        d         gdg|z  ¢R Ž }|                     t          j	        ¦  «        }|dz                        | dz
  ¬¦  «        }|||fS )Nr�  rò   r–   rŒ   r   r"   r�   )
ró  rC   r’  rŽ  r=   r÷  r’   r#  r  r´  )Úinp_sizerŠ  r  ÚnsqueezeÚscale_factorri  Úx_f32r6   Úxp1rá  rê   rÂ   s            €€€r,   Ú
get_valuesz$_upsample_linear.<locals>.get_valuesî  sÂ   ø€ å% h°¸-ÈÑPÔPˆõ ŒL˜¨%¬,Ð7Ñ7Ô7×:Ò:ÀÐ:ÑGÔGˆå% l°A°}ÑEÔE×KÒKÐPSÐKÑTÔTˆØ�”˜eœk¨!œnÐ@°¨s°hÑ/?Ð@Ð@Ð@ˆØ�HŠH•U”[Ñ!Ô!ˆØ�1‰u�mŠm ¨1¡ˆmÑ-Ô-ˆØ�a˜ˆ}Ðr+   c           	      óF   •— g | ]\  }\  }}} ‰|||‰d z
  |z
  ¦  «        ‘ŒS r   r*   )r5   ri  r  rŠ  r  r  Ún_dimss        €€r,   r8   z$_upsample_linear.<locals>.<listcomp>û  sL   ø€ ð ð ð á+ˆAÑ+�˜( Fð 	ˆ
�8˜X v¨v¸©z¸A©~Ñ>Ô>ðð ð r+   r   c                 óH   •— g | ]}‰|         d k    r‰|         n‰|         ‘ŒS r   r*   )r5   Úkrô  Úxp1sÚxss     €€€r,   r8   z$_upsample_linear.<locals>.<listcomp>  s1   ø€ ÐUÐUÐUÀ! q¨¤t¨q¢y y˜b œe˜e°d¸1´gÐUÐUÐUr+   r–   rj   c                 óL   •— g | ] \  }}|t          j        ||z
  ‰¦  «        z   ‘Œ!S r*   )rC   rÛ   )r5   Úv1Úv2Úxscales      €r,   r8   z$_upsample_linear.<locals>.<listcomp>  sD   ø€ ð 
ð 
ð 
ñ ��Bð •”˜2 ™7 FÑ+Ô+Ñ+ð
ð 
ð 
r+   rA  é   rU  )r  r€  rH   rI   rP  ÚINT_TO_FLOATrÙ  rò  rs  r   rW   r†   rB  r   ro  Úreversedr’   r=   r   rŽ  r¥  rC   rZ  r4   r   r­  rG  Úround)rÂ   rï  rá  r  rD  Ú	inp_sizesrY   r  Úxs_f32Úvsrš  Úvri  r  rV  rô  rê   r  r  r  r  r  s   ` `            @@@@@@@r,   ré  ré  Ý  s¡  øøøøøøøøø€ ð ”˜Q”€JØ”˜A˜B˜B”€IÝ�‰^Œ^€FåÔ'ØÝ!ÔAÔNðñ ô �H€A€uð
ð ð ð ð ð ð ðð ð ð ð å/8Ý�	˜;¨Ñ/Ô/ñ0
ô 0
ðñ ô €Fõ �C ˜LÑ)Ô)Ñ€FˆB�à	€BÝ˜˜1�v�h Ñ'Ð(ð ð ˆØ�TˆlÐUÐUÐUÐUÐUÐUÅuÈVÁ}Ä}ÐUÑUÔUÑUˆÝ×Ò˜u cÑ*Ô*ˆÝ# A uÑ-Ô-ˆØ
�	Š	�!‰Œˆˆå•e˜F‘m”mÑ$Ô$ð 
ð 
ˆØ˜”)˜b œeÑ#×*Ò*¨3°Ñ4Ô4×7Ò7¸Ñ>Ô>ˆð
ð 
ð 
ð 
õ ˜b   1 œg r¨!¨$¨Q¨$¤xÑ0Ô0ð
ñ 
ô 
ˆˆõ ˆr‰7Œ7�aŠ<ˆ<ˆ<ˆ<Ø�ŒU€Fõ Ô/°Ñ6Ô6€Mð „|Ô˜FÒ"Ð" z°B¢ ÝÔ/ˆå�f�eœlÑ+Ô+Ð+Ð+Ð+à×Ò¨]ÐÑ;Ô;€Fà×"Ò"Ñ$Ô$ð  Ø—’‘”ˆà€Mr+   rô  rõ  c                 ó"   — | j         |j         k    S r;   rà  )rô  rõ  s     r,   Úis_same_sizer!  '  s   € àŒ7�a”gÒÐr+   c                 ó8   — t                                | |¦  «        S r;   )r†   r–  )r6   r  rJ   s      r,   Ú_reshape_aliasr#  ,  s   € õ �9Š9�Q˜ÑÔÐr+   c                 ó8   — t                                | |¦  «        S r;   )r†   r�  )r6   r™  s     r,   rB  rB  2  s   € å�:Š:�a˜Ñ!Ô!Ð!r+   c                 ó<   — t                                | |||¦  «        S r;   )r†   rã  )r6   r™  r   r"  s       r,   r$  r$  7  s   € å�>Š>˜!˜W e¨ZÑ8Ô8Ð8r+   c                 óž  — |D ]7}|�3t          j        |j        t           j        t           j        fv d„ ¦  «         Œ8t          j        |j        t           j        k    d„ ¦  «         ddlm}  ||                      ¦   «         dk    ¦  «        r;t           j	         
                    | |¦  «        }|                      |j        |¦  «        S t          t          |¦  «        ¦  «        D ]<}||         }|�0|                     d|                      |¦  «        dz
  ¬¦  «        ||<   Œ=t"                               | |¦  «                             | |¦  «        S )Nc                  ó   — dS ©Nz3tensors used as indices must be long or int tensorsr*   r*   r+   r,   r„   z&_unsafe_masked_index.<locals>.<lambda>B  r†  r+   c                  ó   — dS ©Nz*tensors used as masks must be bool tensorsr*   r*   r+   r,   r„   z&_unsafe_masked_index.<locals>.<lambda>G  ó   € Ð<€ r+   r   rä  r"   r„  )rC   r…   rê   rb  r‰  r”  rq  ro  rù   Ú_meta_registrationsÚmeta_index_TensorrD  r  rW   r€  r’   r*  r†   rB  rc  )r6   r›  r™  Úfillr�  ro  Úmeta_resultri  s           r,   r—  r—  <  sL  € àð ð ˆØÐÝŒLØ”¥¤
­E¬IÐ6Ð6ØMÐMñô ð øõ
 
„LØŒ
•e”jÒ Ø<Ð<ñô ð ð
 KÐJÐJÐJÐJÐJàÐ˜AŸGšG™IœI¨šNÑ+Ô+ð 3ÝÔ/×AÒAÀ!ÀWÑMÔMˆØ�zŠz˜+Ô+¨TÑ2Ô2Ð2å•3�w‘<”<Ñ Ô ð ?ð ?ˆØ˜”
ˆØÐØŸš¨°·²°q±	´	¸A±˜Ñ>Ô>ˆG�A‰Jøå×Ò˜a Ñ)Ô)×5Ò5°t°e¸TÑBÔBÐBr+   c                 ód  — |D ]7}|�3t          j        |j        t           j        t           j        fv d„ ¦  «         Œ8t          j        |j        t           j        k    d„ ¦  «         |                      ¦   «         dk    r|                      ¦   «         S t          t          |¦  «        ¦  «        D ]P}||         }|�D| 
                    |                      |¦  «         |                      |¦  «        dz
  ¬¦  «        ||<   ŒQ|                     | d¦  «        }t                               | ||d¬¦  «        S )Nc                  ó   — dS r(  r*   r*   r+   r,   r„   z5_unsafe_masked_index_put_accumulate.<locals>.<lambda>^  r†  r+   c                  ó   — dS r*  r*   r*   r+   r,   r„   z5_unsafe_masked_index_put_accumulate.<locals>.<lambda>c  r+  r+   r   r"   r„  Tr!  )rC   r…   rê   rb  r‰  r”  rù   r‘  rW   r€  r’   r*  rc  r†   r$  )r6   r›  r™  r  r�  ri  Úmasked_values          r,   Ú#_unsafe_masked_index_put_accumulater4  X  s$  € àð ð ˆØÐÝŒLØ”¥¤
­E¬IÐ6Ð6ØMÐMñô ð øõ
 
„LØŒ
•e”jÒ Ø<Ð<ñô ð ð
 	‡w‚w�y„y�A‚~€~Ø�wŠw‰yŒyÐå•3�w‘<”<Ñ Ô ð Hð HˆØ˜”
ˆØÐØŸš¨!¯&ª&°©)¬)¨¸¿ºÀ¹¼ÀQ¹˜ÑGÔGˆG�A‰Jøà×%Ò% t e¨QÑ/Ô/€LÝ×!Ò! ! W¨lÀtÐ!ÑLÔLÐLr+   c                 óö  — |                       ¦   «         }d}|dk     rd}|�9|dk    r,dg|z  }|j        d         ||<   |                     |¦  «        }n|}| |z  } t          j        ||k    |d¦  «        }	|	                     |¦  «        }
t          j        | ||
¦  «                             |¦  «         }t          j        ||k    |d¦  «        }|t          j	        j
        k    r |dk    r|                      dd¦  «        }||fS |�r|                     | j        ¦  «        }t          j        |||
¦  «                             |¦  «        }t          j        ||k    |d¦  «        }|                     ¦   «         }n+||k                         ¦   «                              | ¦  «        }|t          j        j
        k    r|                     ¦   «         }n,|t          j        j
        k    r|                     ¦   «         |z  }||fS )Nr"   r#   r   r*   r–   )rR   r  r–  rC   rl   rX   Úgatherrô  r!   r'   r   rD  r�  rè   r=   r)   r(   )r~   rô   rÏ   rå   r  r  r$  r  Úwr%  Úsafe_target_r  r  Úwsums                 r,   Ú_nll_loss_forwardr:  r  sè  € ð �XŠX‰ZŒZ€FØ€KØ�‚z€zØˆàÐØ�AŠ:ˆ:àðàñˆEð "(¤¨a¤ˆE�+ÑØ—’˜EÑ"Ô"ˆAˆAàˆAØ�a‰xˆÝ”+˜f¨Ò4°f¸aÑ@Ô@€KØ×(Ò(¨Ñ5Ô5€Lõ Œl˜4 ¨lÑ;Ô;×CÒCÀKÑPÔPÐP€FåŒ[˜ <Ò/°¸Ñ;Ô;€Fà•I”NÔ(Ò(Ð(¨V°aªZ¨ZØ—}’} R¨Ñ-Ô-ˆØ�|Ð#Ð#àÐØ�HŠH�T”ZÑ Ô ˆÝŒ|˜A˜{¨LÑ9Ô9×AÒAÀ+ÑNÔNˆÝŒ{˜6 \Ò1°4¸Ñ;Ô;ˆØ—x’x‘z”zˆˆà ,Ò.×3Ò3Ñ5Ô5×8Ò8¸Ñ>Ô>ˆà•I”MÔ'Ò'Ð'Ø—’‘”ˆˆØ	•i”nÔ*Ò	*Ð	*Ø—’‘” Ñ,ˆà�<ÐÐr+   c                 óZ  — |                       ¦   «         dk    r|                       ¦   «         dk    s
J d¦   «         ‚|                      ¦   «         dk    s
J d¦   «         ‚|                       ¦   «         dk    o|                      ¦   «         dk    }|s7| j        d         |j        d         k    sJ d| j        › d|j        › d�¦   «         ‚| j        d	         }|�E|                      ¦   «         dk    r|                     ¦   «         |k    sJ d
|› d|j        › �¦   «         ‚t          | ||||¦  «        S )Nr   r#   r6  r"   r7  r8  r9  r:  rV   z/weight tensor should be defined either for all z7 classes or no classes but got weight tensor of shape: )rR   r  rù   r:  )r~   rô   rÏ   rå   r  r<  Ú	n_classess          r,   Únll_loss_forwardr=  §  s<  € ð �8Š8‰:Œ:˜Š>ˆ>˜dŸhšh™jœj¨Ašo˜o˜oÐ/P™oœo˜oØ�:Š:‰<Œ<˜1ÒÐÐØEñ ÔÐð —8’8‘:”: ’?Ð8 v§z¢z¡|¤|°qÒ'8€LØð ˜DœJ qœM¨V¬\¸!¬_Ò<Ð<Ð<ØJ T¤ZÐJÐJ¸6¼<ÐJÐJÐJñ =Ô<Ð<ð ”
˜2”€Iàˆ>˜fŸjšj™lœl¨aÒ/Ð/°F·L²L±N´NÀiÒ4OÐ4OÐ4Oð	:¸)ð 	:ð 	:Ø+1¬<ð	:ð 	:ñ 5PÔ4OÐ4Oõ
 ˜T 6¨6°9¸lÑKÔKÐKr+   c                 ó(   — t          | ||||¦  «        S r;   )r:  )r~   rô   rÏ   rå   r  s        r,   Únll_loss2d_forwardr?  Ä  s   € õ ˜T 6¨6°9¸lÑKÔKÐKr+   ÚAc                 ó0   — |dz   | z  |dz   z
  | z  | z  dz   S )Nr#   r‹   r"   r*   ©r6   r@  s     r,   Ú_upsample_cubic_convolution1rC  Ò  s(   € Ø�‰U�a‰K˜1˜q™5Ñ! QÑ&¨Ñ*¨QÑ.Ð.r+   c                 ó<   — || z  d|z  z
  | z  d|z  z   | z  d|z  z
  S )Nrð  é   r?  r*   rB  s     r,   Ú_upsample_cubic_convolution2rF  Ö  s0   € Ø�‰U�Q˜‘U‰]˜aÑ ! a¡%Ñ'¨1Ñ,¨q°1©uÑ4Ð4r+   r¾  c                 óð  — d}| j         t          j         d¦  «        k    r‘t          j        | d| z
  gd¬¦  «        }t          j        | dz   d| z
  gd¬¦  «        }t          ||¦  «        }t	          ||¦  «        }t          j        |d¬¦  «        \  }}t          j        |d¬¦  «        \  }}	|||	|fS t          | dz   |¦  «        t	          | |¦  «        t	          d| z
  |¦  «        t          d| z
  |¦  «        fS )Ng      è¿r   rj   r   rƒ   rø   )rŽ  rC   r–  rF  rC  r•  )
r¾  r@  Útt1Útt2Úw03Úw12r|  r  r}  r~  s
             r,   Ú _upsample_get_cubic_coefficientsrL  Ú  s  € Ø€Aà„x•5”< Ñ&Ô&Ò&Ð&ÝŒk˜1˜c A™g˜,¨AÐ.Ñ.Ô.ˆÝŒk˜1˜s™7 C¨!¡GÐ,°!Ð4Ñ4Ô4ˆÝ*¨3°Ñ2Ô2ˆÝ*¨3°Ñ2Ô2ˆÝ”˜c qÐ)Ñ)Ô)‰ˆˆBÝ”˜c qÐ)Ñ)Ô)‰ˆˆBØ�2�r˜2ˆ~Ðõ )¨¨S©°!Ñ4Ô4Ý(¨¨AÑ.Ô.Ý(¨¨q©°!Ñ4Ô4Ý(¨¨q©°!Ñ4Ô4ð	
ð 	
r+   ÚcoeffsÚtsc                 ón   — t          |¦  «        }t          d„ t          | |¦  «        D ¦   «         ¦  «        S )Nc              3   ó&   K  — | ]\  }}||z  V — Œd S r;   r*   ©r5   rÓ  rÔ  s      r,   rË  z+_upsample_cubic_interp1d.<locals>.<genexpr>ð  s*   è è € ÐEÐE¡H R¨˜˜R™ÐEÐEÐEÐEÐEÐEr+   )rL  rý  rò  )rM  rN  Úcoeffs2s      r,   Ú_upsample_cubic_interp1drS  î  s6   € Ý.¨rÑ2Ô2€GÝÐEÐEµ°F¸GÑ0DÔ0DÐEÑEÔEÑEÔEÐEr+   c                 ó6   — t          t          j        | ¦  «        S r;   )r   rC   Úadd)rN  s    r,   rý  rý  ô  s   € Ý•%”)˜RÑ Ô Ð r+   Ú	num_stepsc                 óˆ   — | dk    rt          j        d||¬¦  «        S |s| dz
  | z  nd}t          j        | || ||¬¦  «        S )Nr"   r   r�  )ÚstepsrŽ  rê   )rC   rq  Úlinspace)rV  rá  rê   rŽ  rô  s        r,   Ú_linspace_from_neg_onerZ  ø  sY   € ð �A‚~€~ÝŒ|˜A f°EÐ:Ñ:Ô:Ð:à-:ÐAˆ)�a‰-˜9Ñ	$Ð	$À€AÝŒ>˜1˜"˜a y¸ÀuÐMÑMÔMÐMr+   ÚthetaÚhr7  c                 óè  — | j         }| j        }t          ||||¦  «                             d|d¦  «        }t          ||||¦  «                             |dd¦  «        }t	          j        d||¬¦  «        }t          j        j                             |ddd¬¦  «        }t          j        j                             |ddd¬¦  «        }t          j        j                             |d	dd¬¦  «        }||z   |z   S )
Nr"   )r"   r"   r"   r³  )r   r#   Úconstantr   ©rä  r‚  r   ©r"   r"   )r#   r   ©	rê   rŽ  rZ  r–  rC   r“  r˜  rý  rä  )	r[  r\  r7  rá  rê   rŽ  Úgrid_xÚgrid_yÚgrid_ones	            r,   Ú_make_base_grid_4dre    së   € ØŒK€EØŒ\€Fõ $ A }°e¸VÑDÔD×IÒIÈ!ÈQÐPQÑRÔR€FÝ# A }°e¸VÑDÔD×IÒIÈ!ÈQÐPQÑRÔR€FÝŒz˜)¨5¸Ð@Ñ@Ô@€Hõ ŒXÔ ×$Ò$ V°¸jÐPQÐ$ÑRÔR€FÝŒXÔ ×$Ò$ V°¸jÐPQÐ$ÑRÔR€FÝŒxÔ"×&Ò& x°VÀ*ÐTUÐ&ÑVÔV€HØ�F‰?˜XÑ%Ð%r+   rÛ  c                 ó’  — | j         }| j        }t          ||||¦  «                             dd|d¦  «        }t          ||||¦  «                             d|dd¦  «        }t          ||||¦  «                             |ddd¦  «        }	t	          j        d||¬¦  «        }
t          j        j                             |ddd¬¦  «        }t          j        j                             |ddd¬¦  «        }t          j        j                             |	d	dd¬¦  «        }	t          j        j                             |
d
dd¬¦  «        }
||z   |	z   |
z   S )Nr"   )r"   r"   r"   r"   r³  )r   r‹   r^  r   r_  r  ©r#   r"   )r‹   r   ra  )r[  rÛ  r\  r7  rá  rê   rŽ  rb  rc  Úgrid_zrd  s              r,   Ú_make_base_grid_5dri    s?  € ØŒK€EØŒ\€Få# A }°e¸VÑDÔD×IÒIÈ!ÈQÐPQÐSTÑUÔU€FÝ# A }°e¸VÑDÔD×IÒIÈ!ÈQÐPQÐSTÑUÔU€FÝ# A }°e¸VÑDÔD×IÒIÈ!ÈQÐPQÐSTÑUÔU€FÝŒz˜,¨e¸FÐCÑCÔC€Hõ ŒXÔ ×$Ò$ V°¸jÐPQÐ$ÑRÔR€FÝŒXÔ ×$Ò$ V°¸jÐPQÐ$ÑRÔR€FÝŒXÔ ×$Ò$ V°¸jÐPQÐ$ÑRÔR€FÝŒxÔ"×&Ò& x°VÀ*ÐTUÐ&ÑVÔV€HØ�F‰?˜VÑ# hÑ.Ð.r+   c                 óð   — |\  }}}}t          | |||¬¦  «        }|                     ddd¦  «        | j                             d¦  «        z                       d¦  «        }|                     |||d¦  «        S )N©rá  rV   r‹   r"   rW  r#   )re  r–  r\  rX   rè   )	r[  r*  rá  r  rY   r\  r7  Ú	base_gridÚgrids	            r,   Ú_affine_grid_generator_4drn  $  sw   € Ø�J€A€qˆ!ˆQÝ" 5¨!¨Q¸mÐLÑLÔL€Ið �NŠN˜2˜q !Ñ$Ô$ u¤x×'9Ò'9¸!Ñ'<Ô'<Ñ<×AÒAÀ"ÑEÔE€DØ�9Š9�Q˜˜1˜aÑ Ô Ð r+   c                 óö   — |\  }}}}}t          | ||||¬¦  «        }|                     ddd¦  «        | j                             d¦  «        z                       d¦  «        }	|	                     ||||d¦  «        S )Nrk  rV   r?  r"   rW  r‹   )ri  r–  r\  rX   rè   )
r[  r*  rá  r  rY   rÛ  r\  r7  rl  rm  s
             r,   Ú_affine_grid_generator_5drp  .  s}   € Ø�M€A€qˆ!ˆQ�Ý" 5¨!¨Q°ÀÐOÑOÔO€Ið �NŠN˜2˜q !Ñ$Ô$ u¤x×'9Ò'9¸!Ñ'<Ô'<Ñ<×AÒAÀ"ÑEÔE€DØ�9Š9�Q˜˜1˜a Ñ#Ô#Ð#r+   c                 óº   — t          j        t          |¦  «        dv d„ ¦  «         t          |¦  «        dk    rt          | ||¬¦  «        S t	          | ||¬¦  «        S )NrÁ  c                  ó   — dS )NzCaffine_grid_generator needs 4d (spatial) or 5d (volumetric) inputs.r*   r*   r+   r,   r„   z'affine_grid_generator.<locals>.<lambda>>  s   € ÐU€ r+   r?  rk  )rC   r…   r€  rn  rp  )r[  r*  rá  s      r,   Úaffine_grid_generatorrs  8  sg   € õ 
„LÝˆD‰	Œ	�VÐØUÐUñô ð õ ˆ4�y„y�A‚~€~Ý(¨°ÀMÐRÑRÔRÐRå(¨°ÀMÐRÑRÔRÐRr+   rm  Úinterpolation_modeÚpadding_modeÚ_expand_gridc           	      ó˜  ‡ ‡‡‡‡‡‡‡‡‡‡ ‡!‡"‡#‡$‡%‡&‡'‡(‡)‡*‡+‡,‡-— t          j        ‰dv ˆfd„¦  «         t          j        ‰dv ˆfd„¦  «         dt          dt          dt          fˆfd„Š-dt          dt          d	t          dt          fd
„Š+dt          dt          dt          fˆˆˆ+fd„Š dt          dt          dt          fˆ ˆ-fd„}‰ j        \  ŠŠŠ$Š%|j        \  }Š)Š*}|dk    sJ ‚‰r0|                     ‰d‰)‰*|¦  «                             ‰‰‰)‰*d¦  «        }dt          dt          dt          fˆ$ˆ%fd„Š&t          j        ‰‰ j        ¬¦  «                             ‰ddd¦  «        Št          j        ‰‰ j        ¬¦  «                             d‰dd¦  «        Šdt          dt          dt          dt          fˆˆˆˆ&ˆ)ˆ*fd„Šdt          dt          dt          fˆˆˆ ˆfd„Š"|d         }	|d         }
‰dk    rª ||	‰%¦  «        } ||
‰$¦  «        }| 
                    ¦   «         | 
                    ¦   «         cŠ'Š(‰'dz   ‰(}}‰'‰(dz   }}||}}||z
  ||z
  z  }||z
  ||z
  z  }||z
  ||z
  z  }|‰'z
  |‰(z
  z  }t          ˆ"fd„‰'‰(|f|||f|||f|||ffD ¦   «         ¦  «        S ‰dk    rM ||	‰%¦  «        } ||
‰$¦  «        }|                     ¦   «         }|                     ¦   «         } ‰"||d¦  «        S  ‰-|	‰%¦  «        } ‰-|
‰$¦  «        }| 
                    ¦   «         Š'| 
                    ¦   «         Š(|‰'z
  Š,|‰(z
  }‰s*‰,                     d¦  «        Š,|                     d¦  «        }dt          dt          dt          fˆ ˆ"ˆ$ˆ%fd„Š#dt          dt          fˆ#ˆ'ˆ(ˆ,fd„Š!t          ˆ!fd„t          d ¦  «        D ¦   «         ¦  «        }t!          ||¦  «        S )!N)r   r"   r#   c                  ó   •— d‰ › �S )NzInvalid interpolation mode r*   )rt  s   €r,   r„   z"_grid_sampler_2d.<locals>.<lambda>W  s   ø€ ÐBÐ.@ÐBÐB€ r+   c                  ó   •— d‰ › �S )NzInvalid padding mode r*   )ru  s   €r,   r„   z"_grid_sampler_2d.<locals>.<lambda>Z  s   ø€ Ð+QÀ<Ð+QÐ+Q€ r+   Úcoordsr*  rS   c                 óB   •— ‰r|dz  dz
  n|dz  }|dz  dz
  }| |z  |z   S rõ  r*   )rz  r*  rÛ   Úofsrá  s       €r,   Úunnormalizez%_grid_sampler_2d.<locals>.unnormalize]  s>   ø€ ð %2ÐCˆt�c‰z˜CÑÐ¸¸s¹
ˆØ�S‰j˜3ÑˆØ˜‰|˜cÑ!Ð!r+   Ú	twice_lowÚ
twice_highc                 ó^  — ||k    rt          j        | ¦  «        S |dz  }||z
  dz  }| |z
                       ¦   «         }t          j        ||¦  «        }||z                       ¦   «                              t           j        ¬¦  «        }t          j        |dz  dk    ||z   ||z   |z
  ¦  «        S )Nr#   rò   r"   r   )rC   r  rß   ÚfmodÚfloorr=   Úint8rl   )rz  r~  r  Ú
coords_minÚcoords_spanÚcoords2ÚextraÚflipss           r,   Úreflect_coordinatesz-_grid_sampler_2d.<locals>.reflect_coordinatesh  s¸   € Ø˜
Ò"Ð"ÝÔ# FÑ+Ô+Ð+Ø ‘]ˆ
Ø! IÑ-°Ñ2ˆØ˜JÑ&×+Ò+Ñ-Ô-ˆÝ”
˜7 KÑ0Ô0ˆØ˜;Ñ&×-Ò-Ñ/Ô/×2Ò2½¼Ð2ÑDÔDˆÝŒ{Ø�A‰I˜ŠN˜E JÑ.°¸jÑ0HÈ5Ñ0Pñ
ô 
ð 	
r+   c                 óÖ   •— ‰dk    r| S ‰dk    rt          j        | d|dz
  ¦  «        S ‰r ‰| dd|dz
  z  ¦  «        }n ‰| dd|z  dz
  ¦  «        }t          j        |d|dz
  ¦  «        S )Nr   r"   r#   rV   r‘   )rz  r*  Úcoords_reflectedrá  ru  r‰  s      €€€r,   Úcompute_coordinatesz-_grid_sampler_2d.<locals>.compute_coordinatest  s•   ø€ Ø˜1ÒÐØˆMØ˜QÒÐÝ”;˜v q¨$°©(Ñ3Ô3Ð3àð QØ#6Ð#6°v¸qÀ!ÀtÈaÁxÁ.Ñ#QÔ#QÐ Ð à#6Ð#6°v¸rÀ1ÀtÁ8ÈaÁ<Ñ#PÔ#PÐ Ý”;Ð/°°D¸1±HÑ=Ô=Ð=r+   c                 ó4   •—  ‰| |¦  «        } ‰||¦  «        S r;   r*   )rz  r*  Ú	coords_unrŒ  r}  s      €€r,   Úcompute_source_indexz._grid_sampler_2d.<locals>.compute_source_index€  s'   ø€ Ø�K ¨Ñ-Ô-ˆ	Ø"Ð" 9¨dÑ3Ô3Ð3r+   r#   r"   r  Úysc                 óš   •— t          j        d| k    t          j        | ‰k     t          j        d|k    |‰k     ¦  «        ¦  «        ¦  «        S rv   ©rC   r•  )r  r�  ÚiHÚiWs     €€r,   Úin_bounds_condz(_grid_sampler_2d.<locals>.in_bounds_cond�  sH   ø€ ÝÔ Ø�ŠG•UÔ& r¨B¢wµÔ0AÀ!ÀrÂ'È2ÐPRÊ7Ñ0SÔ0SÑTÔTñ
ô 
ð 	
r+   r�  Úwsc                 óè   •‡‡—  ‰| |¦  «        Š‰r‰ndŠt          ˆˆˆˆ	ˆ
fd„|                      t          j        ¬¦  «        |                     t          j        ¬¦  «        |fD ¦   «         ¦  «        S )Nr"   c              3   óp   •K  — | ]0}t          j        ‰|d ¦  «                             ‰‰‰‰¦  «        V — Œ1dS rÉ  )rC   rl   r–  )r5   r¾  r»  ré  rÕ  ÚoHÚoWs     €€€€€r,   rË  z1_grid_sampler_2d.<locals>.clip.<locals>.<genexpr>Ÿ  sY   øè è € ð 
ð 
àõ ŒK˜˜a Ñ#Ô#×(Ò(¨¨A¨r°2Ñ6Ô6ð
ð 
ð 
ð 
ð 
ð 
r+   rò   )rß  r=   rC   r´  )r  r�  r–  ré  rÕ  r¼  r»  rv  r•  r™  rš  s      @@€€€€€€r,   Úclipz_grid_sampler_2d.<locals>.clip˜  s™   øøø€ Øˆ~˜b "Ñ%Ô%ˆð
 Ð$ˆAˆA 1ˆÝð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
à—e’e¥%¤+�eÑ.Ô.°·²½E¼K°Ñ0HÔ0HÈ"ÐMð
ñ 
ô 
ñ 
ô 
ð 	
r+   ÚixÚiyc                 óD   •—  ‰	| ||¦  «        \  }}}‰‰‰||f         |z  S r;   r*   )
rœ  r�  r7  Úidx_xÚidx_yÚw_ÚC_idxÚN_idxrô  r›  s
         €€€€r,   Úget_summandz%_grid_sampler_2d.<locals>.get_summand¤  s4   ø€ à˜4  B¨™?œ?Ñˆˆu�bØ�˜˜u eÐ+Ô,¨rÑ1Ð1r+   ).r   ).r"   r   c              3   ó:   •K  — | ]\  }}} ‰|||¦  «        V — Œd S r;   r*   )r5   rœ  r�  r7  r¤  s       €r,   rË  z#_grid_sampler_2d.<locals>.<genexpr>º  sK   øè è € ð 
ð 
á��R˜ð ˆK˜˜B Ñ"Ô"ð
ð 
ð 
ð 
ð 
ð 
r+   c                 óN   •—  ‰| ‰¦  «        } ‰|‰¦  «        } ‰||d¦  «        S r_   r*   )rœ  r�  r6   r]   rŒ  r¤  r“  r”  s       €€€€r,   Úget_value_boundedz+_grid_sampler_2d.<locals>.get_value_boundedÙ  s;   ø€ Ø#Ð# B¨Ñ+Ô+ˆAØ#Ð# B¨Ñ+Ô+ˆAØ�;˜q ! QÑ'Ô'Ð'r+   r|  c                 ó¢   •— ‰| dz
  z   } ‰‰dz
  |¦  «         ‰‰|¦  «         ‰‰dz   |¦  «         ‰‰dz   |¦  «        f}t          |‰¦  «        S )Nr"   r#   )rS  )r|  Úiy_ofsÚcsr§  Úix_nwÚiy_nwÚtxs      €€€€r,   Ú	get_coeffz#_grid_sampler_2d.<locals>.get_coeffÞ  sv   ø€ Ø˜c A™gÑ&ˆFà!Ð! %¨!¡)¨VÑ4Ô4Ø!Ð! %¨Ñ0Ô0Ø!Ð! %¨!¡)¨VÑ4Ô4Ø!Ð! %¨!¡)¨VÑ4Ô4ð	ˆBõ ,¨B°Ñ3Ô3Ð3r+   c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S r;   r*   )r5   r|  r®  s     €r,   rË  z#_grid_sampler_2d.<locals>.<genexpr>è  s+   øè è € Ð:Ð:¨#�y�y ‘~”~Ð:Ð:Ð:Ð:Ð:Ð:r+   r?  )rC   r…   r   r‰  r  r–  r�  r’  rŽ  r   r‚  rý  r  rX   rß  rW   rS  ).rô  rm  rt  ru  rá  rv  r�  rY   Útwor6   r]   rœ  r�  Úix_neÚiy_neÚix_swÚiy_swÚix_seÚiy_seÚw_nwÚw_neÚw_swÚw_seÚ
ix_nearestÚ
iy_nearestÚtyrM  r¼  r¢  r»  r£  r›  rŒ  r®  r¤  r§  r“  r”  r•  r«  r¬  r™  rš  r‰  r­  r}  s.   ` ````                     @@@@@@@@@@@@@@@@@@@r,   Ú_grid_sampler_2dr¾  F  s‰  øøøøøøøøøøøøøøøøøøøøøøøø€ õ 
„LØ˜iÐ'ØBÐBÐBÐBñô ð õ 
„LØ˜	Ð!Ð#QÐ#QÐ#QÐ#Qñô ð ð"�Fð "­#ð "µ&ð "ð "ð "ð "ð "ð "ð

¥Fð 

µsð 

Íð 

ÕPVð 

ð 

ð 

ð 

ð
>¥Fð 
>µ#ð 
>½&ð 
>ð 
>ð 
>ð 
>ð 
>ð 
>ð 
>ð 
>ð4¥Vð 4µ3ð 4½6ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð ”7�L€A€qˆ"ˆbØ”Z�N€A€rˆ2ˆsØ�!Š8ˆ8ˆ8ˆ8àð Dð �yŠy˜˜A˜r 2 sÑ+Ô+×2Ò2°1°a¸¸RÀÑCÔCˆð
�6ð 
¥vð 
µ&ð 
ð 
ð 
ð 
ð 
ð 
ð 
õ
 ŒL˜ 1¤8Ð,Ñ,Ô,×1Ò1°!°Q¸¸1Ñ=Ô=€EÝŒL˜ 1¤8Ð,Ñ,Ô,×1Ò1°!°Q¸¸1Ñ=Ô=€Eð

•ð 

�Vð 

­ð 

Õ4Fð 

ð 

ð 

ð 

ð 

ð 

ð 

ð 

ð 

ð 

ð 

ð2�ð 2¥Fð 2µ&ð 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2ð
 	ˆVŒ€AØˆVŒ€Aà˜QÒÐØ!Ð! ! RÑ(Ô(ˆØ!Ð! ! RÑ(Ô(ˆà—x’x‘z”z 2§8¢8¡:¤:ˆˆˆuØ˜q‘y %ˆuˆØ˜e a™iˆuˆØ˜eˆuˆà˜‘
˜u r™zÑ*ˆØ�U‘
˜u r™zÑ*ˆØ˜‘
˜r E™zÑ*ˆØ�U‘
˜r E™zÑ*ˆåð 
ð 
ð 
ð 
ð ˜˜tÐ$Ø˜˜tÐ$Ø˜˜tÐ$Ø˜˜tÐ$ð	 ð
ñ 
ô 
ñ 
ô 
ð 	
ð 
˜qÒ	 Ð	 Ø!Ð! ! RÑ(Ô(ˆØ!Ð! ! RÑ(Ô(ˆà—X’X‘Z”Zˆ
Ø—X’X‘Z”Zˆ
àˆ{˜: z°1Ñ5Ô5Ð5àˆ[˜˜BÑÔˆØˆ[˜˜BÑÔˆà—’‘
”
ˆØ—’‘
”
ˆà�%‰ZˆØ�%‰Zˆàð 	!Ø—’˜a‘”ˆBØ—’˜a‘”ˆBð	(¥&ð 	(­fð 	(½ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð
	4�3ð 	4¥6ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4õ Ð:Ð:Ð:Ð:µ°q±´Ð:Ñ:Ô:Ñ:Ô:ˆÝ'¨°Ñ3Ô3Ð3r+   c                 ó*   — t          | ||||¬¦  «        S )N)rm  rt  ru  rá  )r¾  )rô  rm  rt  ru  rá  s        r,   Úgrid_sampler_2drÀ  ì  s*   € õ Ø	ØØ-Ø!Ø#ðñ ô ð r+   c                 óL  ‡ ‡— t          j        ‰                      ¦   «         dk    o‰                     ¦   «         dk    ˆ ˆfd„¦  «         t          j        ‰                      d¦  «        ‰                     d¦  «        k    ˆ ˆfd„¦  «         ‰ ‰z                       d¬¦  «        S )Nr#   r"   c                  ó\   •— d‰                       ¦   «         › d‰                      ¦   «         › �S )Nzmatrix @ vector expected, got rÄ  rƒ   ©r~   rµ  s   €€r,   r„   zmv.<locals>.<lambda>  s(   ø€ ÐJ°·²±´ÐJÐJ¸s¿wºw¹y¼yÐJÐJ€ r+   r   c                  óŽ   •— d‰                       d¦  «        › d‰                       d¦  «        › d‰                      d¦  «        › d�S )Nzsize mismatch, got input (r   r6   r"   z), vec (r:  rè  rÃ  s   €€r,   r„   zmv.<locals>.<lambda>	  sG   ø€ Ð`¨T¯YªY°q©\¬\Ð`Ð`¸D¿IºIÀa¹L¼LÐ`Ð`ÐRU×RZÒRZÐ[\ÑR]ÔR]Ð`Ð`Ð`€ r+   rƒ   )rC   r…   rR   r*  rè   rÃ  s   ``r,   r·  r·  ÿ  s§   øø€ õ 
„LØ�Š‰
Œ
�aŠÐ*˜CŸGšG™IœI¨šNØJÐJÐJÐJÐJñô ð õ 
„LØ�	Š	�!‰Œ˜Ÿš ™œÒ#Ø`Ð`Ð`Ð`Ð`ñô ð ð �3‰J×Ò ÐÑ"Ô"Ð"r+   c                 óÆ   — |�,|dz
  |z  dz   }d|z
  | z  |t          j        | ¦  «        z  z
  }nd|z
  | z  t          j        | ¦  «        z
  }|�||z  }t          ||¦  «        S r_   )rÄ   Ú
logsigmoidré   )r~   rô   rÏ   Ú
pos_weightrå   Ú
log_weighträ   s          r,   Ú binary_cross_entropy_with_logitsrÉ    s}   € ð
 ÐØ  1‘n¨Ñ.°Ñ2ˆ
Ø�F‘
˜dÑ" jµ1´<ÀÑ3EÔ3EÑ&EÑFˆˆà�F‘
˜dÑ"¥Q¤\°$Ñ%7Ô%7Ñ7ˆàÐØ�f‰}ˆå  iÑ0Ô0Ð0r+   Útensor1Útensor2Úis_outc                 ó   ‡	— | j         |j         k    r| |fn|| f\  }}ddlmŠ	 |j         dk    r|j         dk    sdS |j        r|sdS | j         dk    rdS  ‰	|                     ¦   «         dk    ¦  «        rdS |j        }|                     ¦   «         }dg}t          |dd …         ¦  «        D ] }|                     ||d         z  ¦  «         Œ!t          ˆ	fd	„t          |t          t          |¦  «        ¦  «        |¦  «        D ¦   «         ¦  «        S )
Nr   rä  r‹   r#   FTr"   rV   c              3   óJ   •K  — | ]\  }}} ‰|d k    ¦  «        p||k    V — ŒdS r|  r*   )r5   r¸   r¹   r*  ro  s       €r,   rË  zshould_fold.<locals>.<genexpr>7  sU   øè è € ð ð áˆD�%˜ð 	Ð˜T QšYÑ'Ô'Ð8¨4°5ª=ðð ð ð ð ð r+   )r{  rq  ro  rÅ  rù   r  rt  r  ro  r  rò  rs  )
rÊ  rË  rÌ  Út1Út2Út1_shapeÚ	t1_strideÚexpected_strider*  ro  s
            @r,   Úshould_foldrÔ    sZ  ø€ ð $+¤<°7´<Ò#?Ð#?ˆg�wÐÐÀgÈwÐEW�F€BˆàJÐJÐJÐJÐJÐJàŒG�qŠLˆL˜RœW¨š\˜\ØˆuØ	Ôð  ð ØˆtØ„|�qÒÐØˆuØÐ˜BŸHšH™JœJ¨!šOÑ,Ô,ð ØˆtàŒx€HØ—	’	‘”€Ið �c€OÝ˜ ! " "œÑ&Ô&ð ;ð ;ˆØ×Ò˜t o°bÔ&9Ñ9Ñ:Ô:Ð:Ð:Ýð ð ð ð å!$Ø•t�H _Ñ5Ô5Ñ6Ô6¸ñ"
ô "
ðñ ô ñ ô ð r+   )Úpass_is_out)rÌ  c                ór
  — |                       ¦   «         }|                      ¦   «         }|dk    r|dk    sJ ‚|dk    r|dk    rt          j        | |¦  «        S |dk    r|dk    rt          j        | |¦  «        S |dk    rA|dk    r;t          j        t          j        t          j        | d¦  «        |¦  «        d¦  «        S |dk    r|dk    rt          j        | |¦  «        S t          | ||¦  «        �rN||k    }|r|j        n| }|s|n|dk    r|  	                    ¦   «         n| }|j
        }t          |d d…         ¦  «        }	t          t          j        |	¦  «        }
|                      ¦   «         dk    }|r |	                     |j
        d         ¦  «         |                     |
|d         ¦  «        }|rUt          j        j                             |                     |¦  «        |	¦  «        }|r|j                             ¦   «         n|S t          j        j                             |                     |¦  «        |	¦  «        S |dk    �rÙ|dk    �rÒ|dk    r|                      d¦  «        nd}|                      d¦  «        }| j
        d d…         }|dk    r|                     d¦  «        n|                     d¦  «        }|dk    r|                     d¦  «        nd}g }t-          |dz
  ¦  «        D ]*}|                     |                     |¦  «        ¦  «         Œ+|dk    r„|dk    r~|d         |d         k    rl|d         dk    r*| j        r#t1          |                      d¦  «        |¦  «        S |d         dk    r*|j        r#t1          | |                     d¦  «        ¦  «        S t          t          j        ||¦  «        ¦  «        }|||gz   }t5          |¦  «        }|                      |¦  «                             |||¦  «        }|dk    }|rC||gz   }|                     |¦  «                             ||¦  «                             d¦  «        }n1|||gz   }|                     |¦  «                             |||¦  «        }|}	|dk    r|	                     |¦  «         |dk    r|	                     |¦  «         |r;|                     |¦  «                             d¦  «                             |	¦  «        S |                     |¦  «                             |	¦  «        S t          j        dd„ ¦  «         d S )	Nr   r"   r#   rV   rW  r‹   Fc                  ó   — dS )Nz/both arguments to matmul need to be at least 1Dr*   r*   r+   r,   r„   zmatmul.<locals>.<lambda>¶  s   € Ð$U€ r+   )rR   rC   Údotr·  rô  r­  rX   rÔ  r\  r¾  r  rs  r   rª  rÛ   ro  r#  r  r†   Ú_unsafe_viewr­  r*  rW   rÅ  r[  Úbroadcast_shapesr#  r�  Úbmmr–  r…   )rÊ  rË  rÌ  Údim_tensor1Údim_tensor2rŠ  rÏ  rÐ  Úsizes_1Úoutput_shapeÚfolded_dim1Út2_is_matrixÚ	t1_foldedrª  r  Úm1Úbatch_tensor1Úm2rO  Úbatch_tensor2ri  Úexpand_batch_portionÚtensor1_expand_sizeÚexpand_batch_productÚtensor1_expandedÚ
vector_rhsÚtensor2_expand_sizeÚtensor2_expandeds                               r,   r[  r[  ?  sc  € ð —+’+‘-”-€KØ—+’+‘-”-€KØ˜!ÒÐ ¨qÒ 0Ð 0Ð 0Ð 0Ø�aÒÐ˜K¨1Ò,Ð,ÝŒy˜ 'Ñ*Ô*Ð*Ø	˜Ò	Ð	˜k¨QÒ.Ð.ÝŒx˜ Ñ)Ô)Ð)Ø	˜Ò	Ð	˜k¨QÒ.Ð.ÝŒ}�UœX¥e¤o°g¸qÑ&AÔ&AÀ7ÑKÔKÈQÑOÔOÐOØ	˜Ò	Ð	˜k¨QÒ.Ð.ÝŒx˜ Ñ)Ô)Ð)Ý	�W˜g vÑ	.Ô	.ñ hWð   +Ò-ˆ	Ø$Ð1ˆWŒZˆZ¨'ˆà$ÐXˆGˆG¸+ÈÒ:JÐ:J¨7¯9ª9©;¬;¨;ÐPWð 	ð ”(ˆÝ˜G C R CœLÑ)Ô)ˆÝ�Xœ\¨<Ñ8Ô8ˆð —v’v‘x”x 1’}ˆØð 	-Ø×Ò ¤¨¤Ñ,Ô,Ð,ð —J’J˜{¨G°B¬KÑ8Ô8ˆ	Øð 	Oõ ”Y”^×0Ò0°·²¸bÑ1AÔ1AÀ<ÑPÔPˆFØ-6ÐB�6”9×'Ò'Ñ)Ô)Ð)¸FÐBå”9”>×.Ò.¨y¯|ª|¸BÑ/?Ô/?ÀÑNÔNÐNà	˜Ò	Ñ	˜k¨QÒ.Ñ.ð !,¨a¢ ˆG�LŠL˜ÑÔÐ°QˆØ�\Š\˜"ÑÔˆØœ c r cÔ*ˆØ!,¨q¢ ˆW�\Š\˜"ÑÔÐ°g·l²lÀ2Ñ6FÔ6FˆØ +¨a¢ ˆG�LŠL˜ÑÔÐ°Qˆà#%ˆå�{ Q‘Ñ'Ô'ð 	2ð 	2ˆAØ× Ò  §¢¨a¡¤Ñ1Ô1Ð1Ð1ð
 ˜1ÒÐØ˜qÒ Ð Ø˜aÔ  M°!Ô$4Ò4Ð4à˜QÔ 1Ò$Ð$¨Ô)>Ð$Ý˜gŸošo¨aÑ0Ô0°'Ñ:Ô:Ð:Ø˜QÔ 1Ò$Ð$¨Ô)>Ð$Ý˜g w§¢°qÑ'9Ô'9Ñ:Ô:Ð:õ  $ÝÔ" =°-Ñ@Ô@ñ 
ô  
Ðð 3°a¸°WÑ<Ðå#Ð$8Ñ9Ô9Ðð #Ÿ>š>Ð*=Ñ>Ô>×FÒFØ  ! Rñ
ô 
Ðð ! AÒ%ˆ
Øð 	Ø"6¸"¸Ñ"=Ðà—’Ð2Ñ3Ô3ß’Ð-¨rÑ2Ô2ß’˜1‘”ð Ðð #7¸"¸a¸Ñ"@ÐØ&Ÿ~š~Ð.AÑBÔB×JÒJØ$ b¨!ñ ô  Ðð ,ˆØ˜Š?ˆ?Ø×Ò Ñ"Ô"Ð"à˜Š?ˆ?Ø×Ò Ñ"Ô"Ð"àð 	MØ#×'Ò'Ð(8Ñ9Ô9×AÒAÀ"ÑEÔE×JÒJÈ<ÑXÔXÐXà#×'Ò'Ð(8Ñ9Ô9×>Ò>¸|ÑLÔLÐLåŒ�UÐUÐUÑVÔVÐVÐVÐVr+   râ  rã  c                 óÀ  ‡ ‡‡‡‡‡‡‡‡— ‰ j         \  }}ŠŠt          ‰|d         ||¦  «        }t          ‰|d         ||¦  «        }t          j        ‰ t          j        j        ¬¦  «        \  }}t          j        |d         ‰ j        ¬¦  «         	                    |¬¦  «        }	t          j        |d         ‰ j        ¬¦  «         	                    |¬¦  «        }
t          ||
|¦  «        }t          ||	|¦  «        }|                     d¦  «        }|                     ¦   «         }|                     ¦   «         }||z
                       dd¦  «        }||z
                       dd¦  «        }| 	                    t          j        ¦  «        }| 	                    t          j        ¦  «        }|dz
  ||dz   |d	z   f}|dz
  ||dz   |d	z   fŠt          |¦  «        Št          |¦  «        }d
\  ŠŠ‰ j        t          j        k    r:t%          ‰¦  «        Št%          |¦  «        Šˆfd„‰D ¦   «         Šˆfd„|D ¦   «         }ˆˆˆ fd„Šˆ ˆˆˆˆfd„Št'          ˆfd„|D ¦   «         ¦  «        }‰ j        t          j        k    r‰€J ‚t)          ||‰¦  «        }n't+          d„ t-          ||¦  «        D ¦   «         ¦  «        }t          j        ‰ ¦  «        }|                     |¬¦  «        }|S )Nr   r"   rN  r�  rò   rV   r–   rj   r#   rM  c                 óŠ   •— g | ]?}|d ‰z  z  t          j        |¦  «        dz  z                        t           j        ¦  «        ‘Œ@S ©r"   r¢   ©rC   râ   r=   Úint16)r5   r7  Úweights_precision_xs     €r,   r8   z.upsample_bicubic2d_default.<locals>.<listcomp>í  óV   ø€ ð 
ð 
ð 
àð �!Ð*Ñ*Ñ+­e¬j¸©m¬m¸cÑ.AÑA×EÒEÅeÄkÑRÔRð
ð 
ð 
r+   c                 óŠ   •— g | ]?}|d ‰z  z  t          j        |¦  «        dz  z                        t           j        ¦  «        ‘Œ@S rð  rñ  )r5   r7  Úweights_precision_ys     €r,   r8   z.upsample_bicubic2d_default.<locals>.<listcomp>ñ  rô  r+   c                 óª   •— t          j        | d‰dz
  ¦  «        }t          j        |d‰dz
  ¦  «        }t                               ‰d d ||g¦  «        }|S rÞ  )rC   r’   r†   rB  )r�  r  Úy_idxÚx_idxr  Úin_hÚin_wrÂ   s        €€€r,   Úload_boundedz0upsample_bicubic2d_default.<locals>.load_boundedö  sT   ø€ Ý”˜B  4¨!¡8Ñ,Ô,ˆÝ”˜B  4¨!¡8Ñ,Ô,ˆÝ×Ò˜u t¨T°5¸%Ð&@ÑAÔAˆØˆr+   c                 óà   •‡ — t          ˆˆ fd„‰D ¦   «         ¦  «        }‰j        t          j        k    r‰€J ‚t	          |‰‰¦  «        S t          d„ t          |‰¦  «        D ¦   «         ¦  «        S )Nc              3   ó0   •K  — | ]} ‰‰|¦  «        V — Œd S r;   r*   )r5   Úx_ofsrü  r]   s     €€r,   rË  zCupsample_bicubic2d_default.<locals>.get_x_interp.<locals>.<genexpr>ý  s/   øè è € ÐBÐB°�l�l 1 eÑ,Ô,ÐBÐBÐBÐBÐBÐBr+   c              3   ó&   K  — | ]\  }}||z  V — Œd S r;   r*   rQ  s      r,   rË  zCupsample_bicubic2d_default.<locals>.get_x_interp.<locals>.<genexpr>  s*   è è € ÐJÐJ©¨¨R˜B ™GÐJÐJÐJÐJÐJÐJr+   )rß  rê   rC   r.  rþ  rý  rò  )r]   Úsrc_xrÂ   Úixs_ofsrü  ró  Ú	weights_xs   ` €€€€€r,   Úget_x_interpz0upsample_bicubic2d_default.<locals>.get_x_interpü  s~   øø€ ÝÐBÐBÐBÐBÐB¸'ÐBÑBÔBÑBÔBˆØŒ;�%œ+Ò%Ð%Ø&Ð2Ð2Ð2Ý% e¨YÐ8KÑLÔLÐLÝÐJÐJµC¸¸yÑ4IÔ4IÐJÑJÔJÑJÔJÐJr+   c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S r;   r*   )r5   Úy_ofsr  s     €r,   rË  z-upsample_bicubic2d_default.<locals>.<genexpr>  s-   øè è € Ð;Ð;¨%�,�,˜uÑ%Ô%Ð;Ð;Ð;Ð;Ð;Ð;r+   c              3   ó&   K  — | ]\  }}||z  V — Œd S r;   r*   rQ  s      r,   rË  z-upsample_bicubic2d_default.<locals>.<genexpr>  s*   è è € ÐLÐL©(¨2¨r˜b 2™gÐLÐLÐLÐLÐLÐLr+   rU  )r  ró  rH   rI   rP  r  rC   r’  rŽ  r=   r÷  rX   r‚  r’   r´  rL  rê   r.  r  rß  rþ  rý  rò  r   r­  )rÂ   rï  rá  râ  rã  rY   Úh_scale_factorÚw_scale_factorrê   ri  r¤  Úx_floatÚy_floatr6   r]   Úyscaler  Úiys_ofsÚ	weights_yÚsrc_yr  rV  r  rú  rû  r  rü  ró  rö  r  s   `                     @@@@@@@@r,   Úupsample_bicubic2d_defaultr  ¹  sH  øøøøøøøøø€ ð ”{Ñ€A€qˆ$�õ $ D¨+°a¬.¸-ÈÑQÔQ€NÝ# D¨+°a¬.¸-ÈÑQÔQ€NåÔ'Ø¥5Ô#HÔ#Uðñ ô �H€A€uõ 	Œ�[ ”^¨E¬LÐ9Ñ9Ô9×<Ò<À5Ð<ÑIÔI€AÝŒ�[ ”^¨E¬LÐ9Ñ9Ô9×<Ò<À5Ð<ÑIÔI€Aå# N°A°}ÑEÔE€GÝ# N°A°}ÑEÔE€GØ×Ò Ñ#Ô#€Gà�Š‰Œ€AØ�Š‰Œ€Að ˜‰k× Ò   cÑ*Ô*€FØ˜‰k× Ò   cÑ*Ô*€FØ	�Š�UŒ[ÑÔ€AØ	�Š�UŒ[ÑÔ€Aà�1‰u�a˜˜Q™  A¡Ð&€GØ�1‰u�a˜˜Q™  A¡Ð&€Gå0°Ñ8Ô8€IÝ0°Ñ8Ô8€Ià/9Ñ,ÐÐ,Ø„{•e”kÒ!Ð!Ý7¸	ÑBÔBÐÝ7¸	ÑBÔBÐð
ð 
ð 
ð 
àð
ñ 
ô 
ˆ	ð
ð 
ð 
ð 
àð
ñ 
ô 
ˆ	ð
ð ð ð ð ð ð ðKð Kð Kð Kð Kð Kð Kð Kð Kõ Ð;Ð;Ð;Ð;°7Ð;Ñ;Ô;Ñ;Ô;€EØ„{•e”kÒ!Ð!Ø"Ð.Ð.Ð.Ý# E¨9Ð6IÑJÔJˆˆåÐLÐLµc¸%ÀÑ6KÔ6KÐLÑLÔLÑLÔLˆõ Ô/°Ñ6Ô6€MØ×Ò¨]ÐÑ;Ô;€FØ€Mr+   c                 óf  — t          j        t          |¦  «        t          |¦  «        z   dk    d„ ¦  «         |€]|€J ‚t          t          t
          t
          f         t	          d„ t          | j        dd …         |¦  «        D ¦   «         ¦  «        ¦  «        }|r|nd\  }}t          | ||||¦  «        S )Nr"   c                  ó   — dS )Nz:Must specify exactly one of output_size and scale_factors.r*   r*   r+   r,   r„   z(upsample_bicubic2d_vec.<locals>.<lambda>  s   € ÐL€ r+   c              3   óZ   K  — | ]&\  }}t          t          |¦  «        |z  ¦  «        V — Œ'd S r;   )r   r   )r5   r7  rq   s      r,   rË  z)upsample_bicubic2d_vec.<locals>.<genexpr>#  sM   è è € ð ð á�A�uõ �	 !™œ uÑ,Ñ-Ô-ðð ð ð ð ð r+   r#   rM  )	rC   r…   r”  r   rß  r‰  rò  r  r  )rô  rï  rá  r  râ  rã  s         r,   Úupsample_bicubic2d_vecr    sÑ   € õ 
„LÝˆ[ÑÔ�D Ñ/Ô/Ñ/°1Ò4ØLÐLñô ð ð ÐØÐ(Ð(Ð(ÝÝ•#•s�(ŒOÝð ð å # A¤G¨A¨B¨B¤K°Ñ ?Ô ?ðñ ô ñ ô ñ
ô 
ˆð )6ÐG�}�}¸<Ñ€GˆWÝ% a¨°mÀWÈgÑVÔVÐVr+   c                 ó0   ‡ — ˆ fd„}t          ‰ ||¦  «        S )Nc                 ó¨   •— t          j        |  ||z   ‰j        ¬¦  «        }|dz
  |dz
  |                     ¦   «         z
                       ¦   «         z
  S )Nr�  r"   )rC   r’  rŽ  rß   ©r¸   Úmiddler¹   Údim_idxrô  s       €r,   rš  z_reflection_pad.<locals>.idx2  sM   ø€ Ý”, ˜u f¨u¡n¸Q¼XÐFÑFÔFˆØ˜‰z˜V a™Z¨'¯+ª+©-¬-Ñ7×<Ò<Ñ>Ô>Ñ>Ð>r+   ©Ú_reflection_or_replication_pad©rô  rÁ  rš  s   `  r,   Ú_reflection_padr  ,  s9   ø€ ð?ð ?ð ?ð ?ð ?õ *Ø	ØØñô ð r+   c                 ó0   ‡ — ˆ fd„}t          ‰ ||¦  «        S )Nc                 óv   •— t          j        |  ||z   ‰j        ¬¦  «        }t          j        |d|dz
  ¦  «        S )Nr�  r   r"   )rC   r’  rŽ  r’   r  s       €r,   rš  z_replication_pad.<locals>.idxC  s9   ø€ Ý”, ˜u f¨u¡n¸Q¼XÐFÑFÔFˆÝŒ{˜7 A v°¡zÑ2Ô2Ð2r+   r  r  s   `  r,   Ú_replication_padr   =  s9   ø€ ð3ð 3ð 3ð 3ð 3õ *Ø	ØØñô ð r+   Úidx_fnc                 ó€  ‡‡— t          ‰¦  «        dz  Št          j        |                      ¦   «         ‰dz   ‰dz   fv ˆfd„¦  «         | j        ‰ d …         }|                      ¦   «         ‰z
  }ˆˆfd„t          ‰¦  «        D ¦   «         }ˆˆfd„t          ‰¦  «        D ¦   «         }| }t          ‰¦  «        D ]Z}d g|                     ¦   «         z  }	 |||         ||         ||         ¦  «        |	||z   <   t                               ||	¦  «        }Œ[t          j	        |¦  «        }
| 
                    |
¬¦  «        }|S )Nr#   r"   c                  ó(   •— d‰ › d‰ dz   › d‰ dz   › d�S )NÚreflection_padzd requires r"   zD or r#   zD inputr*   rƒ   s   €r,   r„   z0_reflection_or_replication_pad.<locals>.<lambda>V  s+   ø€ ÐO ÐOÐO°°q±ÐOÐO¸sÀQ¹wÐOÐOÐO€ r+   c                 ó2   •— g | ]}‰d ‰dz
  |z
  z           ‘ŒS rg  r*   ©r5   ri  rR   rÁ  s     €€r,   r8   z2_reflection_or_replication_pad.<locals>.<listcomp>[  ó+   ø€ ÐCÐCÐC°1�G˜A  q¡¨1¡Ñ-Ô.ÐCÐCÐCr+   c                 ó8   •— g | ]}‰d ‰dz
  |z
  z  dz            ‘ŒS rg  r*   r&  s     €€r,   r8   z2_reflection_or_replication_pad.<locals>.<listcomp>\  ó0   ø€ ÐHÐHÐH¸�W˜Q #¨¡'¨A¡+Ñ.°Ñ2Ô3ÐHÐHÐHr+   rU  )r€  rC   r…   rR   r  rW   r†   rB  rH   r   r­  )rô  rÁ  r!  Ú	inp_shapeÚnc_dimÚpadding_leftÚpadding_rightr  ri  rš  rV  rR   s    `         @r,   r  r  N  sU  øø€ õ
 ˆg‰,Œ,˜!Ñ
€CÝ	„LØ	�Š‰Œ�C˜!‘G˜S 1™WÐ%Ð%ØOÐOÐOÐOñô ð ð ”˜˜˜˜”€IØ�UŠU‰WŒW�s‰]€FàCÐCÐCÐCÐC½¸c¹
¼
ÐCÑCÔC€LØHÐHÐHÐHÐH½UÀ3¹Z¼ZÐHÑHÔH€Mà€FÝ�3‰ZŒZð 1ð 1ˆØ˜ &§*¢*¡,¤,Ñ.ˆØ ˜& ¨a¤°)¸A´,ÀÈaÔ@PÑQÔQˆˆA�‰J‰Ý×#Ò# F¨CÑ0Ô0ˆˆõ Ô/°Ñ7Ô7€MØ×Ò¨]ÐÑ;Ô;€FØ€Mr+   c                 ó¶  ‡ ‡‡‡‡‡‡‡‡‡‡— t          ‰¦  «        dz  Šd„ |j        ‰ d …         D ¦   «         Šˆˆfd„t          ‰¦  «        D ¦   «         Šˆˆfd„t          ‰¦  «        D ¦   «         Šg }t          |j        ¦  «        D ]^}dg|j        z  }d||<   |                     t          j        |j        |         |j        ¬¦  «                             |¦  «        ¦  «         Œ_|d ‰ …         Š|‰ d …         Šd„ Šˆˆfd	„t          ‰¦  «        D ¦   «         Šˆˆfd
„t          ‰¦  «        D ¦   «         }ˆˆˆfd„t          ‰¦  «        D ¦   «         }ˆˆˆˆfd„t          ‰¦  «        D ¦   «         Št          j
        t          j        ˆˆfd„t          ‰¦  «        D ¦   «         ¦  «        }t                               ‰ |‰‰z   d¦  «        }	ˆˆˆ ˆfd„}
t          j        d„ t          ‰¦  «        D ¦   «         Ž D ]á}|t!          dg‰z  ¦  «        k    rŒg }g }t          ‰¦  «        D ]¦}||         dk    r‰|         }‰|         }n]||         dk    r||         }‰|         d‰|         f}n7||         dk    r+||         }‰|         ‰|         ‰|         z
  ‰|         dz
  f}|                     |¦  «         |                     |¦  «         Œ§ |
|	||¦  «        }	Œâ|	S )Nr#   c                 ó   — g | ]}|d z
  ‘ŒS r   r*   )r5   r\  s     r,   r8   z,_reflection_pad_backward.<locals>.<listcomp>q  s   € Ð
)Ð
)Ð
)�Qˆ1ˆq‰5Ð
)Ð
)Ð
)r+   c                 ó2   •— g | ]}‰d ‰dz
  |z
  z           ‘ŒS rg  r*   r&  s     €€r,   r8   z,_reflection_pad_backward.<locals>.<listcomp>s  r'  r+   c                 ó8   •— g | ]}‰d ‰dz
  |z
  z  dz            ‘ŒS rg  r*   r&  s     €€r,   r8   z,_reflection_pad_backward.<locals>.<listcomp>t  r)  r+   r"   rV   r�  c                 óH   — | \  }}}t          j        ||k    ||k    ¦  «        S r;   r’  )Úindex_rangeri  ÚlbÚubs       r,   Úindex_range_conditionz7_reflection_pad_backward.<locals>.index_range_condition  s(   € Ø‰	ˆˆ2ˆrÝÔ   b¢¨!¨rª'Ñ2Ô2Ð2r+   c                 ó2   •— g | ]}‰|         ‰|         z   ‘ŒS r*   r*   ©r5   ri  r,  Úxyzs     €€r,   r8   z,_reflection_pad_backward.<locals>.<listcomp>�  s&   ø€ Ð;Ð;Ð;¨1ˆc�!Œf�| A”Ñ&Ð;Ð;Ð;r+   c                 ó2   •— g | ]}‰|         ‰|         z
  ‘ŒS r*   r*   r8  s     €€r,   r8   z,_reflection_pad_backward.<locals>.<listcomp>Ž  s&   ø€ ÐAÐAÐA°�L ”O c¨!¤fÑ,ÐAÐAÐAr+   c                 óJ   •— g | ]}d ‰|         z  ‰|         z   ‰|         z
  ‘Œ S r  r*   )r5   ri  Údhwr,  r9  s     €€€r,   r8   z,_reflection_pad_backward.<locals>.<listcomp>�  s3   ø€ ÐOÐOÐO¸q�Q˜˜Qœ‘Z ,¨q¤/Ñ1°C¸´FÑ:ÐOÐOÐOr+   c                 óV   •— g | ]%}‰|         d ‰|         ‰|         z   ‰|         z   f‘Œ&S r   r*   )r5   ri  Úcenterr<  r,  r-  s     €€€€r,   r8   z,_reflection_pad_backward.<locals>.<listcomp>“  sH   ø€ ð ð ð ØHIˆ�Œ�A�s˜1”v ¨Q¤Ñ/°-ÀÔ2BÑBÐCðð ð r+   c                 ó2   •— g | ]} ‰‰|         ¦  «        ‘ŒS r*   r*   )r5   ri  r6  Úrange_cs     €€r,   r8   z,_reflection_pad_backward.<locals>.<listcomp>—  s)   ø€ ÐQÐQÐQÀÐ0Ð0°¸´Ñ<Ô<ÐQÐQÐQr+   r–   c                 ó:  •— t          ‰¦  «        D ];}||         d         ||         d         k     }t          |t          ¦  «        r|r| c S Œ<t          j        t
          j        ˆ
fd„|D ¦   «         ¦  «        }t
                               ‰	|‰|z   d¦  «        }| |z   S )Nr#   r"   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r*   r*   )r5   r3  r6  s     €r,   r8   z@_reflection_pad_backward.<locals>.accumulate.<locals>.<listcomp>¥  s%   ø€ ÐPÐPÐP°KÐ"Ð" ;Ñ/Ô/ÐPÐPÐPr+   r–   )rW   r4   r”  rO   r   r†   r•  r—  )r«   rÉ   Úindex_rangesri  Úupper_less_than_lowerrÕ  Úgrõ  rR   ro   r6  s          €€€€r,   r"  z,_reflection_pad_backward.<locals>.accumulate›  s³   ø€ õ �s‘”ð 	ð 	ˆAØ$0°¤O°AÔ$6¸Àa¼ÈÔ9KÒ$KÐ!ÝÐ/µÑ6Ô6ð Ð;Pð Ø���øåÔÝÔØPÐPÐPÐPÀ<ÐPÑPÔPñ
ô 
ˆõ ×%Ò% k°4¸¸S¹À#ÑFÔFˆØ�a‰xˆr+   c                 ó   — g | ]}g d ¢‘ŒS ))rV   r   r"   r*   r!  s     r,   r8   z,_reflection_pad_backward.<locals>.<listcomp>ª  s   € Ð#CÐ#CÐ#C°1 J J JÐ#CÐ#CÐ#Cr+   r   )r€  r  rW   r{  ro  rC   r’  rŽ  r–  rO   r   r†   r•  r—  Ú	itertoolsr   rß  )ro   r6   rÁ  r™  ri  Ú
view_shapeÚleft_reflectÚright_reflectrÕ  r«   r"  ÚareaÚoutsrC  rÉ   r3  rõ  r>  r<  rR   r6  r,  r-  r@  r9  s   ` `             @@@@@@@@@r,   Ú_reflection_pad_backwardrM  j  s}  øøøøøøøøøøø€ õ
 ˆg‰,Œ,˜!Ñ
€Cà
)Ð
)˜!œ' 3 $ % %œ.Ð
)Ñ
)Ô
)€CàCÐCÐCÐCÐC½¸c¹
¼
ÐCÑCÔC€LØHÐHÐHÐHÐH½UÀ3¹Z¼ZÐHÑHÔH€Mà€GÝ�1”6‰]Œ]ð Sð SˆØ�S˜1œ6‘\ˆ
Øˆ
�1‰Ø�Š•u”| A¤G¨A¤J°q´xÐ@Ñ@Ô@×EÒEÀjÑQÔQÑRÔRÐRÐRà��#��Œ€AØ
�3�$�%�%Œ.€Cð3ð 3ð 3ð <Ð;Ð;Ð;Ð;µ°c±
´
Ð;Ñ;Ô;€FØAÐAÐAÐAÐAµe¸C±j´jÐAÑAÔA€LØOÐOÐOÐOÐOÐOÅEÈ#ÁJÄJÐOÑOÔO€Mðð ð ð ð ð ð ÝMRÐSVÉZÌZðñ ô €Gõ ÔÝÔÐQÐQÐQÐQÐQÅeÈCÁjÄjÐQÑQÔQñô €Dõ ×$Ò$ [°$¸¸F¹
ÀCÑHÔH€Dðð ð ð ð ð ð ð õ Ô!Ð#CÐ#C½¸c¹
¼
Ð#CÑ#CÔ#CÐDð 4ð 4ˆØ•5˜!˜˜s™Ñ#Ô#Ò#Ð#ààˆØˆå�s‘”ð 	-ð 	-ˆAØ�AŒw˜!Š|ˆ|Ø˜Q”i�Ø% aœj��Ø�a”˜B’�Ø" 1”o�Ø" 1œv q¨,°q¬/Ð:��Ø�a”˜A’�Ø# AÔ&�Ø" 1œv s¨1¤v°¸aÔ0@Ñ'@À#ÀaÄ&È1Á*ÐM�à�KŠK˜ÑÔÐØ×Ò Ñ,Ô,Ð,Ð,àˆz˜$  lÑ3Ô3ˆˆà€Kr+   r�   r�   rý   c                óf   — t          j        | ||¬¦  «        }t          j        | ||¬¦  «        }||fS )Nrý   )rC   ÚaminrR  )r~   rR   rþ   rO  rR  s        r,   ÚaminmaxrP  Å  s:   € õ Œ:�d ¨WÐ5Ñ5Ô5€DÝŒ:�d ¨WÐ5Ñ5Ô5€DØ�ˆ:Ðr+   rò   c                óŠ   — t                                t          j        t          j        | ¦  «        d| ¦  «        |||¬¦  «        S )Nr   rò   )r†   rè   rC   rl   Úisnan)r~   rR   rþ   rê   s       r,   ÚnansumrS  Í  s7   € õ �8Š8•E”K¥¤¨DÑ 1Ô 1°1°dÑ;Ô;¸SÀ'ÐQVˆ8ÑWÔWÐWr+   ©rê   r'  rŽ  rA  r'  c          	      óN   — t           j                             d| d||||¬¦  «        S )Nr   r"   rT  ©r†   r’  Ú
start_step)rh  rê   r'  rŽ  rA  s        r,   Úarange_defaultrX  Ó  s2   € õ Œ;×!Ò!Ø	ˆ3�˜ v°fÈð "ñ ô ð r+   c          	      óN   — t           j                             | |d||||¬¦  «        S )Nr"   rT  rV  )rg  rh  rê   r'  rŽ  rA  s         r,   Úarange_startrZ  â  s2   € õ Œ;×!Ò!Øˆs�A˜U¨6¸&ÈZð "ñ ô ð r+   c                  ó   — ddl m}  || i |¤ŽS )Nr   )Úout_dtype_dense)Ú!torch._higher_order_ops.out_dtyper\  )rJ   rK   r\  s      r,   Úout_dtype_decompr^  ñ  s)   € àAÐAÐAÐAÐAÐAàˆ?˜DÐ+ FÐ+Ð+Ð+r+   Úmarginc                 óN  ‡ ‡‡‡	‡
— t          j        ‰ ¦  «        Š t          j        ‰¦  «        Š‰ j        d         Š
‰ j        d         Š	t          j        |dk    p|dk    d„ ¦  «         t          j        ‰ j        dk    o‰	dk    ˆ fd„¦  «         t          j        ‰j        dk    o‰                     ¦   «         ‰
k    ˆ
ˆfd„¦  «         ‰�Nt          j        ‰¦  «        Št          j        ‰j        dk    o‰                     ¦   «         ‰	k    ˆ	ˆfd„¦  «         ‰                     d¦  «        Št          j        ‰ d‰¬¦  «        }||z
  ‰ z   }| 	                    d¦  «        }|dk    r|n||z  }‰�|‰‰         z  }t          j
        ‰	‰ j        ¬	¦  «        }t          j        |‰k    |d¦  «        }|t          j        j        k    r|                     ¦   «         S |t          j        j        k    r"|                     ¦   «         |j        d         z  S |                     d¬
¦  «        S )Nr   r"   r#   c                  ó   — dS )Nz only p == 1 and p == 2 supportedr*   r*   r+   r,   r„   z#multi_margin_loss.<locals>.<lambda>  s   € Ð+M€ r+   c                  ó   •— d‰ j         › �S ©NzMExpected non-empty vector or matrix with optional 0-dim batch size, but got: rà  rÃ  s   €r,   r„   z#multi_margin_loss.<locals>.<lambda>
  s   ø€ ÐmÐ`eÔ`kÐmÐm€ r+   c                  ó   •— d‰ › d‰j         › �S )Nz#inconsistent target size, expected r  rà  )Únframerô   s   €€r,   r„   z#multi_margin_loss.<locals>.<lambda>  s   ø€ ÐU°fÐUÐUÀvÄ|ÐUÐU€ r+   c                  ó   •— d‰ › d‰j         › �S )Nz#inconsistent weight size, expected r  rà  )rR   rÏ   s   €€r,   r„   z#multi_margin_loss.<locals>.<lambda>  s   ø€ ÐV¸#ÐVÐVÈÌÐVÐV€ r+   ré  r�  rƒ   )rC   Ú
atleast_2dÚ
atleast_1dr  r…   r{  rù   rX   r6  r]  r’  rŽ  rl   r!   r(   r   rç   r)   rè   )rÂ   rô   rO  r_  rÏ   rå   Úurm   rš  rR   re  s   ``  `    @@r,   Úmulti_margin_lossrj  ø  s"  øøøøø€ õ Ô˜UÑ#Ô#€EÝÔ˜fÑ%Ô%€FØŒ[˜Œ^€FØ
Œ+�aŒ.€CÝ	„L��a’Ð!˜1 š6Ð#MÐ#MÑNÔNÐNÝ	„LØŒ
�aŠÐ$˜C 1šHØmÐmÐmÐmñô ð õ 
„LØŒ�qÒÐ5˜VŸ\š\™^œ^¨vÒ5ØUÐUÐUÐUÐUñô ð ð ÐÝÔ! &Ñ)Ô)ˆÝŒØŒK˜1ÒÐ6 §¢¡¤°3Ò!6ØVÐVÐVÐVÐVñ	
ô 	
ð 	
ð ×Ò˜aÑ Ô €FÝŒ�U ¨Ð0Ñ0Ô0€AØ�‰
�UÑ€AØ	�Š�A‰Œ€AØ�!ŠVˆVˆˆ˜˜Q™€AØÐØ��v”ÑˆÝ
Œ,�s 5¤<Ð
0Ñ
0Ô
0€CÝŒ�C˜6’M 1 aÑ(Ô(€AØ•I”NÔ(Ò(Ð(Ø�vŠv‰xŒxˆØ	•i”mÔ)Ò	)Ð	)Ø�uŠu‰wŒw˜œ œÑ#Ð#à�vŠv˜!ˆv‰}Œ}Ðr+   Ú	is_targetc                 óÐ  ‡‡— | j         Š|j         Št          j        | ¦  «        } t          j        |¦  «        }| j         d         }t          j        t	          ‰¦  «        dk    o|dk    ˆfd„¦  «         t          j        t	          ‰¦  «        dk    o‰‰k    ˆˆfd„¦  «         t          j        ||j        ¬¦  «        }|dk    }t          j        t          j        |||¦  «        dd¬	¦  «        }||k     }t          j        ||d¦  «        }t          j	        | d|¬
¦  «        }	t          j        ||d¦  «        }
t          j
        ||
                     d¬¦  «        k    d¬¦  «        }d|	j                             d¬¦  «        z
  | z   }|                     d¦  «        }||z  }t          j        |d|¦  «        }|t          j        j        k    r)|                     d¬¦  «                             ¦   «         }n@|t          j        j        k    r|                     ¦   «         }n|                     d¬¦  «        }|                     | j        ¦  «                             ‰¦  «        }||fS )Nr"   r#   r   c                  ó   •— d‰ › �S rc  r*   )Úorig_input_shapes   €r,   r„   z0multilabel_margin_loss_forward.<locals>.<lambda>6  s   ø€ ÐrÐ`pÐrÐr€ r+   c                  ó   •— d‰› d‰ › �S )Nzinconsistent target size: z for input of size: r*   )rn  Úorig_target_shapes   €€r,   r„   z0multilabel_margin_loss_forward.<locals>.<lambda>:  s   ø€ ÐfÐ->ÐfÐfÐTdÐfÐf€ r+   r�  rV   Trý   ré  rƒ   rj   )r   rV   )r  rC   rg  r…   r€  r’  rŽ  rO  rl   r6  ÚanyrX   ÚTr]  r!   r(   r   rè   rç   r)   r=   rê   r#  )rÂ   rô   rå   rR   rš  Úis_endÚend_idxÚtarget_maskÚtidx0ri  Útidx1rk  rm   rn  rp  s                @@r,   Úmultilabel_margin_loss_forwardrx  '  sG  øø€ ð ”{ÐØœÐÝÔ˜UÑ#Ô#€EÝÔ˜fÑ%Ô%€FØ
Œ+�aŒ.€CÝ	„LÝÐÑÔ Ò"Ð/ s¨a¢xØrÐrÐrÐrñô ð õ 
„LÝÐÑÔ !Ò#ÐMÐ(9Ð=MÒ(MØfÐfÐfÐfÐfñô ð õ
 Œ,�s 6¤=Ð
1Ñ
1Ô
1€CØ�rŠ\€FÝŒj�œ V¨S°#Ñ6Ô6¸BÈÐMÑMÔM€Gà˜’-€KåŒK˜ V¨QÑ/Ô/€EÝŒ�U ¨%Ð0Ñ0Ô0€AåŒK˜ V¨RÑ0Ô0€EÝ”	˜# §¢°R Ñ!8Ô!8Ò8¸aÐ@Ñ@Ô@€IàˆaŒc�mŠm ˆmÑ#Ô#Ñ# eÑ+€AØ	�Š�A‰Œ€AØ	ˆC‰€AåŒ�I˜q !Ñ$Ô$€Aà•I”NÔ(Ò(Ð(Ø�EŠE�gˆEÑÔ×#Ò#Ñ%Ô%ˆˆØ	•i”mÔ)Ò	)Ð	)Ø�EŠE‰GŒGˆˆà�EŠE�gˆEÑÔˆà—’˜Uœ[Ñ)Ô)×1Ò1Ð2CÑDÔD€IØˆiˆ<Ðr+   )Ú	attn_maskrq   ÚqueryÚkeyÚ	dropout_pÚ	is_causalry  c          
      óâ  ‡ ‡‡‡— t          j        t          j        ‰ ¦  «        ˆ fd„¦  «         t          j        ‰                      ¦   «         dk    o/‰                     ¦   «         dk    o‰                     ¦   «         dk    ˆˆ ˆfd„¦  «         t          j        ‰dk    ˆfd„¦  «         t          j        ‰ j        d         ‰j        d         k    o‰j        d         ‰j        d         k    d„ ¦  «         t
          j                             ‰ ‰‰|‰|d |¬¦  «        \  }}|                     d	d
dd¦  «         	                    t           j
        ¬¦  «                             dd	d
d¦  «        }||fS )Nc                  ó   •— d‰ j         › �S )Nz-query must be FP32, FP64, BF16, FP16 but got rò   )rz  s   €r,   r„   z<scaled_dot_product_flash_attention_for_cpu.<locals>.<lambda>s  s   ø€ ÐMÀÄÐMÐM€ r+   r?  c                  ó†   •— d‰                      ¦   «         › d‰                       ¦   «         › d‰                      ¦   «         › �S )Nz,q, k, v must be a 4 dimensional tensor, got rÄ  rƒ   )r{  rz  r   s   €€€r,   r„   z<scaled_dot_product_flash_attention_for_cpu.<locals>.<lambda>w  s=   ø€ Ðh¸u¿yºy¹{¼{ÐhÐhÈcÏgÊgÉiÌiÐhÐhÐ[`×[dÒ[dÑ[fÔ[fÐhÐh€ r+   r–   c                  ó   •— d‰ › �S )Nz&dropout probability must be zero, got r*   )r|  s   €r,   r„   z<scaled_dot_product_flash_attention_for_cpu.<locals>.<lambda>z  s   ø€ Ð"VÈ9Ð"VÐ"V€ r+   r‹   c                  ó   — dS )Nz&q, k, v should have the same head sizer*   r*   r+   r,   r„   z<scaled_dot_product_flash_attention_for_cpu.<locals>.<lambda>~  s   € Ð8€ r+   )ry  r|  r}  Údropout_maskrq   r#   r   r"   rU  )rC   r…   rG  rR   r  r†   Ú"_scaled_dot_product_attention_mathr†  ró  r­  rZ  )	rz  r{  r   r|  r}  ry  rq   rª  Úattns	   ````     r,   Ú*scaled_dot_product_flash_attention_for_cpur†  f  s‹  øøøø€ õ 
„LÝÔ Ñ&Ô&ØMÐMÐMÐMñô ð õ 
„LØ�	Š	‰Œ�qÒÐ@˜SŸWšW™YœY¨!š^Ð@°·	²	±´¸qÒ0@ØhÐhÐhÐhÐhÐhñô ð õ 
„LØ�SÒÐVÐVÐVÐVñô ð õ 
„LØŒ�AŒ˜%œ+ aœ.Ò(ÐK¨S¬Y°q¬\¸U¼[È¼^Ò-KØ8Ð8ñô ð õ
 Ô:×BÒBØØØØØØØØð Cñ 	ô 	�L€FˆDðD 	�Š�q˜!˜Q Ñ"Ô"ß	Š¥%Ô"9ˆÑ	:Ô	:ß	Š��A�q˜!Ñ	Ô	ð ð
 �4ˆ<Ðr+   c                 ó<   ‡— t          | ¦  «        ˆfd„¦   «         }|S )Nc                  óJ   •—  ‰| i |¤Ž}| d                               |¦  «        S rv   )r  )rJ   rK   rÉ   Úoutplace_ops      €r,   Ú
inplace_opz$register_inplace.<locals>.inplace_op«  s-   ø€ àˆk˜4Ð* 6Ð*Ð*ˆØ�AŒw�}Š}˜SÑ!Ô!Ð!r+   r   )Úaten_opr‰  rŠ  s    ` r,   Úregister_inplacerŒ  ª  s7   ø€ Ý˜GÑ$Ô$ð"ð "ð "ð "ñ %Ô$ð"ð Ðr+   c                 óf  — |                       ¦   «         s2|                      ¦   «         st          |¦  «        }t          |¦  «        }t          j        ||¦  «        }t          |t          j        ¦  «        r|dk    r||z  }|dk    r|S t          |t          j        ¦  «        r|dk    r| |z  } | |z   S )Nr"   r   )rG  r¬  r‰  rC   rÛ  r4   ÚnumbersÚNumber)r~   Úbatch1Úbatch2rf   rp   r  s         r,   Úbaddbmmr’  ³  s²   € ð ×!Ò!Ñ#Ô#ð ¨D¯OªOÑ,=Ô,=ð Ý�4‰yŒyˆÝ�E‘
”
ˆÝŒY�v˜vÑ&Ô&€FÝ�e�Wœ^Ñ,Ô,ð  °¸²
°
Ø˜%‘ˆØˆq‚y€yØˆÝ�d�GœNÑ+Ô+ð ¨t°qªy¨yØ�d‰{ˆØ�&‰=Ðr+   c                 ó0   — t          j        | |d¬¦  «        S )Nr‚  r  r�  )r~   rN  s     r,   Úfloor_divider”  Ä  s   € õ Œ9�T˜5°Ð8Ñ8Ô8Ð8r+   c                 óL   — t          j        t          j        | j        d¦  «        S r_   )rO   r   rª  rÛ   r  )r¾  s    r,   Ú	sym_numelr–  Ê  s   € åÔ�HœL¨!¬'°1Ñ5Ô5Ð5r+   ©rê   rÉ   c                ó�   — |€"t           j                             | g |¬¦  «        S t           j                             | g ||¬¦  «        S )Nrò   r—  )r†   rè   Údim_IntListÚIntList_out)r~   rê   rÉ   s      r,   Úsum_defaultr›  Ï  sE   € ð €{ÝŒx×#Ò# D¨"°EÐ#Ñ:Ô:Ð:åŒx×#Ò# D¨"°E¸sÐ#ÑCÔCÐCr+   c           	      ó  — t          | t          j        ¦  «        s| S |€Lt          j                             | t          t          |                      ¦   «         ¦  «        ¦  «        ¦  «        S t          j                             | |g¦  «        S r;   )	r4   rC   r   r†   rô  Údimsrs  rW   rR   )r~   rR   s     r,   Úsqueeze_defaultrž  Ü  sl   € õ �d�EœLÑ)Ô)ð Øˆà
€{ÝŒ|× Ò  ¥t­E°$·(²(±*´*Ñ,=Ô,=Ñ'>Ô'>Ñ?Ô?Ð?åŒ|× Ò  ¨ uÑ-Ô-Ð-r+   c                 ó4  ‡— t          ˆfd„t          t          | j        ¦  «        ¦  «        D ¦   «         ¦  «        }|j        t
          j        k    rt
          j        nd }|                      d|d|¬¦  «        }| || 	                    |j        ¦  «        z  z  |fS )Nc              3   ó(   •K  — | ]}|‰k    ¯|V — Œd S r;   r*   )r5   ri  rR   s     €r,   rË  z)_weight_norm_interface.<locals>.<genexpr>ë  s'   øè è € Ð@Ð@˜1°q¸C²x°x�Q°x°x°x°xÐ@Ð@r+   r#   T)rþ   rê   )
rß  rW   r€  r  rê   rC   rÄ  r  rú   r=   )r  rE  rR   Úkeep_dimÚ
norm_dtyperú   s     `   r,   Ú_weight_norm_interfacer£  è  sŒ   ø€ õ Ð@Ð@Ð@Ð@¥¥c¨!¬'¡l¤lÑ 3Ô 3Ð@Ñ@Ô@Ñ@Ô@€Hà !¤­5¬>Ò 9Ð 9•”�¸t€JØ�6Š6�!�X t°:ˆ6Ñ>Ô>€DØ��D—G’G˜AœGÑ$Ô$Ñ$Ñ% tÐ+Ð+r+   ©Úassume_uniqueÚinvertc                ó¸  — t          | t          j        ¦  «        st          j        | |j        ¬¦  «        } t          |t          j        ¦  «        s,|rt          j        | |¦  «        S t          j        | |¦  «        S |                     ¦   «         dt          |                      ¦   «         d¦  «        z  k     rt          | ||¬¦  «        S t          | |||¬¦  «        S )Nr�  g      $@g�Âõ(\�Â?©r¦  r¤  )r4   rC   r   rq  rŽ  Úner   rù   rX  Úisin_defaultÚisin_sorting)ÚelementsÚtest_elementsr¥  r¦  s       r,   Úisinr®  ò  sÕ   € õ �h¥¤Ñ-Ô-ð GÝ”< °Ô1EÐFÑFÔFˆÝ�m¥U¤\Ñ2Ô2ð 5Øð 	5Ý”8˜H mÑ4Ô4Ð4å”8˜H mÑ4Ô4Ð4à×ÒÑÔ˜t¥c¨(¯.ª.Ñ*:Ô*:¸EÑ&BÔ&BÑBÒBÐBÝ˜H m¸FÐCÑCÔCÐCåØ�m°=Èð
ñ 
ô 
ð 	
r+   )r?  c                ó*  — |€9t          j        |                      ¦   «         t           j        | j        ¬¦  «        }n9t          j        |                      ¦   «         |t           j        | j        ¬¦  «        }|| k                          | j        ¦  «        }|S )Nr³  )r?  rê   rŽ  )rC   Úrandr*  rï   rŽ  r=   rê   )r~   r?  Úraw_prO  s       r,   Ú	bernoullir²    s|   € ð ÐÝ”
˜4Ÿ9š9™;œ;­e¬mÀDÄKÐPÑPÔPˆˆå”
Ø�IŠI‰KŒKØÝ”-Ø”;ð	
ñ 
ô 
ˆð 
�Š×Ò˜$œ*Ñ%Ô%€AØ€Hr+   r¨  c                óP  — |                       ¦   «         dk    r t          j        | t          j        ¬¦  «        S | j        d|j        z  z   }|                      |¦  «        }t          t          d|j         dz
  d¦  «        ¦  «        }||k     	                    |¬¦  «        }|r| n|S )Nr   rò   r   rV   r"   rƒ   )
rù   rC   Ú
empty_liker”  r  r{  r–  rß  rW   rq  )r¬  r­  r¦  Úexpanded_elem_shaper6   rR   rJ  s          r,   rª  rª    s¦   € Ø‡~‚~ÑÔ˜1ÒÐÝÔ µ´
Ð;Ñ;Ô;Ð;Ø"œ.¨4°-Ô2DÑ+DÑDÐØ�ŠÐ)Ñ*Ô*€AÝ
•�b˜=Ô-Ð-°Ñ1°2Ñ6Ô6Ñ
7Ô
7€CØ�Ò×
"Ò
" sÐ
"Ñ
+Ô
+€CØÐ"ˆCˆ4ˆ4˜sÐ"r+   c                óö  — |                       ¦   «         }|                      ¦   «         }|rºt          j        ||g¦  «        }t          j        |d¬¦  «        \  }}|dd …         |d d…         k    }	t          j        |	ddgd¦  «        }	|r|	                     ¦   «         }	t          j        |	¦  «        }
|
                     d||	¦  «        }
|
d|                      ¦   «         …         S t          j        |¦  «        \  }}t          j	        ||¦  «        }t          j
        ||                     ¦   «         k     |d¦  «        }||         |k    }|r|                     ¦   «         n|}|                     | j        ¦  «        S )NT)Ústabler"   rV   r   F)r7  rC   r,  Úsortrm  Úlogical_notr´  rý  rù   Úsearchsortedrl   r#  r  )r¬  r­  r¥  r¦  Úelements_flatÚtest_elements_flatÚall_elementsÚsorted_elementsÚsorted_orderÚduplicate_maskr›  Úsorted_test_elementsrY   rš  Útest_idxÚcmps                   r,   r«  r«  #  ss  € Ø×$Ò$Ñ&Ô&€MØ&×.Ò.Ñ0Ô0ÐØð +õ ”y -Ð1CÐ!DÑEÔEˆÝ(-¬
°<ÈÐ(MÑ(MÔ(MÑ%ˆ˜à(¨¨¨Ô,°ÀÀÀÔ0DÒDˆÝÔ.¨~ÀÀ1¸vÀuÑMÔMˆàð 	:Ø+×7Ò7Ñ9Ô9ˆNåÔ Ñ/Ô/ˆØ�Š˜q ,°Ñ?Ô?ˆà�A˜ŸšÑ(Ô(Ð(Ô)Ð)å"'¤*Ð-?Ñ"@Ô"@ÑÐ˜aÝÔ Ð!5°}ÑEÔEˆÝ”;˜sÐ%9×%?Ò%?Ñ%AÔ%AÒAÀ3ÈÑJÔJˆØ" 8Ô,°Ò=ˆØ#)Ð2ˆc�oŠoÑÔÐ¨sˆØ�{Š{˜8œ>Ñ*Ô*Ð*r+   c                 ó<   — |                       d¦  «        }||         S rU   )r#  )r~   r�  Ú	flatteneds      r,   ÚtakerÆ  @  s    € ð —’˜RÑ Ô €IØ�UÔÐr+   c                 ó    — |€t           j        }|t           j        k    rt          |¦  «        }t                               | |j        |¬¦  «        S r.  )rC   rZ  Úpreserve_formatr   r†   Úresizer  )r~   rN  rV  s      r,   Ú	resize_asrÊ  G  sE   € àÐÝÔ/ˆØ�Ô-Ò-Ð-Ý-¨eÑ4Ô4ˆÝ�;Š;�t˜Uœ[¸ˆ;ÑFÔFÐFr+   )FF)rª   r;   r  )r   NNr"   )rV   FFrÉ  r   r`  )r"   r"   F)Fr–   )r–   rj   N)r   r"   N)FrM  )NNN)r   r   FT)r   r   Fr  )r–   F(†  rO   rG  rŽ  rª  ru  Úcollections.abcr   Úenumr   r   r   r   r   Útypingr	   r
   r   r   r   rC   Útorch._meta_registrationsÚtorch._primsrH  r  Útorch._prims_commonÚ_prims_commonrH   Útorch.nn.functionalr˜  rý  rÄ   r   r   r   Útorch._decompr   r]  r   r   r   r   r   r   Útorch._prims_common.wrappersr   r   r   r   Útorch.utilsr   rF   Útorch.utils._pytreer   r(  ÚDispatchKeyr   rs  ÚstrÚ__annotations__Ú_opsr  r†   r!   rP  r”  rQ   rQ  Úcompute_only_pw_cast_for_opmathÚpw_cast_for_opmathÚ"pw_cast_for_opmath_non_tensor_argsr  Úpw_cast_for_int_to_realr‰  rZ   rc   re   rn   r  rz   r.  ÚScalarr€   rˆ   r”   r™   r�   rŸ   r£   r¥   r©   rÁ   rÊ   rÌ   rÎ   rÑ   rÕ   rß  rÜ   rã   ré   rê   ró   rö   r(   r   rû   Ú_safe_softmaxr  r	  r  r†  r[   r  r  rÉ   r  r'  r4  r=  r@  rF  rI  rK  rM  rQ  re  rm  Úslicer�  rŠ  rl  r   r¦  r©  r¯  r±  r¾  r  r,  r0  r9  r?  rC  Úpy_implÚCompositeImplicitAutogradÚAutogradrB  rU  rY  r_  rg  r#  ru  rx  r|  r‰  r‹  r“  r–  r˜  r’  r¦  rž  r¨  r®  r´  r¸  rÖ  rÚ  rÝ  r÷  rù  r  r  r  Úunsafe_chunkr  r  r  Úno_statsr!  r%  r1  r7  r;  r=  Ú_fused_dropoutr@  rM  rŽ  rV  rœ  ÚliftÚ
lift_freshrP  rU  rX  r[  rZ  rn  rs  rv  Ú_adaptive_avg_pool2dr¥  r¯  r¾  rË  rÒ  rÔ  rÐ  rõ  rû  rý  rù  r  r  Ú	Generatorr
  r  r  r0  rµ  r7  r=  r   Ú_upsample_nearest_exact1dr9  r?  r%  r+  r2  r  rK  rT  rX  r\  rj  rr  ru  ry  rˆ  r‘  Úrnn_tanhrÂ   r˜  Úrnn_relur›  r   r¡  r¤  r°  r³  r¹  rÉ  ÚlstmrÌ  rÎ  rÖ  rØ  ÚgrurÚ  rÜ  rß  rä  ræ  rç  rï  rñ  rí  rê  ró  r÷  rþ  r  ré  r!  r#  rÙ  rB  r$  r—  r4  r:  r=  r?  rC  rF  rL  rS  rý  rZ  re  ri  rn  rp  rs  r¾  rÀ  r·  rÉ  rÔ  r[  Úupsample_bicubic2dr  r  Úreflection_pad1dÚreflection_pad2dÚreflection_pad3dr  Úreplication_pad1dÚreplication_pad2dÚreplication_pad3dr   r  Úreflection_pad1d_backwardÚreflection_pad2d_backwardÚreflection_pad3d_backwardrM  rP  rS  r’  rE  r'  rX  rg  rZ  r^  rj  rx  Ú+_scaled_dot_product_flash_attention_for_cpur†  rŒ  r’  r”  r–  rè   r›  rô  rR   rž  r£  r®  r²  rª  r«  rÆ  rÊ  Úaddbmm_ÚaddbmmÚaddmm_Úaddmv_Úbaddbmm_Úfill_Úgelu_r²  Ú
hardswish_Ú	hardtanh_ÚhardtanhÚhardsigmoid_Ú__iand__Ú__and__Ú__ilshift__Ú
__lshift__râ  rã  Úindex_reduce_Úindex_reduceÚ__ior__Ú__or__Ú__irshift__Ú
__rshift__Ú__ixor__Ú__xor__Úleaky_relu_Ú
leaky_reluÚlogit_ÚlogitÚrelu_r³  Úrenorm_ÚrenormÚround_r  Úscatter_r"  Úscatter_add_Úscatter_addÚscatter_reduce_Úscatter_reduceÚsilu_r*   r+   r,   ú<module>r!     sY_  ðð Ð Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø 
€
€
€
Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7à €€€Ø  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7ðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð *Ð )Ð )Ð )Ð )Ð )Ø (Ð (Ð (Ð (Ð (Ð (ð ŒhÔ"€ð €ˆˆcŒÐ Ð Ñ à„z„~Ô€ðð ð ð ð �ñ ô ð ð  %Ø$)ñ	'ð 'Øð'àÔ9ð'ð ð'ð "ð	'ð 'ð 'ð 'ðT #* 'ØØÔ8Ô@Øð#ñ #ô #Ð ð
 �WØ˜uÔDÔLðñ ô Ð ð &- WØØÔ8Ô@Ø ð&ñ &ô &Ð "ð
 "˜'Ø˜uÔDÔQðñ ô Ð ð˜ð  cð ¨fð ð ð ð ð Ð˜Ô*Ñ+Ô+Ø€ˆ\ÑÔØð2˜Fð 2 vð 2ð 2ð 2ñ Ôñ Ôñ ,Ô+ð2ð Ð˜Ô-Ñ.Ô.Ø€ˆ\ÑÔØð4˜vð 4¨&ð 4ð 4ð 4ñ Ôñ Ôñ /Ô.ð4ð Ð˜Ô.Ñ/Ô/Ø€ˆ\ÑÔØðS ð S¨6ð S¸ð SÈ5ð Sð Sð Sñ Ôñ Ôñ 0Ô/ðSð
 Ð˜Ô)Ñ*Ô*Ø€ˆ\ÑÔØð
Øð
àð
ð ð
ð ð	
ð
 ð
ð ð
ð 
ð 
ñ Ôñ Ôñ +Ô*ð
ð2 Ð˜œÔ)Ð*Ñ+Ô+ð(ð (ñ ,Ô+ð(ð Ð˜œÔ)Ð*Ñ+Ô+ð"˜Vð "ð "ð "ñ ,Ô+ð"ð Ð˜Ô(Ñ)Ô)Ø€�„Øð@�fð @ ð @ð @ð @ñ Ôñ „ñ *Ô)ð@ð Ð˜Ô1Ñ2Ô2Ø€ˆ\ÑÔØð fð °Fð ð ð ñ Ôñ Ôñ 3Ô2ðð Ð˜Ô.Ñ/Ô/Ø€ˆ\ÑÔðPØðPØ%ðPØ05ðPØ@EðPð Pð Pñ Ôñ 0Ô/ðPð Ð˜œÑ'Ô'Ø€�„ØðG�Fð G˜vð Gð Gð Gñ Ôñ „ñ (Ô'ðGð Ð˜Ô/Ñ0Ô0Ø€�„Øð Fð °&ð ¸Vð ð ð ñ Ôñ „ñ 1Ô0ðð Ð˜Ô/Ñ0Ô0Ø€ˆ\ÑÔð: Fð :°&ð :ÀUð :ð :ð :ñ Ôñ 1Ô0ð:ð Ð˜Ô0Ñ1Ô1Ø€ˆ\ÑÔØðLØðLØ%ðLØ7<ðLØNRðLð Lð Lñ Ôñ Ôñ 2Ô1ðLð Ð˜Ô*Ñ+Ô+Ø€ˆ\ÑÔØñ)ð )˜ð ) fð )¸3ð )ð )ð )ñ Ôñ Ôñ ,Ô+ð)ð< Ð˜Ô*Ñ+Ô+Øð5˜vð 5¨fð 5ð 5ð 5ñ Ôñ ,Ô+ð5ð Ð˜œ	Ñ"Ô"Ø€�„Øð&ˆvð &˜&ð &ð &ð &ñ Ôñ „ñ #Ô"ð&ð Ð˜Ô*Ñ+Ô+Ø€ˆ\ÑÔØð>˜vð >¨Vð >¸ð >ð >ð >ñ Ôñ Ôñ ,Ô+ð>ð
 Ð˜Ô*Ñ+Ô+ð6˜ð 6¨ð 6°6ð 6ð 6ð 6ñ ,Ô+ð6ð Ð˜Ô3Ñ4Ô4ð%Øð%à
ð%ð ð%ð ˆ6�6ˆ>Ôð	%ð %ð %ñ 5Ô4ð%ð Ð˜Ô6Ñ7Ô7Ø€�„Øð
Øð
à
ð
ð ð
ð ð	
ð
 ð
ð ð
ð ð
ð ð
ð 
ð 
ñ Ôñ „ñ 8Ô7ð
ð$ Ð˜Ô1Ñ2Ô2Ø€ˆ\ÑÔØð< fð <°Fð <ÀFð <Èvð <ð <ð <ñ Ôñ Ôñ 3Ô2ð<ð˜vð °#ð ð ð ð ð˜œð ð ð ð ð Ð˜œÑ&Ô&Ø€�„Øà3<´>Ô3Gð1ð 1Ø
ð1Ø ð1Ø-0ð1àð1ð 1ð 1ñ Ôñ „ñ 'Ô&ð1ð Ð˜Ô.Ñ/Ô/Ø€ˆ\ÑÔØð1Øð1Ø &ð1Ø06ð1ØCFð1ð 1ð 1ñ Ôñ Ôñ 0Ô/ð1ð Ð˜Ô*Ñ+Ô+ñ0ð 0ð 0ñ ,Ô+ð0ð Ð˜Ô+Ñ,Ô,Ø€�„Øð ”^Ô)Øð	1ð 1Ø
ð1àð1ð ð1ð ð	1ð 1ð 1ñ Ôñ „ñ -Ô,ð1ð Ð˜Ô4Ô<Ñ=Ô=ØðØðØ%ðØ/5ðØBEðØMRðð ð ñ Ôñ >Ô=ðð Ð˜Ô4Ô?Ñ@Ô@Øð
RØð
Rà
ð
Rð ð
Rð ð	
Rð
 ð
Rð ð
Rð 
Rð 
Rñ Ôñ AÔ@ð
Rð Ð˜Ô0Ô8Ñ9Ô9Øð	Øð	Ø%ð	Ø/5ð	ØBEð	ØNSð	ð 	ð 	ñ Ôñ :Ô9ð	ð Ð˜Ô0Ô4Ñ5Ô5Øð
RØð
Rà
ð
Rð ð
Rð ð	
Rð
 ð
Rð ð
Rð 
Rð 
Rñ Ôñ 6Ô5ð
Rð$Øð$à
ð$ð ð$ð �VÔð	$ð
 ð$ð ð$ð ð$ð ð$ð $ð $ð $ð@ Ð˜Ô)Ñ*Ô*Ø€ˆ\ÑÔØðN˜fð N¨Fð N¸ð NÀð Nð Nð Nñ Ôñ Ôñ +Ô*ðNð$ Ð˜Ô.Ñ/Ô/Ø€ˆ\ÑÔð'Øð'à
ð'ð ð'ð �VÔð	'ð
 ð'ð ð'ð ð'ð ð'ð 'ð 'ñ Ôñ 0Ô/ð'ðT Ð˜Ô0Ñ1Ô1Ø€ˆ\ÑÔðØðà
ðð ðð �VÔð	ð
 ðð ðð ðð ðð ð ñ Ôñ 2Ô1ððB Ð˜Ô1Ñ2Ô2Ø€�„Øð  $Ø”^Ô)ð	1ð 1Ø
ð1àð1ð �VÔð1ð ð	1ð
 ð1ð 1ð 1ñ Ôñ „ñ 3Ô2ð1ð& Ð˜Ô:Ñ;Ô;Ø€ˆ\ÑÔØð
  $Ø”^Ô)ðð Øðà
ðð ðð �VÔð	ð
 ðð ðð ð ñ Ôñ Ôñ <Ô;ðð  Ð˜Ô-Ñ.Ô.Ø€�„Øð ”^Ô)ð1ð 1Øð1àð1ð ð1ð ð	1ð 1ð 1ñ Ôñ „ñ /Ô.ð1ð Ð˜Ô6Ñ7Ô7Ø€ˆ\ÑÔØð
 ”^Ô)ð		ð 	Øð	à
ð	ð ð	ð ð		ð
 ð	ð 	ð 	ñ Ôñ Ôñ 8Ô7ð	ð Ð˜œ	Ñ"Ô"Ø€�„ñ)ð )�ð )˜vð )¨%ð )ð )ð )ñ „ñ #Ô"ð)ð Ð˜Ô,Ñ-Ô-Ø€�„ð&˜ð & Fð &¨vð &ð &ð &ñ „ñ .Ô-ð&ð Ð˜Ô+Ñ,Ô,Ø€�„ð	OØð	Oà�c”ð	Oð 
ð	Oð ð		Oð
 
ð	Oð ð	Oð 	Oð 	Oñ „ñ -Ô,ð	Oð Ð˜œ
Ô)Ñ*Ô*ð ØØØñ6?ð 6?à
ð6?ð 
ð6?ð �CŒ=ð	6?ð
 
�#Œð6?ð ð6?ð 6?ð 6?ñ +Ô*ð6?ðrØðØðØ (¨¤ðØ4<¸S´Mðà
ˆ3�ˆ8„_ðð ð ð ð. Ð˜Ô*Ñ+Ô+Ø€�„ð ØØØñ$Uð $UØð$Uà	ð$Uð 
ð$Uð �CŒ=ð	$Uð
 
�#Œð$Uð ð$Uð $Uð $Uñ „ñ ,Ô+ð$UðN Ð˜Ô,Ñ-Ô-Ø€�„ðE ð E°d¸3´ið EÀcð EÐRUð Eð Eð Eñ „ñ .Ô-ðEð
 Ð˜Ô.Ñ/Ô/Ø€�„ðOØðOØ&*¨3¤iðOØ9<ðOØDGðOØORðOð Oð Oñ „ñ 0Ô/ðOðØðØ%+ðØ:?¼+ðð ð ð ð Ð˜Ô3Ñ4Ô4Ø€ˆ\ÑÔØ ðXØðXØ!'ðXØ.1ðXØ@EÄðXð Xð Xñ !Ô ñ Ôñ 5Ô4ðXð Ð˜Ô7Ñ8Ô8Ø€�„Ø ðKØðKØ!'ðKØ.1ðKØ@EÄðKð Kð Kñ !Ô ñ „ñ 9Ô8ðKð*ð *ð *ð& Ð˜œÑ$Ô$Ø€�„ðMØðMà�c”ðMð �3ŒiðMð �#ŒYð	Mð
 �ŒIðMð ðMð Mð Mñ „ñ %Ô$ðMð` Ð˜œÑ$Ô$Ø€�„Øð]Øð]à�c”ð]ð �c”ð]ð �3Œið	]ð
 �#ŒYð]ð �ŒIð]ð ð]ð ]ð ]ñ Ôñ „ñ %Ô$ð]ð@ Ð˜Ô4Ñ5Ô5Ø€�„ð
¨ð 
°vð 
Àeð 
ð 
ð 
ñ „ñ 6Ô5ð
ð Ð˜Ô,Ñ-Ô-Ø€�„ðYØ
ðYØ" 3œiðYØ47ðYØ?BðYØJMðYàðYð Yð Yñ „ñ .Ô-ðYð" Ð˜Ô+Ô3Ñ4Ô4Øà>Bñ
ð 
Øð
Ø%ð
Ø,4°U¬Oð
àð
ð 
ð 
ñ Ôñ 5Ô4ð
ð& Ð˜œÑ%Ô%Ø„Ô×Ò˜kÔCÑDÔDØ„Ô×Ò˜kÔ2Ñ3Ô3ð�6ð ˜eð ¨H°T¬Nð ð ð ñ 4Ô3ñ EÔDñ &Ô%ðð Ð˜Ô+Ñ,Ô,Ø€ˆV�VÑÔðA˜&ð A Uð A°8¸D´>ð Að Að Añ Ôñ -Ô,ðAð Ð˜œÑ&Ô&Ø€�„ð�ð ˜Sð °ð ð ð ñ „ñ 'Ô&ðð* Ð˜Ô)Ñ*Ô*Ø€˜ÐÑÔð�Fð  ð °Tð ð ð ñ Ôñ +Ô*ðð, Ð˜œÑ'Ô'Ø€�„ð Ø$Øñð Øðàðð ðð ð	ð
 ðð ðð ð ñ „ñ (Ô'ðð& Ð˜Ô5Ñ6Ô6Ø€�„ðØðàðð ðð ð	ð
 ðð ð ñ „ñ 7Ô6ðð:ˆD�ŒIð ð ð ð ðØ�&Œ\ðà	ðð ðð 
ˆ&„\ð	ð ð ð ð*˜T &œ\ð ð ð ð ð
 t¨F¤|ð 
¸#ð 
ð 
ð 
ð 
ð"Ø�&Œ\ð"à	ð"ð ð"ð "ð "ð "ðJ Ð˜œÔ0°$´/Ô2EÐFÑGÔGð
 !ñ	ð Ø�&Œ\ðà	ðð ðð 
�&Ô	ð	ð
 ðð ð ñ HÔGðð  ÐØ	ÔÔ'¨Ô)CÔ)GÐHñô ð Ø"&ñ	ð Ø
ðà�c”ðð 
ðð 
�$�v”,Ô	ð	ð
 ˆd�6ŒlÔðð ð ñô ðð  Ð˜Ô)Ô0Ñ1Ô1ñ5ð 5˜ð 5¨Cð 5°cð 5À%ÈÐPSÈÔBTð 5ð 5ð 5ñ 2Ô1ð5ð Ð˜Ô4Ô<Ñ=Ô=à67ñBð BØðBØ $ S¤	ðBØ03ðBà
ˆ6�3ˆ;ÔðBð Bð Bñ >Ô=ðBð Ð˜œ
Ô)Ñ*Ô*ñ/ð /�ð / Cð /¨cð /¸%ÀÈÀÔ:Lð /ð /ð /ñ +Ô*ð/ð" ÔÔ-×5Ò5ØÔ)ñô ð ñ/ð /Ø
ð/à &ð/ð 
ð/ð ˆ6�3ˆ;Ôð	/ð /ð /ñô ð/ð@ Ð˜œ
Ñ#Ô#Ø€˜ÐÑÔØñð �ð ˜fð ¨Fð ¸#ð È#ð ð ð ñ Ôñ Ôñ $Ô#ðð" Ð˜Ô.Ñ/Ô/Ø€�„Øð
 ØØñð Ø
ðà
ðð ðð ð	ð
 ðð ðð ð ñ Ôñ „ñ 0Ô/ðð" Ð˜œ
Ñ#Ô#Ø€˜ÐÑÔØñ	ð 	�ð 	˜fð 	¨6ð 	¸ð 	Èð 	ð 	ð 	ñ Ôñ Ôñ $Ô#ð	ð Ð˜Ô7Ô?Ñ@Ô@ØðS&ØðS&àðS&ð ðS&ð ð	S&ð
 �FÔðS&ð ðS&ð ðS&ð 
ðS&ð ðS&ð �d”ðS&ð ˆ8�FÔ˜X fÔ-¨x¸Ô/?Ð?Ô@ðS&ð S&ð S&ñ Ôñ AÔ@ðS&ðn Ð˜Ô7Ô;Ñ<Ô<ðØðàðð ðð ð	ð
 �FÔðð ðð ðð 
ðð ðð �d”ðð Œ,ðð Œ,ðð Œ,ðð ˆ8�FÔ˜X fÔ-¨x¸Ô/?Ð?Ô@ðð ð ñ =Ô<ðð8�8˜FÔ#ð ¨x¸Ô/?ð ð ð ð ð Ð˜Ô7Ô?Ñ@Ô@ðNØðNàðNð ˜3”iðNð ð	Nð
 ðNð �VÔðNð �6Ô
ðNð �d”ðNð ˆ8�FÔ˜X fÔ-¨x¸Ô/?Ð?Ô@ðNð Nð Nñ AÔ@ðNðd Ð˜Ô7Ô;Ñ<Ô<ðØðàðð ˜3”iðð ð	ð
 ðð �VÔðð �6Ô
ðð �d”ðð Œ,ðð Œ,ðð Œ,ðð ˆ8�FÔ˜X fÔ-¨x¸Ô/?Ð?Ô@ðð ð ñ =Ô<ðð4OØðOà�VÔðOð �6Ô
ðOð ˜6Ô"ð	Oð
 ˜&Ô!ðOð ðOð ðOð 
ðOð ðOð ˆ6�6˜6 8¨FÔ#3°X¸fÔ5EÐEÔFðOð Oð Oð Oðd Ð˜Ô.Ñ/Ô/Ø€ˆU�K Ñ/Ô/ð(Øð(à�VÔð(ð �6Ô
ð(ð ˜6Ô"ð	(ð
 ˜&Ô!ð(ð ð(ð ð(ð 
ð(ð ˆ6�6˜6Ð!Ô"ð(ð (ð (ñ 0Ô/ñ 0Ô/ð(ð4 ÔÔ×'Ò'¨Ô(<Ñ=Ô=ØÔÔ×'Ò'¨Ô(MÑNÔNð 
Øð 
à�VÔð 
ð �6Ô
ð 
ð ˜6Ô"ð	 
ð
 ˜&Ô!ð 
ð ð 
ð ð 
ð 
ð 
ð ˆ6�6˜6Ð!Ô"ð 
ð  
ð  
ñ OÔNñ >Ô=ð 
ðF ÔÔ×"Ò" ;Ô#HÑIÔIñGð G°4¸´<ð Gð Gð Gñ JÔIðGð Ð˜ÔAÔIÑJÔJðØðà�VÔðð �6Ô
ðð ð	ð
 ðð ðð 
ðð ˆ6�6˜6Ð!Ô"ðð ð ñ KÔJðð* Ð˜Ô5Ô=Ñ>Ô>ð(Øð(à�VÔð(ð �6Ô
ð(ð ð	(ð
 ð(ð ð(ð ð(ð 
ð(ð ˆ6�6˜6Ð!Ô"ð(ð (ð (ñ ?Ô>ð(ð  Ð˜Ô5Ô>Ñ?Ô?ð(Øð(à�VÔð(ð �6Ô
ð(ð ð	(ð
 ð(ð 
ð(ð ˆ6�6˜6Ð!Ô"ð(ð (ð (ñ @Ô?ð(ð Ð˜Ô@ÔHÑIÔIðKØðKà�VÔðKð �6Ô
ðKð ð	Kð
 ðKð ðKð ðKð 
ðKð ˆ6�6˜6 6¨6Ð1Ô2ðKð Kð Kñ JÔIðKð0Øðà�VÔðð �6Ô
ðð ð	ð
 ðð 
ðð ðð ðð ð ð ð: Ð˜Ô4Ô<Ñ=Ô=ð1Øð1à�VÔð1ð �6Ô
ð1ð ð	1ð
 ð1ð ð1ð 
ð1ð ˆ6�6˜6 6Ð)Ô*ð1ð 1ð 1ñ >Ô=ð1ð4 Ð˜Ô?ÔGÑHÔHðCØðCà�VÔðCð �6Ô
ðCð ð	Cð
 ðCð ðCð 
ðCð ˆ6�6˜6 6¨6°6Ð9Ô:ðCð Cð Cñ IÔHðCð4 Ð˜Ô2Ô:Ñ;Ô;ð1Øð1à�VÔð1ð �6Ô
ð1ð ð	1ð
 ð1ð ð1ð 
ð1ð ˆ6�6˜6 6Ð)Ô*ð1ð 1ð 1ñ <Ô;ð1ð4 Ð˜Ô+Ñ,Ô,Ø€ˆV�VÑÔØñð ð ñ Ôñ Ôñ -Ô,ðð Ð˜œÑ&Ô&Ø€�„ð $(ØØ%)ØØØ37ð&ð &ð &ØˆV�ZÐÔ ð&ð �E”KÔ ð&ð
 �U”\Ô"ð&ð ð&ð ð&ð ˜EÔ/Ô0ð&ð &ð &ñ „ñ 'Ô&ð&ðX Ð˜œ d¤i°´ÐAÑBÔBØ€�„ðð ñ „ñ CÔBðð ÔÔ×&Ò& {Ô';Ñ<Ô<ØÐ˜Ô-Ñ.Ô.Ø€ˆV�V˜V VÑ,Ô,ðØðàðð �6Ô
ðð ˜6Ô"ð	ð
 ˜&Ô!ðð ðð !&ðð ðð ð ñ -Ô,ñ /Ô.ñ =Ô<ðð>ð ð ð Ð˜Ô0Ô8Ñ9Ô9ðØðàðð �VÔðð ˜6Ô"ð	ð
 ˜&Ô!ðð ˜Ôðð ˜&Ô!ðð ðð 
ðð �d”ðð ðð ˆ6�8˜FÔ# X¨fÔ%5Ð5Ô6ðð ð ñ :Ô9ðð6 Ð˜Ô7Ô?Ñ@Ô@ðdØðdàðdð �VÔðdð ˜6Ô"ð	dð
 ˜&Ô!ðdð ˜Ôðdð ˜&Ô!ðdð ðdð 
ðdð �d”ðdð ˆ6�8˜FÔ# X¨fÔ%5Ð5Ô6ðdð dð dñ AÔ@ðdðP Ð˜Ô7Ô;Ñ<Ô<ð"Øð"àð"ð �VÔð"ð ˜6Ô"ð	"ð
 ˜&Ô!ð"ð ˜Ôð"ð ˜&Ô!ð"ð ð"ð 
ð"ð �d”ð"ð Œ,ð"ð Œ,ð"ð Œ,ð"ð ˆ6�8˜FÔ# X¨fÔ%5Ð5Ô6ð"ð "ð "ñ =Ô<ð"ðJ Ð˜Ô7Ñ8Ô8Ø€ˆV�V˜VÑ$Ô$ðØðàðð ðð ˜6Ô"ð	ð
 ˜&Ô!ðð ˜Ôðð �vÔðð ðð ð ñ %Ô$ñ 9Ô8ðð0 Ð˜Ô6Ñ7Ô7Ø€ˆV�V˜VÑ$Ô$ðØðàðð ðð ˜6Ô"ð	ð
 ˜&Ô!ðð ˜Ôðð �vÔðð ðð ðð ð ñ %Ô$ñ 8Ô7ðð2 Ð˜Ô1Ñ2Ô2Ø€�„Øðc'˜vð c'°E¸#¸s¸(´Oð c'ð c'ð c'ñ Ôñ „ñ 3Ô2ðc'ðLØ
ðØ)ðØ8<¸S¼	ðØHKðð ð ð ð0 Ð˜Ô)Ñ*Ô*Ø€�„ð*8Ø
ð*8àð*8ð �c”ð*8ð *8ð *8ñ „ñ +Ô*ð*8ðZ Ð˜Ô)Ñ*Ô*Ø€�„ð49Øð49àð49ð �c”ð49ð �ŒIð	49ð
 �#ŒYð49ð 49ð 49ñ „ñ +Ô*ð49ðn Ð˜œÑ(Ô(ð ðHð Hð HØðHà	ðHð ðHð ð	Hð ðHð Hð Hñ )Ô(ðHð Ð˜œÑ'Ô'Ø€�„ð ðIð Ið IØðIà	ðIð ðIð ð	Ið ðIð Ið Iñ „ñ (Ô'ðIð$ ð%@ð %@ð %@Øð%@à	ð%@ð ð%@ð ð	%@ð ð%@ð ð%@ñ %@ð %@ð %@ðP Ð˜Ô)Ô1Ñ2Ô2ØÔÔ×"Ò" ;Ô#HÑIÔIññ ð ñ JÔIñ 3Ô2ðð2 Ð˜Ô(Ñ)Ô)ð<�:ð < Cð <°
ð <ÀJð <ñ <ð <ñ *Ô)ð<ð Ð˜œÑ(Ô(Ø€�„ð=�*ð = 3ð =¨zð =À:ð =ñ =ð =ñ „ñ )Ô(ð=ð@Øð@Øð@Ø$.ð@Ø8Bð@ØPTð@ñ @ð @ð @ð, Ð˜Ô0Ñ1Ô1Ø€ˆX�xÑ Ô Øð(˜fð (¨¨v°v¨~Ô)>ð (ñ (ð (ñ Ôñ !Ô ñ 2Ô1ð(ð Ð˜œÑ%Ô%Ø€�„ð $'Ø$'Ø+/ñ	ð Øñà	ˆt�S˜%ÐÔ	 ñð ��c˜5Ð Ô
!ñð ˜œÔ(ð	ñ ð ñ „ñ &Ô%ðð  Ð˜œÑ&Ô&ñ;ñ ;ð ;ñ 'Ô&ð;ñ
ð ð ñ8ð ð ð Ð˜Ô/Ô3Ñ4Ô4ØÐ˜Ô/Ô3Ñ4Ô4ØÐ˜Ô/Ô3Ñ4Ô4ØÔÔ×$Ò$ [Ô%JÑKÔKØÔÔ×$Ò$ [Ô%9Ñ:Ô:ØÔÔ×$Ò$ [Ô%JÑKÔKØÔÔ×$Ò$ [Ô%9Ñ:Ô:ØÔÔ×$Ò$ [Ô%JÑKÔKØÔÔ×$Ò$ [Ô%9Ñ:Ô:ð	3Øð	3à˜$˜sœ)Ô$ñ	3ð ˜D œKÔ(ð	3ð ð		3ñ 	3ð 	3ñ ;Ô:ñ LÔKñ ;Ô:ñ LÔKñ ;Ô:ñ LÔKñ 5Ô4ñ 5Ô4ñ 5Ô4ð	3ð Ð˜Ô6Ô:Ñ;Ô;ØÐ˜Ô6Ô:Ñ;Ô;ØÐ˜Ô6Ô:Ñ;Ô;ØÔÔ#×+Ò+¨KÔ,QÑRÔRØÔÔ#×+Ò+¨KÔ,@ÑAÔAØÔÔ#×+Ò+¨KÔ,QÑRÔRØÔÔ#×+Ò+¨KÔ,@ÑAÔAØÔÔ#×+Ò+¨KÔ,QÑRÔRØÔÔ#×+Ò+¨KÔ,@ÑAÔAð	?Øð	?à˜$˜sœ)Ô$ñ	?ð ˜D œKÔ(ð	?ð ð		?ñ 	?ð 	?ñ BÔAñ SÔRñ BÔAñ SÔRñ BÔAñ SÔRñ <Ô;ñ <Ô;ñ <Ô;ð	?ññ ð ð ð@ Ð˜Ô0Ô8¸$Ô:QÔ:UÐVÑWÔWØÔÔ ×(Ò(¨Ô)NÑOÔOØÔÔ ×(Ò(¨Ô)=Ñ>Ô>Ø€ D°dÑ;Ñ;Ô;ð #ñ;ð ;Øð;à�c”ñ;ð �UŒOð;ð ð	;ñ ;ð ;ñ <Ô;ñ ?Ô>ñ PÔOñ XÔWð;ð ÐØ	Ô#Ô+¨TÔ-KÔ-OÐPñô ð ÔÔ'×/Ò/°Ô0UÑVÔVØÔÔ'×/Ò/°Ô0DÑEÔEØ€ D°dÑ;Ñ;Ô;ð #ñGð GØðGà�c”ñGð �UŒOðGð ð	Gñ Gð Gñ <Ô;ñ FÔEñ WÔVñô ðGð Ð˜Ô0Ô8¸$Ô:QÔ:UÐVÑWÔWØÔÔ ×(Ò(¨Ô)NÑOÔOØÔÔ ×(Ò(¨Ô)=Ñ>Ô>Ø€ D°dÑ;Ñ;Ô;ð !%Ø $ñ	Gð GØðGà�c”ñGð �uŒoñGð �uŒoð	Gð
 ðGñ Gð Gñ <Ô;ñ ?Ô>ñ PÔOñ XÔWðGð ÐØ	Ô#Ô+¨TÔ-KÔ-OÐPñô ð ÔÔ'×/Ò/°Ô0UÑVÔVØÔÔ'×/Ò/°Ô0DÑEÔEØ€ D°dÑ;Ñ;Ô;ð !%Ø $ñ	Sð SØðSà�c”ñSð �uŒoñSð �uŒoð	Sð
 ðSñ Sð Sñ <Ô;ñ FÔEñ WÔVñô ðSð Ð˜Ô0Ô8¸$Ô:QÔ:UÐVÑWÔWØÔÔ ×(Ò(¨Ô)NÑOÔOØÔÔ ×(Ò(¨Ô)=Ñ>Ô>Ø€ D°dÑ;Ñ;Ô;ð !%Ø $Ø $ñQð QØðQà�c”ñQð �uŒoñQð �uŒoñ	Qð
 �uŒoðQð ðQñ Qð Qñ <Ô;ñ ?Ô>ñ PÔOñ XÔWðQð ÐØ	Ô#Ô+¨TÔ-KÔ-OÐPñô ð ÔÔ'×/Ò/°Ô0UÑVÔVØÔÔ'×/Ò/°Ô0DÑEÔEØ€ D°dÑ;Ñ;Ô;ð !%Ø $Ø $ñ	ð 	Øð	à�c”ñ	ð �uŒoñ	ð �uŒoñ		ð
 �uŒoð	ð ð	ñ 	ð 	ñ <Ô;ñ FÔEñ WÔVñô ð	ð ð
 ñ	ð Øðà�c”ñð �˜%”Ô!ñð ð	ð
 ðñ ð ñ Ôðñ4ð ð ñ >ð >ð >ñ/ð /ð /ñð ð ð FKñ+ñ +ð +ð +ñ\ð ð ñð ð ñ&ñ &ð &ð &ñ,/-ñ /-ð /-ð /-ñd& ð & ð & ðR Ð˜œÔ+Ñ,Ô,Ø„Ô×Ò˜[ÔBÑCÔCØ„Ô×Ò˜[Ô1Ñ2Ô2ñ.ð .ñ 3Ô2ñ DÔCñ -Ô,ð.ð8 Ð˜œÔ+Ñ,Ô,Ø„Ô×Ò˜[ÔBÑCÔCØ„Ô×Ò˜[Ô1Ñ2Ô2ñ.ð .ñ 3Ô2ñ DÔCñ -Ô,ð.ð8 Ð˜œÔ*Ñ+Ô+Ø„Ô×Ò˜KÔAÑBÔBØ„Ô×Ò˜KÔ0Ñ1Ô1ñ.ð .ñ 2Ô1ñ CÔBñ ,Ô+ð.ð@ Ð˜œÔ*Ñ+Ô+Ø„Ô×Ò˜KÔAÑBÔBØ„Ô×Ò˜KÔ0Ñ1Ô1ñ.ð .ñ 2Ô1ñ CÔBñ ,Ô+ð.ñ@ð ð ñ/ñ /ð /ð /ñ6=ñ =ð =ð =ñ@/ð /ð /ðd Ð˜œ	œÑ(Ô(Ø„„×Ò˜Ô>Ñ?Ô?Ø„„×Ò˜Ô-Ñ.Ô.ñSð Sñ /Ô.ñ @Ô?ñ )Ô(ðSð> Ð˜œ	œÑ'Ô'Ø„„×Ò˜Ô=Ñ>Ô>Ø„„×Ò˜Ô,Ñ-Ô-ñSð Sñ .Ô-ñ ?Ô>ñ (Ô'ñSñ<;ð ;ñ ;ñ;ð ;ñ ;ð Ð˜�œÑ&Ô&Ø…„×Ò�{Ô<Ñ=Ô=Ø…„×Ò�{Ô+Ñ,Ô,ñ.ð .ñ -Ô,ñ >Ô=ñ 'Ô&ñ.ð6 Ð˜�œÑ'Ô'Ø…„×Ò˜Ô=Ñ>Ô>Ø…„×Ò˜Ô,Ñ-Ô-ñ.ð .ñ .Ô-ñ ?Ô>ñ (Ô'ñ.ð6 Ð˜Õ4Ô8Ñ9Ô9ØÕÔ!×)Ò)¨+Ô*OÑPÔPØÕÔ!×)Ò)¨+Ô*>Ñ?Ô?ñð ñ @Ô?ñ QÔPñ :Ô9ñð Ð˜Õ3Ô7Ñ8Ô8ØÕÔ ×(Ò(¨Ô)NÑOÔOØÕÔ ×(Ò(¨Ô)=Ñ>Ô>ñð ñ ?Ô>ñ PÔOñ 9Ô8ñð Ð˜Õ0Ô4Ñ5Ô5ØÐ˜Õ1Ô5Ñ6Ô6ØÕÔ×#Ò# KÔ$IÑJÔJØÕÔ×#Ò# KÔ$8Ñ9Ô9ØÕÔ×%Ò% kÔ&KÑLÔLØÕÔ×%Ò% kÔ&:Ñ;Ô;ØÕÔ×&Ò& {Ô'LÑMÔMØÕÔ×&Ò& {Ô';Ñ<Ô<ñAð Añ =Ô<ñ NÔMñ <Ô;ñ MÔLñ :Ô9ñ KÔJñ 7Ô6ñ 6Ô5ñAð Ð˜Õ/Ô7¸Õ9OÔ9SÐTÑUÔUØ€�„ð
 !%ñ	Kð KØðKà�c”ñKð ñKð �uŒoð	Kð
 ðKñ Kð Kñ „ñ VÔUñKð ÐØ	ÕÔ% tÕ'?Ô'CÐDñô ð ÕÔ!×)Ò)¨+Ô*>Ñ?Ô?Ø€�„ð
 !%Ø $ñUð UØðUà�c”ñUð ñUð �uŒoñ	Uð
 �uŒoðUð ðUñ Uð Uñ „ñ @Ô?ñô ñ
Uð ÐØ	ÕÔ&¨Õ(AÔ(EÐFñô ð €�„ð
 !%Ø $Ø $ñ
ð 
Øð
à�c”ñ
ð ñ
ð �uŒoñ	
ð
 �uŒoñ
ð �uŒoð
ð ð
ñ 
ð 
ñ „ñô ñ
ñVñ Vð Vñ Vñ/ð /ñ /ð7Ø	�&Ô	ñ7Ø$,¨VÔ$4ñ7ØIOð7àð7ñ 7ð 7ñ 7ñ-Ð'9ð -¸fð -ñ -ð -ñ -ð ðEØðEà�c”ñEð ñEð �˜%”Ô!ð	Eð
 ðEñ Eð Eñ ÔñEðR Ð˜Õ)Ô1Ñ2Ô2ñ�Fñ ˜vð ¨$ð ñ ð ñ 3Ô2ñð Ð˜Õ,¨dÕ.?Ð@ÑAÔAØ€�„ñð ñ „ñ BÔAñð Ð˜Õ+Ð,Ñ-Ô-ñ"ð "ñ .Ô-ñ"ð Ð˜Õ/Ð0Ñ1Ô1ñ9ñ 9ð 9ñ 2Ô1ñ9ð Ð˜Õ2Ð3Ñ4Ô4ñCð Cñ 5Ô4ñCð6 Ð˜ÕAÐBÑCÔCñMð Mñ DÔCñMð22 Ø
ð2 àð2 ð �VÔð2 ð ð	2 ð
 ð2 ð ˆ6�6ˆ>Ôð2 ñ 2 ð 2 ñ 2 ðj Ð˜Õ-Ñ.Ô.Ø€ˆX�~Ñ&Ô&ðLØ
ðLàðLð �VÔðLð ð	Lð
 ðLð ˆ6�6ˆ>ÔðLñ Lð Lñ 'Ô&ñ /Ô.ñLð6 Ð˜Õ/Ñ0Ô0Ø€ˆX�~Ñ&Ô&ðLØ
ðLàðLð �VÔðLð ð	Lð
 ðLð ˆ6�6ˆ>ÔðLñ Lð Lñ 'Ô&ñ 1Ô0ñLð/ Fñ /¨uð /¸ð /ñ /ð /ñ /ð5 Fñ 5¨uð 5¸ð 5ñ 5ð 5ñ 5ñ
¨ð 
Ð3Eð 
ñ 
ð 
ñ 
ñ(FÐ%7ñ F¸Vð FÈð Fñ Fð Fñ Fñ!�X˜fÔ%ð !¨&ð !ñ !ð !ñ !ñNØñNØ#'ðNØ05´ðNØEJÄ\ðNñ Nð Nñ Nñ&˜fñ &¨ñ &°ñ &ÀTð &ñ &ð &ñ &ñ"/˜fñ /¨ñ /°ñ /¸ñ /ÈTð /ñ /ð /ñ /ñ"! Vð !°4¸´9ñ !ÈTð !ñ !ð !ñ !ñ$ Vð $°4¸´9ñ $ÈTð $ñ $ð $ñ $ð Ð˜Õ2Ñ3Ô3Ø€�„ØñS ð S¨t°C¬yñ SÈð Sñ Sð Sñ Ôñ „ñ 4Ô3ñSð  ØØØñc4ñ c4Øñc4à
ñc4ð ñc4ð ñ	c4ð
 ñc4ð ðc4ð ðc4ñ c4ð c4ñ c4ðL Ð˜Õ,Ñ-Ô-Ø€�„Øð  ØØññ Øñà
ñð ñð ñ	ð
 ðð ðñ ð ñ Ôñ „ñ .Ô-ñð  Ð˜�Ñ Ô Ø€˜ÐÑÔØñ	#ð 	#ñ Ôñ Ôñ !Ô ñ	#ð Ð˜Õ=Ñ>Ô>Ø€�„à¨$¸)¼.Ô:Nð1ñ 1ð 1ñ „ñ ?Ô>ñ1ñ˜œñ °´ñ Àdð Ètð ñ ð ñ ð@ …Ô×Ò˜[ÔBÑCÔCØ…„×Ò˜Ô>Ñ?Ô?Ø€˜ÑÑÔØ',ñ tWð tWñ tWð tWñ Ôñ @Ô?ñ DÔCñtWðn Ð˜Õ0Ô8¸$Õ:QÔ:UÐVÑWÔWØÕÔ ×(Ò(¨Ô)=Ñ>Ô>Ø€�„Øð
  $Ø#ñPð PØðPà�s˜C�x”ñPð ñPð �eŒ_ñ	Pð
 �eŒ_ðPð ðPñ Pð Pñ Ôñ „ñ ?Ô>ñ XÔWñPðf Ð˜Õ/Ô3Ñ4Ô4ØÕÔ×$Ò$ [Ô%JÑKÔKØÕÔ×$Ò$ [Ô%9Ñ:Ô:Ø€�„Øð
 48ñ	Wñ WØðWà˜%  S œ/Ô*ñWð ñWð ˜E %¨ ,Ô/Ô0ð	Wð
 ðWñ Wð Wñ Ôñ „ñ ;Ô:ñ LÔKñ 5Ô4ñ
Wð. Ð˜Õ-Ñ.Ô.ØÐ˜Õ-Ñ.Ô.ØÐ˜Õ-Ñ.Ô.ØØ€�„ñ	�vð 	¨¨c°3¨h¬ð 	¸Fð 	ñ 	ð 	ñ „ñ Ôñ /Ô.ñ /Ô.ñ /Ô.ñ
	ð Ð˜Õ.Ñ/Ô/ØÐ˜Õ.Ñ/Ô/ØÐ˜Õ.Ñ/Ô/ØØ€�„ñ	˜ð 	¨¨s°C¨x¬ð 	¸Vð 	ñ 	ð 	ñ „ñ Ôñ 0Ô/ñ 0Ô/ñ 0Ô/ñ
	ñØðà�3˜�8Œ_ñð �c˜3 �_ fÐ,Ô-ðð ð	ñ ð ñ ð8 Ð˜Õ6Ñ7Ô7ØÐ˜Õ6Ñ7Ô7ØÐ˜Õ6Ñ7Ô7Ø€ˆ\ÑÔñTð Tñ Ôñ 8Ô7ñ 8Ô7ñ 8Ô7ñTðn Ð˜�Ñ%Ô%Ø€‰U‘EÑÔØ uñ ð ñ ð ñ Ôñ &Ô%ñð Ð˜�Ñ$Ô$Ø€�„ñX°4ñ Xð Xñ Xð Xñ „ñ %Ô$ñXð Ð˜�Ô,¨d­k¬oÐ>Ñ?Ô?Ø€�„ð $(Ø �=Ø%)Øñ
ð 
ð 
Ø	ð
ð �E”KÔ ñ
ð �Lð	
ð
 �U”\Ô"ð
ð ð
ñ 
ð 
ñ „ñ @Ô?ñ
ð Ð˜�Õ*Ð+Ñ,Ô,ð
 $(Ø �=Ø%)Øñð ð Øðà	ðð �E”KÔ ñ	ð
 �Lðð �U”\Ô"ðð ðñ ð ñ -Ô,ñð Ð˜	Ñ"Ô"ñ,ð ,ñ #Ô"ñ,ð Ð˜Õ.Ñ/Ô/ØÕÔ×'Ò'¨Ô(<Ñ=Ô=Ø€�„ð ØØ#Ø”^Ô)ð)ð )Øð)àð)ð ñ)ð ð	)ð
 �VÔð)ð ð)ð ð)ñ )ð )ñ „ñ >Ô=ñ 0Ô/ñ)ðX Ð˜Õ;Ñ<Ô<ØÕ$Ô,×4Ò4°[Ô5IÑJÔJØ€ˆX‘{Ñ#Ô#ð-Øð-àð-ð ð-ð ˆ6�6ˆ>Ôð	-ñ -ð -ñ $Ô#ñ KÔJñ =Ô<ñ-ðx Ð˜ÕHÔPÑQÔQð
 Øñ@ð #'Ø!ñ@ð @ñ @Øñ@à	ð@ð ñ@ð ñ	@ð
 ñ@ð ˜Ôð@ð �EŒ?ð@ð ˆ6�6ˆ>Ôð@ñ @ð @ñ RÔQñ@ñFð ñ ð Ð˜�˜Ñ'Ô'Ø€˜ÐÑÔØññ ð ñ Ôñ Ôñ (Ô'ñð Ð˜Õ)Ñ*Ô*Ø€�„ñ9ð 9ñ „ñ +Ô*ñ9ð Ð˜�Ñ'Ô'ñ6ð 6ñ (Ô'ñ6ð Ð˜�Ô)¨4­8¬<Ð8Ñ9Ô9ð $(Ø ñ		Dð 	Dð 	DØ
ð	Dð �E”KÔ ð	Dð 
�&Ô	ð		Dð
 ð	Dñ 	Dð 	Dñ :Ô9ñ	Dð Ð˜�Ô-¨t­|Õ/?Ð@ÑAÔAñ.ð .˜&ð . x°¤}ð .ñ .ð .ñ BÔAñ.ð Ð˜œ	œÕ=Ñ>Ô>ñ,ñ ,ð ,ñ ?Ô>ñ,ð Ð˜�	Ñ"Ô"Ø€�„Ø38Àñ 
ð 
ñ 
ð 
ñ „ñ #Ô"ñ
ð$ Ð˜�Ô.Ñ/Ô/ð ,0ñð ð Ø
Œ,ñð ˜œÔ(ðð „\ð	ñ ð ñ 0Ô/ñð$ 5:ñ #ð #ñ #ð #ñ #ð <AÈñ +ð +ñ +ð +ñ +ð: Ð˜�	Ñ"Ô"Ø€�„ñð ñ „ñ #Ô"ñð
 Ð˜�Ñ'Ô'ñGñ Gð Gñ (Ô'ñGð Ñ �•˜t�{Ñ +Ô +Ð +Ø Ñ �•˜dœjÑ )Ô )Ð )Ø Ñ �•˜dœjÑ )Ô )Ð )Ø Ñ �• ¥Ñ -Ô -Ð -Ø Ñ �•˜TœYÑ 'Ô 'Ð 'Ø Ñ �•˜T�YÑ 'Ô 'Ð 'Ø Ñ �• $¤.Ñ 1Ô 1Ð 1Ø Ñ �• ¥Ñ /Ô /Ð /Ø Ñ �Õ" DÔ$4Ñ 5Ô 5Ð 5Ø Ñ �• ¥Ñ -Ô -Ð -Ø Ñ �Õ! 4¥?Ñ 3Ô 3Ð 3Ø Ñ �• $¥.Ñ 1Ô 1Ð 1Ø Ñ �Õ# TÕ%6Ñ 7Ô 7Ð 7Ø Ñ �•˜t�{Ñ +Ô +Ð +Ø Ñ �Õ! 4¥?Ñ 3Ô 3Ð 3Ø Ñ �• ¥Ñ -Ô -Ð -Ø Ñ �Õ! 4¥?Ñ 3Ô 3Ð 3Ø Ñ �•˜d�jÑ )Ô )Ð )Ø Ñ �•˜T�YÑ 'Ô 'Ð 'Ø Ñ �•˜t�{Ñ +Ô +Ð +Ø Ñ �•˜d�jÑ )Ô )Ð )Ø Ñ �• ¥Ñ -Ô -Ð -Ø Ñ �Õ" DÕ$4Ñ 5Ô 5Ð 5Ø Ñ �Õ% tÕ':Ñ ;Ô ;Ð ;Ø Ñ �•˜TœYÑ 'Ô 'Ð 'Ð 'Ð 'r+   