"""Ringkas struktur HTML: tag#id.class + teks pendek, untuk memetakan slot data."""
import sys, re
from html.parser import HTMLParser
VOID={'img','br','input','meta','link','hr','source','area','col','embed','param','track','wbr'}
class P(HTMLParser):
    def __init__(s,start_id=None,maxdepth=40):
        super().__init__(convert_charrefs=True); s.d=0; s.out=[]; s.start_id=start_id; s.active=start_id is None; s.base=None; s.maxd=maxdepth
    def handle_starttag(s,t,a):
        a=dict(a)
        if not s.active and a.get('id')==s.start_id: s.active=True; s.base=s.d
        if s.active and t not in ('svg','path','g','circle','rect','line','polyline','polygon','defs','use','symbol','clippath','mask','lineargradient','stop','ellipse'):
            cls='.'.join([c for c in (a.get('class') or '').split() if not c.startswith('data-v')][:4])
            extra=''
            for k in ('src','href','data-img','style','data-fancybox','aria-label','placeholder','name','type'):
                if k in a and a[k]: extra+=f' {k}="{a[k][:70]}"'
            if s.d-(s.base or 0) < s.maxd: s.out.append('  '*(s.d-(s.base or 0))+f'<{t}'+(f'#{a["id"]}' if a.get('id') else '')+(f'.{cls}' if cls else '')+extra+'>')
        if t not in VOID: s.d+=1
    def handle_endtag(s,t):
        if t not in VOID: s.d-=1
        if s.active and s.base is not None and s.d<=s.base: s.active=False
    def handle_data(s,data):
        if s.active and data.strip() and s.d-(s.base or 0) < s.maxd+1: s.out.append('  '*(s.d-(s.base or 0))+'"'+data.strip()[:90]+'"')
html=open(sys.argv[1],encoding='utf-8').read()
if sys.argv[1].endswith('.js'):
    m=re.search(r'=\s*("(?:[^"\\]|\\.)*")',html,re.S); import json; html=json.loads(m.group(1))
p=P(sys.argv[2] if len(sys.argv)>2 and sys.argv[2]!='-' else None, int(sys.argv[3]) if len(sys.argv)>3 else 40); p.feed(html)
print('\n'.join(p.out))
