§
    %ê[f%  ã                  ór   — d dl mZ  G d„ d¦  «        Z G d„ d¦  «        Zd„ Z G d„ d¦  «        Zd	d
lmZ dS )é    )Úannotationsc                  ó,   — e Zd ZdZdd„Zd„ Zd„ Zd„ ZdS )ÚIfRangez½Very simple object that represents the `If-Range` header in parsed
    form.  It will either have neither a etag or date or one of either but
    never both.

    .. versionadded:: 0.7
    Nc                ó"   — || _         || _        d S ©N)ÚetagÚdate)Úselfr   r	   s      úQ/var/www/piapp/venv/lib/python3.11/site-packages/werkzeug/datastructures/range.pyÚ__init__zIfRange.__init__   s   € ð ˆŒ	àˆŒ	ˆ	ˆ	ó    c                ó†   — | j         �t          j        | j         ¦  «        S | j        �t          j        | j        ¦  «        S dS )ú-Converts the object back into an HTTP header.NÚ )r	   ÚhttpÚ	http_dater   Ú
quote_etag©r
   s    r   Ú	to_headerzIfRange.to_header   s;   € àŒ9Ð Ý”> $¤)Ñ,Ô,Ð,ØŒ9Ð Ý”? 4¤9Ñ-Ô-Ð-Øˆrr   c                ó*   — |                       ¦   «         S r   ©r   r   s    r   Ú__str__zIfRange.__str__   ó   € Ø�~Š~ÑÔÐr   c                óR   — dt          | ¦  «        j        › dt          | ¦  «        ›d�S ©Nú<ú ú>©ÚtypeÚ__name__Ústrr   s    r   Ú__repr__zIfRange.__repr__   ó*   € Ø7•4˜‘:”:Ô&Ð7Ð7­¨T©¬Ð7Ð7Ð7Ð7r   ©NN)r!   Ú
__module__Ú__qualname__Ú__doc__r   r   r   r#   © r   r   r   r      s_   € € € € € ðð ðð ð ð ðð ð ð ð  ð  ð8ð 8ð 8ð 8ð 8r   r   c                  ó<   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚRangeaX  Represents a ``Range`` header. All methods only support only
    bytes as the unit. Stores a list of ranges if given, but the methods
    only work if only one range is provided.

    :raise ValueError: If the ranges provided are invalid.

    .. versionchanged:: 0.15
        The ranges passed in are validated.

    .. versionadded:: 0.7
    c                óz   — || _         || _        |D ])\  }}|�|� |dk     s||k    rt          ||f› d�¦  «        ‚Œ*d S )Nr   z is not a valid range.)ÚunitsÚrangesÚ
ValueError)r
   r-   r.   ÚstartÚends        r   r   zRange.__init__/   sh   € àˆŒ
ð ˆŒà ð 	Jð 	J‰JˆE�3Øˆ}  °e¸a²i°iÀ5ÈCÂ<À<Ý  U¨C LÐ!HÐ!HÐ!HÑIÔIÐIøð	Jð 	Jr   c                óâ   — | j         dk    s|�t          | j        ¦  «        dk    rdS | j        d         \  }}|€|}|dk     r||z  }t          j        |||¦  «        r|t          ||¦  «        fS dS )z·If the range is for bytes, the length is not None and there is
        exactly one range and it is satisfiable it returns a ``(start, stop)``
        tuple, otherwise `None`.
        ÚbytesNé   r   )r-   Úlenr.   r   Úis_byte_range_validÚmin)r
   Úlengthr0   r1   s       r   Úrange_for_lengthzRange.range_for_length:   sŠ   € ð
 Œ:˜Ò Ð  F Nµc¸$¼+Ñ6FÔ6FÈ!Ò6KÐ6KØ�4Ø”[ ”^‰
ˆˆsØˆ;ØˆCØ�qŠyˆyØ˜‘�ÝÔ# E¨3°Ñ7Ô7ð 	+Ø�#˜c 6Ñ*Ô*Ð*Ð*Øˆtr   c                óz   — |                       |¦  «        }|�#t          | j        |d         |d         |¦  «        S dS )z�Creates a :class:`~werkzeug.datastructures.ContentRange` object
        from the current range and given content length.
        Nr   r4   )r9   ÚContentRanger-   )r
   r8   Úrngs      r   Úmake_content_rangezRange.make_content_rangeJ   s?   € ð ×#Ò# FÑ+Ô+ˆØˆ?Ý ¤
¨C°¬F°C¸´F¸FÑCÔCÐCØˆtr   c                óø   — g }| j         D ]R\  }}|€.|                     |dk    r|› d�nt          |¦  «        ¦  «         Œ5|                     |› d|dz
  › �¦  «         ŒS| j        › dd                     |¦  «        › �S )r   Nr   ú-r4   ú=ú,)r.   Úappendr"   r-   Újoin)r
   r.   Úbeginr1   s       r   r   zRange.to_headerS   s—   € àˆØœ+ð 	4ð 	4‰JˆE�3Øˆ{Ø—’¨U°aªZ¨Z ˜k˜k˜k˜k½SÀ¹Z¼ZÑHÔHÐHÐHà—’ Ð2Ð2¨¨q©Ð2Ð2Ñ3Ô3Ð3Ð3Ø”*Ð1Ð1˜sŸxšx¨Ñ/Ô/Ð1Ð1Ð1r   c                óv   — |                       |¦  «        }|�!| j        › d|d         › d|d         dz
  › d|› �S dS )z\Converts the object into `Content-Range` HTTP header,
        based on given length
        Nr   r   r?   r4   ú/)r9   r-   )r
   r8   Úranges      r   Úto_content_range_headerzRange.to_content_range_header]   sT   € ð ×%Ò% fÑ-Ô-ˆØÐØ”jÐEÐE 5¨¤8ÐEÐE¨e°A¬h¸©lÐEÐE¸VÐEÐEÐEØˆtr   c                ó*   — |                       ¦   «         S r   r   r   s    r   r   zRange.__str__f   r   r   c                óR   — dt          | ¦  «        j        › dt          | ¦  «        ›d�S r   r   r   s    r   r#   zRange.__repr__i   r$   r   N)r!   r&   r'   r(   r   r9   r=   r   rH   r   r#   r)   r   r   r+   r+   "   sŠ   € € € € € ð
ð 
ð	Jð 	Jð 	Jðð ð ð ð ð ð2ð 2ð 2ðð ð ð ð  ð  ð8ð 8ð 8ð 8ð 8r   r+   c                ó8   ‡ — ˆ fd„}ˆ fd„}t          ||¦  «        S )Nc                ó$   •— t          | ‰¦  «        S r   )Úgetattr)r
   Únames    €r   Úfgetz _callback_property.<locals>.fgetn   s   ø€ Ý�t˜TÑ"Ô"Ð"r   c                óf   •— t          | ‰|¦  «         | j        �|                      | ¦  «         d S d S r   )ÚsetattrÚ	on_update)r
   ÚvaluerN   s     €r   Úfsetz _callback_property.<locals>.fsetq   s=   ø€ Ý��d˜EÑ"Ô"Ð"ØŒ>Ð%Ø�NŠN˜4Ñ Ô Ð Ð Ð ð &Ð%r   )Úproperty)rN   rO   rT   s   `  r   Ú_callback_propertyrV   m   sG   ø€ ð#ð #ð #ð #ð #ð!ð !ð !ð !ð !õ
 �D˜$ÑÔÐr   c                  ó˜   — e Zd ZdZdd„Z ed¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z	dd	„Z
d
„ Zd„ Zd„ Zd„ Zd„ ZdS )r;   zDRepresents the content range header.

    .. versionadded:: 0.7
    Nc                ó„   — t          j        |||¦  «        s
J d¦   «         ‚|| _        |                      ||||¦  «         d S )NúBad range provided)r   r6   rR   Úset)r
   r-   r0   Ústopr8   rR   s         r   r   zContentRange.__init__   sK   € ÝÔ'¨¨t°VÑ<Ô<ÐRÐRÐ>RÑRÔRÐRØ"ˆŒØ�Š�˜˜f eÑ,Ô,Ð,Ð,Ð,r   Ú_unitsÚ_startÚ_stopÚ_lengthr3   c                óº   — t          j        |||¦  «        s
J d¦   «         ‚|| _        || _        || _        || _        | j        �|                      | ¦  «         dS dS )z#Simple method to update the ranges.rY   N)r   r6   r\   r]   r^   r_   rR   )r
   r0   r[   r8   r-   s        r   rZ   zContentRange.setŽ   sj   € åÔ'¨¨t°VÑ<Ô<ÐRÐRÐ>RÑRÔRÐRØˆŒØˆŒØˆŒ
ØˆŒØŒ>Ð%Ø�NŠN˜4Ñ Ô Ð Ð Ð ð &Ð%r   c                ó6   — |                       ddd¬¦  «         dS )zcSets the units to `None` which indicates that the header should
        no longer be used.
        N©r-   )rZ   r   s    r   ÚunsetzContentRange.unset˜   s"   € ð 	�Š��t 4ˆÑ(Ô(Ð(Ð(Ð(r   c                óš   — | j         €dS | j        €d}n| j        }| j        €| j         › d|› �S | j         › d| j        › d| j        dz
  › d|› �S )Nr   Ú*z */r   r?   r4   rF   )r-   r8   r0   r[   )r
   r8   s     r   r   zContentRange.to_headerž   sq   € ØŒ:ÐØ�2ØŒ;ÐØˆFˆFà”[ˆFØŒ:ÐØ”jÐ-Ð- VÐ-Ð-Ð-Ø”*ÐDÐD˜tœzÐDÐD¨D¬I¸©MÐDÐD¸FÐDÐDÐDr   c                ó   — | j         d uS r   rb   r   s    r   Ú__bool__zContentRange.__bool__©   s   € ØŒz Ð%Ð%r   c                ó*   — |                       ¦   «         S r   r   r   s    r   r   zContentRange.__str__¬   r   r   c                óR   — dt          | ¦  «        j        › dt          | ¦  «        ›d�S r   r   r   s    r   r#   zContentRange.__repr__¯   r$   r   r%   )Nr3   )r!   r&   r'   r(   r   rV   r-   r0   r[   r8   rZ   rc   r   rg   r   r#   r)   r   r   r;   r;   y   sØ   € € € € € ðð ð
-ð -ð -ð -ð Ð˜xÑ(Ô(€EàÐ˜xÑ(Ô(€Eð Ð˜gÑ&Ô&€DàÐ 	Ñ*Ô*€Fð!ð !ð !ð !ð)ð )ð )ð	Eð 	Eð 	Eð&ð &ð &ð ð  ð  ð8ð 8ð 8ð 8ð 8r   r;   é   )r   N)Ú
__future__r   r   r+   rV   r;   r   r   r)   r   r   ú<module>rl      sÂ   ðØ "Ð "Ð "Ð "Ð "Ð "ð8ð 8ð 8ð 8ð 8ñ 8ô 8ð 8ð<H8ð H8ð H8ð H8ð H8ñ H8ô H8ð H8ðV	 ð 	 ð 	 ð78ð 78ð 78ð 78ð 78ñ 78ô 78ð 78ðv Ð Ð Ð Ð Ð Ð Ð r   