§
    ŒŸjL  ã                   ó4  — d Z ddlmZmZ ddlZddlZddlmZ ddl	m
Z
mZmZ ej        d         dk    ZdZej        Z ej        d	ed
¬¦  «          G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z e¦   «         Zej        Zdd„Zdd„Zdd„ZeZd„ ZdS )zkDEPRECATED Example code for lxml.etree protection

The code has NO protection against decompression bombs.
é    )Úprint_functionÚabsolute_importN)Úetreeé   )ÚDTDForbiddenÚEntitiesForbiddenÚNotSupportedErroré   z
lxml.etreezOdefusedxml.lxml is no longer supported and will be removed in a future release.é   )ÚcategoryÚ
stacklevelc                   ó€   ‡ — e Zd ZdZdZej        Zd„ Zˆ fd„Z	dˆ fd„	Z
dˆ fd„	Zdˆ fd	„	Zdˆ fd
„	Zˆ fd„Zdˆ fd„	Zˆ xZS )ÚRestrictedElementzEA restricted Element class that filters out instances of some classes© c              #   óL   K  — | j         }|D ]}t          ||¦  «        rŒ|V — Œd S ©N)Ú	blacklistÚ
isinstance)ÚselfÚiteratorr   Úchilds       ú\/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/defusedxml/lxml.pyÚ_filterzRestrictedElement._filter(   sF   è è € Ø”Nˆ	Øð 	ð 	ˆEÝ˜% Ñ+Ô+ð ØØˆKˆKˆKˆKð	ð 	ó    c                 ó|   •— t          t          | ¦  «                             ¦   «         }|                      |¦  «        S r   )Úsuperr   Ú__iter__r   ©r   r   Ú	__class__s     €r   r   zRestrictedElement.__iter__/   s1   ø€ ÝÕ*¨DÑ1Ô1×:Ò:Ñ<Ô<ˆØ�|Š|˜HÑ%Ô%Ð%r   NFc                 ó‚   •— t          t          | ¦  «                             ||¬¦  «        }|                      |¦  «        S )N)ÚtagÚreversed)r   r   Úiterchildrenr   )r   r!   r"   r   r   s       €r   r#   zRestrictedElement.iterchildren3   s9   ø€ ÝÕ*¨DÑ1Ô1×>Ò>À3ÐQYÐ>ÑZÔZˆØ�|Š|˜HÑ%Ô%Ð%r   c                 ón   •—  t          t          | ¦  «        j        |d|iŽ}|                      |¦  «        S ©Nr!   )r   r   Úiterr   ©r   r!   Útagsr   r   s       €r   r&   zRestrictedElement.iter7   s7   ø€ Ø6•5Õ*¨DÑ1Ô1Ô6ÀÐF¸3ÐFÐFˆØ�|Š|˜HÑ%Ô%Ð%r   c                 ón   •—  t          t          | ¦  «        j        |d|iŽ}|                      |¦  «        S r%   )r   r   Úiterdescendantsr   r'   s       €r   r*   z!RestrictedElement.iterdescendants;   s7   ø€ ØA•5Õ*¨DÑ1Ô1ÔAÈDÐQÀcÐQÐQˆØ�|Š|˜HÑ%Ô%Ð%r   c                 ó‚   •— t          t          | ¦  «                             ||¬¦  «        }|                      |¦  «        S )N)r!   Ú	preceding)r   r   Úitersiblingsr   )r   r!   r,   r   r   s       €r   r-   zRestrictedElement.itersiblings?   s9   ø€ ÝÕ*¨DÑ1Ô1×>Ò>À3ÐR[Ð>Ñ\Ô\ˆØ�|Š|˜HÑ%Ô%Ð%r   c                 ó–   •— t          t          | ¦  «                             ¦   «         }t          |                      |¦  «        ¦  «        S r   )r   r   r   Úlistr   r   s     €r   ÚgetchildrenzRestrictedElement.getchildrenC   s9   ø€ ÝÕ*¨DÑ1Ô1×:Ò:Ñ<Ô<ˆÝ�D—L’L Ñ*Ô*Ñ+Ô+Ð+r   c                 ó~   •— t          t          | ¦  «                             |¦  «        }|                      |¦  «        S r   )r   r   Úgetiteratorr   )r   r!   r   r   s      €r   r2   zRestrictedElement.getiteratorG   s3   ø€ ÝÕ*¨DÑ1Ô1×=Ò=¸cÑBÔBˆØ�|Š|˜HÑ%Ô%Ð%r   )NFr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__Ú_etreeÚ_Entityr   r   r   r#   r&   r*   r-   r0   r2   Ú__classcell__)r   s   @r   r   r   !   s  ø€ € € € € ØOÐOà€Ià”€Iðð ð ð&ð &ð &ð &ð &ð&ð &ð &ð &ð &ð &ð&ð &ð &ð &ð &ð &ð&ð &ð &ð &ð &ð &ð&ð &ð &ð &ð &ð &ð,ð ,ð ,ð ,ð ,ð&ð &ð &ð &ð &ð &ð &ð &ð &ð &r   r   c                   ó0   — e Zd ZdZddiZeZd„ Zd„ Zd„ Z	dS )ÚGlobalParserTLSz0Thread local context for custom parser instancesÚresolve_entitiesFc                 ó¢   — t          j        di | j        ¤Ž}| j        }| j        �*t          j        |¬¦  «        }|                     |¦  «         |S )N)Úelementr   )r8   Ú	XMLParserÚparser_configÚelement_classÚElementDefaultClassLookupÚset_element_class_lookup)r   ÚparserrB   Úlookups       r   ÚcreateDefaultParserz#GlobalParserTLS.createDefaultParserW   sX   € ÝÔ!Ð7Ð7 DÔ$6Ð7Ð7ˆØÔ*ˆØÔÐ)ÝÔ5¸mÐLÑLÔLˆFØ×+Ò+¨FÑ3Ô3Ð3Øˆr   c                 ó   — || _         d S r   )Ú_default_parser©r   rE   s     r   ÚsetDefaultParserz GlobalParserTLS.setDefaultParser_   s   € Ø%ˆÔÐÐr   c                 ó~   — t          | dd ¦  «        }|€)|                      ¦   «         }|                      |¦  «         |S )NrI   )ÚgetattrrG   rK   rJ   s     r   ÚgetDefaultParserz GlobalParserTLS.getDefaultParserb   sC   € Ý˜Ð0°$Ñ7Ô7ˆØˆ>Ø×-Ò-Ñ/Ô/ˆFØ×!Ò! &Ñ)Ô)Ð)Øˆr   N)
r3   r4   r5   r6   rA   r   rB   rG   rK   rN   r   r   r   r<   r<   L   s\   € € € € € Ø:Ð:ð 	˜Eð€Mð &€Mðð ð ð&ð &ð &ðð ð ð ð r   r<   FTc           
      ó.  — | j         }|j        r:|r t          |j        |j        |j        ¦  «        ‚|rt
          st          d¦  «        ‚|rH|j        |j        fD ];}|€Œ| 	                    ¦   «         D ]}t          |j        |j        dddd¦  «        ‚Œ:dS dS )zµCheck docinfo of an element tree for DTD and entity declarations

    The check for entity declarations needs lxml 3 or newer. lxml 2.x does
    not support dtd.iterentities().
    z3Unable to check for entity declarations in lxml 2.xN)ÚdocinfoÚdoctyper   Ú
system_urlÚ	public_idÚLXML3r	   ÚinternalDTDÚexternalDTDÚiterentitiesr   ÚnameÚcontent)ÚelementtreeÚ
forbid_dtdÚforbid_entitiesrP   ÚdtdÚentitys         r   Úcheck_docinfor_   n   sà   € ð Ô!€GØ„ð ^Øð 	WÝ˜wœ°Ô0BÀGÔDUÑVÔVÐVØð 	^¥5ð 	^å#Ð$\Ñ]Ô]Ð]àð ]ØÔ&¨Ô(;Ð;ð 	]ð 	]ˆCØˆ{ØØ×*Ò*Ñ,Ô,ð ]ð ]�Ý'¨¬°V´^ÀTÈ4ÐQUÐW[Ñ\Ô\Ð\ð]ð	]ð ]ð	]ð 	]r   c                 óv   — |€t          ¦   «         }t          j        | ||¬¦  «        }t          |||¦  «         |S ©N)Úbase_url)rN   r8   Úparser_   )ÚsourcerE   rb   r[   r\   rZ   s         r   rc   rc   „   s@   € Ø€~Ý!Ñ#Ô#ˆÝ”,˜v v¸ÐAÑAÔA€KÝ�+˜z¨?Ñ;Ô;Ð;ØÐr   c                 óž   — |€t          ¦   «         }t          j        | ||¬¦  «        }|                     ¦   «         }t	          |||¦  «         |S ra   )rN   r8   Ú
fromstringÚgetroottreer_   )ÚtextrE   rb   r[   r\   ÚrootelementrZ   s          r   rf   rf   Œ   sR   € Ø€~Ý!Ñ#Ô#ˆÝÔ# D¨&¸8ÐDÑDÔD€KØ×)Ò)Ñ+Ô+€KÝ�+˜z¨?Ñ;Ô;Ð;ØÐr   c                  ó    — t          d¦  «        ‚)Nz*defused lxml.etree.iterparse not available)r	   )ÚargsÚkwargss     r   Ú	iterparserm   ˜   s   € Ý
ÐHÑ
IÔ
IÐIr   )FT)NNFT)r6   Ú
__future__r   r   Ú	threadingÚwarningsÚlxmlr   r8   Úcommonr   r   r	   ÚLXML_VERSIONrT   Ú
__origin__ÚtostringÚwarnÚDeprecationWarningÚElementBaser   Úlocalr<   Ú_parser_tlsrN   r_   rc   rf   ÚXMLrm   r   r   r   ú<module>r|      s‰  ððð ð 7Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6à Ð Ð Ð Ø €€€à  Ð  Ð  Ð  Ð  Ð  à FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FàÔ˜AÔ !Ò#€à€
àŒ?€ð €„ØUØØðñ ô ð ð(&ð (&ð (&ð (&ð (&˜Ô*ñ (&ô (&ð (&ðVð ð ð ð �i”oñ ô ð ð< ˆoÑÔ€ØÔ/Ð ð]ð ]ð ]ð ]ð,ð ð ð ðð ð ð ð €ðJð Jð Jð Jð Jr   