403Webshell
Server IP : 88.99.149.37  /  Your IP : 216.73.216.141
Web Server : nginx/1.31.2
System : Linux server-88-99-149-37 6.12.0-124.56.5.el10_1.x86_64 #1 SMP PREEMPT_DYNAMIC Fri May 15 06:12:08 EDT 2026 x86_64
User : muralimurth ( 1015)
PHP Version : 8.4.23
Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /proc/self/root/usr/share/gcc-14/python/libstdcxx/v6/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /proc/self/root/usr/share/gcc-14/python/libstdcxx/v6/__pycache__/printers.cpython-312.pyc
�

��i�����ddlZddlZddlZddlZddlZddlZejddkDreZe	Z
eZe
Zejj Zn.Gd�d�Zddlm
Z
mZGd�dej$�Ze�Zda	ddlZd	a	ddlZeej4d
�rdaeed�r
ej6ZneZd�Zd
ad�Zd�Z d�Z!d�Z"d�Z#d�Z$d�Z%d�Z&Gd�de�Z'Gd�de�Z(d�Z)d�Z*d�Z+Gd�de�Z,d�Z-d �Z.Gd!�d"e�Z/Gd#�d$e�Z0Gd%�d&e0�Z1Gd'�d(e0�Z2Gd)�d*e�Z3Gd+�d,e�Z4Gd-�d.e�Z5Gd/�d0e�Z6Gd1�d2e�Z7Gd3�d4e�Z8Gd5�d6e�Z9Gd7�d8e�Z:Gd9�d:e�Z;d;�Z<Gd<�d=e�Z=Gd>�d?e�Z>d@�Z?GdA�dBe�Z@GdC�dDe�ZAGdE�dFe�ZBGdG�dHe�ZCGdI�dJe�ZDGdK�dLe�ZEdM�ZFGdN�dOe�ZGGdP�dQe�ZHGdR�dSe�ZIGdT�dUe�ZJGdV�dWe�ZKGdX�dYe�ZLGdZ�d[e�ZMGd\�d]e�ZNd^�ZOGd_�d`eN�ZPGda�dbeN�ZQGdc�ddeN�ZRGde�dfeN�ZSGdg�dhe�ZTGdi�dje�ZUGdk�dle�ZVGdm�dne�ZWGdo�dpe�ZXGdq�dre�ZYGds�dte�ZZGdu�dve�Z[Gdw�dxe�Z\Gdy�dze�Z]Gd{�d|e�Z^Gd}�d~e�Z_Gd�d�e�Z`Gd��d�e�Zagd��Zbgd��ZcGd��d�e�ZdGd��d�e�ZeGd��d�e�ZfGd��d�e�ZgGd��d�e�ZhGd��d�e�ZiGd��d�e�ZjGd��d�e�ZkGd��d�e�ZlGd��d�e�ZmdanGd��d�e�Zod��ZpGd��d�e�Zqd�d��Zrd��Zsd��Ztd��Zueu�y#e$rd	aY��BwxYw#e$rY��2wxYw)��N�c��eZdZdZd�Zy)�Iteratora:Compatibility mixin for iterators

        Instead of writing next() methods for iterators, write
        __next__() methods and use this mixin to make them work in
        Python 2 as well as Python 3.

        Idea stolen from the "six" documentation:
        <http://pythonhosted.org/six/#six.Iterator>
        c�"�|j�S�N)�__next__��selfs �1/usr/share/gcc-14/python/libstdcxx/v6/printers.py�nextz
Iterator.next?s���=�=�?�"�N)�__name__�
__module__�__qualname__�__doc__r�r
rrr4s��	�	#r
r)�imap�izipc�"�eZdZdZd�Zd�Zd�Zy)�UTCz5Concrete tzinfo class representing the UTC time zone.c�,�tjd�S�Nr��datetime�	timedelta�r
�dts  r�	utcoffsetz
UTC.utcoffsetI����%�%�a�(�(r
c��y)Nrrrs  r�tznamez
UTC.tznameLs��r
c�,�tjd�Srrrs  r�dstzUTC.dstOrr
N)rrrrrr!r#rr
rrrFs��C�	)�	�	)r
rTF�TypePrinter�ValuePrinterc�:�|j�}	|j�d|��}	tj|�S#t$rYnwxYw|j�}t
|�r|djr|dj}ntdt|��d|������)N�::rzCannot find type )�strip_typedefs�tag�gdb�lookup_type�RuntimeError�fields�len�
is_base_class�type�
ValueError�str)�orig�name�typ�searchr-s     r�	find_typer7ns���
�
�
�
�C�
� �W�W�d�+��	��?�?�6�*�*���	��	��
������v�;�6�!�9�2�2���)�.�.�C��#�d�)�T�J�K�K�s�9�	A�Az__8::c��dj|dj|D�cgc]
}t|���c}��}	tj|�Scc}w#tj
$r^}t|vrO|jddtzd�}	tj|�cYd}~S#tj
$rY|�wxYw|�d}~wwxYw)z8
    Lookup template specialization templ<args...>.
    z{}<{}>�, r'�N)�format�joinr2r*r+�error�_versioned_namespace�replace)�templ�args�a�t�es     r�lookup_templ_specrE�s���	����t�y�y�$�)?�$�Q�#�a�&�$�)?�@�A�A�����q�!�!��*@���9�9�
� �u�,��	�	�$��';� ;�Q�?�A�
����q�)�)���9�9�
����
�����
�s@�A�A�C�'"C�
B$�C�$B;�7C�:B;�;C�Cc�v�d|vrd|z}	t|d�}|j�}	t||�S#|jd�}Y�2xYw#tj
$rYt
|d�rJt
|ddd�r<|jdd	d
�}	t||�cYS#tj
$rYYywxYwYywxYw)a�
    Lookup specialization of template nodename corresponding to containertype.

    nodename - The name of a class template, as a String
    containertype - The container, as a gdb.Type

    Return a gdb.Type for the corresponding specialization of nodename,
    or None if the type cannot be found.

    e.g. lookup_node_type('_List_node', gdb.lookup_type('std::list<int>'))
    will return a gdb.Type for the type std::_List_node<int>.
    r'�std::�
value_typer�stdzstd::__cxx1998zstd::__debug�__gnu_debugz
::__cxx1998::r:N)r7�template_argumentr(rEr*r=�is_member_of_namespacer?)�nodename�
containertype�valtypes   r�lookup_node_typerP�s����8���X�%��5��M�<�8���$�$�&�G�� ��7�3�3��	5��1�1�!�4����9�9�
�!�(�E�2�%�m�5E�&4�m�E�#�+�+�D�/�1�E���,�X�w�?�?���y�y�������
�s?�4�A�A	�AB8�
B�B8�B2�.B8�1B2�2B8�7B8c��t|tj�rt|�}t	|�}|D]}|j|dz�s�yy)z�
    Test whether a type is a member of one of the specified namespaces.
    The type can be specified as a string or a gdb.Type object.
    r'TF)�
isinstancer*�Typer2�strip_versioned_namespace�
startswith)r5�
namespaces�	namespaces   rrLrL�sH��
�#�s�x�x� ��#�h��
#�C�
(�C��	��>�>�)�d�*�+�� �r
c��t|tj�r|j}dt�d|��}tjd|z|�duS)z�
    Test whether a type is a specialization of the named class template.
    The type can be specified as a string or a gdb.Type object.
    The template should be the name of a class template as a string,
    without any 'std' qualification.
    �(z)?z
^std::%s<.*>$N)rRr*rSr)r>�re�match)�x�
template_names  r�is_specialization_ofr^�sA���!�S�X�X��
�E�E���!5�}�E�M�
�8�8�O�m�3�Q�7�t�C�Cr
c�.�|jtd�S)N�)r?r>)�typenames rrTrT�s�����0�"�5�5r
c��d}d}tjddk(rtj|||d�Stj|||d��S)zCRemove "fundamentals_vN" inline namespace from qualified type name.z&^std::experimental::fundamentals_v\d::�std::experimental::rrr:)�count)�sys�version_inforZ�sub)r5�pattern�repls   r�strip_fundts_namespacerj�sI��7�G� �D�
�����a���v�v�g�t�S�!�,�,��v�v�g�t�S��2�2r
c��t|�}|jdd�}d}dD]}|j||zdz|�}�|dz}|j|dz|�}|S)zARemove known inline namespaces from the canonical name of a type.�std::__cxx11::rGrc)�fundamentals_v1�fundamentals_v2r'zfilesystem::zv1::)rTr?)�type_str�expt_ns�lfts_ns�fs_nss    r�strip_inline_namespacesrs�so��(��2�H���� 0�'�:�H�#�G�9���#�#�G�g�$5��$<�g�F��:��n�$�E��������6�H��Or
c�l�d}g}		|j|j|��|dz
}�'#|cYSxYw)z-Return a type's template arguments as a list.rr:)�appendrK)�type_obj�n�
template_argss   r�get_template_arg_listry�sJ��	�A��M�
�	!�� � ��!;�!;�A�!>�?�	
�Q�����	!� � �s� -�3c�"�eZdZdZd�Zd�Zd�Zy)�SmartPtrIteratorz@An iterator for smart pointer types with a single 'child' value.c��||_yr��_val�r
�vals  r�__init__zSmartPtrIterator.__init__�	����	r
c��|Srrr	s r�__iter__zSmartPtrIterator.__iter__����r
c�V�|j�t�d|jc|_}d|fS)Nzget()�r~�
StopIterationrs  rrzSmartPtrIterator.__next__
s-���9�9�����t�y�y���	�3���~�r
N�rrrrr�r�rrr
rr{r{s��J���r
r{c�(�eZdZdZd�Zd�Zd�Zd�Zy)�SharedPointerPrinterzP
    Print a shared_ptr, weak_ptr, atomic<shared_ptr>, or atomic<weak_ptr>.
    c�F�t|�|_||_|d|_y�N�_M_ptr)rT�	_typenamer~�_pointer�r
rar�s   rr�zSharedPointerPrinter.__init__s ��2�8�<�����	��H�
��
r
c�,�t|j�Sr)r{r�r	s r�childrenzSharedPointerPrinter.childrens����
�
�.�.r
c���|jdk(rQ|jddd}||dzz
}t|jdjd�}|j	|�S|jddS)Nzstd::atomic�_M_refcount�_M_val�_M_ir�pointer�_M_pi)r�r~r7r0�cast)r
�ptr_val�ptr_types   r�_get_refcountsz#SharedPointerPrinter._get_refcountssr���>�>�]�*��i�i�
�.�x�8��@�G���1��-�G� ����=�!9�!>�!>�	�J�H��<�<��)�)��y�y��'��0�0r
c�
�d}|j�}|jjjd�}t	t|��}|dk7r|d}|d}|dk(rd|z}n
d||dz
fz}|j�d|�d	|�d
�S)N�emptyr�_M_use_count�
_M_weak_countzexpired, weak count %dzuse count %d, weak count %dr:�<z> (�))r�r~r0rKrTr2r�)r
�state�	refcounts�targ�usecount�	weakcounts      r�	to_stringzSharedPointerPrinter.to_string(s������'�'�)�	��y�y�~�~�/�/��2��(��T��3����>� ��0�H�!�/�2�I��1�}�0�9�<��5��i�!�m�9-�-�� $����e�<�<r
N)rrrrr�r�r�r�rr
rr�r�s���&�
/�1�=r
r�c�.�|jj�}|djs!tdt	|j�z��|j|dj�}|jj�}t
|�dk(r!tdt	|j�z��|djdk(r|dS|djr|j|dj�Stdt	|j�z��)zBReturn the tuple element stored in a _Tuple_impl<N, T> base class.���z-Unsupported implementation for std::tuple: %sr�_M_head_impl)r0r-r/r1r2r�r.r4)r��bases�	head_baser-s    r�_tuple_impl_getr�9s����H�H�O�O��E���9�"�"��;�c�#�(�(�m�K�M�	M�����r����(�I�
�^�^�
"�
"�
$�F�
�6�{�a���;�c�#�(�(�m�K�M�	M�
�a�y�~�~��'���(�(�	���	 �	 ��~�~�f�Q�i�n�n�-�-��;�c�#�(�(�m�K�M�	Mr
c�l�tt|j��}||kDrtd��|j	|jj�dj�}|dkDrA|j	|jj�dj�}|dz}|dkDr�At
|�S)z6Return the result of std::get<n>(val) on a std::tuple.z0Out of range index for std::get<N> on std::tuplerr:)r.ryr0r1r�r-r�)rwr��
tuple_size�nodes    r�	tuple_getr�Qs����*�3�8�8�4�5�J��:�~��K�L�L��8�8�C�H�H�O�O�%�a�(�-�-�.�D�
�a�%��y�y����)�)�+�A�.�3�3�4��	�Q����a�%��4� � r
c��|jj�djj�}t|d�st|d�r	|dd}n)t|d�r|d}nt	dt|�z��t
d|�S)z4Return the result of val.get() on a std::unique_ptr.r�__uniq_ptr_data�__uniq_ptr_impl�_M_t�tuplez-Unsupported implementation for unique_ptr: %s)r0r-r(r^r1r2r�)r��	impl_type�tuple_members   r�unique_ptr_getr�_s���
�����!�!�$�)�)�8�8�:�I��I�'8�9�#�I�/@�A��6�{�6�*��	�i��	1��6�{���;�c�)�n�L�N�	N��Q��%�%r
c�"�eZdZdZd�Zd�Zd�Zy)�UniquePointerPrinterzPrint a unique_ptr.c��||_yrr}r�s   rr�zUniquePointerPrinter.__init__tr�r
c�>�tt|j��Sr)r{r�r~r	s rr�zUniquePointerPrinter.childrenws����t�y�y� 9�:�:r
c��|jjjd�}djt	|��S)Nrzstd::unique_ptr<{}>)r~r0rKr;r2�r
rCs  rr�zUniquePointerPrinter.to_stringzs/���I�I�N�N�,�,�Q�/��$�+�+�C��F�3�3r
N)rrrrr�r�r�rr
rr�r�qs����;�4r
r�c�v�|djj|j��j�S)z7Return the value held in a __gnu_cxx::__aligned_membuf.�
_M_storage)�addressr�r��dereference)�bufrOs  r�get_value_from_aligned_membufr�s.���|��$�$�)�)�'�/�/�*;�<�H�H�J�Jr
c��	|jj�dj}|dk(r|dS|dk(r*|jjd�}t	|d|�S	tdt
|j�z��#Y�%xYw)z-Return the value held in an _List_node<_Val>.r:�_M_datar�r�!Unsupported implementation for %s�r0r-r4rKr�r1r2�r��memberrOs   r�get_value_from_list_noder��s���

����!�!�#�A�&�+�+���Y���	�?�"�
�|�
#��i�i�1�1�!�4�G�0��l�1C�W�M�M�$��8�3�t�y�y�>�I�
J�J��
����0B�.B�Bc�8�eZdZdZGd�de�Zd�Zd�Zd�Zy)�StdListPrinterzPrint a std::list.c��eZdZd�Zd�Zd�Zy)�StdListPrinter._iteratorc�V�||_|d|_|j|_d|_y�N�_M_nextr)�	_nodetype�_baser��_head�_count�r
�nodetype�heads   rr�z!StdListPrinter._iterator.__init__�s&��%�D�N��i��D�J����D�J��D�Kr
c��|Srrr	s rr�z!StdListPrinter._iterator.__iter__�����Kr
c��|j|jk(rt�|jj|j�j�}|d|_|j}|jdz|_t|�}d|z|fS)Nr�r:�[%d])r�r�r�r�r�r�r�r�)r
�eltrdr�s    rrz!StdListPrinter._iterator.__next__�ss���z�z�T�Z�Z�'�#�#��*�*�/�/�$�.�.�1�=�=�?�C��Y��D�J��K�K�E��+�+��/�D�K�*�3�/�C��U�N�C�(�(r
N�rrrr�r�rrr
r�	_iteratorr��s��	�	�	)r
r�c�2�t|�|_||_yr�rTr�r~r�s   rr�zStdListPrinter.__init__����2�8�<�����	r
c��td|jj�j�}|j	||jdd�S)N�
_List_node�_M_impl�_M_node�rPr~r0r�r��r
r�s  rr�zStdListPrinter.children�s>��#�L�$�)�)�.�.�A�I�I�K���~�~�h��	�	�)�(<�Y�(G�H�Hr
c��|jdd}|d|jk(rd|jzSd|jzS)Nr�r�r��empty %s�%s)r~r�r�)r
�headnodes  rr�zStdListPrinter.to_string�sF���9�9�Y�'�	�2���I��(�"2�"2�2�����0�0��t�~�~�&�&r
N�	rrrrrr�r�r�r�rr
rr�r��s!���)�H�)�(�I�'r
r�c��eZdZd�Zd�Zy)�NodeIteratorPrinterc�d�||_||_||_t||j�|_yr)r~r��	_contnamerPr0r�)r
rar��contnamerMs     rr�zNodeIteratorPrinter.__init__�s)����	�!���!���)�(�C�H�H�=��r
c���|jdsd|jzS|jdj|jj	��j�}t
t|��S)Nr�z(non-dereferenceable iterator for std::%s)r~r�r�r�r�r�r2r��r
r�s  rr�zNodeIteratorPrinter.to_string�sa���y�y��#�=����P�P��y�y��#�(�(��N�N�"�"�$�&�&1�k�m�	
��+�D�1�2�2r
N)rrrr�r�rr
rr�r��s��>�3r
r�c��eZdZdZd�Zy)�StdListIteratorPrinterzPrint std::list::iterator.c�6�tj|||dd�y)N�listr��r�r�r�s   rr�zStdListIteratorPrinter.__init__�s���$�$�T�8�S�&�,�Or
N�rrrrr�rr
rr�r��s��$�Pr
r�c��eZdZdZd�Zy)�StdFwdListIteratorPrinterz"Print std::forward_list::iterator.c�6�tj|||dd�y)N�forward_list�_Fwd_list_noder�r�s   rr�z"StdFwdListIteratorPrinter.__init__�s���$�$�T�8�S�.�%5�	7r
Nr�rr
rrr�s
��,�7r
rc�8�eZdZdZGd�de�Zd�Zd�Zd�Zy)�StdSlistPrinterzPrint a __gnu_cxx::slist.c��eZdZd�Zd�Zd�Zy)�StdSlistPrinter._iteratorc�:�||_|dd|_d|_y)N�_M_headr�r�r�r�r�r�s   rr�z"StdSlistPrinter._iterator.__init__�s ��%�D�N��i���3�D�J��D�Kr
c��|Srrr	s rr�z"StdSlistPrinter._iterator.__iter__�r�r
c��|jdk(rt�|jj|j�j	�}|d|_|j
}|j
dz|_d|z|dfS)Nrr�r:r�r�)r�r�r�r�r�r�)r
r�rds   rrz"StdSlistPrinter._iterator.__next__�sh���z�z�Q��#�#��*�*�/�/�$�.�.�1�=�=�?�C��Y��D�J��K�K�E��+�+��/�D�K��U�N�C�	�N�3�3r
Nr�rr
rr�r�s��	�
	�	4r
r�c��||_yrr}r�s   rr�zStdSlistPrinter.__init__�r�r
c��td|jj�}|j|j	�|j�S)N�__gnu_cxx::_Slist_node)rPr~r0r�r�r�s  rr�zStdSlistPrinter.children�s5��#�$<�d�i�i�n�n�M���~�~�h�.�.�0�$�)�)�<�<r
c�0�|jdddk(ryy)Nr
r�rzempty __gnu_cxx::slistz__gnu_cxx::slistr}r	s rr�zStdSlistPrinter.to_string�s���9�9�Y��	�*�a�/�+�!r
Nr�rr
rrr�s ��#�4�H�4�$�=�"r
rc��eZdZdZd�Zd�Zy)�StdSlistIteratorPrinterz!Print __gnu_cxx::slist::iterator.c��||_yrr}r�s   rr�z StdSlistIteratorPrinter.__init__�r�r
c���|jdsytd|jj�j�}t	|jdj|�j
�d�S)Nr�z1non-dereferenceable iterator for __gnu_cxx::slistrr�)r~rPr0r�r2r�r�r�s  rr�z!StdSlistIteratorPrinter.to_strings_���y�y��#�F�#�$�d�i�i�n�n�6�6=�g�i�	��4�9�9�Y�'�,�,�X�6�B�B�D�Y�O�P�Pr
N�rrrrr�r�rr
rrr�s��+��Qr
rc�>�eZdZdZGd�de�Zd�Zd�Zd�Zd�Z	y)	�StdVectorPrinterzPrint a std::vector.c��eZdZd�Zd�Zd�Zy)�StdVectorPrinter._iteratorc�
�||_|re|d|_d|_|d|_|d|_|jj�j}d|jz|_d|_	y||_||_d|_	y)N�_M_pr�	_M_offset�)
�_bitvec�_item�_so�_finish�_for�r0�sizeof�_isizer�)r
�start�finish�bitvec�itypes     rr�z#StdVectorPrinter._iterator.__init__s}��!�D�L��"�6�]��
����%�f�~���!�+�.����
�
�.�.�0�5�5���%�,�,�.����D�K�#��
�%����D�Kr
c��|Srrr	s rr�z#StdVectorPrinter._iterator.__iter__r�r
c�v�|j}|jdz|_|jr�|j|jk(r|j|j
k\rt�t|jj�d|jzz�}|jdz|_|j|jk\r|jdz|_d|_d|z|fS|j|jk(rt�|jj�}|jdz|_d|z|fS)Nr:rr�)
r�rr r"r!r#r��boolr�r%)r
rdr�s   rrz#StdVectorPrinter._iterator.__next__s����K�K�E��+�+��/�D�K��|�|��:�:����-�$�(�(�d�h�h�2F�'�'��4�:�:�1�1�3�q�D�H�H�}�E�F���8�8�a�<����8�8�t�{�{�*�!%���a��D�J� �D�H�����,�,��:�:����-�'�'��j�j�,�,�.��!�Z�Z�!�^��
�����,�,r
Nr�rr
rr�rs��	�	�	-r
r�c��t|�|_||_|jj	d�j
tjk(|_yr)	rTr�r~r0rK�coder*�TYPE_CODE_BOOL�_is_boolr�s   rr�zStdVectorPrinter.__init__0s@��2�8�<�����	����2�2�
���t�s�)�)�*��
r
c�|�|j|jdd|jdd|j�S)Nr��_M_start�	_M_finish)r�r~r0r	s rr�zStdVectorPrinter.children6s;���~�~�d�i�i�	�2�:�>�"�i�i�	�2�;�?�"�m�m�-�	-r
c��|jdd}|jdd}|jdd}|jr�|jddd}|jddd}|jddd}|j�j}d|jz}|||z
z|z}|||z
z}d|j
t
|�t
|�fzSd	|j
t
||z
�t
||z
�fzS)
Nr�r2r3�_M_end_of_storagerrrz"%s<bool> of length %d, capacity %dz%s of length %d, capacity %d)r~r0r�r0r$r��int)	r
r&r'�end�for)�bl�length�capacitys	         rr�zStdVectorPrinter.to_string;s$���	�	�)�$�Z�0�����9�%�k�2���i�i�	�"�#6�7���=�=��I�I�i�(��4�V�<�E��Y�Y�y�)�+�6�v�>�F����9�%�k�2�;�?�B��%�%�'�,�,�E��U�\�\�!�B��6�E�>�*�R�/�F��S�5�[�)�H�8��~�~�s�6�{�C��M�B�C�
D�3��~�~�s�6�E�>�':�C��e��<L�M�N�
Or
c��y�N�arrayrr	s r�display_hintzStdVectorPrinter.display_hintM���r
N)
rrrrrr�r�r�r�r?rr
rrrs'���#-�H�#-�J*�-�
O�$r
rc��eZdZdZd�Zd�Zy)�StdVectorIteratorPrinterzPrint std::vector::iterator.c��||_yrr}r�s   rr�z!StdVectorIteratorPrinter.__init__Tr�r
c�n�|jdsyt|jdj��S)N�
_M_currentz,non-dereferenceable iterator for std::vector�r~r2r�r	s rr�z"StdVectorIteratorPrinter.to_stringWs.���y�y��&�A��4�9�9�\�*�6�6�8�9�9r
Nrrr
rrBrBQs��&��:r
rBc��eZdZdZd�Zd�Zy)�StdBitIteratorPrinterz@Print std::vector<bool>'s _Bit_iterator and _Bit_const_iterator.c��||_yrr}r�s   rr�zStdBitIteratorPrinter.__init__`r�r
c��|jdsyt|jdj�d|jdzz�S)Nrz2non-dereferenceable iterator for std::vector<bool>r:r�r~r,r�r	s rr�zStdBitIteratorPrinter.to_stringcsH���y�y�� �G��D�I�I�f�%�1�1�3��D�I�I�k�2�2�4�5�	5r
Nrrr
rrHrH]s��J��5r
rHc��eZdZdZd�Zd�Zy)�StdBitReferencePrinterz#Print std::vector<bool>::reference.c��||_yrr}r�s   rr�zStdBitReferencePrinter.__init__mr�r
c��|jdsyt|jdj�|jdz�S)Nrz$invalid std::vector<bool>::reference�_M_maskrKr	s rr�z StdBitReferencePrinter.to_stringps>���y�y�� �:��D�I�I�f�%�1�1�3�t�y�y��7K�L�M�Mr
Nrrr
rrMrMjs��-��Nr
rMc�8�eZdZdZGd�de�Zd�Zd�Zd�Zy)�StdTuplePrinterzPrint a std::tuple.c�.�eZdZed��Zd�Zd�Zd�Zy)�StdTuplePrinter._iteratorc��t|�dk(rt|djd�ryt|�dk(ryt|�dk(rytd��)Nrr:�__tuple_baseTrFz4Top of tuple tree does not consist of a single node.)r.r^r0r1)�nodess r�_is_nonempty_tuplez,StdTuplePrinter._iterator._is_nonempty_tuple}sP���5�z�Q��'��a��
�
�~�F���U��q����U��q����F�H�
Hr
c���||_|jjj�}|j|�r-|jj	|dj�|_d|_yr)r�r0r-rXr�r�)r
r�rWs   rr�z"StdTuplePrinter._iterator.__init__�sR���D�J��J�J�O�O�*�*�,�E��&�&�u�-�!�Z�Z�_�_�U�1�X�]�]�;��
��D�Kr
c��|Srrr	s rr�z"StdTuplePrinter._iterator.__iter__�r�r
c���|jst�|jjj�}t	|�dk(rt�t	|�dkDrtd��t	|�dk(r0|jj
|dj�}d|_nU|jj
|dj�}|jj
|dj�|_|jdz|_|jj�}t	|�dks|djdk7rd|jdz
z|fSd|jdz
z|dfS)Nrrz/Cannot parse more than 2 nodes in a tuple tree.r:r�r�)	r�r�r0r-r.r1r�r�r4)r
rW�implr-s    rrz"StdTuplePrinter._iterator.__next__�s/���:�:�#�#��J�J�O�O�*�*�,�E��5�z�Q��#�#��5�z�A�~� �E�G�G��5�z�Q���z�z���u�Q�x�}�}�5��!��
��z�z���u�Q�x�}�}�5��"�Z�Z�_�_�U�1�X�]�]�;��
��+�+��/�D�K�
�Y�Y�%�%�'�F��6�{�Q��&��)�.�.�N�"B��$�+�+��/�2�D�9�9��$�+�+��/�2�D��4H�I�Ir
N)rrr�staticmethodrXr�r�rrr
rr�rT|s&��	�		H�
�		H�		�	�(	Jr
r�c�2�t|�|_||_yrr�r�s   rr�zStdTuplePrinter.__init__�r�r
c�8�|j|j�Sr)r�r~r	s rr�zStdTuplePrinter.children�s���~�~�d�i�i�(�(r
c��t|jjj��dk(rd|jzSd|jzS)Nrr�z
%s containing)r.r~r0r-r�r	s rr�zStdTuplePrinter.to_string�s>���t�y�y�~�~�$�$�&�'�1�,�����0�0��$�.�.�1�1r
Nr�rr
rrRrRys%���CJ�H�CJ�J�)�2r
rRc�(�eZdZdZd�Zd�Zd�Zd�Zy)�StdStackOrQueuePrinterz!Print a std::stack or std::queue.c�^�t|�|_tj|d�|_y)N�c)rTr�r*�default_visualizer�_visualizerr�s   rr�zStdStackOrQueuePrinter.__init__�s%��2�8�<����1�1�#�c�(�;��r
c�6�|jj�Sr)rfr�r	s rr�zStdStackOrQueuePrinter.children�s�����(�(�*�*r
c�T�|j�d|jj���S)Nz wrapping: )r�rfr�r	s rr�z StdStackOrQueuePrinter.to_string�s'��$(�N�N�$(�$4�$4�$>�$>�$@�B�	Br
c�d�t|jd�r|jj�Sy)Nr?)�hasattrrfr?r	s rr?z#StdStackOrQueuePrinter.display_hint�s*���4�#�#�^�4��#�#�0�0�2�2�r
N)rrrrr�r�r�r?rr
rrbrb�s��+�<�+�B�r
rbc�(�eZdZdZd�Zd�Zd�Zd�Zy)�RbtreeIteratorzf
    Turn an RB-tree-based container (std::map, std::set etc.) into
    a Python iterable object.
    c�X�|ddd|_|dddd|_d|_y)Nr�r��
_M_node_count�	_M_header�_M_leftr)�_size�_noder�)r
�rbtrees  rr�zRbtreeIterator.__init__�s8���F�^�I�.��?��
��F�^�I�.�{�;�I�F��
���r
c��|Srrr	s rr�zRbtreeIterator.__iter__�r�r
c�,�t|j�Sr)r6rqr	s r�__len__zRbtreeIterator.__len__�s���4�:�:��r
c�x�|j|jk(rt�|j}|jdz|_|j|jkr�|j}|j	�drN|j	�d}|j	�dr�|j	�d}|j	�dr�'nm|j	�d}||j	�dk(r,|}|j	�d}||j	�dk(r�,|j	�d|k7r|}||_|S)Nr:�_M_rightrp�	_M_parent)r�rqr�rrr�)r
�resultr��parents    rrzRbtreeIterator.__next__�s(���;�;�$�*�*�$��������k�k�A�o����;�;����#��:�:�D����!�*�-��'�'�)�*�5���&�&�(��3��+�+�-�i�8�D��&�&�(��3��)�)�+�K�8���f�0�0�2�:�>�>�!�D�#�/�/�1�+�>�F��f�0�0�2�:�>�>��#�#�%�j�1�V�;�!�D��D�J��
r
N)rrrrr�r�rvrrr
rrlrl�s���
�
��r
rlc��	|jj�dj}|dk(r|dS|dk(r*|jjd�}t	|d|�S	tdt
|j�z��#Y�%xYw)z0Return the value held in an _Rb_tree_node<_Val>.r:�_M_value_fieldr�rr�r�r�s   r�get_value_from_Rb_tree_noder~
s���

����!�!�#�A�&�+�+���%�%��(�)�)�
�|�
#��i�i�1�1�!�4�G�0��l�1C�W�M�M�$��8�3�t�y�y�>�I�
J�J��
��r�c��eZdZdZd�Zd�Zy)�StdRbtreeIteratorPrinterz2Print std::map::iterator, std::set::iterator, etc.c�|�||_td|jj�}|j�|_y�N�
_Rb_tree_node)r~rPr0r��
_link_type)r
rar�r�s    rr�z!StdRbtreeIteratorPrinter.__init__!s-����	�#�O�T�Y�Y�^�^�D��"�*�*�,��r
c��|jdsy|jdj|j�j�}t	t|��S)Nr�z6non-dereferenceable iterator for associative container)r~r�r�r�r2r~r�s  rr�z"StdRbtreeIteratorPrinter.to_string&sH���y�y��#�K��y�y��#�(�(����9�E�E�G���.�t�4�5�5r
Nrrr
rr�r�s��<�-�
6r
r�c��eZdZdZd�Zd�Zy)�StdDebugIteratorPrinterz-Print a debug enabled version of an iterator.c��||_yrr}r�s   rr�z StdDebugIteratorPrinter.__init__0r�r
c�r�tjd�}|jjj	d�}|jj|�d}|s$t
|jj|��S|jd|dk7ryt
|jj|��S)Nz __gnu_debug::_Safe_iterator_baser�_M_sequence�
_M_versionzinvalid iterator)r*r+r~r0rKr�r2)r
�	base_typer)�safe_seqs    rr�z!StdDebugIteratorPrinter.to_string5s����O�O�$F�G�	��	�	���0�0��3���9�9�>�>�)�,�]�;����t�y�y�~�~�e�,�-�-��9�9�\�"�h�|�&<�<�%��4�9�9�>�>�%�(�)�)r
Nrrr
rr�r�-s��7��
*r
r�c��|dk(rdSd|zS)zDReturn either "1 element" or "N elements" depending on the argument.r:z	1 elementz%d elementsr)�nums r�num_elementsr�@s����(�;�;�
��(;�;r
c�>�eZdZdZGd�de�Zd�Zd�Zd�Zd�Z	y)	�
StdMapPrinterz"Print a std::map or std::multimap.c��eZdZd�Zd�Zd�Zy)�StdMapPrinter._iterc�.�||_d|_||_yr��_rbiterr��_type�r
�rbiterr0s   rr�zStdMapPrinter._iter.__init__J���!�D�L��D�K��D�Jr
c��|Srrr	s rr�zStdMapPrinter._iter.__iter__Or�r
c�>�|jdzdk(rVt|j�}|j|j�j�}t
|�}||_|d}n|jd}d|jz|f}|jdz|_|S)Nrr�first�secondr�r:)r�rr�r�r�r�r~�_pair)r
rw�itemrzs    rrzStdMapPrinter._iter.__next__Rs����{�{�Q��!�#�����&���F�F�4�:�:�&�2�2�4��/��2����
���z���z�z�(�+���t�{�{�*�D�1�F��+�+��/�D�K��Mr
Nr�rr
r�_iterr�Is��	�
	�	r
r�c�2�t|�|_||_yrr�r�s   rr�zStdMapPrinter.__init___r�r
c	�n�|j�dttt|j�����S�N� with �r�r�r.rlr~r	s rr�zStdMapPrinter.to_stringc�+��#�~�~�+�C��t�y�y�0I�,J�K�M�	Mr
c��td|jj�j�}|j	t|j�|�Sr��rPr~r0r�r�rlr�s  rr�zStdMapPrinter.childreng�9���������@�H�H�J���z�z�.����3�T�:�:r
c��y�N�maprr	s rr?zStdMapPrinter.display_hintk���r
N�
rrrrrr�r�r�r�r?rr
rr�r�Es&��,����,�M�;�r
r�c�8�eZdZdZGd�de�Zd�Zd�Zd�Zy)�
StdSetPrinterz"Print a std::set or std::multiset.c��eZdZd�Zd�Zd�Zy)�StdSetPrinter._iterc�.�||_d|_||_yrr�r�s   rr�zStdSetPrinter._iter.__init__tr�r
c��|Srrr	s rr�zStdSetPrinter._iter.__iter__yr�r
c���t|j�}|j|j�j	�}t|�}d|jz|f}|jdz|_|S)Nr�r:)rr�r�r�r�r~r�)r
r�rzs   rrzStdSetPrinter._iter.__next__|s^������%�D��9�9�T�Z�Z�(�4�4�6�D�.�t�4�D��t�{�{�*�D�1�F��+�+��/�D�K��Mr
Nr�rr
rr�r�ss��	�
	�	r
r�c�2�t|�|_||_yrr�r�s   rr�zStdSetPrinter.__init__�r�r
c	�n�|j�dttt|j�����Sr�r�r	s rr�zStdSetPrinter.to_string�r�r
c��td|jj�j�}|j	t|j�|�Sr�r�r�s  rr�zStdSetPrinter.children�r�r
N)	rrrrrr�r�r�r�rr
rr�r�os!��,����&�M�;r
r�c�"�eZdZdZd�Zd�Zd�Zy)�StdBitsetPrinterzPrint a std::bitset.c�2�t|�|_||_yrr�r�s   rr�zStdBitsetPrinter.__init__�r�r
c� �d|jzS)Nr�)r�r	s rr�zStdBitsetPrinter.to_string�s���t�~�~�&�&r
c��	|jd}|j}|jtjk(r|j�j}n|g}|j}|j|z}g}d}||krN||}d}|dk7r7|dzdk7r|jd||zdz|zzdf�|dz}|dz	}|dk7r�7|dz}||kr�N|S#gcYSxYw)N�_M_wrr:r�r)r~r0r.r*�TYPE_CODE_ARRAY�targetr$ru)	r
�words�wtype�tsize�nwordsrz�byte�w�bits	         rr�zStdBitsetPrinter.children�s���	��I�I�f�%�E��
�
��
�:�:��,�,�,��L�L�N�)�)�E��G�E��L�L�E�����%�������V�m��d��A��C��q�&���E�a�<��M�M�6�T�E�\�A�-=��-C�#D�a�"H�I��A�g����F���q�&��!�8�D��V�m��
��7	��I�s�C�CN)rrrrr�r�r�rr
rr�r��s����'�
 r
r�c�>�eZdZdZGd�de�Zd�Zd�Zd�Zd�Z	y)	�StdDequePrinterzPrint a std::deque.c��eZdZd�Zd�Zd�Zy)�StdDequePrinter._iterc�X�||_||_||_||_||_d|_yr)rr�_p�_end�_last�_buffer_sizer�)r
r�r&r7�last�buffer_sizes      rr�zStdDequePrinter._iter.__init__�s-���D�J��D�G��D�I��D�J� +�D���D�Kr
c��|Srrr	s rr�zStdDequePrinter._iter.__iter__�r�r
c��|j|jk(rt�d|jz|jj	�f}|jdz|_|jdz|_|j|j
k(rF|jdz|_|jd|_|j|jz|_|S)Nr�r:r)r�r�r�r�r�r�rrr�)r
rzs  rrzStdDequePrinter._iter.__next__�s����w�w�$�*�*�$�#�#��t�{�{�*�D�G�G�,?�,?�,A�B�F��+�+��/�D�K��g�g��k�D�G��w�w�$�)�)�#�"�Z�Z�!�^��
��*�*�Q�-��� �G�G�d�&7�&7�7��	��Mr
Nr�rr
rr�r��s��	�	�	r
r�c���t|�|_||_|jj	d�|_|j
j}|dkrtd|z�|_yd|_y)Nrir:)	rTr�r~r0rK�_elttyper$r6r�)r
rar��sizes    rr�zStdDequePrinter.__init__�sY��2�8�<�����	����2�2�1�5��
��}�}�#�#���#�:� #�C�$�J��D�� !�D�r
c��|jdd}|jdd}|d|dz
dz
}|d|dz
}|d|dz
}|j|z|z|z}|j�d	tt	|����S)
Nr�r2r3r�r:�_M_last�_M_cur�_M_firstr�)r~r�r�r��long)r
r&r7�delta_n�delta_s�delta_er�s       rr�zStdDequePrinter.to_string�s����	�	�)�$�Z�0���i�i�	�"�;�/���i�.�5��#3�3�a�7���	�"�U�8�_�4���h�-�#�j�/�1��� � �7�*�W�4�w�>��#�~�~�|�D��J�/G�H�Hr
c��|jdd}|jdd}|j|d|d|d|d|j�S)Nr�r2r3r�r�r�)r~r�r�)r
r&r7s   rr�zStdDequePrinter.children�s\���	�	�)�$�Z�0���i�i�	�"�;�/���z�z�%�	�*�E�(�O�U�9�=M��h�-��):�):�<�	<r
c��yr=rr	s rr?zStdDequePrinter.display_hint�r@r
Nr�rr
rr�r��s&������<"�
I�<�r
r�c��eZdZdZd�Zd�Zy)�StdDequeIteratorPrinterzPrint std::deque::iterator.c��||_yrr}r�s   rr�z StdDequeIteratorPrinter.__init__r�r
c�n�|jdsyt|jdj��S)Nr�z+non-dereferenceable iterator for std::dequerFr	s rr�z!StdDequeIteratorPrinter.to_string	s.���y�y��"�@��4�9�9�X�&�2�2�4�5�5r
Nrrr
rr�r�s��%��6r
r�c�"�eZdZdZd�Zd�Zd�Zy)�StdStringPrinterz'Print a std::basic_string of some kind.c�D�||_|jd�dk7|_y)Nz::__cxx11::basic_stringr�)r~�find�_new_stringr�s   rr�zStdStringPrinter.__init__s ����	�#�=�=�)B�C�r�I��r
c�~�|jj}|jtjk(r|j�}|jdd}|jr9|jd}|j|jj��}nt|j�j�}tjt|�dz�j�}|j|�dz
}|j�d}t|d�r|j|��S|j!|��S)	N�_M_dataplusr�_M_string_lengthz::_Repr:�	_M_length�lazy_string�r:)r~r0r.r*�
TYPE_CODE_REFr�r�r�r(�unqualifiedr+r2r�r�rjr��string)r
r0�ptrr:�realtype�reptype�headers       rr�zStdStringPrinter.to_strings����y�y�~�~���9�9��)�)�)��;�;�=�D�
�i�i�
�&�v�.������Y�Y�1�2�F��(�(�3�8�8�2�2�4�5�C��'�'�)�8�8�:�H��o�o�c�(�m�h�&>�?�G�G�I�G��X�X�g�&��*�F��'�'�)�+�6�F��3�
�&��?�?�&�?�1�1��z�z��z�(�(r
c��y�Nr�rr	s rr?zStdStringPrinter.display_hint-���r
N�rrrrr�r�r?rr
rr�r�s��1�J�)�.r
r�c�*�|d}|d}|d}|||fS)z'Access the streambuf put area pointers.�
_M_out_beg�
_M_out_cur�	_M_in_endr)�	streambuf�pbase�pptr�egptrs    r�access_streambuf_ptrsr1s-���l�#�E��\�"�D��k�"�E��$���r
c�"�eZdZdZd�Zd�Zd�Zy)�StdStringBufPrinterzPrint a std::basic_stringbuf.c��||_yrr})r
�_r�s   rr�zStdStringBufPrinter.__init__<r�r
c��t|j�\}}}|r1|r||kDr|j||z
��S|j||z
��S|jdS)Nr��	_M_string)rr~r�)r
rrrs    rr�zStdStringBufPrinter.to_string?s\��4�T�Y�Y�?����e���D�5�L��|�|�4�%�<�|�8�8��|�|�5�5�=�|�9�9��y�y��%�%r
c��yr�rr	s rr?z StdStringBufPrinter.display_hintIr�r
Nr�rr
rrr9s��'��&�r
rc�"�eZdZdZd�Zd�Zd�Zy)�StdStringStreamPrinterz Print a std::basic_stringstream.c��||_||_|jj�D�cgc]}|js�|j��c}d}tjd|j|�j�tjd�|_
|j|djk7|_ycc}w)Nr�__streamz$__stream->rdbuf()�_M_stringbuf)r~r�r0r-r/r*�set_convenience_variabler�r��parse_and_eval�
_streambuf�_was_redirected)r
rar��f�basetypes     rr�zStdStringStreamPrinter.__init__Ps�����	�!���%(�H�H�O�O�$5�I�$5�q����A�F�F�$5�I�!�L���$�$�Z����(�1C�1K�1K�L��,�,�-A�B���#���#�n�2E�2M�2M�M����Js
�B<�B<c��|jr)|j�d|jj���S|jdS)Nz redirected to r)rr�rr�r~r	s rr�z StdStringStreamPrinter.to_string]s:����������� ;� ;� =�?�
?��y�y��(�(r
c��|jryyr�)rr	s rr?z#StdStringStreamPrinter.display_hintcs������r
Nr�rr
rrrMs��*�N�)�r
rc��eZdZd�Zd�Zd�Zy)�Tr1HashtableIteratorc��|d|_d|_|d|_t|jd�j�|_d|_|j|jk7rZ|j|j|_|jry|jdz|_|j|jk7r�Yyy)N�
_M_bucketsr�_M_bucket_count�_Noder:)�_buckets�_bucket�
_bucket_countr7r0r��
_node_typerr)r
�	hashtables  rr�zTr1HashtableIterator.__init__js���!�,�/��
����&�'8�9���#�I�N�N�G�<�D�D�F�����
��l�l�d�0�0�0����t�|�|�4�D�J��z�z���<�<�!�+�D�L�	�l�l�d�0�0�0r
c��|Srrr	s rr�zTr1HashtableIterator.__iter__vr�r
c��|jdk(rt�|jj|j�}|j	�d}|j	�d|_|jdk(r�|j
dz|_|j
|jk7r[|j|j
|_|jr	|S|j
dz|_|j
|jk7r�[|S)Nr�_M_vr�r:)rrr�r�r$r�r"r#r!)r
r�rzs   rrzTr1HashtableIterator.__next__ys����:�:��?����z�z���t���/���!�!�#�F�+���%�%�'�	�2��
��:�:��?��<�<�!�+�D�L��,�,�$�"4�"4�4�!�]�]�4�<�<�8��
��:�:���
� $�|�|�a�/���	�,�,�$�"4�"4�4�
�
r
Nr�rr
rrris��
,��
r
rc��eZdZd�Zd�Zd�Zy)�StdHashtableIteratorc��|dd|_|jjd�}|jjd�jd�}tdt	|�|rdnd�}|j�|_y)	N�_M_before_begin�_M_nxtr:�	rzstd::__detail::_Hash_node�true�false)rrr0rKrEr2r�r$)r
r%rO�cached�	node_types     rr�zStdHashtableIterator.__init__�sr���0�1�(�;��
��.�.�2�2�1�5�����1�1�!�4�F�F�q�I��%�&A�3�w�<�06�f�G�E�	�#�+�+�-��r
c��|Srrr	s rr�zStdHashtableIterator.__iter__�r�r
c�T�|jdk(rt�|jj|j�j	�}|d|_|dj
}|j|jjd�j��}|j	�S)Nrr-r�)	rrr�r�r$r�r�r0rKr�)r
r��valptrs   rrzStdHashtableIterator.__next__�s����:�:��?����j�j�o�o�d�o�o�.�:�:�<����]��
��\�"�*�*�����S�X�X�7�7��:�B�B�D�E���!�!�#�#r
Nr�rr
rr*r*�s��.��$r
r*c�8�eZdZdZd�Zd�Zd�Zed��Zd�Z	y)�Tr1UnorderedSetPrinterz1Print a std::unordered_set or tr1::unordered_set.c�2�t|�|_||_yrr�r�s   rr�zTr1UnorderedSetPrinter.__init__�r�r
c�n�|jjd�r|jS|jdS�N�std::tr1�_M_h�r�rUr~r	s r�
_hashtablez!Tr1UnorderedSetPrinter._hashtable��-���>�>�$�$�Z�0��9�9���y�y�� � r
c�\�|j�d}|j�dt|���S�N�_M_element_countr��r>r�r��r
rds  rr�z Tr1UnorderedSetPrinter.to_string��(�����!�"4�5��#�~�~�|�E�/B�C�Cr
c��d|zS�Nr�r��is r�
_format_countz$Tr1UnorderedSetPrinter._format_count������z�r
c��t|jtj��}|jjd�r#t
|t|j���St
|t|j���S�Nr;)
rrJ�	itertoolsrdr�rUrrr>r*)r
�counters  rr�zTr1UnorderedSetPrinter.children�sa���t�)�)�9�?�?�+<�=���>�>�$�$�Z�0���!5�d�o�o�6G�!H�I�I��G�1�$�/�/�2C�D�E�Er
N)
rrrrr�r>r�r]rJr�rr
rr7r7�s/��;��!�
D�����Fr
r7c�^�eZdZdZd�Zd�Zd�Zed��Zed��Z	ed��Z
d�Zd	�Zy
)�Tr1UnorderedMapPrinterz1Print a std::unordered_map or tr1::unordered_map.c�2�t|�|_||_yrr�r�s   rr�zTr1UnorderedMapPrinter.__init__�r�r
c�n�|jjd�r|jS|jdSr:r=r	s rr>z!Tr1UnorderedMapPrinter._hashtable�r?r
c�\�|j�d}|j�dt|���SrArCrDs  rr�z Tr1UnorderedMapPrinter.to_string�rEr
c#�0K�|D]
}|D]}|����y�wrr)r�r�rIs   r�_flattenzTr1UnorderedMapPrinter._flatten�s�����C�������s�c��|d|dfS�Nr�r�r)r�s r�_format_onez"Tr1UnorderedMapPrinter._format_one�s���G��c�(�m�,�,r
c��d|zSrGrrHs rrJz$Tr1UnorderedMapPrinter._format_count�rKr
c	��t|jtj��}|jjd�rH|j
t|jt|j����}t||�S|j
t|jt|j����}t||�SrM)rrJrNrdr�rUrVrYrr>rr*)r
rO�datas   rr�zTr1UnorderedMapPrinter.children�s����t�)�)�9�?�?�+<�=���>�>�$�$�Z�0��=�=��T�%�%�';�D�O�O�<M�'N�O�Q�D����&�&��}�}���!�!�#7����8I�#J�K�M���G�T�"�"r
c��yr�rr	s rr?z#Tr1UnorderedMapPrinter.display_hint�r�r
N)
rrrrr�r>r�r]rVrYrJr�r?rr
rrQrQ�s[��;��!�
D�����
�-��-�����#�r
rQc�8�eZdZdZGd�de�Zd�Zd�Zd�Zy)�StdForwardListPrinterzPrint a std::forward_list.c��eZdZd�Zd�Zd�Zy)�StdForwardListPrinter._iteratorc�4�||_|d|_d|_yr�rr�s   rr�z(StdForwardListPrinter._iterator.__init__�s��%�D�N��i��D�J��D�Kr
c��|Srrr	s rr�z(StdForwardListPrinter._iterator.__iter__�r�r
c��|jdk(rt�|jj|j�j	�}|d|_|j
}|j
dz|_|dj}|j|jjd�j��}d|z|j	�fS)Nrr�r:r�r�)
r�r�r�r�r�r�r�r0rKr�)r
r�rdr5s    rrz(StdForwardListPrinter._iterator.__next__�s����z�z�Q��#�#��*�*�/�/�$�.�.�1�=�=�?�C��Y��D�J��K�K�E��+�+��/�D�K���&�.�.�F��[�[����!;�!;�A�!>�!F�!F�!H�I�F��U�N�F�$6�$6�$8�9�9r
Nr�rr
rr�ra�s��	�
	�		:r
r�c�2�||_t|�|_yr)r~rTr�r�s   rr�zStdForwardListPrinter.__init__s����	�2�8�<��r
c��td|jj�j�}|j	||jdd�S)Nrr�r
r�r�s  rr�zStdForwardListPrinter.childrens?��#�$4�d�i�i�n�n�E�M�M�O���~�~�h��	�	�)�(<�Y�(G�H�Hr
c�n�|jddddk(rd|jzSd|jzS)Nr�r
r�rr�r��r~r�r	s rr�zStdForwardListPrinter.to_strings;���9�9�Y��	�*�9�5��:�����.�.��d�n�n�$�$r
Nr�rr
rr_r_�s!��$�:�H�:�(=�I�%r
r_c�@�eZdZdZd	d�Zd�ZGd�de�Zd�Zd�Z	y)
�SingleObjContainerPrinterz8Base class for printers of containers of single objects.Nc�.�||_||_||_yr)�_contained_valuerf�_hint)r
r��viz�hints    rr�z"SingleObjContainerPrinter.__init__s�� #��������
r
c��tst|�Stjj	tjj�|�xst|�S)z5Return type as a string after applying type printers.)�_use_type_printingr2r*�types�apply_type_recognizers�get_type_recognizers)r
r0s  r�
_recognizez$SingleObjContainerPrinter._recognizesH��"��t�9���y�y�/�/��	�	�0N�0N�0P�04�6�C�9<�T��	Cr
c��eZdZd�Zd�Zd�Zy)�$SingleObjContainerPrinter._containedc��||_yrr}rs  rr�z-SingleObjContainerPrinter._contained.__init__s	���D�Ir
c��|Srrr	s rr�z-SingleObjContainerPrinter._contained.__iter__"r�r
c�T�|j�t�|j}d|_d|fS)Nz[contained value]r�)r
�retvals  rrz-SingleObjContainerPrinter._contained.__next__%s-���y�y� �#�#��Y�Y�F��D�I�'��0�0r
Nr�rr
r�
_containedrws��	�	�	1r
r|c���|j�|jd�St|jd�r|jj	�S|j|j�S)Nr�)rlr|rjrfr�r	s rr�z"SingleObjContainerPrinter.children,sW��� � �(��?�?�4�(�(��4�#�#�Z�0��#�#�,�,�.�.����t�4�4�5�5r
c��t|jd�r0t|jd�r|jj�S|jS)Nr�r?)rjrfr?rmr	s rr?z&SingleObjContainerPrinter.display_hint3sA���D�$�$�j�1��D�,�,�n�=��#�#�0�0�2�2��z�z�r
r)
rrrrr�rurr|r�r?rr
rrjrjs&��B��
C�1�X�1�6�r
rjc���|j�j}tjddk(rt	|�}nt|�}	t
j|�jjS#YyxYw)z{Find the name of the function referred to by the gdb.Value f,
    which should contain a function pointer from the program.rrN)
r�r�rerfr�r6r*�block_for_pc�functionr4)rs r�function_pointer_to_namer�;sj��	
�
�
����A�
�����a��
��G����F�������"�+�+�0�0�0����s�	(A2�2A6c�8��eZdZdZ�fd�Zd�Zed��Z�xZS)�StdExpAnyPrinterz+Print a std::any or std::experimental::any.c���t|�|_t|j�|_||_d|_d}d}|jd}|dk7�r�t|�}|st
d|jz��dj|�}tj||�}|st
d|jz��|jd�}	d|	vr�g}
tj�D]M}	tjd||jd��}|
jtj |���Ot%|
�dk7rt
d	��|
d}
ntj |	�}
|
j'd�|_d}d
|	vr|jddj(}n/d
|	vr|jdd}nt
d|jz��|j+|jj-��j/�}tj0|�}t2t|�k||�y#tj"$rY��cwxYw)N�
_M_managerrzInvalid function pointer in %szi({0}::_Manager_\w+<.*>)::_S_manage\((enum )?{0}::_Op, (const {0}|{0} const) ?\*, (union )?{0}::_Arg ?\*\)zUnknown manager function in %sr:�std::stringzstd::string(?!\w)z;Cannot uniquely determine std::string type used in std::anyz::_Manager_internalr��	_M_bufferz::_Manager_externalr�)rTr�rjr~�_contained_typer�r1r;rZr[�groupr��
_string_typesrgrur*r+r=r.rKr�r�r�r�re�superr�)r
rar��contained_value�
visualizer�mgr�func�rx�m�mgrname�mgrtypes�sr\�mgrtyper5�	__class__s               �rr�zStdExpAnyPrinter.__init__Vs/���2�8�<���/����?�����	�#������
��i�i��%���!�8�+�C�0�D�� �4����G�I�I�,��f�X��	
�
����T�"�A�� �4�t�~�~�E�G�G��g�g�a�j�G���'���)�7�7�9�A���F�F�#7��A�G�G�A�J�G��!�������(:�;�
:��x�=�A�%�%�+���#�1�+���/�/�'�2��#*�#<�#<�Q�#?�D� ��F�$��/����<�0��=�E�E��&�'�1����<�0��:�� �4�t�~�~�E�G�G�$�k�k��$�$�,�,�.�0�0;��
�
��/�/��@�J�
���.��
�K��7�9�9����s�(A
H1�1I�Ic� �|j�d|jzSd|jz}t|jd�r||jj	�zS|j|j�}|t
t|��zS)N�%s [no contained value]z%s containing r�)r�r�rjrfr�rurTr2)r
�descrOs   rr�zStdExpAnyPrinter.to_string�s~�����'�,�t�~�~�=�=��$�.�.�0���4�#�#�Z�0��$�*�*�4�4�6�6�6��/�/�$�"6�"6�7���/��G��=�=�=r
c��ttjd�j��h}d}dddtzg}||D�chc]}||z��	c}z}|Scc}w)Nr�zAbasic_string<char, std::char_traits<char>, std::allocator<char> >rGrl)r2r*r+r(r>)�stringsr��quals�qs    rr�zStdExpAnyPrinter._string_types�se��
�s���}�5�D�D�F�G�H��O���*��/�/�1���5�)�5�a�A��E�5�)�)�����*s�A)	rrrrr�r�r]r��
__classcell__�r�s@rr�r�Ss'���5�BL�H>��
��
r
r�c�(��eZdZdZ�fd�Zd�Z�xZS)�StdExpOptionalPrinterz5Print a std::optional or std::experimental::optional.c�2��t|�|_t|j�|_|d}|jjd�r|d}|}n|d}|d}	|d}t	j
|�}|sd}tt|�#||�y#Y�2xYw)N�
_M_payloadzstd::experimental�
_M_engaged�_M_value)	rTr�rjrUr*rer�r�r�)r
rar��payload�engagedr�r�r�s       �rr�zStdExpOptionalPrinter.__init__�s����2�8�<���/����?����l�#���>�>�$�$�%8�9��,�'�G�%�O��l�+�G�%�l�3�O�
�"1�*�"=���+�+�O�<�
��"�O�
�#�T�3��Z�	)��
��s�B�Bc���|j�d|jzSt|jd�r)|j�d|jj	���S|jS)Nr�r�z containing )rlr�rjrfr�r	s rr�zStdExpOptionalPrinter.to_string�s\��� � �(�,�t�~�~�=�=��4�#�#�Z�0�)-���)-�)9�)9�)C�)C�)E�G�
G��~�~�r
�rrrrr�r�r�r�s@rr�r��s���?�)�*r
r�c�(��eZdZdZ�fd�Zd�Z�xZS)�StdVariantPrinterzPrint a std::variant.c����t|j�}t|�|_|d|_|jt|�k\rd|_d}d}n~|t|j�|_|dddj}|j|jj��j�}tj|�}tt|�C||d�y)N�_M_index�_M_ur�r�r>)ryr0rTr��_indexr.r�r6r�r�r�r�r*rer�r�r�)r
rar��alternativesr�r��addrr�s       �rr�zStdVariantPrinter.__init__�s����,�S�X�X�6��2�8�<����*�o����;�;�#�l�+�+�#'�D� �"�O��J�#/��D�K�K�0@�#A�D� ��v�;�z�*�<�8�@�@�D�"�i�i��$�$�,�,�.�0�0;��
�
��/�/��@�J�
���/��Z��	2r
c��|j�d|jzSt|jd�r4d|j|j|jj�fzSd|j|jfzS)Nr�r�z%s [index %d] containing %sz
%s [index %d])rlr�rjrfr�r�r	s rr�zStdVariantPrinter.to_string�sx��� � �(�,�t�~�~�=�=��4�#�#�Z�0�0�D�N�N�D�K�K�48�4D�4D�4N�4N�4P�4R�R�
R��$�.�.�$�+�+�!>�>�>r
r�r�s@rr�r��s����2�"?r
r�c�(��eZdZdZ�fd�Zd�Z�xZS)�StdNodeHandlePrinterzPrint a container node handle.c�@��|jjd�|_|jjd�jd�}t|jd�|_|jjd�|jk7|_|d}|rU|j
rt|j��}nt|d|j�}tj|�}nd}d}|d}|dr|d	nd|_tt|�?||d
�y)Nr:rrr�r�r��_M_allocr�r�r>)r0rK�_value_typer^r4�_is_rb_tree_node�_is_map_noder~r�r�r*re�_allocr�r�r�)	r
rar�r��nodeptrr�r��optallocr�s	        �rr�zStdNodeHandlePrinter.__init__�s	����8�8�5�5�a�8����8�8�-�-�a�0�B�B�1�E�� 4��M�M�?�!,����H�H�6�6�q�9�T�=M�=M�M����h�-����$�$�"=��'�'�)�#+��#@���@U�@D�@P�@P�#R���/�/��@�J�"�O��J��z�?��08��0F�h�|�,�D���
�"�D�2�?�J�3:�	<r
c���d}|js|dz
}|jr|dz
}n|dz
}|jr<|dz
}t|jd�r|�d|jj���S|Sd|zS)	Nznode handle for z
unordered r��setz
 with elementr�� = r�)r�r�rlrjrfr�)r
r�s  rr�zStdNodeHandlePrinter.to_string	s���!���$�$��L� �D�����E�M�D��E�M�D�� � ��O�#�D��t�'�'��4�$(�$�*:�*:�*D�*D�*F�G�G��K���$�$r
r�r�s@rr�r��s���(�<�.%r
r�c�"�eZdZdZd�Zd�Zd�Zy)�StdExpStringViewPrinterzP
    Print a std::basic_string_view or std::experimental::basic_string_view
    c��||_yrr}r�s   rr�z StdExpStringViewPrinter.__init__ r�r
c��|jd}|jd}t|d�r|j|��S|j|��S)N�_M_str�_M_lenr�r�)r~rjr�r�)r
r�r.s   rr�z!StdExpStringViewPrinter.to_string#sJ���i�i��!���i�i��!���3�
�&��?�?�#�?�.�.��z�z��z�%�%r
c��yr�rr	s rr?z$StdExpStringViewPrinter.display_hint*r�r
Nr�rr
rr�r�s����&�r
r�c�>�eZdZdZd�Zd�Zd�ZGd�de�Zd�Z	y)	�StdExpPathPrinterz,Print a std::experimental::filesystem::path.c��||_||_|jddd}|jddd}t||z
�|_y)N�_M_cmptsr�r2r3)r~r�r6�
_num_cmpts)r
rar�r&r's     rr�zStdExpPathPrinter.__init__1sP����	�!����	�	�*�%�i�0��<�����:�&�y�1�+�>���f�u�n�-��r
c�X�t|jd�}|dddk(ry|dddk(ryy)N�_M_type����	_Root_dir�root-directory����
_Root_name�	root-name)r2r~r�s  r�
_path_typezStdExpPathPrinter._path_type8s:����	�	�)�$�%���R�S�6�[� �#��S�T�7�l�"��r
c��d|jdz}|jdk(r|j�}|r|�d|�d�}d|zS)Nr��_M_pathnamer� [�]z!experimental::filesystem::path %s)r~r�r��r
�pathrCs   rr�zStdExpPathPrinter.to_string@sE���d�i�i�
�.�.���?�?�a�����!�A��$(�!�,��2�T�9�9r
c��eZdZd�Zd�Zd�Zy)�StdExpPathPrinter._iteratorc�T�||_|dd|_|dd|_d|_y)Nr�r2r3r)�	_pathtyper r"r�)r
�cmpts�pathtypes   rr�z$StdExpPathPrinter._iterator.__init__Is2��%�D�N��y�)�*�5�D�J� ��+�K�8�D�L��D�Kr
c��|Srrr	s rr�z$StdExpPathPrinter._iterator.__iter__Or�r
c�D�|j|jk(rt�|jj�}|j}|jdz|_|jdz|_|d}t|j|�j�}|s|}d|z|fS�Nr:r�z[%s])r r"r�r�r�r�r�r��r
r�rdr�rCs     rrz$StdExpPathPrinter._iterator.__next__Rs����z�z�T�\�\�)�#�#��:�:�)�)�+�D��K�K�E��+�+��/�D�K����a��D�J��
�&�D�!�$�.�.�$�7�B�B�D�A�����Q�J��%�%r
Nr�rr
rr�r�Hs��	�	�	&r
r�c�T�|j|jd|j�S)Nr�)r�r~r�r	s rr�zStdExpPathPrinter.children_s ���~�~�d�i�i�
�3�T�^�^�D�Dr
N�
rrrrr�r�r�rr�r�rr
rr�r�.s&��6�.��:�&�H�&�.Er
r�c�>�eZdZdZd�Zd�Zd�ZGd�de�Zd�Z	y)	�StdPathPrinterzPrint a std::filesystem::path.c���||_||_t|jdd�}|jt	j
d��dz|_|jdk(r||_yd|_y)Nr�r��	uintptr_t�r)r~r�r�r�r*r+r��_impl)r
rar�r\s    rr�zStdPathPrinter.__init__fs_����	�!����d�i�i�
�3�I�>�?���Y�Y�s���{�;�<�q�@��
��:�:��?��D�J��D�Jr
c��t|jjtj|j
dz���}|dddk(ry|dddk(ryy)Nz::_Typer�r�r�r�r�r�)r2r�r�r*r+r�r�s  rr�zStdPathPrinter._path_typepsP����
�
����������0J� K�L�M���R�S�6�[� �#��S�T�7�l�"��r
c��d|jdz}|jdk7r|j�}|r|�d|�d�}d|zS)Nr�r�rr�r�zfilesystem::path %s)r~r�r�r�s   rr�zStdPathPrinter.to_stringxsD���d�i�i�
�.�.���:�:��?����!�A��$(�!�,��$�t�+�+r
c��eZdZd�Zd�Zd�Zy)�StdPathPrinter._iteratorc�t�||_|�r tjd�}tj|dz�}tjd�}|j|j	��}|j�}t
tjd�r$td|jz|j�}nd|jz}|j|j	��|z}|j|j	��|_|j|z|_d|_
yd|_d|_y)Nr6z::_Cmpt�char�alignofrr)r�r*r+r�r�r�rjrS�maxr$r�r r"r�)	r
r\r��int_type�	cmpt_type�	char_typer��sizeof_Impl�begins	         rr�z!StdPathPrinter._iterator.__init__�s���%�D�N���?�?�5�1���O�O�H�y�,@�A�	��O�O�F�3�	��y�y��!1�!1�!3�4���'�'�)���3�8�8�Y�/�"%�a�(�/�/�&9�9�;L�;L�"M�K�"#�h�o�o�"5�K��	�	�)�"3�"3�"5�6��D��"�Z�Z�	�(9�(9�(;�<��
�#�z�z�D�0������!��
�#��r
c��|Srrr	s rr�z!StdPathPrinter._iterator.__iter__�r�r
c�D�|j|jk(rt�|jj�}|j}|jdz|_|jdz|_|d}t|j|�j�}|s|}d|z|fSr�)r r"r�r�r�r�r�r�r�s     rrz!StdPathPrinter._iterator.__next__�s����z�z�T�\�\�)�#�#��:�:�)�)�+�D��K�K�E��+�+��/�D�K����a��D�J��
�&�D��t�~�~�t�4�?�?�A�A�����Q�J��%�%r
Nr�rr
rr�r��s��	$�.	�	&r
r�c�N�|j|j|j�Sr)r�r�r�r	s rr�zStdPathPrinter.children�s���~�~�d�j�j�$�.�.�9�9r
Nr�rr
rr�r�cs&��(���,�&&�H�&&�P:r
r�c�8�eZdZdZd�ZGd�de�Zd�Zd�Zy)�StdPairPrinterz@Print a std::pair object, with 'first' and 'second' as children.c��||_yrr}r�s   rr�zStdPairPrinter.__init__�r�r
c�"�eZdZdZd�Zd�Zd�Zy)�StdPairPrinter._iterz?An iterator for std::pair types. Returns 'first' then 'second'.c� �||_d|_y)Nr�)r~�_whichrs  rr�zStdPairPrinter._iter.__init__�s���D�I�!�D�Kr
c��|Srrr	s rr�zStdPairPrinter._iter.__iter__�r�r
c��|j�t�|j}|dk(rd|_nd|_||j|fSrX)rr�r~)r
�whichs  rrzStdPairPrinter._iter.__next__�sE���{�{�"�#�#��K�K�E����&���"����4�9�9�U�+�,�,r
Nr�rr
rr�r�s��M�	"�	�	-r
r�c�8�|j|j�Sr)r�r~r	s rr�zStdPairPrinter.children�s���z�z�$�)�)�$�$r
c��yrrr	s rr�zStdPairPrinter.to_string�s��r
N)	rrrrr�rr�r�r�rr
rr�r��s ��J��-��-�(%�r
r�c��eZdZdZd�Zd�Zy)�StdCmpCatPrinterz#Print a comparison category object.c�P�||jd�dzd|_|d|_y)N�:r:r�)�rfindr�r~r�s   rr�zStdCmpCatPrinter.__init__�s*��!�(�.�.��"5��"9�":�;����
�O��	r
c��|jdk(r|jdk(rd}nddddd�}|t|j�}d	j|j|�S)
N�strong_orderingr�equal�	unordered�less�
equivalent�greater)rr�rr:zstd::{}::{})r�r~r6r;)r
r4�namess   rr�zStdCmpCatPrinter.to_string�sU���>�>�.�.�4�9�9��>��D�#��L�Y�O�E���T�Y�Y��(�D��#�#�D�N�N�D�9�9r
Nrrr
rrr�s��-�$�:r
rc�p�eZdZdZdZd�Zed��Zed��Z	ed��Z
ed��Zed��Zd	�Z
y)
�StdErrorCodePrinterz0Print a std::error_code or std::error_condition.Nc��||_t|�|_tj�	ddl}dt_yy#t$rdt_YywxYw)NrTF)r~rTr�r�_system_is_posix�posix�ImportError)r
rar�rs    rr�zStdErrorCodePrinter.__init__�sQ����	�2�8�<����/�/�7�
=��7;�#�4�8���
=�7<�#�4�
=�s�:�A�Ac�p�tj|�}|�|jtjk(r|Syr)r*r+r.�TYPE_CODE_ENUM)r4r5s  r�_find_errc_enumz#StdErrorCodePrinter._find_errc_enum�s.���o�o�d�#���?�s�x�x�3�+=�+=�=��J�r
c��dtfD]'}	dj||�}|j|�cSy#t$rY�6wxYw)Nr`z	std::{}{})r>r;rr,)�clsr4�ns�qnames    r�_find_standard_errc_enumz,StdErrorCodePrinter._find_standard_errc_enum�sN���+�,�B�
�#�*�*�2�t�4���*�*�5�1�1�-�� �
��
�s�"4�	A�Ac�L�gd�}|D]�}|dz}dtfD]�}dj|�}tjdj||��d}|��?||j	�j
k(s�]d|z}|j
dj||��}||fccS��y	)
N)�stream�socketzip::resolverz_category()r`zstd::{}experimental::net::v1z{}::{}::__crznet::z{}::{}_errc)NN)r>r;r*�
lookup_symbol�valuer�r)	r!�cat�net_catsrdr�r"�symr4�enums	         r�_match_net_ts_categoryz*StdErrorCodePrinter._match_net_ts_category�s���7���A��}�$�D��/�0��3�:�:�2�>���'�'�
�(<�(<�R��(F�G��J���?��c�i�i�k�1�1�1�&��~��"�2�2�=�3G�3G��A�3N�O�� $�d�|�+�1��r
c��d}d}d}|j|�\}}|�d|||fS|jj�}|jj	d�rd}d}|jj	d�rd}|j
}|jj	d�rd	}|j
d
�}|jj	d�rd}|j
d
�}|�		||j||fS#Y�xYw)z(Return details of a std::error_category.NFz::generic_error_category�genericTz::system_error_category�systemz::future_error_category�future�future_errcz::io_error_category�io�io_errc)r.�dynamic_typer�r)�endswithrr$)r!r*r4r-�is_errnor�r5s       r�_category_infoz"StdErrorCodePrinter._category_infos��������
�/�/��4�
��d����$��h�/�/����%�%�'���7�7���6�7��D��H��7�7���5�6��D��+�+�H��7�7���5�6��D��/�/�
�>�D��7�7���1�2��D��/�/�	�:�D��<�
�
��c�g�g�t�X�.�.��
��s�5C9c�*�|jd�dS)zX
        Strip any nested-name-specifier from name to give an unqualified name.
        r'r�)�split)r4s r�_unqualified_namez%StdErrorCodePrinter._unqualified_name7s��
�z�z�$���#�#r
c���|jd}|jd}|j|�\}}}}|dk(r5ddd�}|||j|j�k(r|jdzSt	|�}|r#|dk7r	t
jt|�}n+|�)|jt	|j|���}|�d|z}n|}|j�d	|�d
|�d�S#Y�#xYw)Nr��_M_catrr1r0)�
error_code�error_conditionz = { }z"%s"z = {z: �})	r~r9r<r�r2�errno�	errorcoder6r�)	r
r)r*r4�alt_namer-r8�default_cats�strvals	         rr�zStdErrorCodePrinter.to_string>s����	�	�*�%���i�i��!��)-�)<�)<�S�)A�&��h��h��A�:�*2�/8�:�L��|�D�$:�$:�4�>�>�$J�K�K��~�~��0�0��U������
�
�����U��4���
��+�+�C��
�
�4�0@�,A�B�F����D�=�D��D�"&�.�.�$��?�?��
��s�C)�)C-)rrrrrr�r]r�classmethodr$r.r9r<r�rr
rrr�s{��:���	=��������������(/��(/�T�$��$�@r
rc��eZdZdZd�Zd�Zy)�StdRegexStatePrinterz/Print a state node in the NFA for a std::regex.c� �||_||_yrrhr�s   rr�zStdRegexStatePrinter.__init__[�����	�!��r
c�$�t|jd�}|r|dd}|jd}dddddddddddddd�
}||}d	j||�}|�5|jd
|z�#dj|||jd
|z�}d|zS)
N�	_M_opcode�r��alt�subexpr�neg�
backref_index)
�repeat�alternative�
subexpr_begin�subexpr_end�line_begin_assertion�line_end_assertion�
word_boundary�subexpr_lookahead�backrefr[�accept�dummy�unknownzopcode={}, next={}�_M_z	{}, {}={}z{%s})r2r~r;)r
�opcode�next_id�variants�vr�s      rr�zStdRegexStatePrinter.to_string_s����T�Y�Y�{�+�,����B�C�[�F��)�)�I�&��#�E�%.�y�,0��%*��.�!�T�!�d�
��
�V��� �'�'���8���=�T�Y�Y�u�q�y�1�=��"�"�1�a����5�1�9�)=�>�A���|�r
Nrrr
rrIrIXs��9�"�r
rIc�>�eZdZdZGd�de�Zd�Zd�Zd�Zd�Z	y)	�StdSpanPrinterzPrint a std::span.c��eZdZd�Zd�Zd�Zy)�StdSpanPrinter._iteratorc�.�d|_||_||_yr)r��_beginrq)r
r�r�s   rr�z!StdSpanPrinter._iterator.__init__ys���D�K��D�K��D�Jr
c��|Srrr	s rr�z!StdSpanPrinter._iterator.__iter__~r�r
c���|j|jk(rt�|j}|jdz|_d|z|j|zj	�fS)Nr:r�)r�rqr�rir�rDs  rrz!StdSpanPrinter._iterator.__next__�sQ���{�{�d�j�j�(�#�#��K�K�E��+�+��/�D�K��E�>�D�K�K�%�$7�#D�#D�#F�F�Fr
Nr�rr
rr�rgxs��	�
	�	Gr
r�c���t|�|_||_tjd�}|j
j
d�|k(r|dd|_y|j
j
d�|_y)Nzstatic_cast<std::size_t>(-1)r:�	_M_extent�_M_extent_value)rTr�r~r*rr0rKrq)r
rar��size_maxs    rr�zStdSpanPrinter.__init__�se��2�8�<�����	��%�%�&D�E���8�8�%�%�a�(�H�4��[�)�*;�<�D�J����3�3�A�6�D�Jr
c�8�d|j|jfzS�Nz%s of length %d�r�rqr	s rr�zStdSpanPrinter.to_string���� �D�N�N�D�J�J�#?�?�?r
c�T�|j|jd|j�Sr�)r�r~rqr	s rr�zStdSpanPrinter.children�s ���~�~�d�i�i��1�4�:�:�>�>r
c��yr=rr	s rr?zStdSpanPrinter.display_hint�r@r
N)
rrrrrr�r�r�r�r?rr
rrereus(���G�H�G�"7�@�?�r
rec�(�eZdZdZd�Zd�Zd�Zd�Zy)�StdInitializerListPrinterzPrint a std::initializer_list.c�4�||_||_|d|_y)Nr�)r�r~rqr�s   rr�z"StdInitializerListPrinter.__init__�s��!�����	���]��
r
c�8�d|j|jfzSrqrrr	s rr�z#StdInitializerListPrinter.to_string�rsr
c�\�tj|jd|j�S)N�_M_array)rer�r~rqr	s rr�z"StdInitializerListPrinter.children�s"���'�'��	�	�*�(=�t�z�z�J�Jr
c��yr=rr	s rr?z&StdInitializerListPrinter.display_hint�r@r
N)rrrrr�r�r�r?rr
rrwrw�s��(�#�
@�K�r
rwc�"�eZdZdZd�Zd�Zd�Zy)�StdAtomicPrinterzPrint a std:atomic.c��t|�|_||_d|_|jjjd�|_|jj�jt|jj�}|jd�s|jd�r(|d}t||�|_|j|_yyy)Nrzstd::shared_ptr<zstd::weak_ptr<r�)rTr�r~�_shptr_printerr0rKr�r)rUr��_shptr_childrenr�)r
rar�r5r\s     rr�zStdAtomicPrinter.__init__�s���2�8�<�����	�"����9�9�>�>�;�;�A�>��������+�+�D�,<�,<�,@�,@�A�C����1�2��~�~�&6�7��9�~��&:�8�T�&J��#� $� 4� 4��
�8�,r
c�@�t|jj�Sr)r{r�r�r	s rr�z StdAtomicPrinter._shptr_children�s���� 3� 3� <� <�=�=r
c��|j�|jj�S|jjtj
k(r|jd}n�|jjtjk(r|jd}n�|jjtjk(r|jdd}nI|jjtjk(r|jdd}n|jd}|j�dt|j��d|�d�S)	Nr��_M_fp�_M_br�_M_baser�z> = { � })r�r�r�r.r*�
TYPE_CODE_INTr~�
TYPE_CODE_FLT�
TYPE_CODE_PTRr/r�r2rs  rr�zStdAtomicPrinter.to_string�s������*��&�&�0�0�2�2���� � �C�$5�$5�5��)�)�F�#�C�
�
�
�
"�
"�c�&7�&7�
7��)�)�G�$�C�
�
�
�
"�
"�c�&7�&7�
7��)�)�F�#�F�+�C�
�
�
�
"�
"�c�&8�&8�
8��)�)�I�&�v�.�C��)�)�F�#�C�$(�N�N�C��8H�8H�4I�3�O�Or
N)rrrrr�r�r�rr
rr~r~�s���5�>�Pr
r~c��eZdZdZd�Zd�Zy)�StdFormatArgsPrinterzPrint a std::basic_format_args.c�2�t|�|_||_yrr�r�s   rr�zStdFormatArgsPrinter.__init__�r�r
c�:�t|jj�}t|d�d}|tjd�k(rd}n|tjd�k(rd}nd}|jd}|dk(rd	|zS|dk(r|jd
}d||fzS)Nrr:r�zstd::format_args�wchar_tzstd::wformat_argszstd::basic_format_args�_M_packed_sizez%s with 1 argument�_M_unpacked_sizez%s with %d arguments)ryr~r0r*r+)r
�targsr�r5r�s     rr�zStdFormatArgsPrinter.to_string�s���%�d�i�i�n�n�5��)�%��(�3�A�6�	������/�/�$�C�
�#�/�/�)�4�
4�%�C�*�C��y�y�)�*���1�9�'�3�/�/��1�9��9�9�/�0�D�%��d��3�3r
Nrrr
rr�r��s��)��4r
r�c�(�eZdZdZd�Zd�Zd�Zd�Zy)�StdChronoDurationPrinterzPrint a std::chrono::duration.c�2�t|�|_||_yrr�r�s   rr�z!StdChronoDurationPrinter.__init__�r�r
c��|jjjd�}|jd�}|jd�}||fS)Nr:r)r~r0rK)r
�periodr��dens    r�_ratiozStdChronoDurationPrinter._ratio�sD�������1�1�!�4���&�&�q�)���&�&�q�)���S�z�r
c���|j�\}}|dk(r|dk(ry|dk(ry|dk(ry|dk(r)y|dk(r#|d	k(ry
|dk(ry|d
k(rydj|�Sdj||�S)Nr:r�i��msi@B�usiʚ;r"�<�mini�hi�Q�dz[{}]sz[{}/{}]s)r�r;)r
r�r�s   r�_suffixz StdChronoDurationPrinter._suffix�s����;�;�=���S��!�8��a�x���d�{���g�~���j� ��
�A�X��b�y���d�{���e�|���>�>�#�&�&�� � ��c�*�*r
c���|jd}|jj�jtj
k(rd|z}dj
||j��S)N�__rz%gz"std::chrono::duration = {{ {}{} }})r~r0r(r.r*r�r;r�)r
�rs  rr�z"StdChronoDurationPrinter.to_stringsS���I�I�e����6�6� � �"�'�'�3�+<�+<�<��q��A�3�:�:�1�d�l�l�n�M�Mr
N)rrrrr�r�r�r�rr
rr�r��s��(���+�*Nr
r�c�$�eZdZdZd�Zd�Zdd�Zy)�StdChronoTimePointPrinterz Print a std::chrono::time_point.c�2�t|�|_||_yrr�r�s   rr�z"StdChronoTimePointPrinter.__init__r�r
c���|jjjd�}t|j�}|dk(s|dk(ry|dk(ry|dk(ry|d	k(ry
|dk(ry|d
k(rydj|�dfS)Nrzstd::chrono::_V2::system_clockzstd::chrono::system_clock)zstd::chrono::sys_timerzstd::chrono::utc_clock)zstd::chrono::utc_timeNzstd::chrono::gps_clock)zstd::chrono::gps_timeNzstd::chrono::tai_clock)zstd::chrono::tai_timeNzstd::filesystem::__file_clock)zstd::chrono::file_timelumzstd::chrono::local_t)zstd::chrono::local_timerz
{} time_point)r~r0rKrTr4r;)r
�clockr4s   r�_clockz StdChronoTimePointPrinter._clocks����	�	���0�0��3��(����4���3�3��6�6�/��+�+�2��+�+�2��+�+�2��2�2�9��)�)�1��&�&�t�,�d�3�3r
c��|j�\}}|jd}|d}t|jj|�}|j�}d}|�T|j
�\}	}
||	z|
z|z}	tjj|t�}dj|�}d|||fz}
|r|
S|�d|
�d�S#Y�xYw)N�__dr�r`z [{:%Y-%m-%d %H:%M:%S}]z%d%s%sz = { r�)r�r~r�r0r4r�r�r�
fromtimestamp�
_utc_timezoner;)r
�abbrevr��offsetr�r��printer�suffix�timer�r��secsrr�s              rr�z#StdChronoTimePointPrinter.to_string1s������
�
��v��I�I�e���
�e�H��*�1�6�6�;�;��:�����"�������~�~�'�H�C����G�c�M�V�+�D�
��&�&�4�4�T�=�I��0�7�7��;��
��6�4�(�(����H� %�q�)�)��
��s�;5C�CN)F)rrrrr�r�r�rr
rr�r�s��*��4�&*r
r�c��eZdZdZd�Zd�Zy)�StdChronoZonedTimePrinterz Print a std::chrono::zoned_time.c�2�t|�|_||_yrr�r�s   rr�z"StdChronoZonedTimePrinter.__init__Ir�r
c���|jdj�d}|jd}t|jj|�}|jd�}dj
||�S)N�_M_zone�_M_name�_M_tpTz%std::chrono::zoned_time = {{ {} {} }})r~r�r�r0r4r�r;)r
�zoner�r�s    rr�z#StdChronoZonedTimePrinter.to_stringMsc���y�y��#�/�/�1�)�<���y�y��!��+�D�I�I�N�N�D�A��� � ��&��6�=�=�d�D�I�Ir
Nrrr
rr�r�Fs��*��Jr
r�)
N�January�February�March�April�May�June�July�August�	September�October�November�December)�Sunday�Monday�Tuesday�	Wednesday�Thursday�Friday�Saturdayr�c��eZdZdZd�Zd�Zy)�StdChronoCalendarPrinterzDPrint a std::chrono::day, std::chrono::month, std::chrono::year etc.c�2�t|�|_||_yrr�r�s   rr�z!StdChronoCalendarPrinter.__init___r�r
c�4�|j}|j}d|vr
|dk7r|d}|jd�r|d}|dk(rdjt	|d��S|d	k(r%d
ks|tt�k\rd|zSt|S|dk(rdj�S|d
k(r9|d}|dks|tt�k\rd|zSdjt|�S|dk(r!dj|dt	|d��S|dk(rdj|d�S|dk(rdj|d�S|dk(rdj�S|dk(rdj|d�S|dk(rdj|d�S|dk(rdj�S|dk(rd j|d�S|dk(rdj|d!�S|d"k(rd j|d�S|d#k(rd j|d�S|jd$�r�d%}|d&dk7r-d'jt	|d(d)�t	|d&��}t	|d*d+�}t	|dd+�}t	|d,d+�}|d-r|}d.j||||�Sy)/N�monthz std::chrono::year_month_day_last�_M_mzstd::chrono::year�_M_yzstd::chrono::dayz{}�_M_dzstd::chrono::monthr:z%d is not a valid monthz{}yzstd::chrono::weekday�_M_wdrz%d is not a valid weekdayzstd::chrono::weekday_indexedz{}[{}]r�zstd::chrono::weekday_lastz{}[last]zstd::chrono::month_dayz{}/{}zstd::chrono::month_day_lastz{}/lastzstd::chrono::month_weekday�_M_wdizstd::chrono::month_weekday_last�_M_wdlzstd::chrono::year_monthzstd::chrono::year_month_dayz{}/{}/{}�_M_mdlzstd::chrono::year_month_weekdayz$std::chrono::year_month_weekday_lastzstd::chrono::hh_mm_ssr`�fractional_widthz.{:0{}d}�_M_ss�_M_rr<r��_M_s�	_M_is_negz{:02}:{:02}:{:02}{})r~r�rUr;r6r.�months�weekdays)	r
r�r5r��y�wd�fractr�r�s	         rr�z"StdChronoCalendarPrinter.to_stringcs����i�i���n�n���c�>�c�%G�G��F��A��>�>�-�.��F��A��$�$��;�;�s�3�v�;�/�0�0��&�&��1�u��S��[�(�0�1�4�4��!�9���%�%��<�<��?�"��(�(��W��B��A�v��s�8�}�,�2�R�7�7��;�;�x��|�,�,��0�0��?�?�3�w�<��S��_�1E�F�F��-�-��$�$�S��\�2�2��*�*��>�>�!�S��[�1�1��/�/��#�#�A�&�&��.�.��>�>�!�S��]�3�3��3�3��>�>�!�S��]�3�3��+�+��>�>�!�Q�'�'��/�/��$�$�Q��3�v�;�7�7��4�4��>�>�!�S��]�3�3��3�3��$�$�Q��3�x�=�9�9��8�8��$�$�Q��3�x�=�9�9��>�>�1�2��E��%�&�!�+�"�)�)�#�c�'�l�6�.B�*C�*-�c�2D�.E�*F�H���C��K��&�'�A��C��K��&�'�A��C��K��&�'�A��;���B��(�/�/��1�a��?�?�3r
Nrrr
rr�r�\s��N��5@r
r�c��eZdZdZd�Zd�Zy)�StdChronoTimeZonePrinterz4Print a chrono::time_zone or chrono::time_zone_link.c�2�t|�|_||_yrr�r�s   rr�z!StdChronoTimeZonePrinter.__init__�r�r
c��|j�d|jd��}|jjd�r|d|jdzz
}|S)Nr�r��_linkz -> %s�	_M_target)r�r~r7)r
r2s  rr�z"StdChronoTimeZonePrinter.to_string�sH���>�>�4�9�9�Y�+?�@���>�>�"�"�7�+��8�t�y�y��5�6�6�C��
r
Nrrr
rr�r��s��>��r
r�c��eZdZdZd�Zd�Zy)�StdChronoLeapSecondPrinterzPrint a chrono::leap_second.c�2�t|�|_||_yrr�r�s   rr�z#StdChronoLeapSecondPrinter.__init__�r�r
c�l�|jdd}d|dk}d|jt|�|fzS)Nr�r�z+-rz
%s %d (%c))r~r��abs)r
�daterQs   rr�z$StdChronoLeapSecondPrinter.to_string�s<���y�y�� ��'���4�!�8�n���t�~�~�s�4�y�#�>�>�>r
Nrrr
rr�r��s��&��?r
r�c��eZdZdZd�Zd�Zy)�StdChronoTzdbPrinterzPrint a chrono::tzdb.c�2�t|�|_||_yrr�r�s   rr�zStdChronoTzdbPrinter.__init__�r�r
c�>�|j�d|jd��S)N� �version)r�r~r	s rr�zStdChronoTzdbPrinter.to_string�s���.�.�$�)�)�I�*>�?�?r
Nrrr
rr�r��s����@r
r�c��eZdZdZd�Zd�Zy)�StdChronoTimeZoneRulePrinterzPrint a chrono::time_zone rule.c�2�t|�|_||_yrr�r�s   rr�z%StdChronoTimeZoneRulePrinter.__init__�r�r
c���|jd}|d}t|d}dddddddd�}|d}d	j||j|d
��}|dk(rdj||�}nNt|d
}|dk(rdj||�}n*|dk(rd}	nd}	|d}dj|	d||	d||�}dj|jd|jd|jd|�S)N�on�kindr��st�nd�rd)r:rr������day_of_monthz{}{}�thrz{} {}�day_of_weekr:z
last {} in {}r)r�z<=)r�z>=z{} {} {} {} {}z.time_zone rule {} from {} to {} starting on {}r4�from�to)r~r�r;�getr�)
r
r�r�r��suffixes�day�ordinal_dayr&�weekday�	directions
          rr�z&StdChronoTimeZoneRulePrinter.to_string�s��
�Y�Y�t�_���&�z���r�'�{�#������$�D�d�<���� ���m�m�C����c�4�)@�A���1�9��N�N�5�+�6�E��r�-�0�1�G��q�y�'�.�.�w��>���1�9� .�I� /�I���(��(�/�/�	�!��g�09�!��e�0;�=��@�F�F��I�I�f��t�y�y��0�$�)�)�D�/�5�J�	Jr
Nrrr
rr�r��s��)��Jr
r�c��eZdZdZd�Zd�Zy)�StdLocalePrinterzPrint a std::locale.c� �||_||_yrrhr�s   rr�zStdLocalePrinter.__init__�rKr
c���|jdd}d}|ddk(rd}�n�tj|jdz�}tj|jdz�}|dj	�}|dj	�}dj||�}||i}d	}	|	|krY||	dk7rQ||	j	�}||	j	�}d
j|||�}|||<|	d	z}	|	|kr	||	dk7r�Qt
|j��}
t|
�d	k(r|}n�t|
�dk(r�|
\}}t|j��}
d�|
j|�d	k(r|}|�n|
j|�d	k(r|}|���4t�fd�|j�D��}d
j|��}dj||�S)Nr��_M_namesr`r�*z::_S_categoriesz::_S_categories_sizez{}={}r:z{};{}={}rc3�4�K�|]\}}|�k(s�|���y�wrr)�.0rdrw�others   �r�	<genexpr>z-StdLocalePrinter.to_string.<locals>.<genexpr>	s�����M�->�T�Q��!�u�*�q�->�s�
�z
 with "{}={}"zstd::locale = "{}"{})
r~r*rr�r�r;r��valuesr.r�rdr�items)r
r�modr4�cats�ncatrwr*�	cat_namesrI�
uniq_names�n1�n2�	name_listrs              @rr�zStdLocalePrinter.to_string�s�����	�	�)�$�Z�0������8�q�=��D��%�%�d�n�n�7H�&H�I�D��%�%�d�n�n�7M�&M�N�D��a����!�A��q�'�.�.�"�C��>�>�#�q�)�D��a��I��A��d�(�u�Q�x�1�}��!�H�O�O�%���1�g�n�n�&��!�(�(��s�A�6��!"�	�#����E���d�(�u�Q�x�1�}��Y�-�-�/�0�J��:��!�#����Z��A�%�$���B� ��!1�!1�!3�4�	����?�?�2�&�!�+��D��E��_�_�R�(�A�-��D��E��$��M�Y�_�_�->�M�M�C�)�0�0��e�<�C�%�,�,�T�3�7�7r
Nrrr
rrr�s���"�#8r
rc��eZdZdZd�Zd�Zy)�StdIntegralConstantPrinterz*Print a std::true_type or std::false_type.c� �||_||_yrrhr�s   rr�z#StdIntegralConstantPrinter.__init__	rKr
c�(�|jjjd�}|jjjd�}|jtj
k(r|ryyt
|j�}dj|||�S)Nrr:zstd::true_typezstd::false_typez
{}<{}, {}>)	r~r0rKr.r*r/rTr�r;)r
rHr)ras    rr�z$StdIntegralConstantPrinter.to_string	sp���Y�Y�^�^�5�5�a�8�
��	�	���0�0��3���?�?�c�0�0�0��'�(�,�T�^�^�<���"�"�8�Z��?�?r
Nrrr
rr%r%	s��4�"�	@r
r%c��eZdZdZd�Zd�Zy)�StdTextEncodingPrinterzPrint a std::text_encoding.c� �||_||_yrrhr�s   rr�zStdTextEncodingPrinter.__init__$	rKr
c��|jdj�}|ddk(r|jdS|ddk(ry|dS)N�_M_rep�_M_idr:r�rr^)r~r�)r
�reps  rr�z StdTextEncodingPrinter.to_string(	sM���i�i��!�-�-�/���w�<�1���9�9�Y�'�'��w�<�1����9�~�r
Nrrr
rr)r)!	s��%�"�r
r)c�$��eZdZ�fd�Zd�Z�xZS)�	RxPrinterc�T��tt|��||_||_d|_y�NT)r�r0r�r4�	_function�enabled)r
r4r�r�s   �rr�zRxPrinter.__init__3	s%���
�i��'�)���	�!�����r
c��|jsy|jjtjk(r*ttjd�r|j�}|j|j|�S)N�referenced_value)
r4r0r.r*r�rj�Valuer6r3r4)r
r)s  r�invokezRxPrinter.invoke9	sT���|�|���:�:�?�?�c�/�/�/��s�y�y�"4�5��.�.�0���~�~�d�i�i��/�/r
)rrrr�r8r�r�s@rr0r02	s
����0r
r0c�F��eZdZ�fd�Zd�Zd�Zd�Zed��Zd�Z	�xZ
S)�Printerc���tt|��||_g|_i|_d|_tjd�|_	y)NTz^([a-zA-Z0-9_:]+)(<.*>)?$)
r�r:r�r4�_subprinters�_lookupr4rZ�compile�_compiled_rx)r
r4r�s  �rr�zPrinter.__init__H	s?���
�g�t�%�'���	�����������J�J�'B�C��r
c���|jj|�std|z��t||�}|jj|�||j|<y)Nz0libstdc++ programming error: "%s" does not match)r?r[r1r0r<rur=)r
r4r�r�s    r�addzPrinter.addP	s]��� � �&�&�t�,��B�T�I�K�
K��D�(�+����� � ��)�$����T�r
c��|j||z|�d|vr4tjddtz|�}|j||z|�yy)N�__cxx11z^(std|__gnu_cxx)::z\g<0>%s)rArZrgr>)r
�baser4r��vbases     r�add_versionzPrinter.add_version[	sQ��������h�'��D� ��F�F�/��/�20�15�7�E��H�H�U�T�\�8�,�!r
c�V�|j|||�|j|dz||�y)Nz__cxx1998::)rF)r
rDr4r�s    r�
add_containerzPrinter.add_containerc	s+������t�X�.�����
�-�t�X�>r
c��|jtjk(r|j�}|j	�j�}|jSr)r.r*r�r�r�r(r))r0s r�get_basic_typezPrinter.get_basic_typeg	sC���9�9��)�)�)��;�;�=�D����!�0�0�2���x�x�r
c��|j|j�}|sy|jj|�}|sy|j	d�}|jj
tjk(r*ttjd�r|j�}||jvr|j|j|�Sy)Nr:r6)
rJr0r?r[r�r.r*r�rjr7r6r=r8)r
r�rar[�basenames     r�__call__zPrinter.__call__r	s����&�&�s�x�x�0�����!�!�'�'��1�����;�;�q�>���8�8�=�=�C�-�-�-��s�y�y�"4�5��*�*�,���t�|�|�#��<�<��)�0�0��5�5�r
)rrrr�rArFrHr]rJrMr�r�s@rr:r:G	s1���D�%�-�?�����r
r:c�2�eZdZdZd�ZGd�de�Zd�Zy)�TemplateTypePrinteral
    A type printer for class templates with default template arguments.

    Recognizes specializations of class templates and prints them without
    any template arguments that use a default template argument.
    Type printers are recursively applied to the template arguments.

    e.g. replace 'std::vector<T, std::allocator<T> >' with 'std::vector<T>'.
    c�.�||_||_d|_yr2)r4�_defargsr4�r
r4�defargss   rr�zTemplateTypePrinter.__init__�	s����	���
���r
c�"�eZdZdZd�Zd�Zd�Zy)�TemplateTypePrinter._recognizerz-The recognizer class for TemplateTypePrinter.c� �||_||_yr)r4rQrRs   rr�z(TemplateTypePrinter._recognizer.__init__�	s���D�I�#�D�Mr
c��|j�y|jj|j�syt|�}g}d}t	t|��D]v}||}|jj|�}|�.|j|�}	|tj|�k7ry	d}�S|ry|j|j|���x|jd|jjd�}t|�}|dzdj!|�zdzS#tj$r|j|k7rYyY��wxYw)a
            If type_obj is a specialization of self.name that uses all the
            default template arguments for the class template, then return
            a string representation of the type without default arguments.
            Otherwise, return None.
            NFTrr�r9�>)r)rUr4ry�ranger.rQr
r;r*r+r=ru�_recognize_subtyper�rsr<)	r
rvrx�displayed_args�require_defaultedrwr��defargr]s	         r�	recognizez)TemplateTypePrinter._recognizer.recognize�	s@���|�|�#���<�<�*�*�4�9�9�5��1�(�;�M��N� %���3�}�-�.��$�Q�'�����*�*�1�-���%�*�V�]�]�M�:�F�(��3�?�?�6�#:�:�#'�;�)-�%�&��#�)�)�$�*A�*A�$�*G�H�1/�6%�L�L��8�<�<�+<�+<�S�+A�B�M�3�M�B�M� �3�&����>�)B�B�S�H�H��#�9�9�(��8�8�v�-�#'�.�(�s�D�"E�Ec�:�|jtjk(r"|j|j	��dzS|jtj
k(rg|j|j	��}t
|j��jd�r|dzSd||j�ddzfzS|jtjk(r"|j|j	��dzSttd�r?|jtjk(r"|j|j	��dzStjjtjj�|�}|r|St
|�S)zxConvert a gdb.Type to a string by applying recognizers,
            or if that fails then simply converting to a string.rz[]z%s[%d]r:�&�TYPE_CODE_RVALUE_REFz&&)r.r*r�rZr�r�r2r(r7rYr�rjrarrrsrt)r
rvros   rrZz2TemplateTypePrinter._recognizer._recognize_subtype�	sD���}�}�� 1� 1�1��.�.�x���/@�A�C�G�G��}�}�� 3� 3�3��2�2�8�?�?�3D�E���x�.�.�0�1�:�:�4�@�#�d�?�*��8�X�^�^�-=�a�-@�1�-D�"E�E�E��}�}�� 1� 1�1��.�.�x���/@�A�C�G�G��s�2�3��=�=�C�$<�$<�<��2�2�8�?�?�3D�E��L�L��y�y�7�7��	�	�.�.�0�(�<�H�����x�=� r
N)rrrrr�r^rZrr
r�_recognizerrU�	s��;�	$�
/	I�b	!r
rbc�N�|j|j|j�S�z1Return a recognizer object for this type printer.)rbr4rQr	s r�instantiatezTemplateTypePrinter.instantiate�	s������	�	�4�=�=�9�9r
N�rrrrr��objectrbrerr
rrOrO�	s ����
N!�f�N!�`:r
rOc����td|z|�}tjj||�td|z|�}tjj||�d|vr�dtz�t�fd�|j
�D��}t�|z|�}tjj||�td|z|�}tjj||�yy)a�
    Add a type printer for a class template with default template arguments.

    Args:
        name (str): The template-name of the class template.
        defargs (dict int:string) The default template arguments.

    Types in defargs can refer to the Nth template-argument using {N}
    (with zero-based indices).

    e.g. 'unordered_map' has these defargs:
    { 2: 'std::hash<{0}>',
      3: 'std::equal_to<{0}>',
      4: 'std::allocator<std::pair<const {0}, {1}> >' }
    rGzstd::__debug::rCc3�L�K�|]\}}||jd��f���y�w)rGN)r?)rrwr�r"s   �rrz0add_one_template_type_printer.<locals>.<genexpr>
s-�����6�%4�6�A�q��1�9�9�W�b�1�2�%4�s�!$N)rOr*rr�register_type_printerr>�dictr)�objr4rSr�r"s    @r�add_one_template_type_printerrm�	s���� "�'�D�.�'�:�G��I�I�#�#�C��1�"�"2�T�"9�7�C�G��I�I�#�#�C��1����
�+�
+���6�%,�]�]�_�6�6��%�b�4�i��9���	�	�'�'��W�5�&�&6��&=�w�G���	�	�'�'��W�5�r
c�4�eZdZdZdd�ZGd�de�Zd�Zy)�FilteringTypePrintera�
    A type printer that uses typedef names for common template specializations.

    Args:
        template (str): The class template to recognize.
        name (str): The typedef-name that will be used instead.
        targ1 (str, optional): The first template argument. Defaults to None.

    Checks if a specialization of the class template 'template' is the same type
    as the typedef 'name', and prints it as 'name' instead.

    e.g. if an instantiation of std::basic_istream<C, T> is the same type as
    std::istream then print it as std::istream.

    If targ1 is provided (not None), match only template specializations with
    this type as the first template argument, e.g. if template='basic_string'
    and targ1='char' then only match 'basic_string<char,...>' and not
    'basic_string<wchar_t,...>'. This rejects non-matching specializations
    more quickly, without needing to do GDB type lookups.
    Nc�<�||_||_||_d|_yr2)�	_templater4�_targ1r4�r
�templater4�targ1s    rr�zFilteringTypePrinter.__init__-
s��!�����	������r
c��eZdZdZd�Zd�Zy)� FilteringTypePrinter._recognizerz.The recognizer class for FilteringTypePrinter.c�<�||_||_||_d|_yr)rqr4rr�	_type_objrss    rr�z)FilteringTypePrinter._recognizer.__init__6
s��%�D�N��D�I��D�K�!�D�Nr
c�j�|j�y|j��|j�Bdj|j|j�}|jj|�s'y|jj|j�sy	t
j|j�j�|_|j�ytjj|j�}tjj|�}||k(rt|j�S|jjd�ddk(r\|jjjdd�}|jjdd�}||k(rt|j�Sy#Y��xYw)z�
            If type_obj starts with self._template and is the same type as
            self.name then return self.name, otherwise None.
            Nz{}<{}r'r��basic_string�	__cxx11::r`)r)ryrrr;rqrUr*r+r4r(rrrJrsr;r?)r
rvr��t1�t2�s1�s2s       rr^z*FilteringTypePrinter._recognizer.recognize<
sV��
�|�|�#���~�~�%��;�;�*����t�~�~�t�{�{�C�A�#�<�<�2�2�1�5�#�!���0�0����@���%(�_�_��	�	�&#�#1�>�#3��N�
�~�~�%�����)�)�$�.�.�9�B����)�)�(�3�B��R�x�.�t�y�y�9�9��~�~�#�#�D�)�"�-��?��^�^�'�'�/�/��R�@���\�\�)�)�+�r�:����8�2�4�9�9�=�=���'��s�2F.�.F2N)rrrrr�r^rr
rrbrw3
s��<�	"�(	r
rbc�d�|j|j|j|j�Srd)rbrqr4rrr	s rrez FilteringTypePrinter.instantiatef
s#���������	�	�4�;�;�G�Gr
rrfrr
rroro
s���*�1�f�1�fHr
roc���td|zd|z|�}tjj||�d|vr=dtz}t||z||z|�}tjj||�yy)NrGrC)ror*rrrjr>)rlrtr4rur�r"s      r�add_one_type_printerr�k
so��"�7�X�#5�w��~�u�M�G��I�I�#�#�C��1��� �
�+�
+��&�r�H�}�b�4�i��G���	�	�'�'��W�5�!r
c	��tsydD]a}t|d|ddz|d�t|d|ddz|d�t|dd|dzdz|d�t|d|dd	z|d��cd
D]^}dD]}t|d|z|d|z|d��d
D]6}t|d|z|d|z|d�t|d|z|d|z|d��8�`dD]`}d
D]}t||dz||dzdz|d��!dD]5}t||dz||zdz�dD]}t|||z||z|z���7�bt|dd�dD]}t|dd|z��t|dd�t|dd�t|dd�t|dd �t|d!d"�t|d!d#�t|d$d%�t|d$d&�t|d'd(�d)}dD]}t||dz||dzd	z|d��!t|d*dd+i�t|d,dd-i�t|d.dd-i�t|d/dd-i�t|d0dd-i�t|d1dd-i�t|d2d3d4d5��t|d6d3d4d5��t|d7d3d-d8��t|d9d3d-d8��t|d:d;d<d4d=��t|d>d;d<d4d=��t|d?d;d<d-d@��t|dAd;d<d-d@��y)BN)�r`r��r�r�)�u8�char8_t)�u16�char16_t)�u32�char32_tr{rr�r:z__cxx11::basic_stringr|�basic_string_view�string_view)r�r�)	�iosr�istream�ostream�iostream�filebuf�ifstream�ofstream�fstream�basic_)�	stringbuf�
istringstream�
ostringstream�stringstreamz__cxx11::basic_)r`r|�basic_regex�regex)rdr��wc�ws�
match_resultsr[)�	sub_match�regex_iterator�regex_token_iterator�fpos�	streampos)
�nanoseconds�microseconds�milliseconds�seconds�minutes�hours�days�weeks�yearsr�zchrono::durationzchrono::�linear_congruential_engine�minstd_rand0�minstd_rand�mersenne_twister_engine�mt19937�
mt19937_64�subtract_with_carry_engine�
ranlux24_base�
ranlux48_base�discard_block_engine�ranlux24�ranlux48�shuffle_order_engine�knuth_bzexperimental::fundamentals_v1::�
unique_ptrzstd::default_delete<{0}>�dequezstd::allocator<{0}>rr�z
__cxx11::list�vectorr�zstd::less<{0}>z)std::allocator<std::pair<{0} const, {1}>>)rr��multimapr�)r:r�multiset�
unordered_mapzstd::hash<{0}>zstd::equal_to<{0}>)rr���unordered_multimap�
unordered_set)r:rr��unordered_multiset)rqr�rm)rl�chr\�abi�durr"s      r�register_type_printersr�t
s�����$��
	�S�.�"�Q�%�(�2B�B�q�E�J��S�"9���U�X�-�r�!�u�	6�	�S�"9�(�2�a�5�0�8�;�R��U�	D��S�"5���U�]�2�B�q�E�	;�$�/��@�A� ��h��l�B�q�E�A�I�r�!�u�E�@�"�A� ��h��l�B�q�E�A�I�r�!�u�E� ��&7�!�&;�R��U�Q�Y��1��N�	"�	/�!��2�B� ��c�M�&9�!$�r�!�u��w�!6��1��
?�3�)�B� ��S�?�*�C�"�H�w�,>�
@�L��$�S�#��'�3��8�a�<�@�M�)�	!���f�k�2�H���S�"4�j�3�6F�G�H�
��:�N�K���:�M�J���7��C���7��F���:�O�L���:�O�L���4�j�A���4�j�A���4�i�@�
+�B�$��
	�S�"�':�":��"�Q�%�Z�-�7��A��	@�$�"�#�|�#$�&@�"A�C�!�#�w��4I�0J�K�!��^�a�!6�7�9�!�#�v��3H�/I�J�!��_�q�"7�8�:�!�#�x�!�5J�1K�L�!�#�u�&6�&Q�#S�T�"�#�z�&6�&Q�#S�T�"�#�u�&6�;P�"Q�S�!�#�z�&6�;P�"Q�S�!�#��&6�&:�&Q�#S�T�"�#�';�&6�&:�&Q�#S�T�"�#��&6�&:�&;�#=�>�"�#�';�&6�&:�&;�#=�>r
c��tr%tjj|t�n'|�t}|j
j
t�t|�y)z4Register libstdc++ pretty-printers with objfile Obj.N)�_use_gdb_ppr*�printing�register_pretty_printer�libstdcxx_printer�pretty_printersrur�)rls r�register_libstdcxx_printersr��
sC������,�,�S�2C�D��;��C����"�"�#4�5��3�r
c�f�td�atjddt�tjddt�tj	ddt
�tj	ddt�tj	ddt�tj	ddt�tj	ddt�tj	dd	t�tj	dd
t�tjddt�tjddt�tjdd
t�tjddt�tj	ddt�tjddt�tjddt�tj	ddt�tjddt�t!t"j$d�r6tjddt&�tjddt&�tj)dt
�tj)dt�tj)dt�tj)dt�tj)dt�tj)dt�tj)dt�tj)dt�tjddt*�tjdd t*�tj	dd!t,�tj	dd"t.�tj	dd#t,�tj	dd$t.�tj	dd%t0�tjd&dt*�tjd&d t*�tjd&d!t,�tjd&d"t.�tjd&d#t,�tjd&d$t.�tjdd't2�tjdd(t4�tjdd)t6�tjdd)t6�d*D]>}tjdd+|zt8�tjdd+|zt8��@tjd,d-t:�tjd,d.t<�tjdd/t>�tjd0d1t@�tj)d2t,�tj)d3t.�tj)d4t,�tj)d5t.�tj)d6t0�tjd7d8tB�tjd7d9tD�tjd7d:tF�tjd;d<tH�tjd=d<tH�tjd>d<tJ�tjd?d<tJ�tjdd8tB�tjdd9tD�tjdd:tF�tjdd@tL�tjddAtN�tjddBtP�tjddCtP�tjddDtP�tjddEtR�tjddFtT�dGD]}tjd,|tV��tjd,dHtX�tjd,dItX�tjd,dJtZ�tjd,dKt\�tjd,dLt^�tjddMt`�tjdNdOtb�	tj	ddPtd�tj	ddQtd�tjddRtf�tjddStf�tj	ddTth�tj	ddUth�tjdNdVtj�tj	ddWtl�tj	ddXtl�tj	ddYtn�tjdNdZtp�tj	dd[tr�tj	dd\tr�tj)d]tt�y)^Nzlibstdc++-v6rGr{rl�bitsetr�r�r�r�r��pair�priority_queue�queuer�r��stackr�r��localer6r?r@zstd::__debug::bitsetzstd::__debug::dequezstd::__debug::listzstd::__debug::mapzstd::__debug::multimapzstd::__debug::multisetzstd::__debug::setzstd::__debug::vector�
shared_ptr�weak_ptrr�r�r�r�rz
std::tr1::�initializer_list�atomic�basic_stringbuf)r�r�r�r�z
std::chrono::�duration�
time_point�integral_constantzstd::__detail::�_Statezstd::__debug::unordered_mapzstd::__debug::unordered_setz std::__debug::unordered_multimapz std::__debug::unordered_multisetzstd::__debug::forward_listz$std::experimental::fundamentals_v1::�any�optionalr�z#std::experimental::filesystem::v1::r�z,std::experimental::filesystem::v1::__cxx11::zstd::filesystem::zstd::filesystem::__cxx11::�variant�_Node_handle�partial_ordering�
weak_orderingr�span�basic_format_args)rr��yearr�weekday_indexed�weekday_last�	month_day�month_day_last�
month_weekday�month_weekday_last�
year_month�year_month_day�year_month_day_last�year_month_weekday�year_month_weekday_last�hh_mm_ss�	time_zone�time_zone_link�
zoned_time�leap_second�tzdb�
text_encodingz__gnu_cxx::�slist�_List_iterator�_List_const_iterator�_Rb_tree_iterator�_Rb_tree_const_iterator�_Deque_iterator�_Deque_const_iterator�__normal_iterator�
_Bit_iterator�_Bit_const_iterator�_Bit_reference�_Slist_iterator�_Fwd_list_iterator�_Fwd_list_const_iteratorz__gnu_debug::_Safe_iterator);r:r�rFr�rHr�r�r�r�r�r�rbrRr�rrrjr*r7rrAr�rQr7r_rwr~rrr�r�r%rIr�r�r�r�r�r�r�rrer�r�r�r�r�r�r)rr�r�r�rBrHrMrrr�)�sstreamrds  r�build_libstdcxx_dictionaryr�
s!�� ��/��
�!�!�'�>�;K�L��!�!��.�*:�<��#�#�G�X�7G�H��#�#�G�W�o�F��#�#�G�V�^�D��#�#�$4�f�n�M��#�#�G�U�M�B��#�#�G�Z��G��#�#�G�Z��G��!�!�'�6�>�B��!�!�'�+;�"8�:��!�!�'�7�4J�K��!�!�'�7�O�D��#�#�G�U�M�B��!�!�'�7�4J�K��!�!�'�<�9M�N��#�#�G�X�7G�H��!�!�'�8�5E�F��s�y�y�.�)��%�%�g�|�&9�	;��%�%�g�/@�&9�	;����0�2B�C����/��A����.��?����-�}�=����2�M�B����2�M�B����-�}�=����0�2B�C��!�!�'�<�9M�N��!�!�'�:�7K�L��#�#�G�_�$:�<��#�#�G�_�$:�<��#�#�G�-A�$:�<��#�#�G�-A�$:�<��#�#�G�^�$9�;��!�!��l�$8�:��!�!��j�"6�8��!�!�,��"8�:��!�!�,��"8�:��!�!�,�0D�"8�:��!�!�,�0D�"8�:��!�!�'�+=�";�=��!�!�'�8�5E�F��!�!��"�$7�9��!�!��+�-@�B�E���%�%��X��'�)?�	A��%�%��h��0�2H�	J�F��!�!�/�:�":�<��!�!�/�<�";�=��!�!�'�+>�"<�>��!�!�"3�X�"6�8����7�0�2����7�0�2����<�0�2����<�0�2����6�/�1��!�!�"H�"'�)9�;��!�!�"H�",�.C�E��!�!�"H�"5�7N�P��!�!�"G�"(�*;�=��!�!�"P�"(�*;�=��!�!�"5�"(�.�:��!�!�">�"(�.�:��!�!�'�"'�)9�;��!�!�'�",�.C�E��!�!�'�"5�7N�P��!�!�'�"+�->�@��!�!�'�"0�2F�H��!�!��#�%5�7��!�!�'�?�<L�M��!�!�'�+<�>N�O��!�!�'�6�>�B��!�!�'�+>�"6�8�K��	�%�%�o�q�&>�	@�	K��!�!�/�;�":�<��!�!�/�3C�":�<��!�!�/�<�";�=��!�!�/�=�"<�>��!�!���!5�7��!�!�'�?�"8�:��!�!�-��/�J��	�'�'��1A�(>�	@��'�'��1G�(>�	@��%�%�g�/B�&>�	@��%�%�g�/H�&>�	@��'�'��1B�(?�	A��'�'��1H�(?�	A��%�%�m�5H�&>�	@��'�'���(=�	?��'�'��1F�(=�	?��'�'��1A�(>�	@��%�%�m�5F�&=�	?��'�'��1E�(A�	C��'�'��1K�(A�	C�
	���;�5�	7r
r)vr*rNrZrerBrrfrgrr�r�ziprr6r��timezone�utcr��tzinforr��gdb.printingrrq�	gdb.typesrjrrr%�printer_baser7r>rErPrLr^rTrjrsryr{r�r�r�r�r�r�r�r�r�r�rrrrrBrHrMrRrbrlr~r�r�r�r�r�r�r�r�r�rrrrr*r7rQr_rjr�r�r�r�r�r�r�r�r�rrrIrerwr~r�r�r�r�r�r�r�r�r�r�r�rr%r)r0r:r�rOrmror�r�r�rrr
r�<module>rs���$��	�
���$���A�����H��D��D��D��%�%�)�)�M�#�#�%�
)�h�o�o�
)��E�M�����
��	���s�y�y�-�(�!��
�3����#�#�L��L�L�&���*"�J�D�6�
3�	�	�
�x�
� %=�<�%=�PM�0!�&�$4�<�4�K�

K� #'�\�#'�L3�,�3�P�0�P�7� 3�7�"�l�"�DQ�l�Q�F�|�F�R	:�|�	:�
5�L�
5�N�\�N�R2�l�R2�j�\��(%�X�%�P
K�(6�|�6�*�l�*�&<�
'�L�'�T!;�L�!;�H,�|�,�^>�l�>�B	6�l�	6��|��D��,��(�\��8�8��@$�8�$�,F�\�F�6,�\�,�^"%�L�"%�J*��*�Z�0[�0�[�|�5��B?�1�?�:)%�4�)%�X�l��&2E��2E�jF:�\�F:�R�\��B
:�|�
:� x@�,�x@�v�<��:$�\�$�N���$!P�|�!P�H4�<�4�6'N�|�'N�T,*��,*�^J��J�
L��"��<@�|�<@�~�|��
?��
?�@�<�@�J�<�J�D*8�|�*8�X@��@�$
�\�
�"0��0�*@�f�@�F��b:�&�b:�J"6�JQH�6�QH�h6�l>�^
 � P7�f���_[���K����	��	�s$�;N7�O�7O�O�O�
O

Youez - 2016 - github.com/yon3zu
LinuXploit