+
    Z‹i´Y  ã                  ó<  € ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIHtHtH	t	H
t
HtHtHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^R	IHt ^R
IHt ^RIHtHt ^RIHt ]'       d   ^ RI H!t! . ROt"]PF                  ! R4      t$ ! R R4      t% R R lt&R R lt'R# )é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚBinaryIOÚCallableÚClassVarÚMappingÚSequence)Úutil)Úbuild_preprocessors)Úbuild_block_parser)Úbuild_treeprocessors)Úbuild_inlinepatterns)Úbuild_postprocessors)Ú	Extension)Úto_html_stringÚto_xhtml_string)ÚBLOCK_LEVEL_ELEMENTS)ÚElementÚMarkdownÚMARKDOWNc                  ó®   € ] tR t^.t$ RtRtR]R]/tR]	R&    R t
R R	 ltR
 R ltR R ltR R ltR R ltR R ltR R ltR R ltRR R lltRtR# )r   a«  
A parser which converts Markdown to HTML.

Attributes:
    Markdown.tab_length (int): The number of spaces which correspond to a single tab. Default: `4`.
    Markdown.ESCAPED_CHARS (list[str]): List of characters which get the backslash escape treatment.
    Markdown.block_level_elements (list[str]): List of HTML tags which get treated as block-level elements.
        See [`markdown.util.BLOCK_LEVEL_ELEMENTS`][] for the full list of elements.
    Markdown.registeredExtensions (list[Extension]): List of extensions which have called
        [`registerExtension`][markdown.Markdown.registerExtension] during setup.
    Markdown.doc_tag (str): Element used to wrap document. Default: `div`.
    Markdown.stripTopLevelTags (bool): Indicates whether the `doc_tag` should be removed. Default: 'True'.
    Markdown.references (dict[str, tuple[str, str]]): A mapping of link references found in a parsed document
         where the key is the reference name and the value is a tuple of the URL and title.
    Markdown.htmlStash (util.HtmlStash): The instance of the `HtmlStash` used by an instance of this class.
    Markdown.output_formats (dict[str, Callable[xml.etree.ElementTree.Element]]): A mapping of known output
         formats by name and their respective serializers. Each serializer must be a callable which accepts an
        [`Element`][xml.etree.ElementTree.Element] and returns a `str`.
    Markdown.output_format (str): The output format set by
        [`set_output_format`][markdown.Markdown.set_output_format].
    Markdown.serializer (Callable[xml.etree.ElementTree.Element]): The serializer set by
        [`set_output_format`][markdown.Markdown.set_output_format].
    Markdown.preprocessors (util.Registry): A collection of [`preprocessors`][markdown.preprocessors].
    Markdown.parser (blockparser.BlockParser): A collection of [`blockprocessors`][markdown.blockprocessors].
    Markdown.inlinePatterns (util.Registry): A collection of [`inlinepatterns`][markdown.inlinepatterns].
    Markdown.treeprocessors (util.Registry): A collection of [`treeprocessors`][markdown.treeprocessors].
    Markdown.postprocessors (util.Registry): A collection of [`postprocessors`][markdown.postprocessors].

ÚdivÚhtmlÚxhtmlz-ClassVar[dict[str, Callable[[Element], str]]]Úoutput_formatsc                óÐ  € VP                  R^4      V n        . R
OV n         \        P                  ! 4       V n        . V n        RV n        RV n        V P                  4        / V n
        \        P                  ! 4       V n        V P                  VP                  R. 4      VP                  R/ 4      R7       V P                  VP                  RR4      4       V P!                  4        R	# )a(  
Creates a new Markdown instance.

Keyword Arguments:
    extensions (list[Extension | str]): A list of extensions.

        If an item is an instance of a subclass of [`markdown.extensions.Extension`][],
        the instance will be used as-is. If an item is of type `str`, it is passed
        to [`build_extension`][markdown.Markdown.build_extension] with its corresponding
        `extension_configs` and the returned instance  of [`markdown.extensions.Extension`][]
        is used.
    extension_configs (dict[str, dict[str, Any]]): Configuration settings for extensions.
    output_format (str): Format of output. Supported formats are:

        * `xhtml`: Outputs XHTML style tags. Default.
        * `html`: Outputs HTML style tags.
    tab_length (int): Length of tabs in the source. Default: `4`

Ú
tab_lengthÚ TÚ
extensionsÚextension_configs)r    ÚconfigsÚoutput_formatr   N)Ú\Ú`Ú*Ú_Ú{Ú}Ú[Ú]Ú(Ú)Ú>Ú#Ú+Ú-Ú.Ú!)Úgetr   ÚESCAPED_CHARSr   ÚcopyÚblock_level_elementsÚregisteredExtensionsÚdocTypeÚstripTopLevelTagsÚbuild_parserÚ
referencesr   Ú	HtmlStashÚ	htmlStashÚregisterExtensionsÚset_output_formatÚreset)ÚselfÚkwargss   &,Ú//usr/lib/python3/dist-packages/markdown/core.pyÚ__init__ÚMarkdown.__init__X   sÁ   € ð*  &Ÿz™z¨,¸Ó:ˆŒò)
ˆÔð 	Mä/C×/HÒ/HÓ/JˆÔ!à57ˆÔ!ØˆŒØ'+ˆÔà×ÑÔà68ˆŒÜ)-¯ªÓ)9ˆŒØ×Ñ¨6¯:©:°lÀBÓ+GØ(.¯
©
Ð3FÈÓ(Kð 	 ô 	Mà×Ñ˜vŸz™z¨/¸7ÓCÔDØ�
‰
Žó    c               ó   € V ^8„  d   QhRR/# ©é   Úreturnr   © )Úformats   "rD   Ú__annotate__ÚMarkdown.__annotate__ƒ   s   € ÷ ñ ˜hñ rG   c                ó¦   € \        V 4      V n        \        V 4      V n        \	        V 4      V n        \        V 4      V n        \        V 4      V n	        V # )a¸  
Build the parser from the various parts.

Assigns a value to each of the following attributes on the class instance:

* **`Markdown.preprocessors`** ([`Registry`][markdown.util.Registry]) -- A collection of
  [`preprocessors`][markdown.preprocessors].
* **`Markdown.parser`** ([`BlockParser`][markdown.blockparser.BlockParser]) -- A collection of
  [`blockprocessors`][markdown.blockprocessors].
* **`Markdown.inlinePatterns`** ([`Registry`][markdown.util.Registry]) -- A collection of
  [`inlinepatterns`][markdown.inlinepatterns].
* **`Markdown.treeprocessors`** ([`Registry`][markdown.util.Registry]) -- A collection of
  [`treeprocessors`][markdown.treeprocessors].
* **`Markdown.postprocessors`** ([`Registry`][markdown.util.Registry]) -- A collection of
  [`postprocessors`][markdown.postprocessors].

This method could be redefined in a subclass to build a custom parser which is made up of a different
combination of processors and patterns.

)
r   Úpreprocessorsr   Úparserr   ÚinlinePatternsr   Útreeprocessorsr   Úpostprocessors)rB   s   &rD   r;   ÚMarkdown.build_parserƒ   sI   € ô* 1°Ó6ˆÔÜ(¨Ó.ˆŒÜ2°4Ó8ˆÔÜ2°4Ó8ˆÔÜ2°4Ó8ˆÔØˆrG   c               ó$   € V ^8„  d   QhRRRRRR/# )rJ   r    zSequence[Extension | str]r"   zMapping[str, dict[str, Any]]rK   r   rL   )rM   s   "rD   rN   rO   Ÿ   s(   € ÷ "ñ "à-ð"ð .ð"ð 
ñ	"rG   c           	     ó0  € V EF  p\        V\        4      '       d"   V P                  W2P                  V/ 4      4      p\        V\        4      '       dZ   VP                  V 4       \        P                  RVP                  P                  : RVP                  P                  : R24       Kª  Vf   K°  \        RP                  VP                  P                  VP                  P                  \        P                  \        P                  4      4      h	  V # )aB  
Load a list of extensions into an instance of the `Markdown` class.

Arguments:
    extensions (list[Extension | str]): A list of extensions.

        If an item is an instance of a subclass of [`markdown.extensions.Extension`][],
        the instance will be used as-is. If an item is of type `str`, it is passed
        to [`build_extension`][markdown.Markdown.build_extension] with its corresponding `configs` and the
        returned instance  of [`markdown.extensions.Extension`][] is used.
    configs (dict[str, dict[str, Any]]): Configuration settings for extensions.

zSuccessfully loaded extension "r2   z".z*Extension "{}.{}" must be of type: "{}.{}")Ú
isinstanceÚstrÚbuild_extensionr4   r   ÚextendMarkdownÚloggerÚdebugÚ	__class__Ú
__module__Ú__name__Ú	TypeErrorrM   )rB   r    r"   Úexts   &&& rD   r?   ÚMarkdown.registerExtensionsŸ   sÏ   € ô$ ˆCÜ˜#œs×#Ò#Ø×*Ñ*¨3·±¸CÀÓ0DÓE�Ü˜#œy×)Ò)Ø×"Ñ" 4Ô(Ü—’à—}‘}×/Ô/°·±×1GÔ1GðIöð ”ÜØ@×GÑGØŸ™×0Ñ0°#·-±-×2HÑ2HÜ!×,Ñ,¬i×.@Ñ.@óóð ñ ð  ˆrG   c               ó$   € V ^8„  d   QhRRRRRR/# )rJ   Úext_namerZ   r"   zMapping[str, Any]rK   r   rL   )rM   s   "rD   rN   rO   Ã   s"   € ÷ 3ñ 3¨ð 3Ð6Gð 3ÈIñ 3rG   c                óô  € \        V4      p\        P                  ! 4        Uu. uF  q3P                  V8X  g   K  VNK  	  ppV'       d    V^ ,          P	                  4       pV! R	/ VB # RV9   d   VP                  R^4      MVR3w  r \        P                  ! V4      p\        P                  RV,          4       T'       d   \        Yv4      ! R	/ TB #  TP                  ! R	/ TB # u upi   \         d0   pRT,          p	T	3TP                  R,          ,           Tn        h Rp?ii ; i  \         dD   pTP                  ^ ,          p	RT: RT	: 2p	T	3TP                  R,          ,           Tn        h Rp?ii ; i)
ac  
Build extension from a string name, then return an instance using the given `configs`.

Arguments:
    ext_name: Name of extension as a string.
    configs: Configuration settings for extension.

Returns:
    An instance of the extension with the given configuration settings.

First attempt to load an entry point. The string name must be registered as an entry point in the
`markdown.extensions` group which points to a subclass of the [`markdown.extensions.Extension`][] class.
If multiple distributions have registered the same name, the first one found is returned.

If no entry point is found, assume dot notation (`path.to.module:ClassName`). Load the specified class and
return an instance. If no class is specified, import the module and call a `makeExtension` function and return
the [`markdown.extensions.Extension`][] instance returned by that function.
Ú:r   z,Successfully imported extension module "%s".zFailed loading extension "%s".ºé   NNNzFailed to initiate extension 'z': rL   )Údictr   Úget_installed_extensionsÚnameÚloadÚsplitÚ	importlibÚimport_moduler]   r^   ÚImportErrorÚargsÚgetattrÚmakeExtensionÚAttributeError)
rB   rf   r"   ÚepÚentry_pointsrc   Ú
class_nameÚmoduleÚeÚmessages
   &&&       rD   r[   ÚMarkdown.build_extensionÃ   sS  € ô& �w“-ˆä%)×%BÒ%BÔ%DÓ\Ñ%D˜rÏÉÐS[ÑH[Ÿ˜Ñ%DˆÐ\ßØ˜q•/×&Ñ&Ó(ˆCÙ‘>˜‘>Ð!ð :=À¼˜xŸ~™~¨c°1Ô5ÈxÐY[ÈnÑˆð	Ü×,Ò,¨XÓ6ˆFÜ�L‰LØ>ÀÕIô÷ ä˜6Ô.Ñ9°Ñ9Ð9ðØ×+Ò+Ñ6¨gÑ6Ð6ùò1 ]øô ô 	Ø6¸ÕAˆGØ�Z !§&¡&¨¥*Õ,ˆAŒFØûð	ûô "ô ØŸ&™& �)‘ã(0²'ð;�à!˜ a§f¡f¨R¥jÕ0�”Øûðús:   £C'ºC'Â	2C, ÃD) Ã,D&Ã7*D!Ä!D&Ä)E7Ä4>E2Å2E7c               ó    € V ^8„  d   QhRRRR/# )rJ   Ú	extensionr   rK   r   rL   )rM   s   "rD   rN   rO   ø   s   € ÷ ñ ¨9ð ¸ñ rG   c                ó<   € V P                   P                  V4       V # )a–  
Register an extension as having a resettable state.

Arguments:
    extension: An instance of the extension to register.

This should get called once by an extension during setup. A "registered" extension's
`reset` method is called by [`Markdown.reset()`][markdown.Markdown.reset]. Not all extensions have or need a
resettable state, and so it should not be assumed that all extensions are "registered."

)r8   Úappend©rB   r   s   &&rD   ÚregisterExtensionÚMarkdown.registerExtensionø   s   € ð 	×!Ñ!×(Ñ(¨Ô3ØˆrG   c               ó   € V ^8„  d   QhRR/# rI   rL   )rM   s   "rD   rN   rO     s   € ÷ ñ �xñ rG   c                óÜ   € V P                   P                  4        V P                  P                  4        V P                   F'  p\        VR4      '       g   K  VP                  4        K)  	  V # )zÖ
Resets all state variables to prepare the parser instance for new input.

Called once upon creation of a class instance. Should be called manually between calls
to [`Markdown.convert`][markdown.Markdown.convert].
rA   )r>   rA   r<   Úclearr8   Úhasattrr‚   s   & rD   rA   ÚMarkdown.reset  sR   € ð 	�‰×ÑÔØ�‰×ÑÔà×2Ô2ˆIÜ�y '×*Ô*Ø—‘Ö!ñ 3ð ˆrG   c               ó    € V ^8„  d   QhRRRR/# )rJ   rM   rZ   rK   r   rL   )rM   s   "rD   rN   rO     s   € ÷ ñ ¨ð °ñ rG   c                óÆ  € VP                  4       P                  R4      V n         V P                  V P                  ,          V n        V #   \
         dŒ   p\        T P                  P                  4       4      pTP                  4        RT P                  : RRRP                  T4      ,           R,           : R2pT3TP                  R,          ,           Tn
        h Rp?ii ; i)	z|
Set the output format for the class instance.

Arguments:
    format: Must be a known value in `Markdown.output_formats`.

Ú145zInvalid Output Format: "z". Use one of Ú"z", "r2   ri   N)ÚlowerÚrstripr#   r   Ú
serializerÚKeyErrorÚlistÚkeysÚsortÚjoinrs   )rB   rM   r{   Úvalid_formatsr|   s   &&   rD   r@   ÚMarkdown.set_output_format  s¼   € ð $Ÿ\™\›^×2Ñ2°5Ó9ˆÔð		Ø"×1Ñ1°$×2DÑ2DÕEˆDŒOð ˆøô ô 	Ü  ×!4Ñ!4×!9Ñ!9Ó!;Ó<ˆMØ×ÑÕ à×%Ô%Ø˜Ÿ™ ]Ó3Õ3°c×9Ð9ð;ˆGð �Z !§&¡&¨¥*Õ,ˆAŒFØûð	ús   ¦"A
 Á
C ÁBCÃC c               ó    € V ^8„  d   QhRRRR/# )rJ   Útagr   rK   ÚboolrL   )rM   s   "rD   rN   rO   .  s   € ÷ ñ  #ð ¨$ñ rG   c                óŠ   € \        V\        4      '       d-   VP                  4       P                  R4      V P                  9   # R# )z¶
Check if the given `tag` is a block level HTML tag.

Returns `True` for any string listed in `Markdown.block_level_elements`. A `tag` which is
not a string always returns `False`.

Ú/F)rY   rZ   rŽ   r�   r7   )rB   r™   s   &&rD   Úis_block_levelÚMarkdown.is_block_level.  s6   € ô �cœ3×ÒØ—9‘9“;×%Ñ% cÓ*¨d×.GÑ.GÑGÐGárG   c               ó    € V ^8„  d   QhRRRR/# )rJ   ÚsourcerZ   rK   rL   )rM   s   "rD   rN   rO   ;  s   € ÷ Mñ M˜cð M cñ MrG   c                ót  € VP                  4       '       g   R#  \        V4      pTP	                  R4      T n        T P                   F#  pTP                  T P
                  4      T n        K%  	  T P                  P                  T P
                  4      P                  4       pT P                   F  pTP                  T4      pTf   K  TpK  	  T P                  T4      pT P                  '       dy    TP                  RT P                  ,          4      \!        T P                  4      ,           ^,           pTP#                  RT P                  ,          4      p	YxT	 P                  4       pT P(                   F  p
T
P                  T4      pK  	  TP                  4       #   \         d    pT;P                  R,          un        h Rp?ii ; i  \$         dd   pTP                  4       P'                  RT P                  ,          4      '       d   Rp Rp?L©\%        RTP                  4       ,          4      ThRp?ii ; i)	az  
Convert a Markdown string to a string in the specified output format.

Arguments:
    source: Markdown formatted text as Unicode or ASCII string.

Returns:
    A string in the specified output format.

Markdown parsing takes place in five steps:

1. A bunch of [`preprocessors`][markdown.preprocessors] munge the input text.
2. A [`BlockParser`][markdown.blockparser.BlockParser] parses the high-level structural elements of the
   pre-processed text into an [`ElementTree`][xml.etree.ElementTree.ElementTree] object.
3. A bunch of [`treeprocessors`][markdown.treeprocessors] are run against the
   [`ElementTree`][xml.etree.ElementTree.ElementTree] object. One such `treeprocessor`
   ([`markdown.treeprocessors.InlineProcessor`][]) runs [`inlinepatterns`][markdown.inlinepatterns]
   against the [`ElementTree`][xml.etree.ElementTree.ElementTree] object, parsing inline markup.
4. Some [`postprocessors`][markdown.postprocessors] are run against the text after the
   [`ElementTree`][xml.etree.ElementTree.ElementTree] object has been serialized into text.
5. The output is returned as a string.

!!! warning
    The Python-Markdown library does ***not*** sanitize its HTML output.
    If you are processing Markdown input from an untrusted source, it is your
    responsibility to ensure that it is properly sanitized. For more
    information see [Sanitizing HTML Output](../../sanitization.md).

r   z/. -- Note: Markdown only accepts Unicode input!NÚ
z<%s>z</%s>z<%s />z4Markdown failed to strip top-level tags. Document=%r)ÚstriprZ   ÚUnicodeDecodeErrorÚreasonro   ÚlinesrQ   ÚrunrR   ÚparseDocumentÚgetrootrT   r�   r:   ÚindexÚdoc_tagÚlenÚrindexÚ
ValueErrorÚendswithrU   )rB   r    r{   ÚprepÚrootÚtreeprocessorÚnewRootÚoutputÚstartÚendÚpps   &&         rD   ÚconvertÚMarkdown.convert;  sÙ  € ð@ �|‰|�~Š~Ùð	Ü˜“[ˆFð —\‘\ $Ó'ˆŒ
Ø×&Ô&ˆDØŸ™ $§*¡*Ó-ˆDŽJñ 'ð �{‰{×(Ñ(¨¯©Ó4×<Ñ<Ó>ˆð "×0Ô0ˆMØ#×'Ñ'¨Ó-ˆGØÔ"Ø’ñ 1ð —‘ Ó&ˆØ×!×!Ð!ðRØŸ™Ø˜TŸ\™\Õ)ó+Ü-0°·±Ó->õ?ØABõC�à—m‘m G¨d¯l©lÕ$:Ó;�Ø cÐ*×0Ñ0Ó2�ð ×%Ô%ˆBØ—V‘V˜F“^ŠFñ &ð �|‰|‹~ÐøôQ "ô 	à�HŠHÐIÕI�HØûð	ûô6 ô RØ—<‘<“>×*Ñ*¨8°d·l±lÕ+B×CÒCà•Fô %ð &9Ø;A¿<¹<»>õ&Jó KØPQðRûðRús6   šF Ã1A7G	 ÆGÆ'GÇGÇ	H7Ç8H2È!H2È2H7Nc               ó(   € V ^8„  d   QhRRRRRRRR/# )rJ   Úinputzstr | BinaryIO | Noner´   Úencodingz
str | NonerK   r   rL   )rM   s   "rD   rN   rO   Š  s8   € ÷ Gñ Gà$ðGð &ðGð ð	Gð
 
ñGrG   c                ó  € T;'       g    RpV'       dc   \        V\        4      '       d   \        VRVR7      pM\        P                  ! V4      ! V4      pVP                  4       pVP                  4        M\        P                  P                  4       pVP                  R4      pV P                  V4      pV'       dˆ   \        V\        4      '       d>   \        P                  ! VRVRR7      pVP                  V4       VP                  4        V # \        P                  ! V4      pV! VRR7      pVP                  V4        V # VP                  VR4      p\        P                  P                  P                  V4       V # )	aØ  
Read Markdown text from a file or stream and write HTML output to a file or stream.

Decodes the input file using the provided encoding (defaults to `utf-8`),
passes the file content to markdown, and outputs the HTML to either
the provided stream or the file with provided name, using the same
encoding as the source file. The
[`xmlcharrefreplace`](https://docs.python.org/3/library/codecs.html#error-handlers)
error handler is used when encoding the output.

**Note:** This is the only place that decoding and encoding of Unicode
takes place in Python-Markdown.  (All other code is Unicode-in /
Unicode-out.)

Arguments:
    input: File object or path. Reads from `stdin` if `None`.
    output: File object or path. Writes to `stdout` if `None`.
    encoding: Encoding of input and output files. Defaults to `utf-8`.

!!! warning
    The Python-Markdown library does ***not*** sanitize its HTML output.
    As `Markdown.convertFile` writes directly to the file system, there is no
    easy way to sanitize the output from Python code. Therefore, it is
    recommended that the `Markdown.convertFile` method not be used on input
    from an untrusted source.  For more information see [Sanitizing HTML
    Output](../../sanitization.md).

zutf-8Úr)Úmoder¼   u   ï»¿ÚwÚxmlcharrefreplace)r¼   Úerrors)rÂ   )rY   rZ   ÚopenÚcodecsÚ	getreaderÚreadÚcloseÚsysÚstdinÚlstripr¸   ÚwriteÚ	getwriterÚencodeÚstdoutÚbuffer)	rB   r»   r´   r¼   Ú
input_fileÚtextr   Úoutput_fileÚwriters	   &&&&     rD   ÚconvertFileÚMarkdown.convertFileŠ  s?  € ðF ×&Ð&˜wˆ÷ Ü˜%¤×%Ò%Ü! %¨c¸HÔE‘
ä#×-Ò-¨hÔ7¸Ó>�
Ø—?‘?Ó$ˆDØ×ÑÕä—9‘9—>‘>Ó#ˆDà�{‰{˜8Ó$ˆð �|‰|˜DÓ!ˆ÷ Ü˜&¤#×&Ò&Ü$Ÿkšk¨&°#Ø3;Ø1DôF�ð ×!Ñ! $Ô'Ø×!Ñ!Ô#ð ˆô  ×)Ò)¨(Ó3�Ù$ VÐ4GÔH�Ø×!Ñ! $Õ'ð ˆð —;‘;˜xÐ)<Ó=ˆDÜ�J‰J×Ñ×#Ñ# DÔ)àˆrG   )r5   r7   r9   r>   rS   r¦   r#   rR   rU   rQ   r<   r8   r�   r:   r   rT   )NNN)ra   r`   Ú__qualname__Ú__firstlineno__Ú__doc__r«   r   r   r   Ú__annotations__rE   r;   r?   r[   rƒ   rA   r@   r�   r¸   rÔ   Ú__static_attributes__rL   rG   rD   r   r   .   sm   ‡ ñð< €Gð 	�.Ø�/ðE€NÐAó ðò
)õVõ8"õH3õjõõ õ.õM÷^Gó GrG   c               ó$   € V ^8„  d   QhRRRRRR/# )rJ   rÑ   rZ   rC   r   rK   rL   )rM   s   "rD   rN   rN   Ý  s!   € ÷ ñ �3ð  #ð ¨#ñ rG   c                ó:   € \        R/ VB pVP                  V 4      # )a7  
Convert a markdown string to HTML and return HTML as a Unicode string.

This is a shortcut function for [`Markdown`][markdown.Markdown] class to cover the most
basic use case.  It initializes an instance of [`Markdown`][markdown.Markdown], loads the
necessary extensions and runs the parser on the given text.

Arguments:
    text: Markdown formatted text as Unicode or ASCII string.

Keyword arguments:
    **kwargs: Any arguments accepted by the Markdown class.

Returns:
    A string in the specified output format.

!!! warning
    The Python-Markdown library does ***not*** sanitize its HTML output.
    If you are processing Markdown input from an untrusted source, it is your
    responsibility to ensure that it is properly sanitized. For more
    information see [Sanitizing HTML Output](../../sanitization.md).

rL   )r   r¸   )rÑ   rC   Úmds   &, rD   ÚmarkdownrÞ   Ý  s    € ô0 
Ñ	�FÑ	€BØ�:‰:�dÓÐrG   c               ó   € V ^8„  d   QhRR/# )rJ   rC   r   rL   )rM   s   "rD   rN   rN   ù  s   € ÷ 1ñ 1˜sñ 1rG   c                 ó¢   € \        R/ V B pVP                  V P                  RR4      V P                  RR4      V P                  RR4      4       R# )aÚ  
Read Markdown text from a file or stream and write HTML output to a file or stream.

This is a shortcut function which initializes an instance of [`Markdown`][markdown.Markdown],
and calls the [`convertFile`][markdown.Markdown.convertFile] method rather than
[`convert`][markdown.Markdown.convert].

Keyword arguments:
    input (str | BinaryIO): A file name or readable object.
    output (str | BinaryIO): A file name or writable object.
    encoding (str): Encoding of input and output.
    **kwargs: Any arguments accepted by the `Markdown` class.

!!! warning
    The Python-Markdown library does ***not*** sanitize its HTML output.
    As `markdown.markdownFromFile` writes directly to the file system, there is no
    easy way to sanitize the output from Python code. Therefore, it is
    recommended that the `markdown.markdownFromFile` function not be used on input
    from an untrusted source.  For more information see [Sanitizing HTML
    Output](../../sanitization.md).

r»   Nr´   r¼   rL   )r   rÔ   r4   )rC   rÝ   s   , rD   ÚmarkdownFromFilerá   ù  sF   € ô. 
Ñ	�FÑ	€BØ‡N�N�6—:‘:˜g tÓ,Ø—:‘:˜h¨Ó-Ø—:‘:˜j¨$Ó/ö1rG   )r   rÞ   rá   )(Ú
__future__r   rÄ   rÈ   Úloggingrp   Útypingr   r   r   r   r   r	   r
   r   r   rQ   r   Úblockprocessorsr   rT   r   Úinlinepatternsr   rU   r   r    r   Úserializersr   r   r   Úxml.etree.ElementTreer   Ú__all__Ú	getLoggerr]   r   rÞ   rá   rL   rG   rD   Ú<module>rë      ss   ðõ( #ã Û 
Û Û ß V× VÑ VÝ Ý .Ý /Ý 0Ý 0Ý 0Ý !ß 8Ý &çÝ-â
6€ð 
×	Ò	˜:Ó	&€÷cñ cðLõ÷81rG   