online ˆÂÁ „`_À¾Ã?÷a ´ikEã@s,gd¢ZddlmZddlmZddlmZeddƒZ dd„Z Gd d „d ƒZ d9d d„Z dd„Z Gdd„dƒZddlZe d¡jfdd„Zd:dd„Zdd„Zd;dd„Zd d!„Zd) Úget_close_matchesÚndiffÚrestoreÚSequenceMatcherÚDifferÚIS_CHARACTER_JUNKÚ IS_LINE_JUNKÚ context_diffÚ unified_diffÚ diff_bytesÚHtmlDiffÚMatché)Únlargest)Ú namedtuple)Ú GenericAliasr za b sizecCs|rd||SdS)Ng@çð?©)ÚmatchesÚlengthrrú/usr/lib64/python3.9/difflib.pyÚ_calculate_ratio's rc@szeZdZddd„Zdd„Zdd „Zd d „Zd d „Zddd„Zdd„Z dd„Z d dd„Z dd„Z dd„Z dd„ZeeƒZdS)!rNÚTcCs(||_d|_|_||_| ||¡dS©N)ÚisjunkÚaÚbÚautojunkÚset_seqs)ÚselfrrrrrrrÚ__init__xs; zSequenceMatcher.__init__cCs| |¡| |¡dSr)Úset_seq1Úset_seq2)rrrrrrr¸s zSequenceMatcher.set_seqscCs$||jurdS||_d|_|_dSr)rÚmatching_blocksÚopcodes)rrrrrr Äs zSequenceMatcher.set_seq1cCs2||jurdS||_d|_|_d|_| ¡dSr)rr"r#Ú fullbcountÚ_SequenceMatcher__chain_b)rrrrrr!Þs   zSequenceMatcher.set_seq2c Csè|j}i|_}t|ƒD]\}}| |g¡}| |¡qtƒ|_}|j}|r~| ¡D]}||ƒrV|  |¡qV|D] }||=qrtƒ|_ }t |ƒ} |j rä| dkrä| dd} |  ¡D]\}} t | ƒ| kr´|  |¡q´|D] }||=qØdS)NéÈédé)rÚb2jÚ enumerateÚ setdefaultÚappendÚsetÚbjunkrÚkeysÚaddZbpopularÚlenrÚitems) rrr)ÚiÚeltÚindicesZjunkrZpopularÚnZntestZidxsrrrZ __chain_b s,           zSequenceMatcher.__chain_br cCsT|j|j|j|jjf\}}}}|dur.t|ƒ}|dur>t|ƒ}||d} } } i} g} t||ƒD]€}| j}i}| ||| ¡D]\}||krŒq~||kr˜qÜ||ddƒd}||<|| kr~||d||d|} } } q~|} q`| |k�r@| |k�r@||| dƒ�s@|| d|| dk�r@| d| d| d} } } qâ| | |k�r”| | |k�r”||| | ƒ�s”|| | || | k�r”| d7} �q@| |k�rô| |k�rô||| dƒ�rô|| d|| dk�rô| d| d| d} } } �q”| | |k�rH| | |k�rH||| | ƒ�rH|| | || | k�rH| d} �qôt| | | ƒS©Nr r() rrr)r.Ú __contains__r1ÚrangeÚgetr )rÚaloÚahiÚbloÚbhirrr)ZisbjunkZbestiZbestjZbestsizeZj2lenZnothingr3Zj2lengetZnewj2lenÚjÚkrrrÚfind_longest_match1sZ:"ÿþÿþ ÿþ ÿþ z"SequenceMatcher.find_longest_matchcCs||jdur|jSt|jƒt|jƒ}}d|d|fg}g}|rÊ| ¡\}}}}| ||||¡\} } } } | r8| | ¡|| kr–|| kr–| || || f¡| | |kr8| | |kr8| | | || | |f¡q8| ¡d} }}g}|D]V\}}}| ||k�r|||k�r||7}qæ|�r,| | ||f¡|||} }}qæ|�rT| | ||f¡| ||df¡tt t j |ƒƒ|_|jS©Nr ) r"r1rrÚpoprAr,ÚsortÚlistÚmapr Ú_make)rÚlaÚlbÚqueuer"r;r<r=r>r3r?r@ÚxÚi1Új1Zk1Z non_adjacentÚi2Új2Zk2rrrÚget_matching_blocks¥s8    z#SequenceMatcher.get_matching_blockscCs°|jdur|jSd}}g|_}| ¡D]€\}}}d}||krN||krNd}n||kr\d}n ||