/*
 * Copyright (c) 2020-2021, Andreas Kling <andreas@ladybird.org>
 *
 * SPDX-License-Identifier: BSD-2-Clause
 */

#pragma once

#include <AK/FlyString.h>

namespace Web::HTML {
namespace AttributeNames {

#define ENUMERATE_HTML_ATTRIBUTES                                                        \
    __ENUMERATE_HTML_ATTRIBUTE(abbr, "abbr")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(accept, "accept")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(accept_charset, "accept-charset")                         \
    __ENUMERATE_HTML_ATTRIBUTE(accesskey, "accesskey")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(action, "action")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(align, "align")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(alink, "alink")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(allow, "allow")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(allowfullscreen, "allowfullscreen")                       \
    __ENUMERATE_HTML_ATTRIBUTE(alt, "alt")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(archive, "archive")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(as, "as")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(async, "async")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(autocomplete, "autocomplete")                             \
    __ENUMERATE_HTML_ATTRIBUTE(autofocus, "autofocus")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(autoplay, "autoplay")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(axis, "axis")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(background, "background")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(behavior, "behavior")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(bgcolor, "bgcolor")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(border, "border")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(bordercolor, "bordercolor")                               \
    __ENUMERATE_HTML_ATTRIBUTE(bottommargin, "bottommargin")                             \
    __ENUMERATE_HTML_ATTRIBUTE(cellpadding, "cellpadding")                               \
    __ENUMERATE_HTML_ATTRIBUTE(cellspacing, "cellspacing")                               \
    __ENUMERATE_HTML_ATTRIBUTE(char_, "char")                                            \
    __ENUMERATE_HTML_ATTRIBUTE(charoff, "charoff")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(charset, "charset")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(checked, "checked")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(cite, "cite")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(class_, "class")                                          \
    __ENUMERATE_HTML_ATTRIBUTE(classid, "classid")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(clear, "clear")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(closedby, "closedby")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(code, "code")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(codebase, "codebase")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(codetype, "codetype")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(color, "color")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(cols, "cols")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(colspan, "colspan")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(command, "command")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(commandfor, "commandfor")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(compact, "compact")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(content, "content")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(contenteditable, "contenteditable")                       \
    __ENUMERATE_HTML_ATTRIBUTE(controls, "controls")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(coords, "coords")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(crossorigin, "crossorigin")                               \
    __ENUMERATE_HTML_ATTRIBUTE(data, "data")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(datetime, "datetime")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(declare, "declare")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(decoding, "decoding")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(default_, "default")                                      \
    __ENUMERATE_HTML_ATTRIBUTE(defaultchecked, "defaultchecked")                         \
    __ENUMERATE_HTML_ATTRIBUTE(defaultselected, "defaultselected")                       \
    __ENUMERATE_HTML_ATTRIBUTE(defer, "defer")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(dir, "dir")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(direction, "direction")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(dirname, "dirname")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(disabled, "disabled")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(download, "download")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(enctype, "enctype")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(ended, "ended")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(enterkeyhint, "enterkeyhint")                             \
    __ENUMERATE_HTML_ATTRIBUTE(event, "event")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(face, "face")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(fetchpriority, "fetchpriority")                           \
    __ENUMERATE_HTML_ATTRIBUTE(for_, "for")                                              \
    __ENUMERATE_HTML_ATTRIBUTE(form, "form")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(formaction, "formaction")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(formenctype, "formenctype")                               \
    __ENUMERATE_HTML_ATTRIBUTE(formmethod, "formmethod")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(formnovalidate, "formnovalidate")                         \
    __ENUMERATE_HTML_ATTRIBUTE(formtarget, "formtarget")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(frame, "frame")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(frameborder, "frameborder")                               \
    __ENUMERATE_HTML_ATTRIBUTE(headers, "headers")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(height, "height")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(hidden, "hidden")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(high, "high")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(href, "href")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(hreflang, "hreflang")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(hspace, "hspace")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(http_equiv, "http-equiv")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(id, "id")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(imagesizes, "imagesizes")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(imagesrcset, "imagesrcset")                               \
    __ENUMERATE_HTML_ATTRIBUTE(indeterminate, "indeterminate")                           \
    __ENUMERATE_HTML_ATTRIBUTE(inert, "inert")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(inputmode, "inputmode")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(integrity, "integrity")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(is, "is")                                                 \
    __ENUMERATE_HTML_ATTRIBUTE(iscontenteditable, "iscontenteditable")                   \
    __ENUMERATE_HTML_ATTRIBUTE(ismap, "ismap")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(itemscope, "itemscope")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(kind, "kind")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(label, "label")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(lang, "lang")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(language, "language")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(leftmargin, "leftmargin")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(link, "link")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(list, "list")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(loading, "loading")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(longdesc, "longdesc")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(loop, "loop")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(low, "low")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(lowsrc, "lowsrc")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(marginheight, "marginheight")                             \
    __ENUMERATE_HTML_ATTRIBUTE(marginwidth, "marginwidth")                               \
    __ENUMERATE_HTML_ATTRIBUTE(max, "max")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(maxlength, "maxlength")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(media, "media")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(method, "method")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(min, "min")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(minlength, "minlength")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(multiple, "multiple")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(muted, "muted")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(name, "name")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(nohref, "nohref")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(nomodule, "nomodule")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(nonce, "nonce")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(noresize, "noresize")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(noshade, "noshade")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(novalidate, "novalidate")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(nowrap, "nowrap")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(onabort, "onabort")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(onafterprint, "onafterprint")                             \
    __ENUMERATE_HTML_ATTRIBUTE(onauxclick, "onauxclick")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(onbeforeinput, "onbeforeinput")                           \
    __ENUMERATE_HTML_ATTRIBUTE(onbeforematch, "onbeforematch")                           \
    __ENUMERATE_HTML_ATTRIBUTE(onbeforeprint, "onbeforeprint")                           \
    __ENUMERATE_HTML_ATTRIBUTE(onbeforetoggle, "onbeforetoggle")                         \
    __ENUMERATE_HTML_ATTRIBUTE(onbeforeunload, "onbeforeunload")                         \
    __ENUMERATE_HTML_ATTRIBUTE(onblur, "onblur")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(oncancel, "oncancel")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(oncanplay, "oncanplay")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(oncanplaythrough, "oncanplaythrough")                     \
    __ENUMERATE_HTML_ATTRIBUTE(onchange, "onchange")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(onclick, "onclick")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(onclose, "onclose")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(oncommand, "oncommand")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(oncontextlost, "oncontextlost")                           \
    __ENUMERATE_HTML_ATTRIBUTE(oncontextmenu, "oncontextmenu")                           \
    __ENUMERATE_HTML_ATTRIBUTE(oncontextrestored, "oncontextrestored")                   \
    __ENUMERATE_HTML_ATTRIBUTE(oncopy, "oncopy")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(oncuechange, "oncuechange")                               \
    __ENUMERATE_HTML_ATTRIBUTE(oncut, "oncut")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(ondblclick, "ondblclick")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(ondrag, "ondrag")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(ondragend, "ondragend")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(ondragenter, "ondragenter")                               \
    __ENUMERATE_HTML_ATTRIBUTE(ondragleave, "ondragleave")                               \
    __ENUMERATE_HTML_ATTRIBUTE(ondragover, "ondragover")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(ondragstart, "ondragstart")                               \
    __ENUMERATE_HTML_ATTRIBUTE(ondrop, "ondrop")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(ondurationchange, "ondurationchange")                     \
    __ENUMERATE_HTML_ATTRIBUTE(onemptied, "onemptied")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(onended, "onended")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(onerror, "onerror")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(onfocus, "onfocus")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(onfocusin, "onfocusin")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(onfocusout, "onfocusout")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(onformdata, "onformdata")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(ongotpointercapture, "ongotpointercapture")               \
    __ENUMERATE_HTML_ATTRIBUTE(onhashchange, "onhashchange")                             \
    __ENUMERATE_HTML_ATTRIBUTE(oninput, "oninput")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(oninvalid, "oninvalid")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(onkeydown, "onkeydown")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(onkeypress, "onkeypress")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(onkeyup, "onkeyup")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(onlanguagechange, "onlanguagechange")                     \
    __ENUMERATE_HTML_ATTRIBUTE(onload, "onload")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(onloadeddata, "onloadeddata")                             \
    __ENUMERATE_HTML_ATTRIBUTE(onloadedmetadata, "onloadedmetadata")                     \
    __ENUMERATE_HTML_ATTRIBUTE(onloadstart, "onloadstart")                               \
    __ENUMERATE_HTML_ATTRIBUTE(onlostpointercapture, "onlostpointercapture")             \
    __ENUMERATE_HTML_ATTRIBUTE(onmessage, "onmessage")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(onmessageerror, "onmessageerror")                         \
    __ENUMERATE_HTML_ATTRIBUTE(onmousedown, "onmousedown")                               \
    __ENUMERATE_HTML_ATTRIBUTE(onmouseenter, "onmouseenter")                             \
    __ENUMERATE_HTML_ATTRIBUTE(onmouseleave, "onmouseleave")                             \
    __ENUMERATE_HTML_ATTRIBUTE(onmousemove, "onmousemove")                               \
    __ENUMERATE_HTML_ATTRIBUTE(onmouseout, "onmouseout")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(onmouseover, "onmouseover")                               \
    __ENUMERATE_HTML_ATTRIBUTE(onmouseup, "onmouseup")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(onoffline, "onoffline")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(ononline, "ononline")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(onpagehide, "onpagehide")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(onpagereveal, "onpagereveal")                             \
    __ENUMERATE_HTML_ATTRIBUTE(onpageshow, "onpageshow")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(onpageswap, "onpageswap")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(onpaste, "onpaste")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(onpause, "onpause")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(onplay, "onplay")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(onplaying, "onplaying")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(onpointercancel, "onpointercancel")                       \
    __ENUMERATE_HTML_ATTRIBUTE(onpointerdown, "onpointerdown")                           \
    __ENUMERATE_HTML_ATTRIBUTE(onpointerenter, "onpointerenter")                         \
    __ENUMERATE_HTML_ATTRIBUTE(onpointerleave, "onpointerleave")                         \
    __ENUMERATE_HTML_ATTRIBUTE(onpointermove, "onpointermove")                           \
    __ENUMERATE_HTML_ATTRIBUTE(onpointerout, "onpointerout")                             \
    __ENUMERATE_HTML_ATTRIBUTE(onpointerover, "onpointerover")                           \
    __ENUMERATE_HTML_ATTRIBUTE(onpointerrawupdate, "onpointerrawupdate")                 \
    __ENUMERATE_HTML_ATTRIBUTE(onpointerup, "onpointerup")                               \
    __ENUMERATE_HTML_ATTRIBUTE(onpopstate, "onpopstate")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(onprogress, "onprogress")                                 \
    __ENUMERATE_HTML_ATTRIBUTE(onratechange, "onratechange")                             \
    __ENUMERATE_HTML_ATTRIBUTE(onrejectionhandled, "onrejectionhandled")                 \
    __ENUMERATE_HTML_ATTRIBUTE(onreset, "onreset")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(onresize, "onresize")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(onscroll, "onscroll")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(onscrollend, "onscrollend")                               \
    __ENUMERATE_HTML_ATTRIBUTE(onsecuritypolicyviolation, "onsecuritypolicyviolation")   \
    __ENUMERATE_HTML_ATTRIBUTE(onseeked, "onseeked")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(onseeking, "onseeking")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(onselect, "onselect")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(onselectionchange, "onselectionchange")                   \
    __ENUMERATE_HTML_ATTRIBUTE(onslotchange, "onslotchange")                             \
    __ENUMERATE_HTML_ATTRIBUTE(onstalled, "onstalled")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(onstorage, "onstorage")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(onsubmit, "onsubmit")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(onsuspend, "onsuspend")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(ontimeupdate, "ontimeupdate")                             \
    __ENUMERATE_HTML_ATTRIBUTE(ontoggle, "ontoggle")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(onunhandledrejection, "onunhandledrejection")             \
    __ENUMERATE_HTML_ATTRIBUTE(onunload, "onunload")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(onvolumechange, "onvolumechange")                         \
    __ENUMERATE_HTML_ATTRIBUTE(onwaiting, "onwaiting")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(onwebkitanimationend, "onwebkitanimationend")             \
    __ENUMERATE_HTML_ATTRIBUTE(onwebkitanimationiteration, "onwebkitanimationiteration") \
    __ENUMERATE_HTML_ATTRIBUTE(onwebkitanimationstart, "onwebkitanimationstart")         \
    __ENUMERATE_HTML_ATTRIBUTE(onwebkittransitionend, "onwebkittransitionend")           \
    __ENUMERATE_HTML_ATTRIBUTE(onwheel, "onwheel")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(open, "open")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(optimum, "optimum")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(pattern, "pattern")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(paused, "paused")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(ping, "ping")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(placeholder, "placeholder")                               \
    __ENUMERATE_HTML_ATTRIBUTE(playsinline, "playsinline")                               \
    __ENUMERATE_HTML_ATTRIBUTE(popover, "popover")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(popovertarget, "popovertarget")                           \
    __ENUMERATE_HTML_ATTRIBUTE(popovertargetaction, "popovertargetaction")               \
    __ENUMERATE_HTML_ATTRIBUTE(poster, "poster")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(preload, "preload")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(readonly, "readonly")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(referrerpolicy, "referrerpolicy")                         \
    __ENUMERATE_HTML_ATTRIBUTE(rel, "rel")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(required, "required")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(rev, "rev")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(reversed, "reversed")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(rightmargin, "rightmargin")                               \
    __ENUMERATE_HTML_ATTRIBUTE(rows, "rows")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(rowspan, "rowspan")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(rules, "rules")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(sandbox, "sandbox")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(scheme, "scheme")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(scope, "scope")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(scrollamount, "scrollamount")                             \
    __ENUMERATE_HTML_ATTRIBUTE(scrolldelay, "scrolldelay")                               \
    __ENUMERATE_HTML_ATTRIBUTE(scrolling, "scrolling")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(seeking, "seeking")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(selected, "selected")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(shadowrootclonable, "shadowrootclonable")                 \
    __ENUMERATE_HTML_ATTRIBUTE(shadowrootdelegatesfocus, "shadowrootdelegatesfocus")     \
    __ENUMERATE_HTML_ATTRIBUTE(shadowrootmode, "shadowrootmode")                         \
    __ENUMERATE_HTML_ATTRIBUTE(shadowrootserializable, "shadowrootserializable")         \
    __ENUMERATE_HTML_ATTRIBUTE(shape, "shape")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(size, "size")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(sizes, "sizes")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(slot, "slot")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(span, "span")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(src, "src")                                               \
    __ENUMERATE_HTML_ATTRIBUTE(srcdoc, "srcdoc")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(srclang, "srclang")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(srcset, "srcset")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(standby, "standby")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(start, "start")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(step, "step")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(style, "style")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(summary, "summary")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(switch_, "switch")                                        \
    __ENUMERATE_HTML_ATTRIBUTE(tabindex, "tabindex")                                     \
    __ENUMERATE_HTML_ATTRIBUTE(target, "target")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(text, "text")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(title, "title")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(topmargin, "topmargin")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(translate, "translate")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(truespeed, "truespeed")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(type, "type")                                             \
    __ENUMERATE_HTML_ATTRIBUTE(usemap, "usemap")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(valign, "valign")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(value, "value")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(valuetype, "valuetype")                                   \
    __ENUMERATE_HTML_ATTRIBUTE(version, "version")                                       \
    __ENUMERATE_HTML_ATTRIBUTE(vlink, "vlink")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(vspace, "vspace")                                         \
    __ENUMERATE_HTML_ATTRIBUTE(width, "width")                                           \
    __ENUMERATE_HTML_ATTRIBUTE(willvalidate, "willvalidate")                             \
    __ENUMERATE_HTML_ATTRIBUTE(wrap, "wrap")

#define __ENUMERATE_HTML_ATTRIBUTE(name, attribute) extern FlyString name;
ENUMERATE_HTML_ATTRIBUTES
#undef __ENUMERATE_HTML_ATTRIBUTE

}

bool is_boolean_attribute(FlyString const& attribute);

}
