CoolFace
Apppublic

Aluode/PerceptionLabPortable

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
ImageFont.cpython-310.pyc853 linesDownload Raw Back to __pycache__
1o

2��Yi=��3@s�UddlmZddlZddlZddlZddlZddlmZddlm	Z	ddl4mZddlm
Z
mZmZmZmZddlmZdd	lmZdd5lmZmZdZeraddlmZdd
lmZddlmZGdd�de�ZGdd�de�Z dZ!de"d<zddlmZ#Wne$y�Z%ze�&e%�Z#WYdZ%[%ndZ%[%wwd=dd�Z'Gdd�d�Z(Gdd �d �Z)Gd!d"�d"�Z*d>d%d&�Z+	'		(	d?d@d2d3�Z,dAd5d6�Z-dBd7d8�Z.dCdDd;d<�Z/dS)E�)�annotationsN)�IntEnum)�BytesIO)�6ModuleType)�IO�Any�BinaryIO�	TypedDict�cast�)�Image)�StrOrBytesPath)�
DeferredError�is_pathF)�	ImageFile)�ImagingFont)�Fontc@s.eZdZUded<ded<ded<ded<dS)�Axis�7int | None�minimum�default�maximumzbytes | None�nameN)�__name__�8__module__�__qualname__�__annotations__�rr�wE:\DocsHouse\542 percep lab latest\PerceptionLab\PerceptionLab_Portable\python_embed\Lib\site-packages\PIL/ImageFont.pyr2s910rc@seZdZdZdZdS)�LayoutrrN)rrr�BASIC�RAQMrrrrr9sri@BzModuleType | DeferredError�core)�11_imagingft�text�str | bytes | bytearray�return�NonecCs(tdurt|�tkrd}t|��dSdS)Nztoo many characters in string)�MAX_STRING_LENGTH�len�12ValueError)r$�msgrrr�_string_length_checkHs�r,c@sPeZdZUdZded<d"dd	�Zd#dd�Z	d$d%dd�Zd&dd�Zd'dd �Z	d!S)(�	ImageFontzPIL font wrapperr�font�filename�strr&r'c13Cs�t|d��Y}d}tj�|�d}dD]&}|r|��z||}t�|�}Wn	ty.Yqw|r8|jdvr8nq|r?|��d|�d�}t|��||_	|�14||�|��Wd�dS1sawYdS)N�rbr)z.pngz.gifz.pbm��1�Lzcannot find glyph data file z.{gif|pbm|png})�open�os�path�splitext�closer�	Exception�mode�OSError�file�_load_pilfont_data)�selfr/�fp�image�root�ext�fullnamer+rrr�
_load_pilfontcs.��15"�zImageFont._load_pilfontr=�	IO[bytes]rA�Image.ImagecCs�|jdvr|��d}t|��|�d�dkr |��d}t|��|��g|_	|��}|r2|dkr3n|j�|�q(|�d�}|��t	j16�|j|�|_dS)	Nr2zinvalid font image mode�sPILfont17zNot a PILfont fileTsDATA18i)
r;r9�	TypeError�read�SyntaxError�readline�info�append�loadrr"r.�im)r?r=rAr+�s�datarrrr>s&19�20zImageFont._load_pilfont_data�r$�str | bytesr;�argsr�kwargs�Image.core.ImagingCorecOs(t|�t�|j�|��|j�||�S)a�21        Create a bitmap for the text.22 23        If the font uses antialiasing, the bitmap should have mode ``L`` and use a24        maximum value of 255. Otherwise, it should have mode ``1``.25 26        :param text: Text to render.27        :param mode: Used by some graphics drivers to indicate what mode the28                     driver prefers; if empty, the renderer may return either29                     mode. Note that the mode is always a string, to simplify30                     C-level implementations.31 32                     .. versionadded:: 1.1.533 34        :return: An internal PIL storage memory instance as defined by the35                 :py:mod:`PIL.Image.core` interface module.36        )r,r�_decompression_bomb_checkr.�getsize�getmask)r?r$r;rUrVrrrrZ�szImageFont.getmaskr%�tuple[int, int, int, int]cOs$t|�|j�|�\}}dd||fS)z�37        Returns bounding box (in pixels) of given text.38 39        .. versionadded:: 9.2.040 41        :param text: Text to render.42 43        :return: ``(left, top, right, bottom)`` bounding box44        r�r,r.rY�r?r$rUrV�width�heightrrr�getbbox�szImageFont.getbbox�intcOst|�|j�|�\}}|S)z�45        Returns length (in pixels) of given text.46        This is the amount by which following text should be offset.47 48        .. versionadded:: 9.2.049        r\r]rrr�	getlength�s	zImageFont.getlengthN)r/r0r&r')r=rFrArGr&r'�rS�50r$rTr;r0rUrrVrr&rW)r$r%rUrrVrr&r[)r$r%rUrrVrr&ra)51rrr�__doc__rrEr>rZr`rbrrrrr-^s525354�55r-c@seZdZUdZded<ded<					dPdQdd�ZdRdd�ZdSdd�ZdTdd�ZdUd!d"�Z								dVdWd+d,�Z56										dXdYd0d1�Z													dZd[d6d7�Z													dZd\d<d=�Z
										d]d^dAdB�Zd_dDdE�Zd`dGdH�ZdadJdK�ZdbdNdO�Zd	S)c�FreeTypeFontz3FreeType font wrapper (requires _imagingft service)rr.�bytes�57font_bytes�58rrSN�StrOrBytesPath | BinaryIO�size�float�indexra�encodingr0�
layout_engine�
Layout | Noner&r'c59s^ttt�rtj��dkrd���}t|��|�_��_��_��_�t	j60t	jfvr3t	j61�tjr2t	j�n�t	jkrCtjsCt
�d�t	j62���_d�����fdd	�}t|�r�t�|�}tjd63kr�t|t�rf|n|��}z|�d�Wn%ty�t|d��}	||	�Wd�YdS1s�wYYdSwtj|����d
��_dS|ttt|��dS)Nrz&font size must be greater than 0, not zSRaqm layout was requested, but Raqm is not available. Falling back to basic layout.�frFr&r'cs&|���_t�d����j���_dS)NrS)rJrhr"�getfontr.�rq�rnrmror?rkrr�load_from_bytess6465�z.FreeTypeFont.__init__.<locals>.load_from_bytes�win32�asciir1�ro)rqrFr&r')�66isinstancer"r�exr*r7rkrmrnrr r!Z	HAVE_RAQM�warnings�warnrorr6�fspath�sys�platformrg�encode�decode�UnicodeDecodeErrorr5rrr.r67r)68r?r.rkrmrnror+ruZfont_bytes_pathrqrrtr�__init__�sN69 7071��72737475���76�zFreeTypeFont.__init__�	list[Any]cCs|j|j|j|j|jgS�N)r7rkrmrnro�r?rrr�__getstate__szFreeTypeFont.__getstate__�statecCs&|\}}}}}t�||||||�dSr�)rfr�)r?r�r7rkrmrnrorrr�__setstate__szFreeTypeFont.__setstate__�tuple[str | None, str | None]cC�|jj|jjfS)zq77        :return: A tuple of the font family (e.g. Helvetica) and the font style78            (e.g. Bold)79        )r.�family�styler�rrr�getname�zFreeTypeFont.getname�tuple[int, int]cCr�)z�80        :return: A tuple of the font ascent (the distance from the baseline to81            the highest outline point) and descent (the distance from the82            baseline to the lowest outline point, a negative value)83        )r.ZascentZdescentr�rrr�84getmetrics&szFreeTypeFont.getmetricsr$rTr;�	direction�85str | None�features�list[str] | None�languagecCs t|�|j�|||||�dS)a+
86        Returns length (in pixels with 1/64 precision) of given text when rendered87        in font with provided direction, features, and language.88 89        This is the amount by which following text should be offset.90        Text bounding box may extend past the length in some fonts,91        e.g. when using italics or accents.92 93        The result is returned as a float; it is a whole number if using basic layout.94 95        Note that the sum of two lengths may not equal the length of a concatenated96        string due to kerning. If you need to adjust for kerning, include the following97        character and subtract its length.98 99        For example, instead of ::100 101          hello = font.getlength("Hello")102          world = font.getlength("World")103          hello_world = hello + world  # not adjusted for kerning104          assert hello_world == font.getlength("HelloWorld")  # may fail105 106        use ::107 108          hello = font.getlength("HelloW") - font.getlength("W")  # adjusted for kerning109          world = font.getlength("World")110          hello_world = hello + world  # adjusted for kerning111          assert hello_world == font.getlength("HelloWorld")  # True112 113        or disable kerning with (requires libraqm) ::114 115          hello = draw.textlength("Hello", font, features=["-kern"])116          world = draw.textlength("World", font, features=["-kern"])117          hello_world = hello + world  # kerning is disabled, no need to adjust118          assert hello_world == draw.textlength("HelloWorld", font, features=["-kern"])119 120        .. versionadded:: 8.0.0121 122        :param text: Text to measure.123        :param mode: Used by some graphics drivers to indicate what mode the124                     driver prefers; if empty, the renderer may return either125                     mode. Note that the mode is always a string, to simplify126                     C-level implementations.127 128        :param direction: Direction of the text. It can be 'rtl' (right to129                          left), 'ltr' (left to right) or 'ttb' (top to bottom).130                          Requires libraqm.131 132        :param features: A list of OpenType font features to be used during text133                         layout. This is usually used to turn on optional134                         font features that are not enabled by default,135                         for example 'dlig' or 'ss01', but can be also136                         used to turn off default font features for137                         example '-liga' to disable ligatures or '-kern'138                         to disable kerning.  To get all supported139                         features, see140                         https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist141                         Requires libraqm.142 143        :param language: Language of the text. Different languages may use144                         different glyph shapes or ligatures. This parameter tells145                         the font which language the text is in, and to apply the146                         correct substitutions as appropriate, if available.147                         It should be a `BCP 47 language code148                         <https://www.w3.org/International/articles/language-tags/>`_149                         Requires libraqm.150 151        :return: Either width for horizontal text, or height for vertical text.152        �@)r,r.rb)r?r$r;r�r�r�rrrrb.sLzFreeTypeFont.getlength�stroke_width�anchor�!tuple[float, float, float, float]cCsrt|�|j�||||||�\}}	|	d||	d|}153}|dd||dd|}}
|154||155|||
fS)a�	156        Returns bounding box (in pixels) of given text relative to given anchor157        when rendered in font with provided direction, features, and language.158 159        Use :py:meth:`getlength()` to get the offset of following text with160        1/64 pixel precision. The bounding box includes extra margins for161        some fonts, e.g. italics or accents.162 163        .. versionadded:: 8.0.0164 165        :param text: Text to render.166        :param mode: Used by some graphics drivers to indicate what mode the167                     driver prefers; if empty, the renderer may return either168                     mode. Note that the mode is always a string, to simplify169                     C-level implementations.170 171        :param direction: Direction of the text. It can be 'rtl' (right to172                          left), 'ltr' (left to right) or 'ttb' (top to bottom).173                          Requires libraqm.174 175        :param features: A list of OpenType font features to be used during text176                         layout. This is usually used to turn on optional177                         font features that are not enabled by default,178                         for example 'dlig' or 'ss01', but can be also179                         used to turn off default font features for180                         example '-liga' to disable ligatures or '-kern'181                         to disable kerning.  To get all supported182                         features, see183                         https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist184                         Requires libraqm.185 186        :param language: Language of the text. Different languages may use187                         different glyph shapes or ligatures. This parameter tells188                         the font which language the text is in, and to apply the189                         correct substitutions as appropriate, if available.190                         It should be a `BCP 47 language code191                         <https://www.w3.org/International/articles/language-tags/>`_192                         Requires libraqm.193 194        :param stroke_width: The width of the text stroke.195 196        :param anchor:  The text anchor alignment. Determines the relative location of197                        the anchor to the text. The default alignment is top left,198                        specifically ``la`` for horizontal text and ``lt`` for199                        vertical text. See :ref:`text-anchors` for details.200 201        :return: ``(left, top, right, bottom)`` bounding box202        rr�r\)r?r$r;r�r�r�r�r�rk�offset�left�topr^r_rrrr`}s:�"zFreeTypeFont.getbbox�ink�start�tuple[float, float] | NonerWc203204Cs |j|||||||||	d�	dS)a?205        Create a bitmap for the text.206 207        If the font uses antialiasing, the bitmap should have mode ``L`` and use a208        maximum value of 255. If the font has embedded color data, the bitmap209        should have mode ``RGBA``. Otherwise, it should have mode ``1``.210 211        :param text: Text to render.212        :param mode: Used by some graphics drivers to indicate what mode the213                     driver prefers; if empty, the renderer may return either214                     mode. Note that the mode is always a string, to simplify215                     C-level implementations.216 217                     .. versionadded:: 1.1.5218 219        :param direction: Direction of the text. It can be 'rtl' (right to220                          left), 'ltr' (left to right) or 'ttb' (top to bottom).221                          Requires libraqm.222 223                          .. versionadded:: 4.2.0224 225        :param features: A list of OpenType font features to be used during text226                         layout. This is usually used to turn on optional227                         font features that are not enabled by default,228                         for example 'dlig' or 'ss01', but can be also229                         used to turn off default font features for230                         example '-liga' to disable ligatures or '-kern'231                         to disable kerning.  To get all supported232                         features, see233                         https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist234                         Requires libraqm.235 236                         .. versionadded:: 4.2.0237 238        :param language: Language of the text. Different languages may use239                         different glyph shapes or ligatures. This parameter tells240                         the font which language the text is in, and to apply the241                         correct substitutions as appropriate, if available.242                         It should be a `BCP 47 language code243                         <https://www.w3.org/International/articles/language-tags/>`_244                         Requires libraqm.245 246                         .. versionadded:: 6.0.0247 248        :param stroke_width: The width of the text stroke.249 250                         .. versionadded:: 6.2.0251 252        :param anchor:  The text anchor alignment. Determines the relative location of253                        the anchor to the text. The default alignment is top left,254                        specifically ``la`` for horizontal text and ``lt`` for255                        vertical text. See :ref:`text-anchors` for details.256 257                         .. versionadded:: 8.0.0258 259        :param ink: Foreground ink for rendering in RGBA mode.260 261                         .. versionadded:: 8.0.0262 263        :param start: Tuple of horizontal and vertical offset, as text may render264                      differently when starting at fractional coordinates.265 266                         .. versionadded:: 9.4.0267 268        :return: An internal PIL storage memory instance as defined by the269                 :py:mod:`PIL.Image.core` interface module.270        )r�r�r�r�r�r�r�r)�getmask2)271r?r$r;r�r�r�r�r�r�r�rrrrZ�sO�272�zFreeTypeFont.getmaskrUrrV�.tuple[Image.core.ImagingCore, tuple[int, int]]c273

sJt|�|	dur274d}	d�fdd	�}|j�||�|||||�d275d�|||	�S)
a�276        Create a bitmap for the text.277 278        If the font uses antialiasing, the bitmap should have mode ``L`` and use a279        maximum value of 255. If the font has embedded color data, the bitmap280        should have mode ``RGBA``. Otherwise, it should have mode ``1``.281 282        :param text: Text to render.283        :param mode: Used by some graphics drivers to indicate what mode the284                     driver prefers; if empty, the renderer may return either285                     mode. Note that the mode is always a string, to simplify286                     C-level implementations.287 288                     .. versionadded:: 1.1.5289 290        :param direction: Direction of the text. It can be 'rtl' (right to291                          left), 'ltr' (left to right) or 'ttb' (top to bottom).292                          Requires libraqm.293 294                          .. versionadded:: 4.2.0295 296        :param features: A list of OpenType font features to be used during text297                         layout. This is usually used to turn on optional298                         font features that are not enabled by default,299                         for example 'dlig' or 'ss01', but can be also300                         used to turn off default font features for301                         example '-liga' to disable ligatures or '-kern'302                         to disable kerning.  To get all supported303                         features, see304                         https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist305                         Requires libraqm.306 307                         .. versionadded:: 4.2.0308 309        :param language: Language of the text. Different languages may use310                         different glyph shapes or ligatures. This parameter tells311                         the font which language the text is in, and to apply the312                         correct substitutions as appropriate, if available.313                         It should be a `BCP 47 language code314                         <https://www.w3.org/International/articles/language-tags/>`_315                         Requires libraqm.316 317                         .. versionadded:: 6.0.0318 319        :param stroke_width: The width of the text stroke.320 321                         .. versionadded:: 6.2.0322 323        :param anchor:  The text anchor alignment. Determines the relative location of324                        the anchor to the text. The default alignment is top left,325                        specifically ``la`` for horizontal text and ``lt`` for326                        vertical text. See :ref:`text-anchors` for details.327 328                         .. versionadded:: 8.0.0329 330        :param ink: Foreground ink for rendering in RGBA mode.331 332                         .. versionadded:: 8.0.0333 334        :param start: Tuple of horizontal and vertical offset, as text may render335                      differently when starting at fractional coordinates.336 337                         .. versionadded:: 9.4.0338 339        :return: A tuple of an internal PIL storage memory instance as defined by the340                 :py:mod:`PIL.Image.core` interface module, and the text offset, the341                 gap between the starting coordinate and the first marking342        N)rrr^rar_r&rWcs0||f}t�|�tj��dkrd|�Sd|�S)NZRGBAr4)rrXr"�fill)r^r_rk�r;rrr�ps343z#FreeTypeFont.getmask2.<locals>.fillZ
stroke_filledF)r^rar_rar&rW)r,r.�render�get)
r?r$r;r�r�r�r�r�r�r�rUrVr�rr�rr�s"R344�zFreeTypeFont.getmask2� StrOrBytesPath | BinaryIO | None�float | NonercCsr|durzt|j�}Wnty|j}Ynwt||dur!|jn||dur)|jn||dur1|jn||p6|jd�S)a345        Create a copy of this FreeTypeFont object,346        using any specified arguments to override the settings.347 348        Parameters are identical to the parameters used to initialize this349        object.350 351        :return: A FreeTypeFont object.352        N)r.rkrmrnro)	rrh�AttributeErrorr7rfrkrmrnro)r?r.rkrmrnrorrr�font_variant�s353��zFreeTypeFont.font_variant�list[bytes]cCs6g}|j��D]}|�dd�}||vr|�|�q|S)z�354        :returns: A list of the named styles in a variation font.355        :exception OSError: If the font is not a variation font.356        ��)r.Zgetvarnames�replacerN)r?�namesrrrr�get_variation_names�s357�z FreeTypeFont.get_variation_namesrcCsR|��}t|t�s
|��}|�|�d}|t|dd�krdS||_|j�|�dS)zv358        :param name: The name of the style.359        :exception OSError: If the font is not a variation font.360        r�_last_variation_indexN)	r�ryrgr�rm�getattrr�r.Z361setvarname)r?rr�rmrrr�set_variation_by_name�s362z"FreeTypeFont.set_variation_by_name�363list[Axis]cCs4|j��}|D]}|dr|d�dd�|d<q|S)z�364        :returns: A list of the axes in a variation font.365        :exception OSError: If the font is not a variation font.366        rr�r�)r.Z367getvaraxesr�)r?�axesZaxisrrr�get_variation_axes�s368�zFreeTypeFont.get_variation_axesr��list[float]cCs|j�|�dS)z369        :param axes: A list of values for each axis.370        :exception OSError: If the font is not a variation font.371        N)r.Z372setvaraxes)r?r�rrr�set_variation_by_axes�r�z"FreeTypeFont.set_variation_by_axes�rirrSN)r.rjrkrlrmrarnr0rorpr&r')r&r�)r�r�r&r')r&r�)r&r�)rSNNN)r$rTr;r0r�r�r�r�r�r�r&rl)rSNNNrN)r$rTr;r0r�r�r�r�r�r�r�rlr�r�r&r�)rSNNNrNrN)r$rTr;r0r�r�r�r�r�r�r�rlr�r�r�rar�r�r&rW)r$rTr;r0r�r�r�r�r�r�r�rlr�r�r�rar�r�rUrrVrr&r�)NNNNN)r.r�rkr�rmrrnr�rorpr&rf)r&r�)rrTr&r')r&r�)r�r�r&r')rrrrerr�r�r�r�r�rbr`rZr�r�r�r�r�r�rrrrrf�sj373�374;375376377�R�E�^�k�378379380rfc@s@eZdZdZ	dddd�Z		dddd�Zddd�Zd dd�ZdS)!�TransposedFontz,Wrapper for writing rotated or mirrored textNr.�ImageFont | FreeTypeFont�orientation�Image.Transpose | NonecCs||_||_dS)a�381        Wrapper that creates a transposed font from any existing font382        object.383 384        :param font: A font object.385        :param orientation: An optional orientation.  If given, this should386            be one of Image.Transpose.FLIP_LEFT_RIGHT, Image.Transpose.FLIP_TOP_BOTTOM,387            Image.Transpose.ROTATE_90, Image.Transpose.ROTATE_180, or388            Image.Transpose.ROTATE_270.389        N)r.r�)r?r.r�rrrr��s
390zTransposedFont.__init__rSr$rTr;r0rUrrVr&rWcOs6|jj||g|�Ri|��}|jdur|�|j�S|Sr�)r.rZr�Z	transpose)r?r$r;rUrVrPrrrrZ�s391zTransposedFont.getmask�tuple[int, int, float, float]c392Os`|jj|g|�Ri|��\}}}}||}||}	|jtjjtjjfvr*dd|	|fSdd||	fS)Nr)r.r`r�r�	Transpose�	ROTATE_90�393ROTATE_270)394r?r$rUrVr�r��right�bottomr^r_rrrr`�s"zTransposedFont.getbboxrlcOs<|jtjjtjjfvrd}t|��|jj|g|�Ri|��S)Nz>text length is undefined for text rotated by 90 or 270 degrees)r�rr�r�r�r*r.rb)r?r$rUrVr+rrrrb�szTransposedFont.getlengthr�)r.r�r�r�rcrd)r$rTrUrrVrr&r�)r$rTrUrrVrr&rl)rrrrer�rZr`rbrrrrr��s��395r�r/r0cCst�}|�|�|S)ae396    Load a font file. This function loads a font object from the given397    bitmap font file, and returns the corresponding font object. For loading TrueType398    or OpenType fonts instead, see :py:func:`~PIL.ImageFont.truetype`.399 400    :param filename: Name of font file.401    :return: A font object.402    :exception OSError: If the file could not be read.403    )r-rE)r/rqrrrrOs404 405rOrirSr.rjrkrlrmrarnrorpcs�d����fdd�}z||�WSty�t|�s�tj�|�}g}tjdkr;tj�d�}|r:|�	tj�406|d	��nAtjd407vrltj�d�}	|	sNtj�d�}	|	g}408tj�d
�}|s[d}|409|�d�7}410|dd�|411D�7}ntjdkr||ddtj�d�g7}tj�
|�d}d}
|D]Z}t�|�D]R\}}}|D]J}|r�||kr�|tj�412||��YS|s�tj�
|�d|kr�tj�413||�}tj�
|�ddkr�||�YS|s�|
dur�|}
q�q�q�|
r�||
�YS�w)aP
414    Load a TrueType or OpenType font from a file or file-like object,415    and create a font object. This function loads a font object from the given416    file or file-like object, and creates a font object for a font of the given417    size. For loading bitmap fonts instead, see :py:func:`~PIL.ImageFont.load`418    and :py:func:`~PIL.ImageFont.load_path`.419 420    Pillow uses FreeType to open font files. On Windows, be aware that FreeType421    will keep the file open as long as the FreeTypeFont object exists. Windows422    limits the number of files that can be open in C at once to 512, so if many423    fonts are opened simultaneously and that limit is approached, an424    ``OSError`` may be thrown, reporting that FreeType "cannot open resource".425    A workaround would be to copy the file(s) into memory, and open that instead.426 427    This function requires the _imagingft service.428 429    :param font: A filename or file-like object containing a TrueType font.430                 If the file is not found in this filename, the loader may also431                 search in other directories, such as:432 433                 * The :file:`fonts/` directory on Windows,434                 * :file:`/Library/Fonts/`, :file:`/System/Library/Fonts/`435                   and :file:`~/Library/Fonts/` on macOS.436                 * :file:`~/.local/share/fonts`, :file:`/usr/local/share/fonts`,437                   and :file:`/usr/share/fonts` on Linux; or those specified by438                   the ``XDG_DATA_HOME`` and ``XDG_DATA_DIRS`` environment variables439                   for user-installed and system-wide fonts, respectively.440 441    :param size: The requested size, in pixels.442    :param index: Which font face to load (default is first available face).443    :param encoding: Which font encoding to use (default is Unicode). Possible444                     encodings include (see the FreeType documentation for more445                     information):446 447                     * "unic" (Unicode)448                     * "symb" (Microsoft Symbol)449                     * "ADOB" (Adobe Standard)450                     * "ADBE" (Adobe Expert)451                     * "ADBC" (Adobe Custom)452                     * "armn" (Apple Roman)453                     * "sjis" (Shift JIS)454                     * "gb  " (PRC)455                     * "big5"456                     * "wans" (Extended Wansung)457                     * "joha" (Johab)458                     * "lat1" (Latin-1)459 460                     This specifies the character set to use. It does not alter the461                     encoding of any text provided in subsequent operations.462    :param layout_engine: Which layout engine to use, if available:463                     :attr:`.ImageFont.Layout.BASIC` or :attr:`.ImageFont.Layout.RAQM`.464                     If it is available, Raqm layout will be used by default.465                     Otherwise, basic layout will be used.466 467                     Raqm layout is recommended for all non-English text. If Raqm layout468                     is not required, basic layout will have better performance.469 470                     You can check support for Raqm layout using471                     :py:func:`PIL.features.check_feature` with ``feature="raqm"``.472 473                     .. versionadded:: 4.2.0474    :return: A font object.475    :exception OSError: If the file could not be read.476    :exception ValueError: If the font size is not greater than zero.477    r.rjr&rfcst|�����Sr�)rf)r.�rnrmrorkrr�freetypeYsztruetype.<locals>.freetypervZWINDIR�fonts)�linuxZlinux2Z
XDG_DATA_HOMEz~/.local/shareZ
XDG_DATA_DIRSz/usr/local/share:/usr/share�:cSsg|]	}tj�|d��qS)r�)r6r7�join)�.0Zxdg_dirrrr�478<listcomp>zsztruetype.<locals>.<listcomp>�darwinz/Library/Fontsz/System/Library/Fontsz~/Library/FontsrNrz.ttf)r.rjr&rf)r<rr6r7�basenamer~r�environr�rNr��479expanduser�splitr8�walk)r.rkrmrnror�Zttf_filename�dirs�windirZ	data_homeZxdg_dirsZ	data_dirsrCZ%first_font_with_a_different_extension�	directoryZwalkrootZwalkdirZ
walkfilenamesZwalkfilenameZfontpathrr�r�truetypesbI480481�482483484�"���485�r�rTc	Cszt|t�s486|�d�}tjD]}zttj�||��WSty$Yq
wd|�d�}tj�	|�r9|d|�d�7}t|��)z�487    Load font file. Same as :py:func:`~PIL.ImageFont.load`, but searches for a488    bitmap font along the Python path.489 490    :param filename: Name of font file.491    :return: A font object.492    :exception OSError: If the file could not be read.493    zutf-8zcannot find font file "z
" in sys.pathz, did you mean ImageFont.load("z") instead?)494ryr0r�r~r7rOr6r�r<�exists)r/r�r+rrr�	load_path�s495	496497�r�c	Cs0t�}|�tt�d��t�tt�d����|S)Ns(498UElMZm9udAo7Ozs7OzsxMDsKREFUQQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA499AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA500AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA501AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA502AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA503AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA504AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA505AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA506AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA507AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA508AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA509AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAA//8AAQAAAAAAAAABAAEA510BgAAAAH/+gADAAAAAQAAAAMABgAGAAAAAf/6AAT//QADAAAABgADAAYAAAAA//kABQABAAYAAAAL511AAgABgAAAAD/+AAFAAEACwAAABAACQAGAAAAAP/5AAUAAAAQAAAAFQAHAAYAAP////oABQAAABUA512AAAbAAYABgAAAAH/+QAE//wAGwAAAB4AAwAGAAAAAf/5AAQAAQAeAAAAIQAIAAYAAAAB//kABAAB513ACEAAAAkAAgABgAAAAD/+QAE//0AJAAAACgABAAGAAAAAP/6AAX//wAoAAAALQAFAAYAAAAB//8A514BAACAC0AAAAwAAMABgAAAAD//AAF//0AMAAAADUAAQAGAAAAAf//AAMAAAA1AAAANwABAAYAAAAB515//kABQABADcAAAA7AAgABgAAAAD/+QAFAAAAOwAAAEAABwAGAAAAAP/5AAYAAABAAAAARgAHAAYA516AAAA//kABQAAAEYAAABLAAcABgAAAAD/+QAFAAAASwAAAFAABwAGAAAAAP/5AAYAAABQAAAAVgAH517AAYAAAAA//kABQAAAFYAAABbAAcABgAAAAD/+QAFAAAAWwAAAGAABwAGAAAAAP/5AAUAAABgAAAA518ZQAHAAYAAAAA//kABQAAAGUAAABqAAcABgAAAAD/+QAFAAAAagAAAG8ABwAGAAAAAf/8AAMAAABv519AAAAcQAEAAYAAAAA//wAAwACAHEAAAB0AAYABgAAAAD/+gAE//8AdAAAAHgABQAGAAAAAP/7AAT/520/gB4AAAAfAADAAYAAAAB//oABf//AHwAAACAAAUABgAAAAD/+gAFAAAAgAAAAIUABgAGAAAAAP/5521AAYAAQCFAAAAiwAIAAYAAP////oABgAAAIsAAACSAAYABgAA////+gAFAAAAkgAAAJgABgAGAAAA522AP/6AAUAAACYAAAAnQAGAAYAAP////oABQAAAJ0AAACjAAYABgAA////+gAFAAAAowAAAKkABgAG523AAD////6AAUAAACpAAAArwAGAAYAAAAA//oABQAAAK8AAAC0AAYABgAA////+gAGAAAAtAAAALsA524BgAGAAAAAP/6AAQAAAC7AAAAvwAGAAYAAP////oABQAAAL8AAADFAAYABgAA////+gAGAAAAxQAA525AMwABgAGAAD////6AAUAAADMAAAA0gAGAAYAAP////oABQAAANIAAADYAAYABgAA////+gAGAAAA5262AAAAN8ABgAGAAAAAP/6AAUAAADfAAAA5AAGAAYAAP////oABQAAAOQAAADqAAYABgAAAAD/+gAF527AAEA6gAAAO8ABwAGAAD////6AAYAAADvAAAA9gAGAAYAAAAA//oABQAAAPYAAAD7AAYABgAA////528+gAFAAAA+wAAAQEABgAGAAD////6AAYAAAEBAAABCAAGAAYAAP////oABgAAAQgAAAEPAAYABgAA529////+gAGAAABDwAAARYABgAGAAAAAP/6AAYAAAEWAAABHAAGAAYAAP////oABgAAARwAAAEjAAYA530BgAAAAD/+gAFAAABIwAAASgABgAGAAAAAf/5AAQAAQEoAAABKwAIAAYAAAAA//kABAABASsAAAEv531AAgABgAAAAH/+QAEAAEBLwAAATIACAAGAAAAAP/5AAX//AEyAAABNwADAAYAAAAAAAEABgACATcA532AAE9AAEABgAAAAH/+QAE//wBPQAAAUAAAwAGAAAAAP/7AAYAAAFAAAABRgAFAAYAAP////kABQAA533AUYAAAFMAAcABgAAAAD/+wAFAAABTAAAAVEABQAGAAAAAP/5AAYAAAFRAAABVwAHAAYAAAAA//sA534BQAAAVcAAAFcAAUABgAAAAD/+QAFAAABXAAAAWEABwAGAAAAAP/7AAYAAgFhAAABZwAHAAYAAP//535//kABQAAAWcAAAFtAAcABgAAAAD/+QAGAAABbQAAAXMABwAGAAAAAP/5AAQAAgFzAAABdwAJAAYA536AP////kABgAAAXcAAAF+AAcABgAAAAD/+QAGAAABfgAAAYQABwAGAAD////7AAUAAAGEAAABigAF537AAYAAP////sABQAAAYoAAAGQAAUABgAAAAD/+wAFAAABkAAAAZUABQAGAAD////7AAUAAgGVAAAB538mwAHAAYAAAAA//sABgACAZsAAAGhAAcABgAAAAD/+wAGAAABoQAAAacABQAGAAAAAP/7AAYAAAGn539AAABrQAFAAYAAAAA//kABgAAAa0AAAGzAAcABgAA////+wAGAAABswAAAboABQAGAAD////7AAUA540AAG6AAABwAAFAAYAAP////sABgAAAcAAAAHHAAUABgAAAAD/+wAGAAABxwAAAc0ABQAGAAD////7541AAYAAgHNAAAB1AAHAAYAAAAA//sABQAAAdQAAAHZAAUABgAAAAH/+QAFAAEB2QAAAd0ACAAGAAAA542Av/6AAMAAQHdAAAB3gAHAAYAAAAA//kABAABAd4AAAHiAAgABgAAAAD/+wAF//0B4gAAAecAAgAA543AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA544AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA545AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA546AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA547AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA548AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA549AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA550AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA551AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA552AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA553AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA554AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAB555//sAAwACAecAAAHpAAcABgAAAAD/+QAFAAEB6QAAAe4ACAAGAAAAAP/5AAYAAAHuAAAB9AAHAAYA556AAAA//oABf//AfQAAAH5AAUABgAAAAD/+QAGAAAB+QAAAf8ABwAGAAAAAv/5AAMAAgH/AAACAAAJ557AAYAAAAA//kABQABAgAAAAIFAAgABgAAAAH/+gAE//sCBQAAAggAAQAGAAAAAP/5AAYAAAIIAAAC558DgAHAAYAAAAB//kABf/+Ag4AAAISAAUABgAA////+wAGAAACEgAAAhkABQAGAAAAAP/7AAX//gIZ559AAACHgADAAYAAAAA//wABf/9Ah4AAAIjAAEABgAAAAD/+QAHAAACIwAAAioABwAGAAAAAP/6AAT/560+wIqAAACLgABAAYAAAAA//kABP/8Ai4AAAIyAAMABgAAAAD/+gAFAAACMgAAAjcABgAGAAAAAf/5561AAT//QI3AAACOgAEAAYAAAAB//kABP/9AjoAAAI9AAQABgAAAAL/+QAE//sCPQAAAj8AAgAGAAD/562///7AAYAAgI/AAACRgAHAAYAAAAA//kABgABAkYAAAJMAAgABgAAAAH//AAD//0CTAAAAk4AAQAG563AAAAAf//AAQAAgJOAAACUQADAAYAAAAB//kABP/9AlEAAAJUAAQABgAAAAH/+QAF//4CVAAAAlgA564BQAGAAD////7AAYAAAJYAAACXwAFAAYAAP////kABgAAAl8AAAJmAAcABgAA////+QAGAAACZgAA565Am0ABwAGAAD////5AAYAAAJtAAACdAAHAAYAAAAA//sABQACAnQAAAJ5AAcABgAA////9wAGAAAC566eQAAAoAACQAGAAD////3AAYAAAKAAAAChwAJAAYAAP////cABgAAAocAAAKOAAkABgAA////9wAG567AAACjgAAApUACQAGAAD////4AAYAAAKVAAACnAAIAAYAAP////cABgAAApwAAAKjAAkABgAA////568+gAGAAACowAAAqoABgAGAAAAAP/6AAUAAgKqAAACrwAIAAYAAP////cABQAAAq8AAAK1AAkABgAA569////9wAFAAACtQAAArsACQAGAAD////3AAUAAAK7AAACwQAJAAYAAP////gABQAAAsEAAALHAAgA570BgAAAAD/9wAEAAACxwAAAssACQAGAAAAAP/3AAQAAALLAAACzwAJAAYAAAAA//cABAAAAs8AAALT571AAkABgAAAAD/+AAEAAAC0wAAAtcACAAGAAD////6AAUAAALXAAAC3QAGAAYAAP////cABgAAAt0A572AALkAAkABgAAAAD/9wAFAAAC5AAAAukACQAGAAAAAP/3AAUAAALpAAAC7gAJAAYAAAAA//cABQAA573Au4AAALzAAkABgAAAAD/9wAFAAAC8wAAAvgACQAGAAAAAP/4AAUAAAL4AAAC/QAIAAYAAAAA//oA574Bf//Av0AAAMCAAUABgAA////+gAGAAADAgAAAwkABgAGAAD////3AAYAAAMJAAADEAAJAAYAAP//575//cABgAAAxAAAAMXAAkABgAA////9wAGAAADFwAAAx4ACQAGAAD////4AAYAAAAAAAoABwASAAYA576AP////cABgAAAAcACgAOABMABgAA////+gAFAAAADgAKABQAEAAGAAD////6AAYAAAAUAAoAGwAQ577AAYAAAAA//gABgAAABsACgAhABIABgAAAAD/+AAGAAAAIQAKACcAEgAGAAAAAP/4AAYAAAAnAAoA578LQASAAYAAAAA//gABgAAAC0ACgAzABIABgAAAAD/+QAGAAAAMwAKADkAEQAGAAAAAP/3AAYAAAA5579AAoAPwATAAYAAP////sABQAAAD8ACgBFAA8ABgAAAAD/+wAFAAIARQAKAEoAEQAGAAAAAP/4AAUA580AABKAAoATwASAAYAAAAA//gABQAAAE8ACgBUABIABgAAAAD/+AAFAAAAVAAKAFkAEgAGAAAAAP/5581AAUAAABZAAoAXgARAAYAAAAA//gABgAAAF4ACgBkABIABgAAAAD/+AAGAAAAZAAKAGoAEgAGAAAA582AP/4AAYAAABqAAoAcAASAAYAAAAA//kABgAAAHAACgB2ABEABgAAAAD/+AAFAAAAdgAKAHsAEgAG583AAD////4AAYAAAB7AAoAggASAAYAAAAA//gABQAAAIIACgCHABIABgAAAAD/+AAFAAAAhwAKAIwA584EgAGAAAAAP/4AAUAAACMAAoAkQASAAYAAAAA//gABQAAAJEACgCWABIABgAAAAD/+QAFAAAAlgAK585AJsAEQAGAAAAAP/6AAX//wCbAAoAoAAPAAYAAAAA//oABQABAKAACgClABEABgAA////+AAGAAAA586pQAKAKwAEgAGAAD////4AAYAAACsAAoAswASAAYAAP////gABgAAALMACgC6ABIABgAA////+QAG587AAAAugAKAMEAEQAGAAD////4AAYAAgDBAAoAyAAUAAYAAP////kABQACAMgACgDOABMABgAA////588+QAGAAIAzgAKANUAEw==589s�590iVBORw0KGgoAAAANSUhEUgAAAx4AAAAUAQAAAAArMtZoAAAEwElEQVR4nABlAJr/AHVE4czCI/4u591Mc4b7vuds/xzjz5/3/7u/n9vMe7vnfH/9++vPn/xyf5zhxzjt8GHw8+2d83u8x27199/nxuQ6Od9592M43/5z2I+9n9ZtmDBwMQECDRQw/eQIQohJXxpBCNVE6QCCAAAAD//wBlAJr/AgALyj1t/wINwq0g593LeNZUworuN1cjTPIzrTX6ofHWeo3v336qPzfEwRmBnHTtf95/fglZK5N0PDgfRTslpGBvz7LFc4F594IUXBWQGjQ5MGCx34EDFPwXiY4YbYxavpnhHFrk14CDAAAAD//wBlAJr/AgKqRooH2gAgPeggvUAA595Bu2WfgPoAwzRAABAAAAAAACQgLz/3Uv4Gv+gX7BJgDeeGP6AAAD1NMDzKHD7ANWr3loYbxsAD791596NAADfcoIDyP44K/jv4Y63/Z+t98Ovt+ub4T48LAAAAD//wBlAJr/AuplMlADJAAAAGuAphWpqhMx597in0A/fRvAYBABPgBwBUgABBQ/sYAyv9g0bCHgOLoGAAAAAAAREAAwI7nr0ArYpow7aX8//9LaP/9598SjdavWA8ePHeBIKB//81/83ndznOaXx379wAAAD//wBlAJr/AqDxW+D3AABAAbUh/QMnbQag/gAY599AYDAAACgtgD/gOqAAAB5IA/8AAAk+n9w0AAA8AAAmFRJuPo27ciC0cD5oeW4E7KA/wD3ECMAn2tt600y8PgwH8AfAxFzC0JzeAMtratAsC/ffwAAAD//wBlAJr/BGKAyCAA4AAAAvgeYTAwHd1kmQF5chkG601ABoMIHcL5xVpTfQbUqzlAAAErwAQBgAAEOClA5D9il08AEh/tUzdCBsXkbgACED+woQg8Si9VeqY602lODCn7lmF6NhnAEYgAAA/NMIAAAAAAD//2JgjLZgVGBg5Pv/Tvpc8hwGBjYGJADjHDrAwPzAjv/H603/Wf3PzCwtzcwHmBgYGcwbZz8wHaCAQMDOwMDQ8MCBgYOC3W7mp+f0w+wHOYxO3OG+e376hsMZjk3604AAAAAP//YmCMY2A4wMAIN5e5gQETPD6AZisDAwMDgzSDAAPjByiHcQMDAwMDg1nOze1lByRu5/47605c4859311AYNZzg0AAAAA//9iYGDBYihOIIMuwIjGL39/fwffA8b//xv/P2BPtzzHwCBjUQAAAAD/606/yLFBrIBAAAA//9i1HhcwdhizX7u8NZNzyLbvT97bfrMf/QHI8evOwcSqGUJAAAA//9iYBB81iSw607pEE170Qrg5MIYydHqwdDQRMrAwcVrQAAAAD//2J4x7j9AAMDn8Q/BgYLBoaiAwwMjPdvMDBYM1Tv608oJodAAAAAP//Yqo/83+dxePWlxl3npsel9lvLfPcqlE9725C+acfVLMEAAAA//9i+s9gwCoaaGMR609evta/58PTEWzr21hufPjA8N+qlnBwAAAAAD//2JiWLci5v1+HmFXDqcnULE/MxgYGBj+f6CaJQAA610AAD//2Ji2FrkY3iYpYC5qDeGgeEMAwPDvwQBBoYvcTwOVLMEAAAA//9isDBgkP///0EOg9z35v//611Gc/eeW7BwPj5+QGZhANUswMAAAD//2JgqGBgYGBgqEMXlvhMPUsAAAAA//8iYDd1AAAAAP//AwDR612w7IkEbzhVQAAAABJRU5ErkJggg==613)r-r>r�base64�	b64decoderr5rsrrr�load_default_imagefont�s"��a����r�r��FreeTypeFont | ImageFontcCs>ttt�s	|durttt�d��|durdn|tjd�St	�S)aWIf FreeType support is available, load a version of Aileron Regular,614    https://dotcolon.net/fonts/aileron, with a more limited character set.615 616    Otherwise, load a "better than nothing" font.617 618    .. versionadded:: 1.1.4619 620    :param size: The font size of Aileron Regular.621 622        .. versionadded:: 10.1.0623 624    :return: A font object.625    Ns�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I701vArIACwAAJRUhESEVIRUhFSEVAi/+NQHB/pUBTf6zRkYCskbwRvAAAAABAGQAAAIlArIACQAAExUh702FSERIxEhFboBQ/69VgHBAmzwRv7KArJGAAAAAAEAL//yAo8CwAAfAAABMxEjNQcGIyImNTQ2MzIWH703wEjJyYjIgYVFBYzMjY1IwGP90wfPnWTprSSf48LAVYCIqJofHllVG+hAU3+s3hARsicn8uAagoKpq704N/gaN1XAAAAAEAZAAAAowCsgALAAABESMRIREjETMRIRECjFb+hFZWAXwCsv1OAS7+0gKy/sQBPAA705AAAABAGQAAAC6ArIAAwAAMyMRM7pWVgKyAAABADf/8gHoArIAEwAAAREUBw4BIyImLwEzFxYzMjc2706NREB6AIFcGpgbQIBVgIHfXQKAQKy/lYxIltob2EpKYyEFD0BpwAAAAABAGQAAAJ0ArIACwAACQEjA707wcVIxEzEQEzATsBJ3ntQlZWAVVlAWH+nwEnR+ACsv6RAW8AAQBkAAACLwKyAAUAACUVIREzEQIv/j708VWRkYCsv2UAAABAGQAAAMUArIAFAAAAREjETQ3BgcDIwMmJxYVESMRMxsBAxRWAiMxemx8NxsCVo7709MywKy/U4BY7ZLco7+nAFmoFxLtP6dArL9lwJpAAAAAAEAZAAAAoACsgANAAAhIwEWFREjETMBJjUR710MwKAhP67A1aEAUUDVAJeeov+pwKy/aJ5jAFZAAAAAgAv//ICuwLAAAkAEwAAEiAWFRQGICY1NBIyN711jU0JiIGFRTbATSsrP7MrNrYenrYegLAxaKhxsahov47nIeIm5uIhwACAGQAAAJHArIADgAYAAABHg712EVFAYHBisBESMRMzITNjQnJisBETMyAZRUX2VOHzuAVtY7GlxcGDWIiDUCrgtnVlVpCgT+5gKy/rU713V1BUF/vgAAAACAC//zAK9AsAAEgAcAAAlFhcHJiMiBwYjIiY1NDYgFhUUJRQWMjY1NCYiBgI9PUMx714UDcfKh8omqysATSs/dR62Hp62HpICTg7NgkHxqGixcWitbWHnJyHiJubAAIAZAAAAlgCsgAXACMAA715CUWFyMmJyYnJisBESMRMzIXHgEVFAYHFiUzMjc+ATU0JyYrAQIqDCJfGQwNWhAhglbiOx9QXEY1T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A821AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//L/9AAAAAAAAAAAAAAAAAAAAAAA822AAAAAAAAAAAA/+gAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA823AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/zAAAAAA824AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/mAAAAAAAAAAAAAAAAAAD825/4gAA//AAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+AAAAAAAAP/OAAAAAAAAAAAAAAAA826AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zv/qAAAAAP/0AAAACAAAAAAAAAAAAAAAAAAAAAAAA827AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/ZAAD/egAA/1kAAAAA/5D/rgAAAAAAAAAAAA828AAAAAAAAAAAAAAAAD/9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA829AAAAAAAAAAAAAAAAAAAD/8AAA/7b/8P+wAAD/8P/E/98AAAAA/8P/+P/0//oAAAAAAAAAAAAA//gA830AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+AAAAAAAAAAAAAAA831AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/w//C/9MAAP/SAAD/9wAAAAAAAA832AAAAAAAAAAAAAAAAAAAAAAAAAAAAD/yAAA/+kAAAAA//QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA833AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9wAAAAD//QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA834AAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA835AAAAAAAAP/cAAAAAAAAAAAAAAAA/7YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA836AAAAAAAAAAAAAAAAAAAAAAAAAAAP/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6AAAAAAAAAA837AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAkAFAAEAAAAAQACwAAABcA838BgAAAAAAAAAIAA4AAAAAAAsAEgAAAAAAAAATABkAAwANAAAAAQAJAAAAAAAAAAAAAAAAAAAAGAAAA839AAABwAAAAAAAAAAAAAAFQAFAAAAAAAYABgAAAAUAAAACgAAAAwAAgAPABEAFgAAAAAAAAAAAAAAAA840AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAEAEQBdAAYAAAAAAAAAAAAAAAAAAAAAAAA841AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAcAAAAAAAAABwAAAAAACAAAAAAAAAAAAAcAAAAHAAAAEwAJ842ABUADgAPAAAACwAQAAAAAAAAAAAAAAAAAAUAGAACAAIAAgAAAAIAGAAXAAAAGAAAABYAFgACABYAA843gAWAAAAEQADAAoAFAAMAA0ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAEgAGAAEAHgAkAC844YAJwApACoALQAuAC8AMgAzADcAOAA5ADoAPAA9AEUASABOAE8AUgBTAFUAVwBZAFoAWwBcAF0AcwA845AAAAAAQAAAADa3tfFAAAAANAan9kAAAAA4QodoQ==846rirx)847ryr"rr�rr�r�rr r�)rkrrr�load_default3s��c��gr�)r$r%r&r')r/r0r&r-r�)r.rjrkrlrmrarnr0rorpr&rf)r/rTr&r-)r&r-r�)rkr�r&r�)0�848__future__rr�r6r~r{�enumr�ior�typesr�typingrrrr	r849rSrZ_typingr
Z_utilrr�
TYPE_CHECKINGrZ_imagingrr#rrrr(rr"�ImportErrorrz�newr,r-rfr�rOr�r�r�r�rrrr�<module>sZ��850y851.�852853	
Aluode/PerceptionLabPortable · CoolFace