ó
    pyüiTZ  ã                   ó¼  • S SK r S SKrS SKrS SKJrJr  S SKrS SKJ	r	J
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JrJrJrJr  SS	KJr  \" S
SS9r\R:                  " \5      r " S S\5      r " S S\5      r \" \ RB                  5      \ l!        \ RB                  RD                  b5  \ RB                  RD                  RG                  SSSS9\ RB                  l"        gg)é    N)ÚAnyÚTypeVar)Úcreate_repoÚis_offline_modeé   )Úcustom_object_save)ÚBatchFeature)Úis_valid_imageÚ
load_image)ÚIMAGE_PROCESSOR_NAMEÚPROCESSOR_NAMEÚPushToHubMixinÚ	copy_funcÚloggingÚsafe_load_json_file)Úcached_fileÚImageProcessorTypeÚImageProcessingMixin)Úboundc                   ó   • \ rS rSrSrSrg)r	   é-   aÏ  
Holds the output of the image processor specific `__call__` methods.

This class is derived from a python dictionary and can be used as a dictionary.

Args:
    data (`dict`):
        Dictionary of lists/arrays/tensors returned by the __call__ method ('pixel_values', etc.).
    tensor_type (`Union[None, str, TensorType]`, *optional*):
        You can give a tensor_type here to convert the lists of integers in PyTorch/Numpy Tensors at
        initialization.
© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    Ú_/home/mande/repo/quber/.venv/lib/python3.13/site-packages/transformers/image_processing_base.pyr	   r	   -   s   † ôr   r	   c                   ó  • \ rS rSrSrSrS r\     SS\\	   S\
\R                  -  S\
\R                  -  S-  S\S	\S
\
\-  S-  S\
S\	4S jj5       rS S\
\R                  -  S\4S jjr\S\
\R                  -  S\\\
\4   \\
\4   4   4S j5       r\S\\
\4   4S j5       rS\\
\4   4S jr\S\
\R                  -  4S j5       rS\
4S jrS\
\R                  -  4S jrS r\S!S j5       rS\
\\
   -  \\\
      -  4S jrSrg)"r   é=   z|
This is an image processor mixin used to provide saving/loading functionality for sequential and image feature
extractors.
Nc           
      óü   • UR                  SS5        UR                  SS5        UR                  5        H  u  p# [        XU5        M     g! [         a%  n[        R                  SU SU SU  35        UeSnAff = f)z'Set elements of `kwargs` as attributes.Úfeature_extractor_typeNÚprocessor_classz
Can't set z with value z for )ÚpopÚitemsÚsetattrÚAttributeErrorÚloggerÚerror)ÚselfÚkwargsÚkeyÚvalueÚerrs        r    Ú__init__ÚImageProcessingMixin.__init__E   sy   € ð 	�
‰
Ð+¨TÔ2à�
‰
Ð$ dÔ+à Ÿ,™,ž.‰JˆCðÜ˜ 5Ö)ò )øô "ó Ü—‘˜z¨#¨¨l¸5¸'ÀÀtÀfÐMÔNØ�	ûðús   »AÁ
A;Á A6Á6A;ÚclsÚpretrained_model_name_or_pathÚ	cache_dirÚforce_downloadÚlocal_files_onlyÚtokenÚrevisionÚreturnc                 ó€   • X'S'   X7S'   XGS'   XgS'   Ub  XWS'   U R                   " U40 UD6u  p‡U R                  " U40 UD6$ )aâ  
Instantiate a type of [`~image_processing_utils.ImageProcessingMixin`] from an image processor.

Args:
    pretrained_model_name_or_path (`str` or `os.PathLike`):
        This can be either:

        - a string, the *model id* of a pretrained image_processor hosted inside a model repo on
          huggingface.co.
        - a path to a *directory* containing a image processor file saved using the
          [`~image_processing_utils.ImageProcessingMixin.save_pretrained`] method, e.g.,
          `./my_model_directory/`.
        - a path to a saved image processor JSON *file*, e.g.,
          `./my_model_directory/preprocessor_config.json`.
    cache_dir (`str` or `os.PathLike`, *optional*):
        Path to a directory in which a downloaded pretrained model image processor should be cached if the
        standard cache should not be used.
    force_download (`bool`, *optional*, defaults to `False`):
        Whether or not to force to (re-)download the image processor files and override the cached versions if
        they exist.
    proxies (`dict[str, str]`, *optional*):
        A dictionary of proxy servers to use by protocol or endpoint, e.g., `{'http': 'foo.bar:3128',
        'http://hostname': 'foo.bar:4012'}.` The proxies are used on each request.
    token (`str` or `bool`, *optional*):
        The token to use as HTTP bearer authorization for remote files. If `True`, or not specified, will use
        the token generated when running `hf auth login` (stored in `~/.huggingface`).
    revision (`str`, *optional*, defaults to `"main"`):
        The specific model version to use. It can be a branch name, a tag name, or a commit id, since we use a
        git-based system for storing models and other artifacts on huggingface.co, so `revision` can be any
        identifier allowed by git.


        <Tip>

        To test a pull request you made on the Hub, you can pass `revision="refs/pr/<pr_number>"`.

        </Tip>

    return_unused_kwargs (`bool`, *optional*, defaults to `False`):
        If `False`, then this function returns just the final image processor object. If `True`, then this
        functions returns a `Tuple(image_processor, unused_kwargs)` where *unused_kwargs* is a dictionary
        consisting of the key/value pairs whose keys are not image processor attributes: i.e., the part of
        `kwargs` which has not been used to update `image_processor` and is otherwise ignored.
    subfolder (`str`, *optional*, defaults to `""`):
        In case the relevant files are located inside a subfolder of the model repo on huggingface.co, you can
        specify the folder name here.
    kwargs (`dict[str, Any]`, *optional*):
        The values in kwargs of any keys which are image processor attributes will be used to override the
        loaded values. Behavior concerning key/value pairs whose keys are *not* image processor attributes is
        controlled by the `return_unused_kwargs` keyword parameter.

Returns:
    A image processor of type [`~image_processing_utils.ImageProcessingMixin`].

Examples:

```python
# We can't instantiate directly the base class *ImageProcessingMixin* so let's show the examples on a
# derived class: *CLIPImageProcessor*
image_processor = CLIPImageProcessor.from_pretrained(
    "openai/clip-vit-base-patch32"
)  # Download image_processing_config from huggingface.co and cache.
image_processor = CLIPImageProcessor.from_pretrained(
    "./test/saved_model/"
)  # E.g. image processor (or model) was saved using *save_pretrained('./test/saved_model/')*
image_processor = CLIPImageProcessor.from_pretrained("./test/saved_model/preprocessor_config.json")
image_processor = CLIPImageProcessor.from_pretrained(
    "openai/clip-vit-base-patch32", do_normalize=False, foo=False
)
assert image_processor.do_normalize is False
image_processor, unused_kwargs = CLIPImageProcessor.from_pretrained(
    "openai/clip-vit-base-patch32", do_normalize=False, foo=False, return_unused_kwargs=True
)
assert image_processor.do_normalize is False
assert unused_kwargs == {"foo": False}
```r5   r6   r7   r9   r8   )Úget_image_processor_dictÚ	from_dict)	r3   r4   r5   r6   r7   r8   r9   r-   Úimage_processor_dicts	            r    Úfrom_pretrainedÚ$ImageProcessingMixin.from_pretrainedT   sd   € ðn (ˆ{ÑØ#1ÐÑ Ø%5Ð!Ñ"Ø%ˆzÑàÑØ#�7‰Oà'*×'CÒ'CÐDaÑ'lÐekÑ'lÑ$Ðà�}Š}Ð1Ñ<°VÑ<Ð<r   Úsave_directoryÚpush_to_hubc           	      ó®  • [         R                  R                  U5      (       a  [        SU S35      e[         R                  " USS9  U(       aw  UR                  SS5      nUR                  SUR                  [         R                  R                  5      S   5      n[        U4S	S0UD6R                  nU R                  U5      nU R                  b
  [        XU S
9  [         R                  R                  U[        5      nU R                  U5        [         R#                  SU 35        U(       a"  U R%                  UWWWUR'                  S5      S9  U/$ )a  
Save an image processor object to the directory `save_directory`, so that it can be re-loaded using the
[`~image_processing_utils.ImageProcessingMixin.from_pretrained`] class method.

Args:
    save_directory (`str` or `os.PathLike`):
        Directory where the image processor JSON file will be saved (will be created if it does not exist).
    push_to_hub (`bool`, *optional*, defaults to `False`):
        Whether or not to push your model to the Hugging Face model hub after saving it. You can specify the
        repository you want to push to with `repo_id` (will default to the name of `save_directory` in your
        namespace).
    kwargs (`dict[str, Any]`, *optional*):
        Additional key word arguments passed along to the [`~utils.PushToHubMixin.push_to_hub`] method.
zProvided path (z#) should be a directory, not a fileT)Úexist_okÚcommit_messageNÚrepo_idéÿÿÿÿrD   )ÚconfigzImage processor saved in r8   )rE   r8   )ÚosÚpathÚisfileÚAssertionErrorÚmakedirsr&   ÚsplitÚsepr   rF   Ú_get_files_timestampsÚ_auto_classr   Újoinr   Úto_json_filer*   ÚinfoÚ_upload_modified_filesÚget)r,   rA   rB   r-   rE   rF   Úfiles_timestampsÚoutput_image_processor_files           r    Úsave_pretrainedÚ$ImageProcessingMixin.save_pretrained·   s0  € ô �7‰7�>‰>˜.×)Ñ)Ü  ?°>Ð2BÐBeÐ!fÓgÐgä
�Š�N¨TÒ2æØ#ŸZ™ZÐ(8¸$Ó?ˆNØ—j‘j ¨N×,@Ñ,@ÄÇÁÇÁÓ,MÈbÑ,QÓRˆGÜ! 'ÑC°DÐC¸FÑC×KÑKˆGØ#×9Ñ9¸.ÓIÐð ×ÑÑ'Ü˜t¸DÒAô ')§g¡g§l¡l°>ÔCWÓ&XÐ#à×ÑÐ5Ô6Ü�‰Ð/Ð0KÐ/LÐMÔNæØ×'Ñ'ØØØ Ø-Ø—j‘j Ó)ð (ñ ð ,Ð,Ð,r   c                 óÔ  • UR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  S	S
5      n	UR                  S[        5      n
UR                  SS5      nUR                  SS5      nSUS.nUb  X½S'   [        5       (       a  U(       d  [        R	                  S5        Sn[        U5      n[        R                  R                  U5      n[        R                  R                  U5      (       a  [        R                  R                  X5      n[        R                  R                  U5      (       a  UnSnSnO-U
n [        U[        UUUUUUUU	SS9n[        UUUUUUUUUU	SS9nSnUb  [        U5      nSU;   a  US   nUb  Uc  [        U5      nUc  [        SU SU SU
 S35      eU(       a  [        R	                  SU 35        UU4$ [        R	                  SW SU 35        UU4$ ! [         a    e [         a    [        SU SU SU
 S35      ef = f)aa  
From a `pretrained_model_name_or_path`, resolve to a dictionary of parameters, to be used for instantiating a
image processor of type [`~image_processor_utils.ImageProcessingMixin`] using `from_dict`.

Parameters:
    pretrained_model_name_or_path (`str` or `os.PathLike`):
        The identifier of the pre-trained checkpoint from which we want the dictionary of parameters.
    subfolder (`str`, *optional*, defaults to `""`):
        In case the relevant files are located inside a subfolder of the model repo on huggingface.co, you can
        specify the folder name here.
    image_processor_filename (`str`, *optional*, defaults to `"config.json"`):
        The name of the file in the model directory to use for the image processor config.

Returns:
    `tuple[Dict, Dict]`: The dictionary(ies) that will be used to instantiate the image processor object.
r5   Nr6   FÚproxiesr8   r7   r9   Ú	subfolderÚ Úimage_processor_filenameÚ_from_pipelineÚ
_from_autoúimage processor)Ú	file_typeÚfrom_auto_classÚusing_pipelinez+Offline mode: forcing local_files_only=TrueT)
Úfilenamer5   r6   r\   r7   r8   Ú
user_agentr9   r]   Ú%_raise_exceptions_for_missing_entriesz Can't load image processor for 'zœ'. If you were trying to load it from 'https://huggingface.co/models', make sure you don't have a local directory with the same name. Otherwise, make sure 'z2' is the correct path to a directory containing a z fileÚimage_processorzloading configuration file z from cache at )r&   r   r   r*   rT   ÚstrrI   rJ   ÚisdirrR   rK   r   r   ÚOSErrorÚ	Exceptionr   )r3   r4   r-   r5   r6   r\   r8   r7   r9   r]   r_   Úfrom_pipelinerd   rg   Úis_localÚimage_processor_fileÚresolved_image_processor_fileÚresolved_processor_filer>   Úprocessor_dicts                       r    r<   Ú-ImageProcessingMixin.get_image_processor_dictç   sá  € ð( —J‘J˜{¨DÓ1ˆ	ØŸ™Ð$4°eÓ<ˆØ—*‘*˜Y¨Ó-ˆØ—
‘
˜7 DÓ)ˆØ!Ÿ:™:Ð&8¸%Ó@ÐØ—:‘:˜j¨$Ó/ˆØ—J‘J˜{¨BÓ/ˆ	Ø#)§:¡:Ð.HÔJ^Ó#_Ð àŸ
™
Ð#3°TÓ:ˆØ Ÿ*™* \°5Ó9ˆà#4ÈÑYˆ
ØÑ$Ø+8Ð'Ñ(ä×ÑÖ%5Ü�K‰KÐEÔFØ#Ðä(+Ð,IÓ(JÐ%Ü—7‘7—=‘=Ð!>Ó?ˆÜ�7‰7�=‰=Ð6×7Ñ7Ü#%§7¡7§<¡<Ð0MÓ#hÐ Ü�7‰7�>‰>Ð7×8Ñ8Ø,IÐ)Ø&*Ð#Ø‰Hà#;Ð ð&Ü*5Ø1Ü+Ø'Ø#1Ø#Ø%5ØØ)Ø%Ø'Ø:?ñ+Ð'ô 1<Ø1Ø1Ø'Ø#1Ø#Ø%5ØØ)Ø%Ø'Ø:?ñ1Ð-ð:  $ÐØ"Ñ.Ü0Ð1HÓIˆNØ  NÓ2Ø'5Ð6GÑ'HÐ$à(Ñ4Ð9MÑ9UÜ#6Ð7TÓ#UÐ àÑ'ÜØ2Ð3PÐ2Qð R5à5RÐ4Sð T+Ø+CÐ*DÀEðKóð ö Ü�K‰KÐ5Ð6SÐ5TÐUÔVð $ VÐ+Ð+ô	 �K‰KØ-Ð.BÐ-CÀ?ÐSpÐRqÐrôð $ VÐ+Ð+øôQ ó ð Üó äØ6Ð7TÐ6Uð V9à9VÐ8Wð X/Ø/GÐ.HÈðOóð ðús   Æ*H= È=*I'r>   c           	      ó¬  • UR                  5       nUR                  SS5      nUR                  UR                  5        VVs0 s H"  u  pEX@R                  R
                  ;   d  M   XE_M$     snn5        U " S0 UD6n/ n[        [        UR                  5       5      5       H]  n[        Xh5      (       d  M  X€R                  R
                  ;  d  M0  [        XhUR                  US5      5        UR                  U5        M_     U(       a&  [        R                  SU R                   SU S35        [        R                  SU 35        U(       a  Xb4$ U$ s  snnf )a�  
Instantiates a type of [`~image_processing_utils.ImageProcessingMixin`] from a Python dictionary of parameters.

Args:
    image_processor_dict (`dict[str, Any]`):
        Dictionary that will be used to instantiate the image processor object. Such a dictionary can be
        retrieved from a pretrained checkpoint by leveraging the
        [`~image_processing_utils.ImageProcessingMixin.to_dict`] method.
    kwargs (`dict[str, Any]`):
        Additional parameters from which to initialize the image processor object.

Returns:
    [`~image_processing_utils.ImageProcessingMixin`]: The image processor object instantiated from those
    parameters.
Úreturn_unused_kwargsFNzImage processor z	: kwargs zÍ were applied for backward compatibility. To avoid this warning, add them to valid_kwargs: create a custom TypedDict extending ImagesKwargs with these keys and set it as the `valid_kwargs` class attribute.r   )Úcopyr&   Úupdater'   Úvalid_kwargsÚ__annotations__ÚreversedÚlistÚkeysÚhasattrr(   Úappendr*   Úwarning_oncer   rT   )	r3   r>   r-   rv   ÚkÚvri   Ú
extra_keysr.   s	            r    r=   ÚImageProcessingMixin.from_dict^  s-  € ð"  4×8Ñ8Ó:ÐØ%Ÿz™zÐ*@À%ÓHÐØ×#Ñ#°f·l±l´nÔ$n²n©d¨aÈ×M]ÑM]×MmÑMmÑHm£T Q¢T±nÒ$nÔoÙÑ5Ð 4Ñ5ˆð ˆ
ÜœD §¡£Ó/Ö0ˆCÜ�×,Ó,°×<LÑ<L×<\Ñ<\Õ1\Ü˜¨f¯j©j¸¸dÓ.CÔDØ×!Ñ! #Ö&ñ 1ö Ü×ÑØ" 3§<¡< .°	¸*¸ð Fað bôô 	�‰Ð& Ð&7Ð8Ô9ÞØ"Ð*Ð*à"Ð"ùó) %os   ÁE
Á$E
c                 óx   • [         R                  " U R                  5      nU R                  R                  US'   U$ )zŸ
Serializes this instance to a Python dictionary.

Returns:
    `dict[str, Any]`: Dictionary of all the attributes that make up this image processor instance.
Úimage_processor_type)rw   ÚdeepcopyÚ__dict__Ú	__class__r   )r,   Úoutputs     r    Úto_dictÚImageProcessingMixin.to_dict‡  s0   € ô —’˜tŸ}™}Ó-ˆØ)-¯©×)@Ñ)@ˆÐ%Ñ&àˆr   Ú	json_filec                 ó¦   • [        USS9 nUR                  5       nSSS5        [        R                  " W5      nU " S0 UD6$ ! , (       d  f       N,= f)aˆ  
Instantiates a image processor of type [`~image_processing_utils.ImageProcessingMixin`] from the path to a JSON
file of parameters.

Args:
    json_file (`str` or `os.PathLike`):
        Path to the JSON file containing the parameters.

Returns:
    A image processor of type [`~image_processing_utils.ImageProcessingMixin`]: The image_processor object
    instantiated from that JSON file.
úutf-8©ÚencodingNr   )ÚopenÚreadÚjsonÚloads)r3   r�   ÚreaderÚtextr>   s        r    Úfrom_json_fileÚ#ImageProcessingMixin.from_json_file“  sG   € ô �) gÒ.°&Ø—;‘;“=ˆD÷ /ä#Ÿzšz¨$Ó/ÐÙÑ*Ð)Ñ*Ð*÷ /Õ.ús   ‹AÁ
Ac                 óì   • U R                  5       nUR                  5        H8  u  p#[        U[        R                  5      (       d  M&  UR                  5       X'   M:     [        R                  " USSS9S-   $ )z£
Serializes this instance to a JSON string.

Returns:
    `str`: String containing all the attributes that make up this feature_extractor instance in JSON format.
é   T)ÚindentÚ	sort_keysÚ
)r‹   r'   Ú
isinstanceÚnpÚndarrayÚtolistr”   Údumps)r,   Ú
dictionaryr.   r/   s       r    Úto_json_stringÚ#ImageProcessingMixin.to_json_string¦  s\   € ð —\‘\“^ˆ
à$×*Ñ*Ö,‰JˆCÜ˜%¤§¡×,Ó,Ø"'§,¡,£.�
“ñ -ô �zŠz˜*¨Q¸$Ñ?À$ÑFÐFr   Újson_file_pathc                 óŒ   • [        USSS9 nUR                  U R                  5       5        SSS5        g! , (       d  f       g= f)z¹
Save this instance to a JSON file.

Args:
    json_file_path (`str` or `os.PathLike`):
        Path to the JSON file in which this image_processor instance's parameters will be saved.
Úwr�   r�   N)r’   Úwriter¥   )r,   r§   Úwriters      r    rS   Ú!ImageProcessingMixin.to_json_fileµ  s3   € ô �. #°Ò8¸FØ�L‰L˜×,Ñ,Ó.Ô/÷ 9×8Ö8ús	   Œ 5µ
Ac                 óT   • U R                   R                   SU R                  5        3$ )NÚ )r‰   r   r¥   )r,   s    r    Ú__repr__ÚImageProcessingMixin.__repr__À  s(   € Ø—.‘.×)Ñ)Ð*¨!¨D×,?Ñ,?Ó,AÐ+BÐCÐCr   c                 ó    • [        U[        5      (       d  UR                  nSSKJs  Jn  [        X!5      (       d  [        U S35      eXl        g)aK  
Register this class with a given auto class. This should only be used for custom image processors as the ones
in the library are already mapped with `AutoImageProcessor `.



Args:
    auto_class (`str` or `type`, *optional*, defaults to `"AutoImageProcessor "`):
        The auto class to register this new image processor with.
r   Nz is not a valid auto class.)	rŸ   rj   r   Útransformers.models.autoÚmodelsÚautor~   Ú
ValueErrorrQ   )r3   Ú
auto_classÚauto_modules      r    Úregister_for_auto_classÚ,ImageProcessingMixin.register_for_auto_classÃ  sE   € ô ˜*¤c×*Ñ*Ø#×,Ñ,ˆJç6Ð6ä�{×/Ñ/Ü 
˜|Ð+FÐGÓHÐHà$�r   Úimage_url_or_urlsc                 ó  • [        U[        [        45      (       a!  U Vs/ s H  o R                  U5      PM     sn$ [        U[        5      (       a  [        U5      $ [        U5      (       a  U$ [        S[        U5       35      es  snf )zÉ
Convert a single or a list of urls into the corresponding `PIL.Image` objects.

If a single url is passed, the return value will be a single object. If a list is passed a list of objects is
returned.
z=only a single or a list of entries is supported but got type=)	rŸ   r|   ÚtupleÚfetch_imagesrj   r   r
   Ú	TypeErrorÚtype)r,   rº   Úxs      r    r½   Ú!ImageProcessingMixin.fetch_imagesÙ  sƒ   € ô Ð'¬$´¨×7Ñ7Ù2CÓDÒ2C¨Q×%Ñ% aÖ(Ñ2CÑDÐDÜÐ)¬3×/Ñ/ÜÐ/Ó0Ð0ÜÐ-×.Ñ.Ø$Ð$äÐ[Ô\`ÐarÓ\sÐ[tÐuÓvÐvùò Es    Br   )NFFNÚmain)F)ÚAutoImageProcessor)r   r   r   r   r   rQ   r1   Úclassmethodr¿   r   rj   rI   ÚPathLikeÚboolr?   rY   r¼   Údictr   r<   r=   r‹   r˜   r¥   rS   r¯   r¸   r|   r½   r   r   r   r    r   r   =   sÚ  † ñð
 €Kòð ð /3Ø$Ø!&Ø#'Øñ`=ØÐ$Ñ%ð`=à'*¨R¯[©[Ñ'8ð`=ð ˜Ÿ™Ñ$ tÑ+ð`=ð ð	`=ð
 ð`=ð �T‰z˜DÑ ð`=ð ð`=ð 
ô`=ó ð`=ñD.-¨c°B·K±KÑ.?ð .-Èdõ .-ð` ðt,Ø,/°"·+±+Ñ,=ðt,à	ˆt�C˜�H‰~˜t C¨ H™~Ð-Ñ	.ót,ó ðt,ðl ð&#¨T°#°s°(©^ó &#ó ð&#ðP
˜˜c 3˜h™ô 
ð ð+ s¨R¯[©[Ñ'8ó +ó ð+ð$G ô Gð	0¨3°·±Ñ+<ô 	0òDð ó%ó ð%ð*w¨c°D¸±I©oÀÀTÈ#ÁYÁÑ.O÷ wr   rb   rÃ   zimage processor file)ÚobjectÚobject_classÚobject_files)$rw   r”   rI   Útypingr   r   Únumpyr    Úhuggingface_hubr   r   Údynamic_module_utilsr   Úfeature_extraction_utilsr	   ÚBaseBatchFeatureÚimage_utilsr
   r   Úutilsr   r   r   r   r   r   Ú	utils.hubr   r   Ú
get_loggerr   r*   r   rB   r   Úformatr   r   r    Ú<module>rÖ      sÕ   ðó Û Û 	ß ã ß 8å 4Ý Fß 3÷÷ õ #ñ Ð1Ð9OÑPÐ ð 
×	Ò	˜HÓ	%€ô
Ð#ô ô jw˜>ô jwñZ $-Ð-A×-MÑ-MÓ#NÐ Ô  Ø×#Ñ#×+Ñ+Ñ7Ø/C×/OÑ/O×/WÑ/W×/^Ñ/^Ø Ð/CÐRhð 0_ð 0Ð×$Ñ$Õ,ð 8r   