/*
 * Copyright 2004-2010 Jacek Caban for CodeWeavers
 * Copyright 2008      Konstantin Kondratyuk (Etersoft)
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include <mshtmdid.h>
#include <mshtmcid.h>
#include <olectl.h>

import "ocidl.idl";
import "dimm.idl";
import "shtypes.idl";
import "dispex.idl";

#ifndef __WIDL__
#define progid(str)
#define vi_progid(str)
#endif

cpp_quote("#include <olectl.h>")

cpp_quote("DEFINE_GUID(CLSID_MHTMLDocument,     0x3050f3d9,0x98b5,0x11cf,0xbb,0x82,0x00,0xaa,0x00,0xbd,0xce,0x0b);")
cpp_quote("DEFINE_GUID(CLSID_XHTMLDocument,     0x30590067,0x98b5,0x11cf,0xbb,0x82,0x00,0xaa,0x00,0xbd,0xce,0x0b);")
cpp_quote("DEFINE_GUID(CLSID_SVGDocument,       0x30590066,0x98b5,0x11cf,0xbb,0x82,0x00,0xaa,0x00,0xbd,0xce,0x0b);")

cpp_quote("DEFINE_GUID(SID_SEditCommandTarget,  0x3050f4b5,0x98b5,0x11cf,0xbb,0x82,0x00,0xaa,0x00,0xbd,0xce,0x0b);")
cpp_quote("DEFINE_GUID(SID_SHTMLEditHost,       0x3050f6a0,0x98b5,0x11cf,0xbb,0x82,0x00,0xaa,0x00,0xbd,0xce,0x0b);")
cpp_quote("DEFINE_GUID(SID_SHTMLEditServices,   0x3050f7f9,0x98b5,0x11cf,0xbb,0x82,0x00,0xaa,0x00,0xbd,0xce,0x0b);")
cpp_quote("#define SID_SHTMLWindow IID_IHTMLWindow2")
cpp_quote("#define SID_SElementBehaviorFactory IID_IElementBehaviorFactory")

cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
cpp_quote("#undef FindText")
cpp_quote("#endif")

[
    version(4.0),
    uuid(3050F1C5-98B5-11CF-BB82-00AA00BDCE0B)
]
library MSHTML
{

importlib("stdole2.tlb");

typedef enum {
    POINTER_GRAVITY_Left,
    POINTER_GRAVITY_Right,
    POINTER_GRAVITY_Max = 2147483647
} POINTER_GRAVITY;

typedef enum {
    CONTEXT_TYPE_None,
    CONTEXT_TYPE_Text,
    CONTEXT_TYPE_EnterScope,
    CONTEXT_TYPE_ExitScope,
    CONTEXT_TYPE_NoScope,
    MARKUP_CONTEXT_TYPE_Max = 2147483647
} MARKUP_CONTEXT_TYPE;

typedef enum {
    ELEM_ADJ_BeforeBegin,
    ELEM_ADJ_AfterBegin,
    ELEM_ADJ_BeforeEnd,
    ELEM_ADJ_AfterEnd,
    ELEMENT_ADJACENCY_Max = 2147483647
} ELEMENT_ADJACENCY;

typedef enum {
    MOVEUNIT_PREVCHAR,
    MOVEUNIT_NEXTCHAR,
    MOVEUNIT_PREVCLUSTERBEG,
    MOVEUNIT_NEXTCLUSTERBEG,
    MOVEUNIT_PREVCLUSTEREND,
    MOVEUNIT_NEXTCLUSTEREND,
    MOVEUNIT_PREVWORDBEG,
    MOVEUNIT_NEXTWORDBEG,
    MOVEUNIT_PREVWORDEND,
    MOVEUNIT_NEXTWORDEND,
    MOVEUNIT_PREVPROOFWORD,
    MOVEUNIT_NEXTPROOFWORD,
    MOVEUNIT_NEXTURLBEG,
    MOVEUNIT_PREVURLBEG,
    MOVEUNIT_NEXTURLEND,
    MOVEUNIT_PREVURLEND,
    MOVEUNIT_PREVSENTENCE,
    MOVEUNIT_NEXTSENTENCE,
    MOVEUNIT_PREVBLOCK,
    MOVEUNIT_NEXTBLOCK,
    MOVEUNIT_ACTION_Max = 2147483647
} MOVEUNIT_ACTION;

typedef enum _SELECTION_TYPE {
    SELECTION_TYPE_None,
    SELECTION_TYPE_Caret,
    SELECTION_TYPE_Text,
    SELECTION_TYPE_Control,
    SELECTION_TYPE_Max = 2147483647
} SELECTION_TYPE;

typedef enum _ELEMENT_TAG_ID {
    TAGID_NULL,
    TAGID_UNKNOWN,
    TAGID_A,
    TAGID_ACRONYM,
    TAGID_ADDRESS,
    TAGID_APPLET,
    TAGID_AREA,
    TAGID_B,
    TAGID_BASE,
    TAGID_BASEFONT,
    TAGID_BDO,
    TAGID_BGSOUND,
    TAGID_BIG,
    TAGID_BLINK,
    TAGID_BLOCKQUOTE,
    TAGID_BODY,
    TAGID_BR,
    TAGID_BUTTON,
    TAGID_CAPTION,
    TAGID_CENTER,
    TAGID_CITE,
    TAGID_CODE,
    TAGID_COL,
    TAGID_COLGROUP,
    TAGID_COMMENT,
    TAGID_COMMENT_RAW,
    TAGID_DD,
    TAGID_DEL,
    TAGID_DFN,
    TAGID_DIR,
    TAGID_DIV,
    TAGID_DL,
    TAGID_DT,
    TAGID_EM,
    TAGID_EMBED,
    TAGID_FIELDSET,
    TAGID_FONT,
    TAGID_FORM,
    TAGID_FRAME,
    TAGID_FRAMESET,
    TAGID_GENERIC,
    TAGID_H1,
    TAGID_H2,
    TAGID_H3,
    TAGID_H4,
    TAGID_H5,
    TAGID_H6,
    TAGID_HEAD,
    TAGID_HR,
    TAGID_HTML,
    TAGID_I,
    TAGID_IFRAME,
    TAGID_IMG,
    TAGID_INPUT,
    TAGID_INS,
    TAGID_KBD,
    TAGID_LABEL,
    TAGID_LEGEND,
    TAGID_LI,
    TAGID_LINK,
    TAGID_LISTING,
    TAGID_MAP,
    TAGID_MARQUEE,
    TAGID_MENU,
    TAGID_META,
    TAGID_NEXTID,
    TAGID_NOBR,
    TAGID_NOEMBED,
    TAGID_NOFRAMES,
    TAGID_NOSCRIPT,
    TAGID_OBJECT,
    TAGID_OL,
    TAGID_OPTION,
    TAGID_P,
    TAGID_PARAM,
    TAGID_PLAINTEXT,
    TAGID_PRE,
    TAGID_Q,
    TAGID_RP,
    TAGID_RT,
    TAGID_RUBY,
    TAGID_S,
    TAGID_SAMP,
    TAGID_SCRIPT,
    TAGID_SELECT,
    TAGID_SMALL,
    TAGID_SPAN,
    TAGID_STRIKE,
    TAGID_STRONG,
    TAGID_STYLE,
    TAGID_SUB,
    TAGID_SUP,
    TAGID_TABLE,
    TAGID_TBODY,
    TAGID_TC,
    TAGID_TD,
    TAGID_TEXTAREA,
    TAGID_TFOOT,
    TAGID_TH,
    TAGID_THEAD,
    TAGID_TITLE,
    TAGID_TR,
    TAGID_TT,
    TAGID_U,
    TAGID_UL,
    TAGID_VAR,
    TAGID_WBR,
    TAGID_XMP,
    TAGID_ROOT,
    TAGID_OPTGROUP,
    TAGID_ABBR,
    TAGID_COUNT,
    TAGID_LAST_PREDEFINED = 10000,
    ELEMENT_TAG_ID_Max = 2147483647
} ELEMENT_TAG_ID;

typedef enum _COORD_SYSTEM {
    COORD_SYSTEM_GLOBAL,
    COORD_SYSTEM_PARENT,
    COORD_SYSTEM_CONTAINER,
    COORD_SYSTEM_CONTENT,
    COORD_SYSTEM_FRAME,
    COORD_SYSTEM_Max = 2147483647
} COORD_SYSTEM;

typedef enum _DISPLAY_MOVEUNIT {
    DISPLAY_MOVEUNIT_PreviousLine = 1,
    DISPLAY_MOVEUNIT_NextLine,
    DISPLAY_MOVEUNIT_CurrentLineStart,
    DISPLAY_MOVEUNIT_CurrentLineEnd,
    DISPLAY_MOVEUNIT_TopOfWindow,
    DISPLAY_MOVEUNIT_BottomOfWindow,
    DISPLAY_MOVEUNIT_Max = 2147483647
} DISPLAY_MOVEUNIT;

typedef enum _DISPLAY_GRAVITY {
    DISPLAY_GRAVITY_PreviousLine = 1,
    DISPLAY_GRAVITY_NextLine,
    DISPLAY_GRAVITY_Max = 2147483647
} DISPLAY_GRAVITY;

typedef enum _CARET_DIRECTION {
    CARET_DIRECTION_INDETERMINATE,
    CARET_DIRECTION_SAME,
    CARET_DIRECTION_BACKWARD,
    CARET_DIRECTION_FORWARD,
    CARET_DIRECTION_Max = 2147483647
} CARET_DIRECTION;

typedef enum _DomConstructor {
    DomConstructorObject                      = 0,
    DomConstructorAttr                        = 1,
    DomConstructorBehaviorUrnsCollection      = 2,
    DomConstructorBookmarkCollection          = 3,
    DomConstructorCompatibleInfo              = 4,
    DomConstructorCompatibleInfoCollection    = 5,
    DomConstructorControlRangeCollection      = 6,
    DomConstructorCSSCurrentStyleDeclaration  = 7,
    DomConstructorCSSRuleList                 = 8,
    DomConstructorCSSRuleStyleDeclaration     = 9,
    DomConstructorCSSStyleDeclaration         = 10,
    DomConstructorCSSStyleRule                = 11,
    DomConstructorCSSStyleSheet               = 12,
    DomConstructorDataTransfer                = 13,
    DomConstructorDOMImplementation           = 14,
    DomConstructorElement                     = 15,
    DomConstructorEvent                       = 16,
    DomConstructorHistory                     = 17,
    DomConstructorHTCElementBehaviorDefaults  = 18,
    DomConstructorHTMLAnchorElement           = 19,
    DomConstructorHTMLAreaElement             = 20,
    DomConstructorHTMLAreasCollection         = 21,
    DomConstructorHTMLBaseElement             = 22,
    DomConstructorHTMLBaseFontElement         = 23,
    DomConstructorHTMLBGSoundElement          = 24,
    DomConstructorHTMLBlockElement            = 25,
    DomConstructorHTMLBodyElement             = 26,
    DomConstructorHTMLBRElement               = 27,
    DomConstructorHTMLButtonElement           = 28,
    DomConstructorHTMLCollection              = 29,
    DomConstructorHTMLCommentElement          = 30,
    DomConstructorHTMLDDElement               = 31,
    DomConstructorHTMLDivElement              = 32,
    DomConstructorHTMLDocument                = 33,
    DomConstructorHTMLDListElement            = 34,
    DomConstructorHTMLDTElement               = 35,
    DomConstructorHTMLEmbedElement            = 36,
    DomConstructorHTMLFieldSetElement         = 37,
    DomConstructorHTMLFontElement             = 38,
    DomConstructorHTMLFormElement             = 39,
    DomConstructorHTMLFrameElement            = 40,
    DomConstructorHTMLFrameSetElement         = 41,
    DomConstructorHTMLGenericElement          = 42,
    DomConstructorHTMLHeadElement             = 43,
    DomConstructorHTMLHeadingElement          = 44,
    DomConstructorHTMLHRElement               = 45,
    DomConstructorHTMLHtmlElement             = 46,
    DomConstructorHTMLIFrameElement           = 47,
    DomConstructorHTMLImageElement            = 48,
    DomConstructorHTMLInputElement            = 49,
    DomConstructorHTMLIsIndexElement          = 50,
    DomConstructorHTMLLabelElement            = 51,
    DomConstructorHTMLLegendElement           = 52,
    DomConstructorHTMLLIElement               = 53,
    DomConstructorHTMLLinkElement             = 54,
    DomConstructorHTMLMapElement              = 55,
    DomConstructorHTMLMarqueeElement          = 56,
    DomConstructorHTMLMetaElement             = 57,
    DomConstructorHTMLModelessDialog          = 58,
    DomConstructorHTMLNamespaceInfo           = 59,
    DomConstructorHTMLNamespaceInfoCollection = 60,
    DomConstructorHTMLNextIdElement           = 61,
    DomConstructorHTMLNoShowElement           = 62,
    DomConstructorHTMLObjectElement           = 63,
    DomConstructorHTMLOListElement            = 64,
    DomConstructorHTMLOptionElement           = 65,
    DomConstructorHTMLParagraphElement        = 66,
    DomConstructorHTMLParamElement            = 67,
    DomConstructorHTMLPhraseElement           = 68,
    DomConstructorHTMLPluginsCollection       = 69,
    DomConstructorHTMLPopup                   = 70,
    DomConstructorHTMLScriptElement           = 71,
    DomConstructorHTMLSelectElement           = 72,
    DomConstructorHTMLSpanElement             = 73,
    DomConstructorHTMLStyleElement            = 74,
    DomConstructorHTMLTableCaptionElement     = 75,
    DomConstructorHTMLTableCellElement        = 76,
    DomConstructorHTMLTableColElement         = 77,
    DomConstructorHTMLTableElement            = 78,
    DomConstructorHTMLTableRowElement         = 79,
    DomConstructorHTMLTableSectionElement     = 80,
    DomConstructorHTMLTextAreaElement         = 81,
    DomConstructorHTMLTextElement             = 82,
    DomConstructorHTMLTitleElement            = 83,
    DomConstructorHTMLUListElement            = 84,
    DomConstructorHTMLUnknownElement          = 85,
    DomConstructorImage                       = 86,
    DomConstructorLocation                    = 87,
    DomConstructorNamedNodeMap                = 88,
    DomConstructorNavigator                   = 89,
    DomConstructorNodeList                    = 90,
    DomConstructorOption                      = 91,
    DomConstructorScreen                      = 92,
    DomConstructorSelection                   = 93,
    DomConstructorStaticNodeList              = 94,
    DomConstructorStorage                     = 95,
    DomConstructorStyleSheetList              = 96,
    DomConstructorStyleSheetPage              = 97,
    DomConstructorStyleSheetPageList          = 98,
    DomConstructorText                        = 99,
    DomConstructorTextRange                   = 100,
    DomConstructorTextRangeCollection         = 101,
    DomConstructorTextRectangle               = 102,
    DomConstructorTextRectangleList           = 103,
    DomConstructorWindow                      = 104,
    DomConstructorXDomainRequest              = 105,
    DomConstructorXMLHttpRequest              = 106,
    DomConstructorMax                         = 107,
    DomConstructor_Max                        = 2147483647L
} DomConstructor;

[
    odl,
    oleautomation,
    dual,
    uuid(3051049b-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDOMConstructor : IDispatch
{
    [propget, id(DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden]
    HRESULT constructor([retval, out] IDispatch* * p);

    HRESULT LookupGetter([in] BSTR propname, [retval, out] VARIANT* ppDispHandler);

    HRESULT LookupSetter([in] BSTR propname, [retval, out] VARIANT* ppDispHandler);

    HRESULT DefineGetter([in] BSTR propname, [in] VARIANT* pdispHandler);

    HRESULT DefineSetter([in] BSTR propname, [in] VARIANT* pdispHandler);
}

#define WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL                     \
    [propget, id(DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden]       \
    IDispatch *constructor()

interface IHTMLComputedStyle;
interface IHTMLDocument7;
interface IHTMLElement;
interface IHTMLElement2;
interface IHTMLElementCollection;
interface IHTMLEventObj;
interface IHTMLFrameBase;
interface IHTMLStorage;
interface IHTMLStyleSheetsCollection;
interface IHTMLTableSection;
interface IHTMLWindow2;
interface IHTMLWindow3;
interface IHTMLWindow4;
interface IHTMLWindow5;
interface IHTMLWindow6;
interface IHTMLWindow7;
interface IDOMEvent;
interface ISVGSVGElement;
interface IHTMLDOMRange;
interface IHTMLStyleSheet;

/*****************************************************************************
 *    IHTMLCSSStyleDeclaration interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510740-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLCSSStyleDeclaration : IDispatch
{
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LENGTH)]
    HRESULT length([out, retval] long *p);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_PARENTRULE)]
    HRESULT parentRule([out, retval] VARIANT *p);

    [id(DISPID_IHTMLCSSSTYLEDECLARATION_GETPROPERTYVALUE)]
    HRESULT getPropertyValue(
            [in] BSTR bstrPropertyName,
            [out, retval] BSTR *pbstrPropertyValue);

    [id(DISPID_IHTMLCSSSTYLEDECLARATION_GETPROPERTYPRIORITY)]
    HRESULT getPropertyPriority(
            [in] BSTR bstrPropertyName,
            [out, retval] BSTR *pbstrPropertyPriority);

    [id(DISPID_IHTMLCSSSTYLEDECLARATION_REMOVEPROPERTY)]
    HRESULT removeProperty(
            [in] BSTR bstrPropertyName,
            [out, retval] BSTR *pbstrPropertyValue);

    [id(DISPID_IHTMLCSSSTYLEDECLARATION_SETPROPERTY)]
    HRESULT setProperty(
            [in] BSTR bstrPropertyName,
            [in] VARIANT *pvarPropertyValue,
            [in, defaultvalue(NULL)] VARIANT *pvarPropertyPriority);

    [id(DISPID_IHTMLCSSSTYLEDECLARATION_ITEM)]
    HRESULT item(
            [in] long index,
            [out, retval] BSTR *pbstrPropertyName);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTFAMILY), displaybind, bindable]
    HRESULT fontFamily([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTFAMILY), displaybind, bindable]
    HRESULT fontFamily([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTYLE), displaybind, bindable]
    HRESULT fontStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTYLE), displaybind, bindable]
    HRESULT fontStyle([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTVARIANT), displaybind, bindable]
    HRESULT fontVariant([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTVARIANT), displaybind, bindable]
    HRESULT fontVariant([retval, out] BSTR * p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTWEIGHT), displaybind, bindable]
    HRESULT fontWeight([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTWEIGHT), displaybind, bindable]
    HRESULT fontWeight([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZE), displaybind, bindable]
    HRESULT fontSize([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZE), displaybind, bindable]
    HRESULT fontSize([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONT), displaybind, bindable, nonbrowsable]
    HRESULT font([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONT), displaybind, bindable, nonbrowsable]
    HRESULT font([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_COLOR), displaybind, bindable]
    HRESULT color([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_COLOR), displaybind, bindable]
    HRESULT color([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUND), displaybind, bindable, nonbrowsable]
    HRESULT background([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUND), displaybind, bindable, nonbrowsable]
    HRESULT background([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCOLOR), displaybind, bindable]
    HRESULT backgroundColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCOLOR), displaybind, bindable]
    HRESULT backgroundColor([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDIMAGE), displaybind, bindable]
    HRESULT backgroundImage([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDIMAGE), displaybind, bindable]
    HRESULT backgroundImage([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDREPEAT), displaybind, bindable]
    HRESULT backgroundRepeat([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDREPEAT), displaybind, bindable]
    HRESULT backgroundRepeat([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDATTACHMENT), displaybind, bindable]
    HRESULT backgroundAttachment([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDATTACHMENT), displaybind, bindable]
    HRESULT backgroundAttachment([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITION), displaybind, bindable]
    HRESULT backgroundPosition([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITION), displaybind, bindable]
    HRESULT backgroundPosition([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONX), displaybind, bindable]
    HRESULT backgroundPositionX([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONX), displaybind, bindable]
    HRESULT backgroundPositionX([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONY), displaybind, bindable]
    HRESULT backgroundPositionY([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONY), displaybind, bindable]
    HRESULT backgroundPositionY([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_WORDSPACING), displaybind, bindable]
    HRESULT wordSpacing([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_WORDSPACING), displaybind, bindable]
    HRESULT wordSpacing([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LETTERSPACING), displaybind, bindable]
    HRESULT letterSpacing([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LETTERSPACING), displaybind, bindable]
    HRESULT letterSpacing([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTDECORATION), displaybind, bindable]
    HRESULT textDecoration([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTDECORATION), displaybind, bindable]
    HRESULT textDecoration([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_VERTICALALIGN), displaybind, bindable]
    HRESULT verticalAlign([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_VERTICALALIGN), displaybind, bindable]
    HRESULT verticalAlign([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTTRANSFORM), displaybind, bindable]
    HRESULT textTransform([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTTRANSFORM), displaybind, bindable]
    HRESULT textTransform([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGN), displaybind, bindable]
    HRESULT textAlign([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGN), displaybind, bindable]
    HRESULT textAlign([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTINDENT), displaybind, bindable]
    HRESULT textIndent([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTINDENT), displaybind, bindable]
    HRESULT textIndent([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LINEHEIGHT), displaybind, bindable]
    HRESULT lineHeight([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LINEHEIGHT), displaybind, bindable]
    HRESULT lineHeight([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARGINTOP), displaybind, bindable]
    HRESULT marginTop([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARGINTOP), displaybind, bindable]
    HRESULT marginTop([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARGINRIGHT), displaybind, bindable]
    HRESULT marginRight([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARGINRIGHT), displaybind, bindable]
    HRESULT marginRight([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARGINBOTTOM), displaybind, bindable]
    HRESULT marginBottom([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARGINBOTTOM), displaybind, bindable]
    HRESULT marginBottom([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARGINLEFT), displaybind, bindable]
    HRESULT marginLeft([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARGINLEFT), displaybind, bindable]
    HRESULT marginLeft([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARGIN), displaybind, bindable, nonbrowsable]
    HRESULT margin([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARGIN), displaybind, bindable, nonbrowsable]
    HRESULT margin([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGTOP), displaybind, bindable]
    HRESULT paddingTop([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGTOP), displaybind, bindable]
    HRESULT paddingTop([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGRIGHT), displaybind, bindable]
    HRESULT paddingRight([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGRIGHT), displaybind, bindable]
    HRESULT paddingRight([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGBOTTOM), displaybind, bindable]
    HRESULT paddingBottom([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGBOTTOM), displaybind, bindable]
    HRESULT paddingBottom([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGLEFT), displaybind, bindable]
    HRESULT paddingLeft([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGLEFT), displaybind, bindable]
    HRESULT paddingLeft([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_PADDING), displaybind, bindable, nonbrowsable]
    HRESULT padding([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_PADDING), displaybind, bindable, nonbrowsable]
    HRESULT padding([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDER), displaybind, bindable, nonbrowsable]
    HRESULT border([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDER), displaybind, bindable, nonbrowsable]
    HRESULT border([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOP), displaybind, bindable]
    HRESULT borderTop([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOP), displaybind, bindable]
    HRESULT borderTop([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHT), displaybind, bindable]
    HRESULT borderRight([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHT), displaybind, bindable]
    HRESULT borderRight([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOM), displaybind, bindable]
    HRESULT borderBottom([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOM), displaybind, bindable]
    HRESULT borderBottom([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFT), displaybind, bindable]
    HRESULT borderLeft([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFT), displaybind, bindable]
    HRESULT borderLeft([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLOR), displaybind, bindable]
    HRESULT borderColor([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLOR), displaybind, bindable]
    HRESULT borderColor([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPCOLOR), displaybind, bindable]
    HRESULT borderTopColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPCOLOR), displaybind, bindable]
    HRESULT borderTopColor([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTCOLOR), displaybind, bindable]
    HRESULT borderRightColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTCOLOR), displaybind, bindable]
    HRESULT borderRightColor([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMCOLOR), displaybind, bindable]
    HRESULT borderBottomColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMCOLOR), displaybind, bindable]
    HRESULT borderBottomColor([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTCOLOR), displaybind, bindable]
    HRESULT borderLeftColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTCOLOR), displaybind, bindable]
    HRESULT borderLeftColor([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERWIDTH), displaybind, bindable]
    HRESULT borderWidth([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERWIDTH), displaybind, bindable]
    HRESULT borderWidth([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPWIDTH), displaybind, bindable]
    HRESULT borderTopWidth([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPWIDTH), displaybind, bindable]
    HRESULT borderTopWidth([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTWIDTH), displaybind, bindable]
    HRESULT borderRightWidth([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTWIDTH), displaybind, bindable]
    HRESULT borderRightWidth([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMWIDTH), displaybind, bindable]
    HRESULT borderBottomWidth([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMWIDTH), displaybind, bindable]
    HRESULT borderBottomWidth([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTWIDTH), displaybind, bindable]
    HRESULT borderLeftWidth([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTWIDTH), displaybind, bindable]
    HRESULT borderLeftWidth([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSTYLE), displaybind, bindable]
    HRESULT borderStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSTYLE), displaybind, bindable]
    HRESULT borderStyle([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPSTYLE), displaybind, bindable]
    HRESULT borderTopStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPSTYLE), displaybind, bindable]
    HRESULT borderTopStyle([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTSTYLE), displaybind, bindable]
    HRESULT borderRightStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTSTYLE), displaybind, bindable]
    HRESULT borderRightStyle([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMSTYLE), displaybind, bindable]
    HRESULT borderBottomStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMSTYLE), displaybind, bindable]
    HRESULT borderBottomStyle([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTSTYLE), displaybind, bindable]
    HRESULT borderLeftStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTSTYLE), displaybind, bindable]
    HRESULT borderLeftStyle([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_WIDTH), displaybind, bindable]
    HRESULT width([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_WIDTH), displaybind, bindable]
    HRESULT width([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_HEIGHT), displaybind, bindable]
    HRESULT height([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_HEIGHT), displaybind, bindable]
    HRESULT height([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_STYLEFLOAT), displaybind, bindable]
    HRESULT styleFloat([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_STYLEFLOAT), displaybind, bindable]
    HRESULT styleFloat([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLEAR), displaybind, bindable]
    HRESULT clear([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLEAR), displaybind, bindable]
    HRESULT clear([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_DISPLAY), displaybind, bindable]
    HRESULT display([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_DISPLAY), displaybind, bindable]
    HRESULT display([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_VISIBILITY), displaybind, bindable]
    HRESULT visibility([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_VISIBILITY), displaybind, bindable]
    HRESULT visibility([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLETYPE), displaybind, bindable]
    HRESULT listStyleType([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLETYPE), displaybind, bindable]
    HRESULT listStyleType([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEPOSITION), displaybind, bindable]
    HRESULT listStylePosition([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEPOSITION), displaybind, bindable]
    HRESULT listStylePosition([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEIMAGE), displaybind, bindable]
    HRESULT listStyleImage([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEIMAGE), displaybind, bindable]
    HRESULT listStyleImage([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLE), displaybind, bindable, nonbrowsable]
    HRESULT listStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLE), displaybind, bindable, nonbrowsable]
    HRESULT listStyle([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_WHITESPACE), displaybind, bindable]
    HRESULT whiteSpace([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_WHITESPACE), displaybind, bindable]
    HRESULT whiteSpace([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TOP), displaybind, bindable]
    HRESULT top([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TOP), displaybind, bindable]
    HRESULT top([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LEFT), displaybind, bindable]
    HRESULT left([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LEFT), displaybind, bindable]
    HRESULT left([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_ZINDEX), displaybind, bindable]
    HRESULT zIndex([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_ZINDEX), displaybind, bindable]
    HRESULT zIndex([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOW), displaybind, bindable]
    HRESULT overflow([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOW), displaybind, bindable]
    HRESULT overflow([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKBEFORE), displaybind, bindable]
    HRESULT pageBreakBefore([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKBEFORE), displaybind, bindable]
    HRESULT pageBreakBefore([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKAFTER), displaybind, bindable]
    HRESULT pageBreakAfter([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKAFTER), displaybind, bindable]
    HRESULT pageBreakAfter([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CSSTEXT), displaybind, bindable, nonbrowsable]
    HRESULT cssText([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CSSTEXT), displaybind, bindable, nonbrowsable]
    HRESULT cssText([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CURSOR), displaybind, bindable]
    HRESULT cursor([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CURSOR), displaybind, bindable]
    HRESULT cursor([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIP), displaybind, bindable]
    HRESULT clip([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIP), displaybind, bindable]
    HRESULT clip([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FILTER), displaybind, bindable]
    HRESULT filter([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FILTER), displaybind, bindable]
    HRESULT filter([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TABLELAYOUT), displaybind, bindable]
    HRESULT tableLayout([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TABLELAYOUT), displaybind, bindable]
    HRESULT tableLayout([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLLAPSE), displaybind, bindable]
    HRESULT borderCollapse([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLLAPSE), displaybind, bindable]
    HRESULT borderCollapse([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_DIRECTION), displaybind, bindable]
    HRESULT direction([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_DIRECTION), displaybind, bindable]
    HRESULT direction([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BEHAVIOR), displaybind, bindable]
    HRESULT behavior([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BEHAVIOR), displaybind, bindable]
    HRESULT behavior([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_POSITION), displaybind, bindable]
    HRESULT position([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_POSITION), displaybind, bindable]
    HRESULT position([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_UNICODEBIDI), displaybind, bindable]
    HRESULT unicodeBidi([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_UNICODEBIDI), displaybind, bindable]
    HRESULT unicodeBidi([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BOTTOM), displaybind, bindable]
    HRESULT bottom([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BOTTOM), displaybind, bindable]
    HRESULT bottom([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_RIGHT), displaybind, bindable]
    HRESULT right([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_RIGHT), displaybind, bindable]
    HRESULT right([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_IMEMODE), displaybind, bindable]
    HRESULT imeMode([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_IMEMODE), displaybind, bindable]
    HRESULT imeMode([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_RUBYALIGN), displaybind, bindable]
    HRESULT rubyAlign([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_RUBYALIGN), displaybind, bindable]
    HRESULT rubyAlign([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_RUBYPOSITION), displaybind, bindable]
    HRESULT rubyPosition([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_RUBYPOSITION), displaybind, bindable]
    HRESULT rubyPosition([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_RUBYOVERHANG), displaybind, bindable]
    HRESULT rubyOverhang([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_RUBYOVERHANG), displaybind, bindable]
    HRESULT rubyOverhang([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDCHAR), displaybind, bindable]
    HRESULT layoutGridChar([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDCHAR), displaybind, bindable]
    HRESULT layoutGridChar([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDLINE), displaybind, bindable]
    HRESULT layoutGridLine([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDLINE), displaybind, bindable]
    HRESULT layoutGridLine([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDMODE), displaybind, bindable]
    HRESULT layoutGridMode([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDMODE), displaybind, bindable]
    HRESULT layoutGridMode([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDTYPE), displaybind, bindable]
    HRESULT layoutGridType([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDTYPE), displaybind, bindable]
    HRESULT layoutGridType([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRID), displaybind, bindable, nonbrowsable]
    HRESULT layoutGrid([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRID), displaybind, bindable, nonbrowsable]
    HRESULT layoutGrid([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTAUTOSPACE), displaybind, bindable]
    HRESULT textAutospace([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTAUTOSPACE), displaybind, bindable]
    HRESULT textAutospace([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_WORDBREAK), displaybind, bindable]
    HRESULT wordBreak([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_WORDBREAK), displaybind, bindable]
    HRESULT wordBreak([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LINEBREAK), displaybind, bindable]
    HRESULT lineBreak([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LINEBREAK), displaybind, bindable]
    HRESULT lineBreak([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFY), displaybind, bindable]
    HRESULT textJustify([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFY), displaybind, bindable]
    HRESULT textJustify([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFYTRIM), displaybind, bindable]
    HRESULT textJustifyTrim([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFYTRIM), displaybind, bindable]
    HRESULT textJustifyTrim([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDA), displaybind, bindable]
    HRESULT textKashida([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDA), displaybind, bindable]
    HRESULT textKashida([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWX), displaybind, bindable]
    HRESULT overflowX([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWX), displaybind, bindable]
    HRESULT overflowX([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWY), displaybind, bindable]
    HRESULT overflowY([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWY), displaybind, bindable]
    HRESULT overflowY([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_ACCELERATOR), displaybind, bindable]
    HRESULT accelerator([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_ACCELERATOR), displaybind, bindable]
    HRESULT accelerator([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTFLOW), displaybind, bindable]
    HRESULT layoutFlow([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTFLOW), displaybind, bindable]
    HRESULT layoutFlow([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_ZOOM), displaybind, bindable]
    HRESULT zoom([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_ZOOM), displaybind, bindable]
    HRESULT zoom([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_WORDWRAP), displaybind, bindable]
    HRESULT wordWrap([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_WORDWRAP), displaybind, bindable]
    HRESULT wordWrap([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTUNDERLINEPOSITION), displaybind, bindable]
    HRESULT textUnderlinePosition([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTUNDERLINEPOSITION), displaybind, bindable]
    HRESULT textUnderlinePosition([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARBASECOLOR), displaybind, bindable]
    HRESULT scrollbarBaseColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARBASECOLOR), displaybind, bindable]
    HRESULT scrollbarBaseColor([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARFACECOLOR), displaybind, bindable]
    HRESULT scrollbarFaceColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARFACECOLOR), displaybind, bindable]
    HRESULT scrollbarFaceColor([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable]
    HRESULT scrollbar3dLightColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable]
    HRESULT scrollbar3dLightColor([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARSHADOWCOLOR), displaybind, bindable]
    HRESULT scrollbarShadowColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARSHADOWCOLOR), displaybind, bindable]
    HRESULT scrollbarShadowColor([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable]
    HRESULT scrollbarHighlightColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable]
    HRESULT scrollbarHighlightColor([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable]
    HRESULT scrollbarDarkShadowColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable]
    HRESULT scrollbarDarkShadowColor([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARARROWCOLOR), displaybind, bindable]
    HRESULT scrollbarArrowColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARARROWCOLOR), displaybind, bindable]
    HRESULT scrollbarArrowColor([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARTRACKCOLOR), displaybind, bindable]
    HRESULT scrollbarTrackColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARTRACKCOLOR), displaybind, bindable]
    HRESULT scrollbarTrackColor([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_WRITINGMODE), displaybind, bindable]
    HRESULT writingMode([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_WRITINGMODE), displaybind, bindable]
    HRESULT writingMode([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGNLAST), displaybind, bindable]
    HRESULT textAlignLast([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGNLAST), displaybind, bindable]
    HRESULT textAlignLast([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDASPACE), displaybind, bindable]
    HRESULT textKashidaSpace([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDASPACE), displaybind, bindable]
    HRESULT textKashidaSpace([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTOVERFLOW), displaybind, bindable]
    HRESULT textOverflow([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTOVERFLOW), displaybind, bindable]
    HRESULT textOverflow([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MINHEIGHT), displaybind, bindable]
    HRESULT minHeight([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MINHEIGHT), displaybind, bindable]
    HRESULT minHeight([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MSINTERPOLATIONMODE), displaybind, bindable]
    HRESULT msInterpolationMode([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MSINTERPOLATIONMODE), displaybind, bindable]
    HRESULT msInterpolationMode([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MAXHEIGHT), displaybind, bindable]
    HRESULT maxHeight([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MAXHEIGHT), displaybind, bindable]
    HRESULT maxHeight([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MINWIDTH), displaybind, bindable]
    HRESULT minWidth([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MINWIDTH), displaybind, bindable]
    HRESULT minWidth([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MAXWIDTH), displaybind, bindable]
    HRESULT maxWidth([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MAXWIDTH), displaybind, bindable]
    HRESULT maxWidth([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CONTENT), displaybind, bindable]
    HRESULT content([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CONTENT), displaybind, bindable]
    HRESULT content([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CAPTIONSIDE), displaybind, bindable]
    HRESULT captionSide([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CAPTIONSIDE), displaybind, bindable]
    HRESULT captionSide([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERINCREMENT), displaybind, bindable]
    HRESULT counterIncrement([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERINCREMENT), displaybind, bindable]
    HRESULT counterIncrement([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERRESET), displaybind, bindable]
    HRESULT counterReset([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERRESET), displaybind, bindable]
    HRESULT counterReset([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINE), displaybind, bindable]
    HRESULT outline([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINE), displaybind, bindable]
    HRESULT outline([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINEWIDTH), displaybind, bindable]
    HRESULT outlineWidth([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINEWIDTH), displaybind, bindable]
    HRESULT outlineWidth([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINESTYLE), displaybind, bindable]
    HRESULT outlineStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINESTYLE), displaybind, bindable]
    HRESULT outlineStyle([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINECOLOR), displaybind, bindable]
    HRESULT outlineColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINECOLOR), displaybind, bindable]
    HRESULT outlineColor([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BOXSIZING), displaybind, bindable]
    HRESULT boxSizing([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BOXSIZING), displaybind, bindable]
    HRESULT boxSizing([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSPACING), displaybind, bindable]
    HRESULT borderSpacing([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSPACING), displaybind, bindable]
    HRESULT borderSpacing([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_ORPHANS), displaybind, bindable]
    HRESULT orphans([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_ORPHANS), displaybind, bindable]
    HRESULT orphans([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_WIDOWS), displaybind, bindable]
    HRESULT widows([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_WIDOWS), displaybind, bindable]
    HRESULT widows([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKINSIDE), displaybind, bindable]
    HRESULT pageBreakInside([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKINSIDE), displaybind, bindable]
    HRESULT pageBreakInside([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_EMPTYCELLS), displaybind, bindable]
    HRESULT emptyCells([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_EMPTYCELLS), displaybind, bindable]
    HRESULT emptyCells([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MSBLOCKPROGRESSION), displaybind, bindable]
    HRESULT msBlockProgression([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MSBLOCKPROGRESSION), displaybind, bindable]
    HRESULT msBlockProgression([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_QUOTES), displaybind, bindable]
    HRESULT quotes([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_QUOTES), displaybind, bindable]
    HRESULT quotes([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_ALIGNMENTBASELINE), displaybind, bindable]
    HRESULT alignmentBaseline([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_ALIGNMENTBASELINE), displaybind, bindable]
    HRESULT alignmentBaseline([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BASELINESHIFT), displaybind, bindable]
    HRESULT baselineShift([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BASELINESHIFT), displaybind, bindable]
    HRESULT baselineShift([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_DOMINANTBASELINE), displaybind, bindable]
    HRESULT dominantBaseline([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_DOMINANTBASELINE), displaybind, bindable]
    HRESULT dominantBaseline([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZEADJUST), displaybind, bindable]
    HRESULT fontSizeAdjust([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZEADJUST), displaybind, bindable]
    HRESULT fontSizeAdjust([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTRETCH), displaybind, bindable]
    HRESULT fontStretch([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTRETCH), displaybind, bindable]
    HRESULT fontStretch([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_OPACITY), displaybind, bindable]
    HRESULT opacity([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_OPACITY), displaybind, bindable]
    HRESULT opacity([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIPPATH), displaybind, bindable]
    HRESULT clipPath([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIPPATH), displaybind, bindable]
    HRESULT clipPath([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIPRULE), displaybind, bindable]
    HRESULT clipRule([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIPRULE), displaybind, bindable]
    HRESULT clipRule([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FILL), displaybind, bindable]
    HRESULT fill([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FILL), displaybind, bindable]
    HRESULT fill([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FILLOPACITY), displaybind, bindable]
    HRESULT fillOpacity([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FILLOPACITY), displaybind, bindable]
    HRESULT fillOpacity([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FILLRULE), displaybind, bindable]
    HRESULT fillRule([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FILLRULE), displaybind, bindable]
    HRESULT fillRule([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_KERNING), displaybind, bindable]
    HRESULT kerning([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_KERNING), displaybind, bindable]
    HRESULT kerning([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARKER), displaybind, bindable]
    HRESULT marker([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARKER), displaybind, bindable]
    HRESULT marker([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARKEREND), displaybind, bindable]
    HRESULT markerEnd([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARKEREND), displaybind, bindable]
    HRESULT markerEnd([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARKERMID), displaybind, bindable]
    HRESULT markerMid([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARKERMID), displaybind, bindable]
    HRESULT markerMid([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARKERSTART), displaybind, bindable]
    HRESULT markerStart([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARKERSTART), displaybind, bindable]
    HRESULT markerStart([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MASK), displaybind, bindable]
    HRESULT mask([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MASK), displaybind, bindable]
    HRESULT mask([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_POINTEREVENTS), displaybind, bindable]
    HRESULT pointerEvents([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_POINTEREVENTS), displaybind, bindable]
    HRESULT pointerEvents([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_STOPCOLOR), displaybind, bindable]
    HRESULT stopColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_STOPCOLOR), displaybind, bindable]
    HRESULT stopColor([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_STOPOPACITY), displaybind, bindable]
    HRESULT stopOpacity([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_STOPOPACITY), displaybind, bindable]
    HRESULT stopOpacity([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKE), displaybind, bindable]
    HRESULT stroke([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKE), displaybind, bindable]
    HRESULT stroke([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHARRAY), displaybind, bindable]
    HRESULT strokeDasharray([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHARRAY), displaybind, bindable]
    HRESULT strokeDasharray([out, retval] BSTR * p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHOFFSET), displaybind, bindable]
    HRESULT strokeDashoffset([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHOFFSET), displaybind, bindable]
    HRESULT strokeDashoffset([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINECAP), displaybind, bindable]
    HRESULT strokeLinecap([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINECAP), displaybind, bindable]
    HRESULT strokeLinecap([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINEJOIN), displaybind, bindable]
    HRESULT strokeLinejoin([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINEJOIN), displaybind, bindable]
    HRESULT strokeLinejoin([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKEMITERLIMIT), displaybind, bindable]
    HRESULT strokeMiterlimit([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKEMITERLIMIT), displaybind, bindable]
    HRESULT strokeMiterlimit([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKEOPACITY), displaybind, bindable]
    HRESULT strokeOpacity([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKEOPACITY), displaybind, bindable]
    HRESULT strokeOpacity([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKEWIDTH), displaybind, bindable]
    HRESULT strokeWidth([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKEWIDTH), displaybind, bindable]
    HRESULT strokeWidth([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTANCHOR), displaybind, bindable]
    HRESULT textAnchor([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTANCHOR), displaybind, bindable]
    HRESULT textAnchor([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONHORIZONTAL), displaybind, bindable]
    HRESULT glyphOrientationHorizontal([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONHORIZONTAL), displaybind, bindable]
    HRESULT glyphOrientationHorizontal([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONVERTICAL), displaybind, bindable]
    HRESULT glyphOrientationVertical([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONVERTICAL), displaybind, bindable]
    HRESULT glyphOrientationVertical([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRADIUS), displaybind, bindable]
    HRESULT borderRadius([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRADIUS), displaybind, bindable]
    HRESULT borderRadius([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPLEFTRADIUS), displaybind, bindable]
    HRESULT borderTopLeftRadius([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPLEFTRADIUS), displaybind, bindable]
    HRESULT borderTopLeftRadius([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPRIGHTRADIUS), displaybind, bindable]
    HRESULT borderTopRightRadius([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPRIGHTRADIUS), displaybind, bindable]
    HRESULT borderTopRightRadius([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMRIGHTRADIUS), displaybind, bindable]
    HRESULT borderBottomRightRadius([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMRIGHTRADIUS), displaybind, bindable]
    HRESULT borderBottomRightRadius([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMLEFTRADIUS), displaybind, bindable]
    HRESULT borderBottomLeftRadius([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMLEFTRADIUS), displaybind, bindable]
    HRESULT borderBottomLeftRadius([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIPTOP), displaybind, bindable, hidden]
    HRESULT clipTop([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIPTOP), displaybind, bindable, hidden]
    HRESULT clipTop([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIPRIGHT), displaybind, bindable, hidden]
    HRESULT clipRight([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIPRIGHT), displaybind, bindable, hidden]
    HRESULT clipRight([out, retval] VARIANT *p);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIPBOTTOM), displaybind, bindable, hidden]
    HRESULT clipBottom([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIPLEFT), displaybind, bindable, hidden]
    HRESULT clipLeft([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIPLEFT), displaybind, bindable, hidden]
    HRESULT clipLeft([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CSSFLOAT), displaybind, bindable]
    HRESULT cssFloat([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CSSFLOAT), displaybind, bindable]
    HRESULT cssFloat([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCLIP), displaybind, bindable]
    HRESULT backgroundClip([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCLIP), displaybind, bindable]
    HRESULT backgroundClip([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDORIGIN), displaybind, bindable]
    HRESULT backgroundOrigin([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDORIGIN), displaybind, bindable]
    HRESULT backgroundOrigin([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDSIZE), displaybind, bindable]
    HRESULT backgroundSize([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDSIZE), displaybind, bindable]
    HRESULT backgroundSize([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BOXSHADOW), displaybind, bindable]
    HRESULT boxShadow([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BOXSHADOW), displaybind, bindable]
    HRESULT boxShadow([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORM), displaybind, bindable]
    HRESULT msTransform([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORM), displaybind, bindable]
    HRESULT msTransform([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORMORIGIN), displaybind, bindable]
    HRESULT msTransformOrigin([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORMORIGIN), displaybind, bindable]
    HRESULT msTransformOrigin([out, retval] BSTR *p);
}

#define WINE_IHTMLCSSSTYLEDECLARATION_DISPINTERFACE_DECL                \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LENGTH)]               \
    long length();                                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_PARENTRULE)]           \
    VARIANT parentRule();                                               \
                                                                        \
    [id(DISPID_IHTMLCSSSTYLEDECLARATION_GETPROPERTYVALUE)]              \
    BSTR getPropertyValue([in] BSTR bstrPropertyName);                  \
                                                                        \
    [id(DISPID_IHTMLCSSSTYLEDECLARATION_GETPROPERTYPRIORITY)]           \
    BSTR getPropertyPriority([in] BSTR bstrPropertyName);               \
                                                                        \
    [id(DISPID_IHTMLCSSSTYLEDECLARATION_REMOVEPROPERTY)]                \
    BSTR removeProperty([in] BSTR bstrPropertyName);                    \
                                                                        \
    [id(DISPID_IHTMLCSSSTYLEDECLARATION_SETPROPERTY)]                   \
    void setProperty(                                                   \
        [in] BSTR bstrPropertyName,                                     \
        [in] VARIANT *pvarPropertyValue,                                \
        [in, defaultvalue(NULL)] VARIANT *pvarPropertyPriority);        \
                                                                        \
    [id(DISPID_IHTMLCSSSTYLEDECLARATION_ITEM)]                          \
    BSTR item([in] long index);                                         \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTFAMILY), displaybind, bindable] \
    void fontFamily(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTFAMILY), displaybind, bindable] \
    BSTR fontFamily();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTYLE), displaybind, bindable] \
    void fontStyle(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTYLE), displaybind, bindable] \
    BSTR fontStyle();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTVARIANT), displaybind, bindable] \
    void fontVariant(BSTR v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTVARIANT), displaybind, bindable] \
    BSTR fontVariant();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTWEIGHT), displaybind, bindable] \
    void fontWeight(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTWEIGHT), displaybind, bindable] \
    BSTR fontWeight();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZE), displaybind, bindable] \
    void fontSize(VARIANT v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZE), displaybind, bindable] \
    VARIANT fontSize();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONT), displaybind, bindable, nonbrowsable] \
    void font(BSTR v);                                                  \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONT), displaybind, bindable, nonbrowsable] \
    BSTR font();                                                        \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_COLOR), displaybind, bindable] \
    void color(VARIANT v);                                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_COLOR), displaybind, bindable] \
    VARIANT color();                                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUND), displaybind, bindable, nonbrowsable] \
    void background(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUND), displaybind, bindable, nonbrowsable] \
    BSTR background();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCOLOR), displaybind, bindable] \
    void backgroundColor(VARIANT v);                                    \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCOLOR), displaybind, bindable] \
    VARIANT backgroundColor();                                          \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDIMAGE), displaybind, bindable] \
    void backgroundImage(BSTR v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDIMAGE), displaybind, bindable] \
    BSTR backgroundImage();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDREPEAT), displaybind, bindable] \
    void backgroundRepeat(BSTR v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDREPEAT), displaybind, bindable] \
    BSTR backgroundRepeat();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDATTACHMENT), displaybind, bindable] \
    void backgroundAttachment(BSTR v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDATTACHMENT), displaybind, bindable] \
    BSTR backgroundAttachment();                                        \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITION), displaybind, bindable] \
    void backgroundPosition(BSTR v);                                    \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITION), displaybind, bindable] \
    BSTR backgroundPosition();                                          \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONX), displaybind, bindable] \
    void backgroundPositionX(VARIANT v);                                \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONX), displaybind, bindable] \
    VARIANT backgroundPositionX();                                      \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONY), displaybind, bindable] \
    void backgroundPositionY(VARIANT v);                                \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONY), displaybind, bindable] \
    VARIANT backgroundPositionY();                                      \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_WORDSPACING), displaybind, bindable] \
    void wordSpacing(VARIANT v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_WORDSPACING), displaybind, bindable] \
    VARIANT wordSpacing();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LETTERSPACING), displaybind, bindable] \
    void letterSpacing(VARIANT v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LETTERSPACING), displaybind, bindable] \
    VARIANT letterSpacing();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTDECORATION), displaybind, bindable] \
    void textDecoration(BSTR v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTDECORATION), displaybind, bindable] \
    BSTR textDecoration();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_VERTICALALIGN), displaybind, bindable] \
    void verticalAlign(VARIANT v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_VERTICALALIGN), displaybind, bindable] \
    VARIANT verticalAlign();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTTRANSFORM), displaybind, bindable] \
    void textTransform(BSTR v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTTRANSFORM), displaybind, bindable] \
    BSTR textTransform();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGN), displaybind, bindable] \
    void textAlign(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGN), displaybind, bindable] \
    BSTR textAlign();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTINDENT), displaybind, bindable] \
    void textIndent(VARIANT v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTINDENT), displaybind, bindable] \
    VARIANT textIndent();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LINEHEIGHT), displaybind, bindable] \
    void lineHeight(VARIANT v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LINEHEIGHT), displaybind, bindable] \
    VARIANT lineHeight();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARGINTOP), displaybind, bindable] \
    void marginTop(VARIANT v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARGINTOP), displaybind, bindable] \
    VARIANT marginTop();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARGINRIGHT), displaybind, bindable] \
    void marginRight(VARIANT v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARGINRIGHT), displaybind, bindable] \
    VARIANT marginRight();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARGINBOTTOM), displaybind, bindable] \
    void marginBottom(VARIANT v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARGINBOTTOM), displaybind, bindable] \
    VARIANT marginBottom();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARGINLEFT), displaybind, bindable] \
    void marginLeft(VARIANT v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARGINLEFT), displaybind, bindable] \
    VARIANT marginLeft();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARGIN), displaybind, bindable, nonbrowsable] \
    void margin(BSTR v);                                                \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARGIN), displaybind, bindable, nonbrowsable] \
    BSTR margin();                                                      \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGTOP), displaybind, bindable] \
    void paddingTop(VARIANT v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGTOP), displaybind, bindable] \
    VARIANT paddingTop();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGRIGHT), displaybind, bindable] \
    void paddingRight(VARIANT v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGRIGHT), displaybind, bindable] \
    VARIANT paddingRight();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGBOTTOM), displaybind, bindable] \
    void paddingBottom(VARIANT v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGBOTTOM), displaybind, bindable] \
    VARIANT paddingBottom();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGLEFT), displaybind, bindable] \
    void paddingLeft(VARIANT v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGLEFT), displaybind, bindable] \
    VARIANT paddingLeft();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_PADDING), displaybind, bindable, nonbrowsable] \
    void padding(BSTR v);                                               \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_PADDING), displaybind, bindable, nonbrowsable] \
    BSTR padding();                                                     \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDER), displaybind, bindable, nonbrowsable] \
    void border(BSTR v);                                                \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDER), displaybind, bindable, nonbrowsable] \
    BSTR border();                                                      \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOP), displaybind, bindable] \
    void borderTop(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOP), displaybind, bindable] \
    BSTR borderTop();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHT), displaybind, bindable] \
    void borderRight(BSTR v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHT), displaybind, bindable] \
    BSTR borderRight();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOM), displaybind, bindable] \
    void borderBottom(BSTR v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOM), displaybind, bindable] \
    BSTR borderBottom();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFT), displaybind, bindable] \
    void borderLeft(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFT), displaybind, bindable] \
    BSTR borderLeft();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLOR), displaybind, bindable] \
    void borderColor(BSTR v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLOR), displaybind, bindable] \
    BSTR borderColor();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPCOLOR), displaybind, bindable] \
    void borderTopColor(VARIANT v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPCOLOR), displaybind, bindable] \
    VARIANT borderTopColor();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTCOLOR), displaybind, bindable] \
    void borderRightColor(VARIANT v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTCOLOR), displaybind, bindable] \
    VARIANT borderRightColor();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMCOLOR), displaybind, bindable] \
    void borderBottomColor(VARIANT v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMCOLOR), displaybind, bindable] \
    VARIANT borderBottomColor();                                        \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTCOLOR), displaybind, bindable] \
    void borderLeftColor(VARIANT v);                                    \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTCOLOR), displaybind, bindable] \
    VARIANT borderLeftColor();                                          \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERWIDTH), displaybind, bindable] \
    void borderWidth(BSTR v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERWIDTH), displaybind, bindable] \
    BSTR borderWidth();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPWIDTH), displaybind, bindable] \
    void borderTopWidth(VARIANT v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPWIDTH), displaybind, bindable] \
    VARIANT borderTopWidth();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTWIDTH), displaybind, bindable] \
    void borderRightWidth(VARIANT v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTWIDTH), displaybind, bindable] \
    VARIANT borderRightWidth();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMWIDTH), displaybind, bindable] \
    void borderBottomWidth(VARIANT v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMWIDTH), displaybind, bindable] \
    VARIANT borderBottomWidth();                                        \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTWIDTH), displaybind, bindable] \
    void borderLeftWidth(VARIANT v);                                    \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTWIDTH), displaybind, bindable] \
    VARIANT borderLeftWidth();                                          \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSTYLE), displaybind, bindable] \
    void borderStyle(BSTR v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSTYLE), displaybind, bindable] \
    BSTR borderStyle();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPSTYLE), displaybind, bindable] \
    void borderTopStyle(BSTR v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPSTYLE), displaybind, bindable] \
    BSTR borderTopStyle();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTSTYLE), displaybind, bindable] \
    void borderRightStyle(BSTR v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTSTYLE), displaybind, bindable] \
    BSTR borderRightStyle();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMSTYLE), displaybind, bindable] \
    void borderBottomStyle(BSTR v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMSTYLE), displaybind, bindable] \
    BSTR borderBottomStyle();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTSTYLE), displaybind, bindable] \
    void borderLeftStyle(BSTR v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTSTYLE), displaybind, bindable] \
    BSTR borderLeftStyle();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_WIDTH), displaybind, bindable] \
    void width(VARIANT v);                                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_WIDTH), displaybind, bindable] \
    VARIANT width();                                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_HEIGHT), displaybind, bindable] \
    void height(VARIANT v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_HEIGHT), displaybind, bindable] \
    VARIANT height();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_STYLEFLOAT), displaybind, bindable] \
    void styleFloat(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_STYLEFLOAT), displaybind, bindable] \
    BSTR styleFloat();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLEAR), displaybind, bindable] \
    void clear(BSTR v);                                                 \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLEAR), displaybind, bindable] \
    BSTR clear();                                                       \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_DISPLAY), displaybind, bindable] \
    void display(BSTR v);                                               \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_DISPLAY), displaybind, bindable] \
    BSTR display();                                                     \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_VISIBILITY), displaybind, bindable] \
    void visibility(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_VISIBILITY), displaybind, bindable] \
    BSTR visibility();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLETYPE), displaybind, bindable] \
    void listStyleType(BSTR v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLETYPE), displaybind, bindable] \
    BSTR listStyleType();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEPOSITION), displaybind, bindable] \
    void listStylePosition(BSTR v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEPOSITION), displaybind, bindable] \
    BSTR listStylePosition();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEIMAGE), displaybind, bindable] \
    void listStyleImage(BSTR v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEIMAGE), displaybind, bindable] \
    BSTR listStyleImage();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLE), displaybind, bindable, nonbrowsable] \
    void listStyle(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLE), displaybind, bindable, nonbrowsable] \
    BSTR listStyle();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_WHITESPACE), displaybind, bindable] \
    void whiteSpace(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_WHITESPACE), displaybind, bindable] \
    BSTR whiteSpace();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TOP), displaybind, bindable] \
    void top(VARIANT v);                                                \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TOP), displaybind, bindable] \
    VARIANT top();                                                      \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LEFT), displaybind, bindable] \
    void left(VARIANT v);                                               \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LEFT), displaybind, bindable] \
    VARIANT left();                                                     \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_ZINDEX), displaybind, bindable] \
    void zIndex(VARIANT v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_ZINDEX), displaybind, bindable] \
    VARIANT zIndex();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOW), displaybind, bindable] \
    void overflow(BSTR v);                                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOW), displaybind, bindable] \
    BSTR overflow();                                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKBEFORE), displaybind, bindable] \
    void pageBreakBefore(BSTR v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKBEFORE), displaybind, bindable] \
    BSTR pageBreakBefore();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKAFTER), displaybind, bindable] \
    void pageBreakAfter(BSTR v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKAFTER), displaybind, bindable] \
    BSTR pageBreakAfter();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CSSTEXT), displaybind, bindable, nonbrowsable] \
    void cssText(BSTR v);                                               \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CSSTEXT), displaybind, bindable, nonbrowsable] \
    BSTR cssText();                                                     \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CURSOR), displaybind, bindable] \
    void cursor(BSTR v);                                                \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CURSOR), displaybind, bindable] \
    BSTR cursor();                                                      \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIP), displaybind, bindable] \
    void clip(BSTR v);                                                  \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIP), displaybind, bindable] \
    BSTR clip();                                                        \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FILTER), displaybind, bindable] \
    void filter(BSTR v);                                                \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FILTER), displaybind, bindable] \
    BSTR filter();                                                      \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TABLELAYOUT), displaybind, bindable] \
    void tableLayout(BSTR v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TABLELAYOUT), displaybind, bindable] \
    BSTR tableLayout();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLLAPSE), displaybind, bindable] \
    void borderCollapse(BSTR v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLLAPSE), displaybind, bindable] \
    BSTR borderCollapse();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_DIRECTION), displaybind, bindable] \
    void direction(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_DIRECTION), displaybind, bindable] \
    BSTR direction();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BEHAVIOR), displaybind, bindable] \
    void behavior(BSTR v);                                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BEHAVIOR), displaybind, bindable] \
    BSTR behavior();                                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_POSITION), displaybind, bindable] \
    void position(BSTR v);                                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_POSITION), displaybind, bindable] \
    BSTR position();                                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_UNICODEBIDI), displaybind, bindable] \
    void unicodeBidi(BSTR v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_UNICODEBIDI), displaybind, bindable] \
    BSTR unicodeBidi();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BOTTOM), displaybind, bindable] \
    void bottom(VARIANT v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BOTTOM), displaybind, bindable] \
    VARIANT bottom();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_RIGHT), displaybind, bindable] \
    void right(VARIANT v);                                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_RIGHT), displaybind, bindable] \
    VARIANT right();                                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_IMEMODE), displaybind, bindable] \
    void imeMode(BSTR v);                                               \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_IMEMODE), displaybind, bindable] \
    BSTR imeMode();                                                     \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_RUBYALIGN), displaybind, bindable] \
    void rubyAlign(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_RUBYALIGN), displaybind, bindable] \
    BSTR rubyAlign();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_RUBYPOSITION), displaybind, bindable] \
    void rubyPosition(BSTR v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_RUBYPOSITION), displaybind, bindable] \
    BSTR rubyPosition();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_RUBYOVERHANG), displaybind, bindable] \
    void rubyOverhang(BSTR v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_RUBYOVERHANG), displaybind, bindable] \
    BSTR rubyOverhang();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDCHAR), displaybind, bindable] \
    void layoutGridChar(VARIANT v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDCHAR), displaybind, bindable] \
    VARIANT layoutGridChar();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDLINE), displaybind, bindable] \
    void layoutGridLine(VARIANT v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDLINE), displaybind, bindable] \
    VARIANT layoutGridLine();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDMODE), displaybind, bindable] \
    void layoutGridMode(BSTR v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDMODE), displaybind, bindable] \
    BSTR layoutGridMode();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDTYPE), displaybind, bindable] \
    void layoutGridType(BSTR v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDTYPE), displaybind, bindable] \
    BSTR layoutGridType();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRID), displaybind, bindable, nonbrowsable] \
    void layoutGrid(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRID), displaybind, bindable, nonbrowsable] \
    BSTR layoutGrid();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTAUTOSPACE), displaybind, bindable] \
    void textAutospace(BSTR v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTAUTOSPACE), displaybind, bindable] \
    BSTR textAutospace();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_WORDBREAK), displaybind, bindable] \
    void wordBreak(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_WORDBREAK), displaybind, bindable] \
    BSTR wordBreak();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LINEBREAK), displaybind, bindable] \
    void lineBreak(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LINEBREAK), displaybind, bindable] \
    BSTR lineBreak();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFY), displaybind, bindable] \
    void textJustify(BSTR v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFY), displaybind, bindable] \
    BSTR textJustify();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFYTRIM), displaybind, bindable] \
    void textJustifyTrim(BSTR v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFYTRIM), displaybind, bindable] \
    BSTR textJustifyTrim();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDA), displaybind, bindable] \
    void textKashida(VARIANT v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDA), displaybind, bindable] \
    VARIANT textKashida();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWX), displaybind, bindable] \
    void overflowX(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWX), displaybind, bindable] \
    BSTR overflowX();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWY), displaybind, bindable] \
    void overflowY(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWY), displaybind, bindable] \
    BSTR overflowY();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_ACCELERATOR), displaybind, bindable] \
    void accelerator(BSTR v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_ACCELERATOR), displaybind, bindable] \
    BSTR accelerator();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTFLOW), displaybind, bindable] \
    void layoutFlow(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTFLOW), displaybind, bindable] \
    BSTR layoutFlow();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_ZOOM), displaybind, bindable] \
    void zoom(VARIANT v);                                               \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_ZOOM), displaybind, bindable] \
    VARIANT zoom();                                                     \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_WORDWRAP), displaybind, bindable] \
    void wordWrap(BSTR v);                                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_WORDWRAP), displaybind, bindable] \
    BSTR wordWrap();                                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTUNDERLINEPOSITION), displaybind, bindable] \
    void textUnderlinePosition(BSTR v);                                 \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTUNDERLINEPOSITION), displaybind, bindable] \
    BSTR textUnderlinePosition();                                       \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARBASECOLOR), displaybind, bindable] \
    void scrollbarBaseColor(VARIANT v);                                 \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARBASECOLOR), displaybind, bindable] \
    VARIANT scrollbarBaseColor();                                       \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARFACECOLOR), displaybind, bindable] \
    void scrollbarFaceColor(VARIANT v);                                 \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARFACECOLOR), displaybind, bindable] \
    VARIANT scrollbarFaceColor();                                       \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] \
    void scrollbar3dLightColor(VARIANT v);                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] \
    VARIANT scrollbar3dLightColor();                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARSHADOWCOLOR), displaybind, bindable] \
    void scrollbarShadowColor(VARIANT v);                               \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARSHADOWCOLOR), displaybind, bindable] \
    VARIANT scrollbarShadowColor();                                     \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] \
    void scrollbarHighlightColor(VARIANT v);                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] \
    VARIANT scrollbarHighlightColor();                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] \
    void scrollbarDarkShadowColor(VARIANT v);                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] \
    VARIANT scrollbarDarkShadowColor();                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARARROWCOLOR), displaybind, bindable] \
    void scrollbarArrowColor(VARIANT v);                                \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARARROWCOLOR), displaybind, bindable] \
    VARIANT scrollbarArrowColor();                                      \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARTRACKCOLOR), displaybind, bindable] \
    void scrollbarTrackColor(VARIANT v);                                \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARTRACKCOLOR), displaybind, bindable] \
    VARIANT scrollbarTrackColor();                                      \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_WRITINGMODE), displaybind, bindable] \
    void writingMode(BSTR v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_WRITINGMODE), displaybind, bindable] \
    BSTR writingMode();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGNLAST), displaybind, bindable] \
    void textAlignLast(BSTR v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGNLAST), displaybind, bindable] \
    BSTR textAlignLast();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDASPACE), displaybind, bindable] \
    void textKashidaSpace(VARIANT v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDASPACE), displaybind, bindable] \
    VARIANT textKashidaSpace();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTOVERFLOW), displaybind, bindable] \
    void textOverflow(BSTR v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTOVERFLOW), displaybind, bindable] \
    BSTR textOverflow();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MINHEIGHT), displaybind, bindable] \
    void minHeight(VARIANT v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MINHEIGHT), displaybind, bindable] \
    VARIANT minHeight();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MSINTERPOLATIONMODE), displaybind, bindable] \
    void msInterpolationMode(BSTR v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MSINTERPOLATIONMODE), displaybind, bindable] \
    BSTR msInterpolationMode();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MAXHEIGHT), displaybind, bindable] \
    void maxHeight(VARIANT v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MAXHEIGHT), displaybind, bindable] \
    VARIANT maxHeight();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MINWIDTH), displaybind, bindable] \
    void minWidth(VARIANT v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MINWIDTH), displaybind, bindable] \
    VARIANT minWidth();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MAXWIDTH), displaybind, bindable] \
    void maxWidth(VARIANT v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MAXWIDTH), displaybind, bindable] \
    VARIANT maxWidth();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CONTENT), displaybind, bindable] \
    void content(BSTR v);                                               \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CONTENT), displaybind, bindable] \
    BSTR content();                                                     \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CAPTIONSIDE), displaybind, bindable] \
    void captionSide(BSTR v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CAPTIONSIDE), displaybind, bindable] \
    BSTR captionSide();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERINCREMENT), displaybind, bindable] \
    void counterIncrement(BSTR v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERINCREMENT), displaybind, bindable] \
    BSTR counterIncrement();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERRESET), displaybind, bindable] \
    void counterReset(BSTR v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERRESET), displaybind, bindable] \
    BSTR counterReset();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINE), displaybind, bindable] \
    void outline(BSTR v);                                               \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINE), displaybind, bindable] \
    BSTR outline();                                                     \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINEWIDTH), displaybind, bindable] \
    void outlineWidth(VARIANT v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINEWIDTH), displaybind, bindable] \
    VARIANT outlineWidth();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINESTYLE), displaybind, bindable] \
    void outlineStyle(BSTR v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINESTYLE), displaybind, bindable] \
    BSTR outlineStyle();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINECOLOR), displaybind, bindable] \
    void outlineColor(VARIANT v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINECOLOR), displaybind, bindable] \
    VARIANT outlineColor();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BOXSIZING), displaybind, bindable] \
    void boxSizing(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BOXSIZING), displaybind, bindable] \
    BSTR boxSizing();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSPACING), displaybind, bindable] \
    void borderSpacing(BSTR v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSPACING), displaybind, bindable] \
    BSTR borderSpacing();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_ORPHANS), displaybind, bindable] \
    void orphans(VARIANT v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_ORPHANS), displaybind, bindable] \
    VARIANT orphans();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_WIDOWS), displaybind, bindable] \
    void widows(VARIANT v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_WIDOWS), displaybind, bindable] \
    VARIANT widows();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKINSIDE), displaybind, bindable] \
    void pageBreakInside(BSTR v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKINSIDE), displaybind, bindable] \
    BSTR pageBreakInside();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_EMPTYCELLS), displaybind, bindable] \
    void emptyCells(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_EMPTYCELLS), displaybind, bindable] \
    BSTR emptyCells();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MSBLOCKPROGRESSION), displaybind, bindable] \
    void msBlockProgression(BSTR v);                                    \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MSBLOCKPROGRESSION), displaybind, bindable] \
    BSTR msBlockProgression();                                          \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_QUOTES), displaybind, bindable] \
    void quotes(BSTR v);                                                \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_QUOTES), displaybind, bindable] \
    BSTR quotes();                                                      \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_ALIGNMENTBASELINE), displaybind, bindable] \
    void alignmentBaseline(BSTR v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_ALIGNMENTBASELINE), displaybind, bindable] \
    BSTR alignmentBaseline();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BASELINESHIFT), displaybind, bindable] \
    void baselineShift(VARIANT v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BASELINESHIFT), displaybind, bindable] \
    VARIANT baselineShift();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_DOMINANTBASELINE), displaybind, bindable] \
    void dominantBaseline(BSTR v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_DOMINANTBASELINE), displaybind, bindable] \
    BSTR dominantBaseline();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZEADJUST), displaybind, bindable] \
    void fontSizeAdjust(VARIANT v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZEADJUST), displaybind, bindable] \
    VARIANT fontSizeAdjust();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTRETCH), displaybind, bindable] \
    void fontStretch(BSTR v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTRETCH), displaybind, bindable] \
    BSTR fontStretch();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_OPACITY), displaybind, bindable] \
    void opacity(VARIANT v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_OPACITY), displaybind, bindable] \
    VARIANT opacity();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIPPATH), displaybind, bindable] \
    void clipPath(BSTR v);                                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIPPATH), displaybind, bindable] \
    BSTR clipPath();                                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIPRULE), displaybind, bindable] \
    void clipRule(BSTR v);                                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIPRULE), displaybind, bindable] \
    BSTR clipRule();                                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FILL), displaybind, bindable] \
    void fill(BSTR v);                                                  \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FILL), displaybind, bindable] \
    BSTR fill();                                                        \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FILLOPACITY), displaybind, bindable] \
    void fillOpacity(VARIANT v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FILLOPACITY), displaybind, bindable] \
    VARIANT fillOpacity();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_FILLRULE), displaybind, bindable] \
    void fillRule(BSTR v);                                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_FILLRULE), displaybind, bindable] \
    BSTR fillRule();                                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_KERNING), displaybind, bindable] \
    void kerning(VARIANT v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_KERNING), displaybind, bindable] \
    VARIANT kerning();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARKER), displaybind, bindable] \
    void marker(BSTR v);                                                \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARKER), displaybind, bindable] \
    BSTR marker();                                                      \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARKEREND), displaybind, bindable] \
    void markerEnd(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARKEREND), displaybind, bindable] \
    BSTR markerEnd();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARKERMID), displaybind, bindable] \
    void markerMid(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARKERMID), displaybind, bindable] \
    BSTR markerMid();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARKERSTART), displaybind, bindable] \
    void markerStart(BSTR v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MARKERSTART), displaybind, bindable] \
    BSTR markerStart();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MASK), displaybind, bindable] \
    void mask(BSTR v);                                                  \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MASK), displaybind, bindable] \
    BSTR mask();                                                        \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_POINTEREVENTS), displaybind, bindable] \
    void pointerEvents(BSTR v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_POINTEREVENTS), displaybind, bindable] \
    BSTR pointerEvents();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_STOPCOLOR), displaybind, bindable] \
    void stopColor(VARIANT v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_STOPCOLOR), displaybind, bindable] \
    VARIANT stopColor();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_STOPOPACITY), displaybind, bindable] \
    void stopOpacity(VARIANT v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_STOPOPACITY), displaybind, bindable] \
    VARIANT stopOpacity();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKE), displaybind, bindable] \
    void stroke(BSTR v);                                                \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKE), displaybind, bindable] \
    BSTR stroke();                                                      \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHARRAY), displaybind, bindable] \
    void strokeDasharray(BSTR v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHARRAY), displaybind, bindable] \
    BSTR strokeDasharray();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHOFFSET), displaybind, bindable] \
    void strokeDashoffset(VARIANT v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHOFFSET), displaybind, bindable] \
    VARIANT strokeDashoffset();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINECAP), displaybind, bindable] \
    void strokeLinecap(BSTR v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINECAP), displaybind, bindable] \
    BSTR strokeLinecap();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINEJOIN), displaybind, bindable] \
    void strokeLinejoin(BSTR v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINEJOIN), displaybind, bindable] \
    BSTR strokeLinejoin();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKEMITERLIMIT), displaybind, bindable] \
    void strokeMiterlimit(VARIANT v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKEMITERLIMIT), displaybind, bindable] \
    VARIANT strokeMiterlimit();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKEOPACITY), displaybind, bindable] \
    void strokeOpacity(VARIANT v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKEOPACITY), displaybind, bindable] \
    VARIANT strokeOpacity();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKEWIDTH), displaybind, bindable] \
    void strokeWidth(VARIANT v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_STROKEWIDTH), displaybind, bindable] \
    VARIANT strokeWidth();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTANCHOR), displaybind, bindable] \
    void textAnchor(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_TEXTANCHOR), displaybind, bindable] \
    BSTR textAnchor();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONHORIZONTAL), displaybind, bindable] \
    void glyphOrientationHorizontal(VARIANT v);                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONHORIZONTAL), displaybind, bindable] \
    VARIANT glyphOrientationHorizontal();                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONVERTICAL), displaybind, bindable] \
    void glyphOrientationVertical(VARIANT v);                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONVERTICAL), displaybind, bindable] \
    VARIANT glyphOrientationVertical();                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRADIUS), displaybind, bindable] \
    void borderRadius(BSTR v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRADIUS), displaybind, bindable] \
    BSTR borderRadius();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPLEFTRADIUS), displaybind, bindable] \
    void borderTopLeftRadius(BSTR v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPLEFTRADIUS), displaybind, bindable] \
    BSTR borderTopLeftRadius();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPRIGHTRADIUS), displaybind, bindable] \
    void borderTopRightRadius(BSTR v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPRIGHTRADIUS), displaybind, bindable] \
    BSTR borderTopRightRadius();                                        \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMRIGHTRADIUS), displaybind, bindable] \
    void borderBottomRightRadius(BSTR v);                               \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMRIGHTRADIUS), displaybind, bindable] \
    BSTR borderBottomRightRadius();                                     \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMLEFTRADIUS), displaybind, bindable] \
    void borderBottomLeftRadius(BSTR v);                                \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMLEFTRADIUS), displaybind, bindable] \
    BSTR borderBottomLeftRadius();                                      \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIPTOP), displaybind, bindable, hidden] \
    void clipTop(VARIANT v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIPTOP), displaybind, bindable, hidden] \
    VARIANT clipTop();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIPRIGHT), displaybind, bindable, hidden] \
    void clipRight(VARIANT v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIPRIGHT), displaybind, bindable, hidden] \
    VARIANT clipRight();                                                \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIPBOTTOM), displaybind, bindable, hidden] \
    VARIANT clipBottom();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIPLEFT), displaybind, bindable, hidden] \
    void clipLeft(VARIANT v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CLIPLEFT), displaybind, bindable, hidden] \
    VARIANT clipLeft();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_CSSFLOAT), displaybind, bindable] \
    void cssFloat(BSTR v);                                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_CSSFLOAT), displaybind, bindable] \
    BSTR cssFloat();                                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCLIP), displaybind, bindable] \
    void backgroundClip(BSTR v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCLIP), displaybind, bindable] \
    BSTR backgroundClip();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDORIGIN), displaybind, bindable] \
    void backgroundOrigin(BSTR v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDORIGIN), displaybind, bindable] \
    BSTR backgroundOrigin();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDSIZE), displaybind, bindable] \
    void backgroundSize(BSTR v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDSIZE), displaybind, bindable] \
    BSTR backgroundSize();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_BOXSHADOW), displaybind, bindable] \
    void boxShadow(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_BOXSHADOW), displaybind, bindable] \
    BSTR boxShadow();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORM), displaybind, bindable] \
    void msTransform(BSTR v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORM), displaybind, bindable] \
    BSTR msTransform();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORMORIGIN), displaybind, bindable] \
    void msTransformOrigin(BSTR v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORMORIGIN), displaybind, bindable] \
    BSTR msTransformOrigin()

/*****************************************************************************
 *    IHTMLCSSStyleDeclaration2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305107d1-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLCSSStyleDeclaration2 : IDispatch
{
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLCHAINING), displaybind, bindable]
    HRESULT msScrollChaining([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLCHAINING), displaybind, bindable]
    HRESULT msScrollChaining([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMING), displaybind, bindable]
    HRESULT msContentZooming([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMING), displaybind, bindable]
    HRESULT msContentZooming([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPTYPE), displaybind, bindable]
    HRESULT msContentZoomSnapType([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPTYPE), displaybind, bindable]
    HRESULT msContentZoomSnapType([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLRAILS), displaybind, bindable]
    HRESULT msScrollRails([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLRAILS), displaybind, bindable]
    HRESULT msScrollRails([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMCHAINING), displaybind, bindable]
    HRESULT msContentZoomChaining([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMCHAINING), displaybind, bindable]
    HRESULT msContentZoomChaining([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPTYPE), displaybind, bindable]
    HRESULT msScrollSnapType([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPTYPE), displaybind, bindable]
    HRESULT msScrollSnapType([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMIT), displaybind, bindable]
    HRESULT msContentZoomLimit([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMIT), displaybind, bindable]
    HRESULT msContentZoomLimit([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAP), displaybind, bindable]
    HRESULT msContentZoomSnap([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAP), displaybind, bindable]
    HRESULT msContentZoomSnap([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPPOINTS), displaybind, bindable]
    HRESULT msContentZoomSnapPoints([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPPOINTS), displaybind, bindable]
    HRESULT msContentZoomSnapPoints([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMIN), displaybind, bindable]
    HRESULT msContentZoomLimitMin([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMIN), displaybind, bindable]
    HRESULT msContentZoomLimitMin([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMAX), displaybind, bindable]
    HRESULT msContentZoomLimitMax([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMAX), displaybind, bindable]
    HRESULT msContentZoomLimitMax([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPX), displaybind, bindable]
    HRESULT msScrollSnapX([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPX), displaybind, bindable]
    HRESULT msScrollSnapX([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPY), displaybind, bindable]
    HRESULT msScrollSnapY([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPY), displaybind, bindable]
    HRESULT msScrollSnapY([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSX), displaybind, bindable]
    HRESULT msScrollSnapPointsX([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSX), displaybind, bindable]
    HRESULT msScrollSnapPointsX([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSY), displaybind, bindable]
    HRESULT msScrollSnapPointsY([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSY), displaybind, bindable]
    HRESULT msScrollSnapPointsY([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMN), displaybind, bindable]
    HRESULT msGridColumn([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMN), displaybind, bindable]
    HRESULT msGridColumn([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNALIGN), displaybind, bindable]
    HRESULT msGridColumnAlign([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNALIGN), displaybind, bindable]
    HRESULT msGridColumnAlign([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNS), displaybind, bindable]
    HRESULT msGridColumns([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNS), displaybind, bindable]
    HRESULT msGridColumns([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNSPAN), displaybind, bindable]
    HRESULT msGridColumnSpan([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNSPAN), displaybind, bindable]
    HRESULT msGridColumnSpan([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROW), displaybind, bindable]
    HRESULT msGridRow([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROW), displaybind, bindable]
    HRESULT msGridRow([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWALIGN), displaybind, bindable]
    HRESULT msGridRowAlign([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWALIGN), displaybind, bindable]
    HRESULT msGridRowAlign([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWS), displaybind, bindable]
    HRESULT msGridRows([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWS), displaybind, bindable]
    HRESULT msGridRows([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWSPAN), displaybind, bindable]
    HRESULT msGridRowSpan([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWSPAN), displaybind, bindable]
    HRESULT msGridRowSpan([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPTHROUGH), displaybind, bindable]
    HRESULT msWrapThrough([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPTHROUGH), displaybind, bindable]
    HRESULT msWrapThrough([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPMARGIN), displaybind, bindable]
    HRESULT msWrapMargin([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPMARGIN), displaybind, bindable]
    HRESULT msWrapMargin([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPFLOW), displaybind, bindable]
    HRESULT msWrapFlow([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPFLOW), displaybind, bindable]
    HRESULT msWrapFlow([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONNAME), displaybind, bindable]
    HRESULT msAnimationName([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONNAME), displaybind, bindable]
    HRESULT msAnimationName([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDURATION), displaybind, bindable]
    HRESULT msAnimationDuration([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDURATION), displaybind, bindable]
    HRESULT msAnimationDuration([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONTIMINGFUNCTION), displaybind, bindable]
    HRESULT msAnimationTimingFunction([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONTIMINGFUNCTION), displaybind, bindable]
    HRESULT msAnimationTimingFunction([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDELAY), displaybind, bindable]
    HRESULT msAnimationDelay([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDELAY), displaybind, bindable]
    HRESULT msAnimationDelay([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDIRECTION), displaybind, bindable]
    HRESULT msAnimationDirection([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDIRECTION), displaybind, bindable]
    HRESULT msAnimationDirection([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONPLAYSTATE), displaybind, bindable]
    HRESULT msAnimationPlayState([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONPLAYSTATE), displaybind, bindable]
    HRESULT msAnimationPlayState([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONITERATIONCOUNT), displaybind, bindable]
    HRESULT msAnimationIterationCount([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONITERATIONCOUNT), displaybind, bindable]
    HRESULT msAnimationIterationCount([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATION), displaybind, bindable]
    HRESULT msAnimation([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATION), displaybind, bindable]
    HRESULT msAnimation([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONFILLMODE), displaybind, bindable]
    HRESULT msAnimationFillMode([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONFILLMODE), displaybind, bindable]
    HRESULT msAnimationFillMode([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLORINTERPOLATIONFILTERS), displaybind, bindable]
    HRESULT colorInterpolationFilters([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLORINTERPOLATIONFILTERS), displaybind, bindable]
    HRESULT colorInterpolationFilters([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNCOUNT), displaybind, bindable]
    HRESULT columnCount([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNCOUNT), displaybind, bindable]
    HRESULT columnCount([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNWIDTH), displaybind, bindable]
    HRESULT columnWidth([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNWIDTH), displaybind, bindable]
    HRESULT columnWidth([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNGAP), displaybind, bindable]
    HRESULT columnGap([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNGAP), displaybind, bindable]
    HRESULT columnGap([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNFILL), displaybind, bindable]
    HRESULT columnFill([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNFILL), displaybind, bindable]
    HRESULT columnFill([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNSPAN), displaybind, bindable]
    HRESULT columnSpan([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNSPAN), displaybind, bindable]
    HRESULT columnSpan([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNS), displaybind, bindable, nonbrowsable]
    HRESULT columns([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNS), displaybind, bindable, nonbrowsable]
    HRESULT columns([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULE), displaybind, bindable]
    HRESULT columnRule([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULE), displaybind, bindable]
    HRESULT columnRule([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULECOLOR), displaybind, bindable]
    HRESULT columnRuleColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULECOLOR), displaybind, bindable]
    HRESULT columnRuleColor([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULESTYLE), displaybind, bindable]
    HRESULT columnRuleStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULESTYLE), displaybind, bindable]
    HRESULT columnRuleStyle([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULEWIDTH), displaybind, bindable]
    HRESULT columnRuleWidth([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULEWIDTH), displaybind, bindable]
    HRESULT columnRuleWidth([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKBEFORE), displaybind, bindable]
    HRESULT breakBefore([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKBEFORE), displaybind, bindable]
    HRESULT breakBefore([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKAFTER), displaybind, bindable]
    HRESULT breakAfter([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKAFTER), displaybind, bindable]
    HRESULT breakAfter([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKINSIDE), displaybind, bindable]
    HRESULT breakInside([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKINSIDE), displaybind, bindable]
    HRESULT breakInside([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODCOLOR), displaybind, bindable]
    HRESULT floodColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODCOLOR), displaybind, bindable]
    HRESULT floodColor([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODOPACITY), displaybind, bindable]
    HRESULT floodOpacity([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODOPACITY), displaybind, bindable]
    HRESULT floodOpacity([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_LIGHTINGCOLOR), displaybind, bindable]
    HRESULT lightingColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_LIGHTINGCOLOR), displaybind, bindable]
    HRESULT lightingColor([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMIN), displaybind, bindable]
    HRESULT msScrollLimitXMin([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMIN), displaybind, bindable]
    HRESULT msScrollLimitXMin([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMIN), displaybind, bindable]
    HRESULT msScrollLimitYMin([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMIN), displaybind, bindable]
    HRESULT msScrollLimitYMin([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMAX), displaybind, bindable]
    HRESULT msScrollLimitXMax([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMAX), displaybind, bindable]
    HRESULT msScrollLimitXMax([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMAX), displaybind, bindable]
    HRESULT msScrollLimitYMax([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMAX), displaybind, bindable]
    HRESULT msScrollLimitYMax([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMIT), displaybind, bindable]
    HRESULT msScrollLimit([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMIT), displaybind, bindable]
    HRESULT msScrollLimit([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TEXTSHADOW), displaybind, bindable]
    HRESULT textShadow([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TEXTSHADOW), displaybind, bindable]
    HRESULT textShadow([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWFROM), displaybind, bindable]
    HRESULT msFlowFrom([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWFROM), displaybind, bindable]
    HRESULT msFlowFrom([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWINTO), displaybind, bindable]
    HRESULT msFlowInto([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWINTO), displaybind, bindable]
    HRESULT msFlowInto([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENS), displaybind, bindable]
    HRESULT msHyphens([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENS), displaybind, bindable]
    HRESULT msHyphens([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITZONE), displaybind, bindable]
    HRESULT msHyphenateLimitZone([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITZONE), displaybind, bindable]
    HRESULT msHyphenateLimitZone([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITCHARS), displaybind, bindable]
    HRESULT msHyphenateLimitChars([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITCHARS), displaybind, bindable]
    HRESULT msHyphenateLimitChars([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITLINES), displaybind, bindable]
    HRESULT msHyphenateLimitLines([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITLINES), displaybind, bindable]
    HRESULT msHyphenateLimitLines([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSHIGHCONTRASTADJUST), displaybind, bindable]
    HRESULT msHighContrastAdjust([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSHIGHCONTRASTADJUST), displaybind, bindable]
    HRESULT msHighContrastAdjust([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ENABLEBACKGROUND), displaybind, bindable]
    HRESULT enableBackground([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ENABLEBACKGROUND), displaybind, bindable]
    HRESULT enableBackground([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFONTFEATURESETTINGS), displaybind, bindable]
    HRESULT msFontFeatureSettings([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFONTFEATURESETTINGS), displaybind, bindable]
    HRESULT msFontFeatureSettings([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSUSERSELECT), displaybind, bindable]
    HRESULT msUserSelect([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSUSERSELECT), displaybind, bindable]
    HRESULT msUserSelect([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSOVERFLOWSTYLE), displaybind, bindable]
    HRESULT msOverflowStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSOVERFLOWSTYLE), displaybind, bindable]
    HRESULT msOverflowStyle([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSFORMSTYLE), displaybind, bindable]
    HRESULT msTransformStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSFORMSTYLE), displaybind, bindable]
    HRESULT msTransformStyle([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSBACKFACEVISIBILITY), displaybind, bindable]
    HRESULT msBackfaceVisibility([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSBACKFACEVISIBILITY), displaybind, bindable]
    HRESULT msBackfaceVisibility([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVE), displaybind, bindable]
    HRESULT msPerspective([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVE), displaybind, bindable]
    HRESULT msPerspective([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVEORIGIN), displaybind, bindable]
    HRESULT msPerspectiveOrigin([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVEORIGIN), displaybind, bindable]
    HRESULT msPerspectiveOrigin([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONPROPERTY), displaybind, bindable]
    HRESULT msTransitionProperty([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONPROPERTY), displaybind, bindable]
    HRESULT msTransitionProperty([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDURATION), displaybind, bindable]
    HRESULT msTransitionDuration([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDURATION), displaybind, bindable]
    HRESULT msTransitionDuration([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONTIMINGFUNCTION), displaybind, bindable]
    HRESULT msTransitionTimingFunction([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONTIMINGFUNCTION), displaybind, bindable]
    HRESULT msTransitionTimingFunction([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDELAY), displaybind, bindable]
    HRESULT msTransitionDelay([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDELAY), displaybind, bindable]
    HRESULT msTransitionDelay([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITION), displaybind, bindable]
    HRESULT msTransition([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITION), displaybind, bindable]
    HRESULT msTransition([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHACTION), displaybind, bindable]
    HRESULT msTouchAction([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHACTION), displaybind, bindable]
    HRESULT msTouchAction([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLTRANSLATION), displaybind, bindable]
    HRESULT msScrollTranslation([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLTRANSLATION), displaybind, bindable]
    HRESULT msScrollTranslation([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEX), displaybind, bindable]
    HRESULT msFlex([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEX), displaybind, bindable]
    HRESULT msFlex([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPOSITIVE), displaybind, bindable]
    HRESULT msFlexPositive([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPOSITIVE), displaybind, bindable]
    HRESULT msFlexPositive([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXNEGATIVE), displaybind, bindable]
    HRESULT msFlexNegative([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXNEGATIVE), displaybind, bindable]
    HRESULT msFlexNegative([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPREFERREDSIZE), displaybind, bindable]
    HRESULT msFlexPreferredSize([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPREFERREDSIZE), displaybind, bindable]
    HRESULT msFlexPreferredSize([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXFLOW), displaybind, bindable]
    HRESULT msFlexFlow([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXFLOW), displaybind, bindable]
    HRESULT msFlexFlow([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXDIRECTION), displaybind, bindable]
    HRESULT msFlexDirection([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXDIRECTION), displaybind, bindable]
    HRESULT msFlexDirection([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXWRAP), displaybind, bindable]
    HRESULT msFlexWrap([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXWRAP), displaybind, bindable]
    HRESULT msFlexWrap([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXALIGN), displaybind, bindable]
    HRESULT msFlexAlign([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXALIGN), displaybind, bindable]
    HRESULT msFlexAlign([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXITEMALIGN), displaybind, bindable]
    HRESULT msFlexItemAlign([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXITEMALIGN), displaybind, bindable]
    HRESULT msFlexItemAlign([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPACK), displaybind, bindable]
    HRESULT msFlexPack([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPACK), displaybind, bindable]
    HRESULT msFlexPack([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXLINEPACK), displaybind, bindable]
    HRESULT msFlexLinePack([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXLINEPACK), displaybind, bindable]
    HRESULT msFlexLinePack([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXORDER), displaybind, bindable]
    HRESULT msFlexOrder([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXORDER), displaybind, bindable]
    HRESULT msFlexOrder([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHSELECT), displaybind, bindable]
    HRESULT msTouchSelect([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHSELECT), displaybind, bindable]
    HRESULT msTouchSelect([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORM), displaybind, bindable]
    HRESULT transform([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORM), displaybind, bindable]
    HRESULT transform([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMORIGIN), displaybind, bindable]
    HRESULT transformOrigin([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMORIGIN), displaybind, bindable]
    HRESULT transformOrigin([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMSTYLE), displaybind, bindable]
    HRESULT transformStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMSTYLE), displaybind, bindable]
    HRESULT transformStyle([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_BACKFACEVISIBILITY), displaybind, bindable]
    HRESULT backfaceVisibility([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_BACKFACEVISIBILITY), displaybind, bindable]
    HRESULT backfaceVisibility([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVE), displaybind, bindable]
    HRESULT perspective([in] VARIANT v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVE), displaybind, bindable]
    HRESULT perspective([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVEORIGIN), displaybind, bindable]
    HRESULT perspectiveOrigin([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVEORIGIN), displaybind, bindable]
    HRESULT perspectiveOrigin([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONPROPERTY), displaybind, bindable]
    HRESULT transitionProperty([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONPROPERTY), displaybind, bindable]
    HRESULT transitionProperty([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDURATION), displaybind, bindable]
    HRESULT transitionDuration([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDURATION), displaybind, bindable]
    HRESULT transitionDuration([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONTIMINGFUNCTION), displaybind, bindable]
    HRESULT transitionTimingFunction([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONTIMINGFUNCTION), displaybind, bindable]
    HRESULT transitionTimingFunction([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDELAY), displaybind, bindable]
    HRESULT transitionDelay([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDELAY), displaybind, bindable]
    HRESULT transitionDelay([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITION), displaybind, bindable]
    HRESULT transition([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITION), displaybind, bindable]
    HRESULT transition([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_FONTFEATURESETTINGS), displaybind, bindable]
    HRESULT fontFeatureSettings([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_FONTFEATURESETTINGS), displaybind, bindable]
    HRESULT fontFeatureSettings([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONNAME), displaybind, bindable]
    HRESULT animationName([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONNAME), displaybind, bindable]
    HRESULT animationName([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDURATION), displaybind, bindable]
    HRESULT animationDuration([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDURATION), displaybind, bindable]
    HRESULT animationDuration([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONTIMINGFUNCTION), displaybind, bindable]
    HRESULT animationTimingFunction([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONTIMINGFUNCTION), displaybind, bindable]
    HRESULT animationTimingFunction([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDELAY), displaybind, bindable]
    HRESULT animationDelay([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDELAY), displaybind, bindable]
    HRESULT animationDelay([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDIRECTION), displaybind, bindable]
    HRESULT animationDirection([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDIRECTION), displaybind, bindable]
    HRESULT animationDirection([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONPLAYSTATE), displaybind, bindable]
    HRESULT animationPlayState([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONPLAYSTATE), displaybind, bindable]
    HRESULT animationPlayState([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONITERATIONCOUNT), displaybind, bindable]
    HRESULT animationIterationCount([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONITERATIONCOUNT), displaybind, bindable]
    HRESULT animationIterationCount([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATION), displaybind, bindable]
    HRESULT animation([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATION), displaybind, bindable]
    HRESULT animation([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONFILLMODE), displaybind, bindable]
    HRESULT animationFillMode([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONFILLMODE), displaybind, bindable]
    HRESULT animationFillMode([out, retval] BSTR *p);
}

#define WINE_IHTMLCSSSTYLEDECLARATION2_DISPINTERFACE_DECL               \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLCHAINING), displaybind, bindable] \
    void msScrollChaining(BSTR v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLCHAINING), displaybind, bindable] \
    BSTR msScrollChaining();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMING), displaybind, bindable] \
    void msContentZooming(BSTR v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMING), displaybind, bindable] \
    BSTR msContentZooming();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPTYPE), displaybind, bindable] \
    void msContentZoomSnapType(BSTR v);                                 \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPTYPE), displaybind, bindable] \
    BSTR msContentZoomSnapType();                                       \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLRAILS), displaybind, bindable] \
    void msScrollRails(BSTR v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLRAILS), displaybind, bindable] \
    BSTR msScrollRails();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMCHAINING), displaybind, bindable] \
    void msContentZoomChaining(BSTR v);                                 \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMCHAINING), displaybind, bindable] \
    BSTR msContentZoomChaining();                                       \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPTYPE), displaybind, bindable] \
    void msScrollSnapType(BSTR v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPTYPE), displaybind, bindable] \
    BSTR msScrollSnapType();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMIT), displaybind, bindable] \
    void msContentZoomLimit(BSTR v);                                    \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMIT), displaybind, bindable] \
    BSTR msContentZoomLimit();                                          \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAP), displaybind, bindable] \
    void msContentZoomSnap(BSTR v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAP), displaybind, bindable] \
    BSTR msContentZoomSnap();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPPOINTS), displaybind, bindable] \
    void msContentZoomSnapPoints(BSTR v);                               \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPPOINTS), displaybind, bindable] \
    BSTR msContentZoomSnapPoints();                                     \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMIN), displaybind, bindable] \
    void msContentZoomLimitMin(VARIANT v);                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMIN), displaybind, bindable] \
    VARIANT msContentZoomLimitMin();                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMAX), displaybind, bindable] \
    void msContentZoomLimitMax(VARIANT v);                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMAX), displaybind, bindable] \
    VARIANT msContentZoomLimitMax();                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPX), displaybind, bindable] \
    void msScrollSnapX(BSTR v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPX), displaybind, bindable] \
    BSTR msScrollSnapX();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPY), displaybind, bindable] \
    void msScrollSnapY(BSTR v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPY), displaybind, bindable] \
    BSTR msScrollSnapY();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSX), displaybind, bindable] \
    void msScrollSnapPointsX(BSTR v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSX), displaybind, bindable] \
    BSTR msScrollSnapPointsX();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSY), displaybind, bindable] \
    void msScrollSnapPointsY(BSTR v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSY), displaybind, bindable] \
    BSTR msScrollSnapPointsY();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMN), displaybind, bindable] \
    void msGridColumn(VARIANT v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMN), displaybind, bindable] \
    VARIANT msGridColumn();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNALIGN), displaybind, bindable] \
    void msGridColumnAlign(BSTR v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNALIGN), displaybind, bindable] \
    BSTR msGridColumnAlign();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNS), displaybind, bindable] \
    void msGridColumns(BSTR v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNS), displaybind, bindable] \
    BSTR msGridColumns();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNSPAN), displaybind, bindable] \
    void msGridColumnSpan(VARIANT v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNSPAN), displaybind, bindable] \
    VARIANT msGridColumnSpan();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROW), displaybind, bindable] \
    void msGridRow(VARIANT v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROW), displaybind, bindable] \
    VARIANT msGridRow();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWALIGN), displaybind, bindable] \
    void msGridRowAlign(BSTR v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWALIGN), displaybind, bindable] \
    BSTR msGridRowAlign();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWS), displaybind, bindable] \
    void msGridRows(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWS), displaybind, bindable] \
    BSTR msGridRows();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWSPAN), displaybind, bindable] \
    void msGridRowSpan(VARIANT v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWSPAN), displaybind, bindable] \
    VARIANT msGridRowSpan();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPTHROUGH), displaybind, bindable] \
    void msWrapThrough(BSTR v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPTHROUGH), displaybind, bindable] \
    BSTR msWrapThrough();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPMARGIN), displaybind, bindable] \
    void msWrapMargin(VARIANT v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPMARGIN), displaybind, bindable] \
    VARIANT msWrapMargin();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPFLOW), displaybind, bindable] \
    void msWrapFlow(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPFLOW), displaybind, bindable] \
    BSTR msWrapFlow();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONNAME), displaybind, bindable] \
    void msAnimationName(BSTR v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONNAME), displaybind, bindable] \
    BSTR msAnimationName();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDURATION), displaybind, bindable] \
    void msAnimationDuration(BSTR v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDURATION), displaybind, bindable] \
    BSTR msAnimationDuration();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONTIMINGFUNCTION), displaybind, bindable] \
    void msAnimationTimingFunction(BSTR v);                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONTIMINGFUNCTION), displaybind, bindable] \
    BSTR msAnimationTimingFunction();                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDELAY), displaybind, bindable] \
    void msAnimationDelay(BSTR v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDELAY), displaybind, bindable] \
    BSTR msAnimationDelay();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDIRECTION), displaybind, bindable] \
    void msAnimationDirection(BSTR v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDIRECTION), displaybind, bindable] \
    BSTR msAnimationDirection();                                        \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONPLAYSTATE), displaybind, bindable] \
    void msAnimationPlayState(BSTR v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONPLAYSTATE), displaybind, bindable] \
    BSTR msAnimationPlayState();                                        \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONITERATIONCOUNT), displaybind, bindable] \
    void msAnimationIterationCount(BSTR v);                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONITERATIONCOUNT), displaybind, bindable] \
    BSTR msAnimationIterationCount();                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATION), displaybind, bindable] \
    void msAnimation(BSTR v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATION), displaybind, bindable] \
    BSTR msAnimation();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONFILLMODE), displaybind, bindable] \
    void msAnimationFillMode(BSTR v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONFILLMODE), displaybind, bindable] \
    BSTR msAnimationFillMode();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLORINTERPOLATIONFILTERS), displaybind, bindable] \
    void colorInterpolationFilters(BSTR v);                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLORINTERPOLATIONFILTERS), displaybind, bindable] \
    BSTR colorInterpolationFilters();                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNCOUNT), displaybind, bindable] \
    void columnCount(VARIANT v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNCOUNT), displaybind, bindable] \
    VARIANT columnCount();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNWIDTH), displaybind, bindable] \
    void columnWidth(VARIANT v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNWIDTH), displaybind, bindable] \
    VARIANT columnWidth();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNGAP), displaybind, bindable] \
    void columnGap(VARIANT v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNGAP), displaybind, bindable] \
    VARIANT columnGap();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNFILL), displaybind, bindable] \
    void columnFill(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNFILL), displaybind, bindable] \
    BSTR columnFill();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNSPAN), displaybind, bindable] \
    void columnSpan(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNSPAN), displaybind, bindable] \
    BSTR columnSpan();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNS), displaybind, bindable, nonbrowsable] \
    void columns(BSTR v);                                               \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNS), displaybind, bindable, nonbrowsable] \
    BSTR columns();                                                     \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULE), displaybind, bindable] \
    void columnRule(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULE), displaybind, bindable] \
    BSTR columnRule();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULECOLOR), displaybind, bindable] \
    void columnRuleColor(VARIANT v);                                    \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULECOLOR), displaybind, bindable] \
    VARIANT columnRuleColor();                                          \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULESTYLE), displaybind, bindable] \
    void columnRuleStyle(BSTR v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULESTYLE), displaybind, bindable] \
    BSTR columnRuleStyle();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULEWIDTH), displaybind, bindable] \
    void columnRuleWidth(VARIANT v);                                    \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULEWIDTH), displaybind, bindable] \
    VARIANT columnRuleWidth();                                          \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKBEFORE), displaybind, bindable] \
    void breakBefore(BSTR v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKBEFORE), displaybind, bindable] \
    BSTR breakBefore();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKAFTER), displaybind, bindable] \
    void breakAfter(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKAFTER), displaybind, bindable] \
    BSTR breakAfter();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKINSIDE), displaybind, bindable] \
    void breakInside(BSTR v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKINSIDE), displaybind, bindable] \
    BSTR breakInside();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODCOLOR), displaybind, bindable] \
    void floodColor(VARIANT v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODCOLOR), displaybind, bindable] \
    VARIANT floodColor();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODOPACITY), displaybind, bindable] \
    void floodOpacity(VARIANT v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODOPACITY), displaybind, bindable] \
    VARIANT floodOpacity();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_LIGHTINGCOLOR), displaybind, bindable] \
    void lightingColor(VARIANT v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_LIGHTINGCOLOR), displaybind, bindable] \
    VARIANT lightingColor();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMIN), displaybind, bindable] \
    void msScrollLimitXMin(VARIANT v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMIN), displaybind, bindable] \
    VARIANT msScrollLimitXMin();                                        \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMIN), displaybind, bindable] \
    void msScrollLimitYMin(VARIANT v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMIN), displaybind, bindable] \
    VARIANT msScrollLimitYMin();                                        \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMAX), displaybind, bindable] \
    void msScrollLimitXMax(VARIANT v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMAX), displaybind, bindable] \
    VARIANT msScrollLimitXMax();                                        \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMAX), displaybind, bindable] \
    void msScrollLimitYMax(VARIANT v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMAX), displaybind, bindable] \
    VARIANT msScrollLimitYMax();                                        \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMIT), displaybind, bindable] \
    void msScrollLimit(BSTR v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMIT), displaybind, bindable] \
    BSTR msScrollLimit();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TEXTSHADOW), displaybind, bindable] \
    void textShadow(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TEXTSHADOW), displaybind, bindable] \
    BSTR textShadow();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWFROM), displaybind, bindable] \
    void msFlowFrom(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWFROM), displaybind, bindable] \
    BSTR msFlowFrom();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWINTO), displaybind, bindable] \
    void msFlowInto(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWINTO), displaybind, bindable] \
    BSTR msFlowInto();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENS), displaybind, bindable] \
    void msHyphens(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENS), displaybind, bindable] \
    BSTR msHyphens();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITZONE), displaybind, bindable] \
    void msHyphenateLimitZone(VARIANT v);                               \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITZONE), displaybind, bindable] \
    VARIANT msHyphenateLimitZone();                                     \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITCHARS), displaybind, bindable] \
    void msHyphenateLimitChars(BSTR v);                                 \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITCHARS), displaybind, bindable] \
    BSTR msHyphenateLimitChars();                                       \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITLINES), displaybind, bindable] \
    void msHyphenateLimitLines(VARIANT v);                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITLINES), displaybind, bindable] \
    VARIANT msHyphenateLimitLines();                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSHIGHCONTRASTADJUST), displaybind, bindable] \
    void msHighContrastAdjust(BSTR v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSHIGHCONTRASTADJUST), displaybind, bindable] \
    BSTR msHighContrastAdjust();                                        \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ENABLEBACKGROUND), displaybind, bindable] \
    void enableBackground(BSTR v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ENABLEBACKGROUND), displaybind, bindable] \
    BSTR enableBackground();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFONTFEATURESETTINGS), displaybind, bindable] \
    void msFontFeatureSettings(BSTR v);                                 \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFONTFEATURESETTINGS), displaybind, bindable] \
    BSTR msFontFeatureSettings();                                       \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSUSERSELECT), displaybind, bindable] \
    void msUserSelect(BSTR v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSUSERSELECT), displaybind, bindable] \
    BSTR msUserSelect();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSOVERFLOWSTYLE), displaybind, bindable] \
    void msOverflowStyle(BSTR v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSOVERFLOWSTYLE), displaybind, bindable] \
    BSTR msOverflowStyle();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSFORMSTYLE), displaybind, bindable] \
    void msTransformStyle(BSTR v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSFORMSTYLE), displaybind, bindable] \
    BSTR msTransformStyle();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSBACKFACEVISIBILITY), displaybind, bindable] \
    void msBackfaceVisibility(BSTR v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSBACKFACEVISIBILITY), displaybind, bindable] \
    BSTR msBackfaceVisibility();                                        \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVE), displaybind, bindable] \
    void msPerspective(VARIANT v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVE), displaybind, bindable] \
    VARIANT msPerspective();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVEORIGIN), displaybind, bindable] \
    void msPerspectiveOrigin(BSTR v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVEORIGIN), displaybind, bindable] \
    BSTR msPerspectiveOrigin();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONPROPERTY), displaybind, bindable] \
    void msTransitionProperty(BSTR v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONPROPERTY), displaybind, bindable] \
    BSTR msTransitionProperty();                                        \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDURATION), displaybind, bindable] \
    void msTransitionDuration(BSTR v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDURATION), displaybind, bindable] \
    BSTR msTransitionDuration();                                        \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONTIMINGFUNCTION), displaybind, bindable] \
    void msTransitionTimingFunction(BSTR v);                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONTIMINGFUNCTION), displaybind, bindable] \
    BSTR msTransitionTimingFunction();                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDELAY), displaybind, bindable] \
    void msTransitionDelay(BSTR v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDELAY), displaybind, bindable] \
    BSTR msTransitionDelay();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITION), displaybind, bindable] \
    void msTransition(BSTR v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITION), displaybind, bindable] \
    BSTR msTransition();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHACTION), displaybind, bindable] \
    void msTouchAction(BSTR v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHACTION), displaybind, bindable] \
    BSTR msTouchAction();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLTRANSLATION), displaybind, bindable] \
    void msScrollTranslation(BSTR v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLTRANSLATION), displaybind, bindable] \
    BSTR msScrollTranslation();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEX), displaybind, bindable] \
    void msFlex(BSTR v);                                                \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEX), displaybind, bindable] \
    BSTR msFlex();                                                      \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPOSITIVE), displaybind, bindable] \
    void msFlexPositive(VARIANT v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPOSITIVE), displaybind, bindable] \
    VARIANT msFlexPositive();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXNEGATIVE), displaybind, bindable] \
    void msFlexNegative(VARIANT v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXNEGATIVE), displaybind, bindable] \
    VARIANT msFlexNegative();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPREFERREDSIZE), displaybind, bindable] \
    void msFlexPreferredSize(VARIANT v);                                \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPREFERREDSIZE), displaybind, bindable] \
    VARIANT msFlexPreferredSize();                                      \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXFLOW), displaybind, bindable] \
    void msFlexFlow(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXFLOW), displaybind, bindable] \
    BSTR msFlexFlow();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXDIRECTION), displaybind, bindable] \
    void msFlexDirection(BSTR v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXDIRECTION), displaybind, bindable] \
    BSTR msFlexDirection();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXWRAP), displaybind, bindable] \
    void msFlexWrap(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXWRAP), displaybind, bindable] \
    BSTR msFlexWrap();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXALIGN), displaybind, bindable] \
    void msFlexAlign(BSTR v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXALIGN), displaybind, bindable] \
    BSTR msFlexAlign();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXITEMALIGN), displaybind, bindable] \
    void msFlexItemAlign(BSTR v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXITEMALIGN), displaybind, bindable] \
    BSTR msFlexItemAlign();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPACK), displaybind, bindable] \
    void msFlexPack(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPACK), displaybind, bindable] \
    BSTR msFlexPack();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXLINEPACK), displaybind, bindable] \
    void msFlexLinePack(BSTR v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXLINEPACK), displaybind, bindable] \
    BSTR msFlexLinePack();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXORDER), displaybind, bindable] \
    void msFlexOrder(VARIANT v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXORDER), displaybind, bindable] \
    VARIANT msFlexOrder();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHSELECT), displaybind, bindable] \
    void msTouchSelect(BSTR v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHSELECT), displaybind, bindable] \
    BSTR msTouchSelect();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORM), displaybind, bindable] \
    void transform(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORM), displaybind, bindable] \
    BSTR transform();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMORIGIN), displaybind, bindable] \
    void transformOrigin(BSTR v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMORIGIN), displaybind, bindable] \
    BSTR transformOrigin();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMSTYLE), displaybind, bindable] \
    void transformStyle(BSTR v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMSTYLE), displaybind, bindable] \
    BSTR transformStyle();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_BACKFACEVISIBILITY), displaybind, bindable] \
    void backfaceVisibility(BSTR v);                                    \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_BACKFACEVISIBILITY), displaybind, bindable] \
    BSTR backfaceVisibility();                                          \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVE), displaybind, bindable] \
    void perspective(VARIANT v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVE), displaybind, bindable] \
    VARIANT perspective();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVEORIGIN), displaybind, bindable] \
    void perspectiveOrigin(BSTR v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVEORIGIN), displaybind, bindable] \
    BSTR perspectiveOrigin();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONPROPERTY), displaybind, bindable] \
    void transitionProperty(BSTR v);                                    \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONPROPERTY), displaybind, bindable] \
    BSTR transitionProperty();                                          \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDURATION), displaybind, bindable] \
    void transitionDuration(BSTR v);                                    \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDURATION), displaybind, bindable] \
    BSTR transitionDuration();                                          \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONTIMINGFUNCTION), displaybind, bindable] \
    void transitionTimingFunction(BSTR v);                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONTIMINGFUNCTION), displaybind, bindable] \
    BSTR transitionTimingFunction();                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDELAY), displaybind, bindable] \
    void transitionDelay(BSTR v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDELAY), displaybind, bindable] \
    BSTR transitionDelay();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITION), displaybind, bindable] \
    void transition(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITION), displaybind, bindable] \
    BSTR transition();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_FONTFEATURESETTINGS), displaybind, bindable] \
    void fontFeatureSettings(BSTR v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_FONTFEATURESETTINGS), displaybind, bindable] \
    BSTR fontFeatureSettings();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONNAME), displaybind, bindable] \
    void animationName(BSTR v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONNAME), displaybind, bindable] \
    BSTR animationName();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDURATION), displaybind, bindable] \
    void animationDuration(BSTR v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDURATION), displaybind, bindable] \
    BSTR animationDuration();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONTIMINGFUNCTION), displaybind, bindable] \
    void animationTimingFunction(BSTR v);                               \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONTIMINGFUNCTION), displaybind, bindable] \
    BSTR animationTimingFunction();                                     \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDELAY), displaybind, bindable] \
    void animationDelay(BSTR v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDELAY), displaybind, bindable] \
    BSTR animationDelay();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDIRECTION), displaybind, bindable] \
    void animationDirection(BSTR v);                                    \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDIRECTION), displaybind, bindable] \
    BSTR animationDirection();                                          \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONPLAYSTATE), displaybind, bindable] \
    void animationPlayState(BSTR v);                                    \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONPLAYSTATE), displaybind, bindable] \
    BSTR animationPlayState();                                          \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONITERATIONCOUNT), displaybind, bindable] \
    void animationIterationCount(BSTR v);                               \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONITERATIONCOUNT), displaybind, bindable] \
    BSTR animationIterationCount();                                     \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATION), displaybind, bindable] \
    void animation(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATION), displaybind, bindable] \
    BSTR animation();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONFILLMODE), displaybind, bindable] \
    void animationFillMode(BSTR v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONFILLMODE), displaybind, bindable] \
    BSTR animationFillMode()

#define WINE_IHTMLCSSSTYLEDECLARATION3_DISPINTERFACE_DECL               \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION3_FLEX), displaybind, bindable] \
    void flex(BSTR v);                                                  \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION3_FLEX), displaybind, bindable] \
    BSTR flex();                                                        \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION3_FLEXDIRECTION), displaybind, bindable] \
    void flexDirection(BSTR v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION3_FLEXDIRECTION), displaybind, bindable] \
    BSTR flexDirection();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION3_FLEXWRAP), displaybind, bindable] \
    void flexWrap(BSTR v);                                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION3_FLEXWRAP), displaybind, bindable] \
    BSTR flexWrap();                                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION3_FLEXFLOW), displaybind, bindable] \
    void flexFlow(BSTR v);                                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION3_FLEXFLOW), displaybind, bindable] \
    BSTR flexFlow();                                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION3_FLEXGROW), displaybind, bindable] \
    void flexGrow(VARIANT v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION3_FLEXGROW), displaybind, bindable] \
    VARIANT flexGrow();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION3_FLEXSHRINK), displaybind, bindable] \
    void flexShrink(VARIANT v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION3_FLEXSHRINK), displaybind, bindable] \
    VARIANT flexShrink();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION3_FLEXBASIS), displaybind, bindable] \
    void flexBasis(VARIANT v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION3_FLEXBASIS), displaybind, bindable] \
    VARIANT flexBasis();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION3_JUSTIFYCONTENT), displaybind, bindable] \
    void justifyContent(BSTR v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION3_JUSTIFYCONTENT), displaybind, bindable] \
    BSTR justifyContent();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION3_ALIGNITEMS), displaybind, bindable] \
    void alignItems(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION3_ALIGNITEMS), displaybind, bindable] \
    BSTR alignItems();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION3_ALIGNSELF), displaybind, bindable] \
    void alignSelf(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION3_ALIGNSELF), displaybind, bindable] \
    BSTR alignSelf();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION3_ALIGNCONTENT), displaybind, bindable] \
    void alignContent(BSTR v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION3_ALIGNCONTENT), displaybind, bindable] \
    BSTR alignContent();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION3_BORDERIMAGE), displaybind, bindable, nonbrowsable] \
    void borderImage(BSTR v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION3_BORDERIMAGE), displaybind, bindable, nonbrowsable] \
    BSTR borderImage();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION3_BORDERIMAGESOURCE), displaybind, bindable] \
    void borderImageSource(BSTR v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION3_BORDERIMAGESOURCE), displaybind, bindable] \
    BSTR borderImageSource();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION3_BORDERIMAGESLICE), displaybind, bindable] \
    void borderImageSlice(BSTR v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION3_BORDERIMAGESLICE), displaybind, bindable] \
    BSTR borderImageSlice();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION3_BORDERIMAGEWIDTH), displaybind, bindable] \
    void borderImageWidth(BSTR v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION3_BORDERIMAGEWIDTH), displaybind, bindable] \
    BSTR borderImageWidth();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION3_BORDERIMAGEOUTSET), displaybind, bindable] \
    void borderImageOutset(BSTR v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION3_BORDERIMAGEOUTSET), displaybind, bindable] \
    BSTR borderImageOutset();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION3_BORDERIMAGEREPEAT), displaybind, bindable] \
    void borderImageRepeat(BSTR v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION3_BORDERIMAGEREPEAT), displaybind, bindable] \
    BSTR borderImageRepeat();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION3_MSIMEALIGN), displaybind, bindable] \
    void msImeAlign(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION3_MSIMEALIGN), displaybind, bindable] \
    BSTR msImeAlign();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION3_MSTEXTCOMBINEHORIZONTAL), displaybind, bindable] \
    void msTextCombineHorizontal(BSTR v);                               \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION3_MSTEXTCOMBINEHORIZONTAL), displaybind, bindable] \
    BSTR msTextCombineHorizontal();                                     \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION3_TOUCHACTION), displaybind, bindable] \
    void touchAction(BSTR v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION3_TOUCHACTION), displaybind, bindable] \
    BSTR touchAction()

#define WINE_IHTMLCSSSTYLEDECLARATION4_DISPINTERFACE_DECL               \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITAPPEARANCE), displaybind, bindable] \
    void webkitAppearance(BSTR v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITAPPEARANCE), displaybind, bindable] \
    BSTR webkitAppearance();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITUSERSELECT), displaybind, bindable] \
    void webkitUserSelect(BSTR v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITUSERSELECT), displaybind, bindable] \
    BSTR webkitUserSelect();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBOXALIGN), displaybind, bindable] \
    void webkitBoxAlign(BSTR v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBOXALIGN), displaybind, bindable] \
    BSTR webkitBoxAlign();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBOXORDINALGROUP), displaybind, bindable] \
    void webkitBoxOrdinalGroup(VARIANT v);                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBOXORDINALGROUP), displaybind, bindable] \
    VARIANT webkitBoxOrdinalGroup();                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBOXPACK), displaybind, bindable] \
    void webkitBoxPack(BSTR v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBOXPACK), displaybind, bindable] \
    BSTR webkitBoxPack();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBOXFLEX), displaybind, bindable] \
    void webkitBoxFlex(VARIANT v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBOXFLEX), displaybind, bindable] \
    VARIANT webkitBoxFlex();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBOXORIENT), displaybind, bindable] \
    void webkitBoxOrient(BSTR v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBOXORIENT), displaybind, bindable] \
    BSTR webkitBoxOrient();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBOXDIRECTION), displaybind, bindable] \
    void webkitBoxDirection(BSTR v);                                    \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBOXDIRECTION), displaybind, bindable] \
    BSTR webkitBoxDirection();                                          \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITTRANSFORM), displaybind, bindable] \
    void webkitTransform(BSTR v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITTRANSFORM), displaybind, bindable] \
    BSTR webkitTransform();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKGROUNDSIZE), displaybind, bindable] \
    void webkitBackgroundSize(BSTR v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKGROUNDSIZE), displaybind, bindable] \
    BSTR webkitBackgroundSize();                                        \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKFACEVISIBILITY), displaybind, bindable] \
    void webkitBackfaceVisibility(BSTR v);                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKFACEVISIBILITY), displaybind, bindable] \
    BSTR webkitBackfaceVisibility();                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITANIMATION), displaybind, bindable] \
    void webkitAnimation(BSTR v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITANIMATION), displaybind, bindable] \
    BSTR webkitAnimation();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITTRANSITION), displaybind, bindable] \
    void webkitTransition(BSTR v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITTRANSITION), displaybind, bindable] \
    BSTR webkitTransition();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITANIMATIONNAME), displaybind, bindable] \
    void webkitAnimationName(BSTR v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITANIMATIONNAME), displaybind, bindable] \
    BSTR webkitAnimationName();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITANIMATIONDURATION), displaybind, bindable] \
    void webkitAnimationDuration(BSTR v);                               \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITANIMATIONDURATION), displaybind, bindable] \
    BSTR webkitAnimationDuration();                                     \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITANIMATIONTIMINGFUNCTION), displaybind, bindable] \
    void webkitAnimationTimingFunction(BSTR v);                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITANIMATIONTIMINGFUNCTION), displaybind, bindable] \
    BSTR webkitAnimationTimingFunction();                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITANIMATIONDELAY), displaybind, bindable] \
    void webkitAnimationDelay(BSTR v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITANIMATIONDELAY), displaybind, bindable] \
    BSTR webkitAnimationDelay();                                        \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITANIMATIONITERATIONCOUNT), displaybind, bindable] \
    void webkitAnimationIterationCount(BSTR v);                         \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITANIMATIONITERATIONCOUNT), displaybind, bindable] \
    BSTR webkitAnimationIterationCount();                               \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITANIMATIONDIRECTION), displaybind, bindable] \
    void webkitAnimationDirection(BSTR v);                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITANIMATIONDIRECTION), displaybind, bindable] \
    BSTR webkitAnimationDirection();                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITANIMATIONPLAYSTATE), displaybind, bindable] \
    void webkitAnimationPlayState(BSTR v);                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITANIMATIONPLAYSTATE), displaybind, bindable] \
    BSTR webkitAnimationPlayState();                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITTRANSITIONPROPERTY), displaybind, bindable] \
    void webkitTransitionProperty(BSTR v);                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITTRANSITIONPROPERTY), displaybind, bindable] \
    BSTR webkitTransitionProperty();                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITTRANSITIONDURATION), displaybind, bindable] \
    void webkitTransitionDuration(BSTR v);                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITTRANSITIONDURATION), displaybind, bindable] \
    BSTR webkitTransitionDuration();                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITTRANSITIONTIMINGFUNCTION), displaybind, bindable] \
    void webkitTransitionTimingFunction(BSTR v);                        \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITTRANSITIONTIMINGFUNCTION), displaybind, bindable] \
    BSTR webkitTransitionTimingFunction();                              \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITTRANSITIONDELAY), displaybind, bindable] \
    void webkitTransitionDelay(BSTR v);                                 \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITTRANSITIONDELAY), displaybind, bindable] \
    BSTR webkitTransitionDelay();                                       \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKGROUNDATTACHMENT), displaybind, bindable] \
    void webkitBackgroundAttachment(BSTR v);                            \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKGROUNDATTACHMENT), displaybind, bindable] \
    BSTR webkitBackgroundAttachment();                                  \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKGROUNDCOLOR), displaybind, bindable] \
    void webkitBackgroundColor(VARIANT v);                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKGROUNDCOLOR), displaybind, bindable] \
    VARIANT webkitBackgroundColor();                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKGROUNDCLIP), displaybind, bindable] \
    void webkitBackgroundClip(BSTR v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKGROUNDCLIP), displaybind, bindable] \
    BSTR webkitBackgroundClip();                                        \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKGROUNDIMAGE), displaybind, bindable] \
    void webkitBackgroundImage(BSTR v);                                 \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKGROUNDIMAGE), displaybind, bindable] \
    BSTR webkitBackgroundImage();                                       \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKGROUNDREPEAT), displaybind, bindable] \
    void webkitBackgroundRepeat(BSTR v);                                \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKGROUNDREPEAT), displaybind, bindable] \
    BSTR webkitBackgroundRepeat();                                      \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKGROUNDORIGIN), displaybind, bindable] \
    void webkitBackgroundOrigin(BSTR v);                                \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKGROUNDORIGIN), displaybind, bindable] \
    BSTR webkitBackgroundOrigin();                                      \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKGROUNDPOSITION), displaybind, bindable] \
    void webkitBackgroundPosition(BSTR v);                              \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKGROUNDPOSITION), displaybind, bindable] \
    BSTR webkitBackgroundPosition();                                    \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKGROUNDPOSITIONX), displaybind, bindable] \
    void webkitBackgroundPositionX(VARIANT v);                          \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKGROUNDPOSITIONX), displaybind, bindable] \
    VARIANT webkitBackgroundPositionX();                                \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKGROUNDPOSITIONY), displaybind, bindable] \
    void webkitBackgroundPositionY(VARIANT v);                          \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKGROUNDPOSITIONY), displaybind, bindable] \
    VARIANT webkitBackgroundPositionY();                                \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKGROUND), displaybind, bindable, nonbrowsable] \
    void webkitBackground(BSTR v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBACKGROUND), displaybind, bindable, nonbrowsable] \
    BSTR webkitBackground();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITTRANSFORMORIGIN), displaybind, bindable] \
    void webkitTransformOrigin(BSTR v);                                 \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITTRANSFORMORIGIN), displaybind, bindable] \
    BSTR webkitTransformOrigin();                                       \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_MSTEXTSIZEADJUST), displaybind, bindable] \
    void msTextSizeAdjust(VARIANT v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_MSTEXTSIZEADJUST), displaybind, bindable] \
    VARIANT msTextSizeAdjust();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITTEXTSIZEADJUST), displaybind, bindable] \
    void webkitTextSizeAdjust(VARIANT v);                               \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITTEXTSIZEADJUST), displaybind, bindable] \
    VARIANT webkitTextSizeAdjust();                                     \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBORDERIMAGE), displaybind, bindable, nonbrowsable] \
    void webkitBorderImage(BSTR v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBORDERIMAGE), displaybind, bindable, nonbrowsable] \
    BSTR webkitBorderImage();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBORDERIMAGESOURCE), displaybind, bindable] \
    void webkitBorderImageSource(BSTR v);                               \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBORDERIMAGESOURCE), displaybind, bindable] \
    BSTR webkitBorderImageSource();                                     \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBORDERIMAGESLICE), displaybind, bindable] \
    void webkitBorderImageSlice(BSTR v);                                \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBORDERIMAGESLICE), displaybind, bindable] \
    BSTR webkitBorderImageSlice();                                      \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBORDERIMAGEWIDTH), displaybind, bindable] \
    void webkitBorderImageWidth(BSTR v);                                \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBORDERIMAGEWIDTH), displaybind, bindable] \
    BSTR webkitBorderImageWidth();                                      \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBORDERIMAGEOUTSET), displaybind, bindable] \
    void webkitBorderImageOutset(BSTR v);                               \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBORDERIMAGEOUTSET), displaybind, bindable] \
    BSTR webkitBorderImageOutset();                                     \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBORDERIMAGEREPEAT), displaybind, bindable] \
    void webkitBorderImageRepeat(BSTR v);                               \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBORDERIMAGEREPEAT), displaybind, bindable] \
    BSTR webkitBorderImageRepeat();                                     \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBOXSIZING), displaybind, bindable] \
    void webkitBoxSizing(BSTR v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITBOXSIZING), displaybind, bindable] \
    BSTR webkitBoxSizing();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITANIMATIONFILLMODE), displaybind, bindable] \
    void webkitAnimationFillMode(BSTR v);                               \
                                                                        \
    [propget, id(DISPID_IHTMLCSSSTYLEDECLARATION4_WEBKITANIMATIONFILLMODE), displaybind, bindable] \
    BSTR webkitAnimationFillMode()

/*****************************************************************************
 *    IHTMLFiltersCollection interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050F3EE-98B5-11Cf-BB82-00AA00BDCE0B)
]
interface IHTMLFiltersCollection : IDispatch
{
    [propget, id(DISPID_IHTMLFILTERSCOLLECTION_LENGTH)]
    HRESULT length([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLFILTERSCOLLECTION__NEWENUM)]
    HRESULT _newEnum([retval, out] IUnknown **p);

    [id(DISPID_IHTMLFILTERSCOLLECTION_ITEM)]
    HRESULT item(
        [in] VARIANT *pvarIndex,
        [retval, out] VARIANT *pvarResult);
}

/*****************************************************************************
 *    IHTMLStyle interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050F25E-98B5-11CF-BB82-00AA00BDCE0B)
]
interface IHTMLStyle : IDispatch
{
    [propput, id(DISPID_IHTMLSTYLE_FONTFAMILY), bindable, displaybind]
    HRESULT fontFamily([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_FONTFAMILY), bindable, displaybind]
    HRESULT fontFamily([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_FONTSTYLE), bindable, displaybind]
    HRESULT fontStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_FONTSTYLE), bindable, displaybind]
    HRESULT fontStyle([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_FONTVARIANT), bindable, displaybind]
    HRESULT fontVariant([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_FONTVARIANT), bindable, displaybind]
    HRESULT fontVariant([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_FONTWEIGHT), bindable, displaybind]
    HRESULT fontWeight([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_FONTWEIGHT), bindable, displaybind]
    HRESULT fontWeight([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_FONTSIZE), bindable, displaybind]
    HRESULT fontSize([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_FONTSIZE), bindable, displaybind]
    HRESULT fontSize([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_FONT), bindable, displaybind]
    HRESULT font([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_FONT), bindable, displaybind]
    HRESULT font([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_COLOR), bindable, displaybind]
    HRESULT color([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_COLOR), bindable, displaybind]
    HRESULT color([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_BACKGROUND), bindable, displaybind]
    HRESULT background([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BACKGROUND), bindable, displaybind]
    HRESULT background([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDCOLOR), bindable, displaybind]
    HRESULT backgroundColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDCOLOR), bindable, displaybind]
    HRESULT backgroundColor([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDIMAGE), bindable, displaybind]
    HRESULT backgroundImage([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDIMAGE), bindable, displaybind]
    HRESULT backgroundImage([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDREPEAT), bindable, displaybind]
    HRESULT backgroundRepeat([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDREPEAT), bindable, displaybind]
    HRESULT backgroundRepeat([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDATTACHMENT), bindable, displaybind]
    HRESULT backgroundAttachment([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDATTACHMENT), bindable, displaybind]
    HRESULT backgroundAttachment([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITION), bindable, displaybind]
    HRESULT backgroundPosition([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITION), bindable, displaybind]
    HRESULT backgroundPosition([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONX), bindable, displaybind]
    HRESULT backgroundPositionX([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONX), bindable, displaybind]
    HRESULT backgroundPositionX([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONY), bindable, displaybind]
    HRESULT backgroundPositionY([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONY), bindable, displaybind]
    HRESULT backgroundPositionY([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_WORDSPACING), bindable, displaybind]
    HRESULT wordSpacing([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_WORDSPACING), bindable, displaybind]
    HRESULT wordSpacing([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_LETTERSPACING), bindable, displaybind]
    HRESULT letterSpacing([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_LETTERSPACING), bindable, displaybind]
    HRESULT letterSpacing([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATION), bindable, displaybind]
    HRESULT textDecoration([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATION), bindable, displaybind]
    HRESULT textDecoration([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONNONE), bindable, displaybind]
    HRESULT textDecorationNone([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONNONE), bindable, displaybind]
    HRESULT textDecorationNone([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONUNDERLINE), bindable, displaybind]
    HRESULT textDecorationUnderline([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONUNDERLINE), bindable, displaybind]
    HRESULT textDecorationUnderline([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONOVERLINE), bindable, displaybind]
    HRESULT textDecorationOverline([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONOVERLINE), bindable, displaybind]
    HRESULT textDecorationOverline([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONLINETHROUGH), bindable, displaybind]
    HRESULT textDecorationLineThrough([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONLINETHROUGH), bindable, displaybind]
    HRESULT textDecorationLineThrough([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONBLINK), bindable, displaybind]
    HRESULT textDecorationBlink([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONBLINK), bindable, displaybind]
    HRESULT textDecorationBlink([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLSTYLE_VERTICALALIGN), bindable, displaybind]
    HRESULT verticalAlign([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_VERTICALALIGN), bindable, displaybind]
    HRESULT verticalAlign([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_TEXTTRANSFORM), bindable, displaybind]
    HRESULT textTransform([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_TEXTTRANSFORM), bindable, displaybind]
    HRESULT textTransform([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_TEXTALIGN), bindable, displaybind]
    HRESULT textAlign([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_TEXTALIGN), bindable, displaybind]
    HRESULT textAlign([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_TEXTINDENT), bindable, displaybind]
    HRESULT textIndent([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_TEXTINDENT), bindable, displaybind]
    HRESULT textIndent([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_LINEHEIGHT), bindable, displaybind]
    HRESULT lineHeight([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_LINEHEIGHT), bindable, displaybind]
    HRESULT lineHeight([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_MARGINTOP), bindable, displaybind]
    HRESULT marginTop([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_MARGINTOP), bindable, displaybind]
    HRESULT marginTop([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_MARGINRIGHT), bindable, displaybind]
    HRESULT marginRight([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_MARGINRIGHT), bindable, displaybind]
    HRESULT marginRight([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_MARGINBOTTOM), bindable, displaybind]
    HRESULT marginBottom([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_MARGINBOTTOM), bindable, displaybind]
    HRESULT marginBottom([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_MARGINLEFT), bindable, displaybind]
    HRESULT marginLeft([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_MARGINLEFT), bindable, displaybind]
    HRESULT marginLeft([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_MARGIN), bindable, displaybind]
    HRESULT margin([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_MARGIN), bindable, displaybind]
    HRESULT margin([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_PADDINGTOP), bindable, displaybind]
    HRESULT paddingTop([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_PADDINGTOP), bindable, displaybind]
    HRESULT paddingTop([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_PADDINGRIGHT), bindable, displaybind]
    HRESULT paddingRight([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_PADDINGRIGHT), bindable, displaybind]
    HRESULT paddingRight([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_PADDINGBOTTOM), bindable, displaybind]
    HRESULT paddingBottom([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_PADDINGBOTTOM), bindable, displaybind]
    HRESULT paddingBottom([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_PADDINGLEFT), bindable, displaybind]
    HRESULT paddingLeft([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_PADDINGLEFT), bindable, displaybind]
    HRESULT paddingLeft([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_PADDING), bindable, displaybind]
    HRESULT padding([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_PADDING), bindable, displaybind]
    HRESULT padding([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_BORDER), bindable, displaybind]
    HRESULT border([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDER), bindable, displaybind]
    HRESULT border([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_BORDERTOP), bindable, displaybind]
    HRESULT borderTop([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERTOP), bindable, displaybind]
    HRESULT borderTop([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHT), bindable, displaybind]
    HRESULT borderRight([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHT), bindable, displaybind]
    HRESULT borderRight([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOM), bindable, displaybind]
    HRESULT borderBottom([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOM), bindable, displaybind]
    HRESULT borderBottom([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_BORDERLEFT), bindable, displaybind]
    HRESULT borderLeft([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERLEFT), bindable, displaybind]
    HRESULT borderLeft([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_BORDERCOLOR), bindable, displaybind]
    HRESULT borderColor([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERCOLOR), bindable, displaybind]
    HRESULT borderColor([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_BORDERTOPCOLOR), bindable, displaybind]
    HRESULT borderTopColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERTOPCOLOR), bindable, displaybind]
    HRESULT borderTopColor([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHTCOLOR), bindable, displaybind]
    HRESULT borderRightColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHTCOLOR), bindable, displaybind]
    HRESULT borderRightColor([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOMCOLOR), bindable, displaybind]
    HRESULT borderBottomColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOMCOLOR), bindable, displaybind]
    HRESULT borderBottomColor([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_BORDERLEFTCOLOR), bindable, displaybind]
    HRESULT borderLeftColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERLEFTCOLOR), bindable, displaybind]
    HRESULT borderLeftColor([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_BORDERWIDTH), bindable, displaybind]
    HRESULT borderWidth([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERWIDTH), bindable, displaybind]
    HRESULT borderWidth([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_BORDERTOPWIDTH), bindable, displaybind]
    HRESULT borderTopWidth([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERTOPWIDTH), bindable, displaybind]
    HRESULT borderTopWidth([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHTWIDTH), bindable, displaybind]
    HRESULT borderRightWidth([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHTWIDTH), bindable, displaybind]
    HRESULT borderRightWidth([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOMWIDTH), bindable, displaybind]
    HRESULT borderBottomWidth([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOMWIDTH), bindable, displaybind]
    HRESULT borderBottomWidth([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_BORDERLEFTWIDTH), bindable, displaybind]
    HRESULT borderLeftWidth([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERLEFTWIDTH), bindable, displaybind]
    HRESULT borderLeftWidth([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_BORDERSTYLE), bindable, displaybind]
    HRESULT borderStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERSTYLE), bindable, displaybind]
    HRESULT borderStyle([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_BORDERTOPSTYLE), bindable, displaybind]
    HRESULT borderTopStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERTOPSTYLE), bindable, displaybind]
    HRESULT borderTopStyle([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHTSTYLE), bindable, displaybind]
    HRESULT borderRightStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHTSTYLE), bindable, displaybind]
    HRESULT borderRightStyle([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOMSTYLE), bindable, displaybind]
    HRESULT borderBottomStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOMSTYLE), bindable, displaybind]
    HRESULT borderBottomStyle([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_BORDERLEFTSTYLE), bindable, displaybind]
    HRESULT borderLeftStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERLEFTSTYLE), bindable, displaybind]
    HRESULT borderLeftStyle([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_WIDTH), bindable, displaybind]
    HRESULT width([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_WIDTH), bindable, displaybind]
    HRESULT width([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_HEIGHT), bindable, displaybind]
    HRESULT height([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_HEIGHT), bindable, displaybind]
    HRESULT height([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_STYLEFLOAT), bindable, displaybind]
    HRESULT styleFloat([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_STYLEFLOAT), bindable, displaybind]
    HRESULT styleFloat([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_CLEAR), bindable, displaybind]
    HRESULT clear([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_CLEAR), bindable, displaybind]
    HRESULT clear([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_DISPLAY), bindable, displaybind]
    HRESULT display([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_DISPLAY), bindable, displaybind]
    HRESULT display([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_VISIBILITY), bindable, displaybind]
    HRESULT visibility([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_VISIBILITY), bindable, displaybind]
    HRESULT visibility([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_LISTSTYLETYPE), bindable, displaybind]
    HRESULT listStyleType([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_LISTSTYLETYPE), bindable, displaybind]
    HRESULT listStyleType([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_LISTSTYLEPOSITION), bindable, displaybind]
    HRESULT listStylePosition([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_LISTSTYLEPOSITION), bindable, displaybind]
    HRESULT listStylePosition([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_LISTSTYLEIMAGE), bindable, displaybind]
    HRESULT listStyleImage([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_LISTSTYLEIMAGE), bindable, displaybind]
    HRESULT listStyleImage([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_LISTSTYLE), bindable, displaybind]
    HRESULT listStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_LISTSTYLE), bindable, displaybind]
    HRESULT listStyle([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_WHITESPACE), bindable, displaybind]
    HRESULT whiteSpace([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_WHITESPACE), bindable, displaybind]
    HRESULT whiteSpace([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_TOP), bindable, displaybind]
    HRESULT top([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_TOP), bindable, displaybind]
    HRESULT top([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_LEFT), bindable, displaybind]
    HRESULT left([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_LEFT), bindable, displaybind]
    HRESULT left([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLSTYLE_POSITION), bindable, displaybind]
    HRESULT position([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_ZINDEX), bindable, displaybind]
    HRESULT zIndex([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_ZINDEX), bindable, displaybind]
    HRESULT zIndex([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE_OVERFLOW), bindable, displaybind]
    HRESULT overflow([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_OVERFLOW), bindable, displaybind]
    HRESULT overflow([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_PAGEBREAKBEFORE), bindable, displaybind]
    HRESULT pageBreakBefore([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_PAGEBREAKBEFORE), bindable, displaybind]
    HRESULT pageBreakBefore([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_PAGEBREAKAFTER), bindable, displaybind]
    HRESULT pageBreakAfter([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_PAGEBREAKAFTER), bindable, displaybind]
    HRESULT pageBreakAfter([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_CSSTEXT), bindable, displaybind]
    HRESULT cssText([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_CSSTEXT), bindable, displaybind]
    HRESULT cssText([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_PIXELTOP), bindable, displaybind, hidden]
    HRESULT pixelTop([in] LONG v);

    [propget, id(DISPID_IHTMLSTYLE_PIXELTOP), bindable, displaybind, hidden]
    HRESULT pixelTop([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLSTYLE_PIXELLEFT), bindable, displaybind, hidden]
    HRESULT pixelLeft([in] LONG v);

    [propget, id(DISPID_IHTMLSTYLE_PIXELLEFT), bindable, displaybind, hidden]
    HRESULT pixelLeft([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLSTYLE_PIXELWIDTH), bindable, displaybind, hidden]
    HRESULT pixelWidth([in] LONG v);

    [propget, id(DISPID_IHTMLSTYLE_PIXELWIDTH), bindable, displaybind, hidden]
    HRESULT pixelWidth([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLSTYLE_PIXELHEIGHT), bindable, displaybind, hidden]
    HRESULT pixelHeight([in] LONG v);

    [propget, id(DISPID_IHTMLSTYLE_PIXELHEIGHT), bindable, displaybind, hidden]
    HRESULT pixelHeight([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLSTYLE_POSTOP), bindable, displaybind]
    HRESULT posTop([in] float v);

    [propget, id(DISPID_IHTMLSTYLE_POSTOP), bindable, displaybind]
    HRESULT posTop([retval, out] float *p);

    [propput, id(DISPID_IHTMLSTYLE_POSLEFT), bindable, displaybind]
    HRESULT posLeft([in] float v);

    [propget, id(DISPID_IHTMLSTYLE_POSLEFT), bindable, displaybind]
    HRESULT posLeft([retval, out] float *p);

    [propput, id(DISPID_IHTMLSTYLE_POSWIDTH), bindable, displaybind]
    HRESULT posWidth([in] float v);

    [propget, id(DISPID_IHTMLSTYLE_POSWIDTH), bindable, displaybind]
    HRESULT posWidth([retval, out] float *p);

    [propput, id(DISPID_IHTMLSTYLE_POSHEIGHT), bindable, displaybind]
    HRESULT posHeight([in] float v);

    [propget, id(DISPID_IHTMLSTYLE_POSHEIGHT), bindable, displaybind]
    HRESULT posHeight([retval, out] float *p);

    [propput, id(DISPID_IHTMLSTYLE_CURSOR), bindable, displaybind]
    HRESULT cursor([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_CURSOR), bindable, displaybind]
    HRESULT cursor([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_CLIP), bindable, displaybind]
    HRESULT clip([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_CLIP), bindable, displaybind]
    HRESULT clip([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE_FILTER), bindable, displaybind]
    HRESULT filter([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_FILTER), bindable, displaybind]
    HRESULT filter([retval, out] BSTR *p);

    [id(DISPID_IHTMLSTYLE_SETATTRIBUTE)]
    HRESULT setAttribute(
        [in] BSTR strAttributeName,
        [in] VARIANT AttributeValue,
        [defaultvalue(1), in] LONG lFlags);

    [id(DISPID_IHTMLSTYLE_GETATTRIBUTE)]
    HRESULT getAttribute(
        [in] BSTR strAttributeName,
        [defaultvalue(0), in] LONG lFlags,
        [retval, out] VARIANT *AttributeValue);

    [id(DISPID_IHTMLSTYLE_REMOVEATTRIBUTE)]
    HRESULT removeAttribute(
        [in] BSTR strAttributeName,
        [defaultvalue(1), in]
        LONG lFlags,
        [retval, out] VARIANT_BOOL *pfSuccess);

    [id(DISPID_IHTMLSTYLE_TOSTRING)]
    HRESULT toString([retval, out] BSTR *String);
}

/*****************************************************************************
 *    IHTMLStyle2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f4a2-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLStyle2 : IDispatch
{
    [propput, id(DISPID_IHTMLSTYLE2_TABLELAYOUT), displaybind, bindable]
    HRESULT tableLayout([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_TABLELAYOUT), displaybind, bindable]
    HRESULT tableLayout([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE2_BORDERCOLLAPSE), displaybind, bindable]
    HRESULT borderCollapse([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_BORDERCOLLAPSE), displaybind, bindable]
    HRESULT borderCollapse([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE2_DIRECTION), displaybind, bindable]
    HRESULT direction([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_DIRECTION), displaybind, bindable]
    HRESULT direction([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE2_BEHAVIOR), displaybind, bindable]
    HRESULT behavior([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_BEHAVIOR), displaybind, bindable]
    HRESULT behavior([out, retval] BSTR *p);

    [id(DISPID_IHTMLSTYLE2_SETEXPRESSION)]
    HRESULT setExpression(
            [in] BSTR propname,
            [in] BSTR expression,
            [in, defaultvalue("")] BSTR language);

    [id(DISPID_IHTMLSTYLE2_GETEXPRESSION)]
    HRESULT getExpression(
            [in] BSTR propname,
            [out, retval] VARIANT *expression);

    [id(DISPID_IHTMLSTYLE2_REMOVEEXPRESSION)]
    HRESULT removeExpression(
            [in] BSTR propname,
            [out, retval] VARIANT_BOOL *pfSuccess);

    [propput, id(DISPID_IHTMLSTYLE2_POSITION), displaybind, bindable]
    HRESULT position([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_POSITION), displaybind, bindable]
    HRESULT position([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE2_UNICODEBIDI), displaybind, bindable]
    HRESULT unicodeBidi([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_UNICODEBIDI), displaybind, bindable]
    HRESULT unicodeBidi([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE2_BOTTOM), displaybind, bindable]
    HRESULT bottom([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE2_BOTTOM), displaybind, bindable]
    HRESULT bottom([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE2_RIGHT), displaybind, bindable]
    HRESULT right([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE2_RIGHT), displaybind, bindable]
    HRESULT right([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE2_PIXELBOTTOM), displaybind, bindable, hidden]
    HRESULT pixelBottom([in] LONG v);

    [propget, id(DISPID_IHTMLSTYLE2_PIXELBOTTOM), displaybind, bindable, hidden]
    HRESULT pixelBottom([out, retval] LONG *p);

    [propput, id(DISPID_IHTMLSTYLE2_PIXELRIGHT), displaybind, bindable, hidden]
    HRESULT pixelRight([in] LONG v);

    [propget, id(DISPID_IHTMLSTYLE2_PIXELRIGHT), displaybind, bindable, hidden]
    HRESULT pixelRight([out, retval] LONG *p);

    [propput, id(DISPID_IHTMLSTYLE2_POSBOTTOM), displaybind, bindable]
    HRESULT posBottom([in] float v);

    [propget, id(DISPID_IHTMLSTYLE2_POSBOTTOM), displaybind, bindable]
    HRESULT posBottom([out, retval] float *p);

    [propput, id(DISPID_IHTMLSTYLE2_POSRIGHT), displaybind, bindable]
    HRESULT posRight([in] float v);

    [propget, id(DISPID_IHTMLSTYLE2_POSRIGHT), displaybind, bindable]
    HRESULT posRight([out, retval] float *p);

    [propput, id(DISPID_IHTMLSTYLE2_IMEMODE), displaybind, bindable]
    HRESULT imeMode([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_IMEMODE), displaybind, bindable]
    HRESULT imeMode([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE2_RUBYALIGN), displaybind, bindable]
    HRESULT rubyAlign([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_RUBYALIGN), displaybind, bindable]
    HRESULT rubyAlign([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE2_RUBYPOSITION), displaybind, bindable]
    HRESULT rubyPosition([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_RUBYPOSITION), displaybind, bindable]
    HRESULT rubyPosition([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE2_RUBYOVERHANG), displaybind, bindable]
    HRESULT rubyOverhang([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_RUBYOVERHANG), displaybind, bindable]
    HRESULT rubyOverhang([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDCHAR), displaybind, bindable]
    HRESULT layoutGridChar([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDCHAR), displaybind, bindable]
    HRESULT layoutGridChar([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDLINE), displaybind, bindable]
    HRESULT layoutGridLine([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDLINE), displaybind, bindable]
    HRESULT layoutGridLine([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDMODE), displaybind, bindable]
    HRESULT layoutGridMode([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDMODE), displaybind, bindable]
    HRESULT layoutGridMode([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDTYPE), displaybind, bindable]
    HRESULT layoutGridType([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDTYPE), displaybind, bindable]
    HRESULT layoutGridType([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable]
    HRESULT layoutGrid([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable]
    HRESULT layoutGrid([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE2_WORDBREAK), displaybind, bindable]
    HRESULT wordBreak([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_WORDBREAK), displaybind, bindable]
    HRESULT wordBreak([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE2_LINEBREAK), displaybind, bindable]
    HRESULT lineBreak([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_LINEBREAK), displaybind, bindable]
    HRESULT lineBreak([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFY), displaybind, bindable]
    HRESULT textJustify([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFY), displaybind, bindable]
    HRESULT textJustify([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable]
    HRESULT textJustifyTrim([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable]
    HRESULT textJustifyTrim([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE2_TEXTKASHIDA), displaybind, bindable]
    HRESULT textKashida([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE2_TEXTKASHIDA), displaybind, bindable]
    HRESULT textKashida([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE2_TEXTAUTOSPACE), displaybind, bindable]
    HRESULT textAutospace([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_TEXTAUTOSPACE), displaybind, bindable]
    HRESULT textAutospace([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE2_OVERFLOWX), displaybind, bindable]
    HRESULT overflowX([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_OVERFLOWX), displaybind, bindable]
    HRESULT overflowX([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE2_OVERFLOWY), displaybind, bindable]
    HRESULT overflowY([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_OVERFLOWY), displaybind, bindable]
    HRESULT overflowY([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE2_ACCELERATOR), displaybind, bindable]
    HRESULT accelerator([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_ACCELERATOR), displaybind, bindable]
    HRESULT accelerator([out, retval] BSTR *p);
}

/*****************************************************************************
 *    IHTMLRuleStyle interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050F3CF-98B5-11CF-BB82-00AA00BDCE0B)
]
interface IHTMLRuleStyle : IDispatch
{
    [propput, id(DISPID_IHTMLRULESTYLE_FONTFAMILY), bindable, displaybind]
    HRESULT fontFamily([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_FONTFAMILY), bindable, displaybind]
    HRESULT fontFamily([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_FONTSTYLE), bindable, displaybind]
    HRESULT fontStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_FONTSTYLE), bindable, displaybind]
    HRESULT fontStyle([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_FONTVARIANT), bindable, displaybind]
    HRESULT fontVariant([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_FONTVARIANT), bindable, displaybind]
    HRESULT fontVariant([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_FONTWEIGHT), bindable, displaybind]
    HRESULT fontWeight([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_FONTWEIGHT), bindable, displaybind]
    HRESULT fontWeight([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_FONTSIZE), bindable, displaybind]
    HRESULT fontSize([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_FONTSIZE), bindable, displaybind]
    HRESULT fontSize([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_FONT), bindable, displaybind]
    HRESULT font([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_FONT), bindable, displaybind]
    HRESULT font([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_COLOR), bindable, displaybind]
    HRESULT color([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_COLOR), bindable, displaybind]
    HRESULT color([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUND), bindable, displaybind]
    HRESULT background([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUND), bindable, displaybind]
    HRESULT background([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDCOLOR), bindable, displaybind]
    HRESULT backgroundColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDCOLOR), bindable, displaybind]
    HRESULT backgroundColor([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDIMAGE), bindable, displaybind]
    HRESULT backgroundImage([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDIMAGE), bindable, displaybind]
    HRESULT backgroundImage([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDREPEAT), bindable, displaybind]
    HRESULT backgroundRepeat([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDREPEAT), bindable, displaybind]
    HRESULT backgroundRepeat([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDATTACHMENT), bindable, displaybind]
    HRESULT backgroundAttachment([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDATTACHMENT), bindable, displaybind]
    HRESULT backgroundAttachment([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITION), bindable, displaybind]
    HRESULT backgroundPosition([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITION), bindable, displaybind]
    HRESULT backgroundPosition([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONX), bindable, displaybind]
    HRESULT backgroundPositionX([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONX), bindable, displaybind]
    HRESULT backgroundPositionX([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONY), bindable, displaybind]
    HRESULT backgroundPositionY([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONY), bindable, displaybind]
    HRESULT backgroundPositionY([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_WORDSPACING), bindable, displaybind]
    HRESULT wordSpacing([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_WORDSPACING), bindable, displaybind]
    HRESULT wordSpacing([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_LETTERSPACING), bindable, displaybind]
    HRESULT letterSpacing([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_LETTERSPACING), bindable, displaybind]
    HRESULT letterSpacing([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATION), bindable, displaybind]
    HRESULT textDecoration([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATION), bindable, displaybind]
    HRESULT textDecoration([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONNONE), bindable, displaybind]
    HRESULT textDecorationNone([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONNONE), bindable, displaybind]
    HRESULT textDecorationNone([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONUNDERLINE), bindable, displaybind]
    HRESULT textDecorationUnderline([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONUNDERLINE), bindable, displaybind]
    HRESULT textDecorationUnderline([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONOVERLINE), bindable, displaybind]
    HRESULT textDecorationOverline([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONOVERLINE), bindable, displaybind]
    HRESULT textDecorationOverline([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONLINETHROUGH), bindable, displaybind]
    HRESULT textDecorationLineThrough([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONLINETHROUGH), bindable, displaybind]
    HRESULT textDecorationLineThrough([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONBLINK), bindable, displaybind]
    HRESULT textDecorationBlink([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONBLINK), bindable, displaybind]
    HRESULT textDecorationBlink([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLRULESTYLE_VERTICALALIGN), bindable, displaybind]
    HRESULT verticalAlign([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_VERTICALALIGN), bindable, displaybind]
    HRESULT verticalAlign([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_TEXTTRANSFORM), bindable, displaybind]
    HRESULT textTransform([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_TEXTTRANSFORM), bindable, displaybind]
    HRESULT textTransform([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_TEXTALIGN), bindable, displaybind]
    HRESULT textAlign([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_TEXTALIGN), bindable, displaybind]
    HRESULT textAlign([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_TEXTINDENT), bindable, displaybind]
    HRESULT textIndent([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_TEXTINDENT), bindable, displaybind]
    HRESULT textIndent([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_LINEHEIGHT), bindable, displaybind]
    HRESULT lineHeight([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_LINEHEIGHT), bindable, displaybind]
    HRESULT lineHeight([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_MARGINTOP), bindable, displaybind]
    HRESULT marginTop([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_MARGINTOP), bindable, displaybind]
    HRESULT marginTop([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_MARGINRIGHT), bindable, displaybind]
    HRESULT marginRight([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_MARGINRIGHT), bindable, displaybind]
    HRESULT marginRight([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_MARGINBOTTOM), bindable, displaybind]
    HRESULT marginBottom([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_MARGINBOTTOM), bindable, displaybind]
    HRESULT marginBottom([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_MARGINLEFT), bindable, displaybind]
    HRESULT marginLeft([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_MARGINLEFT), bindable, displaybind]
    HRESULT marginLeft([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_MARGIN), bindable, displaybind]
    HRESULT margin([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_MARGIN), bindable, displaybind]
    HRESULT margin([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_PADDINGTOP), bindable, displaybind]
    HRESULT paddingTop([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_PADDINGTOP), bindable, displaybind]
    HRESULT paddingTop([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_PADDINGRIGHT), bindable, displaybind]
    HRESULT paddingRight([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_PADDINGRIGHT), bindable, displaybind]
    HRESULT paddingRight([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_PADDINGBOTTOM), bindable, displaybind]
    HRESULT paddingBottom([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_PADDINGBOTTOM), bindable, displaybind]
    HRESULT paddingBottom([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_PADDINGLEFT), bindable, displaybind]
    HRESULT paddingLeft([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_PADDINGLEFT), bindable, displaybind]
    HRESULT paddingLeft([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_PADDING), bindable, displaybind]
    HRESULT padding([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_PADDING), bindable, displaybind]
    HRESULT padding([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BORDER), bindable, displaybind]
    HRESULT border([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_BORDER), bindable, displaybind]
    HRESULT border([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BORDERTOP), bindable, displaybind]
    HRESULT borderTop([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_BORDERTOP), bindable, displaybind]
    HRESULT borderTop([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BORDERRIGHT), bindable, displaybind]
    HRESULT borderRight([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_BORDERRIGHT), bindable, displaybind]
    HRESULT borderRight([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOM), bindable, displaybind]
    HRESULT borderBottom([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOM), bindable, displaybind]
    HRESULT borderBottom([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BORDERLEFT), bindable, displaybind]
    HRESULT borderLeft([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_BORDERLEFT), bindable, displaybind]
    HRESULT borderLeft([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BORDERCOLOR), bindable, displaybind]
    HRESULT borderColor([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_BORDERCOLOR), bindable, displaybind]
    HRESULT borderColor([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BORDERTOPCOLOR), bindable, displaybind]
    HRESULT borderTopColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_BORDERTOPCOLOR), bindable, displaybind]
    HRESULT borderTopColor([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTCOLOR), bindable, displaybind]
    HRESULT borderRightColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTCOLOR), bindable, displaybind]
    HRESULT borderRightColor([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMCOLOR), bindable, displaybind]
    HRESULT borderBottomColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMCOLOR), bindable, displaybind]
    HRESULT borderBottomColor([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BORDERLEFTCOLOR), bindable, displaybind]
    HRESULT borderLeftColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_BORDERLEFTCOLOR), bindable, displaybind]
    HRESULT borderLeftColor([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BORDERWIDTH), bindable, displaybind]
    HRESULT borderWidth([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_BORDERWIDTH), bindable, displaybind]
    HRESULT borderWidth([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BORDERTOPWIDTH), bindable, displaybind]
    HRESULT borderTopWidth([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_BORDERTOPWIDTH), bindable, displaybind]
    HRESULT borderTopWidth([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTWIDTH), bindable, displaybind]
    HRESULT borderRightWidth([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTWIDTH), bindable, displaybind]
    HRESULT borderRightWidth([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMWIDTH), bindable, displaybind]
    HRESULT borderBottomWidth([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMWIDTH), bindable, displaybind]
    HRESULT borderBottomWidth([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BORDERLEFTWIDTH), bindable, displaybind]
    HRESULT borderLeftWidth([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_BORDERLEFTWIDTH), bindable, displaybind]
    HRESULT borderLeftWidth([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BORDERSTYLE), bindable, displaybind]
    HRESULT borderStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_BORDERSTYLE), bindable, displaybind]
    HRESULT borderStyle([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BORDERTOPSTYLE), bindable, displaybind]
    HRESULT borderTopStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_BORDERTOPSTYLE), bindable, displaybind]
    HRESULT borderTopStyle([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTSTYLE), bindable, displaybind]
    HRESULT borderRightStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTSTYLE), bindable, displaybind]
    HRESULT borderRightStyle([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMSTYLE), bindable, displaybind]
    HRESULT borderBottomStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMSTYLE), bindable, displaybind]
    HRESULT borderBottomStyle([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_BORDERLEFTSTYLE), bindable, displaybind]
    HRESULT borderLeftStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_BORDERLEFTSTYLE), bindable, displaybind]
    HRESULT borderLeftStyle([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_WIDTH), bindable, displaybind]
    HRESULT width([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_WIDTH), bindable, displaybind]
    HRESULT width([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_HEIGHT), bindable, displaybind]
    HRESULT height([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_HEIGHT), bindable, displaybind]
    HRESULT height([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_STYLEFLOAT), bindable, displaybind]
    HRESULT styleFloat([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_STYLEFLOAT), bindable, displaybind]
    HRESULT styleFloat([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_CLEAR), bindable, displaybind]
    HRESULT clear([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_CLEAR), bindable, displaybind]
    HRESULT clear([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_DISPLAY), bindable, displaybind]
    HRESULT display([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_DISPLAY), bindable, displaybind]
    HRESULT display([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_VISIBILITY), bindable, displaybind]
    HRESULT visibility([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_VISIBILITY), bindable, displaybind]
    HRESULT visibility([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_LISTSTYLETYPE), bindable, displaybind]
    HRESULT listStyleType([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_LISTSTYLETYPE), bindable, displaybind]
    HRESULT listStyleType([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_LISTSTYLEPOSITION), bindable, displaybind]
    HRESULT listStylePosition([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_LISTSTYLEPOSITION), bindable, displaybind]
    HRESULT listStylePosition([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_LISTSTYLEIMAGE), bindable, displaybind]
    HRESULT listStyleImage([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_LISTSTYLEIMAGE), bindable, displaybind]
    HRESULT listStyleImage([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_LISTSTYLE), bindable, displaybind]
    HRESULT listStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_LISTSTYLE), bindable, displaybind]
    HRESULT listStyle([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_WHITESPACE), bindable, displaybind]
    HRESULT whiteSpace([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_WHITESPACE), bindable, displaybind]
    HRESULT whiteSpace([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_TOP), bindable, displaybind]
    HRESULT top([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_TOP), bindable, displaybind]
    HRESULT top([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_LEFT), bindable, displaybind]
    HRESULT left([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_LEFT), bindable, displaybind]
    HRESULT left([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLRULESTYLE_POSITION), bindable, displaybind]
    HRESULT position([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_ZINDEX), bindable, displaybind]
    HRESULT zIndex([in] VARIANT v);

    [propget, id(DISPID_IHTMLRULESTYLE_ZINDEX), bindable, displaybind]
    HRESULT zIndex([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRULESTYLE_OVERFLOW), bindable, displaybind]
    HRESULT overflow([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_OVERFLOW), bindable, displaybind]
    HRESULT overflow([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_PAGEBREAKBEFORE), bindable, displaybind]
    HRESULT pageBreakBefore([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_PAGEBREAKBEFORE), bindable, displaybind]
    HRESULT pageBreakBefore([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_PAGEBREAKAFTER), bindable, displaybind]
    HRESULT pageBreakAfter([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_PAGEBREAKAFTER), bindable, displaybind]
    HRESULT pageBreakAfter([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_CSSTEXT), bindable, displaybind]
    HRESULT cssText([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_CSSTEXT), bindable, displaybind]
    HRESULT cssText([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_CURSOR), bindable, displaybind]
    HRESULT cursor([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_CURSOR), bindable, displaybind]
    HRESULT cursor([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_CLIP), bindable, displaybind]
    HRESULT clip([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_CLIP), bindable, displaybind]
    HRESULT clip([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRULESTYLE_FILTER), bindable, displaybind]
    HRESULT filter([in] BSTR v);

    [propget, id(DISPID_IHTMLRULESTYLE_FILTER), bindable, displaybind]
    HRESULT filter([retval, out] BSTR *p);

    [id(DISPID_IHTMLRULESTYLE_SETATTRIBUTE)]
    HRESULT setAttribute(
        [in] BSTR strAttributeName,
        [in] VARIANT AttributeValue,
        [defaultvalue(1), in] LONG lFlags);

    [id(DISPID_IHTMLRULESTYLE_GETATTRIBUTE)]
    HRESULT getAttribute(
        [in] BSTR strAttributeName,
        [defaultvalue(0), in] LONG lFlags,
        [retval, out] VARIANT *AttributeValue);

    [id(DISPID_IHTMLRULESTYLE_REMOVEATTRIBUTE)]
    HRESULT removeAttribute(
        [in] BSTR strAttributeName,
        [defaultvalue(1), in] LONG lFlags,
        [retval, out] VARIANT_BOOL *pfSuccess);
}

/*****************************************************************************
 *    IHTMLCSSRule interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305106e9-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLCSSRule : IDispatch
{
    [propget, id(DISPID_IHTMLCSSRULE_TYPE)]
    HRESULT type([out, retval] USHORT *p);

    [propput, id(DISPID_IHTMLCSSRULE_CSSTEXT)]
    HRESULT cssText([in] BSTR v);

    [propget, id(DISPID_IHTMLCSSRULE_CSSTEXT)]
    HRESULT cssText([out, retval] BSTR *p);

    [propget, id(DISPID_IHTMLCSSRULE_PARENTRULE)]
    HRESULT parentRule([out, retval] IHTMLCSSRule **p);

    [propget, id(DISPID_IHTMLCSSRULE_PARENTSTYLESHEET)]
    HRESULT parentStyleSheet([out, retval] IHTMLStyleSheet **p);
}

/*****************************************************************************
 *    DispHTMLStyle dispinterface
 */
[
    hidden,
    uuid(3050f55a-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLStyle
{
properties:
methods:
    [propput, id(DISPID_IHTMLSTYLE_FONTFAMILY), displaybind, bindable]
    void fontFamily(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_FONTFAMILY), displaybind, bindable]
    BSTR fontFamily();

    [propput, id(DISPID_IHTMLSTYLE_FONTSTYLE), displaybind, bindable]
    void fontStyle(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_FONTSTYLE), displaybind, bindable]
    BSTR fontStyle();

    [propput, id(DISPID_IHTMLSTYLE_FONTVARIANT), displaybind, bindable]
    void fontVariant(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_FONTVARIANT), displaybind, bindable]
    BSTR fontVariant();

    [propput, id(DISPID_IHTMLSTYLE_FONTWEIGHT), displaybind, bindable]
    void fontWeight(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_FONTWEIGHT), displaybind, bindable]
    BSTR fontWeight();

    [propput, id(DISPID_IHTMLSTYLE_FONTSIZE), displaybind, bindable]
    void fontSize(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_FONTSIZE), displaybind, bindable]
    VARIANT fontSize();

    [propput, id(DISPID_IHTMLSTYLE_FONT), displaybind, bindable, nonbrowsable]
    void font(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_FONT), displaybind, bindable, nonbrowsable]
    BSTR font();

    [propput, id(DISPID_IHTMLSTYLE_COLOR), displaybind, bindable]
    void color(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_COLOR), displaybind, bindable]
    VARIANT color();

    [propput, id(DISPID_IHTMLSTYLE_BACKGROUND), displaybind, bindable, nonbrowsable]
    void background(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BACKGROUND), displaybind, bindable, nonbrowsable]
    BSTR background();

    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDCOLOR), displaybind, bindable]
    void backgroundColor(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDCOLOR), displaybind, bindable]
    VARIANT backgroundColor();

    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDIMAGE), displaybind, bindable]
    void backgroundImage(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDIMAGE), displaybind, bindable]
    BSTR backgroundImage();

    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDREPEAT), displaybind, bindable]
    void backgroundRepeat(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDREPEAT), displaybind, bindable]
    BSTR backgroundRepeat();

    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDATTACHMENT), displaybind, bindable]
    void backgroundAttachment(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDATTACHMENT), displaybind, bindable]
    BSTR backgroundAttachment();

    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITION), displaybind, bindable, nonbrowsable]
    void backgroundPosition(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITION), displaybind, bindable, nonbrowsable]
    BSTR backgroundPosition();

    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONX), displaybind, bindable]
    void backgroundPositionX(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONX), displaybind, bindable]
    VARIANT backgroundPositionX();

    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONY), displaybind, bindable]
    void backgroundPositionY(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONY), displaybind, bindable]
    VARIANT backgroundPositionY();

    [propput, id(DISPID_IHTMLSTYLE_WORDSPACING), displaybind, bindable]
    void wordSpacing(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_WORDSPACING), displaybind, bindable]
    VARIANT wordSpacing();

    [propput, id(DISPID_IHTMLSTYLE_LETTERSPACING), displaybind, bindable]
    void letterSpacing(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_LETTERSPACING), displaybind, bindable]
    VARIANT letterSpacing();

    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATION), displaybind, bindable]
    void textDecoration(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATION), displaybind, bindable]
    BSTR textDecoration();

    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONNONE), displaybind, bindable]
    void textDecorationNone(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONNONE), displaybind, bindable]
    VARIANT_BOOL textDecorationNone();

    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONUNDERLINE), displaybind, bindable]
    void textDecorationUnderline(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONUNDERLINE), displaybind, bindable]
    VARIANT_BOOL textDecorationUnderline();

    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONOVERLINE), displaybind, bindable]
    void textDecorationOverline(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONOVERLINE), displaybind, bindable]
    VARIANT_BOOL textDecorationOverline();

    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONLINETHROUGH), displaybind, bindable]
    void textDecorationLineThrough(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONLINETHROUGH), displaybind, bindable]
    VARIANT_BOOL textDecorationLineThrough();

    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONBLINK), displaybind, bindable]
    void textDecorationBlink(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONBLINK), displaybind, bindable]
    VARIANT_BOOL textDecorationBlink();

    [propput, id(DISPID_IHTMLSTYLE_VERTICALALIGN), displaybind, bindable]
    void verticalAlign(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_VERTICALALIGN), displaybind, bindable]
    VARIANT verticalAlign();

    [propput, id(DISPID_IHTMLSTYLE_TEXTTRANSFORM), displaybind, bindable]
    void textTransform(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_TEXTTRANSFORM), displaybind, bindable]
    BSTR textTransform();

    [propput, id(DISPID_IHTMLSTYLE_TEXTALIGN), displaybind, bindable]
    void textAlign(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_TEXTALIGN), displaybind, bindable]
    BSTR textAlign();

    [propput, id(DISPID_IHTMLSTYLE_TEXTINDENT), displaybind, bindable]
    void textIndent(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_TEXTINDENT), displaybind, bindable]
    VARIANT textIndent();

    [propput, id(DISPID_IHTMLSTYLE_LINEHEIGHT), displaybind, bindable]
    void lineHeight(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_LINEHEIGHT), displaybind, bindable]
    VARIANT lineHeight();

    [propput, id(DISPID_IHTMLSTYLE_MARGINTOP), displaybind, bindable]
    void marginTop(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_MARGINTOP), displaybind, bindable]
    VARIANT marginTop();

    [propput, id(DISPID_IHTMLSTYLE_MARGINRIGHT), displaybind, bindable]
    void marginRight(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_MARGINRIGHT), displaybind, bindable]
    VARIANT marginRight();

    [propput, id(DISPID_IHTMLSTYLE_MARGINBOTTOM), displaybind, bindable]
    void marginBottom(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_MARGINBOTTOM), displaybind, bindable]
    VARIANT marginBottom();

    [propput, id(DISPID_IHTMLSTYLE_MARGINLEFT), displaybind, bindable]
    void marginLeft(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_MARGINLEFT), displaybind, bindable]
    VARIANT marginLeft();

    [propput, id(DISPID_IHTMLSTYLE_MARGIN), displaybind, bindable, nonbrowsable]
    void margin(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_MARGIN), displaybind, bindable, nonbrowsable]
    BSTR margin();

    [propput, id(DISPID_IHTMLSTYLE_PADDINGTOP), displaybind, bindable]
    void paddingTop(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_PADDINGTOP), displaybind, bindable]
    VARIANT paddingTop();

    [propput, id(DISPID_IHTMLSTYLE_PADDINGRIGHT), displaybind, bindable]
    void paddingRight(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_PADDINGRIGHT), displaybind, bindable]
    VARIANT paddingRight();

    [propput, id(DISPID_IHTMLSTYLE_PADDINGBOTTOM), displaybind, bindable]
    void paddingBottom(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_PADDINGBOTTOM), displaybind, bindable]
    VARIANT paddingBottom();

    [propput, id(DISPID_IHTMLSTYLE_PADDINGLEFT), displaybind, bindable]
    void paddingLeft(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_PADDINGLEFT), displaybind, bindable]
    VARIANT paddingLeft();

    [propput, id(DISPID_IHTMLSTYLE_PADDING), displaybind, bindable, nonbrowsable]
    void padding(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_PADDING), displaybind, bindable, nonbrowsable]
    BSTR padding();

    [propput, id(DISPID_IHTMLSTYLE_BORDER), displaybind, bindable, nonbrowsable]
    void border(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDER), displaybind, bindable, nonbrowsable]
    BSTR border();

    [propput, id(DISPID_IHTMLSTYLE_BORDERTOP), displaybind, bindable]
    void borderTop(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERTOP), displaybind, bindable]
    BSTR borderTop();

    [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHT), displaybind, bindable]
    void borderRight(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHT), displaybind, bindable]
    BSTR borderRight();

    [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOM), displaybind, bindable]
    void borderBottom(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOM), displaybind, bindable]
    BSTR borderBottom();

    [propput, id(DISPID_IHTMLSTYLE_BORDERLEFT), displaybind, bindable]
    void borderLeft(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERLEFT), displaybind, bindable]
    BSTR borderLeft();

    [propput, id(DISPID_IHTMLSTYLE_BORDERCOLOR), displaybind, bindable]
    void borderColor(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERCOLOR), displaybind, bindable]
    BSTR borderColor();

    [propput, id(DISPID_IHTMLSTYLE_BORDERTOPCOLOR), displaybind, bindable]
    void borderTopColor(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERTOPCOLOR), displaybind, bindable]
    VARIANT borderTopColor();

    [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHTCOLOR), displaybind, bindable]
    void borderRightColor(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHTCOLOR), displaybind, bindable]
    VARIANT borderRightColor();

    [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOMCOLOR), displaybind, bindable]
    void borderBottomColor(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOMCOLOR), displaybind, bindable]
    VARIANT borderBottomColor();

    [propput, id(DISPID_IHTMLSTYLE_BORDERLEFTCOLOR), displaybind, bindable]
    void borderLeftColor(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERLEFTCOLOR), displaybind, bindable]
    VARIANT borderLeftColor();

    [propput, id(DISPID_IHTMLSTYLE_BORDERWIDTH), displaybind, bindable]
    void borderWidth(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERWIDTH), displaybind, bindable]
    BSTR borderWidth();

    [propput, id(DISPID_IHTMLSTYLE_BORDERTOPWIDTH), displaybind, bindable]
    void borderTopWidth(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERTOPWIDTH), displaybind, bindable]
    VARIANT borderTopWidth();

    [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHTWIDTH), displaybind, bindable]
    void borderRightWidth(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHTWIDTH), displaybind, bindable]
    VARIANT borderRightWidth();

    [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOMWIDTH), displaybind, bindable]
    void borderBottomWidth(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOMWIDTH), displaybind, bindable]
    VARIANT borderBottomWidth();

    [propput, id(DISPID_IHTMLSTYLE_BORDERLEFTWIDTH), displaybind, bindable]
    void borderLeftWidth(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERLEFTWIDTH), displaybind, bindable]
    VARIANT borderLeftWidth();

    [propput, id(DISPID_IHTMLSTYLE_BORDERSTYLE), displaybind, bindable]
    void borderStyle(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERSTYLE), displaybind, bindable]
    BSTR borderStyle();

    [propput, id(DISPID_IHTMLSTYLE_BORDERTOPSTYLE), displaybind, bindable]
    void borderTopStyle(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERTOPSTYLE), displaybind, bindable]
    BSTR borderTopStyle();

    [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHTSTYLE), displaybind, bindable]
    void borderRightStyle(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHTSTYLE), displaybind, bindable]
    BSTR borderRightStyle();

    [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOMSTYLE), displaybind, bindable]
    void borderBottomStyle(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOMSTYLE), displaybind, bindable]
    BSTR borderBottomStyle();

    [propput, id(DISPID_IHTMLSTYLE_BORDERLEFTSTYLE), displaybind, bindable]
    void borderLeftStyle(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_BORDERLEFTSTYLE), displaybind, bindable]
    BSTR borderLeftStyle();

    [propput, id(DISPID_IHTMLSTYLE_WIDTH), displaybind, bindable]
    void width(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_WIDTH), displaybind, bindable]
    VARIANT width();

    [propput, id(DISPID_IHTMLSTYLE_HEIGHT), displaybind, bindable]
    void height(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_HEIGHT), displaybind, bindable]
    VARIANT height();

    [propput, id(DISPID_IHTMLSTYLE_STYLEFLOAT), displaybind, bindable]
    void styleFloat(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_STYLEFLOAT), displaybind, bindable]
    BSTR styleFloat();

    [propput, id(DISPID_IHTMLSTYLE_CLEAR), displaybind, bindable]
    void clear(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_CLEAR), displaybind, bindable]
    BSTR clear();

    [propput, id(DISPID_IHTMLSTYLE_DISPLAY), displaybind, bindable]
    void display(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_DISPLAY), displaybind, bindable]
    BSTR display();

    [propput, id(DISPID_IHTMLSTYLE_VISIBILITY), displaybind, bindable]
    void visibility(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_VISIBILITY), displaybind, bindable]
    BSTR visibility();

    [propput, id(DISPID_IHTMLSTYLE_LISTSTYLETYPE), displaybind, bindable]
    void listStyleType(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_LISTSTYLETYPE), displaybind, bindable]
    BSTR listStyleType();

    [propput, id(DISPID_IHTMLSTYLE_LISTSTYLEPOSITION), displaybind, bindable]
    void listStylePosition(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_LISTSTYLEPOSITION), displaybind, bindable]
    BSTR listStylePosition();

    [propput, id(DISPID_IHTMLSTYLE_LISTSTYLEIMAGE), displaybind, bindable]
    void listStyleImage(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_LISTSTYLEIMAGE), displaybind, bindable]
    BSTR listStyleImage();

    [propput, id(DISPID_IHTMLSTYLE_LISTSTYLE), displaybind, bindable, nonbrowsable]
    void listStyle(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_LISTSTYLE), displaybind, bindable, nonbrowsable]
    BSTR listStyle();

    [propput, id(DISPID_IHTMLSTYLE_WHITESPACE), displaybind, bindable]
    void whiteSpace(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_WHITESPACE), displaybind, bindable]
    BSTR whiteSpace();

    [propput, id(DISPID_IHTMLSTYLE_TOP), displaybind, bindable]
    void top(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_TOP), displaybind, bindable]
    VARIANT top();

    [propput, id(DISPID_IHTMLSTYLE_LEFT), displaybind, bindable]
    void left(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_LEFT), displaybind, bindable]
    VARIANT left();

    [propput, id(DISPID_IHTMLSTYLE_ZINDEX), displaybind, bindable]
    void zIndex(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE_ZINDEX), displaybind, bindable]
    VARIANT zIndex();

    [propput, id(DISPID_IHTMLSTYLE_OVERFLOW), displaybind, bindable]
    void overflow(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_OVERFLOW), displaybind, bindable]
    BSTR overflow();

    [propput, id(DISPID_IHTMLSTYLE_PAGEBREAKBEFORE), displaybind, bindable]
    void pageBreakBefore(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_PAGEBREAKBEFORE), displaybind, bindable]
    BSTR pageBreakBefore();

    [propput, id(DISPID_IHTMLSTYLE_PAGEBREAKAFTER), displaybind, bindable]
    void pageBreakAfter(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_PAGEBREAKAFTER), displaybind, bindable]
    BSTR pageBreakAfter();

    [propput, id(DISPID_IHTMLSTYLE_CSSTEXT), displaybind, bindable, nonbrowsable]
    void cssText(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_CSSTEXT), displaybind, bindable, nonbrowsable]
    BSTR cssText();

    [propput, id(DISPID_IHTMLSTYLE_PIXELTOP), displaybind, bindable, hidden]
    void pixelTop(LONG v);

    [propget, id(DISPID_IHTMLSTYLE_PIXELTOP), displaybind, bindable, hidden]
    LONG pixelTop();

    [propput, id(DISPID_IHTMLSTYLE_PIXELLEFT), displaybind, bindable, hidden]
    void pixelLeft(LONG v);

    [propget, id(DISPID_IHTMLSTYLE_PIXELLEFT), displaybind, bindable, hidden]
    LONG pixelLeft();

    [propput, id(DISPID_IHTMLSTYLE_PIXELWIDTH), displaybind, bindable, hidden]
    void pixelWidth(LONG v);

    [propget, id(DISPID_IHTMLSTYLE_PIXELWIDTH), displaybind, bindable, hidden]
    LONG pixelWidth();

    [propput, id(DISPID_IHTMLSTYLE_PIXELHEIGHT), displaybind, bindable, hidden]
    void pixelHeight(LONG v);

    [propget, id(DISPID_IHTMLSTYLE_PIXELHEIGHT), displaybind, bindable, hidden]
    LONG pixelHeight();

    [propput, id(DISPID_IHTMLSTYLE_POSTOP), displaybind, bindable]
    void posTop(float v);

    [propget, id(DISPID_IHTMLSTYLE_POSTOP), displaybind, bindable]
    float posTop();

    [propput, id(DISPID_IHTMLSTYLE_POSLEFT), displaybind, bindable]
    void posLeft(float v);

    [propget, id(DISPID_IHTMLSTYLE_POSLEFT), displaybind, bindable]
    float posLeft();

    [propput, id(DISPID_IHTMLSTYLE_POSWIDTH), displaybind, bindable]
    void posWidth(float v);

    [propget, id(DISPID_IHTMLSTYLE_POSWIDTH), displaybind, bindable]
    float posWidth();

    [propput, id(DISPID_IHTMLSTYLE_POSHEIGHT), displaybind, bindable]
    void posHeight(float v);

    [propget, id(DISPID_IHTMLSTYLE_POSHEIGHT), displaybind, bindable]
    float posHeight();

    [propput, id(DISPID_IHTMLSTYLE_CURSOR), displaybind, bindable]
    void cursor(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_CURSOR), displaybind, bindable]
    BSTR cursor();

    [propput, id(DISPID_IHTMLSTYLE_CLIP), displaybind, bindable]
    void clip(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_CLIP), displaybind, bindable]
    BSTR clip();

    [propput, id(DISPID_IHTMLSTYLE_FILTER), displaybind, bindable]
    void filter(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE_FILTER), displaybind, bindable]
    BSTR filter();

    [id(DISPID_IHTMLSTYLE_SETATTRIBUTE)]
    void setAttribute(
            [in] BSTR strAttributeName,
            [in] VARIANT AttributeValue,
            [in, defaultvalue(1)] LONG lFlags);

    [id(DISPID_IHTMLSTYLE_GETATTRIBUTE)]
    VARIANT getAttribute(
            [in] BSTR strAttributeName,
            [in, defaultvalue(0)] LONG lFlags);

    [id(DISPID_IHTMLSTYLE_REMOVEATTRIBUTE)]
    VARIANT_BOOL removeAttribute(
            [in] BSTR strAttributeName,
            [in, defaultvalue(1)] LONG lFlags);

    [id(DISPID_IHTMLSTYLE_TOSTRING)]
    BSTR toString();

    [propput, id(DISPID_IHTMLSTYLE2_TABLELAYOUT), displaybind, bindable]
    void tableLayout(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_TABLELAYOUT), displaybind, bindable]
    BSTR tableLayout();

    [propput, id(DISPID_IHTMLSTYLE2_BORDERCOLLAPSE), displaybind, bindable]
    void borderCollapse(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_BORDERCOLLAPSE), displaybind, bindable]
    BSTR borderCollapse();

    [propput, id(DISPID_IHTMLSTYLE2_DIRECTION), displaybind, bindable]
    void direction(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_DIRECTION), displaybind, bindable]
    BSTR direction();

    [propput, id(DISPID_IHTMLSTYLE2_BEHAVIOR), displaybind, bindable]
    void behavior(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_BEHAVIOR), displaybind, bindable]
    BSTR behavior();

    [id(DISPID_IHTMLSTYLE2_SETEXPRESSION)]
    void setExpression(
            [in] BSTR propname,
            [in] BSTR expression,
            [in, defaultvalue("")] BSTR language);

    [id(DISPID_IHTMLSTYLE2_GETEXPRESSION)]
    VARIANT getExpression([in] BSTR propname);

    [id(DISPID_IHTMLSTYLE2_REMOVEEXPRESSION)]
    VARIANT_BOOL removeExpression([in] BSTR propname);

    [propput, id(DISPID_IHTMLSTYLE2_POSITION), displaybind, bindable]
    void position(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_POSITION), displaybind, bindable]
    BSTR position();

    [propput, id(DISPID_IHTMLSTYLE2_UNICODEBIDI), displaybind, bindable]
    void unicodeBidi(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_UNICODEBIDI), displaybind, bindable]
    BSTR unicodeBidi();

    [propput, id(DISPID_IHTMLSTYLE2_BOTTOM), displaybind, bindable]
    void bottom(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE2_BOTTOM), displaybind, bindable]
    VARIANT bottom();

    [propput, id(DISPID_IHTMLSTYLE2_RIGHT), displaybind, bindable]
    void right(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE2_RIGHT), displaybind, bindable]
    VARIANT right();

    [propput, id(DISPID_IHTMLSTYLE2_PIXELBOTTOM), displaybind, bindable, hidden]
    void pixelBottom(LONG v);

    [propget, id(DISPID_IHTMLSTYLE2_PIXELBOTTOM), displaybind, bindable, hidden]
    LONG pixelBottom();

    [propput, id(DISPID_IHTMLSTYLE2_PIXELRIGHT), displaybind, bindable, hidden]
    void pixelRight(LONG v);

    [propget, id(DISPID_IHTMLSTYLE2_PIXELRIGHT), displaybind, bindable, hidden]
    LONG pixelRight();

    [propput, id(DISPID_IHTMLSTYLE2_POSBOTTOM), displaybind, bindable]
    void posBottom(float v);

    [propget, id(DISPID_IHTMLSTYLE2_POSBOTTOM), displaybind, bindable]
    float posBottom();

    [propput, id(DISPID_IHTMLSTYLE2_POSRIGHT), displaybind, bindable]
    void posRight(float v);

    [propget, id(DISPID_IHTMLSTYLE2_POSRIGHT), displaybind, bindable]
    float posRight();

    [propput, id(DISPID_IHTMLSTYLE2_IMEMODE), displaybind, bindable]
    void imeMode(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_IMEMODE), displaybind, bindable]
    BSTR imeMode();

    [propput, id(DISPID_IHTMLSTYLE2_RUBYALIGN), displaybind, bindable]
    void rubyAlign(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_RUBYALIGN), displaybind, bindable]
    BSTR rubyAlign();

    [propput, id(DISPID_IHTMLSTYLE2_RUBYPOSITION), displaybind, bindable]
    void rubyPosition(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_RUBYPOSITION), displaybind, bindable]
    BSTR rubyPosition();

    [propput, id(DISPID_IHTMLSTYLE2_RUBYOVERHANG), displaybind, bindable]
    void rubyOverhang(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_RUBYOVERHANG), displaybind, bindable]
    BSTR rubyOverhang();

    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDCHAR), displaybind, bindable]
    void layoutGridChar(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDCHAR), displaybind, bindable]
    VARIANT layoutGridChar();

    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDLINE), displaybind, bindable]
    void layoutGridLine(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDLINE), displaybind, bindable]
    VARIANT layoutGridLine();

    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDMODE), displaybind, bindable]
    void layoutGridMode(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDMODE), displaybind, bindable]
    BSTR layoutGridMode();

    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDTYPE), displaybind, bindable]
    void layoutGridType(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDTYPE), displaybind, bindable]
    BSTR layoutGridType();

    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable]
    void layoutGrid(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable]
    BSTR layoutGrid();

    [propput, id(DISPID_IHTMLSTYLE2_WORDBREAK), displaybind, bindable]
    void wordBreak(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_WORDBREAK), displaybind, bindable]
    BSTR wordBreak();

    [propput, id(DISPID_IHTMLSTYLE2_LINEBREAK), displaybind, bindable]
    void lineBreak(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_LINEBREAK), displaybind, bindable]
    BSTR lineBreak();

    [propput, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFY), displaybind, bindable]
    void textJustify(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFY), displaybind, bindable]
    BSTR textJustify();

    [propput, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable]
    void textJustifyTrim(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable]
    BSTR textJustifyTrim();

    [propput, id(DISPID_IHTMLSTYLE2_TEXTKASHIDA), displaybind, bindable]
    void textKashida(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE2_TEXTKASHIDA), displaybind, bindable]
    VARIANT textKashida();

    [propput, id(DISPID_IHTMLSTYLE2_TEXTAUTOSPACE), displaybind, bindable]
    void textAutospace(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_TEXTAUTOSPACE), displaybind, bindable]
    BSTR textAutospace();

    [propput, id(DISPID_IHTMLSTYLE2_OVERFLOWX), displaybind, bindable]
    void overflowX(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_OVERFLOWX), displaybind, bindable]
    BSTR overflowX();

    [propput, id(DISPID_IHTMLSTYLE2_OVERFLOWY), displaybind, bindable]
    void overflowY(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_OVERFLOWY), displaybind, bindable]
    BSTR overflowY();

    [propput, id(DISPID_IHTMLSTYLE2_ACCELERATOR), displaybind, bindable]
    void accelerator(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE2_ACCELERATOR), displaybind, bindable]
    BSTR accelerator();

    [propput, id(DISPID_IHTMLSTYLE3_LAYOUTFLOW), displaybind, bindable]
    void layoutFlow(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE3_LAYOUTFLOW), displaybind, bindable]
    BSTR layoutFlow();

    [propput, id(DISPID_IHTMLSTYLE3_ZOOM), displaybind, bindable]
    void zoom(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE3_ZOOM), displaybind, bindable]
    VARIANT zoom();

    [propput, id(DISPID_IHTMLSTYLE3_WORDWRAP), displaybind, bindable]
    void wordWrap(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE3_WORDWRAP), displaybind, bindable]
    BSTR wordWrap();

    [propput, id(DISPID_IHTMLSTYLE3_TEXTUNDERLINEPOSITION), displaybind, bindable]
    void textUnderlinePosition(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE3_TEXTUNDERLINEPOSITION), displaybind, bindable]
    BSTR textUnderlinePosition();

    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARBASECOLOR), displaybind, bindable]
    void scrollbarBaseColor(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARBASECOLOR), displaybind, bindable]
    VARIANT scrollbarBaseColor();

    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARFACECOLOR), displaybind, bindable]
    void scrollbarFaceColor(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARFACECOLOR), displaybind, bindable]
    VARIANT scrollbarFaceColor();

    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable]
    void scrollbar3dLightColor(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable]
    VARIANT scrollbar3dLightColor();

    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARSHADOWCOLOR), displaybind, bindable]
    void scrollbarShadowColor(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARSHADOWCOLOR), displaybind, bindable]
    VARIANT scrollbarShadowColor();

    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable]
    void scrollbarHighlightColor(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable]
    VARIANT scrollbarHighlightColor();

    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable]
    void scrollbarDarkShadowColor(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable]
    VARIANT scrollbarDarkShadowColor();

    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARARROWCOLOR), displaybind, bindable]
    void scrollbarArrowColor(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARARROWCOLOR), displaybind, bindable]
    VARIANT scrollbarArrowColor();

    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARTRACKCOLOR), displaybind, bindable]
    void scrollbarTrackColor(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARTRACKCOLOR), displaybind, bindable]
    VARIANT scrollbarTrackColor();

    [propput, id(DISPID_IHTMLSTYLE3_WRITINGMODE), displaybind, bindable]
    void writingMode(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE3_WRITINGMODE), displaybind, bindable]
    BSTR writingMode();

    [propput, id(DISPID_IHTMLSTYLE3_TEXTALIGNLAST), displaybind, bindable]
    void textAlignLast(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE3_TEXTALIGNLAST), displaybind, bindable]
    BSTR textAlignLast();

    [propput, id(DISPID_IHTMLSTYLE3_TEXTKASHIDASPACE), displaybind, bindable]
    void textKashidaSpace(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE3_TEXTKASHIDASPACE), displaybind, bindable]
    VARIANT textKashidaSpace();

    [propput, id(DISPID_IHTMLSTYLE4_TEXTOVERFLOW), displaybind, bindable]
    void textOverflow(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE4_TEXTOVERFLOW), displaybind, bindable]
    BSTR textOverflow();

    [propput, id(DISPID_IHTMLSTYLE4_MINHEIGHT), displaybind, bindable]
    void minHeight(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE4_MINHEIGHT), displaybind, bindable]
    VARIANT minHeight();

    [propput, id(DISPID_IHTMLSTYLE5_MSINTERPOLATIONMODE), displaybind, bindable]
    void msInterpolationMode(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE5_MSINTERPOLATIONMODE), displaybind, bindable]
    BSTR msInterpolationMode();

    [propput, id(DISPID_IHTMLSTYLE5_MAXHEIGHT), displaybind, bindable]
    void maxHeight(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE5_MAXHEIGHT), displaybind, bindable]
    VARIANT maxHeight();

    [propput, id(DISPID_IHTMLSTYLE5_MINWIDTH), displaybind, bindable]
    void minWidth(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE5_MINWIDTH), displaybind, bindable]
    VARIANT minWidth();

    [propput, id(DISPID_IHTMLSTYLE5_MAXWIDTH), displaybind, bindable]
    void maxWidth(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE5_MAXWIDTH), displaybind, bindable]
    VARIANT maxWidth();

    [propput, id(DISPID_IHTMLSTYLE6_CONTENT), displaybind, bindable]
    void content(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_CONTENT), displaybind, bindable]
    BSTR content();

    [propput, id(DISPID_IHTMLSTYLE6_CAPTIONSIDE), displaybind, bindable]
    void captionSide(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_CAPTIONSIDE), displaybind, bindable]
    BSTR captionSide();

    [propput, id(DISPID_IHTMLSTYLE6_COUNTERINCREMENT), displaybind, bindable]
    void counterIncrement(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_COUNTERINCREMENT), displaybind, bindable]
    BSTR counterIncrement();

    [propput, id(DISPID_IHTMLSTYLE6_COUNTERRESET), displaybind, bindable]
    void counterReset(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_COUNTERRESET), displaybind, bindable]
    BSTR counterReset();

    [propput, id(DISPID_IHTMLSTYLE6_OUTLINE), displaybind, bindable]
    void outline(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_OUTLINE), displaybind, bindable]
    BSTR outline();

    [propput, id(DISPID_IHTMLSTYLE6_OUTLINEWIDTH), displaybind, bindable]
    void outlineWidth(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE6_OUTLINEWIDTH), displaybind, bindable]
    VARIANT outlineWidth();

    [propput, id(DISPID_IHTMLSTYLE6_OUTLINESTYLE), displaybind, bindable]
    void outlineStyle(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_OUTLINESTYLE), displaybind, bindable]
    BSTR outlineStyle();

    [propput, id(DISPID_IHTMLSTYLE6_OUTLINECOLOR), displaybind, bindable]
    void outlineColor(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE6_OUTLINECOLOR), displaybind, bindable]
    VARIANT outlineColor();

    [propput, id(DISPID_IHTMLSTYLE6_BOXSIZING), displaybind, bindable]
    void boxSizing(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_BOXSIZING), displaybind, bindable]
    BSTR boxSizing();

    [propput, id(DISPID_IHTMLSTYLE6_BORDERSPACING), displaybind, bindable]
    void borderSpacing(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_BORDERSPACING), displaybind, bindable]
    BSTR borderSpacing();

    [propput, id(DISPID_IHTMLSTYLE6_ORPHANS), displaybind, bindable]
    void orphans(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE6_ORPHANS), displaybind, bindable]
    VARIANT orphans();

    [propput, id(DISPID_IHTMLSTYLE6_WIDOWS), displaybind, bindable]
    void widows(VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE6_WIDOWS), displaybind, bindable]
    VARIANT widows();

    [propput, id(DISPID_IHTMLSTYLE6_PAGEBREAKINSIDE), displaybind, bindable]
    void pageBreakInside(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_PAGEBREAKINSIDE), displaybind, bindable]
    BSTR pageBreakInside();

    [propput, id(DISPID_IHTMLSTYLE6_EMPTYCELLS), displaybind, bindable]
    void emptyCells(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_EMPTYCELLS), displaybind, bindable]
    BSTR emptyCells();

    [propput, id(DISPID_IHTMLSTYLE6_MSBLOCKPROGRESSION), displaybind, bindable]
    void msBlockProgression(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_MSBLOCKPROGRESSION), displaybind, bindable]
    BSTR msBlockProgression();

    [propput, id(DISPID_IHTMLSTYLE6_QUOTES), displaybind, bindable]
    void quotes(BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_QUOTES), displaybind, bindable]
    BSTR quotes();

    [propget, id(DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden]
    IDispatch *constructor();
}

[
    odl,
    oleautomation,
    dual,
    uuid(3050f656-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLStyle3 : IDispatch
{
    [propput, id(DISPID_IHTMLSTYLE3_LAYOUTFLOW), displaybind, bindable]
    HRESULT layoutFlow([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE3_LAYOUTFLOW), displaybind, bindable]
    HRESULT layoutFlow([retval, out] BSTR * p);

    [propput, id(DISPID_IHTMLSTYLE3_ZOOM), displaybind, bindable]
    HRESULT zoom([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE3_ZOOM), displaybind, bindable]
    HRESULT zoom([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLSTYLE3_WORDWRAP), displaybind, bindable]
    HRESULT wordWrap([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE3_WORDWRAP), displaybind, bindable]
    HRESULT wordWrap([retval, out] BSTR * p);

    [propput, id(DISPID_IHTMLSTYLE3_TEXTUNDERLINEPOSITION), displaybind, bindable]
    HRESULT textUnderlinePosition([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE3_TEXTUNDERLINEPOSITION), displaybind, bindable]
    HRESULT textUnderlinePosition([retval, out] BSTR * p);

    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARBASECOLOR), displaybind, bindable]
    HRESULT scrollbarBaseColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARBASECOLOR), displaybind, bindable]
    HRESULT scrollbarBaseColor([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARFACECOLOR), displaybind, bindable]
    HRESULT scrollbarFaceColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARFACECOLOR), displaybind, bindable]
    HRESULT scrollbarFaceColor([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable]
    HRESULT scrollbar3dLightColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable]
    HRESULT scrollbar3dLightColor([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARSHADOWCOLOR), displaybind, bindable]
    HRESULT scrollbarShadowColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARSHADOWCOLOR), displaybind, bindable]
    HRESULT scrollbarShadowColor([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable]
    HRESULT scrollbarHighlightColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable]
    HRESULT scrollbarHighlightColor([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable]
    HRESULT scrollbarDarkShadowColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable]
    HRESULT scrollbarDarkShadowColor([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARARROWCOLOR), displaybind, bindable]
    HRESULT scrollbarArrowColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARARROWCOLOR), displaybind, bindable]
    HRESULT scrollbarArrowColor([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARTRACKCOLOR), displaybind, bindable]
    HRESULT scrollbarTrackColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARTRACKCOLOR), displaybind, bindable]
    HRESULT scrollbarTrackColor([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLSTYLE3_WRITINGMODE), displaybind, bindable]
    HRESULT writingMode([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE3_WRITINGMODE), displaybind, bindable]
    HRESULT writingMode([retval, out] BSTR * p);

    [propput, id(DISPID_IHTMLSTYLE3_TEXTALIGNLAST), displaybind, bindable]
    HRESULT textAlignLast([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE3_TEXTALIGNLAST), displaybind, bindable]
    HRESULT textAlignLast([retval, out] BSTR * p);

    [propput, id(DISPID_IHTMLSTYLE3_TEXTKASHIDASPACE), displaybind, bindable]
    HRESULT textKashidaSpace([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE3_TEXTKASHIDASPACE), displaybind, bindable]
    HRESULT textKashidaSpace([retval, out] VARIANT * p);
}

/*****************************************************************************
 *    IHTMLSytyle4 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f816-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLStyle4 : IDispatch
{
    [propput, id(DISPID_IHTMLSTYLE4_TEXTOVERFLOW), displaybind, bindable]
    HRESULT textOverflow([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE4_TEXTOVERFLOW), displaybind, bindable]
    HRESULT textOverflow([retval, out] BSTR * p);

    [propput, id(DISPID_IHTMLSTYLE4_MINHEIGHT), displaybind, bindable]
    HRESULT minHeight([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE4_MINHEIGHT), displaybind, bindable]
    HRESULT minHeight([retval, out] VARIANT * p);
}

/*****************************************************************************
 *    IHTMLSytyle5 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f33a-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLStyle5 : IDispatch
{
    [propput, id(DISPID_IHTMLSTYLE5_MSINTERPOLATIONMODE), displaybind, bindable]
    HRESULT msInterpolationMode([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE5_MSINTERPOLATIONMODE), displaybind, bindable]
    HRESULT msInterpolationMode([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE5_MAXHEIGHT), displaybind, bindable]
    HRESULT maxHeight([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE5_MAXHEIGHT), displaybind, bindable]
    HRESULT maxHeight([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE5_MINWIDTH), displaybind, bindable]
    HRESULT minWidth([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE5_MINWIDTH), displaybind, bindable]
    HRESULT minWidth([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE5_MAXWIDTH), displaybind, bindable]
    HRESULT maxWidth([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE5_MAXWIDTH), displaybind, bindable]
    HRESULT maxWidth([out, retval] VARIANT *p);
}

/*****************************************************************************
 *    IHTMLSytyle6 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510480-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLStyle6 : IDispatch
{
    [propput, id(DISPID_IHTMLSTYLE6_CONTENT), displaybind, bindable]
    HRESULT content([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_CONTENT), displaybind, bindable]
    HRESULT content([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE6_CAPTIONSIDE), displaybind, bindable]
    HRESULT captionSide([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_CAPTIONSIDE), displaybind, bindable]
    HRESULT captionSide([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE6_COUNTERINCREMENT), displaybind, bindable]
    HRESULT counterIncrement([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_COUNTERINCREMENT), displaybind, bindable]
    HRESULT counterIncrement([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE6_COUNTERRESET), displaybind, bindable]
    HRESULT counterReset([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_COUNTERRESET), displaybind, bindable]
    HRESULT counterReset([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE6_OUTLINE), displaybind, bindable]
    HRESULT outline([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_OUTLINE), displaybind, bindable]
    HRESULT outline([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE6_OUTLINEWIDTH), displaybind, bindable]
    HRESULT outlineWidth([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE6_OUTLINEWIDTH), displaybind, bindable]
    HRESULT outlineWidth([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE6_OUTLINESTYLE), displaybind, bindable]
    HRESULT outlineStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_OUTLINESTYLE), displaybind, bindable]
    HRESULT outlineStyle([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE6_OUTLINECOLOR), displaybind, bindable]
    HRESULT outlineColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE6_OUTLINECOLOR), displaybind, bindable]
    HRESULT outlineColor([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE6_BOXSIZING), displaybind, bindable]
    HRESULT boxSizing([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_BOXSIZING), displaybind, bindable]
    HRESULT boxSizing([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE6_BORDERSPACING), displaybind, bindable]
    HRESULT borderSpacing([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_BORDERSPACING), displaybind, bindable]
    HRESULT borderSpacing([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE6_ORPHANS), displaybind, bindable]
    HRESULT orphans([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE6_ORPHANS), displaybind, bindable]
    HRESULT orphans([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE6_WIDOWS), displaybind, bindable]
    HRESULT widows([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLE6_WIDOWS), displaybind, bindable]
    HRESULT widows([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLE6_PAGEBREAKINSIDE), displaybind, bindable]
    HRESULT pageBreakInside([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_PAGEBREAKINSIDE), displaybind, bindable]
    HRESULT pageBreakInside([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE6_EMPTYCELLS), displaybind, bindable]
    HRESULT emptyCells([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_EMPTYCELLS), displaybind, bindable]
    HRESULT emptyCells([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE6_MSBLOCKPROGRESSION), displaybind, bindable]
    HRESULT msBlockProgression([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_MSBLOCKPROGRESSION), displaybind, bindable]
    HRESULT msBlockProgression([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLE6_QUOTES), displaybind, bindable]
    HRESULT quotes([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLE6_QUOTES), displaybind, bindable]
    HRESULT quotes([out, retval] BSTR *p);
}

[
    noncreatable,
    uuid(3050f285-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLStyle
{
    [default] dispinterface DispHTMLStyle;
    interface IHTMLStyle;
    interface IHTMLStyle2;
    interface IHTMLStyle3;
    interface IHTMLStyle4;
    interface IHTMLStyle5;
    interface IHTMLStyle6;
}

/*****************************************************************************
 *    DispHTMLW3CComputedStyle dispinterface
 */
[
    hidden,
    uuid(30590070-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLW3CComputedStyle
{
properties:
methods:
    WINE_IHTMLCSSSTYLEDECLARATION_DISPINTERFACE_DECL;
    WINE_IHTMLCSSSTYLEDECLARATION2_DISPINTERFACE_DECL;
    WINE_IHTMLCSSSTYLEDECLARATION3_DISPINTERFACE_DECL;
    WINE_IHTMLCSSSTYLEDECLARATION4_DISPINTERFACE_DECL;
}

/*****************************************************************************
 *    IHTMLRenderStyle interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f6ae-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLRenderStyle : IDispatch
{
    [propput, id(DISPID_IHTMLRENDERSTYLE_TEXTLINETHROUGHSTYLE), displaybind, bindable]
    HRESULT textLineThroughStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLRENDERSTYLE_TEXTLINETHROUGHSTYLE), displaybind, bindable]
    HRESULT textLineThroughStyle([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRENDERSTYLE_TEXTUNDERLINESTYLE), displaybind, bindable]
    HRESULT textUnderlineStyle([in] BSTR v);

    [propget, id(DISPID_IHTMLRENDERSTYLE_TEXTUNDERLINESTYLE), displaybind, bindable]
    HRESULT textUnderlineStyle([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRENDERSTYLE_TEXTEFFECT), displaybind, bindable]
    HRESULT textEffect([in] BSTR v);

    [propget, id(DISPID_IHTMLRENDERSTYLE_TEXTEFFECT), displaybind, bindable]
    HRESULT textEffect([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRENDERSTYLE_TEXTCOLOR), displaybind, bindable]
    HRESULT textColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLRENDERSTYLE_TEXTCOLOR), displaybind, bindable]
    HRESULT textColor([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRENDERSTYLE_TEXTBACKGROUNDCOLOR), displaybind, bindable]
    HRESULT textBackgroundColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLRENDERSTYLE_TEXTBACKGROUNDCOLOR), displaybind, bindable]
    HRESULT textBackgroundColor([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRENDERSTYLE_TEXTDECORATIONCOLOR), displaybind, bindable]
    HRESULT textDecorationColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLRENDERSTYLE_TEXTDECORATIONCOLOR), displaybind, bindable]
    HRESULT textDecorationColor([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLRENDERSTYLE_RENDERINGPRIORITY), displaybind, bindable]
    HRESULT renderingPriority([in] LONG v);

    [propget, id(DISPID_IHTMLRENDERSTYLE_RENDERINGPRIORITY), displaybind, bindable]
    HRESULT renderingPriority([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLRENDERSTYLE_DEFAULTTEXTSELECTION), displaybind, bindable]
    HRESULT defaultTextSelection([in] BSTR v);

    [propget, id(DISPID_IHTMLRENDERSTYLE_DEFAULTTEXTSELECTION), displaybind, bindable]
    HRESULT defaultTextSelection([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLRENDERSTYLE_TEXTDECORATION), displaybind, bindable]
    HRESULT textDecoration([in] BSTR v);

    [propget, id(DISPID_IHTMLRENDERSTYLE_TEXTDECORATION), displaybind, bindable]
    HRESULT textDecoration([retval, out] BSTR *p);
}

/*****************************************************************************
 *    IHTMLCurrentStyle interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f3db-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLCurrentStyle : IDispatch
{
    [propget, id(DISPID_IHTMLCURRENTSTYLE_POSITION), displaybind, bindable]
    HRESULT position([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_STYLEFLOAT), displaybind, bindable]
    HRESULT styleFloat([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_COLOR), displaybind, bindable]
    HRESULT color([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDCOLOR), displaybind, bindable]
    HRESULT backgroundColor([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTFAMILY), displaybind, bindable]
    HRESULT fontFamily([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTSTYLE), displaybind, bindable]
    HRESULT fontStyle([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTVARIANT), displaybind, bindable, hidden]
    HRESULT fontVariant([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTWEIGHT), displaybind, bindable]
    HRESULT fontWeight([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTSIZE), displaybind, bindable]
    HRESULT fontSize([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDIMAGE), displaybind, bindable]
    HRESULT backgroundImage([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONX), displaybind, bindable]
    HRESULT backgroundPositionX([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONY), displaybind, bindable]
    HRESULT backgroundPositionY([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDREPEAT), displaybind, bindable]
    HRESULT backgroundRepeat([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERLEFTCOLOR), displaybind, bindable]
    HRESULT borderLeftColor([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERTOPCOLOR), displaybind, bindable]
    HRESULT borderTopColor([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTCOLOR), displaybind, bindable]
    HRESULT borderRightColor([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMCOLOR), displaybind, bindable]
    HRESULT borderBottomColor([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERTOPSTYLE), displaybind, bindable]
    HRESULT borderTopStyle([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTSTYLE), displaybind, bindable]
    HRESULT borderRightStyle([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMSTYLE), displaybind, bindable]
    HRESULT borderBottomStyle([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERLEFTSTYLE), displaybind, bindable]
    HRESULT borderLeftStyle([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERTOPWIDTH), displaybind, bindable]
    HRESULT borderTopWidth([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTWIDTH), displaybind, bindable]
    HRESULT borderRightWidth([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMWIDTH), displaybind, bindable]
    HRESULT borderBottomWidth([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERLEFTWIDTH), displaybind, bindable]
    HRESULT borderLeftWidth([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_LEFT), displaybind, bindable]
    HRESULT left([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_TOP), displaybind, bindable]
    HRESULT top([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_WIDTH), displaybind, bindable]
    HRESULT width([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_HEIGHT), displaybind, bindable]
    HRESULT height([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGLEFT), displaybind, bindable]
    HRESULT paddingLeft([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGTOP), displaybind, bindable]
    HRESULT paddingTop([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGRIGHT), displaybind, bindable]
    HRESULT paddingRight([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGBOTTOM), displaybind, bindable]
    HRESULT paddingBottom([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTALIGN), displaybind, bindable]
    HRESULT textAlign([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTDECORATION), displaybind, bindable]
    HRESULT textDecoration([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_DISPLAY), displaybind, bindable]
    HRESULT display([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_VISIBILITY), displaybind, bindable]
    HRESULT visibility([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_ZINDEX), displaybind, bindable]
    HRESULT zIndex([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_LETTERSPACING), displaybind, bindable]
    HRESULT letterSpacing([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_LINEHEIGHT), displaybind, bindable]
    HRESULT lineHeight([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTINDENT), displaybind, bindable]
    HRESULT textIndent([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_VERTICALALIGN), displaybind, bindable]
    HRESULT verticalAlign([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDATTACHMENT), displaybind, bindable]
    HRESULT backgroundAttachment([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINTOP), displaybind, bindable]
    HRESULT marginTop([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINRIGHT), displaybind, bindable]
    HRESULT marginRight([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINBOTTOM), displaybind, bindable]
    HRESULT marginBottom([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINLEFT), displaybind, bindable]
    HRESULT marginLeft([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLEAR), displaybind, bindable]
    HRESULT clear([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_LISTSTYLETYPE), displaybind, bindable]
    HRESULT listStyleType([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_LISTSTYLEPOSITION), displaybind, bindable]
    HRESULT listStylePosition([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_LISTSTYLEIMAGE), displaybind, bindable]
    HRESULT listStyleImage([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPTOP), displaybind, bindable]
    HRESULT clipTop([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPRIGHT), displaybind, bindable]
    HRESULT clipRight([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPBOTTOM), displaybind, bindable]
    HRESULT clipBottom([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPLEFT), displaybind, bindable]
    HRESULT clipLeft([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_OVERFLOW), displaybind, bindable]
    HRESULT overflow([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_PAGEBREAKBEFORE), displaybind, bindable]
    HRESULT pageBreakBefore([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_PAGEBREAKAFTER), displaybind, bindable]
    HRESULT pageBreakAfter([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_CURSOR), displaybind, bindable]
    HRESULT cursor([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_TABLELAYOUT), displaybind, bindable]
    HRESULT tableLayout([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERCOLLAPSE), displaybind, bindable]
    HRESULT borderCollapse([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_DIRECTION), displaybind, bindable]
    HRESULT direction([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BEHAVIOR), displaybind, bindable]
    HRESULT behavior([retval, out] BSTR *p);

    [id(DISPID_IHTMLCURRENTSTYLE_GETATTRIBUTE)]
    HRESULT getAttribute(
        [in] BSTR strAttributeName,
        [defaultvalue(0), in] LONG lFlags,
        [retval, out] VARIANT *AttributeValue);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_UNICODEBIDI), displaybind, bindable]
    HRESULT unicodeBidi([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_RIGHT), displaybind, bindable]
    HRESULT right([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BOTTOM), displaybind, bindable]
    HRESULT bottom([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_IMEMODE), displaybind, bindable]
    HRESULT imeMode([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_RUBYALIGN), displaybind, bindable]
    HRESULT rubyAlign([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_RUBYPOSITION), displaybind, bindable]
    HRESULT rubyPosition([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_RUBYOVERHANG), displaybind, bindable]
    HRESULT rubyOverhang([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTAUTOSPACE), displaybind, bindable]
    HRESULT textAutospace([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_LINEBREAK), displaybind, bindable]
    HRESULT lineBreak([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_WORDBREAK), displaybind, bindable]
    HRESULT wordBreak([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFY), displaybind, bindable]
    HRESULT textJustify([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFYTRIM), displaybind, bindable]
    HRESULT textJustifyTrim([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTKASHIDA), displaybind, bindable]
    HRESULT textKashida([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BLOCKDIRECTION), displaybind, bindable]
    HRESULT blockDirection([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDCHAR), displaybind, bindable]
    HRESULT layoutGridChar([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDLINE), displaybind, bindable]
    HRESULT layoutGridLine([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDMODE), displaybind, bindable]
    HRESULT layoutGridMode([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDTYPE), displaybind, bindable]
    HRESULT layoutGridType([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERSTYLE), displaybind, bindable]
    HRESULT borderStyle([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERCOLOR), displaybind, bindable]
    HRESULT borderColor([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERWIDTH), displaybind, bindable]
    HRESULT borderWidth([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDING), displaybind, bindable]
    HRESULT padding([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGIN), displaybind, bindable]
    HRESULT margin([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_ACCELERATOR), displaybind, bindable]
    HRESULT accelerator([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_OVERFLOWX), displaybind, bindable]
    HRESULT overflowX([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_OVERFLOWY), displaybind, bindable]
    HRESULT overflowY([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTTRANSFORM), displaybind, bindable]
    HRESULT textTransform([retval, out] BSTR *p);
}

/*****************************************************************************
 *    IHTMLCurrentStyle2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f658-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLCurrentStyle2 : IDispatch
{
    [propget, id(DISPID_IHTMLCURRENTSTYLE2_LAYOUTFLOW), displaybind, bindable]
    HRESULT layoutFlow([retval, out] BSTR * p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_WORDWRAP), displaybind, bindable]
    HRESULT wordWrap([retval, out] BSTR * p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_TEXTUNDERLINEPOSITION), displaybind, bindable]
    HRESULT textUnderlinePosition([retval, out] BSTR * p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_HASLAYOUT), displaybind, bindable]
    HRESULT hasLayout([retval, out] VARIANT_BOOL * p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARBASECOLOR), displaybind, bindable]
    HRESULT scrollbarBaseColor([retval, out] VARIANT * p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARFACECOLOR), displaybind, bindable]
    HRESULT scrollbarFaceColor([retval, out] VARIANT * p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable]
    HRESULT scrollbar3dLightColor([retval, out] VARIANT * p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARSHADOWCOLOR), displaybind, bindable]
    HRESULT scrollbarShadowColor([retval, out] VARIANT * p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable]
    HRESULT scrollbarHighlightColor([retval, out] VARIANT * p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable]
    HRESULT scrollbarDarkShadowColor([retval, out] VARIANT * p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARARROWCOLOR), displaybind, bindable]
    HRESULT scrollbarArrowColor([retval, out] VARIANT * p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARTRACKCOLOR), displaybind, bindable]
    HRESULT scrollbarTrackColor([retval, out] VARIANT * p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_WRITINGMODE), displaybind, bindable]
    HRESULT writingMode([retval, out] BSTR * p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_ZOOM), displaybind, bindable]
    HRESULT zoom([retval, out] VARIANT * p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_FILTER), displaybind, bindable]
    HRESULT filter([retval, out] BSTR * p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_TEXTALIGNLAST), displaybind, bindable]
    HRESULT textAlignLast([retval, out] BSTR * p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_TEXTKASHIDASPACE), displaybind, bindable]
    HRESULT textKashidaSpace([retval, out] VARIANT * p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_ISBLOCK), displaybind, bindable, hidden, restricted, nonbrowsable]
    HRESULT isBlock([retval, out] VARIANT_BOOL * p);
}

/*****************************************************************************
 *    IHTMLCurrentStyle3 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f818-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLCurrentStyle3 : IDispatch
{
    [propget, id(DISPID_IHTMLCURRENTSTYLE3_TEXTOVERFLOW), displaybind, bindable]
    HRESULT textOverflow([retval, out] BSTR * p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE3_MINHEIGHT), displaybind, bindable]
    HRESULT minHeight([retval, out] VARIANT * p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE3_WORDSPACING), displaybind, bindable]
    HRESULT wordSpacing([retval, out] VARIANT * p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE3_WHITESPACE), displaybind, bindable]
    HRESULT whiteSpace([retval, out] BSTR * p);
}

/*****************************************************************************
 *    IHTMLCurrentStyle4 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f33b-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLCurrentStyle4 : IDispatch
{
    [propget, id(DISPID_IHTMLCURRENTSTYLE4_MSINTERPOLATIONMODE), displaybind, bindable]
    HRESULT msInterpolationMode([retval, out] BSTR * p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE4_MAXHEIGHT), displaybind, bindable]
    HRESULT maxHeight([retval, out] VARIANT * p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE4_MINWIDTH), displaybind, bindable]
    HRESULT minWidth([retval, out] VARIANT * p);

    [propget, id(DISPID_IHTMLCURRENTSTYLE4_MAXWIDTH), displaybind, bindable]
    HRESULT maxWidth([retval, out] VARIANT * p);
}

/*****************************************************************************
 *    DispHTMLCurrentStyle dispinterface
 */
[
    hidden,
    uuid(3050f557-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLCurrentStyle
{
properties:
methods:
    [propget, id(DISPID_IHTMLCURRENTSTYLE_POSITION), displaybind, bindable]
    BSTR position();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_STYLEFLOAT), displaybind, bindable]
    BSTR styleFloat();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_COLOR), displaybind, bindable]
    VARIANT color();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDCOLOR), displaybind, bindable]
    VARIANT backgroundColor();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTFAMILY), displaybind, bindable]
    BSTR fontFamily();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTSTYLE), displaybind, bindable]
    BSTR fontStyle();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTVARIANT), displaybind, bindable, hidden]
    BSTR fontVariant();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTWEIGHT), displaybind, bindable]
    VARIANT fontWeight();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTSIZE), displaybind, bindable]
    VARIANT fontSize();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDIMAGE), displaybind, bindable]
    BSTR backgroundImage();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONX), displaybind, bindable]
    VARIANT backgroundPositionX();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONY), displaybind, bindable]
    VARIANT backgroundPositionY();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDREPEAT), displaybind, bindable]
    BSTR backgroundRepeat();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERLEFTCOLOR), displaybind, bindable]
    VARIANT borderLeftColor();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERTOPCOLOR), displaybind, bindable]
    VARIANT borderTopColor();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTCOLOR), displaybind, bindable]
    VARIANT borderRightColor();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMCOLOR), displaybind, bindable]
    VARIANT borderBottomColor();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERTOPSTYLE), displaybind, bindable]
    BSTR borderTopStyle();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTSTYLE), displaybind, bindable]
    BSTR borderRightStyle();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMSTYLE), displaybind, bindable]
    BSTR borderBottomStyle();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERLEFTSTYLE), displaybind, bindable]
    BSTR borderLeftStyle();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERTOPWIDTH), displaybind, bindable]
    VARIANT borderTopWidth();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTWIDTH), displaybind, bindable]
    VARIANT borderRightWidth();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMWIDTH), displaybind, bindable]
    VARIANT borderBottomWidth();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERLEFTWIDTH), displaybind, bindable]
    VARIANT borderLeftWidth();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_LEFT), displaybind, bindable]
    VARIANT left();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_TOP), displaybind, bindable]
    VARIANT top();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_WIDTH), displaybind, bindable]
    VARIANT width();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_HEIGHT), displaybind, bindable]
    VARIANT height();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGLEFT), displaybind, bindable]
    VARIANT paddingLeft();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGTOP), displaybind, bindable]
    VARIANT paddingTop();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGRIGHT), displaybind, bindable]
    VARIANT paddingRight();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGBOTTOM), displaybind, bindable]
    VARIANT paddingBottom();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTALIGN), displaybind, bindable]
    BSTR textAlign();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTDECORATION), displaybind, bindable]
    BSTR textDecoration();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_DISPLAY), displaybind, bindable]
    BSTR display();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_VISIBILITY), displaybind, bindable]
    BSTR visibility();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_ZINDEX), displaybind, bindable]
    VARIANT zIndex();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_LETTERSPACING), displaybind, bindable]
    VARIANT letterSpacing();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_LINEHEIGHT), displaybind, bindable]
    VARIANT lineHeight();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTINDENT), displaybind, bindable]
    VARIANT textIndent();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_VERTICALALIGN), displaybind, bindable]
    VARIANT verticalAlign();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDATTACHMENT), displaybind, bindable]
    BSTR backgroundAttachment();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINTOP), displaybind, bindable]
    VARIANT marginTop();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINRIGHT), displaybind, bindable]
    VARIANT marginRight();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINBOTTOM), displaybind, bindable]
    VARIANT marginBottom();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINLEFT), displaybind, bindable]
    VARIANT marginLeft();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLEAR), displaybind, bindable]
    BSTR clear();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_LISTSTYLETYPE), displaybind, bindable]
    BSTR listStyleType();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_LISTSTYLEPOSITION), displaybind, bindable]
    BSTR listStylePosition();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_LISTSTYLEIMAGE), displaybind, bindable]
    BSTR listStyleImage();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPTOP), displaybind, bindable]
    VARIANT clipTop();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPRIGHT), displaybind, bindable]
    VARIANT clipRight();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPBOTTOM), displaybind, bindable]
    VARIANT clipBottom();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPLEFT), displaybind, bindable]
    VARIANT clipLeft();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_OVERFLOW), displaybind, bindable]
    BSTR overflow();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_PAGEBREAKBEFORE), displaybind, bindable]
    BSTR pageBreakBefore();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_PAGEBREAKAFTER), displaybind, bindable]
    BSTR pageBreakAfter();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_CURSOR), displaybind, bindable]
    BSTR cursor();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_TABLELAYOUT), displaybind, bindable]
    BSTR tableLayout();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERCOLLAPSE), displaybind, bindable]
    BSTR borderCollapse();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_DIRECTION), displaybind, bindable]
    BSTR direction();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BEHAVIOR), displaybind, bindable]
    BSTR behavior();

    [id(DISPID_IHTMLCURRENTSTYLE_GETATTRIBUTE)]
    VARIANT getAttribute(
            [in] BSTR strAttributeName,
            [in, defaultvalue(0)] LONG lFlags);

    [propget, id(DISPID_IHTMLCURRENTSTYLE_UNICODEBIDI), displaybind, bindable]
    BSTR unicodeBidi();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_RIGHT), displaybind, bindable]
    VARIANT right();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BOTTOM), displaybind, bindable]
    VARIANT bottom();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_IMEMODE), displaybind, bindable]
    BSTR imeMode();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_RUBYALIGN), displaybind, bindable]
    BSTR rubyAlign();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_RUBYPOSITION), displaybind, bindable]
    BSTR rubyPosition();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_RUBYOVERHANG), displaybind, bindable]
    BSTR rubyOverhang();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTAUTOSPACE), displaybind, bindable]
    BSTR textAutospace();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_LINEBREAK), displaybind, bindable]
    BSTR lineBreak();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_WORDBREAK), displaybind, bindable]
    BSTR wordBreak();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFY), displaybind, bindable]
    BSTR textJustify();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFYTRIM), displaybind, bindable]
    BSTR textJustifyTrim();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTKASHIDA), displaybind, bindable]
    VARIANT textKashida();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BLOCKDIRECTION), displaybind, bindable]
    BSTR blockDirection();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDCHAR), displaybind, bindable]
    VARIANT layoutGridChar();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDLINE), displaybind, bindable]
    VARIANT layoutGridLine();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDMODE), displaybind, bindable]
    BSTR layoutGridMode();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDTYPE), displaybind, bindable]
    BSTR layoutGridType();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERSTYLE), displaybind, bindable]
    BSTR borderStyle();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERCOLOR), displaybind, bindable]
    BSTR borderColor();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERWIDTH), displaybind, bindable]
    BSTR borderWidth();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDING), displaybind, bindable]
    BSTR padding();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGIN), displaybind, bindable]
    BSTR margin();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_ACCELERATOR), displaybind, bindable]
    BSTR accelerator();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_OVERFLOWX), displaybind, bindable]
    BSTR overflowX();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_OVERFLOWY), displaybind, bindable]
    BSTR overflowY();

    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTTRANSFORM), displaybind, bindable]
    BSTR textTransform();

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_LAYOUTFLOW), displaybind, bindable]
    BSTR layoutFlow();

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_WORDWRAP), displaybind, bindable]
    BSTR wordWrap();

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_TEXTUNDERLINEPOSITION), displaybind, bindable]
    BSTR textUnderlinePosition();

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_HASLAYOUT), displaybind, bindable]
    VARIANT_BOOL hasLayout();

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARBASECOLOR), displaybind, bindable]
    VARIANT scrollbarBaseColor();

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARFACECOLOR), displaybind, bindable]
    VARIANT scrollbarFaceColor();

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable]
    VARIANT scrollbar3dLightColor();

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARSHADOWCOLOR), displaybind, bindable]
    VARIANT scrollbarShadowColor();

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable]
    VARIANT scrollbarHighlightColor();

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable]
    VARIANT scrollbarDarkShadowColor();

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARARROWCOLOR), displaybind, bindable]
    VARIANT scrollbarArrowColor();

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARTRACKCOLOR), displaybind, bindable]
    VARIANT scrollbarTrackColor();

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_WRITINGMODE), displaybind, bindable]
    BSTR writingMode();

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_ZOOM), displaybind, bindable]
    VARIANT zoom();

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_FILTER), displaybind, bindable]
    BSTR filter();

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_TEXTALIGNLAST), displaybind, bindable]
    BSTR textAlignLast();

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_TEXTKASHIDASPACE), displaybind, bindable]
    VARIANT textKashidaSpace();

    [propget, id(DISPID_IHTMLCURRENTSTYLE2_ISBLOCK), displaybind, bindable, hidden, restricted, nonbrowsable]
    VARIANT_BOOL isBlock();

    [propget, id(DISPID_IHTMLCURRENTSTYLE3_TEXTOVERFLOW), displaybind, bindable]
    BSTR textOverflow();

    [propget, id(DISPID_IHTMLCURRENTSTYLE3_MINHEIGHT), displaybind, bindable]
    VARIANT minHeight();

    [propget, id(DISPID_IHTMLCURRENTSTYLE3_WORDSPACING), displaybind, bindable]
    VARIANT wordSpacing();

    [propget, id(DISPID_IHTMLCURRENTSTYLE3_WHITESPACE), displaybind, bindable]
    BSTR whiteSpace();

    [propget, id(DISPID_IHTMLCURRENTSTYLE4_MSINTERPOLATIONMODE), displaybind, bindable]
    BSTR msInterpolationMode();

    [propget, id(DISPID_IHTMLCURRENTSTYLE4_MAXHEIGHT), displaybind, bindable]
    VARIANT maxHeight();

    [propget, id(DISPID_IHTMLCURRENTSTYLE4_MINWIDTH), displaybind, bindable]
    VARIANT minWidth();

    [propget, id(DISPID_IHTMLCURRENTSTYLE4_MAXWIDTH), displaybind, bindable]
    VARIANT maxWidth();
}

[
    noncreatable,
    uuid(3050f3dc-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLCurrentStyle
{
    [default] dispinterface DispHTMLCurrentStyle;
    interface IHTMLCurrentStyle;
    interface IHTMLCurrentStyle2;
    interface IHTMLCurrentStyle3;
    interface IHTMLCurrentStyle4;
}

/*****************************************************************************
 *    IHTMLRect interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f4a3-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLRect : IDispatch
{
    [propput, id(DISPID_IHTMLRECT_LEFT)]
    HRESULT left([in] LONG v);

    [propget, id(DISPID_IHTMLRECT_LEFT)]
    HRESULT left([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLRECT_TOP)]
    HRESULT top([in] LONG v);

    [propget, id(DISPID_IHTMLRECT_TOP)]
    HRESULT top([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLRECT_RIGHT)]
    HRESULT right([in] LONG v);

    [propget, id(DISPID_IHTMLRECT_RIGHT)]
    HRESULT right([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLRECT_BOTTOM)]
    HRESULT bottom([in] LONG v);

    [propget, id(DISPID_IHTMLRECT_BOTTOM)]
    HRESULT bottom([retval, out] LONG *p);
}

/*****************************************************************************
 *    IHTMLRect2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3051076c-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLRect2 : IDispatch
{
    [propget, id(DISPID_IHTMLRECT2_WIDTH)]
    HRESULT width([retval, out] FLOAT *p);

    [propget, id(DISPID_IHTMLRECT2_HEIGHT)]
    HRESULT height([retval, out] FLOAT *p);
}

/*****************************************************************************
 *    IHTMLRectCollection interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f4a4-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLRectCollection : IDispatch
{
    [propget, id(DISPID_IHTMLRECTCOLLECTION_LENGTH)]
    HRESULT length([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLRECTCOLLECTION__NEWENUM), hidden, restricted]
    HRESULT _newEnum([retval, out] IUnknown **p);

    [id(DISPID_IHTMLRECTCOLLECTION_ITEM)]
    HRESULT item(
        [in] VARIANT *pvarIndex,
        [retval, out] VARIANT *pvarResult);
}

/*****************************************************************************
 *    IHTMLDOMNode interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f5da-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDOMNode : IDispatch
{
    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
    HRESULT nodeType([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
    HRESULT parentNode([retval, out] IHTMLDOMNode **p);

    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
    HRESULT hasChildNodes([retval, out] VARIANT_BOOL *fChildren);

    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
    HRESULT childNodes([retval, out] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
    HRESULT attributes([retval, out] IDispatch **p);

    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
    HRESULT insertBefore(
        [in] IHTMLDOMNode *newChild,
        [optional, in] VARIANT refChild,
        [retval, out] IHTMLDOMNode **node);

    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
    HRESULT removeChild(
        [in] IHTMLDOMNode *oldChild,
        [retval, out] IHTMLDOMNode **node);

    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
    HRESULT replaceChild(
        [in] IHTMLDOMNode *newChild,
        [in] IHTMLDOMNode *oldChild,
        [retval, out] IHTMLDOMNode **node);

    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
    HRESULT cloneNode(
        [in] VARIANT_BOOL fDeep,
        [retval, out] IHTMLDOMNode **clonedNode);

    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
    HRESULT removeNode(
        [defaultvalue(0), in] VARIANT_BOOL fDeep,
        [retval, out] IHTMLDOMNode **removed);

    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
    HRESULT swapNode(
        [in] IHTMLDOMNode *otherNode,
        [retval, out] IHTMLDOMNode **swappedNode);

    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
    HRESULT replaceNode(
        [in] IHTMLDOMNode *replacement,
        [retval, out] IHTMLDOMNode **replaced);

    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
    HRESULT appendChild(
        [in] IHTMLDOMNode *newChild,
        [retval, out] IHTMLDOMNode **node);

    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
    HRESULT nodeName([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
    HRESULT nodeValue([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
    HRESULT nodeValue([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
    HRESULT firstChild([retval, out] IHTMLDOMNode **p);

    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
    HRESULT lastChild([retval, out] IHTMLDOMNode **p);

    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
    HRESULT previousSibling([retval, out] IHTMLDOMNode **p);

    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
    HRESULT nextSibling([retval, out] IHTMLDOMNode **p);
}

#define WINE_IHTMLDOMNODE_DISPINTERFACE_DECL                            \
    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]                         \
    LONG nodeType();                                                    \
                                                                        \
    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]                       \
    IHTMLDOMNode* parentNode();                                         \
                                                                        \
    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]                             \
    VARIANT_BOOL hasChildNodes();                                       \
                                                                        \
    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]                       \
    IDispatch* childNodes();                                            \
                                                                        \
    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]                       \
    IDispatch* attributes();                                            \
                                                                        \
    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]                              \
    IHTMLDOMNode* insertBefore(                                         \
            [in] IHTMLDOMNode* newChild,                                \
            [optional, in] VARIANT refChild);                           \
                                                                        \
    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]                               \
    IHTMLDOMNode* removeChild([in] IHTMLDOMNode* oldChild);             \
                                                                        \
    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]                              \
    IHTMLDOMNode* replaceChild(                                         \
        [in] IHTMLDOMNode* newChild,                                    \
        [in] IHTMLDOMNode* oldChild);                                   \
                                                                        \
    [id(DISPID_IHTMLDOMNODE_CLONENODE)]                                 \
    IHTMLDOMNode* cloneNode([in] VARIANT_BOOL fDeep);                   \
                                                                        \
    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]                                \
    IHTMLDOMNode* removeNode([defaultvalue(0), in] VARIANT_BOOL fDeep); \
                                                                        \
    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]                                  \
    IHTMLDOMNode* swapNode([in] IHTMLDOMNode* otherNode);               \
                                                                        \
    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]                               \
    IHTMLDOMNode* replaceNode([in] IHTMLDOMNode* replacement);          \
                                                                        \
    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]                               \
    IHTMLDOMNode* appendChild([in] IHTMLDOMNode* newChild);             \
                                                                        \
    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]                         \
    BSTR nodeName();                                                    \
                                                                        \
    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]                        \
    void nodeValue(VARIANT v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]                        \
    VARIANT nodeValue();                                                \
                                                                        \
    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]                       \
    IHTMLDOMNode* firstChild();                                         \
                                                                        \
    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]                        \
    IHTMLDOMNode* lastChild();                                          \
                                                                        \
    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]                  \
    IHTMLDOMNode* previousSibling();                                    \
                                                                        \
    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]                      \
    IHTMLDOMNode* nextSibling()

/*****************************************************************************
 *    IHTMLDOMNode2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f80b-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDOMNode2 : IDispatch
{
    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
    HRESULT ownerDocument([retval, out] IDispatch **p);
}

#define WINE_IHTMLDOMNODE2_DISPINTERFACE_DECL           \
    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]   \
    IDispatch *ownerDocument()

/*****************************************************************************
 *    IHTMLDOMNode3 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305106e0-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDOMNode3 : IDispatch
{
    [propput, id(DISPID_IHTMLDOMNODE3_PREFIX)]
    HRESULT prefix([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOMNODE3_PREFIX)]
    HRESULT prefix([out, retval] VARIANT *p);

    [propget, id(DISPID_IHTMLDOMNODE3_LOCALNAME)]
    HRESULT localName([out, retval] VARIANT *p);

    [propget, id(DISPID_IHTMLDOMNODE3_NAMESPACEURI)]
    HRESULT namespaceURI([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOMNODE3_TEXTCONTENT)]
    HRESULT textContent([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOMNODE3_TEXTCONTENT)]
    HRESULT textContent([out, retval] VARIANT *p);

    [id(DISPID_IHTMLDOMNODE3_ISEQUALNODE)]
    HRESULT isEqualNode(
        [in] IHTMLDOMNode3 *otherNode,
        [out, retval] VARIANT_BOOL *isEqual);

    [id(DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)]
    HRESULT lookupNamespaceURI(
        [in] VARIANT *pvarPrefix,
        [out, retval] VARIANT *pvarNamespaceURI);

    [id(DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)]
    HRESULT lookupPrefix(
       [in] VARIANT *pvarNamespaceURI,
       [out, retval] VARIANT *pvarPrefix);

    [id(DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)]
    HRESULT isDefaultNamespace(
        [in] VARIANT *pvarNamespace,
        [out, retval] VARIANT_BOOL *pfDefaultNamespace);

    [id(DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)]
    HRESULT appendChild(
        [in] IHTMLDOMNode *newChild,
        [out, retval] IHTMLDOMNode **node);

    [id(DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)]
    HRESULT insertBefore(
        [in] IHTMLDOMNode *newChild,
        [in, optional] VARIANT refChild,
        [out, retval] IHTMLDOMNode **node);

    [id(DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)]
    HRESULT removeChild(
        [in] IHTMLDOMNode *oldChild,
        [out, retval] IHTMLDOMNode **node);

    [id(DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)]
    HRESULT replaceChild(
        [in] IHTMLDOMNode *newChild,
        [in] IHTMLDOMNode *oldChild,
        [out, retval] IHTMLDOMNode **node);

    [id(DISPID_IHTMLDOMNODE3_ISSAMENODE)]
    HRESULT isSameNode(
        [in] IHTMLDOMNode3 *otherNode,
        [out, retval] VARIANT_BOOL *isSame);

    [id(DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)]
    HRESULT compareDocumentPosition(
        [in] IHTMLDOMNode *otherNode,
        [out, retval] USHORT *flags);

    [id(DISPID_IHTMLDOMNODE3_ISSUPPORTED)]
    HRESULT isSupported(
        [in] BSTR feature,
        [in] VARIANT version,
        [out, retval] VARIANT_BOOL *pfisSupported);
}

#define WINE_IHTMLDOMNODE3_DISPINTERFACE_DECL                           \
    [propput, id(DISPID_IHTMLDOMNODE3_PREFIX)]                          \
    void prefix(VARIANT v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLDOMNODE3_PREFIX)]                          \
    VARIANT prefix();                                                   \
                                                                        \
    [propget, id(DISPID_IHTMLDOMNODE3_LOCALNAME)]                       \
    VARIANT localName();                                                \
                                                                        \
    [propget, id(DISPID_IHTMLDOMNODE3_NAMESPACEURI)]                    \
    VARIANT namespaceURI();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLDOMNODE3_TEXTCONTENT)]                     \
    void textContent(VARIANT v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLDOMNODE3_TEXTCONTENT)]                     \
    VARIANT textContent();                                              \
                                                                        \
    [id(DISPID_IHTMLDOMNODE3_ISEQUALNODE)]                              \
    VARIANT_BOOL isEqualNode([in] IHTMLDOMNode3 *otherNode);            \
                                                                        \
    [id(DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)]                       \
    VARIANT lookupNamespaceURI([in] VARIANT *pvarPrefix);               \
                                                                        \
    [id(DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)]                             \
    VARIANT lookupPrefix([in] VARIANT *pvarNamespaceURI);               \
                                                                        \
    [id(DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)]                       \
    VARIANT_BOOL isDefaultNamespace([in] VARIANT *pvarNamespace);       \
                                                                        \
    [id(DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)]                          \
    IHTMLDOMNode *ie9_appendChild([in] IHTMLDOMNode *newChild);         \
                                                                        \
    [id(DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)]                         \
    IHTMLDOMNode *ie9_insertBefore(                                     \
        [in] IHTMLDOMNode *newChild,                                    \
        [in, optional] VARIANT refChild);                               \
                                                                        \
    [id(DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)]                          \
    IHTMLDOMNode *ie9_removeChild([in] IHTMLDOMNode *oldChild);         \
                                                                        \
    [id(DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)]                         \
    IHTMLDOMNode *ie9_replaceChild(                                     \
        [in] IHTMLDOMNode *newChild,                                    \
        [in] IHTMLDOMNode *oldChild);                                   \
                                                                        \
    [id(DISPID_IHTMLDOMNODE3_ISSAMENODE)]                               \
    VARIANT_BOOL isSameNode([in] IHTMLDOMNode3 *otherNode);             \
                                                                        \
    [id(DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)]                  \
    USHORT compareDocumentPosition([in] IHTMLDOMNode *otherNode);       \
                                                                        \
    [id(DISPID_IHTMLDOMNODE3_ISSUPPORTED)]                              \
    VARIANT_BOOL isSupported(                                           \
        [in] BSTR feature,                                              \
        [in] VARIANT version)                                           \

#define WINE_HTMLDOMNODE_DISPINTERFACE_DECL     \
    WINE_IHTMLDOMNODE_DISPINTERFACE_DECL;       \
    WINE_IHTMLDOMNODE2_DISPINTERFACE_DECL;      \
    WINE_IHTMLDOMNODE3_DISPINTERFACE_DECL

/*****************************************************************************
 *    IHTMLDOMAttribute interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f4b0-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDOMAttribute : IDispatch
{
    [propget, id(DISPID_IHTMLDOMATTRIBUTE_NODENAME)]
    HRESULT nodeName([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLDOMATTRIBUTE_NODEVALUE)]
    HRESULT nodeValue([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOMATTRIBUTE_NODEVALUE)]
    HRESULT nodeValue([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLDOMATTRIBUTE_SPECIFIED)]
    HRESULT specified([retval, out] VARIANT_BOOL *p);
}

/*****************************************************************************
 *    IHTMLDOMAttribute2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f810-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDOMAttribute2 : IDispatch
{
    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_NAME)]
    HRESULT name([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLDOMATTRIBUTE2_VALUE)]
    HRESULT value([in] BSTR v);

    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_VALUE)]
    HRESULT value([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_EXPANDO)]
    HRESULT expando([retval, out] VARIANT_BOOL *p);

    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_NODETYPE)]
    HRESULT nodeType([retval, out] long *p);

    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_PARENTNODE)]
    HRESULT parentNode([retval, out] IHTMLDOMNode **p);

    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_CHILDNODES)]
    HRESULT childNodes([retval, out] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_FIRSTCHILD)]
    HRESULT firstChild([retval, out] IHTMLDOMNode **p);

    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_LASTCHILD)]
    HRESULT lastChild([retval, out] IHTMLDOMNode **p);

    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_PREVIOUSSIBLING)]
    HRESULT previousSibling([retval, out] IHTMLDOMNode **p);

    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_NEXTSIBLING)]
    HRESULT nextSibling([retval, out] IHTMLDOMNode **p);

    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_ATTRIBUTES)]
    HRESULT attributes([retval, out] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_OWNERDOCUMENT)]
    HRESULT ownerDocument([retval, out] IDispatch **p);

    [id(DISPID_IHTMLDOMATTRIBUTE2_INSERTBEFORE)]
    HRESULT insertBefore(
            [in] IHTMLDOMNode *newChild,
            [optional, in] VARIANT refChild,
            [retval, out] IHTMLDOMNode **node);

    [id(DISPID_IHTMLDOMATTRIBUTE2_REPLACECHILD)]
    HRESULT replaceChild(
            [in] IHTMLDOMNode *newChild,
            [in] IHTMLDOMNode *oldChild,
            [retval, out] IHTMLDOMNode **node);

    [id(DISPID_IHTMLDOMATTRIBUTE2_REMOVECHILD)]
    HRESULT removeChild(
            [in] IHTMLDOMNode *oldChild,
            [retval, out] IHTMLDOMNode **node);

    [id(DISPID_IHTMLDOMATTRIBUTE2_APPENDCHILD)]
    HRESULT appendChild(
            [in] IHTMLDOMNode *newChild,
            [retval, out] IHTMLDOMNode **node);

    [id(DISPID_IHTMLDOMATTRIBUTE2_HASCHILDNODES)]
    HRESULT hasChildNodes([retval, out] VARIANT_BOOL *fChildren);

    [id(DISPID_IHTMLDOMATTRIBUTE2_CLONENODE)]
    HRESULT cloneNode(
            [in] VARIANT_BOOL fDeep,
            [retval, out] IHTMLDOMAttribute **clonedNode);
}

/*****************************************************************************
 *    IHTMLDOMAttribute3 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510468-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDOMAttribute3 : IDispatch
{
    [propput, id(DISPID_IHTMLDOMATTRIBUTE3_IE8_NODEVALUE)]
    HRESULT nodeValue([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOMATTRIBUTE3_IE8_NODEVALUE)]
    HRESULT nodeValue([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOMATTRIBUTE3_IE8_VALUE)]
    HRESULT value([in] BSTR v);

    [propget, id(DISPID_IHTMLDOMATTRIBUTE3_IE8_VALUE)]
    HRESULT value([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLDOMATTRIBUTE3_IE8_SPECIFIED)]
    HRESULT specified([retval, out] VARIANT_BOOL *p);

    [propget, id(DISPID_IHTMLDOMATTRIBUTE3_OWNERELEMENT)]
    HRESULT ownerElement([retval, out] IHTMLElement2 **p);
}

/*****************************************************************************
 *    IHTMLDOMTextNode interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f4b1-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDOMTextNode : IDispatch
{
    [propput, id(DISPID_IHTMLDOMTEXTNODE_DATA)]
    HRESULT data([in] BSTR v);

    [propget, id(DISPID_IHTMLDOMTEXTNODE_DATA)]
    HRESULT data([out, retval] BSTR *p);

    [id(DISPID_IHTMLDOMTEXTNODE_TOSTRING)]
    HRESULT toString([out, retval] BSTR *String);

    [propget, id(DISPID_IHTMLDOMTEXTNODE_LENGTH)]
    HRESULT length([out, retval] LONG *p);

    [id(DISPID_IHTMLDOMTEXTNODE_SPLITTEXT)]
    HRESULT splitText(
            [in] LONG offset,
            [out, retval] IHTMLDOMNode **pRetNode);
}

/*****************************************************************************
 *    IHTMLDOMTextNode2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f809-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDOMTextNode2 : IDispatch
{
    [id(DISPID_IHTMLDOMTEXTNODE2_SUBSTRINGDATA)]
    HRESULT substringData([in] LONG offset,[in] LONG Count,[retval, out] BSTR* pbstrsubString);

    [id(DISPID_IHTMLDOMTEXTNODE2_APPENDDATA)]
    HRESULT appendData([in] BSTR bstrstring);

    [id(DISPID_IHTMLDOMTEXTNODE2_INSERTDATA)]
    HRESULT insertData([in] LONG offset,[in] BSTR bstrstring);

    [id(DISPID_IHTMLDOMTEXTNODE2_DELETEDATA)]
    HRESULT deleteData([in] LONG offset,[in] LONG Count);

    [id(DISPID_IHTMLDOMTEXTNODE2_REPLACEDATA)]
    HRESULT replaceData([in] LONG offset,[in] LONG Count,[in] BSTR bstrstring);
}

[
    noncreatable,
    uuid(3050f4ba-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLDOMTextNode
{
    [default]           dispinterface DispHTMLDOMTextNode;
                        interface IHTMLDOMTextNode;
                        interface IHTMLDOMTextNode2;
                        interface IHTMLDOMNode;
                        interface IHTMLDOMNode2;
}

/*****************************************************************************
 *    IDOMDocumentType interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510738-98b5-11cf-bb82-00aa00bdce0b)
 ]
interface IDOMDocumentType : IDispatch
{
    [propget, id(DISPID_IDOMDOCUMENTTYPE_NAME)]
    HRESULT name([out, retval] BSTR *p);

    [propget, id(DISPID_IDOMDOCUMENTTYPE_ENTITIES)]
    HRESULT entities([out, retval] IDispatch **p);

    [propget, id(DISPID_IDOMDOCUMENTTYPE_NOTATIONS)]
    HRESULT notations([out, retval] IDispatch **p);

    [propget, id(DISPID_IDOMDOCUMENTTYPE_PUBLICID)]
    HRESULT publicId([out, retval] VARIANT *p);

    [propget, id(DISPID_IDOMDOCUMENTTYPE_SYSTEMID)]
    HRESULT systemId([out, retval] VARIANT *p);

    [propget, id(DISPID_IDOMDOCUMENTTYPE_INTERNALSUBSET)]
    HRESULT internalSubset([out, retval] VARIANT *p);
}

/*****************************************************************************
 *    DispDOMDocumentType dispinterface
 */
[
    hidden,
    uuid(30590098-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispDOMDocumentType
{
properties:
methods:
    WINE_HTMLDOMNODE_DISPINTERFACE_DECL;

    [propget, id(DISPID_IDOMDOCUMENTTYPE_NAME)]
    BSTR name();

    [propget, id(DISPID_IDOMDOCUMENTTYPE_ENTITIES)]
    IDispatch *entities();

    [propget, id(DISPID_IDOMDOCUMENTTYPE_NOTATIONS)]
    IDispatch *notations();

    [propget, id(DISPID_IDOMDOCUMENTTYPE_PUBLICID)]
    VARIANT publicId();

    [propget, id(DISPID_IDOMDOCUMENTTYPE_SYSTEMID)]
    VARIANT systemId();

    [propget, id(DISPID_IDOMDOCUMENTTYPE_INTERNALSUBSET)]
    VARIANT internalSubset();
};

[
    noncreatable,
    uuid(30510739-98b5-11cf-bb82-00aa00bdce0b)
]
coclass DOMDocumentType
{
    [default] dispinterface DispDOMDocumentType;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IDOMDocumentType;
};

/*****************************************************************************
 *    IHTMLDOMImplementation interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f80d-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDOMImplementation : IDispatch
{
    [id(DISPID_IHTMLDOMIMPLEMENTATION_HASFEATURE)]
    HRESULT hasFeature(
        [in] BSTR bstrfeature,
        [optional, in] VARIANT version,
        [retval, out] VARIANT_BOOL *pfHasFeature);
}

/*****************************************************************************
 *    IHTMLDOMImplementation2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3051073c-98b5-11cf-bb82-00aa00bdce0b)
    ]
interface IHTMLDOMImplementation2 : IDispatch
{
    [id(DISPID_IHTMLDOMIMPLEMENTATION2_CREATEDOCUMENTTYPE)]
    HRESULT createDocumentType(
        [in] BSTR bstrQualifiedName,
        [in] VARIANT *pvarPublicId,
        [in] VARIANT *pvarSystemId,
        [out, retval] IDOMDocumentType **newDocumentType);

    [id(DISPID_IHTMLDOMIMPLEMENTATION2_CREATEDOCUMENT)]
    HRESULT createDocument(
        [in] VARIANT *pvarNS,
        [in] VARIANT *pvarTagName,
        [in] IDOMDocumentType *pDocumentType,
        [out, retval] IHTMLDocument7 **ppnewDocument);

    [id(DISPID_IHTMLDOMIMPLEMENTATION2_CREATEHTMLDOCUMENT)]
    HRESULT createHTMLDocument(
        [in] BSTR bstrTitle,
        [out, retval] IHTMLDocument7 **ppnewDocument);

    [id(DISPID_IHTMLDOMIMPLEMENTATION2_IE9_HASFEATURE)]
    HRESULT hasFeature(
        [in] BSTR bstrfeature,
        [in, optional] VARIANT version,
        [out, retval] VARIANT_BOOL *pfHasFeature);
}

/*****************************************************************************
 *    DispHTMLDOMImplementation dispinterface
 */
[
    hidden,
    uuid(3050f58f-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLDOMImplementation
{
properties:
methods:
    [id(DISPID_IHTMLDOMIMPLEMENTATION_HASFEATURE)]
    VARIANT_BOOL hasFeature(
        [in] BSTR bstrfeature,
        [in, optional] VARIANT version);

    [id(DISPID_IHTMLDOMIMPLEMENTATION2_CREATEDOCUMENTTYPE)]
    IDOMDocumentType *createDocumentType(
        [in] BSTR bstrQualifiedName,
        [in] VARIANT *pvarPublicId,
        [in] VARIANT *pvarSystemId);

    [id(DISPID_IHTMLDOMIMPLEMENTATION2_CREATEDOCUMENT)]
    IHTMLDocument7 *createDocument(
        [in] VARIANT *pvarNS,
        [in] VARIANT *pvarTagName,
        [in] IDOMDocumentType *pDocumentType);

    [id(DISPID_IHTMLDOMIMPLEMENTATION2_CREATEHTMLDOCUMENT)]
    IHTMLDocument7 *createHTMLDocument([in] BSTR bstrTitle);

    [id(DISPID_IHTMLDOMIMPLEMENTATION2_IE9_HASFEATURE)]
    VARIANT_BOOL ie9_hasFeature(
        [in] BSTR bstrfeature,
        [in, optional] VARIANT version);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden]
    IDispatch *constructor();
}

/*****************************************************************************
 *    DispHTMLDOMAttribute dispinterface
 */
[
    hidden,
    uuid(3050f564-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLDOMAttribute
{
 properties:
    methods:
    [propget, id(DISPID_IHTMLDOMATTRIBUTE_NODENAME)]
    BSTR nodeName();

    [propput, id(DISPID_IHTMLDOMATTRIBUTE_NODEVALUE)]
    void nodeValue(VARIANT v);

    [propget, id(DISPID_IHTMLDOMATTRIBUTE_NODEVALUE)]
    VARIANT nodeValue();

    [propget, id(DISPID_IHTMLDOMATTRIBUTE_SPECIFIED)]
    VARIANT_BOOL specified();

    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_NAME)]
    BSTR name();

    [propput, id(DISPID_IHTMLDOMATTRIBUTE2_VALUE)]
    void value(BSTR v);

    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_VALUE)]
    BSTR value();

    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_EXPANDO)]
    VARIANT_BOOL expando();

    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_NODETYPE)]
    long nodeType();

    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_PARENTNODE)]
    IHTMLDOMNode *parentNode();

    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_CHILDNODES)]
    IDispatch *childNodes();

    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_FIRSTCHILD)]
    IHTMLDOMNode *firstChild();

    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_LASTCHILD)]
    IHTMLDOMNode *lastChild();

    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_PREVIOUSSIBLING)]
    IHTMLDOMNode *previousSibling();

    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_NEXTSIBLING)]
    IHTMLDOMNode *nextSibling();

    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_ATTRIBUTES)]
    IDispatch *attributes();

    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_OWNERDOCUMENT)]
    IDispatch *ownerDocument();

    [id(DISPID_IHTMLDOMATTRIBUTE2_INSERTBEFORE)]
    IHTMLDOMNode *insertBefore(
            [in] IHTMLDOMNode *newChild,
            [optional, in] VARIANT refChild);

    [id(DISPID_IHTMLDOMATTRIBUTE2_REPLACECHILD)]
    IHTMLDOMNode *replaceChild(
            [in] IHTMLDOMNode *newChild,
            [in] IHTMLDOMNode *oldChild);

    [id(DISPID_IHTMLDOMATTRIBUTE2_REMOVECHILD)]
    IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);

    [id(DISPID_IHTMLDOMATTRIBUTE2_APPENDCHILD)]
    IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);

    [id(DISPID_IHTMLDOMATTRIBUTE2_HASCHILDNODES)]
    VARIANT_BOOL hasChildNodes();

    [id(DISPID_IHTMLDOMATTRIBUTE2_CLONENODE)]
    IHTMLDOMAttribute *cloneNode([in] VARIANT_BOOL fDeep);

    [propput, id(DISPID_IHTMLDOMATTRIBUTE3_IE8_NODEVALUE)]
    void ie8_nodeValue(VARIANT v);

    [propget, id(DISPID_IHTMLDOMATTRIBUTE3_IE8_NODEVALUE)]
    VARIANT ie8_nodeValue();

    [propput, id(DISPID_IHTMLDOMATTRIBUTE3_IE8_VALUE)]
    void ie8_value(BSTR v);

    [propget, id(DISPID_IHTMLDOMATTRIBUTE3_IE8_VALUE)]
    BSTR ie8_value();

    [propget, id(DISPID_IHTMLDOMATTRIBUTE3_IE8_SPECIFIED)]
    VARIANT_BOOL ie8_specified();

    [propget, id(DISPID_IHTMLDOMATTRIBUTE3_OWNERELEMENT)]
    IHTMLElement2 *ownerElement();

    WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL;
}

/*****************************************************************************
 *    IHTMLDocumentCompatibleInfo interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3051041a-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDocumentCompatibleInfo : IDispatch
{
    [propget, id(DISPID_IHTMLDOCUMENTCOMPATIBLEINFO_USERAGENT)]
    HRESULT userAgent([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLDOCUMENTCOMPATIBLEINFO_VERSION)]
    HRESULT version([retval, out] BSTR *p);
}

/*****************************************************************************
 *    IHTMLDocumentCompatibleInfoCollection interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510418-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDocumentCompatibleInfoCollection : IDispatch
{
    [propget, id(DISPID_IHTMLDOCUMENTCOMPATIBLEINFOCOLLECTION_LENGTH)]
    HRESULT length([retval, out] long *p);

    [id(DISPID_IHTMLDOCUMENTCOMPATIBLEINFOCOLLECTION_ITEM)]
    HRESULT item([in] long i, [retval, out]IHTMLDocumentCompatibleInfo **p);
}

/*****************************************************************************
 *    DispHTMLDOMTextNode dispinterface
 */
[
    hidden,
    uuid(3050f565-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLDOMTextNode
{
properties:
methods:
    [propput, id(DISPID_IHTMLDOMTEXTNODE_DATA)]
    void data(BSTR v);

    [propget, id(DISPID_IHTMLDOMTEXTNODE_DATA)]
    BSTR data();

    [id(DISPID_IHTMLDOMTEXTNODE_TOSTRING)]
    BSTR toString();

    [propget, id(DISPID_IHTMLDOMTEXTNODE_LENGTH)]
    LONG length();

    [id(DISPID_IHTMLDOMTEXTNODE_SPLITTEXT)]
    IHTMLDOMNode *splitText([in] LONG offset);

    [id(DISPID_IHTMLDOMTEXTNODE2_SUBSTRINGDATA)]
    BSTR substringData(
            [in] LONG offset,
            [in] LONG Count);

    [id(DISPID_IHTMLDOMTEXTNODE2_APPENDDATA)]
    void appendData([in] BSTR bstrstring);

    [id(DISPID_IHTMLDOMTEXTNODE2_INSERTDATA)]
    void insertData(
            [in] LONG offset,
            [in] BSTR bstrstring);

    [id(DISPID_IHTMLDOMTEXTNODE2_DELETEDATA)]
    void deleteData(
            [in] LONG offset,
            [in] LONG Count);

    [id(DISPID_IHTMLDOMTEXTNODE2_REPLACEDATA)]
    void replaceData(
            [in] LONG offset,
            [in] LONG Count,
            [in] BSTR bstrstring);

    WINE_HTMLDOMNODE_DISPINTERFACE_DECL;
}

/*****************************************************************************
 *    IHTMLAttributeCollection interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f4c3-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLAttributeCollection : IDispatch
{
    [propget, id(DISPID_IHTMLATTRIBUTECOLLECTION_LENGTH)]
    HRESULT length(
            [retval, out] long *p);

    [propget, id(DISPID_IHTMLATTRIBUTECOLLECTION__NEWENUM), hidden, restricted]
    HRESULT _newEnum(
            [retval, out] IUnknown **p);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION_ITEM)]
    HRESULT item(
            [optional, in] VARIANT *name,
            [retval, out] IDispatch **pdisp);
}

/*****************************************************************************
 *    IHTMLAttributeCollection2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f80a-98b5-11cf-bb82-00aa00bdce0b)
    ]
interface IHTMLAttributeCollection2 : IDispatch
{
    [id(DISPID_IHTMLATTRIBUTECOLLECTION2_GETNAMEDITEM)]
    HRESULT getNamedItem(
            [in] BSTR bstrName,
            [retval, out] IHTMLDOMAttribute **newretNode);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION2_SETNAMEDITEM)]
    HRESULT setNamedItem(
            [in] IHTMLDOMAttribute *ppNode,
            [retval, out] IHTMLDOMAttribute **newretNode);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION2_REMOVENAMEDITEM)]
    HRESULT removeNamedItem(
            [in] BSTR bstrName,
            [retval, out] IHTMLDOMAttribute **newretNode);
}

/*****************************************************************************
 *    IHTMLAttributeCollection3 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510469-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLAttributeCollection3 : IDispatch
{
    [id(DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_GETNAMEDITEM)]
    HRESULT getNamedItem(
            [in] BSTR bstrName,
            [retval, out] IHTMLDOMAttribute **ppNodeOut);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_SETNAMEDITEM)]
    HRESULT setNamedItem(
            [in] IHTMLDOMAttribute *pNodeIn,
            [retval, out] IHTMLDOMAttribute **ppNodeOut);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_REMOVENAMEDITEM)]
    HRESULT removeNamedItem(
            [in] BSTR bstrName,
            [retval, out] IHTMLDOMAttribute **ppNodeOut);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_ITEM)]
    HRESULT item(
            [in] long index,
            [retval, out] IHTMLDOMAttribute **ppNodeOut);

    [propget, id(DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_LENGTH)]
    HRESULT length([retval, out] long *p);
}

/*****************************************************************************
 *    IHTMLAttributeCollection4 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305106fa-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLAttributeCollection4 : IDispatch
{
    [id(DISPID_IHTMLATTRIBUTECOLLECTION4_GETNAMEDITEMNS)]
    HRESULT getNamedItemNS(
            [in] VARIANT *pvarNS,
            [in] BSTR bstrName,
            [out, retval] IHTMLDOMAttribute2 **ppNodeOut);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION4_SETNAMEDITEMNS)]
    HRESULT setNamedItemNS(
            [in] IHTMLDOMAttribute2 *pNodeIn,
            [out, retval] IHTMLDOMAttribute2 **ppNodeOut);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION4_REMOVENAMEDITEMNS)]
    HRESULT removeNamedItemNS(
            [in] VARIANT *pvarNS,
            [in] BSTR bstrName,
            [out, retval] IHTMLDOMAttribute2 **ppNodeOut);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_GETNAMEDITEM)]
    HRESULT getNamedItem(
            [in] BSTR bstrName,
            [out, retval] IHTMLDOMAttribute2 **ppNodeOut);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_SETNAMEDITEM)]
    HRESULT setNamedItem(
            [in] IHTMLDOMAttribute2 *pNodeIn,
            [out, retval] IHTMLDOMAttribute2 **ppNodeOut);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_REMOVENAMEDITEM)]
    HRESULT removeNamedItem(
            [in] BSTR bstrName,
            [out, retval] IHTMLDOMAttribute2 **ppNodeOut);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_ITEM)]
    HRESULT item(
            [in] long index,
            [out, retval] IHTMLDOMAttribute2 **ppNodeOut);

    [propget, id(DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_LENGTH)]
    HRESULT length([out, retval] long *p);
}

/*****************************************************************************
 *    DispHTMLAttributeCollection dispinterface
 */
[
    hidden,
    uuid(3050f56c-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLAttributeCollection
{
properties:
methods:
    [propget, id(DISPID_IHTMLATTRIBUTECOLLECTION_LENGTH)]
    long length();

    [propget, id(DISPID_IHTMLATTRIBUTECOLLECTION__NEWENUM), hidden, restricted]
    IUnknown *_newEnum();

    [id(DISPID_IHTMLATTRIBUTECOLLECTION_ITEM)]
    IDispatch *item([optional, in] VARIANT *name);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION2_GETNAMEDITEM)]
    IHTMLDOMAttribute *getNamedItem([in] BSTR bstrName);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION2_SETNAMEDITEM)]
    IHTMLDOMAttribute *setNamedItem([in] IHTMLDOMAttribute *ppNode);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION2_REMOVENAMEDITEM)]
    IHTMLDOMAttribute *removeNamedItem([in] BSTR bstrName);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_GETNAMEDITEM)]
    IHTMLDOMAttribute *ie8_getNamedItem([in] BSTR bstrName);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_SETNAMEDITEM)]
    IHTMLDOMAttribute *ie8_setNamedItem([in] IHTMLDOMAttribute *pNodeIn);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_REMOVENAMEDITEM)]
    IHTMLDOMAttribute *ie8_removeNamedItem([in] BSTR bstrName);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_ITEM)]
    IHTMLDOMAttribute *ie8_item([in] long index);

    [propget, id(DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_LENGTH)]
    long ie8_length();

    [id(DISPID_IHTMLATTRIBUTECOLLECTION4_GETNAMEDITEMNS)]
    IHTMLDOMAttribute2 *getNamedItemNS([in] VARIANT *pvarNS, [in] BSTR bstrName);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION4_SETNAMEDITEMNS)]
    IHTMLDOMAttribute2 *setNamedItemNS([in] IHTMLDOMAttribute2 *pNodeIn);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION4_REMOVENAMEDITEMNS)]
    IHTMLDOMAttribute2 *removeNamedItemNS([in] VARIANT *pvarNS, [in] BSTR bstrName);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_GETNAMEDITEM)]
    IHTMLDOMAttribute2 *ie9_getNamedItem([in] BSTR bstrName);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_SETNAMEDITEM)]
    IHTMLDOMAttribute2 *ie9_setNamedItem([in] IHTMLDOMAttribute2 *pNodeIn);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_REMOVENAMEDITEM)]
    IHTMLDOMAttribute2 *ie9_removeNamedItem([in] BSTR bstrName);

    [id(DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_ITEM)]
    IHTMLDOMAttribute2 *ie9_item([in] long index);

    [propget, id(DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_LENGTH)]
    long ie9_length();

    [propget, id(DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden]
    IDispatch *constructor();
}

/*****************************************************************************
 *    IHTMLDOMChildrenCollection interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f5ab-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDOMChildrenCollection : IDispatch
{
    [propget, id(DISPID_IHTMLDOMCHILDRENCOLLECTION_LENGTH)]
    HRESULT length([out, retval] LONG *p);

    [propget, id(DISPID_IHTMLDOMCHILDRENCOLLECTION__NEWENUM), hidden, restricted]
    HRESULT _newEnum([out, retval] IUnknown **p);

    [id(DISPID_IHTMLDOMCHILDRENCOLLECTION_ITEM)]
    HRESULT item(
            [in] LONG index,
            [out, retval] IDispatch **ppItem);
}

/*****************************************************************************
 *    DispDOMChildrenCollection dispinterface
 */
[
    hidden,
    uuid(3050f577-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispDOMChildrenCollection
{
properties:
methods:
    [propget, id(DISPID_IHTMLDOMCHILDRENCOLLECTION_LENGTH)]
    LONG length();

    [propget, id(DISPID_IHTMLDOMCHILDRENCOLLECTION__NEWENUM), hidden, restricted]
    IUnknown *_newEnum();

    [id(DISPID_IHTMLDOMCHILDRENCOLLECTION_ITEM)]
    IDispatch *item([in] LONG index);
}

/*****************************************************************************
 *    IHTMLElement interface
 */
[
    odl,
    dual,
    oleautomation,
    uuid(3050f1FF-98B5-11CF-BB82-00AA00BDCE0B)
]
interface IHTMLElement : IDispatch
{
    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
    HRESULT setAttribute(
        [in] BSTR strAttributeName,
        [in] VARIANT AttributeValue,
        [defaultvalue(1), in] LONG lFlags);

    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
    HRESULT getAttribute(
        [in] BSTR strAttributeName,
        [defaultvalue(0), in] LONG lFlags,
        [retval, out] VARIANT *AttributeValue);

    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
    HRESULT removeAttribute(
        [in] BSTR strAttributeName,
        [defaultvalue(1), in] LONG lFlags,
        [retval, out] VARIANT_BOOL *pfSuccess);

    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME)]
    HRESULT className([in] BSTR v);

    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME)]
    HRESULT className([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLELEMENT_ID)]
    HRESULT id([in] BSTR v);

    [propget, id(DISPID_IHTMLELEMENT_ID)]
    HRESULT id([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
    HRESULT tagName([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
    HRESULT parentElement([retval, out] IHTMLElement **p);

    [propget, id(DISPID_IHTMLELEMENT_STYLE)]
    HRESULT style([retval, out] IHTMLStyle **p);

    [propput, id(DISPID_IHTMLELEMENT_ONHELP)]
    HRESULT onhelp([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT_ONHELP)]
    HRESULT onhelp([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT_ONCLICK)]
    HRESULT onclick([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT_ONCLICK)]
    HRESULT onclick([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK)]
    HRESULT ondblclick([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK)]
    HRESULT ondblclick([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN)]
    HRESULT onkeydown([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN)]
    HRESULT onkeydown([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP)]
    HRESULT onkeyup([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP)]
    HRESULT onkeyup([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS)]
    HRESULT onkeypress([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS)]
    HRESULT onkeypress([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT)]
    HRESULT onmouseout([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT)]
    HRESULT onmouseout([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER)]
    HRESULT onmouseover([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER)]
    HRESULT onmouseover([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE)]
    HRESULT onmousemove([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE)]
    HRESULT onmousemove([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN)]
    HRESULT onmousedown([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN)]
    HRESULT onmousedown([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP)]
    HRESULT onmouseup([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP)]
    HRESULT onmouseup([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
    HRESULT document([retval, out] IDispatch **p);

    [propput, id(DISPID_IHTMLELEMENT_TITLE)]
    HRESULT title([in] BSTR v);

    [propget, id(DISPID_IHTMLELEMENT_TITLE)]
    HRESULT title([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE)]
    HRESULT language([in] BSTR v);

    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE)]
    HRESULT language([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART)]
    HRESULT onselectstart([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART)]
    HRESULT onselectstart([retval, out] VARIANT *p);

    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
    HRESULT scrollIntoView([optional, in] VARIANT varargStart);

    [id(DISPID_IHTMLELEMENT_CONTAINS)]
    HRESULT contains(
        [in] IHTMLElement *pChild,
        [retval, out] VARIANT_BOOL *pfResult);

    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX)]
    HRESULT sourceIndex([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
    HRESULT recordNumber([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT_LANG)]
    HRESULT lang([in] BSTR v);

    [propget, id(DISPID_IHTMLELEMENT_LANG)]
    HRESULT lang([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
    HRESULT offsetLeft([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
    HRESULT offsetTop([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
    HRESULT offsetWidth([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
    HRESULT offsetHeight([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
    HRESULT offsetParent([retval, out] IHTMLElement **p);

    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
    HRESULT innerHTML([in] BSTR v);

    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
    HRESULT innerHTML([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
    HRESULT innerText([in] BSTR v);

    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
    HRESULT innerText([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
    HRESULT outerHTML([in] BSTR v);

    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
    HRESULT outerHTML([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
    HRESULT outerText([in] BSTR v);

    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
    HRESULT outerText([retval, out] BSTR *p);

    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
    HRESULT insertAdjacentHTML([in] BSTR where, [in] BSTR html);

    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
    HRESULT insertAdjacentText([in] BSTR where, [in] BSTR text);

    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
    HRESULT parentTextEdit([retval, out] IHTMLElement **p);

    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
    HRESULT isTextEdit([retval, out] VARIANT_BOOL *p);

    [id(DISPID_IHTMLELEMENT_CLICK)]
    HRESULT click();

    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
    HRESULT filters([retval, out] IHTMLFiltersCollection **p);

    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART)]
    HRESULT ondragstart([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART)]
    HRESULT ondragstart([retval, out] VARIANT *p);

    [id(DISPID_IHTMLELEMENT_TOSTRING)]
    HRESULT toString([retval, out] BSTR *String);

    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE)]
    HRESULT onbeforeupdate([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE)]
    HRESULT onbeforeupdate([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE)]
    HRESULT onafterupdate([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE)]
    HRESULT onafterupdate([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE)]
    HRESULT onerrorupdate([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE)]
    HRESULT onerrorupdate([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT)]
    HRESULT onrowexit([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT)]
    HRESULT onrowexit([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER)]
    HRESULT onrowenter([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER)]
    HRESULT onrowenter([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED)]
    HRESULT ondatasetchanged([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED)]
    HRESULT ondatasetchanged([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE)]
    HRESULT ondataavailable([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE)]
    HRESULT ondataavailable([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE)]
    HRESULT ondatasetcomplete([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE)]
    HRESULT ondatasetcomplete([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE)]
    HRESULT onfilterchange([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE)]
    HRESULT onfilterchange([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
    HRESULT children([retval, out] IDispatch **p);

    [propget, id(DISPID_IHTMLELEMENT_ALL)]
    HRESULT all([retval, out] IDispatch **p);
}

#define WINE_IHTMLELEMENT_DISPINTERFACE_DECL                            \
    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]                              \
    void setAttribute(                                                  \
        [in] BSTR strAttributeName,                                     \
        [in] VARIANT AttValue,                                          \
        [defaultvalue(1), in] LONG lFlags);                             \
                                                                        \
    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]                              \
    VARIANT getAttribute(                                               \
        [in] BSTR strAttributeName,                                     \
        [defaultvalue(0), in] LONG lFlags);                             \
                                                                        \
    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]                           \
    VARIANT_BOOL removeAttribute(                                       \
        [in] BSTR strAttributeName,                                     \
        [defaultvalue(1), in] LONG lFlags);                             \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]              \
    void className(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]              \
    BSTR className();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_ID), bindable]                     \
    void id(BSTR v);                                                    \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ID), bindable]                     \
    BSTR id();                                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]                          \
    BSTR tagName();                                                     \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]                    \
    IHTMLElement *parentElement();                                      \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]              \
    IHTMLStyle *style();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]    \
    void onhelp(VARIANT v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]    \
    VARIANT onhelp();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]   \
    void onclick(VARIANT v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]   \
    VARIANT onclick();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]\
    void ondblclick(VARIANT v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]\
    VARIANT ondblclick();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] \
    void onkeydown(VARIANT v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] \
    VARIANT onkeydown();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]   \
    void onkeyup(VARIANT v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]   \
    VARIANT onkeyup();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]\
    void onkeypress(VARIANT v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]\
    VARIANT onkeypress();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]\
    void onmouseout(VARIANT v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]\
    VARIANT onmouseout();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] \
    void onmouseover(VARIANT v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] \
    VARIANT onmouseover();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] \
    void onmousemove(VARIANT v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] \
    VARIANT onmousemove();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] \
    void onmousedown(VARIANT v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] \
    VARIANT onmousedown();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] \
    void onmouseup(VARIANT v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] \
    VARIANT onmouseup();                                                \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch* document();  \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]     \
    void title(BSTR v);                                                 \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]     \
    BSTR title();                                                       \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]  \
    void language(BSTR v);                                              \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]  \
    BSTR language();                                                    \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] \
    void onselectstart(VARIANT v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] \
    VARIANT onselectstart();                                            \
                                                                        \
    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]                            \
    void scrollIntoView([optional, in] VARIANT varargStart);            \
                                                                        \
    [id(DISPID_IHTMLELEMENT_CONTAINS)]                                  \
    VARIANT_BOOL contains([in] IHTMLElement* pChild);                   \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]            \
    LONG sourceIndex();                                                 \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]                     \
    VARIANT recordNumber();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_LANG)]                             \
    void lang(BSTR v);                                                  \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_LANG)]                             \
    BSTR lang();                                                        \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]                       \
    LONG offsetLeft();                                                  \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]                        \
    LONG offsetTop();                                                   \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]                      \
    LONG offsetWidth();                                                 \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]                     \
    LONG offsetHeight();                                                \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]                     \
    IHTMLElement* offsetParent();                                       \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]                        \
    void innerHTML(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]                        \
    BSTR innerHTML();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]                        \
    void innerText(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]                        \
    BSTR innerText();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]                        \
    void outerHTML(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]                        \
    BSTR outerHTML();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]                        \
    void outerText(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]                        \
    BSTR outerText();                                                   \
                                                                        \
    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]                        \
    void insertAdjacentHTML(                                            \
        [in] BSTR where,                                                \
        [in] BSTR html);                                                \
                                                                        \
    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]                        \
    void insertAdjacentText(                                            \
        [in] BSTR where,                                                \
        [in] BSTR text);                                                \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]                   \
    IHTMLElement* parentTextEdit();                                     \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]                       \
    VARIANT_BOOL isTextEdit();                                          \
                                                                        \
    [id(DISPID_IHTMLELEMENT_CLICK)]                                     \
    void click();                                                       \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]                          \
    IHTMLFiltersCollection* filters();                                  \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] \
    void ondragstart(VARIANT v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] \
    VARIANT ondragstart();                                              \
                                                                        \
    [id(DISPID_IHTMLELEMENT_TOSTRING)]                                  \
    BSTR toString();                                                    \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] \
    void onbeforeupdate(VARIANT v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] \
    VARIANT onbeforeupdate();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] \
    void onafterupdate(VARIANT v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] \
    VARIANT onafterupdate();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] \
    void onerrorupdate(VARIANT v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] \
    VARIANT onerrorupdate();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] \
    void onrowexit(VARIANT v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] \
    VARIANT onrowexit();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] \
    void onrowenter(VARIANT v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] \
    VARIANT onrowenter();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] \
    void ondatasetchanged(VARIANT v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] \
    VARIANT ondatasetchanged();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] \
    void ondataavailable(VARIANT v);                                    \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] \
    VARIANT ondataavailable();                                          \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] \
    void ondatasetcomplete(VARIANT v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] \
    VARIANT ondatasetcomplete();                                        \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] \
    void onfilterchange(VARIANT v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] \
    VARIANT onfilterchange();                                           \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]                         \
    IDispatch* children();                                              \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT_ALL)]                              \
    IDispatch* all()

/*****************************************************************************
 *    IHTMLElement2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f434-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLElement2 : IDispatch
{
    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
    HRESULT scopeName([retval, out] BSTR *p);

    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
    HRESULT setCapture([defaultvalue(-1), in] VARIANT_BOOL containerCapture);

    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
    HRESULT releaseCapture();

    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
    HRESULT onlosecapture([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
    HRESULT onlosecapture([retval, out] VARIANT *p);

    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
    HRESULT componentFromPoint(
        [in] LONG x,
        [in] LONG y,
        [retval, out] BSTR *component);

    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
    HRESULT doScroll([optional, in] VARIANT component);

    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
    HRESULT onscroll([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
    HRESULT onscroll([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
    HRESULT ondrag([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
    HRESULT ondrag([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
    HRESULT ondragend([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
    HRESULT ondragend([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
    HRESULT ondragenter([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
    HRESULT ondragenter([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
    HRESULT ondragover([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
    HRESULT ondragover([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
    HRESULT ondragleave([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
    HRESULT ondragleave([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
    HRESULT ondrop([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
    HRESULT ondrop([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
    HRESULT onbeforecut([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
    HRESULT onbeforecut([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
    HRESULT oncut([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
    HRESULT oncut([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
    HRESULT onbeforecopy([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
    HRESULT onbeforecopy([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
    HRESULT oncopy([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
    HRESULT oncopy([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
    HRESULT onbeforepaste([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
    HRESULT onbeforepaste([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
    HRESULT onpaste([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
    HRESULT onpaste([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
    HRESULT currentStyle([retval, out] IHTMLCurrentStyle **p);

    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
    HRESULT onpropertychange([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
    HRESULT onpropertychange([retval, out] VARIANT *p);

    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
    HRESULT getClientRects([retval, out] IHTMLRectCollection **pRectCol);

    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
    HRESULT getBoundingClientRect([retval, out] IHTMLRect **pRect);

    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
    HRESULT setExpression(
        [in] BSTR propname,
        [in] BSTR expression,
        [defaultvalue(""), in] BSTR language);

    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
    HRESULT getExpression(
        [in] BSTR propname,
        [retval, out] VARIANT *expression);

    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
    HRESULT removeExpression(
        [in] BSTR propname,
        [retval, out] VARIANT_BOOL *pfSuccess);

    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
    HRESULT tabIndex([in] short v);

    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
    HRESULT tabIndex([retval, out] short *p);

    [id(DISPID_IHTMLELEMENT2_FOCUS)]
    HRESULT focus();

    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
    HRESULT accessKey([in] BSTR v);

    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
    HRESULT accessKey([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
    HRESULT onblur([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
    HRESULT onblur([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
    HRESULT onfocus([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
    HRESULT onfocus([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
    HRESULT onresize([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
    HRESULT onresize([retval, out] VARIANT *p);

    [id(DISPID_IHTMLELEMENT2_BLUR)]
    HRESULT blur();

    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
    HRESULT addFilter([in] IUnknown *pUnk);

    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
    HRESULT removeFilter([in] IUnknown *pUnk);

    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
    HRESULT clientHeight([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
    HRESULT clientWidth([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
    HRESULT clientTop([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
    HRESULT clientLeft([retval, out] LONG *p);

    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
    HRESULT attachEvent(
        [in] BSTR event,
        [in] IDispatch *pDisp,
        [retval, out] VARIANT_BOOL *pfResult);

    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
    HRESULT detachEvent(
        [in] BSTR event,
        [in] IDispatch *pDisp);

    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
    HRESULT readyState([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
    HRESULT onreadystatechange([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
    HRESULT onreadystatechange([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
    HRESULT onrowsdelete([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
    HRESULT onrowsdelete([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
    HRESULT onrowsinserted([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
    HRESULT onrowsinserted([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
    HRESULT oncellchange([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
    HRESULT oncellchange([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
    HRESULT dir([in] BSTR v);

    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
    HRESULT dir([retval, out] BSTR *p);

    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
    HRESULT createControlRange([retval, out] IDispatch **range);

    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
    HRESULT scrollHeight([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
    HRESULT scrollWidth([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
    HRESULT scrollTop([in] LONG v);

    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
    HRESULT scrollTop([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
    HRESULT scrollLeft([in] LONG v);

    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
    HRESULT scrollLeft([retval, out] LONG *p);

    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
    HRESULT clearAttributes();

    [id(DISPID_IHTMLELEMENT2_MERGEATTRIBUTES)]
    HRESULT mergeAttributes([in] IHTMLElement *mergeThis);

    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
    HRESULT oncontextmenu([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
    HRESULT oncontextmenu([retval, out] VARIANT *p);

    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
    HRESULT insertAdjacentElement(
        [in] BSTR where,
        [in] IHTMLElement *insertedElement,
        [retval, out] IHTMLElement **inserted);

    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
    HRESULT applyElement(
        [in] IHTMLElement *apply,
        [in] BSTR where,
        [retval, out] IHTMLElement **applied);

    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
    HRESULT getAdjacentText(
        [in] BSTR where,
        [retval, out] BSTR *text);

    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
    HRESULT replaceAdjacentText(
        [in] BSTR where,
        [in] BSTR newText,
        [retval, out] BSTR *oldText);

    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
    HRESULT canHaveChildren([retval, out] VARIANT_BOOL *p);

    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
    HRESULT addBehavior(
        [in] BSTR bstrUrl,
        [optional, in] VARIANT *pvarFactory,
        [retval, out] LONG *pCookie);

    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
    HRESULT removeBehavior(
        [in] LONG cookie,
        [retval, out] VARIANT_BOOL *pfResult);

    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
    HRESULT runtimeStyle([retval, out] IHTMLStyle **p);

    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
    HRESULT behaviorUrns([retval, out] IDispatch **p);

    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
    HRESULT tagUrn([in] BSTR v);

    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
    HRESULT tagUrn([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
    HRESULT onbeforeeditfocus([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
    HRESULT onbeforeeditfocus([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
    HRESULT readyStateValue([retval, out] LONG *p);

    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
    HRESULT getElementsByTagName(
        [in] BSTR v,
        [retval, out] IHTMLElementCollection **pelColl);
}

#define WINE_IHTMLELEMENT2_DISPINTERFACE_DECL                           \
    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]                       \
    BSTR scopeName();                                                   \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]                               \
    void setCapture([defaultvalue(-1), in] VARIANT_BOOL containerCapture); \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]                           \
    void releaseCapture();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] \
    void onlosecapture(VARIANT v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] \
    VARIANT onlosecapture();                                            \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]                       \
    BSTR componentFromPoint([in] LONG x,[in] LONG y);                   \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]                                 \
    void doScroll([optional, in] VARIANT component);                    \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] \
    void onscroll(VARIANT v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] \
    VARIANT onscroll();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]   \
    void ondrag(VARIANT v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]   \
    VARIANT ondrag();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] \
    void ondragend(VARIANT v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] \
    VARIANT ondragend();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] \
    void ondragenter(VARIANT v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] \
    VARIANT ondragenter();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] \
    void ondragover(VARIANT v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] \
    VARIANT ondragover();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] \
    void ondragleave(VARIANT v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] \
    VARIANT ondragleave();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]   \
    void ondrop(VARIANT v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]   \
    VARIANT ondrop();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] \
    void onbeforecut(VARIANT v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] \
    VARIANT onbeforecut();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]    \
    void oncut(VARIANT v);                                              \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]    \
    VARIANT oncut();                                                    \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] \
    void onbeforecopy(VARIANT v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] \
    VARIANT onbeforecopy();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]   \
    void oncopy(VARIANT v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]   \
    VARIANT oncopy();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] \
    void onbeforepaste(VARIANT v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] \
    VARIANT onbeforepaste();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]  \
    void onpaste(VARIANT v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]  \
    VARIANT onpaste();                                                  \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]      \
    IHTMLCurrentStyle* currentStyle();                                  \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] \
    void onpropertychange(VARIANT v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] \
    VARIANT onpropertychange();                                         \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]                           \
    IHTMLRectCollection* getClientRects();                              \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]                    \
    IHTMLRect* getBoundingClientRect();                                 \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]                            \
    void setExpression(                                                 \
        [in] BSTR propname,                                             \
        [in] BSTR expr,                                                 \
        [defaultvalue(""), in] BSTR lang);                              \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]                            \
    VARIANT getExpression([in] BSTR propname);                          \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]                         \
    VARIANT_BOOL removeExpression([in] BSTR propname);                  \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] \
    void tabIndex(short v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] \
    short tabIndex();                                                   \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_FOCUS)]                                    \
    void focus();                                                       \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]\
    void accessKey(BSTR v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]\
    BSTR accessKey();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]   \
    void onblur(VARIANT v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]   \
    VARIANT onblur();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]  \
    void onfocus(VARIANT v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]  \
    VARIANT onfocus();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] \
    void onresize(VARIANT v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] \
    VARIANT onresize();                                                 \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_BLUR)]                                     \
    void blur();                                                        \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]                                \
    void addFilter([in] IUnknown* pUnk);                                \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]                             \
    void removeFilter([in] IUnknown* pUnk);                             \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] \
    LONG clientHeight();                                                \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] \
    LONG clientWidth();                                                 \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] \
    LONG clientTop();                                                   \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] \
    LONG clientLeft();                                                  \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]                              \
    VARIANT_BOOL attachEvent(                                           \
            [in] BSTR event,                                            \
            [in] IDispatch* pDisp);                                     \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]                              \
    void detachEvent(                                                   \
            [in] BSTR event,                                            \
            [in] IDispatch* pDisp);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState(); \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] \
    void onreadystatechange(VARIANT v);                                 \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] \
    VARIANT onreadystatechange();                                       \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] \
    void onrowsdelete(VARIANT v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] \
    VARIANT onrowsdelete();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] \
    void onrowsinserted(VARIANT v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] \
    VARIANT onrowsinserted();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] \
    void oncellchange(VARIANT v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] \
    VARIANT oncellchange();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]      \
    void dir(BSTR v);                                                   \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]      \
    BSTR dir();                                                         \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]                       \
    IDispatch* createControlRange();                                    \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] \
    LONG scrollHeight();                                                \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] \
    LONG scrollWidth();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]\
    void scrollTop(LONG v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]\
    LONG scrollTop();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] \
    void scrollLeft(LONG v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] \
    LONG scrollLeft();                                                  \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]                          \
    void clearAttributes();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] \
    void oncontextmenu(VARIANT v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] \
    VARIANT oncontextmenu();                                            \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]                    \
    IHTMLElement* insertAdjacentElement(                                \
        [in] BSTR where,                                                \
        [in] IHTMLElement* insertedElement);                            \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]                             \
    IHTMLElement* applyElement([in] IHTMLElement* apply,[in] BSTR where); \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]                          \
    BSTR getAdjacentText([in] BSTR where);                              \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]                      \
    BSTR replaceAdjacentText([in] BSTR where,[in] BSTR newText);        \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]                 \
    VARIANT_BOOL canHaveChildren();                                     \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]                              \
    LONG addBehavior([in] BSTR bstrUrl,[optional, in] VARIANT* pvarFactory); \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]                           \
    VARIANT_BOOL removeBehavior([in] LONG cookie);                      \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]      \
    IHTMLStyle* runtimeStyle();                                         \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]                    \
    IDispatch* behaviorUrns();                                          \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]                          \
    void tagUrn(BSTR v);                                                \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]                          \
    BSTR tagUrn();                                                      \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] \
    void onbeforeeditfocus(VARIANT v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] \
    VARIANT onbeforeeditfocus();                                        \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] \
    LONG readyStateValue();                                             \
                                                                        \
    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]                     \
    IHTMLElementCollection* getElementsByTagName([in] BSTR v)

/*****************************************************************************
 *    IHTMLElement3 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f673-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLElement3 : IDispatch
{
    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] HRESULT mergeAttributes([in]
    IHTMLElement* mergeThis,[optional, in] VARIANT* pvarFlags);

    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
    HRESULT isMultiLine([retval, out] VARIANT_BOOL * p);

    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
    HRESULT canHaveHTML([retval, out] VARIANT_BOOL * p);

    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
    HRESULT onlayoutcomplete([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
    HRESULT onlayoutcomplete([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
    HRESULT onpage([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
    HRESULT onpage([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
    HRESULT inflateBlock([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
    HRESULT inflateBlock([retval, out] VARIANT_BOOL * p);

    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
    HRESULT onbeforedeactivate([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
    HRESULT onbeforedeactivate([retval, out] VARIANT * p);

    [id(DISPID_IHTMLELEMENT3_SETACTIVE)] HRESULT setActive();

    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
    HRESULT contentEditable([in] BSTR v);

    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
    HRESULT contentEditable([retval, out] BSTR * p);

    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
    HRESULT isContentEditable([retval, out] VARIANT_BOOL * p);

    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
    HRESULT hideFocus([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
    HRESULT hideFocus([retval, out] VARIANT_BOOL * p);

    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
    HRESULT disabled([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
    HRESULT disabled([retval, out] VARIANT_BOOL * p);

    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
    HRESULT isDisabled([retval, out] VARIANT_BOOL * p);

    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
    HRESULT onmove([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
    HRESULT onmove([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
    HRESULT oncontrolselect([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
    HRESULT oncontrolselect([retval, out] VARIANT * p);

    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
    HRESULT fireEvent(
        [in] BSTR bstrEventName,
        [optional, in] VARIANT* pvarEventObject,
        [retval, out] VARIANT_BOOL* pfCancelled);

    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
    HRESULT onresizestart([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
    HRESULT onresizestart([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
    HRESULT onresizeend([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
    HRESULT onresizeend([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
    HRESULT onmovestart([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
    HRESULT onmovestart([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
    HRESULT onmoveend([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
    HRESULT onmoveend([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
    HRESULT onmouseenter([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
    HRESULT onmouseenter([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
    HRESULT onmouseleave([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
    HRESULT onmouseleave([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
    HRESULT onactivate([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
    HRESULT onactivate([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
    HRESULT ondeactivate([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
    HRESULT ondeactivate([retval, out] VARIANT * p);

    [id(DISPID_IHTMLELEMENT3_DRAGDROP)] HRESULT dragDrop([retval, out]
    VARIANT_BOOL* pfRet);

    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
    HRESULT glyphMode([retval, out] LONG * p);
}

#define WINE_IHTMLELEMENT3_DISPINTERFACE_DECL                           \
                                                                        \
    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]                          \
    void mergeAttributes(                                               \
            [in] IHTMLElement* mergeThis,                               \
            [optional, in] VARIANT* pvarFlags);                         \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]                     \
    VARIANT_BOOL isMultiLine();                                         \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]                     \
    VARIANT_BOOL canHaveHTML();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] \
    void onlayoutcomplete(VARIANT v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] \
    VARIANT onlayoutcomplete();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]   \
    void onpage(VARIANT v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]   \
    VARIANT onpage();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] \
    void inflateBlock(VARIANT_BOOL v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] \
    VARIANT_BOOL inflateBlock();                                        \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] \
    void onbeforedeactivate(VARIANT v);                                 \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] \
    VARIANT onbeforedeactivate();                                       \
                                                                        \
    [id(DISPID_IHTMLELEMENT3_SETACTIVE)]                                \
    void setActive();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] \
    void contentEditable(BSTR v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] \
    BSTR contentEditable();                                             \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]               \
    VARIANT_BOOL isContentEditable();                                   \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]\
    void hideFocus(VARIANT_BOOL v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]\
    VARIANT_BOOL hideFocus();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] \
    void disabled(VARIANT_BOOL v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] \
    VARIANT_BOOL disabled();                                            \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]                      \
    VARIANT_BOOL isDisabled();                                          \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]   \
    void onmove(VARIANT v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]   \
    VARIANT onmove();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] \
    void oncontrolselect(VARIANT v);                                    \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] \
    VARIANT oncontrolselect();                                          \
                                                                        \
    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]                                \
    VARIANT_BOOL fireEvent(                                             \
        [in] BSTR bstrEventName,                                        \
        [optional, in] VARIANT* pvarEventObject);                       \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] \
    void onresizestart(VARIANT v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] \
    VARIANT onresizestart();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] \
    void onresizeend(VARIANT v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] \
    VARIANT onresizeend();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] \
    void onmovestart(VARIANT v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] \
    VARIANT onmovestart();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]\
    void onmoveend(VARIANT v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]\
    VARIANT onmoveend();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] \
    void onmouseenter(VARIANT v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] \
    VARIANT onmouseenter();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] \
    void onmouseleave(VARIANT v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] \
    VARIANT onmouseleave();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] \
    void onactivate(VARIANT v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] \
    VARIANT onactivate();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] \
    void ondeactivate(VARIANT v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] \
    VARIANT ondeactivate();                                             \
                                                                        \
    [id(DISPID_IHTMLELEMENT3_DRAGDROP)]                                 \
    VARIANT_BOOL dragDrop();                                            \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] \
    LONG glyphMode()

/*****************************************************************************
 *    IHTMLElement4 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f80f-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLElement4 : IDispatch
{
    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
    HRESULT onmousewheel([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
    HRESULT onmousewheel([retval, out] VARIANT * p);

    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
    HRESULT normalize();

    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
    HRESULT getAttributeNode([in] BSTR bstrname,
        [retval, out] IHTMLDOMAttribute** ppAttribute);

    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
    HRESULT setAttributeNode(
        [in] IHTMLDOMAttribute* pattr,
        [retval, out] IHTMLDOMAttribute** ppretAttribute);

    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
    HRESULT removeAttributeNode(
        [in] IHTMLDOMAttribute* pattr,
        [retval, out] IHTMLDOMAttribute** ppretAttribute);

    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
    HRESULT onbeforeactivate([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
    HRESULT onbeforeactivate([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
    HRESULT onfocusin([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
    HRESULT onfocusin([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
    HRESULT onfocusout([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
    HRESULT onfocusout([retval, out] VARIANT * p);
}

#define WINE_IHTMLELEMENT4_DISPINTERFACE_DECL                           \
    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] \
    void onmousewheel(VARIANT v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] \
    VARIANT onmousewheel();                                             \
                                                                        \
    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]                                \
    void normalize();                                                   \
                                                                        \
    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]                         \
    IHTMLDOMAttribute* getAttributeNode([in] BSTR bstrname);            \
                                                                        \
    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]                         \
    IHTMLDOMAttribute* setAttributeNode([in] IHTMLDOMAttribute* pattr); \
                                                                        \
    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]                      \
    IHTMLDOMAttribute* removeAttributeNode([in] IHTMLDOMAttribute* pattr); \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] \
    void onbeforeactivate(VARIANT v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] \
    VARIANT onbeforeactivate();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]\
    void onfocusin(VARIANT v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]\
    VARIANT onfocusin();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] \
    void onfocusout(VARIANT v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] \
    VARIANT onfocusout()

/*****************************************************************************
 *    IHTMLElement6 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305106f8-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLElement6 : IDispatch
{
    [id(DISPID_IHTMLELEMENT6_GETATTRIBUTENS)]
    HRESULT getAttributeNS(
        [in] VARIANT *pvarNS,
        [in] BSTR strAttributeName,
        [out, retval] VARIANT *AttributeValue);

    [id(DISPID_IHTMLELEMENT6_SETATTRIBUTENS)]
    HRESULT setAttributeNS(
        [in] VARIANT *pvarNS,
        [in] BSTR strAttributeName,
        [in] VARIANT *pvarAttributeValue);

    [id(DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)]
    HRESULT removeAttributeNS(
        [in] VARIANT *pvarNS,
        [in] BSTR strAttributeName);

    [id(DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)]
    HRESULT getAttributeNodeNS(
        [in] VARIANT *pvarNS,
        [in] BSTR bstrname,
        [out, retval] IHTMLDOMAttribute2 **ppretAttribute);

    [id(DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)]
    HRESULT setAttributeNodeNS(
        [in] IHTMLDOMAttribute2 *pattr,
        [out, retval] IHTMLDOMAttribute2 **ppretAttribute);

    [id(DISPID_IHTMLELEMENT6_HASATTRIBUTENS)]
    HRESULT hasAttributeNS(
        [in] VARIANT *pvarNS,
        [in] BSTR name,
        [out, retval] VARIANT_BOOL *pfHasAttribute);

    [id(DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)]
    HRESULT getAttribute(
        [in] BSTR strAttributeName,
        [out, retval] VARIANT *AttributeValue);

    [id(DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)]
    HRESULT setAttribute(
        [in] BSTR strAttributeName,
        [in] VARIANT *pvarAttributeValue);

    [id(DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)]
    HRESULT removeAttribute(
        [in] BSTR strAttributeName);

    [id(DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)]
    HRESULT getAttributeNode(
        [in] BSTR strAttributeName,
        [out, retval] IHTMLDOMAttribute2 **ppretAttribute);

    [id(DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)]
    HRESULT setAttributeNode(
        [in] IHTMLDOMAttribute2 *pattr,
        [out, retval] IHTMLDOMAttribute2 **ppretAttribute);

    [id(DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)]
    HRESULT removeAttributeNode(
        [in] IHTMLDOMAttribute2 *pattr,
        [out, retval] IHTMLDOMAttribute2 **ppretAttribute);

    [id(DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)]
    HRESULT hasAttribute(
        [in] BSTR name,
        [out, retval] VARIANT_BOOL *pfHasAttribute);

    [id(DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)]
    HRESULT getElementsByTagNameNS(
        [in] VARIANT *varNS,
        [in] BSTR bstrLocalName,
        [out, retval] IHTMLElementCollection **pelColl);

    [propget, id(DISPID_IHTMLELEMENT6_IE9_TAGNAME)]
    HRESULT tagName([out, retval] BSTR *p);

    [propget, id(DISPID_IHTMLELEMENT6_IE9_NODENAME)]
    HRESULT nodeName([out, retval] BSTR *p);

    [id(DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)]
    HRESULT getElementsByClassName(
        [in] BSTR v,
        [out, retval] IHTMLElementCollection **pel);

    [id(DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)]
    HRESULT msMatchesSelector(
        [in] BSTR v,
        [out, retval] VARIANT_BOOL *pfMatches);

    [propput, id(DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable]
    HRESULT onabort([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable]
    HRESULT onabort([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden]
    HRESULT oncanplay([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden]
    HRESULT oncanplay([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden]
    HRESULT oncanplaythrough([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden]
    HRESULT oncanplaythrough([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable]
    HRESULT onchange([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable]
    HRESULT onchange([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden]
    HRESULT ondurationchange([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden]
    HRESULT ondurationchange([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden]
    HRESULT onemptied([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden]
    HRESULT onemptied([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden]
    HRESULT onended([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden]
    HRESULT onended([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable]
    HRESULT onerror([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable]
    HRESULT onerror([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden]
    HRESULT oninput([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden]
    HRESULT oninput([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable]
    HRESULT onload([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable]
    HRESULT onload([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden]
    HRESULT onloadeddata([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden]
    HRESULT onloadeddata([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden]
    HRESULT onloadedmetadata([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden]
    HRESULT onloadedmetadata([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden]
    HRESULT onloadstart([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden]
    HRESULT onloadstart([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden]
    HRESULT onpause([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden]
    HRESULT onpause([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden]
    HRESULT onplay([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden]
    HRESULT onplay([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden]
    HRESULT onplaying([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden]
    HRESULT onplaying([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden]
    HRESULT onprogress([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden]
    HRESULT onprogress([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden]
    HRESULT onratechange([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden]
    HRESULT onratechange([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable]
    HRESULT onreset([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable]
    HRESULT onreset([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden]
    HRESULT onseeked([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden]
    HRESULT onseeked([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden]
    HRESULT onseeking([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden]
    HRESULT onseeking([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable]
    HRESULT onselect([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable]
    HRESULT onselect([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden]
    HRESULT onstalled([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden]
    HRESULT onstalled([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable]
    HRESULT onsubmit([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable]
    HRESULT onsubmit([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden]
    HRESULT onsuspend([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden]
    HRESULT onsuspend([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden]
    HRESULT ontimeupdate([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden]
    HRESULT ontimeupdate([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden]
    HRESULT onvolumechange([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden]
    HRESULT onvolumechange([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden]
    HRESULT onwaiting([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden]
    HRESULT onwaiting([out, retval] VARIANT *p);

    [id(DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)]
    HRESULT hasAttributes([out, retval] VARIANT_BOOL *pfHasAttributes);
}

#define WINE_IHTMLELEMENT6_DISPINTERFACE_DECL                           \
    [id(DISPID_IHTMLELEMENT6_GETATTRIBUTENS)]                           \
    VARIANT getAttributeNS(                                             \
        [in] VARIANT *pvarNS,                                           \
        [in] BSTR strAttributeName);                                    \
                                                                        \
    [id(DISPID_IHTMLELEMENT6_SETATTRIBUTENS)]                           \
    void setAttributeNS(                                                \
        [in] VARIANT *pvarNS,                                           \
        [in] BSTR strAttributeName,                                     \
        [in] VARIANT *pvarAttributeValue);                              \
                                                                        \
    [id(DISPID_IHTMLELEMENT6_REMOVEATTRIBUTENS)]                        \
    void removeAttributeNS(                                             \
        [in] VARIANT *pvarNS,                                           \
        [in] BSTR strAttributeName);                                    \
                                                                        \
    [id(DISPID_IHTMLELEMENT6_GETATTRIBUTENODENS)]                       \
    IHTMLDOMAttribute2 *getAttributeNodeNS(                             \
        [in] VARIANT *pvarNS,                                           \
        [in] BSTR bstrname);                                            \
                                                                        \
    [id(DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)]                       \
    IHTMLDOMAttribute2 *setAttributeNodeNS([in] IHTMLDOMAttribute2 *pattr); \
                                                                        \
    [id(DISPID_IHTMLELEMENT6_HASATTRIBUTENS)]                           \
    VARIANT_BOOL hasAttributeNS(                                        \
        [in] VARIANT *pvarNS,                                           \
        [in] BSTR name);                                                \
                                                                        \
    [id(DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)]                         \
    VARIANT ie9_getAttribute([in] BSTR strAttributeName);               \
                                                                        \
    [id(DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTE)]                         \
    void ie9_setAttribute(                                              \
        [in] BSTR strAttributeName,                                     \
        [in] VARIANT *pvarAttributeValue);                              \
                                                                        \
    [id(DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTE)]                      \
    void ie9_removeAttribute([in] BSTR strAttributeName);               \
                                                                        \
    [id(DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTENODE)]                     \
    IHTMLDOMAttribute2 *ie9_getAttributeNode([in] BSTR strAttributeName); \
                                                                        \
    [id(DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)]                     \
    IHTMLDOMAttribute2 *ie9_setAttributeNode([in] IHTMLDOMAttribute2 *pattr); \
                                                                        \
    [id(DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)]                  \
    IHTMLDOMAttribute2 *ie9_removeAttributeNode([in] IHTMLDOMAttribute2 *pattr); \
                                                                        \
    [id(DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)]                         \
    VARIANT_BOOL ie9_hasAttribute([in] BSTR name);                      \
                                                                        \
    [id(DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)]                   \
    IHTMLElementCollection *getElementsByTagNameNS(                     \
        [in] VARIANT *varNS,                                            \
        [in] BSTR bstrLocalName);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_IE9_TAGNAME)]                     \
    BSTR ie9_tagName();                                                 \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_IE9_NODENAME)]                    \
    BSTR ie9_nodeName();                                                \
                                                                        \
    [id(DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)]                   \
    IHTMLElementCollection *getElementsByClassName([in] BSTR v);        \
                                                                        \
    [id(DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)]                        \
    VARIANT_BOOL msMatchesSelector([in] BSTR v);                        \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable]  \
    void onabort(VARIANT v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable]  \
    VARIANT onabort();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] \
    void oncanplay(VARIANT v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONCANPLAY), displaybind, bindable, hidden] \
    VARIANT oncanplay();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] \
    void oncanplaythrough(VARIANT v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONCANPLAYTHROUGH), displaybind, bindable, hidden] \
    VARIANT oncanplaythrough();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] \
    void onchange(VARIANT v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] \
    VARIANT onchange();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] \
    void ondurationchange(VARIANT v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONDURATIONCHANGE), displaybind, bindable, hidden] \
    VARIANT ondurationchange();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] \
    void onemptied(VARIANT v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONEMPTIED), displaybind, bindable, hidden] \
    VARIANT onemptied();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] \
    void onended(VARIANT v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONENDED), displaybind, bindable, hidden] \
    VARIANT onended();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable]  \
    void onerror(VARIANT v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable]  \
    VARIANT onerror();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] \
    void oninput(VARIANT v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONINPUT), displaybind, bindable, hidden] \
    VARIANT oninput();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable]   \
    void onload(VARIANT v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable]   \
    VARIANT onload();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] \
    void onloadeddata(VARIANT v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONLOADEDDATA), displaybind, bindable, hidden] \
    VARIANT onloadeddata();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] \
    void onloadedmetadata(VARIANT v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONLOADEDMETADATA), displaybind, bindable, hidden] \
    VARIANT onloadedmetadata();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] \
    void onloadstart(VARIANT v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONLOADSTART), displaybind, bindable, hidden] \
    VARIANT onloadstart();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] \
    void onpause(VARIANT v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONPAUSE), displaybind, bindable, hidden] \
    VARIANT onpause();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] \
    void onplay(VARIANT v);                                             \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONPLAY), displaybind, bindable, hidden] \
    VARIANT onplay();                                                   \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] \
    void onplaying(VARIANT v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONPLAYING), displaybind, bindable, hidden] \
    VARIANT onplaying();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] \
    void onprogress(VARIANT v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONPROGRESS), displaybind, bindable, hidden] \
    VARIANT onprogress();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] \
    void onratechange(VARIANT v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONRATECHANGE), displaybind, bindable, hidden] \
    VARIANT onratechange();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable]  \
    void onreset(VARIANT v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable]  \
    VARIANT onreset();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] \
    void onseeked(VARIANT v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONSEEKED), displaybind, bindable, hidden] \
    VARIANT onseeked();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] \
    void onseeking(VARIANT v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONSEEKING), displaybind, bindable, hidden] \
    VARIANT onseeking();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] \
    void onselect(VARIANT v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] \
    VARIANT onselect();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] \
    void onstalled(VARIANT v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONSTALLED), displaybind, bindable, hidden] \
    VARIANT onstalled();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] \
    void onsubmit(VARIANT v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] \
    VARIANT onsubmit();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] \
    void onsuspend(VARIANT v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONSUSPEND), displaybind, bindable, hidden] \
    VARIANT onsuspend();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] \
    void ontimeupdate(VARIANT v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONTIMEUPDATE), displaybind, bindable, hidden] \
    VARIANT ontimeupdate();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] \
    void onvolumechange(VARIANT v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONVOLUMECHANGE), displaybind, bindable, hidden] \
    VARIANT onvolumechange();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] \
    void onwaiting(VARIANT v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT6_ONWAITING), displaybind, bindable, hidden] \
    VARIANT onwaiting();                                                \
                                                                        \
    [id(DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)]                        \
    VARIANT_BOOL ie9_hasAttributes()


/*****************************************************************************
 *    IHTMLElement7 interface
 */
[
    odl,
    oleautomation,
    uuid(305107aa-98b5-11cf-bb82-00aa00bdce0b),
    dual
]
interface IHTMLElement7 : IDispatch
{
    [propput, id(DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden]
    HRESULT onmspointerdown([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden]
    HRESULT onmspointerdown([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden]
    HRESULT onmspointermove([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden]
    HRESULT onmspointermove([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden]
    HRESULT onmspointerup([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden]
    HRESULT onmspointerup([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden]
    HRESULT onmspointerover([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden]
    HRESULT onmspointerover([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden]
    HRESULT onmspointerout([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden]
    HRESULT onmspointerout([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden]
    HRESULT onmspointercancel([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden]
    HRESULT onmspointercancel([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden]
    HRESULT onmspointerhover([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden]
    HRESULT onmspointerhover([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden]
    HRESULT onmslostpointercapture([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden]
    HRESULT onmslostpointercapture([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden]
    HRESULT onmsgotpointercapture([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden]
    HRESULT onmsgotpointercapture([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden]
    HRESULT onmsgesturestart([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden]
    HRESULT onmsgesturestart([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden]
    HRESULT onmsgesturechange([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden]
    HRESULT onmsgesturechange([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden]
    HRESULT onmsgestureend([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden]
    HRESULT onmsgestureend([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden]
    HRESULT onmsgesturehold([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden]
    HRESULT onmsgesturehold([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden]
    HRESULT onmsgesturetap([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden]
    HRESULT onmsgesturetap([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden]
    HRESULT onmsgesturedoubletap([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden]
    HRESULT onmsgesturedoubletap([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden]
    HRESULT onmsinertiastart([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden]
    HRESULT onmsinertiastart([out, retval] VARIANT *p);

    [id(DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)]
    HRESULT msSetPointerCapture([in] long pointerId);

    [id(DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)]
    HRESULT msReleasePointerCapture([in] long pointerId);

    [propput, id(DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden]
    HRESULT onmstransitionstart([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden]
    HRESULT onmstransitionstart([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden]
    HRESULT onmstransitionend([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden]
    HRESULT onmstransitionend([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden]
    HRESULT onmsanimationstart([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden]
    HRESULT onmsanimationstart([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden]
    HRESULT onmsanimationend([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden]
    HRESULT onmsanimationend([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden]
    HRESULT onmsanimationiteration([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden]
    HRESULT onmsanimationiteration([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden]
    HRESULT oninvalid([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden]
    HRESULT oninvalid([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable]
    HRESULT xmsAcceleratorKey([in] BSTR v);

    [propget, id(DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable]
    HRESULT xmsAcceleratorKey([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLELEMENT7_SPELLCHECK)]
    HRESULT spellcheck([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_SPELLCHECK)]
    HRESULT spellcheck([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden]
    HRESULT onmsmanipulationstatechanged([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden]
    HRESULT onmsmanipulationstatechanged([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden]
    HRESULT oncuechange([in] VARIANT v);

    [propget, id(DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden]
    HRESULT oncuechange([out, retval] VARIANT *p);
}

#define WINE_IHTMLELEMENT7_DISPINTERFACE_DECL                           \
    [propput, id(DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] \
    void onmspointerdown(VARIANT v);                                    \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONMSPOINTERDOWN), displaybind, bindable, hidden] \
    VARIANT onmspointerdown();                                          \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] \
    void onmspointermove(VARIANT v);                                    \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONMSPOINTERMOVE), displaybind, bindable, hidden] \
    VARIANT onmspointermove();                                          \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] \
    void onmspointerup(VARIANT v);                                      \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONMSPOINTERUP), displaybind, bindable, hidden] \
    VARIANT onmspointerup();                                            \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] \
    void onmspointerover(VARIANT v);                                    \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONMSPOINTEROVER), displaybind, bindable, hidden] \
    VARIANT onmspointerover();                                          \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] \
    void onmspointerout(VARIANT v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONMSPOINTEROUT), displaybind, bindable, hidden] \
    VARIANT onmspointerout();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] \
    void onmspointercancel(VARIANT v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONMSPOINTERCANCEL), displaybind, bindable, hidden] \
    VARIANT onmspointercancel();                                        \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] \
    void onmspointerhover(VARIANT v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONMSPOINTERHOVER), displaybind, bindable, hidden] \
    VARIANT onmspointerhover();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] \
    void onmslostpointercapture(VARIANT v);                             \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONMSLOSTPOINTERCAPTURE), displaybind, bindable, hidden] \
    VARIANT onmslostpointercapture();                                   \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] \
    void onmsgotpointercapture(VARIANT v);                              \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONMSGOTPOINTERCAPTURE), displaybind, bindable, hidden] \
    VARIANT onmsgotpointercapture();                                    \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] \
    void onmsgesturestart(VARIANT v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONMSGESTURESTART), displaybind, bindable, hidden] \
    VARIANT onmsgesturestart();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] \
    void onmsgesturechange(VARIANT v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONMSGESTURECHANGE), displaybind, bindable, hidden] \
    VARIANT onmsgesturechange();                                        \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] \
    void onmsgestureend(VARIANT v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONMSGESTUREEND), displaybind, bindable, hidden] \
    VARIANT onmsgestureend();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] \
    void onmsgesturehold(VARIANT v);                                    \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONMSGESTUREHOLD), displaybind, bindable, hidden] \
    VARIANT onmsgesturehold();                                          \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] \
    void onmsgesturetap(VARIANT v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONMSGESTURETAP), displaybind, bindable, hidden] \
    VARIANT onmsgesturetap();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] \
    void onmsgesturedoubletap(VARIANT v);                               \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONMSGESTUREDOUBLETAP), displaybind, bindable, hidden] \
    VARIANT onmsgesturedoubletap();                                     \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] \
    void onmsinertiastart(VARIANT v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONMSINERTIASTART), displaybind, bindable, hidden] \
    VARIANT onmsinertiastart();                                         \
                                                                        \
    [id(DISPID_IHTMLELEMENT7_MSSETPOINTERCAPTURE)]                      \
    void msSetPointerCapture([in] long pointerId);                      \
                                                                        \
    [id(DISPID_IHTMLELEMENT7_MSRELEASEPOINTERCAPTURE)]                  \
    void msReleasePointerCapture([in] long pointerId);                  \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] \
    void onmstransitionstart(VARIANT v);                                \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONMSTRANSITIONSTART), displaybind, bindable, hidden] \
    VARIANT onmstransitionstart();                                      \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] \
    void onmstransitionend(VARIANT v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONMSTRANSITIONEND), displaybind, bindable, hidden] \
    VARIANT onmstransitionend();                                        \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] \
    void onmsanimationstart(VARIANT v);                                 \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONMSANIMATIONSTART), displaybind, bindable, hidden] \
    VARIANT onmsanimationstart();                                       \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] \
    void onmsanimationend(VARIANT v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONMSANIMATIONEND), displaybind, bindable, hidden] \
    VARIANT onmsanimationend();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] \
    void onmsanimationiteration(VARIANT v);                             \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONMSANIMATIONITERATION), displaybind, bindable, hidden] \
    VARIANT onmsanimationiteration();                                   \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] \
    void oninvalid(VARIANT v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONINVALID), displaybind, bindable, hidden] \
    VARIANT oninvalid();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] \
    void xmsAcceleratorKey(BSTR v);                                     \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] \
    BSTR xmsAcceleratorKey();                                           \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_SPELLCHECK)]                      \
    void spellcheck(VARIANT v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_SPELLCHECK)]                      \
    VARIANT spellcheck();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] \
    void onmsmanipulationstatechanged(VARIANT v);                       \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable, hidden] \
    VARIANT onmsmanipulationstatechanged();                             \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] \
    void oncuechange(VARIANT v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] \
    VARIANT oncuechange()


/*****************************************************************************
 *    IElementTraversal interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510736-98b5-11cf-bb82-00aa00bdce0b)
]
interface IElementTraversal : IDispatch
{
    [propget, id(DISPID_IELEMENTTRAVERSAL_FIRSTELEMENTCHILD)]
    HRESULT firstElementChild([retval, out] IHTMLElement **p);
    [propget, id(DISPID_IELEMENTTRAVERSAL_LASTELEMENTCHILD)]
    HRESULT lastElementChild([retval, out] IHTMLElement **p);
    [propget, id(DISPID_IELEMENTTRAVERSAL_PREVIOUSELEMENTSIBLING)]
    HRESULT previousElementSibling([retval, out] IHTMLElement **p);
    [propget, id(DISPID_IELEMENTTRAVERSAL_NEXTELEMENTSIBLING)]
    HRESULT nextElementSibling([retval, out] IHTMLElement **p);
    [propget, id(DISPID_IELEMENTTRAVERSAL_CHILDELEMENTCOUNT)]
    HRESULT childElementCount([retval, out] long *p);
}

/*****************************************************************************
 *    IElementSelector interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510463-98b5-11cf-bb82-00aa00bdce0b)
]
interface IElementSelector : IDispatch
{
    [id(DISPID_IELEMENTSELECTOR_QUERYSELECTOR)]
    HRESULT querySelector(
        [in] BSTR v,
        [out, retval] IHTMLElement **pel);

    [id(DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)]
    HRESULT querySelectorAll(
        [in] BSTR v,
        [out, retval] IHTMLDOMChildrenCollection **pel);
}

#define WINE_IELEMENTSELECTOR_DISPINTERFACE_DECL                \
    [id(DISPID_IELEMENTSELECTOR_QUERYSELECTOR)]                 \
    IHTMLElement *querySelector([in] BSTR v);                   \
                                                                \
    [id(DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)]              \
    IHTMLDOMChildrenCollection *querySelectorAll([in] BSTR v)

/*****************************************************************************
 *    IHTMLUniqueName interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f4d0-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLUniqueName : IDispatch
{
    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
    HRESULT uniqueNumber([retval, out] LONG * p);

    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
    HRESULT uniqueID([retval, out] BSTR * p);
}

#define WINE_IHTMLUNIQUENAME_DISPINTERFACE_DECL                 \
    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]  \
    LONG uniqueNumber();                                        \
                                                                \
    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]      \
    BSTR uniqueID()

#define WINE_IHTMLELEMENT5_DISPINTERFACE_DECL                           \
    [id(DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)]                     \
    IHTMLDOMAttribute2 *ie8_getAttributeNode([in] BSTR bstrname);       \
                                                                        \
    [id(DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)]                     \
    IHTMLDOMAttribute2 *ie8_setAttributeNode([in] IHTMLDOMAttribute2 *pattr); \
                                                                        \
    [id(DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)]                  \
    IHTMLDOMAttribute2 *ie8_removeAttributeNode([in] IHTMLDOMAttribute2 *pattr); \
                                                                        \
    [id(DISPID_IHTMLELEMENT5_HASATTRIBUTE)]                             \
    VARIANT_BOOL hasAttribute([in] BSTR name);                          \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable]     \
    void role(BSTR v);                                                  \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable]     \
    BSTR role();                                                        \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] \
    void ariaBusy(BSTR v);                                              \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] \
    BSTR ariaBusy();                                                    \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] \
    void ariaChecked(BSTR v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] \
    BSTR ariaChecked();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] \
    void ariaDisabled(BSTR v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] \
    BSTR ariaDisabled();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] \
    void ariaExpanded(BSTR v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] \
    BSTR ariaExpanded();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable]\
    void ariaHaspopup(BSTR v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] \
    BSTR ariaHaspopup();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] \
    void ariaHidden(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] \
    BSTR ariaHidden();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] \
    void ariaInvalid(BSTR v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] \
    BSTR ariaInvalid();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] \
    void ariaMultiselectable(BSTR v);                                   \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] \
    BSTR ariaMultiselectable();                                         \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] \
    void ariaPressed(BSTR v);                                           \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] \
    BSTR ariaPressed();                                                 \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] \
    void ariaReadonly(BSTR v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] \
    BSTR ariaReadonly();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] \
    void ariaRequired(BSTR v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] \
    BSTR ariaRequired();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] \
    void ariaSecret(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] \
    BSTR ariaSecret();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] \
    void ariaSelected(BSTR v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] \
    BSTR ariaSelected();                                                \
                                                                        \
    [id(DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)]                         \
    VARIANT ie8_getAttribute([in] BSTR strAttributeName);               \
                                                                        \
    [id(DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)]                         \
    void ie8_setAttribute([in] BSTR strAttributeName,[in] VARIANT AttributeValue); \
                                                                        \
    [id(DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)]                      \
    VARIANT_BOOL ie8_removeAttribute([in] BSTR strAttributeName);       \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)]                  \
    IHTMLAttributeCollection3 *ie8_attributes();                        \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] \
    void ariaValuenow(BSTR v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] \
    BSTR ariaValuenow();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] \
    void ariaPosinset(short v);                                         \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] \
    short ariaPosinset();                                               \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] \
    void ariaSetsize(short v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] \
    short ariaSetsize();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable]\
    void ariaLevel(short v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable]\
    short ariaLevel();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] \
    void ariaValuemin(BSTR v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] \
    BSTR ariaValuemin();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] \
    void ariaValuemax(BSTR v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] \
    BSTR ariaValuemax();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] \
    void ariaControls(BSTR v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] \
    BSTR ariaControls();                                                \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] \
    void ariaDescribedby(BSTR v);                                       \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] \
    BSTR ariaDescribedby();                                             \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] \
    void ariaFlowto(BSTR v);                                            \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] \
    BSTR ariaFlowto();                                                  \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] \
    void ariaLabelledby(BSTR v);                                        \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] \
    BSTR ariaLabelledby();                                              \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] \
    void ariaActivedescendant(BSTR v);                                  \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] \
    BSTR ariaActivedescendant();                                        \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] \
    void ariaOwns(BSTR v);                                              \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] \
    BSTR ariaOwns();                                                    \
                                                                        \
    [id(DISPID_IHTMLELEMENT5_HASATTRIBUTES)]                            \
    VARIANT_BOOL hasAttributes();                                       \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] \
    void ariaLive(BSTR v);                                              \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] \
    BSTR ariaLive();                                                    \
                                                                        \
    [propput, id(DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] \
    void ariaRelevant(BSTR v);                                          \
                                                                        \
    [propget, id(DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] \
    BSTR ariaRelevant()

[
    odl,
    oleautomation,
    dual,
    uuid(3050f3f2-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDatabinding : IDispatch
{
    [propput, id(DISPID_IHTMLDATABINDING_DATAFLD)]
    HRESULT dataFld([in] BSTR v);

    [propget, id(DISPID_IHTMLDATABINDING_DATAFLD)]
    HRESULT dataFld([retval, out] BSTR * p);

    [propput, id(DISPID_IHTMLDATABINDING_DATASRC)]
    HRESULT dataSrc([in] BSTR v);

    [propget, id(DISPID_IHTMLDATABINDING_DATASRC)]
    HRESULT dataSrc([retval, out] BSTR * p);

    [propput, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
    HRESULT dataFormatAs([in] BSTR v);

    [propget, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
    HRESULT dataFormatAs([retval, out] BSTR * p);
}

#define WINE_IHTMLDATABINDING_DISPINTERFACE_DECL        \
    [propput, id(DISPID_IHTMLDATABINDING_DATAFLD)]      \
    void dataFld(BSTR v);                               \
                                                        \
    [propget, id(DISPID_IHTMLDATABINDING_DATAFLD)]      \
    BSTR dataFld();                                     \
                                                        \
    [propput, id(DISPID_IHTMLDATABINDING_DATASRC)]      \
    void dataSrc(BSTR v);                               \
                                                        \
    [propget, id(DISPID_IHTMLDATABINDING_DATASRC)]      \
    BSTR dataSrc();                                     \
                                                        \
    [propput, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)] \
    void dataFormatAs(BSTR v);                          \
                                                        \
    [propget, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)] \
    BSTR dataFormatAs()

#define WINE_HTMLELEMENT_INTERFACES             \
    interface IHTMLElement;                     \
    interface IHTMLElement2;                    \
    interface IHTMLElement3;                    \
    interface IHTMLElement4;                    \
    interface IHTMLUniqueName;                  \
    interface IHTMLDOMNode;                     \
    interface IHTMLDOMNode2;                    \
 /* interface IHTMLElement5; */                 \
    interface IHTMLElement6;                    \
    interface IHTMLDOMConstructor;              \
    interface IHTMLElement7

#define WINE_HTMLELEMENT_DISPINTERFACE_DECL     \
    WINE_IHTMLELEMENT_DISPINTERFACE_DECL;       \
    WINE_IHTMLELEMENT2_DISPINTERFACE_DECL;      \
    WINE_IHTMLELEMENT3_DISPINTERFACE_DECL;      \
    WINE_IHTMLELEMENT4_DISPINTERFACE_DECL;      \
    WINE_IHTMLUNIQUENAME_DISPINTERFACE_DECL;    \
    WINE_HTMLDOMNODE_DISPINTERFACE_DECL;        \
    WINE_IHTMLELEMENT5_DISPINTERFACE_DECL;      \
    WINE_IHTMLELEMENT6_DISPINTERFACE_DECL;      \
    WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL;\
    WINE_IHTMLELEMENT7_DISPINTERFACE_DECL

#define WINE_HTMLDATAELEMENT_INTERFACES         \
    interface IHTMLElement;                     \
    interface IHTMLElement2;                    \
    interface IHTMLElement3;                    \
    interface IHTMLElement4;                    \
    interface IHTMLUniqueName;                  \
    interface IHTMLDOMNode;                     \
    interface IHTMLDOMNode2;                    \
    interface IHTMLDatabinding;                 \
 /* interface IHTMLElement5; */                 \
    interface IHTMLElement6;                    \
    interface IElementSelector;                 \
    interface IHTMLDOMConstructor;              \
    interface IHTMLElement7

#define WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL \
    WINE_IHTMLELEMENT_DISPINTERFACE_DECL;       \
    WINE_IHTMLELEMENT2_DISPINTERFACE_DECL;      \
    WINE_IHTMLELEMENT3_DISPINTERFACE_DECL;      \
    WINE_IHTMLELEMENT4_DISPINTERFACE_DECL;      \
    WINE_IHTMLUNIQUENAME_DISPINTERFACE_DECL;    \
    WINE_HTMLDOMNODE_DISPINTERFACE_DECL;        \
    WINE_IHTMLDATABINDING_DISPINTERFACE_DECL;   \
    WINE_IHTMLELEMENT5_DISPINTERFACE_DECL;      \
    WINE_IHTMLELEMENT6_DISPINTERFACE_DECL;      \
    WINE_IELEMENTSELECTOR_DISPINTERFACE_DECL;   \
    WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL;\
    WINE_IHTMLELEMENT7_DISPINTERFACE_DECL

/*****************************************************************************
 *    IHTMLGenericElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f4b7-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLGenericElement : IDispatch
{
    [propget, id(DISPID_IHTMLGENERICELEMENT_RECORDSET), hidden]
    HRESULT recordset([out, retval] IDispatch **p);

    [id(DISPID_IHTMLGENERICELEMENT_NAMEDRECORDSET)]
    HRESULT namedRecordset(
            [in] BSTR dataMember,
            [in, optional] VARIANT *hierarchy,
            [out, retval] IDispatch **ppRecordset);
}

/*****************************************************************************
 *    DispHTMLGenericElement dispinterface
 */
[
    hidden,
    uuid(3050f563-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLGenericElement
{
properties:
methods:
    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;

    [propget, id(DISPID_IHTMLGENERICELEMENT_RECORDSET), hidden]
    IDispatch *recordset();

    [id(DISPID_IHTMLGENERICELEMENT_NAMEDRECORDSET)]
    IDispatch *namedRecordset(
            [in] BSTR dataMember,
            [in, optional] VARIANT *hierarchy);
}

/*****************************************************************************
 *    HTMLGenericElement coclass
 */
[
    noncreatable,
    uuid(3050f4b8-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLGenericElement
{
    [default]         dispinterface DispHTMLGenericElement;
    [source, default] dispinterface HTMLElementEvents;
    [source]          dispinterface HTMLElementEvents2;
    WINE_HTMLELEMENT_INTERFACES;
    interface IHTMLGenericElement;
}

/*****************************************************************************
 *    IHTMLStyleSheetRule interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050F357-98B5-11CF-BB82-00AA00BDCE0B)
]
interface IHTMLStyleSheetRule : IDispatch
{
    [propput, id(DISPID_IHTMLSTYLESHEETRULE_SELECTORTEXT)]
    HRESULT selectorText([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLESHEETRULE_SELECTORTEXT)]
    HRESULT selectorText([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLSTYLESHEETRULE_STYLE)]
    HRESULT style([retval, out] IHTMLRuleStyle **p);

    [propget, id(DISPID_IHTMLSTYLESHEETRULE_READONLY)]
    HRESULT readOnly([retval, out] VARIANT_BOOL *p);
}

[
    hidden,
    uuid(3050f50e-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLStyleSheetRule
{
properties:
methods:
    [propput, id(DISPID_IHTMLSTYLESHEETRULE_SELECTORTEXT)]
    void selectorText(BSTR v);

    [propget, id(DISPID_IHTMLSTYLESHEETRULE_SELECTORTEXT)]
    BSTR selectorText();

    [propget, id(DISPID_IHTMLSTYLESHEETRULE_STYLE), nonbrowsable]
    IHTMLRuleStyle* style();

    [propget, id(DISPID_IHTMLSTYLESHEETRULE_READONLY)]
    VARIANT_BOOL readOnly();

    WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL;
}

[
    noncreatable,
    uuid(3050f3ce-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLStyleSheetRule
{
    [default]           dispinterface DispHTMLStyleSheetRule;
                        interface IHTMLStyleSheetRule;
                        interface IHTMLDOMConstructor;
}

/*****************************************************************************
 *    IHTMLStyleSheetRulesCollection interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050F2E5-98B5-11Cf-BB82-00AA00BDCE0B)
]
interface IHTMLStyleSheetRulesCollection : IDispatch
{
    [propget, id(DISPID_IHTMLSTYLESHEETRULESCOLLECTION_LENGTH)]
    HRESULT length([retval, out] LONG *p);

    [id(DISPID_IHTMLSTYLESHEETRULESCOLLECTION_ITEM)]
    HRESULT item(
        [in] LONG index,
        [retval, out] IHTMLStyleSheetRule **ppHTMLStyleSheetRule);
}

[
    hidden,
    uuid(3050f52f-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLStyleSheetRulesCollection
{
properties:
methods:
    [propget, id(DISPID_IHTMLSTYLESHEETRULESCOLLECTION_LENGTH)]
    long length();

    [id(DISPID_IHTMLSTYLESHEETRULESCOLLECTION_ITEM)]
    IHTMLStyleSheetRule* item([in] long index);

    WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL;
}

[
    noncreatable,
    uuid(3050f3cd-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLStyleSheetRulesCollection
{
    [default]           dispinterface DispHTMLStyleSheetRulesCollection;
                        interface IHTMLStyleSheetRulesCollection;
                        interface IHTMLDOMConstructor;
}

[
    odl,
    oleautomation,
    dual,
    uuid(3050f7ee-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLStyleSheetPage : IDispatch
{
    [propget, id(DISPID_IHTMLSTYLESHEETPAGE_SELECTOR)]
    HRESULT selector([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLSTYLESHEETPAGE_PSEUDOCLASS)]
    HRESULT pseudoClass([retval, out] BSTR *p);
}

[
    hidden,
    uuid(3050f540-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLStyleSheetPage
{
properties:
methods:
    [propget, id(DISPID_IHTMLSTYLESHEETPAGE_SELECTOR)]
    BSTR selector();

    [propget, id(DISPID_IHTMLSTYLESHEETPAGE_PSEUDOCLASS)]
    BSTR pseudoClass();

    WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL;
}
[
    noncreatable,
    uuid(3050f7ef-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLStyleSheetPage
{
    [default]           dispinterface DispHTMLStyleSheetPage;
                        interface IHTMLStyleSheetPage;
                        interface IHTMLDOMConstructor;
}

[
    odl,
    oleautomation,
    dual,
    uuid(3050f7f0-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLStyleSheetPagesCollection : IDispatch
{
    [propget, id(DISPID_IHTMLSTYLESHEETPAGESCOLLECTION_LENGTH)]
    HRESULT length([retval, out] LONG *p);

    [id(DISPID_IHTMLSTYLESHEETPAGESCOLLECTION_ITEM)]
    HRESULT item(
        [in] LONG index,
        [retval, out] IHTMLStyleSheetPage **ppHTMLStyleSheetPage);
}

[
    hidden,
    uuid(3050f543-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLStyleSheetPagesCollection
{
properties:
methods:
    [propget, id(DISPID_IHTMLSTYLESHEETPAGESCOLLECTION_LENGTH)]
    long length();

    [id(DISPID_IHTMLSTYLESHEETPAGESCOLLECTION_ITEM)]
    IHTMLStyleSheetPage* item([in] long index);

    WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL;
}

[
    noncreatable,
    uuid(3050f7f1-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLStyleSheetPagesCollection
{
    [default]           dispinterface DispHTMLStyleSheetPagesCollection;
                        interface IHTMLStyleSheetPagesCollection;
                        interface IHTMLDOMConstructor;
}

/*****************************************************************************
 *    IHTMLStyleSheet interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050F2E3-98B5-11CF-BB82-00AA00BDCE0B)
]
interface IHTMLStyleSheet : IDispatch
{
    [propput, id(DISPID_IHTMLSTYLESHEET_TITLE)]
    HRESULT title([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLESHEET_TITLE)]
    HRESULT title([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLSTYLESHEET_PARENTSTYLESHEET)]
    HRESULT parentStyleSheet([retval, out] IHTMLStyleSheet **p);

    [propget, id(DISPID_IHTMLSTYLESHEET_OWNINGELEMENT)]
    HRESULT owningElement([retval, out] IHTMLElement **p);

    [propput, id(DISPID_IHTMLSTYLESHEET_DISABLED)]
    HRESULT disabled([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLSTYLESHEET_DISABLED)]
    HRESULT disabled([retval, out] VARIANT_BOOL *p);

    [propget, id(DISPID_IHTMLSTYLESHEET_READONLY)]
    HRESULT readOnly([retval, out] VARIANT_BOOL *p);

    [propget, id(DISPID_IHTMLSTYLESHEET_IMPORTS)]
    HRESULT imports([retval, out] IHTMLStyleSheetsCollection **p);

    [propput, id(DISPID_IHTMLSTYLESHEET_HREF)]
    HRESULT href([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLESHEET_HREF)]
    HRESULT href([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLSTYLESHEET_TYPE)]
    HRESULT type([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLSTYLESHEET_ID)]
    HRESULT id([retval, out] BSTR *p);

    [id(DISPID_IHTMLSTYLESHEET_ADDIMPORT)]
    HRESULT addImport(
        [in] BSTR bstrURL,
        [defaultvalue(-1), in] LONG lIndex,
        [retval, out] LONG *plIndex);

    [id(DISPID_IHTMLSTYLESHEET_ADDRULE)]
    HRESULT addRule(
        [in] BSTR bstrSelector,
        [in] BSTR bstrStyle,
        [defaultvalue(-1), in] LONG lIndex,
        [retval, out] LONG *plNewIndex);

    [id(DISPID_IHTMLSTYLESHEET_REMOVEIMPORT)]
    HRESULT removeImport([in] LONG lIndex);

    [id(DISPID_IHTMLSTYLESHEET_REMOVERULE)]
    HRESULT removeRule([in] LONG lIndex);

    [propput, id(DISPID_IHTMLSTYLESHEET_MEDIA)]
    HRESULT media([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLESHEET_MEDIA)]
    HRESULT media([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLESHEET_CSSTEXT)]
    HRESULT cssText([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLESHEET_CSSTEXT)]
    HRESULT cssText([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLSTYLESHEET_RULES)]
    HRESULT rules([retval, out] IHTMLStyleSheetRulesCollection **p);
}

/*****************************************************************************
 *    IHTMLStyleSheet2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f3d1-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLStyleSheet2 : IDispatch
{
    [propget, id(DISPID_IHTMLSTYLESHEET2_PAGES)]
    HRESULT pages([retval, out] IHTMLStyleSheetPagesCollection **p);

    [id(DISPID_IHTMLSTYLESHEET2_ADDPAGERULE)]
    HRESULT addPageRule(
        [in] BSTR bstrSelector,
        [in] BSTR bstrStyle,
        [defaultvalue(-1), in] LONG lIndex,
        [retval, out] LONG *plNewIndex);
}

/*****************************************************************************
 *    IHTMLStyleSheet4 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305106f4-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLStyleSheet4 : IDispatch
{
    [propget, id(DISPID_IHTMLSTYLESHEET4_IE9_TYPE)]
    HRESULT type([out, retval] BSTR *p);

    [propget, id(DISPID_IHTMLSTYLESHEET4_IE9_HREF)]
    HRESULT href([out, retval] VARIANT *p);

    [propget, id(DISPID_IHTMLSTYLESHEET4_IE9_TITLE)]
    HRESULT title([out, retval] BSTR *p);

    [propget, id(DISPID_IHTMLSTYLESHEET4_OWNERNODE)]
    HRESULT ownerNode([out, retval] IHTMLElement **p);

    [propget, id(DISPID_IHTMLSTYLESHEET4_OWNERRULE)]
    HRESULT ownerRule([out, retval] IHTMLCSSRule **p);

    [propget, id(DISPID_IHTMLSTYLESHEET4_CSSRULES)]
    HRESULT cssRules([out, retval] IHTMLStyleSheetRulesCollection **p);

    [propget, id(DISPID_IHTMLSTYLESHEET4_IE9_MEDIA)]
    HRESULT media([out, retval] VARIANT *p);

    [id(DISPID_IHTMLSTYLESHEET4_INSERTRULE)]
    HRESULT insertRule(
        [in] BSTR bstrRule,
        [in, defaultvalue(-1)] long lIndex,
        [out, retval] long *plNewIndex);

    [id(DISPID_IHTMLSTYLESHEET4_DELETERULE)]
    HRESULT deleteRule([in, defaultvalue(-1)] long lIndex);
}

[
    hidden,
    uuid(3050f58d-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLStyleSheet
{
properties:
methods:
    [propput, id(DISPID_IHTMLSTYLESHEET_TITLE)]
    void title(BSTR v);

    [propget, id(DISPID_IHTMLSTYLESHEET_TITLE)]
    BSTR title();

    [propget, id(DISPID_IHTMLSTYLESHEET_PARENTSTYLESHEET)]
    IHTMLStyleSheet* parentStyleSheet();

    [propget, id(DISPID_IHTMLSTYLESHEET_OWNINGELEMENT)]
    IHTMLElement* owningElement();

    [propput, id(DISPID_IHTMLSTYLESHEET_DISABLED)]
    void disabled(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLSTYLESHEET_DISABLED)]
    VARIANT_BOOL disabled();

    [propget, id(DISPID_IHTMLSTYLESHEET_READONLY)]
    VARIANT_BOOL readOnly();

    [propget, id(DISPID_IHTMLSTYLESHEET_IMPORTS)]
    IHTMLStyleSheetsCollection* imports();

    [propput, id(DISPID_IHTMLSTYLESHEET_HREF)]
    void href(BSTR v);

    [propget, id(DISPID_IHTMLSTYLESHEET_HREF)]
    BSTR href();

    [propget, id(DISPID_IHTMLSTYLESHEET_TYPE)]
    BSTR type();

    [propget, id(DISPID_IHTMLSTYLESHEET_ID)]
    BSTR id();

    [id(DISPID_IHTMLSTYLESHEET_ADDIMPORT)]
    LONG addImport(
        [in] BSTR bstrURL,
        [defaultvalue(-1), in] LONG lIndex);

    [id(DISPID_IHTMLSTYLESHEET_ADDRULE)]
    LONG addRule(
        [in] BSTR bstrSelector,
        [in] BSTR bstrStyle,
        [defaultvalue(-1), in] LONG lIndex);

    [id(DISPID_IHTMLSTYLESHEET_REMOVEIMPORT)]
    void removeImport([in] LONG lIndex);

    [id(DISPID_IHTMLSTYLESHEET_REMOVERULE)]
    void removeRule([in] LONG lIndex);

    [propput, id(DISPID_IHTMLSTYLESHEET_MEDIA)]
    void media(BSTR v);

    [propget, id(DISPID_IHTMLSTYLESHEET_MEDIA)]
    BSTR media();

    [propput, id(DISPID_IHTMLSTYLESHEET_CSSTEXT)]
    void cssText(BSTR v);

    [propget, id(DISPID_IHTMLSTYLESHEET_CSSTEXT)]
    BSTR cssText();

    [propget, id(DISPID_IHTMLSTYLESHEET_RULES)]
    IHTMLStyleSheetRulesCollection* rules();

    [propget, id(DISPID_IHTMLSTYLESHEET2_PAGES)]
    IHTMLStyleSheetPagesCollection* pages();

    [id(DISPID_IHTMLSTYLESHEET2_ADDPAGERULE)]
    LONG addPageRule(
        [in] BSTR bstrSelector,
        [in] BSTR bstrStyle,
        [defaultvalue(-1), in] LONG lIndex);

    [propget, id(DISPID_IHTMLSTYLESHEET4_IE9_TYPE)]
    BSTR ie9_type();

    [propget, id(DISPID_IHTMLSTYLESHEET4_IE9_HREF)]
    VARIANT ie9_href();

    [propget, id(DISPID_IHTMLSTYLESHEET4_IE9_TITLE)]
    BSTR ie9_title();

    [propget, id(DISPID_IHTMLSTYLESHEET4_OWNERNODE)]
    IHTMLElement *ownerNode();

    [propget, id(DISPID_IHTMLSTYLESHEET4_OWNERRULE)]
    IHTMLCSSRule *ownerRule();

    [propget, id(DISPID_IHTMLSTYLESHEET4_CSSRULES)]
    IHTMLStyleSheetRulesCollection *cssRules();

    [propget, id(DISPID_IHTMLSTYLESHEET4_IE9_MEDIA)]
    VARIANT ie9_media();

    [id(DISPID_IHTMLSTYLESHEET4_INSERTRULE)]
    long insertRule(
        [in] BSTR bstrRule,
        [in, defaultvalue(-1)] long lIndex);

    [id(DISPID_IHTMLSTYLESHEET4_DELETERULE)]
    void deleteRule([in, defaultvalue(-1)] long lIndex);
}

[
    noncreatable,
    uuid(3050f2e4-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLStyleSheet
{
    [default]           dispinterface DispHTMLStyleSheet;
                        interface IHTMLStyleSheet;
                        interface IHTMLStyleSheet2;
                        interface IHTMLStyleSheet4;
}

/*****************************************************************************
 *    IHTMLStyleSheetsCollection interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050F37E-98B5-11CF-BB82-00AA00BDCE0B)
]
interface IHTMLStyleSheetsCollection : IDispatch
{
    [propget, id(DISPID_IHTMLSTYLESHEETSCOLLECTION_LENGTH)]
    HRESULT length([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLSTYLESHEETSCOLLECTION__NEWENUM)]
    HRESULT _newEnum([retval, out] IUnknown **p);

    [id(DISPID_IHTMLSTYLESHEETSCOLLECTION_ITEM)]
    HRESULT item(
        [in] VARIANT *pvarIndex,
        [retval, out] VARIANT *pvarResult);
}

/*****************************************************************************
 *    DispHTMLStyleSheetsCollection dispinterface
 */
[
    hidden,
    uuid(3050f547-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLStyleSheetsCollection
{
properties:
methods:
    [propget, id(DISPID_IHTMLSTYLESHEETSCOLLECTION_LENGTH)]
    long length();

    [propget, id(DISPID_IHTMLSTYLESHEETSCOLLECTION__NEWENUM), hidden, restricted]
    IUnknown *_newEnum();

    [id(DISPID_IHTMLSTYLESHEETSCOLLECTION_ITEM)]
    VARIANT item([in] VARIANT *pvarIndex);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden]
    IDispatch *constructor();
}

/*****************************************************************************
 *    IHTMLLinkElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f205-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLLinkElement : IDispatch
{
    [propput, id(DISPID_IHTMLLINKELEMENT_HREF), displaybind, bindable]
    HRESULT href([in] BSTR v);

    [propget, id(DISPID_IHTMLLINKELEMENT_HREF), displaybind, bindable]
    HRESULT href([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLLINKELEMENT_REL), displaybind, bindable]
    HRESULT rel([in] BSTR v);

    [propget, id(DISPID_IHTMLLINKELEMENT_REL), displaybind, bindable]
    HRESULT rel([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLLINKELEMENT_REV), displaybind, bindable]
    HRESULT rev([in] BSTR v);

    [propget, id(DISPID_IHTMLLINKELEMENT_REV), displaybind, bindable]
    HRESULT rev([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLLINKELEMENT_TYPE), displaybind, bindable]
    HRESULT type([in] BSTR v);

    [propget, id(DISPID_IHTMLLINKELEMENT_TYPE), displaybind, bindable]
    HRESULT type([out, retval] BSTR *p);

    [propget, id(DISPID_IHTMLLINKELEMENT_READYSTATE)]
    HRESULT readyState([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLLINKELEMENT_ONREADYSTATECHANGE), displaybind, bindable]
    HRESULT onreadystatechange([in] VARIANT v);

    [propget, id(DISPID_IHTMLLINKELEMENT_ONREADYSTATECHANGE), displaybind, bindable]
    HRESULT onreadystatechange([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLLINKELEMENT_ONLOAD), displaybind, bindable]
    HRESULT onload([in] VARIANT v);

    [propget, id(DISPID_IHTMLLINKELEMENT_ONLOAD), displaybind, bindable]
    HRESULT onload([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLLINKELEMENT_ONERROR), displaybind, bindable]
    HRESULT onerror([in] VARIANT v);

    [propget, id(DISPID_IHTMLLINKELEMENT_ONERROR), displaybind, bindable]
    HRESULT onerror([out, retval] VARIANT *p);

    [propget, id(DISPID_IHTMLLINKELEMENT_STYLESHEET)]
    HRESULT styleSheet([out, retval] IHTMLStyleSheet **p);

    [propput, id(DISPID_IHTMLLINKELEMENT_DISABLED), displaybind, bindable]
    HRESULT disabled([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLLINKELEMENT_DISABLED), displaybind, bindable]
    HRESULT disabled([out, retval] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLLINKELEMENT_MEDIA), displaybind, bindable]
    HRESULT media([in] BSTR v);

    [propget, id(DISPID_IHTMLLINKELEMENT_MEDIA), displaybind, bindable]
    HRESULT media([out, retval] BSTR *p);
}

/*****************************************************************************
 *    IHTMLLinkElement2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f4e5-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLLinkElement2 : IDispatch
{
    [propput, id(DISPID_IHTMLLINKELEMENT2_TARGET), displaybind, bindable]
    HRESULT target([in] BSTR v);

    [propget, id(DISPID_IHTMLLINKELEMENT2_TARGET), displaybind, bindable]
    HRESULT target([out, retval] BSTR *p);
}

/*****************************************************************************
 *    IHTMLLinkElement3 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f81e-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLLinkElement3 : IDispatch
{
    [propput, id(DISPID_IHTMLLINKELEMENT3_CHARSET), displaybind, bindable]
    HRESULT charset([in] BSTR v);

    [propget, id(DISPID_IHTMLLINKELEMENT3_CHARSET), displaybind, bindable]
    HRESULT charset([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLLINKELEMENT3_HREFLANG), displaybind, bindable]
    HRESULT hreflang([in] BSTR v);

    [propget, id(DISPID_IHTMLLINKELEMENT3_HREFLANG), displaybind, bindable]
    HRESULT hreflang([out, retval] BSTR *p);
}

/*****************************************************************************
 *    IHTMLLinkElement4 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3051043a-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLLinkElement4 : IDispatch
{
    [propput, id(DISPID_IHTMLLINKELEMENT4_IE8_HREF)]
    HRESULT href([in] BSTR v);

    [propget, id(DISPID_IHTMLLINKELEMENT4_IE8_HREF)]
    HRESULT href([retval, out] BSTR * p);
}

/*****************************************************************************
 *    DispHTMLLinkElement dispinterface
 */
[
    hidden,
    uuid(3050f524-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLLinkElement
{
properties:
methods:
    WINE_HTMLELEMENT_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLLINKELEMENT_HREF), displaybind, bindable]
    void href(BSTR v);

    [propget, id(DISPID_IHTMLLINKELEMENT_HREF), displaybind, bindable]
    BSTR href();

    [propput, id(DISPID_IHTMLLINKELEMENT_REL), displaybind, bindable]
    void rel(BSTR v);

    [propget, id(DISPID_IHTMLLINKELEMENT_REL), displaybind, bindable]
    BSTR rel();

    [propput, id(DISPID_IHTMLLINKELEMENT_REV), displaybind, bindable]
    void rev(BSTR v);

    [propget, id(DISPID_IHTMLLINKELEMENT_REV), displaybind, bindable]
    BSTR rev();

    [propput, id(DISPID_IHTMLLINKELEMENT_TYPE), displaybind, bindable]
    void type(BSTR v);

    [propget, id(DISPID_IHTMLLINKELEMENT_TYPE), displaybind, bindable]
    BSTR type();

    [propget, id(DISPID_IHTMLLINKELEMENT_STYLESHEET)]
    IHTMLStyleSheet *styleSheet();

    [propput, id(DISPID_IHTMLLINKELEMENT_MEDIA), displaybind, bindable]
    void media(BSTR v);

    [propget, id(DISPID_IHTMLLINKELEMENT_MEDIA), displaybind, bindable]
    BSTR media();

    [propput, id(DISPID_IHTMLLINKELEMENT2_TARGET), displaybind, bindable]
    void target(BSTR v);

    [propget, id(DISPID_IHTMLLINKELEMENT2_TARGET), displaybind, bindable]
    BSTR target();

    [propput, id(DISPID_IHTMLLINKELEMENT3_CHARSET), displaybind, bindable]
    void charset(BSTR v);

    [propget, id(DISPID_IHTMLLINKELEMENT3_CHARSET), displaybind, bindable]
    BSTR charset();

    [propput, id(DISPID_IHTMLLINKELEMENT3_HREFLANG), displaybind, bindable]
    void hreflang(BSTR v);

    [propget, id(DISPID_IHTMLLINKELEMENT3_HREFLANG), displaybind, bindable]
    BSTR hreflang();

    [propput, id(DISPID_IHTMLLINKELEMENT4_IE8_HREF)]
    void ie8_href(BSTR v);

    [propget, id(DISPID_IHTMLLINKELEMENT4_IE8_HREF)]
    BSTR ie8_href();
}

/*****************************************************************************
 *    HTMLLinkElement coclass
 */
[
    noncreatable,
    uuid(3050f277-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLLinkElement
{
    [default]         dispinterface DispHTMLLinkElement;
 /* [source, default] dispinterface HTMLLinkElementEvents; */
 /* [source]          dispinterface HTMLLinkElementEvents2; */
    WINE_HTMLELEMENT_INTERFACES;
    interface IHTMLLinkElement;
    interface IHTMLLinkElement2;
    interface IHTMLLinkElement3;
    interface IHTMLLinkElement4;
 /* interface IHTMLLinkElement5; */
}

/*****************************************************************************
 *    IHTMLTxtRange interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f220-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLTxtRange : IDispatch
{
    [propget, id(DISPID_IHTMLTXTRANGE_HTMLTEXT)]
    HRESULT htmlText([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLTXTRANGE_TEXT)]
    HRESULT text([in] BSTR v);

    [propget, id(DISPID_IHTMLTXTRANGE_TEXT)]
    HRESULT text([retval, out] BSTR *p);

    [id(DISPID_IHTMLTXTRANGE_PARENTELEMENT)]
    HRESULT parentElement([retval, out] IHTMLElement **parent);

    [id(DISPID_IHTMLTXTRANGE_DUPLICATE)]
    HRESULT duplicate([retval, out] IHTMLTxtRange **Duplicate);

    [id(DISPID_IHTMLTXTRANGE_INRANGE)]
    HRESULT inRange(
        [in] IHTMLTxtRange *Range,
        [retval, out] VARIANT_BOOL *InRange);

    [id(DISPID_IHTMLTXTRANGE_ISEQUAL)]
    HRESULT isEqual(
        [in] IHTMLTxtRange *Range,
        [retval, out] VARIANT_BOOL *IsEqual);

    [id(DISPID_IHTMLTXTRANGE_SCROLLINTOVIEW)]
    HRESULT scrollIntoView([defaultvalue(-1), in] VARIANT_BOOL fStart);

    [id(DISPID_IHTMLTXTRANGE_COLLAPSE)]
    HRESULT collapse([defaultvalue(-1), in] VARIANT_BOOL Start);

    [id(DISPID_IHTMLTXTRANGE_EXPAND)]
    HRESULT expand(
        [in] BSTR Unit,
        [retval, out] VARIANT_BOOL *Success);

    [id(DISPID_IHTMLTXTRANGE_MOVE)]
    HRESULT move(
        [in] BSTR Unit,
        [defaultvalue(1), in] LONG Count,
        [retval, out] LONG *ActualCount);

    [id(DISPID_IHTMLTXTRANGE_MOVESTART)]
    HRESULT moveStart(
        [in] BSTR Unit,
        [defaultvalue(1), in] LONG Count,
        [retval, out] LONG *ActualCount);

    [id(DISPID_IHTMLTXTRANGE_MOVEEND)]
    HRESULT moveEnd(
        [in] BSTR Unit,
        [defaultvalue(1), in] LONG Count,
        [retval, out] LONG *ActualCount);

    [id(DISPID_IHTMLTXTRANGE_SELECT)]
    HRESULT select();

    [id(DISPID_IHTMLTXTRANGE_PASTEHTML)]
    HRESULT pasteHTML([in] BSTR html);

    [id(DISPID_IHTMLTXTRANGE_MOVETOELEMENTTEXT)]
    HRESULT moveToElementText([in] IHTMLElement *element);

    [id(DISPID_IHTMLTXTRANGE_SETENDPOINT)]
    HRESULT setEndPoint(
        [in] BSTR how,
        [in] IHTMLTxtRange *SourceRange);

    [id(DISPID_IHTMLTXTRANGE_COMPAREENDPOINTS)]
    HRESULT compareEndPoints(
        [in] BSTR how,
        [in] IHTMLTxtRange *SourceRange,
        [retval, out] LONG *ret);

    [id(DISPID_IHTMLTXTRANGE_FINDTEXT)]
    HRESULT findText(
        [in] BSTR String,
        [defaultvalue(1073741823), in] LONG count,
        [defaultvalue(0), in] LONG Flags,
        [retval, out] VARIANT_BOOL *Success);

    [id(DISPID_IHTMLTXTRANGE_MOVETOPOINT)]
    HRESULT moveToPoint(
        [in] LONG x,
        [in] LONG y);

    [id(DISPID_IHTMLTXTRANGE_GETBOOKMARK)]
    HRESULT getBookmark([retval, out] BSTR *Boolmark);

    [id(DISPID_IHTMLTXTRANGE_MOVETOBOOKMARK)]
    HRESULT moveToBookmark(
        [in] BSTR Bookmark,
        [retval, out] VARIANT_BOOL *Success);

    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDSUPPORTED)]
    HRESULT queryCommandSupported(
        [in] BSTR cmdID,
        [retval, out] VARIANT_BOOL *pfRet);

    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDENABLED)]
    HRESULT queryCommandEnabled(
        [in] BSTR cmdID,
        [retval, out] VARIANT_BOOL *pfRet);

    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDSTATE)]
    HRESULT queryCommandState(
        [in] BSTR cmdID,
        [retval, out] VARIANT_BOOL *pfRet);

    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDINDETERM)]
    HRESULT queryCommandIndeterm(
        [in] BSTR cmdID,
        [retval, out] VARIANT_BOOL *pfRet);

    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDTEXT)]
    HRESULT queryCommandText(
        [in] BSTR cmdID,
        [retval, out] BSTR *pcmdText);

    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDVALUE)]
    HRESULT queryCommandValue(
        [in] BSTR cmdID,
        [retval, out] VARIANT *pcmdValue);

    [id(DISPID_IHTMLTXTRANGE_EXECCOMMAND)]
    HRESULT execCommand(
        [in] BSTR cmdID,
        [defaultvalue(0), in] VARIANT_BOOL showUI,
        [optional, in] VARIANT value,
        [retval, out] VARIANT_BOOL *pfRet);

    [id(DISPID_IHTMLTXTRANGE_EXECCOMMANDSHOWHELP)]
    HRESULT execCommandShowHelp(
        [in] BSTR cmdID,
        [retval, out] VARIANT_BOOL *pfRet);
}

[
    hidden,
    uuid(3050f5a3-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLDOMRange
{
properties:
methods:
    [propget, id(DISPID_IHTMLDOMRANGE_STARTCONTAINER)]
    IHTMLDOMNode *startContainer();

    [propget, id(DISPID_IHTMLDOMRANGE_STARTOFFSET)]
    long startOffset();

    [propget, id(DISPID_IHTMLDOMRANGE_ENDCONTAINER)]
    IHTMLDOMNode *endContainer();

    [propget, id(DISPID_IHTMLDOMRANGE_ENDOFFSET)]
    long endOffset();

    [propget, id(DISPID_IHTMLDOMRANGE_COLLAPSED)]
    VARIANT_BOOL collapsed();

    [propget, id(DISPID_IHTMLDOMRANGE_COMMONANCESTORCONTAINER)]
    IHTMLDOMNode *commonAncestorContainer();

    [id(DISPID_IHTMLDOMRANGE_SETSTART)]
    void setStart([in] IDispatch *node ,[in] long offset);

    [id(DISPID_IHTMLDOMRANGE_SETEND)]
    void setEnd([in] IDispatch *node, [in] long offset);

    [id(DISPID_IHTMLDOMRANGE_SETSTARTBEFORE)]
    void setStartBefore([in] IDispatch *node);

    [id(DISPID_IHTMLDOMRANGE_SETSTARTAFTER)]
    void setStartAfter([in] IDispatch *node);

    [id(DISPID_IHTMLDOMRANGE_SETENDBEFORE)]
    void setEndBefore([in] IDispatch *node);

    [id(DISPID_IHTMLDOMRANGE_SETENDAFTER)]
    void setEndAfter([in] IDispatch *node);

    [id(DISPID_IHTMLDOMRANGE_COLLAPSE)]
    void collapse([in] VARIANT_BOOL tostart);

    [id(DISPID_IHTMLDOMRANGE_SELECTNODE)]
    void selectNode([in] IDispatch *node);

    [id(DISPID_IHTMLDOMRANGE_SELECTNODECONTENTS)]
    void selectNodeContents([in] IDispatch *node);

    [id(DISPID_IHTMLDOMRANGE_COMPAREBOUNDARYPOINTS)]
    long compareBoundaryPoints([in] short how, [in] IDispatch *src_range);

    [id(DISPID_IHTMLDOMRANGE_DELETECONTENTS)]
    void deleteContents();

    [id(DISPID_IHTMLDOMRANGE_EXTRACTCONTENTS)]
    IDispatch *extractContents();

    [id(DISPID_IHTMLDOMRANGE_CLONECONTENTS)]
    IDispatch *cloneContents();

    [id(DISPID_IHTMLDOMRANGE_INSERTNODE)]
    void insertNode([in] IDispatch *node);

    [id(DISPID_IHTMLDOMRANGE_SURROUNDCONTENTS)]
    void surroundContents([in] IDispatch *parent);

    [id(DISPID_IHTMLDOMRANGE_CLONERANGE)]
    IHTMLDOMRange *cloneRange();

    [id(DISPID_IHTMLDOMRANGE_TOSTRING)]
    BSTR toString();

    [id(DISPID_IHTMLDOMRANGE_DETACH)]
    void detach();

    [id(DISPID_IHTMLDOMRANGE_GETCLIENTRECTS)]
    IHTMLRectCollection *getClientRects();

    [id(DISPID_IHTMLDOMRANGE_GETBOUNDINGCLIENTRECT)]
    IHTMLRect *getBoundingClientRect();
}

/*****************************************************************************
 *    IHTMLDOMRange interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104ae-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDOMRange : IDispatch
{
    [propget, id(DISPID_IHTMLDOMRANGE_STARTCONTAINER)]
    HRESULT startContainer([out, retval] IHTMLDOMNode **p);

    [propget, id(DISPID_IHTMLDOMRANGE_STARTOFFSET)]
    HRESULT startOffset([out, retval] long *p);

    [propget, id(DISPID_IHTMLDOMRANGE_ENDCONTAINER)]
    HRESULT endContainer([out, retval] IHTMLDOMNode **p);

    [propget, id(DISPID_IHTMLDOMRANGE_ENDOFFSET)]
    HRESULT endOffset([out, retval] long *p);

    [propget, id(DISPID_IHTMLDOMRANGE_COLLAPSED)]
    HRESULT collapsed([out, retval] VARIANT_BOOL *p);

    [propget, id(DISPID_IHTMLDOMRANGE_COMMONANCESTORCONTAINER)]
    HRESULT commonAncestorContainer([out, retval] IHTMLDOMNode **p);

    [id(DISPID_IHTMLDOMRANGE_SETSTART)]
    HRESULT setStart(
        [in] IDispatch *refNode,
        [in] long offset);

    [id(DISPID_IHTMLDOMRANGE_SETEND)] HRESULT
    setEnd(
        [in] IDispatch *refNode,
        [in] long offset);

    [id(DISPID_IHTMLDOMRANGE_SETSTARTBEFORE)]
    HRESULT setStartBefore([in] IDispatch* refNode);

    [id(DISPID_IHTMLDOMRANGE_SETSTARTAFTER)]
    HRESULT setStartAfter([in] IDispatch *refNode);

    [id(DISPID_IHTMLDOMRANGE_SETENDBEFORE)]
    HRESULT setEndBefore([in] IDispatch *refNode);

    [id(DISPID_IHTMLDOMRANGE_SETENDAFTER)]
    HRESULT setEndAfter([in] IDispatch *refNode);

    [id(DISPID_IHTMLDOMRANGE_COLLAPSE)]
    HRESULT collapse([in] VARIANT_BOOL toStart);

    [id(DISPID_IHTMLDOMRANGE_SELECTNODE)]
    HRESULT selectNode([in] IDispatch *refNode);

    [id(DISPID_IHTMLDOMRANGE_SELECTNODECONTENTS)]
    HRESULT selectNodeContents([in] IDispatch *refNode);

    [id(DISPID_IHTMLDOMRANGE_COMPAREBOUNDARYPOINTS)]
    HRESULT compareBoundaryPoints(
        [in] short how,
        [in] IDispatch *sourceRange,
        [out, retval] long *compareResult);

    [id(DISPID_IHTMLDOMRANGE_DELETECONTENTS)]
    HRESULT deleteContents();

    [id(DISPID_IHTMLDOMRANGE_EXTRACTCONTENTS)]
    HRESULT extractContents([out, retval] IDispatch **ppDocumentFragment);

    [id(DISPID_IHTMLDOMRANGE_CLONECONTENTS)]
    HRESULT cloneContents([out, retval] IDispatch **ppDocumentFragment);

    [id(DISPID_IHTMLDOMRANGE_INSERTNODE)]
    HRESULT insertNode([in] IDispatch *newNode);

    [id(DISPID_IHTMLDOMRANGE_SURROUNDCONTENTS)]
    HRESULT surroundContents([in] IDispatch *newParent);

    [id(DISPID_IHTMLDOMRANGE_CLONERANGE)]
    HRESULT cloneRange([out, retval] IHTMLDOMRange **ppClonedRange);

    [id(DISPID_IHTMLDOMRANGE_TOSTRING)]
    HRESULT toString([out, retval] BSTR *pRangeString);

    [id(DISPID_IHTMLDOMRANGE_DETACH)]
    HRESULT detach();

    [id(DISPID_IHTMLDOMRANGE_GETCLIENTRECTS)]
    HRESULT getClientRects([out, retval] IHTMLRectCollection **ppRectCol);

    [id(DISPID_IHTMLDOMRANGE_GETBOUNDINGCLIENTRECT)]
    HRESULT getBoundingClientRect([out, retval] IHTMLRect **ppRect);
}

[
    noncreatable,
    uuid(3050f37f-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLStyleSheetsCollection
{
    [default]           interface IHTMLStyleSheetsCollection;
}

/*****************************************************************************
 *    IHTMLFormElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050F1F7-98B5-11CF-BB82-00AA00BDCE0B)
]
interface IHTMLFormElement : IDispatch
{
    [propput, id(DISPID_IHTMLFORMELEMENT_ACTION)]
    HRESULT action([in] BSTR v);

    [propget, id(DISPID_IHTMLFORMELEMENT_ACTION)]
    HRESULT action([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLFORMELEMENT_DIR)]
    HRESULT dir([in] BSTR v);

    [propget, id(DISPID_IHTMLFORMELEMENT_DIR)]
    HRESULT dir([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLFORMELEMENT_ENCODING)]
    HRESULT encoding([in] BSTR v);

    [propget, id(DISPID_IHTMLFORMELEMENT_ENCODING)]
    HRESULT encoding([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLFORMELEMENT_METHOD)]
    HRESULT method([in] BSTR v);

    [propget, id(DISPID_IHTMLFORMELEMENT_METHOD)]
    HRESULT method([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLFORMELEMENT_ELEMENTS)]
    HRESULT elements([retval, out] IDispatch **p);

    [propput, id(DISPID_IHTMLFORMELEMENT_TARGET)]
    HRESULT target([in] BSTR v);

    [propget, id(DISPID_IHTMLFORMELEMENT_TARGET)]
    HRESULT target([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLFORMELEMENT_NAME)]
    HRESULT name([in] BSTR v);

    [propget, id(DISPID_IHTMLFORMELEMENT_NAME)]
    HRESULT name([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLFORMELEMENT_ONSUBMIT)]
    HRESULT onsubmit([in] VARIANT v);

    [propget, id(DISPID_IHTMLFORMELEMENT_ONSUBMIT)]
    HRESULT onsubmit([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLFORMELEMENT_ONRESET)]
    HRESULT onreset([in] VARIANT v);

    [propget, id(DISPID_IHTMLFORMELEMENT_ONRESET)]
    HRESULT onreset([retval, out] VARIANT *p);

    [id(DISPID_IHTMLFORMELEMENT_SUBMIT)]
    HRESULT submit();

    [id(DISPID_IHTMLFORMELEMENT_RESET)]
    HRESULT reset();

    [propput, id(DISPID_IHTMLFORMELEMENT_LENGTH)]
    HRESULT length([in] LONG v);

    [propget, id(DISPID_IHTMLFORMELEMENT_LENGTH)]
    HRESULT length([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLFORMELEMENT__NEWENUM)]
    HRESULT _newEnum([retval, out] IUnknown **p);

    [id(DISPID_IHTMLFORMELEMENT_ITEM)]
    HRESULT item(
        [optional, in] VARIANT name,
        [optional, in] VARIANT index,
        [retval, out] IDispatch **pdisp);

    [id(DISPID_IHTMLFORMELEMENT_TAGS)]
    HRESULT tags(
        [in] VARIANT tagName,
        [retval, out] IDispatch **pdisp);
}

/*****************************************************************************
 *    DispHTMLFormElement dispinterface
 */
[
    hidden,
    uuid(3050F510-98B5-11CF-BB82-00AA00BDCE0B)
]
dispinterface DispHTMLFormElement
{
properties:
methods:
    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLFORMELEMENT_ACTION)]
    void action(BSTR v);

    [propget, id(DISPID_IHTMLFORMELEMENT_ACTION)]
    BSTR action();

    [propput, id(DISPID_IHTMLFORMELEMENT_ENCODING)]
    void encoding(BSTR v);

    [propget, id(DISPID_IHTMLFORMELEMENT_ENCODING)]
    BSTR encoding();

    [propput, id(DISPID_IHTMLFORMELEMENT_METHOD)]
    void method(BSTR v);

    [propget, id(DISPID_IHTMLFORMELEMENT_METHOD)]
    BSTR method();

    [propget, id(DISPID_IHTMLFORMELEMENT_ELEMENTS)]
    IDispatch *elements();

    [propput, id(DISPID_IHTMLFORMELEMENT_TARGET)]
    void target(BSTR v);

    [propget, id(DISPID_IHTMLFORMELEMENT_TARGET)]
    BSTR target();

    [propput, id(DISPID_IHTMLFORMELEMENT_NAME)]
    void name(BSTR v);

    [propget, id(DISPID_IHTMLFORMELEMENT_NAME)]
    BSTR name();

    [id(DISPID_IHTMLFORMELEMENT_SUBMIT)]
    void submit();

    [id(DISPID_IHTMLFORMELEMENT_RESET)]
    void reset();

    [propput, id(DISPID_IHTMLFORMELEMENT_LENGTH)]
    void length(long v);

    [propget, id(DISPID_IHTMLFORMELEMENT_LENGTH)]
    long length();

    [propget, id(DISPID_IHTMLFORMELEMENT__NEWENUM), hidden, restricted]
    IUnknown *_newEnum();

    [id(DISPID_IHTMLFORMELEMENT_ITEM)]
    IDispatch *item(VARIANT name, VARIANT index);

    [id(DISPID_IHTMLFORMELEMENT_TAGS)]
    IDispatch *tags(VARIANT tagName);
}

[
    hidden,
    uuid(3050F364-98B5-11CF-BB82-00AA00BDCE0B)
]
dispinterface HTMLFormElementEvents
{
properties:
methods:
    [id(DISPID_HTMLELEMENTEVENTS_ONHELP)]
    VARIANT_BOOL onhelp();

    [id(DISPID_HTMLELEMENTEVENTS_ONCLICK)]
    VARIANT_BOOL onclick();

    [id(DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)]
    VARIANT_BOOL ondblclick();

    [id(DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)]
    VARIANT_BOOL onkeypress();

    [id(DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)]
    void onkeydown();

    [id(DISPID_HTMLELEMENTEVENTS_ONKEYUP)]
    void onkeyup();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)]
    void onmouseout();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)]
    void onmouseover();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)]
    void onmousemove();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)]
    void onmousedown();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)]
    void onmouseup();

    [id(DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)]
    VARIANT_BOOL onselectstart();

    [id(DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)]
    void onfilterchange();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)]
    VARIANT_BOOL ondragstart();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)]
    VARIANT_BOOL onbeforeupdate();

    [id(DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)]
    void onafterupdate();

    [id(DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)]
    VARIANT_BOOL onerrorupdate();

    [id(DISPID_HTMLELEMENTEVENTS_ONROWEXIT)]
    VARIANT_BOOL onrowexit();

    [id(DISPID_HTMLELEMENTEVENTS_ONROWENTER)]
    void onrowenter();

    [id(DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)]
    void ondatasetchanged();

    [id(DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)]
    void ondataavailable();

    [id(DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)]
    void ondatasetcomplete();

    [id(DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)]
    void onlosecapture();

    [id(DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)]
    void onpropertychange();

    [id(DISPID_HTMLELEMENTEVENTS_ONSCROLL)]
    void onscroll();

    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUS)]
    void onfocus();

    [id(DISPID_HTMLELEMENTEVENTS_ONBLUR)]
    void onblur();

    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZE)]
    void onresize();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAG)]
    VARIANT_BOOL ondrag();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGEND)]
    void ondragend();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)]
    VARIANT_BOOL ondragenter();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)]
    VARIANT_BOOL ondragover();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)]
    void ondragleave();

    [id(DISPID_HTMLELEMENTEVENTS_ONDROP)]
    VARIANT_BOOL ondrop();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)]
    VARIANT_BOOL onbeforecut();

    [id(DISPID_HTMLELEMENTEVENTS_ONCUT)]
    VARIANT_BOOL oncut();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)]
    VARIANT_BOOL onbeforecopy();

    [id(DISPID_HTMLELEMENTEVENTS_ONCOPY)]
    VARIANT_BOOL oncopy();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)]
    VARIANT_BOOL onbeforepaste();

    [id(DISPID_HTMLELEMENTEVENTS_ONPASTE)]
    VARIANT_BOOL onpaste();

    [id(DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)]
    VARIANT_BOOL oncontextmenu();

    [id(DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)]
    void onrowsdelete();

    [id(DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)]
    void onrowsinserted();

    [id(DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)]
    void oncellchange();

    [id(DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)]
    void onreadystatechange();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)]
    void onbeforeeditfocus();

    [id(DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)]
    void onlayoutcomplete();

    [id(DISPID_HTMLELEMENTEVENTS_ONPAGE)]
    void onpage();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)]
    VARIANT_BOOL onbeforedeactivate();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)]
    VARIANT_BOOL onbeforeactivate();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOVE)]
    void onmove();

    [id(DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)]
    VARIANT_BOOL oncontrolselect();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOVESTART)]
    VARIANT_BOOL onmovestart();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOVEEND)]
    void onmoveend();

    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)]
    VARIANT_BOOL onresizestart();

    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)]
    void onresizeend();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)]
    void onmouseenter();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)]
    void onmouseleave();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)]
    VARIANT_BOOL onmousewheel();

    [id(DISPID_HTMLELEMENTEVENTS_ONACTIVATE)]
    void onactivate();

    [id(DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)]
    void ondeactivate();

    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)]
    void onfocusin();

    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)]
    void onfocusout();

    [id(DISPID_HTMLFORMELEMENTEVENTS_ONSUBMIT)]
    VARIANT_BOOL onsubmit();

    [id(DISPID_HTMLFORMELEMENTEVENTS_ONRESET)]
    VARIANT_BOOL onreset();
}

[
    hidden,
    uuid(3050F614-98B5-11CF-BB82-00AA00BDCE0B)
]
dispinterface HTMLFormElementEvents2
{
properties:
methods:
    [id(DISPID_HTMLELEMENTEVENTS2_ONHELP)]
    VARIANT_BOOL onhelp([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCLICK)]
    VARIANT_BOOL onclick([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)]
    VARIANT_BOOL ondblclick([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)]
    VARIANT_BOOL onkeypress([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)]
    void onkeydown([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYUP)]
    void onkeyup([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)]
    void onmouseout([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)]
    void onmouseover([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)]
    void onmousemove([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)]
    void onmousedown([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)]
    void onmouseup([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)]
    VARIANT_BOOL onselectstart([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)]
    void onfilterchange([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)]
    VARIANT_BOOL ondragstart([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)]
    VARIANT_BOOL onbeforeupdate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)]
    void onafterupdate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)]
    VARIANT_BOOL onerrorupdate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)]
    VARIANT_BOOL onrowexit([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONROWENTER)]
    void onrowenter([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)]
    void ondatasetchanged([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)]
    void ondataavailable([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)]
    void ondatasetcomplete([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)]
    void onlosecapture([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)]
    void onpropertychange([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONSCROLL)]
    void onscroll([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUS)]
    void onfocus([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBLUR)]
    void onblur([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZE)]
    void onresize([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAG)]
    VARIANT_BOOL ondrag([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)]
    void ondragend([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)]
    VARIANT_BOOL ondragenter([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)]
    VARIANT_BOOL ondragover([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)]
    void ondragleave([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDROP)]
    VARIANT_BOOL ondrop([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)]
    VARIANT_BOOL onbeforecut([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCUT)]
    VARIANT_BOOL oncut([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)]
    VARIANT_BOOL onbeforecopy([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCOPY)]
    VARIANT_BOOL oncopy([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)]
    VARIANT_BOOL onbeforepaste([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONPASTE)]
    VARIANT_BOOL onpaste([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)]
    VARIANT_BOOL oncontextmenu([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)]
    void onrowsdelete([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)]
    void onrowsinserted([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)]
    void oncellchange([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)]
    void onreadystatechange([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)]
    void onlayoutcomplete([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONPAGE)]
    void onpage([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)]
    void onmouseenter([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)]
    void onmouseleave([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)]
    void onactivate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)]
    void ondeactivate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)]
    VARIANT_BOOL onbeforedeactivate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)]
    VARIANT_BOOL onbeforeactivate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)]
    void onfocusin([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)]
    void onfocusout([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVE)]
    void onmove([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)]
    VARIANT_BOOL oncontrolselect([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)]
    VARIANT_BOOL onmovestart([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)]
    void onmoveend([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)]
    VARIANT_BOOL onresizestart([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)]
    void onresizeend([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)]
    VARIANT_BOOL onmousewheel([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLFORMELEMENTEVENTS2_ONSUBMIT)]
    VARIANT_BOOL onsubmit([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLFORMELEMENTEVENTS2_ONRESET)]
    VARIANT_BOOL onreset([in] IHTMLEventObj* pEvtObj);
}

[
    noncreatable,
    uuid(3050F251-98B5-11CF-BB82-00AA00BDCE0B)
]
coclass HTMLFormElement
{
    [default]           dispinterface DispHTMLFormElement;
    [source, default]   dispinterface HTMLFormElementEvents;
    [source]            dispinterface HTMLFormElementEvents2;
    WINE_HTMLELEMENT_INTERFACES;
    interface IHTMLFormElement;
 /* interface IHTMLFormElement2; */
 /* interface IHTMLFormElement3; */
 /* interface IHTMLSubmitData; */
 /* interface IHTMLFormElement4; */
}

/*****************************************************************************
 *    IHTMLTextContainer interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f230-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLTextContainer : IDispatch
{
    [id(DISPID_IHTMLTEXTCONTAINER_CREATECONTROLRANGE)]
    HRESULT createControlRange([retval, out] IDispatch **range);

    [propget, id(DISPID_IHTMLTEXTCONTAINER_SCROLLHEIGHT), displaybind, bindable]
    HRESULT scrollHeight([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLTEXTCONTAINER_SCROLLWIDTH), displaybind, bindable]
    HRESULT scrollWidth([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLTEXTCONTAINER_SCROLLTOP), displaybind, bindable]
    HRESULT scrollTop([in] LONG v);

    [propget, id(DISPID_IHTMLTEXTCONTAINER_SCROLLTOP), displaybind, bindable]
    HRESULT scrollTop([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLTEXTCONTAINER_SCROLLLEFT), displaybind, bindable]
    HRESULT scrollLeft([in] LONG v);

    [propget, id(DISPID_IHTMLTEXTCONTAINER_SCROLLLEFT), displaybind, bindable]
    HRESULT scrollLeft([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLTEXTCONTAINER_ONSCROLL), displaybind, bindable]
    HRESULT onscroll([in] VARIANT v);

    [propget, id(DISPID_IHTMLTEXTCONTAINER_ONSCROLL), displaybind, bindable]
    HRESULT onscroll([retval, out] VARIANT *p);
}

/*****************************************************************************
 *    IHTMLImgElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050F240-98B5-11CF-BB82-00AA00BDCE0B)
]
interface IHTMLImgElement : IDispatch
{
    [propput, id(DISPID_IHTMLIMGELEMENT_ISMAP)]
    HRESULT isMap([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLIMGELEMENT_ISMAP)]
    HRESULT isMap([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLIMGELEMENT_USEMAP)]
    HRESULT useMap([in] BSTR v);

    [propget, id(DISPID_IHTMLIMGELEMENT_USEMAP)]
    HRESULT useMap([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLIMGELEMENT_MIMETYPE)]
    HRESULT mimeType([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLIMGELEMENT_FILESIZE)]
    HRESULT fileSize([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLIMGELEMENT_FILECREATEDDATE)]
    HRESULT fileCreatedDate([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLIMGELEMENT_FILEMODIFIEDDATE)]
    HRESULT fileModifiedDate([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLIMGELEMENT_FILEUPDATEDDATE)]
    HRESULT fileUpdatedDate([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLIMGELEMENT_PROTOCOL)]
    HRESULT protocol([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLIMGELEMENT_HREF)]
    HRESULT href([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLIMGELEMENT_NAMEPROP)]
    HRESULT nameProp([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLIMGELEMENT_BORDER)]
    HRESULT border([in] VARIANT v);

    [propget, id(DISPID_IHTMLIMGELEMENT_BORDER)]
    HRESULT border([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLIMGELEMENT_VSPACE)]
    HRESULT vspace([in] LONG v);

    [propget, id(DISPID_IHTMLIMGELEMENT_VSPACE)]
    HRESULT vspace([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLIMGELEMENT_HSPACE)]
    HRESULT hspace([in] LONG v);

    [propget, id(DISPID_IHTMLIMGELEMENT_HSPACE)]
    HRESULT hspace([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLIMGELEMENT_ALT)]
    HRESULT alt([in] BSTR v);

    [propget, id(DISPID_IHTMLIMGELEMENT_ALT)]
    HRESULT alt([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLIMGELEMENT_SRC)]
    HRESULT src([in] BSTR v);

    [propget, id(DISPID_IHTMLIMGELEMENT_SRC)]
    HRESULT src([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLIMGELEMENT_LOWSRC)]
    HRESULT lowsrc([in] BSTR v);

    [propget, id(DISPID_IHTMLIMGELEMENT_LOWSRC)]
    HRESULT lowsrc([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLIMGELEMENT_VRML)]
    HRESULT vrml([in] BSTR v);

    [propget, id(DISPID_IHTMLIMGELEMENT_VRML)]
    HRESULT vrml([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLIMGELEMENT_DYNSRC)]
    HRESULT dynsrc([in] BSTR v);

    [propget, id(DISPID_IHTMLIMGELEMENT_DYNSRC)]
    HRESULT dynsrc([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLIMGELEMENT_READYSTATE)]
    HRESULT readyState([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLIMGELEMENT_COMPLETE)]
    HRESULT complete([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLIMGELEMENT_LOOP)]
    HRESULT loop([in] VARIANT v);

    [propget, id(DISPID_IHTMLIMGELEMENT_LOOP)]
    HRESULT loop([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLIMGELEMENT_ALIGN)]
    HRESULT align([in] BSTR v);

    [propget, id(DISPID_IHTMLIMGELEMENT_ALIGN)]
    HRESULT align([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLIMGELEMENT_ONLOAD)]
    HRESULT onload([in] VARIANT v);

    [propget, id(DISPID_IHTMLIMGELEMENT_ONLOAD)]
    HRESULT onload([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLIMGELEMENT_ONERROR)]
    HRESULT onerror([in] VARIANT v);

    [propget, id(DISPID_IHTMLIMGELEMENT_ONERROR)]
    HRESULT onerror([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLIMGELEMENT_ONABORT)]
    HRESULT onabort([in] VARIANT v);

    [propget, id(DISPID_IHTMLIMGELEMENT_ONABORT)]
    HRESULT onabort([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLIMGELEMENT_NAME)]
    HRESULT name([in] BSTR v);

    [propget, id(DISPID_IHTMLIMGELEMENT_NAME)]
    HRESULT name([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLIMGELEMENT_WIDTH)]
    HRESULT width([in] LONG v);

    [propget, id(DISPID_IHTMLIMGELEMENT_WIDTH)]
    HRESULT width([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLIMGELEMENT_HEIGHT)]
    HRESULT height([in] LONG v);

    [propget, id(DISPID_IHTMLIMGELEMENT_HEIGHT)]
    HRESULT height([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLIMGELEMENT_START)]
    HRESULT start([in] BSTR v);

    [propget, id(DISPID_IHTMLIMGELEMENT_START)]
    HRESULT start([retval, out] BSTR *p);
}

/*****************************************************************************
 *    IHTMLImageElementFactory interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050F38E-98B5-11CF-BB82-00AA00BDCE0B)
]
interface IHTMLImageElementFactory : IDispatch
{
    [id(DISPID_IHTMLIMAGEELEMENTFACTORY_CREATE)]
    HRESULT create(
        [optional, in] VARIANT width,
        [optional, in] VARIANT height,
        [retval, out]  IHTMLImgElement **elem);
}

/*****************************************************************************
 *    DispHTMLImg interface
 */
[
    hidden,
    uuid(3050f51c-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLImg
{
properties:
methods:
    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLIMGELEMENT_ISMAP), displaybind, bindable]
    void isMap(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLIMGELEMENT_ISMAP), displaybind, bindable]
    VARIANT_BOOL isMap();

    [propput, id(DISPID_IHTMLIMGELEMENT_USEMAP), displaybind, bindable]
    void useMap(BSTR v);

    [propget, id(DISPID_IHTMLIMGELEMENT_USEMAP), displaybind, bindable]
    BSTR useMap();

    [propget, id(DISPID_IHTMLIMGELEMENT_MIMETYPE)]
    BSTR mimeType();

    [propget, id(DISPID_IHTMLIMGELEMENT_FILESIZE)]
    BSTR fileSize();

    [propget, id(DISPID_IHTMLIMGELEMENT_FILECREATEDDATE)]
    BSTR fileCreatedDate();

    [propget, id(DISPID_IHTMLIMGELEMENT_FILEMODIFIEDDATE)]
    BSTR fileModifiedDate();

    [propget, id(DISPID_IHTMLIMGELEMENT_FILEUPDATEDDATE)]
    BSTR fileUpdatedDate();

    [propget, id(DISPID_IHTMLIMGELEMENT_PROTOCOL)]
    BSTR protocol();

    [propget, id(DISPID_IHTMLIMGELEMENT_HREF)]
    BSTR href();

    [propget, id(DISPID_IHTMLIMGELEMENT_NAMEPROP)]
    BSTR nameProp();

    [propput, id(DISPID_IHTMLIMGELEMENT_BORDER), displaybind, bindable]
    void border(VARIANT v);

    [propget, id(DISPID_IHTMLIMGELEMENT_BORDER), displaybind, bindable]
    VARIANT border();

    [propput, id(DISPID_IHTMLIMGELEMENT_VSPACE), displaybind, bindable]
    void vspace(LONG v);

    [propget, id(DISPID_IHTMLIMGELEMENT_VSPACE), displaybind, bindable]
    LONG vspace();

    [propput, id(DISPID_IHTMLIMGELEMENT_HSPACE), displaybind, bindable]
    void hspace(LONG v);

    [propget, id(DISPID_IHTMLIMGELEMENT_HSPACE), displaybind, bindable]
    LONG hspace();

    [propput, id(DISPID_IHTMLIMGELEMENT_ALT), displaybind, bindable]
    void alt(BSTR v);

    [propget, id(DISPID_IHTMLIMGELEMENT_ALT), displaybind, bindable]
    BSTR alt();

    [propput, id(DISPID_IHTMLIMGELEMENT_SRC), displaybind, bindable]
    void src(BSTR v);

    [propget, id(DISPID_IHTMLIMGELEMENT_SRC), displaybind, bindable]
    BSTR src();

    [propput, id(DISPID_IHTMLIMGELEMENT_LOWSRC), displaybind, bindable]
    void lowsrc(BSTR v);

    [propget, id(DISPID_IHTMLIMGELEMENT_LOWSRC), displaybind, bindable]
    BSTR lowsrc();

    [propput, id(DISPID_IHTMLIMGELEMENT_VRML), displaybind, bindable]
    void vrml(BSTR v);

    [propget, id(DISPID_IHTMLIMGELEMENT_VRML), displaybind, bindable]
    BSTR vrml();

    [propput, id(DISPID_IHTMLIMGELEMENT_DYNSRC), displaybind, bindable]
    void dynsrc(BSTR v);

    [propget, id(DISPID_IHTMLIMGELEMENT_DYNSRC), displaybind, bindable]
    BSTR dynsrc();

    [propget, id(DISPID_IHTMLIMGELEMENT_COMPLETE)]
    VARIANT_BOOL complete();

    [propput, id(DISPID_IHTMLIMGELEMENT_LOOP), displaybind, bindable]
    void loop(VARIANT v);

    [propget, id(DISPID_IHTMLIMGELEMENT_LOOP), displaybind, bindable]
    VARIANT loop();

    [propput, id(DISPID_IHTMLIMGELEMENT_ALIGN), displaybind, bindable]
    void align(BSTR v);

    [propget, id(DISPID_IHTMLIMGELEMENT_ALIGN), displaybind, bindable]
    BSTR align();

    [propput, id(DISPID_IHTMLIMGELEMENT_NAME), displaybind, bindable]
    void name(BSTR v);

    [propget, id(DISPID_IHTMLIMGELEMENT_NAME), displaybind, bindable]
    BSTR name();

    [propput, id(DISPID_IHTMLIMGELEMENT_WIDTH)]
    void width(LONG v);

    [propget, id(DISPID_IHTMLIMGELEMENT_WIDTH)]
    LONG width();

    [propput, id(DISPID_IHTMLIMGELEMENT_HEIGHT)]
    void height(LONG v);

    [propget, id(DISPID_IHTMLIMGELEMENT_HEIGHT)]
    LONG height();

    [propput, id(DISPID_IHTMLIMGELEMENT_START), displaybind, bindable]
    void start(BSTR v);

    [propget, id(DISPID_IHTMLIMGELEMENT_START), displaybind, bindable]
    BSTR start();

    [propput, id(DISPID_IHTMLIMGELEMENT2_LONGDESC), displaybind, bindable]
    void longDesc(BSTR v);

    [propget, id(DISPID_IHTMLIMGELEMENT2_LONGDESC), displaybind, bindable]
    BSTR longDesc();
}

/*****************************************************************************
 *    HTMLImg coclass
 */
[
    noncreatable,
    uuid(3050f241-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLImg
{
    [default]         dispinterface DispHTMLImg;
 /* [source, default] dispinterface HTMLImgEvents; */
 /* [source]          dispinterface HTMLImgEvents2; */
    WINE_HTMLDATAELEMENT_INTERFACES;
    interface IHTMLControlElement;
    interface IHTMLImgElement;
 /* interface IHTMLImgElement2; */
 /* interface IHTMLImgElement3; */
 /* interface IHTMLImgElement4; */
 /* interface IHTMLMSImgElement; */
}

/*****************************************************************************
 *    IHTMLXMLHttpRequest interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3051040a-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLXMLHttpRequest : IDispatch
{
    [propget, id(DISPID_IHTMLXMLHTTPREQUEST_READYSTATE)]
    HRESULT readyState([out, retval] long *p);

    [propget, id(DISPID_IHTMLXMLHTTPREQUEST_RESPONSEBODY)]
    HRESULT responseBody([out, retval] VARIANT *p);

    [propget, id(DISPID_IHTMLXMLHTTPREQUEST_RESPONSETEXT)]
    HRESULT responseText([out, retval] BSTR *p);

    [propget, id(DISPID_IHTMLXMLHTTPREQUEST_RESPONSEXML)]
    HRESULT responseXML([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLXMLHTTPREQUEST_STATUS)]
    HRESULT status([out, retval] long *p);

    [propget, id(DISPID_IHTMLXMLHTTPREQUEST_STATUSTEXT)]
    HRESULT statusText([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLXMLHTTPREQUEST_ONREADYSTATECHANGE), displaybind, bindable]
    HRESULT onreadystatechange([in] VARIANT v);

    [propget, id(DISPID_IHTMLXMLHTTPREQUEST_ONREADYSTATECHANGE), displaybind, bindable]
    HRESULT onreadystatechange([out, retval] VARIANT *p);

    [id(DISPID_IHTMLXMLHTTPREQUEST_ABORT)] HRESULT abort();

    [id(DISPID_IHTMLXMLHTTPREQUEST_OPEN)]
    HRESULT open(
            [in] BSTR bstrMethod,
            [in] BSTR bstrUrl,
            [in] VARIANT varAsync,
            [in, optional] VARIANT varUser,
            [in, optional] VARIANT varPassword);

    [id(DISPID_IHTMLXMLHTTPREQUEST_SEND)]
    HRESULT send([in, optional] VARIANT varBody);

    [id(DISPID_IHTMLXMLHTTPREQUEST_GETALLRESPONSEHEADERS)]
    HRESULT getAllResponseHeaders([out, retval] BSTR *p);

    [id(DISPID_IHTMLXMLHTTPREQUEST_GETRESPONSEHEADER)]
    HRESULT getResponseHeader(
            [in] BSTR bstrHeader,
            [out, retval] BSTR *p);

    [id(DISPID_IHTMLXMLHTTPREQUEST_SETREQUESTHEADER)]
    HRESULT setRequestHeader(
            [in] BSTR bstrHeader,
            [in] BSTR bstrValue);
}

/*****************************************************************************
 *    IHTMLXMLHttpRequest2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510482-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLXMLHttpRequest2 : IDispatch
{
    [propput, id(DISPID_IHTMLXMLHTTPREQUEST2_TIMEOUT)]
    HRESULT timeout([in] long v);

    [propget, id(DISPID_IHTMLXMLHTTPREQUEST2_TIMEOUT)]
    HRESULT timeout([out, retval] long *p);

    [propput, id(DISPID_IHTMLXMLHTTPREQUEST2_ONTIMEOUT), displaybind, bindable]
    HRESULT ontimeout([in] VARIANT v);

    [propget, id(DISPID_IHTMLXMLHTTPREQUEST2_ONTIMEOUT), displaybind, bindable]
    HRESULT ontimeout([out, retval] VARIANT *p);
}

/*****************************************************************************
 *    IHTMLXMLHttpRequestFactory interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3051040c-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLXMLHttpRequestFactory : IDispatch
{
    [id(DISPID_IHTMLXMLHTTPREQUESTFACTORY_CREATE)]
    HRESULT create([out, retval] IHTMLXMLHttpRequest **p);
}

/*****************************************************************************
 *    DispHTMLXMLHttpRequest dispinterface
 */
[
    hidden,
    uuid(3050f596-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLXMLHttpRequest
{
properties:
methods:
    [propget, id(DISPID_IHTMLXMLHTTPREQUEST_READYSTATE)]
    long readyState();

    [propget, id(DISPID_IHTMLXMLHTTPREQUEST_RESPONSEBODY)]
    VARIANT responseBody();

    [propget, id(DISPID_IHTMLXMLHTTPREQUEST_RESPONSETEXT)]
    BSTR responseText();

    [propget, id(DISPID_IHTMLXMLHTTPREQUEST_RESPONSEXML)]
    IDispatch *responseXML();

    [propget, id(DISPID_IHTMLXMLHTTPREQUEST_STATUS)]
    long status();

    [propget, id(DISPID_IHTMLXMLHTTPREQUEST_STATUSTEXT)]
    BSTR statusText();

    [propput, id(DISPID_IHTMLXMLHTTPREQUEST_ONREADYSTATECHANGE), displaybind, bindable]
    void onreadystatechange(VARIANT v);

    [propget, id(DISPID_IHTMLXMLHTTPREQUEST_ONREADYSTATECHANGE), displaybind, bindable]
    VARIANT onreadystatechange();

    [id(DISPID_IHTMLXMLHTTPREQUEST_ABORT)]
    void abort();

    [id(DISPID_IHTMLXMLHTTPREQUEST_OPEN)]
    void open(
            [in] BSTR bstrMethod,
            [in] BSTR bstrUrl,
            [in] VARIANT varAsync,
            [in, optional] VARIANT varUser,
            [in, optional] VARIANT varPassword);

    [id(DISPID_IHTMLXMLHTTPREQUEST_SEND)]
    void send([in, optional] VARIANT varBody);

    [id(DISPID_IHTMLXMLHTTPREQUEST_GETALLRESPONSEHEADERS)]
    BSTR getAllResponseHeaders();

    [id(DISPID_IHTMLXMLHTTPREQUEST_GETRESPONSEHEADER)]
    BSTR getResponseHeader([in] BSTR bstrHeader);

    [id(DISPID_IHTMLXMLHTTPREQUEST_SETREQUESTHEADER)]
    void setRequestHeader(
            [in] BSTR bstrHeader,
            [in] BSTR bstrValue);

    [propput, id(DISPID_IHTMLXMLHTTPREQUEST2_TIMEOUT)]
    void timeout(long v);

    [propget, id(DISPID_IHTMLXMLHTTPREQUEST2_TIMEOUT)]
    long timeout();

    [propput, id(DISPID_IHTMLXMLHTTPREQUEST2_ONTIMEOUT), displaybind, bindable]
    void ontimeout(VARIANT v);

    [propget, id(DISPID_IHTMLXMLHTTPREQUEST2_ONTIMEOUT), displaybind, bindable]
    VARIANT ontimeout();

    WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL;


    [id(DISPID_IEVENTTARGET_ADDEVENTLISTENER)]
    void addEventListener(
            [in] BSTR type,
            [in] IDispatch *listener,
            [in] VARIANT_BOOL useCapture);

    [id(DISPID_IEVENTTARGET_REMOVEEVENTLISTENER)]
    void removeEventListener(
            [in] BSTR type,
            [in] IDispatch *listener,
            [in] VARIANT_BOOL useCapture);

    [id(DISPID_IEVENTTARGET_DISPATCHEVENT)]
    VARIANT_BOOL dispatchEvent([in] IDOMEvent *evt);
}

/*****************************************************************************
 *    HTMLXMLHttpRequest
 */
[
    noncreatable,
    uuid(3051040b-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLXMLHttpRequest
{
    [default]         dispinterface DispHTMLXMLHttpRequest;
 /* [source, default] dispinterface HTMLXMLHttpRequestEvents; */
    interface IHTMLXMLHttpRequest;
    interface IHTMLXMLHttpRequest2;
    interface IHTMLDOMConstructor;
    interface IEventTarget;
}

/*****************************************************************************
 *    IHTMLXDomainRequest interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510454-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLXDomainRequest : IDispatch
{
    [propget, id(DISPID_IHTMLXDOMAINREQUEST_RESPONSETEXT)]
    HRESULT responseText([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLXDOMAINREQUEST_TIMEOUT)]
    HRESULT timeout([in] LONG v);

    [propget, id(DISPID_IHTMLXDOMAINREQUEST_TIMEOUT)]
    HRESULT timeout([out, retval] LONG *p);

    [propget, id(DISPID_IHTMLXDOMAINREQUEST_CONTENTTYPE)]
    HRESULT contentType([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLXDOMAINREQUEST_ONPROGRESS)]
    HRESULT onprogress([in] VARIANT v);

    [propget, id(DISPID_IHTMLXDOMAINREQUEST_ONPROGRESS)]
    HRESULT onprogress([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLXDOMAINREQUEST_ONERROR)]
    HRESULT onerror([in] VARIANT v);

    [propget, id(DISPID_IHTMLXDOMAINREQUEST_ONERROR)]
    HRESULT onerror([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLXDOMAINREQUEST_ONTIMEOUT)]
    HRESULT ontimeout([in] VARIANT v);

    [propget, id(DISPID_IHTMLXDOMAINREQUEST_ONTIMEOUT)]
    HRESULT ontimeout([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLXDOMAINREQUEST_ONLOAD)]
    HRESULT onload([in] VARIANT v);

    [propget, id(DISPID_IHTMLXDOMAINREQUEST_ONLOAD)]
    HRESULT onload([out, retval] VARIANT *p);

    [id(DISPID_IHTMLXDOMAINREQUEST_ABORT)]
    HRESULT abort();

    [id(DISPID_IHTMLXDOMAINREQUEST_OPEN)]
    HRESULT open([in] BSTR bstrMethod, [in] BSTR bstrUrl);

    [id(DISPID_IHTMLXDOMAINREQUEST_SEND)]
    HRESULT send([in, optional] VARIANT varBody);
};

/*****************************************************************************
 *    IHTMLXDomainRequestFactory interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510456-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLXDomainRequestFactory : IDispatch
{
    [id(DISPID_IHTMLXDOMAINREQUESTFACTORY_CREATE)]
    HRESULT create([out, retval] IHTMLXDomainRequest **p);
};

/*****************************************************************************
 *    DispXDomainRequest dispinterface
 */
[
    hidden,
    uuid(3050f599-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispXDomainRequest
{
properties:
methods:
    WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL;
};

/*****************************************************************************
 *    XDomainRequest
 */
[
    noncreatable,
    uuid(30510455-98b5-11cf-bb82-00aa00bdce0b)
]
coclass XDomainRequest
{
    [default]         dispinterface DispXDomainRequest;
    interface IHTMLDOMConstructor;
};

/*****************************************************************************
 *    XDomainRequestFactory
 */
[
    noncreatable,
    uuid(30510457-98b5-11cf-bb82-00aa00bdce0b)
]
coclass XDomainRequestFactory
{
    [default]         interface IHTMLXDomainRequestFactory;
};

/*****************************************************************************
 *    IHTMLControlElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f4e9-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLControlElement : IDispatch
{
    [propput, id(DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable]
    HRESULT tabIndex([in] short v);

    [propget, id(DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable]
    HRESULT tabIndex([retval, out] short * p);

    [id(DISPID_IHTMLCONTROLELEMENT_FOCUS)]
    HRESULT focus();

    [propput, id(DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable]
    HRESULT accessKey([in] BSTR v);

    [propget, id(DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable]
    HRESULT accessKey([retval, out] BSTR * p);

    [propput, id(DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable]
    HRESULT onblur([in] VARIANT v);

    [propget, id(DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable]
    HRESULT onblur([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable]
    HRESULT onfocus([in] VARIANT v);

    [propget, id(DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable]
    HRESULT onfocus([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable]
    HRESULT onresize([in] VARIANT v);

    [propget, id(DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable]
    HRESULT onresize([retval, out] VARIANT * p);

    [id(DISPID_IHTMLCONTROLELEMENT_BLUR)]
    HRESULT blur();

    [id(DISPID_IHTMLCONTROLELEMENT_ADDFILTER)]
    HRESULT addFilter([in] IUnknown* pUnk);

    [id(DISPID_IHTMLCONTROLELEMENT_REMOVEFILTER)]
    HRESULT removeFilter([in] IUnknown* pUnk);

    [propget, id(DISPID_IHTMLCONTROLELEMENT_CLIENTHEIGHT), displaybind, bindable]
    HRESULT clientHeight([retval, out] LONG * p);

    [propget, id(DISPID_IHTMLCONTROLELEMENT_CLIENTWIDTH), displaybind, bindable]
    HRESULT clientWidth([retval, out] LONG * p);

    [propget, id(DISPID_IHTMLCONTROLELEMENT_CLIENTTOP), displaybind, bindable]
    HRESULT clientTop([retval, out] LONG * p);

    [propget, id(DISPID_IHTMLCONTROLELEMENT_CLIENTLEFT), displaybind, bindable]
    HRESULT clientLeft([retval, out] LONG * p);
}

/*****************************************************************************
 *    IHTMLBodyElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f1d8-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLBodyElement : IDispatch
{
    [propput, id(DISPID_IHTMLBODYELEMENT_BACKGROUND), displaybind, bindable]
    HRESULT background([in] BSTR v);

    [propget, id(DISPID_IHTMLBODYELEMENT_BACKGROUND), displaybind, bindable]
    HRESULT background([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLBODYELEMENT_BGPROPERTIES), displaybind, bindable]
    HRESULT bgProperties([in] BSTR v);

    [propget, id(DISPID_IHTMLBODYELEMENT_BGPROPERTIES), displaybind, bindable]
    HRESULT bgProperties([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLBODYELEMENT_LEFTMARGIN), displaybind, bindable]
    HRESULT leftMargin([in] VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_LEFTMARGIN), displaybind, bindable]
    HRESULT leftMargin([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLBODYELEMENT_TOPMARGIN), displaybind, bindable]
    HRESULT topMargin([in] VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_TOPMARGIN), displaybind, bindable]
    HRESULT topMargin([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLBODYELEMENT_RIGHTMARGIN), displaybind, bindable]
    HRESULT rightMargin([in] VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_RIGHTMARGIN), displaybind, bindable]
    HRESULT rightMargin([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLBODYELEMENT_BOTTOMMARGIN), displaybind, bindable]
    HRESULT bottomMargin([in] VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_BOTTOMMARGIN), displaybind, bindable]
    HRESULT bottomMargin([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLBODYELEMENT_NOWRAP), displaybind, bindable]
    HRESULT noWrap([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLBODYELEMENT_NOWRAP), displaybind, bindable]
    HRESULT noWrap([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLBODYELEMENT_BGCOLOR), displaybind, bindable]
    HRESULT bgColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_BGCOLOR), displaybind, bindable]
    HRESULT bgColor([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLBODYELEMENT_TEXT), displaybind, bindable]
    HRESULT text([in] VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_TEXT), displaybind, bindable]
    HRESULT text([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLBODYELEMENT_LINK), displaybind, bindable]
    HRESULT link([in] VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_LINK), displaybind, bindable]
    HRESULT link([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLBODYELEMENT_VLINK), displaybind, bindable]
    HRESULT vLink([in] VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_VLINK), displaybind, bindable]
    HRESULT vLink([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLBODYELEMENT_ALINK), displaybind, bindable]
    HRESULT aLink([in] VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_ALINK), displaybind, bindable]
    HRESULT aLink([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLBODYELEMENT_ONLOAD), displaybind, bindable]
    HRESULT onload([in] VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_ONLOAD), displaybind, bindable]
    HRESULT onload([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLBODYELEMENT_ONUNLOAD), displaybind, bindable]
    HRESULT onunload([in] VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_ONUNLOAD), displaybind, bindable]
    HRESULT onunload([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLBODYELEMENT_SCROLL), displaybind, bindable]
    HRESULT scroll([in] BSTR v);

    [propget, id(DISPID_IHTMLBODYELEMENT_SCROLL), displaybind, bindable]
    HRESULT scroll([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLBODYELEMENT_ONSELECT), displaybind, bindable]
    HRESULT onselect([in] VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_ONSELECT), displaybind, bindable]
    HRESULT onselect([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLBODYELEMENT_ONBEFOREUNLOAD), displaybind, bindable]
    HRESULT onbeforeunload([in] VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_ONBEFOREUNLOAD), displaybind, bindable]
    HRESULT onbeforeunload([retval, out] VARIANT *p);

    [id(DISPID_IHTMLBODYELEMENT_CREATETEXTRANGE)]
    HRESULT createTextRange([retval, out] IHTMLTxtRange **range);
}

/*****************************************************************************
 *    IHTMLBodyElement2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f5c5-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLBodyElement2 : IDispatch
{
    [propput, id(DISPID_IHTMLBODYELEMENT2_ONBEFOREPRINT), displaybind, bindable]
    HRESULT onbeforeprint([in] VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT2_ONBEFOREPRINT), displaybind, bindable]
    HRESULT onbeforeprint([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT), displaybind, bindable]
    HRESULT onafterprint([in] VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT), displaybind, bindable]
    HRESULT onafterprint([retval, out] VARIANT *p);
}

[
    hidden,
    uuid(3050f507-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLBody
{
properties:
methods:
    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLBODYELEMENT_BACKGROUND), displaybind, bindable]
    void background(BSTR v);

    [propget, id(DISPID_IHTMLBODYELEMENT_BACKGROUND), displaybind, bindable]
    BSTR background();

    [propput, id(DISPID_IHTMLBODYELEMENT_BGPROPERTIES), displaybind, bindable]
    void bgProperties(BSTR v);

    [propget, id(DISPID_IHTMLBODYELEMENT_BGPROPERTIES), displaybind, bindable]
    BSTR bgProperties();

    [propput, id(DISPID_IHTMLBODYELEMENT_LEFTMARGIN), displaybind, bindable]
    void leftMargin(VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_LEFTMARGIN), displaybind, bindable]
    VARIANT leftMargin();

    [propput, id(DISPID_IHTMLBODYELEMENT_TOPMARGIN), displaybind, bindable]
    void topMargin(VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_TOPMARGIN), displaybind, bindable]
    VARIANT topMargin();

    [propput, id(DISPID_IHTMLBODYELEMENT_RIGHTMARGIN), displaybind, bindable]
    void rightMargin(VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_RIGHTMARGIN), displaybind, bindable]
    VARIANT rightMargin();

    [propput, id(DISPID_IHTMLBODYELEMENT_BOTTOMMARGIN), displaybind, bindable]
    void bottomMargin(VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_BOTTOMMARGIN), displaybind, bindable]
    VARIANT bottomMargin();

    [propput, id(DISPID_IHTMLBODYELEMENT_NOWRAP), displaybind, bindable]
    void noWrap(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLBODYELEMENT_NOWRAP), displaybind, bindable]
    VARIANT_BOOL noWrap();

    [propput, id(DISPID_IHTMLBODYELEMENT_BGCOLOR), displaybind, bindable]
    void bgColor(VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_BGCOLOR), displaybind, bindable]
    VARIANT bgColor();

    [propput, id(DISPID_IHTMLBODYELEMENT_TEXT), displaybind, bindable]
    void text(VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_TEXT), displaybind, bindable]
    VARIANT text();

    [propput, id(DISPID_IHTMLBODYELEMENT_LINK), displaybind, bindable]
    void link(VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_LINK), displaybind, bindable]
    VARIANT link();

    [propput, id(DISPID_IHTMLBODYELEMENT_VLINK), displaybind, bindable]
    void vLink(VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_VLINK), displaybind, bindable]
    VARIANT vLink();

    [propput, id(DISPID_IHTMLBODYELEMENT_ALINK), displaybind, bindable]
    void aLink(VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_ALINK), displaybind, bindable]
    VARIANT aLink();

    [propput, id(DISPID_IHTMLBODYELEMENT_ONUNLOAD), displaybind, bindable]
    void onunload(VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_ONUNLOAD), displaybind, bindable]
    VARIANT onunload();

    [propput, id(DISPID_IHTMLBODYELEMENT_SCROLL), displaybind, bindable]
    void scroll(BSTR v);

    [propget, id(DISPID_IHTMLBODYELEMENT_SCROLL), displaybind, bindable]
    BSTR scroll();

    [propput, id(DISPID_IHTMLBODYELEMENT_ONBEFOREUNLOAD), displaybind, bindable]
    void onbeforeunload(VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT_ONBEFOREUNLOAD), displaybind, bindable]
    VARIANT onbeforeunload();

    [id(DISPID_IHTMLBODYELEMENT_CREATETEXTRANGE)]
    IHTMLTxtRange* createTextRange();

    [propput, id(DISPID_IHTMLBODYELEMENT2_ONBEFOREPRINT), displaybind, bindable]
    void onbeforeprint(VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT2_ONBEFOREPRINT), displaybind, bindable]
    VARIANT onbeforeprint();

    [propput, id(DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT), displaybind, bindable]
    void onafterprint(VARIANT v);

    [propget, id(DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT), displaybind, bindable]
    VARIANT onafterprint();
}

[
    uuid(3050f24a-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLBody
{
    [default]           dispinterface DispHTMLBody;
    [source, default]   dispinterface HTMLTextContainerEvents;
    [source]            dispinterface HTMLTextContainerEvents2;
    WINE_HTMLELEMENT_INTERFACES;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLBodyElement;
    interface IHTMLBodyElement2;
 /* interface IHTMLBodyElement3; */
 /* interface IHTMLBodyElement4; */
 /* interface IHTMLBodyElement5; */
}

/*****************************************************************************
 *    IHTMLAnchorElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f1da-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLAnchorElement : IDispatch
{
    [propput, id(DISPID_IHTMLANCHORELEMENT_HREF), displaybind, bindable]
    HRESULT href([in] BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_HREF), displaybind, bindable]
    HRESULT href([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLANCHORELEMENT_TARGET), displaybind, bindable]
    HRESULT target([in] BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_TARGET), displaybind, bindable]
    HRESULT target([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLANCHORELEMENT_REL), displaybind, bindable]
    HRESULT rel([in] BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_REL), displaybind, bindable]
    HRESULT rel([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLANCHORELEMENT_REV), displaybind, bindable]
    HRESULT rev([in] BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_REV), displaybind, bindable]
    HRESULT rev([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLANCHORELEMENT_URN), displaybind, bindable]
    HRESULT urn([in] BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_URN), displaybind, bindable]
    HRESULT urn([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLANCHORELEMENT_METHODS), displaybind, bindable]
    HRESULT Methods([in] BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_METHODS), displaybind, bindable]
    HRESULT Methods([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLANCHORELEMENT_NAME), displaybind, bindable]
    HRESULT name([in] BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_NAME), displaybind, bindable]
    HRESULT name([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLANCHORELEMENT_HOST)]
    HRESULT host([in] BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_HOST)]
    HRESULT host([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLANCHORELEMENT_HOSTNAME)]
    HRESULT hostname([in] BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_HOSTNAME)]
    HRESULT hostname([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLANCHORELEMENT_PATHNAME)]
    HRESULT pathname([in] BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_PATHNAME)]
    HRESULT pathname([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLANCHORELEMENT_PORT)]
    HRESULT port([in] BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_PORT)]
    HRESULT port([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLANCHORELEMENT_PROTOCOL)]
    HRESULT protocol([in] BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_PROTOCOL)]
    HRESULT protocol([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLANCHORELEMENT_SEARCH)]
    HRESULT search([in] BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_SEARCH)]
    HRESULT search([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLANCHORELEMENT_HASH)]
    HRESULT hash([in] BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_HASH)]
    HRESULT hash([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLANCHORELEMENT_ONBLUR), displaybind, bindable]
    HRESULT onblur([in] VARIANT v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_ONBLUR), displaybind, bindable]
    HRESULT onblur([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLANCHORELEMENT_ONFOCUS), displaybind, bindable]
    HRESULT onfocus([in] VARIANT v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_ONFOCUS), displaybind, bindable]
    HRESULT onfocus([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLANCHORELEMENT_ACCESSKEY), displaybind, bindable]
    HRESULT accessKey([in] BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_ACCESSKEY), displaybind, bindable]
    HRESULT accessKey([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLANCHORELEMENT_PROTOCOLLONG)]
    HRESULT protocolLong([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLANCHORELEMENT_MIMETYPE)]
    HRESULT mimeType([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLANCHORELEMENT_NAMEPROP)]
    HRESULT nameProp([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLANCHORELEMENT_TABINDEX), displaybind, bindable]
    HRESULT tabIndex([in] short v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_TABINDEX), displaybind, bindable]
    HRESULT tabIndex([retval, out] short *p);

    [id(DISPID_IHTMLANCHORELEMENT_FOCUS)]
    HRESULT focus();

    [id(DISPID_IHTMLANCHORELEMENT_BLUR)]
    HRESULT blur();
}

/*****************************************************************************
 *    DispHTMLAnchorElement dispinterface
 */
[
    hidden,
    uuid(3050f502-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLAnchorElement
{
properties:
methods:
    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLANCHORELEMENT_HREF), displaybind, bindable]
    void href(BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_HREF), displaybind, bindable]
    BSTR href();

    [propput, id(DISPID_IHTMLANCHORELEMENT_TARGET), displaybind, bindable]
    void target(BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_TARGET), displaybind, bindable]
    BSTR target();

    [propput, id(DISPID_IHTMLANCHORELEMENT_REL), displaybind, bindable]
    void rel(BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_REL), displaybind, bindable]
    BSTR rel();

    [propput, id(DISPID_IHTMLANCHORELEMENT_REV), displaybind, bindable]
    void rev(BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_REV), displaybind, bindable]
    BSTR rev();

    [propput, id(DISPID_IHTMLANCHORELEMENT_URN), displaybind, bindable]
    void urn(BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_URN), displaybind, bindable]
    BSTR urn();

    [propput, id(DISPID_IHTMLANCHORELEMENT_METHODS), displaybind, bindable]
    void Methods(BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_METHODS), displaybind, bindable]
    BSTR Methods();

    [propput, id(DISPID_IHTMLANCHORELEMENT_NAME), displaybind, bindable]
    void name(BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_NAME), displaybind, bindable]
    BSTR name();

    [propput, id(DISPID_IHTMLANCHORELEMENT_HOST)]
    void host(BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_HOST)]
    BSTR host();

    [propput, id(DISPID_IHTMLANCHORELEMENT_HOSTNAME)]
    void hostname(BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_HOSTNAME)]
    BSTR hostname();

    [propput, id(DISPID_IHTMLANCHORELEMENT_PATHNAME)]
    void pathname(BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_PATHNAME)]
    BSTR pathname();

    [propput, id(DISPID_IHTMLANCHORELEMENT_PORT)]
    void port(BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_PORT)]
    BSTR port();

    [propput, id(DISPID_IHTMLANCHORELEMENT_PROTOCOL)]
    void protocol(BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_PROTOCOL)]
    BSTR protocol();

    [propput, id(DISPID_IHTMLANCHORELEMENT_SEARCH)]
    void search(BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_SEARCH)]
    BSTR search();

    [propput, id(DISPID_IHTMLANCHORELEMENT_HASH)]
    void hash(BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT_HASH)]
    BSTR hash();

    [propget, id(DISPID_IHTMLANCHORELEMENT_PROTOCOLLONG)]
    BSTR protocolLong();

    [propget, id(DISPID_IHTMLANCHORELEMENT_MIMETYPE)]
    BSTR mimeType();

    [propget, id(DISPID_IHTMLANCHORELEMENT_NAMEPROP)]
    BSTR nameProp();

    [propput, id(DISPID_IHTMLANCHORELEMENT2_CHARSET), displaybind, bindable]
    void charset(BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT2_CHARSET), displaybind, bindable]
    BSTR charset();

    [propput, id(DISPID_IHTMLANCHORELEMENT2_COORDS), displaybind, bindable]
    void coords(BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT2_COORDS), displaybind, bindable]
    BSTR coords();

    [propput, id(DISPID_IHTMLANCHORELEMENT2_HREFLANG), displaybind, bindable]
    void hreflang(BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT2_HREFLANG), displaybind, bindable]
    BSTR hreflang();

    [propput, id(DISPID_IHTMLANCHORELEMENT2_SHAPE), displaybind, bindable]
    void shape(BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT2_SHAPE), displaybind, bindable]
    BSTR shape();

    [propput, id(DISPID_IHTMLANCHORELEMENT2_TYPE), displaybind, bindable]
    void type(BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT2_TYPE), displaybind, bindable]
    BSTR type();

    [propput, id(DISPID_IHTMLANCHORELEMENT3_IE8_SHAPE)]
    void ie8_shape(BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT3_IE8_SHAPE)]
    BSTR ie8_shape();

    [propput, id(DISPID_IHTMLANCHORELEMENT3_IE8_COORDS)]
    void ie8_coords(BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT3_IE8_COORDS)]
    BSTR ie8_coords();

    [propput, id(DISPID_IHTMLANCHORELEMENT3_IE8_HREF)]
    void ie8_href(BSTR v);

    [propget, id(DISPID_IHTMLANCHORELEMENT3_IE8_HREF)]
    BSTR ie8_href();
}

/*****************************************************************************
 *    HTMLAnchorElement coclass
 */
[
    noncreatable,
    uuid(3050f248-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLAnchorElement
{
    [default]         dispinterface DispHTMLAnchorElement;
 /* [source, default] dispinterface HTMLAnchorEvents; */
 /* [source]          dispinterface HTMLAnchorEvents2; */
    WINE_HTMLDATAELEMENT_INTERFACES;
    interface IHTMLAnchorElement;
 /* interface IHTMLAnchorElement2; */
 /* interface IHTMLAnchorElement3; */
}

/*****************************************************************************
 *    IHTMLAreaElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f265-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLAreaElement : IDispatch
{
    [propput, id(DISPID_IHTMLAREAELEMENT_SHAPE)]
    HRESULT shape([in] BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_SHAPE)]
    HRESULT shape([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLAREAELEMENT_COORDS)]
    HRESULT coords([in] BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_COORDS)]
    HRESULT coords([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLAREAELEMENT_HREF)]
    HRESULT href([in] BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_HREF)]
    HRESULT href([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLAREAELEMENT_TARGET)]
    HRESULT target([in] BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_TARGET)]
    HRESULT target([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLAREAELEMENT_ALT)]
    HRESULT alt([in] BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_ALT)]
    HRESULT alt([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLAREAELEMENT_NOHREF)]
    HRESULT noHref([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLAREAELEMENT_NOHREF)]
    HRESULT noHref([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLAREAELEMENT_HOST)]
    HRESULT host([in] BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_HOST)]
    HRESULT host([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLAREAELEMENT_HOSTNAME)]
    HRESULT hostname([in] BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_HOSTNAME)]
    HRESULT hostname([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLAREAELEMENT_PATHNAME)]
    HRESULT pathname([in] BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_PATHNAME)]
    HRESULT pathname([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLAREAELEMENT_PORT)]
    HRESULT port([in] BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_PORT)]
    HRESULT port([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLAREAELEMENT_PROTOCOL)]
    HRESULT protocol([in] BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_PROTOCOL)]
    HRESULT protocol([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLAREAELEMENT_SEARCH)]
    HRESULT search([in] BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_SEARCH)]
    HRESULT search([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLAREAELEMENT_HASH)]
    HRESULT hash([in] BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_HASH)]
    HRESULT hash([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLAREAELEMENT_ONBLUR), displaybind, bindable]
    HRESULT onblur([in] VARIANT v);

    [propget, id(DISPID_IHTMLAREAELEMENT_ONBLUR), displaybind, bindable]
    HRESULT onblur([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLAREAELEMENT_ONFOCUS), displaybind, bindable]
    HRESULT onfocus([in] VARIANT v);

    [propget, id(DISPID_IHTMLAREAELEMENT_ONFOCUS), displaybind, bindable]
    HRESULT onfocus([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLAREAELEMENT_TABINDEX), displaybind, bindable]
    HRESULT tabIndex([in] short v);

    [propget, id(DISPID_IHTMLAREAELEMENT_TABINDEX), displaybind, bindable]
    HRESULT tabIndex([retval, out] short *p);

    [id(DISPID_IHTMLAREAELEMENT_FOCUS)]
    HRESULT focus();

    [id(DISPID_IHTMLAREAELEMENT_BLUR)]
    HRESULT blur();
}

/*****************************************************************************
 *    DispHTMLAreaElement dispinterface
 */
[
    hidden,
    uuid(3050f503-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLAreaElement
{
properties:
methods:
    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLAREAELEMENT_SHAPE)]
    void shape(BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_SHAPE)]
    BSTR shape();

    [propput, id(DISPID_IHTMLAREAELEMENT_COORDS)]
    void coords(BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_COORDS)]
    BSTR coords();

    [propput, id(DISPID_IHTMLAREAELEMENT_HREF)]
    void href(BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_HREF)]
    BSTR href();

    [propput, id(DISPID_IHTMLAREAELEMENT_TARGET)]
    void target(BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_TARGET)]
    BSTR target();

    [propput, id(DISPID_IHTMLAREAELEMENT_ALT)]
    void alt(BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_ALT)]
    BSTR alt();

    [propput, id(DISPID_IHTMLAREAELEMENT_NOHREF)]
    void noHref(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLAREAELEMENT_NOHREF)]
    VARIANT_BOOL noHref();

    [propput, id(DISPID_IHTMLAREAELEMENT_HOST)]
    void host(BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_HOST)]
    BSTR host();

    [propput, id(DISPID_IHTMLAREAELEMENT_HOSTNAME)]
    void hostname(BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_HOSTNAME)]
    BSTR hostname();

    [propput, id(DISPID_IHTMLAREAELEMENT_PATHNAME)]
    void pathname(BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_PATHNAME)]
    BSTR pathname();

    [propput, id(DISPID_IHTMLAREAELEMENT_PORT)]
    void port(BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_PORT)]
    BSTR port();

    [propput, id(DISPID_IHTMLAREAELEMENT_PROTOCOL)]
    void protocol(BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_PROTOCOL)]
    BSTR protocol();

    [propput, id(DISPID_IHTMLAREAELEMENT_SEARCH)]
    void search(BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_SEARCH)]
    BSTR search();

    [propput, id(DISPID_IHTMLAREAELEMENT_HASH)]
    void hash(BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT_HASH)]
    BSTR hash();

    [propput, id(DISPID_IHTMLAREAELEMENT2_IE8_SHAPE)]
    void ie8_shape(BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT2_IE8_SHAPE)]
    BSTR ie8_shape();

    [propput, id(DISPID_IHTMLAREAELEMENT2_IE8_COORDS)]
    void ie8_coords(BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT2_IE8_COORDS)]
    BSTR ie8_coords();

    [propput, id(DISPID_IHTMLAREAELEMENT2_IE8_HREF)]
    void ie8_href(BSTR v);

    [propget, id(DISPID_IHTMLAREAELEMENT2_IE8_HREF)]
    BSTR ie8_href();
}

/*****************************************************************************
 *    HTMLAreaElement coclass
 */
[
    noncreatable,
    uuid(3050f283-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLAreaElement
{
    [default]         dispinterface DispHTMLAreaElement;
 /* [source, default] dispinterface HTMLAreaEvents; */
 /* [source]          dispinterface HTMLAreaEvents2; */
    WINE_HTMLELEMENT_INTERFACES;
    interface IHTMLAreaElement;
 /* interface IHTMLAreaElement2; */
}

/*****************************************************************************
 *    IHTMLLabelElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f32a-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLLabelElement : IDispatch
{
    [propput, id(DISPID_IHTMLLABELELEMENT_HTMLFOR), displaybind, bindable]
    HRESULT htmlFor([in] BSTR v);

    [propget, id(DISPID_IHTMLLABELELEMENT_HTMLFOR), displaybind, bindable]
    HRESULT htmlFor([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLLABELELEMENT_ACCESSKEY), displaybind, bindable]
    HRESULT accessKey([in] BSTR v);

    [propget, id(DISPID_IHTMLLABELELEMENT_ACCESSKEY), displaybind, bindable]
    HRESULT accessKey([out, retval] BSTR *p);
}

/*****************************************************************************
 *    IHTMLLabelElement2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f832-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLLabelElement2 : IDispatch
{
    [propget, id(DISPID_IHTMLLABELELEMENT2_FORM)]
    HRESULT form([out, retval] IHTMLFormElement **p);
}

/*****************************************************************************
 *    DispHTMLLabelElement dispinterface
 */
[
    hidden,
    uuid(3050f522-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLLabelElement
{
properties:
methods:
    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLLABELELEMENT_HTMLFOR), displaybind, bindable]
    void htmlFor(BSTR v);

    [propget, id(DISPID_IHTMLLABELELEMENT_HTMLFOR), displaybind, bindable]
    BSTR htmlFor();

    [propget, id(DISPID_IHTMLLABELELEMENT2_FORM)]
    IHTMLFormElement *form();
}

/*****************************************************************************
 *    HTMLLabelElement coclass
 */
[
    noncreatable,
    uuid(3050f32b-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLLabelElement
{
    [default]         dispinterface DispHTMLLabelElement;
 /* [source, default] dispinterface HTMLLabelEvents; */
 /* [source]          dispinterface HTMLLabelEvents2; */
    WINE_HTMLDATAELEMENT_INTERFACES;
    interface IHTMLLabelElement;
    interface IHTMLLabelElement2;
}

/*****************************************************************************
 *    IHTMLElementCollection interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050F21F-98B5-11CF-BB82-00AA00BDCE0B)
]
interface IHTMLElementCollection : IDispatch
{
    [id(DISPID_IHTMLELEMENTCOLLECTION_TOSTRING)]
    HRESULT toString([retval, out] BSTR *String);

    [propput, id(DISPID_IHTMLELEMENTCOLLECTION_LENGTH)]
    HRESULT length([in] LONG v);

    [propget, id(DISPID_IHTMLELEMENTCOLLECTION_LENGTH)]
    HRESULT length([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLELEMENTCOLLECTION__NEWENUM)]
    HRESULT _newEnum([retval, out] IUnknown **p);

    [id(DISPID_IHTMLELEMENTCOLLECTION_ITEM)]
    HRESULT item(
        [optional, in] VARIANT name,
        [optional, in] VARIANT index,
        [retval,  out] IDispatch **pdisp);

    [id(DISPID_IHTMLELEMENTCOLLECTION_TAGS)]
    HRESULT tags(
        [in] VARIANT tagName,
        [retval, out] IDispatch **pdisp);
}

/*****************************************************************************
 *    DispHTMLElementCollection dispinterface
 */
[
    hidden,
    uuid(3050f56b-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLElementCollection
{
properties:
methods:
    [id(DISPID_IHTMLELEMENTCOLLECTION_TOSTRING)]
    BSTR toString();

    [propput, id(DISPID_IHTMLELEMENTCOLLECTION_LENGTH)]
    void length(LONG v);

    [propget, id(DISPID_IHTMLELEMENTCOLLECTION_LENGTH)]
    LONG length();

    [propget, id(DISPID_IHTMLELEMENTCOLLECTION__NEWENUM), hidden, restricted]
    IUnknown *_newEnum();

    [id(DISPID_IHTMLELEMENTCOLLECTION_ITEM)]
    IDispatch *item(
            [in, optional] VARIANT name,
            [in, optional] VARIANT index);

    [id(DISPID_IHTMLELEMENTCOLLECTION_TAGS)]
    IDispatch *tags(
            [in] VARIANT tagName);

    [id(DISPID_IHTMLELEMENTCOLLECTION2_URNS)]
    IDispatch *urns([in] VARIANT urn);

    [id(DISPID_IHTMLELEMENTCOLLECTION3_NAMEDITEM)]
    IDispatch *namedItem([in] BSTR name);
}

/*****************************************************************************
 *    IHTMLSelectElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f244-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLSelectElement : IDispatch
{
    [propput, id(DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable]
    HRESULT size([in] LONG v);

    [propget, id(DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable]
    HRESULT size([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable]
    HRESULT multiple([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable]
    HRESULT multiple([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable]
    HRESULT name([in] BSTR v);

    [propget, id(DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable]
    HRESULT name([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLSELECTELEMENT_OPTIONS)]
    HRESULT options([retval, out] IDispatch **p);

    [propput, id(DISPID_IHTMLSELECTELEMENT_ONCHANGE), displaybind, bindable]
    HRESULT onchange([in] VARIANT v);

    [propget, id(DISPID_IHTMLSELECTELEMENT_ONCHANGE), displaybind, bindable]
    HRESULT onchange([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)]
    HRESULT selectedIndex([in] LONG v);

    [propget, id(DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)]
    HRESULT selectedIndex([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLSELECTELEMENT_TYPE), displaybind, bindable]
    HRESULT type([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable]
    HRESULT value([in] BSTR v);

    [propget, id(DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable]
    HRESULT value([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSELECTELEMENT_DISABLED), displaybind, bindable]
    HRESULT disabled([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLSELECTELEMENT_DISABLED), displaybind, bindable]
    HRESULT disabled([retval, out] VARIANT_BOOL *p);

    [propget, id(DISPID_IHTMLSELECTELEMENT_FORM)]
    HRESULT form([retval, out] IHTMLFormElement **p);

    [id(DISPID_IHTMLSELECTELEMENT_ADD)]
    HRESULT add(
        [in] IHTMLElement *element,
        [optional, in] VARIANT before);

    [id(DISPID_IHTMLSELECTELEMENT_REMOVE)]
    HRESULT remove([defaultvalue(-1), in] LONG index);

    [propput, id(DISPID_IHTMLSELECTELEMENT_LENGTH)]
    HRESULT length([in] LONG v);

    [propget, id(DISPID_IHTMLSELECTELEMENT_LENGTH)]
    HRESULT length([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLSELECTELEMENT__NEWENUM), hidden, restricted]
    HRESULT _newEnum([retval, out] IUnknown **p);

    [id(DISPID_IHTMLSELECTELEMENT_ITEM)]
    HRESULT item(
        [optional, in] VARIANT name,
        [optional, in] VARIANT index,
        [retval, out] IDispatch **pdisp);

    [id(DISPID_IHTMLSELECTELEMENT_TAGS)]
    HRESULT tags(
        [in] VARIANT tagName,
        [retval, out] IDispatch **pdisp);
}

/*****************************************************************************
 *    DispHTMLSelectElement dispinterface
 */
[
    hidden,
    uuid(3050f531-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLSelectElement
{
properties:
methods:
    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable]
    void size(LONG v);

    [propget, id(DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable]
    LONG size();

    [propput, id(DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable]
    void multiple(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable]
    VARIANT_BOOL multiple();

    [propput, id(DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable]
    void name(BSTR v);

    [propget, id(DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable]
    BSTR name();

    [propget, id(DISPID_IHTMLSELECTELEMENT_OPTIONS)]
    IDispatch *options();

    [propput, id(DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)]
    void selectedIndex(LONG v);

    [propget, id(DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)]
    LONG selectedIndex();

    [propget, id(DISPID_IHTMLSELECTELEMENT_TYPE), displaybind, bindable]
    BSTR type();

    [propput, id(DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable]
    void value(BSTR v);

    [propget, id(DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable]
    BSTR value();

    [propget, id(DISPID_IHTMLSELECTELEMENT_FORM)]
    IHTMLFormElement *form();

    [id(DISPID_IHTMLSELECTELEMENT_ADD)]
    void add(
            [in] IHTMLElement *element,
            [in, optional] VARIANT before);

    [id(DISPID_IHTMLSELECTELEMENT_REMOVE)]
    void remove([in, defaultvalue(-1)] LONG index);

    [propput, id(DISPID_IHTMLSELECTELEMENT_LENGTH)]
    void length(LONG v);

    [propget, id(DISPID_IHTMLSELECTELEMENT_LENGTH)]
    LONG length();

    [propget, id(DISPID_IHTMLSELECTELEMENT__NEWENUM), hidden, restricted]
    IUnknown *_newEnum();

    [id(DISPID_IHTMLSELECTELEMENT_ITEM)]
    IDispatch *item(
            [in, optional] VARIANT name,
            [in, optional] VARIANT index);

    [id(DISPID_IHTMLSELECTELEMENT_TAGS)]
    IDispatch *tags([in] VARIANT tagName);

    [id(DISPID_IHTMLSELECTELEMENT2_URNS)]
    IDispatch *urns([in] VARIANT urn);

    [id(DISPID_IHTMLSELECTELEMENT4_NAMEDITEM)]
    IDispatch *namedItem([in] BSTR name);
}

/*****************************************************************************
 *    HTMLSelectElement coclass
 */
[
    noncreatable,
    uuid(3050f245-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLSelectElement
{
    [default]         dispinterface DispHTMLSelectElement;
 /* [source, default] dispinterface HTMLSelectElementEvents; */
 /* [source]          dispinterface HTMLSelectElementEvents2; */
    WINE_HTMLDATAELEMENT_INTERFACES;
    interface IHTMLControlElement;
    interface IHTMLSelectElement;
 /* interface IHTMLSelectElement2; */
 /* interface IHTMLSelectElement4; */
 /* interface IHTMLSelectElement5; */
 /* interface IHTMLSelectElement6; */
}

/*****************************************************************************
 *    IHTMLSelectionObject interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050F25A-98B5-11CF-BB82-00AA00BDCE0B)
]
interface IHTMLSelectionObject : IDispatch
{
    [id(DISPID_IHTMLSELECTIONOBJECT_CREATERANGE)]
    HRESULT createRange([retval, out] IDispatch **range);

    [id(DISPID_IHTMLSELECTIONOBJECT_EMPTY)]
    HRESULT empty();

    [id(DISPID_IHTMLSELECTIONOBJECT_CLEAR)]
    HRESULT clear();

    [propget, id(DISPID_IHTMLSELECTIONOBJECT_TYPE)]
    HRESULT type([retval, out] BSTR *p);
}

/*****************************************************************************
 *    IHTMLSelectionObject2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f7ec-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLSelectionObject2 : IDispatch
{
    [id(DISPID_IHTMLSELECTIONOBJECT2_CREATERANGECOLLECTION)]
    HRESULT createRangeCollection([out, retval] IDispatch **rangeCollection);

    [propget, id(DISPID_IHTMLSELECTIONOBJECT2_TYPEDETAIL)]
    HRESULT typeDetail([out, retval] BSTR *p);
}

/*****************************************************************************
 *    IHTMLSelection interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104b6-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLSelection : IDispatch
{
    [propget, id(DISPID_IHTMLSELECTION_ANCHORNODE)]
    HRESULT anchorNode([out, retval] IHTMLDOMNode **p);

    [propget, id(DISPID_IHTMLSELECTION_ANCHOROFFSET)]
    HRESULT anchorOffset([out, retval] long *p);

    [propget, id(DISPID_IHTMLSELECTION_FOCUSNODE)]
    HRESULT focusNode([out, retval] IHTMLDOMNode **p);

    [propget, id(DISPID_IHTMLSELECTION_FOCUSOFFSET)]
    HRESULT focusOffset([out, retval] long *p);

    [propget, id(DISPID_IHTMLSELECTION_ISCOLLAPSED)]
    HRESULT isCollapsed([out, retval] VARIANT_BOOL *p);

    [id(DISPID_IHTMLSELECTION_COLLAPSE)]
    HRESULT collapse(
        [in] IDispatch *parentNode,
        [in] long offset);

    [id(DISPID_IHTMLSELECTION_COLLAPSETOSTART)]
    HRESULT collapseToStart();

    [id(DISPID_IHTMLSELECTION_COLLAPSETOEND)]
    HRESULT collapseToEnd();

    [id(DISPID_IHTMLSELECTION_SELECTALLCHILDREN)]
    HRESULT selectAllChildren([in] IDispatch *parentNode);

    [id(DISPID_IHTMLSELECTION_DELETEFROMDOCUMENT)]
    HRESULT deleteFromDocument();

    [propget, id(DISPID_IHTMLSELECTION_RANGECOUNT)]
    HRESULT rangeCount([out, retval] long *p);

    [id(DISPID_IHTMLSELECTION_GETRANGEAT)]
    HRESULT getRangeAt(
        [in] long index,
        [out, retval] IHTMLDOMRange **ppRange);

    [id(DISPID_IHTMLSELECTION_ADDRANGE)]
    HRESULT addRange([in] IDispatch *range);

    [id(DISPID_IHTMLSELECTION_REMOVERANGE)]
    HRESULT removeRange([in] IDispatch *range);

    [id(DISPID_IHTMLSELECTION_REMOVEALLRANGES)]
    HRESULT removeAllRanges();

    [id(DISPID_IHTMLSELECTION_TOSTRING)]
    HRESULT toString([out, retval] BSTR *pSelectionString);
}

/*****************************************************************************
 *    IHTMLOptionElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050F211-98B5-11CF-BB82-00AA00BDCE0B)
]
interface IHTMLOptionElement : IDispatch
{
    [propput, id(DISPID_IHTMLOPTIONELEMENT_SELECTED)]
    HRESULT selected([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLOPTIONELEMENT_SELECTED)]
    HRESULT selected([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLOPTIONELEMENT_VALUE)]
    HRESULT value([in] BSTR v);

    [propget, id(DISPID_IHTMLOPTIONELEMENT_VALUE)]
    HRESULT value([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)]
    HRESULT defaultSelected([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)]
    HRESULT defaultSelected([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLOPTIONELEMENT_INDEX)]
    HRESULT index([in] LONG v);

    [propget, id(DISPID_IHTMLOPTIONELEMENT_INDEX)]
    HRESULT index([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLOPTIONELEMENT_TEXT)]
    HRESULT text([in] BSTR v);

    [propget, id(DISPID_IHTMLOPTIONELEMENT_TEXT)]
    HRESULT text([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLOPTIONELEMENT_FORM)]
    HRESULT form([retval, out] IHTMLFormElement **p);
}

[
    odl,
    oleautomation,
    dual,
    uuid(3050f820-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLOptionElement3 : IDispatch
{
    [propput, id(DISPID_IHTMLOPTIONELEMENT3_LABEL), displaybind, bindable]
    HRESULT label([in] BSTR v);

    [propget, id(DISPID_IHTMLOPTIONELEMENT3_LABEL), displaybind, bindable]
    HRESULT label([retval, out] BSTR * p);
}

/*****************************************************************************
 *    IHTMLOptionElementFactory interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050F38C-98B5-11Cf-BB82-00AA00BDCE0B)
]
interface IHTMLOptionElementFactory : IDispatch
{
    [id(DISPID_IHTMLOPTIONELEMENTFACTORY_CREATE)]
    HRESULT create(
        [optional, in] VARIANT text,
        [optional, in] VARIANT value,
        [optional, in] VARIANT defaultselected,
        [optional, in] VARIANT selected,
        [retval, out] IHTMLOptionElement **optelem);
}

/*****************************************************************************
 *    DispHTMLOptionElement dispinterface
 */
[
    hidden,
    uuid(3050f52b-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLOptionElement
{
properties:
methods:
    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLOPTIONELEMENT_SELECTED)]
    void selected(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLOPTIONELEMENT_SELECTED)]
    VARIANT_BOOL selected();

    [propput, id(DISPID_IHTMLOPTIONELEMENT_VALUE)]
    void value(BSTR v);

    [propget, id(DISPID_IHTMLOPTIONELEMENT_VALUE)]
    BSTR value();

    [propput, id(DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)]
    void defaultSelected(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)]
    VARIANT_BOOL defaultSelected();

    [propput, id(DISPID_IHTMLOPTIONELEMENT_INDEX)]
    void index(LONG v);

    [propget, id(DISPID_IHTMLOPTIONELEMENT_INDEX)]
    LONG index();

    [propput, id(DISPID_IHTMLOPTIONELEMENT_TEXT)]
    void text(BSTR v);

    [propget, id(DISPID_IHTMLOPTIONELEMENT_TEXT)]
    BSTR text();

    [propget, id(DISPID_IHTMLOPTIONELEMENT_FORM)]
    IHTMLFormElement *form();

    [propput, id(DISPID_IHTMLOPTIONELEMENT3_LABEL), displaybind, bindable]
    void label(BSTR v);

    [propget, id(DISPID_IHTMLOPTIONELEMENT3_LABEL), displaybind, bindable]
    BSTR label();
}

[
    noncreatable,
    uuid(3050f24d-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLOptionElement
{
    [default]           dispinterface DispHTMLOptionElement;
    [source, default]   dispinterface HTMLElementEvents;
    [source]            dispinterface HTMLElementEvents2;
    WINE_HTMLDATAELEMENT_INTERFACES;
    interface IHTMLOptionElement;
    interface IHTMLOptionElement3;
 /* interface IHTMLOptionElement4; */
}

/*****************************************************************************
 *    IHTMLInputElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f5d2-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLInputElement : IDispatch
{
    [propput, id(DISPID_IHTMLINPUTELEMENT_TYPE)]
    HRESULT type([in] BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_TYPE)]
    HRESULT type([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_VALUE), displaybind, bindable]
    HRESULT value([in] BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_VALUE), displaybind, bindable]
    HRESULT value([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_NAME), displaybind, bindable]
    HRESULT name([in] BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_NAME), displaybind, bindable]
    HRESULT name([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_STATUS)]
    HRESULT status([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_STATUS)]
    HRESULT status([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_DISABLED), displaybind, bindable]
    HRESULT disabled([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_DISABLED), displaybind, bindable]
    HRESULT disabled([retval, out] VARIANT_BOOL *p);

    [propget, id(DISPID_IHTMLINPUTELEMENT_FORM)]
    HRESULT form([retval, out] IHTMLFormElement **p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable]
    HRESULT size([in] LONG v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable]
    HRESULT size([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable]
    HRESULT maxLength([in] LONG v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable]
    HRESULT maxLength([retval, out] LONG *p);

    [id(DISPID_IHTMLINPUTELEMENT_SELECT)]
    HRESULT select();

    [propput, id(DISPID_IHTMLINPUTELEMENT_ONCHANGE), displaybind, bindable]
    HRESULT onchange([in] VARIANT v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_ONCHANGE), displaybind, bindable]
    HRESULT onchange([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_ONSELECT), displaybind, bindable]
    HRESULT onselect([in] VARIANT v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_ONSELECT), displaybind, bindable]
    HRESULT onselect([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
    HRESULT defaultValue([in] BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
    HRESULT defaultValue([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_READONLY), displaybind, bindable]
    HRESULT readOnly([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_READONLY), displaybind, bindable]
    HRESULT readOnly([retval, out] VARIANT_BOOL *p);

    [id(DISPID_IHTMLINPUTELEMENT_CREATETEXTRANGE)]
    HRESULT createTextRange([retval, out] IHTMLTxtRange **range);

    [propput, id(DISPID_IHTMLINPUTELEMENT_INDETERMINATE), bindable]
    HRESULT indeterminate([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_INDETERMINATE), bindable]
    HRESULT indeterminate([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED), bindable]
    HRESULT defaultChecked([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED), bindable]
    HRESULT defaultChecked([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_CHECKED), bindable]
    HRESULT checked([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_CHECKED), bindable]
    HRESULT checked([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_BORDER), displaybind, bindable]
    HRESULT border([in] VARIANT v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_BORDER), displaybind, bindable]
    HRESULT border([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable]
    HRESULT vspace([in] LONG v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable]
    HRESULT vspace([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable]
    HRESULT hspace([in] LONG v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable]
    HRESULT hspace([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_ALT), displaybind, bindable]
    HRESULT alt([in] BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_ALT), displaybind, bindable]
    HRESULT alt([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_SRC), displaybind, bindable]
    HRESULT src([in] BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_SRC), displaybind, bindable]
    HRESULT src([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_LOWSRC), displaybind, bindable]
    HRESULT lowsrc([in] BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_LOWSRC), displaybind, bindable]
    HRESULT lowsrc([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_VRML), displaybind, bindable]
    HRESULT vrml([in] BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_VRML), displaybind, bindable]
    HRESULT vrml([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_DYNSRC), displaybind, bindable]
    HRESULT dynsrc([in] BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_DYNSRC), displaybind, bindable]
    HRESULT dynsrc([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLINPUTELEMENT_READYSTATE)]
    HRESULT readyState([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLINPUTELEMENT_COMPLETE)]
    HRESULT complete([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_LOOP), displaybind, bindable]
    HRESULT loop([in] VARIANT v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_LOOP), displaybind, bindable]
    HRESULT loop([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_ALIGN), displaybind, bindable]
    HRESULT align([in] BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_ALIGN), displaybind, bindable]
    HRESULT align([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_ONLOAD), displaybind, bindable]
    HRESULT onload([in] VARIANT v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_ONLOAD), displaybind, bindable]
    HRESULT onload([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_ONERROR), displaybind, bindable]
    HRESULT onerror([in] VARIANT v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_ONERROR), displaybind, bindable]
    HRESULT onerror([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_ONABORT), displaybind, bindable]
    HRESULT onabort([in] VARIANT v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_ONABORT), displaybind, bindable]
    HRESULT onabort([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_WIDTH)]
    HRESULT width([in] LONG v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_WIDTH)]
    HRESULT width([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_HEIGHT)]
    HRESULT height([in] LONG v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_HEIGHT)]
    HRESULT height([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLINPUTELEMENT_START), displaybind, bindable]
    HRESULT start([in] BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_START), displaybind, bindable]
    HRESULT start([retval, out] BSTR *p);
}

/*****************************************************************************
 *    IHTMLInputTextElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f2a6-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLInputTextElement : IDispatch
{
    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_TYPE)]
    HRESULT type([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_VALUE), displaybind, bindable]
    HRESULT value([in] BSTR v);

    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_VALUE), displaybind, bindable]
    HRESULT value([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_NAME), displaybind, bindable]
    HRESULT name([in] BSTR v);

    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_NAME), displaybind, bindable]
    HRESULT name([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_STATUS)]
    HRESULT status([in] VARIANT v);

    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_STATUS)]
    HRESULT status([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_DISABLED), displaybind, bindable]
    HRESULT disabled([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_DISABLED), displaybind, bindable]
    HRESULT disabled([retval, out] VARIANT_BOOL *p);

    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_FORM)]
    HRESULT form([retval, out] IHTMLFormElement **p);

    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
    HRESULT defaultValue([in] BSTR v);

    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
    HRESULT defaultValue([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_SIZE), displaybind, bindable]
    HRESULT size([in] LONG v);

    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_SIZE), displaybind, bindable]
    HRESULT size([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_MAXLENGTH), displaybind, bindable]
    HRESULT maxLength([in] LONG v);

    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_MAXLENGTH), displaybind, bindable]
    HRESULT maxLength([retval, out] LONG *p);

    [id(DISPID_IHTMLINPUTTEXTELEMENT_SELECT)]
    HRESULT select();

    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_ONCHANGE), displaybind, bindable]
    HRESULT onchange([in] VARIANT v);

    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_ONCHANGE), displaybind, bindable]
    HRESULT onchange([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_ONSELECT), displaybind, bindable]
    HRESULT onselect([in] VARIANT v);

    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_ONSELECT), displaybind, bindable]
    HRESULT onselect([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_READONLY), displaybind, bindable]
    HRESULT readOnly([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_READONLY), displaybind, bindable]
    HRESULT readOnly([retval, out] VARIANT_BOOL *p);

    [id(DISPID_IHTMLINPUTTEXTELEMENT_CREATETEXTRANGE)]
    HRESULT createTextRange([retval, out] IHTMLTxtRange **range);
}

/*****************************************************************************
 *    IHTMLInputTextElement2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f2d2-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLInputTextElement2 : IDispatch
{
    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT2_SELECTIONSTART)]
    HRESULT selectionStart([in] long v);

    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT2_SELECTIONSTART)]
    HRESULT selectionStart([out, retval] long *p);

    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT2_SELECTIONEND)]
    HRESULT selectionEnd([in] long v);

    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT2_SELECTIONEND)]
    HRESULT selectionEnd([out, retval] long *p);

    [id(DISPID_IHTMLINPUTTEXTELEMENT2_SETSELECTIONRANGE)]
    HRESULT setSelectionRange([in] long start, [in] long end);
}

[
    hidden,
    uuid(3050f57d-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLInputElement
{
properties:
methods:
    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLINPUTELEMENT_TYPE)]
    void type(BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_TYPE)]
    BSTR type();

    [propput, id(DISPID_IHTMLINPUTELEMENT_VALUE), displaybind, bindable]
    void value(BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_VALUE), displaybind, bindable]
    BSTR value();

    [propput, id(DISPID_IHTMLINPUTELEMENT_NAME), displaybind, bindable]
    void name(BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_NAME), displaybind, bindable]
    BSTR name();

    [propput, id(DISPID_IHTMLINPUTELEMENT_STATUS)]
    void status(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_STATUS)]
    VARIANT_BOOL status();

    [propget, id(DISPID_IHTMLINPUTELEMENT_FORM)]
    IHTMLFormElement *form();

    [propput, id(DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable]
    void size(LONG v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable]
    LONG size();

    [propput, id(DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable]
    void maxLength(LONG v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable]
    LONG maxLength();

    [id(DISPID_IHTMLINPUTELEMENT_SELECT)]
    void select();

    [propput, id(DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
    void defaultValue(BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
    BSTR defaultValue();

    [propput, id(DISPID_IHTMLINPUTELEMENT_READONLY), displaybind, bindable]
    void readOnly(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_READONLY), displaybind, bindable]
    VARIANT_BOOL readOnly();

    [id(DISPID_IHTMLINPUTELEMENT_CREATETEXTRANGE)]
    IHTMLTxtRange *createTextRange();

    [propput, id(DISPID_IHTMLINPUTELEMENT_INDETERMINATE), bindable]
    void indeterminate(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_INDETERMINATE), bindable]
    VARIANT_BOOL indeterminate();

    [propput, id(DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED), bindable]
    void defaultChecked(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED), bindable]
    VARIANT_BOOL defaultChecked();

    [propput, id(DISPID_IHTMLINPUTELEMENT_CHECKED), bindable]
    void checked(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_CHECKED), bindable]
    VARIANT_BOOL checked();

    [propput, id(DISPID_IHTMLINPUTELEMENT_BORDER), displaybind, bindable]
    void border(VARIANT v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_BORDER), displaybind, bindable]
    VARIANT border();

    [propput, id(DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable]
    void vspace(LONG v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable]
    LONG vspace();

    [propput, id(DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable]
    void hspace(LONG v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable]
    LONG hspace();

    [propput, id(DISPID_IHTMLINPUTELEMENT_ALT), displaybind, bindable]
    void alt(BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_ALT), displaybind, bindable]
    BSTR alt();

    [propput, id(DISPID_IHTMLINPUTELEMENT_SRC), displaybind, bindable]
    void src(BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_SRC), displaybind, bindable]
    BSTR src();

    [propput, id(DISPID_IHTMLINPUTELEMENT_LOWSRC), displaybind, bindable]
    void lowsrc(BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_LOWSRC), displaybind, bindable]
    BSTR lowsrc();

    [propput, id(DISPID_IHTMLINPUTELEMENT_VRML), displaybind, bindable]
    void vrml(BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_VRML), displaybind, bindable]
    BSTR vrml();

    [propput, id(DISPID_IHTMLINPUTELEMENT_DYNSRC), displaybind, bindable]
    void dynsrc(BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_DYNSRC), displaybind, bindable]
    BSTR dynsrc();

    [propget, id(DISPID_IHTMLINPUTELEMENT_COMPLETE)]
    VARIANT_BOOL complete();

    [propput, id(DISPID_IHTMLINPUTELEMENT_LOOP), displaybind, bindable]
    void loop(VARIANT v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_LOOP), displaybind, bindable]
    VARIANT loop();

    [propput, id(DISPID_IHTMLINPUTELEMENT_ALIGN), displaybind, bindable]
    void align(BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_ALIGN), displaybind, bindable]
    BSTR align();

    [propput, id(DISPID_IHTMLINPUTELEMENT_WIDTH)]
    void width(LONG v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_WIDTH)]
    LONG width();

    [propput, id(DISPID_IHTMLINPUTELEMENT_HEIGHT)]
    void height(LONG v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_HEIGHT)]
    LONG height();

    [propput, id(DISPID_IHTMLINPUTELEMENT_START), displaybind, bindable]
    void start(BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT_START), displaybind, bindable]
    BSTR start();

    [propput, id(DISPID_IHTMLINPUTELEMENT2_ACCEPT), displaybind, bindable]
    void accept(BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT2_ACCEPT), displaybind, bindable]
    BSTR accept();

    [propput, id(DISPID_IHTMLINPUTELEMENT2_USEMAP), displaybind, bindable]
    void useMap(BSTR v);

    [propget, id(DISPID_IHTMLINPUTELEMENT2_USEMAP), displaybind, bindable]
    BSTR useMap();

    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT2_SELECTIONSTART)]
    void selectionStart(long v);

    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT2_SELECTIONSTART)]
    long selectionStart();

    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT2_SELECTIONEND)]
    void selectionEnd(long v);

    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT2_SELECTIONEND)]
    long selectionEnd();

    [id(DISPID_IHTMLINPUTTEXTELEMENT2_SETSELECTIONRANGE)]
    void setSelectionRange([in] long start, [in] long end);
}

[
    odl,
    oleautomation,
    dual,
    uuid(3050f2bc-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLOptionButtonElement : IDispatch
{
    [propput, id(DISPID_IHTMLOPTIONBUTTONELEMENT_VALUE), displaybind, bindable]
    HRESULT value([in] BSTR v);

    [propget, id(DISPID_IHTMLOPTIONBUTTONELEMENT_VALUE), displaybind, bindable]
    HRESULT value([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLOPTIONBUTTONELEMENT_TYPE)]
    HRESULT type([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLOPTIONBUTTONELEMENT_NAME), displaybind, bindable]
    HRESULT name([in] BSTR v);

    [propget, id(DISPID_IHTMLOPTIONBUTTONELEMENT_NAME), displaybind, bindable]
    HRESULT name([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLOPTIONBUTTONELEMENT_CHECKED), bindable]
    HRESULT checked([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLOPTIONBUTTONELEMENT_CHECKED), bindable]
    HRESULT checked([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLOPTIONBUTTONELEMENT_DEFAULTCHECKED), bindable]
    HRESULT defaultChecked([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLOPTIONBUTTONELEMENT_DEFAULTCHECKED), bindable]
    HRESULT defaultChecked([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLOPTIONBUTTONELEMENT_ONCHANGE), displaybind, bindable]
    HRESULT onchange([in] VARIANT v);

    [propget, id(DISPID_IHTMLOPTIONBUTTONELEMENT_ONCHANGE), displaybind, bindable]
    HRESULT onchange([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLOPTIONBUTTONELEMENT_DISABLED), displaybind, bindable]
    HRESULT disabled([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLOPTIONBUTTONELEMENT_DISABLED), displaybind, bindable]
    HRESULT disabled([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLOPTIONBUTTONELEMENT_STATUS)]
    HRESULT status([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLOPTIONBUTTONELEMENT_STATUS)]
    HRESULT status([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLOPTIONBUTTONELEMENT_INDETERMINATE), bindable]
    HRESULT indeterminate([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLOPTIONBUTTONELEMENT_INDETERMINATE), bindable]
    HRESULT indeterminate([retval, out] VARIANT_BOOL *p);

    [propget, id(DISPID_IHTMLOPTIONBUTTONELEMENT_FORM)]
    HRESULT form([retval, out] IHTMLFormElement* *p);
};


/*****************************************************************************
 *    HTMLInputElement coclass
 */
[
    noncreatable,
    uuid(3050f5d8-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLInputElement
{
    [default]         dispinterface DispHTMLInputElement;
 /* [source, default] dispinterface HTMLInputTextElementEvents; */
 /* [source]          dispinterface HTMLInputTextElementEvents2; */
 /* [source]          dispinterface HTMLOptionButtonElementEvents; */
 /* [source]          dispinterface HTMLButtonElementEvents; */
    WINE_HTMLDATAELEMENT_INTERFACES;
    interface IHTMLControlElement;
    interface IHTMLInputElement;
 /* interface IHTMLInputElement2; */
    interface IHTMLInputTextElement;
    interface IHTMLInputTextElement2;
 /* interface IHTMLInputHiddenElement; */
 /* interface IHTMLInputButtonElement; */
 /* interface IHTMLInputFileElement; */
    interface IHTMLOptionButtonElement;
 /* interface IHTMLInputImage; */
 /* interface IHTMLInputElement3; */
 /* interface IHTMLInputRangeElement; */
}

/*****************************************************************************
 *    IHTMLTextAreaElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f2aa-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLTextAreaElement : IDispatch
{
    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_TYPE)]
    HRESULT type([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_VALUE), displaybind, bindable]
    HRESULT value([in] BSTR v);

    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_VALUE), displaybind, bindable]
    HRESULT value([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_NAME), displaybind, bindable]
    HRESULT name([in] BSTR v);

    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_NAME), displaybind, bindable]
    HRESULT name([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_STATUS)]
    HRESULT status([in] VARIANT v);

    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_STATUS)]
    HRESULT status([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_DISABLED), displaybind, bindable]
    HRESULT disabled([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_DISABLED), displaybind, bindable]
    HRESULT disabled([retval, out] VARIANT_BOOL *p);

    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_FORM)]
    HRESULT form([retval, out] IHTMLFormElement **p);

    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
    HRESULT defaultValue([in] BSTR v);

    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
    HRESULT defaultValue([retval, out] BSTR *p);

    [id(DISPID_IHTMLTEXTAREAELEMENT_SELECT)]
    HRESULT select();

    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_ONCHANGE), displaybind, bindable]
    HRESULT onchange([in] VARIANT v);

    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_ONCHANGE), displaybind, bindable]
    HRESULT onchange([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_ONSELECT), displaybind, bindable]
    HRESULT onselect([in] VARIANT v);

    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_ONSELECT), displaybind, bindable]
    HRESULT onselect([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_READONLY), displaybind, bindable]
    HRESULT readOnly([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_READONLY), displaybind, bindable]
    HRESULT readOnly([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_ROWS), displaybind, bindable]
    HRESULT rows([in] LONG v);

    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_ROWS), displaybind, bindable]
    HRESULT rows([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_COLS), displaybind, bindable]
    HRESULT cols([in] LONG v);

    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_COLS), displaybind, bindable]
    HRESULT cols([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_WRAP), displaybind, bindable]
    HRESULT wrap([in] BSTR v);

    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_WRAP), displaybind, bindable]
    HRESULT wrap([retval, out] BSTR *p);

    [id(DISPID_IHTMLTEXTAREAELEMENT_CREATETEXTRANGE)]
    HRESULT createTextRange([retval, out] IHTMLTxtRange **range);
}

/*****************************************************************************
 *    DispHTMLTextAreaElement dispinterface
 */
[
    hidden,
    uuid(3050f521-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLTextAreaElement
{
properties:
methods:
    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;

    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_TYPE)]
    BSTR type();

    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_VALUE), displaybind, bindable]
    void value(BSTR v);

    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_VALUE), displaybind, bindable]
    BSTR value();

    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_NAME), displaybind, bindable]
    void name(BSTR v);

    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_NAME), displaybind, bindable]
    BSTR name();

    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_STATUS)]
    void status(VARIANT v);

    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_STATUS)]
    VARIANT status();

    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_FORM)]
    IHTMLFormElement *form();

    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
    void defaultValue(BSTR v);

    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
    BSTR defaultValue();

    [id(DISPID_IHTMLTEXTAREAELEMENT_SELECT)]
    void select();

    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_READONLY), displaybind, bindable]
    void readOnly(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_READONLY), displaybind, bindable]
    VARIANT_BOOL readOnly();

    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_ROWS), displaybind, bindable]
    void rows(LONG v);

    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_ROWS), displaybind, bindable]
    LONG rows();

    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_COLS), displaybind, bindable]
    void cols(LONG v);

    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_COLS), displaybind, bindable]
    LONG cols();

    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_WRAP), displaybind, bindable]
    void wrap(BSTR v);

    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_WRAP), displaybind, bindable]
    BSTR wrap();

    [id(DISPID_IHTMLTEXTAREAELEMENT_CREATETEXTRANGE)]
    IHTMLTxtRange *createTextRange();
}

/*****************************************************************************
 *    HTMLTextAreaElement coclass
 */
[
    noncreatable,
    uuid(3050f2ac-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLTextAreaElement
{
    [default]         dispinterface DispHTMLTextAreaElement;
 /* [source, default] dispinterface HTMLInputTextElementEvents; */
 /* [source]          dispinterface HTMLInputTextElementEvents2; */
    [source]          dispinterface HTMLTextContainerEvents;
    [source]          dispinterface HTMLTextContainerEvents2;
    WINE_HTMLDATAELEMENT_INTERFACES;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLTextAreaElement;
 /* interface IHTMLTextAreaElement2; */
}

/*****************************************************************************
 *    IHTMLButtonElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f2bb-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLButtonElement : IDispatch
{
    [propget, id(DISPID_IHTMLBUTTONELEMENT_TYPE)]
    HRESULT type([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLBUTTONELEMENT_VALUE), displaybind, bindable]
    HRESULT value([in] BSTR v);

    [propget, id(DISPID_IHTMLBUTTONELEMENT_VALUE), displaybind, bindable]
    HRESULT value([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLBUTTONELEMENT_NAME), displaybind, bindable]
    HRESULT name([in] BSTR v);

    [propget, id(DISPID_IHTMLBUTTONELEMENT_NAME), displaybind, bindable]
    HRESULT name([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLBUTTONELEMENT_STATUS)]
    HRESULT status([in] VARIANT v);

    [propget, id(DISPID_IHTMLBUTTONELEMENT_STATUS)]
    HRESULT status([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLBUTTONELEMENT_DISABLED), displaybind, bindable]
    HRESULT disabled([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLBUTTONELEMENT_DISABLED), displaybind, bindable]
    HRESULT disabled([out, retval] VARIANT_BOOL *p);

    [propget, id(DISPID_IHTMLBUTTONELEMENT_FORM)]
    HRESULT form([out, retval] IHTMLFormElement **p);

    [id(DISPID_IHTMLBUTTONELEMENT_CREATETEXTRANGE)]
    HRESULT createTextRange([out, retval] IHTMLTxtRange **range);
}

/*****************************************************************************
 *    DispHTMLButtonElement dispinterface
 */
[
    hidden,
    uuid(3050f51f-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLButtonElement
{
properties:
methods:
    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;

    [propget, id(DISPID_IHTMLBUTTONELEMENT_TYPE)]
    BSTR type();

    [propput, id(DISPID_IHTMLBUTTONELEMENT_VALUE), displaybind, bindable]
    void value(BSTR v);

    [propget, id(DISPID_IHTMLBUTTONELEMENT_VALUE), displaybind, bindable]
    BSTR value();

    [propput, id(DISPID_IHTMLBUTTONELEMENT_NAME), displaybind, bindable]
    void name(BSTR v);

    [propget, id(DISPID_IHTMLBUTTONELEMENT_NAME), displaybind, bindable]
    BSTR name();

    [propput, id(DISPID_IHTMLBUTTONELEMENT_STATUS)]
    void status(VARIANT v);

    [propget, id(DISPID_IHTMLBUTTONELEMENT_STATUS)]
    VARIANT status();

    [propget, id(DISPID_IHTMLBUTTONELEMENT_FORM)]
    IHTMLFormElement *form();

    [id(DISPID_IHTMLBUTTONELEMENT_CREATETEXTRANGE)]
    IHTMLTxtRange *createTextRange();
}

/*****************************************************************************
 *    HTMLButtonElement coclass
 */
[
    noncreatable,
    uuid(3050f2c6-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLButtonElement
{
    [default]         dispinterface DispHTMLButtonElement;
 /* [source, default] dispinterface HTMLButtonElementEvents; */
 /* [source]          dispinterface HTMLButtonElementEvents2; */
    WINE_HTMLDATAELEMENT_INTERFACES;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLButtonElement;
 /* interface IHTMLButtonElement2; */
}

/*****************************************************************************
 *    IHTMLHtmlElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f81c-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLHtmlElement : IDispatch
{
    [propput, id(DISPID_IHTMLHTMLELEMENT_VERSION), displaybind, bindable]
    HRESULT version([in] BSTR v);

    [propget, id(DISPID_IHTMLHTMLELEMENT_VERSION), displaybind, bindable]
    HRESULT version([out, retval] BSTR *p);
}

/*****************************************************************************
 *    IHTMLHeadElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f81d-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLHeadElement : IDispatch
{
    [propput, id(DISPID_IHTMLHEADELEMENT_PROFILE), displaybind, bindable]
    HRESULT profile([in] BSTR v);

    [propget, id(DISPID_IHTMLHEADELEMENT_PROFILE), displaybind, bindable]
    HRESULT profile([retval, out] BSTR *p);
}

/*****************************************************************************
 *    IHTMLHeadElement2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3051042f-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLHeadElement2 : IDispatch
{
    [propput, id(DISPID_IHTMLHEADELEMENT2_IE8_PROFILE), displaybind, bindable]
    HRESULT profile([in] BSTR v);

    [propget, id(DISPID_IHTMLHEADELEMENT2_IE8_PROFILE), displaybind, bindable]
    HRESULT profile([retval, out] BSTR *p);
}

/*****************************************************************************
 *    IHTMLTitleElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f322-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLTitleElement : IDispatch
{
    [propput, id(DISPID_IHTMLTITLEELEMENT_TEXT), bindable]
    HRESULT text([in] BSTR v);

    [propget, id(DISPID_IHTMLTITLEELEMENT_TEXT), bindable]
    HRESULT text([retval, out] BSTR *p);
}

/*****************************************************************************
 *    IHTMLMetaElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f203-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLMetaElement : IDispatch
{
    [propput, id(DISPID_IHTMLMETAELEMENT_HTTPEQUIV), displaybind, bindable]
    HRESULT httpEquiv([in] BSTR v);

    [propget, id(DISPID_IHTMLMETAELEMENT_HTTPEQUIV), displaybind, bindable]
    HRESULT httpEquiv([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLMETAELEMENT_CONTENT), displaybind, bindable]
    HRESULT content([in] BSTR v);

    [propget, id(DISPID_IHTMLMETAELEMENT_CONTENT), displaybind, bindable]
    HRESULT content([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLMETAELEMENT_NAME), displaybind, bindable]
    HRESULT name([in] BSTR v);

    [propget, id(DISPID_IHTMLMETAELEMENT_NAME), displaybind, bindable]
    HRESULT name([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLMETAELEMENT_URL), displaybind, bindable]
    HRESULT url([in] BSTR v);

    [propget, id(DISPID_IHTMLMETAELEMENT_URL), displaybind, bindable]
    HRESULT url([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLMETAELEMENT_CHARSET), displaybind, bindable]
    HRESULT charset([in] BSTR v);

    [propget, id(DISPID_IHTMLMETAELEMENT_CHARSET), displaybind, bindable]
    HRESULT charset([out, retval] BSTR *p);
}

/*****************************************************************************
 *    IHTMLMetaElement2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f81f-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLMetaElement2 : IDispatch
{
    [propput, id(DISPID_IHTMLMETAELEMENT2_SCHEME), displaybind, bindable]
    HRESULT scheme([in] BSTR v);

    [propget, id(DISPID_IHTMLMETAELEMENT2_SCHEME), displaybind, bindable]
    HRESULT scheme([out, retval] BSTR *p);
}

/*****************************************************************************
 *    IHTMLMetaElement3 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510495-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLMetaElement3 : IDispatch
{
    [propput, id(DISPID_IHTMLMETAELEMENT3_IE8_URL)]
    HRESULT url([in] BSTR v);

    [propget, id(DISPID_IHTMLMETAELEMENT3_IE8_URL)]
    HRESULT url([out, retval] BSTR *p);
}

/*****************************************************************************
 *    DispHTMLHtmlElement interface
 */
[
    hidden,
    uuid(3050f560-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLHtmlElement
{
properties:
methods:
    WINE_HTMLELEMENT_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLHTMLELEMENT_VERSION), displaybind, bindable]
    void version(BSTR v);

    [propget, id(DISPID_IHTMLHTMLELEMENT_VERSION), displaybind, bindable]
    BSTR version();
}

/*****************************************************************************
 *    HTMLHtmlElement coclass
 */
[
    noncreatable,
    uuid(3050f491-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLHtmlElement
{
    [default]         dispinterface DispHTMLHtmlElement;
    [source, default] dispinterface HTMLElementEvents;
    [source]          dispinterface HTMLElementEvents2;
    WINE_HTMLELEMENT_INTERFACES;
    interface IHTMLHtmlElement;
}

/*****************************************************************************
 *    DispHTMLHeadElement interface
 */
[
    hidden,
    uuid(3050f561-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLHeadElement
{
properties:
methods:
    WINE_HTMLELEMENT_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLHEADELEMENT_PROFILE), displaybind, bindable]
    void profile(BSTR v);

    [propget, id(DISPID_IHTMLHEADELEMENT_PROFILE), displaybind, bindable]
    BSTR profile();

    [propput, id(DISPID_IHTMLHEADELEMENT2_IE8_PROFILE), displaybind, bindable]
    void ie8_profile(BSTR v);

    [propget, id(DISPID_IHTMLHEADELEMENT2_IE8_PROFILE), displaybind, bindable]
    BSTR ie8_profile();
}

/*****************************************************************************
 *    HTMLHeadElement coclass
 */
[
    noncreatable,
    uuid(3050f493-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLHeadElement
{
    [default]         dispinterface DispHTMLHeadElement;
    [source, default] dispinterface HTMLElementEvents;
    [source]          dispinterface HTMLElementEvents2;
    WINE_HTMLELEMENT_INTERFACES;
    interface IHTMLHeadElement;
    interface IHTMLHeadElement2;
}

/*****************************************************************************
 *    DispHTMLTitleElement interface
 */
[
    hidden,
    uuid(3050f516-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLTitleElement
{
properties:
methods:
    WINE_HTMLELEMENT_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLTITLEELEMENT_TEXT), bindable]
    void text(BSTR v);

    [propget, id(DISPID_IHTMLTITLEELEMENT_TEXT), bindable]
    BSTR text();
}

/*****************************************************************************
 *    HTMLTitleElement coclass
 */
[
    noncreatable,
    uuid(3050f284-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLTitleElement
{
    [default]         dispinterface DispHTMLTitleElement;
    [source, default] dispinterface HTMLElementEvents;
    [source]          dispinterface HTMLElementEvents2;
    WINE_HTMLELEMENT_INTERFACES;
    interface IHTMLTitleElement;
}

/*****************************************************************************
 *    DispHTMLMetaElement dispinterface
 */
[
    hidden,
    uuid(3050f517-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLMetaElement
{
properties:
methods:
    WINE_HTMLELEMENT_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLMETAELEMENT_HTTPEQUIV), displaybind, bindable]
    void httpEquiv(BSTR v);

    [propget, id(DISPID_IHTMLMETAELEMENT_HTTPEQUIV), displaybind, bindable]
    BSTR httpEquiv();

    [propput, id(DISPID_IHTMLMETAELEMENT_CONTENT), displaybind, bindable]
    void content(BSTR v);

    [propget, id(DISPID_IHTMLMETAELEMENT_CONTENT), displaybind, bindable]
    BSTR content();

    [propput, id(DISPID_IHTMLMETAELEMENT_NAME), displaybind, bindable]
    void name(BSTR v);

    [propget, id(DISPID_IHTMLMETAELEMENT_NAME), displaybind, bindable]
    BSTR name();

    [propput, id(DISPID_IHTMLMETAELEMENT_URL), displaybind, bindable]
    void url(BSTR v);

    [propget, id(DISPID_IHTMLMETAELEMENT_URL), displaybind, bindable]
    BSTR url();

    [propput, id(DISPID_IHTMLMETAELEMENT_CHARSET), displaybind, bindable]
    void charset(BSTR v);

    [propget, id(DISPID_IHTMLMETAELEMENT_CHARSET), displaybind, bindable]
    BSTR charset();

    [propput, id(DISPID_IHTMLMETAELEMENT2_SCHEME), displaybind, bindable]
    void scheme(BSTR v);

    [propget, id(DISPID_IHTMLMETAELEMENT2_SCHEME), displaybind, bindable]
    BSTR scheme();

    [propput, id(DISPID_IHTMLMETAELEMENT3_IE8_URL)]
    void ie8_url(BSTR v);

    [propget, id(DISPID_IHTMLMETAELEMENT3_IE8_URL)]
    BSTR ie8_url();
}

/*****************************************************************************
 *    HTMLMetaElement coclass
 */
[
    noncreatable,
    uuid(3050f275-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLMetaElement
{
    [default]         dispinterface DispHTMLMetaElement;
    [source, default] dispinterface HTMLElementEvents;
    [source]          dispinterface HTMLElementEvents2;
    WINE_HTMLELEMENT_INTERFACES;
    interface IHTMLMetaElement;
    interface IHTMLMetaElement2;
    interface IHTMLMetaElement3;
}

/*****************************************************************************
 *    DispHTMLUnknownElement dispinterface
 */
[
    hidden,
    uuid(3050f539-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLUnknownElement
{
properties:
methods:
    WINE_HTMLELEMENT_DISPINTERFACE_DECL;
}

/*****************************************************************************
 *    HTMLUnknownElement coclass
 */
[
    noncreatable,
    uuid(3050f268-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLUnknownElement
{
    [default]         dispinterface DispHTMLUnknownElement;
    [source, default] dispinterface HTMLElementEvents;
    [source]          dispinterface HTMLElementEvents2;
    WINE_HTMLELEMENT_INTERFACES;
 /* interface IHTMLUnknownElement; */
}

/*****************************************************************************
 *    ISVGAnimatedEnumeration interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104c9-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGAnimatedEnumeration : IDispatch
{
    [propput, id(DISPID_ISVGANIMATEDENUMERATION_BASEVAL)]
    HRESULT baseVal([in] USHORT v);

    [propget, id(DISPID_ISVGANIMATEDENUMERATION_BASEVAL)]
    HRESULT baseVal([out, retval] USHORT *p);

    [propput, id(DISPID_ISVGANIMATEDENUMERATION_ANIMVAL)]
    HRESULT animVal([in] USHORT v);

    [propget, id(DISPID_ISVGANIMATEDENUMERATION_ANIMVAL)]
    HRESULT animVal([out, retval] USHORT *p);
}

/*****************************************************************************
 *    ISVGElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104c5-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGElement : IDispatch
{
    [propput, id(DISPID_ISVGELEMENT_XMLBASE)]
    HRESULT xmlbase([in] BSTR v);

    [propget, id(DISPID_ISVGELEMENT_XMLBASE)]
    HRESULT xmlbase([out, retval] BSTR *p);

    [propputref, id(DISPID_ISVGELEMENT_OWNERSVGELEMENT)]
    HRESULT ownerSVGElement([in] ISVGSVGElement *v);

    [propget, id(DISPID_ISVGELEMENT_OWNERSVGELEMENT)]
    HRESULT ownerSVGElement([out, retval] ISVGSVGElement **p);

    [propputref, id(DISPID_ISVGELEMENT_VIEWPORTELEMENT)]
    HRESULT viewportElement([in] ISVGElement *v);

    [propget, id(DISPID_ISVGELEMENT_VIEWPORTELEMENT)]
    HRESULT viewportElement([out, retval] ISVGElement **p);

    [propputref, id(DISPID_ISVGELEMENT_FOCUSABLE)]
    HRESULT focusable([in] ISVGAnimatedEnumeration *v);

    [propget, id(DISPID_ISVGELEMENT_FOCUSABLE)]
    HRESULT focusable([out, retval] ISVGAnimatedEnumeration **p);
}

#define WINE_ISVGELEMENT_DISPINTERFACE_DECL                     \
    [propput, id(DISPID_ISVGELEMENT_XMLBASE)]                   \
    void xmlbase(BSTR v);                                       \
                                                                \
    [propget, id(DISPID_ISVGELEMENT_XMLBASE)]                   \
    BSTR xmlbase();                                             \
                                                                \
    [propputref, id(DISPID_ISVGELEMENT_OWNERSVGELEMENT)]        \
    void ownerSVGElement(ISVGSVGElement *v);                    \
                                                                \
    [propget, id(DISPID_ISVGELEMENT_OWNERSVGELEMENT)]           \
    ISVGSVGElement *ownerSVGElement();                          \
                                                                \
    [propputref, id(DISPID_ISVGELEMENT_VIEWPORTELEMENT)]        \
    void viewportElement(ISVGElement *v);                       \
                                                                \
    [propget, id(DISPID_ISVGELEMENT_VIEWPORTELEMENT)]           \
    ISVGElement *viewportElement();                             \
                                                                \
    [propputref, id(DISPID_ISVGELEMENT_FOCUSABLE)]              \
    void focusable(ISVGAnimatedEnumeration *v);                 \
                                                                \
    [propget, id(DISPID_ISVGELEMENT_FOCUSABLE)]                 \
    ISVGAnimatedEnumeration *focusable()


/*****************************************************************************
 *    DispSVGElement dispinterface
 */
[
    hidden,
    uuid(30590000-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispSVGElement
{
properties:
methods:
    WINE_ISVGELEMENT_DISPINTERFACE_DECL;
    WINE_IHTMLELEMENT_DISPINTERFACE_DECL;
}

/*****************************************************************************
 *    SVGElement coclass
 */
[
    noncreatable,
    uuid(30510564-98b5-11cf-bb82-00aa00bdce0b)
]
coclass SVGElement
{
    [default]          dispinterface DispSVGElement;
    [source, default]  dispinterface HTMLElementEvents;
    [source]           dispinterface HTMLElementEvents2;
                       interface ISVGElement;
                       interface IHTMLElement;
}

/*****************************************************************************
 *    ISVGLength interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104cf-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGLength : IDispatch
{
    [propput, id(DISPID_ISVGLENGTH_UNITTYPE)]
    HRESULT unitType([in] short v);

    [propget, id(DISPID_ISVGLENGTH_UNITTYPE)]
    HRESULT unitType([out, retval] short *p);

    [propput, id(DISPID_ISVGLENGTH_VALUE)]
    HRESULT value([in] float v);

    [propget, id(DISPID_ISVGLENGTH_VALUE)]
    HRESULT value([out, retval] float *p);

    [propput, id(DISPID_ISVGLENGTH_VALUEINSPECIFIEDUNITS)]
    HRESULT valueInSpecifiedUnits([in] float v);

    [propget, id(DISPID_ISVGLENGTH_VALUEINSPECIFIEDUNITS)]
    HRESULT valueInSpecifiedUnits([out, retval] float *p);

    [propput, id(DISPID_ISVGLENGTH_VALUEASSTRING)]
    HRESULT valueAsString([in] BSTR v);

    [propget, id(DISPID_ISVGLENGTH_VALUEASSTRING)]
    HRESULT valueAsString([out, retval] BSTR *p);

    [id(DISPID_ISVGLENGTH_NEWVALUESPECIFIEDUNITS)]
    HRESULT newValueSpecifiedUnits(
        [in] short unitType,
        [in] float valueInSpecifiedUnits);

    [id(DISPID_ISVGLENGTH_CONVERTTOSPECIFIEDUNITS)]
    HRESULT convertToSpecifiedUnits([in] short unitType);
}

/*****************************************************************************
 *    ISVGAnimatedLength interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104d0-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGAnimatedLength : IDispatch
{
    [propputref, id(DISPID_ISVGANIMATEDLENGTH_BASEVAL)]
    HRESULT baseVal([in] ISVGLength *v);

    [propget, id(DISPID_ISVGANIMATEDLENGTH_BASEVAL)]
    HRESULT baseVal([out, retval] ISVGLength **p);

    [propputref, id(DISPID_ISVGANIMATEDLENGTH_ANIMVAL)]
    HRESULT animVal([in] ISVGLength *v);

    [propget, id(DISPID_ISVGANIMATEDLENGTH_ANIMVAL)]
    HRESULT animVal([out, retval] ISVGLength **p);
}

/*****************************************************************************
 *    ISVGRect interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104d7-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGRect : IDispatch
{
    [propput, id(DISPID_ISVGRECT_X)]
    HRESULT x([in] float v);

    [propget, id(DISPID_ISVGRECT_X)]
    HRESULT x([out, retval] float *p);

    [propput, id(DISPID_ISVGRECT_Y)]
    HRESULT y([in] float v);

    [propget, id(DISPID_ISVGRECT_Y)]
    HRESULT y([out, retval] float *p);

    [propput, id(DISPID_ISVGRECT_WIDTH)]
    HRESULT width([in] float v);

    [propget, id(DISPID_ISVGRECT_WIDTH)]
    HRESULT width([out, retval] float *p);

    [propput, id(DISPID_ISVGRECT_HEIGHT)]
    HRESULT height([in] float v);

    [propget, id(DISPID_ISVGRECT_HEIGHT)]
    HRESULT height([out, retval] float *p);
}

/*****************************************************************************
 *    ISVGViewSpec interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104e2-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGViewSpec : IDispatch
{
}

/*****************************************************************************
 *    ISVGMatrix interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104f6-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGMatrix : IDispatch
{
    [propput, id(DISPID_ISVGMATRIX_A)]
    HRESULT a([in] float v);

    [propget, id(DISPID_ISVGMATRIX_A)]
    HRESULT a([out, retval] float *p);

    [propput, id(DISPID_ISVGMATRIX_B)]
    HRESULT b([in] float v);

    [propget, id(DISPID_ISVGMATRIX_B)]
    HRESULT b([out, retval] float *p);

    [propput, id(DISPID_ISVGMATRIX_C)]
    HRESULT c([in] float v);

    [propget, id(DISPID_ISVGMATRIX_C)]
    HRESULT c([out, retval] float *p);

    [propput, id(DISPID_ISVGMATRIX_D)]
    HRESULT d([in] float v);

    [propget, id(DISPID_ISVGMATRIX_D)]
    HRESULT d([out, retval] float *p);

    [propput, id(DISPID_ISVGMATRIX_E)]
    HRESULT e([in] float v);

    [propget, id(DISPID_ISVGMATRIX_E)]
    HRESULT e([out, retval] float *p);

    [propput, id(DISPID_ISVGMATRIX_F)]
    HRESULT f([in] float v);

    [propget, id(DISPID_ISVGMATRIX_F)]
    HRESULT f([out, retval] float *p);

    [id(DISPID_ISVGMATRIX_MULTIPLY)]
    HRESULT multiply(
        [in] ISVGMatrix *secondMatrix,
        [out, retval] ISVGMatrix **p);

    [id(DISPID_ISVGMATRIX_INVERSE)]
    HRESULT inverse([out, retval] ISVGMatrix **p);

    [id(DISPID_ISVGMATRIX_TRANSLATE)]
    HRESULT translate(
        [in] float x,
        [in] float y,
        [out, retval] ISVGMatrix **p);

    [id(DISPID_ISVGMATRIX_SCALE)]
    HRESULT scale(
        [in] float scaleFactor,
        [out, retval] ISVGMatrix **p);

    [id(DISPID_ISVGMATRIX_SCALENONUNIFORM)]
    HRESULT scaleNonUniform(
        [in] float scaleFactorX,
        [in] float scaleFactorY,
        [out, retval] ISVGMatrix **p);

    [id(DISPID_ISVGMATRIX_ROTATE)]
    HRESULT rotate(
        [in] float angle,
        [out, retval] ISVGMatrix **p);

    [id(DISPID_ISVGMATRIX_ROTATEFROMVECTOR)]
    HRESULT rotateFromVector(
        [in] float x,
        [in] float y,
        [out, retval] ISVGMatrix **p);

    [id(DISPID_ISVGMATRIX_FLIPX)]
    HRESULT flipX([out, retval] ISVGMatrix **p);

    [id(DISPID_ISVGMATRIX_FLIPY)]
    HRESULT flipY([out, retval] ISVGMatrix **p);

    [id(DISPID_ISVGMATRIX_SKEWX)]
    HRESULT skewX(
        [in] float angle,
        [out, retval] ISVGMatrix **p);

    [id(DISPID_ISVGMATRIX_SKEWY)]
    HRESULT skewY(
        [in] float angle,
        [out, retval] ISVGMatrix **p);
}

/*****************************************************************************
 *    ISVGPoint interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104f4-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGPoint : IDispatch
{
    [propput, id(DISPID_ISVGPOINT_X)]
    HRESULT x([in] float v);

    [propget, id(DISPID_ISVGPOINT_X)]
    HRESULT x([out, retval] float *p);

    [propput, id(DISPID_ISVGPOINT_Y)]
    HRESULT y([in] float v);

    [propget, id(DISPID_ISVGPOINT_Y)]
    HRESULT y([out, retval] float *p);

    [id(DISPID_ISVGPOINT_MATRIXTRANSFORM)]
    HRESULT matrixTransform(
        [in] ISVGMatrix *pMatrix,
        [out, retval] ISVGPoint **p);
}

/*****************************************************************************
 *    ISVGNumber interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104cb-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGNumber : IDispatch
{
    [propput, id(DISPID_ISVGNUMBER_VALUE)]
    HRESULT value([in] float v);

    [propget, id(DISPID_ISVGNUMBER_VALUE)]
    HRESULT value([out, retval] float *p);
}

/*****************************************************************************
 *    ISVGAngle interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104d3-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGAngle : IDispatch
{
    [propput, id(DISPID_ISVGANGLE_UNITTYPE)]
    HRESULT unitType([in] short v);

    [propget, id(DISPID_ISVGANGLE_UNITTYPE)]
    HRESULT unitType([out, retval] short *p);

    [propput, id(DISPID_ISVGANGLE_VALUE)]
    HRESULT value([in] float v);

    [propget, id(DISPID_ISVGANGLE_VALUE)]
    HRESULT value([out, retval] float *p);

    [propput, id(DISPID_ISVGANGLE_VALUEINSPECIFIEDUNITS)]
    HRESULT valueInSpecifiedUnits([in] float v);

    [propget, id(DISPID_ISVGANGLE_VALUEINSPECIFIEDUNITS)]
    HRESULT valueInSpecifiedUnits([out, retval] float *p);

    [propput, id(DISPID_ISVGANGLE_VALUEASSTRING)]
    HRESULT valueAsString([in] BSTR v);

    [propget, id(DISPID_ISVGANGLE_VALUEASSTRING)]
    HRESULT valueAsString([out, retval] BSTR *p);

    [id(DISPID_ISVGANGLE_NEWVALUESPECIFIEDUNITS)]
    HRESULT newValueSpecifiedUnits(
        [in] short unitType,
        [in] float valueInSpecifiedUnits);

    [id(DISPID_ISVGANGLE_CONVERTTOSPECIFIEDUNITS)]
    HRESULT convertToSpecifiedUnits([in] short unitType);
}

/*****************************************************************************
 *    ISVGStringList interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104c8-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGStringList : IDispatch
{
    [propput, id(DISPID_ISVGSTRINGLIST_NUMBEROFITEMS)]
    HRESULT numberOfItems([in] long v);

    [propget, id(DISPID_ISVGSTRINGLIST_NUMBEROFITEMS)]
    HRESULT numberOfItems([out, retval] long *p);

    [id(DISPID_ISVGSTRINGLIST_CLEAR)]
    HRESULT clear();

    [id(DISPID_ISVGSTRINGLIST_INITIALIZE)]
    HRESULT initialize(
        [in] BSTR newItem,
        [out, retval] BSTR *p);

    [id(DISPID_ISVGSTRINGLIST_GETITEM)]
    HRESULT getItem(
        [in] long index,
        [out, retval] BSTR *p);

    [id(DISPID_ISVGSTRINGLIST_INSERTITEMBEFORE)]
    HRESULT insertItemBefore(
        [in] BSTR newItem,
        [in] long index,
        [out, retval] BSTR *p);

    [id(DISPID_ISVGSTRINGLIST_REPLACEITEM)]
    HRESULT replaceItem(
        [in] BSTR newItem,
        [in] long index,
        [out, retval] BSTR *p);

    [id(DISPID_ISVGSTRINGLIST_REMOVEITEM)]
    HRESULT removeItem(
        [in] long index,
        [out, retval] BSTR *p);

    [id(DISPID_ISVGSTRINGLIST_APPENDITEM)]
    HRESULT appendItem(
        [in] BSTR newItem,
        [out, retval] BSTR *p);
}

/*****************************************************************************
 *    ISVGTransform interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104f7-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGTransform : IDispatch
{
    [propput, id(DISPID_ISVGTRANSFORM_TYPE)]
    HRESULT type([in] short v);

    [propget, id(DISPID_ISVGTRANSFORM_TYPE)]
    HRESULT type([out, retval] short *p);

    [propputref, id(DISPID_ISVGTRANSFORM_MATRIX)]
    HRESULT matrix([in] ISVGMatrix *v);

    [propget, id(DISPID_ISVGTRANSFORM_MATRIX)]
    HRESULT matrix([out, retval] ISVGMatrix **p);

    [propput, id(DISPID_ISVGTRANSFORM_ANGLE)]
    HRESULT angle([in] float v);

    [propget, id(DISPID_ISVGTRANSFORM_ANGLE)]
    HRESULT angle([out, retval] float *p);

    [id(DISPID_ISVGTRANSFORM_SETMATRIX)]
    HRESULT setMatrix([in] ISVGMatrix *matrix);

    [id(DISPID_ISVGTRANSFORM_SETTRANSLATE)]
    HRESULT setTranslate(
        [in] float tx,
        [in] float ty);

    [id(DISPID_ISVGTRANSFORM_SETSCALE)]
    HRESULT setScale(
        [in] float sx,
        [in] float sy);

    [id(DISPID_ISVGTRANSFORM_SETROTATE)]
    HRESULT setRotate(
        [in] float angle,
        [in] float cx,
        [in] float cy);

    [id(DISPID_ISVGTRANSFORM_SETSKEWX)]
    HRESULT setSkewX([in] float angle);

    [id(DISPID_ISVGTRANSFORM_SETSKEWY)]
    HRESULT setSkewY([in] float angle);
}

/*****************************************************************************
 *    ISVGTransformList interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104f8-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGTransformList : IDispatch
{
    [propput, id(DISPID_ISVGTRANSFORMLIST_NUMBEROFITEMS)]
    HRESULT numberOfItems([in] long v);

    [propget, id(DISPID_ISVGTRANSFORMLIST_NUMBEROFITEMS)]
    HRESULT numberOfItems([out, retval] long *p);

    [id(DISPID_ISVGTRANSFORMLIST_CLEAR)]
    HRESULT clear();

    [id(DISPID_ISVGTRANSFORMLIST_INITIALIZE)]
    HRESULT initialize(
        [in] ISVGTransform *newItem,
        [out, retval] ISVGTransform **p);

    [id(DISPID_ISVGTRANSFORMLIST_GETITEM)]
    HRESULT getItem(
        [in] long index,
        [out, retval] ISVGTransform **p);

    [id(DISPID_ISVGTRANSFORMLIST_INSERTITEMBEFORE)]
    HRESULT insertItemBefore(
        [in] ISVGTransform *newItem,
        [in] long index,
        [out, retval] ISVGTransform **p);

    [id(DISPID_ISVGTRANSFORMLIST_REPLACEITEM)]
    HRESULT replaceItem(
        [in] ISVGTransform *newItem,
        [in] long index,
        [out, retval] ISVGTransform **p);

    [id(DISPID_ISVGTRANSFORMLIST_REMOVEITEM)]
    HRESULT removeItem(
        [in] long index,
        [out, retval] ISVGTransform **p);

    [id(DISPID_ISVGTRANSFORMLIST_APPENDITEM)]
    HRESULT appendItem(
        [in] ISVGTransform *newItem,
        [out, retval] ISVGTransform **p);

    [id(DISPID_ISVGTRANSFORMLIST_CREATESVGTRANSFORMFROMMATRIX)]
    HRESULT createSVGTransformFromMatrix(
        [in] ISVGMatrix *newItem,
        [out, retval] ISVGTransform **p);

    [id(DISPID_ISVGTRANSFORMLIST_CONSOLIDATE)]
    HRESULT consolidate([out, retval] ISVGTransform **p);
}

/*****************************************************************************
 *    ISVGAnimatedTransformList interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104f9-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGAnimatedTransformList : IDispatch
{
    [propputref, id(DISPID_ISVGANIMATEDTRANSFORMLIST_BASEVAL)]
    HRESULT baseVal([in] ISVGTransformList *v);

    [propget, id(DISPID_ISVGANIMATEDTRANSFORMLIST_BASEVAL)]
    HRESULT baseVal([out, retval] ISVGTransformList **p);

    [propputref, id(DISPID_ISVGANIMATEDTRANSFORMLIST_ANIMVAL)]
    HRESULT animVal([in] ISVGTransformList *v);

    [propget, id(DISPID_ISVGANIMATEDTRANSFORMLIST_ANIMVAL)]
    HRESULT animVal([out, retval] ISVGTransformList **p);
}

/*****************************************************************************
 *    ISVGAnimatedBoolean interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104c6-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGAnimatedBoolean : IDispatch
{
    [propput, id(DISPID_ISVGANIMATEDBOOLEAN_BASEVAL)]
    HRESULT baseVal([in] VARIANT_BOOL v);

    [propget, id(DISPID_ISVGANIMATEDBOOLEAN_BASEVAL)]
    HRESULT baseVal([out, retval] VARIANT_BOOL *p);

    [propput, id(DISPID_ISVGANIMATEDBOOLEAN_ANIMVAL)]
    HRESULT animVal([in] VARIANT_BOOL v);

    [propget, id(DISPID_ISVGANIMATEDBOOLEAN_ANIMVAL)]
    HRESULT animVal([out, retval] VARIANT_BOOL *p);
}

/*****************************************************************************
 *    ISVGAnimatedString interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104c7-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGAnimatedString : IDispatch
{
    [propput, id(DISPID_ISVGANIMATEDSTRING_BASEVAL)]
    HRESULT baseVal([in] BSTR v);

    [propget, id(DISPID_ISVGANIMATEDSTRING_BASEVAL)]
    HRESULT baseVal([out, retval] BSTR *p);

    [propget, id(DISPID_ISVGANIMATEDSTRING_ANIMVAL)]
    HRESULT animVal([out, retval] BSTR *p);
}

/*****************************************************************************
 *    ISVGAnimatedRect interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104d8-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGAnimatedRect : IDispatch
{
    [propputref, id(DISPID_ISVGANIMATEDRECT_BASEVAL)]
    HRESULT baseVal([in] ISVGRect *v);

    [propget, id(DISPID_ISVGANIMATEDRECT_BASEVAL)]
    HRESULT baseVal([out, retval] ISVGRect **p);

    [propputref, id(DISPID_ISVGANIMATEDRECT_ANIMVAL)]
    HRESULT animVal([in] ISVGRect *v);

    [propget, id(DISPID_ISVGANIMATEDRECT_ANIMVAL)]
    HRESULT animVal([out, retval] ISVGRect **p);
}

/*****************************************************************************
 *    ISVGPreserveAspectRatio interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104fa-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGPreserveAspectRatio : IDispatch
{
    [propput, id(DISPID_ISVGPRESERVEASPECTRATIO_ALIGN)]
    HRESULT align([in] short v);

    [propget, id(DISPID_ISVGPRESERVEASPECTRATIO_ALIGN)]
    HRESULT align([out, retval] short *p);

    [propput, id(DISPID_ISVGPRESERVEASPECTRATIO_MEETORSLICE)]
    HRESULT meetOrSlice([in] short v);

    [propget, id(DISPID_ISVGPRESERVEASPECTRATIO_MEETORSLICE)]
    HRESULT meetOrSlice([out, retval] short *p);
}

/*****************************************************************************
 *    ISVGAnimatedPreserveAspectRatio interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104fb-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGAnimatedPreserveAspectRatio : IDispatch
{
    [propputref, id(DISPID_ISVGANIMATEDPRESERVEASPECTRATIO_BASEVAL)]
    HRESULT baseVal([in] ISVGPreserveAspectRatio *v);

    [propget, id(DISPID_ISVGANIMATEDPRESERVEASPECTRATIO_BASEVAL)]
    HRESULT baseVal([retval, out] ISVGPreserveAspectRatio **p);

    [propputref, id(DISPID_ISVGANIMATEDPRESERVEASPECTRATIO_ANIMVAL)]
    HRESULT animVal([in] ISVGPreserveAspectRatio *v);

    [propget, id(DISPID_ISVGANIMATEDPRESERVEASPECTRATIO_ANIMVAL)]
    HRESULT animVal([out, retval] ISVGPreserveAspectRatio **p);
}

/*****************************************************************************
 *    ISVGTransformable interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104dc-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGTransformable : IDispatch
{
    [propget, id(DISPID_ISVGTRANSFORMABLE_TRANSFORM)]
    HRESULT transform([out, retval] ISVGAnimatedTransformList **p);
}

#define WINE_ISVGTRANSFORMABLE_DISPINTERFACE_DECL       \
    [propget, id(DISPID_ISVGTRANSFORMABLE_TRANSFORM)]   \
    ISVGAnimatedTransformList *transform()

[
    odl,
    oleautomation,
    dual,
    uuid(305104dd-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGTests : IDispatch
{
    [propget, id(DISPID_ISVGTESTS_REQUIREDFEATURES)]
    HRESULT requiredFeatures([out, retval] ISVGStringList **p);

    [propget, id(DISPID_ISVGTESTS_REQUIREDEXTENSIONS)]
    HRESULT requiredExtensions([out, retval] ISVGStringList **p);

    [propget, id(DISPID_ISVGTESTS_SYSTEMLANGUAGE)]
    HRESULT systemLanguage([out, retval] ISVGStringList **p);

    [id(DISPID_ISVGTESTS_HASEXTENSION)]
    HRESULT hasExtension(
        [in] BSTR extension,
        [out, retval] VARIANT_BOOL *p);
}

#define WINE_ISVGTESTS_DISPINTERFACE_DECL               \
    [propget, id(DISPID_ISVGTESTS_REQUIREDFEATURES)]    \
    ISVGStringList *requiredFeatures();                 \
                                                        \
    [propget, id(DISPID_ISVGTESTS_REQUIREDEXTENSIONS)]  \
    ISVGStringList *requiredExtensions();               \
                                                        \
    [propget, id(DISPID_ISVGTESTS_SYSTEMLANGUAGE)]      \
    ISVGStringList *systemLanguage();                   \
                                                        \
    [id(DISPID_ISVGTESTS_HASEXTENSION)]                 \
    VARIANT_BOOL hasExtension([in] BSTR extension)

/*****************************************************************************
 *    ISVGLangSpace interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104de-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGLangSpace : IDispatch
{
    [propput, id(DISPID_ISVGLANGSPACE_XMLLANG)]
    HRESULT xmllang([in] BSTR v);

    [propget, id(DISPID_ISVGLANGSPACE_XMLLANG)]
    HRESULT xmllang([out, retval] BSTR *p);

    [propput, id(DISPID_ISVGLANGSPACE_XMLSPACE)]
    HRESULT xmlspace([in] BSTR v);

    [propget, id(DISPID_ISVGLANGSPACE_XMLSPACE)]
    HRESULT xmlspace([out, retval] BSTR *p);
}

#define WINE_ISVGLANGSPACE_DISPINTERFACE_DECL       \
    [propput, id(DISPID_ISVGLANGSPACE_XMLLANG)]     \
    void xmllang(BSTR v);                           \
                                                    \
    [propget, id(DISPID_ISVGLANGSPACE_XMLLANG)]     \
    BSTR xmllang();                                 \
                                                    \
    [propput, id(DISPID_ISVGLANGSPACE_XMLSPACE)]    \
    void xmlspace(BSTR v);                          \
                                                    \
    [propget, id(DISPID_ISVGLANGSPACE_XMLSPACE)]    \
    BSTR xmlspace()

/*****************************************************************************
 *    ISVGExternalResourcesRequired interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104df-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGExternalResourcesRequired : IDispatch
{
    [propget, id(DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)]
    HRESULT externalResourcesRequired([out, retval] ISVGAnimatedBoolean **p);
}

#define WINE_ISVGEXTERNALRESOURCESREQUIRED_DISPINTERFACE_DECL                     \
    [propget, id(DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] \
    ISVGAnimatedBoolean *externalResourcesRequired()

/*****************************************************************************
 *    ISVGStylable interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104da-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGStylable : IDispatch
{
    [propget, id(DISPID_ISVGSTYLABLE_CLASSNAME)]
    HRESULT className([out, retval] ISVGAnimatedString **p);
}

#define WINE_ISVGSTYLABLE_DISPINTERFACE_DECL            \
    [propget, id(DISPID_ISVGSTYLABLE_CLASSNAME)]        \
    ISVGAnimatedString *className()

/*****************************************************************************
 *    ISVGLocatable interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104db-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGLocatable : IDispatch
{
    [propget, id(DISPID_ISVGLOCATABLE_NEARESTVIEWPORTELEMENT)]
    HRESULT nearestViewportElement([out, retval] ISVGElement **p);

    [propget, id(DISPID_ISVGLOCATABLE_FARTHESTVIEWPORTELEMENT)]
    HRESULT farthestViewportElement([out, retval] ISVGElement **p);

    [id(DISPID_ISVGLOCATABLE_GETBBOX)]
    HRESULT getBBox([out, retval] ISVGRect **p);

    [id(DISPID_ISVGLOCATABLE_GETCTM)]
    HRESULT getCTM([out, retval] ISVGMatrix **p);

    [id(DISPID_ISVGLOCATABLE_GETSCREENCTM)]
    HRESULT getScreenCTM([out, retval] ISVGMatrix **p);

    [id(DISPID_ISVGLOCATABLE_GETTRANSFORMTOELEMENT)]
    HRESULT getTransformToElement(
        [in] ISVGElement *pElement,
        [out, retval] ISVGMatrix **p);
}

#define WINE_ISVGLOCATABLE_DISPINTERFACE_DECL                   \
    [propget, id(DISPID_ISVGLOCATABLE_NEARESTVIEWPORTELEMENT)]  \
    ISVGElement *nearestViewportElement();                      \
                                                                \
    [propget, id(DISPID_ISVGLOCATABLE_FARTHESTVIEWPORTELEMENT)] \
    ISVGElement *farthestViewportElement();                     \
                                                                \
    [id(DISPID_ISVGLOCATABLE_GETBBOX)]                          \
    ISVGRect *getBBox();                                        \
                                                                \
    [id(DISPID_ISVGLOCATABLE_GETCTM)]                           \
    ISVGMatrix *getCTM();                                       \
                                                                \
    [id(DISPID_ISVGLOCATABLE_GETSCREENCTM)]                     \
    ISVGMatrix *getScreenCTM();                                 \
                                                                \
    [id(DISPID_ISVGLOCATABLE_GETTRANSFORMTOELEMENT)]            \
    ISVGMatrix *getTransformToElement([in] ISVGElement *pElement)

/*****************************************************************************
 *    ISVGFitToViewBox interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104e0-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGFitToViewBox : IDispatch
{
    [propget, id(DISPID_ISVGFITTOVIEWBOX_VIEWBOX)]
    HRESULT viewBox([out, retval] ISVGAnimatedRect **p);

    [propputref, id(DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)]
    HRESULT preserveAspectRatio([in] ISVGAnimatedPreserveAspectRatio *v);

    [propget, id(DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)]
    HRESULT preserveAspectRatio([out, retval] ISVGAnimatedPreserveAspectRatio **p);
}

#define WINE_ISVGFITTOVIEWBOX_DISPINTERFACE_DECL                        \
    [propget, id(DISPID_ISVGFITTOVIEWBOX_VIEWBOX)]                      \
    ISVGAnimatedRect *viewBox();                                        \
                                                                        \
    [propputref, id(DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)]       \
    void preserveAspectRatio(ISVGAnimatedPreserveAspectRatio *v);       \
                                                                        \
    [propget, id(DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)]          \
    ISVGAnimatedPreserveAspectRatio *preserveAspectRatio()

/*****************************************************************************
 *    ISVGZoomAndPan interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104e1-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGZoomAndPan : IDispatch
{
    [propget, id(DISPID_ISVGZOOMANDPAN_ZOOMANDPAN)]
    HRESULT zoomAndPan([out, retval] short *p);
}

#define WINE_ISVGZOOMANDPAN_DISPINTERFACE_DECL          \
    [propget, id(DISPID_ISVGZOOMANDPAN_ZOOMANDPAN)]     \
    short zoomAndPan()

/*****************************************************************************
 *    ISVGSVGElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104e7-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGSVGElement : IDispatch
{
    [propputref, id(DISPID_ISVGSVGELEMENT_X)]
    HRESULT x([in] ISVGAnimatedLength *v);

    [propget, id(DISPID_ISVGSVGELEMENT_X)]
    HRESULT x([out, retval] ISVGAnimatedLength **p);

    [propputref, id(DISPID_ISVGSVGELEMENT_Y)]
    HRESULT y([in] ISVGAnimatedLength *v);

    [propget, id(DISPID_ISVGSVGELEMENT_Y)]
    HRESULT y([out, retval] ISVGAnimatedLength **p);

    [propputref, id(DISPID_ISVGSVGELEMENT_WIDTH)]
    HRESULT width([in] ISVGAnimatedLength *v);

    [propget, id(DISPID_ISVGSVGELEMENT_WIDTH)]
    HRESULT width([out, retval] ISVGAnimatedLength **p);

    [propputref, id(DISPID_ISVGSVGELEMENT_HEIGHT)]
    HRESULT height([in] ISVGAnimatedLength *v);

    [propget, id(DISPID_ISVGSVGELEMENT_HEIGHT)]
    HRESULT height([out, retval] ISVGAnimatedLength **p);

    [propput, id(DISPID_ISVGSVGELEMENT_CONTENTSCRIPTTYPE)]
    HRESULT contentScriptType([in] BSTR v);

    [propget, id(DISPID_ISVGSVGELEMENT_CONTENTSCRIPTTYPE)]
    HRESULT contentScriptType([out, retval] BSTR *p);

    [propput, id(DISPID_ISVGSVGELEMENT_CONTENTSTYLETYPE)]
    HRESULT contentStyleType([in] BSTR v);

    [propget, id(DISPID_ISVGSVGELEMENT_CONTENTSTYLETYPE)]
    HRESULT contentStyleType([out, retval] BSTR *p);

    [propputref, id(DISPID_ISVGSVGELEMENT_VIEWPORT)]
    HRESULT viewport([in] ISVGRect *v);

    [propget, id(DISPID_ISVGSVGELEMENT_VIEWPORT)]
    HRESULT viewport([out, retval] ISVGRect **p);

    [propput, id(DISPID_ISVGSVGELEMENT_PIXELUNITTOMILLIMETERX)]
    HRESULT pixelUnitToMillimeterX([in] float v);

    [propget, id(DISPID_ISVGSVGELEMENT_PIXELUNITTOMILLIMETERX)]
    HRESULT pixelUnitToMillimeterX([out, retval] float *p);

    [propput, id(DISPID_ISVGSVGELEMENT_PIXELUNITTOMILLIMETERY)]
    HRESULT pixelUnitToMillimeterY([in] float v);

    [propget, id(DISPID_ISVGSVGELEMENT_PIXELUNITTOMILLIMETERY)]
    HRESULT pixelUnitToMillimeterY([out, retval] float *p);

    [propput, id(DISPID_ISVGSVGELEMENT_SCREENPIXELTOMILLIMETERX)]
    HRESULT screenPixelToMillimeterX([in] float v);

    [propget, id(DISPID_ISVGSVGELEMENT_SCREENPIXELTOMILLIMETERX)]
    HRESULT screenPixelToMillimeterX([out, retval] float *p);

    [propput, id(DISPID_ISVGSVGELEMENT_SCREENPIXELTOMILLIMETERY)]
    HRESULT screenPixelToMillimeterY([in] float v);

    [propget, id(DISPID_ISVGSVGELEMENT_SCREENPIXELTOMILLIMETERY)]
    HRESULT screenPixelToMillimeterY([out, retval] float *p);

    [propput, id(DISPID_ISVGSVGELEMENT_USECURRENTVIEW)]
    HRESULT useCurrentView([in] VARIANT_BOOL v);

    [propget, id(DISPID_ISVGSVGELEMENT_USECURRENTVIEW)]
    HRESULT useCurrentView([out, retval] VARIANT_BOOL *p);

    [propputref, id(DISPID_ISVGSVGELEMENT_CURRENTVIEW)]
    HRESULT currentView([in] ISVGViewSpec *v);

    [propget, id(DISPID_ISVGSVGELEMENT_CURRENTVIEW)]
    HRESULT currentView([out, retval] ISVGViewSpec **p);

    [propput, id(DISPID_ISVGSVGELEMENT_CURRENTSCALE)]
    HRESULT currentScale([in] float v);

    [propget, id(DISPID_ISVGSVGELEMENT_CURRENTSCALE)]
    HRESULT currentScale([out, retval] float *p);

    [propputref, id(DISPID_ISVGSVGELEMENT_CURRENTTRANSLATE)]
    HRESULT currentTranslate([in] ISVGPoint *v);

    [propget, id(DISPID_ISVGSVGELEMENT_CURRENTTRANSLATE)]
    HRESULT currentTranslate([out, retval] ISVGPoint **p);

    [id(DISPID_ISVGSVGELEMENT_SUSPENDREDRAW)]
    HRESULT suspendRedraw(
        [in] ULONG maxWaitMilliseconds,
        [out, retval] ULONG *p);

    [id(DISPID_ISVGSVGELEMENT_UNSUSPENDREDRAW)]
    HRESULT unsuspendRedraw([in] ULONG suspendHandeID);

    [id(DISPID_ISVGSVGELEMENT_UNSUSPENDREDRAWALL)]
    HRESULT unsuspendRedrawAll();

    [id(DISPID_ISVGSVGELEMENT_FORCEREDRAW)]
    HRESULT forceRedraw();

    [id(DISPID_ISVGSVGELEMENT_PAUSEANIMATIONS)]
    HRESULT pauseAnimations();

    [id(DISPID_ISVGSVGELEMENT_UNPAUSEANIMATIONS)]
    HRESULT unpauseAnimations();

    [id(DISPID_ISVGSVGELEMENT_ANIMATIONSPAUSED)]
    HRESULT animationsPaused([out, retval] VARIANT_BOOL *p);

    [id(DISPID_ISVGSVGELEMENT_GETCURRENTTIME)]
    HRESULT getCurrentTime([out, retval] float *p);

    [id(DISPID_ISVGSVGELEMENT_SETCURRENTTIME)]
    HRESULT setCurrentTime([in] float seconds);

    [id(DISPID_ISVGSVGELEMENT_GETINTERSECTIONLIST)]
    HRESULT getIntersectionList(
        [in] ISVGRect *rect,
        [in] ISVGElement *referenceElement,
        [out, retval] VARIANT *p);

    [id(DISPID_ISVGSVGELEMENT_GETENCLOSURELIST)]
    HRESULT getEnclosureList(
        [in] ISVGRect *rect,
        [in] ISVGElement *referenceElement,
        [out, retval] VARIANT *p);

    [id(DISPID_ISVGSVGELEMENT_CHECKINTERSECTION)]
    HRESULT checkIntersection(
        [in] ISVGElement *element,
        [in] ISVGRect *rect,
        [out, retval] VARIANT_BOOL *p);

    [id(DISPID_ISVGSVGELEMENT_CHECKENCLOSURE)]
    HRESULT checkEnclosure(
        [in] ISVGElement *element,
        [in] ISVGRect *rect,
        [out, retval] VARIANT_BOOL *p);

    [id(DISPID_ISVGSVGELEMENT_DESELECTALL)]
    HRESULT deselectAll();

    [id(DISPID_ISVGSVGELEMENT_CREATESVGNUMBER)]
    HRESULT createSVGNumber([out, retval] ISVGNumber **p);

    [id(DISPID_ISVGSVGELEMENT_CREATESVGLENGTH)]
    HRESULT createSVGLength([out, retval] ISVGLength **p);

    [id(DISPID_ISVGSVGELEMENT_CREATESVGANGLE)]
    HRESULT createSVGAngle([out, retval] ISVGAngle **p);

    [id(DISPID_ISVGSVGELEMENT_CREATESVGPOINT)]
    HRESULT createSVGPoint([out, retval] ISVGPoint **p);

    [id(DISPID_ISVGSVGELEMENT_CREATESVGMATRIX)]
    HRESULT createSVGMatrix([out, retval] ISVGMatrix **p);

    [id(DISPID_ISVGSVGELEMENT_CREATESVGRECT)]
    HRESULT createSVGRect([out, retval] ISVGRect **p);

    [id(DISPID_ISVGSVGELEMENT_CREATESVGTRANSFORM)]
    HRESULT createSVGTransform([out, retval] ISVGTransform **p);

    [id(DISPID_ISVGSVGELEMENT_CREATESVGTRANSFORMFROMMATRIX)]
    HRESULT createSVGTransformFromMatrix(
        [in] ISVGMatrix *matrix,
        [out, retval] ISVGTransform **p);

    [id(DISPID_ISVGSVGELEMENT_GETELEMENTBYID)]
    HRESULT getElementById(
        [in] BSTR elementId,
        [out, retval] IHTMLElement **p);
}

/*****************************************************************************
 *    DispSVGSVGElement dispinterface
 */
[
    hidden,
    uuid(30590001-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispSVGSVGElement
{
properties:
methods:
    [propputref, id(DISPID_ISVGSVGELEMENT_X)]
    void x(ISVGAnimatedLength *v);

    [propget, id(DISPID_ISVGSVGELEMENT_X)]
    ISVGAnimatedLength *x();

    [propputref, id(DISPID_ISVGSVGELEMENT_Y)]
    void y(ISVGAnimatedLength *v);

    [propget, id(DISPID_ISVGSVGELEMENT_Y)]
    ISVGAnimatedLength *y();

    [propputref, id(DISPID_ISVGSVGELEMENT_WIDTH)]
    void width(ISVGAnimatedLength *v);

    [propget, id(DISPID_ISVGSVGELEMENT_WIDTH)]
    ISVGAnimatedLength *width();

    [propputref, id(DISPID_ISVGSVGELEMENT_HEIGHT)]
    void height(ISVGAnimatedLength *v);

    [propget, id(DISPID_ISVGSVGELEMENT_HEIGHT)]
    ISVGAnimatedLength *height();

    [propput, id(DISPID_ISVGSVGELEMENT_CONTENTSCRIPTTYPE)]
    void contentScriptType(BSTR v);

    [propget, id(DISPID_ISVGSVGELEMENT_CONTENTSCRIPTTYPE)]
    BSTR contentScriptType();

    [propput, id(DISPID_ISVGSVGELEMENT_CONTENTSTYLETYPE)]
    void contentStyleType(BSTR v);

    [propget, id(DISPID_ISVGSVGELEMENT_CONTENTSTYLETYPE)]
    BSTR contentStyleType();

    [propputref, id(DISPID_ISVGSVGELEMENT_VIEWPORT)]
    void viewport(ISVGRect *v);

    [propget, id(DISPID_ISVGSVGELEMENT_VIEWPORT)]
    ISVGRect *viewport();

    [propput, id(DISPID_ISVGSVGELEMENT_PIXELUNITTOMILLIMETERX)]
    void pixelUnitToMillimeterX(float v);

    [propget, id(DISPID_ISVGSVGELEMENT_PIXELUNITTOMILLIMETERX)]
    float pixelUnitToMillimeterX();

    [propput, id(DISPID_ISVGSVGELEMENT_PIXELUNITTOMILLIMETERY)]
    void pixelUnitToMillimeterY(float v);

    [propget, id(DISPID_ISVGSVGELEMENT_PIXELUNITTOMILLIMETERY)]
    float pixelUnitToMillimeterY();

    [propput, id(DISPID_ISVGSVGELEMENT_SCREENPIXELTOMILLIMETERX)]
    void screenPixelToMillimeterX(float v);

    [propget, id(DISPID_ISVGSVGELEMENT_SCREENPIXELTOMILLIMETERX)]
    float screenPixelToMillimeterX();

    [propput, id(DISPID_ISVGSVGELEMENT_SCREENPIXELTOMILLIMETERY)]
    void screenPixelToMillimeterY(float v);

    [propget, id(DISPID_ISVGSVGELEMENT_SCREENPIXELTOMILLIMETERY)]
    float screenPixelToMillimeterY();

    [propput, id(DISPID_ISVGSVGELEMENT_USECURRENTVIEW)]
    void useCurrentView(VARIANT_BOOL v);

    [propget, id(DISPID_ISVGSVGELEMENT_USECURRENTVIEW)]
    VARIANT_BOOL useCurrentView();

    [propputref, id(DISPID_ISVGSVGELEMENT_CURRENTVIEW)]
    void currentView(ISVGViewSpec *v);

    [propget, id(DISPID_ISVGSVGELEMENT_CURRENTVIEW)]
    ISVGViewSpec *currentView();

    [propput, id(DISPID_ISVGSVGELEMENT_CURRENTSCALE)]
    void currentScale(float v);

    [propget, id(DISPID_ISVGSVGELEMENT_CURRENTSCALE)]
    float currentScale();

    [propputref, id(DISPID_ISVGSVGELEMENT_CURRENTTRANSLATE)]
    void currentTranslate(ISVGPoint *v);

    [propget, id(DISPID_ISVGSVGELEMENT_CURRENTTRANSLATE)]
    ISVGPoint *currentTranslate();

    [id(DISPID_ISVGSVGELEMENT_SUSPENDREDRAW)]
    ULONG suspendRedraw([in] ULONG maxWaitMilliseconds);

    [id(DISPID_ISVGSVGELEMENT_UNSUSPENDREDRAW)]
    void unsuspendRedraw([in] ULONG suspendHandeID);

    [id(DISPID_ISVGSVGELEMENT_UNSUSPENDREDRAWALL)]
    void unsuspendRedrawAll();

    [id(DISPID_ISVGSVGELEMENT_FORCEREDRAW)]
    void forceRedraw();

    [id(DISPID_ISVGSVGELEMENT_PAUSEANIMATIONS)]
    void pauseAnimations();

    [id(DISPID_ISVGSVGELEMENT_UNPAUSEANIMATIONS)]
    void unpauseAnimations();

    [id(DISPID_ISVGSVGELEMENT_ANIMATIONSPAUSED)]
    VARIANT_BOOL animationsPaused();

    [id(DISPID_ISVGSVGELEMENT_GETCURRENTTIME)]
    float getCurrentTime();

    [id(DISPID_ISVGSVGELEMENT_SETCURRENTTIME)]
    void setCurrentTime([in] float seconds);

    [id(DISPID_ISVGSVGELEMENT_GETINTERSECTIONLIST)]
    VARIANT getIntersectionList([in] ISVGRect *rect,[in] ISVGElement *referenceElement);

    [id(DISPID_ISVGSVGELEMENT_GETENCLOSURELIST)]
    VARIANT getEnclosureList(
        [in] ISVGRect *rect,
        [in] ISVGElement *referenceElement);

    [id(DISPID_ISVGSVGELEMENT_CHECKINTERSECTION)]
    VARIANT_BOOL checkIntersection(
        [in] ISVGElement *element,
        [in] ISVGRect *rect);

    [id(DISPID_ISVGSVGELEMENT_CHECKENCLOSURE)]
    VARIANT_BOOL checkEnclosure(
        [in] ISVGElement *element,
        [in] ISVGRect *rect);

    [id(DISPID_ISVGSVGELEMENT_DESELECTALL)]
    void deselectAll();

    [id(DISPID_ISVGSVGELEMENT_CREATESVGNUMBER)]
    ISVGNumber *createSVGNumber();

    [id(DISPID_ISVGSVGELEMENT_CREATESVGLENGTH)]
    ISVGLength *createSVGLength();

    [id(DISPID_ISVGSVGELEMENT_CREATESVGANGLE)]
    ISVGAngle *createSVGAngle();

    [id(DISPID_ISVGSVGELEMENT_CREATESVGPOINT)]
    ISVGPoint *createSVGPoint();

    [id(DISPID_ISVGSVGELEMENT_CREATESVGMATRIX)]
    ISVGMatrix *createSVGMatrix();

    [id(DISPID_ISVGSVGELEMENT_CREATESVGRECT)]
    ISVGRect *createSVGRect();

    [id(DISPID_ISVGSVGELEMENT_CREATESVGTRANSFORM)]
    ISVGTransform *createSVGTransform();

    [id(DISPID_ISVGSVGELEMENT_CREATESVGTRANSFORMFROMMATRIX)]
    ISVGTransform *createSVGTransformFromMatrix([in] ISVGMatrix *matrix);

    [id(DISPID_ISVGSVGELEMENT_GETELEMENTBYID)]
    IHTMLElement *getElementById([in] BSTR elementId);

    WINE_ISVGELEMENT_DISPINTERFACE_DECL;
    WINE_ISVGTESTS_DISPINTERFACE_DECL;
    WINE_ISVGLANGSPACE_DISPINTERFACE_DECL;
    WINE_ISVGEXTERNALRESOURCESREQUIRED_DISPINTERFACE_DECL;
    WINE_ISVGSTYLABLE_DISPINTERFACE_DECL;
    WINE_ISVGLOCATABLE_DISPINTERFACE_DECL;
    WINE_ISVGFITTOVIEWBOX_DISPINTERFACE_DECL;
    WINE_ISVGZOOMANDPAN_DISPINTERFACE_DECL;
}

[
    noncreatable,
    uuid(30510574-98b5-11cf-bb82-00aa00bdce0b)
]
coclass SVGSVGElement
{
    [default]         dispinterface DispSVGSVGElement;
    [source, default] dispinterface HTMLElementEvents;
    [source]          dispinterface HTMLElementEvents2;
                      interface ISVGSVGElement;
                      interface ISVGElement;
                      interface ISVGTests;
                      interface ISVGLangSpace;
                      interface ISVGExternalResourcesRequired;
                      interface ISVGStylable;
                      interface ISVGLocatable;
                      interface ISVGFitToViewBox;
                      interface ISVGZoomAndPan;
}

[
    odl,
    oleautomation,
    dual,
    uuid(30510514-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGCircleElement : IDispatch
{
    [propputref, id(DISPID_ISVGCIRCLEELEMENT_CX)]
    HRESULT cx([in] ISVGAnimatedLength *v);

    [propget, id(DISPID_ISVGCIRCLEELEMENT_CX)]
    HRESULT cx([out, retval] ISVGAnimatedLength **p);

    [propputref, id(DISPID_ISVGCIRCLEELEMENT_CY)]
    HRESULT cy([in] ISVGAnimatedLength *v);

    [propget, id(DISPID_ISVGCIRCLEELEMENT_CY)]
    HRESULT cy([out, retval] ISVGAnimatedLength **p);

    [propputref, id(DISPID_ISVGCIRCLEELEMENT_R)]
    HRESULT r([in] ISVGAnimatedLength *v);

    [propget, id(DISPID_ISVGCIRCLEELEMENT_R)]
    HRESULT r([out, retval] ISVGAnimatedLength **p);
}

[
    hidden,
    uuid(3059000a-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispSVGCircleElement
{
properties:
methods:
    [propputref, id(DISPID_ISVGCIRCLEELEMENT_CX)]
    void cx(ISVGAnimatedLength *v);

    [propget, id(DISPID_ISVGCIRCLEELEMENT_CX)]
    ISVGAnimatedLength *cx();

    [propputref, id(DISPID_ISVGCIRCLEELEMENT_CY)]
    void cy(ISVGAnimatedLength *v);

    [propget, id(DISPID_ISVGCIRCLEELEMENT_CY)]
    ISVGAnimatedLength *cy();

    [propputref, id(DISPID_ISVGCIRCLEELEMENT_R)]
    void r(ISVGAnimatedLength *v);

    [propget, id(DISPID_ISVGCIRCLEELEMENT_R)]
    ISVGAnimatedLength *r();

    WINE_ISVGTESTS_DISPINTERFACE_DECL;
    WINE_ISVGTRANSFORMABLE_DISPINTERFACE_DECL;
    WINE_ISVGLOCATABLE_DISPINTERFACE_DECL;
    WINE_ISVGELEMENT_DISPINTERFACE_DECL;
}

[
    noncreatable,
    uuid(30510578-98b5-11cf-bb82-00aa00bdce0b)
]
coclass SVGCircleElement
{
    [default]         dispinterface DispSVGCircleElement;
    [source, default] dispinterface HTMLElementEvents;
    [source]          dispinterface HTMLElementEvents2;
                      interface ISVGCircleElement;
                      interface ISVGTests;
                      interface ISVGTransformable;
                      interface ISVGLocatable;
                      interface ISVGElement;
}

/*****************************************************************************
 *    ISVGTextContentElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3051051a-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGTextContentElement : IDispatch
{
    [propputref, id(DISPID_ISVGTEXTCONTENTELEMENT_TEXTLENGTH)]
    HRESULT textLength([in] ISVGAnimatedLength *v);

    [propget, id(DISPID_ISVGTEXTCONTENTELEMENT_TEXTLENGTH)]
    HRESULT textLength([out, retval] ISVGAnimatedLength **p);

    [propputref, id(DISPID_ISVGTEXTCONTENTELEMENT_LENGTHADJUST)]
    HRESULT lengthAdjust([in] ISVGAnimatedEnumeration *v);

    [propget, id(DISPID_ISVGTEXTCONTENTELEMENT_LENGTHADJUST)]
    HRESULT lengthAdjust([out, retval] ISVGAnimatedEnumeration **p);

    [id(DISPID_ISVGTEXTCONTENTELEMENT_GETNUMBEROFCHARS)]
    HRESULT getNumberOfChars([out, retval] long *p);

    [id(DISPID_ISVGTEXTCONTENTELEMENT_GETCOMPUTEDTEXTLENGTH)]
    HRESULT getComputedTextLength([out, retval] float *p);

    [id(DISPID_ISVGTEXTCONTENTELEMENT_GETSUBSTRINGLENGTH)]
    HRESULT getSubStringLength(
        [in] long charnum,
        [in] long nchars,
        [out, retval] float *p);

    [id(DISPID_ISVGTEXTCONTENTELEMENT_GETSTARTPOSITIONOFCHAR)]
    HRESULT getStartPositionOfChar(
        [in] long charnum,
        [out, retval] ISVGPoint **p);

    [id(DISPID_ISVGTEXTCONTENTELEMENT_GETENDPOSITIONOFCHAR)]
    HRESULT getEndPositionOfChar(
        [in] long charnum,
        [out, retval] ISVGPoint **p);

    [id(DISPID_ISVGTEXTCONTENTELEMENT_GETEXTENTOFCHAR)]
    HRESULT getExtentOfChar(
        [in] long charnum,
        [out, retval] ISVGRect **p);

    [id(DISPID_ISVGTEXTCONTENTELEMENT_GETROTATIONOFCHAR)]
    HRESULT getRotationOfChar(
        [in] long charnum,
        [out, retval] float *p);

    [id(DISPID_ISVGTEXTCONTENTELEMENT_GETCHARNUMATPOSITION)]
    HRESULT getCharNumAtPosition(
        [in] ISVGPoint *point,
        [out, retval] long *p);

    [id(DISPID_ISVGTEXTCONTENTELEMENT_SELECTSUBSTRING)]
    HRESULT selectSubString(
        [in] long charnum,
        [in] long nchars);
}

#define WINE_ISVGTEXTCONTENTELEMENT_DISPINTERFACE_DECL              \
    [propputref, id(DISPID_ISVGTEXTCONTENTELEMENT_TEXTLENGTH)]      \
    void textLength(ISVGAnimatedLength *v);                         \
                                                                    \
    [propget, id(DISPID_ISVGTEXTCONTENTELEMENT_TEXTLENGTH)]         \
    ISVGAnimatedLength *textLength();                               \
                                                                    \
    [propputref, id(DISPID_ISVGTEXTCONTENTELEMENT_LENGTHADJUST)]    \
    void lengthAdjust(ISVGAnimatedEnumeration *v);                  \
                                                                    \
    [propget, id(DISPID_ISVGTEXTCONTENTELEMENT_LENGTHADJUST)]       \
    ISVGAnimatedEnumeration *lengthAdjust();                        \
                                                                    \
    [id(DISPID_ISVGTEXTCONTENTELEMENT_GETNUMBEROFCHARS)]            \
    long getNumberOfChars();                                        \
                                                                    \
    [id(DISPID_ISVGTEXTCONTENTELEMENT_GETCOMPUTEDTEXTLENGTH)]       \
    float getComputedTextLength();                                  \
                                                                    \
    [id(DISPID_ISVGTEXTCONTENTELEMENT_GETSUBSTRINGLENGTH)]          \
    float getSubStringLength(                                       \
        [in] long charnum,                                          \
        [in] long nchars);                                          \
                                                                    \
    [id(DISPID_ISVGTEXTCONTENTELEMENT_GETSTARTPOSITIONOFCHAR)]      \
    ISVGPoint *getStartPositionOfChar([in] long charnum);           \
                                                                    \
    [id(DISPID_ISVGTEXTCONTENTELEMENT_GETENDPOSITIONOFCHAR)]        \
    ISVGPoint *getEndPositionOfChar([in] long charnum);             \
                                                                    \
    [id(DISPID_ISVGTEXTCONTENTELEMENT_GETEXTENTOFCHAR)]             \
    ISVGRect *getExtentOfChar([in] long charnum);                   \
                                                                    \
    [id(DISPID_ISVGTEXTCONTENTELEMENT_GETROTATIONOFCHAR)]           \
    float getRotationOfChar([in] long charnum);                     \
                                                                    \
    [id(DISPID_ISVGTEXTCONTENTELEMENT_GETCHARNUMATPOSITION)]        \
    long getCharNumAtPosition([in] ISVGPoint *point);               \
                                                                    \
    [id(DISPID_ISVGTEXTCONTENTELEMENT_SELECTSUBSTRING)]             \
    void selectSubString(                                           \
        [in] long charnum,                                          \
        [in] long nchars)


/*****************************************************************************
 *    ISVGLengthList interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104d1-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGLengthList : IDispatch
{
    [propput, id(DISPID_ISVGLENGTHLIST_NUMBEROFITEMS)]
    HRESULT numberOfItems([in] long v);

    [propget, id(DISPID_ISVGLENGTHLIST_NUMBEROFITEMS)]
    HRESULT numberOfItems([out, retval] long *p);

    [id(DISPID_ISVGLENGTHLIST_CLEAR)]
    HRESULT clear();

    [id(DISPID_ISVGLENGTHLIST_INITIALIZE)]
    HRESULT initialize(
        [in] ISVGLength *newItem,
        [out, retval] ISVGLength **p);

    [id(DISPID_ISVGLENGTHLIST_GETITEM)]
    HRESULT getItem(
        [in] long index,
        [out, retval] ISVGLength **p);

    [id(DISPID_ISVGLENGTHLIST_INSERTITEMBEFORE)]
    HRESULT insertItemBefore(
        [in] ISVGLength *newItem,
        [in] long index,
        [out, retval] ISVGLength **p);

    [id(DISPID_ISVGLENGTHLIST_REPLACEITEM)]
    HRESULT replaceItem(
        [in] ISVGLength *newItem,
        [in] long index,
        [out, retval] ISVGLength **p);

    [id(DISPID_ISVGLENGTHLIST_REMOVEITEM)]
    HRESULT removeItem(
        [in] long index,
        [out, retval] ISVGLength **p);

    [id(DISPID_ISVGLENGTHLIST_APPENDITEM)]
    HRESULT appendItem(
        [in] ISVGLength *newItem,
        [out, retval] ISVGLength **p);
}

/*****************************************************************************
 *    ISVGAnimatedLengthList interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104d2-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGAnimatedLengthList : IDispatch
{
    [propputref, id(DISPID_ISVGANIMATEDLENGTHLIST_BASEVAL)]
    HRESULT baseVal([in] ISVGLengthList *v);

    [propget, id(DISPID_ISVGANIMATEDLENGTHLIST_BASEVAL)]
    HRESULT baseVal([out, retval] ISVGLengthList **p);

    [propputref, id(DISPID_ISVGANIMATEDLENGTHLIST_ANIMVAL)]
    HRESULT animVal([in] ISVGLengthList *v);

    [propget, id(DISPID_ISVGANIMATEDLENGTHLIST_ANIMVAL)]
    HRESULT animVal([out, retval] ISVGLengthList **p);
}

/*****************************************************************************
 *    ISVGNumberList interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104cd-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGNumberList : IDispatch
{
    [propput, id(DISPID_ISVGNUMBERLIST_NUMBEROFITEMS)]
    HRESULT numberOfItems([in] long v);

    [propget, id(DISPID_ISVGNUMBERLIST_NUMBEROFITEMS)]
    HRESULT numberOfItems([out, retval] long *p);

    [id(DISPID_ISVGNUMBERLIST_CLEAR)]
    HRESULT clear();

    [id(DISPID_ISVGNUMBERLIST_INITIALIZE)]
    HRESULT initialize(
        [in] ISVGNumber *newItem,
        [out, retval] ISVGNumber **p);

    [id(DISPID_ISVGNUMBERLIST_GETITEM)]
    HRESULT getItem(
        [in] long index,
        [out, retval] ISVGNumber **p);

    [id(DISPID_ISVGNUMBERLIST_INSERTITEMBEFORE)]
    HRESULT insertItemBefore(
        [in] ISVGNumber *newItem,
        [in] long index,
        [out, retval] ISVGNumber **p);

    [id(DISPID_ISVGNUMBERLIST_REPLACEITEM)]
    HRESULT replaceItem(
        [in] ISVGNumber *newItem,
        [in] long index,
        [out, retval] ISVGNumber **p);

    [id(DISPID_ISVGNUMBERLIST_REMOVEITEM)]
    HRESULT removeItem(
        [in] long index,
        [out, retval] ISVGNumber **p);

    [id(DISPID_ISVGNUMBERLIST_APPENDITEM)]
    HRESULT appendItem(
        [in] ISVGNumber *newItem,
        [out, retval] ISVGNumber **p);
}

/*****************************************************************************
 *    ISVGAnimatedNumberList interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104ce-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGAnimatedNumberList : IDispatch
{
    [propputref, id(DISPID_ISVGANIMATEDNUMBERLIST_BASEVAL)]
    HRESULT baseVal([in] ISVGNumberList *v);

    [propget, id(DISPID_ISVGANIMATEDNUMBERLIST_BASEVAL)]
    HRESULT baseVal([out, retval] ISVGNumberList **p);

    [propputref, id(DISPID_ISVGANIMATEDNUMBERLIST_ANIMVAL)]
    HRESULT animVal([in] ISVGNumberList *v);

    [propget, id(DISPID_ISVGANIMATEDNUMBERLIST_ANIMVAL)]
    HRESULT animVal([out, retval] ISVGNumberList **p);
}

/*****************************************************************************
 *    ISVGTextPositioningElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3051051b-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGTextPositioningElement : IDispatch
{
    [propputref, id(DISPID_ISVGTEXTPOSITIONINGELEMENT_X)]
    HRESULT x([in] ISVGAnimatedLengthList *v);

    [propget, id(DISPID_ISVGTEXTPOSITIONINGELEMENT_X)]
    HRESULT x([out, retval] ISVGAnimatedLengthList **p);

    [propputref, id(DISPID_ISVGTEXTPOSITIONINGELEMENT_Y)]
    HRESULT y([in] ISVGAnimatedLengthList *v);

    [propget, id(DISPID_ISVGTEXTPOSITIONINGELEMENT_Y)]
    HRESULT y([out, retval] ISVGAnimatedLengthList **p);

    [propputref, id(DISPID_ISVGTEXTPOSITIONINGELEMENT_DX)]
    HRESULT dx([in] ISVGAnimatedLengthList *v);

    [propget, id(DISPID_ISVGTEXTPOSITIONINGELEMENT_DX)]
    HRESULT dx([out, retval] ISVGAnimatedLengthList **p);

    [propputref, id(DISPID_ISVGTEXTPOSITIONINGELEMENT_DY)]
    HRESULT dy([in] ISVGAnimatedLengthList *v);

    [propget, id(DISPID_ISVGTEXTPOSITIONINGELEMENT_DY)]
    HRESULT dy([out, retval] ISVGAnimatedLengthList **p);

    [propputref, id(DISPID_ISVGTEXTPOSITIONINGELEMENT_ROTATE)]
    HRESULT rotate([in] ISVGAnimatedNumberList *v);

    [propget, id(DISPID_ISVGTEXTPOSITIONINGELEMENT_ROTATE)]
    HRESULT rotate([out, retval] ISVGAnimatedNumberList **p);
}

#define WINE_ISVGTEXTPOSITIONINGELEMENT_DISPINTERFACE_DECL      \
    [propputref, id(DISPID_ISVGTEXTPOSITIONINGELEMENT_X)]       \
    void x(ISVGAnimatedLengthList *v);                          \
                                                                \
    [propget, id(DISPID_ISVGTEXTPOSITIONINGELEMENT_X)]          \
    ISVGAnimatedLengthList *x();                                \
                                                                \
    [propputref, id(DISPID_ISVGTEXTPOSITIONINGELEMENT_Y)]       \
    void y(ISVGAnimatedLengthList *v);                          \
                                                                \
    [propget, id(DISPID_ISVGTEXTPOSITIONINGELEMENT_Y)]          \
    ISVGAnimatedLengthList *y();                                \
                                                                \
    [propputref, id(DISPID_ISVGTEXTPOSITIONINGELEMENT_DX)]      \
    void dx(ISVGAnimatedLengthList *v);                         \
                                                                \
    [propget, id(DISPID_ISVGTEXTPOSITIONINGELEMENT_DX)]         \
    ISVGAnimatedLengthList *dx();                               \
                                                                \
    [propputref, id(DISPID_ISVGTEXTPOSITIONINGELEMENT_DY)]      \
    void dy(ISVGAnimatedLengthList *v);                         \
                                                                \
    [propget, id(DISPID_ISVGTEXTPOSITIONINGELEMENT_DY)]         \
    ISVGAnimatedLengthList *dy();                               \
                                                                \
    [propputref, id(DISPID_ISVGTEXTPOSITIONINGELEMENT_ROTATE)]  \
    void rotate(ISVGAnimatedNumberList *v);                     \
                                                                \
    [propget, id(DISPID_ISVGTEXTPOSITIONINGELEMENT_ROTATE)]     \
    ISVGAnimatedNumberList *rotate()


/*****************************************************************************
 *    ISVGTSpanElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3051051d-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISVGTSpanElement : IDispatch
{
}

[
    hidden,
    uuid(3059003a-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispSVGTSpanElement
{
 properties:
methods:
    WINE_ISVGTEXTPOSITIONINGELEMENT_DISPINTERFACE_DECL;
    WINE_ISVGTEXTCONTENTELEMENT_DISPINTERFACE_DECL;
    WINE_ISVGELEMENT_DISPINTERFACE_DECL;
    WINE_ISVGTESTS_DISPINTERFACE_DECL;
    WINE_ISVGLANGSPACE_DISPINTERFACE_DECL;
    WINE_ISVGEXTERNALRESOURCESREQUIRED_DISPINTERFACE_DECL;
    WINE_ISVGSTYLABLE_DISPINTERFACE_DECL;
}

[
    noncreatable,
    uuid(305105e2-98b5-11cf-bb82-00aa00bdce0b)
]
coclass SVGTSpanElement
{
    [default]          dispinterface DispSVGTSpanElement;
    [source, default]  dispinterface HTMLElementEvents;
    [source]           dispinterface HTMLElementEvents2;
                       interface ISVGTSpanElement;
                       interface ISVGTextPositioningElement;
                       interface ISVGTextContentElement;
                       interface ISVGElement;
                       interface ISVGTests;
                       interface ISVGLangSpace;
                       interface ISVGExternalResourcesRequired;
                       interface ISVGStylable;
}

/*****************************************************************************
 *    IOmHistory interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(FECEAAA2-8405-11CF-8BA1-00AA00476DA6)
]
interface IOmHistory : IDispatch
{
    [propget, id(DISPID_IOMHISTORY_LENGTH)]
    HRESULT length([retval, out] short *p);

    [id(DISPID_IOMHISTORY_BACK)]
    HRESULT back([optional, in] VARIANT *pvargdistance);

    [id(DISPID_IOMHISTORY_FORWARD)]
    HRESULT forward([optional, in] VARIANT *pvargdistance);

    [id(DISPID_IOMHISTORY_GO)]
    HRESULT go([optional, in] VARIANT *pvargdistance);
}

[
    noncreatable,
    uuid(FECEAAA3-8405-11cf-8BA1-00AA00476DA6)
]
coclass HTMLHistory
{
    [default]           interface IOmHistory;
}

/*****************************************************************************
 *    IHTMLMimeTypesCollection interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050F3FC-98B5-11CF-BB82-00AA00BDCE0B)
]
interface IHTMLMimeTypesCollection : IDispatch
{
    [propget, id(DISPID_IHTMLMIMETYPESCOLLECTION_LENGTH)]
    HRESULT length([retval, out] LONG *p);
}

[
    noncreatable,
    uuid(3050f3fe-98b5-11cf-bb82-00aa00bdce0b)
]
coclass CMimeTypes
{
    [default]           interface IHTMLMimeTypesCollection;
}

/*****************************************************************************
 *    IHTMLPluginsCollection interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050F3FD-98B5-11CF-BB82-00AA00BDCE0B)
]
interface IHTMLPluginsCollection : IDispatch
{
    [propget, id(DISPID_IHTMLPLUGINSCOLLECTION_LENGTH)]
    HRESULT length([retval, out] LONG *p);

    [id(DISPID_IHTMLPLUGINSCOLLECTION_REFRESH)]
    HRESULT refresh([defaultvalue(0), in] VARIANT_BOOL reload);
}

[
    hidden,
    uuid(3050f54a-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispCPlugins
{
 properties:
methods:
    [propget, id(DISPID_IHTMLPLUGINSCOLLECTION_LENGTH)]
    long length();

    [id(DISPID_IHTMLPLUGINSCOLLECTION_REFRESH)]
    void refresh([defaultvalue(0), in] VARIANT_BOOL reload);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden]
    IDispatch *constructor();
}

[
    noncreatable,
    uuid(3050f3ff-98b5-11cf-bb82-00aa00bdce0b)
]
coclass CPlugins
{
    [default]  dispinterface DispCPlugins;
               interface IHTMLPluginsCollection;
               interface IHTMLDOMConstructor;
}

/*****************************************************************************
 *    IHTMLOpsProfile interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050F401-98B5-11CF-BB82-00AA00BDCE0B)
]
interface IHTMLOpsProfile : IDispatch
{
    [id(DISPID_IHTMLOPSPROFILE_ADDREQUEST)]
    HRESULT addRequest(
        [in] BSTR name,
        [optional, in] VARIANT reserved,
        [retval, out] VARIANT_BOOL *success);

    [id(DISPID_IHTMLOPSPROFILE_CLEARREQUEST)]
    HRESULT clearRequest();

    [id(DISPID_IHTMLOPSPROFILE_DOREQUEST)]
    HRESULT doRequest(
        [in] VARIANT usage,
        [optional, in] VARIANT fname,
        [optional, in] VARIANT domain,
        [optional, in] VARIANT path,
        [optional, in] VARIANT expire,
        [optional, in] VARIANT reserved);

    [id(DISPID_IHTMLOPSPROFILE_GETATTRIBUTE)]
    HRESULT getAttribute(
        [in] BSTR name,
        [retval, out] BSTR *value);

    [id(DISPID_IHTMLOPSPROFILE_SETATTRIBUTE)]
    HRESULT setAttribute(
        [in] BSTR name,
        [in] BSTR value,
        [optional, in] VARIANT prefs,
        [retval, out] VARIANT_BOOL *success);

    [id(DISPID_IHTMLOPSPROFILE_COMMITCHANGES)]
    HRESULT commitChanges([retval, out] VARIANT_BOOL *success);

    [id(DISPID_IHTMLOPSPROFILE_ADDREADREQUEST)]
    HRESULT addReadRequest(
        [in] BSTR name,
        [optional, in] VARIANT reserved,
        [retval, out] VARIANT_BOOL *success);

    [id(DISPID_IHTMLOPSPROFILE_DOREADREQUEST)]
    HRESULT doReadRequest(
        [in] VARIANT usage,
        [optional, in] VARIANT fname,
        [optional, in] VARIANT domain,
        [optional, in] VARIANT path,
        [optional, in] VARIANT expire,
        [optional, in] VARIANT reserved);

    [id(DISPID_IHTMLOPSPROFILE_DOWRITEREQUEST)]
    HRESULT doWriteRequest([retval, out] VARIANT_BOOL *success);
}

[
    noncreatable,
    uuid(3050f402-98b5-11cf-bb82-00aa00bdce0b)
]
coclass COpsProfile
{
    [default]           interface IHTMLOpsProfile;
}

/*****************************************************************************
 *    IOmNavigator interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(FECEAAA5-8405-11CF-8BA1-00AA00476DA6)
]
interface IOmNavigator : IDispatch
{
    [propget, id(DISPID_IOMNAVIGATOR_APPCODENAME)]
    HRESULT appCodeName([retval, out] BSTR *p);

    [propget, id(DISPID_IOMNAVIGATOR_APPNAME)]
    HRESULT appName([retval, out] BSTR *p);

    [propget, id(DISPID_IOMNAVIGATOR_APPVERSION)]
    HRESULT appVersion([retval, out] BSTR *p);

    [propget, id(DISPID_IOMNAVIGATOR_USERAGENT)]
    HRESULT userAgent([retval, out] BSTR *p);

    [id(DISPID_IOMNAVIGATOR_JAVAENABLED)]
    HRESULT javaEnabled([retval, out] VARIANT_BOOL *enabled);

    [id(DISPID_IOMNAVIGATOR_TAINTENABLED)]
    HRESULT taintEnabled([retval, out] VARIANT_BOOL *enabled);

    [propget, id(DISPID_IOMNAVIGATOR_MIMETYPES)]
    HRESULT mimeTypes([retval, out] IHTMLMimeTypesCollection **p);

    [propget, id(DISPID_IOMNAVIGATOR_PLUGINS)]
    HRESULT plugins([retval, out] IHTMLPluginsCollection **p);

    [propget, id(DISPID_IOMNAVIGATOR_COOKIEENABLED)]
    HRESULT cookieEnabled([retval, out] VARIANT_BOOL *p);

    [propget, id(DISPID_IOMNAVIGATOR_OPSPROFILE)]
    HRESULT opsProfile([retval, out] IHTMLOpsProfile **p);

    [id(DISPID_IOMNAVIGATOR_TOSTRING)]
    HRESULT toString([retval, out] BSTR *String);

    [propget, id(DISPID_IOMNAVIGATOR_CPUCLASS)]
    HRESULT cpuClass([retval, out] BSTR *p);

    [propget, id(DISPID_IOMNAVIGATOR_SYSTEMLANGUAGE)]
    HRESULT systemLanguage([retval, out] BSTR *p);

    [propget, id(DISPID_IOMNAVIGATOR_BROWSERLANGUAGE), hidden]
    HRESULT browserLanguage([retval, out] BSTR *p);

    [propget, id(DISPID_IOMNAVIGATOR_USERLANGUAGE)]
    HRESULT userLanguage([retval, out] BSTR *p);

    [propget, id(DISPID_IOMNAVIGATOR_PLATFORM)]
    HRESULT platform([retval, out] BSTR *p);

    [propget, id(DISPID_IOMNAVIGATOR_APPMINORVERSION)]
    HRESULT appMinorVersion([retval, out] BSTR *p);

    [propget, id(DISPID_IOMNAVIGATOR_CONNECTIONSPEED), hidden]
    HRESULT connectionSpeed([retval, out] LONG *p);

    [propget, id(DISPID_IOMNAVIGATOR_ONLINE)]
    HRESULT onLine([retval, out] VARIANT_BOOL *p);

    [propget, id(DISPID_IOMNAVIGATOR_USERPROFILE)]
    HRESULT userProfile([retval, out] IHTMLOpsProfile **p);
}

/*****************************************************************************
 *    DispHTMLNavigator dispinterface
 */
[
    hidden,
    uuid(3050f54c-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLNavigator
{
properties:
methods:
    [propget, id(DISPID_IOMNAVIGATOR_APPCODENAME)]
    BSTR appCodeName();

    [propget, id(DISPID_IOMNAVIGATOR_APPNAME)]
    BSTR appName();

    [propget, id(DISPID_IOMNAVIGATOR_APPVERSION)]
    BSTR appVersion();

    [propget, id(DISPID_IOMNAVIGATOR_USERAGENT)]
    BSTR userAgent();

    [id(DISPID_IOMNAVIGATOR_JAVAENABLED)]
    VARIANT_BOOL javaEnabled();

    [id(DISPID_IOMNAVIGATOR_TAINTENABLED)]
    VARIANT_BOOL taintEnabled();

    [propget, id(DISPID_IOMNAVIGATOR_MIMETYPES)]
    IHTMLMimeTypesCollection *mimeTypes();

    [propget, id(DISPID_IOMNAVIGATOR_PLUGINS)]
    IHTMLPluginsCollection *plugins();

    [propget, id(DISPID_IOMNAVIGATOR_COOKIEENABLED)]
    VARIANT_BOOL cookieEnabled();

    [propget, id(DISPID_IOMNAVIGATOR_OPSPROFILE)]
    IHTMLOpsProfile *opsProfile();

    [id(DISPID_IOMNAVIGATOR_TOSTRING)]
    BSTR toString();

    [propget, id(DISPID_IOMNAVIGATOR_CPUCLASS)]
    BSTR cpuClass();

    [propget, id(DISPID_IOMNAVIGATOR_SYSTEMLANGUAGE)]
    BSTR systemLanguage();

    [propget, id(DISPID_IOMNAVIGATOR_BROWSERLANGUAGE), hidden]
    BSTR browserLanguage();

    [propget, id(DISPID_IOMNAVIGATOR_USERLANGUAGE)]
    BSTR userLanguage();

    [propget, id(DISPID_IOMNAVIGATOR_PLATFORM)]
    BSTR platform();

    [propget, id(DISPID_IOMNAVIGATOR_APPMINORVERSION)]
    BSTR appMinorVersion();

    [propget, id(DISPID_IOMNAVIGATOR_CONNECTIONSPEED), hidden]
    LONG connectionSpeed();

    [propget, id(DISPID_IOMNAVIGATOR_ONLINE)]
    VARIANT_BOOL onLine();

    [propget, id(DISPID_IOMNAVIGATOR_USERPROFILE)]
    IHTMLOpsProfile *userProfile();

    WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL;
}

[
    noncreatable,
    uuid(FECEAAA6-8405-11cf-8BA1-00AA00476DA6)
]
coclass HTMLNavigator
{
    [default]  dispinterface DispHTMLNavigator;
               interface IOmNavigator;
}

/*****************************************************************************
 *    IHTMLLocation interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(163BB1E0-6E00-11cf-837A-48DC04C10000)
]
interface IHTMLLocation : IDispatch
{
    [propput, id(DISPID_IHTMLLOCATION_HREF)]
    HRESULT href([in] BSTR v);

    [propget, id(DISPID_IHTMLLOCATION_HREF)]
    HRESULT href([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLLOCATION_PROTOCOL)]
    HRESULT protocol([in] BSTR v);

    [propget, id(DISPID_IHTMLLOCATION_PROTOCOL)]
    HRESULT protocol([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLLOCATION_HOST)]
    HRESULT host([in] BSTR v);

    [propget, id(DISPID_IHTMLLOCATION_HOST)]
    HRESULT host([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLLOCATION_HOSTNAME)]
    HRESULT hostname([in] BSTR v);

    [propget, id(DISPID_IHTMLLOCATION_HOSTNAME)]
    HRESULT hostname([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLLOCATION_PORT)]
    HRESULT port([in] BSTR v);

    [propget, id(DISPID_IHTMLLOCATION_PORT)]
    HRESULT port([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLLOCATION_PATHNAME)]
    HRESULT pathname([in] BSTR v);

    [propget, id(DISPID_IHTMLLOCATION_PATHNAME)]
    HRESULT pathname([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLLOCATION_SEARCH)]
    HRESULT search([in] BSTR v);

    [propget, id(DISPID_IHTMLLOCATION_SEARCH)]
    HRESULT search([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLLOCATION_HASH)]
    HRESULT hash([in] BSTR v);

    [propget, id(DISPID_IHTMLLOCATION_HASH)]
    HRESULT hash([retval, out] BSTR *p);

    [id(DISPID_IHTMLLOCATION_RELOAD)]
    HRESULT reload([defaultvalue(0), in] VARIANT_BOOL flag);

    [id(DISPID_IHTMLLOCATION_REPLACE)]
    HRESULT replace([in] BSTR bstr);

    [id(DISPID_IHTMLLOCATION_ASSIGN)]
    HRESULT assign([in] BSTR bstr);

    [id(DISPID_IHTMLLOCATION_TOSTRING)]
    HRESULT toString([retval, out] BSTR *String);
}

/*****************************************************************************
 *    DispHTMLHistory dispinterface
 */
[
    hidden,
    uuid(3050f549-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLHistory
{
properties:
methods:
    [propget, id(DISPID_IOMHISTORY_LENGTH)]
    short length();

    [id(DISPID_IOMHISTORY_BACK)]
    void back([optional, in] VARIANT *pvargdistance);

    [id(DISPID_IOMHISTORY_FORWARD)]
    void forward([optional, in] VARIANT *pvargdistance);

    [id(DISPID_IOMHISTORY_GO)]
    void go([optional, in] VARIANT *pvargdistance);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden]
    IDispatch *constructor();
}

/*****************************************************************************
 *    DispHTMLLocation dispinterface
 */
[
    hidden,
    uuid(3050f54e-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLLocation
{
properties:
methods:
    [propput, id(DISPID_IHTMLLOCATION_HREF)]
    void href(BSTR v);

    [propget, id(DISPID_IHTMLLOCATION_HREF)]
    BSTR href();

    [propput, id(DISPID_IHTMLLOCATION_PROTOCOL)]
    void protocol(BSTR v);

    [propget, id(DISPID_IHTMLLOCATION_PROTOCOL)]
    BSTR protocol();

    [propput, id(DISPID_IHTMLLOCATION_HOST)]
    void host(BSTR v);

    [propget, id(DISPID_IHTMLLOCATION_HOST)]
    BSTR host();

    [propput, id(DISPID_IHTMLLOCATION_HOSTNAME)]
    void hostname(BSTR v);

    [propget, id(DISPID_IHTMLLOCATION_HOSTNAME)]
    BSTR hostname();

    [propput, id(DISPID_IHTMLLOCATION_PORT)]
    void port(BSTR v);

    [propget, id(DISPID_IHTMLLOCATION_PORT)]
    BSTR port();

    [propput, id(DISPID_IHTMLLOCATION_PATHNAME)]
    void pathname(BSTR v);

    [propget, id(DISPID_IHTMLLOCATION_PATHNAME)]
    BSTR pathname();

    [propput, id(DISPID_IHTMLLOCATION_SEARCH)]
    void search(BSTR v);

    [propget, id(DISPID_IHTMLLOCATION_SEARCH)]
    BSTR search();

    [propput, id(DISPID_IHTMLLOCATION_HASH)]
    void hash(BSTR v);

    [propget, id(DISPID_IHTMLLOCATION_HASH)]
    BSTR hash();

    [id(DISPID_IHTMLLOCATION_RELOAD)]
    void reload([in, defaultvalue(0)] VARIANT_BOOL flag);

    [id(DISPID_IHTMLLOCATION_REPLACE)]
    void replace([in] BSTR bstr);

    [id(DISPID_IHTMLLOCATION_ASSIGN)]
    void assign([in] BSTR bstr);

    [id(DISPID_IHTMLLOCATION_TOSTRING)]
    BSTR toString();

    WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL;
}

[
    noncreatable,
    uuid(163BB1E1-6E00-11cf-837A-48DC04C10000)
]
coclass HTMLLocation
{
    [default]  dispinterface DispHTMLLocation;
               interface IHTMLLocation;
}

[
    odl,
    oleautomation,
    dual,
    uuid(3050f4ce-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLBookmarkCollection : IDispatch
{
    [propget, id(DISPID_IHTMLBOOKMARKCOLLECTION_LENGTH), hidden]
    HRESULT length([out, retval] LONG *p);

    [propget, id(DISPID_IHTMLBOOKMARKCOLLECTION__NEWENUM), hidden, restricted]
    HRESULT _newEnum([out, retval] IUnknown **p);

    [id(DISPID_IHTMLBOOKMARKCOLLECTION_ITEM)]
    HRESULT item(
            [in] LONG index,
            [out, retval] VARIANT *pVarBookmark);
}

/*****************************************************************************
 *    IHTMLDataTransfer interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f4b3-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDataTransfer : IDispatch
{
    [id(DISPID_IHTMLDATATRANSFER_SETDATA)]
    HRESULT setData(
            [in] BSTR format,
            [in] VARIANT *data,
            [out, retval] VARIANT_BOOL *pret);

    [id(DISPID_IHTMLDATATRANSFER_GETDATA)]
    HRESULT getData(
            [in] BSTR format,
            [out, retval] VARIANT *pvarRet);

    [id(DISPID_IHTMLDATATRANSFER_CLEARDATA)]
    HRESULT clearData(
            [in] BSTR format,
            [out, retval] VARIANT_BOOL *pret);

    [propput, id(DISPID_IHTMLDATATRANSFER_DROPEFFECT)]
    HRESULT dropEffect([in] BSTR v);

    [propget, id(DISPID_IHTMLDATATRANSFER_DROPEFFECT)]
    HRESULT dropEffect([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLDATATRANSFER_EFFECTALLOWED)]
    HRESULT effectAllowed([in] BSTR v);

    [propget, id(DISPID_IHTMLDATATRANSFER_EFFECTALLOWED)]
    HRESULT effectAllowed([out, retval] BSTR *p);
}

/*****************************************************************************
 *    IHTMLEventObj interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050F32D-98B5-11CF-BB82-00AA00BDCE0B)
]
interface IHTMLEventObj : IDispatch
{
    [propget, id(DISPID_IHTMLEVENTOBJ_SRCELEMENT)]
    HRESULT srcElement([retval, out] IHTMLElement **p);

    [propget, id(DISPID_IHTMLEVENTOBJ_ALTKEY)]
    HRESULT altKey([retval, out] VARIANT_BOOL *p);

    [propget, id(DISPID_IHTMLEVENTOBJ_CTRLKEY)]
    HRESULT ctrlKey([retval, out] VARIANT_BOOL *p);

    [propget, id(DISPID_IHTMLEVENTOBJ_SHIFTKEY)]
    HRESULT shiftKey([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLEVENTOBJ_RETURNVALUE)]
    HRESULT returnValue([in] VARIANT v);

    [propget, id(DISPID_IHTMLEVENTOBJ_RETURNVALUE)]
    HRESULT returnValue([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLEVENTOBJ_CANCELBUBBLE)]
    HRESULT cancelBubble([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLEVENTOBJ_CANCELBUBBLE)]
    HRESULT cancelBubble([retval, out] VARIANT_BOOL *p);

    [propget, id(DISPID_IHTMLEVENTOBJ_FROMELEMENT)]
    HRESULT fromElement([retval, out] IHTMLElement **p);

    [propget, id(DISPID_IHTMLEVENTOBJ_TOELEMENT)]
    HRESULT toElement([retval, out] IHTMLElement **p);

    [propput, id(DISPID_IHTMLEVENTOBJ_KEYCODE)]
    HRESULT keyCode([in] LONG v);

    [propget, id(DISPID_IHTMLEVENTOBJ_KEYCODE)]
    HRESULT keyCode([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLEVENTOBJ_BUTTON)]
    HRESULT button([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLEVENTOBJ_TYPE)]
    HRESULT type([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLEVENTOBJ_QUALIFIER)]
    HRESULT qualifier([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLEVENTOBJ_REASON)]
    HRESULT reason([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLEVENTOBJ_X)]
    HRESULT x([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLEVENTOBJ_Y)]
    HRESULT y([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLEVENTOBJ_CLIENTX)]
    HRESULT clientX([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLEVENTOBJ_CLIENTY)]
    HRESULT clientY([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLEVENTOBJ_OFFSETX)]
    HRESULT offsetX([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLEVENTOBJ_OFFSETY)]
    HRESULT offsetY([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLEVENTOBJ_SCREENX)]
    HRESULT screenX([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLEVENTOBJ_SCREENY)]
    HRESULT screenY([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLEVENTOBJ_SRCFILTER)]
    HRESULT srcFilter([retval, out] IDispatch **p);
}

/*****************************************************************************
 *    IHTMLEventObj2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f48B-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLEventObj2 : IDispatch
{
    [id(DISPID_IHTMLEVENTOBJ2_SETATTRIBUTE)]
    HRESULT setAttribute(
            [in] BSTR strAttributeName,
            [in] VARIANT AttributeValue,
            [in, defaultvalue(1)] LONG lFlags);

    [id(DISPID_IHTMLEVENTOBJ2_GETATTRIBUTE)]
    HRESULT getAttribute(
            [in] BSTR strAttributeName,
            [in, defaultvalue(0)] LONG lFlags,
            [out, retval] VARIANT *AttributeValue);

    [id(DISPID_IHTMLEVENTOBJ2_REMOVEATTRIBUTE)]
    HRESULT removeAttribute(
            [in] BSTR strAttributeName,
            [in, defaultvalue(1)] LONG lFlags,
            [out, retval] VARIANT_BOOL *pfSuccess);

    [propput, id(DISPID_IHTMLEVENTOBJ2_PROPERTYNAME)]
    HRESULT propertyName([in] BSTR v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_PROPERTYNAME)]
    HRESULT propertyName([out, retval] BSTR *p);

    [propputref, id(DISPID_IHTMLEVENTOBJ2_BOOKMARKS)]
    HRESULT bookmarks([in] IHTMLBookmarkCollection *v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_BOOKMARKS)]
    HRESULT bookmarks([out, retval] IHTMLBookmarkCollection **p);

    [propputref, id(DISPID_IHTMLEVENTOBJ2_RECORDSET)]
    HRESULT recordset([in] IDispatch *v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_RECORDSET)]
    HRESULT recordset([out, retval] IDispatch **p);

    [propput, id(DISPID_IHTMLEVENTOBJ2_DATAFLD)]
    HRESULT dataFld([in] BSTR v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_DATAFLD)]
    HRESULT dataFld([out, retval] BSTR *p);

    [propputref, id(DISPID_IHTMLEVENTOBJ2_BOUNDELEMENTS)]
    HRESULT boundElements([in] IHTMLElementCollection *v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_BOUNDELEMENTS)]
    HRESULT boundElements([out, retval] IHTMLElementCollection **p);

    [propput, id(DISPID_IHTMLEVENTOBJ2_REPEAT)]
    HRESULT repeat([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_REPEAT)]
    HRESULT repeat([out, retval] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLEVENTOBJ2_SRCURN)]
    HRESULT srcUrn([in] BSTR v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_SRCURN)]
    HRESULT srcUrn([out, retval] BSTR *p);

    [propputref, id(DISPID_IHTMLEVENTOBJ2_SRCELEMENT)]
    HRESULT srcElement([in] IHTMLElement *v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_SRCELEMENT)]
    HRESULT srcElement([out, retval] IHTMLElement **p);

    [propput, id(DISPID_IHTMLEVENTOBJ2_ALTKEY)]
    HRESULT altKey([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_ALTKEY)]
    HRESULT altKey([out, retval] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLEVENTOBJ2_CTRLKEY)]
    HRESULT ctrlKey([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_CTRLKEY)]
    HRESULT ctrlKey([out, retval] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLEVENTOBJ2_SHIFTKEY)]
    HRESULT shiftKey([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_SHIFTKEY)]
    HRESULT shiftKey([out, retval] VARIANT_BOOL *p);

    [propputref, id(DISPID_IHTMLEVENTOBJ2_FROMELEMENT)]
    HRESULT fromElement([in] IHTMLElement *v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_FROMELEMENT)]
    HRESULT fromElement([out, retval] IHTMLElement **p);

    [propputref, id(DISPID_IHTMLEVENTOBJ2_TOELEMENT)]
    HRESULT toElement([in] IHTMLElement *v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_TOELEMENT)]
    HRESULT toElement([out, retval] IHTMLElement **p);

    [propput, id(DISPID_IHTMLEVENTOBJ2_BUTTON)]
    HRESULT button([in] long v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_BUTTON)]
    HRESULT button([out, retval] long *p);

    [propput, id(DISPID_IHTMLEVENTOBJ2_TYPE)]
    HRESULT type([in] BSTR v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_TYPE)]
    HRESULT type([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLEVENTOBJ2_QUALIFIER)]
    HRESULT qualifier([in] BSTR v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_QUALIFIER)]
    HRESULT qualifier([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLEVENTOBJ2_REASON)]
    HRESULT reason([in] long v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_REASON)]
    HRESULT reason([out, retval] long *p);

    [propput, id(DISPID_IHTMLEVENTOBJ2_X)]
    HRESULT x([in] long v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_X)]
    HRESULT x([out, retval] long *p);

    [propput, id(DISPID_IHTMLEVENTOBJ2_Y)]
    HRESULT y([in] long v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_Y)]
    HRESULT y([out, retval] long *p);

    [propput, id(DISPID_IHTMLEVENTOBJ2_CLIENTX)]
    HRESULT clientX([in] long v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_CLIENTX)]
    HRESULT clientX([out, retval] long *p);

    [propput, id(DISPID_IHTMLEVENTOBJ2_CLIENTY)]
    HRESULT clientY([in] long v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_CLIENTY)]
    HRESULT clientY([out, retval] long *p);

    [propput, id(DISPID_IHTMLEVENTOBJ2_OFFSETX)]
    HRESULT offsetX([in] long v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_OFFSETX)]
    HRESULT offsetX([out, retval] long *p);

    [propput, id(DISPID_IHTMLEVENTOBJ2_OFFSETY)]
    HRESULT offsetY([in] long v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_OFFSETY)]
    HRESULT offsetY([out, retval] long *p);

    [propput, id(DISPID_IHTMLEVENTOBJ2_SCREENX)]
    HRESULT screenX([in] long v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_SCREENX)]
    HRESULT screenX([out, retval] long *p);

    [propput, id(DISPID_IHTMLEVENTOBJ2_SCREENY)]
    HRESULT screenY([in] long v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_SCREENY)]
    HRESULT screenY([out, retval] long *p);

    [propputref, id(DISPID_IHTMLEVENTOBJ2_SRCFILTER)]
    HRESULT srcFilter([in] IDispatch *v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_SRCFILTER)]
    HRESULT srcFilter([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLEVENTOBJ2_DATATRANSFER)]
    HRESULT dataTransfer([out, retval] IHTMLDataTransfer **p);
}

/*****************************************************************************
 *    IHTMLEventObj3 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f680-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLEventObj3 : IDispatch
{
    [propget, id(DISPID_IHTMLEVENTOBJ3_CONTENTOVERFLOW)]
    HRESULT contentOverflow([out, retval] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLEVENTOBJ3_SHIFTLEFT)]
    HRESULT shiftLeft([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLEVENTOBJ3_SHIFTLEFT)]
    HRESULT shiftLeft([out, retval] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLEVENTOBJ3_ALTLEFT)]
    HRESULT altLeft([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLEVENTOBJ3_ALTLEFT)]
    HRESULT altLeft([out, retval] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLEVENTOBJ3_CTRLLEFT)]
    HRESULT ctrlLeft([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLEVENTOBJ3_CTRLLEFT)]
    HRESULT ctrlLeft([out, retval] VARIANT_BOOL *p);

    [propget, id(DISPID_IHTMLEVENTOBJ3_IMECOMPOSITIONCHANGE), hidden, restricted, nonbrowsable]
    HRESULT imeCompositionChange([out, retval] LONG_PTR *p);

    [propget, id(DISPID_IHTMLEVENTOBJ3_IMENOTIFYCOMMAND), hidden, restricted, nonbrowsable]
    HRESULT imeNotifyCommand([out, retval] LONG_PTR *p);

    [propget, id(DISPID_IHTMLEVENTOBJ3_IMENOTIFYDATA), hidden, restricted, nonbrowsable]
    HRESULT imeNotifyData([out, retval] LONG_PTR *p);

    [propget, id(DISPID_IHTMLEVENTOBJ3_IMEREQUEST), hidden, restricted, nonbrowsable]
    HRESULT imeRequest([out, retval] LONG_PTR *p);

    [propget, id(DISPID_IHTMLEVENTOBJ3_IMEREQUESTDATA), hidden, restricted, nonbrowsable]
    HRESULT imeRequestData([out, retval] LONG_PTR *p);

    [propget, id(DISPID_IHTMLEVENTOBJ3_KEYBOARDLAYOUT), hidden, restricted, nonbrowsable]
    HRESULT keyboardLayout([out, retval] LONG_PTR *p);

    [propget, id(DISPID_IHTMLEVENTOBJ3_BEHAVIORCOOKIE)]
    HRESULT behaviorCookie([out, retval] long *p);

    [propget, id(DISPID_IHTMLEVENTOBJ3_BEHAVIORPART)]
    HRESULT behaviorPart([out, retval] long *p);

    [propget, id(DISPID_IHTMLEVENTOBJ3_NEXTPAGE)]
    HRESULT nextPage([out, retval] BSTR *p);
}

/*****************************************************************************
 *    IHTMLEventObj4 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f814-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLEventObj4 : IDispatch
{
    [propget, id(DISPID_IHTMLEVENTOBJ4_WHEELDELTA)]
    HRESULT wheelDelta([out, retval] long *p);
}

/*****************************************************************************
 *    IHTMLEventObj5 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510478-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLEventObj5 : IDispatch
{
    [propput, id(DISPID_IHTMLEVENTOBJ5_URL)]
    HRESULT url([in] BSTR v);

    [propget, id(DISPID_IHTMLEVENTOBJ5_URL)]
    HRESULT url([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLEVENTOBJ5_DATA)]
    HRESULT data([in] BSTR v);

    [propget, id(DISPID_IHTMLEVENTOBJ5_DATA)]
    HRESULT data([out, retval] BSTR *p);

    [propget, id(DISPID_IHTMLEVENTOBJ5_SOURCE)]
    HRESULT source([out, retval] IDispatch **p);

    [propput, id(DISPID_IHTMLEVENTOBJ5_ORIGIN)]
    HRESULT origin([in] BSTR v);

    [propget, id(DISPID_IHTMLEVENTOBJ5_ORIGIN)]
    HRESULT origin([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLEVENTOBJ5_ISSESSION), hidden, restricted, nonbrowsable]
    HRESULT issession([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLEVENTOBJ5_ISSESSION), hidden, restricted, nonbrowsable]
    HRESULT issession([out, retval] VARIANT_BOOL *p);
}

/*****************************************************************************
 *    IHTMLEventObj6 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510734-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLEventObj6 : IDispatch
{
    [propget, id(DISPID_IHTMLEVENTOBJ6_ACTIONURL)]
    HRESULT actionURL([out, retval] BSTR *p);

    [propget, id(DISPID_IHTMLEVENTOBJ6_BUTTONID)]
    HRESULT buttonID([out, retval] long *p);
}

/*****************************************************************************
 *    DispCEventObj dispinterface
 */
[
    hidden,
    uuid(3050f558-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispCEventObj
{
properties:
methods:
    [propput, id(DISPID_IHTMLEVENTOBJ_RETURNVALUE)]
    void returnValue(VARIANT v);

    [propget, id(DISPID_IHTMLEVENTOBJ_RETURNVALUE)]
    VARIANT returnValue();

    [propput, id(DISPID_IHTMLEVENTOBJ_CANCELBUBBLE)]
    void cancelBubble(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLEVENTOBJ_CANCELBUBBLE)]
    VARIANT_BOOL cancelBubble();

    [propput, id(DISPID_IHTMLEVENTOBJ_KEYCODE)]
    void keyCode(LONG v);

    [propget, id(DISPID_IHTMLEVENTOBJ_KEYCODE)]
    LONG keyCode();

    [id(DISPID_IHTMLEVENTOBJ2_SETATTRIBUTE)]
    void setAttribute(
            [in] BSTR strAttributeName,
            [in] VARIANT AttributeValue,
            [in, defaultvalue(1)] LONG lFlags);

    [id(DISPID_IHTMLEVENTOBJ2_GETATTRIBUTE)]
    VARIANT getAttribute(
            [in] BSTR strAttributeName,
            [in, defaultvalue(0)] LONG lFlags);

    [id(DISPID_IHTMLEVENTOBJ2_REMOVEATTRIBUTE)]
    VARIANT_BOOL removeAttribute(
            [in] BSTR strAttributeName,
            [in, defaultvalue(1)] LONG lFlags);

    [propput, id(DISPID_IHTMLEVENTOBJ2_PROPERTYNAME)]
    void propertyName(BSTR v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_PROPERTYNAME)]
    BSTR propertyName();

    [propputref, id(DISPID_IHTMLEVENTOBJ2_BOOKMARKS)]
    void bookmarks(IHTMLBookmarkCollection *v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_BOOKMARKS)]
    IHTMLBookmarkCollection *bookmarks();

    [propputref, id(DISPID_IHTMLEVENTOBJ2_RECORDSET)]
    void recordset(IDispatch *v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_RECORDSET)]
    IDispatch *recordset();

    [propput, id(DISPID_IHTMLEVENTOBJ2_DATAFLD)]
    void dataFld(BSTR v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_DATAFLD)]
    BSTR dataFld();

    [propputref, id(DISPID_IHTMLEVENTOBJ2_BOUNDELEMENTS)]
    void boundElements(IHTMLElementCollection *v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_BOUNDELEMENTS)]
    IHTMLElementCollection *boundElements();

    [propput, id(DISPID_IHTMLEVENTOBJ2_REPEAT)]
    void repeat(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_REPEAT)]
    VARIANT_BOOL repeat();

    [propput, id(DISPID_IHTMLEVENTOBJ2_SRCURN)]
    void srcUrn(BSTR v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_SRCURN)]
    BSTR srcUrn();

    [propputref, id(DISPID_IHTMLEVENTOBJ2_SRCELEMENT)]
    void srcElement(IHTMLElement *v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_SRCELEMENT)]
    IHTMLElement *srcElement();

    [propput, id(DISPID_IHTMLEVENTOBJ2_ALTKEY)]
    void altKey(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_ALTKEY)]
    VARIANT_BOOL altKey();

    [propput, id(DISPID_IHTMLEVENTOBJ2_CTRLKEY)]
    void ctrlKey(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_CTRLKEY)]
    VARIANT_BOOL ctrlKey();

    [propput, id(DISPID_IHTMLEVENTOBJ2_SHIFTKEY)]
    void shiftKey(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_SHIFTKEY)]
    VARIANT_BOOL shiftKey();

    [propputref, id(DISPID_IHTMLEVENTOBJ2_FROMELEMENT)]
    void fromElement(IHTMLElement *v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_FROMELEMENT)]
    IHTMLElement *fromElement();

    [propputref, id(DISPID_IHTMLEVENTOBJ2_TOELEMENT)]
    void toElement(IHTMLElement *v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_TOELEMENT)]
    IHTMLElement *toElement();

    [propput, id(DISPID_IHTMLEVENTOBJ2_BUTTON)]
    void button(LONG v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_BUTTON)]
    LONG button();

    [propput, id(DISPID_IHTMLEVENTOBJ2_TYPE)]
    void type(BSTR v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_TYPE)]
    BSTR type();

    [propput, id(DISPID_IHTMLEVENTOBJ2_QUALIFIER)]
    void qualifier(BSTR v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_QUALIFIER)]
    BSTR qualifier();

    [propput, id(DISPID_IHTMLEVENTOBJ2_REASON)]
    void reason(LONG v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_REASON)]
    LONG reason();

    [propput, id(DISPID_IHTMLEVENTOBJ2_X)]
    void x(LONG v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_X)]
    LONG x();

    [propput, id(DISPID_IHTMLEVENTOBJ2_Y)]
    void y(LONG v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_Y)]
    LONG y();

    [propput, id(DISPID_IHTMLEVENTOBJ2_CLIENTX)]
    void clientX(LONG v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_CLIENTX)]
    LONG clientX();

    [propput, id(DISPID_IHTMLEVENTOBJ2_CLIENTY)]
    void clientY(LONG v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_CLIENTY)]
    LONG clientY();
    [propput, id(DISPID_IHTMLEVENTOBJ2_OFFSETX)]
    void offsetX(LONG v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_OFFSETX)]
    LONG offsetX();

    [propput, id(DISPID_IHTMLEVENTOBJ2_OFFSETY)]
    void offsetY(LONG v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_OFFSETY)]
    LONG offsetY();

    [propput, id(DISPID_IHTMLEVENTOBJ2_SCREENX)]
    void screenX(LONG v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_SCREENX)]
    LONG screenX();

    [propput, id(DISPID_IHTMLEVENTOBJ2_SCREENY)]
    void screenY(LONG v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_SCREENY)]
    LONG screenY();

    [propputref, id(DISPID_IHTMLEVENTOBJ2_SRCFILTER)]
    void srcFilter(IDispatch *v);

    [propget, id(DISPID_IHTMLEVENTOBJ2_SRCFILTER)]
    IDispatch *srcFilter();

    [propget, id(DISPID_IHTMLEVENTOBJ2_DATATRANSFER)]
    IHTMLDataTransfer *dataTransfer();

    [propget, id(DISPID_IHTMLEVENTOBJ3_CONTENTOVERFLOW)]
    VARIANT_BOOL contentOverflow();

    [propput, id(DISPID_IHTMLEVENTOBJ3_SHIFTLEFT)]
    void shiftLeft(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLEVENTOBJ3_SHIFTLEFT)]
    VARIANT_BOOL shiftLeft();

    [propput, id(DISPID_IHTMLEVENTOBJ3_ALTLEFT)]
    void altLeft(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLEVENTOBJ3_ALTLEFT)]
    VARIANT_BOOL altLeft();

    [propput, id(DISPID_IHTMLEVENTOBJ3_CTRLLEFT)]
    void ctrlLeft(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLEVENTOBJ3_CTRLLEFT)]
    VARIANT_BOOL ctrlLeft();

    [propget, id(DISPID_IHTMLEVENTOBJ3_IMECOMPOSITIONCHANGE), hidden, restricted, nonbrowsable]
    LONG_PTR imeCompositionChange();

    [propget, id(DISPID_IHTMLEVENTOBJ3_IMENOTIFYCOMMAND), hidden, restricted, nonbrowsable]
    LONG_PTR imeNotifyCommand();

    [propget, id(DISPID_IHTMLEVENTOBJ3_IMENOTIFYDATA), hidden, restricted, nonbrowsable]
    LONG_PTR imeNotifyData();

    [propget, id(DISPID_IHTMLEVENTOBJ3_IMEREQUEST), hidden, restricted, nonbrowsable]
    LONG_PTR imeRequest();

    [propget, id(DISPID_IHTMLEVENTOBJ3_IMEREQUESTDATA), hidden, restricted, nonbrowsable]
    LONG_PTR imeRequestData();

    [propget, id(DISPID_IHTMLEVENTOBJ3_KEYBOARDLAYOUT), hidden, restricted, nonbrowsable]
    LONG_PTR keyboardLayout();

    [propget, id(DISPID_IHTMLEVENTOBJ3_BEHAVIORCOOKIE)]
    LONG behaviorCookie();

    [propget, id(DISPID_IHTMLEVENTOBJ3_BEHAVIORPART)]
    LONG behaviorPart();

    [propget, id(DISPID_IHTMLEVENTOBJ3_NEXTPAGE)]
    BSTR nextPage();

    [propget, id(DISPID_IHTMLEVENTOBJ4_WHEELDELTA)]
    LONG wheelDelta();

    [propput, id(DISPID_IHTMLEVENTOBJ5_URL)]
    void url(BSTR v);

    [propget, id(DISPID_IHTMLEVENTOBJ5_URL)]
    BSTR url();

    [propput, id(DISPID_IHTMLEVENTOBJ5_DATA)]
    void data(BSTR v);

    [propget, id(DISPID_IHTMLEVENTOBJ5_DATA)]
    BSTR data();

    [propget, id(DISPID_IHTMLEVENTOBJ5_SOURCE)]
    IDispatch *source();

    [propput, id(DISPID_IHTMLEVENTOBJ5_ORIGIN)]
    void origin(BSTR v);

    [propget, id(DISPID_IHTMLEVENTOBJ5_ORIGIN)]
    BSTR origin();

    [propput, id(DISPID_IHTMLEVENTOBJ5_ISSESSION), hidden, restricted, nonbrowsable]
    void issession(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLEVENTOBJ5_ISSESSION), hidden, restricted, nonbrowsable]
    VARIANT_BOOL issession();

    [propget, id(DISPID_IHTMLEVENTOBJ6_ACTIONURL)]
    BSTR actionURL();

    [propget, id(DISPID_IHTMLEVENTOBJ6_BUTTONID)]
    long buttonID();

    [propget, id(DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden]
    IDispatch *constructor();
}

/*****************************************************************************
 *    IHTMLStyleMedia interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3051074b-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLStyleMedia : IDispatch
{
    [propget, id(DISPID_IHTMLSTYLEMEDIA_TYPE)]
    HRESULT type([out, retval] BSTR *p);

    [id(DISPID_IHTMLSTYLEMEDIA_MATCHMEDIUM)]
    HRESULT matchMedium(
            [in] BSTR mediaQuery,
            [out, retval] VARIANT_BOOL *matches);
}

/*****************************************************************************
 *    IHTMLFramesCollection2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(332C4426-26CB-11D0-B483-00C04FD90119)
]
interface IHTMLFramesCollection2 : IDispatch
{
    [id(DISPID_IHTMLFRAMESCOLLECTION2_ITEM)]
    HRESULT item(
        [in] VARIANT *pvarIndex,
        [retval, out] VARIANT *pvarResult);

    [propget, id(DISPID_IHTMLFRAMESCOLLECTION2_LENGTH)]
    HRESULT length([retval, out] LONG *p);
}

interface IHTMLDocument2;

/*****************************************************************************
 *    IHTMLScreen interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f35C-98B5-11CF-BB82-00AA00BDCE0B)
]
interface IHTMLScreen : IDispatch
{
    [propget, id(DISPID_IHTMLSCREEN_COLORDEPTH)]
    HRESULT colorDepth([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLSCREEN_BUFFERDEPTH)]
    HRESULT bufferDepth([in] LONG v);

    [propget, id(DISPID_IHTMLSCREEN_BUFFERDEPTH)]
    HRESULT bufferDepth([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLSCREEN_WIDTH)]
    HRESULT width([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLSCREEN_HEIGHT)]
    HRESULT height([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLSCREEN_UPDATEINTERVAL)]
    HRESULT updateInterval([in] LONG v);

    [propget, id(DISPID_IHTMLSCREEN_UPDATEINTERVAL)]
    HRESULT updateInterval([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLSCREEN_AVAILHEIGHT)]
    HRESULT availHeight([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLSCREEN_AVAILWIDTH)]
    HRESULT availWidth([retval, out] LONG *p);

    [propget, id(DISPID_IHTMLSCREEN_FONTSMOOTHINGENABLED)]
    HRESULT fontSmoothingEnabled([retval, out] VARIANT_BOOL *p);
}

/*****************************************************************************
 *    IHTMLWindow2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(332C4427-26CB-11D0-B483-00C04FD90119)
]
interface IHTMLWindow2 : IHTMLFramesCollection2
{
    [propget, id(DISPID_IHTMLWINDOW2_FRAMES)]
    HRESULT frames([retval, out] IHTMLFramesCollection2 **p);

    [propput, id(DISPID_IHTMLWINDOW2_DEFAULTSTATUS)]
    HRESULT defaultStatus([in] BSTR v);

    [propget, id(DISPID_IHTMLWINDOW2_DEFAULTSTATUS)]
    HRESULT defaultStatus([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLWINDOW2_STATUS)]
    HRESULT status([in] BSTR v);

    [propget, id(DISPID_IHTMLWINDOW2_STATUS)]
    HRESULT status([retval, out] BSTR *p);

    [id(DISPID_IHTMLWINDOW2_SETTIMEOUT)]
    HRESULT setTimeout(
        [in] BSTR expression,
        [in] LONG msec,
        [optional, in] VARIANT *language,
        [retval, out] LONG *timerID);

    [id(DISPID_IHTMLWINDOW2_CLEARTIMEOUT)]
    HRESULT clearTimeout([in] LONG timerID);

    [id(DISPID_IHTMLWINDOW2_ALERT)]
    HRESULT alert([defaultvalue(""), in] BSTR message);

    [id(DISPID_IHTMLWINDOW2_CONFIRM)]
    HRESULT confirm(
        [defaultvalue(""), in] BSTR message,
        [retval, out] VARIANT_BOOL *confirmed);

    [id(DISPID_IHTMLWINDOW2_PROMPT)]
    HRESULT prompt(
        [defaultvalue(""), in] BSTR message,
        [defaultvalue("undefined"), in] BSTR defstr,
        [retval, out] VARIANT *textdata);

    [propget, id(DISPID_IHTMLWINDOW2_IMAGE)]
    HRESULT Image([retval, out] IHTMLImageElementFactory **p);

    [propget, id(DISPID_IHTMLWINDOW2_LOCATION)]
    HRESULT location([retval, out] IHTMLLocation **p);

    [propget, id(DISPID_IHTMLWINDOW2_HISTORY)]
    HRESULT history([retval, out] IOmHistory **p);

    [id(DISPID_IHTMLWINDOW2_CLOSE)]
    HRESULT close();

    [propput, id(DISPID_IHTMLWINDOW2_OPENER)]
    HRESULT opener([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_OPENER)]
    HRESULT opener([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLWINDOW2_NAVIGATOR)]
    HRESULT navigator([retval, out] IOmNavigator **p);

    [propput, id(DISPID_IHTMLWINDOW2_NAME)]
    HRESULT name([in] BSTR v);

    [propget, id(DISPID_IHTMLWINDOW2_NAME)]
    HRESULT name([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLWINDOW2_PARENT)]
    HRESULT parent([retval, out] IHTMLWindow2 **p);

    [id(DISPID_IHTMLWINDOW2_OPEN)]
    HRESULT open(
        [defaultvalue(""), in] BSTR url,
        [defaultvalue(""), in] BSTR name,
        [defaultvalue(""), in] BSTR features,
        [defaultvalue(0), in] VARIANT_BOOL replace,
        [retval, out] IHTMLWindow2 **pomWindowResult);

    [propget, id(DISPID_IHTMLWINDOW2_SELF)]
    HRESULT self([retval, out] IHTMLWindow2 **p);

    [propget, id(DISPID_IHTMLWINDOW2_TOP)]
    HRESULT top([retval, out] IHTMLWindow2 **p);

    [propget, id(DISPID_IHTMLWINDOW2_WINDOW)]
    HRESULT window([retval, out] IHTMLWindow2 **p);

    [id(DISPID_IHTMLWINDOW2_NAVIGATE)]
    HRESULT navigate([in] BSTR url);

    [propput, id(DISPID_IHTMLWINDOW2_ONFOCUS)]
    HRESULT onfocus([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONFOCUS)]
    HRESULT onfocus([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW2_ONBLUR)]
    HRESULT onblur([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONBLUR)]
    HRESULT onblur([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW2_ONLOAD)]
    HRESULT onload([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONLOAD)]
    HRESULT onload([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD)]
    HRESULT onbeforeunload([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD)]
    HRESULT onbeforeunload([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW2_ONUNLOAD)]
    HRESULT onunload([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONUNLOAD)]
    HRESULT onunload([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW2_ONHELP)]
    HRESULT onhelp([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONHELP)]
    HRESULT onhelp([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW2_ONERROR)]
    HRESULT onerror([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONERROR)]
    HRESULT onerror([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW2_ONRESIZE)]
    HRESULT onresize([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONRESIZE)]
    HRESULT onresize([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW2_ONSCROLL)]
    HRESULT onscroll([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONSCROLL)]
    HRESULT onscroll([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLWINDOW2_DOCUMENT)]
    HRESULT document([retval, out] IHTMLDocument2 **p);

    [propget, id(DISPID_IHTMLWINDOW2_EVENT)]
    HRESULT event([retval, out] IHTMLEventObj **p);

    [propget, id(DISPID_IHTMLWINDOW2__NEWENUM)]
    HRESULT _newEnum([retval, out] IUnknown **p);

    [id(DISPID_IHTMLWINDOW2_SHOWMODALDIALOG)]
    HRESULT showModalDialog(
        [in] BSTR dialog,
        [optional, in] VARIANT *varArgIn,
        [optional, in] VARIANT *varOptions,
        [retval, out] VARIANT *varArgOut);

    [id(DISPID_IHTMLWINDOW2_SHOWHELP)]
    HRESULT showHelp(
        [in] BSTR helpURL,
        [optional, in] VARIANT helpArg,
        [defaultvalue(""), in] BSTR features);

    [propget, id(DISPID_IHTMLWINDOW2_SCREEN)]
    HRESULT screen([retval, out] IHTMLScreen **p);

    [propget, id(DISPID_IHTMLWINDOW2_OPTION)]
    HRESULT Option([retval, out] IHTMLOptionElementFactory **p);

    [id(DISPID_IHTMLWINDOW2_FOCUS)]
    HRESULT focus();

    [propget, id(DISPID_IHTMLWINDOW2_CLOSED)]
    HRESULT closed([retval, out] VARIANT_BOOL *p);

    [id(DISPID_IHTMLWINDOW2_BLUR)]
    HRESULT blur();

    [id(DISPID_IHTMLWINDOW2_SCROLL)]
    HRESULT scroll([in] LONG x, [in] LONG y);

    [propget, id(DISPID_IHTMLWINDOW2_CLIENTINFORMATION)]
    HRESULT clientInformation([retval, out] IOmNavigator **p);

    [id(DISPID_IHTMLWINDOW2_SETINTERVAL)]
    HRESULT setInterval([
        in] BSTR expression,
        [in] LONG msec,
        [optional, in] VARIANT *language,
        [retval, out] LONG *timerID);

    [id(DISPID_IHTMLWINDOW2_CLEARINTERVAL)]
    HRESULT clearInterval([in] LONG timerID);

    [propput, id(DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)]
    HRESULT offscreenBuffering([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)]
    HRESULT offscreenBuffering([retval, out] VARIANT *p);

    [id(DISPID_IHTMLWINDOW2_EXECSCRIPT)]
    HRESULT execScript(
        [in] BSTR scode,
        [defaultvalue("JScript"), in] BSTR language,
        [retval, out] VARIANT *pvarRet);

    [id(DISPID_IHTMLWINDOW2_TOSTRING)]
    HRESULT toString([retval, out] BSTR *String);

    [id(DISPID_IHTMLWINDOW2_SCROLLBY)]
    HRESULT scrollBy([in] LONG x, [in] LONG y);

    [id(DISPID_IHTMLWINDOW2_SCROLLTO)]
    HRESULT scrollTo([in] LONG x, [in] LONG y);

    [id(DISPID_IHTMLWINDOW2_MOVETO)]
    HRESULT moveTo([in] LONG x, [in] LONG y);

    [id(DISPID_IHTMLWINDOW2_MOVEBY)]
    HRESULT moveBy([in] LONG x, [in] LONG y);

    [id(DISPID_IHTMLWINDOW2_RESIZETO)]
    HRESULT resizeTo([in] LONG x, [in] LONG y);

    [id(DISPID_IHTMLWINDOW2_RESIZEBY)]
    HRESULT resizeBy([in] LONG x, [in] LONG y);

    [propget, id(DISPID_IHTMLWINDOW2_EXTERNAL)]
    HRESULT external([retval, out] IDispatch **p);
}

/*****************************************************************************
 *    IHTMLWindow3 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f4ae-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLWindow3 : IDispatch
{
    [propget, id(DISPID_IHTMLWINDOW3_SCREENLEFT)]
    HRESULT screenLeft([out, retval] LONG *p);

    [propget, id(DISPID_IHTMLWINDOW3_SCREENTOP)]
    HRESULT screenTop([out, retval] LONG *p);

    [id(DISPID_IHTMLWINDOW3_ATTACHEVENT)]
    HRESULT attachEvent(
            [in] BSTR event,
            [in] IDispatch *pDisp,
            [out, retval] VARIANT_BOOL *pfResult);

    [id(DISPID_IHTMLWINDOW3_DETACHEVENT)]
    HRESULT detachEvent(
            [in] BSTR event,
            [in] IDispatch *pDisp);

    [id(DISPID_IHTMLWINDOW3_SETTIMEOUT)]
    HRESULT setTimeout(
            [in] VARIANT *expression,
            [in] LONG msec,
            [in, optional] VARIANT *language,
            [out, retval] LONG *timerID);

    [id(DISPID_IHTMLWINDOW3_SETINTERVAL)]
    HRESULT setInterval(
            [in] VARIANT *expression,
            [in] LONG msec,
            [in, optional] VARIANT *language,
            [out, retval] LONG *timerID);

    [id(DISPID_IHTMLWINDOW3_PRINT)]
    HRESULT print();

    [propput, id(DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable]
    HRESULT onbeforeprint([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable]
    HRESULT onbeforeprint([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable]
    HRESULT onafterprint([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable]
    HRESULT onafterprint([out, retval] VARIANT *p);

    [propget, id(DISPID_IHTMLWINDOW3_CLIPBOARDDATA)]
    HRESULT clipboardData([out, retval] IHTMLDataTransfer **p);

    [id(DISPID_IHTMLWINDOW3_SHOWMODELESSDIALOG)]
    HRESULT showModelessDialog(
            [in, defaultvalue("")] BSTR url,
            [in, optional] VARIANT *varArgIn,
            [in, optional] VARIANT *options,
            [out, retval] IHTMLWindow2 **pDialog);
}

/*****************************************************************************
 *    IHTMLWindow4 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f6cf-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLWindow4 : IDispatch
{
    [id(DISPID_IHTMLWINDOW4_CREATEPOPUP)]
    HRESULT createPopup([optional, in] VARIANT* varArgIn,
                        [retval, out] IDispatch** ppPopup);

    [propget, id(DISPID_IHTMLWINDOW4_FRAMEELEMENT)]
    HRESULT frameElement([retval, out] IHTMLFrameBase* * p);
}

/*****************************************************************************
 *    IHTMLWindow5 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3051040e-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLWindow5 : IDispatch
{
    [propput, id(DISPID_IHTMLWINDOW5_XMLHTTPREQUEST)]
    HRESULT XMLHttpRequest([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW5_XMLHTTPREQUEST)]
    HRESULT XMLHttpRequest([retval, out] VARIANT * p);
}

/*****************************************************************************
 *    IHTMLWindow6 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510453-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLWindow6 : IDispatch
{
    [propput, id(DISPID_IHTMLWINDOW6_XDOMAINREQUEST)]
    HRESULT XDomainRequest([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW6_XDOMAINREQUEST)]
    HRESULT XDomainRequest([out, retval] VARIANT *p);

    [propget, id(DISPID_IHTMLWINDOW6_SESSIONSTORAGE)]
    HRESULT sessionStorage([out, retval] IHTMLStorage **p);

    [propget, id(DISPID_IHTMLWINDOW6_LOCALSTORAGE)]
    HRESULT localStorage([out, retval] IHTMLStorage **p);

    [propput, id(DISPID_IHTMLWINDOW6_ONHASHCHANGE), displaybind, bindable]
    HRESULT onhashchange([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW6_ONHASHCHANGE), displaybind, bindable]
    HRESULT onhashchange([out, retval] VARIANT *p);

    [propget, id(DISPID_IHTMLWINDOW6_MAXCONNECTIONSPERSERVER)]
    HRESULT maxConnectionsPerServer([out, retval] long *p);

    [id(DISPID_IHTMLWINDOW6_POSTMESSAGE)]
    HRESULT postMessage(
            [in] BSTR msg,
            [in, optional] VARIANT targetOrigin);

    [id(DISPID_IHTMLWINDOW6_TOSTATICHTML)]
    HRESULT toStaticHTML(
            [in] BSTR bstrHTML,
            [out, retval] BSTR *pbstrStaticHTML);

    [propput, id(DISPID_IHTMLWINDOW6_ONMESSAGE), displaybind, bindable]
    HRESULT onmessage([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW6_ONMESSAGE), displaybind, bindable]
    HRESULT onmessage([out, retval] VARIANT *p);

    [id(DISPID_IHTMLWINDOW6_MSWRITEPROFILERMARK)]
    HRESULT msWriteProfilerMark([in] BSTR bstrProfilerMarkName);
}

/*****************************************************************************
 *    IHTMLWindow7 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104b7-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLWindow7 : IDispatch
{
    [id(DISPID_IHTMLWINDOW7_GETSELECTION)]
    HRESULT getSelection([out, retval] IHTMLSelection **ppIHTMLSelection);

    [id(DISPID_IHTMLWINDOW7_GETCOMPUTEDSTYLE)]
    HRESULT getComputedStyle(
            [in] IHTMLDOMNode* varArgIn,
            [in, defaultvalue("")] BSTR bstrPseudoElt,
            [out, retval] IHTMLCSSStyleDeclaration **ppComputedStyle);

    [propget, id(DISPID_IHTMLWINDOW7_STYLEMEDIA)]
    HRESULT styleMedia([out, retval] IHTMLStyleMedia **p);

    [propput, id(DISPID_IHTMLWINDOW7_PERFORMANCE)]
    HRESULT performance([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_PERFORMANCE)]
    HRESULT performance([out, retval] VARIANT *p);

    [propget, id(DISPID_IHTMLWINDOW7_INNERWIDTH)]
    HRESULT innerWidth([out, retval] long *p);

    [propget, id(DISPID_IHTMLWINDOW7_INNERHEIGHT)]
    HRESULT innerHeight([out, retval] long *p);

    [propget, id(DISPID_IHTMLWINDOW7_PAGEXOFFSET)]
    HRESULT pageXOffset([out, retval] long *p);

    [propget, id(DISPID_IHTMLWINDOW7_PAGEYOFFSET)]
    HRESULT pageYOffset([out, retval] long *p);

    [propget, id(DISPID_IHTMLWINDOW7_SCREENX)]
    HRESULT screenX([out, retval] long *p);

    [propget, id(DISPID_IHTMLWINDOW7_SCREENY)]
    HRESULT screenY([out, retval] long *p);

    [propget, id(DISPID_IHTMLWINDOW7_OUTERWIDTH)]
    HRESULT outerWidth([out, retval] long *p);

    [propget, id(DISPID_IHTMLWINDOW7_OUTERHEIGHT)]
    HRESULT outerHeight([out, retval] long *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONABORT), displaybind, bindable]
    HRESULT onabort([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONABORT), displaybind, bindable]
    HRESULT onabort([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONCANPLAY), displaybind, bindable]
    HRESULT oncanplay([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONCANPLAY), displaybind, bindable]
    HRESULT oncanplay([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONCANPLAYTHROUGH), displaybind, bindable]
    HRESULT oncanplaythrough([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONCANPLAYTHROUGH), displaybind, bindable]
    HRESULT oncanplaythrough([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONCHANGE), displaybind, bindable]
    HRESULT onchange([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONCHANGE), displaybind, bindable]
    HRESULT onchange([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONCLICK), displaybind, bindable]
    HRESULT onclick([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONCLICK), displaybind, bindable]
    HRESULT onclick([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONCONTEXTMENU), displaybind, bindable]
    HRESULT oncontextmenu([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONCONTEXTMENU), displaybind, bindable]
    HRESULT oncontextmenu([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONDBLCLICK), displaybind, bindable]
    HRESULT ondblclick([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDBLCLICK), displaybind, bindable]
    HRESULT ondblclick([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONDRAG), displaybind, bindable]
    HRESULT ondrag([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDRAG), displaybind, bindable]
    HRESULT ondrag([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONDRAGEND), displaybind, bindable]
    HRESULT ondragend([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDRAGEND), displaybind, bindable]
    HRESULT ondragend([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONDRAGENTER), displaybind, bindable]
    HRESULT ondragenter([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDRAGENTER), displaybind, bindable]
    HRESULT ondragenter([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONDRAGLEAVE), displaybind, bindable]
    HRESULT ondragleave([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDRAGLEAVE), displaybind, bindable]
    HRESULT ondragleave([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONDRAGOVER), displaybind, bindable]
    HRESULT ondragover([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDRAGOVER), displaybind, bindable]
    HRESULT ondragover([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONDRAGSTART), displaybind, bindable]
    HRESULT ondragstart([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDRAGSTART), displaybind, bindable]
    HRESULT ondragstart([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONDROP), displaybind, bindable]
    HRESULT ondrop([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDROP), displaybind, bindable]
    HRESULT ondrop([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONDURATIONCHANGE), displaybind, bindable]
    HRESULT ondurationchange([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDURATIONCHANGE), displaybind, bindable]
    HRESULT ondurationchange([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONFOCUSIN), displaybind, bindable]
    HRESULT onfocusin([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONFOCUSIN), displaybind, bindable]
    HRESULT onfocusin([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONFOCUSOUT), displaybind, bindable]
    HRESULT onfocusout([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONFOCUSOUT), displaybind, bindable]
    HRESULT onfocusout([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONINPUT), displaybind, bindable]
    HRESULT oninput([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONINPUT), displaybind, bindable]
    HRESULT oninput([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONEMPTIED), displaybind, bindable]
    HRESULT onemptied([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONEMPTIED), displaybind, bindable]
    HRESULT onemptied([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONENDED), displaybind, bindable]
    HRESULT onended([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONENDED), displaybind, bindable]
    HRESULT onended([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONKEYDOWN), displaybind, bindable]
    HRESULT onkeydown([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONKEYDOWN), displaybind, bindable]
    HRESULT onkeydown([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONKEYPRESS), displaybind, bindable]
    HRESULT onkeypress([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONKEYPRESS), displaybind, bindable]
    HRESULT onkeypress([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONKEYUP), displaybind, bindable]
    HRESULT onkeyup([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONKEYUP), displaybind, bindable]
    HRESULT onkeyup([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONLOADEDDATA), displaybind, bindable]
    HRESULT onloadeddata([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONLOADEDDATA), displaybind, bindable]
    HRESULT onloadeddata([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONLOADEDMETADATA), displaybind, bindable]
    HRESULT onloadedmetadata([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONLOADEDMETADATA), displaybind, bindable]
    HRESULT onloadedmetadata([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONLOADSTART), displaybind, bindable]
    HRESULT onloadstart([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONLOADSTART), displaybind, bindable]
    HRESULT onloadstart([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSEDOWN), displaybind, bindable]
    HRESULT onmousedown([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSEDOWN), displaybind, bindable]
    HRESULT onmousedown([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSEENTER), displaybind, bindable]
    HRESULT onmouseenter([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSEENTER), displaybind, bindable]
    HRESULT onmouseenter([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSELEAVE), displaybind, bindable]
    HRESULT onmouseleave([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSELEAVE), displaybind, bindable]
    HRESULT onmouseleave([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSEMOVE), displaybind, bindable]
    HRESULT onmousemove([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSEMOVE), displaybind, bindable]
    HRESULT onmousemove([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSEOUT), displaybind, bindable]
    HRESULT onmouseout([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSEOUT), displaybind, bindable]
    HRESULT onmouseout([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSEOVER), displaybind, bindable]
    HRESULT onmouseover([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSEOVER), displaybind, bindable]
    HRESULT onmouseover([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSEUP), displaybind, bindable]
    HRESULT onmouseup([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSEUP), displaybind, bindable]
    HRESULT onmouseup([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSEWHEEL), displaybind, bindable]
    HRESULT onmousewheel([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSEWHEEL), displaybind, bindable]
    HRESULT onmousewheel([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONOFFLINE), displaybind, bindable]
    HRESULT onoffline([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONOFFLINE), displaybind, bindable]
    HRESULT onoffline([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONONLINE), displaybind, bindable]
    HRESULT ononline([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONONLINE), displaybind, bindable]
    HRESULT ononline([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONPROGRESS), displaybind, bindable]
    HRESULT onprogress([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONPROGRESS), displaybind, bindable]
    HRESULT onprogress([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONRATECHANGE), displaybind, bindable]
    HRESULT onratechange([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONRATECHANGE), displaybind, bindable]
    HRESULT onratechange([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONREADYSTATECHANGE), displaybind, bindable]
    HRESULT onreadystatechange([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONREADYSTATECHANGE), displaybind, bindable]
    HRESULT onreadystatechange([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONRESET), displaybind, bindable]
    HRESULT onreset([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONRESET), displaybind, bindable]
    HRESULT onreset([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONSEEKED), displaybind, bindable]
    HRESULT onseeked([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONSEEKED), displaybind, bindable]
    HRESULT onseeked([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONSEEKING), displaybind, bindable]
    HRESULT onseeking([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONSEEKING), displaybind, bindable]
    HRESULT onseeking([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONSELECT), displaybind, bindable]
    HRESULT onselect([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONSELECT), displaybind, bindable]
    HRESULT onselect([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONSTALLED), displaybind, bindable]
    HRESULT onstalled([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONSTALLED), displaybind, bindable]
    HRESULT onstalled([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONSTORAGE), displaybind, bindable]
    HRESULT onstorage([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONSTORAGE), displaybind, bindable]
    HRESULT onstorage([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONSUBMIT), displaybind, bindable]
    HRESULT onsubmit([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONSUBMIT), displaybind, bindable]
    HRESULT onsubmit([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONSUSPEND), displaybind, bindable]
    HRESULT onsuspend([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONSUSPEND), displaybind, bindable]
    HRESULT onsuspend([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONTIMEUPDATE), displaybind, bindable]
    HRESULT ontimeupdate([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONTIMEUPDATE), displaybind, bindable]
    HRESULT ontimeupdate([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONPAUSE), displaybind, bindable]
    HRESULT onpause([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONPAUSE), displaybind, bindable]
    HRESULT onpause([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONPLAY), displaybind, bindable]
    HRESULT onplay([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONPLAY), displaybind, bindable]
    HRESULT onplay([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONPLAYING), displaybind, bindable]
    HRESULT onplaying([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONPLAYING), displaybind, bindable]
    HRESULT onplaying([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONVOLUMECHANGE), displaybind, bindable]
    HRESULT onvolumechange([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONVOLUMECHANGE), displaybind, bindable]
    HRESULT onvolumechange([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLWINDOW7_ONWAITING), displaybind, bindable]
    HRESULT onwaiting([in] VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONWAITING), displaybind, bindable]
    HRESULT onwaiting([out, retval] VARIANT *p);
}

/*****************************************************************************
 *    DispHTMLScreen dispinterface
 */
[
    hidden,
    uuid(3050f591-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLScreen
{
properties:
methods:
    [propget, id(DISPID_IHTMLSCREEN_COLORDEPTH)]
    long colorDepth();

    [propput, id(DISPID_IHTMLSCREEN_BUFFERDEPTH)]
    void bufferDepth(long v);

    [propget, id(DISPID_IHTMLSCREEN_BUFFERDEPTH)]
    long bufferDepth();

    [propget, id(DISPID_IHTMLSCREEN_WIDTH)]
    long width();

    [propget, id(DISPID_IHTMLSCREEN_HEIGHT)]
    long height();

    [propput, id(DISPID_IHTMLSCREEN_UPDATEINTERVAL)]
    void updateInterval(long v);

    [propget, id(DISPID_IHTMLSCREEN_UPDATEINTERVAL)]
    long updateInterval();

    [propget, id(DISPID_IHTMLSCREEN_AVAILHEIGHT)]
    long availHeight();

    [propget, id(DISPID_IHTMLSCREEN_AVAILWIDTH)]
    long availWidth();

    [propget, id(DISPID_IHTMLSCREEN_FONTSMOOTHINGENABLED)]
    VARIANT_BOOL fontSmoothingEnabled();

    [propget, id(DISPID_IHTMLSCREEN2_LOGICALXDPI)]
    long logicalXDPI();

    [propget, id(DISPID_IHTMLSCREEN2_LOGICALYDPI)]
    long logicalYDPI();

    [propget, id(DISPID_IHTMLSCREEN2_DEVICEXDPI)]
    long deviceXDPI();

    [propget, id(DISPID_IHTMLSCREEN2_DEVICEYDPI)]
    long deviceYDPI();

    [propget, id(DISPID_IHTMLSCREEN3_SYSTEMXDPI)]
    long systemXDPI();

    [propget, id(DISPID_IHTMLSCREEN3_SYSTEMYDPI)]
    long systemYDPI();

    [propget, id(DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden]
    IDispatch *constructor();
}

/*****************************************************************************
 *    DispHTMLWindow2 dispinterface
 */
[
    hidden,
    uuid(3050f55d-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLWindow2
{
properties:
methods:
    [id(DISPID_IHTMLFRAMESCOLLECTION2_ITEM)]
    VARIANT item([in] VARIANT *pvarIndex);

    [propget, id(DISPID_IHTMLFRAMESCOLLECTION2_LENGTH)]
    LONG length();

    [propget, id(DISPID_IHTMLWINDOW2_FRAMES)]
    IHTMLFramesCollection2 *frames();

    [propput, id(DISPID_IHTMLWINDOW2_DEFAULTSTATUS)]
    void defaultStatus(BSTR v);

    [propget, id(DISPID_IHTMLWINDOW2_DEFAULTSTATUS)]
    BSTR defaultStatus();

    [propput, id(DISPID_IHTMLWINDOW2_STATUS)]
    void status(BSTR v);

    [propget, id(DISPID_IHTMLWINDOW2_STATUS)]
    BSTR status();

    [id(DISPID_IHTMLWINDOW2_CLEARTIMEOUT)]
    void clearTimeout([in] LONG timerID);

    [id(DISPID_IHTMLWINDOW2_ALERT)]
    void alert([in, defaultvalue("")] BSTR message);

    [id(DISPID_IHTMLWINDOW2_CONFIRM)]
    VARIANT_BOOL confirm([in, defaultvalue("")] BSTR message);

    [id(DISPID_IHTMLWINDOW2_PROMPT)]
    VARIANT prompt(
            [in, defaultvalue("")] BSTR message,
            [in, defaultvalue("undefined")] BSTR defstr);

    [propget, id(DISPID_IHTMLWINDOW2_IMAGE)]
    IHTMLImageElementFactory *Image();

    [propget, id(DISPID_IHTMLWINDOW2_LOCATION)]
    IHTMLLocation *location();

    [propget, id(DISPID_IHTMLWINDOW2_HISTORY)]
    IOmHistory *history();

    [id(DISPID_IHTMLWINDOW2_CLOSE)]
    void close();

    [propput, id(DISPID_IHTMLWINDOW2_OPENER)]
    void opener(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_OPENER)]
    VARIANT opener();

    [propget, id(DISPID_IHTMLWINDOW2_NAVIGATOR)]
    IOmNavigator *navigator();

    [propput, id(DISPID_IHTMLWINDOW2_NAME)]
    void name(BSTR v);

    [propget, id(DISPID_IHTMLWINDOW2_NAME)]
    BSTR name();

    [propget, id(DISPID_IHTMLWINDOW2_PARENT)]
    IHTMLWindow2 *parent();

    [id(DISPID_IHTMLWINDOW2_OPEN)]
    IHTMLWindow2 *open(
            [in, defaultvalue("")] BSTR url,
            [in, defaultvalue("")] BSTR name,
            [in, defaultvalue("")] BSTR features,
            [in, defaultvalue(0)]  VARIANT_BOOL replace);

    [propget, id(DISPID_IHTMLWINDOW2_SELF)]
    IHTMLWindow2 *self();

    [propget, id(DISPID_IHTMLWINDOW2_TOP)]
    IHTMLWindow2 *top();

    [propget, id(DISPID_IHTMLWINDOW2_WINDOW)]
    IHTMLWindow2 *window();

    [id(DISPID_IHTMLWINDOW2_NAVIGATE)]
    void navigate([in] BSTR url);

    [propput, id(DISPID_IHTMLWINDOW2_ONFOCUS), displaybind, bindable]
    void onfocus(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONFOCUS), displaybind, bindable]
    VARIANT onfocus();

    [propput, id(DISPID_IHTMLWINDOW2_ONBLUR), displaybind, bindable]
    void onblur(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONBLUR), displaybind, bindable]
    VARIANT onblur();

    [propget, id(DISPID_IHTMLWINDOW2_ONLOAD), displaybind, bindable]
    VARIANT onload();

    [propput, id(DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD), displaybind, bindable]
    void onbeforeunload(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD), displaybind, bindable]
    VARIANT onbeforeunload();

    [propput, id(DISPID_IHTMLWINDOW2_ONUNLOAD), displaybind, bindable]
    void onunload(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONUNLOAD), displaybind, bindable]
    VARIANT onunload();

    [propput, id(DISPID_IHTMLWINDOW2_ONHELP), displaybind, bindable]
    void onhelp(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONHELP), displaybind, bindable]
    VARIANT onhelp();

    [propput, id(DISPID_IHTMLWINDOW2_ONERROR), displaybind, bindable]
    void onerror(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONERROR), displaybind, bindable]
    VARIANT onerror();

    [propput, id(DISPID_IHTMLWINDOW2_ONRESIZE), displaybind, bindable]
    void onresize(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONRESIZE), displaybind, bindable]
    VARIANT onresize();

    [propput, id(DISPID_IHTMLWINDOW2_ONSCROLL), displaybind, bindable]
    void onscroll(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONSCROLL), displaybind, bindable]
    VARIANT onscroll();

    [propget, id(DISPID_IHTMLWINDOW2_DOCUMENT), source]
    IHTMLDocument2 *document();

    [propget, id(DISPID_IHTMLWINDOW2_EVENT)]
    IHTMLEventObj *event();

    [propget, id(DISPID_IHTMLWINDOW2__NEWENUM), hidden, restricted]
    IUnknown *_newEnum();

    [id(DISPID_IHTMLWINDOW2_SHOWMODALDIALOG)]
    VARIANT showModalDialog(
            [in] BSTR dialog,
            [in, optional] VARIANT *varArgIn,
            [in, optional] VARIANT *varOptions);

    [id(DISPID_IHTMLWINDOW2_SHOWHELP)]
    void showHelp(
            [in] BSTR helpURL,
            [in, optional] VARIANT helpArg,
            [in, defaultvalue("")] BSTR features);

    [propget, id(DISPID_IHTMLWINDOW2_SCREEN)]
    IHTMLScreen *screen();

    [propget, id(DISPID_IHTMLWINDOW2_OPTION)]
    IHTMLOptionElementFactory *Option();

    [id(DISPID_IHTMLWINDOW2_FOCUS)]
    void focus();

    [propget, id(DISPID_IHTMLWINDOW2_CLOSED)]
    VARIANT_BOOL closed();

    [id(DISPID_IHTMLWINDOW2_BLUR)]
    void blur();

    [id(DISPID_IHTMLWINDOW2_SCROLL)]
    void scroll([in] LONG x, [in] LONG y);

    [propget, id(DISPID_IHTMLWINDOW2_CLIENTINFORMATION)]
    IOmNavigator *clientInformation();

    [id(DISPID_IHTMLWINDOW2_CLEARINTERVAL)]
    void clearInterval([in] LONG timerID);

    [propput, id(DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)]
    void offscreenBuffering(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)]
    VARIANT offscreenBuffering();

    [id(DISPID_IHTMLWINDOW2_EXECSCRIPT)]
    VARIANT execScript(
            [in] BSTR _code,
            [in, defaultvalue("JScript")] BSTR language);

    [id(DISPID_IHTMLWINDOW2_TOSTRING)]
    BSTR toString();

    [id(DISPID_IHTMLWINDOW2_SCROLLBY)]
    void scrollBy([in] LONG x, [in] LONG y);

    [id(DISPID_IHTMLWINDOW2_SCROLLTO)]
    void scrollTo([in] LONG x, [in] LONG y);

    [id(DISPID_IHTMLWINDOW2_MOVETO)]
    void moveTo([in] LONG x, [in] LONG y);

    [id(DISPID_IHTMLWINDOW2_MOVEBY)]
    void moveBy([in] LONG x, [in] LONG y);

    [id(DISPID_IHTMLWINDOW2_RESIZETO)]
    void resizeTo([in] LONG x, [in] LONG y);

    [id(DISPID_IHTMLWINDOW2_RESIZEBY)]
    void resizeBy([in] LONG x, [in] LONG y);

    [propget, id(DISPID_IHTMLWINDOW2_EXTERNAL)]
    IDispatch *external();

    [propget, id(DISPID_IHTMLWINDOW3_SCREENLEFT)]
    LONG screenLeft();

    [propget, id(DISPID_IHTMLWINDOW3_SCREENTOP)]
    LONG screenTop();

    [id(DISPID_IHTMLWINDOW3_ATTACHEVENT)]
    VARIANT_BOOL attachEvent(
             [in] BSTR event,
             [in] IDispatch *pDisp);

    [id(DISPID_IHTMLWINDOW3_DETACHEVENT)]
    void detachEvent(
            [in] BSTR event,
            [in] IDispatch *pDisp);

    [id(DISPID_IHTMLWINDOW3_SETTIMEOUT)]
    LONG setTimeout(
            [in] VARIANT *expression,
            [in] LONG msec,
            [in, optional] VARIANT *language);

    [id(DISPID_IHTMLWINDOW3_SETINTERVAL)]
    LONG setInterval(
            [in] VARIANT *expression,
            [in] LONG msec,
            [in, optional] VARIANT *language);

    [id(DISPID_IHTMLWINDOW3_PRINT)]
    void print();

    [propput, id(DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable]
    void onbeforeprint(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable]
    VARIANT onbeforeprint();

    [propput, id(DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable]
    void onafterprint(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable]
    VARIANT onafterprint();

    [propget, id(DISPID_IHTMLWINDOW3_CLIPBOARDDATA)]
    IHTMLDataTransfer *clipboardData();

    [id(DISPID_IHTMLWINDOW3_SHOWMODELESSDIALOG)]
    IHTMLWindow2 *showModelessDialog(
            [in, defaultvalue("")] BSTR url,
            [in, optional] VARIANT *varArgIn,
            [in, optional] VARIANT *options);

    [id(DISPID_IHTMLWINDOW4_CREATEPOPUP)]
    IDispatch *createPopup([in, optional] VARIANT *varArgIn);

    [propget, id(DISPID_IHTMLWINDOW4_FRAMEELEMENT)]
    IHTMLFrameBase *frameElement();

    [propget, id(DISPID_IHTMLWINDOW6_SESSIONSTORAGE)]
    IHTMLStorage *sessionStorage();

    [propget, id(DISPID_IHTMLWINDOW6_LOCALSTORAGE)]
    IHTMLStorage *localStorage();

    [propput, id(DISPID_IHTMLWINDOW6_ONHASHCHANGE), displaybind, bindable]
    void onhashchange(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW6_ONHASHCHANGE), displaybind, bindable]
    VARIANT onhashchange();

    [propget, id(DISPID_IHTMLWINDOW6_MAXCONNECTIONSPERSERVER)]
    long maxConnectionsPerServer();

    [id(DISPID_IHTMLWINDOW6_POSTMESSAGE)]
    void postMessage(
            [in] BSTR msg,
            [in, optional] VARIANT targetOrigin);

    [id(DISPID_IHTMLWINDOW6_TOSTATICHTML)]
    BSTR toStaticHTML([in] BSTR bstrHTML);

    [propput, id(DISPID_IHTMLWINDOW6_ONMESSAGE), displaybind, bindable]
    void onmessage(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW6_ONMESSAGE), displaybind, bindable]
    VARIANT onmessage();

    [id(DISPID_IHTMLWINDOW6_MSWRITEPROFILERMARK)]
    void msWriteProfilerMark([in] BSTR bstrProfilerMarkName);

    [id(DISPID_IHTMLWINDOW7_GETSELECTION)]
    IHTMLSelection *getSelection();

    [id(DISPID_IHTMLWINDOW7_GETCOMPUTEDSTYLE)]
    IHTMLCSSStyleDeclaration *getComputedStyle(
            [in] IHTMLDOMNode *varArgIn,
            [in, defaultvalue("")] BSTR bstrPseudoElt);

    [propget, id(DISPID_IHTMLWINDOW7_STYLEMEDIA)]
    IHTMLStyleMedia *styleMedia();

    [propput, id(DISPID_IHTMLWINDOW7_PERFORMANCE)]
    void performance(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_PERFORMANCE)]
    VARIANT performance();

    [propget, id(DISPID_IHTMLWINDOW7_INNERWIDTH)]
    long innerWidth();

    [propget, id(DISPID_IHTMLWINDOW7_INNERHEIGHT)]
    long innerHeight();

    [propget, id(DISPID_IHTMLWINDOW7_PAGEXOFFSET)]
    long pageXOffset();

    [propget, id(DISPID_IHTMLWINDOW7_PAGEYOFFSET)]
    long pageYOffset();

    [propget, id(DISPID_IHTMLWINDOW7_SCREENX)]
    long screenX();

    [propget, id(DISPID_IHTMLWINDOW7_SCREENY)]
    long screenY();

    [propget, id(DISPID_IHTMLWINDOW7_OUTERWIDTH)]
    long outerWidth();

    [propget, id(DISPID_IHTMLWINDOW7_OUTERHEIGHT)]
    long outerHeight();

    [propput, id(DISPID_IHTMLWINDOW7_ONABORT), displaybind, bindable]
    void onabort(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONABORT), displaybind, bindable]
    VARIANT onabort();

    [propput, id(DISPID_IHTMLWINDOW7_ONCANPLAY), displaybind, bindable]
    void oncanplay(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONCANPLAY), displaybind, bindable]
    VARIANT oncanplay();

    [propput, id(DISPID_IHTMLWINDOW7_ONCANPLAYTHROUGH), displaybind, bindable]
    void oncanplaythrough(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONCANPLAYTHROUGH), displaybind, bindable]
    VARIANT oncanplaythrough();

    [propput, id(DISPID_IHTMLWINDOW7_ONCHANGE), displaybind, bindable]
    void onchange(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONCHANGE), displaybind, bindable]
    VARIANT onchange();

    [propput, id(DISPID_IHTMLWINDOW7_ONCLICK), displaybind, bindable]
    void onclick(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONCLICK), displaybind, bindable]
    VARIANT onclick();

    [propput, id(DISPID_IHTMLWINDOW7_ONCONTEXTMENU), displaybind, bindable]
    void oncontextmenu(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONCONTEXTMENU), displaybind, bindable]
    VARIANT oncontextmenu();

    [propput, id(DISPID_IHTMLWINDOW7_ONDBLCLICK), displaybind, bindable]
    void ondblclick(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDBLCLICK), displaybind, bindable]
    VARIANT ondblclick();

    [propput, id(DISPID_IHTMLWINDOW7_ONDRAG), displaybind, bindable]
    void ondrag(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDRAG), displaybind, bindable]
    VARIANT ondrag();

    [propput, id(DISPID_IHTMLWINDOW7_ONDRAGEND), displaybind, bindable]
    void ondragend(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDRAGEND), displaybind, bindable]
    VARIANT ondragend();

    [propput, id(DISPID_IHTMLWINDOW7_ONDRAGENTER), displaybind, bindable]
    void ondragenter(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDRAGENTER), displaybind, bindable]
    VARIANT ondragenter();

    [propput, id(DISPID_IHTMLWINDOW7_ONDRAGLEAVE), displaybind, bindable]
    void ondragleave(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDRAGLEAVE), displaybind, bindable]
    VARIANT ondragleave();

    [propput, id(DISPID_IHTMLWINDOW7_ONDRAGOVER), displaybind, bindable]
    void ondragover(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDRAGOVER), displaybind, bindable]
    VARIANT ondragover();

    [propput, id(DISPID_IHTMLWINDOW7_ONDRAGSTART), displaybind, bindable]
    void ondragstart(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDRAGSTART), displaybind, bindable]
    VARIANT ondragstart();

    [propput, id(DISPID_IHTMLWINDOW7_ONDROP), displaybind, bindable]
    void ondrop(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDROP), displaybind, bindable]
    VARIANT ondrop();

    [propput, id(DISPID_IHTMLWINDOW7_ONDURATIONCHANGE), displaybind, bindable]
    void ondurationchange(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDURATIONCHANGE), displaybind, bindable]
    VARIANT ondurationchange();

    [propput, id(DISPID_IHTMLWINDOW7_ONFOCUSIN), displaybind, bindable]
    void onfocusin(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONFOCUSIN), displaybind, bindable]
    VARIANT onfocusin();

    [propput, id(DISPID_IHTMLWINDOW7_ONFOCUSOUT), displaybind, bindable]
    void onfocusout(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONFOCUSOUT), displaybind, bindable]
    VARIANT onfocusout();

    [propput, id(DISPID_IHTMLWINDOW7_ONINPUT), displaybind, bindable]
    void oninput(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONINPUT), displaybind, bindable]
    VARIANT oninput();

    [propput, id(DISPID_IHTMLWINDOW7_ONEMPTIED), displaybind, bindable]
    void onemptied(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONEMPTIED), displaybind, bindable]
    VARIANT onemptied();

    [propput, id(DISPID_IHTMLWINDOW7_ONENDED), displaybind, bindable]
    void onended(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONENDED), displaybind, bindable]
    VARIANT onended();

    [propput, id(DISPID_IHTMLWINDOW7_ONKEYDOWN), displaybind, bindable]
    void onkeydown(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONKEYDOWN), displaybind, bindable]
    VARIANT onkeydown();

    [propput, id(DISPID_IHTMLWINDOW7_ONKEYPRESS), displaybind, bindable]
    void onkeypress(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONKEYPRESS), displaybind, bindable]
    VARIANT onkeypress();

    [propput, id(DISPID_IHTMLWINDOW7_ONKEYUP), displaybind, bindable]
    void onkeyup(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONKEYUP), displaybind, bindable]
    VARIANT onkeyup();

    [propput, id(DISPID_IHTMLWINDOW7_ONLOADEDDATA), displaybind, bindable]
    void onloadeddata(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONLOADEDDATA), displaybind, bindable]
    VARIANT onloadeddata();

    [propput, id(DISPID_IHTMLWINDOW7_ONLOADEDMETADATA), displaybind, bindable]
    void onloadedmetadata(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONLOADEDMETADATA), displaybind, bindable]
    VARIANT onloadedmetadata();

    [propput, id(DISPID_IHTMLWINDOW7_ONLOADSTART), displaybind, bindable]
    void onloadstart(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONLOADSTART), displaybind, bindable]
    VARIANT onloadstart();

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSEDOWN), displaybind, bindable]
    void onmousedown(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSEDOWN), displaybind, bindable]
    VARIANT onmousedown();

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSEENTER), displaybind, bindable]
    void onmouseenter(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSEENTER), displaybind, bindable]
    VARIANT onmouseenter();

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSELEAVE), displaybind, bindable]
    void onmouseleave(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSELEAVE), displaybind, bindable]
    VARIANT onmouseleave();

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSEMOVE), displaybind, bindable]
    void onmousemove(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSEMOVE), displaybind, bindable]
    VARIANT onmousemove();

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSEOUT), displaybind, bindable]
    void onmouseout(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSEOUT), displaybind, bindable]
    VARIANT onmouseout();

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSEOVER), displaybind, bindable]
    void onmouseover(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSEOVER), displaybind, bindable]
    VARIANT onmouseover();

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSEUP), displaybind, bindable]
    void onmouseup(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSEUP), displaybind, bindable]
    VARIANT onmouseup();

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSEWHEEL), displaybind, bindable]
    void onmousewheel(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSEWHEEL), displaybind, bindable]
    VARIANT onmousewheel();

    [propput, id(DISPID_IHTMLWINDOW7_ONOFFLINE), displaybind, bindable]
    void onoffline(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONOFFLINE), displaybind, bindable]
    VARIANT onoffline();

    [propput, id(DISPID_IHTMLWINDOW7_ONONLINE), displaybind, bindable]
    void ononline(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONONLINE), displaybind, bindable]
    VARIANT ononline();

    [propput, id(DISPID_IHTMLWINDOW7_ONPROGRESS), displaybind, bindable]
    void onprogress(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONPROGRESS), displaybind, bindable]
    VARIANT onprogress();

    [propput, id(DISPID_IHTMLWINDOW7_ONRATECHANGE), displaybind, bindable]
    void onratechange(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONRATECHANGE), displaybind, bindable]
    VARIANT onratechange();

    [propput, id(DISPID_IHTMLWINDOW7_ONREADYSTATECHANGE), displaybind, bindable]
    void onreadystatechange(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONREADYSTATECHANGE), displaybind, bindable]
    VARIANT onreadystatechange();

    [propput, id(DISPID_IHTMLWINDOW7_ONRESET), displaybind, bindable]
    void onreset(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONRESET), displaybind, bindable]
    VARIANT onreset();

    [propput, id(DISPID_IHTMLWINDOW7_ONSEEKED), displaybind, bindable]
    void onseeked(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONSEEKED), displaybind, bindable]
    VARIANT onseeked();

    [propput, id(DISPID_IHTMLWINDOW7_ONSEEKING), displaybind, bindable]
    void onseeking(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONSEEKING), displaybind, bindable]
    VARIANT onseeking();

    [propput, id(DISPID_IHTMLWINDOW7_ONSELECT), displaybind, bindable]
    void onselect(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONSELECT), displaybind, bindable]
    VARIANT onselect();

    [propput, id(DISPID_IHTMLWINDOW7_ONSTALLED), displaybind, bindable]
    void onstalled(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONSTALLED), displaybind, bindable]
    VARIANT onstalled();

    [propput, id(DISPID_IHTMLWINDOW7_ONSTORAGE), displaybind, bindable]
    void onstorage(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONSTORAGE), displaybind, bindable]
    VARIANT onstorage();

    [propput, id(DISPID_IHTMLWINDOW7_ONSUBMIT), displaybind, bindable]
    void onsubmit(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONSUBMIT), displaybind, bindable]
    VARIANT onsubmit();

    [propput, id(DISPID_IHTMLWINDOW7_ONSUSPEND), displaybind, bindable]
    void onsuspend(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONSUSPEND), displaybind, bindable]
    VARIANT onsuspend();

    [propput, id(DISPID_IHTMLWINDOW7_ONTIMEUPDATE), displaybind, bindable]
    void ontimeupdate(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONTIMEUPDATE), displaybind, bindable]
    VARIANT ontimeupdate();

    [propput, id(DISPID_IHTMLWINDOW7_ONPAUSE), displaybind, bindable]
    void onpause(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONPAUSE), displaybind, bindable]
    VARIANT onpause();

    [propput, id(DISPID_IHTMLWINDOW7_ONPLAY), displaybind, bindable]
    void onplay(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONPLAY), displaybind, bindable]
    VARIANT onplay();

    [propput, id(DISPID_IHTMLWINDOW7_ONPLAYING), displaybind, bindable]
    void onplaying(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONPLAYING), displaybind, bindable]
    VARIANT onplaying();

    [propput, id(DISPID_IHTMLWINDOW7_ONVOLUMECHANGE), displaybind, bindable]
    void onvolumechange(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONVOLUMECHANGE), displaybind, bindable]
    VARIANT onvolumechange();

    [propput, id(DISPID_IHTMLWINDOW7_ONWAITING), displaybind, bindable]
    void onwaiting(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONWAITING), displaybind, bindable]
    VARIANT onwaiting();

    WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL;
}

/*****************************************************************************
 *    HTMLWindow2 coclass
 */
[
    noncreatable,
    uuid(d48a6ec6-6a4a-11cf-94a7-444553540000)
]
coclass HTMLWindow2
{
    [default]         dispinterface DispHTMLWindow2;
    [source, default] dispinterface HTMLWindowEvents;
    [source]          dispinterface HTMLWindowEvents2;
 /* [source]          dispinterface HTMLWindowEvents3; */
    interface IHTMLWindow2;
    interface IHTMLWindow3;
    interface IHTMLWindow4;
    interface IHTMLWindow5;
    interface IHTMLWindow6;
    interface IHTMLWindow7;
 /* interface IHTMLWindow8; */
    interface IHTMLDOMConstructor;
    interface IEventTarget;
}

/*****************************************************************************
 *    DispHTMLWindowProxy dispinterface
 */
[
    hidden,
    uuid(3050f55e-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLWindowProxy
{
properties:
methods:
    [id(DISPID_IHTMLFRAMESCOLLECTION2_ITEM)]
    VARIANT item([in] VARIANT* pvarIndex);

    [propget, id(DISPID_IHTMLFRAMESCOLLECTION2_LENGTH)]
    LONG length();

    [propget, id(DISPID_IHTMLWINDOW2_FRAMES)]
    IHTMLFramesCollection2* frames();

    [propput, id(DISPID_IHTMLWINDOW2_DEFAULTSTATUS)]
    void defaultStatus(BSTR v);

    [propget, id(DISPID_IHTMLWINDOW2_DEFAULTSTATUS)]
    BSTR defaultStatus();

    [propput, id(DISPID_IHTMLWINDOW2_STATUS)]
    void status(BSTR v);

    [propget, id(DISPID_IHTMLWINDOW2_STATUS)]
    BSTR status();

    [id(DISPID_IHTMLWINDOW2_CLEARTIMEOUT)]
    void clearTimeout([in] LONG timerID);

    [id(DISPID_IHTMLWINDOW2_ALERT)]
    void alert([defaultvalue(""), in] BSTR message);

    [id(DISPID_IHTMLWINDOW2_CONFIRM)]
    VARIANT_BOOL confirm([defaultvalue(""), in] BSTR message);

    [id(DISPID_IHTMLWINDOW2_PROMPT)]
    VARIANT prompt([defaultvalue(""), in] BSTR message,
                   [defaultvalue("undefined"), in] BSTR defstr);

    [propget, id(DISPID_IHTMLWINDOW2_IMAGE)]
    IHTMLImageElementFactory* Image();

    [propget, id(DISPID_IHTMLWINDOW2_LOCATION)]
    IHTMLLocation* location();

    [propget, id(DISPID_IHTMLWINDOW2_HISTORY)]
    IOmHistory* history();

    [id(DISPID_IHTMLWINDOW2_CLOSE)]
    void close();

    [propput, id(DISPID_IHTMLWINDOW2_OPENER)]
    void opener(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_OPENER)]
    VARIANT opener();

    [propget, id(DISPID_IHTMLWINDOW2_NAVIGATOR)]
    IOmNavigator* navigator();

    [propput, id(DISPID_IHTMLWINDOW2_NAME)]
    void name(BSTR v);

    [propget, id(DISPID_IHTMLWINDOW2_NAME)]
    BSTR name();

    [propget, id(DISPID_IHTMLWINDOW2_PARENT)]
    IHTMLWindow2* parent();

    [id(DISPID_IHTMLWINDOW2_OPEN)]
    IHTMLWindow2* open([defaultvalue(""), in] BSTR url,
                       [defaultvalue(""), in] BSTR name,
                       [defaultvalue(""), in] BSTR features,
                       [defaultvalue(0), in] VARIANT_BOOL replace);

    [propget, id(DISPID_IHTMLWINDOW2_SELF)]
    IHTMLWindow2* self();

    [propget, id(DISPID_IHTMLWINDOW2_TOP)]
    IHTMLWindow2* top();

    [propget, id(DISPID_IHTMLWINDOW2_WINDOW)]
    IHTMLWindow2* window();

    [id(DISPID_IHTMLWINDOW2_NAVIGATE)]
    void navigate([in] BSTR url);

    [propput, id(DISPID_IHTMLWINDOW2_ONFOCUS), displaybind, bindable]
    void onfocus(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONFOCUS), displaybind, bindable]
    VARIANT onfocus();

    [propput, id(DISPID_IHTMLWINDOW2_ONBLUR), displaybind, bindable]
    void onblur(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONBLUR), displaybind, bindable]
    VARIANT onblur();

    [propput, id(DISPID_IHTMLWINDOW2_ONLOAD), displaybind, bindable]
    void onload(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONLOAD), displaybind, bindable]
    VARIANT onload();

    [propput, id(DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD), displaybind, bindable]
    void onbeforeunload(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD), displaybind, bindable]
    VARIANT onbeforeunload();

    [propput, id(DISPID_IHTMLWINDOW2_ONUNLOAD), displaybind, bindable]
    void onunload(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONUNLOAD), displaybind, bindable]
    VARIANT onunload();

    [propput, id(DISPID_IHTMLWINDOW2_ONHELP), displaybind, bindable]
    void onhelp(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONHELP), displaybind, bindable]
    VARIANT onhelp();

    [propput, id(DISPID_IHTMLWINDOW2_ONERROR), displaybind, bindable]
    void onerror(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONERROR), displaybind, bindable]
    VARIANT onerror();

    [propput, id(DISPID_IHTMLWINDOW2_ONRESIZE), displaybind, bindable]
    void onresize(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONRESIZE), displaybind, bindable]
    VARIANT onresize();

    [propput, id(DISPID_IHTMLWINDOW2_ONSCROLL), displaybind, bindable]
    void onscroll(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_ONSCROLL), displaybind, bindable]
    VARIANT onscroll();

    [propget, id(DISPID_IHTMLWINDOW2_DOCUMENT), source]
    IHTMLDocument2* document();

    [propget, id(DISPID_IHTMLWINDOW2_EVENT)]
    IHTMLEventObj* event();

    [propget, id(DISPID_IHTMLWINDOW2__NEWENUM), hidden, restricted]
    IUnknown* _newEnum();

    [id(DISPID_IHTMLWINDOW2_SHOWMODALDIALOG)]
    VARIANT showModalDialog([in] BSTR dialog,
                            [optional, in] VARIANT* varArgIn,
                            [optional, in] VARIANT* varOptions);

    [id(DISPID_IHTMLWINDOW2_SHOWHELP)]
    void showHelp([in] BSTR helpURL,
                  [optional, in] VARIANT helpArg,
                  [defaultvalue(""), in] BSTR features);

    [propget, id(DISPID_IHTMLWINDOW2_SCREEN)]
    IHTMLScreen* screen();

    [propget, id(DISPID_IHTMLWINDOW2_OPTION)]
    IHTMLOptionElementFactory* Option();

    [id(DISPID_IHTMLWINDOW2_FOCUS)]
    void focus();

    [propget, id(DISPID_IHTMLWINDOW2_CLOSED)]
    VARIANT_BOOL closed();

    [id(DISPID_IHTMLWINDOW2_BLUR)]
    void blur();

    [id(DISPID_IHTMLWINDOW2_SCROLL)]
    void scroll([in] LONG x,
                [in] LONG y);

    [propget, id(DISPID_IHTMLWINDOW2_CLIENTINFORMATION)]
    IOmNavigator* clientInformation();

    [id(DISPID_IHTMLWINDOW2_CLEARINTERVAL)]
    void clearInterval([in] LONG timerID);

    [propput, id(DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)]
    void offscreenBuffering(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)]
    VARIANT offscreenBuffering();

    [id(DISPID_IHTMLWINDOW2_EXECSCRIPT)]
    VARIANT execScript([in] BSTR code,
                       [defaultvalue("JScript"), in] BSTR language);

    [id(DISPID_IHTMLWINDOW2_TOSTRING)]
    BSTR toString();

    [id(DISPID_IHTMLWINDOW2_SCROLLBY)]
    void scrollBy([in] LONG x,
                  [in] LONG y);

    [id(DISPID_IHTMLWINDOW2_SCROLLTO)]
    void scrollTo([in] LONG x,
                  [in] LONG y);

    [id(DISPID_IHTMLWINDOW2_MOVETO)]
    void moveTo([in] LONG x,
                [in] LONG y);

    [id(DISPID_IHTMLWINDOW2_MOVEBY)]
    void moveBy([in] LONG x,
                [in] LONG y);

    [id(DISPID_IHTMLWINDOW2_RESIZETO)]
    void resizeTo([in] LONG x,
                  [in] LONG y);

    [id(DISPID_IHTMLWINDOW2_RESIZEBY)]
    void resizeBy([in] LONG x,
                  [in] LONG y);

    [propget, id(DISPID_IHTMLWINDOW2_EXTERNAL)]
    IDispatch* external();

    [propget, id(DISPID_IHTMLWINDOW3_SCREENLEFT)]
    LONG screenLeft();

    [propget, id(DISPID_IHTMLWINDOW3_SCREENTOP)]
    LONG screenTop();

    [id(DISPID_IHTMLWINDOW3_ATTACHEVENT)]
    VARIANT_BOOL attachEvent([in] BSTR event,
                             [in] IDispatch* pDisp);

    [id(DISPID_IHTMLWINDOW3_DETACHEVENT)]
    void detachEvent([in] BSTR event,
                     [in] IDispatch* pDisp);

    [id(DISPID_IHTMLWINDOW3_SETTIMEOUT)]
    LONG setTimeout([in] VARIANT* expression,
                    [in] LONG msec,
                    [optional, in] VARIANT* language);

    [id(DISPID_IHTMLWINDOW3_SETINTERVAL)]
    LONG setInterval([in] VARIANT* expression,
                     [in] LONG msec,
                     [optional, in] VARIANT* language);

    [id(DISPID_IHTMLWINDOW3_PRINT)]
    void print();

    [propput, id(DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable]
    void onbeforeprint(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable]
    VARIANT onbeforeprint();

    [propput, id(DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable]
    void onafterprint(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable]
    VARIANT onafterprint();

    [propget, id(DISPID_IHTMLWINDOW3_CLIPBOARDDATA)]
    IHTMLDataTransfer* clipboardData();

    [id(DISPID_IHTMLWINDOW3_SHOWMODELESSDIALOG)]
    IHTMLWindow2* showModelessDialog([defaultvalue(""), in] BSTR url,
                                     [optional, in] VARIANT* varArgIn,
                                     [optional, in] VARIANT* options);

    [id(DISPID_IHTMLWINDOW4_CREATEPOPUP)]
    IDispatch* createPopup([optional, in] VARIANT* varArgIn);

    [propget, id(DISPID_IHTMLWINDOW4_FRAMEELEMENT)]
    IHTMLFrameBase* frameElement();

    [propput, id(DISPID_IHTMLWINDOW5_XMLHTTPREQUEST)]
    void XMLHttpRequest(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW5_XMLHTTPREQUEST)]
    VARIANT XMLHttpRequest();

    [propget, id(DISPID_IHTMLWINDOW6_SESSIONSTORAGE)]
    IHTMLStorage *sessionStorage();

    [propget, id(DISPID_IHTMLWINDOW6_LOCALSTORAGE)]
    IHTMLStorage *localStorage();

    [propput, id(DISPID_IHTMLWINDOW6_ONHASHCHANGE), displaybind, bindable]
    void onhashchange(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW6_ONHASHCHANGE), displaybind, bindable]
    VARIANT onhashchange();

    [propget, id(DISPID_IHTMLWINDOW6_MAXCONNECTIONSPERSERVER)]
    long maxConnectionsPerServer();

    [id(DISPID_IHTMLWINDOW6_POSTMESSAGE)]
    void postMessage(
            [in] BSTR msg,
            [in, optional] VARIANT targetOrigin);

    [id(DISPID_IHTMLWINDOW6_TOSTATICHTML)]
    BSTR toStaticHTML([in] BSTR bstrHTML);

    [propput, id(DISPID_IHTMLWINDOW6_ONMESSAGE), displaybind, bindable]
    void onmessage(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW6_ONMESSAGE), displaybind, bindable]
    VARIANT onmessage();

    [id(DISPID_IHTMLWINDOW6_MSWRITEPROFILERMARK)]
    void msWriteProfilerMark([in] BSTR bstrProfilerMarkName);

    [id(DISPID_IHTMLWINDOW7_GETSELECTION)]
    IHTMLSelection *getSelection();

    [id(DISPID_IHTMLWINDOW7_GETCOMPUTEDSTYLE)]
    IHTMLCSSStyleDeclaration *getComputedStyle(
            [in] IHTMLDOMNode *varArgIn,
            [in, defaultvalue("")] BSTR bstrPseudoElt);

    [propget, id(DISPID_IHTMLWINDOW7_STYLEMEDIA)]
    IHTMLStyleMedia *styleMedia();

    [propput, id(DISPID_IHTMLWINDOW7_PERFORMANCE)]
    void performance(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_PERFORMANCE)]
    VARIANT performance();

    [propget, id(DISPID_IHTMLWINDOW7_INNERWIDTH)]
    long innerWidth();

    [propget, id(DISPID_IHTMLWINDOW7_INNERHEIGHT)]
    long innerHeight();

    [propget, id(DISPID_IHTMLWINDOW7_PAGEXOFFSET)]
    long pageXOffset();

    [propget, id(DISPID_IHTMLWINDOW7_PAGEYOFFSET)]
    long pageYOffset();

    [propget, id(DISPID_IHTMLWINDOW7_SCREENX)]
    long screenX();

    [propget, id(DISPID_IHTMLWINDOW7_SCREENY)]
    long screenY();

    [propget, id(DISPID_IHTMLWINDOW7_OUTERWIDTH)]
    long outerWidth();

    [propget, id(DISPID_IHTMLWINDOW7_OUTERHEIGHT)]
    long outerHeight();

    [propput, id(DISPID_IHTMLWINDOW7_ONABORT), displaybind, bindable]
    void onabort(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONABORT), displaybind, bindable]
    VARIANT onabort();

    [propput, id(DISPID_IHTMLWINDOW7_ONCANPLAY), displaybind, bindable]
    void oncanplay(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONCANPLAY), displaybind, bindable]
    VARIANT oncanplay();

    [propput, id(DISPID_IHTMLWINDOW7_ONCANPLAYTHROUGH), displaybind, bindable]
    void oncanplaythrough(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONCANPLAYTHROUGH), displaybind, bindable]
    VARIANT oncanplaythrough();

    [propput, id(DISPID_IHTMLWINDOW7_ONCHANGE), displaybind, bindable]
    void onchange(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONCHANGE), displaybind, bindable]
    VARIANT onchange();

    [propput, id(DISPID_IHTMLWINDOW7_ONCLICK), displaybind, bindable]
    void onclick(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONCLICK), displaybind, bindable]
    VARIANT onclick();

    [propput, id(DISPID_IHTMLWINDOW7_ONCONTEXTMENU), displaybind, bindable]
    void oncontextmenu(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONCONTEXTMENU), displaybind, bindable]
    VARIANT oncontextmenu();

    [propput, id(DISPID_IHTMLWINDOW7_ONDBLCLICK), displaybind, bindable]
    void ondblclick(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDBLCLICK), displaybind, bindable]
    VARIANT ondblclick();

    [propput, id(DISPID_IHTMLWINDOW7_ONDRAG), displaybind, bindable]
    void ondrag(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDRAG), displaybind, bindable]
    VARIANT ondrag();

    [propput, id(DISPID_IHTMLWINDOW7_ONDRAGEND), displaybind, bindable]
    void ondragend(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDRAGEND), displaybind, bindable]
    VARIANT ondragend();

    [propput, id(DISPID_IHTMLWINDOW7_ONDRAGENTER), displaybind, bindable]
    void ondragenter(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDRAGENTER), displaybind, bindable]
    VARIANT ondragenter();

    [propput, id(DISPID_IHTMLWINDOW7_ONDRAGLEAVE), displaybind, bindable]
    void ondragleave(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDRAGLEAVE), displaybind, bindable]
    VARIANT ondragleave();

    [propput, id(DISPID_IHTMLWINDOW7_ONDRAGOVER), displaybind, bindable]
    void ondragover(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDRAGOVER), displaybind, bindable]
    VARIANT ondragover();

    [propput, id(DISPID_IHTMLWINDOW7_ONDRAGSTART), displaybind, bindable]
    void ondragstart(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDRAGSTART), displaybind, bindable]
    VARIANT ondragstart();

    [propput, id(DISPID_IHTMLWINDOW7_ONDROP), displaybind, bindable]
    void ondrop(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDROP), displaybind, bindable]
    VARIANT ondrop();

    [propput, id(DISPID_IHTMLWINDOW7_ONDURATIONCHANGE), displaybind, bindable]
    void ondurationchange(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONDURATIONCHANGE), displaybind, bindable]
    VARIANT ondurationchange();

    [propput, id(DISPID_IHTMLWINDOW7_ONFOCUSIN), displaybind, bindable]
    void onfocusin(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONFOCUSIN), displaybind, bindable]
    VARIANT onfocusin();

    [propput, id(DISPID_IHTMLWINDOW7_ONFOCUSOUT), displaybind, bindable]
    void onfocusout(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONFOCUSOUT), displaybind, bindable]
    VARIANT onfocusout();

    [propput, id(DISPID_IHTMLWINDOW7_ONINPUT), displaybind, bindable]
    void oninput(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONINPUT), displaybind, bindable]
    VARIANT oninput();

    [propput, id(DISPID_IHTMLWINDOW7_ONEMPTIED), displaybind, bindable]
    void onemptied(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONEMPTIED), displaybind, bindable]
    VARIANT onemptied();

    [propput, id(DISPID_IHTMLWINDOW7_ONENDED), displaybind, bindable]
    void onended(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONENDED), displaybind, bindable]
    VARIANT onended();

    [propput, id(DISPID_IHTMLWINDOW7_ONKEYDOWN), displaybind, bindable]
    void onkeydown(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONKEYDOWN), displaybind, bindable]
    VARIANT onkeydown();

    [propput, id(DISPID_IHTMLWINDOW7_ONKEYPRESS), displaybind, bindable]
    void onkeypress(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONKEYPRESS), displaybind, bindable]
    VARIANT onkeypress();

    [propput, id(DISPID_IHTMLWINDOW7_ONKEYUP), displaybind, bindable]
    void onkeyup(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONKEYUP), displaybind, bindable]
    VARIANT onkeyup();

    [propput, id(DISPID_IHTMLWINDOW7_ONLOADEDDATA), displaybind, bindable]
    void onloadeddata(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONLOADEDDATA), displaybind, bindable]
    VARIANT onloadeddata();

    [propput, id(DISPID_IHTMLWINDOW7_ONLOADEDMETADATA), displaybind, bindable]
    void onloadedmetadata(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONLOADEDMETADATA), displaybind, bindable]
    VARIANT onloadedmetadata();

    [propput, id(DISPID_IHTMLWINDOW7_ONLOADSTART), displaybind, bindable]
    void onloadstart(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONLOADSTART), displaybind, bindable]
    VARIANT onloadstart();

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSEDOWN), displaybind, bindable]
    void onmousedown(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSEDOWN), displaybind, bindable]
    VARIANT onmousedown();

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSEENTER), displaybind, bindable]
    void onmouseenter(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSEENTER), displaybind, bindable]
    VARIANT onmouseenter();

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSELEAVE), displaybind, bindable]
    void onmouseleave(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSELEAVE), displaybind, bindable]
    VARIANT onmouseleave();

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSEMOVE), displaybind, bindable]
    void onmousemove(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSEMOVE), displaybind, bindable]
    VARIANT onmousemove();

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSEOUT), displaybind, bindable]
    void onmouseout(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSEOUT), displaybind, bindable]
    VARIANT onmouseout();

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSEOVER), displaybind, bindable]
    void onmouseover(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSEOVER), displaybind, bindable]
    VARIANT onmouseover();

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSEUP), displaybind, bindable]
    void onmouseup(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSEUP), displaybind, bindable]
    VARIANT onmouseup();

    [propput, id(DISPID_IHTMLWINDOW7_ONMOUSEWHEEL), displaybind, bindable]
    void onmousewheel(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONMOUSEWHEEL), displaybind, bindable]
    VARIANT onmousewheel();

    [propput, id(DISPID_IHTMLWINDOW7_ONOFFLINE), displaybind, bindable]
    void onoffline(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONOFFLINE), displaybind, bindable]
    VARIANT onoffline();

    [propput, id(DISPID_IHTMLWINDOW7_ONONLINE), displaybind, bindable]
    void ononline(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONONLINE), displaybind, bindable]
    VARIANT ononline();

    [propput, id(DISPID_IHTMLWINDOW7_ONPROGRESS), displaybind, bindable]
    void onprogress(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONPROGRESS), displaybind, bindable]
    VARIANT onprogress();

    [propput, id(DISPID_IHTMLWINDOW7_ONRATECHANGE), displaybind, bindable]
    void onratechange(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONRATECHANGE), displaybind, bindable]
    VARIANT onratechange();

    [propput, id(DISPID_IHTMLWINDOW7_ONREADYSTATECHANGE), displaybind, bindable]
    void onreadystatechange(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONREADYSTATECHANGE), displaybind, bindable]
    VARIANT onreadystatechange();

    [propput, id(DISPID_IHTMLWINDOW7_ONRESET), displaybind, bindable]
    void onreset(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONRESET), displaybind, bindable]
    VARIANT onreset();

    [propput, id(DISPID_IHTMLWINDOW7_ONSEEKED), displaybind, bindable]
    void onseeked(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONSEEKED), displaybind, bindable]
    VARIANT onseeked();

    [propput, id(DISPID_IHTMLWINDOW7_ONSEEKING), displaybind, bindable]
    void onseeking(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONSEEKING), displaybind, bindable]
    VARIANT onseeking();

    [propput, id(DISPID_IHTMLWINDOW7_ONSELECT), displaybind, bindable]
    void onselect(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONSELECT), displaybind, bindable]
    VARIANT onselect();

    [propput, id(DISPID_IHTMLWINDOW7_ONSTALLED), displaybind, bindable]
    void onstalled(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONSTALLED), displaybind, bindable]
    VARIANT onstalled();

    [propput, id(DISPID_IHTMLWINDOW7_ONSTORAGE), displaybind, bindable]
    void onstorage(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONSTORAGE), displaybind, bindable]
    VARIANT onstorage();

    [propput, id(DISPID_IHTMLWINDOW7_ONSUBMIT), displaybind, bindable]
    void onsubmit(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONSUBMIT), displaybind, bindable]
    VARIANT onsubmit();

    [propput, id(DISPID_IHTMLWINDOW7_ONSUSPEND), displaybind, bindable]
    void onsuspend(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONSUSPEND), displaybind, bindable]
    VARIANT onsuspend();

    [propput, id(DISPID_IHTMLWINDOW7_ONTIMEUPDATE), displaybind, bindable]
    void ontimeupdate(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONTIMEUPDATE), displaybind, bindable]
    VARIANT ontimeupdate();

    [propput, id(DISPID_IHTMLWINDOW7_ONPAUSE), displaybind, bindable]
    void onpause(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONPAUSE), displaybind, bindable]
    VARIANT onpause();

    [propput, id(DISPID_IHTMLWINDOW7_ONPLAY), displaybind, bindable]
    void onplay(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONPLAY), displaybind, bindable]
    VARIANT onplay();

    [propput, id(DISPID_IHTMLWINDOW7_ONPLAYING), displaybind, bindable]
    void onplaying(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONPLAYING), displaybind, bindable]
    VARIANT onplaying();

    [propput, id(DISPID_IHTMLWINDOW7_ONVOLUMECHANGE), displaybind, bindable]
    void onvolumechange(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONVOLUMECHANGE), displaybind, bindable]
    VARIANT onvolumechange();

    [propput, id(DISPID_IHTMLWINDOW7_ONWAITING), displaybind, bindable]
    void onwaiting(VARIANT v);

    [propget, id(DISPID_IHTMLWINDOW7_ONWAITING), displaybind, bindable]
    VARIANT onwaiting();

    WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL;
}

/*****************************************************************************
 *    HTMLWindowEvents interface
 */
[
    hidden,
    uuid(96A0A4E0-D062-11cf-94B6-00AA0060275C)
]
dispinterface HTMLWindowEvents
{
properties:
methods:
    [id(DISPID_HTMLWINDOWEVENTS_ONLOAD)]
    void onload();

    [id(DISPID_HTMLWINDOWEVENTS_ONUNLOAD)]
    void onunload();

    [id(DISPID_HTMLWINDOWEVENTS_ONHELP)]
    VARIANT_BOOL onhelp();

    [id(DISPID_HTMLWINDOWEVENTS_ONFOCUS)]
    void onfocus();

    [id(DISPID_HTMLWINDOWEVENTS_ONBLUR)]
    void onblur();

    [id(DISPID_HTMLWINDOWEVENTS_ONERROR)]
    void onerror([in] BSTR description,
                 [in] BSTR url,
                 [in] LONG line);

    [id(DISPID_HTMLWINDOWEVENTS_ONRESIZE)]
    void onresize();

    [id(DISPID_HTMLWINDOWEVENTS_ONSCROLL)]
    void onscroll();

    [id(DISPID_HTMLWINDOWEVENTS_ONBEFOREUNLOAD)]
    void onbeforeunload();

    [id(DISPID_HTMLWINDOWEVENTS_ONBEFOREPRINT)]
    void onbeforeprint();

    [id(DISPID_HTMLWINDOWEVENTS_ONAFTERPRINT)]
    void onafterprint();
}

/*****************************************************************************
 *    HTMLWindowEvents2 interface
 */
[
    hidden,
    uuid(3050f625-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface HTMLWindowEvents2
{
properties:
methods:
    [id(DISPID_HTMLWINDOWEVENTS2_ONLOAD)]
    void onload([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLWINDOWEVENTS2_ONUNLOAD)]
    void onunload([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLWINDOWEVENTS2_ONHELP)]
    VARIANT_BOOL onhelp([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLWINDOWEVENTS2_ONFOCUS)]
    void onfocus([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLWINDOWEVENTS2_ONBLUR)]
    void onblur([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLWINDOWEVENTS2_ONERROR)]
    void onerror([in] BSTR description,
                 [in] BSTR url,
                 [in] LONG line);

    [id(DISPID_HTMLWINDOWEVENTS2_ONRESIZE)]
    void onresize([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLWINDOWEVENTS2_ONSCROLL)]
    void onscroll([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLWINDOWEVENTS2_ONBEFOREUNLOAD)]
    void onbeforeunload([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLWINDOWEVENTS2_ONBEFOREPRINT)]
    void onbeforeprint([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLWINDOWEVENTS2_ONAFTERPRINT)]
    void onafterprint([in] IHTMLEventObj* pEvtObj);
}

/*****************************************************************************
 *    HTMLWindowProxy class
 */
[
    uuid(3050f391-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLWindowProxy
{
    [default]           dispinterface DispHTMLWindowProxy;
    [source, default]   dispinterface HTMLWindowEvents;
    [source]            dispinterface HTMLWindowEvents2;
                        interface IHTMLWindow2;
                        interface IHTMLWindow3;
                        interface IHTMLWindow4;
                        interface IHTMLWindow5;
}

/*****************************************************************************
 *    HTMLDocumentEvents2 interface
 */
[
    hidden,
    uuid(3050f613-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface HTMLDocumentEvents2
{
    properties:
    methods:
    [id(DISPID_HTMLDOCUMENTEVENTS2_ONHELP)]
    VARIANT_BOOL onhelp([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONCLICK)]
    VARIANT_BOOL onclick([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONDBLCLICK)]
    VARIANT_BOOL ondblclick([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONKEYDOWN)]
    void onkeydown([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONKEYUP)]
    void onkeyup([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONKEYPRESS)]
    VARIANT_BOOL onkeypress([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEDOWN)]
    void onmousedown([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEMOVE)]
    void onmousemove([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEUP)]
    void onmouseup([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEOUT)]
    void onmouseout([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEOVER)]
    void onmouseover([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONREADYSTATECHANGE)]
    void onreadystatechange([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREUPDATE)]
    VARIANT_BOOL onbeforeupdate([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONAFTERUPDATE)]
    void onafterupdate([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONROWEXIT)]
    VARIANT_BOOL onrowexit([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONROWENTER)]
    void onrowenter([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONDRAGSTART)]
    VARIANT_BOOL ondragstart([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONSELECTSTART)]
    VARIANT_BOOL onselectstart([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONERRORUPDATE)]
    VARIANT_BOOL onerrorupdate([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONCONTEXTMENU)]
    VARIANT_BOOL oncontextmenu([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONSTOP)]
    VARIANT_BOOL onstop([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONROWSDELETE)]
    void onrowsdelete([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONROWSINSERTED)]
    void onrowsinserted([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONCELLCHANGE)]
    void oncellchange([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONPROPERTYCHANGE)]
    void onpropertychange([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONDATASETCHANGED)]
    void ondatasetchanged([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONDATAAVAILABLE)]
    void ondataavailable([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONDATASETCOMPLETE)]
    void ondatasetcomplete([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREEDITFOCUS)]
    void onbeforeeditfocus([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONSELECTIONCHANGE)]
    void onselectionchange([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONCONTROLSELECT)]
    VARIANT_BOOL oncontrolselect([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONMOUSEWHEEL)]
    VARIANT_BOOL onmousewheel([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONFOCUSIN)]
    void onfocusin([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONFOCUSOUT)]
    void onfocusout([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONACTIVATE)]
    void onactivate([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONDEACTIVATE)]
    void ondeactivate([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREACTIVATE)]
    VARIANT_BOOL onbeforeactivate([in] IHTMLEventObj *pEvtObj);

    [id(DISPID_HTMLDOCUMENTEVENTS2_ONBEFOREDEACTIVATE)]
    VARIANT_BOOL onbeforedeactivate([in] IHTMLEventObj *pEvtObj);
}

/*****************************************************************************
 *    HTMLDocumentEvents interface
 */
[
    hidden,
    uuid(3050f260-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface HTMLDocumentEvents
{
    properties:
    methods:
    [id(DISPID_HTMLDOCUMENTEVENTS_ONHELP)]
    VARIANT_BOOL onhelp();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONCLICK)]
    VARIANT_BOOL onclick();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONDBLCLICK)]
    VARIANT_BOOL ondblclick();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONKEYDOWN)]
    void onkeydown();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONKEYUP)]
    void onkeyup();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONKEYPRESS)]
    VARIANT_BOOL onkeypress();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONMOUSEDOWN)]
    void onmousedown();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONMOUSEMOVE)]
    void onmousemove();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONMOUSEUP)]
    void onmouseup();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONMOUSEOUT)]
    void onmouseout();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONMOUSEOVER)]
    void onmouseover();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONREADYSTATECHANGE)]
    void onreadystatechange();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONBEFOREUPDATE)]
    VARIANT_BOOL onbeforeupdate();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONAFTERUPDATE)]
    void onafterupdate();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONROWEXIT)]
    VARIANT_BOOL onrowexit();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONROWENTER)]
    void onrowenter();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONDRAGSTART)]
    VARIANT_BOOL ondragstart();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONSELECTSTART)]
    VARIANT_BOOL onselectstart();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONERRORUPDATE)]
    VARIANT_BOOL onerrorupdate();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONCONTEXTMENU)]
    VARIANT_BOOL oncontextmenu();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONSTOP)]
    VARIANT_BOOL onstop();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONROWSDELETE)]
    void onrowsdelete();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONROWSINSERTED)]
    void onrowsinserted();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONCELLCHANGE)]
    void oncellchange();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONPROPERTYCHANGE)]
    void onpropertychange();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONDATASETCHANGED)]
    void ondatasetchanged();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONDATAAVAILABLE)]
    void ondataavailable();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONDATASETCOMPLETE)]
    void ondatasetcomplete();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONBEFOREEDITFOCUS)]
    void onbeforeeditfocus();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONSELECTIONCHANGE)]
    void onselectionchange();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONCONTROLSELECT)]
    VARIANT_BOOL oncontrolselect();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONMOUSEWHEEL)]
    VARIANT_BOOL onmousewheel();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONFOCUSIN)]
    void onfocusin();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONFOCUSOUT)]
    void onfocusout();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONACTIVATE)]
    void onactivate();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONDEACTIVATE)]
    void ondeactivate();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONBEFOREACTIVATE)]
    VARIANT_BOOL onbeforeactivate();

    [id(DISPID_HTMLDOCUMENTEVENTS_ONBEFOREDEACTIVATE)]
    VARIANT_BOOL onbeforedeactivate();
}

/*****************************************************************************
 *    HTMLTextContainerEvents interface
 */
[
    hidden,
    uuid(1ff6aa72-5842-11cf-a707-00aa00c0098d)
]
dispinterface HTMLTextContainerEvents
{
properties:

methods:
    [id(DISPID_HTMLELEMENTEVENTS_ONHELP)]
    VARIANT_BOOL onhelp();

    [id(DISPID_HTMLELEMENTEVENTS_ONCLICK)]
    VARIANT_BOOL onclick();

    [id(DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)]
    VARIANT_BOOL ondblclick();

    [id(DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)]
    VARIANT_BOOL onkeypress();

    [id(DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)]
    void onkeydown();

    [id(DISPID_HTMLELEMENTEVENTS_ONKEYUP)]
    void onkeyup();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)]
    void onmouseout();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)]
    void onmouseover();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)]
    void onmousemove();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)]
    void onmousedown();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)]
    void onmouseup();

    [id(DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)]
    VARIANT_BOOL onselectstart();

    [id(DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)]
    void onfilterchange();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)]
    VARIANT_BOOL ondragstart();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)]
    VARIANT_BOOL onbeforeupdate();

    [id(DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)]
    void onafterupdate();

    [id(DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)]
    VARIANT_BOOL onerrorupdate();

    [id(DISPID_HTMLELEMENTEVENTS_ONROWEXIT)]
    VARIANT_BOOL onrowexit();

    [id(DISPID_HTMLELEMENTEVENTS_ONROWENTER)]
    void onrowenter();

    [id(DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)]
    void ondatasetchanged();

    [id(DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)]
    void ondataavailable();

    [id(DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)]
    void ondatasetcomplete();

    [id(DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)]
    void onlosecapture();

    [id(DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)]
    void onpropertychange();

    [id(DISPID_HTMLELEMENTEVENTS_ONSCROLL)]
    void onscroll();

    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUS)]
    void onfocus();

    [id(DISPID_HTMLELEMENTEVENTS_ONBLUR)]
    void onblur();

    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZE)]
    void onresize();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAG)]
    VARIANT_BOOL ondrag();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGEND)]
    void ondragend();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)]
    VARIANT_BOOL ondragenter();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)]
    VARIANT_BOOL ondragover();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)]
    void ondragleave();

    [id(DISPID_HTMLELEMENTEVENTS_ONDROP)]
    VARIANT_BOOL ondrop();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)]
    VARIANT_BOOL onbeforecut();

    [id(DISPID_HTMLELEMENTEVENTS_ONCUT)]
    VARIANT_BOOL oncut();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)]
    VARIANT_BOOL onbeforecopy();

    [id(DISPID_HTMLELEMENTEVENTS_ONCOPY)]
    VARIANT_BOOL oncopy();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)]
    VARIANT_BOOL onbeforepaste();

    [id(DISPID_HTMLELEMENTEVENTS_ONPASTE)]
    VARIANT_BOOL onpaste();

    [id(DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)]
    VARIANT_BOOL oncontextmenu();

    [id(DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)]
    void onrowsdelete();

    [id(DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)]
    void onrowsinserted();

    [id(DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)]
    void oncellchange();

    [id(DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)]
    void onreadystatechange();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)]
    void onbeforeeditfocus();

    [id(DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)]
    void onlayoutcomplete();

    [id(DISPID_HTMLELEMENTEVENTS_ONPAGE)]
    void onpage();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)]
    VARIANT_BOOL onbeforedeactivate();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)]
    VARIANT_BOOL onbeforeactivate();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOVE)]
    void onmove();

    [id(DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)]
    VARIANT_BOOL oncontrolselect();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOVESTART)]
    VARIANT_BOOL onmovestart();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOVEEND)]
    void onmoveend();

    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)]
    VARIANT_BOOL onresizestart();

    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)]
    void onresizeend();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)]
    void onmouseenter();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)]
    void onmouseleave();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)]
    VARIANT_BOOL onmousewheel();

    [id(DISPID_HTMLELEMENTEVENTS_ONACTIVATE)]
    void onactivate();

    [id(DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)]
    void ondeactivate();

    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)]
    void onfocusin();

    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)]
    void onfocusout();

    [id(DISPID_HTMLTEXTCONTAINEREVENTS_ONCHANGE)]
    void onchange();

    [id(DISPID_HTMLTEXTCONTAINEREVENTS_ONSELECT)]
    void onselect();
}

/*****************************************************************************
 *    HTMLTextContainerEvents2 interface
 */
[
    hidden,
    uuid(3050f624-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface HTMLTextContainerEvents2
{
properties:
methods:
    [id(DISPID_HTMLELEMENTEVENTS2_ONHELP)]
    VARIANT_BOOL onhelp([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCLICK)]
    VARIANT_BOOL onclick([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)]
    VARIANT_BOOL ondblclick([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)]
    VARIANT_BOOL onkeypress([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)]
    void onkeydown([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYUP)]
    void onkeyup([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)]
    void onmouseout([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)]
    void onmouseover([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)]
    void onmousemove([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)]
    void onmousedown([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)]
    void onmouseup([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)]
    VARIANT_BOOL onselectstart([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)]
    void onfilterchange([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)]
    VARIANT_BOOL ondragstart([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)]
    VARIANT_BOOL onbeforeupdate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)]
    void onafterupdate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)]
    VARIANT_BOOL onerrorupdate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)]
    VARIANT_BOOL onrowexit([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONROWENTER)]
    void onrowenter([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)]
    void ondatasetchanged([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)]
    void ondataavailable([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)]
    void ondatasetcomplete([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)]
    void onlosecapture([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)]
    void onpropertychange([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONSCROLL)]
    void onscroll([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUS)]
    void onfocus([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBLUR)]
    void onblur([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZE)]
    void onresize([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAG)]
    VARIANT_BOOL ondrag([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)]
    void ondragend([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)]
    VARIANT_BOOL ondragenter([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)]
    VARIANT_BOOL ondragover([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)]
    void ondragleave([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDROP)]
    VARIANT_BOOL ondrop([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)]
    VARIANT_BOOL onbeforecut([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCUT)]
    VARIANT_BOOL oncut([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)]
    VARIANT_BOOL onbeforecopy([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCOPY)]
    VARIANT_BOOL oncopy([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)]
    VARIANT_BOOL onbeforepaste([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONPASTE)]
    VARIANT_BOOL onpaste([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)]
    VARIANT_BOOL oncontextmenu([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)]
    void onrowsdelete([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)]
    void onrowsinserted([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)]
    void oncellchange([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)]
    void onreadystatechange([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)]
    void onlayoutcomplete([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONPAGE)]
    void onpage([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)]
    void onmouseenter([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)]
    void onmouseleave([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)]
    void onactivate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)]
    void ondeactivate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)]
    VARIANT_BOOL onbeforedeactivate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)]
    VARIANT_BOOL onbeforeactivate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)]
    void onfocusin([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)]
    void onfocusout([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVE)]
    void onmove([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)]
    VARIANT_BOOL oncontrolselect([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)]
    VARIANT_BOOL onmovestart([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)]
    void onmoveend([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)]
    VARIANT_BOOL onresizestart([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)]
    void onresizeend([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)]
    VARIANT_BOOL onmousewheel([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLTEXTCONTAINEREVENTS2_ONCHANGE)]
    void onchange([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLTEXTCONTAINEREVENTS2_ONSELECT)]
    void onselect([in] IHTMLEventObj* pEvtObj);
}

/*****************************************************************************
 *    IDOMProcessingInstruction interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510742-98b5-11cf-bb82-00aa00bdce0b)
]
interface IDOMProcessingInstruction : IDispatch
{
    [propget, id(DISPID_IDOMPROCESSINGINSTRUCTION_TARGET)]
    HRESULT target([out, retval] BSTR *p);

    [propput, id(DISPID_IDOMPROCESSINGINSTRUCTION_DATA)]
    HRESULT data([in] BSTR v);

    [propget, id(DISPID_IDOMPROCESSINGINSTRUCTION_DATA)]
    HRESULT data([out, retval] BSTR *p);
}

/*****************************************************************************
 *    IHTMLPerformanceNavigation interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510750-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLPerformanceNavigation : IDispatch
{
    [propget, id(DISPID_IHTMLPERFORMANCENAVIGATION_TYPE)]
    HRESULT type([out, retval] ULONG *p);

    [propget, id(DISPID_IHTMLPERFORMANCENAVIGATION_REDIRECTCOUNT)]
    HRESULT redirectCount([out, retval] ULONG *p);

    [id(DISPID_IHTMLPERFORMANCENAVIGATION_TOSTRING)]
    HRESULT toString([out, retval] BSTR *string);

    [id(DISPID_IHTMLPERFORMANCENAVIGATION_TOJSON)]
    HRESULT toJSON([out, retval] VARIANT *pVar);
}

/*****************************************************************************
 *    IHTMLPerformanceTiming interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510752-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLPerformanceTiming : IDispatch
{
    [propget, id(DISPID_IHTMLPERFORMANCETIMING_NAVIGATIONSTART)]
    HRESULT navigationStart([out, retval] ULONGLONG *p);

    [propget, id(DISPID_IHTMLPERFORMANCETIMING_UNLOADEVENTSTART)]
    HRESULT unloadEventStart([out, retval] ULONGLONG *p);

    [propget, id(DISPID_IHTMLPERFORMANCETIMING_UNLOADEVENTEND)]
    HRESULT unloadEventEnd([out, retval] ULONGLONG *p);

    [propget, id(DISPID_IHTMLPERFORMANCETIMING_REDIRECTSTART)]
    HRESULT redirectStart([out, retval] ULONGLONG *p);

    [propget, id(DISPID_IHTMLPERFORMANCETIMING_REDIRECTEND)]
    HRESULT redirectEnd([out, retval] ULONGLONG *p);

    [propget, id(DISPID_IHTMLPERFORMANCETIMING_FETCHSTART)]
    HRESULT fetchStart([out, retval] ULONGLONG *p);

    [propget, id(DISPID_IHTMLPERFORMANCETIMING_DOMAINLOOKUPSTART)]
    HRESULT domainLookupStart([out, retval] ULONGLONG *p);

    [propget, id(DISPID_IHTMLPERFORMANCETIMING_DOMAINLOOKUPEND)]
    HRESULT domainLookupEnd([out, retval] ULONGLONG *p);

    [propget, id(DISPID_IHTMLPERFORMANCETIMING_CONNECTSTART)]
    HRESULT connectStart([out, retval] ULONGLONG *p);

    [propget, id(DISPID_IHTMLPERFORMANCETIMING_CONNECTEND)]
    HRESULT connectEnd([out, retval] ULONGLONG *p);

    [propget, id(DISPID_IHTMLPERFORMANCETIMING_REQUESTSTART)]
    HRESULT requestStart([out, retval] ULONGLONG *p);

    [propget, id(DISPID_IHTMLPERFORMANCETIMING_RESPONSESTART)]
    HRESULT responseStart([out, retval] ULONGLONG *p);

    [propget, id(DISPID_IHTMLPERFORMANCETIMING_RESPONSEEND)]
    HRESULT responseEnd([out, retval] ULONGLONG *p);

    [propget, id(DISPID_IHTMLPERFORMANCETIMING_DOMLOADING)]
    HRESULT domLoading([out, retval] ULONGLONG *p);

    [propget, id(DISPID_IHTMLPERFORMANCETIMING_DOMINTERACTIVE)]
    HRESULT domInteractive([out, retval] ULONGLONG *p);

    [propget, id(DISPID_IHTMLPERFORMANCETIMING_DOMCONTENTLOADEDEVENTSTART)]
    HRESULT domContentLoadedEventStart([out, retval] ULONGLONG *p);

    [propget, id(DISPID_IHTMLPERFORMANCETIMING_DOMCONTENTLOADEDEVENTEND)]
    HRESULT domContentLoadedEventEnd([out, retval] ULONGLONG *p);

    [propget, id(DISPID_IHTMLPERFORMANCETIMING_DOMCOMPLETE)]
    HRESULT domComplete([out, retval] ULONGLONG *p);

    [propget, id(DISPID_IHTMLPERFORMANCETIMING_LOADEVENTSTART)]
    HRESULT loadEventStart([out, retval] ULONGLONG *p);

    [propget, id(DISPID_IHTMLPERFORMANCETIMING_LOADEVENTEND)]
    HRESULT loadEventEnd([out, retval] ULONGLONG *p);

    [propget, id(DISPID_IHTMLPERFORMANCETIMING_MSFIRSTPAINT)]
    HRESULT msFirstPaint([out, retval] ULONGLONG *p);

    [id(DISPID_IHTMLPERFORMANCETIMING_TOSTRING)]
    HRESULT toString([out, retval] BSTR *string);

    [id(DISPID_IHTMLPERFORMANCETIMING_TOJSON)]
    HRESULT toJSON([out, retval] VARIANT *pVar);
}

/*****************************************************************************
 *    IHTMLPerformance interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3051074e-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLPerformance : IDispatch
{
    [propget, id(DISPID_IHTMLPERFORMANCE_NAVIGATION)]
    HRESULT navigation([out, retval] IHTMLPerformanceNavigation **p);

    [propget, id(DISPID_IHTMLPERFORMANCE_TIMING)]
    HRESULT timing([out, retval] IHTMLPerformanceTiming **p);

    [id(DISPID_IHTMLPERFORMANCE_TOSTRING)]
    HRESULT toString([out, retval] BSTR *string);

    [id(DISPID_IHTMLPERFORMANCE_TOJSON)]
    HRESULT toJSON([out, retval] VARIANT *pVar);
}

/*****************************************************************************
 *    IHTMLDocument interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(626FC520-A41E-11CF-A731-00A0C9082637)
]
interface IHTMLDocument : IDispatch
{
    [propget, id(DISPID_IHTMLDOCUMENT_SCRIPT)]
    HRESULT Script([retval, out] IDispatch **p);
}

/*****************************************************************************
 *    IHTMLDocument2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(332C4425-26CB-11D0-B483-00C04FD90119)
]
interface IHTMLDocument2 : IHTMLDocument
{
    [propget, id(DISPID_IHTMLDOCUMENT2_ALL)]
    HRESULT all([retval, out] IHTMLElementCollection **p);

    [propget, id(DISPID_IHTMLDOCUMENT2_BODY)]
    HRESULT body([retval, out] IHTMLElement **p);

    [propget, id(DISPID_IHTMLDOCUMENT2_ACTIVEELEMENT)]
    HRESULT activeElement([retval, out] IHTMLElement **p);

    [propget, id(DISPID_IHTMLDOCUMENT2_IMAGES)]
    HRESULT images([retval, out] IHTMLElementCollection **p);

    [propget, id(DISPID_IHTMLDOCUMENT2_APPLETS)]
    HRESULT applets([retval, out] IHTMLElementCollection **p);

    [propget, id(DISPID_IHTMLDOCUMENT2_LINKS)]
    HRESULT links([retval, out] IHTMLElementCollection **p);

    [propget, id(DISPID_IHTMLDOCUMENT2_FORMS)]
    HRESULT forms([retval, out] IHTMLElementCollection **p);

    [propget, id(DISPID_IHTMLDOCUMENT2_ANCHORS)]
    HRESULT anchors([retval, out] IHTMLElementCollection **p);

    [propput, id(DISPID_IHTMLDOCUMENT2_TITLE)]
    HRESULT title([in] BSTR v);

    [propget, id(DISPID_IHTMLDOCUMENT2_TITLE)]
    HRESULT title([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLDOCUMENT2_SCRIPTS)]
    HRESULT scripts([retval, out] IHTMLElementCollection **p);

    [propput, id(DISPID_IHTMLDOCUMENT2_DESIGNMODE)]
    HRESULT designMode([in] BSTR v);

    [propget, id(DISPID_IHTMLDOCUMENT2_DESIGNMODE)]
    HRESULT designMode([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLDOCUMENT2_SELECTION)]
    HRESULT selection([retval, out] IHTMLSelectionObject **p);

    [propget, id(DISPID_IHTMLDOCUMENT2_READYSTATE)]
     HRESULT readyState([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLDOCUMENT2_FRAMES)]
    HRESULT frames([retval, out] IHTMLFramesCollection2 **p);

    [propget, id(DISPID_IHTMLDOCUMENT2_EMBEDS)]
    HRESULT embeds([retval, out] IHTMLElementCollection **p);

    [propget, id(DISPID_IHTMLDOCUMENT2_PLUGINS)]
    HRESULT plugins([retval, out] IHTMLElementCollection **p);

    [propput, id(DISPID_IHTMLDOCUMENT2_ALINKCOLOR)]
    HRESULT alinkColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ALINKCOLOR)]
    HRESULT alinkColor([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_BGCOLOR)]
    HRESULT bgColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_BGCOLOR)]
    HRESULT bgColor([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_FGCOLOR)]
    HRESULT fgColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_FGCOLOR)]
    HRESULT fgColor([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_LINKCOLOR)]
    HRESULT linkColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_LINKCOLOR)]
    HRESULT linkColor([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_VLINKCOLOR)]
    HRESULT vlinkColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_VLINKCOLOR)]
    HRESULT vlinkColor([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLDOCUMENT2_REFERRER)]
    HRESULT referrer([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLDOCUMENT2_LOCATION)]
    HRESULT location([retval, out] IHTMLLocation **p);

    [propget, id(DISPID_IHTMLDOCUMENT2_LASTMODIFIED)]
    HRESULT lastModified([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_URL)]
    HRESULT URL([in] BSTR v);

    [propget, id(DISPID_IHTMLDOCUMENT2_URL)]
    HRESULT URL([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_DOMAIN)]
    HRESULT domain([in] BSTR v);

    [propget, id(DISPID_IHTMLDOCUMENT2_DOMAIN)]
    HRESULT domain([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_COOKIE)]
    HRESULT cookie([in] BSTR v);

    [propget, id(DISPID_IHTMLDOCUMENT2_COOKIE)]
    HRESULT cookie([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_EXPANDO)]
    HRESULT expando([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLDOCUMENT2_EXPANDO)]
    HRESULT expando([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_CHARSET)]
     HRESULT charset([in] BSTR v);

    [propget, id(DISPID_IHTMLDOCUMENT2_CHARSET)]
    HRESULT charset([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_DEFAULTCHARSET)]
    HRESULT defaultCharset([in] BSTR v);

    [propget, id(DISPID_IHTMLDOCUMENT2_DEFAULTCHARSET)]
    HRESULT defaultCharset([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLDOCUMENT2_MIMETYPE)]
    HRESULT mimeType([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLDOCUMENT2_FILESIZE)]
    HRESULT fileSize([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLDOCUMENT2_FILECREATEDDATE)]
    HRESULT fileCreatedDate([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLDOCUMENT2_FILEMODIFIEDDATE)]
    HRESULT fileModifiedDate([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLDOCUMENT2_FILEUPDATEDDATE)]
    HRESULT fileUpdatedDate([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLDOCUMENT2_SECURITY)]
    HRESULT security([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLDOCUMENT2_PROTOCOL)]
    HRESULT protocol([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLDOCUMENT2_NAMEPROP)]
     HRESULT nameProp([retval, out] BSTR *p);

    [vararg, id(DISPID_IHTMLDOCUMENT2_WRITE)]
    HRESULT write([in] SAFEARRAY(VARIANT) psarray);

    [vararg, id(DISPID_IHTMLDOCUMENT2_WRITELN)]
    HRESULT writeln([in] SAFEARRAY(VARIANT) psarray);

    [id(DISPID_IHTMLDOCUMENT2_OPEN)]
    HRESULT open(
        [defaultvalue("text/html"), in] BSTR url,
        [optional, in] VARIANT name,
        [optional, in] VARIANT features,
        [optional, in] VARIANT replace,
        [retval, out]  IDispatch **pomWindowResult);

    [id(DISPID_IHTMLDOCUMENT2_CLOSE)]
    HRESULT close();

    [id(DISPID_IHTMLDOCUMENT2_CLEAR)]
    HRESULT clear();

    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDSUPPORTED)]
    HRESULT queryCommandSupported(
        [in] BSTR cmdID,
        [retval, out] VARIANT_BOOL *pfRet);

    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDENABLED)]
    HRESULT queryCommandEnabled(
        [in] BSTR cmdID,
        [retval, out] VARIANT_BOOL *pfRet);

    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDSTATE)]
    HRESULT queryCommandState(
        [in] BSTR cmdID,
        [retval, out] VARIANT_BOOL *pfRet);

    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDINDETERM)]
    HRESULT queryCommandIndeterm(
        [in] BSTR cmdID,
        [retval, out] VARIANT_BOOL *pfRet);

    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDTEXT)]
    HRESULT queryCommandText(
        [in] BSTR cmdID,
        [retval, out] BSTR *pcmdText);

    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDVALUE)]
    HRESULT queryCommandValue(
        [in] BSTR cmdID,
        [retval, out] VARIANT *pcmdValue);

    [id(DISPID_IHTMLDOCUMENT2_EXECCOMMAND)]
    HRESULT execCommand(
        [in] BSTR cmdID,
        [defaultvalue(0), in] VARIANT_BOOL showUI,
        [optional, in] VARIANT value,
        [retval, out] VARIANT_BOOL *pfRet);

    [id(DISPID_IHTMLDOCUMENT2_EXECCOMMANDSHOWHELP)]
    HRESULT execCommandShowHelp(
        [in] BSTR cmdID,
        [retval, out] VARIANT_BOOL *pfRet);

    [id(DISPID_IHTMLDOCUMENT2_CREATEELEMENT)]
     HRESULT createElement(
        [in] BSTR eTag,
        [retval, out] IHTMLElement **newElem);

    [propput, id(DISPID_IHTMLDOCUMENT2_ONHELP)]
    HRESULT onhelp([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONHELP)]
    HRESULT onhelp([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_ONCLICK)]
    HRESULT onclick([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONCLICK)]
    HRESULT onclick([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_ONDBLCLICK)]
    HRESULT ondblclick([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONDBLCLICK)]
    HRESULT ondblclick([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_ONKEYUP)]
    HRESULT onkeyup([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONKEYUP)]
    HRESULT onkeyup([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_ONKEYDOWN)]
    HRESULT onkeydown([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONKEYDOWN)]
    HRESULT onkeydown([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_ONKEYPRESS)]
     HRESULT onkeypress([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONKEYPRESS)]
    HRESULT onkeypress([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEUP)]
    HRESULT onmouseup([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEUP)]
    HRESULT onmouseup([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEDOWN)]
    HRESULT onmousedown([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEDOWN)]
    HRESULT onmousedown([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEMOVE)]
    HRESULT onmousemove([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEMOVE)]
    HRESULT onmousemove([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOUT)]
    HRESULT onmouseout([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOUT)]
    HRESULT onmouseout([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOVER)]
    HRESULT onmouseover([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOVER)]
    HRESULT onmouseover([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_ONREADYSTATECHANGE)]
    HRESULT onreadystatechange([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONREADYSTATECHANGE)]
    HRESULT onreadystatechange([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_ONAFTERUPDATE)]
    HRESULT onafterupdate([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONAFTERUPDATE)]
    HRESULT onafterupdate([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_ONROWEXIT)]
    HRESULT onrowexit([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONROWEXIT)]
    HRESULT onrowexit([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_ONROWENTER)]
    HRESULT onrowenter([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONROWENTER)]
    HRESULT onrowenter([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_ONDRAGSTART)]
    HRESULT ondragstart([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONDRAGSTART)]
    HRESULT ondragstart([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_ONSELECTSTART)]
    HRESULT onselectstart([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONSELECTSTART)]
    HRESULT onselectstart([retval, out] VARIANT *p);

    [id(DISPID_IHTMLDOCUMENT2_ELEMENTFROMPOINT)]
    HRESULT elementFromPoint(
        [in] LONG x,
        [in] LONG y,
        [retval, out] IHTMLElement **elementHit);

    [propget, id(DISPID_IHTMLDOCUMENT2_PARENTWINDOW)]
    HRESULT parentWindow([retval, out] IHTMLWindow2 **p);

    [propget, id(DISPID_IHTMLDOCUMENT2_STYLESHEETS)]
    HRESULT styleSheets([retval, out] IHTMLStyleSheetsCollection **p);

    [propput, id(DISPID_IHTMLDOCUMENT2_ONBEFOREUPDATE)]
    HRESULT onbeforeupdate([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONBEFOREUPDATE)]
    HRESULT onbeforeupdate([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT2_ONERRORUPDATE)]
    HRESULT onerrorupdate([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONERRORUPDATE)]
    HRESULT onerrorupdate([retval, out] VARIANT *p);

    [id(DISPID_IHTMLDOCUMENT2_TOSTRING)]
    HRESULT toString([retval, out] BSTR *String);

    [id(DISPID_IHTMLDOCUMENT2_CREATESTYLESHEET)]
    HRESULT createStyleSheet(
        [defaultvalue(""), in] BSTR bstrHref,
        [defaultvalue(-1), in] LONG lIndex,
        [retval, out] IHTMLStyleSheet **ppnewStyleSheet);
}

/*****************************************************************************
 *    IHTMLDocument3 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f485-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDocument3 : IDispatch
{
    [id(DISPID_IHTMLDOCUMENT3_RELEASECAPTURE)]
    HRESULT releaseCapture();

    [id(DISPID_IHTMLDOCUMENT3_RECALC)]
    HRESULT recalc([defaultvalue(0), in] VARIANT_BOOL fForce);

    [id(DISPID_IHTMLDOCUMENT3_CREATETEXTNODE)]
    HRESULT createTextNode(
        [in] BSTR text,
        [retval, out] IHTMLDOMNode **newTextNode);

    [propget, id(DISPID_IHTMLDOCUMENT3_DOCUMENTELEMENT)]
    HRESULT documentElement([retval, out] IHTMLElement **p);

    [propget, id(DISPID_IHTMLDOCUMENT3_UNIQUEID), hidden]
    HRESULT uniqueID([retval, out] BSTR *p);

    [id(DISPID_IHTMLDOCUMENT3_ATTACHEVENT)]
    HRESULT attachEvent(
        [in] BSTR event,
        [in] IDispatch* pDisp,
        [retval, out] VARIANT_BOOL *pfResult);

    [id(DISPID_IHTMLDOCUMENT3_DETACHEVENT)]
    HRESULT detachEvent(
        [in] BSTR event,
        [in] IDispatch *pDisp);

    [propput, id(DISPID_IHTMLDOCUMENT3_ONROWSDELETE), displaybind, bindable]
    HRESULT onrowsdelete([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT3_ONROWSDELETE), displaybind, bindable]
    HRESULT onrowsdelete([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT3_ONROWSINSERTED), displaybind, bindable]
    HRESULT onrowsinserted([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT3_ONROWSINSERTED), displaybind, bindable]
    HRESULT onrowsinserted([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT3_ONCELLCHANGE), displaybind, bindable]
    HRESULT oncellchange([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT3_ONCELLCHANGE), displaybind, bindable]
    HRESULT oncellchange([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT3_ONDATASETCHANGED), displaybind, bindable]
    HRESULT ondatasetchanged([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT3_ONDATASETCHANGED), displaybind, bindable]
    HRESULT ondatasetchanged([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT3_ONDATAAVAILABLE), displaybind, bindable]
    HRESULT ondataavailable([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT3_ONDATAAVAILABLE), displaybind, bindable]
    HRESULT ondataavailable([retval, out] VARIANT * p);

    [propput, id(DISPID_IHTMLDOCUMENT3_ONDATASETCOMPLETE), displaybind, bindable]
    HRESULT ondatasetcomplete([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT3_ONDATASETCOMPLETE), displaybind, bindable]
    HRESULT ondatasetcomplete([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT3_ONPROPERTYCHANGE), displaybind, bindable]
    HRESULT onpropertychange([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT3_ONPROPERTYCHANGE), displaybind, bindable]
    HRESULT onpropertychange([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT3_DIR)]
    HRESULT dir([in] BSTR v);

    [propget, id(DISPID_IHTMLDOCUMENT3_DIR)]
    HRESULT dir([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLDOCUMENT3_ONCONTEXTMENU), displaybind, bindable]
    HRESULT oncontextmenu([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT3_ONCONTEXTMENU), displaybind, bindable]
    HRESULT oncontextmenu([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT3_ONSTOP), displaybind, bindable]
    HRESULT onstop([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT3_ONSTOP), displaybind, bindable]
    HRESULT onstop([retval, out] VARIANT *p);

    [id(DISPID_IHTMLDOCUMENT3_CREATEDOCUMENTFRAGMENT)]
    HRESULT createDocumentFragment([retval, out] IHTMLDocument2 **pNewDoc);

    [propget, id(DISPID_IHTMLDOCUMENT3_PARENTDOCUMENT), hidden, restricted]
    HRESULT parentDocument([retval, out] IHTMLDocument2 **p);

    [propput, id(DISPID_IHTMLDOCUMENT3_ENABLEDOWNLOAD), hidden, restricted]
    HRESULT enableDownload([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLDOCUMENT3_ENABLEDOWNLOAD), hidden, restricted]
    HRESULT enableDownload([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLDOCUMENT3_BASEURL), hidden, restricted]
    HRESULT baseUrl([in] BSTR v);

    [propget, id(DISPID_IHTMLDOCUMENT3_BASEURL), hidden, restricted]
    HRESULT baseUrl([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLDOCUMENT3_CHILDNODES)]
    HRESULT childNodes([retval, out] IDispatch **p);

    [propput, id(DISPID_IHTMLDOCUMENT3_INHERITSTYLESHEETS), hidden, restricted]
    HRESULT inheritStyleSheets([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLDOCUMENT3_INHERITSTYLESHEETS), hidden, restricted]
    HRESULT inheritStyleSheets([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLDOCUMENT3_ONBEFOREEDITFOCUS), displaybind, bindable]
    HRESULT onbeforeeditfocus([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT3_ONBEFOREEDITFOCUS), displaybind, bindable]
    HRESULT onbeforeeditfocus([retval, out] VARIANT *p);

    [id(DISPID_IHTMLDOCUMENT3_GETELEMENTSBYNAME)]
    HRESULT getElementsByName(
        [in] BSTR v,
        [retval, out] IHTMLElementCollection **pelColl);

    [id(DISPID_IHTMLDOCUMENT3_GETELEMENTBYID)]
    HRESULT getElementById(
        [in] BSTR v,
        [retval, out] IHTMLElement **pel);

    [id(DISPID_IHTMLDOCUMENT3_GETELEMENTSBYTAGNAME)]
    HRESULT getElementsByTagName(
        [in] BSTR v,
        [retval, out] IHTMLElementCollection **pelColl);
}

/*****************************************************************************
 *    IHTMLDocument4 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f69a-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDocument4 : IDispatch
{
    [id(DISPID_IHTMLDOCUMENT4_FOCUS)]
    HRESULT focus();

    [id(DISPID_IHTMLDOCUMENT4_HASFOCUS)]
    HRESULT hasFocus([retval, out] VARIANT_BOOL *pfFocus);

    [propput, id(DISPID_IHTMLDOCUMENT4_ONSELECTIONCHANGE), displaybind, bindable]
    HRESULT onselectionchange([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT4_ONSELECTIONCHANGE), displaybind, bindable]
    HRESULT onselectionchange([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLDOCUMENT4_NAMESPACES)]
    HRESULT namespaces([retval, out] IDispatch **p);

    [id(DISPID_IHTMLDOCUMENT4_CREATEDOCUMENTFROMURL)]
    HRESULT createDocumentFromUrl(
        [in] BSTR bstrUrl,
        [in] BSTR bstrOptions,
        [retval, out] IHTMLDocument2 **newDoc);

    [propput, id(DISPID_IHTMLDOCUMENT4_MEDIA)]
    HRESULT media([in] BSTR v);

    [propget, id(DISPID_IHTMLDOCUMENT4_MEDIA)]
    HRESULT media([retval, out] BSTR *p);

    [id(DISPID_IHTMLDOCUMENT4_CREATEEVENTOBJECT)]
    HRESULT createEventObject(
        [optional, in] VARIANT *pvarEventObject,
        [retval, out] IHTMLEventObj **ppEventObj);

    [id(DISPID_IHTMLDOCUMENT4_FIREEVENT)]
    HRESULT fireEvent(
        [in] BSTR bstrEventName,
        [optional, in] VARIANT *pvarEventObject,
        [retval, out] VARIANT_BOOL *pfCancelled);

    [id(DISPID_IHTMLDOCUMENT4_CREATERENDERSTYLE)]
    HRESULT createRenderStyle(
        [in] BSTR v,
        [retval, out] IHTMLRenderStyle **ppIHTMLRenderStyle);

    [propput, id(DISPID_IHTMLDOCUMENT4_ONCONTROLSELECT), displaybind, bindable]
    HRESULT oncontrolselect([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT4_ONCONTROLSELECT), displaybind, bindable]
    HRESULT oncontrolselect([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLDOCUMENT4_URLUNENCODED)]
    HRESULT URLUnencoded([retval, out] BSTR *p);
}

/*****************************************************************************
 *    IHTMLDocument5 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f80c-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDocument5 : IDispatch
{
    [propput, id(DISPID_IHTMLDOCUMENT5_ONMOUSEWHEEL), displaybind, bindable]
    HRESULT onmousewheel([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT5_ONMOUSEWHEEL), displaybind, bindable]
    HRESULT onmousewheel([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLDOCUMENT5_DOCTYPE)]
    HRESULT doctype([retval, out] IHTMLDOMNode **p);

    [propget, id(DISPID_IHTMLDOCUMENT5_IMPLEMENTATION)]
    HRESULT implementation([retval, out] IHTMLDOMImplementation **p);

    [id(DISPID_IHTMLDOCUMENT5_CREATEATTRIBUTE)]
    HRESULT createAttribute(
        [in] BSTR bstrattrName,
        [retval, out] IHTMLDOMAttribute **ppattribute);

    [id(DISPID_IHTMLDOCUMENT5_CREATECOMMENT)]
    HRESULT createComment(
        [in] BSTR bstrdata,
        [retval, out] IHTMLDOMNode **ppRetNode);

    [propput, id(DISPID_IHTMLDOCUMENT5_ONFOCUSIN), displaybind, bindable]
    HRESULT onfocusin([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT5_ONFOCUSIN), displaybind, bindable]
    HRESULT onfocusin([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT5_ONFOCUSOUT), displaybind, bindable]
    HRESULT onfocusout([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT5_ONFOCUSOUT), displaybind, bindable]
    HRESULT onfocusout([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT5_ONACTIVATE), displaybind, bindable]
    HRESULT onactivate([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT5_ONACTIVATE), displaybind, bindable]
    HRESULT onactivate([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT5_ONDEACTIVATE), displaybind, bindable]
    HRESULT ondeactivate([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT5_ONDEACTIVATE), displaybind, bindable]
    HRESULT ondeactivate([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT5_ONBEFOREACTIVATE), displaybind, bindable]
    HRESULT onbeforeactivate([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT5_ONBEFOREACTIVATE), displaybind, bindable]
    HRESULT onbeforeactivate([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT5_ONBEFOREDEACTIVATE), displaybind, bindable]
    HRESULT onbeforedeactivate([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT5_ONBEFOREDEACTIVATE), displaybind, bindable]
    HRESULT onbeforedeactivate([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLDOCUMENT5_COMPATMODE)]
    HRESULT compatMode([retval, out] BSTR *p);
}

/*****************************************************************************
 *    IHTMLDocument6 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510417-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDocument6 : IDispatch
{
    [propget, id(DISPID_IHTMLDOCUMENT6_COMPATIBLE)]
    HRESULT compatible([retval, out] IHTMLDocumentCompatibleInfoCollection **p);

    [propget, id(DISPID_IHTMLDOCUMENT6_DOCUMENTMODE)]
    HRESULT documentMode([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT6_ONSTORAGE), displaybind, bindable]
    HRESULT onstorage([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT6_ONSTORAGE), displaybind, bindable]
    HRESULT onstorage([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT6_ONSTORAGECOMMIT), displaybind, bindable]
    HRESULT onstoragecommit([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT6_ONSTORAGECOMMIT), displaybind, bindable]
    HRESULT onstoragecommit([retval, out] VARIANT *p);

    [id(DISPID_IHTMLDOCUMENT6_IE8_GETELEMENTBYID)]
    HRESULT getElementById(
        [in] BSTR bstrId,
        [retval, out] IHTMLElement2 **p);

    [id(DISPID_IHTMLDOCUMENT6_UPDATESETTINGS)]
    HRESULT updateSettings();
}

/*****************************************************************************
 *    IHTMLDocument7 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104b8-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDocument7 : IDispatch
{
    [propget, id(DISPID_IHTMLDOCUMENT7_DEFAULTVIEW)]
    HRESULT defaultView([out, retval] IHTMLWindow2 **p);

    [id(DISPID_IHTMLDOCUMENT7_CREATECDATASECTION)]
    HRESULT createCDATASection(
        [in] BSTR text,
        [out, retval] IHTMLDOMNode **newCDATASectionNode);

    [id(DISPID_IHTMLDOCUMENT7_GETSELECTION)]
    HRESULT getSelection([out, retval] IHTMLSelection **ppIHTMLSelection);

    [id(DISPID_IHTMLDOCUMENT7_GETELEMENTSBYTAGNAMENS)]
    HRESULT getElementsByTagNameNS(
        [in] VARIANT *pvarNS,
        [in] BSTR bstrLocalName,
        [out, retval] IHTMLElementCollection **pelColl);

    [id(DISPID_IHTMLDOCUMENT7_CREATEELEMENTNS)]
    HRESULT createElementNS(
        [in] VARIANT *pvarNS,
        [in] BSTR bstrTag,
        [out, retval] IHTMLElement **newElem);

    [id(DISPID_IHTMLDOCUMENT7_CREATEATTRIBUTENS)]
    HRESULT createAttributeNS(
        [in] VARIANT *pvarNS,
        [in] BSTR bstrAttrName,
        [out, retval] IHTMLDOMAttribute **ppAttribute);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONMSTHUMBNAILCLICK), displaybind, bindable]
    HRESULT onmsthumbnailclick([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONMSTHUMBNAILCLICK), displaybind, bindable]
    HRESULT onmsthumbnailclick([out, retval] VARIANT *p);

    [propget, id(DISPID_IHTMLDOCUMENT7_CHARACTERSET)]
    HRESULT characterSet([out, retval] BSTR *p);

    [id(DISPID_IHTMLDOCUMENT7_IE9_CREATEELEMENT)]
    HRESULT createElement(
        [in] BSTR bstrTag,
        [out, retval] IHTMLElement **newElem);

    [id(DISPID_IHTMLDOCUMENT7_IE9_CREATEATTRIBUTE)]
    HRESULT createAttribute(
        [in] BSTR bstrAttrName,
        [out, retval] IHTMLDOMAttribute **ppAttribute);

    [id(DISPID_IHTMLDOCUMENT7_GETELEMENTSBYCLASSNAME)]
    HRESULT getElementsByClassName(
        [in] BSTR v,
        [out, retval] IHTMLElementCollection **pel);

    [id(DISPID_IHTMLDOCUMENT7_CREATEPROCESSINGINSTRUCTION)]
    HRESULT createProcessingInstruction(
        [in] BSTR bstrTarget,
        [in] BSTR bstrData,
        [out, retval] IDOMProcessingInstruction **newProcessingInstruction);

    [id(DISPID_IHTMLDOCUMENT7_ADOPTNODE)]
    HRESULT adoptNode(
        [in] IHTMLDOMNode *pNodeSource,
        [out, retval] IHTMLDOMNode3 **ppNodeDest);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONMSSITEMODEJUMPLISTITEMREMOVED), displaybind, bindable]
    HRESULT onmssitemodejumplistitemremoved([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONMSSITEMODEJUMPLISTITEMREMOVED), displaybind, bindable]
    HRESULT onmssitemodejumplistitemremoved([out, retval] VARIANT *p);

    [propget, id(DISPID_IHTMLDOCUMENT7_IE9_ALL)]
    HRESULT all([out, retval] IHTMLElementCollection **p);

    [propget, id(DISPID_IHTMLDOCUMENT7_INPUTENCODING)]
    HRESULT inputEncoding([out, retval] BSTR *p);

    [propget, id(DISPID_IHTMLDOCUMENT7_XMLENCODING)]
    HRESULT xmlEncoding([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_XMLSTANDALONE)]
    HRESULT xmlStandalone([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLDOCUMENT7_XMLSTANDALONE)]
    HRESULT xmlStandalone([out, retval] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_XMLVERSION)]
    HRESULT xmlVersion([in] BSTR v);

    [propget, id(DISPID_IHTMLDOCUMENT7_XMLVERSION)]
    HRESULT xmlVersion([out, retval] BSTR *p);

    [id(DISPID_IHTMLDOCUMENT7_HASATTRIBUTES)]
    HRESULT hasAttributes([out, retval] VARIANT_BOOL *pfHasAttributes);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONABORT), displaybind, bindable]
    HRESULT onabort([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONABORT), displaybind, bindable]
    HRESULT onabort([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONBLUR), displaybind, bindable]
    HRESULT onblur([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONBLUR), displaybind, bindable]
    HRESULT onblur([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONCANPLAY), displaybind, bindable]
    HRESULT oncanplay([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONCANPLAY), displaybind, bindable]
    HRESULT oncanplay([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONCANPLAYTHROUGH), displaybind, bindable]
    HRESULT oncanplaythrough([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONCANPLAYTHROUGH), displaybind, bindable]
    HRESULT oncanplaythrough([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONCHANGE), displaybind, bindable]
    HRESULT onchange([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONCHANGE), displaybind, bindable]
    HRESULT onchange([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONDRAG), displaybind, bindable]
    HRESULT ondrag([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONDRAG), displaybind, bindable]
    HRESULT ondrag([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONDRAGEND), displaybind, bindable]
    HRESULT ondragend([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONDRAGEND), displaybind, bindable]
    HRESULT ondragend([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONDRAGENTER), displaybind, bindable]
    HRESULT ondragenter([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONDRAGENTER), displaybind, bindable]
    HRESULT ondragenter([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONDRAGLEAVE), displaybind, bindable]
    HRESULT ondragleave([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONDRAGLEAVE), displaybind, bindable]
    HRESULT ondragleave([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONDRAGOVER), displaybind, bindable]
    HRESULT ondragover([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONDRAGOVER), displaybind, bindable]
    HRESULT ondragover([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONDROP), displaybind, bindable]
    HRESULT ondrop([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONDROP), displaybind, bindable]
    HRESULT ondrop([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONDURATIONCHANGE), displaybind, bindable]
    HRESULT ondurationchange([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONDURATIONCHANGE), displaybind, bindable]
    HRESULT ondurationchange([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONEMPTIED), displaybind, bindable]
    HRESULT onemptied([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONEMPTIED), displaybind, bindable]
    HRESULT onemptied([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONENDED), displaybind, bindable]
    HRESULT onended([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONENDED), displaybind, bindable]
    HRESULT onended([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONERROR), displaybind, bindable]
    HRESULT onerror([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONERROR), displaybind, bindable]
    HRESULT onerror([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONFOCUS), displaybind, bindable]
    HRESULT onfocus([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONFOCUS), displaybind, bindable]
    HRESULT onfocus([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONINPUT), displaybind, bindable]
    HRESULT oninput([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONINPUT), displaybind, bindable]
    HRESULT oninput([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONLOAD), displaybind, bindable]
    HRESULT onload([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONLOAD), displaybind, bindable]
    HRESULT onload([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONLOADEDDATA), displaybind, bindable]
    HRESULT onloadeddata([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONLOADEDDATA), displaybind, bindable]
    HRESULT onloadeddata([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONLOADEDMETADATA), displaybind, bindable]
    HRESULT onloadedmetadata([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONLOADEDMETADATA), displaybind, bindable]
    HRESULT onloadedmetadata([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONLOADSTART), displaybind, bindable]
    HRESULT onloadstart([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONLOADSTART), displaybind, bindable]
    HRESULT onloadstart([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONPAUSE), displaybind, bindable]
    HRESULT onpause([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONPAUSE), displaybind, bindable]
    HRESULT onpause([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONPLAY), displaybind, bindable]
    HRESULT onplay([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONPLAY), displaybind, bindable]
    HRESULT onplay([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONPLAYING), displaybind, bindable]
    HRESULT onplaying([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONPLAYING), displaybind, bindable]
    HRESULT onplaying([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONPROGRESS), displaybind, bindable]
    HRESULT onprogress([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONPROGRESS), displaybind, bindable]
    HRESULT onprogress([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONRATECHANGE), displaybind, bindable]
    HRESULT onratechange([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONRATECHANGE), displaybind, bindable]
    HRESULT onratechange([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONRESET), displaybind, bindable]
    HRESULT onreset([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONRESET), displaybind, bindable]
    HRESULT onreset([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONSCROLL), displaybind, bindable]
    HRESULT onscroll([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONSCROLL), displaybind, bindable]
    HRESULT onscroll([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONSEEKED), displaybind, bindable]
    HRESULT onseeked([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONSEEKED), displaybind, bindable]
    HRESULT onseeked([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONSEEKING), displaybind, bindable]
    HRESULT onseeking([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONSEEKING), displaybind, bindable]
    HRESULT onseeking([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONSELECT), displaybind, bindable]
    HRESULT onselect([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONSELECT), displaybind, bindable]
    HRESULT onselect([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONSTALLED), displaybind, bindable]
    HRESULT onstalled([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONSTALLED), displaybind, bindable]
    HRESULT onstalled([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONSUBMIT), displaybind, bindable]
    HRESULT onsubmit([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONSUBMIT), displaybind, bindable]
    HRESULT onsubmit([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONSUSPEND), displaybind, bindable]
    HRESULT onsuspend([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONSUSPEND), displaybind, bindable]
    HRESULT onsuspend([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONTIMEUPDATE), displaybind, bindable]
    HRESULT ontimeupdate([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONTIMEUPDATE), displaybind, bindable]
    HRESULT ontimeupdate([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONVOLUMECHANGE), displaybind, bindable]
    HRESULT onvolumechange([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONVOLUMECHANGE), displaybind, bindable]
    HRESULT onvolumechange([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT7_ONWAITING), displaybind, bindable]
    HRESULT onwaiting([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT7_ONWAITING), displaybind, bindable]
    HRESULT onwaiting([out, retval] VARIANT *p);

    [id(DISPID_IHTMLDOCUMENT7_NORMALIZE)]
    HRESULT normalize();

    [id(DISPID_IHTMLDOCUMENT7_IMPORTNODE)]
    HRESULT importNode(
        [in] IHTMLDOMNode *pNodeSource,
        [in] VARIANT_BOOL fDeep,
        [out, retval] IHTMLDOMNode3 **ppNodeDest);

    [propget, id(DISPID_IHTMLDOCUMENT7_IE9_PARENTWINDOW)]
    HRESULT parentWindow([out, retval] IHTMLWindow2 **p);

    [propputref, id(DISPID_IHTMLDOCUMENT7_IE9_BODY)]
    HRESULT body([in] IHTMLElement *v);

    [propget, id(DISPID_IHTMLDOCUMENT7_IE9_BODY)]
    HRESULT body([out, retval] IHTMLElement **p);

    [propget, id(DISPID_IHTMLDOCUMENT7_HEAD)]
    HRESULT head([out, retval] IHTMLElement **p);
}

/*****************************************************************************
 *    IHTMLDocument8 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305107d0-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDocument8 : IDispatch
{
    [propput, id(DISPID_IHTMLDOCUMENT8_ONMSCONTENTZOOM), displaybind, bindable]
    HRESULT onmscontentzoom([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT8_ONMSCONTENTZOOM), displaybind, bindable]
    HRESULT onmscontentzoom([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT8_ONMSPOINTERDOWN), displaybind, bindable]
    HRESULT onmspointerdown([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT8_ONMSPOINTERDOWN), displaybind, bindable]
    HRESULT onmspointerdown([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT8_ONMSPOINTERMOVE), displaybind, bindable]
    HRESULT onmspointermove([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT8_ONMSPOINTERMOVE), displaybind, bindable]
    HRESULT onmspointermove([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT8_ONMSPOINTERUP), displaybind, bindable]
    HRESULT onmspointerup([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT8_ONMSPOINTERUP), displaybind, bindable]
    HRESULT onmspointerup([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT8_ONMSPOINTEROVER), displaybind, bindable]
    HRESULT onmspointerover([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT8_ONMSPOINTEROVER), displaybind, bindable]
    HRESULT onmspointerover([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT8_ONMSPOINTEROUT), displaybind, bindable]
    HRESULT onmspointerout([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT8_ONMSPOINTEROUT), displaybind, bindable]
    HRESULT onmspointerout([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT8_ONMSPOINTERCANCEL), displaybind, bindable]
    HRESULT onmspointercancel([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT8_ONMSPOINTERCANCEL), displaybind, bindable]
    HRESULT onmspointercancel([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT8_ONMSPOINTERHOVER), displaybind, bindable]
    HRESULT onmspointerhover([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT8_ONMSPOINTERHOVER), displaybind, bindable]
    HRESULT onmspointerhover([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT8_ONMSGESTURESTART), displaybind, bindable]
    HRESULT onmsgesturestart([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT8_ONMSGESTURESTART), displaybind, bindable]
    HRESULT onmsgesturestart([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT8_ONMSGESTURECHANGE), displaybind, bindable]
    HRESULT onmsgesturechange([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT8_ONMSGESTURECHANGE), displaybind, bindable]
    HRESULT onmsgesturechange([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT8_ONMSGESTUREEND), displaybind, bindable]
    HRESULT onmsgestureend([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT8_ONMSGESTUREEND), displaybind, bindable]
    HRESULT onmsgestureend([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT8_ONMSGESTUREHOLD), displaybind, bindable]
    HRESULT onmsgesturehold([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT8_ONMSGESTUREHOLD), displaybind, bindable]
    HRESULT onmsgesturehold([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT8_ONMSGESTURETAP), displaybind, bindable]
    HRESULT onmsgesturetap([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT8_ONMSGESTURETAP), displaybind, bindable]
    HRESULT onmsgesturetap([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT8_ONMSGESTUREDOUBLETAP), displaybind, bindable]
    HRESULT onmsgesturedoubletap([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT8_ONMSGESTUREDOUBLETAP), displaybind, bindable]
    HRESULT onmsgesturedoubletap([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT8_ONMSINERTIASTART), displaybind, bindable]
    HRESULT onmsinertiastart([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT8_ONMSINERTIASTART), displaybind, bindable]
    HRESULT onmsinertiastart([out, retval] VARIANT *p);

    [id(DISPID_IHTMLDOCUMENT8_ELEMENTSFROMPOINT)]
    HRESULT elementsFromPoint(
            [in] float x,
            [in] float y,
            [out, retval] IHTMLDOMChildrenCollection **elementsHit);

    [id(DISPID_IHTMLDOCUMENT8_ELEMENTSFROMRECT)]
    HRESULT elementsFromRect(
            [in] float left,
            [in] float top,
            [in] float width,
            [in] float height,
            [out, retval] IHTMLDOMChildrenCollection **elementsHit);

    [propput, id(DISPID_IHTMLDOCUMENT8_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable]
    HRESULT onmsmanipulationstatechanged([in] VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT8_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable]
    HRESULT onmsmanipulationstatechanged([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLDOCUMENT8_MSCAPSLOCKWARNINGOFF)]
    HRESULT msCapsLockWarningOff([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLDOCUMENT8_MSCAPSLOCKWARNINGOFF)]
    HRESULT msCapsLockWarningOff([out, retval] VARIANT_BOOL *p);
}

/*****************************************************************************
 *    IDocumentEvent interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104bc-98b5-11cf-bb82-00aa00bdce0b)
]
interface IDocumentEvent : IDispatch
{
    [id(DISPID_IDOCUMENTEVENT_CREATEEVENT)]
    HRESULT createEvent([in] BSTR eventType, [out, retval] IDOMEvent **ppEvent);
}

/*****************************************************************************
 *    IDocumentSelector interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510462-98b5-11cf-bb82-00aa00bdce0b)
]
interface IDocumentSelector : IDispatch
{
    [id(DISPID_IDOCUMENTSELECTOR_QUERYSELECTOR)]
    HRESULT querySelector(
        [in] BSTR v,
        [out, retval] IHTMLElement **pel);

    [id(DISPID_IDOCUMENTSELECTOR_QUERYSELECTORALL)]
    HRESULT querySelectorAll(
        [in] BSTR v,
        [out, retval] IHTMLDOMChildrenCollection **pel);
}

[
    odl,
    oleautomation,
    dual,
    uuid(305104af-98b5-11cf-bb82-00aa00bdce0b)
]
interface IDocumentRange : IDispatch
{
    [id(DISPID_IDOCUMENTRANGE_CREATERANGE)]
    HRESULT createRange(
        [out, retval] IHTMLDOMRange **ppIHTMLDOMRange);
}

/*****************************************************************************
 *    DispHTMLDocument dispinterface
 */
[
    hidden,
    uuid(3050f55f-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLDocument
{
properties:
methods:
    [propget, id(DISPID_IHTMLDOCUMENT_SCRIPT), hidden, nonbrowsable]
    IDispatch *Script();

    [propget, id(DISPID_IHTMLDOCUMENT2_ALL)]
    IHTMLElementCollection *all();

    [propget, id(DISPID_IHTMLDOCUMENT2_BODY)]
    IHTMLElement *body();

    [propget, id(DISPID_IHTMLDOCUMENT2_ACTIVEELEMENT)]
    IHTMLElement *activeElement();

    [propget, id(DISPID_IHTMLDOCUMENT2_IMAGES)]
    IHTMLElementCollection *images();

    [propget, id(DISPID_IHTMLDOCUMENT2_APPLETS)]
    IHTMLElementCollection *applets();

    [propget, id(DISPID_IHTMLDOCUMENT2_LINKS)]
    IHTMLElementCollection *links();

    [propget, id(DISPID_IHTMLDOCUMENT2_FORMS)]
    IHTMLElementCollection *forms();

    [propget, id(DISPID_IHTMLDOCUMENT2_ANCHORS)]
    IHTMLElementCollection *anchors();

    [propput, id(DISPID_IHTMLDOCUMENT2_TITLE)]
    void title(BSTR v);

    [propget, id(DISPID_IHTMLDOCUMENT2_TITLE)]
    BSTR title();

    [propget, id(DISPID_IHTMLDOCUMENT2_SCRIPTS)]
    IHTMLElementCollection *scripts();

    [propput, id(DISPID_IHTMLDOCUMENT2_DESIGNMODE), hidden]
    void designMode(BSTR v);

    [propget, id(DISPID_IHTMLDOCUMENT2_DESIGNMODE), hidden]
    BSTR designMode();

    [propget, id(DISPID_IHTMLDOCUMENT2_SELECTION)]
    IHTMLSelectionObject *selection();

    [propget, id(DISPID_IHTMLDOCUMENT2_READYSTATE), bindable]
    BSTR readyState();

    [propget, id(DISPID_IHTMLDOCUMENT2_FRAMES)]
    IHTMLFramesCollection2 *frames();

    [propget, id(DISPID_IHTMLDOCUMENT2_EMBEDS)]
    IHTMLElementCollection *embeds();

    [propget, id(DISPID_IHTMLDOCUMENT2_PLUGINS)]
    IHTMLElementCollection *plugins();

    [propput, id(DISPID_IHTMLDOCUMENT2_ALINKCOLOR)]
    void alinkColor(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ALINKCOLOR)]
    VARIANT alinkColor();

    [propput, id(DISPID_IHTMLDOCUMENT2_BGCOLOR)]
    void bgColor(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_BGCOLOR)]
    VARIANT bgColor();

    [propput, id(DISPID_IHTMLDOCUMENT2_FGCOLOR)]
    void fgColor(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_FGCOLOR)]
    VARIANT fgColor();

    [propput, id(DISPID_IHTMLDOCUMENT2_LINKCOLOR)]
    void linkColor(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_LINKCOLOR)]
    VARIANT linkColor();

    [propput, id(DISPID_IHTMLDOCUMENT2_VLINKCOLOR)]
    void vlinkColor(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_VLINKCOLOR)]
    VARIANT vlinkColor();

    [propget, id(DISPID_IHTMLDOCUMENT2_REFERRER)]
    BSTR referrer();

    [propget, id(DISPID_IHTMLDOCUMENT2_LOCATION)]
    IHTMLLocation *location();

    [propget, id(DISPID_IHTMLDOCUMENT2_LASTMODIFIED)]
    BSTR lastModified();

    [propput, id(DISPID_IHTMLDOCUMENT2_URL)]
    void URL(BSTR v);

    [propget, id(DISPID_IHTMLDOCUMENT2_URL)]
    BSTR URL();

    [propput, id(DISPID_IHTMLDOCUMENT2_DOMAIN)]
    void domain(BSTR v);

    [propget, id(DISPID_IHTMLDOCUMENT2_DOMAIN)]
    BSTR domain();

    [propput, id(DISPID_IHTMLDOCUMENT2_COOKIE)]
    void cookie(BSTR v);

    [propget, id(DISPID_IHTMLDOCUMENT2_COOKIE)]
    BSTR cookie();

    [propput, id(DISPID_IHTMLDOCUMENT2_EXPANDO), bindable, hidden]
    void expando(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLDOCUMENT2_EXPANDO), bindable, hidden]
    VARIANT_BOOL expando();

    [propput, id(DISPID_IHTMLDOCUMENT2_CHARSET), hidden]
    void charset(BSTR v);

    [propget, id(DISPID_IHTMLDOCUMENT2_CHARSET), hidden]
    BSTR charset();

    [propput, id(DISPID_IHTMLDOCUMENT2_DEFAULTCHARSET)]
    void defaultCharset(BSTR v);

    [propget, id(DISPID_IHTMLDOCUMENT2_DEFAULTCHARSET)]
    BSTR defaultCharset();

    [propget, id(DISPID_IHTMLDOCUMENT2_MIMETYPE)]
    BSTR mimeType();

    [propget, id(DISPID_IHTMLDOCUMENT2_FILESIZE)]
    BSTR fileSize();

    [propget, id(DISPID_IHTMLDOCUMENT2_FILECREATEDDATE)]
    BSTR fileCreatedDate();

    [propget, id(DISPID_IHTMLDOCUMENT2_FILEMODIFIEDDATE)]
    BSTR fileModifiedDate();

    [propget, id(DISPID_IHTMLDOCUMENT2_FILEUPDATEDDATE)]
    BSTR fileUpdatedDate();

    [propget, id(DISPID_IHTMLDOCUMENT2_SECURITY)]
    BSTR security();

    [propget, id(DISPID_IHTMLDOCUMENT2_PROTOCOL)]
    BSTR protocol();

    [propget, id(DISPID_IHTMLDOCUMENT2_NAMEPROP)]
    BSTR nameProp();

    [vararg, id(DISPID_IHTMLDOCUMENT2_WRITE)]
    void write([in] SAFEARRAY(VARIANT) psarray);

    [vararg, id(DISPID_IHTMLDOCUMENT2_WRITELN)]
    void writeln([in] SAFEARRAY(VARIANT) psarray);

    [id(DISPID_IHTMLDOCUMENT2_OPEN)]
    IDispatch *open(
        [defaultvalue("text/html"), in] BSTR url,
        [optional, in] VARIANT name,
        [optional, in] VARIANT features,
        [optional, in] VARIANT replace);

    [id(DISPID_IHTMLDOCUMENT2_CLOSE)]
    void close();

    [id(DISPID_IHTMLDOCUMENT2_CLEAR)]
    void clear();

    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDSUPPORTED)]
    VARIANT_BOOL queryCommandSupported([in] BSTR cmdID);

    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDENABLED)]
    VARIANT_BOOL queryCommandEnabled([in] BSTR cmdID);

    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDSTATE)]
    VARIANT_BOOL queryCommandState([in] BSTR cmdID);

    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDINDETERM)]
    VARIANT_BOOL queryCommandIndeterm([in] BSTR cmdID);

    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDTEXT)]
    BSTR queryCommandText([in] BSTR cmdID);

    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDVALUE)]
    VARIANT queryCommandValue([in] BSTR cmdID);

    [id(DISPID_IHTMLDOCUMENT2_EXECCOMMAND)]
    VARIANT_BOOL execCommand(
        [in] BSTR cmdID,
        [defaultvalue(0), in] VARIANT_BOOL showUI,
        [optional, in] VARIANT value);

    [id(DISPID_IHTMLDOCUMENT2_EXECCOMMANDSHOWHELP)]
    VARIANT_BOOL execCommandShowHelp([in] BSTR cmdID);

    [id(DISPID_IHTMLDOCUMENT2_CREATEELEMENT)]
    IHTMLElement *createElement([in] BSTR eTag);

    [propput, id(DISPID_IHTMLDOCUMENT2_ONHELP), displaybind, bindable]
    void onhelp(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONHELP), displaybind, bindable]
    VARIANT onhelp();

    [propput, id(DISPID_IHTMLDOCUMENT2_ONCLICK), displaybind, bindable]
    void onclick(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONCLICK), displaybind, bindable]
    VARIANT onclick();

    [propput, id(DISPID_IHTMLDOCUMENT2_ONDBLCLICK), displaybind, bindable]
    void ondblclick(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONDBLCLICK), displaybind, bindable]
    VARIANT ondblclick();

    [propput, id(DISPID_IHTMLDOCUMENT2_ONKEYUP), displaybind, bindable]
    void onkeyup(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONKEYUP), displaybind, bindable]
    VARIANT onkeyup();

    [propput, id(DISPID_IHTMLDOCUMENT2_ONKEYDOWN), displaybind, bindable]
    void onkeydown(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONKEYDOWN), displaybind, bindable]
    VARIANT onkeydown();

    [propput, id(DISPID_IHTMLDOCUMENT2_ONKEYPRESS), displaybind, bindable]
    void onkeypress(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONKEYPRESS), displaybind, bindable]
    VARIANT onkeypress();

    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEUP), displaybind, bindable]
    void onmouseup(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEUP), displaybind, bindable]
    VARIANT onmouseup();

    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEDOWN), displaybind, bindable]
    void onmousedown(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEDOWN), displaybind, bindable]
    VARIANT onmousedown();

    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEMOVE), displaybind, bindable]
    void onmousemove(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEMOVE), displaybind, bindable]
    VARIANT onmousemove();

    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOUT), displaybind, bindable]
    void onmouseout(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOUT), displaybind, bindable]
    VARIANT onmouseout();

    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOVER), displaybind, bindable]
    void onmouseover(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOVER), displaybind, bindable]
    VARIANT onmouseover();

    [propput, id(DISPID_IHTMLDOCUMENT2_ONREADYSTATECHANGE), displaybind, bindable]
    void onreadystatechange(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONREADYSTATECHANGE), displaybind, bindable]
    VARIANT onreadystatechange();

    [propput, id(DISPID_IHTMLDOCUMENT2_ONAFTERUPDATE), displaybind, bindable]
    void onafterupdate(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONAFTERUPDATE), displaybind, bindable]
    VARIANT onafterupdate();

    [propput, id(DISPID_IHTMLDOCUMENT2_ONROWEXIT), displaybind, bindable]
    void onrowexit(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONROWEXIT), displaybind, bindable]
    VARIANT onrowexit();

    [propput, id(DISPID_IHTMLDOCUMENT2_ONROWENTER), displaybind, bindable]
    void onrowenter(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONROWENTER), displaybind, bindable]
    VARIANT onrowenter();

    [propput, id(DISPID_IHTMLDOCUMENT2_ONDRAGSTART), displaybind, bindable]
    void ondragstart(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONDRAGSTART), displaybind, bindable]
    VARIANT ondragstart();

    [propput, id(DISPID_IHTMLDOCUMENT2_ONSELECTSTART), displaybind, bindable]
    void onselectstart(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONSELECTSTART), displaybind, bindable]
    VARIANT onselectstart();

    [id(DISPID_IHTMLDOCUMENT2_ELEMENTFROMPOINT)]
    IHTMLElement *elementFromPoint(
        [in] LONG x,
        [in] LONG y);

    [propget, id(DISPID_IHTMLDOCUMENT2_PARENTWINDOW)]
    IHTMLWindow2 *parentWindow();

    [propget, id(DISPID_IHTMLDOCUMENT2_STYLESHEETS)]
    IHTMLStyleSheetsCollection *styleSheets();

    [propput, id(DISPID_IHTMLDOCUMENT2_ONBEFOREUPDATE), displaybind, bindable]
    void onbeforeupdate(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONBEFOREUPDATE), displaybind, bindable]
    VARIANT onbeforeupdate();

    [propput, id(DISPID_IHTMLDOCUMENT2_ONERRORUPDATE), displaybind, bindable]
    void onerrorupdate(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT2_ONERRORUPDATE), displaybind, bindable]
    VARIANT onerrorupdate();

    [id(DISPID_IHTMLDOCUMENT2_TOSTRING)]
    BSTR toString();

    [id(DISPID_IHTMLDOCUMENT2_CREATESTYLESHEET)]
    IHTMLStyleSheet *createStyleSheet(
        [defaultvalue(""), in] BSTR bstrHref,
        [defaultvalue(-1), in] LONG lIndex);

    [id(DISPID_IHTMLDOCUMENT3_RELEASECAPTURE)]
    void releaseCapture();

    [id(DISPID_IHTMLDOCUMENT3_RECALC)]
    void recalc([defaultvalue(0), in] VARIANT_BOOL fForce);

    [id(DISPID_IHTMLDOCUMENT3_CREATETEXTNODE)]
    IHTMLDOMNode *createTextNode([in] BSTR text);

    [propget, id(DISPID_IHTMLDOCUMENT3_DOCUMENTELEMENT)]
    IHTMLElement *documentElement();

    [propget, id(DISPID_IHTMLDOCUMENT3_UNIQUEID), hidden]
    BSTR uniqueID();

    [id(DISPID_IHTMLDOCUMENT3_ATTACHEVENT)]
    VARIANT_BOOL attachEvent(
        [in] BSTR event,
        [in] IDispatch *pDisp);

    [id(DISPID_IHTMLDOCUMENT3_DETACHEVENT)]
    void detachEvent(
        [in] BSTR event,
        [in] IDispatch *pDisp);

    [propput, id(DISPID_IHTMLDOCUMENT3_ONROWSDELETE), displaybind, bindable]
    void onrowsdelete(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT3_ONROWSDELETE), displaybind, bindable]
    VARIANT onrowsdelete();

    [propput, id(DISPID_IHTMLDOCUMENT3_ONROWSINSERTED), displaybind, bindable]
    void onrowsinserted(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT3_ONROWSINSERTED), displaybind, bindable]
    VARIANT onrowsinserted();

    [propput, id(DISPID_IHTMLDOCUMENT3_ONCELLCHANGE), displaybind, bindable]
    void oncellchange(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT3_ONCELLCHANGE), displaybind, bindable]
    VARIANT oncellchange();

    [propput, id(DISPID_IHTMLDOCUMENT3_ONDATASETCHANGED), displaybind, bindable]
    void ondatasetchanged(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT3_ONDATASETCHANGED), displaybind, bindable]
    VARIANT ondatasetchanged();

    [propput, id(DISPID_IHTMLDOCUMENT3_ONDATAAVAILABLE), displaybind, bindable]
    void ondataavailable(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT3_ONDATAAVAILABLE), displaybind, bindable]
    VARIANT ondataavailable();

    [propput, id(DISPID_IHTMLDOCUMENT3_ONDATASETCOMPLETE), displaybind, bindable]
    void ondatasetcomplete(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT3_ONDATASETCOMPLETE), displaybind, bindable]
    VARIANT ondatasetcomplete();

    [propput, id(DISPID_IHTMLDOCUMENT3_ONPROPERTYCHANGE), displaybind, bindable]
    void onpropertychange(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT3_ONPROPERTYCHANGE), displaybind, bindable]
    VARIANT onpropertychange();

    [propput, id(DISPID_IHTMLDOCUMENT3_DIR)]
    void dir(BSTR v);

    [propget, id(DISPID_IHTMLDOCUMENT3_DIR)]
    BSTR dir();

    [propput, id(DISPID_IHTMLDOCUMENT3_ONCONTEXTMENU), displaybind, bindable]
    void oncontextmenu(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT3_ONCONTEXTMENU), displaybind, bindable]
    VARIANT oncontextmenu();

    [propput, id(DISPID_IHTMLDOCUMENT3_ONSTOP), displaybind, bindable]
    void onstop(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT3_ONSTOP), displaybind, bindable]
    VARIANT onstop();

    [id(DISPID_IHTMLDOCUMENT3_CREATEDOCUMENTFRAGMENT)]
    IHTMLDocument2 *createDocumentFragment();

    [propget, id(DISPID_IHTMLDOCUMENT3_PARENTDOCUMENT), hidden, restricted]
    IHTMLDocument2 *parentDocument();

    [propput, id(DISPID_IHTMLDOCUMENT3_ENABLEDOWNLOAD), hidden, restricted]
    void enableDownload(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLDOCUMENT3_ENABLEDOWNLOAD), hidden, restricted]
    VARIANT_BOOL enableDownload();

    [propput, id(DISPID_IHTMLDOCUMENT3_BASEURL), hidden, restricted]
    void baseUrl(BSTR v);

    [propget, id(DISPID_IHTMLDOCUMENT3_BASEURL), hidden, restricted]
    BSTR baseUrl();

    [propput, id(DISPID_IHTMLDOCUMENT3_INHERITSTYLESHEETS), hidden, restricted]
    void inheritStyleSheets(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLDOCUMENT3_INHERITSTYLESHEETS), hidden, restricted]
    VARIANT_BOOL inheritStyleSheets();

    [propput, id(DISPID_IHTMLDOCUMENT3_ONBEFOREEDITFOCUS), displaybind, bindable]
    void onbeforeeditfocus(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT3_ONBEFOREEDITFOCUS), displaybind, bindable]
    VARIANT onbeforeeditfocus();

    [id(DISPID_IHTMLDOCUMENT3_GETELEMENTSBYNAME)]
    IHTMLElementCollection *getElementsByName([in] BSTR v);

    [id(DISPID_IHTMLDOCUMENT3_GETELEMENTBYID)]
    IHTMLElement *getElementById([in] BSTR v);

    [id(DISPID_IHTMLDOCUMENT3_GETELEMENTSBYTAGNAME)]
    IHTMLElementCollection *getElementsByTagName([in] BSTR v);

    [id(DISPID_IHTMLDOCUMENT4_FOCUS)]
    void focus();

    [id(DISPID_IHTMLDOCUMENT4_HASFOCUS)]
    VARIANT_BOOL hasFocus();

    [propput, id(DISPID_IHTMLDOCUMENT4_ONSELECTIONCHANGE), displaybind, bindable]
    void onselectionchange(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT4_ONSELECTIONCHANGE), displaybind, bindable]
    VARIANT onselectionchange();

    [propget, id(DISPID_IHTMLDOCUMENT4_NAMESPACES)]
    IDispatch *namespaces();

    [id(DISPID_IHTMLDOCUMENT4_CREATEDOCUMENTFROMURL)]
    IHTMLDocument2 *createDocumentFromUrl(
        [in] BSTR bstrUrl,
        [in] BSTR bstrOptions);

    [propput, id(DISPID_IHTMLDOCUMENT4_MEDIA)]
    void media(BSTR v);

    [propget, id(DISPID_IHTMLDOCUMENT4_MEDIA)]
    BSTR media();

    [id(DISPID_IHTMLDOCUMENT4_CREATEEVENTOBJECT)]
    IHTMLEventObj *createEventObject([optional, in] VARIANT *pvarEventObject);

    [id(DISPID_IHTMLDOCUMENT4_FIREEVENT)]
    VARIANT_BOOL fireEvent(
        [in] BSTR bstrEventName,
        [optional, in] VARIANT *pvarEventObject);

    [id(DISPID_IHTMLDOCUMENT4_CREATERENDERSTYLE)]
    IHTMLRenderStyle *createRenderStyle([in] BSTR v);

    [propput, id(DISPID_IHTMLDOCUMENT4_ONCONTROLSELECT), displaybind, bindable]
    void oncontrolselect(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT4_ONCONTROLSELECT), displaybind, bindable]
    VARIANT oncontrolselect();

    [propget, id(DISPID_IHTMLDOCUMENT4_URLUNENCODED)]
    BSTR URLUnencoded();

    [propput, id(DISPID_IHTMLDOCUMENT5_ONMOUSEWHEEL), displaybind, bindable]
    void onmousewheel(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT5_ONMOUSEWHEEL), displaybind, bindable]
    VARIANT onmousewheel();

    [propget, id(DISPID_IHTMLDOCUMENT5_DOCTYPE)]
    IHTMLDOMNode *doctype();

    [propget, id(DISPID_IHTMLDOCUMENT5_IMPLEMENTATION)]
    IHTMLDOMImplementation *implementation();

    [id(DISPID_IHTMLDOCUMENT5_CREATEATTRIBUTE)]
    IHTMLDOMAttribute *createAttribute([in] BSTR bstrattrName);

    [id(DISPID_IHTMLDOCUMENT5_CREATECOMMENT)]
    IHTMLDOMNode *createComment([in] BSTR bstrdata);

    [propput, id(DISPID_IHTMLDOCUMENT5_ONFOCUSIN), displaybind, bindable]
    void onfocusin(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT5_ONFOCUSIN), displaybind, bindable]
    VARIANT onfocusin();

    [propput, id(DISPID_IHTMLDOCUMENT5_ONFOCUSOUT), displaybind, bindable]
    void onfocusout(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT5_ONFOCUSOUT), displaybind, bindable]
    VARIANT onfocusout();

    [propput, id(DISPID_IHTMLDOCUMENT5_ONACTIVATE), displaybind, bindable]
    void onactivate(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT5_ONACTIVATE), displaybind, bindable]
    VARIANT onactivate();

    [propput, id(DISPID_IHTMLDOCUMENT5_ONDEACTIVATE), displaybind, bindable]
    void ondeactivate(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT5_ONDEACTIVATE), displaybind, bindable]
    VARIANT ondeactivate();

    [propput, id(DISPID_IHTMLDOCUMENT5_ONBEFOREACTIVATE), displaybind, bindable]
    void onbeforeactivate(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT5_ONBEFOREACTIVATE), displaybind, bindable]
    VARIANT onbeforeactivate();

    [propput, id(DISPID_IHTMLDOCUMENT5_ONBEFOREDEACTIVATE), displaybind, bindable]
    void onbeforedeactivate(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT5_ONBEFOREDEACTIVATE), displaybind, bindable]
    VARIANT onbeforedeactivate();

    [propget, id(DISPID_IHTMLDOCUMENT5_COMPATMODE)]
    BSTR compatMode();

    [propget, id(DISPID_IHTMLDOCUMENT6_COMPATIBLE)]
    IHTMLDocumentCompatibleInfoCollection *compatible();

    [propget, id(DISPID_IHTMLDOCUMENT6_DOCUMENTMODE)]
    VARIANT documentMode();

    [propput, id(DISPID_IHTMLDOCUMENT6_ONSTORAGE), displaybind, bindable]
    void onstorage(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT6_ONSTORAGE), displaybind, bindable]
    VARIANT onstorage();

    [propput, id(DISPID_IHTMLDOCUMENT6_ONSTORAGECOMMIT), displaybind, bindable]
    void onstoragecommit(VARIANT v);

    [propget, id(DISPID_IHTMLDOCUMENT6_ONSTORAGECOMMIT), displaybind, bindable]
    VARIANT onstoragecommit();

    [id(DISPID_IHTMLDOCUMENT6_IE8_GETELEMENTBYID)]
    IHTMLElement2 *ie8_getElementById([in] BSTR bstrId);

    [id(DISPID_IHTMLDOCUMENT6_UPDATESETTINGS)]
    void updateSettings();

    WINE_HTMLDOMNODE_DISPINTERFACE_DECL;

    [id(DISPID_IDOCUMENTSELECTOR_QUERYSELECTOR)]
    IHTMLElement *querySelector([in] BSTR v);

    [id(DISPID_IDOCUMENTSELECTOR_QUERYSELECTORALL)]
    IHTMLDOMChildrenCollection *querySelectorAll([in] BSTR v);

    [id(DISPID_IDOCUMENTRANGE_CREATERANGE)]
    IHTMLDOMRange *createRange();
}

/*****************************************************************************
 *    HTMLDocument coclass
 */
[
    uuid(25336920-03F9-11cf-8FD0-00AA00686F13)
]
coclass HTMLDocument
{
    [default]         dispinterface DispHTMLDocument;
    [source, default] dispinterface HTMLDocumentEvents;
    [source]          dispinterface HTMLDocumentEvents2;
                      interface IHTMLDocument2;
                      interface IHTMLDocument3;
                      interface IHTMLDocument4;
                      interface IHTMLDocument5;
                      interface IHTMLDocument6;
                      interface IHTMLDOMNode;
                      interface IHTMLDOMNode2;
                      interface IDocumentEvent;
}

/*****************************************************************************
 *    DWebBridgeEvents dispinterface
 */
[
    hidden,
    uuid(a6d897ff-0a95-11d1-b0ba-006008166e11)
]
dispinterface DWebBridgeEvents
{
properties:
methods:
    [id(DISPID_DWEBBRIDGEEVENTS_ONSCRIPTLETEVENT)]
    void onscriptletevent([in] BSTR name,[in] VARIANT eventData);

    [id(DISPID_DWEBBRIDGEEVENTS_ONREADYSTATECHANGE)]
    void onreadystatechange();

    [id(DISPID_DWEBBRIDGEEVENTS_ONCLICK)]
    VARIANT_BOOL onclick();

    [id(DISPID_DWEBBRIDGEEVENTS_ONDBLCLICK)]
    VARIANT_BOOL ondblclick();

    [id(DISPID_DWEBBRIDGEEVENTS_ONKEYDOWN)]
    void onkeydown();

    [id(DISPID_DWEBBRIDGEEVENTS_ONKEYUP)]
    void onkeyup();

    [id(DISPID_DWEBBRIDGEEVENTS_ONKEYPRESS)]
    VARIANT_BOOL onkeypress();

    [id(DISPID_DWEBBRIDGEEVENTS_ONMOUSEDOWN)]
    void onmousedown();

    [id(DISPID_DWEBBRIDGEEVENTS_ONMOUSEMOVE)]
    void onmousemove();

    [id(DISPID_DWEBBRIDGEEVENTS_ONMOUSEUP)]
    void onmouseup();
}

/*****************************************************************************
 *    IWebBridge interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(ae24fdad-03c6-11d1-8b76-0080c744f389)
]
interface IWebBridge : IDispatch
{
    [propput, id(DISPID_IWEBBRIDGE_URL)]
    HRESULT URL([in] BSTR v);

    [propget, id(DISPID_IWEBBRIDGE_URL)]
    HRESULT URL([retval, out] BSTR * p);

    [propput, id(DISPID_IWEBBRIDGE_SCROLLBAR)]
    HRESULT Scrollbar([in] VARIANT_BOOL v);

    [propget, id(DISPID_IWEBBRIDGE_SCROLLBAR)]
    HRESULT Scrollbar([retval, out] VARIANT_BOOL * p);

    [propput, id(DISPID_IWEBBRIDGE_EMBED)]
    HRESULT embed([in] VARIANT_BOOL v);

    [propget, id(DISPID_IWEBBRIDGE_EMBED)]
    HRESULT embed([retval, out] VARIANT_BOOL * p);

    [propget, id(DISPID_IWEBBRIDGE_EVENT)]
    HRESULT event([retval, out] IDispatch* * p);

    [propget, id(DISPID_IWEBBRIDGE_READYSTATE)]
    HRESULT readyState([retval, out] long * p);

    [id(DISPID_IWEBBRIDGE_ABOUTBOX)]
    HRESULT AboutBox();
}

/*****************************************************************************
 *    Scriptlet coclass
 */
[
    control,
    helpstring("Microsoft Scriptlet Component"),
    progid("ScriptBridge.ScriptBridge.1"),
    vi_progid("ScriptBridge.ScriptBridge"),
    uuid(ae24fdae-03c6-11d1-8b76-0080c744f389)
]
coclass Scriptlet
{
    [default]           interface IWebBridge;
    [source, default]   dispinterface DWebBridgeEvents;
}

/*****************************************************************************
 *    IHTMLEmbedElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f25f-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLEmbedElement : IDispatch
{
    [propput, id(DISPID_IHTMLEMBEDELEMENT_HIDDEN)]
    HRESULT hidden([in] BSTR v);

    [propget, id(DISPID_IHTMLEMBEDELEMENT_HIDDEN)]
    HRESULT hidden([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLEMBEDELEMENT_PALETTE)]
    HRESULT palette([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLEMBEDELEMENT_PLUGINSPAGE)]
    HRESULT pluginspage([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLEMBEDELEMENT_SRC)]
    HRESULT src([in] BSTR v);

    [propget, id(DISPID_IHTMLEMBEDELEMENT_SRC)]
    HRESULT src([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLEMBEDELEMENT_UNITS)]
    HRESULT units([in] BSTR v);

    [propget, id(DISPID_IHTMLEMBEDELEMENT_UNITS)]
    HRESULT units([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLEMBEDELEMENT_NAME), displaybind, bindable]
    HRESULT name([in] BSTR v);

    [propget, id(DISPID_IHTMLEMBEDELEMENT_NAME), displaybind, bindable]
    HRESULT name([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLEMBEDELEMENT_WIDTH)]
    HRESULT width([in] VARIANT v);

    [propget, id(DISPID_IHTMLEMBEDELEMENT_WIDTH)]
    HRESULT width([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLEMBEDELEMENT_HEIGHT)]
    HRESULT height([in] VARIANT v);

    [propget, id(DISPID_IHTMLEMBEDELEMENT_HEIGHT)]
    HRESULT height([retval, out] VARIANT *p);
}

/*****************************************************************************
 *    DispHTMLEmbedElement dispinterface
 */
[
    hidden,
    uuid(3050f52e-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLEmbed
{
properties:
methods:
    WINE_HTMLELEMENT_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLEMBEDELEMENT_HIDDEN)]
    void hidden(BSTR v);

    [propget, id(DISPID_IHTMLEMBEDELEMENT_HIDDEN)]
    BSTR hidden();

    [propget, id(DISPID_IHTMLEMBEDELEMENT_PALETTE)]
    BSTR palette();

    [propget, id(DISPID_IHTMLEMBEDELEMENT_PLUGINSPAGE)]
    BSTR pluginspage();

    [propput, id(DISPID_IHTMLEMBEDELEMENT_SRC)]
    void src(BSTR v);

    [propget, id(DISPID_IHTMLEMBEDELEMENT_SRC)]
    BSTR src();

    [propput, id(DISPID_IHTMLEMBEDELEMENT_UNITS)]
    void units(BSTR v);

    [propget, id(DISPID_IHTMLEMBEDELEMENT_UNITS)]
    BSTR units();

    [propput, id(DISPID_IHTMLEMBEDELEMENT_NAME), displaybind, bindable]
    void name(BSTR v);

    [propget, id(DISPID_IHTMLEMBEDELEMENT_NAME), displaybind, bindable]
    BSTR name();

    [propput, id(DISPID_IHTMLEMBEDELEMENT_WIDTH)]
    void width(VARIANT v);

    [propget, id(DISPID_IHTMLEMBEDELEMENT_WIDTH)]
    VARIANT width();

    [propput, id(DISPID_IHTMLEMBEDELEMENT_HEIGHT)]
    void height(VARIANT v);

    [propget, id(DISPID_IHTMLEMBEDELEMENT_HEIGHT)]
    VARIANT height();

    [propput, id(DISPID_IHTMLEMBEDELEMENT2_IE8_SRC)]
    void ie8_src(BSTR v);

    [propget, id(DISPID_IHTMLEMBEDELEMENT2_IE8_SRC)]
    BSTR ie8_src();

    [propget, id(DISPID_IHTMLEMBEDELEMENT2_IE8_PLUGINSPAGE)]
    BSTR ie8_pluginspage();
}

/*****************************************************************************
 *    HTMLEmbed coclass
 */
[
    noncreatable,
    uuid(3050f25d-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLEmbed
{
    [default]         dispinterface DispHTMLEmbed;
 /* [source, default] dispinterface HTMLControlElementEvents; */
 /* [source]          dispinterface HTMLControlElementEvents2; */
    WINE_HTMLELEMENT_INTERFACES;
    interface IHTMLControlElement;
    interface IHTMLEmbedElement;
 /* interface IHTMLEmbedElement2; */
 /* interface IGetSVGDocument; */
}

/*****************************************************************************
 *    IHTMLCommentElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f20c-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLCommentElement : IDispatch
{
    [propput, id(DISPID_IHTMLCOMMENTELEMENT_TEXT), displaybind, bindable]
    HRESULT text([in] BSTR v);

    [propget, id(DISPID_IHTMLCOMMENTELEMENT_TEXT), displaybind, bindable]
    HRESULT text([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable]
    HRESULT atomic([in] LONG v);

    [propget, id(DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable]
    HRESULT atomic([out, retval] LONG *p);
}

/*****************************************************************************
 *    IHTMLCommentElement2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f813-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLCommentElement2 : IDispatch
{
    [propput, id(DISPID_IHTMLCOMMENTELEMENT2_DATA)]
    HRESULT data([in] BSTR v);

    [propget, id(DISPID_IHTMLCOMMENTELEMENT2_DATA)]
    HRESULT data([out, retval] BSTR *p);

    [propget, id(DISPID_IHTMLCOMMENTELEMENT2_LENGTH)]
    HRESULT length([out, retval] LONG *p);

    [id(DISPID_IHTMLCOMMENTELEMENT2_SUBSTRINGDATA)]
    HRESULT substringData(
            [in] LONG offset,
            [in] LONG Count,
            [out, retval] BSTR *pbstrsubString);

    [id(DISPID_IHTMLCOMMENTELEMENT2_APPENDDATA)]
    HRESULT appendData([in] BSTR bstrstring);

    [id(DISPID_IHTMLCOMMENTELEMENT2_INSERTDATA)]
    HRESULT insertData(
            [in] LONG offset,
            [in] BSTR bstrstring);

    [id(DISPID_IHTMLCOMMENTELEMENT2_DELETEDATA)]
    HRESULT deleteData(
            [in] LONG offset,
            [in] LONG Count);

    [id(DISPID_IHTMLCOMMENTELEMENT2_REPLACEDATA)]
    HRESULT replaceData(
            [in] LONG offset,
            [in] LONG Count,
            [in] BSTR bstrstring);
}

/*****************************************************************************
 *    DispHTMLCommentElement dispinterface
 */
[
    hidden,
    uuid(3050f50a-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLCommentElement
{
properties:
methods:
    WINE_HTMLELEMENT_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLCOMMENTELEMENT_TEXT), displaybind, bindable]
    void text(BSTR v);

    [propget, id(DISPID_IHTMLCOMMENTELEMENT_TEXT), displaybind, bindable]
    BSTR text();

    [propput, id(DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable]
    void atomic(LONG v);

    [propget, id(DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable]
    LONG atomic();

    [propput, id(DISPID_IHTMLCOMMENTELEMENT2_DATA)]
    void data(BSTR v);

    [propget, id(DISPID_IHTMLCOMMENTELEMENT2_DATA)]
    BSTR data();

    [propget, id(DISPID_IHTMLCOMMENTELEMENT2_LENGTH)]
    LONG length();

    [id(DISPID_IHTMLCOMMENTELEMENT2_SUBSTRINGDATA)]
    BSTR substringData(
            [in] LONG offset,
            [in] LONG Count);

    [id(DISPID_IHTMLCOMMENTELEMENT2_APPENDDATA)]
    void appendData([in] BSTR bstrstring);

    [id(DISPID_IHTMLCOMMENTELEMENT2_INSERTDATA)]
     void insertData(
            [in] LONG offset,
            [in] BSTR bstrstring);

    [id(DISPID_IHTMLCOMMENTELEMENT2_DELETEDATA)]
    void deleteData(
            [in] LONG offset,
            [in] LONG Count);

    [id(DISPID_IHTMLCOMMENTELEMENT2_REPLACEDATA)]
    void replaceData(
            [in] LONG offset,
            [in] LONG Count,
            [in] BSTR bstrstring);
}

[
    hidden,
    uuid(3050f60f-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface HTMLElementEvents2
{
properties:
methods:
    [id(DISPID_HTMLELEMENTEVENTS2_ONHELP)]
    VARIANT_BOOL onhelp([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCLICK)]
    VARIANT_BOOL onclick([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)]
    VARIANT_BOOL ondblclick([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)]
    VARIANT_BOOL onkeypress([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)]
    void onkeydown([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYUP)]
    void onkeyup([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)]
    void onmouseout([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)]
    void onmouseover([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)]
    void onmousemove([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)]
    void onmousedown([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)]
    void onmouseup([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)]
    VARIANT_BOOL onselectstart([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)]
    void onfilterchange([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)]
    VARIANT_BOOL ondragstart([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)]
    VARIANT_BOOL onbeforeupdate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)]
    void onafterupdate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)]
    VARIANT_BOOL onerrorupdate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)]
    VARIANT_BOOL onrowexit([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONROWENTER)]
    void onrowenter([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)]
    void ondatasetchanged([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)]
    void ondataavailable([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)]
    void ondatasetcomplete([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)]
    void onlosecapture([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)]
    void onpropertychange([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONSCROLL)]
    void onscroll([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUS)]
    void onfocus([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBLUR)]
    void onblur([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZE)]
    void onresize([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAG)]
    VARIANT_BOOL ondrag([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)]
    void ondragend([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)]
    VARIANT_BOOL ondragenter([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)]
    VARIANT_BOOL ondragover([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)]
    void ondragleave([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDROP)]
    VARIANT_BOOL ondrop([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)]
    VARIANT_BOOL onbeforecut([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCUT)]
    VARIANT_BOOL oncut([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)]
    VARIANT_BOOL onbeforecopy([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCOPY)]
    VARIANT_BOOL oncopy([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)]
    VARIANT_BOOL onbeforepaste([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONPASTE)]
    VARIANT_BOOL onpaste([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)]
    VARIANT_BOOL oncontextmenu([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)]
    void onrowsdelete([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)]
    void onrowsinserted([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)]
    void oncellchange([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)]
    void onreadystatechange([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)]
    void onlayoutcomplete([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONPAGE)]
    void onpage([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)]
    void onmouseenter([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)]
    void onmouseleave([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)]
    void onactivate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)]
    void ondeactivate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)]
    VARIANT_BOOL onbeforedeactivate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)]
    VARIANT_BOOL onbeforeactivate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)]
    void onfocusin([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)]
    void onfocusout([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVE)]
    void onmove([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)]
    VARIANT_BOOL oncontrolselect([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)]
    VARIANT_BOOL onmovestart([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)]
    void onmoveend([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)]
    VARIANT_BOOL onresizestart([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)]
    void onresizeend([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)]
    VARIANT_BOOL onmousewheel([in] IHTMLEventObj* pEvtObj);
}

[
    hidden,
    uuid(3050f33c-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface HTMLElementEvents
{
properties:
methods:
    [id(DISPID_HTMLELEMENTEVENTS_ONHELP)]
    VARIANT_BOOL onhelp();

    [id(DISPID_HTMLELEMENTEVENTS_ONCLICK)]
    VARIANT_BOOL onclick();

    [id(DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)]
    VARIANT_BOOL ondblclick();

    [id(DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)]
    VARIANT_BOOL onkeypress();

    [id(DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)]
    void onkeydown();

    [id(DISPID_HTMLELEMENTEVENTS_ONKEYUP)]
    void onkeyup();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)]
    void onmouseout();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)]
    void onmouseover();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)]
    void onmousemove();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)]
    void onmousedown();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)]
    void onmouseup();

    [id(DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)]
    VARIANT_BOOL onselectstart();

    [id(DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)]
    void onfilterchange();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)]
    VARIANT_BOOL ondragstart();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)]
    VARIANT_BOOL onbeforeupdate();

    [id(DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)]
    void onafterupdate();

    [id(DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)]
    VARIANT_BOOL onerrorupdate();

    [id(DISPID_HTMLELEMENTEVENTS_ONROWEXIT)]
    VARIANT_BOOL onrowexit();

    [id(DISPID_HTMLELEMENTEVENTS_ONROWENTER)]
    void onrowenter();

    [id(DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)]
    void ondatasetchanged();

    [id(DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)]
    void ondataavailable();

    [id(DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)]
    void ondatasetcomplete();

    [id(DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)]
    void onlosecapture();

    [id(DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)]
    void onpropertychange();

    [id(DISPID_HTMLELEMENTEVENTS_ONSCROLL)]
    void onscroll();

    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUS)]
    void onfocus();

    [id(DISPID_HTMLELEMENTEVENTS_ONBLUR)]
    void onblur();

    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZE)]
    void onresize();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAG)]
    VARIANT_BOOL ondrag();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGEND)]
    void ondragend();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)]
    VARIANT_BOOL ondragenter();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)]
    VARIANT_BOOL ondragover();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)]
    void ondragleave();

    [id(DISPID_HTMLELEMENTEVENTS_ONDROP)]
    VARIANT_BOOL ondrop();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)]
    VARIANT_BOOL onbeforecut();

    [id(DISPID_HTMLELEMENTEVENTS_ONCUT)]
    VARIANT_BOOL oncut();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)]
    VARIANT_BOOL onbeforecopy();

    [id(DISPID_HTMLELEMENTEVENTS_ONCOPY)]
    VARIANT_BOOL oncopy();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)]
    VARIANT_BOOL onbeforepaste();

    [id(DISPID_HTMLELEMENTEVENTS_ONPASTE)]
    VARIANT_BOOL onpaste();

    [id(DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)]
    VARIANT_BOOL oncontextmenu();

    [id(DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)]
    void onrowsdelete();

    [id(DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)]
    void onrowsinserted();

    [id(DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)]
    void oncellchange();

    [id(DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)]
    void onreadystatechange();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)]
    void onbeforeeditfocus();

    [id(DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)]
    void onlayoutcomplete();

    [id(DISPID_HTMLELEMENTEVENTS_ONPAGE)]
    void onpage();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)]
    VARIANT_BOOL onbeforedeactivate();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)]
    VARIANT_BOOL onbeforeactivate();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOVE)]
    void onmove();

    [id(DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)]
    VARIANT_BOOL oncontrolselect();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOVESTART)]
    VARIANT_BOOL onmovestart();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOVEEND)]
    void onmoveend();

    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)]
    VARIANT_BOOL onresizestart();

    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)]
    void onresizeend();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)]
    void onmouseenter();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)]
    void onmouseleave();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)]
    VARIANT_BOOL onmousewheel();

    [id(DISPID_HTMLELEMENTEVENTS_ONACTIVATE)]
    void onactivate();

    [id(DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)]
    void ondeactivate();

    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)]
    void onfocusin();

    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)]
    void onfocusout();
}

[
    noncreatable,
    uuid(3050f317-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLCommentElement
{
    [default]           dispinterface DispHTMLCommentElement;
    [source, default]   dispinterface HTMLElementEvents;
    [source]            dispinterface HTMLElementEvents2;
    WINE_HTMLELEMENT_INTERFACES;
    interface IHTMLCommentElement;
    interface IHTMLCommentElement2;
 /* interface IHTMLCommentElement3; */
}

/*****************************************************************************
 *    HTMLTableEvents dispinterface
 */
[
    hidden,
    uuid(3050f407-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface HTMLTableEvents
{
properties:
methods:
    [id(DISPID_HTMLELEMENTEVENTS_ONHELP)]
    VARIANT_BOOL onhelp();

    [id(DISPID_HTMLELEMENTEVENTS_ONCLICK)]
    VARIANT_BOOL onclick();

    [id(DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)]
    VARIANT_BOOL ondblclick();

    [id(DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)]
    VARIANT_BOOL onkeypress();

    [id(DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)]
    void onkeydown();

    [id(DISPID_HTMLELEMENTEVENTS_ONKEYUP)]
    void onkeyup();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)]
    void onmouseout();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)]
    void onmouseover();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)]
    void onmousemove();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)]
    void onmousedown();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)]
    void onmouseup();

    [id(DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)]
    VARIANT_BOOL onselectstart();

    [id(DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)]
    void onfilterchange();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)]
    VARIANT_BOOL ondragstart();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)]
    VARIANT_BOOL onbeforeupdate();

    [id(DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)]
    void onafterupdate();

    [id(DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)]
    VARIANT_BOOL onerrorupdate();

    [id(DISPID_HTMLELEMENTEVENTS_ONROWEXIT)]
    VARIANT_BOOL onrowexit();

    [id(DISPID_HTMLELEMENTEVENTS_ONROWENTER)]
    void onrowenter();

    [id(DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)]
    void ondatasetchanged();

    [id(DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)]
    void ondataavailable();

    [id(DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)]
    void ondatasetcomplete();

    [id(DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)]
    void onlosecapture();

    [id(DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)]
    void onpropertychange();

    [id(DISPID_HTMLELEMENTEVENTS_ONSCROLL)]
    void onscroll();

    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUS)]
    void onfocus();

    [id(DISPID_HTMLELEMENTEVENTS_ONBLUR)]
    void onblur();

    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZE)]
    void onresize();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAG)]
    VARIANT_BOOL ondrag();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGEND)]
    void ondragend();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)]
    VARIANT_BOOL ondragenter();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)]
    VARIANT_BOOL ondragover();

    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)]
    void ondragleave();

    [id(DISPID_HTMLELEMENTEVENTS_ONDROP)]
    VARIANT_BOOL ondrop();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)]
    VARIANT_BOOL onbeforecut();

    [id(DISPID_HTMLELEMENTEVENTS_ONCUT)]
    VARIANT_BOOL oncut();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)]
    VARIANT_BOOL onbeforecopy();

    [id(DISPID_HTMLELEMENTEVENTS_ONCOPY)]
    VARIANT_BOOL oncopy();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)]
    VARIANT_BOOL onbeforepaste();

    [id(DISPID_HTMLELEMENTEVENTS_ONPASTE)]
    VARIANT_BOOL onpaste();

    [id(DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)]
    VARIANT_BOOL oncontextmenu();

    [id(DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)]
    void onrowsdelete();

    [id(DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)]
    void onrowsinserted();

    [id(DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)]
    void oncellchange();

    [id(DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)]
    void onreadystatechange();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)]
    void onbeforeeditfocus();

    [id(DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)]
    void onlayoutcomplete();

    [id(DISPID_HTMLELEMENTEVENTS_ONPAGE)]
    void onpage();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)]
    VARIANT_BOOL onbeforedeactivate();

    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)]
    VARIANT_BOOL onbeforeactivate();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOVE)]
    void onmove();

    [id(DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)]
    VARIANT_BOOL oncontrolselect();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOVESTART)]
    VARIANT_BOOL onmovestart();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOVEEND)]
    void onmoveend();

    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)]
    VARIANT_BOOL onresizestart();

    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)]
    void onresizeend();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)]
    void onmouseenter();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)]
    void onmouseleave();

    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)]
    VARIANT_BOOL onmousewheel();

    [id(DISPID_HTMLELEMENTEVENTS_ONACTIVATE)]
    void onactivate();

    [id(DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)]
    void ondeactivate();

    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)]
    void onfocusin();

    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)]
    void onfocusout();
}

[
    hidden,
    uuid(3050f623-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface HTMLTableEvents2
{
properties:
methods:
    [id(DISPID_HTMLELEMENTEVENTS2_ONHELP)]
    VARIANT_BOOL onhelp([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCLICK)]
    VARIANT_BOOL onclick([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)]
    VARIANT_BOOL ondblclick([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)]
    VARIANT_BOOL onkeypress([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)]
    void onkeydown([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYUP)]
    void onkeyup([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)]
    void onmouseout([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)]
    void onmouseover([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)]
    void onmousemove([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)]
    void onmousedown([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)]
    void onmouseup([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)]
    VARIANT_BOOL onselectstart([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)]
    void onfilterchange([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)]
    VARIANT_BOOL ondragstart([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)]
    VARIANT_BOOL onbeforeupdate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)]
    void onafterupdate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)]
    VARIANT_BOOL onerrorupdate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)]
    VARIANT_BOOL onrowexit([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONROWENTER)]
    void onrowenter([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)]
    void ondatasetchanged([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)]
    void ondataavailable([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)]
    void ondatasetcomplete([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)]
    void onlosecapture([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)]
    void onpropertychange([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONSCROLL)]
    void onscroll([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUS)]
    void onfocus([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBLUR)]
    void onblur([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZE)]
    void onresize([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAG)]
    VARIANT_BOOL ondrag([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)]
    void ondragend([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)]
    VARIANT_BOOL ondragenter([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)]
    VARIANT_BOOL ondragover([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)]
    void ondragleave([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDROP)]
    VARIANT_BOOL ondrop([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)]
    VARIANT_BOOL onbeforecut([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCUT)]
    VARIANT_BOOL oncut([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)]
    VARIANT_BOOL onbeforecopy([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCOPY)]
    VARIANT_BOOL oncopy([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)]
    VARIANT_BOOL onbeforepaste([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONPASTE)]
    VARIANT_BOOL onpaste([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)]
    VARIANT_BOOL oncontextmenu([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)]
    void onrowsdelete([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)]
    void onrowsinserted([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)]
    void oncellchange([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)]
    void onreadystatechange([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)]
    void onlayoutcomplete([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONPAGE)]
    void onpage([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)]
    void onmouseenter([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)]
    void onmouseleave([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)]
    void onactivate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)]
    void ondeactivate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)]
    VARIANT_BOOL onbeforedeactivate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)]
    VARIANT_BOOL onbeforeactivate([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)]
    void onfocusin([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)]
    void onfocusout([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVE)]
    void onmove([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)]
    VARIANT_BOOL oncontrolselect([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)]
    VARIANT_BOOL onmovestart([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)]
    void onmoveend([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)]
    VARIANT_BOOL onresizestart([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)]
    void onresizeend([in] IHTMLEventObj* pEvtObj);

    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)]
    VARIANT_BOOL onmousewheel([in] IHTMLEventObj* pEvtObj);
}

/*****************************************************************************
 *    IHTMLTableCaption interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f2eb-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLTableCaption : IDispatch
{
    [propput, id(DISPID_IHTMLTABLECAPTION_ALIGN)]
    HRESULT align([in] BSTR v);

    [propget, id(DISPID_IHTMLTABLECAPTION_ALIGN)]
    HRESULT align([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLTABLECAPTION_VALIGN)]
    HRESULT vAlign([in] BSTR v);

    [propget, id(DISPID_IHTMLTABLECAPTION_VALIGN)]
    HRESULT vAlign([retval, out] BSTR *p);
}

/*****************************************************************************
 *    IHTMLTable interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f21e-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLTable : IDispatch
{
    [propput, id(DISPID_IHTMLTABLE_COLS)]
    HRESULT cols([in] LONG v);

    [propget, id(DISPID_IHTMLTABLE_COLS)]
    HRESULT cols([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLTABLE_BORDER)]
    HRESULT border([in] VARIANT v);

    [propget, id(DISPID_IHTMLTABLE_BORDER)]
    HRESULT border([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLTABLE_FRAME)]
    HRESULT frame([in] BSTR v);

    [propget, id(DISPID_IHTMLTABLE_FRAME)]
    HRESULT frame([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLTABLE_RULES)]
    HRESULT rules([in] BSTR v);

    [propget, id(DISPID_IHTMLTABLE_RULES)]
    HRESULT rules([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLTABLE_CELLSPACING)]
    HRESULT cellSpacing([in] VARIANT v);

    [propget, id(DISPID_IHTMLTABLE_CELLSPACING)]
    HRESULT cellSpacing([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLTABLE_CELLPADDING)]
    HRESULT cellPadding([in] VARIANT v);

    [propget, id(DISPID_IHTMLTABLE_CELLPADDING)]
    HRESULT cellPadding([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLTABLE_BACKGROUND)]
    HRESULT background([in] BSTR v);

    [propget, id(DISPID_IHTMLTABLE_BACKGROUND)]
    HRESULT background([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLTABLE_BGCOLOR)]
    HRESULT bgColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLTABLE_BGCOLOR)]
    HRESULT bgColor([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLTABLE_BORDERCOLOR)]
    HRESULT borderColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLTABLE_BORDERCOLOR)]
    HRESULT borderColor([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLTABLE_BORDERCOLORLIGHT)]
    HRESULT borderColorLight([in] VARIANT v);

    [propget, id(DISPID_IHTMLTABLE_BORDERCOLORLIGHT)]
    HRESULT borderColorLight([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLTABLE_BORDERCOLORDARK)]
    HRESULT borderColorDark([in] VARIANT v);

    [propget, id(DISPID_IHTMLTABLE_BORDERCOLORDARK)]
    HRESULT borderColorDark([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLTABLE_ALIGN)]
    HRESULT align([in] BSTR v);

    [propget, id(DISPID_IHTMLTABLE_ALIGN)]
    HRESULT align([retval, out] BSTR * p);

    [id(DISPID_IHTMLTABLE_REFRESH)]
    HRESULT refresh();

    [propget, id(DISPID_IHTMLTABLE_ROWS)]
    HRESULT rows([retval, out] IHTMLElementCollection **p);

    [propput, id(DISPID_IHTMLTABLE_WIDTH)]
    HRESULT width([in] VARIANT v);

    [propget, id(DISPID_IHTMLTABLE_WIDTH)]
    HRESULT width([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLTABLE_HEIGHT)]
    HRESULT height([in] VARIANT v);

    [propget, id(DISPID_IHTMLTABLE_HEIGHT)]
    HRESULT height([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLTABLE_DATAPAGESIZE)]
    HRESULT dataPageSize([in] LONG v);

    [propget, id(DISPID_IHTMLTABLE_DATAPAGESIZE)]
    HRESULT dataPageSize([retval, out] LONG *p);

    [id(DISPID_IHTMLTABLE_NEXTPAGE)]
    HRESULT nextPage();

    [id(DISPID_IHTMLTABLE_PREVIOUSPAGE)]
    HRESULT previousPage();

    [propget, id(DISPID_IHTMLTABLE_THEAD)]
    HRESULT tHead([retval, out] IHTMLTableSection **p);

    [propget, id(DISPID_IHTMLTABLE_TFOOT)]
    HRESULT tFoot([retval, out] IHTMLTableSection **p);

    [propget, id(DISPID_IHTMLTABLE_TBODIES)]
    HRESULT tBodies([retval, out] IHTMLElementCollection **p);

    [propget, id(DISPID_IHTMLTABLE_CAPTION)]
    HRESULT caption([retval, out] IHTMLTableCaption **p);

    [id(DISPID_IHTMLTABLE_CREATETHEAD)]
    HRESULT createTHead([retval, out] IDispatch **head);

    [id(DISPID_IHTMLTABLE_DELETETHEAD)]
    HRESULT deleteTHead();

    [id(DISPID_IHTMLTABLE_CREATETFOOT)]
    HRESULT createTFoot([retval, out] IDispatch **foot);

    [id(DISPID_IHTMLTABLE_DELETETFOOT)]
    HRESULT deleteTFoot();

    [id(DISPID_IHTMLTABLE_CREATECAPTION)]
    HRESULT createCaption([retval, out] IHTMLTableCaption **caption);

    [id(DISPID_IHTMLTABLE_DELETECAPTION)]
    HRESULT deleteCaption();

    [id(DISPID_IHTMLTABLE_INSERTROW)]
    HRESULT insertRow(
            [defaultvalue(-1), in] LONG index,
            [retval, out] IDispatch **row);

    [id(DISPID_IHTMLTABLE_DELETEROW)]
    HRESULT deleteRow([defaultvalue(-1), in] LONG index);

    [propget, id(DISPID_IHTMLTABLE_READYSTATE)]
    HRESULT readyState([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLTABLE_ONREADYSTATECHANGE), displaybind, bindable]
    HRESULT onreadystatechange([in] VARIANT v);

    [propget, id(DISPID_IHTMLTABLE_ONREADYSTATECHANGE), displaybind, bindable]
    HRESULT onreadystatechange([retval, out] VARIANT *p);
}

[
    odl,
    oleautomation,
    dual,
    uuid(3050f4ad-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLTable2 : IDispatch
{
    [id(DISPID_IHTMLTABLE2_FIRSTPAGE)]
    HRESULT firstPage();

    [id(DISPID_IHTMLTABLE2_LASTPAGE)]
    HRESULT lastPage();

    [propget, id(DISPID_IHTMLTABLE2_CELLS)]
    HRESULT cells([retval, out] IHTMLElementCollection* * p);

    [id(DISPID_IHTMLTABLE2_MOVEROW)]
    HRESULT moveRow([defaultvalue(-1), in] LONG indexFrom,
        [defaultvalue(-1), in] LONG indexTo,
        [retval, out] IDispatch** row);
}

[
    odl,
    oleautomation,
    dual,
    uuid(3050f829-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLTable3 : IDispatch
{
    [propput, id(DISPID_IHTMLTABLE3_SUMMARY), displaybind, bindable]
    HRESULT summary([in] BSTR v);

    [propget, id(DISPID_IHTMLTABLE3_SUMMARY), displaybind, bindable]
    HRESULT summary([retval, out] BSTR * p);
}

[
    noncreatable,
    uuid(3050f26b-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLTable
{
    [default]           dispinterface DispHTMLTable;
    [source, default]   dispinterface HTMLTableEvents;
    [source]            dispinterface HTMLTableEvents2;
    WINE_HTMLDATAELEMENT_INTERFACES;
    interface IHTMLControlElement;
    interface IHTMLTable;
    interface IHTMLTable2;
    interface IHTMLTable3;
 /* interface IHTMLTable4; */
}

[
    odl,
    oleautomation,
    dual,
    uuid(3050f23b-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLTableSection : IDispatch
{
    [propput, id(DISPID_IHTMLTABLESECTION_ALIGN)]
    HRESULT align([in] BSTR v);

    [propget, id(DISPID_IHTMLTABLESECTION_ALIGN)]
    HRESULT align([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLTABLESECTION_VALIGN)]
    HRESULT vAlign([in] BSTR v);

    [propget, id(DISPID_IHTMLTABLESECTION_VALIGN)]
    HRESULT vAlign([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLTABLESECTION_BGCOLOR)]
    HRESULT bgColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLTABLESECTION_BGCOLOR)]
    HRESULT bgColor([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLTABLESECTION_ROWS)]
    HRESULT rows([retval, out] IHTMLElementCollection **p);

    [id(DISPID_IHTMLTABLESECTION_INSERTROW)]
    HRESULT insertRow(
            [defaultvalue(-1), in] LONG index,
            [retval, out] IDispatch **row);

    [id(DISPID_IHTMLTABLESECTION_DELETEROW)]
    HRESULT deleteRow([defaultvalue(-1), in] LONG index);
}

/*****************************************************************************
 *    IHTMLTableRow interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f23c-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLTableRow : IDispatch
{
    [propput, id(DISPID_IHTMLTABLEROW_ALIGN)]
    HRESULT align([in] BSTR v);

    [propget, id(DISPID_IHTMLTABLEROW_ALIGN)]
    HRESULT align([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLTABLEROW_VALIGN)]
    HRESULT vAlign([in] BSTR v);

    [propget, id(DISPID_IHTMLTABLEROW_VALIGN)]
    HRESULT vAlign([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLTABLEROW_BGCOLOR)]
    HRESULT bgColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLTABLEROW_BGCOLOR)]
    HRESULT bgColor([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLTABLEROW_BORDERCOLOR)]
    HRESULT borderColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLTABLEROW_BORDERCOLOR)]
    HRESULT borderColor([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLTABLEROW_BORDERCOLORLIGHT)]
    HRESULT borderColorLight([in] VARIANT v);

    [propget, id(DISPID_IHTMLTABLEROW_BORDERCOLORLIGHT)]
    HRESULT borderColorLight([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLTABLEROW_BORDERCOLORDARK)]
    HRESULT borderColorDark([in] VARIANT v);

    [propget, id(DISPID_IHTMLTABLEROW_BORDERCOLORDARK)]
    HRESULT borderColorDark([out, retval] VARIANT *p);

    [propget, id(DISPID_IHTMLTABLEROW_ROWINDEX)]
    HRESULT rowIndex([out, retval] LONG *p);

    [propget, id(DISPID_IHTMLTABLEROW_SECTIONROWINDEX)]
    HRESULT sectionRowIndex([out, retval] LONG *p);

    [propget, id(DISPID_IHTMLTABLEROW_CELLS)]
    HRESULT cells([out, retval] IHTMLElementCollection **p);

    [id(DISPID_IHTMLTABLEROW_INSERTCELL)]
    HRESULT insertCell(
            [in, defaultvalue(-1)] LONG index,
            [out, retval] IDispatch **row);

    [id(DISPID_IHTMLTABLEROW_DELETECELL)]
    HRESULT deleteCell([in, defaultvalue(-1)] LONG index);
}

/*****************************************************************************
 *    IHTMLTableCell interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f23d-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLTableCell : IDispatch
{
    [propput, id(DISPID_IHTMLTABLECELL_ROWSPAN)]
    HRESULT rowSpan([in] long v);

    [propget, id(DISPID_IHTMLTABLECELL_ROWSPAN)]
    HRESULT rowSpan([retval, out] long *p);

    [propput, id(DISPID_IHTMLTABLECELL_COLSPAN)]
    HRESULT colSpan([in] long v);

    [propget, id(DISPID_IHTMLTABLECELL_COLSPAN)]
    HRESULT colSpan([retval, out] long *p);

    [propput, id(DISPID_IHTMLTABLECELL_ALIGN)]
    HRESULT align([in] BSTR v);

    [propget, id(DISPID_IHTMLTABLECELL_ALIGN)]
    HRESULT align([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLTABLECELL_VALIGN)]
    HRESULT vAlign([in] BSTR v);

    [propget, id(DISPID_IHTMLTABLECELL_VALIGN)]
    HRESULT vAlign([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLTABLECELL_BGCOLOR)]
    HRESULT bgColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLTABLECELL_BGCOLOR)]
    HRESULT bgColor([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLTABLECELL_NOWRAP)]
    HRESULT noWrap([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLTABLECELL_NOWRAP)]
    HRESULT noWrap([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLTABLECELL_BACKGROUND)]
    HRESULT background([in] BSTR v);

    [propget, id(DISPID_IHTMLTABLECELL_BACKGROUND)]
    HRESULT background([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLTABLECELL_BORDERCOLOR)]
    HRESULT borderColor([in] VARIANT v);

    [propget, id(DISPID_IHTMLTABLECELL_BORDERCOLOR)]
    HRESULT borderColor([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLTABLECELL_BORDERCOLORLIGHT)]
    HRESULT borderColorLight([in] VARIANT v);

    [propget, id(DISPID_IHTMLTABLECELL_BORDERCOLORLIGHT)]
    HRESULT borderColorLight([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLTABLECELL_BORDERCOLORDARK)]
    HRESULT borderColorDark([in] VARIANT v);

    [propget, id(DISPID_IHTMLTABLECELL_BORDERCOLORDARK)]
    HRESULT borderColorDark([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLTABLECELL_WIDTH)]
    HRESULT width([in] VARIANT v);

    [propget, id(DISPID_IHTMLTABLECELL_WIDTH)]
    HRESULT width([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLTABLECELL_HEIGHT)]
    HRESULT height([in] VARIANT v);

    [propget, id(DISPID_IHTMLTABLECELL_HEIGHT)]
    HRESULT height([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLTABLECELL_CELLINDEX)]
    HRESULT cellIndex([retval, out] long *p);
}

/*****************************************************************************
 *    DispHTMLTable dispinterface
 */
[
    hidden,
    uuid(3050f532-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLTable
{
properties:
methods:
    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLTABLE_COLS)]
    void cols(LONG v);

    [propget, id(DISPID_IHTMLTABLE_COLS)]
    LONG cols();

    [propput, id(DISPID_IHTMLTABLE_BORDER)]
    void border(VARIANT v);

    [propget, id(DISPID_IHTMLTABLE_BORDER)]
    VARIANT border();

    [propput, id(DISPID_IHTMLTABLE_FRAME)]
    void frame(BSTR v);

    [propget, id(DISPID_IHTMLTABLE_FRAME)]
    BSTR frame();

    [propput, id(DISPID_IHTMLTABLE_RULES)]
    void rules(BSTR v);

    [propget, id(DISPID_IHTMLTABLE_RULES)]
    BSTR rules();

    [propput, id(DISPID_IHTMLTABLE_CELLSPACING)]
    void cellSpacing(VARIANT v);

    [propget, id(DISPID_IHTMLTABLE_CELLSPACING)]
    VARIANT cellSpacing();

    [propput, id(DISPID_IHTMLTABLE_CELLPADDING)]
    void cellPadding(VARIANT v);

    [propget, id(DISPID_IHTMLTABLE_CELLPADDING)]
    VARIANT cellPadding();

    [propput, id(DISPID_IHTMLTABLE_BACKGROUND)]
    void background(BSTR v);

    [propget, id(DISPID_IHTMLTABLE_BACKGROUND)]
    BSTR background();

    [propput, id(DISPID_IHTMLTABLE_BGCOLOR)]
    void bgColor(VARIANT v);

    [propget, id(DISPID_IHTMLTABLE_BGCOLOR)]
    VARIANT bgColor();

    [propput, id(DISPID_IHTMLTABLE_BORDERCOLOR)]
    void borderColor(VARIANT v);

    [propget, id(DISPID_IHTMLTABLE_BORDERCOLOR)]
    VARIANT borderColor();

    [propput, id(DISPID_IHTMLTABLE_BORDERCOLORLIGHT)]
    void borderColorLight(VARIANT v);

    [propget, id(DISPID_IHTMLTABLE_BORDERCOLORLIGHT)]
    VARIANT borderColorLight();

    [propput, id(DISPID_IHTMLTABLE_BORDERCOLORDARK)]
    void borderColorDark(VARIANT v);

    [propget, id(DISPID_IHTMLTABLE_BORDERCOLORDARK)]
    VARIANT borderColorDark();

    [propput, id(DISPID_IHTMLTABLE_ALIGN)]
    void align(BSTR v);

    [propget, id(DISPID_IHTMLTABLE_ALIGN)]
    BSTR align();

    [id(DISPID_IHTMLTABLE_REFRESH)]
    void refresh();

    [propget, id(DISPID_IHTMLTABLE_ROWS)]
    IHTMLElementCollection *rows();

    [propput, id(DISPID_IHTMLTABLE_WIDTH)]
    void width(VARIANT v);

    [propget, id(DISPID_IHTMLTABLE_WIDTH)]
    VARIANT width();

    [propput, id(DISPID_IHTMLTABLE_HEIGHT)]
    void height(VARIANT v);

    [propget, id(DISPID_IHTMLTABLE_HEIGHT)]
    VARIANT height();

    [propput, id(DISPID_IHTMLTABLE_DATAPAGESIZE)]
    void dataPageSize(LONG v);

    [propget, id(DISPID_IHTMLTABLE_DATAPAGESIZE)]
    LONG dataPageSize();

    [id(DISPID_IHTMLTABLE_NEXTPAGE)]
    void nextPage();

    [id(DISPID_IHTMLTABLE_PREVIOUSPAGE)]
    void previousPage();

    [propget, id(DISPID_IHTMLTABLE_THEAD)]
    IHTMLTableSection *tHead();

    [propget, id(DISPID_IHTMLTABLE_TFOOT)]
    IHTMLTableSection *tFoot();

    [propget, id(DISPID_IHTMLTABLE_TBODIES)]
    IHTMLElementCollection *tBodies();

    [propget, id(DISPID_IHTMLTABLE_CAPTION)]
    IHTMLTableCaption *caption();

    [id(DISPID_IHTMLTABLE_CREATETHEAD)]
    IDispatch *createTHead();

    [id(DISPID_IHTMLTABLE_DELETETHEAD)]
    void deleteTHead();

    [id(DISPID_IHTMLTABLE_CREATETFOOT)]
    IDispatch *createTFoot();

    [id(DISPID_IHTMLTABLE_DELETETFOOT)]
    void deleteTFoot();

    [id(DISPID_IHTMLTABLE_CREATECAPTION)]
    IHTMLTableCaption *createCaption();

    [id(DISPID_IHTMLTABLE_DELETECAPTION)]
    void deleteCaption();

    [id(DISPID_IHTMLTABLE_INSERTROW)]
    IDispatch *insertRow([in, defaultvalue(-1)] LONG index);

    [id(DISPID_IHTMLTABLE_DELETEROW)]
    void deleteRow([in, defaultvalue(-1)] LONG index);

    [id(DISPID_IHTMLTABLE2_FIRSTPAGE)]
    void firstPage();

    [id(DISPID_IHTMLTABLE2_LASTPAGE)]
    void lastPage();

    [propget, id(DISPID_IHTMLTABLE2_CELLS)]
    IHTMLElementCollection *cells();

    [id(DISPID_IHTMLTABLE2_MOVEROW)]
    IDispatch *moveRow(
            [in, defaultvalue(-1)] LONG indexFrom,
            [in, defaultvalue(-1)] LONG indexTo);

    [propput, id(DISPID_IHTMLTABLE3_SUMMARY), displaybind, bindable]
    void summary(BSTR v);

    [propget, id(DISPID_IHTMLTABLE3_SUMMARY), displaybind, bindable]
    BSTR summary();
}

/*****************************************************************************
 *    DispHTMLTableRow dispinterface
 */
[
    hidden,
    uuid(3050f535-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLTableRow
{
properties:
methods:
    WINE_HTMLELEMENT_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLTABLEROW_ALIGN)]
    void align(BSTR v);

    [propget, id(DISPID_IHTMLTABLEROW_ALIGN)]
    BSTR align();

    [propput, id(DISPID_IHTMLTABLEROW_VALIGN)]
    void vAlign(BSTR v);

    [propget, id(DISPID_IHTMLTABLEROW_VALIGN)]
    BSTR vAlign();

    [propput, id(DISPID_IHTMLTABLEROW_BGCOLOR)]
    void bgColor(VARIANT v);

    [propget, id(DISPID_IHTMLTABLEROW_BGCOLOR)]
    VARIANT bgColor();

    [propput, id(DISPID_IHTMLTABLEROW_BORDERCOLOR)]
    void borderColor(VARIANT v);

    [propget, id(DISPID_IHTMLTABLEROW_BORDERCOLOR)]
    VARIANT borderColor();

    [propput, id(DISPID_IHTMLTABLEROW_BORDERCOLORLIGHT)]
    void borderColorLight(VARIANT v);

    [propget, id(DISPID_IHTMLTABLEROW_BORDERCOLORLIGHT)]
    VARIANT borderColorLight();

    [propput, id(DISPID_IHTMLTABLEROW_BORDERCOLORDARK)]
    void borderColorDark(VARIANT v);

    [propget, id(DISPID_IHTMLTABLEROW_BORDERCOLORDARK)]
    VARIANT borderColorDark();

    [propget, id(DISPID_IHTMLTABLEROW_ROWINDEX)]
    LONG rowIndex();

    [propget, id(DISPID_IHTMLTABLEROW_SECTIONROWINDEX)]
    LONG sectionRowIndex();

    [propget, id(DISPID_IHTMLTABLEROW_CELLS)]
    IHTMLElementCollection *cells();

    [id(DISPID_IHTMLTABLEROW_INSERTCELL)]
    IDispatch *insertCell([in, defaultvalue(-1)] LONG index);

    [id(DISPID_IHTMLTABLEROW_DELETECELL)]
    void deleteCell([in, defaultvalue(-1)] LONG index);

    [propput, id(DISPID_IHTMLTABLEROW2_HEIGHT)]
    void height(VARIANT v);

    [propget, id(DISPID_IHTMLTABLEROW2_HEIGHT)]
    VARIANT height();

    [propput, id(DISPID_IHTMLTABLEROW3_CH), displaybind, bindable]
    void ch(BSTR v);

    [propget, id(DISPID_IHTMLTABLEROW3_CH), displaybind, bindable]
    BSTR ch();

    [propput, id(DISPID_IHTMLTABLEROW3_CHOFF), displaybind, bindable]
    void chOff(BSTR v);

    [propget, id(DISPID_IHTMLTABLEROW3_CHOFF), displaybind, bindable]
    BSTR chOff();
}

/*****************************************************************************
 *    HTMLTableRow coclass
 */
[
    noncreatable,
    uuid(3050f26d-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLTableRow
{
    [default]         dispinterface DispHTMLTableRow;
 /* [source, default] dispinterface HTMLControlElementEvents; */
 /* [source]          dispinterface HTMLControlElementEvents2; */
    WINE_HTMLELEMENT_INTERFACES;
    interface IHTMLTableRow;
 /* interface IHTMLTableRowMetrics; */
 /* interface IHTMLTableRow2; */
 /* interface IHTMLTableRow3; */
 /* interface IHTMLTableRow4; */
}

/*****************************************************************************
 *    DispHTMLTableCell dispinterface
 */
[
    hidden,
    uuid(3050f536-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLTableCell
{
properties:
methods:
    WINE_HTMLELEMENT_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLTABLECELL_ROWSPAN)]
    void rowSpan(long v);

    [propget, id(DISPID_IHTMLTABLECELL_ROWSPAN)]
    long rowSpan();

    [propput, id(DISPID_IHTMLTABLECELL_COLSPAN)]
    void colSpan(long v);

    [propget, id(DISPID_IHTMLTABLECELL_COLSPAN)]
    long colSpan();

    [propput, id(DISPID_IHTMLTABLECELL_ALIGN)]
    void align(BSTR v);

    [propget, id(DISPID_IHTMLTABLECELL_ALIGN)]
    BSTR align();

    [propput, id(DISPID_IHTMLTABLECELL_VALIGN)]
    void vAlign(BSTR v);

    [propget, id(DISPID_IHTMLTABLECELL_VALIGN)]
    BSTR vAlign();

    [propput, id(DISPID_IHTMLTABLECELL_BGCOLOR)]
    void bgColor(VARIANT v);

    [propget, id(DISPID_IHTMLTABLECELL_BGCOLOR)]
    VARIANT bgColor();

    [propput, id(DISPID_IHTMLTABLECELL_NOWRAP)]
    void noWrap(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLTABLECELL_NOWRAP)]
    VARIANT_BOOL noWrap();

    [propput, id(DISPID_IHTMLTABLECELL_BACKGROUND)]
    void background(BSTR v);

    [propget, id(DISPID_IHTMLTABLECELL_BACKGROUND)]
    BSTR background();

    [propput, id(DISPID_IHTMLTABLECELL_BORDERCOLOR)]
    void borderColor(VARIANT v);

    [propget, id(DISPID_IHTMLTABLECELL_BORDERCOLOR)]
    VARIANT borderColor();

    [propput, id(DISPID_IHTMLTABLECELL_BORDERCOLORLIGHT)]
    void borderColorLight(VARIANT v);

    [propget, id(DISPID_IHTMLTABLECELL_BORDERCOLORLIGHT)]
    VARIANT borderColorLight();

    [propput, id(DISPID_IHTMLTABLECELL_BORDERCOLORDARK)]
    void borderColorDark(VARIANT v);

    [propget, id(DISPID_IHTMLTABLECELL_BORDERCOLORDARK)]
    VARIANT borderColorDark();

    [propput, id(DISPID_IHTMLTABLECELL_WIDTH)]
    void width(VARIANT v);

    [propget, id(DISPID_IHTMLTABLECELL_WIDTH)]
    VARIANT width();

    [propput, id(DISPID_IHTMLTABLECELL_HEIGHT)]
    void height(VARIANT v);

    [propget, id(DISPID_IHTMLTABLECELL_HEIGHT)]
    VARIANT height();

    [propget, id(DISPID_IHTMLTABLECELL_CELLINDEX)]
    long cellIndex();

    [propput, id(DISPID_IHTMLTABLECELL2_ABBR), displaybind, bindable]
    void abbr(BSTR v);

    [propget, id(DISPID_IHTMLTABLECELL2_ABBR), displaybind, bindable]
    BSTR abbr();

    [propput, id(DISPID_IHTMLTABLECELL2_AXIS), displaybind, bindable]
    void axis(BSTR v);

    [propget, id(DISPID_IHTMLTABLECELL2_AXIS), displaybind, bindable]
    BSTR axis();

    [propput, id(DISPID_IHTMLTABLECELL2_CH), displaybind, bindable]
    void ch(BSTR v);

    [propget, id(DISPID_IHTMLTABLECELL2_CH), displaybind, bindable]
    BSTR ch();

    [propput, id(DISPID_IHTMLTABLECELL2_CHOFF), displaybind, bindable]
    void chOff(BSTR v);

    [propget, id(DISPID_IHTMLTABLECELL2_CHOFF), displaybind, bindable]
    BSTR chOff();

    [propput, id(DISPID_IHTMLTABLECELL2_HEADERS), displaybind, bindable]
    void headers(BSTR v);

    [propget, id(DISPID_IHTMLTABLECELL2_HEADERS), displaybind, bindable]
    BSTR headers();

    [propput, id(DISPID_IHTMLTABLECELL2_SCOPE), displaybind, bindable]
    void scope(BSTR v);

    [propget, id(DISPID_IHTMLTABLECELL2_SCOPE), displaybind, bindable]
    BSTR scope();

    [propput, id(DISPID_IHTMLTABLECELL3_IE9_CH), displaybind, bindable]
    void ie9_ch(BSTR v);

    [propget, id(DISPID_IHTMLTABLECELL3_IE9_CH), displaybind, bindable]
    BSTR ie9_ch();

    [propput, id(DISPID_IHTMLTABLECELL3_IE9_CHOFF), displaybind, bindable]
    void ie9_chOff(BSTR v);

    [propget, id(DISPID_IHTMLTABLECELL3_IE9_CHOFF), displaybind, bindable]
    BSTR ie9_chOff();
}

/*****************************************************************************
 *    HTMLTableCell coclass
 */
[
    noncreatable,
    uuid(3050f246-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLTableCell
{
    [default]         dispinterface DispHTMLTableCell;
    [source, default] dispinterface HTMLTextContainerEvents;
    [source]          dispinterface HTMLTextContainerEvents2;
    WINE_HTMLELEMENT_INTERFACES;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLTableCell;
 /* interface IHTMLTableCell2; */
 /* interface IHTMLTableCell3; */
}

/*****************************************************************************
 *    IHTMLScriptElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f28b-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLScriptElement : IDispatch
{
    [propput, id(DISPID_IHTMLSCRIPTELEMENT_SRC), displaybind, bindable]
    HRESULT src([in] BSTR v);

    [propget, id(DISPID_IHTMLSCRIPTELEMENT_SRC), displaybind, bindable]
    HRESULT src([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSCRIPTELEMENT_HTMLFOR), displaybind, bindable]
    HRESULT htmlFor([in] BSTR v);

    [propget, id(DISPID_IHTMLSCRIPTELEMENT_HTMLFOR), displaybind, bindable]
    HRESULT htmlFor([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSCRIPTELEMENT_EVENT), displaybind, bindable]
    HRESULT event([in] BSTR v);

    [propget, id(DISPID_IHTMLSCRIPTELEMENT_EVENT), displaybind, bindable]
    HRESULT event([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSCRIPTELEMENT_TEXT), displaybind, bindable]
    HRESULT text([in] BSTR v);

    [propget, id(DISPID_IHTMLSCRIPTELEMENT_TEXT), displaybind, bindable]
    HRESULT text([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSCRIPTELEMENT_DEFER), displaybind, bindable]
    HRESULT defer([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLSCRIPTELEMENT_DEFER), displaybind, bindable]
    HRESULT defer([retval, out] VARIANT_BOOL *p);

    [propget, id(DISPID_IHTMLSCRIPTELEMENT_READYSTATE)]
    HRESULT readyState([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSCRIPTELEMENT_ONERROR), displaybind, bindable]
    HRESULT onerror([in] VARIANT v);

    [propget, id(DISPID_IHTMLSCRIPTELEMENT_ONERROR), displaybind, bindable]
    HRESULT onerror([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSCRIPTELEMENT_TYPE), displaybind, bindable]
    HRESULT type([in] BSTR v);

    [propget, id(DISPID_IHTMLSCRIPTELEMENT_TYPE), displaybind, bindable]
    HRESULT type([retval, out] BSTR *p);
}

/*****************************************************************************
 *    IHTMLScriptElement2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f828-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLScriptElement2 : IDispatch
{
    [propput, id(DISPID_IHTMLSCRIPTELEMENT2_CHARSET), displaybind, bindable]
    HRESULT charset([in] BSTR v);

    [propget, id(DISPID_IHTMLSCRIPTELEMENT2_CHARSET), displaybind, bindable]
    HRESULT charset([retval, out] BSTR *p);
}

/*****************************************************************************
 *    DispHTMLScriptElement dispinterface
 */
[
    hidden,
    uuid(3050f530-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLScriptElement
{
properties:
methods:
    WINE_HTMLELEMENT_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLSCRIPTELEMENT_SRC), displaybind, bindable]
    void src(BSTR v);

    [propget, id(DISPID_IHTMLSCRIPTELEMENT_SRC), displaybind, bindable]
    BSTR src();

    [propput, id(DISPID_IHTMLSCRIPTELEMENT_HTMLFOR), displaybind, bindable]
    void htmlFor(BSTR v);

    [propget, id(DISPID_IHTMLSCRIPTELEMENT_HTMLFOR), displaybind, bindable]
    BSTR htmlFor();

    [propput, id(DISPID_IHTMLSCRIPTELEMENT_EVENT), displaybind, bindable]
    void event(BSTR v);

    [propget, id(DISPID_IHTMLSCRIPTELEMENT_EVENT), displaybind, bindable]
    BSTR event();

    [propput, id(DISPID_IHTMLSCRIPTELEMENT_TEXT), displaybind, bindable]
    void text(BSTR v);

    [propget, id(DISPID_IHTMLSCRIPTELEMENT_TEXT), displaybind, bindable]
    BSTR text();

    [propput, id(DISPID_IHTMLSCRIPTELEMENT_DEFER), displaybind, bindable]
    void defer(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLSCRIPTELEMENT_DEFER), displaybind, bindable]
    VARIANT_BOOL defer();

    [propput, id(DISPID_IHTMLSCRIPTELEMENT_TYPE), displaybind, bindable]
    void type(BSTR v);

    [propget, id(DISPID_IHTMLSCRIPTELEMENT_TYPE), displaybind, bindable]
    BSTR type();

    [propput, id(DISPID_IHTMLSCRIPTELEMENT2_CHARSET), displaybind, bindable]
    void charset(BSTR v);

    [propget, id(DISPID_IHTMLSCRIPTELEMENT2_CHARSET), displaybind, bindable]
    BSTR charset();

    [propput, id(DISPID_IHTMLSCRIPTELEMENT3_IE8_SRC)]
    void ie8_src(BSTR v);

    [propget, id(DISPID_IHTMLSCRIPTELEMENT3_IE8_SRC)]
    BSTR ie8_src();
}

/*****************************************************************************
 *    HTMLScriptElement coclass
 */
[
    noncreatable,
    uuid(3050f28c-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLScriptElement
{
    [default]         dispinterface DispHTMLScriptElement;
 /* [source, default] dispinterface HTMLScriptEvents; */
 /* [source]          dispinterface HTMLScriptEvents2; */
    WINE_HTMLELEMENT_INTERFACES;
    interface IHTMLScriptElement;
    interface IHTMLScriptElement2;
 /* interface IHTMLScriptElement3; */
 /* interface IHTMLScriptElement4; */
}

/*****************************************************************************
 *    IHTMLObjectElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f24f-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLObjectElement : IDispatch
{
    [propget, id(DISPID_IHTMLOBJECTELEMENT_OBJECT), hidden]
    HRESULT object([retval, out] IDispatch **p);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_CLASSID), hidden]
    HRESULT classid([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_DATA), hidden]
    HRESULT data([retval, out] BSTR *p);

    [propputref, id(DISPID_IHTMLOBJECTELEMENT_RECORDSET), hidden]
    HRESULT recordset([in] IDispatch *v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_RECORDSET), hidden]
    HRESULT recordset([retval, out] IDispatch **p);

    [propput, id(DISPID_IHTMLOBJECTELEMENT_ALIGN), displaybind, bindable]
    HRESULT align([in] BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_ALIGN), displaybind, bindable]
    HRESULT align([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLOBJECTELEMENT_NAME), displaybind, bindable]
    HRESULT name([in] BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_NAME), displaybind, bindable]
    HRESULT name([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLOBJECTELEMENT_CODEBASE), displaybind, bindable]
    HRESULT codeBase([in] BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_CODEBASE), displaybind, bindable]
    HRESULT codeBase([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLOBJECTELEMENT_CODETYPE), displaybind, bindable]
    HRESULT codeType([in] BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_CODETYPE), displaybind, bindable]
    HRESULT codeType([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLOBJECTELEMENT_CODE), displaybind, bindable]
    HRESULT code([in] BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_CODE), displaybind, bindable]
    HRESULT code([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_BASEHREF)]
    HRESULT BaseHref([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLOBJECTELEMENT_TYPE), displaybind, bindable]
    HRESULT type([in] BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_TYPE), displaybind, bindable]
    HRESULT type([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_FORM)]
    HRESULT form([retval, out] IHTMLFormElement **p);

    [propput, id(DISPID_IHTMLOBJECTELEMENT_WIDTH)]
    HRESULT width([in] VARIANT v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_WIDTH)]
    HRESULT width([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLOBJECTELEMENT_HEIGHT)]
    HRESULT height([in] VARIANT v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_HEIGHT)]
    HRESULT height([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_READYSTATE), hidden]
    HRESULT readyState([retval, out] long *p);

    [propput, id(DISPID_IHTMLOBJECTELEMENT_ONREADYSTATECHANGE), displaybind, bindable]
    HRESULT onreadystatechange([in] VARIANT v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_ONREADYSTATECHANGE), displaybind, bindable]
    HRESULT onreadystatechange([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLOBJECTELEMENT_ONERROR), displaybind, bindable]
    HRESULT onerror([in] VARIANT v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_ONERROR), displaybind, bindable]
    HRESULT onerror([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLOBJECTELEMENT_ALTHTML)]
    HRESULT altHtml([in] BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_ALTHTML)]
    HRESULT altHtml([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLOBJECTELEMENT_VSPACE)]
    HRESULT vspace([in] long v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_VSPACE)]
    HRESULT vspace([retval, out] long *p);

    [propput, id(DISPID_IHTMLOBJECTELEMENT_HSPACE)]
    HRESULT hspace([in] long v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_HSPACE)]
    HRESULT hspace([retval, out] long *p);
}

/*****************************************************************************
 *    IHTMLObjectElement2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f4cd-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLObjectElement2 : IDispatch
{
    [id(DISPID_IHTMLOBJECTELEMENT2_NAMEDRECORDSET)]
    HRESULT namedRecordset(
            [in] BSTR dataMember,
            [in, optional] VARIANT *hierarchy,
            [out, retval] IDispatch **ppRecordset);

    [propput, id(DISPID_IHTMLOBJECTELEMENT2_CLASSID), hidden]
    HRESULT classid([in] BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT2_CLASSID), hidden]
    HRESULT classid([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLOBJECTELEMENT2_DATA), hidden]
    HRESULT data([in] BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT2_DATA), hidden]
    HRESULT data([out, retval] BSTR *p);
}

/*****************************************************************************
 *    IHTMLDivElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f200-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDivElement : IDispatch
{
    [propput, id(DISPID_IHTMLDIVELEMENT_ALIGN), displaybind, bindable]
    HRESULT align([in] BSTR v);

    [propget, id(DISPID_IHTMLDIVELEMENT_ALIGN), displaybind, bindable]
    HRESULT align([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLDIVELEMENT_NOWRAP), displaybind, bindable]
    HRESULT noWrap([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLDIVELEMENT_NOWRAP), displaybind, bindable]
    HRESULT noWrap([out, retval] VARIANT_BOOL *p);
}

/*****************************************************************************
 *    DispHTMLDivElement dispinterface
 */
[
    hidden,
    uuid(3050f50c-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLDivElement
{
properties:
methods:
    WINE_HTMLELEMENT_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLDIVELEMENT_ALIGN), displaybind, bindable]
    void align(BSTR v);

    [propget, id(DISPID_IHTMLDIVELEMENT_ALIGN), displaybind, bindable]
    BSTR align();

    [propput, id(DISPID_IHTMLDIVELEMENT_NOWRAP), displaybind, bindable]
    void noWrap(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLDIVELEMENT_NOWRAP), displaybind, bindable]
    VARIANT_BOOL noWrap();
}

/*****************************************************************************
 *    IHTMLParamElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f83d-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLParamElement : IDispatch
{
    [propput, id(DISPID_IHTMLPARAMELEMENT_NAME), displaybind, bindable]
    HRESULT name([in] BSTR v);

    [propget, id(DISPID_IHTMLPARAMELEMENT_NAME), displaybind, bindable]
    HRESULT name([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLPARAMELEMENT_VALUE), displaybind, bindable]
    HRESULT value([in] BSTR v);

    [propget, id(DISPID_IHTMLPARAMELEMENT_VALUE), displaybind, bindable]
    HRESULT value([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLPARAMELEMENT_TYPE), displaybind, bindable]
    HRESULT type([in] BSTR v);

    [propget, id(DISPID_IHTMLPARAMELEMENT_TYPE), displaybind, bindable]
    HRESULT type([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLPARAMELEMENT_VALUETYPE), displaybind, bindable]
    HRESULT valueType([in] BSTR v);

    [propget, id(DISPID_IHTMLPARAMELEMENT_VALUETYPE), displaybind, bindable]
    HRESULT valueType([retval, out] BSTR *p);
}

/*****************************************************************************
 *    IHTMLParamElement2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510444-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLParamElement2 : IDispatch
{
    [propput, id(DISPID_IHTMLPARAMELEMENT2_NAME), displaybind, bindable]
    HRESULT name([in] BSTR v);

    [propget, id(DISPID_IHTMLPARAMELEMENT2_NAME), displaybind, bindable]
    HRESULT name([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLPARAMELEMENT2_TYPE), displaybind, bindable]
    HRESULT type([in] BSTR v);

    [propget, id(DISPID_IHTMLPARAMELEMENT2_TYPE), displaybind, bindable]
    HRESULT type([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLPARAMELEMENT2_VALUE), displaybind, bindable]
    HRESULT value([in] BSTR v);

    [propget, id(DISPID_IHTMLPARAMELEMENT2_VALUE), displaybind, bindable]
    HRESULT value([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLPARAMELEMENT2_IE8_VALUETYPE)]
    HRESULT valueType([in] BSTR v);

    [propget, id(DISPID_IHTMLPARAMELEMENT2_IE8_VALUETYPE)]
    HRESULT valueType([retval, out] BSTR *p);
}

/*****************************************************************************
 *    DispHTMLObjectElement dispinterface
 */
[
    hidden,
    uuid(3050f529-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLObjectElement
{
properties:
methods:
    WINE_HTMLELEMENT_DISPINTERFACE_DECL;

    [propget, id(DISPID_IHTMLOBJECTELEMENT_OBJECT), hidden]
    IDispatch *object();

    [propputref, id(DISPID_IHTMLOBJECTELEMENT_RECORDSET), hidden]
    void recordset(IDispatch *v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_RECORDSET), hidden]
    IDispatch *recordset();

    [propput, id(DISPID_IHTMLOBJECTELEMENT_ALIGN), displaybind, bindable]
    void align(BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_ALIGN), displaybind, bindable]
    BSTR align();

    [propput, id(DISPID_IHTMLOBJECTELEMENT_NAME), displaybind, bindable]
    void name(BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_NAME), displaybind, bindable]
    BSTR name();

    [propput, id(DISPID_IHTMLOBJECTELEMENT_CODEBASE), displaybind, bindable]
    void codeBase(BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_CODEBASE), displaybind, bindable]
    BSTR codeBase();

    [propput, id(DISPID_IHTMLOBJECTELEMENT_CODETYPE), displaybind, bindable]
    void codeType(BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_CODETYPE), displaybind, bindable]
    BSTR codeType();

    [propput, id(DISPID_IHTMLOBJECTELEMENT_CODE), displaybind, bindable]
    void code(BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_CODE), displaybind, bindable]
    BSTR code();

    [propget, id(DISPID_IHTMLOBJECTELEMENT_BASEHREF)]
    BSTR BaseHref();

    [propput, id(DISPID_IHTMLOBJECTELEMENT_TYPE), displaybind, bindable]
    void type(BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_TYPE), displaybind, bindable]
    BSTR type();

    [propget, id(DISPID_IHTMLOBJECTELEMENT_FORM)]
    IHTMLFormElement *form();

    [propput, id(DISPID_IHTMLOBJECTELEMENT_WIDTH)]
    void width(VARIANT v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_WIDTH)]
    VARIANT width();

    [propput, id(DISPID_IHTMLOBJECTELEMENT_HEIGHT)]
    void height(VARIANT v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_HEIGHT)]
    VARIANT height();

    [propput, id(DISPID_IHTMLOBJECTELEMENT_ALTHTML)]
    void altHtml(BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_ALTHTML)]
    BSTR altHtml();

    [propput, id(DISPID_IHTMLOBJECTELEMENT_VSPACE)]
    void vspace(long v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_VSPACE)]
    long vspace();

    [propput, id(DISPID_IHTMLOBJECTELEMENT_HSPACE)]
    void hspace(long v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT_HSPACE)]
    long hspace();

    [id(DISPID_IHTMLOBJECTELEMENT2_NAMEDRECORDSET)]
    IDispatch *namedRecordset(
            [in] BSTR dataMember,
            [optional, in] VARIANT *hierarchy);

    [propput, id(DISPID_IHTMLOBJECTELEMENT2_CLASSID), hidden]
    void classid(BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT2_CLASSID), hidden]
    BSTR classid();

    [propput, id(DISPID_IHTMLOBJECTELEMENT2_DATA), hidden]
    void data(BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT2_DATA), hidden]
    BSTR data();

    [propput, id(DISPID_IHTMLOBJECTELEMENT3_ARCHIVE), displaybind, bindable]
    void archive(BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT3_ARCHIVE), displaybind, bindable]
    BSTR archive();

    [propput, id(DISPID_IHTMLOBJECTELEMENT3_ALT), displaybind, bindable]
    void alt(BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT3_ALT), displaybind, bindable]
    BSTR alt();

    [propput, id(DISPID_IHTMLOBJECTELEMENT3_DECLARE), displaybind, bindable]
    void declare(VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT3_DECLARE), displaybind, bindable]
    VARIANT_BOOL declare();

    [propput, id(DISPID_IHTMLOBJECTELEMENT3_STANDBY), displaybind, bindable]
    void standby(BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT3_STANDBY), displaybind, bindable]
    BSTR standby();

    [propput, id(DISPID_IHTMLOBJECTELEMENT3_BORDER)]
    void border(VARIANT v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT3_BORDER)]
    VARIANT border();

    [propput, id(DISPID_IHTMLOBJECTELEMENT3_USEMAP), displaybind, bindable]
    void useMap(BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT3_USEMAP), displaybind, bindable]
    BSTR useMap();

    [propget, id(DISPID_IHTMLOBJECTELEMENT4_CONTENTDOCUMENT)]
    IDispatch *contentDocument();

    [propput, id(DISPID_IHTMLOBJECTELEMENT4_IE8_CODEBASE)]
    void ie8_codeBase(BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT4_IE8_CODEBASE)]
    BSTR ie8_codeBase();

    [propput, id(DISPID_IHTMLOBJECTELEMENT4_IE8_DATA)]
    void ie8_data(BSTR v);

    [propget, id(DISPID_IHTMLOBJECTELEMENT4_IE8_DATA)]
    BSTR ie8_data();
}

/*****************************************************************************
 *    HTMLObjectElement coclass
 */
[
    noncreatable,
    uuid(3050f24e-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLObjectElement
{
    [default]         dispinterface DispHTMLObjectElement;
 /* [source, default] dispinterface HTMLObjectElementEvents; */
 /* [source]          dispinterface HTMLObjectElementEvents2; */
    WINE_HTMLDATAELEMENT_INTERFACES;
    interface IHTMLControlElement;
    interface IHTMLObjectElement;
    interface IHTMLObjectElement2;
 /* interface IHTMLObjectElement3; */
 /* interface IHTMLObjectElement4; */
 /* interface IGetSVGDocument; */
 /* interface IHTMLObjectElement5; */
}

/*****************************************************************************
 *    DispHTMLParamElement dispinterface
 */
[
    hidden,
    uuid(3050f590-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLParamElement
{
properties:
methods:
    WINE_HTMLELEMENT_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLPARAMELEMENT_NAME), displaybind, bindable]
    void name(BSTR v);

    [propget, id(DISPID_IHTMLPARAMELEMENT_NAME), displaybind, bindable]
    BSTR name();

    [propput, id(DISPID_IHTMLPARAMELEMENT_VALUE), displaybind, bindable]
    void value(BSTR v);

    [propget, id(DISPID_IHTMLPARAMELEMENT_VALUE), displaybind, bindable]
    BSTR value();

    [propput, id(DISPID_IHTMLPARAMELEMENT_TYPE), displaybind, bindable]
    void type(BSTR v);

    [propget, id(DISPID_IHTMLPARAMELEMENT_TYPE), displaybind, bindable]
    BSTR type();

    [propput, id(DISPID_IHTMLPARAMELEMENT_VALUETYPE), displaybind, bindable]
    void valueType(BSTR v);

    [propget, id(DISPID_IHTMLPARAMELEMENT_VALUETYPE), displaybind, bindable]
    BSTR valueType();

    [propput, id(DISPID_IHTMLPARAMELEMENT2_IE8_VALUETYPE)]
    void ie8_valueType(BSTR v);

    [propget, id(DISPID_IHTMLPARAMELEMENT2_IE8_VALUETYPE)]
    BSTR ie8_valueType();
}

/*****************************************************************************
 *    IHTMLFrameBase interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f311-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLFrameBase : IDispatch
{
    [propput, id(DISPID_IHTMLFRAMEBASE_SRC)]
    HRESULT src([in] BSTR v);

    [propget, id(DISPID_IHTMLFRAMEBASE_SRC)]
    HRESULT src([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLFRAMEBASE_NAME)]
    HRESULT name([in] BSTR v);

    [propget, id(DISPID_IHTMLFRAMEBASE_NAME)]
    HRESULT name([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLFRAMEBASE_BORDER)]
    HRESULT border([in] VARIANT v);

    [propget, id(DISPID_IHTMLFRAMEBASE_BORDER)]
    HRESULT border([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLFRAMEBASE_FRAMEBORDER)]
    HRESULT frameBorder([in] BSTR v);

    [propget, id(DISPID_IHTMLFRAMEBASE_FRAMEBORDER)]
    HRESULT frameBorder([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLFRAMEBASE_FRAMESPACING)]
    HRESULT frameSpacing([in] VARIANT v);

    [propget, id(DISPID_IHTMLFRAMEBASE_FRAMESPACING)]
    HRESULT frameSpacing([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLFRAMEBASE_MARGINWIDTH)]
    HRESULT marginWidth([in] VARIANT v);

    [propget, id(DISPID_IHTMLFRAMEBASE_MARGINWIDTH)]
    HRESULT marginWidth([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)]
    HRESULT marginHeight([in] VARIANT v);

    [propget, id(DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)]
    HRESULT marginHeight([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLFRAMEBASE_NORESIZE)]
    HRESULT noResize([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLFRAMEBASE_NORESIZE)]
    HRESULT noResize([out, retval] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLFRAMEBASE_SCROLLING)]
    HRESULT scrolling([in] BSTR v);

    [propget, id(DISPID_IHTMLFRAMEBASE_SCROLLING)]
    HRESULT scrolling([out, retval] BSTR *p);
}

#define WINE_IHTMLFRAMEBASE_DISPINTERFACE_DECL          \
    [propput, id(DISPID_IHTMLFRAMEBASE_SRC)]            \
    void src(BSTR v);                                   \
                                                        \
    [propget, id(DISPID_IHTMLFRAMEBASE_SRC)]            \
    BSTR src();                                         \
                                                        \
    [propput, id(DISPID_IHTMLFRAMEBASE_NAME)]           \
    void name(BSTR v);                                  \
                                                        \
    [propget, id(DISPID_IHTMLFRAMEBASE_NAME)]           \
    BSTR name();                                        \
                                                        \
    [propput, id(DISPID_IHTMLFRAMEBASE_BORDER)]         \
    void border(VARIANT v);                             \
                                                        \
    [propget, id(DISPID_IHTMLFRAMEBASE_BORDER)]         \
    VARIANT border();                                   \
                                                        \
    [propput, id(DISPID_IHTMLFRAMEBASE_FRAMEBORDER)]    \
    void frameBorder(BSTR v);                           \
                                                        \
    [propget, id(DISPID_IHTMLFRAMEBASE_FRAMEBORDER)]    \
    BSTR frameBorder();                                 \
                                                        \
    [propput, id(DISPID_IHTMLFRAMEBASE_FRAMESPACING)]   \
    void frameSpacing(VARIANT v);                       \
                                                        \
    [propget, id(DISPID_IHTMLFRAMEBASE_FRAMESPACING)]   \
    VARIANT frameSpacing();                             \
                                                        \
    [propput, id(DISPID_IHTMLFRAMEBASE_MARGINWIDTH)]    \
    void marginWidth(VARIANT v);                        \
                                                        \
    [propget, id(DISPID_IHTMLFRAMEBASE_MARGINWIDTH)]    \
    VARIANT marginWidth();                              \
                                                        \
    [propput, id(DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)]   \
    void marginHeight(VARIANT v);                       \
                                                        \
    [propget, id(DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)]   \
    VARIANT marginHeight();                             \
                                                        \
    [propput, id(DISPID_IHTMLFRAMEBASE_NORESIZE)]       \
    void noResize(VARIANT_BOOL v);                      \
                                                        \
    [propget, id(DISPID_IHTMLFRAMEBASE_NORESIZE)]       \
    VARIANT_BOOL noResize();                            \
                                                        \
    [propput, id(DISPID_IHTMLFRAMEBASE_SCROLLING)]      \
    void scrolling(BSTR v);                             \
                                                        \
    [propget, id(DISPID_IHTMLFRAMEBASE_SCROLLING)]      \
    BSTR scrolling()

/*****************************************************************************
 *    IHTMLFrameBase2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f6db-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLFrameBase2 : IDispatch
{
    [propget, id(DISPID_IHTMLFRAMEBASE2_CONTENTWINDOW)]
    HRESULT contentWindow([retval, out] IHTMLWindow2 **p);

    [propput, id(DISPID_IHTMLFRAMEBASE2_ONLOAD), displaybind, bindable]
    HRESULT onload([in] VARIANT v);

    [propget, id(DISPID_IHTMLFRAMEBASE2_ONLOAD), displaybind, bindable]
    HRESULT onload([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLFRAMEBASE2_ONREADYSTATECHANGE), displaybind, bindable]
    HRESULT onreadystatechange([in] VARIANT v);

    [propget, id(DISPID_IHTMLFRAMEBASE2_ONREADYSTATECHANGE), displaybind, bindable]
    HRESULT onreadystatechange([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLFRAMEBASE2_READYSTATE)]
    HRESULT readyState([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)]
    HRESULT allowTransparency([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)]
    HRESULT allowTransparency([retval, out] VARIANT_BOOL *p);
}

#define WINE_IHTMLFRAMEBASE2_DISPINTERFACE_DECL                         \
    [propget, id(DISPID_IHTMLFRAMEBASE2_CONTENTWINDOW)]                 \
    IHTMLWindow2 *contentWindow();                                      \
                                                                        \
    [propput, id(DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)]             \
    void allowTransparency(VARIANT_BOOL v);                             \
                                                                        \
    [propget, id(DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)]             \
    VARIANT_BOOL allowTransparency()

#define WINE_IHTMLFRAMEBASE3_DISPINTERFACE_DECL                           \
    [propput, id(DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] \
    void longDesc(BSTR v);                                                \
                                                                          \
    [propget, id(DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] \
    BSTR longDesc()


#define WINE_HTMLFRAMEBASE_DISPINTERFACE_DECL \
    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;  \
    WINE_IHTMLFRAMEBASE_DISPINTERFACE_DECL;   \
    WINE_IHTMLFRAMEBASE2_DISPINTERFACE_DECL;  \
    WINE_IHTMLFRAMEBASE3_DISPINTERFACE_DECL

/*****************************************************************************
 *    IHTMLFrameElement3 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3051042d-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLFrameElement3 : IDispatch
{
    [propget, id(DISPID_IHTMLFRAMEELEMENT3_CONTENTDOCUMENT)]
    HRESULT contentDocument([out, retval] IDispatch **p);

    [propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_SRC)]
    HRESULT src([in] BSTR v);

    [propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_SRC)]
    HRESULT src([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC)]
    HRESULT longDesc([in] BSTR v);

    [propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC)]
    HRESULT longDesc([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER)]
    HRESULT frameBorder([in] BSTR v);

    [propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER)]
    HRESULT frameBorder([out, retval] BSTR * p);
}

/*****************************************************************************
 *    DispHTMLFrameElement dispinterface
 */
[
    hidden,
    uuid(3050f513-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLFrameElement
{
properties:
methods:
    WINE_HTMLFRAMEBASE_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLFRAMEELEMENT_BORDERCOLOR)]
    void borderColor(VARIANT v);

    [propget, id(DISPID_IHTMLFRAMEELEMENT_BORDERCOLOR)]
    VARIANT borderColor();

    [propput, id(DISPID_IHTMLFRAMEELEMENT2_HEIGHT)]
    void height(VARIANT v);

    [propget, id(DISPID_IHTMLFRAMEELEMENT2_HEIGHT)]
    VARIANT height();

    [propput, id(DISPID_IHTMLFRAMEELEMENT2_WIDTH)]
    void width(VARIANT v);

    [propget, id(DISPID_IHTMLFRAMEELEMENT2_WIDTH)]
    VARIANT width();

    [propget, id(DISPID_IHTMLFRAMEELEMENT3_CONTENTDOCUMENT)]
    IDispatch *contentDocument();

    [propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_SRC)]
    void ie8_src(BSTR v);

    [propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_SRC)]
    BSTR ie8_src();

    [propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC)]
    void ie8_longDesc(BSTR v);

    [propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC)]
    BSTR ie8_longDesc();

    [propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER)]
    void ie8_frameBorder(BSTR v);

    [propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER)]
    BSTR ie8_frameBorder();
}

/*****************************************************************************
 *    HTMLFrameElement coclass
 */
[
    noncreatable,
    uuid(3050f314-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLFrameElement
{
    [default]         dispinterface DispHTMLFrameElement;
 /* [source, default] dispinterface HTMLControlElementEvents; */
 /* [source]          dispinterface HTMLControlElementEvents2; */
    WINE_HTMLDATAELEMENT_INTERFACES;
    interface IHTMLControlElement;
    interface IHTMLFrameBase;
    interface IHTMLFrameBase2;
 /* interface IHTMLFrameBase3; */
 /* interface IHTMLFrameElement; */
 /* interface IHTMLFrameElement2; */
    interface IHTMLFrameElement3;
 /* interface IGetSVGDocument; */
}

/*****************************************************************************
 *    IHTMLIFrameElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f315-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLIFrameElement : IDispatch
{
    [propput, id(DISPID_IHTMLIFRAMEELEMENT_VSPACE)]
    HRESULT vspace([in] LONG v);

    [propget, id(DISPID_IHTMLIFRAMEELEMENT_VSPACE)]
    HRESULT vspace([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLIFRAMEELEMENT_HSPACE)]
    HRESULT hspace([in] LONG v);

    [propget, id(DISPID_IHTMLIFRAMEELEMENT_HSPACE)]
    HRESULT hspace([retval, out] LONG *p);

    [propput, id(DISPID_IHTMLIFRAMEELEMENT_ALIGN), displaybind, bindable]
    HRESULT align([in] BSTR v);

    [propget, id(DISPID_IHTMLIFRAMEELEMENT_ALIGN), displaybind, bindable]
    HRESULT align([retval, out] BSTR *p);
}

/*****************************************************************************
 *    IHTMLIFrameElement2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f4e6-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLIFrameElement2 : IDispatch
{
    [propput, id(DISPID_IHTMLIFRAMEELEMENT2_HEIGHT)]
    HRESULT height([in] VARIANT v);

    [propget, id(DISPID_IHTMLIFRAMEELEMENT2_HEIGHT)]
    HRESULT height([out, retval] VARIANT *p);

    [propput, id(DISPID_IHTMLIFRAMEELEMENT2_WIDTH)]
    HRESULT width([in] VARIANT v);

    [propget, id(DISPID_IHTMLIFRAMEELEMENT2_WIDTH)]
    HRESULT width([out, retval] VARIANT *p);
}

/*****************************************************************************
 *    IHTMLIFrameElement3 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510433-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLIFrameElement3 : IDispatch
{
    [propget, id(DISPID_IHTMLIFRAMEELEMENT3_CONTENTDOCUMENT)]
    HRESULT contentDocument([out, retval] IDispatch **p);

    [propput, id(DISPID_IHTMLIFRAMEELEMENT3_IE8_SRC)]
    HRESULT src([in] BSTR v);

    [propget, id(DISPID_IHTMLIFRAMEELEMENT3_IE8_SRC)]
    HRESULT src([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLIFRAMEELEMENT3_IE8_LONGDESC)]
    HRESULT longDesc([in] BSTR v);

    [propget, id(DISPID_IHTMLIFRAMEELEMENT3_IE8_LONGDESC)]
    HRESULT longDesc([out, retval] BSTR *p);

    [propput, id(DISPID_IHTMLIFRAMEELEMENT3_IE8_FRAMEBORDER)]
    HRESULT frameBorder([in] BSTR v);

    [propget, id(DISPID_IHTMLIFRAMEELEMENT3_IE8_FRAMEBORDER)]
    HRESULT frameBorder([out, retval] BSTR *p);
}

/*****************************************************************************
 *    DispHTMLIFrame dispinterface
 */
[
    hidden,
    uuid(3050f51b-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLIFrame
{
properties:
methods:
    WINE_HTMLFRAMEBASE_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLIFRAMEELEMENT_VSPACE)]
    void vspace(LONG v);

    [propget, id(DISPID_IHTMLIFRAMEELEMENT_VSPACE)]
    LONG vspace();

    [propput, id(DISPID_IHTMLIFRAMEELEMENT_HSPACE)]
    void hspace(LONG v);

    [propget, id(DISPID_IHTMLIFRAMEELEMENT_HSPACE)]
    LONG hspace();

    [propput, id(DISPID_IHTMLIFRAMEELEMENT_ALIGN), displaybind, bindable]
    void align(BSTR v);

    [propget, id(DISPID_IHTMLIFRAMEELEMENT_ALIGN), displaybind, bindable]
    BSTR align();

    [propput, id(DISPID_IHTMLIFRAMEELEMENT2_HEIGHT)]
    void height(VARIANT v);

    [propget, id(DISPID_IHTMLIFRAMEELEMENT2_HEIGHT)]
    VARIANT height();

    [propput, id(DISPID_IHTMLIFRAMEELEMENT2_WIDTH)]
    void width(VARIANT v);

    [propget, id(DISPID_IHTMLIFRAMEELEMENT2_WIDTH)]
    VARIANT width();

    [propget, id(DISPID_IHTMLIFRAMEELEMENT3_CONTENTDOCUMENT)]
    IDispatch *contentDocument();

    [propput, id(DISPID_IHTMLIFRAMEELEMENT3_IE8_SRC)]
    void ie8_src(BSTR v);

    [propget, id(DISPID_IHTMLIFRAMEELEMENT3_IE8_SRC)]
    BSTR ie8_src();

    [propput, id(DISPID_IHTMLIFRAMEELEMENT3_IE8_LONGDESC)]
    void ie8_longDesc(BSTR v);

    [propget, id(DISPID_IHTMLIFRAMEELEMENT3_IE8_LONGDESC)]
    BSTR ie8_longDesc();

    [propput, id(DISPID_IHTMLIFRAMEELEMENT3_IE8_FRAMEBORDER)]
    void ie8_frameBorder(BSTR v);

    [propget, id(DISPID_IHTMLIFRAMEELEMENT3_IE8_FRAMEBORDER)]
    BSTR ie8_frameBorder();
}

/*****************************************************************************
 *    HTMLIFrame coclass
 */
[
    noncreatable,
    uuid(3050f316-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLIFrame
{
    [default]         dispinterface DispHTMLIFrame;
 /* [source, default] dispinterface HTMLControlElementEvents; */
 /* [source]          dispinterface HTMLControlElementEvents2; */
    WINE_HTMLDATAELEMENT_INTERFACES;
    interface IHTMLControlElement;
    interface IHTMLFrameBase;
    interface IHTMLFrameBase2;
 /* interface IHTMLFrameBase3; */
    interface IHTMLIFrameElement;
    interface IHTMLIFrameElement2;
    interface IHTMLIFrameElement3;
 /* interface IGetSVGDocument; */
}

/*****************************************************************************
 *    IHTMLStyleElement interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f375-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLStyleElement : IDispatch
{
    [propput, id(DISPID_IHTMLSTYLEELEMENT_TYPE), displaybind, bindable]
    HRESULT type([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLEELEMENT_TYPE), displaybind, bindable]
    HRESULT type([retval, out] BSTR *p);

    [propget, id(DISPID_IHTMLSTYLEELEMENT_READYSTATE)]
    HRESULT readyState([retval, out] BSTR *p);

    [propput, id(DISPID_IHTMLSTYLEELEMENT_ONREADYSTATECHANGE), displaybind, bindable]
    HRESULT onreadystatechange([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLEELEMENT_ONREADYSTATECHANGE), displaybind, bindable]
    HRESULT onreadystatechange([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLEELEMENT_ONLOAD), displaybind, bindable]
    HRESULT onload([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLEELEMENT_ONLOAD), displaybind, bindable]
    HRESULT onload([retval, out] VARIANT *p);

    [propput, id(DISPID_IHTMLSTYLEELEMENT_ONERROR), displaybind, bindable]
    HRESULT onerror([in] VARIANT v);

    [propget, id(DISPID_IHTMLSTYLEELEMENT_ONERROR), displaybind, bindable]
    HRESULT onerror([retval, out] VARIANT *p);

    [propget, id(DISPID_IHTMLSTYLEELEMENT_STYLESHEET)]
    HRESULT styleSheet([retval, out] IHTMLStyleSheet **p);

    [propput, id(DISPID_IHTMLSTYLEELEMENT_DISABLED), displaybind, bindable]
    HRESULT disabled([in] VARIANT_BOOL v);

    [propget, id(DISPID_IHTMLSTYLEELEMENT_DISABLED), displaybind, bindable]
    HRESULT disabled([retval, out] VARIANT_BOOL *p);

    [propput, id(DISPID_IHTMLSTYLEELEMENT_MEDIA), displaybind, bindable]
    HRESULT media([in] BSTR v);

    [propget, id(DISPID_IHTMLSTYLEELEMENT_MEDIA), displaybind, bindable]
    HRESULT media([retval, out] BSTR *p);
}

/*****************************************************************************
 *    IHTMLStyleElement2 interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3051072a-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLStyleElement2 : IDispatch
{
    [propget, id(DISPID_IHTMLSTYLEELEMENT2_SHEET)]
    HRESULT sheet([out, retval] IHTMLStyleSheet **p);
}

/*****************************************************************************
 *    DispHTMLStyleElement dispinterface
 */
[
    hidden,
    uuid(3050f511-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLStyleElement
{
properties:
methods:
    WINE_HTMLELEMENT_DISPINTERFACE_DECL;

    [propput, id(DISPID_IHTMLSTYLEELEMENT_TYPE), displaybind, bindable]
    void type(BSTR v);

    [propget, id(DISPID_IHTMLSTYLEELEMENT_TYPE), displaybind, bindable]
    BSTR type();

    [propget, id(DISPID_IHTMLSTYLEELEMENT_STYLESHEET)]
    IHTMLStyleSheet *styleSheet();

    [propput, id(DISPID_IHTMLSTYLEELEMENT_MEDIA), displaybind, bindable]
    void media(BSTR v);

    [propget, id(DISPID_IHTMLSTYLEELEMENT_MEDIA), displaybind, bindable]
    BSTR media();

    [propget, id(DISPID_IHTMLSTYLEELEMENT2_SHEET)]
    IHTMLStyleSheet *sheet();
}

/*****************************************************************************
 *    HTMLStyleElement coclass
 */
[
    noncreatable,
    uuid(3050f37d-98b5-11cf-bb82-00aa00bdce0b)
]
coclass HTMLStyleElement
{
    [default]         dispinterface DispHTMLStyleElement;
 /* [source, default] dispinterface HTMLStyleElementEvents; */
 /* [source]          dispinterface HTMLStyleElementEvents2; */
    WINE_HTMLELEMENT_INTERFACES;
    interface IHTMLStyleElement;
    interface IHTMLStyleElement2;
}

/*****************************************************************************
 *    IHTMLStorage interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510474-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLStorage : IDispatch
{
    [propget, id(DISPID_IHTMLSTORAGE_LENGTH), hidden]
    HRESULT length([out, retval] long *p);

    [propget, id(DISPID_IHTMLSTORAGE_REMAININGSPACE), hidden]
    HRESULT remainingSpace([out, retval] long *p);

    [id(DISPID_IHTMLSTORAGE_KEY)]
    HRESULT key(
            [in] long lIndex,
            [out, retval] BSTR *);

    [id(DISPID_IHTMLSTORAGE_GETITEM)]
    HRESULT getItem(
            [in] BSTR bstrKey,
            [out, retval] VARIANT *);

    [id(DISPID_IHTMLSTORAGE_SETITEM)]
    HRESULT setItem(
            [in] BSTR bstrKey,
            [in] BSTR bstrValue);

    [id(DISPID_IHTMLSTORAGE_REMOVEITEM)]
    HRESULT removeItem([in] BSTR bstrKey);

    [id(DISPID_IHTMLSTORAGE_CLEAR)]
    HRESULT clear();
}

/*****************************************************************************
 *    IDOMEventTarget interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104b9-98b5-11cf-bb82-00aa00bdce0b)
]
interface IEventTarget : IDispatch
{
    [id(DISPID_IEVENTTARGET_ADDEVENTLISTENER)]
    HRESULT addEventListener(
            [in] BSTR type,
            [in] IDispatch *listener,
            [in] VARIANT_BOOL useCapture);

    [id(DISPID_IEVENTTARGET_REMOVEEVENTLISTENER)]
    HRESULT removeEventListener(
            [in] BSTR type,
            [in] IDispatch *listener,
            [in] VARIANT_BOOL useCapture);

    [id(DISPID_IEVENTTARGET_DISPATCHEVENT)]
    HRESULT dispatchEvent(
            [in] IDOMEvent *evt,
            [out, retval] VARIANT_BOOL *pfResult);
}

typedef enum _DOM_EVENT_PHASE
{
    DEP_CAPTURING_PHASE = 1,
    DEP_AT_TARGET       = 2,
    DEP_BUBBLING_PHASE  = 3,
    DOM_EVENT_PHASE_Max = 0x7fffffff
} DOM_EVENT_PHASE;

/*****************************************************************************
 *    IDOMEvent interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305104ba-98b5-11cf-bb82-00aa00bdce0b)
]
interface IDOMEvent : IDispatch
{
    [propget, id(DISPID_IDOMEVENT_BUBBLES)]
    HRESULT bubbles([out, retval] VARIANT_BOOL *p);

    [propget, id(DISPID_IDOMEVENT_CANCELABLE)]
    HRESULT cancelable([out, retval] VARIANT_BOOL *p);

    [propget, id(DISPID_IDOMEVENT_CURRENTTARGET)]
    HRESULT currentTarget([out, retval] IEventTarget **p);

    [propget, id(DISPID_IDOMEVENT_DEFAULTPREVENTED)]
    HRESULT defaultPrevented([out, retval] VARIANT_BOOL *p);

    [propget, id(DISPID_IDOMEVENT_EVENTPHASE)]
    HRESULT eventPhase([out, retval] USHORT *p);

    [propget, id(DISPID_IDOMEVENT_TARGET)]
    HRESULT target([out, retval] IEventTarget **p);

    [propget, id(DISPID_IDOMEVENT_TIMESTAMP)]
    HRESULT timeStamp([out, retval] ULONGLONG *p);

    [propget, id(DISPID_IDOMEVENT_TYPE)]
    HRESULT type([out, retval] BSTR *p);

    [id(DISPID_IDOMEVENT_INITEVENT)]
    HRESULT initEvent(
            [in] BSTR eventType,
            [in] VARIANT_BOOL canBubble,
            [in] VARIANT_BOOL cancelable);

    [id(DISPID_IDOMEVENT_PREVENTDEFAULT)]
    HRESULT preventDefault();

    [id(DISPID_IDOMEVENT_STOPPROPAGATION)]
    HRESULT stopPropagation();

    [id(DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)]
    HRESULT stopImmediatePropagation();

    [propget, id(DISPID_IDOMEVENT_ISTRUSTED)]
    HRESULT isTrusted([out, retval] VARIANT_BOOL *p);

    [propput, id(DISPID_IDOMEVENT_CANCELBUBBLE)]
    HRESULT cancelBubble([in] VARIANT_BOOL v);

    [propget, id(DISPID_IDOMEVENT_CANCELBUBBLE)]
    HRESULT cancelBubble([out, retval] VARIANT_BOOL *p);

    [propget, id(DISPID_IDOMEVENT_SRCELEMENT)]
    HRESULT srcElement([out, retval] IHTMLElement **p);
}

/*****************************************************************************
 *    DispDOMEvent dispinterface
 */
[
    hidden,
    uuid(3050f5a2-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispDOMEvent
{
properties:
methods:
#define WINE_IDOMEVENT_DISPINTERFACE_DECL                  \
    [propget, id(DISPID_IDOMEVENT_BUBBLES)]                \
    VARIANT_BOOL bubbles();                                \
                                                           \
    [propget, id(DISPID_IDOMEVENT_CANCELABLE)]             \
    VARIANT_BOOL cancelable();                             \
                                                           \
    [propget, id(DISPID_IDOMEVENT_CURRENTTARGET)]          \
    IEventTarget *currentTarget();                         \
                                                           \
    [propget, id(DISPID_IDOMEVENT_DEFAULTPREVENTED)]       \
    VARIANT_BOOL defaultPrevented();                       \
                                                           \
    [propget, id(DISPID_IDOMEVENT_EVENTPHASE)]             \
    USHORT eventPhase();                                   \
                                                           \
    [propget, id(DISPID_IDOMEVENT_TARGET)]                 \
    IEventTarget *target();                                \
                                                           \
    [propget, id(DISPID_IDOMEVENT_TIMESTAMP)]              \
    ULONGLONG timeStamp();                                 \
                                                           \
    [propget, id(DISPID_IDOMEVENT_TYPE)]                   \
    BSTR type();                                           \
                                                           \
    [id(DISPID_IDOMEVENT_INITEVENT)]                       \
    void initEvent(                                        \
            [in] BSTR eventType,                           \
            [in] VARIANT_BOOL canBubble,                   \
            [in] VARIANT_BOOL cancelable);                 \
                                                           \
    [id(DISPID_IDOMEVENT_PREVENTDEFAULT)]                  \
    void preventDefault();                                 \
                                                           \
    [id(DISPID_IDOMEVENT_STOPPROPAGATION)]                 \
    void stopPropagation();                                \
                                                           \
    [id(DISPID_IDOMEVENT_STOPIMMEDIATEPROPAGATION)]        \
    void stopImmediatePropagation();                       \
                                                           \
    [propget, id(DISPID_IDOMEVENT_ISTRUSTED)]              \
    VARIANT_BOOL isTrusted();                              \
                                                           \
    [propput, id(DISPID_IDOMEVENT_CANCELBUBBLE)]           \
    void cancelBubble(VARIANT_BOOL v);                     \
                                                           \
    [propget, id(DISPID_IDOMEVENT_CANCELBUBBLE)]           \
    VARIANT_BOOL cancelBubble();                           \
                                                           \
    [propget, id(DISPID_IDOMEVENT_SRCELEMENT)]             \
    IHTMLElement *srcElement()

    WINE_IDOMEVENT_DISPINTERFACE_DECL;
}

/*****************************************************************************
 *    IDOMUIEvent interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305106ca-98b5-11cf-bb82-00aa00bdce0b)
]
interface IDOMUIEvent : IDispatch
{
    [propget, id(DISPID_IDOMUIEVENT_VIEW)]
    HRESULT view([out, retval] IHTMLWindow2 **p);

    [propget, id(DISPID_IDOMUIEVENT_DETAIL)]
    HRESULT detail([out, retval] long *p);

    [id(DISPID_IDOMUIEVENT_INITUIEVENT)]
    HRESULT initUIEvent(
        [in] BSTR eventType,
        [in] VARIANT_BOOL canBubble,
        [in] VARIANT_BOOL cancelable,
        [in] IHTMLWindow2 *view,
        [in] long detail);
}

/*****************************************************************************
 *    DispDOMUIEvent dispinterface
 */
[
    hidden,
    uuid(30590072-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispDOMUIEvent
{
properties:
methods:
#define WINE_IDOMUIEVENT_DISPINTERFACE_DECL                \
    [propget, id(DISPID_IDOMUIEVENT_VIEW)]                 \
    IHTMLWindow2 *view();                                  \
                                                           \
    [propget, id(DISPID_IDOMUIEVENT_DETAIL)]               \
    long detail();                                         \
                                                           \
    [id(DISPID_IDOMUIEVENT_INITUIEVENT)]                   \
    void initUIEvent(                                      \
            [in] BSTR eventType,                           \
            [in] VARIANT_BOOL canBubble,                   \
            [in] VARIANT_BOOL cancelable,                  \
            [in] IHTMLWindow2 *view,                       \
            [in] long detail)

    WINE_IDOMEVENT_DISPINTERFACE_DECL;
    WINE_IDOMUIEVENT_DISPINTERFACE_DECL;
}

/*****************************************************************************
 *    IDOMMouseEvent interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305106ce-98b5-11cf-bb82-00aa00bdce0b)
]
interface IDOMMouseEvent : IDispatch
{
    [propget, id(DISPID_IDOMMOUSEEVENT_SCREENX)]
    HRESULT screenX([out, retval] long *p);

    [propget, id(DISPID_IDOMMOUSEEVENT_SCREENY)]
    HRESULT screenY([out, retval] long *p);

    [propget, id(DISPID_IDOMMOUSEEVENT_CLIENTX)]
    HRESULT clientX([out, retval] long *p);

    [propget, id(DISPID_IDOMMOUSEEVENT_CLIENTY)]
    HRESULT clientY([out, retval] long *p);

    [propget, id(DISPID_IDOMMOUSEEVENT_CTRLKEY)]
    HRESULT ctrlKey([out, retval] VARIANT_BOOL *p);

    [propget, id(DISPID_IDOMMOUSEEVENT_SHIFTKEY)]
    HRESULT shiftKey([out, retval] VARIANT_BOOL *p);

    [propget, id(DISPID_IDOMMOUSEEVENT_ALTKEY)]
    HRESULT altKey([out, retval] VARIANT_BOOL *p);

    [propget, id(DISPID_IDOMMOUSEEVENT_METAKEY)]
    HRESULT metaKey([out, retval] VARIANT_BOOL *p);

    [propget, id(DISPID_IDOMMOUSEEVENT_BUTTON)]
    HRESULT button([out, retval] USHORT *p);

    [propget, id(DISPID_IDOMMOUSEEVENT_RELATEDTARGET)]
    HRESULT relatedTarget([out, retval] IEventTarget **p);

    [id(DISPID_IDOMMOUSEEVENT_INITMOUSEEVENT)]
    HRESULT initMouseEvent(
            [in] BSTR eventType,
            [in] VARIANT_BOOL canBubble,
            [in] VARIANT_BOOL cancelable,
            [in] IHTMLWindow2 *viewArg,
            [in] long detailArg,
            [in] long screenXArg,
            [in] long screenYArg,
            [in] long clientXArg,
            [in] long clientYArg,
            [in] VARIANT_BOOL ctrlKeyArg,
            [in] VARIANT_BOOL altKeyArg,
            [in] VARIANT_BOOL shiftKeyArg,
            [in] VARIANT_BOOL metaKeyArg,
            [in] USHORT buttonArg,
            [in] IEventTarget *relatedTargetArg);

    [id(DISPID_IDOMMOUSEEVENT_GETMODIFIERSTATE)]
    HRESULT getModifierState(
            [in] BSTR keyArg,
            [out, retval] VARIANT_BOOL *activated);

    [propget, id(DISPID_IDOMMOUSEEVENT_BUTTONS)]
    HRESULT buttons([out, retval] USHORT *p);

    [propget, id(DISPID_IDOMMOUSEEVENT_FROMELEMENT)]
    HRESULT fromElement([out, retval] IHTMLElement **p);

    [propget, id(DISPID_IDOMMOUSEEVENT_TOELEMENT)]
    HRESULT toElement([out, retval] IHTMLElement **p);

    [propget, id(DISPID_IDOMMOUSEEVENT_X)]
    HRESULT x([out, retval] long *p);

    [propget, id(DISPID_IDOMMOUSEEVENT_Y)]
    HRESULT y([out, retval] long *p);

    [propget, id(DISPID_IDOMMOUSEEVENT_OFFSETX)]
    HRESULT offsetX([out, retval] long *p);

    [propget, id(DISPID_IDOMMOUSEEVENT_OFFSETY)]
    HRESULT offsetY([out, retval] long *p);

    [propget, id(DISPID_IDOMMOUSEEVENT_PAGEX)]
    HRESULT pageX([out, retval] long *p);

    [propget, id(DISPID_IDOMMOUSEEVENT_PAGEY)]
    HRESULT pageY([out, retval] long *p);

    [propget, id(DISPID_IDOMMOUSEEVENT_LAYERX)]
    HRESULT layerX([out, retval] long *p);

    [propget, id(DISPID_IDOMMOUSEEVENT_LAYERY)]
    HRESULT layerY([out, retval] long *p);

    [propget, id(DISPID_IDOMMOUSEEVENT_WHICH)]
    HRESULT which([out, retval] USHORT *p);
}

/*****************************************************************************
 *    DispDOMMouseEvent dispinterface
 */
[
    hidden,
    uuid(30590073-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispDOMMouseEvent
{
properties:
methods:
#define WINE_IDOMMOUSEEVENT_DISPINTERFACE_DECL             \
    [propget, id(DISPID_IDOMMOUSEEVENT_SCREENX)]           \
    long screenX();                                        \
                                                           \
    [propget, id(DISPID_IDOMMOUSEEVENT_SCREENY)]           \
    long screenY();                                        \
                                                           \
    [propget, id(DISPID_IDOMMOUSEEVENT_CLIENTX)]           \
    long clientX();                                        \
                                                           \
    [propget, id(DISPID_IDOMMOUSEEVENT_CLIENTY)]           \
    long clientY();                                        \
                                                           \
    [propget, id(DISPID_IDOMMOUSEEVENT_CTRLKEY)]           \
    VARIANT_BOOL ctrlKey();                                \
                                                           \
    [propget, id(DISPID_IDOMMOUSEEVENT_SHIFTKEY)]          \
    VARIANT_BOOL shiftKey();                               \
                                                           \
    [propget, id(DISPID_IDOMMOUSEEVENT_ALTKEY)]            \
    VARIANT_BOOL altKey();                                 \
                                                           \
    [propget, id(DISPID_IDOMMOUSEEVENT_METAKEY)]           \
    VARIANT_BOOL metaKey();                                \
                                                           \
    [propget, id(DISPID_IDOMMOUSEEVENT_BUTTON)]            \
    USHORT button();                                       \
                                                           \
    [propget, id(DISPID_IDOMMOUSEEVENT_RELATEDTARGET)]     \
    IEventTarget *relatedTarget();                         \
                                                           \
    [id(DISPID_IDOMMOUSEEVENT_INITMOUSEEVENT)]             \
    void initMouseEvent(                                   \
            [in] BSTR eventType,                           \
            [in] VARIANT_BOOL canBubble,                   \
            [in] VARIANT_BOOL cancelable,                  \
            [in] IHTMLWindow2 *viewArg,                    \
            [in] long detailArg,                           \
            [in] long screenXArg,                          \
            [in] long screenYArg,                          \
            [in] long clientXArg,                          \
            [in] long clientYArg,                          \
            [in] VARIANT_BOOL ctrlKeyArg,                  \
            [in] VARIANT_BOOL altKeyArg,                   \
            [in] VARIANT_BOOL shiftKeyArg,                 \
            [in] VARIANT_BOOL metaKeyArg,                  \
            [in] USHORT buttonArg,                         \
            [in] IEventTarget *relatedTargetArg);          \
                                                           \
    [id(DISPID_IDOMMOUSEEVENT_GETMODIFIERSTATE)]           \
    VARIANT_BOOL getModifierState([in] BSTR keyArg);       \
                                                           \
    [propget, id(DISPID_IDOMMOUSEEVENT_BUTTONS)]           \
    USHORT buttons();                                      \
                                                           \
    [propget, id(DISPID_IDOMMOUSEEVENT_FROMELEMENT)]       \
    IHTMLElement *fromElement();                           \
                                                           \
    [propget, id(DISPID_IDOMMOUSEEVENT_TOELEMENT)]         \
    IHTMLElement *toElement();                             \
                                                           \
    [propget, id(DISPID_IDOMMOUSEEVENT_X)]                 \
    long x();                                              \
                                                           \
    [propget, id(DISPID_IDOMMOUSEEVENT_Y)]                 \
    long y();                                              \
                                                           \
    [propget, id(DISPID_IDOMMOUSEEVENT_OFFSETX)]           \
    long offsetX();                                        \
                                                           \
    [propget, id(DISPID_IDOMMOUSEEVENT_OFFSETY)]           \
    long offsetY();                                        \
                                                           \
    [propget, id(DISPID_IDOMMOUSEEVENT_PAGEX)]             \
    long pageX();                                          \
                                                           \
    [propget, id(DISPID_IDOMMOUSEEVENT_PAGEY)]             \
    long pageY();                                          \
                                                           \
    [propget, id(DISPID_IDOMMOUSEEVENT_LAYERX)]            \
    long layerX();                                         \
                                                           \
    [propget, id(DISPID_IDOMMOUSEEVENT_LAYERY)]            \
    long layerY();                                         \
                                                           \
    [propget, id(DISPID_IDOMMOUSEEVENT_WHICH)]             \
    USHORT which()

    WINE_IDOMEVENT_DISPINTERFACE_DECL;
    WINE_IDOMUIEVENT_DISPINTERFACE_DECL;
    WINE_IDOMMOUSEEVENT_DISPINTERFACE_DECL;
}

/*****************************************************************************
 *    IDOMKeyboardEvent interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305106d6-98b5-11cf-bb82-00aa00bdce0b)
]
interface IDOMKeyboardEvent : IDispatch
{
    [propget, id(DISPID_IDOMKEYBOARDEVENT_KEY)]
    HRESULT key([retval, out] BSTR *p);

    [propget, id(DISPID_IDOMKEYBOARDEVENT_LOCATION)]
    HRESULT location([out, retval] ULONG *p);

    [propget, id(DISPID_IDOMKEYBOARDEVENT_CTRLKEY)]
    HRESULT ctrlKey([out, retval] VARIANT_BOOL *p);

    [propget, id(DISPID_IDOMKEYBOARDEVENT_SHIFTKEY)]
    HRESULT shiftKey([out, retval] VARIANT_BOOL *p);

    [propget, id(DISPID_IDOMKEYBOARDEVENT_ALTKEY)]
    HRESULT altKey([out, retval] VARIANT_BOOL *p);

    [propget, id(DISPID_IDOMKEYBOARDEVENT_METAKEY)]
    HRESULT metaKey([out, retval] VARIANT_BOOL *p);

    [propget, id(DISPID_IDOMKEYBOARDEVENT_REPEAT)]
    HRESULT repeat([out, retval] VARIANT_BOOL *p);

    [id(DISPID_IDOMKEYBOARDEVENT_GETMODIFIERSTATE)]
    HRESULT getModifierState(
            [in] BSTR keyArg,
            [out, retval] VARIANT_BOOL *state);

    [id(DISPID_IDOMKEYBOARDEVENT_INITKEYBOARDEVENT)]
    HRESULT initKeyboardEvent(
            [in] BSTR eventType,
            [in] VARIANT_BOOL canBubble,
            [in] VARIANT_BOOL cancelable,
            [in] IHTMLWindow2 *viewArg,
            [in] BSTR keyArg,
            [in] ULONG locationArg,
            [in] BSTR modifiersListArg,
            [in] VARIANT_BOOL repeat,
            [in] BSTR locale);

    [propget, id(DISPID_IDOMKEYBOARDEVENT_KEYCODE)]
    HRESULT keyCode([out, retval] long *p);

    [propget, id(DISPID_IDOMKEYBOARDEVENT_CHARCODE)]
    HRESULT charCode([out, retval] long *p);

    [propget, id(DISPID_IDOMKEYBOARDEVENT_WHICH)]
    HRESULT which([out, retval] long *p);

    [propget, id(DISPID_IDOMKEYBOARDEVENT_IE9_CHAR)]
    HRESULT ie9_char([out, retval] VARIANT *p);

    [propget, id(DISPID_IDOMKEYBOARDEVENT_LOCALE)]
    HRESULT locale([out, retval] BSTR *p);
}

/*****************************************************************************
 *    DispDOMKeyboardEvent dispinterface
 */
[
    hidden,
    uuid(30590077-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispDOMKeyboardEvent
{
properties:
methods:
    WINE_IDOMEVENT_DISPINTERFACE_DECL;
    WINE_IDOMUIEVENT_DISPINTERFACE_DECL;

    [propget, id(DISPID_IDOMKEYBOARDEVENT_KEY)]
    BSTR key();

    [propget, id(DISPID_IDOMKEYBOARDEVENT_LOCATION)]
    ULONG location();

    [propget, id(DISPID_IDOMKEYBOARDEVENT_CTRLKEY)]
    VARIANT_BOOL ctrlKey();

    [propget, id(DISPID_IDOMKEYBOARDEVENT_SHIFTKEY)]
    VARIANT_BOOL shiftKey();

    [propget, id(DISPID_IDOMKEYBOARDEVENT_ALTKEY)]
    VARIANT_BOOL altKey();

    [propget, id(DISPID_IDOMKEYBOARDEVENT_METAKEY)]
    VARIANT_BOOL metaKey();

    [propget, id(DISPID_IDOMKEYBOARDEVENT_REPEAT)]
    VARIANT_BOOL repeat();

    [id(DISPID_IDOMKEYBOARDEVENT_GETMODIFIERSTATE)]
    VARIANT_BOOL getModifierState([in] BSTR keyArg);

    [id(DISPID_IDOMKEYBOARDEVENT_INITKEYBOARDEVENT)]
    void initKeyboardEvent(
            [in] BSTR eventType,
            [in] VARIANT_BOOL canBubble,
            [in] VARIANT_BOOL cancelable,
            [in] IHTMLWindow2 *viewArg,
            [in] BSTR keyArg,
            [in] ULONG locationArg,
            [in] BSTR modifiersListArg,
            [in] VARIANT_BOOL repeat,
            [in] BSTR locale);

    [propget, id(DISPID_IDOMKEYBOARDEVENT_KEYCODE)]
    long keyCode();

    [propget, id(DISPID_IDOMKEYBOARDEVENT_CHARCODE)]
    long charCode();

    [propget, id(DISPID_IDOMKEYBOARDEVENT_WHICH)]
    long which();

    [propget, id(DISPID_IDOMKEYBOARDEVENT_IE9_CHAR)]
    VARIANT ie9_char();

    [propget, id(DISPID_IDOMKEYBOARDEVENT_LOCALE)]
    BSTR locale();
}

/*****************************************************************************
 *    IDOMCustomEvent interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(305106de-98b5-11cf-bb82-00aa00bdce0b)
]
interface IDOMCustomEvent : IDispatch
{
    [propget, id(DISPID_IDOMCUSTOMEVENT_DETAIL)]
    HRESULT detail([out, retval] VARIANT *p);

    [id(DISPID_IDOMCUSTOMEVENT_INITCUSTOMEVENT)]
    HRESULT initCustomEvent(
            [in] BSTR eventType,
            [in] VARIANT_BOOL canBubble,
            [in] VARIANT_BOOL cancelable,
            [in] VARIANT *detail);
}

/*****************************************************************************
 *    DispDOMCustomEvent dispinterface
 */
[
    hidden,
    uuid(3059007c-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispDOMCustomEvent
{
properties:
methods:
    WINE_IDOMEVENT_DISPINTERFACE_DECL;

    [propget, id(DISPID_IDOMCUSTOMEVENT_DETAIL)]
    VARIANT detail();

    [id(DISPID_IDOMCUSTOMEVENT_INITCUSTOMEVENT)]
    void initCustomEvent(
            [in] BSTR eventType,
            [in] VARIANT_BOOL canBubble,
            [in] VARIANT_BOOL cancelable,
            [in] VARIANT *detail);
}

/*****************************************************************************
 *    IDOMMessageEvent interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510720-98b5-11cf-bb82-00aa00bdce0b)
]
interface IDOMMessageEvent : IDispatch
{
    [propget, id(DISPID_IDOMMESSAGEEVENT_DATA)]
    HRESULT data([out, retval] BSTR *p);

    [propget, id(DISPID_IDOMMESSAGEEVENT_ORIGIN)]
    HRESULT origin([out, retval] BSTR *p);

    [propget, id(DISPID_IDOMMESSAGEEVENT_SOURCE)]
    HRESULT source([out, retval] IHTMLWindow2 **p);

    [id(DISPID_IDOMMESSAGEEVENT_INITMESSAGEEVENT)]
    HRESULT initMessageEvent(
            [in] BSTR eventType,
            [in] VARIANT_BOOL canBubble,
            [in] VARIANT_BOOL cancelable,
            [in] BSTR data,
            [in] BSTR origin,
            [in] BSTR lastEventId,
            [in] IHTMLWindow2 *source);
}

/*****************************************************************************
 *    DispDOMMessageEvent dispinterface
 */
[
    hidden,
    uuid(30590092-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispDOMMessageEvent
{
properties:
methods:
    WINE_IDOMEVENT_DISPINTERFACE_DECL;

    [propget, id(DISPID_IDOMMESSAGEEVENT_DATA)]
    BSTR data();

    [propget, id(DISPID_IDOMMESSAGEEVENT_ORIGIN)]
    BSTR origin();

    [propget, id(DISPID_IDOMMESSAGEEVENT_SOURCE)]
    IHTMLWindow2 *source();

    [id(DISPID_IDOMMESSAGEEVENT_INITMESSAGEEVENT)]
    void initMessageEvent(
            [in] BSTR eventType,
            [in] VARIANT_BOOL canBubble,
            [in] VARIANT_BOOL cancelable,
            [in] BSTR data,
            [in] BSTR origin,
            [in] BSTR lastEventId,
            [in] IHTMLWindow2 *source);
}

/*****************************************************************************
 *    IDOMProgressEvent interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3051071e-98b5-11cf-bb82-00aa00bdce0b)
]
interface IDOMProgressEvent : IDispatch
{
    [propget, id(DISPID_IDOMPROGRESSEVENT_LENGTHCOMPUTABLE)]
    HRESULT lengthComputable([out, retval] VARIANT_BOOL *p);

    [propget, id(DISPID_IDOMPROGRESSEVENT_LOADED)]
    HRESULT loaded([out, retval] ULONGLONG *p);

    [propget, id(DISPID_IDOMPROGRESSEVENT_TOTAL)]
    HRESULT total([out, retval] ULONGLONG *p);

    [id(DISPID_IDOMPROGRESSEVENT_INITPROGRESSEVENT)]
    HRESULT initProgressEvent(
            [in] BSTR eventType,
            [in] VARIANT_BOOL canBubble,
            [in] VARIANT_BOOL cancelable,
            [in] VARIANT_BOOL lengthComputableArg,
            [in] ULONGLONG loadedArg,
            [in] ULONGLONG totalArg);
};

/*****************************************************************************
 *    DispDOMProgressEvent dispinterface
 */
[
    hidden,
    uuid(30590091-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispDOMProgressEvent
{
properties:
methods:
    WINE_IDOMEVENT_DISPINTERFACE_DECL;

    [propget, id(DISPID_IDOMPROGRESSEVENT_LENGTHCOMPUTABLE)]
    VARIANT_BOOL lengthComputable();

    [propget, id(DISPID_IDOMPROGRESSEVENT_LOADED)]
    ULONGLONG loaded();

    [propget, id(DISPID_IDOMPROGRESSEVENT_TOTAL)]
    ULONGLONG total();

    [id(DISPID_IDOMPROGRESSEVENT_INITPROGRESSEVENT)]
    void initProgressEvent(
            [in] BSTR eventType,
            [in] VARIANT_BOOL canBubble,
            [in] VARIANT_BOOL cancelable,
            [in] VARIANT_BOOL lengthComputableArg,
            [in] ULONGLONG loadedArg,
            [in] ULONGLONG totalArg);
};

/*****************************************************************************
 *    IDOMStorageEvent interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510722-98b5-11cf-bb82-00aa00bdce0b)
]
interface IDOMStorageEvent : IDispatch
{
    [propget, id(DISPID_IDOMSTORAGEEVENT_KEY)]
    HRESULT key([out, retval] BSTR *p);

    [propget, id(DISPID_IDOMSTORAGEEVENT_OLDVALUE)]
    HRESULT oldValue([out, retval] BSTR *p);

    [propget, id(DISPID_IDOMSTORAGEEVENT_NEWVALUE)]
    HRESULT newValue([out, retval] BSTR *p);

    [propget, id(DISPID_IDOMSTORAGEEVENT_URL)]
    HRESULT url([out, retval] BSTR *p);

    [propget, id(DISPID_IDOMSTORAGEEVENT_STORAGEAREA)]
    HRESULT storageArea([out, retval] IHTMLStorage **p);

    [id(DISPID_IDOMSTORAGEEVENT_INITSTORAGEEVENT)]
    HRESULT initStorageEvent(
            [in] BSTR eventType,
            [in] VARIANT_BOOL canBubble,
            [in] VARIANT_BOOL cancelable,
            [in] BSTR keyArg,
            [in] BSTR oldValueArg,
            [in] BSTR newValueArg,
            [in] BSTR urlArg,
            [in] IHTMLStorage *storageAreaArg);
};

/*****************************************************************************
 *    DispDOMStorageEvent dispinterface
 */
[
    hidden,
    uuid(30590093-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispDOMStorageEvent
{
properties:
methods:
    WINE_IDOMEVENT_DISPINTERFACE_DECL;

    [propget, id(DISPID_IDOMSTORAGEEVENT_KEY)]
    BSTR key();

    [propget, id(DISPID_IDOMSTORAGEEVENT_OLDVALUE)]
    BSTR oldValue();

    [propget, id(DISPID_IDOMSTORAGEEVENT_NEWVALUE)]
    BSTR newValue();

    [propget, id(DISPID_IDOMSTORAGEEVENT_URL)]
    BSTR url();

    [propget, id(DISPID_IDOMSTORAGEEVENT_STORAGEAREA)]
    IHTMLStorage *storageArea();

    [id(DISPID_IDOMSTORAGEEVENT_INITSTORAGEEVENT)]
    void initStorageEvent(
            [in] BSTR eventType,
            [in] VARIANT_BOOL canBubble,
            [in] VARIANT_BOOL cancelable,
            [in] BSTR keyArg,
            [in] BSTR oldValueArg,
            [in] BSTR newValueArg,
            [in] BSTR urlArg,
            [in] IHTMLStorage *storageAreaArg);
};

/*****************************************************************************
 *    IHTMLNamespaceCollection interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3050f6b8-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLNamespaceCollection : IDispatch
{
    [propget, id(DISPID_IHTMLNAMESPACECOLLECTION_LENGTH)]
    HRESULT length([out, retval] long *p);

    [id(DISPID_IHTMLNAMESPACECOLLECTION_ITEM)]
    HRESULT item(
            [in] VARIANT index,
            [out, retval] IDispatch **ppNamespace);

    [id(DISPID_IHTMLNAMESPACECOLLECTION_ADD)]
    HRESULT add(
            [in] BSTR bstrNamespace,
            [in] BSTR bstrUrn,
            [in, optional] VARIANT implementationUrl,
            [out, retval] IDispatch **ppNamespace);
}

/*****************************************************************************
 *    DispHTMLNamespaceCollection dispinterface
 */
[
    hidden,
    uuid(3050f550-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLNamespaceCollection
{
properties:
methods:
    [propget, id(DISPID_IHTMLNAMESPACECOLLECTION_LENGTH)]
    long length();

    [id(DISPID_IHTMLNAMESPACECOLLECTION_ITEM)]
    IDispatch *item([in] VARIANT index);

    [id(DISPID_IHTMLNAMESPACECOLLECTION_ADD)]
    IDispatch *add(
            [in] BSTR bstrNamespace,
            [in] BSTR bstrUrn,
            [in, optional] VARIANT implementationUrl);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden]
    IDispatch *constructor();
}

/*****************************************************************************
 *    ILineInfo interface
 */
[
    object,
    pointer_default(unique),
    uuid(3050f7e2-98b5-11cf-bb82-00aa00bdce0b)
]
interface ILineInfo : IUnknown
{
    [propget, id(DISPID_ILINEINFO_X)] HRESULT x([retval, out] long *p);
    [propget, id(DISPID_ILINEINFO_BASELINE)] HRESULT baseLine([retval, out] long *p);
    [propget, id(DISPID_ILINEINFO_TEXTDESCENT)] HRESULT textDescent([retval, out] long *p);
    [propget, id(DISPID_ILINEINFO_TEXTHEIGHT)] HRESULT textHeight([retval, out] long *p);
    [propget, id(DISPID_ILINEINFO_LINEDIRECTION)] HRESULT lineDirection([retval, out] long *p);
};

/*****************************************************************************
 *    IHTMLComputedStyle interface
 */
[
    object,
    pointer_default(unique),
    uuid(3050f6c3-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLComputedStyle : IUnknown
{
    [propget, id(DISPID_IHTMLCOMPUTEDSTYLE_BOLD)] HRESULT bold([retval, out] VARIANT_BOOL *p);
    [propget, id(DISPID_IHTMLCOMPUTEDSTYLE_ITALIC)] HRESULT italic([retval, out] VARIANT_BOOL *p);
    [propget, id(DISPID_IHTMLCOMPUTEDSTYLE_UNDERLINE)] HRESULT underline([retval, out] VARIANT_BOOL *p);
    [propget, id(DISPID_IHTMLCOMPUTEDSTYLE_OVERLINE)] HRESULT overline([retval, out] VARIANT_BOOL *p);
    [propget, id(DISPID_IHTMLCOMPUTEDSTYLE_STRIKEOUT)] HRESULT strikeOut([retval, out] VARIANT_BOOL *p);
    [propget, id(DISPID_IHTMLCOMPUTEDSTYLE_SUBSCRIPT)] HRESULT subScript([retval, out] VARIANT_BOOL *p);
    [propget, id(DISPID_IHTMLCOMPUTEDSTYLE_SUPERSCRIPT)] HRESULT superScript([retval, out] VARIANT_BOOL *p);
    [propget, id(DISPID_IHTMLCOMPUTEDSTYLE_EXPLICITFACE)] HRESULT explicitFace([retval, out] VARIANT_BOOL *p);
    [propget, id(DISPID_IHTMLCOMPUTEDSTYLE_FONTWEIGHT)] HRESULT fontWeight([retval, out] long *p);
    [propget, id(DISPID_IHTMLCOMPUTEDSTYLE_FONTSIZE)] HRESULT fontSize([retval, out] long *p);
    [propget, id(DISPID_IHTMLCOMPUTEDSTYLE_FONTNAME)] HRESULT fontName([retval, out] WCHAR *p);
    [propget, id(DISPID_IHTMLCOMPUTEDSTYLE_HASBGCOLOR)] HRESULT hasBgColor([retval, out] VARIANT_BOOL *p);
    [propget, id(DISPID_IHTMLCOMPUTEDSTYLE_TEXTCOLOR)] HRESULT textColor([retval, out] DWORD *p);
    [propget, id(DISPID_IHTMLCOMPUTEDSTYLE_BACKGROUNDCOLOR)] HRESULT backgroundColor([retval, out] DWORD *p);
    [propget, id(DISPID_IHTMLCOMPUTEDSTYLE_PREFORMATTED)] HRESULT preFormatted([retval, out] VARIANT_BOOL *p);
    [propget, id(DISPID_IHTMLCOMPUTEDSTYLE_DIRECTION)] HRESULT direction([retval, out] VARIANT_BOOL *p);
    [propget, id(DISPID_IHTMLCOMPUTEDSTYLE_BLOCKDIRECTION)] HRESULT blockDirection([retval, out] VARIANT_BOOL *p);
    [propget, id(DISPID_IHTMLCOMPUTEDSTYLE_OL)] HRESULT OL([retval, out] VARIANT_BOOL *p);
    HRESULT IsEqual([in] IHTMLComputedStyle *pComputedStyle,[out] VARIANT_BOOL *pfEqual);
};

interface IHTMLCaret;
interface IDisplayPointer;
interface IDisplayServices;
interface ILineInfo;
interface IMarkupPointer;
interface IMarkupContainer;
interface ISegmentList;
interface IHTMLChangeLog;
interface IHTMLChangeSink;

/*****************************************************************************
 *    IDisplayPointer interface
 */
[
    object,
    pointer_default(unique),
    uuid(3050f69e-98b5-11cf-bb82-00aa00bdce0b)
]
interface IDisplayPointer : IUnknown
{
    HRESULT MoveToPoint([in] POINT ptPoint,[in] COORD_SYSTEM eCoordSystem,[in] IHTMLElement *pElementContext,[in] DWORD dwHitTestOptions,[out] DWORD *pdwHitTestResults);
    HRESULT MoveUnit([in] DISPLAY_MOVEUNIT eMoveUnit,[in] LONG lXPos);
    HRESULT PositionMarkupPointer([in] IMarkupPointer *pMarkupPointer);
    HRESULT MoveToPointer([in] IDisplayPointer *pDispPointer);
    HRESULT SetPointerGravity([in] POINTER_GRAVITY eGravity);
    HRESULT GetPointerGravity([out] POINTER_GRAVITY *peGravity);
    HRESULT SetDisplayGravity([in] DISPLAY_GRAVITY eGravity);
    HRESULT GetDisplayGravity([out] DISPLAY_GRAVITY *peGravity);
    HRESULT IsPositioned([out] BOOL *pfPositioned);
    HRESULT Unposition();
    HRESULT IsEqualTo([in] IDisplayPointer *pDispPointer,[out] BOOL *pfIsEqual);
    HRESULT IsLeftOf([in] IDisplayPointer *pDispPointer,[out] BOOL *pfIsLeftOf);
    HRESULT IsRightOf([in] IDisplayPointer *pDispPointer,[out] BOOL *pfIsRightOf);
    HRESULT IsAtBOL([out] BOOL *pfBOL);
    HRESULT MoveToMarkupPointer([in] IMarkupPointer *pPointer,[in] IDisplayPointer *pDispLineContext);
    HRESULT ScrollIntoView();
    HRESULT GetLineInfo([out] ILineInfo **ppLineInfo);
    HRESULT GetFlowElement([out] IHTMLElement **ppLayoutElement);
    HRESULT QueryBreaks([out] DWORD *pdwBreaks);
};

/*****************************************************************************
 *    IHTMLCaret interface
 */
[
    object,
    pointer_default(unique),
    uuid(3050f604-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLCaret : IUnknown
{
    HRESULT MoveCaretToPointer([in] IDisplayPointer *pDispPointer,[in] BOOL fScrollIntoView,[in] CARET_DIRECTION eDir);
    HRESULT MoveCaretToPointerEx([in] IDisplayPointer *pDispPointer,[in] BOOL fVisible,[in] BOOL fScrollIntoView,[in] CARET_DIRECTION eDir);
    HRESULT MoveMarkupPointerToCaret([in] IMarkupPointer *pIMarkupPointer);
    HRESULT MoveDisplayPointerToCaret([in] IDisplayPointer *pDispPointer);
    HRESULT IsVisible([out] BOOL *pIsVisible);
    HRESULT Show([in] BOOL fScrollIntoView);
    HRESULT Hide();
    HRESULT InsertText([in] OLECHAR *pText,[in] LONG lLen);
    HRESULT ScrollIntoView();
    HRESULT GetLocation([out] POINT *pPoint,[in] BOOL fTranslate);
    HRESULT GetCaretDirection([out] CARET_DIRECTION *peDir);
    HRESULT SetCaretDirection([in] CARET_DIRECTION eDir);
};

/*****************************************************************************
 *    IDisplayServices interface
 */
[
    object,
    pointer_default(unique),
    uuid(3050f69d-98b5-11cf-bb82-00aa00bdce0b)
]
interface IDisplayServices : IUnknown
{
    HRESULT CreateDisplayPointer([out] IDisplayPointer **ppDispPointer);
    HRESULT TransformRect([in, out] RECT *pRect,[in] COORD_SYSTEM eSource,[in] COORD_SYSTEM eDestination,[in] IHTMLElement *pIElement);
    HRESULT TransformPoint([in, out] POINT *pPoint,[in] COORD_SYSTEM eSource,[in] COORD_SYSTEM eDestination,[in] IHTMLElement *pIElement);
    HRESULT GetCaret([out] IHTMLCaret **ppCaret);
    HRESULT GetComputedStyle([in] IMarkupPointer *pPointer,[out] IHTMLComputedStyle **ppComputedStyle);
    HRESULT ScrollRectIntoView([in] IHTMLElement *pIElement,[in] RECT rect);
    HRESULT HasFlowLayout([in] IHTMLElement *pIElement,[out] BOOL *pfHasFlowLayout);
};

/*****************************************************************************
 *    IMarkupServices interface
 */
[
    object,
    pointer_default(unique),
    uuid(3050f4a0-98b5-11cf-bb82-00aa00bdce0b)
]
interface IMarkupServices : IUnknown
{
    HRESULT CreateMarkupPointer([out] IMarkupPointer **ppPointer);

    HRESULT CreateMarkupContainer([out] IMarkupContainer **ppMarkupContainer);

    HRESULT CreateElement(
        [in] ELEMENT_TAG_ID tagID,
        [in] OLECHAR *pchAttributes,
        [out] IHTMLElement **ppElement);

    HRESULT CloneElement(
        [in] IHTMLElement *pElemCloneThis,
        [out] IHTMLElement **ppElementTheClone);

    HRESULT InsertElement(
        [in] IHTMLElement *pElementInsert,
        [in] IMarkupPointer *pPointerStart,
        [in] IMarkupPointer *pPointerFinish);

    HRESULT RemoveElement([in] IHTMLElement *pElementRemove);

    HRESULT Remove(
        [in] IMarkupPointer *pPointerStart,
        [in] IMarkupPointer *pPointerFinish);

    HRESULT Copy(
        [in] IMarkupPointer *pPointerSourceStart,
        [in] IMarkupPointer *pPointerSourceFinish,
        [in] IMarkupPointer *pPointerTarget);

    HRESULT Move(
        [in] IMarkupPointer *pPointerSourceStart,
        [in] IMarkupPointer *pPointerSourceFinish,
        [in] IMarkupPointer *pPointerTarget);

    HRESULT InsertText(
        [in] OLECHAR *pchText,
        [in] long cch,
        [in] IMarkupPointer *pPointerTarget);

    HRESULT ParseString(
        [in] OLECHAR *pchHTML,
        [in] DWORD dwFlags,
        [out] IMarkupContainer **ppContainerResult,
        [in] IMarkupPointer *ppPointerStart,
        [in] IMarkupPointer *ppPointerFinish);

    HRESULT ParseGlobal(
        [in] HGLOBAL hglobalHTML,
        [in] DWORD dwFlags,
        [out] IMarkupContainer **ppContainerResult,
        [in] IMarkupPointer *pPointerStart,
        [in] IMarkupPointer *pPointerFinish);

    HRESULT IsScopedElement(
        [in] IHTMLElement *pElement,
        [out] BOOL *pfScoped);

    HRESULT GetElementTagId(
        [in] IHTMLElement *pElement,
        [out] ELEMENT_TAG_ID *ptagId);

    HRESULT GetTagIDForName(
        [in] BSTR bstrName,
        [out] ELEMENT_TAG_ID *ptagId);

    HRESULT GetNameForTagID(
        [in] ELEMENT_TAG_ID tagId,
        [out] BSTR *pbstrName);

    HRESULT MovePointersToRange(
        [in] IHTMLTxtRange *pIRange,
        [in] IMarkupPointer *pPointerStart,
        [in] IMarkupPointer *pPointerFinish);

    HRESULT MoveRangeToPointers(
        [in] IMarkupPointer *pPointerStart,
        [in] IMarkupPointer *pPointerFinish,
        [in] IHTMLTxtRange *pIRange);

    HRESULT BeginUndoUnit([in] OLECHAR *pchTitle);

    HRESULT EndUndoUnit();
};

/*****************************************************************************
 *    IMarkupServices2 interface
 */
[
    object,
    pointer_default(unique),
    uuid(3050f682-98b5-11cf-bb82-00aa00bdce0b)
]
interface IMarkupServices2 : IMarkupServices
{
    HRESULT ParseGlobalEx(
        [in] HGLOBAL hglobalHTML,
        [in] DWORD dwFlags,
        [in] IMarkupContainer *pContext,
        [out] IMarkupContainer **ppContainerResult,
        [in] IMarkupPointer *pPointerStart,
        [in] IMarkupPointer *pPointerFinish);

    HRESULT ValidateElements(
        [in] IMarkupPointer *pPointerStart,
        [in] IMarkupPointer *pPointerFinish,
        [in] IMarkupPointer *pPointerTarget,
        [in, out] IMarkupPointer *pPointerStatus,
        [out] IHTMLElement **ppElemFailBottom,
        [out] IHTMLElement **ppElemFailTop);

    HRESULT SaveSegmentsToClipboard(
        [in] ISegmentList *pSegmentList,
        [in] DWORD dwFlags);
};

/*****************************************************************************
 *    IMarkupContainer interface
 */
[
    object,
    pointer_default(unique),
    uuid(3050f5f9-98b5-11cf-bb82-00aa00bdce0b)
]
interface IMarkupContainer : IUnknown
{
    HRESULT OwningDoc([out] IHTMLDocument2 **ppDoc);
}

/*****************************************************************************
 *    IMarkupContainer2 interface
 */
[
    object,
    pointer_default(unique),
    uuid(3050f648-98b5-11cf-bb82-00aa00bdce0b)
]
interface IMarkupContainer2 : IMarkupContainer
{
    HRESULT CreateChangeLog(
        [in] IHTMLChangeSink *pChangeSink,
        [out] IHTMLChangeLog **ppChangeLog,
        [in] BOOL fforward,
        [in] BOOL fBackward);

    HRESULT RegisterForDirtyRange(
        [in] IHTMLChangeSink *pChangeSink,
        [out] DWORD *pdwCookie);

    HRESULT UnRegisterForDirtyRange([in] DWORD dwCookie);

    HRESULT GetAndClearDirtyRange(
        [in] DWORD dwCookie,
        [in] IMarkupPointer *pIPointerBegin,
        [in] IMarkupPointer *pIPointerEnd);

    long GetVersionNumber();

    HRESULT GetMasterElement([out] IHTMLElement **ppElementMaster);
}

/*****************************************************************************
 *    IMarkupPointer interface
 */
[
    object,
    pointer_default(unique),
    uuid(3050f49f-98b5-11cf-bb82-00aa00bdce0b)
]
interface IMarkupPointer : IUnknown
{
    HRESULT OwningDoc([out] IHTMLDocument2 **ppDoc);

    HRESULT Gravity([out] POINTER_GRAVITY *pGravity);

    HRESULT SetGravity([in] POINTER_GRAVITY Gravity);

    HRESULT Cling([out] BOOL *pfCling);

    HRESULT SetCling([in] BOOL fCLing);

    HRESULT UnPosition();

    HRESULT IsPositioned([out] BOOL *pfPositioned);

    HRESULT GetContainer([out] IMarkupContainer **ppContainer);

    HRESULT MoveAdjacentToElement(
        [in] IHTMLElement *pElement,
        [in] ELEMENT_ADJACENCY eAdj);

    HRESULT MoveToPointer([in] IMarkupPointer *pPointer);

    HRESULT MoveToContainer(
        [in] IMarkupContainer *pContainer,
        [in] BOOL fAtStart);

    HRESULT Left(
        [in] BOOL fMove,
        [out] MARKUP_CONTEXT_TYPE *pContext,
        [out] IHTMLElement **ppElement,
        [in, out] LONG *pcch,
        [out, size_is(*pcch)] OLECHAR *pchText);

    HRESULT Right(
        [in] BOOL fMove,
        [out] MARKUP_CONTEXT_TYPE *pContext,
        [out] IHTMLElement **ppElement,
        [in, out] LONG *pcch,
        [out, size_is(*pcch)] OLECHAR *pchText);

    HRESULT CurrentScope([out] IHTMLElement **ppElemCurrent);

    HRESULT IsLeftOf(
        [in] IMarkupPointer *pPointerThat,
        [out] BOOL *pfResult);

    HRESULT IsLeftOfOrEqualTo(
        [in] IMarkupPointer *pPointerThat,
        [out] BOOL *pfResult);

    HRESULT IsRightOf(
        [in] IMarkupPointer *pPointerThat,
        [out] BOOL *pfResult);

    HRESULT IsRightOfOrEqualTo(
        [in] IMarkupPointer *pPointerThat,
        [out] BOOL *pfResult);

    HRESULT IsEqualTo(
        [in] IMarkupPointer *pPointerThat,
        [out] BOOL *pfAreEqual);

    HRESULT MoveUnit([in] MOVEUNIT_ACTION muAction);

    HRESULT FindText(
        [in] OLECHAR *pchFindText,
        [in] DWORD dwFlags,
        [in] IMarkupPointer *pIEndMatch,
        [in] IMarkupPointer *pIEndSearch);
}

/*****************************************************************************
 *    IMarkupPointer2 interface
 */
[
    object,
    pointer_default(unique),
    uuid(3050f675-98b5-11cf-bb82-00aa00bdce0b)
]
interface IMarkupPointer2 : IMarkupPointer
{
    HRESULT IsAtWordBreak([out] BOOL *pfAtBreak);

    HRESULT GetMarkupPosition([out] long *plMP);

    HRESULT MoveToMarkupPosition(
        [in] IMarkupContainer *pContainer,
        [in] long lMP);

    HRESULT MoveUnitBounded(
        [in] MOVEUNIT_ACTION muAction,
        [in] IMarkupPointer *pIBoundary);

    HRESULT IsInsideURL(
        [in] IMarkupPointer *pRight,
        [out] BOOL *pfResult);

    HRESULT MoveToContent(
        [in] IHTMLElement *pIElement,
        [out] BOOL fAtStart);
}

/*****************************************************************************
 *    IMarkupPointer2 interface
 */
[
    object,
    pointer_default(unique),
    uuid(3050f5fa-98b5-11cf-bb82-00aa00bdce0b)
]
interface IMarkupTextFrags : IUnknown
{
    HRESULT GetTextFragCount([out] long *pcFrags);

    HRESULT GetTextFrag(
        [in] long iFrag,
        [out] BSTR *pbstrFrag,
        [in] IMarkupPointer *pPointerTag);

    HRESULT RemoveTextFrag([in] long iFrag);

    HRESULT InsertTextFrag(
        [in] long iFrag,
        [in] BSTR bstrInsert,
        [in] IMarkupPointer *pPointerInsert);

    HRESULT FindTextFragFromMarkupPointer(
        [in] IMarkupPointer *pPointerFind,
        [out] long *piFrag,
        [out] BOOL *pfFragFound);
}

/*****************************************************************************
 *    IHTMLChangeLog interface
 */
[
    object,
    pointer_default(unique),
    uuid(3050f649-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLChangeLog : IUnknown
{
    HRESULT GetNextChange(
        [in] BYTE *pbBuffer,
        [in] long nBufferSize,
        [out] long *pnRecordLength);
}

/*****************************************************************************
 *    IHTMLChangeSink interface
 */
[
    object,
    pointer_default(unique),
    uuid(3050f64a-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLChangeSink : IUnknown
{
    HRESULT Notify();
}

/*****************************************************************************
 *    IHTMLDOMConstructorCollection interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(3051049c-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLDOMConstructorCollection : IDispatch
{
    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_ATTR)]
    HRESULT Attr([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_BEHAVIORURNSCOLLECTION)]
    HRESULT BehaviorUrnsCollection([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_BOOKMARKCOLLECTION)]
    HRESULT BookmarkCollection([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_COMPATIBLEINFO)]
    HRESULT CompatibleInfo([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_COMPATIBLEINFOCOLLECTION)]
    HRESULT CompatibleInfoCollection([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_CONTROLRANGECOLLECTION)]
    HRESULT ControlRangeCollection([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_CSSCURRENTSTYLEDECLARATION)]
    HRESULT CSSCurrentStyleDeclaration([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_CSSRULELIST)]
    HRESULT CSSRuleList([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_CSSRULESTYLEDECLARATION)]
    HRESULT CSSRuleStyleDeclaration([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_CSSSTYLEDECLARATION)]
    HRESULT CSSStyleDeclaration([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_CSSSTYLERULE)]
    HRESULT CSSStyleRule([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_CSSSTYLESHEET)]
    HRESULT CSSStyleSheet([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_DATATRANSFER)]
    HRESULT DataTransfer([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_DOMIMPLEMENTATION)]
    HRESULT DOMImplementation([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_ELEMENT)]
    HRESULT Element([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_EVENT)]
    HRESULT Event([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HISTORY)]
    HRESULT History([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTCELEMENTBEHAVIORDEFAULTS)]
    HRESULT HTCElementBehaviorDefaults([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLANCHORELEMENT)]
    HRESULT HTMLAnchorElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLAREAELEMENT)]
    HRESULT HTMLAreaElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLAREASCOLLECTION)]
    HRESULT HTMLAreasCollection([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLBASEELEMENT)]
    HRESULT HTMLBaseElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLBASEFONTELEMENT)]
    HRESULT HTMLBaseFontElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLBGSOUNDELEMENT)]
    HRESULT HTMLBGSoundElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLBLOCKELEMENT)]
    HRESULT HTMLBlockElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLBODYELEMENT)]
    HRESULT HTMLBodyElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLBRELEMENT)]
    HRESULT HTMLBRElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLBUTTONELEMENT)]
    HRESULT HTMLButtonElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLCOLLECTION)]
    HRESULT HTMLCollection([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLCOMMENTELEMENT)]
    HRESULT HTMLCommentElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLDDELEMENT)]
    HRESULT HTMLDDElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLDIVELEMENT)]
    HRESULT HTMLDivElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLDOCUMENT)]
    HRESULT HTMLDocument([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLDLISTELEMENT)]
    HRESULT HTMLDListElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLDTELEMENT)]
    HRESULT HTMLDTElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLEMBEDELEMENT)]
    HRESULT HTMLEmbedElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLFIELDSETELEMENT)]
    HRESULT HTMLFieldSetElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLFONTELEMENT)]
    HRESULT HTMLFontElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLFORMELEMENT)]
    HRESULT HTMLFormElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLFRAMEELEMENT)]
    HRESULT HTMLFrameElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLFRAMESETELEMENT)]
    HRESULT HTMLFrameSetElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLGENERICELEMENT)]
    HRESULT HTMLGenericElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLHEADELEMENT)]
    HRESULT HTMLHeadElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLHEADINGELEMENT)]
    HRESULT HTMLHeadingElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLHRELEMENT)]
    HRESULT HTMLHRElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLHTMLELEMENT)]
    HRESULT HTMLHtmlElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLIFRAMEELEMENT)]
    HRESULT HTMLIFrameElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLIMAGEELEMENT)]
    HRESULT HTMLImageElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLINPUTELEMENT)]
    HRESULT HTMLInputElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLISINDEXELEMENT)]
    HRESULT HTMLIsIndexElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLLABELELEMENT)]
    HRESULT HTMLLabelElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLLEGENDELEMENT)]
    HRESULT HTMLLegendElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLLIELEMENT)]
    HRESULT HTMLLIElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLLINKELEMENT)]
    HRESULT HTMLLinkElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLMAPELEMENT)]
    HRESULT HTMLMapElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLMARQUEEELEMENT)]
    HRESULT HTMLMarqueeElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLMETAELEMENT)]
    HRESULT HTMLMetaElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLMODELESSDIALOG)]
    HRESULT HTMLModelessDialog([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLNAMESPACEINFO)]
    HRESULT HTMLNamespaceInfo([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLNAMESPACEINFOCOLLECTION)]
    HRESULT HTMLNamespaceInfoCollection([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLNEXTIDELEMENT)]
    HRESULT HTMLNextIdElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLNOSHOWELEMENT)]
    HRESULT HTMLNoShowElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLOBJECTELEMENT)]
    HRESULT HTMLObjectElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLOLISTELEMENT)]
    HRESULT HTMLOListElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLOPTIONELEMENT)]
    HRESULT HTMLOptionElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLPARAGRAPHELEMENT)]
    HRESULT HTMLParagraphElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLPARAMELEMENT)]
    HRESULT HTMLParamElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLPHRASEELEMENT)]
    HRESULT HTMLPhraseElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLPLUGINSCOLLECTION)]
    HRESULT HTMLPluginsCollection([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLPOPUP)]
    HRESULT HTMLPopup([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLSCRIPTELEMENT)]
    HRESULT HTMLScriptElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLSELECTELEMENT)]
    HRESULT HTMLSelectElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLSPANELEMENT)]
    HRESULT HTMLSpanElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLSTYLEELEMENT)]
    HRESULT HTMLStyleElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTABLECAPTIONELEMENT)]
    HRESULT HTMLTableCaptionElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTABLECELLELEMENT)]
    HRESULT HTMLTableCellElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTABLECOLELEMENT)]
    HRESULT HTMLTableColElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTABLEELEMENT)]
    HRESULT HTMLTableElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTABLEROWELEMENT)]
    HRESULT HTMLTableRowElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTABLESECTIONELEMENT)]
    HRESULT HTMLTableSectionElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTEXTAREAELEMENT)]
    HRESULT HTMLTextAreaElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTEXTELEMENT)]
    HRESULT HTMLTextElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTITLEELEMENT)]
    HRESULT HTMLTitleElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLULISTELEMENT)]
    HRESULT HTMLUListElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLUNKNOWNELEMENT)]
    HRESULT HTMLUnknownElement([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_IMAGE)]
    HRESULT Image([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_LOCATION)]
    HRESULT Location([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_NAMEDNODEMAP)]
    HRESULT NamedNodeMap([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_NAVIGATOR)]
    HRESULT Navigator([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_NODELIST)]
    HRESULT NodeList([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_OPTION)]
    HRESULT Option([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_SCREEN)]
    HRESULT Screen([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_SELECTION)]
    HRESULT Selection([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_STATICNODELIST)]
    HRESULT StaticNodeList([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_STORAGE)]
    HRESULT Storage([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_STYLESHEETLIST)]
    HRESULT StyleSheetList([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_STYLESHEETPAGE)]
    HRESULT StyleSheetPage([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_STYLESHEETPAGELIST)]
    HRESULT StyleSheetPageList([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_TEXT)]
    HRESULT Text([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_TEXTRANGE)]
    HRESULT TextRange([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_TEXTRANGECOLLECTION)]
    HRESULT TextRangeCollection([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_TEXTRECTANGLE)]
    HRESULT TextRectangle([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_TEXTRECTANGLELIST)]
    HRESULT TextRectangleList([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_WINDOW)]
    HRESULT Window([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_XDOMAINREQUEST)]
    HRESULT XDomainRequest([out, retval] IDispatch **p);

    [propget, id(DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_XMLHTTPREQUEST)]
    HRESULT XMLHttpRequest([out, retval] IDispatch **p);
}

/*****************************************************************************
 *    IDOMParser interface
 */
[
    odl,
    oleautomation,
    dual,
    uuid(30510781-98b5-11cf-bb82-00aa00bdce0b)
]
interface IDOMParser : IDispatch
{
    [id(DISPID_IDOMPARSER_PARSEFROMSTRING)]
    HRESULT parseFromString([in] BSTR string, [in] BSTR mimeType, [retval, out] IHTMLDocument2 **ppNode);
}

/*****************************************************************************
 *    DispDOMParser dispinterface
 */
[
    hidden,
    uuid(305900ae-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispDOMParser
{
properties:
methods:
    [id(DISPID_IDOMPARSER_PARSEFROMSTRING)]
    IHTMLDocument2 *parseFromString([in] BSTR string, [in] BSTR mimeType);
}

[
    noncreatable,
    uuid(30510782-98b5-11cf-bb82-00aa00bdce0b)
]
coclass DOMParser
{
    [default] dispinterface DispDOMParser;
    interface IDOMParser;
}

/*****************************************************************************
 *    IXMLGenericParse interface
 */
[
    object,
    pointer_default(unique),
    uuid(E4E23071-4D07-11d2-AE76-0080C73BC199)
]
interface IXMLGenericParse : IUnknown
{
    HRESULT SetGenericParse(
        [in] VARIANT_BOOL fDoGeneric);
}

/*****************************************************************************
 *    ISegment interface
 */
[
    object,
    pointer_default(unique),
    uuid(3050f683-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISegment : IUnknown
{
    HRESULT GetPointers(
        [in] IMarkupPointer *pIStart,
        [in] IMarkupPointer *pIEnd);
}

/*****************************************************************************
 *    ISegmentListIterator interface
 */
[
    object,
    pointer_default(unique),
    uuid(3050f692-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISegmentListIterator : IUnknown
{
    HRESULT Current([out] ISegment **ppISegment);

    HRESULT First();

    HRESULT IsDone();

    HRESULT Advance();
}

/*****************************************************************************
 *    ISegmentList interface
 */
[
    object,
    pointer_default(unique),
    uuid(3050f605-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISegmentList : IUnknown
{
    HRESULT CreateIterator([out] ISegmentListIterator **ppIIter);

    HRESULT GetType([out] SELECTION_TYPE *peType);

    HRESULT IsEmpty([out] BOOL *peType);
}

/*****************************************************************************
 *    IElementSegment interface
 */
[
    object,
    pointer_default(unique),
    uuid(3050f68f-98b5-11cf-bb82-00aa00bdce0b)
]
interface IElementSegment : ISegment
{
    HRESULT GetElement([out] IHTMLElement **ppIElement);

    HRESULT SetPrimary([in] BOOL fPrimary);

    HRESULT IsPrimary([out] BOOL *pfPrimary);
}

/*****************************************************************************
 *    ISelectionServicesListener interface
 */
[
    object,
    pointer_default(unique),
    uuid(3050f699-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISelectionServicesListener : IUnknown
{
    HRESULT BeginSelectionUndo();

    HRESULT EndSelectionUndo();

    HRESULT OnSelectedElementExit(
        [in] IMarkupPointer *pIElementStart,
        [in] IMarkupPointer *pIElementEnd,
        [in] IMarkupPointer *pIElementContentStart,
        [in] IMarkupPointer *pIElementContentEnd);

    HRESULT OnChangeType(
        [in] SELECTION_TYPE eType,
        [in] ISelectionServicesListener *pIListener);

    HRESULT GetTypeDetail([out] BSTR *pTypeDetail);
}

/*****************************************************************************
 *    ISelectionServices interface
 */
[
    object,
    pointer_default(unique),
    uuid(3050f684-98b5-11cf-bb82-00aa00bdce0b)
]
interface ISelectionServices : IUnknown
{
    HRESULT SetSelectionType(
        [in] SELECTION_TYPE eType,
        [in] ISelectionServicesListener *pIListener);

    HRESULT GetMarkupContainer([out] IMarkupContainer **ppIContainer);

    HRESULT AddSegment(
        [in] IMarkupPointer *pIStart,
        [in] IMarkupPointer *pIEnd,
        [out] ISegment **ppISegmentAdded);

    HRESULT AddElementSegment(
        [in] IHTMLElement *pIElement,
        [out] IElementSegment **ppISegmentAdded);

    HRESULT RemoveSegment([in] ISegment *pISegment);

    HRESULT GetSelectionServicesListener([out] ISelectionServicesListener **ppISelectionServicesListener);
}

/*****************************************************************************
 *    IHTMLEditDesigner interface
 */
[
    object,
    pointer_default(unique),
    uuid(3050f662-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLEditDesigner : IUnknown
{
    HRESULT PreHandleEvent(
        [in] DISPID inEvtDispId,
        [in] IHTMLEventObj *pIEventObj);

    HRESULT PostHandleEvent(
        [in] DISPID inEvtDispId,
        [in] IHTMLEventObj *pIEventObj);

    HRESULT TranslateAccelerator(
        [in] DISPID inEvtDispId,
        [in] IHTMLEventObj *pIEventObj);

    HRESULT PostEditorEventNotify(
        [in] DISPID inEvtDispId,
        [in] IHTMLEventObj *pIEventObj);
}

/*****************************************************************************
 *    IHTMLEditServices interface
 */
[
    object,
    pointer_default(unique),
    uuid(3050f663-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLEditServices : IUnknown
{
    HRESULT AddDesigner([in] IHTMLEditDesigner *pIDesigner);

    HRESULT RemoveDesigner([in] IHTMLEditDesigner *pIDesigner);

    HRESULT GetSelectionServices(
        [in] IMarkupContainer *pIContainer,
        [out] ISelectionServices **ppSelSvc);

    HRESULT MoveToSelectionAnchor([in] IMarkupPointer *pIStartAnchor);

    HRESULT MoveToSelectionEnd([in] IMarkupPointer *pIEndAnchor);

    HRESULT SelectRange(
        [in] IMarkupPointer* pStart,
        [in] IMarkupPointer* pEnd,
        [in] SELECTION_TYPE eType);
}

/*****************************************************************************
 *    IElementBehaviorSite interface
 */
[
    odl,
    uuid(3050F427-98B5-11CF-BB82-00AA00BDCE0B)
]
interface IElementBehaviorSite : IUnknown {
    HRESULT GetElement([out, retval] IHTMLElement **ppElement);
    HRESULT RegisterNotification([in] long lEvent);
}

/*****************************************************************************
 *    IElementBehavior interface
 */
[
    odl,
    uuid(3050F425-98B5-11CF-BB82-00AA00BDCE0B)
]
interface IElementBehavior : IUnknown {
    HRESULT Init([in] IElementBehaviorSite *pBehaviorSite);
    HRESULT Notify([in] long lEvent,  [in, out] VARIANT *pVar);
    HRESULT Detach();
}

/*****************************************************************************
 *    IElementBehaviorFactory interface
 */
[
    odl,
    uuid(3050f429-98b5-11cf-bb82-00aa00bdce0b)
]
interface IElementBehaviorFactory : IUnknown
{
    HRESULT FindBehavior(
        [in] BSTR bstrBehavior,
        [in] BSTR bstrBehaviorUrl,
        [in] IElementBehaviorSite *pSite,
        [out] IElementBehavior **ppBehavior);
}

} /* library MSHTML */

interface IOleCommandTarget;

/*****************************************************************************
 *    IHTMLPrivateWindow interface
 */
[
    object,
    uuid(3050f6dc-98b5-11cf-bb82-00aa00bdce0b),
    local
]
interface IHTMLPrivateWindow : IUnknown
{
    HRESULT SuperNavigate(BSTR url, BSTR arg2, BSTR arg3, BSTR arg4, VARIANT *post_data, VARIANT *headers, ULONG flags);
    HRESULT GetPendingUrl(BSTR *url);
    HRESULT SetPICSTarget(IOleCommandTarget *cmdtrg);
    HRESULT PICSComplete(int arg);
    HRESULT FindWindowByName(LPCWSTR name, IHTMLWindow2 **ret);
    HRESULT GetAddressBarUrl(BSTR *url);
}

/*****************************************************************************
 *    IWebBrowserPriv interface
 */
[
    object,
    uuid(3050f804-98b5-11cf-bb82-00aa00bdce0b),
    local
]
interface IWebBrowserPriv : IUnknown
{
    HRESULT NavigateWithBindCtx(VARIANT *uri, VARIANT *flags, VARIANT *target_frame, VARIANT *post_data,
            VARIANT *headers, IBindCtx *bind_ctx, LPOLESTR url_fragment);
    HRESULT OnClose();
}

/*****************************************************************************
 *    IWebBrowserPriv2IE8 interface
 */
[
    object,
    uuid(3ed72303-6ffc-4214-ba90-faf1862dec8a),
    local
]
interface IWebBrowserPriv2IE8 : IUnknown
{
  HRESULT NavigateWithBindCtx2(IUri *uri, VARIANT *flags, VARIANT *target_frame, VARIANT *post_data,
          VARIANT *headers, IBindCtx *bind_ctx, LPOLESTR url_fragment);
  HRESULT SetBrowserFrameOptions(DWORD opt1, DWORD opt2);
  HRESULT DetachConnectionPoints();
  HRESULT GetProcessId(DWORD *pid);
  HRESULT CompatAttachEditEvents();
  HRESULT HandleOpenOptions(IUnknown *obj, BSTR bstr, int options);
  HRESULT SetSearchTerm(BSTR term);
  HRESULT GetSearchTerm(BSTR *term);
  HRESULT GetCurrentDocument(IDispatch** doc);
}

/*****************************************************************************
 *    IWebBrowserPriv2IE9 interface
 */
[
    object,
    uuid(3ed72303-6ffc-4214-ba90-faf1862dec8a),
    local
]
interface IWebBrowserPriv2IE9 : IUnknown
{
    HRESULT NavigateWithBindCtx2(IUri *uri, VARIANT *flags, VARIANT *target_frame, VARIANT *post_data,
            VARIANT *headers, IBindCtx *bind_ctx, LPOLESTR url_fragment, DWORD unused);
    /* Probably more */
}
