%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /lib/python3/dist-packages/jeepney/__pycache__/
Upload File :
Create Path :
Current File : //lib/python3/dist-packages/jeepney/__pycache__/low_level.cpython-312.pyc

�

+�c�J��2�ddlmZddlmZmZmZddlZddlmZGd�de	�Z
Gd�de�Zejejd	�ZGd
�de�ZGd�d
e�ZGd�de�Zd�ZGd�d�ZGd�de�ZGd�de�Zedd�edd�edd�e�edd�edd�edd �edd!�edd"�e�d#�
ZGd$�d%�Zej1eed&�eed&�eed'�d(��Gd)�d*�ZGd+�d,e�ZGd-�d.�ZGd/�d0�Zd1�Zd2�Zeeed'e�g��Zd3�Z d4d5d5d5d&d5d5d6d&d7�	Z!d8�Z"Gd9�d:�Z#Gd;�d<�Z$Gd=�d>�Z%Gd?�d@�Z&y)A�)�deque)�Enum�IntEnum�IntFlagN)�Optionalc��eZdZdZy)�SizeLimitErrorz�Raised when trying to (de-)serialise data exceeding D-Bus' size limit.

    This is currently only implemented for arrays, where the maximum size is
    64 MiB.
    N)�__name__�
__module__�__qualname__�__doc__���3/usr/lib/python3/dist-packages/jeepney/low_level.pyr	r	s���
	rr	c� �eZdZdZdZd�Zd�Zy)�
Endianness��c�.�|tjurdSdS)N�<�>�r�little��selfs r�struct_codezEndianness.struct_codes���z�0�0�0�s�:�s�:rc�.�|tjurdSdS)N�l�Brrs r�	dbus_codezEndianness.dbus_codes���
� 1� 1�1�t�<��<rN)r
rrr�bigrr rrrrrs��
�F�
�C�;�=rr)rrc��eZdZdZdZdZdZy)�MessageTyperr��N)r
rr�method_call�
method_return�error�signalrrrr#r#s���K��M�
�E�
�Frr#c��eZdZdZdZdZy)�MessageFlagrrr%N)r
rr�no_reply_expected�
no_auto_start�allow_interactive_authorizationrrrr+r+#s�����M�&'�#rr+c�0�eZdZdZdZdZdZdZdZdZ	dZ
d	Zy
)�HeaderFieldsrrr$r%�����	N)r
rr�path�	interface�member�
error_name�reply_serial�destination�sender�	signature�unix_fdsrrrr0r0)s/���D��I�
�F��J��L��K�
�F��I��Hrr0c�"�|||zz
}||k(ry|S�Nrr)�pos�step�pads   r�paddingrD5s��
�#��*�
�C�
�d�{���Jrc�.�eZdZd�Zdd�Zdd�Zd�Zd�Zy)	�	FixedTypec�.�|x|_|_||_y�N)�size�	alignmentr)rrIrs   r�__init__zFixedType.__init__=s��%)�)��	�D�N�&��rc���|t||j�z
}|j�|jz}tj|||||j
z�d}|||j
zfSr@)rDrJr�struct�unpackrI)r�bufrA�
endianness�fds�code�vals       r�
parse_datazFixedType.parse_dataAsg���w�s�D�N�N�+�+���%�%�'�$�*:�*:�:���m�m�D�#�c�#��	�	�/�":�;�A�>���C�$�)�)�O�#�#rNc��dt||j�z}|j�|jz}|tj||�zS)N�)rDrJrrM�pack)r�datarArPrQrCrRs       r�	serialisezFixedType.serialiseGsF���g�c�4�>�>�2�2���%�%�'�$�*:�*:�:���V�[�[��t�,�,�,rc�N�dj|j|j�S)NzFixedType({!r}, {!r}))�formatrIrrs r�__repr__zFixedType.__repr__Ls��&�-�-�d�i�i��9I�9I�J�Jrc��t|�tuxr4|j|jk(xr|j|jk(SrH)�typerFrIr�r�others  r�__eq__zFixedType.__eq__Os@���U��y�(�<�t�y�y�E�J�J�/F�<��%�%��):�):�:�	<r�rrH)r
rrrKrTrYr\rarrrrFrF<s��'�$�-�
K�<rrFc�6��eZdZ�fd�Zd�fd�	Zd�Zd�Z�xZS)�Booleanc�&��t�|�dd�y�Nr%�I��superrK�r�	__class__s �rrKzBoolean.__init__U����
����C� rc�F��t�|�|||�\}}t|�|fSrH)rirT�bool)rrOrArPrQrS�new_posrks       �rrTzBoolean.parse_dataXs)����w�)�#�s�J�?���W��C�y�'�!�!rc��y)Nz	Boolean()rrs rr\zBoolean.__repr__\���rc�$�t|�tuSrH)r^rdr_s  rrazBoolean.__eq___����E�{�g�%�%rrb)r
rrrKrTr\ra�
__classcell__�rks@rrdrdTs���!�"��&rrdc�B��eZdZ�fd�Zd�fd�	Zd�fd�	Zd�Zd�Z�xZS)�FileDescriptorc�&��t�|�dd�yrfrhrjs �rrKzFileDescriptor.__init__drlrc�:��t�|�|||�\}}|||fSrH)rirT)rrOrArPrQ�idxrorks       �rrTzFileDescriptor.parse_datags)����w�)�#�s�J�?���W��3�x�� � rc�0��|�td��t|d�r|j�}t|t�st|t
�st
d��|dkrtd|�d���|j|�t�|�)t|�dz
||�S)Nz+Sending FDs is not supported or not enabled�filenozYCannot use {data!r} as file descriptor. Expected an int or an object with fileno() methodrz#File descriptor can't be negative (�)r)�RuntimeError�hasattrr|�
isinstancern�int�	TypeError�
ValueError�appendrirY�len)rrXrArPrQrks     �rrYzFileDescriptor.serialiseks�����;��L�M�M��4��"��;�;�=�D��d�D�!��D�#�)>��G�H�
H��!�8��B�4�&��J�K�K��
�
�4���w� ��S��A��s�J�?�?rc��y)NzFileDescriptor()rrs rr\zFileDescriptor.__repr__{s��!rc�$�t|�tuSrH)r^rwr_s  rrazFileDescriptor.__eq__~s���E�{�n�,�,rrbrH)	r
rrrKrTrYr\rartrus@rrwrwcs���!�!�@� "�-rrwr�Br�h�Hr%�irgr4�q�Q�d)
�y�nr��br��u�x�tr�r�c�>�eZdZd�Zed��Zdd�Zd	d�Zd�Zd�Z	y)
�
StringTypec��||_yrH)�length_type)rr�s  rrKzStringType.__init__�s
��&��rc�.�|jjSrH)r�rIrs rrJzStringType.alignment�s�����$�$�$rc��|jj|||�\}}||z}|||jd�}|||dzdk(sJ�||dzfS)N�utf-8rrV)r�rT�decode)rrOrArPrQ�length�endrSs        rrTzStringType.parse_data�sf���&�&�1�1�#�s�J�G�����F�l���#�c�l�!�!�'�*���3�s�Q�w��5�(�(�(��C�!�G�|�rNc���t|t�stdj|���|j	d�}|j
j
t|�||�}||zdzS)NzExpected str, not {!r}r�rV)r��strr�r[�encoder�rYr�)rrXrArPrQ�encoded�len_datas       rrYzStringType.serialise�s_���$��$��4�;�;�D�A�B�B��+�+�g�&���#�#�-�-�c�'�l�C��L���'�!�E�)�)rc�8�dj|j�S)NzStringType({!r}))r[r�rs rr\zStringType.__repr__�s��!�(�(��)9�)9�:�:rc�Z�t|�tuxr|j|jk(SrH)r^r�r�r_s  rrazStringType.__eq__�s,���U��z�)�;��$�$��(9�(9�9�	;rrbrH)
r
rrrK�propertyrJrTrYr\rarrrr�r��s/��'��%��%��*�;�;rr�r�r�)�s�o�gc�2�eZdZdZd�Zdd�Zd	d�Zd�Zd�Zy)
�Structr4c�L�td�|D��rtd��||_y)Nc3�<K�|]}t|t����y�wrH)r��	DictEntry)�.0�fs  r�	<genexpr>z"Struct.__init__.<locals>.<genexpr>�s����8�A�z�!�Y�'�8�s�zFound dict entry outside array)�anyr��fields)rr�s  rrKzStruct.__init__�s#���8��8�8��<�=�=���rc��|t|d�z
}g}|jD]+}|j||||��\}}|j|��-t	|�|fS)Nr4�rQ)rDr�rTr��tuple)rrOrArPrQ�res�field�vs        rrTzStruct.parse_data�sb���w�s�A�������[�[�	�E��%�%�c�3�
��%�D�F�A�s��J�J�q�M�	��S�z�3��rNc	�&�t|t�stdj|���t	|�t	|j
�k7r7t
djt	|�t	|j
����dt||j�z}|t	|�z
}g}t||j
�D]:\}}|j|j||||���|t	|d�z
}�<|dj|�zS)NzExpected tuple, not {!r}z{} entries for {} fieldsrVr����r)
r�r�r�r[r�r�r�rDrJ�zipr�rY�join)	rrXrArPrQrC�
res_pieces�itemr�s	         rrYzStruct.serialise�s����$��&��6�=�=�d�C�D�D��t�9��D�K�K�(�(��7�>�>��D�	�3�t�{�{�+���
��g�c�4�>�>�2�2���s�3�x����
��t�T�[�[�1�	'�K�D�%����e�o�o�d�C���o�M�N��3�z�"�~�&�&�C�	'��S�X�X�j�)�)�)rc�`�djt|�j|j�S)Nz{}({!r}))r[r^r
r�rs rr\zStruct.__repr__�s#��� � ��d��!4�!4�d�k�k�B�Brc�d�t|�t|�uxr|j|jk(SrH)r^r�r_s  rraz
Struct.__eq__�s'���U��t�D�z�)�L����u�|�|�0K�LrrbrH)	r
rrrJrKrTrYr\rarrrr�r��s"���I��
�
*�C�Mrr�c���eZdZ�fd�Z�xZS)r�c����t|�dk7rtdt|�z��t|dttf�s&tdjt
|d����t�|�!|�y)Nrz%Dict entry must have 2 fields, not %drz5First field in dict entry must be simple type, not {})	r�r�r�rFr�r[r^rirK)rr�rks  �rrKzDictEntry.__init__�sn����v�;�!���7�#�f�+�E�G�
G��&��)�i��%<�=��G����V�A�Y��(�*�
*�	���� r)r
rrrKrtrus@rr�r��s
���!�!rr�c�D�eZdZdZedd�Zd�Zd	d�Zd
d�Zd�Z	d�Z
y)�Arrayr%rgc��||_yrH)�elt_type)rr�s  rrKzArray.__init__�s	�� ��
rc��|jj|||�\}}|t||jj�z
}||z}|jt
dk(r||||fSg}||kr9|jj||||��\}}|j
|�||kr�9t|jt�rt|�}||fS)Nr�r�)
r�rTrDr�rJ�simple_typesr�r�r��dict)	rrOrArPrQr�r�r�r�s	         rrTzArray.parse_data�s����&�&�1�1�#�s�J�G�����w�s�D�M�M�3�3�4�4���F�l���=�=�L��-�-��s�3�<��$�$����C�i��]�]�-�-�c�3�
��-�L�F�A�s��J�J�q�M��C�i��d�m�m�Y�/��s�)�C��C�x�rNc	��d}t|jt�r!t|t�r|j	�}nS|jt
dk(rt|t�rd}n*t|t�stdj|���t|jt�r0|jjt|�zdkDrtd��t||j�}||zdz}t||jj�}|r|}	ns||z}
|
dz}g}|D]Q}
|j!|jj#|
|
||���|
t|d	�z
}
|
|kDs�Htd��d
j%|�}	|j&j#t|	�||z|�}d|z|zd|zz|	zS)NFr�TzNot suitable for array: {!r}izArray size exceeds 64 MiB limitr%r�r�rrV)r�r�r�r��itemsr��bytes�listr�r[rFrIr�r	rDrJr�rYr�r�)rrXrArPrQ�
data_is_bytes�pad1�pos_after_length�pad2rO�data_pos�	limit_pos�chunksr�r�s               rrYzArray.serialise�s����
��d�m�m�Y�/�J�t�T�4J��:�:�<�D��m�m�|�C�0�0�j��u�6M� �M��D�$�'��:�A�A�$�G�H�H��d�m�m�Y�/��
�
�"�"�S��Y�.�%�7�$�%F�G�G��s�D�N�N�+����:��>���'����)@�)@�A����C�'�$�.�H� �7�*�I��F��
L���
�
�d�m�m�5�5��(�J�C�6����C��r�
�O�+���i�'�(�)J�K�K�

L��(�(�6�"�C��#�#�-�-�c�#�h��D��*�M������(�E�D�L�9�C�?�?rc�8�dj|j�S)NzArray({!r}))r[r�rs rr\zArray.__repr__%s���#�#�D�M�M�2�2rc�Z�t|�tuxr|j|jk(SrH)r^r�r�r_s  rrazArray.__eq__(s#���U��u�$�K�4�=�=�E�N�N�+J�KrrbrH)r
rrrJrFr�rKrTrYr\rarrrr�r��s/���I��A�s�#�K�!��$$@�L3�Lrr�c�,�eZdZdZdd�Zdd�Zd�Zd�Zy)	�Variantrc��tdj|||�\}}tt|��}|j||||��\}}||f|fS�Nr�r�)r�rT�parse_signaturer�)rrOrArPrQ�sig�valtyperSs        rrTzVariant.parse_data/sX����$�/�/��S�*�E���S�!�$�s�)�,���%�%�c�3�
��%�D���S��S�z�3��rNc��|\}}tt|��}tdj|||�}||j||t	|�z||��zSr�)r�r�r�rYr�)rrXrArPrQr�r��sig_bufs        rrYzVariant.serialise8sc���	��T�!�$�s�)�,���s�#�-�-�c�3�
�C����*�*��#��G��$�j�c�+�
�
�	
rc��y)Nz	Variant()rrs rr\zVariant.__repr__@rqrc�$�t|�tuSrH)r^r�r_s  rrazVariant.__eq__CrsrrbrH)r
rrrJrTrYr\rarrrr�r�,s���I��
��&rr�c���|jd�}|dk(rtt|��S|dk(r
t�S|dk(rIg}|ddk7r#|j	t|��|ddk7r�#|jd�t|�S|dk(rIg}|ddk7r#|j	t|��|ddk7r�#|jd�t
|�S|dvrtd	��t|S)
z-Parse a symbolic signature into objects.
    r�ar��(r}�{�}z)}zUnexpected end of struct)	�popr�r�r�r�r�r�r�r�)r��tokenr��des    rr�r�Fs���
�G�G�A�J�E���|��_�S�)�*�*���|��y��	�#�����!�f��m��M�M�/�#�.�/��!�f��m�����
��f�~��	�#��
���!�f��m��I�I�o�c�*�+��!�f��m�����
���}��	�$���3�4�4��E�"�"rc�(�tjd|dd�\}t|}tj|j�dz|dd�\}tj|j�dz|dd�\}d|z}|t	|d�z|zS)N�crrgr%r4��)rMrN�
endian_maprrD)rO�endian�body_length�fields_array_len�
header_lens     r�
calc_msg_sizer�as����m�m�C��R�a��)�G�F�
��
�F��=�=��!3�!3�!5��!;�S��1�X�F�L�K��
�
�f�&8�&8�&:�S�&@�#�b��*�M����&�&�J���
�A�.�.��<�<rc��tj|d|�\}}|D��cic]\}}t|�|d��c}}|fScc}}w)Nr�r)�_header_fields_typerTr0)rOrP�lrA�kr�s      r�parse_header_fieldsr�msD��
 �
+�
+�C��Z�
@�F�A�s�01�2�f�q�!�L��O�Q�q�T�!�2�C�7�7��2s�?r�r�r�)	rrr$r%r1r2r3r4r5c��t|j��D��cgc]\}}|jt||ff��}}}tj|d|�Scc}}w)Nr�)�sortedr��value�header_field_codesr�rY)r�rPr�r�r�s     r�serialise_header_fieldsr�sS��=C�A�G�G�I�=N�O�6�A�q�!�'�'�&�q�)�1�-�	.�O�A�O��(�(��B�
�;�;��	Ps�!Ac�0�eZdZd�Zd�Zdd�Zed��Zy)�Headerc��||_t|�|_t|�|_||_||_||_||_y)z�A D-Bus message header

        It's not normally necessary to construct this directly: use higher level
        functions and methods instead.
        N)	rPr#�message_typer+�flags�protocol_versionr��serialr�)rrPrrrr�rr�s        rrKzHeader.__init__�sB��%���'��5��� ��'��
� 0���&��������rc	��dj|j|j|j|j|j
|j|j�S)Nz7Header({!r}, {!r}, {!r}, {!r}, {!r}, {!r}, fields={!r}))r[rPrrrr�rr�rs rr\zHeader.__repr__�sI��H�O�O��O�O�T�.�.��
�
��!�!�4�#3�#3�T�[�[�$�+�+�O�	OrNc	�d�|jj�dz}|�|j}tj||jj�|jj|j|j|j|�t|j|j�zS)N�cBBBII)
rPrrrMrWr rr�rrr�r�r�)rrr�s   rrYzHeader.serialise�s����O�O�'�'�)�H�4���>��[�[�F��{�{�1�d�o�o�7�7�9��,�,�2�2�D�J�J��0�0��+�+�V�5�*�$�+�+�t���G�	H�	Hrc	���tjd|dd�\}}}}t|}tj|j�dz|dd�\}}t	||�\}}	||||||||�|	fS)N�cBBBr%�IIr�)rMrNr�rr�)
�clsrOr��msgtyper�pv�bodylenrr�rAs
          r�from_bufferzHeader.from_buffer�s��%+�]�]�6�3�r��7�%C�"������F�#�� �-�-��(:�(:�(<�t�(C�S��2�Y�O����)�#�v�6�����6�7�E�2�w���G��L�LrrH)r
rrrKr\rY�classmethodrrrrrr�s)��
�O�
H��M��Mrrc�F�eZdZdZd�Zd�Zed	deddfd��Zd
defd�Z	y)�Messagez�Object representing a DBus message.

    It's not normally necessary to construct this directly: use higher level
    functions and methods instead.
    c� �||_||_yrH)�header�body)rrrs   rrKzMessage.__init__�s�������	rc�v�djt|�j|j|j�S)Nz{}({!r}, {!r}))r[r^r
rrrs rr\zMessage.__repr__�s)���&�&�t�D�z�':�':�D�K�K����S�SrrO�returnc���tj|�\}}|jjtj
d�}|t
|�kDrtd|�dt
|��d���|d|}d}tj|jvrV|jtj}ttd|z��}|j|||j|��d}t||�S)NrzMessage expects z FDs, but only z were receivedr�(%s)r�)rrr��getr0r>r�r�r=r�r�rTrPr)	rrOrQrrA�n_fdsrr��	body_types	         rrzMessage.from_buffer�s����(�(��-�����
�
�!�!�,�"7�"7��;���3�s�8���"�5�'���S��
�.�Q��
��&�5�k�����!�!�V�]�]�2��-�-�� 6� 6�7�C�'��V�c�\�(:�;�I��'�'��S�&�2C�2C��'�M�a�P�D��v�t�$�$rNc�J�|jj}tj|jjvr^|jjtj}tt
d|z��}|j|jd||��}nd}t|�|j_
|r0t|�|jjtj<|jj|��}dtt|�d�z}||z|zS)a�Convert this message to bytes.

        Specifying *serial* overrides the ``msg.header.serial`` field, so a
        connection can use its own serial number without modifying the message.

        If file-descriptor support is in use, *fds* should be a
        :class:`array.array` object with type ``'i'``. Any file descriptors in
        the message will be added to the array. If the message contains FDs,
        it can't be serialised without this array.
        rrr�r)rrVr4)
rrPr0r=r�r�r�rYrr�r�r>rD)	rrrQr�r�r�body_buf�
header_bufrCs	         rrYzMessage.serialise�s������'�'���!�!�T�[�[�%7�%7�7��+�+�$�$�\�%;�%;�<�C�'��V�c�\�(:�;�I� �*�*�4�9�9�a��S�*�I�H��H�"%�h�-������8;�C��D�K�K���|�4�4�5��[�[�*�*�&�*�9�
��w�s�:���2�2���C��(�*�*rrb)NN)
r
rrr
rKr\rr�rrYrrrrr�s@���
�T��
%�e�
%�	�
%��
%�+�%�+rrc�B�eZdZdZd�Zd
defd�Zd�Zd�Zde	e
fd�Zy	)�Parserz8Parse DBus messages from a stream of incoming data.
    c�>�t�|_g|_d|_yrH)�
BufferPiperOrQ�
next_msg_sizers rrKzParser.__init__�s���<������!��rrXc�p�|jj|�|jj|�y)z)Provide newly received data to the parserN)rO�writerQ�extend)rrXrQs   r�add_datazParser.add_data�s"�������t��������rc�b�|j|�tt|jd��S)zhFeed the parser newly read data.

        Returns a list of messages completed by the new data.
        N)r)r��iter�get_next_message)rrXs  r�feedzParser.feed�s(��
	
�
�
�d���D��.�.��5�6�6rc���|jj}|dkrd|z
S|j�)t|jj	d��|_|j|z
S)z�How many bytes can be received without going beyond the next message?

        This is only used with file-descriptor passing, so we don't get too many
        FDs in a single recvmsg call.
        r�)rO�bytes_bufferedr%r��peek)r�gots  r�
bytes_desiredzParser.bytes_desired�sZ���h�h�%�%����8���8�O����%�!.�t�x�x�}�}�R�/@�!A�D���!�!�C�'�'rrc�
�|j�B|jjdk\r)t|jj	d��|_|j}|��|jj|k\r�|jj|�}tj||j��}d|_|jjjtjd�}|j|d|_|Syy)zqParse one message, if there is enough data.

        Returns None if it doesn't have a complete message.
        Nr�r�r)r%rOr/r�r0�readrrrQrr�rr0r>)r�nms�raw_msg�msg�fds_consumeds     rr,zParser.get_next_message	s���
���%��x�x�&�&�"�,�%2�4�8�8�=�=��3D�%E��"�� � ���O����!8�!8�C�!?��h�h�m�m�C�(�G��%�%�g�4�8�8�%�<�C�!%�D���:�:�,�,�0�0��1F�1F��J�L��x�x��
�.�D�H��J�
"@�OrNrb)r
rrr
rKr�r)r-r2rrr,rrrr"r"�s3���"�
�U��
7�(��(�7�"3�rr"c�Z�eZdZdZd�Zdefd�Zdefd�Zdedefd�Z	defd	�Z
dedefd
�Zy)r$z�A place to store received data until we can parse a complete message

    The main difference from io.BytesIO is that read & write operate at
    opposite ends, like a pipe.
    c�0�t�|_d|_yr@)rr�r/rs rrKzBufferPipe.__init__!s���g�����rr�c�v�|jj|�|xjt|�z
c_yrH)r�r�r/r�)rr�s  rr'zBufferPipe.write%s)�������1�����s�1�v�%�r�nbytesc#�K�||jksJ�|jD] }|d|}|t|�z}|��|dks� yy�wr@)r/r�r�)rr<�chunks   r�
_peek_iterzBufferPipe._peek_iter)sU������,�,�,�,�,��[�[�	�E��'�6�N�E��c�%�j� �F��K���{��	�s�=A�Arc�B�dj|j|��S)z=Get exactly nbytes bytes from the front without removing themr)r�r?�rr<s  rr0zBufferPipe.peek2����x�x�����/�0�0rc#�vK�||jksJ�	|jj�}|xjt|�zc_|t|�krn|t|�z}|���Z|d|||d}}|r9|jj	|�|xjt|�z
c_|��y�wrH)r/r��popleftr��
appendleft)rr<r>�rems    r�
_read_iterzBufferPipe._read_iter6s�������,�,�,�,�,���K�K�'�'�)�E����3�u�:�-����U��#���c�%�j� �F��K�
��7�F�^�U�6�7�^�s����K�K�"�"�3�'����3�s�8�+����s�B7B9c�B�dj|j|��S)z1Take & return exactly nbytes bytes from the frontr)r�rGrAs  rr4zBufferPipe.readGrBrN)r
rrr
rKr�r'r�r?r0rGr4rrrr$r$sV���
 �&�u�&����1�3�1�5�1����"1�3�1�5�1rr$)'�collectionsr�enumrrrrM�typingrr�r	rrr!r�r#r+r0rDrFrdrwr�r��updater�r�r�r�r�r�r�r�r�r�rrr"r$rrr�<module>rMs����'�'�
��	�Z�	�=��=��%�%�Z�^�^�
<�
��$��(�'�(�	�7�	��<�<�0&�i�&�-�Y�-�@
�1�c�	�	�1�c�	�	�1�c�	�	��	�1�c�	�	�1�c�	�	�1�c�	�	�1�c�	�	�1�c�	�	�	���;�;�<
���	�L��%�	&�	�L��%�	&�	�L��%�	&���#M�#M�L	!��	!�CL�CL�L&�&�4#�6=��F�L��$5�w�y�#A�B�C��8��
�
�
�
�
�
�
�
�
��<�
%M�%M�P7+�7+�t2�2�j.1�.1r

Zerion Mini Shell 1.0