PNG  IHDR* pHYs+ IDATx]n#; cdLb Ǚ[at¤_:uP}>!Usă cag޿ ֵNu`ݼTâabO7uL&y^wFٝA"l[|ŲHLN밪4*sG3|Dv}?+y߉{OuOAt4Jj.u]Gz*҉sP'VQKbA1u\`& Af;HWj hsO;ogTu uj7S3/QzUr&wS`M$X_L7r2;aE+ώ%vikDA:dR+%KzƉo>eOth$z%: :{WwaQ:wz%4foɹE[9<]#ERINƻv溂E%P1i01 |Jvҗ&{b?9g=^wζXn/lK::90KwrюO\!ջ3uzuGv^;騢wq<Iatv09:tt~hEG`v;3@MNZD.1]L:{ծI3`L(÷ba")Y.iljCɄae#I"1 `3*Bdz>j<fU40⨬%O$3cGt]j%Fߠ_twJ;ABU8vP3uEԑwQ V:h%))LfraqX-ۿX]v-\9I gl8tzX ]ecm)-cgʒ#Uw=Wlێn(0hPP/ӨtQ“&J35 $=]r1{tLuǮ*i0_;NƝ8;-vݏr8+U-kruȕYr0RnC]*ެ(M:]gE;{]tg(#ZJ9y>utRDRMdr9㪩̞zֹb<ģ&wzJM"iI( .ꮅX)Qw:9,i좜\Ԛi7&N0:asϓc];=ΗOӣ APqz93 y $)A*kVHZwBƺnWNaby>XMN*45~ղM6Nvm;A=jֲ.~1}(9`KJ/V F9[=`~[;sRuk]rєT!)iQO)Y$V ی ۤmzWz5IM Zb )ˆC`6 rRa}qNmUfDsWuˤV{ Pݝ'=Kֳbg,UҘVz2ﴻnjNgBb{? ߮tcsͻQuxVCIY۠:(V뺕 ٥2;t`@Fo{Z9`;]wMzU~%UA蛚dI vGq\r82iu +St`cR.6U/M9IENDB`3 \AE@sdZddlZddlZddlZddlmZdgZejdZejdZ ejdZ ejdZ ejd Z ejd Z ejd Zejd Zejd ZejdejZejd ZejdZGdddejZdS)zA parser for HTML and XHTML.N)unescape HTMLParserz[&<]z &[a-zA-Z#]z%&([a-zA-Z][-.a-zA-Z0-9]*)[^a-zA-Z0-9]z)&#(?:[0-9]+|[xX][0-9a-fA-F]+)[^0-9a-fA-F]z <[a-zA-Z]>z--\s*>z+([a-zA-Z][^\t\n\r\f />\x00]*)(?:\s|/(?!>))*z]((?<=[\'"\s/])[^\s/>][^\s/=>]*)(\s*=+\s*(\'[^\']*\'|"[^"]*"|(?![\'"])[^>\s]*))?(?:\s|/(?!>))*aF <[a-zA-Z][^\t\n\r\f />\x00]* # tag name (?:[\s/]* # optional whitespace before attribute name (?:(?<=['"\s/])[^\s/>][^\s/=>]* # attribute name (?:\s*=+\s* # value indicator (?:'[^']*' # LITA-enclosed value |"[^"]*" # LIT-enclosed value |(?!['"])[^>\s]* # bare value ) (?:\s*,)* # possibly followed by a comma )?(?:\s|/(?!>))* )* )? \s* # trailing whitespace z#c@seZdZdZd:ZddddZdd Zd d Zd d ZdZ ddZ ddZ ddZ ddZ ddZd;ddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9ZdS)'.)_HTMLParser__starttag_text)r r r r get_starttag_textwszHTMLParser.get_starttag_textcCs$|j|_tjd|jtj|_dS)Nz )lowerrrecompileIr)r elemr r r set_cdata_mode{s zHTMLParser.set_cdata_modecCst|_d|_dS)N)rrr)r r r r clear_cdata_modeszHTMLParser.clear_cdata_modec CsZ|j}d}t|}x||kr|jr||j r||jd|}|dkr|jdt||d}|dkrvtjdj || rvP|}n(|j j ||}|r|j }n |jrP|}||kr|jr|j r|j t |||n|j ||||j||}||krP|j}|d|rLtj||r&|j|} n|d|r>|j|} nl|d|rV|j|} nT|d|rn|j|} n<|d |r|j|} n$|d |kr|j d|d } nP| dkr>|sP|jd |d } | dkr|jd|d } | dkr|d } n| d 7} |jr,|j r,|j t ||| n|j ||| |j|| }q|d |rtj||}|r|jd d} |j| |j} |d| d s| d } |j|| }qn:d||dkr|j |||d |j||d }Pq|d|rtj||}|rP|jd } |j| |j} |d| d sB| d } |j|| }qtj||}|r|r|j||dkr|j} | |kr|} |j||d }Pn,|d |kr|j d|j||d }nPqdstdqW|rH||krH|j rH|jr*|j r*|j t |||n|j ||||j||}||d|_dS)Nr<&"z[\s;]zd S|rX|j||d||dS) Nr& r(r(r()rrS)rcheck_for_whole_start_tagrtagfind_tolerantr2r?r;r9rrattrfind_tolerantrappendstripZgetposcountr)r+r/endswithhandle_startendtaghandle_starttagCDATA_CONTENT_ELEMENTSr!)r r@endposrattrsr2rCtagmZattrnamerestZ attrvaluer;linenooffsetr r r r3-sR    (*         zHTMLParser.parse_starttagcCs|j}tj||}|r|j}|||d}|dkr>|dS|dkr~|jd|rZ|dS|jd|rjd S||krv|S|dS|dkrd S|dkrd S||kr|S|dStddS) Nrr/z/>r&r z6abcdefghijklmnopqrstuvwxyz=/ABCDEFGHIJKLMNOPQRSTUVWXYZzwe should not get here!r(r(r()rlocatestarttagend_tolerantr2r;r0r?)r r@rrbrBnextr r r rU`s.   z$HTMLParser.check_for_whole_start_tagcCs2|j}|||ddks"tdtj||d}|s:dS|j}tj||}|s|jdk rr|j||||St j||d}|s|||ddkr|dS|j |S|j dj }|j d|j}|j||dS|j dj }|jdk r||jkr|j||||S|j|j |j|S) Nr&zrr()rr? endendtagr-r; endtagfindr2rr/rVrIr9rr* handle_endtagr")r r@rr2rJZ namematchZtagnamer r r r r4s8      zHTMLParser.parse_endtagcCs|j|||j|dS)N)r]rk)r rar`r r r r\s zHTMLParser.handle_startendtagcCsdS)Nr )r rar`r r r r]szHTMLParser.handle_starttagcCsdS)Nr )r rar r r rkszHTMLParser.handle_endtagcCsdS)Nr )r rDr r r r:szHTMLParser.handle_charrefcCsdS)Nr )r rDr r r r=szHTMLParser.handle_entityrefcCsdS)Nr )r rr r r r/szHTMLParser.handle_datacCsdS)Nr )r rr r r rMszHTMLParser.handle_commentcCsdS)Nr )r Zdeclr r r rHszHTMLParser.handle_declcCsdS)Nr )r rr r r rPszHTMLParser.handle_picCsdS)Nr )r rr r r unknown_declszHTMLParser.unknown_declcCstjdtddt|S)NzZThe unescape method is deprecated and will be removed in 3.5, use html.unescape() instead.r&) stacklevel)warningswarnDeprecationWarningr)r sr r r rs zHTMLParser.unescape)rr)r)__name__ __module__ __qualname____doc__r^r rrrrrr!r"rr7rIr6r3rUr4r\r]rkr:r=r/rMrHrPrlrr r r r r?s8  z  3"()rurrnrZhtmlr__all__rrr>r<r8r1rOZ commentcloserVrWVERBOSErgrirjrrr r r r s(