Edit File: mailbox.cpython-311.opt-1.pyc
� �����f�3����������������������v����d�Z�ddlZddlZddlZddlZddlZddlZddlZddlZddl Zddl ZddlZddlZddl mZ� �ddlZn #�e$�r�dZY�nw�xY�wg�d�Zej�����������������������������d������������Z�G�d��d������������Z�G�d��d e������������Z�G�d ��de������������Z�G�d��d e������������Z�G�d��de������������Z�G�d��de������������Z�G�d��de������������Z�G�d��de������������Z�G�d��dej��������j��������������������Z�G�d��de������������Z�G�d��de������������Z�G�d��de������������Z �G�d��de������������Z!�G�d ��d!e������������Z"�G�d"��d#e������������Z#�G�d$��d%������������Z$�G�d&��d'e$������������Z%d9d)�Z&d*��Z'd+��Z(d,��Z)d-��Z*d.��Z+�G�d/��d0e,������������Z-�G�d1��d2e-������������Z.�G�d3��d4e-������������Z/�G�d5��d6e-������������Z0�G�d7��d8e-������������Z1dS�):zDRead/write support for Maildir, mbox, MH, Babyl, and MMDF mailboxes.�����N)�GenericAlias)�Mailbox�Maildir�mbox�MH�Babyl�MMDF�Message�MaildirMessage�mboxMessage� MHMessage�BabylMessage�MMDFMessage�Error�NoSuchMailboxError� NotEmptyError�ExternalClashError�FormatError�asciic��������������������������e�Zd�ZdZd$d�Zd��Zd��Zd��Zd��Zd ��Z d%d �Z d��Zd��Zd ��Z d��Zd��Zd��Zd��Zd��Zd��Zd��Zd��Zd��Zd��Zd��Zd��Zd%d�Zd��Zd%d�Zd��Zd��Zd��Zd ��Z d!��Z!d"Z"d&d#�Z#�e$e%������������Z&dS�)'r���z*A group of messages in a particular place.NTc�����������������������t�����������j�����������������������������t�����������j�����������������������������|������������������������|�_��������||�_��������dS�)zInitialize a Mailbox instance.N)�os�path�abspath� expanduser�_path�_factory��selfr����factory�creates��� �./opt/alt/python311/lib64/python3.11/mailbox.py�__init__zMailbox.__init__%���s2�������W�_�_�R�W�%7�%7��%=�%=�>�>�� ��� � � �����c������������������ �����t����������d�������������)�$Add message and return assigned key.�&Method must be implemented by subclass��NotImplementedError�r����messages��� r"����addzMailbox.add*����������!�"J�K�K�Kr$���c������������������ �����t����������d�������������)�=Remove the keyed message; raise KeyError if it doesn't exist.r'���r(����r����keys��� r"����removezMailbox.remove.���r-���r$���c������������������0�����|�����������������������|�������������d�S��N)r2���r0���s��� r"����__delitem__zMailbox.__delitem__2���s���������C�����r$���c������������������T����� �|�����������������������|�������������dS�#�t����������$�r�Y�dS�w�xY�w�z'If the keyed message exists, remove it.N)r2����KeyErrorr0���s��� r"����discardzMailbox.discard5���sA������ ��K�K���������� �� �� ��D�D� ���s������ '�'c������������������ �����t����������d�������������)�>Replace the keyed message; raise KeyError if it doesn't exist.r'���r(����r���r1���r+���s��� r"����__setitem__zMailbox.__setitem__<���r-���r$���c������������������R����� �|�����������������������|������������S�#�t����������$�r�|cY�S�w�xY�w)z9Return the keyed message, or default if it doesn't exist.)�__getitem__r8���)r���r1����defaults��� r"����getzMailbox.get@���s?������ ��#�#�C�(�(�(���� �� �� ��N�N�N� ���s������&�&c������������������������|�j���������s|����������������������|������������S�t����������j��������|����������������������|������������������������5�}|�����������������������|������������cddd�������������S�#�1�swxY�w�Y���dS�)z=Return the keyed message; raise KeyError if it doesn't exist.N)r����get_message� contextlib�closing�get_file)r���r1����files��� r"���r?���zMailbox.__getitem__G���s��������}�� +��#�#�C�(�(�(��#�D�M�M�#�$6�$6�7�7�� +�4��}�}�T�*�*� +�� +�� +�� +�� +�� +�� +�� +�� +�� +�� +�� +����� +�� +�� +�� +�� +�� +s����A&�&A*�-A*c������������������ �����t����������d�������������)�4Return a Message representation or raise a KeyError.r'���r(���r0���s��� r"���rC���zMailbox.get_messageO���r-���r$���c������������������t�����t����������j��������|����������������������|�����������������������������������������������������������S�)z�Return a string representation or raise a KeyError. Uses email.message.Message to create a 7bit clean string representation of the message.��email�message_from_bytes� get_bytes� as_stringr0���s��� r"���� get_stringzMailbox.get_stringS���s-������ ��'����s�(;�(;�<�<�F�F�H�H�Hr$���c������������������ �����t����������d�������������)z8Return a byte string representation or raise a KeyError.r'���r(���r0���s��� r"���rN���zMailbox.get_bytesZ���r-���r$���c������������������ �����t����������d�������������)�6Return a file-like representation or raise a KeyError.r'���r(���r0���s��� r"���rF���zMailbox.get_file^���r-���r$���c������������������ �����t����������d�������������)�Return an iterator over keys.r'���r(����r���s��� r"����iterkeyszMailbox.iterkeysb���r-���r$���c������������������D�����t����������|������������������������������������������������S�)zReturn a list of keys.)�listrW���rV���s��� r"����keyszMailbox.keysf���s�������D�M�M�O�O�$�$�$r$���c��������������#����t���K����|�������������������������������������D�] } �|�|���������}n#�t����������$�r�Y��w�xY�w|V����!dS�)z%Return an iterator over all messages.N�rW���r8����r���r1����values��� r"���� itervalueszMailbox.itervaluesj���sb�����������=�=�?�?�� �� �C� ��S� ������ �� �� ��� �����K�K�K�K� �� �����#� 0�0c������������������*�����|�������������������������������������S�r4���)r_���rV���s��� r"����__iter__zMailbox.__iter__s���s��������� � � r$���c������������������D�����t����������|������������������������������������������������S�)z,Return a list of messages. Memory intensive.)rY���r_���rV���s��� r"����valueszMailbox.valuesv���s�������D�O�O�%�%�&�&�&r$���c��������������#����x���K����|�������������������������������������D�]"} �|�|���������}n#�t����������$�r�Y��w�xY�w||fV����#dS�)z.Return an iterator over (key, message) tuples.Nr\���r]���s��� r"���� iteritemszMailbox.iteritemsz���sj�����������=�=�?�?�� �� �C� ��S� ������ �� �� ��� ������,����� �� r`���c������������������D�����t����������|������������������������������������������������S�)z9Return a list of (key, message) tuples. Memory intensive.)rY���rf���rV���s��� r"����itemsz Mailbox.items����s�������D�N�N�$�$�%�%�%r$���c������������������ �����t����������d�������������)�9Return True if the keyed message exists, False otherwise.r'���r(���r0���s��� r"����__contains__zMailbox.__contains__����r-���r$���c������������������ �����t����������d�������������)�*Return a count of messages in the mailbox.r'���r(���rV���s��� r"����__len__zMailbox.__len__����r-���r$���c������������������^�����|�������������������������������������D�]}|����������������������|��������������dS�)zDelete all messages.N)rZ���r9���r0���s��� r"����clearz Mailbox.clear����s8�������9�9�;�;�� �� �C��L�L������ �� r$���c������������������h����� �|�|���������}n#�t�����������$�r�|cY�S�w�xY�w|����������������������|�������������|S�)z3Delete the keyed message and return it, or default.)r8���r9���)r���r1���r@����results��� r"����popzMailbox.pop����sM������ ��#�Y�F�F���� �� �� ��N�N�N� �������S����� s�������c������������������~�����|�������������������������������������D�]}||����������������������|������������fc�S�t����������d�������������)z6Delete an arbitrary (key, message) pair and return it.zNo messages in mailbox)rW���rs���r8���r0���s��� r"����popitemzMailbox.popitem����sC�������=�=�?�?�� 5�� 5�C�����#���'�'�'�'��3�4�4�4r$���c����������������������t����������|d������������r|�����������������������������������}n't����������|d������������r|�����������������������������������}n|}d}|D�]\��}} �||�|<����#�t����������$�r�d}Y��w�xY�w|rt����������d�������������dS�)z4Change the messages that correspond to certain keys.rf���rh���FTzNo message with key(s)N)�hasattrrf���rh���r8���)r����arg�source�bad_keyr1���r+���s��� r"����updatezMailbox.update����s��������3��$�$�� ��]�]�_�_�F�F� �S�'� "� "�� ��Y�Y�[�[�F�F��F���"�� �� �L�C�� �#��S� � ���� �� �� ����� ������ 5��3�4�4�4� 5�� 5s����A�A,�+A,c������������������ �����t����������d�������������)�&Write any pending changes to the disk.r'���r(���rV���s��� r"����flushz Mailbox.flush����r-���r$���c������������������ �����t����������d�������������)�Lock the mailbox.r'���r(���rV���s��� r"����lockzMailbox.lock����r-���r$���c������������������ �����t����������d�������������)�#Unlock the mailbox if it is locked.r'���r(���rV���s��� r"����unlockzMailbox.unlock����r-���r$���c������������������ �����t����������d�������������)�Flush and close the mailbox.r'���r(���rV���s��� r"����closez Mailbox.close����r-���r$���c������������������h����� �|����������������������d������������S�#�t����������$�r�t����������d�������������w�xY�w)Nr���z?String input must be ASCII-only; use bytes or a Message instead)�encode�UnicodeError� ValueErrorr*���s��� r"����_string_to_byteszMailbox._string_to_bytes����sK������ 2��>�>�'�*�*�*���� 2�� 2�� 2���1��2��2�� 2� 2���s������1Fc����������������������t����������|t����������j��������j��������������������r�t ����������j����������������������}t����������j�����������������������������||d������������}|���������������������|�������������|� ��������������������d�������������|� ����������������������������������}|���������������������dt����������������������}|� ��������������������|�������������|�j��������r6|���������������������t����������������������s|� ��������������������t�����������������������d S�d S�d S�t����������|t ����������t"����������t����������j��������f������������r�t����������|t����������j��������������������r/t'����������j��������dt*����������d�������������|�����������������������������������}t����������|t ����������������������r|����������������������|������������}|r|���������������������dd������������}|���������������������dt����������������������}|� ��������������������|�������������|�j��������r6|���������������������t����������������������s|� ��������������������t�����������������������d S�d S�d S�t1����������|d�������������r-t1����������|d������������r"t'����������j��������d t*����������d�������������|j��������}d } �|�����������������������������������}|���������������������d������������r|d d ����������dz���}n"|���������������������d������������r |d d����������dz���}|snW|r"|���������������������d������������r d|dd ����������z���}|���������������������dt����������������������}|� ��������������������|�������������|}��|�j��������r8|r8|���������������������t����������������������s |� ��������������������t�����������������������d S�d S�d S�d S�t9����������dt;����������|������������z���������������)z%Dump message contents to target file.r������� �8Use of StringIO input is deprecated, use BytesIO instead����s��� From s��� >From �read�buffer�DUse of text mode files is deprecated, use a binary mode file insteadNT���� ������� �������From s���>From �����Invalid message type: %s)� isinstancerL���r+���r ����io�BytesIO� generator�BytesGenerator�flatten�seekr�����replace�linesep�write�_append_newline�endswith�str�bytes�StringIO�warnings�warn�DeprecationWarning�getvaluer����rw���r�����readline� startswith� TypeError�type) r���r+����target�mangle_from_r�����gen�data�lastline�lines ��� r"���� _dump_messagezMailbox._dump_message����s��������g�u�}�4�5�5��1 H��Z�\�\�F��/�0�0���q�I�I�C��K�K�� � � ��K�K��N�N�N��;�;�=�=�D��<�<��w�/�/�D��L�L������#�� &�D�M�M�'�,B�,B�� &����W�%�%�%�%�%� &�� &�� &�� &����#�u�b�k�!:� ;� ;��& H��'�2�;�/�/�� -�� ��*�+=�q�B��B��B�!�*�*�,�,���'�3�'�'�� 9��/�/��8�8���� C�!�/�/�*�k�B�B���o�o�e�W�5�5�G��L�L��!�!�!��#�� &�G�,<�,<�W�,E�,E�� &����W�%�%�%�%�%� &�� &�� &�� &���W�f� %� %�� H��w��)�)�� )�� ��5�6H�!�M��M��M�!�.���H� ��'�'�)�)���=�=��)�)��-�����9�u�,�D�D��]�]�5�)�)��-�����9�u�,�D�������0�D�O�O�H�$=�$=��0�$�t�A�B�B�x�/�D��|�|�E�7�3�3�����T�"�"�"��� ���#�� &��� &��9J�9J�7�9S�9S�� &����W�%�%�%�%�%� &�� &�� &�� &�� &�� &���6��g���F�G�G�Gr$����NTr4����F)'�__name__� __module__�__qualname__�__doc__r#���r,���r2���r5���r9���r=���rA���r?���rC���rP���rN���rF���rW���rZ���r_���rb���rd���rf���rh���rk���rn���rp���rs���ru���r{���r~���r����r����r����r����r����r�����classmethodr����__class_getitem__��r$���r"���r���r���"���sH�������������4�4� �� �� �� � L��L��L�L��L��L�����������L��L��L��������+��+��+�L��L��L�I��I��I�L��L��L�L��L��L�L��L��L�%��%��%������!��!��!�'��'��'������&��&��&�L��L��L�L��L��L������ �������5��5��5�5��5��5��5�"L��L��L�L��L��L�L��L��L�L��L��L�2��2��2���O�4H��4H��4H��4H�l�$��L�1�1���r$���r���c�������������������������e�Zd�ZdZdZdd�Zd��Zd��Zd��Zd ��Z d ��Z d��Zd��Zd ��Z d��Zd��Zd��Zd��Zd��Zd��Zd��Zd��Zd��Zd��Zd��ZdZd��Zd��Zd��Zd��ZdS�)r���zA qmail-style Maildir mailbox.�:NTc������������������r����t��������������������������������|�|||�������������t����������j�����������������������������|�j��������d������������t����������j�����������������������������|�j��������d������������t����������j�����������������������������|�j��������d������������d�|�_��������t����������j�����������������������������|�j��������������������sb|rLt����������j��������|�j��������d�������������|�j��������� ����������������������������������D�]}t����������j��������|d��������������nt����������|�j���������������������i�|�_��������ddd�|�_��������d|�_ ��������d|�_��������d S�) zInitialize a Maildir instance.�tmp�new�cur)r����r����r�������r���)r����r����g�������?N)r���r#���r���r����joinr����_paths�exists�mkdirrd���r����_toc�_toc_mtimes� _last_read�_skewfactor)r����dirnamer ���r!���r���s��� r"���r#���zMaildir.__init__��s���������w���8�8�8��7�<�<�� �E�2�2��7�<�<�� �E�2�2��7�<�<�� �E�2�2������ ��w�~�~�d�j�)�)�� 5��� 5�����U�+�+�+� �K�.�.�0�0��*��*�D��H�T�5�)�)�)�)�*��)���4�4�4��� �#$�Q�/�/����������r$���c����������������������|�������������������������������������} �|����������������������||�������������n<#�t����������$�r/�|������������������������������������t ����������j��������|j�����������������������w�xY�wt����������|�������������t����������|t����������������������r>|� ����������������������������������}|�j��������|�����������������������������������z���}||�j��������k����rd}nd}d}t����������j �����������������������������|j�����������������������������������������|�j��������������������d���������}t����������j �����������������������������|�j��������|||z���������������}t����������|t����������������������rPt ����������j��������|j��������t����������j �����������������������������|j��������������������|�����������������������������������f������������� � �t ����������j��������|j��������|�������������t ����������j��������|j���������������������n1#�t,����������t.����������f$�r�t ����������j��������|j��������|�������������Y�nw�xY�wnS#�t2����������$�rF}t ����������j��������|j���������������������|j��������t4����������j��������k����rt9����������d|z�����������������d}~ww�xY�w|S�)r&�����r����r���z$Name clash with existing message: %sN)�_create_tmpr����� BaseExceptionr����r���r2����name�_sync_closer����r���� get_subdir�colon�get_infor����basename�splitr����r����utime�getatime�get_date�link�AttributeError�PermissionError�rename�OSError�errno�EEXISTr���)r���r+����tmp_file�subdir�suffix�uniq�dest�es��� r"���r,���zMaildir.add$��sS������#�#�%�%�� ����w��1�1�1�1���� �� �� ��N�N�����I�h�m�$�$�$�� ����� �H�����g�~�.�.�� ��'�'�)�)�F��Z�'�"2�"2�"4�"4�4�F����#�#�����F��F��w���� �.�.�4�4�T�Z�@�@��C���w�|�|�D�J���v� �>�>���g�~�.�.�� L��H�X�]��g�&�&�x�}�5�5�w�7G�7G�7I�7I�J� L�� L�� L� � )���� �t�,�,�,��� �(�-�(�(�(�(���#�O�4�� /�� /�� /�� �(�-��.�.�.�.�.� /��������� �� �� ��I�h�m�$�$�$��w�%�,�&�&�(�)O�+/�*0��1��1��1������� ������s@����-��9A&�!G��;H��+H��H��H�H�� I�AI�Ic�����������������������t����������j��������t�����������j�����������������������������|�j��������|����������������������|�������������������������������������dS��r/���N)r���r2���r���r����r����_lookupr0���s��� r"���r2���zMaildir.removeN��s6������ � �"�'�,�,�t�z�4�<�<��+<�+<�=�=�>�>�>�>�>r$���c������������������b����� �|�����������������������|�������������dS�#�t����������t����������f$�r�Y�dS�w�xY�wr7���)r2���r8����FileNotFoundErrorr0���s��� r"���r9���zMaildir.discardR��sG������ ��K�K���������+�,�� �� �� ��D�D� ���s������.�.c����������������������|�����������������������|������������}|����������������������|������������}|�����������������������|������������}t����������|t����������������������r|}n|}t����������j�����������������������������|������������}|�j��������|v�r)|�j��������|���������������������|�j��������������������d���������z���}nd}|�� ��������������������|�������������t����������j��������� ��������������������|�j��������|������������} t����������j��������� ��������������������|�j��������|||z���������������} t����������|t����������������������rFt ����������j��������| t����������j��������� ��������������������| ������������|�����������������������������������f�������������t ����������j��������| | �������������dS�)r;���r����r����N)r����r,���r����r���r���r���r����r����r����r9���r����r���r����r����r����r����)r���r1���r+����old_subpath�temp_key�temp_subpath�dominant_subpathr����r�����tmp_path�new_paths��� r"���r=���zMaildir.__setitem__Z��sS������l�l�3�'�'���8�8�G�$�$���|�|�H�-�-���g�~�.�.�� +�+���� +������!1�2�2���:�)�)�)��Z�"2�"8�"8���"D�"D�R�"H�H�F�F��F����S�����7�<�<�� �L�9�9���7�<�<�� �F�C�&�L�A�A���g�~�.�.�� G��H�X��g�&�&�x�0�0�'�2B�2B�2D�2D�E� G�� G�� G� � � �(�H�%�%�%�%�%r$���c����������������������|�����������������������|������������}t����������t����������j�����������������������������|�j��������|������������d������������5�}|�j��������r|����������������������|������������}nt����������|������������}ddd�������������n#�1�swxY�w�Y���t����������j�����������������������������|������������\��}}|� ��������������������|�������������|�j ��������|v�r3|���������������������|���������������������|�j ��������������������d����������������������|���������������������t����������j��������� ��������������������t����������j�����������������������������|�j��������|�������������������������������������|S�)rI����rbNr����)r�����openr���r���r����r���r���r���r����� set_subdirr�����set_info�set_date�getmtime)r���r1����subpath�f�msgr����r����s��� r"���rC���zMaildir.get_messageu��sG������,�,�s�#�#�� �"�'�,�,�t�z�7�3�3�T� :� :�� (�a��}�� (��m�m�A�&�&���$�Q�'�'�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (����� (�� (�� (�� (� ��w�}�}�W�-�-�������v�����:�����L�L����D�J�/�/��3�4�4�4����R�W�%�%�b�g�l�l�4�:�w�&G�&G�H�H�I�I�I�� s���� -B�B� Bc����������������������t����������t����������j�����������������������������|�j��������|����������������������|������������������������d������������5�}|��������������������������������������������������������t����������d������������cddd�������������S�#�1�swxY�w�Y���dS�)�2Return a bytes representation or raise a KeyError.r����r����N) r����r���r���r����r���r����r����r����r�����r���r1���r��s��� r"���rN���zMaildir.get_bytes���s������� �"�'�,�,�t�z�4�<�<��+<�+<�=�=�t� D� D�� 4���6�6�8�8�#�#�G�U�3�3� 4�� 4�� 4�� 4�� 4�� 4�� 4�� 4�� 4�� 4�� 4�� 4����� 4�� 4�� 4�� 4�� 4�� 4s����-B�B�Bc�����������������������t����������t����������j�����������������������������|�j��������|����������������������|������������������������d������������}t ����������|������������S�)rS���r����)r����r���r���r����r���r����� _ProxyFiler��s��� r"���rF���zMaildir.get_file���s;�����������d�j�$�,�,�s�*;�*;�<�<�d�C�C���!�}�}�r$���c��������������#�������K����|��������������������������������������|�j��������D�]-} �|����������������������|�������������n#�t����������$�r�Y��%w�xY�w|V����.dS��rU���N)�_refreshr����r����r8���r0���s��� r"���rW���zMaildir.iterkeys���ss����������� � �����9�� �� �C� ����S�!�!�!�!���� �� �� ��� �����I�I�I�I� �� s����7� A�Ac������������������<�����|��������������������������������������||�j��������v�S��rj���)r ��r����r0���s��� r"���rk���zMaildir.__contains__���s������� � �����d�i��r$���c������������������R�����|��������������������������������������t����������|�j��������������������S��rm���)r ���lenr����rV���s��� r"���rn���zMaildir.__len__���s������� � �����4�9�~�~�r$���c�����������������������dS�)�"Write any pending changes to disk.Nr����rV���s��� r"���r~���z Maildir.flush���s ������� �r$���c�����������������������dS�)r����Nr����rV���s��� r"���r����zMaildir.lock�����������r$���c�����������������������dS�)r����Nr����rV���s��� r"���r����zMaildir.unlock���r��r$���c�����������������������dS��r����Nr����rV���s��� r"���r����z Maildir.close���r��r$���c������������������>����g�}t����������j��������|�j��������������������D�]�}t����������|������������dk����rk|d���������dk����r_t�����������j�����������������������������t�����������j�����������������������������|�j��������|������������������������r|���������������������|dd�������������������������|S�)�Return a list of folder names.����r����.N)r����listdirr���r��r����isdirr�����append�r���rr����entrys��� r"����list_folderszMaildir.list_folders���s����������Z�� �+�+�� )�� )�E��5�z�z�A�~�~�%��(�c�/�/��w�}�}�R�W�\�\�$�*�e�<�<�=�=��#2�� � �e�A�B�B�i�(�(�(��� r$���c������������������|�����t����������t����������j�����������������������������|�j��������d|z���������������|�j��������d�������������S�)z/Return a Maildir instance for the named folder.r��F�r ���r!���)r���r���r���r����r���r����r����folders��� r"���� get_folderzMaildir.get_folder���s9�������r�w�|�|�D�J��f��=�=�#�}�#�%��%��%�� %r$���c������������������~����t�����������j�����������������������������|�j��������d|z���������������}t ����������||�j���������������������}t�����������j�����������������������������|d������������}t�����������j�����������������������������|������������s?t����������j��������t����������j��������|t�����������j ��������t�����������j ��������z��d�������������������������|S�)z>Create a folder and return a Maildir instance representing it.r���r ���� maildirfolder���)r���r���r����r���r���r���r����r����r�����O_CREAT�O_WRONLY)r���r$��r���rr����maildirfolder_paths��� r"���� add_folderzMaildir.add_folder���s��������w�|�|�D�J��f��5�5����t�}�5�5�5���W�\�\�$��@�@���w�~�~�0�1�1�� ��H�R�W�/���b�k�1I������ �� �� �� r$���c����������������������t�����������j�����������������������������|�j��������d|z���������������}t����������j��������t�����������j�����������������������������|d������������������������t����������j��������t�����������j�����������������������������|d������������������������z���D�]3}t����������|������������dk�����s|d���������dk����rt ����������d|z����������������4t����������j��������|������������D�]f}|dk����r^|dk����rX|dk����rRt�����������j�����������������������������t�����������j�����������������������������||������������������������rt ����������d|�d |����������������gt����������j��������|d �������������D�]t\��}}}|D�]4}t����������j ��������t�����������j�����������������������������||��������������������������5|D�]4}t����������j ��������t�����������j�����������������������������||��������������������������5�ut����������j ��������|�������������dS�) �-Delete the named folder, which must be empty.r��r����r����r��r���zFolder contains message(s): %sr����zFolder contains subdirectory 'z': F)�topdownN)r���r���r����r���r��r��r���r���walkr2����rmdir)r���r$��r���r���root�dirs�filess��� r"���� remove_folderzMaildir.remove_folder���s�������w�|�|�D�J��f��5�5���Z�����T�5� 9� 9�:�:��Z�����T�5� 9� 9�:�:�;�� O�� O�E��5�z�z�A�~�~��q��S���#�$D�v�$M�N�N�N��"1��Z��%�%�� 5�� 5�E���~�~�%�5�.�.�U�e�^�^��w�}�}�R�W�\�\�$��6�6�7�7��6D�#�m�%+�V�V�U�U�%4��5��5��5��!#���u�!=�!=�!=�� 4�� 4��D�$���� 5�� 5��� �"�'�,�,�t�U�3�3�4�4�4�4��� 4�� 4��������d�E�2�2�3�3�3�3� 4� �������r$���c������������������`����t����������j�����������������������}t����������j��������t����������j�����������������������������|�j��������d������������������������D�]b}t����������j�����������������������������|�j��������d|������������}|t����������j�����������������������������|������������z ��dk����rt����������j��������|��������������cdS�)zDelete old files in "tmp".r����i@��N)�timer���r��r���r����r���r����r2���)r����nowr��r���s��� r"����cleanz Maildir.clean���s��������i�k�k���Z�����T�Z�� ?� ?�@�@�� �� �E��7�<�<�� �E�5�9�9�D��R�W�%�%�d�+�+�+�f�4�4�� �$����� �� r$���r��c����������� �������v����t����������j�����������������������}t����������j����������������������}d|v�r|���������������������dd������������}d|v�r|���������������������dd������������}t ����������|�������������dt ����������|dz��dz���������������dt����������j�����������������������d t����������j���������d |�� }t ����������j ��������� ��������������������|�j��������d|������������} �t����������j��������|�������������nG#�t����������$�r:�t����������xj��������dz ��c_�������� �t����������|������������cY�S�#�t����������$�r�Y�nw�xY�wY�nw�xY�wt!����������d|z���������������) z=Create a file in the tmp subdirectory and open and return it.�/z\057r����z\072z.Mr��g������.A�P�Qr��r����z&Name clash prevented file creation: %s)r8���socket�gethostnamer�����intr����getpidr����_countr���r����r����statr�����_create_carefully�FileExistsErrorr���)r���r9���hostnamer����r���s��� r"���r����zMaildir._create_tmp���sQ������i�k�k���%�'�'���(�?�?��'�'��W�5�5�H��(�?�?��'�'��W�5�5�H�$'��H�H�H�H�c�#��'�C�-�.@�.@�.@�.@�"�)�+�+�+�+�$+�N�N�N�H�H�>���w�|�|�D�J��t�4�4�� ��G�D�M�M�M�M�� �� �� �� ��N�N�a��N�N� �(��.�.�.�.�.��"�� �� �� ��� ������ �����!�!I�!%�"&��'��'�� 's6���� C"��"D&�D�D&� D �D&�D � D&�%D&c����������������������t����������j�����������������������|�j��������z ��d|�j��������z���k����rWd}|�j��������D�]I}t����������j�����������������������������|�j��������|���������������������}||�j��������|���������k����rd}||�j��������|<����J|sdS�i�|�_��������|�j��������D�]�}|�j��������|���������}t ����������j ��������|������������D�]�}t����������j��������� ��������������������||������������}t����������j�����������������������������|������������r�B|���������������������|�j ��������������������d���������}t����������j��������� ��������������������||������������|�j��������|<�������t����������j�����������������������|�_��������dS�)z!Update table of contents mapping.����FTNr���)r8��r����r����r����r���r���r����r����r����r��r����r��r����r����)r����refreshr�����mtimer���r���pr����s��� r"���r ��zMaildir._refresh��sE�������9�;�;���(�1�t�/?�+?�?�?��G��*�� 1�� 1����(�(���V�)<�=�=���4�+�F�3�3�3�"�G�+0�� ��(�(��� ����� ��&�� >�� >�F��;�v�&�D���D�)�)�� >�� >���G�L�L��u�-�-���7�=�=��#�#�����{�{�4�:�.�.�q�1��"$�'�,�,�v�u�"=�"=�� �$��� >���)�+�+����r$���c������������������`���� �t�����������j�����������������������������t�����������j�����������������������������|�j��������|�j��������|���������������������������������r |�j��������|���������S�n#�t����������$�r�Y�nw�xY�w|������������������������������������� �|�j��������|���������S�#�t����������$�r�t ����������d|z��������������d�w�xY�w)z=Use TOC to return subpath for given key, or raise a KeyError.�No message with key: %sN)r���r���r����r����r���r����r8���r ��r0���s��� r"���r����zMaildir._lookup&��s������� ��w�~�~�b�g�l�l�4�:�t�y��~�F�F�G�G�� &��y��~�%� &���� �� �� ��D� ����� � ���� F��9�S�>�!���� F�� F�� F��4�s�:�;�;��E� F���s����AA�� A*�)A*�B��B-c������������������������t����������|�d������������s|������������������������������������|�_�������� � �|�t����������|�j�����������������������������S�#�t����������$�r�Y�dS�t ����������$�r�Y��4w�xY�w)z0Return the next message in a one-time iteration.� _onetime_keysTN)rw���rW���rP���next� StopIterationr8���rV���s��� r"���rQ��zMaildir.next4��s}�������t�_�-�-�� 1�!%�����D�� � ��D��!3�4�4�5�5�� �� �� �� ��t�t��� �� �� ��� ���s����A�� A� A�Ar����)r����r����r����r����r����r#���r,���r2���r9���r=���rC���rN���rF���rW���rk���rn���r~���r����r����r����r ��r%��r-��r6��r:��rC��r����r ��r����rQ��r����r$���r"���r���r�����s��������������(�(��E��������((��(��(�T?��?��?������&��&��&�6 �� �� �4��4��4� ����� ����� �� �� � ����� �� �� ���������������������%��%��%�����������& �� �� ���F�'��'��'�0"&��"&��"&�HF��F��F� �� �� �� �� r$���r���c��������������������v�����e�Zd�ZdZdd�Zd��Zd��Zd��Zd��Zd ��Z d ��Z d��Zd��Zd ��Z d��Zd��Zd��Zd��Zdd�Zd��ZdS�)�_singlefileMailboxzA single-file mailbox.NTc�����������������������t��������������������������������|�|||������������� �t����������|�j��������d������������}n�#�t����������$�r�}|j��������t ����������j��������k����r,|rt����������|�j��������d������������}nJt����������|�j���������������������|j��������t ����������j��������t ����������j ��������fv�rt����������|�j��������d������������}n��Y�d}~nd}~ww�xY�w||�_ ��������d|�_��������d|�_��������d|�_ ��������d|�_��������d|�_��������d|�_��������dS�)z!Initialize a single-file mailbox.�rb+zwb+r����Nr���F)r���r#���r����r���r����r�����ENOENTr����EACCES�EROFS�_filer����� _next_key�_pending� _pending_sync�_locked�_file_length)r���r���r ���r!���r��r����s��� r"���r#���z_singlefileMailbox.__init__D��s�����������t�W�f�5�5�5� ��T�Z��'�'�A�A���� �� �� ��w�%�,�&�&���9��T�Z��/�/�A�A�,�T�Z�8�8�8���U�\�5�;�7�7�7����T�*�*������������� ������� ��� ������ �"������ ����s����5�� C��A7B;�;C�c�����������������������|��������������������������������������|����������������������|������������|�j��������|�j��������<���|�xj��������dz ��c_��������d|�_��������|�j��������dz ��S�)r&���r��T)r�����_append_messager����r[��r]��r*���s��� r"���r,���z_singlefileMailbox.add[��sR������������$(�$8�$8��$A�$A�� �$�.�!����!�����"����~��!�!r$���c������������������N�����|�����������������������|�������������|�j��������|=�d|�_��������dS�)r/���TN)r����r����r\��r0���s��� r"���r2���z_singlefileMailbox.removee��s(���������S�����I�c�N��� � � r$���c������������������x�����|�����������������������|�������������|����������������������|������������|�j��������|<���d|�_��������dS�)r;���TN)r����ra��r����r\��r<���s��� r"���r=���z_singlefileMailbox.__setitem__k��s8���������S�����-�-�g�6�6�� �#���� � � r$���c��������������#����p���K����|��������������������������������������|�j�������������������������������������������E�d{V����dS�r ��)r����r����rZ���rV���s��� r"���rW���z_singlefileMailbox.iterkeysq��s=�����������������9�>�>�#�#�#�#�#�#�#�#�#�#�#r$���c������������������<�����|��������������������������������������||�j��������v�S�r��)r����r����r0���s��� r"���rk���z_singlefileMailbox.__contains__v��s�������������d�i��r$���c������������������R�����|��������������������������������������t����������|�j��������������������S�r��)r����r��r����rV���s��� r"���rn���z_singlefileMailbox.__len__{��s�������������4�9�~�~�r$���c������������������N�����|�j���������st����������|�j���������������������d|�_���������dS�dS�)r����TN)r^��� _lock_filerZ��rV���s��� r"���r����z_singlefileMailbox.lock���s1�������|�� ��t�z�"�"�"��D�L�L�L� �� r$���c������������������N�����|�j���������rt����������|�j���������������������d|�_���������dS�dS��r����FN)r^���_unlock_filerZ��rV���s��� r"���r����z_singlefileMailbox.unlock���s1�������<�� !����$�$�$� �D�L�L�L� !�� !r$���c����������� �������8����|�j���������s$|�j��������rt����������|�j���������������������d|�_��������dS�|�j�����������������������������dd�������������|�j�������������������������������������������}||�j��������k����rt����������d|�j��������|fz���������������t����������|�j ��������������������} �i�}|�� ��������������������|�������������t����������|�j��������� ����������������������������������������������D�]�}|�j��������|���������\��}}|�j�����������������������������|�������������|����������������������|�������������|�����������������������������������} �|�j�����������������������������t!����������d||�j�������������������������������������������z ��������������������������}|sn|���������������������|��������������[||�����������������������������������f||<���|����������������������|���������������|�����������������������������������|�_��������n3#��|������������������������������������t)����������j��������|j�����������������������xY�wt/����������|�������������|�j��������������������������������������������t)����������j��������|�j ��������������������j��������} t)����������j��������|j��������| ������������� �t)����������j��������|j��������|�j ���������������������nH#�t8����������$�r;�t)����������j��������|�j ���������������������t)����������j��������|j��������|�j ���������������������Y�nw�xY�wt;����������|�j ��������d������������|�_��������||�_��������d|�_���������d|�_��������|�j��������rt?����������|�j��������d� �������������dS�dS�) r��FNr���rI��z4Size of mailbox file changed (expected %i, found %i)T����rV��)�dotlock) r\��r]���_sync_flushrZ��r�����tellr_��r����_create_temporaryr����_pre_mailbox_hook�sortedr����rZ����_pre_message_hookr�����minr�����_post_message_hookr����r���r2���r����r����rD���st_mode�chmodr����rF��r����r^��rh��) r����cur_len�new_file�new_tocr1����start�stop� new_startr�����modes ��� r"���r~���z_singlefileMailbox.flush���s������}�� ��!�� +���D�J�'�'�'�%*��"��F�� � ����1�����*�/�/�#�#���d�'�'�'�$��&?�&*�&7��%A�&B��C��C�� C��%�T�Z�0�0�� ��G��"�"�8�,�,�,��d�i�n�n�.�.�/�/�� 2�� 2��"�i��n���t�� ����&�&�&��&�&�x�0�0�0�$�M�M�O�O� �+�!�Z�_�_�S��15�� ���8I�8I�1I�.K��.K��L��L�F�!�����N�N�6�*�*�*�+��!*�8�=�=�?�?�;�����'�'��1�1�1�1� (� � ���D���� ��N�N�����I�h�m�$�$�$������H����� �������w�t�z�"�"�*�� �����%�%�%� 1��I�h�m�T�Z�0�0�0�0���� 1�� 1�� 1��I�d�j�!�!�!��I�h�m�T�Z�0�0�0�0�0� 1������$�*�e�,�,�� ��� ��� �"����<�� 2��t�z�5�1�1�1�1�1�1� 2�� 2s ����D6G��0H��$J��AK �K c�����������������������dS�)�,Called before writing the mailbox to file f.Nr�����r���r��s��� r"���rr��z$_singlefileMailbox._pre_mailbox_hook���r��r$���c�����������������������dS�)�-Called before writing each message to file f.Nr����r���s��� r"���rt��z$_singlefileMailbox._pre_message_hook���r��r$���c�����������������������dS���,Called after writing each message to file f.Nr����r���s��� r"���rv��z%_singlefileMailbox._post_message_hook���r��r$���c���������������������� �|�������������������������������������� �|�j��������r|�������������������������������������|�j��������������������������������������������dS�#�|�j��������������������������������������������w�xY�w#� �|�j��������r|�������������������������������������|�j��������������������������������������������w�#�|�j��������������������������������������������w�xY�wxY�wr��)r~���r^��r����rZ��r����rV���s��� r"���r����z_singlefileMailbox.close���s������� #��J�J�L�L�L� #��<��"��K�K�M�M�M�� � � �"�"�"�"�"��� � � �"�"�"�"����� #��<��"��K�K�M�M�M�� � � �"�"�"�"��� � � �"�"�"�"������s.����A+��A �� A(�+C��-B"�C��"B=�=C�c�����������������������|�j����������|�������������������������������������|�/ �|�j���������|���������S�#�t����������$�r�t����������d|z��������������d�w�xY�wdS�)z'Return (start, stop) or raise KeyError.NrN��)r����� _generate_tocr8���r0���s��� r"���r����z_singlefileMailbox._lookup���so�������9����� � � ��?� J��y��~�%���� J�� J�� J��8�3�>�?�?�T�I� J������?s ����,��A c������������������6����|�j������������������������������dd�������������|�j��������������������������������������������}t����������|�j��������������������dk����r!|�j��������s|����������������������|�j���������������������� �|����������������������|�j����������������������|����������������������|������������}|�� ��������������������|�j����������������������n)#�t����������$�r�|�j������������������������������|���������������w�xY�w|�j���������������������������������������������|�j��������������������������������������������|�_ ��������|S�)z;Append message to mailbox and return (start, stop) offsets.r���rI��)rZ��r����rp��r��r����r\��rr��rt���_install_messagerv��r�����truncater~���r_��)r���r+����before�offsetss��� r"���ra��z"_singlefileMailbox._append_message���s������ ����1��������"�"���t�y�>�>�Q���t�}�� � �"�"�4�:�.�.�.� ��"�"�4�:�.�.�.��+�+�G�4�4�G��#�#�D�J�/�/�/�/���� �� �� ��J����'�'�'�� ����� � ������ �J�O�O�-�-����s ����/A B9��9&Cr����r4���)r����r����r����r����r#���r,���r2���r=���rW���rk���rn���r����r����r~���rr��rt��rv��r����r����ra��r����r$���r"���rT��rT��A��s������������� � �!��!��!��!�."��"��"�����������$��$��$� �� �� � ����� �� �� �!��!��!�>2��>2��>2�@��������������� #�� #�� #�J��J��J��J���������r$���rT��c��������������������:�����e�Zd�ZdZdZd��Zd d�Zd d�Zd d�Zd��Z d S�)� _mboxMMDFzAn mbox or MMDF mailbox.Tc����������������������|�����������������������|������������\��}}|�j�����������������������������|�������������|�j����������������������������������������������������������������t ����������d���������������������������������d������������}|�j�����������������������������||�j�������������������������������������������z ��������������}|�� ��������������������|���������������������t ����������d������������������������}|� ��������������������|�������������|���������������������|dd�����������������������|S�)rI���r$���r���r����r����N)r����rZ��r����r����r����r�����decoder����rp���_message_factory�set_unixfrom�set_from)r���r1���r|��r}��� from_line�stringr��s��� r"���rC���z_mboxMMDF.get_message ��s��������l�l�3�'�'���t�� ��������J�'�'�)�)�1�1�'�3�?�?�F�F�w�O�O� ������� ���(9�(9�!9�:�:���#�#�F�N�N�7�E�$B�$B�C�C������#�#�#����Y�q�r�r�]�#�#�#�� r$���Fc������������������z�����t����������j��������|����������������������||���������������������������������������������|�������������S�)�3Return a string representation or raise a KeyError.)�unixfromrK���)r���r1����from_s��� r"���rP���z_mboxMMDF.get_string��s8�������'��N�N�3��&�&�(��(�(1� �5� �(A�(A� Br$���c������������������:����|�����������������������|������������\��}}|�j�����������������������������|�������������|s|�j��������������������������������������������|�j�����������������������������||�j�������������������������������������������z ��������������}|���������������������t����������d������������S�)r���r����)r����rZ��r����r����r����rp��r����r����)r���r1���r���r|��r}��r���s��� r"���rN���z_mboxMMDF.get_bytes��s�������l�l�3�'�'���t�� ��������� "��J���!�!�!������� ���(9�(9�!9�:�:���~�~�g�u�-�-�-r$���c�����������������������|�����������������������|������������\��}}|�j�����������������������������|�������������|s|�j��������������������������������������������t ����������|�j��������|�j�������������������������������������������|������������S�)rS���)r����rZ��r����r�����_PartialFilerp��)r���r1���r���r|��r}��s��� r"���rF���z_mboxMMDF.get_file"��sg�������l�l�3�'�'���t�� ��������� "��J���!�!�!��D�J�� ���(9�(9�4�@�@�@r$���c����������������������d}t����������|t����������������������r|����������������������|������������}t����������|t����������������������rM|���������������������d������������r8|���������������������d������������}|dk����r|d|����������}||dz���d����������}n�|}d}n�t����������|t����������������������r-|��������������������������������������������������������d������������}d|z���}nJt����������|t����������j ��������j��������������������r+|�����������������������������������}|�|���������������������d������������}|�:dt����������j��������t����������j���������������������������������������������������������������������z���}|�j�������������������������������������������}|�j�����������������������������|t&����������z����������������|����������������������||�j��������|�j���������������������|�j�������������������������������������������}||fS�) z1Format a message and blindly write to self._file.Nr����r����r����r��r$���r���s���From MAILER-DAEMON )r����r����r����r����r�����find�_mboxMMDFMessage�get_fromr����rL���r+���r ����get_unixfromr8���asctime�gmtimerZ��rp��r����r����r����� _mangle_from_)r���r+���r����newline�authorr|��r}��s��� r"���r���z_mboxMMDF._install_message*��s������� ��g�s�#�#�� 5��+�+�G�4�4�G��g�u�%�%�� 6�'�*<�*<�X�*F�*F�� 6��l�l�5�)�)�G��"�}�}�#�H�W�H�-� �!�'�A�+�,�,�/���#� ���� ��!1� 2� 2�� 6��%�%�'�'�.�.�w�7�7�F� �6�)�I�I� ����!6� 7� 7�� 6��,�,�.�.�I��$�%�,�,�W�5�5� ���.���d�k�m�m�1L�1L�1S�1S�1U�1U�U�I�� ���!�!��� ����W�,�-�-�-����7�D�J��0B�C�C�C��z��� � ���t�}�r$���Nr����) r����r����r����r����r���rC���rP���rN���rF���r���r����r$���r"���r���r�����s���������������"�"��M� �� �� �B��B��B��B� .��.��.��.�A��A��A��A���������r$���r���c��������������������.�����e�Zd�ZdZdZdZdd�Zd��Zd��ZdS�)r���zA classic mbox mailbox.TNc������������������X�����t�����������|�_��������t�������������������������������|�|||�������������dS�)zInitialize an mbox mailbox.N)r���r���r���r#���r���s��� r"���r#���z mbox.__init__P���*������ +������4��w��7�7�7�7�7r$���c������������������:�����|����������������������t�����������������������dS�r����r����r����r���s��� r"���rv��zmbox._post_message_hookU��s������ ��������r$���c������������������D����g�g�}}d}|�j������������������������������d������������� �|�j��������������������������������������������}|�j��������������������������������������������}|���������������������d������������rzt����������|������������t����������|������������k�����rB|r+|���������������������|t����������t����������������������z ���������������n|���������������������|�������������|���������������������|�������������d}nU|sC|r+|���������������������|t����������t����������������������z ���������������n|���������������������|�������������n|t����������k����rd}nd}��t����������t����������t����������||������������������������������������|�_��������t����������|�j��������������������|�_��������|�j��������������������������������������������|�_ ��������dS�)�0Generate key-to-(start, stop) table of contents.Fr���Tr����N)rZ��r����rp��r����r����r��r��r�����dict� enumerate�zipr����r[��r_��)r����starts�stops�last_was_empty�line_posr����s��� r"���r���zmbox._generate_tocY��sx������B������ ������� '��z���(�(�H��:�&�&�(�(�D����x�(�(�� '��u�:�:��F���+�+�%��/����X��G���%<�=�=�=�=� ����X�.�.�.�� � �h�'�'�'�!&����� '�!��+��L�L��C��L�L�!8�9�9�9�9��L�L��*�*�*������!%���!&��/ '�0���3�v�u�#5�#5�6�6�7�7�� ��T�Y����� �J�O�O�-�-����r$���r����) r����r����r����r����r���r����r#���rv��r���r����r$���r"���r���r���G��sX��������������!�!��M���O�8��8��8��8� �����.��.��.��.��.r$���r���c��������������������,�����e�Zd�ZdZdd�Zd��Zd��Zd��ZdS�) r ���zAn MMDF mailbox.NTc������������������X�����t�����������|�_��������t�������������������������������|�|||�������������dS�)zInitialize an MMDF mailbox.N)r���r���r���r#���r���s��� r"���r#���z MMDF.__init__~��r���r$���c������������������@�����|����������������������dt����������z����������������dS�)r�������Nr���r���s��� r"���rt��zMMDF._pre_message_hook���s ������ ���#�g�-�.�.�.�.�.r$���c������������������P�����|����������������������t����������dz���t����������z����������������dS�)r���r���Nr���r���s��� r"���rv��zMMDF._post_message_hook���s%������ ����-�-��7�8�8�8�8�8r$���c������������������.����g�g�}}|�j������������������������������d�������������d} �|}|�j��������������������������������������������}|�j��������������������������������������������}|���������������������dt ����������z���������������r�|���������������������|������������� �|}|�j��������������������������������������������}|�j��������������������������������������������}|dt ����������z���k����r+|���������������������|t����������t ����������������������z ���������������n|s|���������������������|�������������n��n|sn��t����������t����������t����������||������������������������������������|�_��������t����������|�j��������������������|�_��������|�j������������������������������dd�������������|�j��������������������������������������������|�_ ��������dS�)r���r���Tr���rI��N)rZ��r����r����rp��r����r����r��r��r���r���r���r����r[��r_��)r���r���r����next_posr���r����s��� r"���r���zMMDF._generate_toc���st������B���� ��������� ��H��:�&�&�(�(�D��z���(�(�H����2�W�<�=�=�� �� � �h�'�'�'� �'�H��:�.�.�0�0�D�#�z���0�0�H��2�W�<�<�<����X��G���%<�=�=�=��!������X�.�.�.�� ����� ��# �$���3�v�u�#5�#5�6�6�7�7�� ��T�Y������ ����1���� �J�O�O�-�-����r$���r����)r����r����r����r����r#���rt��rv��r���r����r$���r"���r ���r ���{��s[����������������8��8��8��8� /��/��/�9��9��9�.��.��.��.��.r$���r ���c�������������������������e�Zd�ZdZdd�Zd��Zd��Zd��Zd��Zd ��Z d ��Z d��Zd��Zd ��Z d��Zd��Zd��Zd��Zd��Zd��Zd��Zd��Zd��Zd��Zd��Zd��ZdS�)r���zAn MH mailbox.NTc�����������������������t��������������������������������|�|||�������������t����������j�����������������������������|�j��������������������s�|r�t����������j��������|�j��������d�������������t����������j��������t����������j��������t����������j��������� ��������������������|�j��������d������������t����������j ��������t����������j��������z��t����������j��������z��d�������������������������nt����������|�j���������������������d|�_��������dS�)zInitialize an MH instance.r����� .mh_sequencesi���FN)r���r#���r���r���r����r���r����r����r����r����r*���O_EXCLr+��r���r^��r���s��� r"���r#���zMH.__init__���s�����������t�W�f�5�5�5��w�~�~�d�j�)�)�� 5��� 5�����U�+�+�+���������d�j�/�!J�!J�!#��b�i�!7�"�+�!E�u�N��N��O��O��O��O��)���4�4�4�����r$���c����������������������|�������������������������������������}t����������|������������dk����rd}nt����������|������������dz���}t����������j�����������������������������|�j��������t����������|������������������������}t����������|������������}d} �|�j ��������rt����������|������������� � �|����������������������||�������������nJ#�t����������$�r=�|�j ��������rt����������|�������������t����������|�������������d}t����������j��������|���������������w�xY�wt!����������|t"����������������������r|����������������������||�������������|�j ��������rt����������|�������������n#�|�j ��������rt����������|�������������w�w�xY�w|st����������|�������������n#�|st����������|�������������w�w�xY�w|S�)r&���r���r��FT)rZ���r���maxr���r���r����r���r����rE��r^��rh��r����r����rk��r����r2���r����r ����_dump_sequences)r���r+���rZ����new_keyr����r���closeds��� r"���r,���zMH.add���s�������y�y�{�{���t�9�9��>�>��G�G��$�i�i�!�m�G��7�<�<�� �C��L�L�9�9���h�'�'���� ��|�� ��1� � � � $� ��&�&�w��2�2�2�2��$��������|��(�$�Q������N�N�N�!�F��I�h�'�'�'��������g�y�1�1��;��(�(��'�:�:�:��<��$� ��O�O�O�����<��$� ��O�O�O�O�$������� ��A��������� ��A����� �����s7����E*��B0��/D<��0AC7�7.D<��%E*��<E�E*��*E>c������������������P����t�����������j�����������������������������|�j��������t ����������|������������������������} �t����������|d������������}|������������������������������������t����������j��������|�������������dS�#�t����������$�r-}|j ��������t����������j ��������k����rt����������d|z�����������������d}~ww�xY�w)r/���rV��rN��N)r���r���r����r���r����r����r����r2���r����r����rW��r8���)r���r1���r���r��r����s��� r"���r2���z MH.remove���s��������w�|�|�D�J��C���1�1�� ��T�5�!�!�A�� �G�G�I�I�I��I�d�O�O�O�O�O����� �� �� ��w�%�,�&�&��8�3�>�?�?�?������ ���s����A.��. B%�8(B � B%c�����������������������t�����������j�����������������������������|�j��������t ����������|������������������������} �t����������|d������������}n:#�t����������$�r-}|j��������t����������j��������k����rt����������d|z�����������������d}~ww�xY�w �|�j ��������rt����������|������������� �t����������j��������t����������j��������|t�����������j ��������t�����������j��������z���������������������������|����������������������||�������������t!����������|t"����������������������r|����������������������||�������������|�j ��������rt'����������|�������������n#�|�j ��������rt'����������|�������������w�w�xY�wt)����������|�������������dS�#�t)����������|�������������w�xY�w)r;���rV��rN��N)r���r���r����r���r����r����r����r����rW��r8���r^��rh��r����r+���O_TRUNCr����r����r ���r���rk��r����)r���r1���r+���r���r��r����s��� r"���r=���zMH.__setitem__���sU������w�|�|�D�J��C���1�1�� ��T�5�!�!�A�A���� �� �� ��w�%�,�&�&��8�3�>�?�?�?������ ���� ��|�� ��1� � � � $������r�{�R�Z�'?�@�@�A�A�A��"�"�7�A�.�.�.��g�y�1�1��7��(�(��#�6�6�6��<��$� ��O�O�O�����<��$� ��O�O�O�O�$����� ��N�N�N�N�N��K��N�N�N�N���s<����A�� A<�(A7�7A<��E��A?D-��E��-E�E��E+c���������������������� �|�j���������rAt����������t����������j�����������������������������|�j��������t ����������|������������������������d������������}n@t����������t����������j�����������������������������|�j��������t ����������|������������������������d������������}n:#�t����������$�r-}|j��������t����������j ��������k����rt����������d|z�����������������d}~ww�xY�w|5��|�j���������rt����������|������������� �t����������|������������}|�j���������rt����������|�������������n#�|�j���������rt����������|�������������w�w�xY�wddd�������������n#�1�swxY�w�Y���|�����������������������������������������������������������������������D�]\��}}||v�r|���������������������|��������������|S�)rI���rV��r����rN��N)r^��r����r���r���r����r���r����r����r����rW��r8���rh��r ���rk��� get_sequencesrh����add_sequence)r���r1���r��r����r��r�����key_lists��� r"���rC���zMH.get_message���s������ ��|�� C������d�j�#�c�(�(�;�;�U�C�C��������d�j�#�c�(�(�;�;�T�B�B������ �� �� ��w�%�,�&�&��8�3�>�?�?�?������ ���� ��� $�� $��|�� ��1� � � � $���l�l���<��$� ��O�O�O�����<��$� ��O�O�O�O�$���� $�� $�� $�� $�� $�� $�� $�� $�� $�� $�� $����� $�� $�� $�� $��#�0�0�2�2�8�8�:�:�� '�� '�N�D�(��h���� � ��&�&�&��� sB����BB�� C�(B=�=C�D-�D�.D-�D�D-�-D1�4D1c���������������������� �|�j���������rAt����������t����������j�����������������������������|�j��������t ����������|������������������������d������������}n@t����������t����������j�����������������������������|�j��������t ����������|������������������������d������������}n:#�t����������$�r-}|j��������t����������j ��������k����rt����������d|z�����������������d}~ww�xY�w|5��|�j���������rt����������|������������� �|������������������������������������ ��������������������t����������d������������|�j���������rt����������|�������������cddd�������������S�#�|�j���������rt����������|�������������w�w�xY�w#�1�swxY�w�Y���dS�)r��rV��r����rN��Nr����)r^��r����r���r���r����r���r����r����r����rW��r8���rh��r����r����r����rk���r���r1���r��r����s��� r"���rN���zMH.get_bytes��s������ ��|�� C������d�j�#�c�(�(�;�;�U�C�C��������d�j�#�c�(�(�;�;�T�B�B������ �� �� ��w�%�,�&�&��8�3�>�?�?�?������ ���� ��� $�� $��|�� ��1� � � � $��v�v�x�x�'�'���7�7��<��$� ��O�O�O� $�� $�� $�� $�� $�� $�� $�� $����<��$� ��O�O�O�O�$���� $�� $�� $�� $����� $�� $�� $�� $�� $�� $sB����BB�� C�(B=�=C�E �,D.�E �.E�E � E�Ec���������������������� �t����������t����������j�����������������������������|�j��������t����������|������������������������d������������}n:#�t����������$�r-}|j��������t����������j��������k����rt����������d|z�����������������d}~ww�xY�wt����������|������������S�)rS���r����rN��N)r����r���r���r����r���r����r����r����rW��r8���r��r���s��� r"���rF���zMH.get_file-��s������� ��R�W�\�\�$�*�c�#�h�h�7�7��>�>�A�A���� �� �� ��w�%�,�&�&��8�3�>�?�?�?������ ���� ��!�}�}�s����A�A�� A:� (A5�5A:c������������������|�����t����������t����������d��t����������j��������|�j��������������������D���������������������������������������S�)rU���c��������������3����\���K����|�]'}|�������������������������������������t����������|������������V����(d�S�r4���)�isdigitrA��)�.0r��s��� r"���� <genexpr>zMH.iterkeys.<locals>.<genexpr>:��sH�����������:��:�%�).�����:�3�u�:�:��:��:��:��:��:��:r$���)�iterrs��r���r��r���rV���s��� r"���rW���zMH.iterkeys8��sG�������F��:��:�2�:�d�j�3I�3I��:��:��:��:��:��;��;�� ;r$���c�����������������������t�����������j�����������������������������t�����������j�����������������������������|�j��������t����������|������������������������������������S�r��)r���r���r����r����r���r����r0���s��� r"���rk���zMH.__contains__=��s.�������w�~�~�b�g�l�l�4�:�s�3�x�x�@�@�A�A�Ar$���c������������������^�����t����������t����������|������������������������������������������������������������S�r��)r��rY���rW���rV���s��� r"���rn���z MH.__len__A��s �������4�� � ���(�(�)�)�)r$���c�����������������������|�j���������sUt����������t����������j�����������������������������|�j��������d������������d������������|�_��������t����������|�j���������������������d|�_���������dS�dS�)r����r���rV��TN)r^��r����r���r���r����r���rZ��rh��rV���s��� r"���r����zMH.lockE��sT�������|�� ��b�g�l�l�4�:��G�G��O�O�D�J��t�z�"�"�"��D�L�L�L� �� r$���c������������������z�����|�j���������r3t����������|�j���������������������t����������|�j���������������������|�`d|�_���������dS�dS�rj��)r^��rk��rZ��r����rV���s��� r"���r����z MH.unlockL��sF�������<�� !����$�$�$��� �#�#�#�� � �D�L�L�L� !�� !r$���c�����������������������dS�)r}���Nr����rV���s��� r"���r~���zMH.flushT��r��r$���c������������������@�����|�j���������r|�������������������������������������dS�dS�r��)r^��r����rV���s��� r"���r����zMH.closeX��s'�������<�� ��K�K�M�M�M�M�M� �� r$���c������������������������g�}t����������j��������|�j��������������������D�]Y}t�����������j�����������������������������t�����������j�����������������������������|�j��������|������������������������r|���������������������|��������������Z|S�)r��)r���r��r���r���r��r����r��r��s��� r"���r ��zMH.list_folders]��sb���������Z�� �+�+�� %�� %�E��w�}�}�R�W�\�\�$�*�e�<�<�=�=�� %�� � �e�$�$�$��� r$���c������������������v�����t����������t����������j�����������������������������|�j��������|������������|�j��������d�������������S�)z+Return an MH instance for the named folder.Fr"���r���r���r���r����r���r���r#��s��� r"���r%��z MH.get_foldere��s4�������"�'�,�,�t�z�6�2�2��-��7��7��7�� 7r$���c������������������t�����t����������t����������j�����������������������������|�j��������|������������|�j���������������������S�)z:Create a folder and return an MH instance representing it.r'��r���r#��s��� r"���r-��z MH.add_folderj��s2�������"�'�,�,�t�z�6�2�2��-�)��)��)�� )r$���c������������������P����t�����������j�����������������������������|�j��������|������������}t����������j��������|������������}|dgk����r3t����������j��������t�����������j�����������������������������|d�������������������������n|g�k����rnt ����������d|�j��������z���������������t����������j��������|�������������dS�)r/��r���zFolder not empty: %sN)r���r���r����r���r��r2���r���r2��)r���r$��r����entriess��� r"���r6��zMH.remove_foldero��s��������w�|�|�D�J��/�/���*�T�"�"����'�'�'��I�b�g�l�l�4��9�9�:�:�:�:� ��]�]��� 6��� C�D�D�D� �������r$���c����������� �������H��� ��i�}t����������t����������j�����������������������������|�j��������d������������dd�������������5�}t����������|������������������������������������������������� |D��]+} �|���������������������d������������\��}}t������������������������}|�����������������������������������D�]�}|�����������������������������������r#|� ��������������������t����������|��������������������������9d��|���������������������d������������D���������������\��}} |���������������������t����������|| dz������������������������������� fd �t����������|������������D���������������||<���t����������||���������������������d k����r||=���#�t����������$�r%�t!����������d|�����������������������������������z���������������w�xY�w �ddd�������������n#�1�swxY�w�Y���|S�) z=Return a name-to-key-list dictionary to define each sequence.r����r�ASCII��encodingr����c��������������3����4���K����|�]}t����������|������������V����d�S�r4���)rA��)r����xs��� r"���r���z#MH.get_sequences.<locals>.<genexpr>���s(����������*K�*K�a�3�q�6�6�*K�*K�*K�*K�*K�*Kr$����-r��c������������������������g�|�]}|�v��|�� S�r����r����)r���r1����all_keyss��� �r"���� <listcomp>z$MH.get_sequences.<locals>.<listcomp>���s)��������%=��%=��%=�S�,/�8�O�O��&)�,;�O�Or$���r���z"Invalid sequence specification: %sN)r����r���r���r����r����setrZ���r����r���r,���rA��r{����rangers��r��r����r����rstrip)r����resultsr��r����r�����contentsrZ����specr|��r}��r���s��� @r"���r���zMH.get_sequences{��s��������� �"�'�,�,�t�z�?�;�;�S�7� S� S� S�� 5�WX��4�9�9�;�;�'�'�H��� 5�� 5��5�%)�Z�Z��_�_�N�D�(��5�5�D� (��� 0� 0��@��@���<�<�>�>��@� �H�H�S��Y�Y�/�/�/�/�*K�*K�4�:�:�c�?�?�*K�*K�*K�K�E�4� �K�K��e�T�A�X�(>�(>�?�?�?�?�%=��%=��%=��%=�F�4�L�L��%=��%=��%=�G�D�M��7�4�=�)�)�Q�.�.�#�D�M���!��5��5��5�%�&J�&*�k�k�m�m�'4��5��5��5�5���� 5� 5�� 5�� 5�� 5�� 5�� 5�� 5�� 5�� 5�� 5�� 5����� 5�� 5�� 5�� 5�&��s*����'F�!C6E�F�/F�F�F�Fc������������������D����t����������t����������j�����������������������������|�j��������d������������dd�������������} �t����������j��������t����������j���������|j��������t����������j��������t����������j��������z���������������������������|� ����������������������������������D�]�\��}}t����������|������������dk����r�|���������������������|dz����������������d}d}t����������t����������|������������������������D�]^}|d z ��|k����r|sd }|���������������������d�������������n7|rd}|���������������������|�d|���������������n|���������������������d |z���������������|}�_|r&|���������������������t����������|������������dz������������������|���������������������d��������������� �t����������|�������������dS�#�t����������|�������������w�xY�w)z:Set sequences using the given name-to-key-list dictionary.r���zr+r���r���r���r����NFr��Tr���� z %s� )r����r���r���r����r���r����r����r+��r���rh���r��r����rs��r���r����r����)r���� sequencesr��r����rZ����prev� completingr1���s��� r"���� set_sequenceszMH.set_sequences���s�����������d�j�/�:�:�D�7�S�S�S�� ��H�R�W�Q�V�R�[�2�:�%=�>�>�?�?�?�'�o�o�/�/�� "�� "� ��d��t�9�9��>�>������s� �#�#�#���"� �!�#�d�)�)�,�,�� �� �C��Q�w�$���)��)�)-�J��G�G�C�L�L�L��#��-�%*� ����4�4�4��� 5�6�6�6�6�������,�,�,��D�D���"��G�G�C��I�I��,�-�-�-�-��G�G�D�M�M�M�M�) "�,� ��N�N�N�N�N��K��N�N�N�N���s����EF��Fc������������������8����|�������������������������������������}d}g�}|������������������������������������D��]y}|dz ��|k�����rg|���������������������||dz���f������������� �t����������j��������t����������j�����������������������������|�j��������t����������|������������������������t����������j�����������������������������|�j��������t����������|dz����������������������������������������t����������j ��������t����������j�����������������������������|�j��������t����������|�������������������������������������n�#�t����������t����������f$�r{�t����������j��������t����������j�����������������������������|�j��������t����������|������������������������t����������j�����������������������������|�j��������t����������|dz����������������������������������������Y�nw�xY�w|dz ��}��{|dz���|�_ ��������t����������|������������dk����rdS�|�����������������������������������D�])\��}}|D�]!\��}}||v�r|||���������������������|������������<����"�*|����������������������|�������������dS�)z?Re-name messages to eliminate numbering gaps. Invalidates keys.r���r��N)r���rW���r��r���r����r���r����r���r�����unlinkr����r����r����r[��r��rh����indexr���) r���r���r����changesr1���r����r����oldr����s ��� r"����packzMH.pack���s�������&�&�(�(� ������=�=�?�?�� �� �C��Q�w�$�������T�A�X��/�/�/�B��G�B�G�L�L���S��X�X�>�>��G�L�L���S����]�]�C�C�E��E��E���I�b�g�l�l�4�:�s�3�x�x�@�@�A�A�A�A�� �'��8��G��G��G��I�b�g�l�l�4�:�s�3�x�x�@�@� �g�l�l�4�:�s�4�!�8�}�}�E�E�G��G��G��G��G�G���� � �A�I�D�D�������w�<�<�1����F�'�o�o�/�/�� 8�� 8�N�D�(�#�� 8�� 8���S��(�?�?�47�H�X�^�^�C�0�0�1�� 8�� ���9�%�%�%�%�%s����A8D�B F�Fc������������������:����|������������������������������������}|�������������������������������������}|�����������������������������������D�]9\��}}||v�r|���������������������|��������������||v�r||���������������������|������������=��:|D�]}||vr|g||<���� |����������������������|�������������dS�)z;Inspect a new MHMessage and update sequences appropriately.N)r���rh���r��r���r���)r���r+���r1����pending_sequences� all_sequencesr����r����sequences��� r"���r���zMH._dump_sequences���s�������#�1�1�3�3���*�*�,�,� �+�1�1�3�3�� 2�� 2�N�D�(��(�(�(�����$�$�$�$������X�^�^�C�0�0�1��)�� 0�� 0�H��}�,�,�+.�%� �h�'�����=�)�)�)�)�)r$���r����)r����r����r����r����r#���r,���r2���r=���rC���rN���rF���rW���rk���rn���r����r����r~���r����r ��r%��r-��r6��r���r���r��r���r����r$���r"���r���r������sm��������������� �� �� �� � �� �� �D����������0�����2$��$��$�* �� �� �;��;��;� B��B��B�*��*��*� �� �� �!��!��!����������� �����7��7��7� )��)��)� �� �� ������0�����:&��&��&�4*��*��*��*��*r$���r���c��������������������|�����e�Zd�ZdZ�eh�d�������������Zdd�Zd��Zd��Zd��Z d ��Z d ��Zd��Zd��Z d ��Zd��Zd��Zd��Zd��ZdS�)r���zAn Rmail-style Babyl mailbox.>����filed�edited�resent�unseen�deleted�answered� forwardedNTc������������������N�����t��������������������������������|�|||�������������i�|�_��������dS�)zInitialize a Babyl mailbox.N)rT��r#����_labelsr���s��� r"���r#���zBabyl.__init__���s'�������#�#�D�$���@�@�@�����r$���c�����������������������t��������������������������������|�|������������}t����������|t����������������������r|�����������������������������������|�j��������|<���|S�)r&���)rT��r,���r����r���� get_labelsr��)r���r+���r1���s��� r"���r,���z Babyl.add���sF������ �$�$�T�7�3�3���g�|�,�,�� 5� '� 2� 2� 4� 4�D�L���� r$���c������������������b�����t��������������������������������|�|�������������||�j��������v�r |�j��������|=�dS�dS�r����)rT��r2���r��r0���s��� r"���r2���zBabyl.remove���s=�������!�!�$��,�,�,��$�,�����S�!�!�!���r$���c�����������������������t��������������������������������|�||�������������t����������|t����������������������r|�����������������������������������|�j��������|<���dS�dS�)r;���N)rT��r=���r����r���r��r��r<���s��� r"���r=���zBabyl.__setitem__���sT�������&�&�t�S�'�:�:�:��g�|�,�,�� 5� '� 2� 2� 4� 4�D�L����� 5�� 5r$���c�����������������������|�����������������������|������������\��}}|�j�����������������������������|�������������|�j��������������������������������������������t ����������j����������������������} �|�j�������������������������������������������}|dt����������z���k����s|sn/|���������������������|���������������������t����������d��������������������������Yt ����������j����������������������} �|�j�������������������������������������������}|t����������k����s|sn/|���������������������|���������������������t����������d��������������������������V||�j��������� ����������������������������������z ��}|�j��������� ��������������������|������������}|���������������������t����������d������������}t����������|�����������������������������������|z���������������} | � ��������������������|������������������������������������������������||�j��������v�r | ���������������������|�j��������|����������������������| S�)rI���T����*** EOOH ***r����)r����rZ��r����r����r����r����r����r����r����rp��r����r���r�����set_visibler��� set_labels) r���r1���r|��r}���original_headersr�����visible_headers�n�bodyr��s ��� r"���rC���zBabyl.get_message���s�������l�l�3�'�'���t�� �������� �������:�<�<�� A��:�&�&�(�(�D����0�0�0��0���"�"�4�<�<���#?�#?�@�@�@� A� ��*�,�,�� @��:�&�&�(�(�D��w���d����!�!�$�,�,�w��">�">�?�?�?� @�� �4�:�?�?�$�$�$���z���q�!�!���|�|�G�U�+�+���+�4�4�6�6��=�>�>������0�0�2�2�3�3�3��$�,����N�N�4�<��,�-�-�-�� r$���c����������������������|�����������������������|������������\��}}|�j�����������������������������|�������������|�j��������������������������������������������t ����������j����������������������} �|�j�������������������������������������������}|dt����������z���k����s|sn/|���������������������|���������������������t����������d��������������������������Y �|�j�������������������������������������������}|t����������k����s|sn�(|� ����������������������������������}||�j��������� ����������������������������������z ��}|�j�����������������������������|������������}|���������������������t����������d������������}||z���S�)r���Tr��r����)r����rZ��r����r����r����r����r����r����r����r����rp��r����) r���r1���r|��r}��r��r�����headersr��r����s ��� r"���rN���zBabyl.get_bytes��s*������l�l�3�'�'���t�� �������� �������:�<�<�� A��:�&�&�(�(�D����0�0�0��0���"�"�4�<�<���#?�#?�@�@�@� A� ��:�&�&�(�(�D��w���d��� ��#�+�+�-�-���4�:�?�?�$�$�$���z���q�!�!���|�|�G�U�+�+����~�r$���c�����������������������t����������j��������|����������������������|���������������������������������dt����������������������������������S�)rS���r����)r����r����rN���r����r����r0���s��� r"���rF���zBabyl.get_file)��s.�������z�$�.�.��-�-�5�5�e�W�E�E�F�F�Fr$���c�����������������������|��������������������������������������t������������������������}|�j�������������������������������������������D�]}|���������������������|��������������|���������������������|�j���������������������t����������|������������S�)z4Return a list of user-defined labels in the mailbox.)r����r���r��rd���r{����difference_update�_special_labelsrY���)r����labels� label_lists��� r"���r��zBabyl.get_labels-��sm�����������������,�-�-�/�/�� &�� &�J��M�M�*�%�%�%�%�� � ��!5�6�6�6��F�|�|�r$���c����������������������g�g�}}|�j������������������������������d�������������d}g�} �|}|�j��������������������������������������������}|�j��������������������������������������������}|dt����������z���k����r�t����������|������������t����������|������������k�����r*|���������������������|t����������t����������������������z ���������������|���������������������|�������������d��|�j��������������������������������������������dd�������������������������������d������������D���������������}|���������������������|�������������n�|dk����s|dt����������z���k����rKt����������|������������t����������|������������k�����r*|���������������������|t����������t����������������������z ���������������n-|s+|���������������������|t����������t����������������������z ���������������n���t����������t����������t����������||������������������������������������|�_��������t����������t����������|������������������������|�_��������t����������|�j��������������������|�_ ��������|�j������������������������������dd �������������|�j��������������������������������������������|�_��������dS�) r���r���Ts���c������������������^�����g�|�]*}|�������������������������������������|��������������������������������������+S�r����)�strip�r����labels��� r"���r���z'Babyl._generate_toc.<locals>.<listcomp>D��s<�������:��:��:�E�+0�;�;�=�=�:�%�+�+�-�-��:��:��:r$���r��N����,����rI��)rZ��r����r����rp��r����r��r��r����r���r���r���r����r��r[��r_��)r���r���r���r����label_listsr���r����r"��s��� r"���r���zBabyl._generate_toc6��s�������B���� ����������� ��H��:�&�&�(�(�D��z���(�(�H��{�W�,�,�,��u�:�:��F���+�+��L�L��C��L�L�!8�9�9�9�� � �h�'�'�'�:��:�+/�:�+>�+>�+@�+@����+D�+J�+J�4�+P�+P�:��:��:����"�"�6�*�*�*�*�����D�G�g�,=�$=�$=��u�:�:��F���+�+��L�L��C��L�L�!8�9�9�9���� ����X��G���4�5�5�5��# �$���3�v�u�#5�#5�6�6�7�7�� ��I�k�2�2�3�3����T�Y������ ����1���� �J�O�O�-�-����r$���c������������������������dt�����������z���}|dt�����������z���z ��}|������������������������������������}d��|D���������������}|dd���������������������|������������z���t�����������z���z ��}|dz ��}|���������������������|�������������dS�)r���s���BABYL OPTIONS:s ���Version: 5c��������������3����>���K����|�]}|������������������������������������V����d�S�r4���)r����r'��s��� r"���r���z*Babyl._pre_mailbox_hook.<locals>.<genexpr>Y��s*����������5�5�U�%�,�,�.�.�5�5�5�5�5�5r$���s���Labels:r)��r*��N)r����r��r����r����)r���r���babylr"��s��� r"���rr��zBabyl._pre_mailbox_hookT��sz������!�G�+�� ���(�(�����"�"��5�5�f�5�5�5�� ��d�i�i��/�/�/�'�9�9�� ���� ��������r$���c������������������@�����|����������������������dt����������z����������������dS�)r�������Nr���r���s��� r"���rt��zBabyl._pre_message_hook^��s������ ����'�!�"�"�"�"�"r$���c������������������@�����|����������������������t����������dz����������������dS�)r���r*��Nr���r���s��� r"���rv��zBabyl._post_message_hookb��s������ ����'�!�"�"�"�"�"r$���c����������������������|�j��������������������������������������������}t����������|t�����������������������rg�}g�}|�����������������������������������D�]6}||�j��������v�r|���������������������|��������������!|���������������������|��������������7|�j������������������������������d�������������|D�]1}|�j������������������������������d|�����������������������������������z�����������������2|�j������������������������������d�������������|D�]4}|�j������������������������������d|�����������������������������������z���dz�����������������5|�j������������������������������t�����������������������n"|�j������������������������������dt����������z����������������t����������|t����������j��������j���������������������rKt����������j����������������������}t����������j�����������������������������|dd������������}|���������������������|�������������|���������������������d������������� �|�����������������������������������}|�j������������������������������|���������������������d t�����������������������������������|d k����s|sn�Q|�j������������������������������dt����������z����������������t����������|t����������������������r�t����������j����������������������} t����������j�����������������������������| dd������������} | ���������������������|������������������������������������������������ �| �����������������������������������}|�j������������������������������|���������������������d t�����������������������������������|d k����s|sn�Qng|���������������������d������������� �|�����������������������������������}|�j������������������������������|���������������������d t�����������������������������������|d k����s|sn�Q �|���������������������d������������}|sn4|�j������������������������������|���������������������d t������������������������������������L�n�t����������|t.����������t0����������t����������j��������f�������������r�t����������|t����������j��������������������r/t5����������j��������d t8����������d�������������|�����������������������������������}t����������|t0����������������������r|����������������������|������������}|���������������������d������������dz���}|dz ��dk����r�|�j������������������������������|d|�������������������������������d t�����������������������������������|�j������������������������������dt����������z����������������|�j������������������������������|d|�������������������������������d t�����������������������������������|�j������������������������������||d�������������������������������d t������������������������������������nU|�j������������������������������dt����������z���t����������z����������������|�j������������������������������|���������������������d t������������������������������������n�tA����������|d�������������r�tA����������|d������������r"t5����������j��������dt8����������d�������������|j!��������}|�����������������������������������} d } �|�����������������������������������}|�"��������������������d������������r|dd����������d z���}n"|�"��������������������d������������r |dd����������d z���}|�j������������������������������|���������������������d t�����������������������������������|d k����s|s=|r:d}|�j������������������������������dt����������z����������������|���������������������| �������������nn�� �|�����������������������������������}|sn�|�"��������������������d������������r|dd����������t����������z���}nO|�"��������������������d������������r|dd����������t����������z���}n'|�"��������������������d ������������r|dd����������t����������z���}|�j������������������������������|���������������ntG����������dtI����������|������������z���������������|�j��������������������������������������������}||fS�)z0Write message contents and return (start, stop).����1s���, s���,,���� r)��s���1,,Fr���Tr����r��rm��r����r����s��� rI��r����Nr����r����r����r����r����r����r����)%rZ��rp��r����r���r��r!��r��r����r����r����rL���r+���r ���r����r����r����r����r����r����r����r�����get_visibler����r����r����r����r����r����r����r����r����r���rw���r����r����r����r����)r���r+���r|���special_labelsr"��r(���orig_buffer�orig_generatorr����� vis_buffer� vis_generatorr����� body_start�original_pos� first_passr}��s��� r"���r���zBabyl._install_messagef��sK������ ���!�!���g�|�,�,�� /��N��F� �+�+�-�-�� )�� )���D�0�0�0�"�)�)�%�0�0�0�0��M�M�%�(�(�(�(��J���T�"�"�"�'�� 9�� 9��� � � �������!7�8�8�8�8��J���U�#�#�#��� ?�� ?��� � � �������!6��!=�>�>�>�>��J���W�%�%�%�%��J���V�g�-�.�.�.��g�u�}�4�5�5��S H��*�,�,�K�"�_�;�;�K��PQ�R�R�N��"�"�7�+�+�+����Q���� �"�+�+�-�-��� � � ����e�W�!=�!=�>�>�>��5�=�=��=�� � � �J���_�w�6�7�7�7��'�<�0�0�� ��Z�\�\� � %�� >� >�z�5�RS� T� T� ��%�%�g�&9�&9�&;�&;�<�<�<��%�.�.�0�0�D��J�$�$�T�\�\�%��%A�%A�B�B�B��u�}�}�D�}�� ���� � ��#�#�#��&�/�/�1�1�D��J�$�$�T�\�\�%��%A�%A�B�B�B��u�}�}�D�}�� � A�$�)�)�$�/�/������� � � �����w�!?�!?�@�@�@� A��� ��%��b�k�!:� ;� ;��3 H��'�2�;�/�/�� -�� ��*�+=�q�B��B��B�!�*�*�,�,���'�3�'�'�� 9��/�/��8�8�� ���g�.�.��2�J��A�~��#�#�� � � ���*��!5�!=�!=�e�W�!M�!M�N�N�N�� � � ��7�!:�;�;�;�� � � ���*��!5�!=�!=�e�W�!M�!M�N�N�N�� � � �����!5�!=�!=�e�W�!M�!M�N�N�N�N�� � � ��7�!:�W�!D�E�E�E�� � � ������!@�!@�A�A�A�A� �W�j� )� )��# H��w��)�)�� )�� ��5�6H�!�M��M��M�!�.��"�<�<�>�>�L��J� ��'�'�)�)���=�=��)�)��-�����9�u�,�D�D��]�]�5�)�)��-�����9�u�,�D�� � � ����e�W�!=�!=�>�>�>��5�=�=��=�!���%*� �� �(�(��7�)B�C�C�C����\�2�2�2�2�� � '��'�'�)�)�������=�=��)�)��/�����9�w�.�D�D��]�]�5�)�)��/�����9�w�.�D�D��]�]�5�)�)��/�����9�w�.�D�� � � ��&�&�&� '�����6��g���F�G�G�G��z��� � ���t�}�r$���r����)r����r����r����r����� frozensetr!��r#���r,���r2���r=���rC���rN���rF���r��r���rr��rt��rv��r���r����r$���r"���r���r������s�������������'�'��i��!B��!B��!B��C��C�O�������� �����"��"��"�5��5��5������8�����,G��G��G������.��.��.�<�����#��#��#�#��#��#�i��i��i��i��ir$���r���c��������������������&�����e�Zd�ZdZdd�Zd��Zd��ZdS�)r ���z0Message with mailbox-format-specific properties.Nc������������������h����t����������|t����������j��������j��������������������rU|����������������������t����������j��������|�������������������������t����������|t����������������������r|���������������������|��������������dS�dS�t����������|t����������������������r)|����������������������t����������j ��������|�������������������������dS�t����������|t����������������������r)|����������������������t����������j��������|�������������������������dS�t����������|t����������j ��������������������r)|����������������������t����������j��������|�������������������������dS�t����������|d������������r)|����������������������t����������j��������|�������������������������dS�|�&t����������j��������j�����������������������������|��������������dS�t%����������dt'����������|������������z���������������)zInitialize a Message instance.r����Nr����)r����rL���r+���r ����_become_message�copy�deepcopy�_explain_tor����rM���r�����message_from_stringr����� TextIOWrapper�message_from_filerw����message_from_binary_filer#���r����r����r*���s��� r"���r#���zMessage.__init__���s�������g�u�}�4�5�5�� H�� � ���w�!7�!7�8�8�8��'�7�+�+�� *��#�#�D�)�)�)�)�)� *�� *� ��� '� '�� H�� � ��!9�'�!B�!B�C�C�C�C�C� ��� %� %�� H�� � ��!:�7�!C�!C�D�D�D�D�D� ���!1� 2� 2�� H�� � ��!8��!A�!A�B�B�B�B�B� �W�f� %� %�� H�� � ��!?��!H�!H�I�I�I�I�I� �_��M�!�*�*�4�0�0�0�0�0��6��g���F�G�G�Gr$���c������������������n�����t����������|dg�������������}|j��������D�]}||vr|j��������|���������|�j��������|<����dS�)z0Assume the non-format-specific state of message.�_type_specific_attributesN)�getattr�__dict__)r���r+���� type_specificr����s��� r"���rA��zMessage._become_message���sP��������)D�b�I�I� ��$�� =�� =�D��=�(�(�&-�&6�t�&<�� �d�#�� =�� =r$���c������������������N�����t����������|t����������������������rdS�t����������d�������������)z:Copy format-specific state to message insofar as possible.Nz Cannot convert to specified type)r����r ���r����r*���s��� r"���rD��zMessage._explain_to���s)�������g�w�'�'�� @��F��>�?�?�?r$���r4���)r����r����r����r����r#���rA��rD��r����r$���r"���r ���r ������sU��������������:�:�H��H��H��H�&=��=��=�@��@��@��@��@r$���r ���c��������������������d�����e�Zd�ZdZg�d�Zdd�Zd��Zd��Zd��Zd��Z d ��Z d ��Zd��Zd��Z d ��Zd��Zd��ZdS�)r���z)Message with Maildir-specific properties.)�_subdir�_info�_dateNc�����������������������d|�_���������d|�_��������t����������j����������������������|�_��������t�������������������������������|�|�������������dS�)z%Initialize a MaildirMessage instance.r����r����N)rP��rQ��r8��rR��r ���r#���r*���s��� r"���r#���zMaildirMessage.__init__���s9����������� ��Y�[�[�� �����w�'�'�'�'�'r$���c�����������������������|�j���������S�)zReturn 'new' or 'cur'.)rP��rV���s��� r"���r����zMaildirMessage.get_subdir��s �������|�r$���c������������������P�����|dk����s|dk����r ||�_���������dS�t����������d|z���������������)zSet subdir to 'new' or 'cur'.r����r����z!subdir must be 'new' or 'cur': %sN)rP��r����)r���r����s��� r"���r����zMaildirMessage.set_subdir��s2�������U�?�?�f��o�o�!�D�L�L�L��@�6�I�J�J�Jr$���c������������������X�����|�j������������������������������d������������r|�j���������dd����������S�dS�)�*Return as a string the flags that are set.�2,rI��Nr����)rQ��r����rV���s��� r"���� get_flagszMaildirMessage.get_flags��s/�������:� � ��&�&�� ��:�a�b�b�>�!��2r$���c������������������Z�����dd����������������������t����������|������������������������z���|�_��������dS�)�)Set the given flags and unset all others.rX��r����N)r����rs��rQ��)r����flagss��� r"���� set_flagszMaildirMessage.set_flags��s$�������B�G�G�F�5�M�M�2�2�2�� � � r$���c�����������������������|�����������������������d���������������������t����������|������������������������������������������������t����������|������������z���������������������������dS��z.Set the given flag(s) without changing others.r����N�r]��r����r���rY���r����flags��� r"����add_flagzMaildirMessage.add_flag���C���������r�w�w�s�4�>�>�#3�#3�4�4�s�4�y�y�@�A�A�B�B�B�B�Br$���c������������������������|�������������������������������������rY|����������������������d���������������������t����������|�������������������������������������������������t����������|������������z ���������������������������dS�dS�)�7Unset the given string flag(s) without changing others.r����N)rY��r]��r����r���ra��s��� r"����remove_flagzMaildirMessage.remove_flag��sb�������>�>���� G��N�N�2�7�7�3�t�~�~�'7�'7�#8�#8�3�t�9�9�#D�E�E�F�F�F�F�F� G�� Gr$���c�����������������������|�j���������S�)z<Return delivery date of message, in seconds since the epoch.)rR��rV���s��� r"���r����zMaildirMessage.get_date"��� �������z�r$���c������������������r����� �t����������|������������|�_��������dS�#�t����������$�r�t����������d|z��������������d�w�xY�w)z9Set delivery date of message, in seconds since the epoch.zcan't convert to float: %sN)�floatrR��r����r����)r����dates��� r"���r����zMaildirMessage.set_date&��sN������ K��t���D�J�J�J���� K�� K�� K��8�4�?�@�@�d�J� K���s������6c�����������������������|�j���������S�)z%Get the message's "info" as a string.)rQ��rV���s��� r"���r����zMaildirMessage.get_info-��ri��r$���c������������������|�����t����������|t����������������������r ||�_��������dS�t����������dt ����������|������������z���������������)z Set the message's "info" string.zinfo must be a string: %sN)r����r����rQ��r����r����)r����infos��� r"���r����zMaildirMessage.set_info1��s:�������d�C� � �� F��D�J�J�J��7�$�t�*�*�D�E�E�Er$���c�����������������������t����������|t����������������������rw|���������������������|�������������������������������������������������|���������������������|�������������������������������������������������|���������������������|�������������������������������������������������dS�t����������|t����������������������r�t����������|������������������������������������������������}d|v�r|� ��������������������d�������������|������������������������������������dk����r|� ��������������������d�������������d|v�r|� ��������������������d�������������d|v�r|� ��������������������d�������������d|v�r|� ��������������������d�������������|���������������������d t����������j ��������|�������������������������������������������������������������dS�t����������|t����������������������rpt����������|������������������������������������������������}d|vr|���������������������d �������������d|v�r|���������������������d�������������d|v�r|���������������������d�������������dS�dS�t����������|t ����������������������r�t����������|������������������������������������������������}d|vr|���������������������d �������������d|v�r|���������������������d �������������d|v�r|���������������������d�������������d|v�r|���������������������d�������������dS�dS�t����������|t$����������������������rdS�t'����������dt)����������|������������z���������������)z;Copy Maildir-specific state to message insofar as possible.�S�Rr�����O�T�D�F�A� MAILER-DAEMONr ���replied�flaggedr��r��r=��r ���$Cannot convert to specified type: %sN)r����r���r]��rY��r����r����r����r����r���r���rc��r���r8��r���r ���r���r���� add_labelr ���r����r����)r���r+���r\��s��� r"���rD��zMaildirMessage._explain_to8��s�������g�~�.�.��' +����d�n�n�.�.�/�/�/����t���0�0�1�1�1����T�]�]�_�_�-�-�-�-�-� ��!1� 2� 2��# +�����(�(�)�)�E��e�|�|�� � ��%�%�%���� � �E�)�)�� � ��%�%�%��e�|�|�� � ��%�%�%��e�|�|�� � ��%�%�%��e�|�|�� � ��%�%�%����_�d�k�$�-�-�/�/�.J�.J�K�K�K�K�K� ��� +� +�� +�����(�(�)�)�E��%����$�$�X�.�.�.��e�|�|��$�$�Y�/�/�/��e�|�|��$�$�Y�/�/�/�/�/���|� ��� .� .�� +�����(�(�)�)�E��%����!�!�(�+�+�+��e�|�|��!�!�)�,�,�,��e�|�|��!�!�*�-�-�-��e�|�|��!�!�+�.�.�.�.�.���|� ��� )� )�� +��D��B� ��M�M�*��+��+�� +r$���r4���)r����r����r����r����rJ��r#���r����r����rY��r]��rc��rg��r����r����r����r����rD��r����r$���r"���r���r������s���������������3�3� =� =� =��(��(��(��(������K��K��K������3��3��3�C��C��C�G��G��G� �����K��K��K������F��F��F�)+��)+��)+��)+��)+r$���r���c��������������������L�����e�Zd�ZdZdgZdd�Zd��Zdd�Zd��Zd��Z d ��Z d ��Zd��ZdS�) r���z/Message with mbox- or MMDF-specific properties.�_fromNc������������������6����|�����������������������dd�������������t����������|t����������j��������j��������������������rH|�����������������������������������}|�2|���������������������d������������r|�����������������������|dd�����������������������t�������������������������������|�|�������������dS�)z'Initialize an mboxMMDFMessage instance.rx��TNzFrom r����)r���r����rL���r+���r ���r���r����r#���)r���r+���r���s��� r"���r#���z_mboxMMDFMessage.__init__i��s�������� � �o�t�,�,�,��g�u�}�4�5�5�� ,��+�+�-�-�H��#��(;�(;�G�(D�(D�#�� � �h�q�r�r�l�+�+�+�����w�'�'�'�'�'r$���c�����������������������|�j���������S�)z Return contents of "From " line.)r~��rV���s��� r"���r���z_mboxMMDFMessage.get_fromr��ri��r$���c������������������z�����|�1|du�rt����������j����������������������}|dt����������j��������|������������z���z ��}||�_��������dS�)z>Set "From " line, formatting and appending time_ if specified.NTr���)r8��r���r���r~��)r���r����time_s��� r"���r���z_mboxMMDFMessage.set_fromv��s@����������}�}��� � ���S�4�<��.�.�.�.�E��� � � r$���c������������������\�����|�����������������������dd������������|�����������������������dd������������z���S�)rW���Statusr�����X-Status)rA���rV���s��� r"���rY��z_mboxMMDFMessage.get_flags~��s)�������x�x��"�%�%�����R�(@�(@�@�@r$���c����������������������t����������|������������}d\��}}dD�] }||v�r||z ��}|���������������������|��������������!dD�] }||v�r||z ��}|���������������������|��������������!|d���������������������t����������|������������������������z ��} �|����������������������d|�������������n&#�t ����������$�r�|����������������������d|�������������Y�nw�xY�w �|����������������������d|�������������dS�#�t ����������$�r�|����������������������d|�������������Y�dS�w�xY�w)r[��)r����r����)rr��rs��)ru��rv��rw��r����r���r���N)r���r2���r����rs���replace_headerr8���� add_header)r���r\���status_flags� xstatus_flagsrb��s��� r"���r]��z_mboxMMDFMessage.set_flags���sI������E� � ��&,�#��m��� #�� #�D��u�}�}���$�����T�"�"�"��#�� #�� #�D��u�}�}���%� ����T�"�"�"����������/�/�/� � 4�����,�7�7�7�7���� 4�� 4�� 4��O�O�H�l�3�3�3�3�3� 4���� 7���� �M�:�:�:�:�:���� 7�� 7�� 7��O�O�J� �6�6�6�6�6�6� 7���s$����B�� B;�:B;�?C�� C;�:C;c�����������������������|�����������������������d���������������������t����������|������������������������������������������������t����������|������������z���������������������������dS�r_��r`��ra��s��� r"���rc��z_mboxMMDFMessage.add_flag���rd��r$���c������������������������d|�v�sd|�v�rY|�����������������������d���������������������t����������|������������������������������������������������t����������|������������z ���������������������������dS�dS�)rf��r���r���r����Nr`��ra��s��� r"���rg��z_mboxMMDFMessage.remove_flag���s`�������t���z�T�1�1��N�N�2�7�7�3�t�~�~�'7�'7�#8�#8�3�t�9�9�#D�E�E�F�F�F�F�F�� 2�1r$���c����������������������t����������|t�����������������������r:t����������|������������������������������������������������}d|v�r|���������������������d�������������d|v�r|���������������������d�������������d|v�r|���������������������d�������������d|v�r|���������������������d�������������d|v�r|���������������������d�������������|d =�|d =�d���������������������|�����������������������������������������������������������������������dd ����������������������} �|� ��������������������t����������j��������t����������j ��������|d�������������������������������������d S�#�t����������t����������f$�r�Y�d S�w�xY�wt����������|t ����������������������rP|���������������������|�������������������������������������������������|���������������������|�������������������������������������������������d S�t����������|t&����������������������rtt����������|������������������������������������������������}d|vr|���������������������d�������������d|v�r|���������������������d�������������d|v�r|���������������������d�������������|d =�|d =�d S�t����������|t*����������������������rtt����������|������������������������������������������������}d|vr|���������������������d�������������d|v�r|���������������������d�������������d|v�r|���������������������d�������������|d =�|d =�d S�t����������|t.����������������������rd S�t1����������dt3����������|������������z���������������)zACopy mbox- or MMDF-specific state to message insofar as possible.rs��r����rv��rw��rr��rq��ru��rt���statuszx-statusr������Nz%a %b %d %H:%M:%S %Yr ��ry��rz��r��r��r{��)r����r���r���rY��r����rc��r����r���r����r�����calendar�timegmr8���strptimer����� OverflowErrorr���r]��r���r ���r���r���r|��r ���r����r����)r���r+���r\��� maybe_dates��� r"���rD��z_mboxMMDFMessage._explain_to���s/������g�~�.�.��/ +�����(�(�)�)�E��e�|�|��"�"�5�)�)�)��e�|�|�� � ��%�%�%��e�|�|�� � ��%�%�%��e�|�|�� � ��%�%�%��e�|�|�� � ��%�%�%���!�� �#����$�-�-�/�/�"7�"7�"9�"9�"�#�#�">�?�?�J� �� � �����z�6L�2N��2N��"O��"O��P��P��P��P��P��� �.�� �� �� ���� ���� ��!1� 2� 2�� +����d�n�n�.�.�/�/�/����T�]�]�_�_�-�-�-�-�-� ��� +� +�� +�����(�(�)�)�E��%����$�$�X�.�.�.��e�|�|��$�$�Y�/�/�/��e�|�|��$�$�Y�/�/�/���!�� �#�#�#� ��� .� .�� +�����(�(�)�)�E��%����!�!�(�+�+�+��e�|�|��!�!�)�,�,�,��e�|�|��!�!�*�-�-�-���!�� �#�#�#� ��� )� )�� +��D��B� ��M�M�*��+��+�� +s����=:D9��9E� Er4���) r����r����r����r����rJ��r#���r���r���rY��r]��rc��rg��rD��r����r$���r"���r���r���d��s���������������9�9�!(� ��(��(��(��(�������������A��A��A�7��7��7�,C��C��C�G��G��G� 1+��1+��1+��1+��1+r$���r���c�������������������������e�Zd�ZdZdS�)r���z&Message with mbox-specific properties.N�r����r����r����r����r����r$���r"���r���r���������������������0�0�0�0r$���r���c��������������������>�����e�Zd�ZdZdgZd d�Zd��Zd��Zd��Zd��Z d ��Z dS�)r ���z$Message with MH-specific properties.� _sequencesNc������������������J�����g�|�_���������t�������������������������������|�|�������������dS�)z!Initialize an MHMessage instance.N)r���r ���r#���r*���s��� r"���r#���zMHMessage.__init__���s%�������������w�'�'�'�'�'r$���c������������������ �����|�j���������dd����������S�)z4Return a list of sequences that include the message.N)r���rV���s��� r"���r���zMHMessage.get_sequences���s��������q�q�q�!�!r$���c������������������.�����t����������|������������|�_��������dS�)z3Set the list of sequences that include the message.N)rY���r���)r���r���s��� r"���r���zMHMessage.set_sequences���s�������y�/�/����r$���c�����������������������t����������|t����������������������r'||�j��������vr|�j�����������������������������|�������������dS�dS�t ����������dt����������|������������z���������������)z8Add sequence to list of sequences including the message.zsequence type must be str: %sN)r����r����r���r��r����r�����r���r��s��� r"���r���zMHMessage.add_sequence���sb�������h��$�$�� N��t��.�.���&�&�x�0�0�0�0�0��/�.���;�d�8�n�n�L�M�M�Mr$���c������������������^����� �|�j������������������������������|�������������dS�#�t����������$�r�Y�dS�w�xY�w)zARemove sequence from the list of sequences including the message.N)r���r2���r����r���s��� r"����remove_sequencezMHMessage.remove_sequence���sE������ ��O�"�"�8�,�,�,�,�,���� �� �� ��D�D� ���������� ,�,c������������������b����t����������|t����������������������r�t����������|������������������������������������������������}d|v�r|���������������������d�������������n*|���������������������d�������������|���������������������d�������������d|v�r|���������������������d�������������d|v�r|���������������������d�������������d S�d S�t����������|t����������������������r�t����������|������������������������������������������������}d|vr|���������������������d�������������n|���������������������d �������������d|v�r|���������������������d�������������d|v�r|���������������������d �������������d S�d S�t����������|t����������������������r.|������������������������������������D�]}|���������������������|��������������d S�t����������|t����������������������rWt����������|������������������������������������������������}d|v�r|� ��������������������d�������������d|v�r|� ��������������������d�������������d S�d S�t����������|t����������������������rd S�t����������dt����������|������������z���������������)z6Copy MH-specific state to message insofar as possible.r ��r����rq��rz��rv��ry��rr���ROrs��rw��r��r{��N)r����r���r���r���r����rc��r���r ���r���r���r|��r ���r����r����)r���r+���r���r��s��� r"���rD��zMHMessage._explain_to���sp������g�~�.�.��" +��D�.�.�0�0�1�1�I��9�$�$��"�"�5�)�)�)�)��"�"�5�)�)�)�� � ��%�%�%��I�%�%�� � ��%�%�%��I�%�%�� � ��%�%�%�%�%��&�%� ��!1� 2� 2�� +��D�.�.�0�0�1�1�I��y�(�(�� � ��&�&�&�&�� � ��%�%�%��I�%�%�� � ��%�%�%��I�%�%�� � ��%�%�%�%�%��&�%� ��� +� +�� +� �.�.�0�0�� /�� /���$�$�X�.�.�.�.� /�� /� ��� .� .�� +��D�.�.�0�0�1�1�I��9�$�$��!�!�(�+�+�+��I�%�%��!�!�*�-�-�-�-�-��&�%� ��� )� )�� +��D��B� ��M�M�*��+��+�� +r$���r4���)r����r����r����r����rJ��r#���r���r���r���r���rD��r����r$���r"���r ���r ������s���������������.�.�!-���(��(��(��(� "��"��"�*��*��*�N��N��N������$+��$+��$+��$+��$+r$���r ���c��������������������R�����e�Zd�ZdZddgZdd�Zd��Zd��Zd��Zd ��Z d ��Z d��Zd��Zd ��Z dS�)r���z'Message with Babyl-specific properties.r���_visibleNc������������������p�����g�|�_���������t������������������������|�_��������t�������������������������������|�|�������������dS�)z#Initialize a BabylMessage instance.N)r��r ���r���r#���r*���s��� r"���r#���zBabylMessage.__init__&��s0���������� � �� �����w�'�'�'�'�'r$���c������������������ �����|�j���������dd����������S�)z'Return a list of labels on the message.N)r��rV���s��� r"���r��zBabylMessage.get_labels,��s�������|�A�A�A��r$���c������������������.�����t����������|������������|�_��������dS�)z&Set the list of labels on the message.N)rY���r��)r���r"��s��� r"���r��zBabylMessage.set_labels0��s�������F�|�|����r$���c�����������������������t����������|t����������������������r'||�j��������vr|�j�����������������������������|�������������dS�dS�t ����������dt����������|������������z���������������)z+Add label to list of labels on the message.zlabel must be a string: %sN)r����r����r��r��r����r�����r���r(��s��� r"���r|��zBabylMessage.add_label4��sb�������e�S�!�!�� H��D�L�(�(���#�#�E�*�*�*�*�*��)�(���8�4��;�;�F�G�G�Gr$���c������������������^����� �|�j������������������������������|�������������dS�#�t����������$�r�Y�dS�w�xY�w)z4Remove label from the list of labels on the message.N)r��r2���r����r���s��� r"����remove_labelzBabylMessage.remove_label<��sE������ ��L����&�&�&�&�&���� �� �� ��D�D� ���r���c������������������*�����t����������|�j��������������������S�)z3Return a Message representation of visible headers.�r ���r���rV���s��� r"���r5��zBabylMessage.get_visibleC��s�������t�}�%�%�%r$���c������������������.�����t����������|������������|�_��������dS�)z2Set the Message representation of visible headers.Nr���)r����visibles��� r"���r��zBabylMessage.set_visibleG��s��������(�(�� � � r$���c������������������������|�j��������������������������������������������D�]0}||�v�r"|�j������������������������������||�|�����������������������(|�j���������|=��1dD�]}||�v�r||�j���������vr|�|���������|�j���������|<���� dS�)z9Update and/or sensibly generate a set of visible headers.)�Date�FromzReply-To�To�CC�SubjectN)r���rZ���r���)r����headers��� r"����update_visiblezBabylMessage.update_visibleK��s��������m�(�(�*�*�� *�� *�F���~�~�� �,�,�V�T�&�\�B�B�B�B��M�&�)�)�I�� 5�� 5�F���~�~�&�� �"=�"=�(,�V��� �f�%�� 5�� 5r$���c�����������������������t����������|t����������������������r�t����������|������������������������������������������������}d|v�r|���������������������d�������������n*|���������������������d�������������|���������������������d�������������d|v�sd|v�r|���������������������d�������������d|v�r|���������������������d�������������d |v�r|���������������������d �������������dS�dS�t����������|t����������������������r�t����������|������������������������������������������������}d|vr|���������������������d�������������n|���������������������d�������������d |v�r|���������������������d �������������d|v�r|���������������������d�������������dS�dS�t����������|t����������������������rWt����������|������������������������������������������������}d|v�r|���������������������d�������������d|v�r|���������������������d�������������dS�dS�t����������|t����������������������rU|� ��������������������|�������������������������������������������������|������������������������������������D�]}|���������������������|��������������dS�t����������|t����������������������rdS�t����������dt����������|������������z���������������)z9Copy Babyl-specific state to message insofar as possible.r ��r����rq��r ��r ��r=��r��rr��r��rt��r���rs��ru��rw��ry��r{��N)r����r���r���r��r����rc��r���r ���r���r���r��r5��r|��r ���r����r����)r���r+���r"��r(��s��� r"���rD��zBabylMessage._explain_toV��s�������g�~�.�.��% +�����*�*�+�+�F��6�!�!��"�"�5�)�)�)�)��"�"�5�)�)�)�� � ��%�%�%��f�$�$��F�(:�(:�� � ��%�%�%��V�#�#�� � ��%�%�%��F�"�"�� � ��%�%�%�%�%��#�"� ��!1� 2� 2�� +�����*�*�+�+�F��v�%�%�� � ��&�&�&�&�� � ��%�%�%��F�"�"�� � ��%�%�%��V�#�#�� � ��%�%�%�%�%��$�#� ��� +� +�� +�����*�*�+�+�F��6�!�!��$�$�X�.�.�.��V�#�#��$�$�Y�/�/�/�/�/��$�#� ��� .� .�� +����� 0� 0� 2� 2�3�3�3����*�*�� )�� )���!�!�%�(�(�(�(� )�� )� ��� )� )�� +��D��B� ��M�M�*��+��+�� +r$���r4���)r����r����r����r����rJ��r#���r��r��r|��r���r5��r��r���rD��r����r$���r"���r���r���!��s���������������1�1�!*�J� 7��(��(��(��(������$��$��$�H��H��H������&��&��&�)��)��)� 5�� 5�� 5�'+��'+��'+��'+��'+r$���r���c�������������������������e�Zd�ZdZdS�)r���z&Message with MMDF-specific properties.Nr���r����r$���r"���r���r������r���r$���r���c�������������������������e�Zd�ZdZdd�Zdd�Zdd�Zdd�Zdd�Zd��Z d ��Z dd�Zd��Zd ��Z d��Zd��Zd��Zd��Zd��Zd��Zed����������������Z�ee������������ZdS�)r��zA read-only wrapper of a file.Nc������������������\�����||�_���������|�|�����������������������������������|�_��������dS�||�_��������dS�)zInitialize a _ProxyFile.N)rZ��rp���_pos)r���r���poss��� r"���r#���z_ProxyFile.__init__���s,�������� ��;������D�I�I�I��D�I�I�Ir$���c������������������B�����|�����������������������||�j��������j��������������������S��zRead bytes.)�_readrZ��r�����r����sizes��� r"���r����z_ProxyFile.read���s�������z�z�$�� ��0�0�0r$���c������������������B�����|�����������������������||�j��������j��������������������S�r���)r���rZ���read1r���s��� r"���r���z_ProxyFile.read1���s�������z�z�$�� � 0�1�1�1r$���c������������������B�����|�����������������������||�j��������j��������������������S�)zRead a line.)r���rZ��r����r���s��� r"���r����z_ProxyFile.readline���s�������z�z�$�� � 3�4�4�4r$���c������������������v�����g�}|�D�]3}|����������������������|�������������|�|t����������|������������z��}|dk����r�n�4|S�)zRead multiple lines.Nr���)r��r��)r����sizehintrr���r����s��� r"���� readlinesz_ProxyFile.readlines���sR���������� �� �D��M�M�$�����#��C��I�I�%���q�=�=��E��� r$���c��������������#����B���K���� �|�������������������������������������}|sdS�|V����)zIterate over lines.TN)r����)r���r����s��� r"���rb���z_ProxyFile.__iter__���s3���������� ��=�=�?�?�D��� ����J�J�J� r$���c�����������������������|�j���������S�)zReturn the position.)r���rV���s��� r"���rp��z_ProxyFile.tell���s �������y�r$���r���c������������������������|dk����r|�j������������������������������|�j���������������������|�j������������������������������||�������������|�j��������������������������������������������|�_��������dS�)zChange position.r��N�rZ��r����r���rp���r����offset�whences��� r"���r����z_ProxyFile.seek���sN�������Q�;�;��J�O�O�D�I�&�&�&�� �����'�'�'��J�O�O�%�%�� � � r$���c�����������������������t����������|�d������������r: �t����������|�j��������d������������r|�j��������������������������������������������|�`dS�#�|�`w�xY�wdS�)zClose the file.rZ��r����N)rw���rZ��r����rV���s��� r"���r����z_ProxyFile.close���sa�������4��!�!�� � ��4�:�w�/�/��'��J�$�$�&�&�&��J�J�J��D�J����� �� s����.A��Ac�����������������������|�d}|�j������������������������������|�j����������������������||������������}|�j��������������������������������������������|�_��������|S�)z"Read size bytes using read_method.Nr����r���)r���r����read_methodrr���s��� r"���r���z_ProxyFile._read���sI�������<��D�� ���� �"�"�"���T�"�"���J�O�O�%�%�� �� r$���c�����������������������|�S�)z$Context management protocol support.r����rV���s��� r"���� __enter__z_ProxyFile.__enter__���s�������r$���c������������������.�����|��������������������������������������d�S�r4���)r����)r����excs��� r"����__exit__z_ProxyFile.__exit__���s������� � �����r$���c������������������4�����|�j��������������������������������������������S�r4���)rZ���readablerV���s��� r"���r���z_ProxyFile.readable�����������z�"�"�$�$�$r$���c������������������4�����|�j��������������������������������������������S�r4���)rZ���writablerV���s��� r"���r���z_ProxyFile.writable���r���r$���c������������������4�����|�j��������������������������������������������S�r4���)rZ���seekablerV���s��� r"���r���z_ProxyFile.seekable���r���r$���c������������������4�����|�j��������������������������������������������S�r4���)rZ��r~���rV���s��� r"���r~���z_ProxyFile.flush���s�������z���!�!�!r$���c������������������l�����t����������|�d������������sdS�t����������|�j��������d������������sdS�|�j��������j��������S�)NrZ��Tr���F)rw���rZ��r���rV���s��� r"���r���z_ProxyFile.closed���s=�������t�W�%�%�� ��4��t�z�8�,�,�� ��5��z� � r$���r4����r���)r����r����r����r����r#���r����r���r����r���rb���rp��r����r����r���r���r���r���r���r���r~����propertyr���r����r���r����r����r$���r"���r��r�����sQ�������������(�(��������1��1��1��1�2��2��2��2�5��5��5��5� �� �� �� �����������&��&��&��&���������������������%��%��%�%��%��%�%��%��%�"��"��"���!��!���X�!��$��L�1�1���r$���r��c��������������������4�����e�Zd�ZdZd d�Zd��Zd d�Zd��Zd��ZdS�)r���z&A read-only wrapper of part of a file.Nc������������������Z�����t��������������������������������|�||�������������||�_��������||�_��������dS�)zInitialize a _PartialFile.N)r��r#����_start�_stop)r���r��r|��r}��s��� r"���r#���z_PartialFile.__init__���s,���������D�!�U�+�+�+������ � � r$���c������������������F�����t��������������������������������|�������������|�j��������z ��S�)z*Return the position with respect to start.)r��rp��r���rV���s��� r"���rp��z_PartialFile.tell���s���������t�$�$�t�{�2�2r$���r���c�����������������������|dk����r|�j���������|�_��������d}n|dk����r|�j��������|�_��������d}t�������������������������������|�||�������������dS�)z8Change position, possibly with respect to start or stop.r���r��rI��N)r���r���r���r��r����r���s��� r"���r����z_PartialFile.seek���sN�������Q�;�;���D�I��F�F� �q�[�[�� �D�I��F�����f�f�-�-�-�-�-r$���c�����������������������|�j���������|�j��������z ��}|dk����rdS�|�|dk�����s||k����r|}t�������������������������������|�||������������S�)z;Read size bytes using read_method, honoring start and stop.r���r$���)r���r���r��r���)r���r���r���� remainings��� r"���r���z_PartialFile._read���sR�������J���*� ���>�>��3��<�4�!�8�8�t�i�'7�'7��D�����d�K�8�8�8r$���c������������������.�����t����������|�d������������r|�`d�S�d�S�)NrZ��)rw���rZ��rV���s��� r"���r����z_PartialFile.close ��s)��������4��!�!�� �� � � � �� r$���)NNr���) r����r����r����r����r#���rp��r����r���r����r����r$���r"���r���r������so��������������0�0��������3��3��3�.��.��.��.�9��9��9���������r$���r���Tc����������������������d} �t�����������r� �t����������j��������|�t�����������j��������t�����������j��������z���������������nT#�t����������$�rG}|j��������t ����������j��������t ����������j��������t ����������j��������fv�rt����������d|�j ��������z�����������������d}~ww�xY�w|�r" �t����������|�j ��������dz���������������}|������������������������������������n8#�t����������$�r+}|j��������t ����������j��������t ����������j��������fv�rY�d}~dS���d}~ww�xY�w � �t����������j��������|j ��������|�j ��������dz����������������d}t����������j��������|j ���������������������n;#�t ����������t"����������f$�r'�t����������j��������|j ��������|�j ��������dz����������������d}Y�nw�xY�wdS�dS�#�t&����������$�r1�t����������j��������|j ���������������������t����������d|�j ��������z���������������w�xY�wdS�#��t�����������rt����������j��������|�t�����������j���������������������|rt����������j��������|�j ��������dz������������������xY�w)z(Lock file f using lockf and dot locking.Fzlockf: lock unavailable: %sN�.lockTzdot lock unavailable: %s)�fcntl�lockf�LOCK_EX�LOCK_NBr����r�����EAGAINrX��rY��r���r����rq��r����r���r����r���r����r����r����rF��r2����LOCK_UN)r��rn���dotlock_doner�����pre_locks��� r"���rh��rh����sD������L�%��� � ���A�u�}�u�}�<�=�=�=�=���� �� �� ��7�u�|�U�\�5�;�G�G�G�,�-J�-.�V�.4��5��5��5������� ������� 1� �,�Q�V�g�-=�>�>����� � � � ���� �� �� ��7�u�|�U�[�9�9�9��F�F�F�F�F������ ���� 1�-��G�H�M�1�6�G�+;�<�<�<�#'�L� ��I�h�m�,�,�,�,�� �'��8��(��(��(��I�h�m�Q�V�g�-=�>�>�>�#'�L�L�L�(�����-�,��!�L���#�� 1�� 1�� 1�� �(�-�(�(�(�(�)C�)*��*0��1��1��1� 1����% 1�� 1��,��� *��K��5�=�)�)�)��� (��I�a�f�w�&�'�'�'� ���s�����F4��,9��F4�� B �AB�B � F4��+B=��<F4��= C2�C-�&F4��,C-�-C2�2F4��7$D5��E4��55E-�*E4��,E-�-E4��4;F/�/F4��4AG;c������������������������t�����������rt����������j��������|�t�����������j���������������������t����������j�����������������������������|�j��������dz���������������rt����������j��������|�j��������dz����������������dS�dS�)z*Unlock file f using lockf and dot locking.r���N)r���r���r���r���r���r����r����r2����r��s��� r"���rk��rk��:��sb��������&� ��A�u�}�%�%�%� �w�~�~�a�f�w�&�'�'��$� � �!�&�7�"�#�#�#�#�#�$��$r$���c������������������������t����������j��������|�t�����������j��������t�����������j��������z��t�����������j��������z��d������������} �t����������|�d������������t����������j��������|�������������S�#�t����������j��������|�������������w�xY�w)zCCreate a file if it doesn't exist and open for reading and writing.r)��rV��)r���r����r*��r����O_RDWRr����)r����fds��� r"���rE��rE��A��sX������ ���r�z�B�I�-�� �9�5� A� A�B���D�%� � � �����������������s����A �� A6c����������� ������������t����������|��dt����������t����������j�����������������������������������dt����������j�����������������������dt����������j������������������������������������S�)zBCreate a temp file based on path and open for reading and writing.r��)rE��rA��r8��r?��r@��r���rB��)r���s��� r"���rq��rq��I��sR�������d�d�d�C�� ���4D�4D�4D�4D�.4�.@�.B�.B�.B�.B�.0�i�k�k�k�;��<��<��<r$���c�����������������������|��������������������������������������t����������t����������d������������r(t����������j��������|�������������������������������������������������dS�dS�)z0Ensure changes to file f are physically on disk.�fsyncN)r~���rw���r���r����filenor���s��� r"���ro��ro��O��sI�������G�G�I�I�I��r�7����� ��������������r$���c������������������L�����t����������|��������������|�������������������������������������dS�)z:Close file f, ensuring all changes are physically on disk.N)ro��r����r���s��� r"���r����r����U��s��������N�N�N��G�G�I�I�I�I�Ir$���c�������������������������e�Zd�ZdZdS�)r���z"Raised for module-specific errors.Nr���r����r$���r"���r���r���[��s��������������,�,�,�,r$���r���c�������������������������e�Zd�ZdZdS�)r���z:The specified mailbox does not exist and won't be created.Nr���r����r$���r"���r���r���^��s��������������D�D�D�Dr$���r���c�������������������������e�Zd�ZdZdS�)r���z>The specified mailbox is not empty and deletion was requested.Nr���r����r$���r"���r���r���a��s��������������H�H�H�Hr$���r���c�������������������������e�Zd�ZdZdS�)r���z)Another process caused an action to fail.Nr���r����r$���r"���r���r���d�����������������3�3�3�3r$���r���c�������������������������e�Zd�ZdZdS�)r���z)A file appears to have an invalid format.Nr���r����r$���r"���r���r���g��r��r$���r���)T)2r����r���r8��r���r?��r����rB��r����rL���� email.message�email.generatorr����rD����typesr���r����ImportError�__all__r����r����r���r���rT��r���r���r ���r���r���r+���r ���r���r���r���r ���r���r���r��r���rh��rk��rE��rq��ro��r����� Exceptionr���r���r���r���r���r����r$���r"����<module>r �����s}�����J��J�� � � � ������������ � � � �������������������������������������� � � � �����������������������L�L�L�L����������E�E�E�����A��A��A�� � �*� � �G� $� $��f2��f2��f2��f2��f2��f2��f2��f2�Rs��s��s��s��s�g��s��s��s�l ����������������F@��@��@��@��@�"��@��@��@�F1.��1.��1.��1.��1.�9��1.��1.��1.�h*.��*.��*.��*.��*.�9��*.��*.��*.�Zn*��n*��n*��n*��n*���n*��n*��n*�b v��v��v��v��v���v��v��v�r"@��"@��"@��"@��"@�e�m�#��"@��"@��"@�Jj+��j+��j+��j+��j+�W��j+��j+��j+�Zn+��n+��n+��n+��n+�w��n+��n+��n+�b1��1��1��1��1�"��1��1��1�E+��E+��E+��E+��E+���E+��E+��E+�P\+��\+��\+��\+��\+�7��\+��\+��\+�~1��1��1��1��1�"��1��1��1�b2��b2��b2��b2��b2��b2��b2��b2�J$��$��$��$��$�:��$��$��$�N(��(��(��(�T$��$��$������<��<��<�����������-��-��-��-��-�I��-��-��-�E��E��E��E��E���E��E��E�I��I��I��I��I�E��I��I��I�4��4��4��4��4���4��4��4�4��4��4��4��4�%��4��4��4��4��4s����?��A �A