__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
�

q�g˜�	�&�%SrSSKJr SSKJr SSKJr SSKJr SSKJr SSKJrJ	r	 SSK
r
SSKrSSKrSSK
r
SSKrSS	KJr \"S
S5 SSKJr \"S
S5 SSKJr \"SS5 SSKJr \"SS5 SSKJr \"SS5 SSKJr SSKrSSKr\
R2"S5rSrSr\\/\4\S'Sr\\/\4\S'\R@RB\R@RD)-\R@RF)-\R@RH)-r%S\RLS\4Sjr'S\S\(4S jr)S!\RTS\(4S"jr+S#\RXS!\RTS\\\\44S$jr-S%\\\4S&\\\4SS4S'jr."S(S)\	5r/"S*S+\5r0"S,S-\	5r1"S.S/5r2S0\2S\4S1jr3S2\S\24S3jr4"S4S55r5"S6S7\Rl5r7"S8S9\Rp5r9\:S::Xa�\
Rv"\
RxS;9r=\R}\
R~5 \R�\=5 SSKArA\AR�"5urCrD\C(a\
R�"S<5 g\
R�"S5 gg)=z&
Utility functions used in ibus-table
�)�Any)�List)�Tuple)�Dict)�Callable)�Enum�FlagN)�require_version�Gioz2.0)r�GLib)r�Gdkz3.0)r
�Gtk)r�IBusz1.0)rz
ibus-tablec�8�[R"[U5$�N)�gettext�dgettext�
DOMAINNAME��as �'/usr/share/ibus-table/engine/it_util.py�<lambda>r6s��G�$4�$4�Z��$C��_c��U$r�rs rrr7s��Qr�N_�variant�returnc�f�Ucg[U[R5(d[R	S5 U$UR5nUS:XaUR
5$US:XaUR5$US:XaUR5$US:XaUR5$US:XaUR5$US:XaUR5$US	:XaUR5$US
:XaUR5$U(aUSS:XaUR5$[RS
U5 U$)z#
Convert a GLib variant to a value
Nznot a GLib.Variant�s�i�u�x�t�d�b�vrrzunknown variant type: %s)�
isinstancer�Variant�LOGGER�info�get_type_string�
get_string�	get_int32�
get_uint32�	get_int64�
get_uint64�
get_double�get_boolean�unpack�error)r�type_strings  r�variant_to_valuer8Bs"������g�t�|�|�,�,����(�)����)�)�+�K��c���!�!�#�#��c��� � �"�"��c���!�!�#�#��c��� � �"�"��c���!�!�#�#��c���!�!�#�#��c���"�"�$�$��c���~�~����{�1�~��,��~�~���
�L�L�+�[�9��Nr�color_stringc�>�[R"5nURU5 [URS-5S-S-[UR
S-5S-S--[URS-5S-S--[URS-5S--$)uB
Converts a color string to a 32bit  ARGB value

:param color_string: The color to convert to 32bit ARGB
                     Can be expressed in the following ways:
                         - Standard name from the X11 rgb.txt
                         - Hex value: “#rgb”, “#rrggbb”, “#rrrgggbbb”
                                      or ”#rrrrggggbbbb”
                         - RGB color: “rgb(r,g,b)”
                         - RGBA color: “rgba(r,g,b,a)”

Examples:

>>> print('%x' %color_string_to_argb('rgb(0xff, 0x10, 0x25)'))
ffff1025

>>> print('%x' %color_string_to_argb('#108040'))
ff108040

>>> print('%x' %color_string_to_argb('#fff000888'))
ffff0088

>>> print('%x' %color_string_to_argb('#ffff00008888'))
ffff0088

>>> print('%x' %color_string_to_argb('rgba(0xff, 0x10, 0x25, 0.5)'))
7fff1025
����)r
�RGBA�parse�int�alpha�red�green�blue)r9�gdk_rgbas  r�color_string_to_argbrGas���:�x�x�z�H��N�N�<� ��(�.�.�4�'�(�4�/�B�
6��H�L�L�4�'�(�4�/�B�6�
8��H�N�N�T�)�*�T�1�a�7�
9��8�=�=�4�'�(�4�/�
1�2r�databasec�\�UR5nUS:�a[RSU5 U$S[R;aJ[RSRS5SR
5n[RSU5 O�S[R;aJ[RSRS5SR
5n[RSU5 OI[RSRS5SR
5n[RS	U5 S
U;dSU;agS
U;dSU;dSU;agUR(a[RS5 g[RS5 g! [RS5 g=f)a�
Use database value or LC_CTYPE in your box to determine the
Chinese mode

0 means to show simplified Chinese only
1 means to show traditional Chinese only
2 means to show all characters but show simplified Chinese first
3 means to show all characters but show traditional Chinese first
4 means to show all characters

If nothing can be found return 4 to avoid any special
Chinese filtering or sorting.

rzKget_default_chinese_mode(): default Chinese mode found in database, mode=%s�LC_ALL�.z3get_default_chinese_mode(): __lc=%s found in LC_ALL�LC_CTYPEz5get_default_chinese_mode(): __lc=%s found in LC_CTYPE�LANGz2get_default_chinese_mode(): __lc=%s  found in LANG�_cn�_sg��_hk�_tw�_mo�unget_default_chinese_mode(): last fallback, database is Chinese but we don’t know which variant, returning 4.zPget_default_chinese_mode(): last fallback, database is not Chinese, returning 4.�z5Exception in get_default_chinese_mode(), returning 4.)	�get_chinese_moder+r,�os�environ�split�lower�_is_chinese�	exception)rH�database_chinese_mode�__lcs   r�get_default_chinese_moder_�s��� %�5�5�7����!����
>�!�	#�%�$�+��r�z�z�!��:�:�h�'�-�-�c�2�1�5�;�;�=�D��K�K�*��
��2�:�:�
%��:�:�j�)�/�/��4�Q�7�=�=�?�D��K�K�,��
�
�:�:�f�%�+�+�C�0��3�9�9�;�D��K�K�)��
�
�D�=�E�T�M���D�=�E�T�M�U�d�]�����

�K�K�.�
/��
�K�K�8�
9�������(�	)��s�DF�F�&F�<F�F+�	gsettingsc���0n[URS55nURRS5nUR	5nUcSnURS5Vs/sHoUR
5PM snSSn[U5S:aUS/S[U5-
--
nUSnURRS5nU(a.URS5Vs/sHoUR
5PM nnXrS'US	n	URRS
5n
U
(a.U
RS5Vs/sHoUR
5PM n	nUSnURRS5nU(a.URS5Vs/sHoUR
5PM nnUH1nXY;aU	RU5 X[;dM URU5 M3 S
U;a.SU;aURS5 SU	;aU	RS5 SU;a.SU;aURS5 SU	;aU	RS5 X�S	'X�S'[U5H�up�[U5S:Xa#U[U5;aUS;aSU-nOUS:XaSnU/USU
S--'SU-/USU
S--'SU-/USU
S--'US;dMiUSU
S--RSU-5 USU
S--RSU-5 USU
S--RSU-5 M� UH)nX.HnSU;dMX.RU5 M  M+ U$s snfs snfs snfs snf)N�keybindings�valid_input_charsz1,2,3,4,5,6,7,8,9,0�,�
�
VoidSymbol�commit�commit_keys�lookup_table_page_down�page_down_keys�lookup_table_page_up�page_up_keys�-�minus�=�equal��	123456789�F�0�F10zcommit_candidate_%s�Control+zcommit_candidate_to_preedit_%s�Mod1+zremove_candidate_%s)
�1�2�3�4�5�6�7�8�9rt�KP_zControl+KP_zMod1+KP_)r8�get_default_value�ime_properties�get�get_select_keysrY�strip�len�remove�	enumerate�list�append)r`rH�default_keybindingsrc�select_keys_csv�name�select_keybindings�commit_keybindings�commit_keys_csv�page_down_keybindings�page_down_keys_csv�page_up_keybindings�page_up_keys_csv�index�command�
keybindings                r�get_default_keybindingsr��s���13��*��#�#�M�2�4��!�/�/�3�3�4G�H���.�.�0�O���/��!0�!6�!6�s�!;�=�!;��
�
��!;�=�=@�b�B��
����#�����#�&8�"9�9�;�	;��,�X�6���-�-�1�1�-�@�O��%4�%:�%:�3�%?�A�%?�T�J�J�L�%?�	�A�$6��!�/�0H�I��!�0�0�4�4�5E�F���%7�%=�%=�c�%B�!D�%B�T�J�J�L�%B�	�!D�-�.D�E���.�.�2�2�>�B���%5�%;�%;�C�%@�B�%@�T�J�J�L�%@�	�B�#���(�!�(�(��.��&��&�&�t�,�	#�����)�)��&�&�w�/��+�+�!�(�(��1�
����)�)��&�&�w�/��+�+�!�(�(��1�4I�0�1�2E�.�/� �!3�4���:�t�9��>�d�d�+<�&=�=��{�"��T�z��������F�	�!�U�Q�Y�/�	
�
�$�
��	�,���	�:�	
�
�t�^��	�!�U�Q�Y�/�	
��E�E��%����3�
��f�U�T�\�"��0�E�A�I�>�
��f�]�T�)�*��%����3�
��f�Z�$�&�'�i5�j'��-�6�J��z�)�#�,�3�3�J�?�7�'����Q=��A��!D��
Bs� M
�M�6M�M�pdict�other_pdictc�0�UHnX ;dM
XX'M g)a�Update values of existing keys in a Python dict from another Python dict

Using pdict.update(other_pdict) would add keys and values from other_pdict
to pdict even for keys which do not exist in pdict. Sometimes I want
to update only existing keys and ignore new keys.

:param pdict: The Python dict to update
:type pdict: Python dict
:param other_pdict: The Python dict to get the updates from
:type other_pdict: Python dict

Examples:

>>> old_pdict = {'a': 1, 'b': 2}
>>> new_pdict = {'b': 3, 'c': 4}
>>> dict_update_existing_keys(old_pdict, new_pdict)
>>> old_pdict
{'a': 1, 'b': 3}
>>> old_pdict.update(new_pdict)
>>> old_pdict
{'a': 1, 'b': 3, 'c': 4}
Nr)r�r��keys   r�dict_update_existing_keysr�@s��0���<�$�)�E�J�rc��\rSrSrSrS\S\4SjrS\4Sjr	S\S\
4SjrS\S\4S	jrS\S\4S
jr
S\S\4SjrS\S\4SjrS
rSrSrSrSrSrSrSrSrg)�
Capabilitei\amCompatibility class to handle IBus.Capabilite the same way no matter
what version of ibus is used.

For example, older versions of ibus might not have IBus.Capabilite.SYNC_PROCESS_KEY
(or maybe even do not have IBus.Capabilite at all). Then

    capabilities & IBus.Capabilite.SYNC_PROCESS_KEY

will produce an exception. But when using this compatibility class

    capabilities & IBus.Capabilite.SYNC_PROCESS_KEY

will just be False but not cause an exception.

>>> int(Capabilite.PREEDIT_TEXT)
1

>>> Capabilite.PREEDIT_TEXT == 1
True

>>> Capabilite.PREEDIT_TEXT | 2
3

>>> 2 | Capabilite.PREEDIT_TEXT
3

>>> int(Capabilite.PREEDIT_TEXT | Capabilite.AUXILIARY_TEXT)
3

>>> 3 == Capabilite.AUXILIARY_TEXT | Capabilite.PREEDIT_TEXT
True

>>> 3 == Capabilite.AUXILIARY_TEXT | IBus.Capabilite.PREEDIT_TEXT
True

>>> Capabilite.PREEDIT_TEXT == IBus.Capabilite.PREEDIT_TEXT
True
�attrrc��[RU5n[[S5(aI[[RU5(a*[[
[RU55UlU$SUlU$)Nr�r)�object�__new__�hasattrrr�rA�getattr�_value_��clsr��objs   rr��Capabilite.__new__�sY���n�n�S�!���4��&�&�7�4�?�?�D�+I�+I��g�d�o�o�t�<�=�C�K��
��C�K��
rc�,�[UR5$r�rAr���selfs r�__int__�Capabilite.__int__�����4�<�<� � r�otherc�4�URURLdUR[RLa [[	U5[	U5:H5$UR[LdUR[
La[[	U5U:H5$[$r)�	__class__rr��boolrA�float�NotImplemented�r�r�s  r�__eq__�Capabilite.__eq__�sk���N�N�e�o�o�-����$�/�/�1���D�	�S��Z�/�0�0��?�?�c�!�U�_�_��%=���D�	�U�*�+�+��rc��URURLaURUR-$UR[RLa[	U5[	U5-$UR[La[	U5U-$[
$r�r��valuerr�rAr�r�s  r�__or__�Capabilite.__or__��i���>�>�U�_�_�,��:�:����+�+��O�O�t���.��t�9�s�5�z�)�)��?�?�c�!��t�9�u�$�$��rc�$�URU5$r�r�r�s  r�__ror__�Capabilite.__ror__�����{�{�5�!�!rc��URURLaURUR-$UR[RLa[	U5[	U5-$UR[La[	U5U-$[
$rr�r�s  r�__and__�Capabilite.__and__�r�rc�$�URU5$r�r�r�s  r�__rand__�Capabilite.__rand__�����|�|�E�"�"r�PREEDIT_TEXT�AUXILIARY_TEXT�LOOKUP_TABLE�FOCUS�PROPERTY�SURROUNDING_TEXT�OSK�SYNC_PROCESS_KEYrN)�__name__�
__module__�__qualname__�__firstlineno__�__doc__�strrr�rAr�r�r�r�r�r�r�r�r�r�r�r�r�r�r��__static_attributes__rrrr�r�\s���%�L�3��3��!��!��C��D���C��C��"�S�"�S�"��S��S��#�c�#�c�#�#�L�&�N�"�L�
�E��H�*���C�*�rr�c��\rSrSrSrS\S\4SjrS\4Sjr	S\S\
4SjrS\S\
4S	jrS\S\
4S
jr
S\S\
4SjrS\S\
4SjrS
rSrSrSrSrSrSrSrSrSrSrSrg)�InputPurposei�aCompatibility class to handle InputPurpose the same way no matter
what version of ibus is used.

For example, older versions of ibus might not have
IBus.InputPurpose.TERMINAL and then

    input_purpose == IBus.InputPurpose.TERMINAL

will produce an exception. But when using this compatibility class

    input_purpose == InputPurpose.TERMINAL

will just be False but not cause an exception.

See also:

https://docs.gtk.org/gtk3/enum.InputPurpose.html
https://docs.gtk.org/gtk4/enum.InputPurpose.html

Examples:

>>> int(InputPurpose.PASSWORD)
8

>>> 8 == InputPurpose.PASSWORD
True

>>> int(InputPurpose.PIN)
9

>>> InputPurpose.PASSWORD <= InputPurpose.PIN
True

>>> InputPurpose.PASSWORD == Gtk.InputPurpose.PASSWORD
True

>>> InputPurpose.PASSWORD == IBus.InputPurpose.PASSWORD
True
r�rc��[RU5n[[S5(aI[[RU5(a*[[
[RU55UlU$SUlU$)Nr����)r�r�r�rr�rAr�r�r�s   rr��InputPurpose.__new__�s]���n�n�S�!���3��'�'�G�C�4D�4D�d�,K�,K��g�c�&6�&6��=�>�C�K��
��C�K��
rc�,�[UR5$rr�r�s rr��InputPurpose.__int__�r�rr�c�\�URURLd:UR[RLdUR[RLa[	U5[	U5:H$UR[LdUR[
La[
[	U5U:H5$[$r�r�rr�rrAr�r�r�r�s  rr��InputPurpose.__eq__�sz���N�N�e�o�o�-����#�"2�"2�2����$�"3�"3�3��t�9��E�
�*�*��?�?�c�!�U�_�_��%=���D�	�U�*�+�+��rc�\�URURLd:UR[RLdUR[RLa[	U5[	U5:�$UR[LdUR[
La[
[	U5U:�5$[$rr�r�s  r�__gt__�InputPurpose.__gt__�sz���N�N�e�o�o�-����#�"2�"2�2����$�"3�"3�3��t�9�s�5�z�)�)��?�?�c�!�U�_�_��%=���D�	�E�)�*�*��rc�n�URURLd:UR[RLdUR[RLa [	[U5[U5:5$UR[
LdUR[La[	[U5U:5$[$r�r�rr�rr�rAr�r�r�s  r�__lt__�InputPurpose.__lt__�s���N�N�e�o�o�-����#�"2�"2�2����$�"3�"3�3���D�	�C��J�.�/�/��?�?�c�!�U�_�_��%=���D�	�E�)�*�*��rc�n�URURLd:UR[RLdUR[RLa [	[U5[U5:�5$UR[
LdUR[La[	[U5U:�5$[$rr�r�s  r�__ge__�InputPurpose.__ge__����N�N�e�o�o�-����#�"2�"2�2����$�"3�"3�3���D�	�S��Z�/�0�0��?�?�c�!�U�_�_��%=���D�	�U�*�+�+��rc�n�URURLd:UR[RLdUR[RLa [	[U5[U5:*5$UR[
LdUR[La[	[U5U:*5$[$rr�r�s  r�__le__�InputPurpose.__le__r�r�	FREE_FORM�ALPHA�DIGITS�NUMBER�PHONE�URL�EMAIL�NAME�PASSWORD�PIN�TERMINALrN)r�r�r�r�r�r�rr�rAr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�rrrr�r��s���&�N�3��3��!��!��C��D���C��D���C��D���C��D���C��D���I�
�E��F��F�
�E��C�
�E��D��H��C��Hrr�c���\rSrSrSrS\S\4SjrS\4Sjr	S\S\
4SjrS\S\4S	jrS\S\4S
jr
S\S\4SjrS\S\4SjrS
rSrSrSrSrSrSrSrSrSrSrSrSrSrg)�
InputHintsi#a)Compatibility class to handle InputHints the same way no matter
what version of ibus is used.

For example, older versions of ibus might not have IBus.InputHints.PRIVATE
(or maybe even do not have IBus.InputHints at all). Then

    input_hints & IBus.InputHints.PRIVATE

will produce an exception. But when using this compatibility class

    input_hints & InputHints.PRIVATE

will just be False but not cause an exception.

See also:

https://docs.gtk.org/gtk3/flags.InputHints.html
https://docs.gtk.org/gtk4/flags.InputHints.html

Examples:

>>> int(InputHints.SPELLCHECK)
1

>>> InputHints.SPELLCHECK == 1
True

>>> InputHints.SPELLCHECK | 2
3

>>> 2 | InputHints.SPELLCHECK
3

>>> int(InputHints.NO_SPELLCHECK | InputHints.SPELLCHECK)
3

>>> 3 == InputHints.NO_SPELLCHECK | InputHints.SPELLCHECK
True

>>> 3 == InputHints.NO_SPELLCHECK | Gtk.InputHints.SPELLCHECK
True

>>> 3 == InputHints.NO_SPELLCHECK | IBus.InputHints.SPELLCHECK
True

>>> InputHints.SPELLCHECK == IBus.InputHints.SPELLCHECK
True

>>> InputHints.SPELLCHECK == Gtk.InputHints.SPELLCHECK
True
r�rc��[RU5n[[S5(aI[[RU5(a*[[
[RU55UlU$SUlU$)Nrr)r�r�r�rrrAr�r�r�s   rr��InputHints.__new__WsY���n�n�S�!���3��%�%�'�#�.�.�$�*G�*G��g�c�n�n�d�;�<�C�K��
��C�K��
rc�,�[UR5$rr�r�s rr��InputHints.__int___r�rr�c�n�URURLd:UR[RLdUR[RLa [	[U5[U5:H5$UR[
LdUR[La[	[U5U:H5$[$r)r�rrrr�rAr�r�r�s  rr��InputHints.__eq__bs{���N�N�e�o�o�-����#�.�.�0����$�/�/�1���D�	�S��Z�/�0�0��?�?�c�!�U�_�_��%=���D�	�U�*�+�+��rc�V�URURLaURUR-$UR[RLdUR[RLa[U5[U5-$UR[
La[U5U-$[$r�r�r�rrrrAr�r�s  rr��InputHints.__or__k�y���>�>�U�_�_�,��:�:����+�+��O�O�s�~�~�-����$�/�/�1��t�9�s�5�z�)�)��?�?�c�!��t�9�u�$�$��rc�$�URU5$rr�r�s  rr��InputHints.__ror__ur�rc�V�URURLaURUR-$UR[RLdUR[RLa[U5[U5-$UR[
La[U5U-$[$rr
r�s  rr��InputHints.__and__xrrc�$�URU5$rr�r�s  rr��InputHints.__rand__�r�r�NONE�
SPELLCHECK�
NO_SPELLCHECK�WORD_COMPLETION�	LOWERCASE�UPPERCASE_CHARS�UPPERCASE_WORDS�UPPERCASE_SENTENCES�INHIBIT_OSK�VERTICAL_WRITING�EMOJI�NO_EMOJI�PRIVATErN)r�r�r�r�r�r�rr�rAr�r�r�r�r�r�r�rrrrrrrrrrrrrr�rrrrr#s���2�f�3��3��!��!��C��D���C��C��"�S�"�S�"��S��S��#�c�#�c�#�
�D��J�$�M�(�O��I�(�O�(�O�0�� �K�*��
�E��H��Grrc�d�\rSrSrSrS\S\S\SS4SjrS	\S\4S
jr	S	\S\4Sjr
S\4SjrS
r
g)�KeyEventi�zKKey event class used to make the checking of details of the key
event easy
�keyval�keycode�staterNc���XlX lX0l[R"UR5Ul[R"SUR
5(a%SS[UR
SSS5-S3Ul[R"UR5Ul
UR[RR-S:gUl
UR[RR-S:gUlUR[RR -S:gUlUR[RR$-S:gUlUR[RR(-S:gUlUR[RR,-S:gUlUR[RR0-S:gUlUR[RR4-S:gUlUR[RR8-S:gUlUR[RR<-S:gUlUR[RR@-S:gUl!UR[RRD-S:gUl#UR[RRH-S:gUl%UR[RRL-S:gUl'UR[RRP-S:gUl)UR[RRT-S:gUl+UR[RRX-S:gUl-UR[RR\-S:gUl/g)NzU\+[0-9a-fA-F]{4,5}�0xirPr=r$r)0�val�coder$r�keyval_namer��re�matchrA�keyval_to_unicode�unicode�ModifierType�
SHIFT_MASK�shift�	LOCK_MASK�lock�CONTROL_MASK�control�
SUPER_MASK�super�
HYPER_MASK�hyper�	META_MASK�meta�	MOD1_MASK�mod1�	MOD2_MASK�mod2�	MOD3_MASK�mod3�	MOD4_MASK�mod4�	MOD5_MASK�mod5�BUTTON1_MASK�button1�BUTTON2_MASK�button2�BUTTON3_MASK�button3�BUTTON4_MASK�button4�BUTTON5_MASK�button5�RELEASE_MASK�release�
MODIFIER_MASK�modifier)r�r"r#r$s    r�__init__�KeyEvent.__init__�s������	��
��$�$�T�X�X�.��	�
�8�8�*�D�I�I�6�6��Y�#�d�i�i���m�R�*@�@��C�D�D�I��-�-�d�h�h�7����Z�Z�$�"3�"3�">�">�>�!�C��
��J�J��!2�!2�!<�!<�<��A��	��z�z�D�$5�$5�$B�$B�B�a�G����Z�Z�$�"3�"3�">�">�>�!�C��
��Z�Z�$�"3�"3�">�">�>�!�C��
��J�J��!2�!2�!<�!<�<��A��	��J�J��!2�!2�!<�!<�<��A��	��J�J��!2�!2�!<�!<�<��A��	��J�J��!2�!2�!<�!<�<��A��	��J�J��!2�!2�!<�!<�<��A��	��J�J��!2�!2�!<�!<�<��A��	��z�z�D�$5�$5�$B�$B�B�a�G����z�z�D�$5�$5�$B�$B�B�a�G����z�z�D�$5�$5�$B�$B�B�a�G����z�z�D�$5�$5�$B�$B�B�a�G����z�z�D�$5�$5�$B�$B�B�a�G����z�z�D�$5�$5�$B�$B�B�a�G����
�
�T�%6�%6�%D�%D�D��I��
rr�c���[U[5(d[$URUR:Xa5URUR:XaUR
UR
:Xagg�NTF�r)r!r�r'r(r$r�s  rr��KeyEvent.__eq__�sK���%��*�*�!�!��H�H��	�	�!��I�I����+��J�J�%�+�+�-��rc���[U[5(d[$URUR:wd4URUR:wdUR
UR
:waggrVrWr�s  r�__ne__�KeyEvent.__ne__�sK���%��*�*�!�!��H�H��	�	�!��9�9��
�
�*��:�:����,��rc���[SR/SPURSPSPURPSPURSPSPUR
PSPURPSPURPS	PURPS
PURPSPURPSPURPS
PURPSPURPSPURPSPURPSPUR PSPUR"PSPUR$PSPUR&PSPUR(PSPUR*PSPUR,PSPUR.PSPUR0P55$)N�zval=�08xz code=z	 state=0xu	 name=“u” unicode=“u
” shift=z lock=z	 control=z super=z hyper=z meta=z mod1=z mod2=z mod3=z mod4=z mod5=z	 button1=z	 button2=z	 button3=z	 button4=z	 button5=z	 release=z
 modifier=)�repr�joinr'r(r$r�r-r0r2r4r6r8r:r<r>r@rBrDrFrHrJrLrNrPrRr�s r�__str__�KeyEvent.__str__�sj���
(�
(�d�
(�4�8�8�C�.�
(�!�
(��I�I�;�
(��
(��z�z�#�&�
(�'�
(��y�y�k�
(�"�
(��,�,��	
(�(�	
(�
�Z�Z�L�
(�
!�
(��I�I�;�

(��

(��|�|�n�
(�%�
(��Z�Z�L�
(�!�
(��Z�Z�L�
(�!�
(��I�I�;�
(��
(��I�I�;�
(��
(��I�I�;�
(��
(��I�I�;�
(��
(��I�I�;�
(��
(��I�I�;�
(��
(� �|�|�n�!
(� %�!
(�"�|�|�n�#
(�"%�#
(�$�|�|�n�%
(�$%�%
(�&�|�|�n�'
(�&%�'
(�(�|�|�n�)
(�(%�)
(�*�|�|�n�+
(�*%�+
(�,�
�
��-
(�)�	)r)rFrHrJrLrNr(r4r8r2r:r<r>r@rBrDrRr�rPr0r$r6r-r')r�r�r�r�r�rArSr�r�r�rZr�rar�rrrr!r!�s`���,J�s�,J�S�,J��,J��,J�\�F��t���F��t��)��)rr!�keyeventc�
�SnUR(aUS-
nUR(aUS-
nUR(aUS-
nUR(aUS-
nUR(aUS-
nUR
(aUS-
nUR(aUS-
nUR(aUS	-
nUR(aUS
-
nUR(aUS-
nUR(aUS-
nXR-
nU$)
a�Calculates a keybinding string from a key event.

Examples:

>>> keyevent_to_keybinding(KeyEvent(IBus.KEY_Left, 0, 0))
'Left'

>>> keyevent_to_keybinding(KeyEvent(0x0100263a, 0, 0))
'0x100263a'

>>> keyevent_to_keybinding(KeyEvent(0x0101F923, 0, 0))
'0x101f923'

>>> keyevent_to_keybinding(KeyEvent(IBus.KEY_Left, 0, IBus.ModifierType.SHIFT_MASK | IBus.ModifierType.CONTROL_MASK))
'Shift+Control+Left'

>>> keyevent_to_keybinding(KeyEvent(0x0100263A, 0, IBus.ModifierType.SHIFT_MASK | IBus.ModifierType.CONTROL_MASK))
'Shift+Control+0x100263a'

>>> keyevent_to_keybinding(KeyEvent(0x0101F923, 0, IBus.ModifierType.SHIFT_MASK | IBus.ModifierType.CONTROL_MASK))
'Shift+Control+0x101f923'
r]�Shift+�Lock+rv�Super+�Hyper+�Meta+rw�Mod2+�Mod3+�Mod4+�Mod5+)r0r2r4r6r8r:r<r>r@rBrDr�)rcr�s  r�keyevent_to_keybindingrn�s���2�J��~�~��h��
��}�}��g��
�����j� �
��~�~��h��
��~�~��h��
��}�}��g��
��}�}��g��
��}�}��g��
��}�}��g��
��}�}��g��
��}�}��g��
��-�-��J��rr�c���URS5Sn[R"U5nU[R:Xa+[R
"SU5(a[
USSS5nSnSU;aU[RR-nS	U;aU[RR-nS
U;aU[RR-nSU;aU[RR-nSU;aU[RR-nS
U;aU[RR-nSU;aU[RR-nSU;aU[RR-nSU;aU[RR -nSU;aU[RR"-nSU;aU[RR$-n['USU5$)a�Returns a key event object created from a key binding string.

Examples:

>>> keybinding_to_keyevent('Shift+Control+Left').val == IBus.KEY_Left
True

>>> keybinding_to_keyevent('Shift+Control+Left').name
'Left'

>>> keybinding_to_keyevent('Shift+Control+Left').state == IBus.ModifierType.SHIFT_MASK | IBus.ModifierType.CONTROL_MASK
True

>>> f"0x{keybinding_to_keyevent('Shift+Control+0x100263a').val:08x}"
'0x0100263a'

>>> f"0x{keybinding_to_keyevent('Shift+Control+0x101F923').val:08x}"
'0x0101f923'

>>> f"0x{keybinding_to_keyevent('Shift+Control+0x101G923').val:08x}"
'0x00ffffff'

>>> keybinding_to_keyevent('Shift+Control+0x101G923').val == IBus.KEY_VoidSymbol
True
�+r�z0x10[0-9a-fA-F]{5}rPNr=rrerfrvrgrhrirwrjrkrlrm)rYr�keyval_from_name�KEY_VoidSymbolr*r+rAr.r/r1r3r5r7r9r;r=r?rArCr!)r�r�r"r$s    r�keybinding_to_keyeventrs$s���8���C� ��$�D�
�
"�
"�4�
(�F�
��$�$�$����2G��)N�)N��T�!�"�X�r�"��
�E��:��
��"�"�-�-�-���*��
��"�"�,�,�,���Z��
��"�"�/�/�/���:��
��"�"�-�-�-���:��
��"�"�-�-�-���*��
��"�"�,�,�,���*��
��"�"�,�,�,���*��
��"�"�,�,�,���*��
��"�"�,�,�,���*��
��"�"�,�,�,���*��
��"�"�,�,�,���F�A�u�%�%rc�f�\rSrSrSrS\\\\4SS4SjrS\	\
\
\4S\4SjrS\4S	jr
S
rg)�HotKeysi]zQClass to make checking whether a key matches a hotkey for a certain
command easy
rbrNc��0UlUHynXHnn[U5nURnUR[-nX R;a!URURXV45 M]XV4/URU'Mp M{ gr)�_hotkeysrsr'r$�KEYBINDING_STATE_MASKr�)r�rbr�r�r�r'r$s       rrS�HotKeys.__init__asw��:<��
�"�G�)�2�
�,�Z�8���g�g���	�	�$9�9���m�m�+��M�M�'�*�1�1�3�,�?�/2�l�^�D�M�M�'�*�3�#r�command_key_tuplec�R�[U[5(dgUSnUSnUSnUcUnURnURnURS;Ga�URU:wd"U[
RR-(dgU[
RR)-nURS;a U[
RR)-nGO&URS;aU[
RR)-nO�URS;aU[
RR)-nO�URS	;a=U[
RR)-nU[
RR)-nO{URS
;a=U[
RR)-nU[
RR)-nO.URS;aU[
RR)-nU[-nX R ;aXV4UR U;agg)
NFrPrqr)�Shift_L�Shift_R�	Control_L�	Control_R�Alt_L�Alt_R�Meta_L�Meta_R�Super_L�Super_R�ISO_Level3_Shift)r|r})r~r)r�r�)r�r�)r�r�)r�T)r)�tupler'r$r�rr.rOr/r3r;r5rAr9rCrxrw)r�rzr�r��prev_keyr'r$s       r�__contains__�HotKeys.__contains__ms����+�U�3�3��#�A�&����"��$�Q�'�����H��g�g���	�	���8�8�,�,�����#��t�0�0�=�=�=���d�'�'�4�4�4�4�E��x�x�1�1��$�+�+�6�6�6�6�����7�7��$�+�+�8�8�8�8�����/�/��$�+�+�5�5�5�5�����3�3��$�+�+�6�6�6�6���$�+�+�5�5�5�5�����1�1��$�+�+�5�5�5�5���$�+�+�5�5�5�5�����2�2��$�+�+�5�5�5�5���-�-���m�m�#��|�t�}�}�W�5�5��rc�,�[UR5$r)r_rwr�s rra�HotKeys.__str__�s���D�M�M�"�"r)rw)r�r�r�r�r�rr�rrSrr!r�r�rar�rrrruru]sU���
<�D��d�3�i��$8�
<�T�
<�1�%*�8�X�s�+B�%C�1�HL�1�f#��#rruc���\rSrSr\"S5S4S\S\RSS4SjjrS\RS	\
RS\4S
jr
S\RS\
RS\4SjrS
rg)�ItKeyInputDialogi�z	Key inputN�title�parentrc��[RRUUUS9 UR[	S5[R
R5 URS5 URS[	S5-5 UR[	S55 URSUR5 URSUR5 U(aURUR55 UR5 g)	N)r�r��CancelTz<big><b>%s</b></big>z)Please press a key (or a key combination)z2The dialog will be closed when the key is released�key_press_event�key_release_event)r�DialogrS�
add_buttonr�ResponseType�CANCEL�	set_modal�
set_markup�format_secondary_text�connect�on_key_press_event�on_key_release_event�set_transient_for�get_toplevel�show)r�r�r�s   rrS�ItKeyInputDialog.__init__�s���	�
�
������	�	�	
����(��S�%5�%5�%<�%<�=����t�����"��;�<�	
=�	>�	
�"�"�
�B�C�		E�
	
���&��(?�(?�@����(�$�*C�*C�D���"�"�6�#6�#6�#8�9��	�	�r�widget�eventc�T�URUR5[-4Ulg�NT)r"�	get_staterx�e)r�r�r�s   rr��#ItKeyInputDialog.on_key_press_event�s%���L�L��O�O�%�(=�=�?���r�_eventc�V�UR[RR5 gr�)�responserr��OK)r�r�r�s   rr��%ItKeyInputDialog.on_key_release_event�s������(�(�+�+�,�rr)r�r�r�r�rr�r�WindowrS�
MessageDialogr
�EventKeyr�r�r�r�rrrr�r��s����;��!%�
�
���J�J�
�+/�
�<��+�+��47�L�L��EI����+�+��58�\�\��FJ�rr�c�|�\rSrSrS
S\R
SS4SjjrS\RS\RSS4Sjr	S	r
g)�
ItAboutDialogi�Nr�rc��[RRXS9 URS5 UR	S[
R"5-5 URS5 UR[
R"55 UR[S55 URS5 UR/SQ5 UR[S55 URS	/5 URS
5 UR![S5S-S
-5 UR#S
5 UR%S5 UR'[R(R*5 UR-SUR.5 U(aUR1UR355 UR55 g)N)r�Tu码 IBus Table %su码 IBus TablezTable input method for IBus.uECopyright © 2009-2012 Peng Huang,
Copyright © 2012-2022 Mike FABIAN)uYuwei YU (“acevery”)z
Peng Huang�BYVoidzPeng WuuCaius ‘kaio’ Chance�$Mike FABIAN <[email protected]>z
Contributors:�
koterpilla�Zerng07zMike FABIANzBernard Nauwelaertsz
Xiaojun Ma�	mozbugboxuSeán de Búrcaztranslator-creditsr�z'http://mike-fabian.github.io/ibus-tablezOnline documentation:� a�
        This library is free software: you can redistribute it and/or modify
        it under the terms of the GNU Lesser General Public License as published by
        the Free Software Foundation, either version 2.1 of the License, or
        (at your option) any later version.

        This library is distributed in the hope that it will be useful,
        but WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        GNU Lesser General Public License for more details.

        You should have received a copy of the GNU Lesser General Public License
        along with this program.  If not, see <http://www.gnu.org/licenses/>
        r�)r�AboutDialogrSr��	set_title�version�get_version�set_program_name�set_version�set_commentsr�
set_copyright�set_authors�set_translator_credits�set_documenters�set_website�set_website_label�set_license�set_wrap_license�set_license_type�License�LGPL_2_1r��on_close_aboutdialogr�r�r�)r�r�s  rrS�ItAboutDialog.__init__�s������ � �� �5����t��	
���*�G�,?�,?�,A�A�B����.�/�����,�,�.�/����
�,�-�	/����
1�	2�	
����	� 	
�#�#�
�"�#�		%�	
���2��	�	
���5�	7����
�%�&��
�=�
>�	?�	
���
�
	
�	
���d�#����c�k�k�2�2�3����Z��!:�!:�;���"�"�6�#6�#6�#8�9��	�	�r�
_about_dialog�	_responsec�$�UR5 g)u�
The “About” dialog has been closed by the user

:param _about_dialog: The “About” dialog
:param _response: The response when the “About” dialog was closed
N)�destroy)r�r�r�s   rr��"ItAboutDialog.on_close_aboutdialogs
��	
���rrr)r�r�r�r�rr�rSr�r�r�r�rrrr�r��sD��C��
�
�C�d�C�J�!$����8;�8H�8H��MQ�rr��__main__)�streamrq)Fr��typingrrrrr�enumrr	�sysrWr*�loggingr�gir
�
gi.repositoryrrr
rrr��tabsqlitedb�	getLoggerr+rrr��__annotations__rr.rQr1r=r?rxr*r8rArG�TabSqliteDbr_�Settingsr�r�r�r�rr!rnrsrur�r�r�r�r��
StreamHandler�stderr�LOG_HANDLER�setLevel�DEBUG�
addHandler�doctest�testmod�FAILED�	ATTEMPTED�exitrrr�<module>r�s���*�������
�	�	������u����������u�����u����������	�	�	�<�	(��
�
�C��8�S�E�3�J��C�&��H�c�U�C�Z��&�
	���#�#����"�"�"�#����"�"�"�#����"�"�"�#���d�l�l��s��>"2�s�"2�s�"2�HC�{�'>�'>�C�3�C�Jt��<�<�t��)�)�t�.2�3��S�	�>�.B�t�l*��C��H�~�*�,0��c��N�*�?C�*�8Y,��Y,�vj�4�j�Xn��n�`\)�\)�|1�X�1�#�1�f7&�s�7&�x�7&�rD#�D#�L(�s�(�(�(�TN�C�O�O�N�`�z���'�'�s�z�z�:�K�
�O�O�G�M�M�"�
���k�"��!�/�/�+��V�Y�
�����������r

Filemanager

Name Type Size Permission Actions
chinese_variants.cpython-313.pyc File 434.02 KB 0644
factory.cpython-313.pyc File 5.61 KB 0644
ibus_table_location.cpython-313.pyc File 4.87 KB 0644
it_active_window.cpython-313.pyc File 13.01 KB 0644
it_sound.cpython-313.pyc File 23.38 KB 0644
it_util.cpython-313.pyc File 45.11 KB 0644
main.cpython-313.pyc File 18.03 KB 0644
tabcreatedb.cpython-313.pyc File 23.86 KB 0644
table.cpython-313.pyc File 188.3 KB 0644
tabsqlitedb.cpython-313.pyc File 68.79 KB 0644
version.cpython-313.pyc File 423 B 0644
Filemanager