
    hQ                         S r / SQrSSKrSSKJr  SSKJr  SSKrSSKrSSK	r	SSK
r
SSK
Jr  SSKrSSKrSSKrSSKJr  SSKrSSKrSSKrSSKrSSKrSSKrSSKJr  S	S
KJrJrJrJrJr  SSK J!r!  SSK"J#r#  \RH                  " \%5      r&Sr'\" SS5      r(S r)S r*\RV                   " S S5      5       r,S r-\-" 5         \R\                  S 5       r/S r0SZS jr1\" SS5      r2 " S S\35      r4\R\                  S 5       r5S r6S r7S r8\1" S 5      S! 5       r9\1" S"5      S# 5       r:\1" S$5      S% 5       r;S& r<0 r=0 r>0 r?\R                  " S'R                  \B" S(R                  \D" \R                  \FR                  S)95      5      5       " S* S+\\H5      5       rIS[S- jrJ\R\                  S. 5       rK\R                  S/ 5       rMS0 S,4S1 jrNS\S3 jrO\N" \R                  " S45      S5 S2S69rQ\QR                  \R                  5        \QR                  5         \I" 5       rU\UR                  \Q5        \UR                  \N" \<" 5       5      5        \UR                  5       rW\R                  " 5          \R                  R                  5        V Vs0 s H  u  pX S7:X  a  \R                  O\QU    U/_M      snn =r[\l[        SSS5        \US8   (       a  \R                  " \R                  S95        S: r^S; r_S< r`S2S=.S> jra\R                  S]S? j5       rbS2S@.SA jrc\R                  R                  SB5      (       a  \R                  R                  SB5      \US7'   S2SC.SD jrfSE rgSF rhSG riSH rjSI rkSJ rlSK rmSZSSSL.SM jjrn\&R                  SN\h" 5       5        \&R                  SO\R                  5        \R                  " SPSQSR9SS 5       rr\R                  " SPSTSR9SU 5       rsSSVKtJurv  SSWKtJwrx  SSXKtJyrz  SSYK{J|r}  gs  snn f ! , (       d  f       GNE= f)^u  
An object-oriented plotting library.

A procedural interface is provided by the companion pyplot module,
which may be imported directly, e.g.::

    import matplotlib.pyplot as plt

or using ipython::

    ipython

at your terminal, followed by::

    In [1]: %matplotlib
    In [2]: import matplotlib.pyplot as plt

at the ipython shell prompt.

For the most part, direct use of the explicit object-oriented library is
encouraged when programming; the implicit pyplot interface is primarily for
working interactively. The exceptions to this suggestion are the pyplot
functions `.pyplot.figure`, `.pyplot.subplot`, `.pyplot.subplots`, and
`.pyplot.savefig`, which can greatly simplify scripting.  See
:ref:`api_interfaces` for an explanation of the tradeoffs between the implicit
and explicit interfaces.

Modules include:

:mod:`matplotlib.axes`
    The `~.axes.Axes` class.  Most pyplot functions are wrappers for
    `~.axes.Axes` methods.  The axes module is the highest level of OO
    access to the library.

:mod:`matplotlib.figure`
    The `.Figure` class.

:mod:`matplotlib.artist`
    The `.Artist` base class for all classes that draw things.

:mod:`matplotlib.lines`
    The `.Line2D` class for drawing lines and markers.

:mod:`matplotlib.patches`
    Classes for drawing polygons.

:mod:`matplotlib.text`
    The `.Text` and `.Annotation` classes.

:mod:`matplotlib.image`
    The `.AxesImage` and `.FigureImage` classes.

:mod:`matplotlib.collections`
    Classes for efficient drawing of groups of lines or polygons.

:mod:`matplotlib.colors`
    Color specifications and making colormaps.

:mod:`matplotlib.cm`
    Colormaps, and the `.ScalarMappable` mixin class for providing color
    mapping functionality to other classes.

:mod:`matplotlib.ticker`
    Calculation of tick mark locations and formatting of tick labels.

:mod:`matplotlib.backends`
    A subpackage with modules for various GUI libraries and output formats.

The base matplotlib namespace includes:

`~matplotlib.rcParams`
    Default configuration settings; their defaults may be overridden using
    a :file:`matplotlibrc` file.

`~matplotlib.use`
    Setting the Matplotlib backend.  This should be called before any
    figure is created, because it is not possible to switch between
    different GUI backends after that.

The following environment variables can be used to customize the behavior:

:envvar:`MPLBACKEND`
    This optional variable can be set to choose the Matplotlib backend. See
    :ref:`what-is-a-backend`.

:envvar:`MPLCONFIGDIR`
    This is the directory used to store user customizations to
    Matplotlib, as well as some caches to improve performance. If
    :envvar:`MPLCONFIGDIR` is not defined, :file:`{HOME}/.config/matplotlib`
    and :file:`{HOME}/.cache/matplotlib` are used on Linux, and
    :file:`{HOME}/.matplotlib` on other platforms, if they are
    writable. Otherwise, the Python standard library's `tempfile.gettempdir`
    is used to find a base directory in which the :file:`matplotlib`
    subdirectory is created.

Matplotlib was initially written by John D. Hunter (1968-2012) and is now
developed and maintained by a host of others.

Occasionally the internal documentation (python docstrings) will refer
to MATLAB®, a registered trademark of The MathWorks, Inc.

)
__bibtex____version____version_info__set_loglevelExecutableNotFoundErrorget_configdirget_cachedirget_data_pathmatplotlib_fnameMatplotlibDeprecationWarningRcParams	rc_paramsrc_params_from_filercParamsDefaultrcParamsrcParamsOrigdefaultParamsrc
rcdefaultsrc_file_defaultsrc_file
rc_contextuseget_backendinteractiveis_interactive	colormapsmultivar_colormapsbivar_colormapscolor_sequences    N)
namedtuple)MutableMapping)	Parameter)Path)parse   )_api_versioncbook
_docstringrcsetup)r   )cyclera  @Article{Hunter:2007,
  Author    = {Hunter, J. D.},
  Title     = {Matplotlib: A 2D graphics environment},
  Journal   = {Computing in Science \& Engineering},
  Volume    = {9},
  Number    = {3},
  Pages     = {90--95},
  abstract  = {Matplotlib is a 2D graphics package used for Python
  for application development, interactive scripting, and
  publication-quality image generation across user
  interfaces and operating systems.},
  publisher = {IEEE COMPUTER SOC},
  year      = 2007
}_VersionInfoz)major, minor, micro, releaselevel, serialc                    [        U 5      nUR                  cG  UR                  c:  UR                  c-  [	        UR
                  UR                  UR                  SS5      $ UR                  b7  [	        UR
                  UR                  UR                  SUR                  5      $ UR                  b\  SSSS.R                  UR                  S   S5      n[	        UR
                  UR                  UR                  X!R                  S   5      $ [	        UR
                  UR                  UR                  S-   SUR                  5      $ )z
Parse a version string to a namedtuple analogous to sys.version_info.

See:
https://packaging.pypa.io/en/latest/version.html#packaging.version.parse
https://docs.python.org/3/library/sys.html#sys.version_info
finalr    alphabeta	candidate)abr   r&   )	parse_versionprepostdevr-   majorminormicroget)version_strvreleaselevels      E/var/www/html/env/lib/python3.13/site-packages/matplotlib/__init__.py_parse_to_version_inforA      s     	k"Auu}AEEMAGGQWWaggwBB	
	AGGQWWaggwFF	
	  #s1558W5 	 AGGQWWagg|UU1XNN AGGQWWaggk7AFFKK    c                     [        [        5      R                  5       R                  S   n U S-  R	                  5       (       aV  U S-  R	                  5       (       a>  U S-  R	                  5       (       d&   SSKnUR                  U SSS	[        R                  S
9$ [        R                  $ ! [         a     [        R                  $ f = f)z/Return the version string used for __version__.   z.matplotlib-repoz.gitz.git/shallowr    N
matplotlibzrelease-branch-semverznode-and-date)root	dist_nameversion_schemelocal_schemefallback_version)
r$   __file__resolveparentsexistssetuptools_scmget_versionr(   versionImportError)rF   rO   s     r@   _get_versionrS      s    
 >!!#++A.D	"	"**,,&&((N*2244	! "--&6,!)!1!1 .     	 	s   4B) )
CCc                   8    \ rS rSr\" S 5      r\" S 5      rSrg)__getattr__   c                     [        5       $ N)rS   selfs    r@   <lambda>__getattr__.<lambda>   s    rB   c                 ,    [        U R                  5      $ rX   )rA   r   rY   s    r@   r[   r\      s    +D,<,<=rB    N)__name__
__module____qualname____firstlineno__propertyr   r   __static_attributes__r^   rB   r@   rU   rU      s    67K=?rB   rU   c            	          SSK Jn   S H[  u  p[        R                  " U5      n[	        UR
                  5      [	        U5      :  d  M?  [        SU SU SUR
                   35      e   g )Nr&   ft2font))r,   z0.10)dateutilz2.7)
kiwisolverz1.3.1)numpyz1.23)	pyparsingz2.3.1zMatplotlib requires z>=z; you have ) rg   	importlibimport_moduler5   r   rR   )rg   modnameminvermodules       r@   _check_versionsrr      sr      ((1++,}V/DD 4WIRx H**0*<*<)=? @ @rB   c                      [         R                  " 5       n U R                  [         R                  " [         R                  5      5        [
        R                  U 5        U $ )z
The first time this function is called, attach a `StreamHandler` using the
same format as `logging.basicConfig` to the Matplotlib root logger.

Return this handler every time this function is called.
)loggingStreamHandlersetFormatter	FormatterBASIC_FORMAT_log
addHandler)handlers    r@   _ensure_handlerr|     sB     ##%G**7+?+?@AOOGNrB   c                     [         R                  U R                  5       5        [        5       R                  U R                  5       5        g)a  
Configure Matplotlib's logging levels.

Matplotlib uses the standard library `logging` framework under the root
logger 'matplotlib'.  This is a helper function to:

- set Matplotlib's root logger level
- set the root logger handler's level, creating the handler
  if it does not exist yet

Typically, one should call ``set_loglevel("info")`` or
``set_loglevel("debug")`` to get additional debugging information.

Users or applications that are installing their own logging handlers
may want to directly manipulate ``logging.getLogger('matplotlib')`` rather
than use this function.

Parameters
----------
level : {"notset", "debug", "info", "warning", "error", "critical"}
    The log level of the handler.

Notes
-----
The first time this function is called, an additional handler is attached
to Matplotlib's root handler; this handler is reused every time and this
function simply manipulates the logger and handler's level.

N)ry   setLevelupperr|   )levels    r@   r   r     s-    < 	MM%++- u{{}-rB   c                    ^ ^^^ Tc  [         R                  " [        T 5      $ SmSm[         R                  " T5      UU UU4S j5       nU$ )a,  
Decorator that logs a function's return value, and memoizes that value.

After ::

    @_logged_cached(fmt)
    def func(): ...

the first call to *func* will log its return value at the DEBUG level using
%-format string *fmt*, and memoize it; later calls to *func* will directly
return that value.
NFc                  V   > T(       d   T" S0 U D6mSm[         R                  TT5        T$ )NTr^   )ry   debug)kwargscalledfmtfuncrets    r@   wrapper_logged_cached.<locals>.wrapperP  s+     ..CFJJsC 
rB   )	functoolspartial_logged_cachedwraps)r   r   r   r   r   s   `` @@r@   r   r   =  sI     |  55F
C__T  NrB   	_ExecInfozexecutable raw_version versionc                       \ rS rSrSrSrg)r   i_  zW
Error raised when an executable that Matplotlib optionally
depends on can't be found.
r^   N)r_   r`   ra   rb   __doc__rd   r^   rB   r@   r   r   _  s     	rB   r   c                 R   S.S jnU [         R                  R                  SS5      R                  S5      ;   a  [	        U  S35      eU S:X  a  U" SS/S	S
5      $ U S:X  a>  [
        R                  S:X  a  / SQOS/nU H  n U" US/SS5      s  $    Sn[	        U5      eU S:X  a   U" / SQS5      $ U S:X  Ga
  [
        R                  S:X  a  SSKnSnSUR                  UR                  4 HM  n UR                  UR                  SSUR                  U-  5       nUR                  US5      S   nSSS5        MO     Sn	U(       a6  S H0  n [        X`5      n
U
R!                  5       (       d  M%  [#        U
5      n	  O   U	c  [	        S5      eOSn	U" U	S/S5      nUR$                  S:X  a  [	        SUR&                   S 35      eU$ U S!:X  a  U" S!S"/S#5      $ U S$:X  aq  U" S$S"/S%S&S'9nU(       a^  S(UR&                  R(                  ::  dD  [+        S)5      UR&                  s=::  a  [+        S*5      :  d  O  [	        S+UR&                   S,35      eU$ [-        S-U < 35      e! [         a     GM  f = f! [         a     Of = fU" SS/S5      $ ! , (       d  f       GM  = f! [         a     GM  f = f)/a7  
Get the version of some executable that Matplotlib optionally depends on.

.. warning::
   The list of executables that this function supports is set according to
   Matplotlib's internal needs, and may change without notice.

Parameters
----------
name : str
    The executable to query.  The following values are currently supported:
    "dvipng", "gs", "inkscape", "magick", "pdftocairo", "pdftops".  This
    list is subject to change without notice.

Returns
-------
tuple
    A namedtuple with fields ``executable`` (`str`) and ``version``
    (`packaging.Version`, or ``None`` if the version cannot be determined).

Raises
------
ExecutableNotFoundError
    If the executable is not found or older than the oldest version
    supported by Matplotlib.  For debugging purposes, it is also
    possible to "hide" an executable from Matplotlib by adding it to the
    :envvar:`_MPLHIDEEXECUTABLES` environment variable (a comma-separated
    list), which must be set prior to any calls to this function.
ValueError
    If the executable is not one that we know how to query.
Nc                 R    [         R                  " U [         R                  SSS9n[        R                  " X5      nU(       aT  UR                  S5      n[        U5      n	Ub&  U	[        U5      :  a  [        SU S    SU	 SU 35      e[        U S   X5      $ [        S	U S    S
SR                  U 5       SU 35      e! [         R                   a2  nU(       a  UR                  n S nAN[        [        U5      5      UeS nAf[         a  n[        [        U5      5      UeS nAff = f)NTreplace)stderrtexterrorsr&   z	You have r    z	 version z4 but the minimum version supported by Matplotlib is z#Failed to determine the version of z from  z, which output )
subprocesscheck_outputSTDOUTCalledProcessErroroutputr   strOSErrorresearchgroupr5   r   join)
argsregexmin_verignore_exit_coder   _cpe_osematchraw_versionrQ   s
             r@   impl"_get_executable_info.<locals>.impl  s)   
	?,,Z..)-F 		%(++a.K#K0G"ww1G'G-Qy	' ;::ADE E T!Wk;;)5d1gYf88D>"/&;< <# ,, 	C-c$i8dB 	?)#d)4$>	?s)   %B> >D&C?*C??D&D!!D&_MPLHIDEEXECUTABLESrl   ,z was hiddendvipngz-versionz(?m)^dvipng(?: .*)? (.+)z1.6gswin32)gswin32cgswin64cmgsr   z	--versionz(.*)9z)Failed to find a Ghostscript installationinkscape)r   z--without-gui-VzInkscape ([^ ]*)r   magickr    zSoftware\Imagemagick\CurrentBinPath)zconvert.exez
magick.exez*Failed to find an ImageMagick installationconvertz^Version: ImageMagick (\S*)z	7.0.10-34zYou have ImageMagick z, which is unsupported
pdftocairoz-vzpdftocairo version (.*)pdftopsz^pdftops version (.*)T)r      z0.9z1.0zYou have pdftops version z7 but the minimum version supported by Matplotlib is 3.0zUnknown executable: )NF)osenvironr<   splitr   sysplatformwinregKEY_WOW64_32KEYKEY_WOW64_64KEY	OpenKeyExHKEY_LOCAL_MACHINEKEY_QUERY_VALUEQueryValueExr   r$   rN   r   r   rQ   r9   r5   
ValueError)namer   execsemessager   binpathflaghkeypathr2   infos               r@   _get_executable_infor   g  s   D<> rzz~~3R8>>sCC%k&:;;xXz*,FNN	LLG+ 7 	 AQ,fc:: 
 >%g..			;*, , 
	<<7" GF22F4J4JK))"55;v55<> BF"("5"5dI"Fq"I	> > L D9D $W 3I ''))"9~	 :
 |-@B B  DT;')GH{*)'~5KLN N		\4(*CDD		Y%'>%)+T\\'''e$K}U7KK)+DLL> :9 :; ; /x899{ +  ' 		 Z&(:;;> >
  sT    I$
I) -+JJ.J
I&%I&)
I65I6
J	JJ
J&%J&c                      [         R                  R                  S5      =(       d!    [        [        R
                  " 5       S-  5      $ )z
Return the XDG configuration directory, according to the XDG base
directory spec:

https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
XDG_CONFIG_HOMEz.configr   r   r<   r   r$   homer^   rB   r@   _get_xdg_config_dirr     s-     ::>>+,LDIIK)4K0LLrB   c                      [         R                  R                  S5      =(       d!    [        [        R
                  " 5       S-  5      $ )z
Return the XDG cache directory, according to the XDG base directory spec:

https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
XDG_CACHE_HOMEz.cacher   r^   rB   r@   _get_xdg_cache_dirr     s-     ::>>*+Js499;3I/JJrB   c                 ~   [         R                  R                  S5      nU(       a  [        U5      nON[        R
                  R                  S5      (       a  [        U " 5       S5      nO[        R                  " 5       S-  nUR                  5       n UR                  SSS9  [         R                  " [        U5      [         R                  5      (       a   UR                  5       (       a  [        U5      $ [        R                  SU5         ["        R$                  " S	S
9nU[         R                  S'   [&        R(                  " [*        R,                  U5        [        R                  SX15        U$ ! [          a   n[        R                  SX5         S nANS nAff = f! [          a  n[!        SU S35      UeS nAff = f)NMPLCONFIGDIR)linuxfreebsdrE   z.matplotlibT)rM   exist_okz%s is not a writable directoryzmkdir -p failed for path %s: %szmatplotlib-)prefixzhMatplotlib requires access to a writable cache directory, but there was an issue with the default path (zt), and a temporary directory could not be created; set the MPLCONFIGDIR environment variable to a writable directorya$  Matplotlib created a temporary cache directory at %s because there was an issue with the default path (%s); it is highly recommended to set the MPLCONFIGDIR environment variable to a writable directory, in particular to speed up the import of Matplotlib and to better support multiprocessing.)r   r   r<   r$   r   r   
startswithr   rL   mkdiraccessr   W_OKis_dirry   warningr   tempfilemkdtempatexitregistershutilrmtree)xdg_base_getter	configdirexctmpdirs       r@   _get_config_or_cache_dirr     so   

~.IO			 	 !5	6	6 *L9	IIK-/	!!#IBt4 99S^RWW--)2B2B2D2Dy>!5yA:!!7 "(BJJ~
OOFMM6*LL	S 	 M1  H6	GGH  :33<+ >/01 7:		::s0   E0 F 0
F:FF
F<'F77F<zCONFIGDIR=%sc                       [        [        5      $ )a  
Return the string path of the configuration directory.

The directory is chosen as follows:

1. If the MPLCONFIGDIR environment variable is supplied, choose that.
2. On Linux, follow the XDG specification and look first in
   ``$XDG_CONFIG_HOME``, if defined, or ``$HOME/.config``.  On other
   platforms, choose ``$HOME/.matplotlib``.
3. If the chosen directory exists and is writable, use that as the
   configuration directory.
4. Else, create a temporary directory, and use it as the configuration
   directory.
)r   r   r^   rB   r@   r   r   0  s      $$788rB   zCACHEDIR=%sc                       [        [        5      $ )z
Return the string path of the cache directory.

The procedure used to find the directory is the same as for
`get_configdir`, except using ``$XDG_CACHE_HOME``/``$HOME/.cache`` instead.
)r   r   r^   rB   r@   r   r   C  s     $$677rB   zmatplotlib data path: %sc                  P    [        [        [        5      R                  S5      5      $ )z#Return the path to Matplotlib data.zmpl-data)r   r$   rK   	with_namer^   rB   r@   r	   r	   N  s     tH~''
344rB   c                      S n U " 5        HQ  n[         R                  R                  U5      (       d  M)  [         R                  R                  U5      (       a  MO  Us  $    [	        S5      e)a\  
Get the location of the config file.

The file location is determined in the following order

- ``$PWD/matplotlibrc``
- ``$MATPLOTLIBRC`` if it is not a directory
- ``$MATPLOTLIBRC/matplotlibrc``
- ``$MPLCONFIGDIR/matplotlibrc``
- On Linux,
    - ``$XDG_CONFIG_HOME/matplotlib/matplotlibrc`` (if ``$XDG_CONFIG_HOME``
      is defined)
    - or ``$HOME/.config/matplotlib/matplotlibrc`` (if ``$XDG_CONFIG_HOME``
      is not defined)
- On other platforms,
  - ``$HOME/.matplotlib/matplotlibrc`` if ``$HOME`` is defined
- Lastly, it looks in ``$MATPLOTLIBDATA/matplotlibrc``, which should always
  exist.
c               3   P  #    Sv    [         R                  S   n U v   [         R                  R                  U S5      v   [         R                  R                  [        5       S5      v   [         R                  R                  [        5       S5      v   g ! [         a     Naf = f7f)NmatplotlibrcMATPLOTLIBRC)r   r   r   r   KeyErrorr   r	   )r   s    r@   gen_candidates(matplotlib_fname.<locals>.gen_candidatesi  s~     
 	=::n5L '',,|^<<ggll=?N;;ggll=?N;;  		s(   B&B A;B&
B# B&"B##B&zCCould not find matplotlibrc file; your Matplotlib install is broken)r   r   rN   isdirRuntimeError)r   fnames     r@   r
   r
   T  sT    *<   !77>>%  u)=)=L "  + , ,rB   
z- {})keyc                       \ rS rSrSr\R                  rS rS r	S r
S rS rS rS	 rS
 rS rS rS rS rS rS rSrg)r   i  a  
A dict-like key-value store for config parameters, including validation.

Validating functions are defined and associated with rc parameters in
:mod:`matplotlib.rcsetup`.

The list of rcParams is:

%s

See Also
--------
:ref:`customizing-with-matplotlibrc-files`
c                 (    U R                   " U0 UD6  g rX   )update)rZ   r   r   s      r@   __init__RcParams.__init__  s    T$V$rB   c                 0    [         R                  XU5        g)a  
Directly write data bypassing deprecation and validation logic.

Notes
-----
As end user or downstream library you almost always should use
``rcParams[key] = val`` and not ``_set()``.

There are only very few special cases that need direct data access.
These cases previously used ``dict.__setitem__(rcParams, key, val)``,
which is now deprecated and replaced by ``rcParams._set(key, val)``.

Even though private, we guarantee API stability for ``rcParams._set``,
i.e. it is subject to Matplotlib's API and deprecation policy.

:meta public:
N)dict__setitem__)rZ   r  vals      r@   _setRcParams._set  s    $ 	C(rB   c                 ,    [         R                  X5      $ )a"  
Directly read data bypassing deprecation, backend and validation
logic.

Notes
-----
As end user or downstream library you almost always should use
``val = rcParams[key]`` and not ``_get()``.

There are only very few special cases that need direct data access.
These cases previously used ``dict.__getitem__(rcParams, key, val)``,
which is now deprecated and replaced by ``rcParams._get(key)``.

Even though private, we guarantee API stability for ``rcParams._get``,
i.e. it is subject to Matplotlib's API and deprecation policy.

:meta public:
)r  __getitem__)rZ   r  s     r@   _getRcParams._get  s    & **rB   c                     [        U[        5      (       a  [        R                  U5      n[        R	                  X5        g)a@  
Directly update the data from *other_params*, bypassing deprecation,
backend and validation logic on both sides.

This ``rcParams._update_raw(params)`` replaces the previous pattern
``dict.update(rcParams, params)``.

Parameters
----------
other_params : dict or `.RcParams`
    The input mapping from which to update.
N)
isinstancer   r  itemsr  )rZ   other_paramss     r@   _update_rawRcParams._update_raw  s+     lH--::l3LD'rB   c                 N    [         R                  U S[        R                  5        g)at  
Ensure that a "backend" entry exists.

Normally, the default matplotlibrc file contains *no* entry for "backend" (the
corresponding line starts with ##, not #; we fill in _auto_backend_sentinel
in that case.  However, packagers can set a different default backend
(resulting in a normal `#backend: foo` line) in which case we should *not*
fill in _auto_backend_sentinel.
backendN)r  
setdefaultr+   _auto_backend_sentinelrY   s    r@   _ensure_has_backendRcParams._ensure_has_backend  s     	i)G)GHrB   c                 @    U[         ;   a-  [         U   u  p4pV[        R                  " X1SUS9  UnU" U5      nOzU[        ;   a$  Ub!  [        U   u  n[        R                  " X1SS9  OLU[        ;   a"  [        U   u  p4[        R                  " X1SUS9  g US:X  a  U[
        R                  L a  SU ;   a  g  U R                  U   " U5      nU R                  X5        g ! [         a  n[        SU SU 35      S eS nAff = f! [         a  n	[        U S35      U	eS n	A	ff = f)Nrcparamr   obj_typealternative)r   r#  r  zKey z: zQ is not a valid rc parameter (see rcParams.keys() for a list of valid parameters))_deprecated_mapr'   warn_deprecated_deprecated_remain_as_none_deprecated_ignore_mapr+   r  validater   r  r   )
rZ   r  r  rQ   alt_keyalt_valinverse_altcvalveerrs
             r@   r  RcParams.__setitem__  s=   	9o%9H9M6'$$	wPcl22s5c:$$WK..#9##> $$	wP	!'888 D(?}}S)#. IIc   ? 4uBrd!34$>?  	9% . /0589	9sB   BC? C? 4C 	C? 
C<%C77C<<C? ?
D	DDc                 
   U[         ;   a9  [         U   u  p#pE[        R                  " X!SUS9  U" U R                  U5      5      $ U[        ;   a;  [        U   u  p#[        R                  " X!SUS9  U(       a  U R                  U5      $ S $ US:X  ae  U [        5       R                  S5      L aI  U R                  U5      nU[        R                  L a%  SSK	J
n  UR                  [        R                  5        U R                  U5      $ )Nr!  r"  r  r   r    )pyplot)r%  r'   r&  r  r(  globalsr<   r+   r  rE   r2  switch_backend)rZ   r  rQ   r*  r+  r,  r  plts           r@   r  RcParams.__getitem__
  s    /!5DS5I2Gg  I7Ltyy122**5c:G  I7L)0499W%:d: I$')--
*C"C))C.Cg4444""7#A#AByy~rB   c                 R    U R                  S5      nU[        R                  L a  S$ U$ )zAGet the requested backend, if any, without triggering resolution.r  N)r  r+   r  )rZ   r  s     r@   _get_backend_or_noneRcParams._get_backend_or_none!  s(    ))I&'"@"@@tMgMrB   c                 H   U R                   R                  n[        U5      S-   n[        R                  " 5          [
        R                  " [        U 5      SSU-
  S9R                  S5      nS S S 5        SSU-  -   R                  W5      nU SU S3$ ! , (       d  f       N-= f)Nr&   P   )indentwidthr  r   ())
	__class__r_   lenr'   'suppress_matplotlib_deprecation_warningpprintpformatr  r   r   )rZ   
class_namer<  
repr_splitrepr_indenteds        r@   __repr__RcParams.__repr__&  s    ^^,,
Z1$99;T
1.06k;;@5;  < f,22:>Q}oQ//	 <;s   2B
B!c           	      z    SR                  [        SR                  [        U R	                  5       5      5      5      $ )Nr  z{0[0]}: {0[1]})r   mapformatsortedr  rY   s    r@   __str__RcParams.__str__/  s*    yy-44fTZZ\6JKLLrB   c              #      #    [         R                  " 5          [        [        R	                  U 5      5       Sh  vN   SSS5        g N! , (       d  f       g= f7f)zYield sorted list of keys.N)r'   rB  rM  r  __iter__rY   s    r@   rQ  RcParams.__iter__2  s;     99;dmmD1222 <;2 <;s+   A"A
AA
	AA


AAc                 ,    [         R                  U 5      $ rX   )r  __len__rY   s    r@   rT  RcParams.__len__7  s    ||D!!rB   c                 v   ^ [         R                  " U5      m[        U4S jU R                  5        5       5      $ )z
Return the subset of this RcParams dictionary whose keys match,
using :func:`re.search`, the given ``pattern``.

.. note::

    Changes to the returned dictionary are *not* propagated to
    the parent RcParams dictionary.

c              3   ^   >#    U  H"  u  pTR                  U5      (       d  M  X4v   M$     g 7frX   )r   ).0r  value
pattern_res      r@   	<genexpr>$RcParams.find_all.<locals>.<genexpr>F  s,      3*6JC%,,S1 %*6s   -
-)r   compiler   r  )rZ   patternrZ  s     @r@   find_allRcParams.find_all:  s3     ZZ(
 3*.**,3 3 	3rB   c                 l    [        5       nU  H#  nUR                  X R                  U5      5        M%     U$ )zCopy this RcParams instance.)r   r  r  )rZ   rccopyks      r@   copyRcParams.copyJ  s,    AKK99Q<( rB   r^   N)r_   r`   ra   rb   r   r+   _validatorsr)  r  r  r  r  r  r  r  r8  rH  rN  rQ  rT  r_  rd  rd   r^   rB   r@   r   r     s]     ""H%)(+*("
I9<.N
0M3
"3 rB   r   Fc                 *    [        [        5       U 5      $ )zDConstruct a `RcParams` instance from the default Matplotlib rc file.)r   r
   fail_on_errors    r@   r   r   R  s    /1=AArB   c                       SS K n SS KnUR                  U R                  5       S9$ ! [         a    [        R                  S5         g f = f)Nr    zCould not import certifi.)cafile)certifirR   ry   r   sslcreate_default_contextwhere)rl  rm  s     r@   _get_ssl_contextrp  W  sJ     %%W]]_%==	  

./s   ' A	A	c              #     #    [        U [        5      (       aj  U R                  S5      (       aT  SS Kn[	        5       nUc  [
        R                  S5        UR                  R                  XS9 nS U 5       v   S S S 5        g [        R                  R                  U 5      n [        U SS9 nUv   S S S 5        g ! , (       d  f       g = f! , (       d  f       g = f7f)N)zhttp://zhttps://zftp://zfile:r    z6Could not get certifi ssl context, https may not work.)contextc              3   B   #    U  H  oR                  S 5      v   M     g7f)utf-8N)decode)rX  lines     r@   r[  $_open_file_or_url.<locals>.<genexpr>m  s     6AD;;w''As   rt  )encoding)r  r   r   urllib.requestrp  ry   r   requesturlopenr   r   
expanduseropen)r  urllibssl_ctxfs       r@   _open_file_or_urlr  b  s     5#  !KLL"$?JJH ^^##E#;q6A66 <; ""5)%'*aG +*	 <; +*s6   A+C-B992C+C
0	C9
CC

CCc                     U $ rX   r^   )xs    r@   r[   r[   t  s    !rB   c                    SSK n0 n[        U 5       n [        US5       H  u  pgU" U5      n[        R                  " U5      nU(       d  M,  UR                  SS5      n	[        U	5      S:w  a(  [        R                  SXUR                  S5      5        Mu  U	u  pU
R                  5       n
UR                  5       nUR                  S5      (       a  UR                  S5      (       a  USS	 nX;   a&  [        R                  S
XUR                  S5      5        XU4XJ'   M      SSS5        [        5       nUR                  5        H  u  n
u  pnU
[         R"                  ;   a  U(       a  XU
'   M*   XU
'   M1  U
[&        ;   a$  [&        U
   u  p[(        R*                  " XUSSS9  M_  SUR,                  ;   a  SOSUR,                   3n[        R                  S[/        XUUR                  S5      US95        M     U$ ! [         a    [        R                  SU 5        e f = f! , (       d  f       GN= f! [$         a3  n[        R                  SXUR                  S5      U5         SnAGM$  SnAff = f)a  
Construct a `RcParams` instance from file *fname*.

Unlike `rc_params_from_file`, the configuration class only contains the
parameters specified in the file (i.e. default values are not filled in).

Parameters
----------
fname : path-like
    The loaded file.
transform : callable, default: the identity function
    A function called on each individual line of the file to transform it,
    before further parsing.
fail_on_error : bool, default: False
    Whether invalid entries should result in an exception or a warning.
r    Nr&   :rD   z&Missing colon in file %r, line %d (%r)r  "z&Duplicate key in file %r, line %d (%r)z-Cannot decode configuration file %r as utf-8.z&Bad value in file %r, line %d (%r): %sr!  z Please update your matplotlibrc.)r   r$  r#  addendumz.postmainr>   a  
Bad key %(key)s in file %(fname)s, line %(line_no)s (%(line)r)
You probably need to get an updated matplotlibrc file from
https://github.com/matplotlib/matplotlib/blob/%(version)s/lib/matplotlib/mpl-data/matplotlibrc
or from the matplotlib source distribution)r  r  line_norv  rQ   )rE   r  	enumerater)   _strip_commentr   rA  ry   r   rstripstripr   endswithUnicodeDecodeErrorr   r  r+   rf  	Exceptionr(  r'   r&  r   r  )r  	transformri  mplrc_tempfdr  rv  strippedlinetupr  r  configmsgrQ   r*  s                   r@   _rc_params_in_filer  t  s@   " G	5	!R	!*2q!1 $33D9#"((a0s8q=LL!I!&T1BDiikiik>>#&&3<<+<+<a)C>LL!I!&T1BD #73% "2 
"4 ZF%,]]_!!c'%%%!sI"%3K **5c:G  w;= ")COO!;v01 LL .
 #G#';;t#4gGH) &56 ME " 	LLH 	+ 
"	!F ! ILL!I!&T1BCI IIs5   HDG7-H.7"HH
H+.
I+8'I&&I+Tc                 \   [        XS9nU(       d  U$ [        R                  " 5          [        0 [        EUE5      nSSS5        SR                  WS   5      (       a(  [        R                  SSR                  US   5      5        [        R                  SU 5        U$ ! , (       d  f       Ng= f)a  
Construct a `RcParams` from file *fname*.

Parameters
----------
fname : str or path-like
    A file with Matplotlib rc settings.
fail_on_error : bool
    If True, raise an error when the parser fails to convert a parameter.
use_default_template : bool
    If True, initialize with default parameters before updating with those
    in the given file. If False, the configuration class only contains the
    parameters specified in the file. (Useful for updating dicts.)
rh  Nrl   ztext.latex.preamblea
  
*****************************************************************
You have the following UNSUPPORTED LaTeX preamble customizations:
%s
Please do not ask for support with these customizations active.
*****************************************************************
r  zloaded rc file %s)	r  r'   rB  r   r   r   ry   r   r   )r  ri  use_default_templateconfig_from_filer  s        r@   r   r     s     *%M		5	5	7A_A0@AB 
8 
wwv+,--		  
YYv+,-	/ 	JJ"E*M 
8	7s   B
B+r   c                 <    U R                  S5      (       a  U SS  $ U $ )N#r&   )r   )rv  s    r@   r[   r[     s     ts';';48EErB   )r  ri  r  zaxes.formatter.use_localerl   c                 8   SSSSSSSS.n[        U [        5      (       a  U 4n U  HG  nUR                  5        H0  u  pEUR                  U5      =(       d    UnU S	U 3n U[        U'   M2     MI     g! [
         a  n[        S
U< SU< SU< S35      UeSnAff = f)a"  
Set the current `.rcParams`.  *group* is the grouping for the rc, e.g.,
for ``lines.linewidth`` the group is ``lines``, for
``axes.facecolor``, the group is ``axes``, and so on.  Group may
also be a list or tuple of group names, e.g., (*xtick*, *ytick*).
*kwargs* is a dictionary attribute name/value pairs, e.g.,::

  rc('lines', linewidth=2, color='r')

sets the current `.rcParams` and is equivalent to::

  rcParams['lines.linewidth'] = 2
  rcParams['lines.color'] = 'r'

The following aliases are available to save typing for interactive users:

=====   =================
Alias   Property
=====   =================
'lw'    'linewidth'
'ls'    'linestyle'
'c'     'color'
'fc'    'facecolor'
'ec'    'edgecolor'
'mew'   'markeredgewidth'
'aa'    'antialiased'
=====   =================

Thus you could abbreviate the above call as::

      rc('lines', lw=2, c='r')

Note you can use python's kwargs dictionary facility to store
dictionaries of default parameters.  e.g., you can customize the
font rc as follows::

  font = {'family' : 'monospace',
          'weight' : 'bold',
          'size'   : 'larger'}
  rc('font', **font)  # pass in the font dict as kwargs

This enables you to easily switch between several configurations.  Use
``matplotlib.style.use('default')`` or :func:`~matplotlib.rcdefaults` to
restore the default `.rcParams` after changes.

Notes
-----
Similar functionality is available by using the normal dict interface, i.e.
``rcParams.update({"lines.linewidth": 2, ...})`` (but ``rcParams.update``
does not support abbreviations or grouping).
	linewidth	linestylecolor	facecolor	edgecolormarkeredgewidthantialiased)lwlscfcecmewaa.zUnrecognized key "z" for group "z" and name "r  N)r  r   r  r<   r   r   )	r   r   aliasesgrc  r>   r   r  r/  s	            r@   r   r     s    l  
G %LLNDA;;q>&QDCq-CH !	 #   H03Q > ?DGHHs   	A11
B;BBc            	      (   [         R                  " 5          SSKJn   [        R                  5         [        R                  [        R                  5        VVs0 s H  u  pX;  d  M  X_M     snn5        SSS5        gs  snnf ! , (       d  f       g= f)a  
Restore the `.rcParams` from Matplotlib's internal default style.

Style-blacklisted `.rcParams` (defined in
``matplotlib.style.core.STYLE_BLACKLIST``) are not updated.

See Also
--------
matplotlib.rc_file_defaults
    Restore the `.rcParams` from the rc file originally loaded by
    Matplotlib.
matplotlib.style.use
    Use a specific style file.  Call ``style.use('default')`` to restore
    the default style.
r&   STYLE_BLACKLISTN)	r'   rB  
style.corer  r   clearr  r   r  )r  rc  r>   s      r@   r   r   J  sn    $ 
	5	5	7//*?*?*A 6*A$!4 *A 6 	7 
8	76 
8	7s$   ABA=&A=,B=B
Bc            	          [         R                  " 5          SSKJn   [        R                  [         Vs0 s H  nX;  d  M
  U[        U   _M     sn5        SSS5        gs  snf ! , (       d  f       g= f)z
Restore the `.rcParams` from the original rc file loaded by Matplotlib.

Style-blacklisted `.rcParams` (defined in
``matplotlib.style.core.STYLE_BLACKLIST``) are not updated.
r&   r  N)r'   rB  r  r  r   r  r   )r  rc  s     r@   r   r   c  s^     
	5	5	7/\ 6\4 ,LO+\ 6 	7 
8	76 
8	7s"   A$	A
A
A$A$$
A2r  c          	          [         R                  " 5          SSKJn  [	        XS9n[
        R                  U Vs0 s H  nXB;  d  M
  XCU   _M     sn5        SSS5        gs  snf ! , (       d  f       g= f)a  
Update `.rcParams` from file.

Style-blacklisted `.rcParams` (defined in
``matplotlib.style.core.STYLE_BLACKLIST``) are not updated.

Parameters
----------
fname : str or path-like
    A file with Matplotlib rc settings.

use_default_template : bool
    If True, initialize with default parameters before updating with those
    in the given file. If False, the current configuration persists
    and only the parameters specified in the file are updated.
r&   r  r  N)r'   rB  r  r  r   r   r  )r  r  r  rc_from_filerc  s        r@   r   r   r  si    & 
	5	5	7/*>\ 6\4 ,O+\ 6 	7	 
8	76	 
8	7s"   #A$	A
	A
A$A$$
A2c              #     #    [        [        R                  5       5      nUS	  U(       a  [        U5        U (       a  [        R	                  U 5        Sv   [        R                  U5        g! [        R                  U5        f = f7f)a  
Return a context manager for temporarily changing rcParams.

The :rc:`backend` will not be reset by the context manager.

rcParams changed both through the context manager invocation and
in the body of the context will be reset on context exit.

Parameters
----------
rc : dict
    The rcParams to temporarily set.
fname : str or path-like
    A file with Matplotlib rc settings. If both *fname* and *rc* are given,
    settings from *rc* take precedence.

See Also
--------
:ref:`customizing-with-matplotlibrc-files`

Examples
--------
Passing explicit values via a dict::

    with mpl.rc_context({'interactive': False}):
        fig, ax = plt.subplots()
        ax.plot(range(3), range(3))
        fig.savefig('example.png')
        plt.close(fig)

Loading settings from a file::

     with mpl.rc_context(fname='print.rc'):
         plt.plot(x, y)  # uses 'print.rc'

Setting in the context body::

    with mpl.rc_context():
        # will be reset
        mpl.rcParams['lines.linewidth'] = 5
        plt.plot(x, y)

r  N)r  r   rd  r   r  r  )r   r  origs      r@   r   r     s\     Z  DY#ENOOBT"T"s   !B2A, B,BB)forcec                    [         R                  " U 5      n[        R                  5       U:X  a  O>[        R
                  R                  S5      nUb   UR                  U5        O	U [        S'   S[        S'   g! [         a    U(       a  e  Nf = f)aL  
Select the backend used for rendering and GUI integration.

If pyplot is already imported, `~matplotlib.pyplot.switch_backend` is used
and if the new backend is different than the current backend, all Figures
will be closed.

Parameters
----------
backend : str
    The backend to switch to.  This can either be one of the standard
    backend names, which are case-insensitive:

    - interactive backends:
      GTK3Agg, GTK3Cairo, GTK4Agg, GTK4Cairo, MacOSX, nbAgg, notebook, QtAgg,
      QtCairo, TkAgg, TkCairo, WebAgg, WX, WXAgg, WXCairo, Qt5Agg, Qt5Cairo

    - non-interactive backends:
      agg, cairo, pdf, pgf, ps, svg, template

    or a string of the form: ``module://my.module.name``.

    notebook is a synonym for nbAgg.

    Switching to an interactive backend is not possible if an unrelated
    event loop has already been started (e.g., switching to GTK3Agg if a
    TkAgg window has already been opened).  Switching to a non-interactive
    backend is always possible.

force : bool, default: True
    If True (the default), raise an `ImportError` if the backend cannot be
    set up (either because it fails to import, or because an incompatible
    GUI interactive framework is already running); if False, silently
    ignore the failure.

See Also
--------
:ref:`backends`
matplotlib.get_backend
matplotlib.pyplot.switch_backend

zmatplotlib.pyplotNr  Fbackend_fallback)	r+   validate_backendr   r8  r   modulesr<   r4  rR   )r  r  r   r5  s       r@   r   r     s    V ##G,D$$&$.
 kkoo12? ""4( #*HY $)H    s   A8 8BB
MPLBACKEND)auto_selectc                 x    U (       a	  [         S   $ [         R                  S5      nU[        R                  L a  gU$ )a  
Return the name of the current backend.

Parameters
----------
auto_select : bool, default: True
    Whether to trigger backend resolution if no backend has been
    selected so far. If True, this ensures that a valid backend
    is returned. If False, this returns None if no backend has been
    selected so far.

    .. versionadded:: 3.10

    .. admonition:: Provisional

       The *auto_select* flag is provisional. It may be changed or removed
       without prior warning.

See Also
--------
matplotlib.use
r  N)r   r  r+   r  )r  r  s     r@   r   r     s6    . 	""--	*g444NrB   c                     U [         S'   g)zM
Set whether to redraw after every plotting command (e.g. `.pyplot.xlabel`).
r   Nr   )r4   s    r@   r   r   4  s      H]rB   c                      [         S   $ )z
Return whether to redraw after every plotting command.

.. note::

    This function is only intended for use in backends. End users should
    use `.pyplot.isinteractive` instead.
r   r  r^   rB   r@   r   r   ;  s     M""rB   c                     U b  U $ [         U   $ )zK
If *val* is None, return ``mpl.rcParams[rc_name]``, otherwise return val.
r  )r  rc_names     r@   
_val_or_rcr  G  s     /38x'88rB   c                      Sn SSK Jn  UR                  U :w  d  UR                  S:w  a5  [        R                  SU UR                  UR                  S:X  a  SOS5        g g )Nz2.6.1r    rf   locala  Matplotlib is not built with the correct FreeType version to run tests.  Rebuild without setting system-freetype=true in Meson setup options.  Expect many image comparison failures below.  Expected freetype version %s.  Found freetype version %s.  Freetype build type is %slocal.rl   znot )rE   rg   __freetype_version____freetype_build_type__ry   r   )LOCAL_FREETYPE_VERSIONrg   s     r@   _init_testsr  N  sa     %"$$(>>++w6. #((11W<B&		J 7rB   c                      [        U[        5      (       a  X   n[        R                  " U5      $ ! [         a     N"f = f)zX
Either returns ``data[value]`` or passes ``data`` back, converts either to
a sequence.
)r  r   r  r)   sanitize_sequence)datarY  s     r@   	_replacerr  b  sB    
eS!!KE ""5))  s   1 
>>c                 n     U R                   $ ! [         a    [        U[        5      (       a  Us $  g f = frX   )r   AttributeErrorr  r   )ydefault_names     r@   _label_from_argr  r  s:     vv  lC(( ) s    !44c                    U b  Ub  [        U5      S:X  a  U $ [        R                  " U 5      n Uc  SO'SSR                  [	        SR
                  U5      5       3n[        R                  [        R                  ::  a6  SU ;  a  [        R                  S5        SU ;  a  [        R                  S	5        U R                  S
U5      $ )a  
Add documentation for a *data* field to the given docstring.

Parameters
----------
docstring : str
    The input docstring.
replace_names : list of str or None
    The list of parameter names which arguments should be replaced by
    ``data[name]`` (if ``data[name]`` does not throw an exception).  If
    None, replacement is attempted for all arguments.

Returns
-------
str
    The augmented docstring.
r    z    If given, all parameters also accept a string ``s``, which is
    interpreted as ``data[s]`` if ``s`` is a key in ``data``.z    If given, the following parameters also accept a string ``s``, which is
    interpreted as ``data[s]`` if ``s`` is a key in ``data``:

    z, z*{}*z!data : indexable object, optionalz1data parameter docstring error: no data parameterDATA_PARAMETER_PLACEHOLDERz3data parameter docstring error: missing placeholderz    DATA_PARAMETER_PLACEHOLDER)rA  inspectcleandocr   rK  rL  ry   r   rt   DEBUGr   r   )	docstringreplace_namesdata_docs      r@   _add_data_docr  {  s    $ 	(S-?1-D  +I
 !(A3 
YYs6==-012	/6  zzW]]" /i?JJJK'y8JJLM=xHHrB   r  label_namerc                  ^ ^^^	^
^ T c  [         R                  " [        TTS9$ [        R                  " T 5      nSm
Sm/ n[        UR                  R                  5       5      nU Ht  nUR                  [        R                  L a  UR                  m
M.  UR                  [        R                  L a  UR                  mMY  UR                  UR                  5        Mv     [        S[        R                  SS9nT(       a  UR                  SU5        OUR                  U5        UR!                  US9m	USS n1 UkR#                  T=(       d    / 5      (       d   T(       d   ST< S	T R$                  < 35       eTb  TU;   d   S
T< S	T R$                  < 35       e[         R&                  " T 5      SS.U UU	UU
U4S jj5       n[)        UR*                  T5      Ul        T	Ul        U$ )a"  
A decorator to add a 'data' kwarg to a function.

When applied::

    @_preprocess_data()
    def func(ax, *args, **kwargs): ...

the signature is modified to ``decorated(ax, *args, data=None, **kwargs)``
with the following behavior:

- if called with ``data=None``, forward the other arguments to ``func``;
- otherwise, *data* must be a mapping; for any argument passed in as a
  string ``name``, replace the argument by ``data[name]`` (if this does not
  throw an exception), then forward the arguments to ``func``.

In either case, any argument that is a `MappingView` is also converted to a
list.

Parameters
----------
replace_names : list of str or None, default: None
    The list of parameter names for which lookup into *data* should be
    attempted. If None, replacement is attempted for all arguments.
label_namer : str, default: None
    If set e.g. to "namer" (which must be a kwarg in the function's
    signature -- not as ``**kwargs``), if the *namer* argument passed in is
    a (string) key of *data* and no *label* kwarg is passed, then use the
    (string) value of the *namer* as *label*. ::

        @_preprocess_data(label_namer="foo")
        def func(foo, label=None): ...

        func("key", data={"key": value})
        # is equivalent to
        func.__wrapped__(value, label="key")
Nr  r  )defaultr  )
parametersr&   z2Matplotlib internal error: invalid replace_names (z) for z0Matplotlib internal error: invalid label_namer (r  c                  >^ Tc\  T" U /[        [        R                  U5      Q70 UR                  5        VVs0 s H  u  pEU[        R                  " U5      _M     snnD6$ TR                  " U /UQ70 UD6nUR
                  R                  T5      =(       d    UR                  R                  T5      nUR
                  R                  5        H  u  pEUT:X  a4  UR                  5        H  u  pTb  UT;   d  M  [        TU	5      XX'   M      M?  UT:X  a)  Tc$  [        U4S jU 5       5      UR
                  U'   Ml  Mn  Tb  UT;   d  My  [        TU5      UR
                  U'   M     UR                  n
UR                  n0 UR
                  EUR                  EnT(       a$  SU;  a  [        UR                  T5      U5      US'   T" U
0 UD6$ s  snnf )Nc              3   <   >#    U  H  n[        TU5      v   M     g 7frX   )r  )rX  v1r  s     r@   r[  2_preprocess_data.<locals>.inner.<locals>.<genexpr>  s     .OQryr/B/BQs   label)rK  r)   r  r  bind	argumentsr<   r   r  tupler   r  )axr  r   r   rc  r>   bound
auto_labelk1r  new_args
new_kwargsargs_and_kwargsr   r  new_sigr  varargs_namevarkwargs_names    `           r@   inner_preprocess_data.<locals>.inner  s   <NU,,d3N >D\\^L^TQ1e--a00^LN N
 R1$1&1oo))+6 7))+6 	 OO))+DAN"ggiFB$,m0C )$ 3 ( l" ()..OQ.O)OEOOA& ) !(A,>)24);EOOA& , ::\\
=U__==7/9"1##K0*#>Jw X,,,5 Ms   #G
)r   r   _preprocess_datar  	signaturelistr  valueskindr#   VAR_POSITIONALr   VAR_KEYWORDappendKEYWORD_ONLYinsertr   
issupersetr_   r   r  r   __signature__)r   r  r  sig	arg_namesparamsp
data_paramr  r  r  r  s   ```      @@@r@   r  r    s   N |  '[B 	B 

D
!CLNI#..'')*F66Y---66LVVy,,,VVNQVV$  69#9#94HJb*%j!kkVk,G!"IY<""=#6B77> 6	F4=="3	56I +": 4	?& 1	34: __T" - - -B "%--?EM!ELrB   zinteractive is %szplatform is %sz3.10z"matplotlib.cbook.sanitize_sequence)r$  c                 .    [         R                  " U 5      $ rX   )r)   r  r  s    r@   r  r    s    ""4((rB   z#matplotlib.rcsetup.validate_backendc                 .    [         R                  " U 5      $ rX   )r+   r  )ss    r@   r  r    s    ##A&&rB   )
_colormaps)_multivar_colormaps)_bivar_colormaps)_color_sequencesrX   )F)FT)NN)~r   __all__r   collectionsr!   collections.abcr"   
contextlibr   rm   r  r#   localert   r   pathlibr$   rC  r   r   r   r   r   packaging.versionr%   r5   rl   r'   r(   r)   r*   r+   matplotlib._apir   matplotlib.rcsetupr,   	getLoggerr_   ry   r   r-   rA   rS   caching_module_getattrrU   rr   cacher|   r   r   r   FileNotFoundErrorr   r   r   r   r   r   r   r	   r
   r%  r(  r'  Substitutionr   rK  rL  rM  rf  r   lowerr  r   r   rp  contextmanagerr  r  r   _get_data_pathr   r  _hardcoded_defaultsr  r   rd  r   rB  r  r  r   	setlocaleLC_ALLr   r   r   r   r   r   r   r<   r   r   r   r  r  r  r  r  r  r   r   
deprecatedr  r  matplotlib.cmr  r   r  r   r  r   matplotlib.colorsr  r   )r  	validators   00r@   <module>r-     sv  eND  " *        	   	   
  4 9 8 8 % "
  .EGL04 ? ? ?@&  
 
 
.D> {$DE		/ 	 I: I:XMK&R 9  9$ 8 8 *+5 ,5
*,^       IIc&--(;(;!KLM~t DB
 > >  " )45 JZ!H %	(E	
   G77 8  # # %:   _ %   '(8(:; <}}	113 &11779-;
 :NC 		1Aw--s# 	 :-; ;MG) 4 '(
V]]B'IHX727 ,0 76 5# 5#p  F)R ::>>,**..6HY  $ B 	#9J(* )IXk4 k\ 

 0 1 

S\\ * %IJ) K) %JK' L' 2 C = Ai-; 43s   "O. %O(%O.(O..
O=