+
    œ°³jH  ã                   óŒ  € ^ RI t ^ RIHt ^ RIt^ RIHt ^ RIHu Ht ^RI	H
t ^RIHtHt ^RIHtHt ^RIHt ^RIHtHt ^RIHt ^R	IHt ^R
IHtHtHt ^RIH t  ^RI!H"t" ^RI#H$t$  ! R R]4      t%]] ! R R]4      4       4       t& ! R R]PN                  4      t( ! R R]PN                  4      t) ! R R]%4      t* ! R R]PN                  4      t+ ! R R]4      t, ! R R]PN                  4      t- ! R R]PN                  4      t. ! R  R!]PN                  4      t/ ! R" R#]%4      t0]! R$R%7       ! R& R']%4      4       t1. R(Ot2R# ))é    N)Ú	dataclass)Úinitialization)ÚACT2CLSÚACT2FN)Úfilter_output_hidden_statesÚload_backbone)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithNoAttention)ÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tuple)Úmerge_with_config_defaults)Úcapture_outputs©ÚSLANetConfigc                   óz   a a€ ] tR t^*t oRtRtRtRt. t]	P                  ! 4       V 3R l4       tV3R ltRtVtV ;t# )ÚSLANetPreTrainedModelÚbackboneÚpixel_valuesTc                ó  <€ \         SV `  V4       \        V\        P                  4      '       dã   VP
                  ^ 8”  d(   R\        P                  ! VP
                  4      ,          M^ p\        P                  ! VP                  V) V4       \        P                  ! VP                  V) V4       VP                  e$   \        P                  ! VP                  V) V4       VP                  e$   \        P                  ! VP                  V) V4       \        V\        4      '       dÞ   R\        P                  ! V P                  P
                  R,          4      ,          pVP                   3 F’  pVP#                  4        F{  p\        V\        P$                  4      '       g   K%  \        P                  ! VP&                  V) V4       VP(                  f   KX  \        P                  ! VP(                  V) V4       K}  	  K”  	  R# R# )zInitialize the weightsg      ð?N)ÚsuperÚ_init_weightsÚ
isinstanceÚnnÚGRUCellÚhidden_sizeÚmathÚsqrtÚinitÚuniform_Ú	weight_ihÚ	weight_hhÚbias_ihÚbias_hhÚSLANetSLAHeadÚconfigÚstructure_generatorÚchildrenÚLinearÚweightÚbias)ÚselfÚmoduleÚstdÚ	generatorÚlayerÚ	__class__s   &&   €Úk/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/slanet/modeling_slanet.pyr   Ú#SLANetPreTrainedModel._init_weights2   sa  ø€ ô 	‰Ñ˜fÔ%ô �fœbŸj™j×)Ò)Ø9?×9KÑ9KÈaÔ9O�#œŸ	š	 &×"4Ñ"4Ó5Ö5ÐUVˆCÜ�MŠM˜&×*Ñ*¨S¨D°#Ô6Ü�MŠM˜&×*Ñ*¨S¨D°#Ô6Ø�~‰~Ò)Ü—’˜fŸn™n¨s¨d°CÔ8Ø�~‰~Ò)Ü—’˜fŸn™n¨s¨d°CÔ8ô �fœm×,Ò,ØœŸ	š	 $§+¡+×"9Ñ"9¸CÕ"?Ó@Õ@ˆCà$×8Ñ8Ó:�	Ø&×/Ñ/Ö1�EÜ! %¬¯©×3Ô3ÜŸš e§l¡l°S°D¸#Ô>Ø Ÿ:™:Ô1Ü ŸMšM¨%¯*©*°s°d¸CÖ@ó	 2ó ;ñ -ó    c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # ©é   r)   r   )ÚformatÚ__classdict__s   "€r5   Ú__annotate__Ú"SLANetPreTrainedModel.__annotate__*   s   ø‡ ‚ ÙÑò r7   © )Úimage)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingÚ_keep_in_fp32_modules_strictÚtorchÚno_gradr   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r4   r<   s   @@r5   r   r   *   sC   ù‡ € à"ÐØ$€OØ!ÐØ&*Ð#Ø#%Ð à
‡]‚]ƒ_ôAó ðA÷ … r7   r   c                   ó8   a € ] tR t^Mt o RtRtRtV 3R ltRtV t	R# )ÚSLANetForTableRecognitionOutputaW  
head_hidden_states (`tuple(torch.FloatTensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
    Hidden-states of the SLANetSLAHead at each prediction step, varies up to max `self.config.max_text_length` states (depending on early exits).
head_attentions (`tuple(torch.FloatTensor)`, *optional*, returned when `output_attentions=True` is passed or when `config.output_attentions=True`):
    Attentions of the SLANetSLAHead at each prediction step, varies up to max `self.config.max_text_length` attentions (depending on early exits).
Nc                óv   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   # )r:   NÚhead_hidden_statesÚhead_attentions©rJ   ÚFloatTensor)r;   r<   s   "€r5   r=   Ú,SLANetForTableRecognitionOutput.__annotate__M   s5   ø‡ ‚ ñ ×)Ñ)¨DÕ0Ñ7ñ ñ ×&Ñ&¨Õ-Ñ4ò r7   r?   )
rA   rB   rC   rD   Ú__doc__rT   rU   rL   rM   rN   )r<   s   @r5   rR   rR   M   s   ø‡ € ñð 48ÐØ04€O÷ ƒ r7   rR   c                   óD   a a€ ] tR t^[t oV 3R ltV3R lR ltRtVtV ;t# )ÚSLANetAttentionGRUCellc                ó  <€ \         SV `  4        \        P                  ! WR R7      V n        \        P                  ! W"4      V n        \        P                  ! V^R R7      V n        \        P                  ! W,           V4      V n        R# )F)r.   N)	r   Ú__init__r   r,   Úinput_to_hiddenÚhidden_to_hiddenÚscorer   Úrnn)r/   Ú
input_sizer   Únum_embeddingsr4   s   &&&&€r5   r]   ÚSLANetAttentionGRUCell.__init__\   s[   ø€ Ü‰ÑÔä!Ÿyšy¨ÀuÔMˆÔÜ "§	¢	¨+Ó CˆÔÜ—Y’Y˜{¨A°EÔ:ˆŒ
ä—:’:˜jÕ9¸;ÓGˆŽr7   c          	      ó~   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  RS[S[,          /# )r:   Úprev_hiddenÚbatch_hiddenÚchar_onehotsÚkwargs)rJ   rW   r   r   )r;   r<   s   "€r5   r=   Ú#SLANetAttentionGRUCell.__annotate__e   sK   ø€ ÷ +ñ +á×&Ñ&ð+ñ ×'Ñ'ð+ñ ×'Ñ'ð	+ñ
 Ñ+Õ,ñ+r7   c                ó  € V P                  V4      pV P                  V4      P                  ^4      pWV,           p\        P                  ! V4      pV P                  V4      p\        P                  ! V^\        P                  R7      P                  VP                  4      pVP                  ^^4      p\        P                  ! W‚4      P                  ^4      p	\        P                  ! W“.^4      p
V P                  W¡4      pW¸3# )é   ©ÚdimÚdtype)r^   r_   Ú	unsqueezerJ   Útanhr`   ÚFÚsoftmaxÚfloat32Útoro   Ú	transposeÚmatmulÚsqueezeÚcatra   )r/   rf   rg   rh   ri   Úbatch_hidden_projÚprev_hidden_projÚattention_scoresÚattn_weightsÚcontextÚconcat_contextÚhidden_statess   &&&&,       r5   ÚforwardÚSLANetAttentionGRUCell.forwarde   sØ   € ð !×0Ñ0°Ó>ÐØ×0Ñ0°Ó=×GÑGÈÓJÐà,Õ?ÐÜ Ÿ:š:Ð&6Ó7ÐØŸ:™:Ð&6Ó7Ðä—y’yÐ!1°qÄÇÁÔN×QÑQÐRb×RhÑRhÓiˆØ#×-Ñ-¨a°Ó3ˆÜ—,’,˜|Ó:×BÑBÀ1ÓEˆÜŸš GÐ#:¸AÓ>ˆØŸ™ Ó=ˆàÐ*Ð*r7   )r_   r^   ra   r`   ©	rA   rB   rC   rD   r]   r�   rM   rN   rO   rP   s   @@r5   r[   r[   [   s   ù‡ € õH÷+÷ +ð +r7   r[   c                   ó<   a a€ ] tR t^|t oRV 3R lltR tRtVtV ;t# )Ú	SLANetMLPc                óþ   <€ \         SV `  4        \        P                  ! W4      V n        \        P                  ! W4      V n        Vf   \        P                  ! 4       V n        R # \        V,          ! 4       V n        R # ©N)	r   r]   r   r,   Úfc1Úfc2ÚIdentityr   Úact_fn)r/   r   Úout_channelsÚ
activationr4   s   &&&&€r5   r]   ÚSLANetMLP.__init__}   sN   ø€ Ü‰ÑÔÜ—9’9˜[Ó6ˆŒÜ—9’9˜[Ó7ˆŒØ'1Ò'9”b—k’k“mˆŽ¼wÀzÖ?RÓ?TˆŽr7   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# r‡   )rˆ   r‰   r‹   ©r/   r€   s   &&r5   r�   ÚSLANetMLP.forwardƒ   s2   € ØŸ™ Ó/ˆØŸ™ Ó/ˆØŸ™ MÓ2ˆØÐr7   )r‹   rˆ   r‰   r‡   rƒ   rP   s   @@r5   r…   r…   |   s   ù‡ € ÷U÷ò r7   r…   c                   ó~   a a€ ] tR t^Št oR]/tRV3R lV 3R lllt]]]	RV3R lR ll4       4       4       t
RtVtV ;t# )r(   Ú
attentionsc                ó.   <€ V ^8„  d   QhRS[ R,          /# )r:   r)   N)Údict)r;   r<   s   "€r5   r=   ÚSLANetSLAHead.__annotate__�   s   ø€ ÷ ñ á�t•ñr7   c                óð   <€ \         SV `  V4       \        VP                  VP                  VP
                  4      V n        \        VP                  VP
                  4      V n        V P                  4        R # r‡   )
r   r]   r[   Úpost_conv_out_channelsr   rŒ   Ústructure_attention_cellr…   r*   Ú	post_init)r/   r)   ri   r4   s   &&,€r5   r]   ÚSLANetSLAHead.__init__�   s_   ø€ ô
 	‰Ñ˜Ô ä(>Ø×)Ñ)¨6×+=Ñ+=¸v×?RÑ?Ró)
ˆÔ%ô $-¨V×-?Ñ-?À×ATÑATÓ#UˆÔ à�‰Ör7   c                ór   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          /# )r:   r€   ÚtargetsNri   )rJ   rW   ÚTensorr   r   )r;   r<   s   "€r5   r=   r–       sC   ø€ ÷ fñ fá×(Ñ(ðfñ —‘ Õ$ðfñ Ñ+Õ,ñ	fr7   c                ón  € \         P                  ! VP                  ^ ,          V P                  P                  3\         P
                  VP                  R7      p\         P                  ! VP                  ^ ,          .\         P                  VP                  R7      p. p. p\        V P                  P                  ^,           4       EF
  p\        P                  ! WPP                  P                  4      P                  4       p	V P                  WAP                  4       V	4      w  rHV P                  V4      p
V
P!                  ^R7      pVP#                  V
4       VP#                  V4       \         P$                  ! V^R7      P'                  V P                  P                  ^,
          4      P)                  R4      P+                  4       '       g   EK   M	  \        P,                  ! \         P$                  ! V^R7      R\         P
                  R7      P/                  VP0                  4      p\3        W¶R7      # )r   )ro   Údevice)Úsizero   r    ©rn   rm   ©Úlast_hidden_stater€   éÿÿÿÿ)rJ   ÚzerosÚshaper)   r   rt   r    ÚlongÚrangeÚmax_text_lengthrr   Úone_hotrŒ   Úfloatr™   r*   ÚargmaxÚappendÚstackÚeqÚanyÚallrs   ru   ro   r
   )r/   r€   r�   ri   ÚfeaturesÚpredicted_charsÚstructure_preds_listÚstructure_ids_listÚ_Úembedding_featureÚstructure_stepÚstructure_predss   &&&,        r5   r�   ÚSLANetSLAHead.forward�   s¢  € ô —;’;Ø× Ñ  Õ# T§[¡[×%<Ñ%<Ð=ÄUÇ]Á]Ð[h×[oÑ[oô
ˆô  Ÿ+š+¨M×,?Ñ,?ÀÕ,BÐ+CÌ5Ï:É:Ð^k×^rÑ^rÔsˆà!ÐØÐÜ�t—{‘{×2Ñ2°QÕ6×7ˆAÜ !§	¢	¨/¿;¹;×;SÑ;SÓ T× ZÑ ZÓ \ÐØ×7Ñ7¸×BUÑBUÓBWÐYjÓk‰KˆHØ!×5Ñ5°hÓ?ˆNØ,×3Ñ3¸Ð3Ó:ˆOà ×'Ñ'¨Ô7Ø×%Ñ% oÔ6Ü�{Š{Ð-°1Ô5×8Ñ8¸¿¹×9QÑ9QÐTUÕ9UÓV×ZÑZÐ[]Ó^×bÑb×dÕdÙñ 8ô Ÿ)š)¤E§K¢KÐ0DÈ!Ô$LÐRTÔ\a×\iÑ\iÔj×mÑmØ×Ñó
ˆô °ÔeÐer7   )r™   r*   r‡   )rA   rB   rC   rD   r[   Ú_can_record_outputsr]   r   r   r   r�   rM   rN   rO   rP   s   @@r5   r(   r(   Š   sO   ù‡ € àÐ,ðÐ÷õ ð  ØØ ÷fñ fó !ó ó  ÷fð fr7   r(   c                   óT   a a€ ] tR t^¾t oRV3R lV 3R llltV3R lR ltRtVtV ;t# )ÚSLANetConvLayerc                óp   <€ V ^8„  d   QhRS[ RS[ RS[ RS[ RS[RS[ S[S[ S[ 3,          ,          RS[ RS[/# )	r:   Úin_channelsrŒ   Úkernel_sizeÚstrider.   ÚdilationÚgroupsr�   )ÚintÚboolÚtupleÚstr)r;   r<   s   "€r5   r=   ÚSLANetConvLayer.__annotate__¿   sr   ø€ ÷ Zñ ZáðZñ ðZñ ð	Zñ
 ðZñ ðZñ ™™c¡3˜h�Õ'ðZñ ðZñ ñZr7   c	                ó  <€ \         S	V `  4        \        P                  ! VVVVV^,          VVVR7      V n        \        P
                  ! V4      V n        Ve   \        V,          V n	        R# \        P                  ! 4       V n	        R# )r:   )rÀ   rŒ   rÁ   rÂ   Úpaddingr.   rÃ   rÄ   N)
r   r]   r   ÚConv2dÚconvolutionÚBatchNorm2dÚnormalizationr   rŠ   r�   )
r/   rÀ   rŒ   rÁ   rÂ   r.   rÃ   rÄ   r�   r4   s
   &&&&&&&&&€r5   r]   ÚSLANetConvLayer.__init__¿   sn   ø€ ô 	‰ÑÔÜŸ9š9Ø#Ø%Ø#ØØ 1Õ$ØØØô	
ˆÔô  Ÿ^š^¨LÓ9ˆÔØ0:Ò0Fœ& Õ,ˆŽÌBÏKÊKËMˆŽr7   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r:   r€   Úreturn)rJ   rž   )r;   r<   s   "€r5   r=   rÉ   Ø   s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r7   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# r‡   )rÍ   rÏ   r�   r�   s   &&r5   r�   ÚSLANetConvLayer.forwardØ   s6   € Ø×(Ñ(¨Ó7ˆØ×*Ñ*¨=Ó9ˆØŸ™¨Ó6ˆØÐr7   )r�   rÍ   rÏ   )é   rl   Frl   rl   Ú	hardswishrƒ   rP   s   @@r5   r¾   r¾   ¾   s    ù‡ € ÷Zõ Z÷2÷ ð r7   r¾   c                   ó<   a a€ ] tR t^ßt oRtV 3R ltR tRtVtV ;t	# )Ú!SLANetDepthwiseSeparableConvLayerzÖ
Depthwise Separable Convolution Layer: Depthwise Conv -> Pointwise Conv
Core component of lightweight models (e.g., MobileNet, PP-LCNet) that significantly reduces
the number of parameters and computational cost.
c           	     óÖ   <€ \         SV `  4        \        VVVVVVP                  R 7      V n        \
        P                  ! 4       V n        \        V^V^VP                  R7      V n        R# ))rÀ   rŒ   rÁ   rÂ   rÄ   r�   )rÀ   rÁ   rŒ   rÂ   r�   N)	r   r]   r¾   Ú
hidden_actÚdepthwise_convolutionr   rŠ   Úsqueeze_excitation_moduleÚpointwise_convolution)r/   rÀ   rŒ   rÂ   rÁ   r)   r4   s   &&&&&&€r5   r]   Ú*SLANetDepthwiseSeparableConvLayer.__init__æ   sg   ø€ ô 	‰ÑÔÜ%4Ø#Ø$Ø#ØØØ×(Ñ(ô&
ˆÔ"ô *,¯ª«ˆÔ&Ü%4Ø#ØØ%ØØ×(Ñ(ô&
ˆÖ"r7   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# r‡   )rÜ   rÝ   rÞ   )r/   Úhidden_states   &&r5   r�   Ú)SLANetDepthwiseSeparableConvLayer.forward   s8   € Ø×1Ñ1°,Ó?ˆØ×5Ñ5°lÓCˆØ×1Ñ1°,Ó?ˆàÐr7   )rÜ   rÞ   rÝ   ©
rA   rB   rC   rD   rY   r]   r�   rM   rN   rO   rP   s   @@r5   rÙ   rÙ   ß   s   ù‡ € ñõ
÷4ò r7   rÙ   c                   óD   a a€ ] tR tRt oV 3R ltV3R lR ltRtVtV ;t# )ÚSLANetBottlenecki  c                ót   <€ \         SV `  4        \        W^VR7      V n        \	        VVV^VR7      V n        R# )rl   ©rÀ   rŒ   rÁ   r�   )rÀ   rŒ   rÁ   rÂ   r)   N)r   r]   r¾   Úconv1rÙ   Úconv2)r/   rÀ   rŒ   rÁ   r�   r)   r4   s   &&&&&&€r5   r]   ÚSLANetBottleneck.__init__	  sA   ø€ ô 	‰ÑÔÜ$Ø#ÈAÐZdô
ˆŒ
ô 7Ø$Ø%Ø#ØØô
ˆŽ
r7   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rÒ   rV   )r;   r<   s   "€r5   r=   ÚSLANetBottleneck.__annotate__  s'   ø€ ÷ ñ ¡U×%6Ñ%6ð ¹5×;LÑ;Lñ r7   c                óJ   € V P                  V4      pV P                  V4      pV# r‡   ©rè   ré   r�   s   &&r5   r�   ÚSLANetBottleneck.forward  s$   € ØŸ
™
 =Ó1ˆØŸ
™
 =Ó1ˆàÐr7   rî   rƒ   rP   s   @@r5   rå   rå     s   ù‡ € õ
÷(÷ ð r7   rå   c                   óL   a a€ ] tR tRt oRtRV 3R lltV3R lR ltRtVtV ;t	# )ÚSLANetCSPLayeri$  z~
Cross Stage Partial (CSP) network layer. Similar in structure to DFineCSPRepLayer, but with a different forward computation.
c                óP  <€ \         S
V `  4        \        W5,          4      p\        W(^VR7      V n        \        W(^VR7      V n        \        ^V,          V^VR7      V n        \        P                  ! \        V4       U	u. uF  p	\        WˆWGV4      NK  	  up	4      V n        R# u up	i )rl   )r�   N)r   r]   rÅ   r¾   rè   ré   Úconv3r   Ú
ModuleListr©   rå   Úbottlenecks)r/   r)   rÀ   rŒ   rÁ   Ú	expansionÚ
num_blocksr�   Úhidden_channelsr·   r4   s   &&&&&&&&  €r5   r]   ÚSLANetCSPLayer.__init__)  s™   ø€ ô 	‰ÑÔÜ˜lÕ6Ó7ˆÜ$ [À1ÐQ[Ô\ˆŒ
Ü$ [À1ÐQ[Ô\ˆŒ
Ü$ Q¨Õ%8¸,ÈÐV`ÔaˆŒ
ÜŸ=š=ô ˜zÔ*óá*�Aô ! À;Ð\bÖcÙ*ñó
ˆÖùòs   Á?B#c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rÒ   rV   )r;   r<   s   "€r5   r=   ÚSLANetCSPLayer.__annotate__?  s'   ø€ ÷ 
ñ 
¡U×%6Ñ%6ð 
¹5×;LÑ;Lñ 
r7   c                óÔ   € V P                  V4      pV P                  V4      pV P                   F  pV! V4      pK  	  \        P                  ! W3^R7      pV P                  V4      pV# )rl   r¢   )rè   ré   rõ   rJ   ry   ró   )r/   r€   ÚresidualÚ
bottlenecks   &&  r5   r�   ÚSLANetCSPLayer.forward?  sa   € Ø—:‘:˜mÓ,ˆàŸ
™
 =Ó1ˆØ×*Ô*ˆJÙ& }Ó5ŠMñ +ô Ÿ	š	 =Ð";ÀÔCˆØŸ
™
 =Ó1ˆàÐr7   )rõ   rè   ré   ró   )rÖ   g      à?rl   r×   rã   rP   s   @@r5   rñ   rñ   $  s   ù‡ € ñ÷
÷,
÷ 
ð 
r7   rñ   c                   óH   a a€ ] tR tRt oRtV 3R ltV3R lR ltRtVtV ;t	# )ÚSLANetCSPPANiL  z3
CSP-PAN: Path Aggregation Network with CSP layers
c                ó–  <€ \         S	V `  4        VP                  pVP                  pVP                  pVP
                  p\        P                  ! \        \        V4      4       Uu. uF  p\        W',          V^VR7      NK  	  up4      V n        \        P                  ! ^RR7      V n        \        P                  ! \        \        V4      ^,
          ^ R4       Uu. uF  p\        VV^,          VVVVR7      NK  	  up4      V n        \        P                  ! \        \        V4      ^,
          4       Uu. uF  p\!        VVV^VR7      NK  	  up4      V n        \        P                  ! \        \        V4      ^,
          4       Uu. uF  p\        VV^,          VVVVR7      NK  	  up4      V n        R# u upi u upi u upi u upi )rl   rç   Únearest)Úscale_factorÚmode)rÁ   r÷   r�   )rÁ   rÂ   r)   Nr¥   )r   r]   r˜   rÛ   Úcsp_kernel_sizeÚcsp_num_blocksr   rô   r©   Úlenr¾   Úchannel_projectorÚUpsampleÚupsamplerñ   Útop_down_blocksrÙ   ÚdownsamplesÚbottom_up_blocks)
r/   r)   Úin_channel_listrŒ   r�   rÁ   r  Úir·   r4   s
   &&&      €r5   r]   ÚSLANetCSPPAN.__init__Q  sÍ  ø€ ô
 	‰ÑÔØ×4Ñ4ˆØ×&Ñ&ˆ
Ø×,Ñ,ˆØ×.Ñ.ˆä!#§¢ô
 œs ?Ó3Ô4ó	ñ 5�Aô  Ø /Õ 2ÀÐ[\Ðis÷ñ 5ñ	ó"
ˆÔô Ÿš°¸ÔCˆŒÜ!Ÿ}š}ô œs ?Ó3°aÕ7¸¸BÔ?ó
ñ @�Aô ØØ  1Õ$Ø Ø +Ø-Ø)÷ñ @ñ
ó 
ˆÔô Ÿ=š=ô œs ?Ó3°aÕ7Ô8ó	ñ 9�Aô 2Ø Ø Ø +ØØ!÷ñ 9ñ	ó
ˆÔô !#§¢ô œs ?Ó3°aÕ7Ô8ó
ñ 9�Aô ØØ  1Õ$Ø Ø +Ø-Ø)÷ñ 9ñ
ó!
ˆÖùòKùò
ùò	ùò
s   Á&F7Ã!F<Ä6GÆ!Gc                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rÒ   rV   )r;   r<   s   "€r5   r=   ÚSLANetCSPPAN.__annotate__�  s'   ø€ ÷ ñ ¡U×%6Ñ%6ð ¹5×;LÑ;Lñ r7   c                ó  € . p\        \        V P                  4      4       F1  pVP                  V P                  V,          ! W,          4      4       K3  	  VR,          .p\	        V P
                  \        VRR 4      4       Fd  w  rVVR,          p\        P                  ! VVP                  RR RR7      pV! \        P                  ! W†.^R7      4      p	VP                  V	4       Kf  	  \        \        V4      4      p
V
^ ,          p\	        V P                  V P                  V
R,          4       F-  w  rÍpV! V4      pV! \        P                  ! Wç.^R7      4      pK/  	  VP                  ^4      P!                  ^^4      pV# )rl   Nr  )r¡   r  r¢   :rl   NNr¥   éþÿÿÿ)r©   r  r	  r®   Úzipr  Úreversedrr   Úinterpolater§   rJ   ry   Úlistr  r  Úflattenrv   )r/   r€   Úprojected_featuresÚidxÚtop_down_featuresÚtop_down_blockÚlow_level_featureÚhigh_level_featureÚupsampled_featureÚfused_featureÚpyramid_featuresÚoutput_featureÚdownsample_layerÚbottom_up_blockÚdownsampled_features   &&             r5   r�   ÚSLANetCSPPAN.forward�  sq  € ØÐÜœ˜T×3Ñ3Ó4Ö5ˆCØ×%Ñ% d×&<Ñ&<¸SÖ&AÀ-ÕBTÓ&UÖVñ 6ð 0°Õ3Ð4ÐÜ14°T×5IÑ5IÌ8ÐTfÐgjÐhjÐTkÓKlÖ1mÑ-ˆNØ!2°2Õ!6ÐÜ !§¢Ø"Ø&×,Ñ,¨R¨SÐ1Øô!Ðñ
 +¬5¯9ª9Ð6GÐ5[ÐabÔ+cÓdˆMØ×$Ñ$ ]Ö3ñ 2nô  ¤Ð):Ó ;Ó<ÐØ)¨!Õ,ˆÜEHØ×Ñ˜d×3Ñ3Ð5EÀbÕ5IöF
ÑAÐÐ/Añ #3°>Ó"BÐÙ,¬U¯YªYÐ8KÐ7`ÐfgÔ-hÓiŠNñ	F
ð '×.Ñ.¨qÓ1×;Ñ;¸A¸qÓAˆØÐr7   )r  r	  r  r  r  rã   rP   s   @@r5   r  r  L  s   ù‡ € ñõ=
÷~÷ ð r7   r  c                   ód   a a€ ] tR tRt oV3R lV 3R llt]]V3R lR l4       4       tRtVt	V ;t
# )ÚSLANetBackbonei¬  c                ó    <€ V ^8„  d   QhRS[ /# r9   r   )r;   r<   s   "€r5   r=   ÚSLANetBackbone.__annotate__­  s   ø€ ÷ ñ ™|ñ r7   c                ó¼   <€ \         SV `  V4       \        V4      V n        \	        WP                  P
                  R ,          4      V n        V P                  4        R# ):r:   NNN)r   r]   r   Úvision_backboner  Únum_featuresÚpost_csp_panrš   ©r/   r)   r4   s   &&€r5   r]   ÚSLANetBackbone.__init__­  sF   ø€ Ü‰Ñ˜Ô Ü,¨VÓ4ˆÔÜ(¨×1EÑ1E×1RÑ1RÐSUÕ1VÓWˆÔà�‰Ör7   c                ó„   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[S[ P                  ,          S[,          /# )r:   r€   ri   rÓ   )rJ   rW   r   r   rÇ   r   )r;   r<   s   "€r5   r=   r,  ¶  sB   ø€ ÷ 
ñ 
Ù"×.Ñ.ð
Ù:@ÑASÕ:Tð
á	‰u× Ñ Õ	!Ñ$BÕ	Bñ
r7   c                óŒ   € V P                   ! V3/ VB pV P                  VP                  4      p\        VVP                  R 7      # )r£   )r.  r0  Úfeature_mapsr   r€   )r/   r€   ri   Úoutputss   &&, r5   r�   ÚSLANetBackbone.forward´  sH   € ð
 ×&Ò& }Ñ?¸Ñ?ˆØ×)Ñ)¨'×*>Ñ*>Ó?ˆÜ-Ø+Ø!×/Ñ/ô
ð 	
r7   )r0  r.  )rA   rB   rC   rD   r]   r   r   r�   rM   rN   rO   rP   s   @@r5   r*  r*  ¬  s0   ù‡ € ÷ó ð Ø÷
ó ó ÷
ð 
r7   r*  zº
    SLANet Table Recognition model for table recognition tasks. Wraps the core SLANetPreTrainedModel
    and returns outputs compatible with the Transformers table recognition API.
    )Úcustom_introc                   ój   a a€ ] tR tRt oR.tV3R lV 3R llt]]V3R lR l4       4       tRt	Vt
V ;t# )ÚSLANetForTableRecognitioniÁ  Únum_batches_trackedc                ó    <€ V ^8„  d   QhRS[ /# r9   r   )r;   r<   s   "€r5   r=   Ú&SLANetForTableRecognition.__annotate__Ê  s   ø€ ÷ ñ ™|ñ r7   c                óŠ   <€ \         SV `  V4       \        VR 7      V n        \	        VR 7      V n        V P                  4        R# ))r)   N)r   r]   r*  r   r(   Úheadrš   r1  s   &&€r5   r]   Ú"SLANetForTableRecognition.__init__Ê  s2   ø€ Ü‰Ñ˜Ô Ü&¨fÔ5ˆŒÜ!¨Ô0ˆŒ	Ø�‰Ör7   c                ó„   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[S[ P                  ,          S[,          /# )r:   r   ri   rÓ   )rJ   rW   r   r   rÇ   rR   )r;   r<   s   "€r5   r=   r=  Ò  sB   ø€ ÷ 
ñ 
Ù!×-Ñ-ð
Ù9?Ñ@RÕ9Sð
á	‰u× Ñ Õ	!Ñ$CÕ	Cñ
r7   c                óÐ   € V P                   ! V3/ VB pV P                  ! VP                  3/ VB p\        VP                  VP                  VP                  VP
                  R 7      # ))r¤   r€   rT   rU   )r   r?  r¤   rR   r€   r“   )r/   r   ri   r6  Úhead_outputss   &&,  r5   r�   Ú!SLANetForTableRecognition.forwardÐ  sa   € ð
 —-’- Ñ7°Ñ7ˆØ—y’y ×!:Ñ!:ÑE¸fÑEˆä.Ø*×<Ñ<Ø!×/Ñ/Ø+×9Ñ9Ø(×3Ñ3ô	
ð 	
r7   )r   r?  )rA   rB   rC   rD   Ú_keys_to_ignore_on_load_missingr]   r   r   r�   rM   rN   rO   rP   s   @@r5   r:  r:  Á  s;   ù‡ € ð (=Ð&=Ð#÷ó ð Ø÷
ó ó ÷
ð 
r7   r:  )r:  r   r(   r*  )3r    Údataclassesr   rJ   Útorch.nnr   Útorch.nn.functionalÚ
functionalrr   Ú r   r"   Úactivationsr   r   Úbackbone_utilsr   r   Úmodeling_layersr	   Úmodeling_outputsr
   r   Úmodeling_utilsr   Úprocessing_utilsr   Úutilsr   r   r   Úutils.genericr   Úutils.output_capturingr   Úconfiguration_slanetr   r   rR   ÚModuler[   r…   r(   r¾   rÙ   rå   rñ   r  r*  r:  Ú__all__r?   r7   r5   Ú<module>rW     s/  ðó, Ý !ã Ý ß Ð å &ß *ß HÝ 9ß OÝ -Ý &ß IÑ IÝ 7Ý 5Ý .ô A˜Oô  AðF Ø
ô	5Ð&Dó 	5ó ó ð	5ô+˜RŸY™Yô +ôB�—	‘	ô ô1fÐ)ô 1fôh�b—i‘iô ôB&Ð(Bô &ôR�r—y‘yô ô8%�R—Y‘Yô %ôP]�2—9‘9ô ]ô@
Ð*ô 
ñ* ðôô
Ð 5ó 
óð
ò2 d‚r7   