ó
    qyüifS  ã                   ó2  • % S r SSKrSSKrSSKJr  SSKJr  SSKJr  SSK	r	SSK
Jr  SSKJr  SS	KJrJr  SS
KJrJr  SSKJrJrJrJrJrJr  SSKJrJr  SSKJ r J!r!  \r"\r#/ SQr$/ SQr%Sr&\'\(S'    " S S\SS9r) " S S5      r*\! " S S\5      5       r+S/r,g)z Image processor class for Flava.é    N)ÚIterable)Ú	lru_cache)ÚAny)Ú
functionalé   )ÚTorchvisionBackend)ÚBatchFeatureÚget_size_dict)Úgroup_images_by_shapeÚreorder_images)ÚOPENAI_CLIP_MEANÚOPENAI_CLIP_STDÚChannelDimensionÚ
ImageInputÚPILImageResamplingÚSizeDict)ÚImagesKwargsÚUnpack)Ú
TensorTypeÚauto_docstring)ç        r   r   )ç      ð?r   r   gš™™™™™¹?ÚLOGIT_LAPLACE_EPSc                   ó
  • \ rS rSr% Sr\\S'   \\S'   \\S'   \\S'   \\S'   \\S'   \\S	'   \\S
'   \\S'   \	\
\4   \S'   \\S'   \\S'   \	\
\4   \S'   \\S'   \\-  \S'   \\S'   \\S'   \\\   -  \S'   \\\   -  \S'   Srg)ÚFlavaImageProcessorKwargsé3   a/  
return_image_mask (`bool`, *optional*, defaults to `False`):
    Whether to return the image mask. Can be overridden by the `return_image_mask` parameter in `preprocess`.
input_size_patches (`int`, *optional*, defaults to `14`):
    Number of patches in the image in height and width direction. 14x14 = 196 total patches. Can be overridden
    by the `input_size_patches` parameter in `preprocess`.
total_mask_patches (`int`, *optional*, defaults to `75`):
    Total number of patches that should be masked. Can be overridden by the `total_mask_patches` parameter in
    `preprocess`.
mask_group_min_patches (`int`, *optional*, defaults to `16`):
    Minimum number of patches that should be masked. Can be overridden by the `mask_group_min_patches`
    parameter in `preprocess`.
mask_group_max_patches (`int`, *optional*):
    Maximum number of patches that should be masked. Can be overridden by the `mask_group_max_patches`
    parameter in `preprocess`.
mask_group_min_aspect_ratio (`float`, *optional*, defaults to `0.3`):
    Minimum aspect ratio of the mask window. Can be overridden by the `mask_group_min_aspect_ratio` parameter
    in `preprocess`.
mask_group_max_aspect_ratio (`float`, *optional*):
    Maximum aspect ratio of the mask window. Can be overridden by the `mask_group_max_aspect_ratio` parameter
    in `preprocess`.
return_codebook_pixels (`bool`, *optional*, defaults to `False`):
    Whether to return the codebook pixel values.
codebook_do_resize (`bool`, *optional*, defaults to `True`):
    Whether to resize the input for codebook to a certain. Can be overridden by the `codebook_do_resize`
    parameter in `preprocess`. `codebook_size`.
codebook_size (`dict[str, int]`, *optional*, defaults to `{"height": 224, "width": 224}`):
    Resize the input for codebook to the given size. Can be overridden by the `codebook_size` parameter in
    `preprocess`.
codebook_resample (`PILImageResampling`, *optional*, defaults to `PILImageResampling.LANCZOS` for PIL backend,
    `PILImageResampling.BICUBIC` for torchvision backend):
    Resampling filter to use if resizing the codebook image. LANCZOS is not supported for torch Tensors;
    BICUBIC is used as the closest alternative for the torchvision backend. Can be overridden by the
    `codebook_resample` parameter in `preprocess`.
codebook_do_center_crop (`bool`, *optional*, defaults to `True`):
    Whether to crop the input for codebook at the center. If the input size is smaller than
    `codebook_crop_size` along any edge, the image is padded with 0's and then center cropped. Can be
    overridden by the `codebook_do_center_crop` parameter in `preprocess`.
codebook_crop_size (`dict[str, int]`, *optional*, defaults to `{"height": 224, "width": 224}`):
    Desired output size for codebook input when applying center-cropping. Can be overridden by the
    `codebook_crop_size` parameter in `preprocess`.
codebook_do_rescale (`bool`, *optional*, defaults to `True`):
    Whether to rescale the input for codebook by the specified scale `codebook_rescale_factor`. Can be
    overridden by the `codebook_do_rescale` parameter in `preprocess`.
codebook_rescale_factor (`int` or `float`, *optional*, defaults to `1/255`):
    Defines the scale factor to use if rescaling the codebook image. Can be overridden by the
    `codebook_rescale_factor` parameter in `preprocess`.
codebook_do_map_pixels (`bool`, *optional*, defaults to `True`):
    Whether to map the pixel values of the codebook input to (1 - 2e)x + e. Can be overridden by the
    `codebook_do_map_pixels` parameter in `preprocess`.
codebook_do_normalize (`bool`, *optional*, defaults to `True`):
    Whether or not to normalize the input for codebook with `codebook_image_mean` and `codebook_image_std`. Can
    be overridden by the `codebook_do_normalize` parameter in `preprocess`.
codebook_image_mean (`Optional[Union[float, Iterable[float]]]`, *optional*, defaults to `[0, 0, 0]`):
    The sequence of means for each channel, to be used when normalizing images for codebook. Can be overridden
    by the `codebook_image_mean` parameter in `preprocess`.
codebook_image_std (`Optional[Union[float, Iterable[float]]]`, *optional*, defaults to `[0.5, 0.5, 0.5]`):
    The sequence of standard deviations for each channel, to be used when normalizing images for codebook. Can
    be overridden by the `codebook_image_std` parameter in `preprocess`.
Úreturn_image_maskÚinput_size_patchesÚtotal_mask_patchesÚmask_group_min_patchesÚmask_group_max_patchesÚmask_group_min_aspect_ratioÚmask_group_max_aspect_ratioÚreturn_codebook_pixelsÚcodebook_do_resizeÚcodebook_sizeÚcodebook_resampleÚcodebook_do_center_cropÚcodebook_crop_sizeÚcodebook_do_rescaleÚcodebook_rescale_factorÚcodebook_do_map_pixelsÚcodebook_do_normalizeÚcodebook_image_meanÚcodebook_image_std© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚboolÚ__annotations__ÚintÚfloatÚdictÚstrr   Ú__static_attributes__r0   ó    Úm/home/mande/repo/quber/.venv/lib/python3.13/site-packages/transformers/models/flava/image_processing_flava.pyr   r   3   s¢   ‡ ñ;ð| ÓØÓØÓØÓØÓØ!&Ó&Ø!&Ó&à Ó ØÓØ˜˜S˜‘>Ó!ØÓØ!Ó!Ø˜S #˜X™Ó&ØÓØ  5™[Ó(Ø Ó ØÓØ ¨%¡Ñ0Ó0Ø ¨¡Ñ/Ö/r=   r   F)Útotalc                   ó€   • \ rS rSr      SS\\\\4   -  S\S\S-  S\S\S-  S\S-  4S	 jjrS
 rS r	S r
S rSrg)ÚFlavaMaskingGeneratoré‰   NÚ
input_sizer   r!   r    r"   r#   c                 óB  • [        U[        5      (       d  U4S-  nUu  U l        U l        U R                  U R                  -  U l        X l        X@l        Uc  UOUU l        U=(       d    SU-  n[        R                  " U5      [        R                  " U5      4U l
        g )Né   é   )Ú
isinstanceÚtupleÚheightÚwidthÚnum_patchesr   r    r!   ÚmathÚlogÚlog_aspect_ratio)ÚselfrC   r   r!   r    r"   r#   s          r>   Ú__init__ÚFlavaMaskingGenerator.__init__Š   s�   € ô ˜*¤e×,Ñ,Ø$˜¨Ñ*ˆJØ",ÑˆŒ�T”ZàŸ;™;¨¯©Ñ3ˆÔØ"4Ôà&<Ô#Ø<RÑ<ZÑ&8Ð`vˆÔ#à&A×&dÀQÐIdÑEdÐ#Ü!%§¢Ð*EÓ!FÌÏÊÐQlÓHmÐ nˆÕr=   c           	      ó¶   • SU R                   U R                  U R                  U R                  U R                  U R
                  S   U R
                  S   4-  nU$ )Nz<MaskingGenerator(%d, %d -> [%d ~ %d], max = %d, %.3f ~ %.3f)r   rF   )rI   rJ   r    r!   r   rN   )rO   Úrepr_strs     r>   Ú__repr__ÚFlavaMaskingGenerator.__repr__    s^   € ØQØ�K‰KØ�J‰JØ×'Ñ'Ø×'Ñ'Ø×#Ñ#Ø×!Ñ! !Ñ$Ø×!Ñ! !Ñ$ðU
ñ 
ˆð ˆr=   c                 ó2   • U R                   U R                  4$ ©N©rI   rJ   )rO   s    r>   Ú	get_shapeÚFlavaMaskingGenerator.get_shape¬   s   € Ø�{‰{˜DŸJ™JÐ&Ð&r=   c           	      ó.  • Sn[        S5       GH‚  n[        R                  " U R                  U5      n[        R
                  " [        R                  " U R                  6 5      n[        [        [        R                  " XV-  5      5      5      n[        [        [        R                  " XV-  5      5      5      nX€R                  :  d  M»  XpR                  :  d  MÌ  [        R                  " SU R                  U-
  5      n	[        R                  " SU R                  U-
  5      n
XX—-   2XªU-   24   R                  5       nSXx-  U-
  s=:  a  U::  a7  O  O4XX—-   2XªU-   24   S:H  nSXX—-   2XªU-   24   U'   X<R                  5       -  nUS:”  d  GM‚    U$    U$ )Nr   é
   rF   )ÚrangeÚrandomÚuniformr    rL   ÚexprN   r8   ÚroundÚsqrtrJ   rI   ÚrandintÚsum)rO   ÚmaskÚmax_mask_patchesÚdeltaÚ_attemptÚtarget_areaÚaspect_ratiorI   rJ   ÚtopÚleftÚ
num_maskedÚ	zeros_poss                r>   Ú_maskÚFlavaMaskingGenerator._mask¯   sb  € ØˆÜ˜bŸ	ˆHÜ Ÿ.š.¨×)DÑ)DÐFVÓWˆKÜŸ8š8¤F§N¢N°D×4IÑ4IÐ$JÓKˆLÜœœtŸyšy¨Ñ)CÓDÓEÓFˆFÜœœdŸiši¨Ñ(BÓCÓDÓEˆEØ—z‘zÕ! f¯{©{Õ&:Ü—n’n Q¨¯©°fÑ(<Ó=�Ü—~’~ a¨¯©°eÑ);Ó<�à!¨©Ð"4°dÀE¹\Ð6IÐ"IÑJ×NÑNÓP�
à�v‘~¨
Ñ2ÕFÐ6FÖFØ $¨3©<Ð%7¸ÀuÁÐ9LÐ%LÑ MÐQRÑ R�IØOP�D˜s™|Ð+¨T¸5±LÐ-@Ð@ÑAÀ)ÑLØŸ]™]›_Ñ,�Eà˜1–9ØØˆñ% "ð$ ˆr=   c                 ó0  • [         R                  " U R                  5       [         R                  S9nSnX R                  :  aS  U R                  U-
  n[        X0R                  5      nU R                  X5      nUS:X  a   U$ X$-  nX R                  :  a  MS  U$ )N)Údtyper   )ÚtorchÚzerosrY   r8   r   Úminr!   ro   )rO   re   Ú
mask_countrf   rg   s        r>   Ú__call__ÚFlavaMaskingGenerator.__call__Å   s�   € Ü�{Š{˜4Ÿ>™>Ó+´5·9±9Ñ=ˆØˆ
Ø×2Ñ2Ó2Ø#×6Ñ6¸ÑCÐÜ"Ð#3×5PÑ5PÓQÐà—J‘J˜tÓ6ˆEØ˜‹zØð ˆð Ñ#�
ð ×2Ñ2Õ2ð ˆr=   )rI   rN   r!   r    rK   r   rJ   )é   éK   Né   ç333333Ó?N)r1   r2   r3   r4   r8   rH   r9   rP   rT   rY   ro   rw   r<   r0   r=   r>   rA   rA   ‰   s‰   † ð -/Ø"$Ø-1Ø&(Ø47Ø48ñoà˜%  S ™/Ñ)ðoð  ðoð !$ d¡
ð	oð
 !$ðoð &+¨T¡\ðoð &+¨T¡\õoò,
ò'òõ,r=   rA   c            B       ó~  ^ • \ rS rSr\r\R                  r\	r
\rSSS.rSSS.rSrSrSrSrSrSrSrSrS	rS
rS	rSrSrSSS.r\R                  rSrSSS.rSr Sr!Sr"Sr#\$r%\&r'S\(\   4U 4S jjr)\*S\+S\(\   S\,4U 4S jj5       r-\.S\/\0\14   4U 4S jj5       r2\3S\44S j5       r5S>S jr6           S?S\7\8\7   -  \/\0\74   -  \9-  S	-  S\7\8\7   -  \/\0\74   -  \9-  S	-  S\:S	-  S\;\<\;   -  S	-  S\;\<\;   -  S	-  S\7\8\7   -  \/\0\74   -  \9-  S	-  S\7\8\7   -  \/\0\74   -  \9-  S	-  S\;\<\;   -  S	-  S\;\<\;   -  S	-  S S!S"\=S	-  S\/4U 4S# jjjr>S\<S   S$\:S\9S%S!S&\:S\9S'\:S(\;S)\:S*\:S\;\<\;   -  S	-  S\;\<\;   -  S	-  S+\:S	-  S,\0\?-  S	-  SS4S- jr@S\<S   S$\:S\9S%S!S&\:S\9S'\:S(\;S)\:S\;\<\;   -  S	-  S\;\<\;   -  S	-  S.\:S	-  S/\7S	-  S0\7S	-  S1\7S	-  S2\7S	-  S3\;S	-  S4\;S	-  S5\:S	-  S6\:S	-  S\9S	-  S S!S7\:S	-  S\9S	-  S8\:S	-  S9\;S	-  S:\:S	-  S;\:S	-  S\;\<\;   -  S	-  S\;\<\;   -  S	-  S+\:S	-  S,\0\?-  S	-  S\,4BS< jrAS=rBU =rC$ )@ÚFlavaImageProcessoréÕ   éà   rX   TFry   rz   r{   Nr|   ép   gp?Úkwargsc                 ó&   >• [         TU ]  " S0 UD6  g )Nr0   )ÚsuperrP   )rO   r‚   Ú	__class__s     €r>   rP   ÚFlavaImageProcessor.__init__ú   s   ø€ Ü‰ÒÑ"˜6Ó"r=   ÚimagesÚreturnc                 ó&   >• [         TU ]  " U40 UD6$ rW   )r„   Ú
preprocess)rO   r‡   r‚   r…   s      €r>   rŠ   ÚFlavaImageProcessor.preprocessý   s   ø€ ä‰wÒ! &Ñ3¨FÑ3Ð3r=   Úimage_processor_dictc                 ó®   >• UR                  5       nSU;   a  UR                  S5      US'   SU;   a  UR                  S5      US'   [        TU ]  " U40 UD6$ )zÝ
Overrides the `from_dict` method from the base class to make sure parameters are updated if image processor is
created using from_dict and kwargs e.g. `FlavaImageProcessor.from_pretrained(checkpoint, codebook_size=600)`
r&   r)   )ÚcopyÚpopr„   Ú	from_dict)ÚclsrŒ   r‚   r…   s      €r>   r�   ÚFlavaImageProcessor.from_dict  sd   ø€ ð  4×8Ñ8Ó:ÐØ˜fÓ$Ø4:·J±J¸Ó4OÐ  Ñ1Ø 6Ó)Ø9?¿¹ÐDXÓ9YÐ Ð!5Ñ6Ü‰wÒ Ð!5Ñ@¸Ñ@Ð@r=   c           	      ó   • [        UUUUUUS9$ )N)rC   r   r    r!   r"   r#   )rA   )rO   r   r   r    r!   r"   r#   s          r>   Úmasking_generatorÚ%FlavaImageProcessor.masking_generator  s#   € ô %Ø)Ø1Ø#9Ø#9Ø(CØ(Cñ
ð 	
r=   útorch.Tensorc                 ó.   • SS[         -  -
  U-  [         -   $ )NrF   rE   )r   )rO   Úimages     r>   Ú
map_pixelsÚFlavaImageProcessor.map_pixels!  s   € Ø�AÔ)Ñ)Ñ)¨UÑ2Ô5FÑFÐFr=   ÚsizeÚ	crop_sizeÚdefault_to_squareÚ
image_meanÚ	image_stdr&   r)   r.   r/   r'   z7PILImageResampling | tvF.InterpolationMode | int | NoneÚdata_formatc           
      óˆ  >• [         TU ]  " S	UUUUUUS.UD6nUb'  [        U[        5      (       d  [        S	0 [	        XcS9D6nUb(  [        U[        5      (       d  [        S	0 [	        USS9D6n[        U[
        5      (       a  [        U5      n[        U	[
        5      (       a  [        U	5      n	XlS'   X|S'   XŒS'   XœS'   X¬S'   U$ )
zŠ
Update kwargs that need further processing before being validated
Can be overridden by subclasses to customize the processing of kwargs.
)r›   rœ   r�   rž   rŸ   r    )r›   r�   r)   )Ú
param_namer&   r.   r/   r'   r0   )r„   Ú_standardize_kwargsrG   r   r
   ÚlistrH   )rO   r›   rœ   r�   rž   rŸ   r&   r)   r.   r/   r'   r    r‚   r…   s                €r>   r£   Ú'FlavaImageProcessor._standardize_kwargs$  së   ø€ ô& ‘Ò,ð 
ØØØ/Ø!ØØ#ñ
ð ñ
ˆð Ñ$¬Z¸Äx×-PÑ-PÜ$Ñn¤}¸-Ñ'mÑnˆMØÑ)´*Ð=OÔQY×2ZÑ2ZÜ!)Ñ!o¬MÐ:LÐYmÑ,nÑ!oÐÜÐ)¬4×0Ñ0Ü"'Ð(;Ó"<ÐÜÐ(¬$×/Ñ/Ü!&Ð'9Ó!:Ðà"/ˆÑØ'9Ð#Ñ$Ø(;Ð$Ñ%Ø'9Ð#Ñ$à&7Ð"Ñ#àˆr=   Ú	do_resizeÚresampleÚdo_center_cropÚ
do_rescaleÚrescale_factorÚdo_normalizeÚdo_map_pixelsÚdisable_groupingÚreturn_tensorsc           	      ó   • [        XS9u  nn0 nUR                  5        H"  u  nnU(       a  U R                  UX4S9nUUU'   M$     [        UU5      n[        UUS9u  nn0 nUR                  5        HN  u  nnU(       a  U R	                  UU5      nU R                  UXxX›U5      nU
(       a  U R                  US9nUUU'   MP     [        UU5      nU$ )N)r­   )r˜   r›   r§   )r˜   )r   ÚitemsÚresizer   Úcenter_cropÚrescale_and_normalizer™   )rO   r‡   r¦   r›   r§   r¨   rœ   r©   rª   r«   r¬   rž   rŸ   r­   r®   Úgrouped_imagesÚgrouped_images_indexÚresized_images_groupedÚshapeÚstacked_imagesÚresized_imagesÚprocessed_images_groupedÚprocessed_imagess                          r>   Ú_preprocess_imageÚ%FlavaImageProcessor._preprocess_imageR  sý   € ô$ 0EÀVÑ/oÑ,ˆÐ,Ø!#ÐØ%3×%9Ñ%9Ö%;Ñ!ˆE�>ÞØ!%§¡°>È Ð!`�Ø,:Ð" 5Ó)ñ &<ô (Ð(>Ð@TÓUˆô 0EÀ^ÐfvÑ/wÑ,ˆÐ,Ø#%Ð Ø%3×%9Ñ%9Ö%;Ñ!ˆE�>ÞØ!%×!1Ñ!1°.À)Ó!L�à!×7Ñ7Ø 
¸LÐV_óˆNö Ø!%§¡°~ Ð!F�Ø.<Ð$ UÓ+ñ &<ô *Ð*BÐDXÓYÐàÐr=   r   r   r   r    r!   r"   r#   r$   r%   r(   r*   r+   r,   r-   c!                 óB  • U R                  UUUUUUUUU	SU
UUU S9n"SU"0n#U(       a!  U R                  UUUUUUUUUUUUUU S9n$U$U#S'   U(       aB  U R                  UUUUUUS9n%[        [        U5      5       V&s/ s H
  n&U%" 5       PM     n'n&U'U#S'   [	        U#U S9$ s  sn&f )NF)r‡   r¦   r›   r§   r¨   rœ   r©   rª   r«   r¬   rž   rŸ   r­   r®   Úpixel_valuesÚcodebook_pixel_values)r   r   r    r!   r"   r#   Úbool_masked_pos)ÚdataÚtensor_type)r¼   r”   r]   Úlenr	   )(rO   r‡   r¦   r›   r§   r¨   rœ   r©   rª   r«   rž   rŸ   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r­   r®   r‚   r»   rÂ   Úcodebook_processed_imagesÚmask_generatorÚ_Úmaskss(                                           r>   Ú_preprocessÚFlavaImageProcessor._preprocess  s  € ðL  ×1Ñ1ØØØØØ)ØØ!Ø)Ø%ØØ!ØØ-Ø)ð 2ð 
Ðð" Ð,ð
ˆö "Ø(,×(>Ñ(>ØØ,Ø"Ø*Ø6Ø,Ø.Ø6Ø2Ø4Ø.Ø,Ø!1Ø-ð )?ð )Ð%ð  -FˆDÐ(Ñ)æØ!×3Ñ3Ø#5Ø#5Ø'=Ø'=Ø,GØ,Gð 4ð ˆNô 05´S¸³[Ô/AÓBÒ/A¨!‘^Ö%Ñ/AˆEÐBØ&+ˆDÐ"Ñ#ä °>ÑBÐBùò Cs   Á:Br0   )r˜   r–   rˆ   r–   )NNNNNNNNNNN)Dr1   r2   r3   r4   r   Úvalid_kwargsr   ÚBICUBICr§   ÚFLAVA_IMAGE_MEANrž   ÚFLAVA_IMAGE_STDrŸ   r›   rœ   r¦   r¨   r©   r«   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   ÚFLAVA_CODEBOOK_MEANr.   ÚFLAVA_CODEBOOK_STDr/   r   rP   r   r   r	   rŠ   Úclassmethodr:   r;   r   r�   r   rA   r”   r™   r8   r   r   r6   r9   r¤   r   r£   r   r¼   rÉ   r<   Ú__classcell__)r…   s   @r>   r~   r~   Õ   s·  ø† à,€LØ!×)Ñ)€HØ!€JØ€IØ CÑ(€DØ¨Ñ-€IØ€IØ€NØ€JØ€Lð ÐØÐØÐØÐØ!ÐØ"%ÐØ"&Ðà"ÐØÐØ"¨SÑ1€Mð +×2Ñ2ÐØ"ÐØ$'°#Ñ6ÐØÐØ%ÐØ!ÐØ ÐØ-ÐØ+Ðð# Ð(AÑ!B÷ #ð ð4 ð 4°vÐ>WÑ7Xð 4Ð]iö 4ó ð4ð ð
A¨T°#°s°(©^ö 
Aó ð
Að ð
ð 
ó
ó ð
ô$Gð
 HLØLPØ)-Ø15Ø04ØPTØUYØ:>Ø9=ØW[Ø/3ñ,à�H˜S‘MÑ! D¨¨c¨¡NÑ2°XÑ=ÀÑDð,ð ˜ #™Ñ&¨¨c°3¨h©Ñ7¸(ÑBÀTÑIð,ð   $™;ð	,ð
 ˜D ™KÑ'¨$Ñ.ð,ð ˜4 ™;Ñ&¨Ñ-ð,ð ˜X c™]Ñ*¨T°#°s°(©^Ñ;¸hÑFÈÑMð,ð   (¨3¡-Ñ/°$°s¸C°x±.Ñ@À8ÑKÈdÑRð,ð # T¨%¡[Ñ0°4Ñ7ð,ð " D¨¡KÑ/°$Ñ6ð,ð Uð,ð &¨Ñ,ð,ð 
÷,ð ,ð\+ à�^Ñ$ð+ ð ð+ ð ð	+ ð
 Lð+ ð ð+ ð ð+ ð ð+ ð ð+ ð ð+ ð ð+ ð ˜D ™KÑ'¨$Ñ.ð+ ð ˜4 ™;Ñ&¨Ñ-ð+ ð  ™+ð+ ð ˜jÑ(¨4Ñ/ð+ ð  
ô!+ ðZYCà�^Ñ$ðYCð ðYCð ð	YCð
 LðYCð ðYCð ðYCð ðYCð ðYCð ðYCð ˜D ™KÑ'¨$Ñ.ðYCð ˜4 ™;Ñ&¨Ñ-ðYCð   $™;ðYCð   $™JðYCð    $™Jð!YCð" !$ d¡
ð#YCð$ !$ d¡
ð%YCð& &+¨T¡\ð'YCð( &+¨T¡\ð)YCð, !% t¡ð-YCð. ! 4™Kð/YCð0   $‘ð1YCð2 Uð3YCð4 "&¨¡ð5YCð6 % t™Oð7YCð8 " D™[ð9YCð: "'¨¡ð;YCð< !% t¡ð=YCð>  $ d™{ð?YCð@ # T¨%¡[Ñ0°4Ñ7ðAYCðB " D¨¡KÑ/°$Ñ6ðCYCðD  ™+ðEYCðF ˜jÑ(¨4Ñ/ðGYCðJ 
÷KYCò YCr=   r~   )-r5   rL   r^   Úcollections.abcr   Ú	functoolsr   Útypingr   rs   Útorchvision.transforms.v2r   ÚtvFÚimage_processing_backendsr   Úimage_processing_utilsr	   r
   Úimage_transformsr   r   Úimage_utilsr   r   r   r   r   r   Úprocessing_utilsr   r   Úutilsr   r   rÍ   rÎ   rÏ   rÐ   r   r9   r7   r   rA   r~   Ú__all__r0   r=   r>   Ú<module>rß      s«   ðò 'ã Û Ý $Ý Ý ã Ý 7å ;ß Aß E÷÷ ÷ 5÷ð $Ð Ø!€Ú%Ð Ú$Ð ØÐ �5Ó ôR0 °Eò R0÷lIñ IðX ôBCÐ,ó BCó ðBCðJ !Ð
!�r=   