§
    §‘Új”.  ã                   ó  — U d 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	 ddl
mZmZmZmZ ej        dee         fd„¦   «         Z ej        d	¬
¦  «         G d„ d¦  «        ¦   «         Z e¦   «         Z e	de¬¦  «        Ze	e         ed<   defd„Zdee         deeef         defd„Z	 d'dee         dedefd„Ze	 d'dee         dedee         fd„¦   «         Zddddddddddd d!d"d#d$œZ e¦   «         Zee         ed%<   defd&„ZdS )(zConfiguration value handling.é    N)ÚIterator)Úcontextmanager)Ú
ContextVar)ÚAnyÚLiteralÚOptionalÚUnionÚreturnc                  ó*   — t          j        d¦  «        S )z•
    Small utility function to determine the `jbig2dec` binary path only once.

    Returns:
        The corresponding binary path if available.
    Újbig2dec)ÚshutilÚwhich© ó    ú†/Users/tedpeters/Documents/Projects/Claude Projects/TPC Houses/house-viewer/.venv/lib/python3.11/site-packages/pypdf/_configuration.pyÚ_determine_jbig2dec_binaryr      s   € õ Œ<˜
Ñ#Ô#Ð#r   T)Úfrozenc                   ó  — e Zd ZU dZdZeed<   	 dZeed<   	 dZeed<   	 dZ	eed<   	 dZ
eed<   	 dZeed	<   	 dZeed
<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed <   	 dZeed!<   	 dZeed"<   	 d#Zeed$<   	  ej         e!¬%¦  «        Z"e#e$         ed&<   	 d'Z%e&d(         ed)<   	 d*Z'e(ed+<   	 d,e)d-d fd.„Z*d/S )0ÚConfigurationaÂ  
    Configuration used while processing PDF files.

    These limits mostly protect against excessive resource consumption caused by malformed or malicious PDF files.

    .. note::

        Avoid relying on specific implementation details of this class. The main public API consists of the values
        being considered read-only for each instance with the overwrite method to create a new instance with the
        specified values changed.
    iÀhxÚmaximum_declared_stream_lengthÚ(array_based_stream_maximum_output_lengthi † Úarray_maximum_element_countÚ dictionary_maximum_element_countÚjbig2_maximum_output_lengthÚlzw_maximum_output_lengthÚ run_length_maximum_output_lengthÚzlib_maximum_output_lengthi@KL Ú"zlib_maximum_recovery_input_lengthÚbrotli_maximum_output_lengthi�Ð Úflate_maximum_columnsi 	= Úflate_maximum_row_lengthÚimage_maximum_buffer_sizeé   Ústream_filters_maximum_lengthi £áÚ#stream_decoding_work_maximum_lengthi€„ Ú!stream_parsing_work_maximum_countÚxmp_maximum_input_lengthÚxmp_maximum_element_countÚoutline_maximum_entrieséd   Úoutline_maximum_depthÚpage_tree_maximum_entriesÚpage_tree_maximum_depthÚform_fields_maximum_entriesÚform_fields_maximum_depthiˆ  Ú(xform_maximum_invocations_per_extraction)Údefault_factoryÚjbig2dec_binaryÚcropbox)r3   ÚtrimboxÚpage_merge_boxFÚdisable_legacy_handlingÚkwargsr
   c                 ó&   — t          j        | fi |¤ŽS )a  
        Creates a new configuration with the specified values overwritten.

        Args:
            **kwargs: Configuration field names and their new values.

        Returns:
            A new configuration with the specified values overwritten.
        )ÚdataclassesÚreplace)Úselfr7   s     r   Úwith_overwriteszConfiguration.with_overwritesŽ   s   € õ Ô" 4Ð2Ð2¨6Ð2Ð2Ð2r   N)+Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚintÚ__annotations__r   r   r   r   r   r   r   r   r   r    r!   r"   r$   r%   r&   r'   r(   r)   r+   r,   r-   r.   r/   r0   r9   Úfieldr   r2   r   Ústrr5   r   r6   Úboolr   r<   r   r   r   r   r      s¯  € € € € € € ð
ð 
ð +5Ð" CÐ4Ð4Ñ4ØEØ4>Ð,¨cÐ>Ð>Ñ>ØDØ'.Ð Ð.Ð.Ñ.ØAØ,3Ð$ cÐ3Ð3Ñ3ØLà'1Ð Ð1Ð1Ñ1ðð &0Ð˜sÐ/Ð/Ñ/ðð -7Ð$ cÐ6Ð6Ñ6ðð '1Ð Ð0Ð0Ñ0ðð /8Ð&¨Ð7Ð7Ñ7ðð )3Ð  #Ð2Ð2Ñ2ðð
 ")Ð˜3Ð(Ð(Ñ(ØWØ$-Ð˜cÐ-Ð-Ñ-ØPà%/Ð˜sÐ/Ð/Ñ/ØEà)+Ð! 3Ð+Ð+Ñ+Ø;Ø/:Ð'¨Ð:Ð:Ñ:ØLØ-6Ð% sÐ6Ð6Ñ6ðð
 %.Ð˜cÐ-Ð-Ñ-ØVØ%,Ð˜sÐ,Ð,Ñ,Ø>à#*Ð˜SÐ*Ð*Ñ*Ø8Ø!$Ð˜3Ð$Ð$Ñ$Ø8à%,Ð˜sÐ,Ð,Ñ,ØAØ#&Ð˜SÐ&Ð&Ñ&Ø5à'.Ð Ð.Ð.Ñ.Ø4Ø%(Ð˜sÐ(Ð(Ñ(Ø4à49Ð,¨cÐ9Ð9Ñ9Ø[à%6 [Ô%6ÐGaÐ%bÑ%bÔ%b€O�X˜c”]ÐbÐbÑbðð 5>€N�GÐ0Ô1Ð=Ð=Ñ=Ø+à$)Ð˜TÐ)Ð)Ñ)ðð
3¨ð 
3°ð 
3ð 
3ð 
3ð 
3ð 
3ð 
3r   r   Úpypdf_configuration)ÚdefaultÚCURRENT_CONFIGURATIONc                  ó4   — t                                ¦   «         S )zY
    Get the current configuration.

    Returns:
        The current configuration.
    )rH   Úgetr   r   r   Úget_configurationrK   ¥   s   € õ !×$Ò$Ñ&Ô&Ð&r   ÚconfigurationÚ
overwritesc                 ó@   — | �| nt          ¦   «         } |j        di |¤ŽS )a  
    Utility function to build a new configuration from the given values.

    Args:
        configuration: A possible explicit configuration to use instead of the current configuration.
        overwrites: Entries to overwrite.

    Returns:
        The generated configuration.
    Nr   )rK   r<   )rL   rM   Úbases      r   Ú_build_configurationrP   ¯   s2   € ð *Ð5ˆ=ˆ=Õ;LÑ;NÔ;N€DØˆ4ÔÐ-Ð- *Ð-Ð-Ð-r   c                 óZ   — t          | |¦  «        }t                               |¦  «         |S )a"  
    Overwrite the configuration for the current execution context.

    Args:
        configuration: A direct configuration instance to use.
        **overwrites: Configuration parameters to overwrite in the current or given configuration.

    Returns:
        The new configuration.
    )rP   rH   Úset)rL   rM   Únew_configurations      r   Úoverwrite_configurationrT   Á   s/   € õ -¨]¸JÑGÔGÐÝ×ÒÐ/Ñ0Ô0Ð0ØÐr   c              +   óÚ   K  — t          | |¦  «        }t                               |¦  «        }	 |V — t                               |¦  «         dS # t                               |¦  «         w xY w)a  
    Temporarily overwrite the configuration.

    Args:
        configuration: A direct configuration instance to use.
        **overwrites: Configuration parameters to overwrite in the current or given configuration.

    Returns:
        The new configuration.
    N)rP   rH   rR   Úreset)rL   rM   rS   Útokens       r   Úapply_configurationrX   Ô   sr   è è € õ -¨]¸JÑGÔGÐÝ!×%Ò%Ð&7Ñ8Ô8€Eð+ØÐÐÐå×#Ò# EÑ*Ô*Ð*Ð*Ð*øÕ×#Ò# EÑ*Ô*Ð*Ð*øøøs   ®A ÁA*ÚMAX_DECLARED_STREAM_LENGTHÚ$MAX_ARRAY_BASED_STREAM_OUTPUT_LENGTHÚJBIG2_MAX_OUTPUT_LENGTHÚLZW_MAX_OUTPUT_LENGTHÚRUN_LENGTH_MAX_OUTPUT_LENGTHÚZLIB_MAX_OUTPUT_LENGTHÚZLIB_MAX_RECOVERY_INPUT_LENGTHÚFLATE_MAX_COLUMNSÚFLATE_MAX_ROW_LENGTHÚFLATE_MAX_BUFFER_SIZEÚXMP_MAX_INPUT_LENGTHÚXMP_MAX_ELEMENT_COUNTÚJBIG2DEC_BINARYÚMERGE_CROP_BOX)r   r   r   r   r   r   r   r    r!   r"   r'   r(   r2   r5   ÚWARNED_LEGACY_OVERWRITESc                  óÄ  — t          ¦   «         } | j        r| S ddlm} ddlm}m}m}m}m	}m
}m}m}	m}
m}m} ddlm}m} |	||||
|||||||||dœ}i }t&                               ¦   «         D ]e\  }}||         }|t+          t,          |¦  «        k    r?|t.          vr1ddlm}  ||d|› �d¬	¦  «         t.                               |¦  «         |||<   Œf|s| S t7          d
i |¤ŽS )z§
    Overwrite the current configuration with the legacy configuration if it has been changed.

    Returns:
        The new configuration which has been applied.
    r   )rf   )rb   r`   ra   r[   re   r\   rZ   rY   r]   r^   r_   )rd   rc   )rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   )Údeprecate_with_replacementzConfiguration.z7.0.0)Úold_nameÚnew_nameÚ
removed_inr   )rK   r6   Úpypdf._pagerf   Úpypdf.filtersrb   r`   ra   r[   re   r\   rZ   rY   r]   r^   r_   Ú	pypdf.xmprd   rc   ÚLEGACY_NAME_MAPPINGÚitemsÚgetattrÚDEFAULT_CONFIGURATIONrg   Úpypdf._utilsri   ÚaddrT   )rL   rf   rb   r`   ra   r[   re   r\   rZ   rY   r]   r^   r_   rd   rc   Úlegacy_valuesrM   Ú
field_nameÚlegacy_nameÚlegacy_valueri   s                        r   Úapply_legacy_configurationrz     sÛ  € õ &Ñ'Ô'€MØÔ,ð ØÐà*Ð*Ð*Ð*Ð*Ð*ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð FÐEÐEÐEÐEÐEÐEÐEð 'AØ0TØ#:Ø!6Ø(DØ"8Ø*HØ.Ø 4Ø!6Ø 4Ø!6Ø*Ø(ðð €Mð  46€Jå#6×#<Ò#<Ñ#>Ô#>ð 2ð 2Ñˆ
�KØ$ [Ô1ˆà�7Õ#8¸*ÑEÔEÒEÐEØÕ":Ð:Ð:ØCÐCÐCÐCÐCÐCà*Ð*Ø(Ø:¨jÐ:Ð:Ø&ðñ ô ð õ
 )×,Ò,¨[Ñ9Ô9Ð9à%1ˆJ�zÑ"øàð ØÐÝ"Ð0Ð0 ZÐ0Ð0Ð0r   )N) r@   r9   Ú	functoolsr   Úcollections.abcr   Ú
contextlibr   Úcontextvarsr   Útypingr   r   r   r	   ÚcacherD   r   Ú	dataclassr   rs   rH   rB   rK   ÚdictrP   rT   rX   rp   rR   rg   rz   r   r   r   ú<module>rƒ      s¢  ðØ #Ð #Ð #Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø %Ð %Ð %Ð %Ð %Ð %Ø "Ð "Ð "Ð "Ð "Ð "Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0ð „ð$ H¨S¤Mð $ð $ð $ñ „ð$ð €Ô˜dÐ#Ñ#Ô#ðA3ð A3ð A3ð A3ð A3ñ A3ô A3ñ $Ô#ðA3ðJ &˜™œÐ ð 4>°:ØØ!ð4ñ 4ô 4Ð �z -Ô0ð ð ñ ð'˜=ð 'ð 'ð 'ð 'ð.Ø˜MÔ*ð.à�S˜#�X”ð.ð ð.ð .ð .ð .ð& .2ðð Ø˜MÔ*ðàðð ðð ð ð ð& à-1ð+ð +Ø˜MÔ*ð+àð+ð ˆmÔð+ð +ð +ñ „ð+ð0 'CØ0VØ#<Ø!8Ø(FØ":Ø*JØ0Ø 6Ø!8Ø 6Ø!8Ø(Ø&ðð Ð ð$ &) S¡U¤UÐ ˜#˜cœ(Ð *Ð *Ñ *ð?1 Mð ?1ð ?1ð ?1ð ?1ð ?1ð ?1r   