B YI~d9Eã@s¼ddlZddlZddlZddlmZdgZe d¡Ze d¡Ze d¡Z e d¡Z e d¡Z e d ¡Z e d ¡Z e d ¡Ze d ¡Ze d ej¡Ze d ¡Ze d¡ZGdd„dejƒZdS)é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@säeZdZdZddœdd„Zdd„Zdd „Zd d „Zd Zd d„Z dd„Z dd„Z dd„Z dd„Z d8dd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd S)9r)ZscriptZstyleT)Úconvert_charrefscCs||_| ¡dS)N)rÚreset)Úselfr©rú0/opt/alt/python37/lib64/python3.7/html/parser.pyÚ__init__WszHTMLParser.__init__cCs(d|_d|_t|_d|_tj |¡dS)NÚz???)ÚrawdataÚlasttagÚinteresting_normalÚ interestingÚ cdata_elemÚ _markupbaseÚ ParserBaser)rrrr r`s zHTMLParser.resetcCs|j||_| d¡dS)Nr)r Úgoahead)rÚdatarrr Úfeedhs zHTMLParser.feedcCs| d¡dS)Né)r)rrrr ÚcloseqszHTMLParser.closeNcCs|jS)N)Ú_HTMLParser__starttag_text)rrrr Úget_starttag_textwszHTMLParser.get_starttag_textcCs$| ¡|_t d|jtj¡|_dS)Nz )ÚlowerrÚreÚcompileÚIr)rÚelemrrr Úset_cdata_mode{s zHTMLParser.set_cdata_modecCst|_d|_dS)N)rrr)rrrr Úclear_cdata_modeszHTMLParser.clear_cdata_modec Cs@|j}d}t|ƒ}xº||krÎ|jrx|jsx| d|¡}|dkr | dt||dƒ¡}|dkrrt d¡  ||¡srP|}n(|j   ||¡}|r”|  ¡}n |jrœP|}||krÞ|jrÌ|jsÌ|  t |||…ƒ¡n|  |||…¡| ||¡}||krôP|j}|d|ƒrDt ||¡r | |¡} n„|d|ƒr8| |¡} nl|d|ƒrP| |¡} nT|d|ƒrh| |¡} n<|d |ƒr€| |¡} n$|d |kr¢|  d¡|d } nP| dkr6|s¶P| d |d ¡} | dkrô| d|d ¡} | dkrü|d } n| d 7} |jr$|js$|  t ||| …ƒ¡n|  ||| …¡| || ¡}q|d |ƒrèt ||¡}|r¬| ¡d d…} | | ¡| ¡} |d| d ƒsœ| d } | || ¡}qn:d||d…krä|  |||d …¡| ||d ¡}Pq|d|ƒrt ||¡}|rF| d ¡} | | ¡| ¡} |d| d ƒs8| d } | || ¡}qt ||¡}|rž|rš| ¡||d…krš| ¡} | |krŠ|} | ||d ¡}Pn,|d |krÈ|  d¡| ||d ¡}nPqqW|r.||kr.|js.|jr|js|  t |||…ƒ¡n|  |||…¡| ||¡}||d…|_dS)Nrú<ú&é"z[\s;]zÚ z/>)rÚcheck_for_whole_start_tagr Útagfind_tolerantr0r9r7rr Úattrfind_tolerantrÚappendÚstripZgetposÚcountr'r)r-ÚendswithÚhandle_startendtagÚhandle_starttagÚCDATA_CONTENT_ELEMENTSr)rr=Úendposr Úattrsr0r@ÚtagÚmZattrnameÚrestZ attrvaluer9ÚlinenoÚoffsetrrr r1-sP   &(         zHTMLParser.parse_starttagcCs¶|j}t ||¡}|rª| ¡}|||d…}|dkr>|dS|dkr~| d|¡rZ|dS| d|¡rjdS||krv|S|dS|dkrŠdS|dkr–dS||kr¢|S|dStd ƒ‚dS) Nrrú/z/>r$r%r z6abcdefghijklmnopqrstuvwxyz=/ABCDEFGHIJKLMNOPQRSTUVWXYZzwe should not get here!)r Úlocatestarttagend_tolerantr0r9r.ÚAssertionError)rr=r r\r?Únextrrr rO`s.   z$HTMLParser.check_for_whole_start_tagcCs|j}t ||d¡}|sdS| ¡}t ||¡}|sÀ|jdk rV| |||…¡|St ||d¡}|s|||d…dkr†|dS|  |¡S|  d¡  ¡}|  d| ¡¡}|  |¡|dS|  d¡  ¡}|jdk rø||jkrø| |||…¡|S|  |¡| ¡|S)Nrr%r$rCzr)r Ú endendtagr+r9Ú endtagfindr0rr-rPrFr7rr(Ú handle_endtagr )rr=r r0rGZ namematchZtagnamerrrr r2‚s6       zHTMLParser.parse_endtagcCs| ||¡| |¡dS)N)rWrf)rr[rZrrr rVªs zHTMLParser.handle_startendtagcCsdS)Nr)rr[rZrrr rW¯szHTMLParser.handle_starttagcCsdS)Nr)rr[rrr rf³szHTMLParser.handle_endtagcCsdS)Nr)rrArrr r8·szHTMLParser.handle_charrefcCsdS)Nr)rrArrr r;»szHTMLParser.handle_entityrefcCsdS)Nr)rrrrr r-¿szHTMLParser.handle_datacCsdS)Nr)rrrrr rHÃszHTMLParser.handle_commentcCsdS)Nr)rZdeclrrr rEÇszHTMLParser.handle_declcCsdS)Nr)rrrrr rKËszHTMLParser.handle_picCsdS)Nr)rrrrr Ú unknown_declÎszHTMLParser.unknown_declcCstjdtddt|ƒS)NzZThe unescape method is deprecated and will be removed in 3.5, use html.unescape() instead.r$)Ú stacklevel)ÚwarningsÚwarnÚDeprecationWarningr)rÚsrrr rÒs zHTMLParser.unescape)r)Ú__name__Ú __module__Ú __qualname__rXr rrrrrrr rr5rFr4r1rOr2rVrWrfr8r;r-rHrErKrgrrrrr r?s6  z  3"()rrirZhtmlrÚ__all__rrr<r:r6r/rJZ commentcloserPrQÚVERBOSErardrerrrrrr Ú s&