]> Cypherpunks repositories - gostls13.git/commitdiff
exp/html/atom: add more atoms.
authorNigel Tao <nigeltao@golang.org>
Wed, 6 Jun 2012 23:35:35 +0000 (09:35 +1000)
committerNigel Tao <nigeltao@golang.org>
Wed, 6 Jun 2012 23:35:35 +0000 (09:35 +1000)
This completely covers the tags used by exp/html's parser.

Before:
295 atoms; 1406 string bytes + 2048 tables = 3454 total data
BenchmarkLookup    50000         59841 ns/op

After:
322 atoms; 1508 string bytes + 2048 tables = 3556 total data
BenchmarkLookup    50000         60159 ns/op

R=r
CC=golang-dev
https://golang.org/cl/6296045

src/pkg/exp/html/atom/atom.go
src/pkg/exp/html/atom/atom_test.go
src/pkg/exp/html/atom/gen.go
src/pkg/exp/html/atom/table.go
src/pkg/exp/html/atom/table_test.go

index cc53ec401649ab5393a8c1eb20132e7cfc278b2f..2dbd0fbf7f51cec0932da617b3dd9eac241dfb02 100644 (file)
@@ -3,8 +3,8 @@
 // license that can be found in the LICENSE file.
 
 // Package atom provides integer codes (also known as atoms) for a fixed set of
-// frequently occurring HTML strings: lower-case tag names and attribute keys
-// such as "p" and "id".
+// frequently occurring HTML strings: tag names and attribute keys such as "p"
+// and "id".
 //
 // Sharing an atom's name between all elements with the same tag can result in
 // fewer string allocations when tokenizing and parsing HTML. Integer
@@ -56,7 +56,7 @@ func match(s string, t []byte) bool {
 }
 
 // Lookup returns the atom whose name is s. It returns zero if there is no
-// such atom.
+// such atom. The lookup is case sensitive.
 func Lookup(s []byte) Atom {
        if len(s) == 0 || len(s) > maxAtomLen {
                return 0
index e0cae2db8d03432fa924e203de72f69dc1c0b9c4..6e33704dd5e114c1610e8239f6162a828db39132 100644 (file)
@@ -65,6 +65,27 @@ func TestMisses(t *testing.T) {
        }
 }
 
+func TestForeignObject(t *testing.T) {
+       const (
+               afo = Foreignobject
+               afO = ForeignObject
+               sfo = "foreignobject"
+               sfO = "foreignObject"
+       )
+       if got := Lookup([]byte(sfo)); got != afo {
+               t.Errorf("Lookup(%q): got %#v, want %#v", sfo, got, afo)
+       }
+       if got := Lookup([]byte(sfO)); got != afO {
+               t.Errorf("Lookup(%q): got %#v, want %#v", sfO, got, afO)
+       }
+       if got := afo.String(); got != sfo {
+               t.Errorf("Atom(%#v).String(): got %q, want %q", afo, got, sfo)
+       }
+       if got := afO.String(); got != sfO {
+               t.Errorf("Atom(%#v).String(): got %q, want %q", afO, got, sfO)
+       }
+}
+
 func BenchmarkLookup(b *testing.B) {
        sortedTable := make([]string, 0, len(table))
        for _, a := range table {
index 4adb44073c5d51597e3539b873bef694a0da94fe..866a663a237832fb3929a2f13388f6c5a1ed8831 100644 (file)
@@ -594,11 +594,38 @@ var eventHandlers = []string{
 var extra = []string{
        "align",
        "annotation",
+       "annotation-xml",
        "applet",
+       "basefont",
+       "bgsound",
+       "big",
        "center",
        "color",
+       "desc",
+       "face",
        "font",
+       "foreignObject", // HTML is case-insensitive, but SVG-embedded-in-HTML is case-sensitive.
+       "foreignobject",
        "frame",
        "frameset",
+       "image",
+       "isindex",
+       "listing",
+       "malignmark",
+       "marquee",
+       "math",
+       "mglyph",
+       "mi",
+       "mn",
+       "mo",
+       "ms",
+       "mtext",
        "nobr",
+       "noembed",
+       "noframes",
+       "plaintext",
+       "strike",
+       "svg",
+       "tt",
+       "xmp",
 }
index 05f05f51056826ee9c5637dd035ad20857c5c1c4..6f9a8e6a73f6e77a919776217d202347224a37fe 100644 (file)
@@ -5,624 +5,680 @@ package atom
 const (
        A                Atom = 0x1
        Abbr             Atom = 0x4
-       Accept           Atom = 0x3606
-       AcceptCharset    Atom = 0x360e
-       Accesskey        Atom = 0x4809
-       Action           Atom = 0x21506
-       Address          Atom = 0x22507
-       Align            Atom = 0x8605
-       Alt              Atom = 0x8b03
-       Annotation       Atom = 0x16d0a
-       Applet           Atom = 0x2d706
-       Area             Atom = 0xd004
-       Article          Atom = 0x38307
-       Aside            Atom = 0x9f05
-       Async            Atom = 0x9705
-       Audio            Atom = 0xad05
-       Autocomplete     Atom = 0xc20c
-       Autofocus        Atom = 0xd909
-       Autoplay         Atom = 0xe808
+       Accept           Atom = 0x2106
+       AcceptCharset    Atom = 0x210e
+       Accesskey        Atom = 0x3309
+       Action           Atom = 0x21906
+       Address          Atom = 0x5d107
+       Align            Atom = 0x1105
+       Alt              Atom = 0x4503
+       Annotation       Atom = 0x1870a
+       AnnotationXml    Atom = 0x1870e
+       Applet           Atom = 0x2df06
+       Area             Atom = 0x33304
+       Article          Atom = 0x3bc07
+       Aside            Atom = 0x4f05
+       Async            Atom = 0x9305
+       Audio            Atom = 0xaf05
+       Autocomplete     Atom = 0xd30c
+       Autofocus        Atom = 0xdf09
+       Autoplay         Atom = 0xfa08
        B                Atom = 0x101
-       Base             Atom = 0xf004
-       Bdi              Atom = 0xbb03
-       Bdo              Atom = 0xfe03
-       Blockquote       Atom = 0x1110a
-       Body             Atom = 0x4404
-       Border           Atom = 0x11b06
+       Base             Atom = 0x10204
+       Basefont         Atom = 0x10208
+       Bdi              Atom = 0x1a03
+       Bdo              Atom = 0x11303
+       Bgsound          Atom = 0x12607
+       Big              Atom = 0x14303
+       Blockquote       Atom = 0x1460a
+       Body             Atom = 0x2f04
+       Border           Atom = 0x15006
        Br               Atom = 0x202
-       Button           Atom = 0x12106
-       Canvas           Atom = 0x9b06
-       Caption          Atom = 0x1e607
-       Center           Atom = 0x1aa06
-       Challenge        Atom = 0x24409
-       Charset          Atom = 0x3d07
-       Checked          Atom = 0x1ba07
-       Cite             Atom = 0x1d104
-       Class            Atom = 0x13905
-       Code             Atom = 0x14f04
-       Col              Atom = 0x15603
-       Colgroup         Atom = 0x15608
-       Color            Atom = 0x16305
-       Cols             Atom = 0x16804
-       Colspan          Atom = 0x16807
-       Command          Atom = 0x17c07
-       Content          Atom = 0x2b907
-       Contenteditable  Atom = 0x2b90f
-       Contextmenu      Atom = 0x3320b
-       Controls         Atom = 0x19f08
-       Coords           Atom = 0x1b006
-       Crossorigin      Atom = 0x1c10b
-       Data             Atom = 0x40904
-       Datalist         Atom = 0x40908
-       Datetime         Atom = 0x26108
-       Dd               Atom = 0x22602
-       Default          Atom = 0xa207
-       Defer            Atom = 0x15105
-       Del              Atom = 0x49d03
-       Details          Atom = 0x2907
-       Dfn              Atom = 0x5d03
-       Dialog           Atom = 0xbc06
-       Dir              Atom = 0x6703
-       Dirname          Atom = 0x6707
-       Disabled         Atom = 0x1d708
-       Div              Atom = 0x1de03
-       Dl               Atom = 0x18202
-       Download         Atom = 0x3e608
-       Draggable        Atom = 0x19209
-       Dropzone         Atom = 0x38c08
-       Dt               Atom = 0x4ab02
-       Em               Atom = 0x2502
-       Embed            Atom = 0x2505
-       Enctype          Atom = 0x23607
-       Fieldset         Atom = 0x2e308
-       Figcaption       Atom = 0x1e30a
-       Figure           Atom = 0x1f806
-       Font             Atom = 0x20404
-       Footer           Atom = 0x8e06
-       For              Atom = 0x1ef03
-       Form             Atom = 0x21104
-       Formaction       Atom = 0x2110a
-       Formenctype      Atom = 0x2320b
-       Formmethod       Atom = 0x24d0a
-       Formnovalidate   Atom = 0x2570e
-       Formtarget       Atom = 0x26c0a
-       Frame            Atom = 0x2c905
-       Frameset         Atom = 0x2c908
-       H1               Atom = 0x10f02
-       H2               Atom = 0x29702
-       H3               Atom = 0x4ad02
-       H4               Atom = 0x27602
-       H5               Atom = 0x27802
-       H6               Atom = 0x27a02
-       Head             Atom = 0x30504
-       Header           Atom = 0x30506
-       Headers          Atom = 0x30507
-       Height           Atom = 0x27c06
-       Hgroup           Atom = 0x28806
-       Hidden           Atom = 0x28e06
-       High             Atom = 0x29404
-       Hr               Atom = 0x10a02
-       Href             Atom = 0x29904
-       Hreflang         Atom = 0x29908
-       Html             Atom = 0x28004
-       HttpEquiv        Atom = 0x2a10a
+       Button           Atom = 0x15606
+       Canvas           Atom = 0x4b06
+       Caption          Atom = 0x1de07
+       Center           Atom = 0x2ed06
+       Challenge        Atom = 0x23c09
+       Charset          Atom = 0x2807
+       Checked          Atom = 0x31a07
+       Cite             Atom = 0x9704
+       Class            Atom = 0x35a05
+       Code             Atom = 0x16904
+       Col              Atom = 0x17003
+       Colgroup         Atom = 0x17008
+       Color            Atom = 0x17d05
+       Cols             Atom = 0x18204
+       Colspan          Atom = 0x18207
+       Command          Atom = 0x19907
+       Content          Atom = 0x2b307
+       Contenteditable  Atom = 0x2b30f
+       Contextmenu      Atom = 0x36b0b
+       Controls         Atom = 0x1ac08
+       Coords           Atom = 0x1b806
+       Crossorigin      Atom = 0x1c20b
+       Data             Atom = 0x44a04
+       Datalist         Atom = 0x44a08
+       Datetime         Atom = 0x25908
+       Dd               Atom = 0x28602
+       Default          Atom = 0x5207
+       Defer            Atom = 0x16b05
+       Del              Atom = 0x4dd03
+       Desc             Atom = 0x4804
+       Details          Atom = 0x6507
+       Dfn              Atom = 0x8303
+       Dialog           Atom = 0x1b06
+       Dir              Atom = 0x9d03
+       Dirname          Atom = 0x9d07
+       Disabled         Atom = 0xc408
+       Div              Atom = 0xcb03
+       Dl               Atom = 0x12c02
+       Download         Atom = 0x41f08
+       Draggable        Atom = 0x19f09
+       Dropzone         Atom = 0x3c508
+       Dt               Atom = 0x4eb02
+       Em               Atom = 0x7f02
+       Embed            Atom = 0x7f05
+       Enctype          Atom = 0x22e07
+       Face             Atom = 0x2eb04
+       Fieldset         Atom = 0x1d308
+       Figcaption       Atom = 0x1db0a
+       Figure           Atom = 0x1ef06
+       Font             Atom = 0x10604
+       Footer           Atom = 0x5906
+       For              Atom = 0x1fb03
+       ForeignObject    Atom = 0x1fb0d
+       Foreignobject    Atom = 0x2080d
+       Form             Atom = 0x21504
+       Formaction       Atom = 0x2150a
+       Formenctype      Atom = 0x22a0b
+       Formmethod       Atom = 0x2450a
+       Formnovalidate   Atom = 0x24f0e
+       Formtarget       Atom = 0x2640a
+       Frame            Atom = 0x8705
+       Frameset         Atom = 0x8708
+       H1               Atom = 0x12402
+       H2               Atom = 0x29402
+       H3               Atom = 0x2d302
+       H4               Atom = 0x32902
+       H5               Atom = 0x4ed02
+       H6               Atom = 0x26e02
+       Head             Atom = 0x30f04
+       Header           Atom = 0x30f06
+       Headers          Atom = 0x30f07
+       Height           Atom = 0x27006
+       Hgroup           Atom = 0x27806
+       Hidden           Atom = 0x28406
+       High             Atom = 0x29104
+       Hr               Atom = 0x11f02
+       Href             Atom = 0x29604
+       Hreflang         Atom = 0x29608
+       Html             Atom = 0x27404
+       HttpEquiv        Atom = 0x29e0a
        I                Atom = 0x601
-       Icon             Atom = 0x2b804
-       Id               Atom = 0xa102
-       Iframe           Atom = 0x2c806
-       Img              Atom = 0x2d103
-       Inert            Atom = 0x48805
-       Input            Atom = 0x3d305
-       Ins              Atom = 0x1ca03
-       Ismap            Atom = 0x2d405
-       Itemid           Atom = 0x1d206
-       Itemprop         Atom = 0x53608
-       Itemref          Atom = 0x2dd07
-       Itemscope        Atom = 0x2eb09
-       Itemtype         Atom = 0x2f508
-       Kbd              Atom = 0xba03
-       Keygen           Atom = 0x4e06
-       Keytype          Atom = 0x14807
-       Kind             Atom = 0x2b404
-       Label            Atom = 0x14105
-       Lang             Atom = 0x22e04
-       Legend           Atom = 0x19906
-       Li               Atom = 0x8702
-       Link             Atom = 0x14504
-       List             Atom = 0x40d04
-       Loop             Atom = 0x18304
-       Low              Atom = 0x28303
-       Manifest         Atom = 0x1008
-       Map              Atom = 0x2d603
-       Mark             Atom = 0x56e04
-       Max              Atom = 0x2fd03
-       Maxlength        Atom = 0x2fd09
-       Media            Atom = 0x6c05
-       Mediagroup       Atom = 0x6c0a
-       Menu             Atom = 0x33904
-       Meta             Atom = 0x41d04
-       Meter            Atom = 0x26705
-       Method           Atom = 0x25106
-       Min              Atom = 0x31003
-       Multiple         Atom = 0x31308
-       Muted            Atom = 0x31b05
-       Name             Atom = 0x6a04
-       Nav              Atom = 0x1f03
-       Nobr             Atom = 0x5304
-       Noscript         Atom = 0x5f08
-       Novalidate       Atom = 0x25b0a
-       Object           Atom = 0xb106
-       Ol               Atom = 0x7b02
-       Onabort          Atom = 0x17507
-       Onafterprint     Atom = 0x1250c
-       Onbeforeprint    Atom = 0x1eb0d
-       Onbeforeunload   Atom = 0x2190e
-       Onblur           Atom = 0x32a06
-       Oncancel         Atom = 0x57608
-       Oncanplay        Atom = 0x10009
-       Oncanplaythrough Atom = 0x10010
-       Onchange         Atom = 0x3a208
-       Onclick          Atom = 0x2ae07
-       Onclose          Atom = 0x32007
-       Oncontextmenu    Atom = 0x3300d
-       Oncuechange      Atom = 0x33d0b
-       Ondblclick       Atom = 0x3480a
-       Ondrag           Atom = 0x35206
-       Ondragend        Atom = 0x35209
-       Ondragenter      Atom = 0x35b0b
-       Ondragleave      Atom = 0x3660b
-       Ondragover       Atom = 0x3710a
-       Ondragstart      Atom = 0x37b0b
-       Ondrop           Atom = 0x38a06
-       Ondurationchange Atom = 0x39a10
-       Onemptied        Atom = 0x39109
-       Onended          Atom = 0x3aa07
-       Onerror          Atom = 0x3b107
-       Onfocus          Atom = 0x3b807
-       Onhashchange     Atom = 0x3c50c
-       Oninput          Atom = 0x3d107
-       Oninvalid        Atom = 0x3d809
-       Onkeydown        Atom = 0x3e109
-       Onkeypress       Atom = 0x3ee0a
-       Onkeyup          Atom = 0x3fa07
-       Onload           Atom = 0x40106
-       Onloadeddata     Atom = 0x4010c
-       Onloadedmetadata Atom = 0x41510
-       Onloadstart      Atom = 0x42b0b
-       Onmessage        Atom = 0x43609
-       Onmousedown      Atom = 0x43f0b
-       Onmousemove      Atom = 0x44a0b
-       Onmouseout       Atom = 0x4550a
-       Onmouseover      Atom = 0x4620b
-       Onmouseup        Atom = 0x46d09
-       Onmousewheel     Atom = 0x4760c
-       Onoffline        Atom = 0x48209
-       Ononline         Atom = 0x48d08
-       Onpagehide       Atom = 0x4950a
-       Onpageshow       Atom = 0x4a00a
-       Onpause          Atom = 0x4af07
-       Onplay           Atom = 0x4b906
-       Onplaying        Atom = 0x4b909
-       Onpopstate       Atom = 0x4c20a
-       Onprogress       Atom = 0x4cc0a
-       Onratechange     Atom = 0x4d60c
-       Onreset          Atom = 0x4e207
-       Onresize         Atom = 0x4e908
-       Onscroll         Atom = 0x4f208
-       Onseeked         Atom = 0x4fa08
-       Onseeking        Atom = 0x50209
-       Onselect         Atom = 0x50b08
-       Onshow           Atom = 0x51506
-       Onstalled        Atom = 0x51e09
-       Onstorage        Atom = 0x52709
-       Onsubmit         Atom = 0x53008
-       Onsuspend        Atom = 0x54009
-       Ontimeupdate     Atom = 0x2050c
-       Onunload         Atom = 0x54908
-       Onvolumechange   Atom = 0x5510e
-       Onwaiting        Atom = 0x55f09
-       Open             Atom = 0x53c04
-       Optgroup         Atom = 0x18508
-       Optimum          Atom = 0x56807
-       Option           Atom = 0x57206
-       Output           Atom = 0x45c06
+       Icon             Atom = 0x2b204
+       Id               Atom = 0x5102
+       Iframe           Atom = 0x2c206
+       Image            Atom = 0x2c805
+       Img              Atom = 0x2cd03
+       Inert            Atom = 0x4c805
+       Input            Atom = 0x40c05
+       Ins              Atom = 0x1cb03
+       Isindex          Atom = 0x2d507
+       Ismap            Atom = 0x2dc05
+       Itemid           Atom = 0x9806
+       Itemprop         Atom = 0x57f08
+       Itemref          Atom = 0x2e507
+       Itemscope        Atom = 0x2f309
+       Itemtype         Atom = 0x2fd08
+       Kbd              Atom = 0x1903
+       Keygen           Atom = 0x3906
+       Keytype          Atom = 0x43407
+       Kind             Atom = 0xc104
+       Label            Atom = 0xba05
+       Lang             Atom = 0x29a04
+       Legend           Atom = 0x1a606
+       Li               Atom = 0x1202
+       Link             Atom = 0xbe04
+       List             Atom = 0x44e04
+       Listing          Atom = 0x44e07
+       Loop             Atom = 0x12d04
+       Low              Atom = 0x19403
+       Malignmark       Atom = 0x100a
+       Manifest         Atom = 0x5b708
+       Map              Atom = 0x2de03
+       Mark             Atom = 0x1604
+       Marquee          Atom = 0x30507
+       Math             Atom = 0x30c04
+       Max              Atom = 0x32103
+       Maxlength        Atom = 0x32109
+       Media            Atom = 0xa205
+       Mediagroup       Atom = 0xa20a
+       Menu             Atom = 0x37204
+       Meta             Atom = 0x45d04
+       Meter            Atom = 0x25f05
+       Method           Atom = 0x24906
+       Mglyph           Atom = 0x2ce06
+       Mi               Atom = 0x9b02
+       Min              Atom = 0x32b03
+       Mn               Atom = 0x25202
+       Mo               Atom = 0x48102
+       Ms               Atom = 0x2f602
+       Mtext            Atom = 0x32e05
+       Multiple         Atom = 0x33c08
+       Muted            Atom = 0x34405
+       Name             Atom = 0xa004
+       Nav              Atom = 0x3e03
+       Nobr             Atom = 0x7404
+       Noembed          Atom = 0x7d07
+       Noframes         Atom = 0x8508
+       Noscript         Atom = 0x28908
+       Novalidate       Atom = 0x2530a
+       Object           Atom = 0x20f06
+       Ol               Atom = 0xf502
+       Onabort          Atom = 0x15a07
+       Onafterprint     Atom = 0x1e30c
+       Onbeforeprint    Atom = 0x21d0d
+       Onbeforeunload   Atom = 0x5c50e
+       Onblur           Atom = 0x36306
+       Oncancel         Atom = 0xb308
+       Oncanplay        Atom = 0x11509
+       Oncanplaythrough Atom = 0x11510
+       Onchange         Atom = 0x3db08
+       Onclick          Atom = 0x2ab07
+       Onclose          Atom = 0x34907
+       Oncontextmenu    Atom = 0x3690d
+       Oncuechange      Atom = 0x3760b
+       Ondblclick       Atom = 0x3810a
+       Ondrag           Atom = 0x38b06
+       Ondragend        Atom = 0x38b09
+       Ondragenter      Atom = 0x3940b
+       Ondragleave      Atom = 0x39f0b
+       Ondragover       Atom = 0x3aa0a
+       Ondragstart      Atom = 0x3b40b
+       Ondrop           Atom = 0x3c306
+       Ondurationchange Atom = 0x3d310
+       Onemptied        Atom = 0x3ca09
+       Onended          Atom = 0x3e307
+       Onerror          Atom = 0x3ea07
+       Onfocus          Atom = 0x3f107
+       Onhashchange     Atom = 0x3fe0c
+       Oninput          Atom = 0x40a07
+       Oninvalid        Atom = 0x41109
+       Onkeydown        Atom = 0x41a09
+       Onkeypress       Atom = 0x4270a
+       Onkeyup          Atom = 0x43b07
+       Onload           Atom = 0x44206
+       Onloadeddata     Atom = 0x4420c
+       Onloadedmetadata Atom = 0x45510
+       Onloadstart      Atom = 0x46b0b
+       Onmessage        Atom = 0x47609
+       Onmousedown      Atom = 0x47f0b
+       Onmousemove      Atom = 0x48a0b
+       Onmouseout       Atom = 0x4950a
+       Onmouseover      Atom = 0x4a20b
+       Onmouseup        Atom = 0x4ad09
+       Onmousewheel     Atom = 0x4b60c
+       Onoffline        Atom = 0x4c209
+       Ononline         Atom = 0x4cd08
+       Onpagehide       Atom = 0x4d50a
+       Onpageshow       Atom = 0x4e00a
+       Onpause          Atom = 0x4ef07
+       Onplay           Atom = 0x4f906
+       Onplaying        Atom = 0x4f909
+       Onpopstate       Atom = 0x5020a
+       Onprogress       Atom = 0x50c0a
+       Onratechange     Atom = 0x51b0c
+       Onreset          Atom = 0x52707
+       Onresize         Atom = 0x52e08
+       Onscroll         Atom = 0x53b08
+       Onseeked         Atom = 0x54308
+       Onseeking        Atom = 0x54b09
+       Onselect         Atom = 0x55408
+       Onshow           Atom = 0x55e06
+       Onstalled        Atom = 0x56709
+       Onstorage        Atom = 0x57009
+       Onsubmit         Atom = 0x57908
+       Onsuspend        Atom = 0x58909
+       Ontimeupdate     Atom = 0x1070c
+       Onunload         Atom = 0x59208
+       Onvolumechange   Atom = 0x59a0e
+       Onwaiting        Atom = 0x5a809
+       Open             Atom = 0x58504
+       Optgroup         Atom = 0x12f08
+       Optimum          Atom = 0x5b107
+       Option           Atom = 0x5c106
+       Output           Atom = 0x49c06
        P                Atom = 0xc01
        Param            Atom = 0xc05
-       Pattern          Atom = 0x1907
-       Ping             Atom = 0x3204
-       Placeholder      Atom = 0x750b
-       Poster           Atom = 0x15d06
-       Pre              Atom = 0x18c03
-       Preload          Atom = 0x18c07
-       Progress         Atom = 0x4ce08
-       Q                Atom = 0x11601
+       Pattern          Atom = 0x6e07
+       Ping             Atom = 0xab04
+       Placeholder      Atom = 0xef0b
+       Plaintext        Atom = 0x13609
+       Poster           Atom = 0x17706
+       Pre              Atom = 0x27d03
+       Preload          Atom = 0x27d07
+       Progress         Atom = 0x50e08
+       Q                Atom = 0x14b01
        Radiogroup       Atom = 0x30a
-       Readonly         Atom = 0xd108
-       Rel              Atom = 0x18d03
-       Required         Atom = 0x1fc08
-       Reversed         Atom = 0x5608
-       Rows             Atom = 0x7f04
-       Rowspan          Atom = 0x7f07
-       Rp               Atom = 0x12b02
-       Rt               Atom = 0x17a02
-       Ruby             Atom = 0x9304
-       S                Atom = 0x1601
-       Samp             Atom = 0x2f04
-       Sandbox          Atom = 0xe107
-       Scope            Atom = 0x2ef05
-       Scoped           Atom = 0x2ef06
-       Script           Atom = 0x6106
-       Seamless         Atom = 0xf208
-       Section          Atom = 0x32507
-       Select           Atom = 0x50d06
-       Selected         Atom = 0x50d08
-       Shape            Atom = 0xf905
-       Size             Atom = 0x4ed04
-       Sizes            Atom = 0x4ed05
-       Small            Atom = 0x13d05
-       Source           Atom = 0x1a606
-       Span             Atom = 0x8204
-       Spellcheck       Atom = 0x1b50a
-       Src              Atom = 0x1cc03
-       Srcdoc           Atom = 0x1cc06
-       Srclang          Atom = 0x22b07
-       Start            Atom = 0x38105
-       Step             Atom = 0x1604
-       Strong           Atom = 0x40f06
-       Style            Atom = 0x30b05
-       Sub              Atom = 0x53203
-       Summary          Atom = 0x3be07
-       Sup              Atom = 0x3f703
-       Tabindex         Atom = 0x42308
-       Table            Atom = 0x2c305
-       Target           Atom = 0x27006
-       Tbody            Atom = 0x4305
-       Td               Atom = 0x6602
-       Textarea         Atom = 0xcc08
-       Tfoot            Atom = 0x8d05
-       Th               Atom = 0x10902
-       Thead            Atom = 0x30405
-       Time             Atom = 0x20704
-       Title            Atom = 0xa805
-       Tr               Atom = 0xb602
-       Track            Atom = 0xb605
-       Translate        Atom = 0x13009
-       Type             Atom = 0x14b04
-       Typemustmatch    Atom = 0x2390d
+       Readonly         Atom = 0x33408
+       Rel              Atom = 0x27e03
+       Required         Atom = 0x1f308
+       Reversed         Atom = 0x5e08
+       Rows             Atom = 0x7704
+       Rowspan          Atom = 0x7707
+       Rp               Atom = 0x1e902
+       Rt               Atom = 0x15f02
+       Ruby             Atom = 0xcf04
+       S                Atom = 0x2c01
+       Samp             Atom = 0x6b04
+       Sandbox          Atom = 0xe707
+       Scope            Atom = 0x2f705
+       Scoped           Atom = 0x2f706
+       Script           Atom = 0x28b06
+       Seamless         Atom = 0x34e08
+       Section          Atom = 0x35e07
+       Select           Atom = 0x55606
+       Selected         Atom = 0x55608
+       Shape            Atom = 0x1b305
+       Size             Atom = 0x53204
+       Sizes            Atom = 0x53205
+       Small            Atom = 0x1bd05
+       Source           Atom = 0x1cd06
+       Span             Atom = 0x7a04
+       Spellcheck       Atom = 0x3150a
+       Src              Atom = 0x35503
+       Srcdoc           Atom = 0x35506
+       Srclang          Atom = 0x3f707
+       Start            Atom = 0x3ba05
+       Step             Atom = 0x5bd04
+       Strike           Atom = 0x43006
+       Strong           Atom = 0x51506
+       Style            Atom = 0x53605
+       Sub              Atom = 0x57b03
+       Summary          Atom = 0x5d707
+       Sup              Atom = 0x5de03
+       Svg              Atom = 0x5e103
+       Tabindex         Atom = 0x46308
+       Table            Atom = 0x2bd05
+       Target           Atom = 0x26806
+       Tbody            Atom = 0x2e05
+       Td               Atom = 0x4702
+       Textarea         Atom = 0x32f08
+       Tfoot            Atom = 0x5805
+       Th               Atom = 0x11e02
+       Thead            Atom = 0x30e05
+       Time             Atom = 0x10904
+       Title            Atom = 0x8e05
+       Tr               Atom = 0x13e02
+       Track            Atom = 0x13e05
+       Translate        Atom = 0x16009
+       Tt               Atom = 0x7002
+       Type             Atom = 0x23104
+       Typemustmatch    Atom = 0x2310d
        U                Atom = 0xb01
-       Ul               Atom = 0xa602
-       Usemap           Atom = 0x4b306
-       Value            Atom = 0x2105
-       Var              Atom = 0x1e003
-       Video            Atom = 0x2aa05
-       Wbr              Atom = 0x28503
-       Width            Atom = 0x4a905
-       Wrap             Atom = 0x51a04
+       Ul               Atom = 0x5602
+       Usemap           Atom = 0x4f306
+       Value            Atom = 0x4005
+       Var              Atom = 0xcd03
+       Video            Atom = 0x2a705
+       Wbr              Atom = 0x19603
+       Width            Atom = 0x4e905
+       Wrap             Atom = 0x56304
+       Xmp              Atom = 0xed03
 )
 
-const hash0 = 0x516c42b0
+const hash0 = 0xc17da63e
 
 const maxAtomLen = 16
 
 var table = [1 << 9]Atom{
-       0x2:   0x1f03,  // nav
-       0x3:   0x17507, // onabort
-       0x4:   0x1aa06, // center
-       0x5:   0x14f04, // code
-       0x7:   0x27802, // h5
-       0xb:   0x1110a, // blockquote
-       0xd:   0x4404,  // body
-       0xe:   0x10a02, // hr
-       0x11:  0x25b0a, // novalidate
-       0x14:  0x2c305, // table
-       0x16:  0x4cc0a, // onprogress
-       0x17:  0x3b807, // onfocus
-       0x19:  0x39a10, // ondurationchange
-       0x1c:  0x22e04, // lang
-       0x1f:  0xb01,   // u
-       0x20:  0x3e608, // download
-       0x21:  0x26705, // meter
-       0x22:  0x28303, // low
-       0x24:  0x4f208, // onscroll
-       0x26:  0x19f08, // controls
-       0x27:  0x6703,  // dir
-       0x29:  0x18c03, // pre
-       0x2a:  0x1b50a, // spellcheck
-       0x2b:  0x28806, // hgroup
-       0x2d:  0x4e908, // onresize
-       0x2e:  0x35b0b, // ondragenter
-       0x30:  0x48805, // inert
-       0x32:  0x2390d, // typemustmatch
-       0x33:  0x6a04,  // name
-       0x35:  0x28503, // wbr
-       0x36:  0x1eb0d, // onbeforeprint
-       0x39:  0x4af07, // onpause
-       0x3b:  0x24d0a, // formmethod
-       0x3e:  0x2fd03, // max
-       0x3f:  0x2d103, // img
-       0x40:  0xc01,   // p
-       0x41:  0x19906, // legend
-       0x43:  0x2c806, // iframe
-       0x44:  0x55f09, // onwaiting
-       0x45:  0x18c07, // preload
-       0x46:  0x1e607, // caption
-       0x47:  0xba03,  // kbd
-       0x49:  0x20704, // time
-       0x4a:  0x1ca03, // ins
-       0x4d:  0xbb03,  // bdi
-       0x4e:  0x14105, // label
-       0x4f:  0x18d03, // rel
-       0x50:  0x2ef05, // scope
-       0x51:  0x2050c, // ontimeupdate
-       0x53:  0xd909,  // autofocus
-       0x54:  0xc20c,  // autocomplete
-       0x55:  0x28004, // html
-       0x56:  0x1e30a, // figcaption
-       0x59:  0x17c07, // command
-       0x5d:  0x2c905, // frame
-       0x5f:  0x1ef03, // for
-       0x60:  0x1250c, // onafterprint
-       0x61:  0x2f04,  // samp
-       0x62:  0x30507, // headers
-       0x63:  0x4b306, // usemap
-       0x65:  0x14b04, // type
-       0x6b:  0x26108, // datetime
-       0x6d:  0xa102,  // id
-       0x6e:  0x30405, // thead
-       0x6f:  0x15d06, // poster
-       0x70:  0x18202, // dl
-       0x71:  0x2b804, // icon
-       0x74:  0x51e09, // onstalled
-       0x75:  0x16804, // cols
-       0x76:  0x4ed05, // sizes
-       0x78:  0x13d05, // small
-       0x79:  0x3a208, // onchange
-       0x7b:  0x3b107, // onerror
-       0x7c:  0x4a905, // width
-       0x7d:  0x20404, // font
-       0x7e:  0x28e06, // hidden
-       0x7f:  0x10009, // oncanplay
-       0x81:  0xe808,  // autoplay
-       0x82:  0x1d104, // cite
-       0x84:  0x3d07,  // charset
-       0x85:  0x3710a, // ondragover
-       0x86:  0x2502,  // em
-       0x87:  0x1cc03, // src
-       0x89:  0x1ba07, // checked
-       0x8a:  0xad05,  // audio
-       0x8b:  0x19209, // draggable
-       0x8d:  0x1c10b, // crossorigin
-       0x8e:  0x18304, // loop
-       0x90:  0x2dd07, // itemref
-       0x93:  0x4ce08, // progress
-       0x94:  0x3d305, // input
-       0x96:  0x101,   // b
-       0x98:  0x5510e, // onvolumechange
-       0x99:  0x27006, // target
-       0x9c:  0x4a00a, // onpageshow
-       0x9d:  0x2eb09, // itemscope
-       0x9e:  0x54908, // onunload
-       0x9f:  0xf208,  // seamless
-       0xa3:  0x8e06,  // footer
-       0xa6:  0x2907,  // details
-       0xa7:  0x3ee0a, // onkeypress
-       0xaa:  0x1d708, // disabled
-       0xab:  0x31308, // multiple
-       0xac:  0x3d809, // oninvalid
-       0xad:  0x46d09, // onmouseup
-       0xaf:  0x2d405, // ismap
-       0xb0:  0x8204,  // span
-       0xb2:  0x1d206, // itemid
-       0xb3:  0x6106,  // script
-       0xb6:  0x21104, // form
-       0xb8:  0x9f05,  // aside
-       0xba:  0x38307, // article
-       0xbb:  0x12b02, // rp
-       0xbc:  0x29404, // high
-       0xbe:  0x1a606, // source
-       0xbf:  0xe107,  // sandbox
-       0xc0:  0x5d03,  // dfn
-       0xc1:  0x3204,  // ping
-       0xc2:  0x4ed04, // size
-       0xc3:  0x2ae07, // onclick
-       0xc5:  0x29908, // hreflang
-       0xc7:  0x2f508, // itemtype
-       0xc8:  0x1cc06, // srcdoc
-       0xc9:  0x40d04, // list
-       0xcc:  0x2d706, // applet
-       0xcf:  0x4760c, // onmousewheel
-       0xd0:  0x22507, // address
-       0xd1:  0x25106, // method
-       0xd5:  0x49d03, // del
-       0xd7:  0x35206, // ondrag
-       0xd9:  0x41510, // onloadedmetadata
-       0xda:  0xcc08,  // textarea
-       0xdb:  0x4e207, // onreset
-       0xdc:  0x57206, // option
-       0xdd:  0x2505,  // embed
-       0xdf:  0x3d107, // oninput
-       0xe0:  0x40908, // datalist
-       0xe1:  0x4ad02, // h3
-       0xe3:  0x202,   // br
-       0xe5:  0x40f06, // strong
-       0xe6:  0x5608,  // reversed
-       0xea:  0x22b07, // srclang
-       0xec:  0x10902, // th
-       0xef:  0x45c06, // output
-       0xf2:  0x27602, // h4
-       0xf5:  0x42308, // tabindex
-       0xf6:  0x2b907, // content
-       0xf9:  0x1601,  // s
-       0xfb:  0x3320b, // contextmenu
-       0xfc:  0x33d0b, // oncuechange
-       0xfe:  0x52709, // onstorage
-       0x100: 0x4305,  // tbody
-       0x101: 0x50d06, // select
-       0x102: 0x2320b, // formenctype
-       0x103: 0x1,     // a
-       0x104: 0x51a04, // wrap
-       0x108: 0x22602, // dd
-       0x109: 0xa602,  // ul
-       0x10a: 0x4950a, // onpagehide
-       0x10c: 0x43609, // onmessage
-       0x10d: 0xa207,  // default
-       0x10f: 0x38c08, // dropzone
-       0x111: 0x53008, // onsubmit
-       0x114: 0x9705,  // async
-       0x119: 0x50d08, // selected
-       0x11a: 0x2fd09, // maxlength
-       0x11c: 0x15105, // defer
-       0x11d: 0x16807, // colspan
-       0x11e: 0x3480a, // ondblclick
-       0x121: 0x2b90f, // contenteditable
-       0x125: 0x16d0a, // annotation
-       0x12a: 0x31003, // min
-       0x12c: 0x4fa08, // onseeked
-       0x12e: 0x11b06, // border
-       0x12f: 0x4b906, // onplay
-       0x130: 0x2ef06, // scoped
-       0x134: 0x2e308, // fieldset
-       0x135: 0x1b006, // coords
-       0x136: 0x6707,  // dirname
-       0x137: 0x32007, // onclose
-       0x138: 0x6602,  // td
-       0x13c: 0x32a06, // onblur
-       0x140: 0x9304,  // ruby
-       0x141: 0x50b08, // onselect
-       0x143: 0x3300d, // oncontextmenu
-       0x144: 0x12106, // button
-       0x146: 0xa805,  // title
-       0x147: 0x16305, // color
-       0x14a: 0x4620b, // onmouseover
-       0x14b: 0x23607, // enctype
-       0x14e: 0x29702, // h2
-       0x150: 0x3e109, // onkeydown
-       0x151: 0x3c50c, // onhashchange
-       0x152: 0x1604,  // step
-       0x153: 0x2aa05, // video
-       0x155: 0x4d60c, // onratechange
-       0x156: 0x17a02, // rt
-       0x157: 0x33904, // menu
-       0x15d: 0x37b0b, // ondragstart
-       0x160: 0x14504, // link
-       0x163: 0x7f07,  // rowspan
-       0x164: 0x4550a, // onmouseout
-       0x165: 0x29904, // href
-       0x167: 0x26c0a, // formtarget
-       0x169: 0xd004,  // area
-       0x16b: 0x8b03,  // alt
-       0x16d: 0x15608, // colgroup
-       0x16e: 0x30a,   // radiogroup
-       0x170: 0x30506, // header
-       0x172: 0x53203, // sub
-       0x174: 0x10010, // oncanplaythrough
-       0x175: 0x13009, // translate
-       0x176: 0x48d08, // ononline
-       0x179: 0x24409, // challenge
-       0x17c: 0x3f703, // sup
-       0x17d: 0x8605,  // align
-       0x17f: 0x5304,  // nobr
-       0x180: 0x1f806, // figure
-       0x181: 0xc05,   // param
-       0x184: 0x35209, // ondragend
-       0x185: 0x18508, // optgroup
-       0x186: 0x31b05, // muted
-       0x187: 0x6c0a,  // mediagroup
-       0x18a: 0x21506, // action
-       0x18c: 0x53c04, // open
-       0x18e: 0xf905,  // shape
-       0x18f: 0x54009, // onsuspend
-       0x190: 0x38a06, // ondrop
-       0x191: 0x56807, // optimum
-       0x192: 0x53608, // itemprop
-       0x193: 0x39109, // onemptied
-       0x195: 0xf004,  // base
-       0x198: 0x40904, // data
-       0x19a: 0x27a02, // h6
-       0x19b: 0x601,   // i
-       0x19c: 0x2110a, // formaction
-       0x19d: 0x360e,  // accept-charset
-       0x19e: 0x1e003, // var
-       0x19f: 0x57608, // oncancel
-       0x1a0: 0x750b,  // placeholder
-       0x1a1: 0x4e06,  // keygen
-       0x1a2: 0x3660b, // ondragleave
-       0x1a4: 0x4010c, // onloadeddata
-       0x1a6: 0x2d603, // map
-       0x1a7: 0x2a10a, // http-equiv
-       0x1a8: 0x1907,  // pattern
-       0x1a9: 0x4c20a, // onpopstate
-       0x1ab: 0x2570e, // formnovalidate
-       0x1ad: 0x44a0b, // onmousemove
-       0x1af: 0x42b0b, // onloadstart
-       0x1b0: 0xb605,  // track
-       0x1b2: 0x2b404, // kind
-       0x1b3: 0x7b02,  // ol
-       0x1b4: 0x6c05,  // media
-       0x1b5: 0x3be07, // summary
-       0x1b7: 0x14807, // keytype
-       0x1b8: 0x5f08,  // noscript
-       0x1b9: 0x1fc08, // required
-       0x1bb: 0x1de03, // div
-       0x1bd: 0x3fa07, // onkeyup
-       0x1be: 0xd108,  // readonly
-       0x1bf: 0x3aa07, // onended
-       0x1c5: 0x4b909, // onplaying
-       0x1c7: 0x32507, // section
-       0x1c8: 0x3606,  // accept
-       0x1c9: 0x4809,  // accesskey
-       0x1ca: 0x30b05, // style
-       0x1cb: 0x2c908, // frameset
-       0x1cc: 0x38105, // start
-       0x1cd: 0x43f0b, // onmousedown
-       0x1d2: 0x30504, // head
-       0x1d3: 0x11601, // q
-       0x1d4: 0x48209, // onoffline
-       0x1d5: 0x41d04, // meta
-       0x1d8: 0x4ab02, // dt
-       0x1da: 0xb602,  // tr
-       0x1db: 0x50209, // onseeking
-       0x1dc: 0xbc06,  // dialog
-       0x1e0: 0x51506, // onshow
-       0x1e1: 0x2105,  // value
-       0x1e2: 0x9b06,  // canvas
-       0x1e3: 0x4,     // abbr
-       0x1e5: 0x7f04,  // rows
-       0x1e7: 0xb106,  // object
-       0x1e8: 0x13905, // class
-       0x1eb: 0x27c06, // height
-       0x1ed: 0x2190e, // onbeforeunload
-       0x1ee: 0x8d05,  // tfoot
-       0x1f1: 0x56e04, // mark
-       0x1f2: 0x10f02, // h1
-       0x1f5: 0x40106, // onload
-       0x1f9: 0x1008,  // manifest
-       0x1fa: 0x15603, // col
-       0x1fc: 0x8702,  // li
-       0x1ff: 0xfe03,  // bdo
+       0x1:   0x48a0b, // onmousemove
+       0x2:   0x5a809, // onwaiting
+       0x7:   0x5b107, // optimum
+       0xa:   0x2e507, // itemref
+       0xb:   0x4e00a, // onpageshow
+       0xc:   0x55606, // select
+       0xd:   0x19f09, // draggable
+       0xe:   0x3e03,  // nav
+       0xf:   0x19907, // command
+       0x11:  0xb01,   // u
+       0x14:  0x30f07, // headers
+       0x15:  0x44a08, // datalist
+       0x17:  0x6b04,  // samp
+       0x1a:  0x41a09, // onkeydown
+       0x1b:  0x53b08, // onscroll
+       0x1c:  0x17003, // col
+       0x20:  0x57f08, // itemprop
+       0x21:  0x29e0a, // http-equiv
+       0x22:  0x5de03, // sup
+       0x24:  0x1f308, // required
+       0x2b:  0x27d07, // preload
+       0x2c:  0x21d0d, // onbeforeprint
+       0x2d:  0x3940b, // ondragenter
+       0x2e:  0x4eb02, // dt
+       0x2f:  0x57908, // onsubmit
+       0x30:  0x11f02, // hr
+       0x31:  0x3690d, // oncontextmenu
+       0x33:  0x2c805, // image
+       0x34:  0x4ef07, // onpause
+       0x35:  0x27806, // hgroup
+       0x36:  0xab04,  // ping
+       0x37:  0x55408, // onselect
+       0x3a:  0xcb03,  // div
+       0x40:  0x9b02,  // mi
+       0x41:  0x34e08, // seamless
+       0x42:  0x2807,  // charset
+       0x43:  0x5102,  // id
+       0x44:  0x5020a, // onpopstate
+       0x45:  0x4dd03, // del
+       0x46:  0x30507, // marquee
+       0x47:  0x3309,  // accesskey
+       0x49:  0x5906,  // footer
+       0x4a:  0x2df06, // applet
+       0x4b:  0x2dc05, // ismap
+       0x51:  0x37204, // menu
+       0x52:  0x2f04,  // body
+       0x55:  0x8708,  // frameset
+       0x56:  0x52707, // onreset
+       0x58:  0x8e05,  // title
+       0x59:  0x3bc07, // article
+       0x5b:  0x11e02, // th
+       0x5d:  0x14b01, // q
+       0x5e:  0x58504, // open
+       0x5f:  0x33304, // area
+       0x61:  0x44206, // onload
+       0x62:  0x40c05, // input
+       0x63:  0x10204, // base
+       0x64:  0x18207, // colspan
+       0x65:  0x43407, // keytype
+       0x66:  0x12c02, // dl
+       0x68:  0x1d308, // fieldset
+       0x6a:  0x32b03, // min
+       0x6b:  0xcd03,  // var
+       0x6f:  0x30f06, // header
+       0x70:  0x15f02, // rt
+       0x71:  0x17008, // colgroup
+       0x72:  0x25202, // mn
+       0x74:  0x15a07, // onabort
+       0x75:  0x3906,  // keygen
+       0x76:  0x4c209, // onoffline
+       0x77:  0x23c09, // challenge
+       0x78:  0x2de03, // map
+       0x7a:  0x32902, // h4
+       0x7b:  0x3ea07, // onerror
+       0x7c:  0x32109, // maxlength
+       0x7d:  0x32e05, // mtext
+       0x7e:  0x5805,  // tfoot
+       0x7f:  0x10604, // font
+       0x80:  0x100a,  // malignmark
+       0x81:  0x45d04, // meta
+       0x82:  0x9305,  // async
+       0x83:  0x2d302, // h3
+       0x84:  0x28602, // dd
+       0x85:  0x29604, // href
+       0x86:  0xa20a,  // mediagroup
+       0x87:  0x1b806, // coords
+       0x88:  0x3f707, // srclang
+       0x89:  0x3810a, // ondblclick
+       0x8a:  0x4005,  // value
+       0x8c:  0xb308,  // oncancel
+       0x8e:  0x3150a, // spellcheck
+       0x8f:  0x8705,  // frame
+       0x91:  0x14303, // big
+       0x94:  0x21906, // action
+       0x95:  0x9d03,  // dir
+       0x97:  0x33408, // readonly
+       0x99:  0x2bd05, // table
+       0x9a:  0x5d707, // summary
+       0x9b:  0x19603, // wbr
+       0x9c:  0x30a,   // radiogroup
+       0x9d:  0xa004,  // name
+       0x9f:  0x3aa0a, // ondragover
+       0xa1:  0x17d05, // color
+       0xa2:  0x4b06,  // canvas
+       0xa3:  0x27404, // html
+       0xa5:  0x54b09, // onseeking
+       0xac:  0x1b305, // shape
+       0xad:  0x27e03, // rel
+       0xae:  0x11510, // oncanplaythrough
+       0xaf:  0x1604,  // mark
+       0xb1:  0x1fb0d, // foreignObject
+       0xb3:  0x7704,  // rows
+       0xb6:  0x44e07, // listing
+       0xb7:  0x49c06, // output
+       0xb9:  0x36b0b, // contextmenu
+       0xbb:  0x19403, // low
+       0xbc:  0x1e902, // rp
+       0xbd:  0x58909, // onsuspend
+       0xbe:  0x15606, // button
+       0xbf:  0x4804,  // desc
+       0xc1:  0x35e07, // section
+       0xc2:  0x50c0a, // onprogress
+       0xc3:  0x57009, // onstorage
+       0xc4:  0x30c04, // math
+       0xc5:  0x4f906, // onplay
+       0xc7:  0x5602,  // ul
+       0xc8:  0x6e07,  // pattern
+       0xc9:  0x4b60c, // onmousewheel
+       0xca:  0x38b09, // ondragend
+       0xcb:  0xcf04,  // ruby
+       0xcc:  0xc01,   // p
+       0xcd:  0x34907, // onclose
+       0xce:  0x25f05, // meter
+       0xcf:  0x12607, // bgsound
+       0xd2:  0x27006, // height
+       0xd4:  0x101,   // b
+       0xd5:  0x2fd08, // itemtype
+       0xd8:  0x1de07, // caption
+       0xd9:  0xc408,  // disabled
+       0xdc:  0x5e103, // svg
+       0xdd:  0x1bd05, // small
+       0xde:  0x44a04, // data
+       0xe0:  0x4cd08, // ononline
+       0xe1:  0x2ce06, // mglyph
+       0xe3:  0x7f05,  // embed
+       0xe4:  0x13e02, // tr
+       0xe5:  0x46b0b, // onloadstart
+       0xe7:  0x3d310, // ondurationchange
+       0xed:  0x11303, // bdo
+       0xee:  0x4702,  // td
+       0xef:  0x4f05,  // aside
+       0xf0:  0x29402, // h2
+       0xf1:  0x50e08, // progress
+       0xf2:  0x1460a, // blockquote
+       0xf4:  0xba05,  // label
+       0xf5:  0x601,   // i
+       0xf7:  0x7707,  // rowspan
+       0xfb:  0x4f909, // onplaying
+       0xfd:  0x2cd03, // img
+       0xfe:  0x12f08, // optgroup
+       0xff:  0x2b307, // content
+       0x101: 0x51b0c, // onratechange
+       0x103: 0x3fe0c, // onhashchange
+       0x104: 0x6507,  // details
+       0x106: 0x41f08, // download
+       0x109: 0xe707,  // sandbox
+       0x10b: 0x2b30f, // contenteditable
+       0x10d: 0x39f0b, // ondragleave
+       0x10e: 0x2106,  // accept
+       0x10f: 0x55608, // selected
+       0x112: 0x2150a, // formaction
+       0x113: 0x2ed06, // center
+       0x115: 0x45510, // onloadedmetadata
+       0x116: 0xbe04,  // link
+       0x117: 0x10904, // time
+       0x118: 0x1c20b, // crossorigin
+       0x119: 0x3f107, // onfocus
+       0x11a: 0x56304, // wrap
+       0x11b: 0x2b204, // icon
+       0x11d: 0x2a705, // video
+       0x11e: 0x35a05, // class
+       0x121: 0x59a0e, // onvolumechange
+       0x122: 0x36306, // onblur
+       0x123: 0x2f309, // itemscope
+       0x124: 0x53605, // style
+       0x129: 0x24f0e, // formnovalidate
+       0x12a: 0x55e06, // onshow
+       0x12c: 0x16009, // translate
+       0x12d: 0x9704,  // cite
+       0x12e: 0x2f602, // ms
+       0x12f: 0x1070c, // ontimeupdate
+       0x130: 0xc104,  // kind
+       0x131: 0x2640a, // formtarget
+       0x135: 0x3e307, // onended
+       0x136: 0x28406, // hidden
+       0x137: 0x2c01,  // s
+       0x139: 0x2450a, // formmethod
+       0x13a: 0x44e04, // list
+       0x13c: 0x26e02, // h6
+       0x13d: 0xf502,  // ol
+       0x13e: 0x3760b, // oncuechange
+       0x13f: 0x2080d, // foreignobject
+       0x143: 0x5c50e, // onbeforeunload
+       0x145: 0x3ca09, // onemptied
+       0x146: 0x16b05, // defer
+       0x147: 0xed03,  // xmp
+       0x148: 0xaf05,  // audio
+       0x149: 0x1903,  // kbd
+       0x14c: 0x47609, // onmessage
+       0x14d: 0x5c106, // option
+       0x14e: 0x4503,  // alt
+       0x14f: 0x31a07, // checked
+       0x150: 0xfa08,  // autoplay
+       0x152: 0x202,   // br
+       0x153: 0x2530a, // novalidate
+       0x156: 0x7d07,  // noembed
+       0x159: 0x2ab07, // onclick
+       0x15a: 0x47f0b, // onmousedown
+       0x15b: 0x3db08, // onchange
+       0x15e: 0x41109, // oninvalid
+       0x15f: 0x2f706, // scoped
+       0x160: 0x1ac08, // controls
+       0x161: 0x34405, // muted
+       0x163: 0x4f306, // usemap
+       0x164: 0x1db0a, // figcaption
+       0x165: 0x38b06, // ondrag
+       0x166: 0x29104, // high
+       0x168: 0x35503, // src
+       0x169: 0x17706, // poster
+       0x16b: 0x1870e, // annotation-xml
+       0x16c: 0x5bd04, // step
+       0x16d: 0x4,     // abbr
+       0x16e: 0x1b06,  // dialog
+       0x170: 0x1202,  // li
+       0x172: 0x48102, // mo
+       0x175: 0x1fb03, // for
+       0x176: 0x1cb03, // ins
+       0x178: 0x53204, // size
+       0x17a: 0x5207,  // default
+       0x17b: 0x1a03,  // bdi
+       0x17c: 0x4d50a, // onpagehide
+       0x17d: 0x9d07,  // dirname
+       0x17e: 0x23104, // type
+       0x17f: 0x21504, // form
+       0x180: 0x4c805, // inert
+       0x181: 0x11509, // oncanplay
+       0x182: 0x8303,  // dfn
+       0x183: 0x46308, // tabindex
+       0x186: 0x7f02,  // em
+       0x187: 0x29a04, // lang
+       0x189: 0x3c508, // dropzone
+       0x18a: 0x4270a, // onkeypress
+       0x18b: 0x25908, // datetime
+       0x18c: 0x18204, // cols
+       0x18d: 0x1,     // a
+       0x18e: 0x4420c, // onloadeddata
+       0x191: 0x15006, // border
+       0x192: 0x2e05,  // tbody
+       0x193: 0x24906, // method
+       0x195: 0x12d04, // loop
+       0x196: 0x2c206, // iframe
+       0x198: 0x30f04, // head
+       0x19e: 0x5b708, // manifest
+       0x19f: 0xdf09,  // autofocus
+       0x1a0: 0x16904, // code
+       0x1a1: 0x51506, // strong
+       0x1a2: 0x33c08, // multiple
+       0x1a3: 0xc05,   // param
+       0x1a6: 0x22e07, // enctype
+       0x1a7: 0x2eb04, // face
+       0x1a8: 0x13609, // plaintext
+       0x1a9: 0x12402, // h1
+       0x1aa: 0x56709, // onstalled
+       0x1ad: 0x28b06, // script
+       0x1af: 0x52e08, // onresize
+       0x1b0: 0x4a20b, // onmouseover
+       0x1b1: 0x59208, // onunload
+       0x1b2: 0x54308, // onseeked
+       0x1b4: 0x2310d, // typemustmatch
+       0x1b5: 0x1ef06, // figure
+       0x1b6: 0x4950a, // onmouseout
+       0x1b7: 0x27d03, // pre
+       0x1b8: 0x4e905, // width
+       0x1bb: 0x7404,  // nobr
+       0x1be: 0x7002,  // tt
+       0x1bf: 0x1105,  // align
+       0x1c0: 0x40a07, // oninput
+       0x1c3: 0x43b07, // onkeyup
+       0x1c6: 0x1e30c, // onafterprint
+       0x1c7: 0x210e,  // accept-charset
+       0x1c8: 0x9806,  // itemid
+       0x1cb: 0x43006, // strike
+       0x1cc: 0x57b03, // sub
+       0x1cd: 0x13e05, // track
+       0x1ce: 0x3ba05, // start
+       0x1d0: 0x10208, // basefont
+       0x1d6: 0x1cd06, // source
+       0x1d7: 0x1a606, // legend
+       0x1d8: 0x30e05, // thead
+       0x1da: 0x2f705, // scope
+       0x1dd: 0x20f06, // object
+       0x1de: 0xa205,  // media
+       0x1df: 0x1870a, // annotation
+       0x1e0: 0x22a0b, // formenctype
+       0x1e2: 0x28908, // noscript
+       0x1e4: 0x53205, // sizes
+       0x1e5: 0xd30c,  // autocomplete
+       0x1e6: 0x7a04,  // span
+       0x1e7: 0x8508,  // noframes
+       0x1e8: 0x26806, // target
+       0x1e9: 0x3c306, // ondrop
+       0x1ea: 0x35506, // srcdoc
+       0x1ec: 0x5e08,  // reversed
+       0x1f0: 0x2d507, // isindex
+       0x1f3: 0x29608, // hreflang
+       0x1f5: 0x4ed02, // h5
+       0x1f6: 0x5d107, // address
+       0x1fa: 0x32103, // max
+       0x1fb: 0xef0b,  // placeholder
+       0x1fc: 0x32f08, // textarea
+       0x1fe: 0x4ad09, // onmouseup
+       0x1ff: 0x3b40b, // ondragstart
 }
 
-const atomText = "abbradiogrouparamanifestepatternavaluembedetailsampingaccept" +
-       "-charsetbodyaccesskeygenobreversedfnoscriptdirnamediagroupla" +
-       "ceholderowspanalignaltfooterubyasyncanvasidefaultitleaudiobj" +
-       "ectrackbdialogautocompletextareadonlyautofocusandboxautoplay" +
-       "baseamlesshapebdoncanplaythrough1blockquoteborderbuttonafter" +
-       "printranslateclassmallabelinkeytypecodefercolgroupostercolor" +
-       "colspannotationabortcommandlooptgroupreloadraggablegendcontr" +
-       "olsourcentercoordspellcheckedcrossoriginsrcdocitemidisabledi" +
-       "varfigcaptionbeforeprintfigurequiredfontimeupdateformactionb" +
-       "eforeunloaddressrclangformenctypemustmatchallengeformmethodf" +
-       "ormnovalidatetimeterformtargeth4h5h6heightmlowbrhgrouphidden" +
-       "high2hreflanghttp-equivideonclickindicontenteditableiframese" +
-       "timgismappletitemrefieldsetitemscopeditemtypemaxlengtheaders" +
-       "tyleminmultiplemutedonclosectionbluroncontextmenuoncuechange" +
-       "ondblclickondragendondragenterondragleaveondragoverondragsta" +
-       "rticleondropzonemptiedondurationchangeonendedonerroronfocusu" +
-       "mmaryonhashchangeoninputoninvalidonkeydownloadonkeypressupon" +
-       "keyuponloadeddatalistrongonloadedmetadatabindexonloadstarton" +
-       "messageonmousedownonmousemoveonmouseoutputonmouseoveronmouse" +
-       "uponmousewheelonofflinertononlineonpagehidelonpageshowidth3o" +
-       "npausemaponplayingonpopstateonprogressonratechangeonresetonr" +
-       "esizesonscrollonseekedonseekingonselectedonshowraponstalledo" +
-       "nstorageonsubmitempropenonsuspendonunloadonvolumechangeonwai" +
-       "tingoptimumarkoptioncancel"
+const atomText = "abbradiogrouparamalignmarkbdialogaccept-charsetbodyaccesskey" +
+       "genavaluealtdescanvasidefaultfootereversedetailsampatternobr" +
+       "owspanoembedfnoframesetitleasyncitemidirnamediagroupingaudio" +
+       "ncancelabelinkindisabledivarubyautocompleteautofocusandboxmp" +
+       "laceholderautoplaybasefontimeupdatebdoncanplaythrough1bgsoun" +
+       "dlooptgrouplaintextrackbigblockquoteborderbuttonabortranslat" +
+       "ecodefercolgroupostercolorcolspannotation-xmlowbrcommandragg" +
+       "ablegendcontrolshapecoordsmallcrossoriginsourcefieldsetfigca" +
+       "ptionafterprintfigurequiredforeignObjectforeignobjectformact" +
+       "ionbeforeprintformenctypemustmatchallengeformmethodformnoval" +
+       "idatetimeterformtargeth6heightmlhgroupreloadhiddenoscripthig" +
+       "h2hreflanghttp-equivideonclickicontenteditableiframeimageimg" +
+       "lyph3isindexismappletitemrefacenteritemscopeditemtypemarquee" +
+       "matheaderspellcheckedmaxlength4minmtextareadonlymultiplemute" +
+       "doncloseamlessrcdoclassectionbluroncontextmenuoncuechangeond" +
+       "blclickondragendondragenterondragleaveondragoverondragstarti" +
+       "cleondropzonemptiedondurationchangeonendedonerroronfocusrcla" +
+       "ngonhashchangeoninputoninvalidonkeydownloadonkeypresstrikeyt" +
+       "ypeonkeyuponloadeddatalistingonloadedmetadatabindexonloadsta" +
+       "rtonmessageonmousedownonmousemoveonmouseoutputonmouseoveronm" +
+       "ouseuponmousewheelonofflinertononlineonpagehidelonpageshowid" +
+       "th5onpausemaponplayingonpopstateonprogresstrongonratechangeo" +
+       "nresetonresizestyleonscrollonseekedonseekingonselectedonshow" +
+       "raponstalledonstorageonsubmitempropenonsuspendonunloadonvolu" +
+       "mechangeonwaitingoptimumanifestepoptionbeforeunloaddressumma" +
+       "rysupsvg"
index b47a3f9034ba2d770b2396c1ce8bab8cdf0afda7..19fefbf3bf01d2de73117e244a50bec604017b17 100644 (file)
@@ -13,6 +13,7 @@ var testAtomList = []string{
        "align",
        "alt",
        "annotation",
+       "annotation-xml",
        "applet",
        "area",
        "article",
@@ -24,8 +25,11 @@ var testAtomList = []string{
        "autoplay",
        "b",
        "base",
+       "basefont",
        "bdi",
        "bdo",
+       "bgsound",
+       "big",
        "blockquote",
        "body",
        "border",
@@ -62,6 +66,7 @@ var testAtomList = []string{
        "default",
        "defer",
        "del",
+       "desc",
        "details",
        "dfn",
        "dialog",
@@ -77,12 +82,15 @@ var testAtomList = []string{
        "em",
        "embed",
        "enctype",
+       "face",
        "fieldset",
        "figcaption",
        "figure",
        "font",
        "footer",
        "for",
+       "foreignObject",
+       "foreignobject",
        "form",
        "form",
        "formaction",
@@ -114,10 +122,12 @@ var testAtomList = []string{
        "icon",
        "id",
        "iframe",
+       "image",
        "img",
        "inert",
        "input",
        "ins",
+       "isindex",
        "ismap",
        "itemid",
        "itemprop",
@@ -135,11 +145,15 @@ var testAtomList = []string{
        "li",
        "link",
        "list",
+       "listing",
        "loop",
        "low",
+       "malignmark",
        "manifest",
        "map",
        "mark",
+       "marquee",
+       "math",
        "max",
        "maxlength",
        "media",
@@ -148,12 +162,20 @@ var testAtomList = []string{
        "meta",
        "meter",
        "method",
+       "mglyph",
+       "mi",
        "min",
+       "mn",
+       "mo",
+       "ms",
+       "mtext",
        "multiple",
        "muted",
        "name",
        "nav",
        "nobr",
+       "noembed",
+       "noframes",
        "noscript",
        "novalidate",
        "object",
@@ -236,6 +258,7 @@ var testAtomList = []string{
        "pattern",
        "ping",
        "placeholder",
+       "plaintext",
        "poster",
        "pre",
        "preload",
@@ -274,12 +297,14 @@ var testAtomList = []string{
        "srclang",
        "start",
        "step",
+       "strike",
        "strong",
        "style",
        "style",
        "sub",
        "summary",
        "sup",
+       "svg",
        "tabindex",
        "table",
        "target",
@@ -295,6 +320,7 @@ var testAtomList = []string{
        "tr",
        "track",
        "translate",
+       "tt",
        "type",
        "typemustmatch",
        "u",
@@ -306,4 +332,5 @@ var testAtomList = []string{
        "wbr",
        "width",
        "wrap",
+       "xmp",
 }