add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
�

Jz`flEcs|�/SQrSSKJr SSKJr SSKJr \"SS5r	Sr
"SS	5rS#S
jrSr
"SS
5rSSKr\R "S5R"4SjrS$SjrSrS%SjrSrS%SjrSrS&SjrS\4SjrSS\4SjrSrSrSrSr"SS\ 5r!CS r"S!r#\$S":Xa\#"5 gg)')�get_close_matches�ndiff�restore�SequenceMatcher�Differ�IS_CHARACTER_JUNK�IS_LINE_JUNK�context_diff�unified_diff�
diff_bytes�HtmlDiff�Match�)�nlargest)�
namedtuple)�GenericAliasrza b sizecs"�U(aSU-U-$g)Ng@��?�)�matches�length�  � /usr/lib64/python3.13/difflib.py�_calculate_ratior's��
��W�}�v�%�%��csx�\rSrSrSSjrSrSrSrSrSSjr	S	r
S
rSSjrSr
S
rSr\"\5rSrg)ri,NcsZ�XlS=UlUlX@lUR	X#5 g�N)�isjunk�a�b�autojunk�set_seqs)�selfrrrr�     r�__init__ZSequenceMatcher.__init__xs)��v�������� �
��
�
�a�rcsH�URU5 URU5 gr)�set_seq1�set_seq2)rrr�   rrZSequenceMatcher.set_seqs�s��	
�
�
�a���
�
�a�rcsJ�XRLagXlS=UlUlgr)r�matching_blocks�opcodes)rrrrr!ZSequenceMatcher.set_seq1�s$��*
���;����.2�2���t�|rcsx�XRLagXlS=UlUlSUlUR	5 gr)rr$r%�
fullbcount�_SequenceMatcher__chain_b)rrrrr"ZSequenceMatcher.set_seq2�s5��*
���;����.2�2���t�|�������rcsn�URn0=Uln[U5H(up4URU/5nUR	U5 M* [5=UlnURnU(aBUR5H#nU"U5(dMURU5 M% UHnX$	M [5=Ul
n[U5n	UR(aVU	S:�aOU	S-S-n
UR5H'upK[U5U
:�dMURU5 M) UHnX$	M ggg)Ni�id�)r�b2j�	enumerateZ
setdefault�appendZset�bjunkrZkeysZadd�bpopular�lenrZitems)rrr)�i�eltZindicesZjunkrZpopular�nZntestZidxs�            rZ	__chain_bZSequenceMatcher.__chain_b
s$��
�F�F������3���l�	�F�A��n�n�S�"�-�G��N�N�1��	�
 �E�!��
�T�������x�x�z�
"���#�;�;��H�H�S�M�
"��
���H�
�#&�%�'��
����F���=�=�Q�#�X���H�q�L�E� �Y�Y�[�
%�	���t�9�u�$��K�K��$�
%��
���H�
�&�=rcs�URURURURR4upVpxUc[U5nUc[U5nXSp�n	0n/n
[
X5HknURn0nURX^U
5H@nUU:aMUU:�a O1U"US-
S5S-=nUU'UU:�dM/UU-
S-UU-
S-Up�n	MB UnMm X�:�acX�:�a^U"XjS-
5(dLXYS-
XjS-
:Xa<U	S-
U
S-
US-p�n	X�:�a)X�:�a$U"XjS-
5(dXYS-
XjS-
:XaM<X�-U:acX�-U:a[U"XjU-5(dIXYU-XjU-:Xa9US-
nX�-U:a,X�-U:a$U"XjU-5(dXYU-XjU-:XaM9X�:�acX�:�a^U"XjS-
5(aLXYS-
XjS-
:Xa<U	S-
U
S-
US-p�n	X�:�a)X�:�a$U"XjS-
5(aXYS-
XjS-
:XaM<X�-U:acX�-U:a[U"XjU-5(aIXYU-XjU-:Xa9US-nX�-U:a,X�-U:a$U"XjU-5(aXYU-XjU-:XaM9[X�U5$�Nrr()	rrr)r,�__contains__r.�range�getr)r�alo�ahi�blo�bhirrr)ZisbjunkZbestiZbestjZbestsizeZj2lenZnothingr/Zj2lengetZnewj2len�j�k�                   r�find_longest_matchZ"SequenceMatcher.find_longest_match1s���t"�V�V�T�V�V�T�X�X�t�z�z�7N�7N�N���c��;��a�&�C��;��a�&�C�!$�1�h�������s��	�A��y�y�H��H��W�W�Q�T�7�+�
=���s�7����8��"*�1�Q�3��"2�Q�"6�6��H�Q�K��x�<�-.�q�S��U�A�a�C��E�1�(�E�(�
=��E�	�(�k�e�k��!�!�G�*�%�%��a��j�A�A�g�J�&�%*�1�W�e�A�g�x��z�(�E��k�e�k��!�!�G�*�%�%��a��j�A�A�g�J�&��n�s�"�u�~��';��!�(�N�+�,�,��h���1�8�^�#4�4���M�H��n�s�"�u�~��';��!�(�N�+�,�,��h���1�8�^�#4�4��k�e�k��a�a��j�!�!��a��j�A�A�g�J�&�%*�1�W�e�A�g�x��z�(�E��k�e�k��a�a��j�!�!��a��j�A�A�g�J�&��n�s�"�u�~��';��a�h��'�(�(��h���1�8�^�#4�4��!�|�H��n�s�"�u�~��';��a�h��'�(�(��h���1�8�^�#4�4��U�8�,�,rcs<�URbUR$[UR5[UR5p!SUSU4/n/nU(a�UR	5upVpxURXVXx5=up�p�U(aWUR
U5 XY:aXz:aUR
XYXz45 X�-U:a!X�-U:aUR
X�-XjU-U45 U(aM�UR5 S=n
=p�/nUH=unnnX�-U:XaX�-U:XaUU-
nMU(aUR
X�U45 UUUp�n
M? U(aUR
X�U45 UR
XS45 [[[RU55UlUR$�Nr)r$r.rr�popr>r+Zsort�list�maprZ_make)r�la�lbZqueuer$r7r8r9r:r/r;r<�x�i1�j1Zk1Znon_adjacent�i2�j2Zk2s                    r�get_matching_blocksZ#SequenceMatcher.get_matching_blocks�s���&���+��'�'�'��T�V�V��c�$�&�&�k�B��R��B�� �����!&�����C�c��1�1�#�C�E�E�G�A�!���&�&�q�)��7�s�w��L�L�#�#�!1�2��3��9���s���L�L�!�#�s�a�C��!5�6��e�	����
����R���)�
	(�J�B��B��w�"�}���B���b���
� �'�'����5���R����
	(��������-����b�a�[�*�#�C����\�$B�C����#�#�#rcs>�URbUR$S=p/=UlnUR5HcupEnSnX:aX%:aSnOX:aSnOX%:aSnU(aURXqXBU45 XF-XV-p!U(dMOURSXAXR45 Me U$)Nr��replace�delete�insert�equal)r%rJr+)rr/r;Zanswer�ai�bj�size�tag�        r�get_opcodesZSequenceMatcher.get_opcodes�s���:�<�<�#��<�<���	�� "�"���v� �4�4�6�	9�L�B�D��C��v�!�&�������������
�
���r�2�4��7�B�G�q��t��
�
����6�8�'	9�(�
rc#sp# �UR5nU(dS/nUSSS:Xa+USup4pVnU[XEU-
5U[XgU-
5U4US'USSS:Xa*USup4pVnX4[XTU-5U[XvU-54US'X-n/n	UHwup4pVnUS:XaVXT-
U:�aNU	RX4[XTU-5U[XvU-545 U	v� /n	[XEU-
5[XgU-
5pdU	RX4XVU45 My U	(a![	U	5S:XaU	SSS:XdU	v� ggg7f)N)rOrr(rr(rrO�����r()rU�max�minr+r.)
rr1ZcodesrSrFrHrGrIZnn�group�
          r�get_grouped_opcodesZ#SequenceMatcher.get_grouped_opcodes#s]���2� � �"���*�+�E���8�A�;�'�!�"'��(��C�R�R��C��q�D�M�2�s�2�!�t�}�b�@�E�!�H���9�Q�<�7�"�"'��)��C�R�R���R�A����C��q�D�M�A�E�"�I�
�U����#(�	0��C�R�R��g�~�"�%�"�*����c�s�2�!�t�}�b�#�b�Q�$�-�H�I������R�A����B�1��
�B��L�L�#�2�2�.�/�	0��#�e�*�a�-�E�!�H�Q�K�7�,B��K�-C�5�s�D4D6cs��[SUR555n[U[UR5[UR
5-5$)Nc3s(# �UH	oSv� M g7f)rVNr)�.0Ztriplerr�	<genexpr>Z(SequenceMatcher.ratio.<locals>.<genexpr>ks���J�V�R�j�J�s�)ZsumrJrr.rr)rrrr�ratioZSequenceMatcher.ratioUs?��,�J�t�/G�/G�/I�J�J�����T�V�V��s�4�6�6�{�)B�C�Crcs��URc30=UlnURHnURUS5S-X'M URn0nURSpTURH;nU"U5(aX2nOURUS5nUS-
X2'US:�dM6US-nM= [U[
UR5[
UR5-5$r3)r&rr6r4rrr.)rr&r0ZavailZavailhasrZnumbs       r�quick_ratioZSequenceMatcher.quick_rations����?�?�"�+-�-�D�O�j��v�v�
=��",�.�.��a�"8�1�"<�
��
=��_�_�
���!�.�.��'��6�6�	&�C���}�}��z��!�~�~�c�1�-�����E�J��a�x�!�A�+��	&� ���T�V�V��s�4�6�6�{�)B�C�Crcs��[UR5[UR5p![[	X5X-5$r)r.rrrrX)rrCrDr#r�real_quick_ratioZ SequenceMatcher.real_quick_ratio�s0���T�V�V��c�$�&�&�k�B� ��B��R�W�5�5r)
r&r,r-rrr%rrr$r))NrKrKT)rNrN)�)�__name__�
__module__�__qualname__�__firstlineno__r rr!r"r'r>rJrUr[r^r_r`ZclassmethodrZ__class_getitem__�__static_attributes__rrrrr,sW��X>�@
�3�4�X%�Nr-�hE$�N5�n0�dD�2D�:
6�$�L�1�rrcs��US:�d[SU<35eSUs=::aS::dO [SU<35e/n[5nURU5 UHwnURU5 UR	5U:�dM*UR5U:�dM@UR
5U:�dMVURUR
5U45 My [X$5nUVVs/sHupvUPM	 snn$s snnf)Nrzn must be > 0: grzcutoff must be in [0.0, 1.0]: )	�
ValueErrorrr"r!r`r_r^r+�	_nlargest)ZwordZ
possibilitiesr1�cutoffZresult�srEZscorerTrrr�s���:
��6���3�4�4��&��C���v�G�H�H�
�F���A��J�J�t��
�*��	�
�
�1�
�����6�)��=�=�?�f�$��7�7�9����M�M�1�7�7�9�a�.�)�*��q�
!�F�$�%�(�%�A�%�%��%s�
C/csD�SRS[X555$)NrKc3sb# �UH&upUS:XaUR5(aUOUv� M( g7f)� N)Zisspace)r\ZcZtag_cr#rr]Z$_keep_original_ws.<locals>.<genexpr>�s.�����A��c�\�a�i�i�k�k��u�4��s�-/)�joinZzip)rjZtag_srr�_keep_original_wsrm�s$��
�7�7���A�
���rcsB�\rSrSrSSjrSrSrSrSrSr	S	r
S
rg)ri�Ncs�XlX lgr��linejunk�charjunk)rrorpr#rr ZDiffer.__init__*s��(!�
� �
rc	#st# �[URX5nUR5H�upEpgnUS:XaURXXbXx5n	O]US:XaUR	SXU5n	OCUS:XaUR	SX'U5n	O)US:XaUR	SXU5n	O[SU<35eU	Shv�N M� gN	7f)	NrLrM�-rN�+rOrk�unknown tag )rrorU�_fancy_replace�_dumprg)
rrr�cruncherrSr7r8r9r:�grZr�compareZDiffer.compareAs����4#�4�=�=�!�7��'/�';�';�'=�	�#�C�c���i���'�'����A������J�J�s�A�C�0������J�J�s�A�C�0������J�J�s�A�C�0�� �S�!:�;�;��L�L�	�
�s�B*B8�,B6�-
B8c#sJ# �[X45HnU<SX%<3v� M g7f)Nrk)r5)rrSrEZloZhir/�      rruZDiffer._dumpjs%����r��	(�A� �!�$�'�'�	(�s�!#c#s�# �Xe-
X2-
:a'URSXEU5nURSXU5nO&URSXU5nURSXEU5nXx4H
n	U	Shv�N M gN	7f)Nrrrq)ru)
rrr7r8rr9r:�firstZsecondrwrZr�_plain_replaceZDiffer._plain_replaceosv����9�s�y� ��Z�Z��Q�S�1�E��Z�Z��Q�S�1�F��Z�Z��Q�S�1�E��Z�Z��Q�S�1�F���	�A��L�L�	��s�A#A1�%A/�&
A1c#s"# �Supx[UR5n	Sup�[XV5H�nXLn
U	RU
5 [X#5HynXnX�:XaU
cX�p�MU	R	U5 U	R5U:�dM:U	R
5U:�dMPU	R5U:�dMfU	R5X�nnnM{ M� Xx:a%U
cURXX4XV5Shv�N gX�SnnnOSn
URXWXEW5Shv�N UUUUnnU
c�S=nnU	RUU5 U	R5HpunnnnnUU-
UU-
nnUS:XaUSU--
nUSU--
nM+US:Xa
USU--
nM;US	:Xa
US
U--
nMKUS:XaUSU--
nUSU--
nMc[S
U<35e URUUUU5Shv�N OSU-v� URUUS-X4US-U5Shv�N gGNN�N5N7f)N)g�G�z��?g�?�NNrrKrLZ^rMrqrNrrrOrkrs�  r()rrpr5r"r!r`r_r^r{�
_fancy_helperrrUrg�_qformat)rrr7r8rr9r:Z
best_ratiorirvZeqiZeqjr;rQr/rPZbest_iZbest_jZaeltZbelt�atags�btagsrSZai1Zai2Zbj1Zbj2rCrDs                             rrtZDiffer._fancy_replace}sv���*(��
�"�4�=�=�1�����
�s��	H�A���B����b�!��3�_�
H���T���8��{�#$�S���!�!�"�%��,�,�.��;��*�*�,�z�9��n�n�&��3�19���1A�1���J��!
H�	H�(���{��.�.�q�s�s�H�H�H��),�3�J�F�F�J��C��%�%�a�f�a�f�E�E�E��v�Y��&�	�d���;���E�E����d�D�)�+3�+?�+?�+A�

@�'��S�#�s�C��s��C�#�I�B���)�#��S�2�X�%�E��S�2�X�%�E��H�_��S�2�X�%�E��H�_��S�2�X�%�E��G�^��S�2�X�%�E��S�2�X�%�E�$��%>�?�?�

@��}�}�T�4���>�>�>���+���%�%�a����3�6�!�8�S�I�I�I�QI�	F�,
?�	J�s[�BH�H�H�49H�-H�.$H�H	�CH�H�*H�H
�H�	H�H�
Hc#s�# �/nX#:a-XV:aURXX4XV5nO,URSXU5nOXV:aURSXEU5nUShv�N gN7f)Nrqrr)rtru)rrr7r8rr9r:rwrTrr~ZDiffer._fancy_helper�sX������9��y��'�'����A���J�J�s�A�C�0��
�Y��
�
�3���,�A����s�AA�A�Ac#s�# �[X5R5n[X$5R5nSU-v� U(aSUS3v� SU-v� U(a	SUS3v� gg7f)N�- z? �
�+ )rm�rstrip)rZalineZbliner�r�rrrZDiffer._qformat�sh��� "�%�/�6�6�8��!�%�/�6�6�8���U�l����u�g�R�.� ��U�l����u�g�R�.� ��s�A!A#)rpror|)rbrcrdrer rxrur{rtr~rrfrrrrr�s*��l!�.'�R(�
�\J�|
�!rrNz
\s*(?:#\s*)?$cs�U"U5SL$rr)�lineZpatrrrrs���t�9�D� � rcs
�X;$rr)ZchZwsrrrr%s�� �8�Orcs|�US-nX-
nUS:XaSRU5$U(dUS-nSRX#5$�Nr(z{}z{},{}��format�ZstartZstopZ	beginningr�    r�_format_range_unifiedr�<sE����	�I�
�\�F�
��{��{�{�9�%�%���Q��	��>�>�)�,�,rc	#s|# �[XX#XEU5 Sn[SX5RU5GHn	U(d^SnU(aSRU5OSn
U(aSRU5OSnSRX*U5v� SRX;U5v� U	SU	Sp�[	US	U
S
5n[	USU
S5nS
RX�U5v� U	HXunnnnnUS:XaUUUH
nSU-v� M M$US;aUUUH
nSU-v� M US;dMEUUUH
nSU-v� M MZ GM g7f)NFT�	{}rK�
--- {}{}{}z
+++ {}{}{}rrVr(�ra�z@@ -{} +{} @@{}rOrk�rMrLrq�rNrLrr)�_check_typesrr[r�r�)rr�fromfile�tofile�fromfiledate�
tofiledater1�lineterm�startedrY�fromdate�todaterz�last�file1_range�file2_rangerSrFrHrGrIr�s                      rrrGsk���R��x��8�L��G� ��a�*�>�>�q�A�%����G�6B�v�}�}�\�2��H�2<�V�]�]�:�.�"�F��%�%�h�(�C�C��%�%�f�h�?�?��A�h��b�	�t�+�E�!�H�d�1�g�>��+�E�!�H�d�1�g�>���&�&�{��J�J�#(�
	%��C��R��R��g�~��b��H�%�D���*�$�%���+�+��b��H�%�D���*�$�%��+�+��b��H�%�D���*�$�%�
	%�%�s�DD<�D<cs��US-nX-
nU(dUS-nUS::aSRU5$SRX"U-S-
5$r�r�r�r�r�_format_range_contextr��sO����	�I�
�\�F���Q��	�
��{��{�{�9�%�%��>�>�)��%7�!�%;�<�<rc	#s"# �[XX#XEU5 [SSSSS9nSn	[SX5RU5GHOn
U	(d^Sn	U(aSR	U5OS	nU(aSR	U5OS	nS
R	X+U5v� SR	X<U5v� U
SU
S
p�SU-v� [U
SUS5nSR	X�5v� [
SU
55(a-U
H'unnn nUS:wdMUUUH
nUUU-v� M M) [U
SUS5nSR	UU5v� [
SU
55(dGM"U
H'un nnnUS:wdMUUUH
nUUU-v� M M) GMR g7f)Nr�r�z! r})rNrMrLrOFTr�rKz
*** {}{}{}r�rrVz***************r(r�z
*** {} ****{}c3�4# �UHun   o!S;v� M g7f)r�Nr�r\rS�_r#rr]�context_diff.<locals>.<genexpr>�����I���Q��1�a�+�+�I���rNrar�z
--- {} ----{}c3r�)r�Nrr�r#rr]r��r�r�rM)r��dictrr[r�r�Zany)rrr�r�r�r�r1r��prefixr�rYr�r�rzr�r�rSrFrHr�r�r�rGrIs                        rrr�s����X��x��8�L�
��d�D��
E�F��G� ��a�*�>�>�q�A�1����G�6B�v�}�}�\�2��H�2<�V�]�]�:�.�"�F��%�%�h�(�C�C��%�%�f�h�?�?��A�h��b�	�t��(�*�*�+�E�!�H�d�1�g�>���$�$�[�;�;��I�5�I�I�I�%*�
1�!��R��Q���(�?� !�"�R��1��$�S�k�D�0�0�1�
1�
,�E�!�H�d�1�g�>���$�$�[�(�;�;��I�5�I�I�I�%*�
1�!��Q��2�r��(�?� !�"�R��1��$�S�k�D�0�0�1�
1�11�s�C<F�AF�F�/ Fcs��U(aE[US[5(d-[S[US5R<SUS<S35eU(aE[US[5(d-[S[US5R<SUS<S35eUH'n[U[5(aM[SU<35e g)Nrz"lines to compare must be str, not � (�)z all arguments must be str, not: )Z
isinstanceZstr�	TypeError�typerb)rrZargsZargr�rr�r��s���	��A�a�D�#�&�&���a��d��,�,�a��d�4�5�	5���A�a�D�#�&�&���a��d��,�,�a��d�4�5�	5��K���#�s�#�#��C�I�J�J�Krc	
#s# �Sn	[[X�55n[[X�55nU	"U5nU	"U5nU	"U5nU	"U5nU	"U5nU"XX4XVXx5n
U
HnURSS5v� M g7f)Ncs��URSS5$![a/nS[U5R<SU<S3n[	U5UeSnAff=f)N�ascii�surrogateescapez!all arguments must be bytes, not r�r�)�decodeZAttributeErrorr�rbr�)rjZerrZmsgr#rr�Zdiff_bytes.<locals>.decodesK��	*��8�8�G�%6�7�7���	*���G�$�$�a�)�C��C�.�c�)��	*�s��
A
�*A�A
r�r�)rArB�encode)Zdfuncrrr�r�r�r�r1r�r��linesr�r2rr	r	�s����*�	
�S��^��A��S��^��A��h��H�
�F�^�F��,�'�L��
�#�J��h��H��!��,�A�P�E��6���k�k�'�#4�5�5�6�s�A=A?cs6�[X#5RX5$r)rrx)rrrorpr�rrrs��F�(�%�-�-�a�3�3rc#sN^^^^# �SSKnUR"S5m[XX45mSS/4U4SjjmUU4SjmU4SjnU"5nUcUShv�N gUS-
nSnSS/U-p�SnUSLa%[U5up�nX�-nX�U4X�'U	S-
n	USLaM%X�:�aSv� UnOU	nSn	U(aX�-nU	S-
n	X�v� US-nU(aMUS-
nU(a/[U5up�nU(aUS-
nOUS-nX�U4v� U(aM/M�N�![a gf=f![a gf=f7f)	Nrz
(\++|\-+|\^+)cs�>�X2==S-
ss'UcX2URS5SS4$US:XaoURS5URS5pT/nU4SjnTRXu5 [U5H unup�USU	S-U-XIU
-S-XJS-nM" USSnO(URS5SSnU(dSnSU-U-S-nX2U4$)	Nr(rr��?cs��URURS5SUR5/5 URS5$)Nr(r)r+rYZspan)Zmatch_object�sub_inforr�record_sub_infoZ3_mdiff.<locals>._make_line.<locals>.record_sub_info�s=������!3�!3�A�!6�q�!9�,�:K�:K�:M� N�O�#�)�)�!�,�,r��rk)r@ZsubZreversed)r�Z
format_key�sideZ	num_lines�textZmarkersr�r�ZkeyZbeginZend�	change_res           �r�
_make_lineZ_mdiff.<locals>._make_linefs���.	��1������O�E�I�I�a�L���$4�5�5����!�I�I�a�L�%�)�)�A�,�'��H�6>�
-�
�M�M�/�2�$,�H�#5�
N���K�U��A�e�}�T�)�#�-�d��o�=�d�B�4��:�M��
N����8�D��9�9�Q�<���#�D�����*�$�t�+�d�2�D����%�%rc3s>># �/nSup[U5S:a,UR[TS55 [U5S:aM,SRUVs/sHo3SPM	 sn5nUR	S5(aUnGO�UR	S5(aT"USS5T"USS	5S4v� M�UR	S
5(aUS	-nT"USS5SS4v� M�UR	S5(aT"USS5SpeUS	-
SpGOBUR	S
5(aT"USS5T"USS	5S4v� GM-UR	S5(aT"USS5T"USS	5S4v� GM]UR	S5(aUS	-nT"USS5SS4v� GM�UR	S5(aUS	-
nST"USS	5S4v� GM�UR	S5(aST"USS	5peUS	-SpO`UR	S5(aUS	-
nST"USS	5S4v� GMUR	S5(aT"USSSS5T"USS	5S4v� GM?US:aUS	-
nSv� US:aMUS:�aUS	-nSv� US:�aMUR	S5(agWWS4v� GM�s snf7f)N)rrTr�ZXrKrz-?+?r�r(z--++rq)z--?+z--+r�z-+?z-?+z+--rr)r�z+-rkF)N�rKr�T)r�NT)r.r+�nextrlZ
startswith)	r�Znum_blanks_pendingZnum_blanks_to_yieldr�rj�	from_line�to_liner��diff_lines_iterators	       ��r�_line_iteratorZ_mdiff.<locals>._line_iterator�s�������26�/����e�*�q�.����T�"5�s�;�<��e�*�q�.����U�3�T�a��3�4�A��|�|�C� � �'9�#����f�%�%� ��s�1�-�z�%��A�/F��L�L�����f�%�%�#�a�'�"� ��s�1�-�t�T�9�9�����3�4�4�%/�u�S��$;�T�'�9K�A�9M�a�$6����e�$�$� ��t�A�.�
�5��Q�0G��M�M�����e�$�$� ��s�1�-�z�%��Q�/G��M�M�����c�"�"�"�a�'�"� ��s�1�-�t�T�9�9�����e�$�$�#�a�'�"��J�u�S��3�T�9�9�����l�+�+�%)�:�e�C��+B�7�9K�A�9M�a�$6����c�"�"�"�a�'�"��J�u�S��3�T�9�9�����c�"�"� ��q��$�q�1�*�U�4��2J�5�P�P��&��)�#�q�(�#�)�)�&��)�&��)�#�q�(�#�)�)�&��)��|�|�C� � �����,�,�M��4�s%�AJ�J�
J�"G<J� J�7&Jc3s�># �T"5n//p![U5S:Xd[U5S:Xa[[U5up4nUbURX545 UbURXE45 [U5S:XaMJ[U5S:XaM[UR	S5up6UR	S5upGX4U=(d U4v� M�![a gf=f7fr?)r.r��
StopIterationr+r@)	Z
line_iterator�	fromlines�tolinesr�r��
found_diffZfromDiffZto_diffr�s	        �r�_line_pair_iteratorZ#_mdiff.<locals>._line_pair_iterator�s�����'�(�
��R�'���y�>�1�$��G��a���59�-�5H�2�I�
��(��$�$�i�%;�<��&��N�N�G�#7�8��y�>�1�$��G��a��#,�-�-��"2��I�&�{�{�1�~��G��X�%8��9�9���
%����s3�*C�B?�9C�7C�7C�?
C�	C�C�Cr(F)NNN)�re�compilerr�r�)r�r��contextrorpr�r�Zline_pair_iteratorZlines_to_writeZindexZcontextLinesr�r�r�r/r�r�r�r�s               @@@@r�_mdiffr�<s�����D��
�
�+�,�I� �	�(�D��78��e�6&�pV-�p:�B-�.����%�%�%�	�1������#$�d�V�W�%5�<��J���%��59�:L�5M�2�I�
��O��#,�z�"B�����
����%���&�&�!(��!&���� ��O����
��"�o�%��!�#��	!�.�%�Q�Y�N�
�$�59�:L�5M�2�I�
�!�)0����&�!�+��#�j�8�8�%�n�=�
	&��%�����:!�
��
�sf�A
D%�D�D%�-D�;D%�2D%�D%�4D�D%�
D�D%�D�D%�
D"�D%�!D"�"D%an
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>
    <meta http-equiv="Content-Type"
          content="text/html; charset=%(charset)s" />
    <title></title>
    <style type="text/css">%(styles)s
    </style>
</head>

<body>
    %(table)s%(legend)s
</body>

</html>aH
        table.diff {font-family:Courier; border:medium;}
        .diff_header {background-color:#e0e0e0}
        td.diff_header {text-align:right}
        .diff_next {background-color:#c0c0c0}
        .diff_add {background-color:#aaffaa}
        .diff_chg {background-color:#ffff77}
        .diff_sub {background-color:#ffaaaa}aZ
    <table class="diff" id="difflib_chg_%(prefix)s_top"
           cellspacing="0" cellpadding="0" rules="groups" >
        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
        %(header_row)s
        <tbody>
%(data_rows)s        </tbody>
    </table>a�
    <table class="diff" summary="Legends">
        <tr> <th colspan="2"> Legends </th> </tr>
        <tr> <td> <table border="" summary="Colors">
                      <tr><th> Colors </th> </tr>
                      <tr><td class="diff_add">&nbsp;Added&nbsp;</td></tr>
                      <tr><td class="diff_chg">Changed</td> </tr>
                      <tr><td class="diff_sub">Deleted</td> </tr>
                  </table></td>
             <td> <table border="" summary="Links">
                      <tr><th colspan="2"> Links </th> </tr>
                      <tr><td>(f)irst change</td> </tr>
                      <tr><td>(n)ext change</td> </tr>
                      <tr><td>(t)op</td> </tr>
                  </table></td> </tr>
    </table>cs��\rSrSr\r\r\r\rSrSSS\	4Sjr
SSS.SjjrS	rS
r
SrSrS
rSrSrSSjrSrg)r
i�riNcs4�XlX lX0lX@lgr)�_tabsize�_wrapcolumn�	_linejunk�	_charjunk)rZtabsizeZ
wrapcolumnrorprrr ZHtmlDiff.__init__�s�� �
�%��!��!�rzutf-8)�charsetcs��UR[URURUR	XX4XVS9US9-RUS5R
U5$)N)r��numlines)ZstylesZlegend�tabler�Zxmlcharrefreplace)�_file_templater��_styles�_legend�
make_tabler�r�)rr�r��fromdesc�todescr�r�r�rTr�	make_fileZHtmlDiff.make_file�s`��&�#�#�d��<�<��<�<��/�/�)�h�*1�"�F��'
�
��6�'�.�/���w��
	@rcs�^�U4SjnUVs/sH
oC"U5PM nnUVs/sH
oC"U5PM nnX4$s snfs snf)Ncs�>�URSS5nURTR5nURSS5nURSS5RS5$)Nrkr��	r�)rLZ
expandtabsr�r�)r�rs �r�expand_tabsZ2HtmlDiff._tab_newline_replace.<locals>.expand_tabs�sS����<�<��D�)�D��?�?�4�=�=�1�D��<�<��D�)�D��<�<��S�)�0�0��6�6rr)rr�r�r�r�s`    r�_tab_newline_replaceZHtmlDiff._tab_newline_replace�sK���	7�4=�=�4�[��&�=�	�=�18�9��;�t�$�9��9�� � ��>��9s�7�<cs��U(dURX#45 g[U5nURnXE::dXCRS5S--
U::aURX#45 gSnSnSnXu:aBXd:a=X6S:XaUS-
nX6nUS-
nOX6S:XaUS-
nSnO
US-
nUS-
nXu:aXd:aM=USUn	X6Sn
U(a
U	S-n	SU-U
-n
URX)45 UR	USU
5 g)Nr�rarrKr(r��>)r+r.r�Zcount�_split_line)rZ	data_listZline_numr�rRrWr/r1ZmarkZline1Zline2�           rr�ZHtmlDiff._split_line�s)������h�_�-���4�y�������K�d�Z�Z��%5�a�%7�8�S�@����h�_�-��
��
�����g�!�(��w�$���Q����w���Q�����D���Q������Q����Q����g�!�(��R�a����R���
��D�L�E��4�K�%�'�E�	���(�)�*�	
����3�u�-rc#sT# �UH�up#nUcX#U4v� MX#supVupx//p�URX�U5 URX�U5 U	(d	U
(dMPU	(aU	RS5nOSnU
(aU
RS5nOSnX#U4v� U	(aMEU
(aMNM� g7f)Nr)rKrk)r�r@)r�diffs�fromdata�todata�flagZfromlineZfromtextZtolineZtotext�fromlist�tolistr�r�
_line_wrapperZHtmlDiff._line_wrappers����%*�	+� �H�D��|��d�*�*��2:�/��X���!��V����X�x�8����V�6�2��f�f��'�|�|�A��H�'�H��#�Z�Z��]�F�%�F��d�*�*��(�f�f�	+�s�AB(�AB(�B(�#B(cs@�///pCnUH^upVnURUR"SU/UQ765 URUR"SU/UQ765 URU5 M` X#U4$![a% URS5 URS5 NGf=fr3)r+�_format_liner�)rr�r�r��flaglistr�r�r�rTr�_collect_linesZHtmlDiff._collect_lines.s���$&�b����$)�		"� �H�D�
$����� 1� 1�!�D� C�(� C�D��
�
�d�/�/��$�?��?�@�

�O�O�D�!�		"��x�'�'���
$�����%��
�
�d�#�
$�s�AA.�.,B�Bcs"�SU-nSURU<U<S3nURSS5RSS5RS	S
5nURSS5R5nS
U<SU<SU<S3$![a SnNof=f)Nz%dz id="Z"rKZ&z&amp;r�z&gt;Z<z&lt;rk�&nbsp;z<td class="diff_header"z</td><td nowrap="nowrap">z</td>)�_prefixr�rLr�)rr�r�Zlinenumr�Zidryrr�ZHtmlDiff._format_lineCs���	��W�n�G�!%���d�!3�G�<�B�
�\�\�#�g�
&�
.�
.�s�6�
:�
B�
B�3�v�
N���|�|�C��)�0�0�2���W�T�#�	#���	��B�	�s�A?�?B�
Bcs��S[R-nS[R-n[=RS-
slX/Ulg)Nzfrom%d_zto%d_r()r
�_default_prefixr�)rZ
fromprefix�toprefixr#r�_make_prefixZHtmlDiff._make_prefixZs?��
��!9�!9�9�
��X�5�5�5��� � �A�%� �"�,��rcs��URSnS/[U5-nS/[U5-nSup�Sn[U5HAup�U
(a3U
(d*Sn
Un[SX�-
/5nSXi4-X|'U	S-
n	SXi4-X�'M=M?Sn
MC U(dS/nS/nS/nSnU(aS	/nUnOS
/=pUS(dSU-US'SU-X�'XX8U4$)
Nr(rK)rFrTz id="difflib_chg_%s_%d"z"<a href="#difflib_chg_%s_%d">n</a>Fz2<td></td><td>&nbsp;No Differences Found&nbsp;</td>z(<td></td><td>&nbsp;Empty File&nbsp;</td>z!<a href="#difflib_chg_%s_0">f</a>z#<a href="#difflib_chg_%s_top">t</a>)r�r.r*rW)rr�r�r�r�r�r��next_id�	next_hrefZnum_chgZ	in_changer�r/r�s              r�_convert_flagsZHtmlDiff._convert_flagses���<�<��?���$�s�8�}�$���D��X��&�	�%�������)�	"�F�A�� � $�I��D��Q�q�z�N�+�A�!:�h�=O�!O�G�J��q�L�G�&J�!�N+�'+�I�O�!�"�	�!	"�$��w�H��d�G���I��D��P�Q��!��%O�$P�P����{�>��I�I�a�L�?�8�L�	���x�'�9�9rc
s`�UR5 URX5upU(aUnOSn[XXpRURS9nUR
(aUR
U5nURU5up�nURX�X�U5up�p�n
/nSn[[U55HKnUUcUS:�aURS5 M"M$URX�UUUU	UUUU
U4-5 MM U(dU(aSS<SU-<S<SU-<S3nOS	nUR[S	RU5UURS
S9-nUR!SS
5R!SS5R!SS5R!SS5R!SS5$)NrnzV            <tr><td class="diff_next"%s>%s</td>%s<td class="diff_next">%s</td>%s</tr>
rz)        </tbody>        
        <tbody>
z<thead><tr>z!<th class="diff_next"><br /></th>z+<th colspan="2" class="diff_header">%s</th>z
</tr></thead>rKr()Z	data_rows�
header_rowr�z+z<span class="diff_add">z-z<span class="diff_sub">z^z<span class="diff_chg">r�z</span>r�r�)r�r�r�r�r�r�r�r�r�r5r.r+�_table_templater�rlr�rL)rr�r�r�r�r�r�Z
context_linesr�r�r�r�r�r�rjZfmtr/r�r�r=rr�ZHtmlDiff.make_table�s���(	
����!�5�5�i�H��	��$�M� �M��y����#�~�~�/������&�&�u�-�E�$(�#6�#6�u�#=� ���6:�5H�5H��H�X�67�2���7�
��7���s�8�}�%�	D�A���{�"��q�5��H�H�J�K�����#���I�a�L��!��+4�Q�<��q�	�!C�C�D�	D��v��3�=��H�3�=��F�	H�J��J��$�$�t��g�g�a�j�!��<�<��?�($�$��
�}�}�U�#<�=��W�U�#<�=��W�U�#<�=��W�T�)�,��W�T�(�+�		,r)
r�r�r�r�r�r�r�r�r�r�)rKrKFi)rbrcrdrer�r�r�r�r�rr r�r�r�r�r�r�r�r�r�rfrrrr
r
�sz�� $�N��G�%�O��G��O��4��+�"�"AC�*+�@�8?�@�6!�.5.�n+�8(�*#�.	-�-:�^IN��K,rr
c#s�# �SSS.[U5nSU4nUHnUSSU;dMUSSv� M g![a [SU-5Sef=f7f)Nr�r�)r(r�z)unknown delta choice (must be 1 or 2): %rr}r�)ZintZKeyErrorrg)ZdeltaZwhichrSZprefixesr�rrrr�s{���,.��4� ��U��,���c�{�H�������8�x���q�r�(�N���	�.��D�"�#�$�)-�	.�.�s�A�5�A�A�A�Acs4�SSKnSSKnURU5$r?)�doctest�difflibZtestmod)r�r�rr�_testr�s����?�?�7�#�#rZ__main__)rag333333�?)z 	)rKrKrKrKrar�)rrrrras
)%Z__all__Zheapqr
rhZcollectionsrZ_namedtupleZtypesrrrrrrmrr�r�Zmatchrrr�rr�rr�r	rr�r�r�r�r�Zobjectr
rr�rbrrr�<module>r�s��:>��(�1���G�Z�(���
k	2�k	2�\.&�b�l!�l!�~	
��:�:�&6�7�=�=�!� �.	-�=?�.2�B%�R	=�,.�?C�J1�XK�"25�?D�6�<�(9�#4�J(,�d�%�K�\��(0������"],�v�],�~
��@$��z��	�G�r